git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2926 92316355-f0b4-4df1-b90c-862c8a59935fremotes/tiles
| @@ -0,0 +1,33 @@ | |||
| // | |||
| // The Pimp The Pathetic Image Manipulation Program | |||
| // Copyright (c) 2004-2008 Sam Hocevar <sam@zoy.org> | |||
| // All Rights Reserved | |||
| // | |||
| // $Id$ | |||
| // | |||
| // This library is free software. It comes without any warranty, to | |||
| // the extent permitted by applicable law. You can redistribute it | |||
| // and/or modify it under the terms of the Do What The Fuck You Want | |||
| // To Public License, Version 2, as published by Sam Hocevar. See | |||
| // http://sam.zoy.org/wtfpl/COPYING for more details. | |||
| // | |||
| using System; | |||
| namespace ThePimp | |||
| { | |||
| public partial class ErrorWindow : Gtk.Dialog | |||
| { | |||
| public ErrorWindow(string message) | |||
| { | |||
| this.Build(); | |||
| this.message.Text = message; | |||
| this.Run(); | |||
| } | |||
| protected virtual void OnButtonOkClicked (object sender, System.EventArgs e) | |||
| { | |||
| this.Destroy(); | |||
| } | |||
| } | |||
| } | |||
| @@ -14,6 +14,7 @@ | |||
| using System; | |||
| using Gtk; | |||
| using Pipi; | |||
| namespace ThePimp | |||
| { | |||
| @@ -21,6 +22,8 @@ namespace ThePimp | |||
| { | |||
| public static void Main (string[] args) | |||
| { | |||
| Libpipi.getVersion(); | |||
| Application.Init (); | |||
| MainWindow win = new MainWindow (); | |||
| win.Show (); | |||
| @@ -24,7 +24,6 @@ namespace ThePimp | |||
| public MainWindow (): base (Gtk.WindowType.Toplevel) | |||
| { | |||
| Build (); | |||
| Title += " v" + Libpipi.getVersion(); | |||
| vpaned1.Add1(new ToolBox()); | |||
| } | |||
| @@ -36,32 +35,48 @@ namespace ThePimp | |||
| protected virtual void OnOpenActionActivated (object sender, System.EventArgs e) | |||
| { | |||
| OpenFile open = new OpenFile(); | |||
| Pipi.Picture p = open.Load(); | |||
| open.Destroy(); | |||
| if(p != null) | |||
| OpenFile dialog = new OpenFile(); | |||
| string s = dialog.GetChoice(); | |||
| dialog.Destroy(); | |||
| if(s == null) | |||
| return; | |||
| Pipi.Picture p = Pipi.Picture.Load(s); | |||
| if(p == null) | |||
| { | |||
| while(notebook1.NPages > 0) | |||
| notebook1.RemovePage(0); | |||
| int n = notebook1.AppendPage(new PictureView(p), | |||
| new Label(p.FileName)); | |||
| notebook1.Page = n; | |||
| new ErrorWindow("Could not open \"" + s + "\". Check the file format."); | |||
| return; | |||
| } | |||
| while(notebook1.NPages > 0) | |||
| notebook1.RemovePage(0); | |||
| int n = notebook1.AppendPage(new PictureView(p), | |||
| new Label(p.FileName)); | |||
| notebook1.Page = n; | |||
| } | |||
| protected virtual void OnNewActionActivated (object sender, System.EventArgs e) | |||
| { | |||
| NewFile dialog = new NewFile(); | |||
| Pipi.Picture p = dialog.New(); | |||
| string s = dialog.GetChoice(); | |||
| dialog.Destroy(); | |||
| if(p != null) | |||
| if(s == null) | |||
| return; | |||
| Pipi.Picture p = Pipi.Picture.Load(s); | |||
| if(p == null) | |||
| { | |||
| while(notebook1.NPages > 0) | |||
| notebook1.RemovePage(0); | |||
| int n = notebook1.AppendPage(new PictureView(p), | |||
| new Label(p.FileName)); | |||
| notebook1.Page = n; | |||
| new ErrorWindow("Could not create image."); | |||
| return; | |||
| } | |||
| while(notebook1.NPages > 0) | |||
| notebook1.RemovePage(0); | |||
| int n = notebook1.AppendPage(new PictureView(p), | |||
| new Label(p.FileName)); | |||
| notebook1.Page = n; | |||
| } | |||
| protected virtual void OnQuitActionActivated (object sender, System.EventArgs e) | |||
| @@ -4,6 +4,7 @@ pimp_sources = \ | |||
| AssemblyInfo.cs \ | |||
| Main.cs \ | |||
| AboutWindow.cs \ | |||
| ErrorWindow.cs \ | |||
| MainWindow.cs \ | |||
| OpenFile.cs \ | |||
| NewFile.cs \ | |||
| @@ -12,6 +13,7 @@ pimp_sources = \ | |||
| ToolBox.cs \ | |||
| gtk-gui/generated.cs \ | |||
| gtk-gui/ThePimp.AboutWindow.cs \ | |||
| gtk-gui/ThePimp.ErrorWindow.cs \ | |||
| gtk-gui/ThePimp.MainWindow.cs \ | |||
| gtk-gui/ThePimp.OpenFile.cs \ | |||
| gtk-gui/ThePimp.NewFile.cs \ | |||
| @@ -24,7 +24,7 @@ namespace ThePimp | |||
| this.Build(); | |||
| } | |||
| public Pipi.Picture New() | |||
| public string GetChoice() | |||
| { | |||
| ResponseType rsp = (ResponseType)Run(); | |||
| Hide(); | |||
| @@ -42,8 +42,7 @@ namespace ThePimp | |||
| break; | |||
| } | |||
| Pipi.Picture p = new Pipi.Picture(type + ":" + entry1.Text + "x" + entry2.Text); | |||
| return p; | |||
| return type + ":" + entry1.Text + "x" + entry2.Text; | |||
| } | |||
| } | |||
| } | |||
| @@ -23,15 +23,15 @@ namespace ThePimp | |||
| { | |||
| this.Build(); | |||
| } | |||
| public Pipi.Picture Load() | |||
| public string GetChoice() | |||
| { | |||
| ResponseType rsp = (ResponseType)Run(); | |||
| Hide(); | |||
| if(rsp != ResponseType.Ok) | |||
| return null; | |||
| Pipi.Picture p = new Pipi.Picture(filechooserwidget1.Filename); | |||
| return p; | |||
| return filechooserwidget1.Filename; | |||
| } | |||
| } | |||
| } | |||
| @@ -14,7 +14,7 @@ | |||
| <DebugSymbols>true</DebugSymbols> | |||
| <DebugType>full</DebugType> | |||
| <Optimize>false</Optimize> | |||
| <OutputPath>.\bin</OutputPath> | |||
| <OutputPath>bin\</OutputPath> | |||
| <DefineConstants>DEBUG;TRACE</DefineConstants> | |||
| <ErrorReport>prompt</ErrorReport> | |||
| <WarningLevel>4</WarningLevel> | |||
| @@ -27,7 +27,7 @@ | |||
| <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||
| <DebugType>pdbonly</DebugType> | |||
| <Optimize>true</Optimize> | |||
| <OutputPath>.\bin</OutputPath> | |||
| <OutputPath>bin\</OutputPath> | |||
| <DefineConstants>TRACE</DefineConstants> | |||
| <ErrorReport>prompt</ErrorReport> | |||
| <WarningLevel>4</WarningLevel> | |||
| @@ -92,6 +92,8 @@ | |||
| <Compile Include="gtk-gui\ThePimp.PictureView.cs" /> | |||
| <Compile Include="gtk-gui\ThePimp.SaveFile.cs" /> | |||
| <Compile Include="gtk-gui\ThePimp.ToolBox.cs" /> | |||
| <Compile Include="ErrorWindow.cs" /> | |||
| <Compile Include="gtk-gui\ThePimp.ErrorWindow.cs" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ProjectReference Include="..\pipi-sharp\pipi-sharp.csproj"> | |||
| @@ -100,9 +102,9 @@ | |||
| </ProjectReference> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <EmbeddedResource Include="gtk-gui\gui.stetic" /> | |||
| <EmbeddedResource Include="images\about.png" /> | |||
| <EmbeddedResource Include="gtk-gui\objects.xml" /> | |||
| <EmbeddedResource Include="gtk-gui\gui.stetic" /> | |||
| </ItemGroup> | |||
| <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> | |||
| <!-- To modify your build process, add your task inside one of the targets below and uncomment it. | |||
| @@ -116,4 +118,10 @@ | |||
| </Target> | |||
| <Target Name="AfterBuild"> | |||
| </Target> | |||
| </Project> | |||
| <GtkDesignInfo gtkVersion="2.12.1"> | |||
| <ExportedWidgets> | |||
| <Widget>ThePimp.PictureView</Widget> | |||
| <Widget>ThePimp.ToolBox</Widget> | |||
| </ExportedWidgets> | |||
| </GtkDesignInfo> | |||
| </Project> | |||
| @@ -43,6 +43,7 @@ | |||
| <File name="gtk-gui/ThePimp.AboutWindow.cs" subtype="Code" buildaction="Compile" /> | |||
| <File name="NewFile.cs" subtype="Code" buildaction="Compile" /> | |||
| <File name="gtk-gui/ThePimp.NewFile.cs" subtype="Code" buildaction="Compile" /> | |||
| <File name="gtk-gui/ThePimp.ErrorWindow.cs" subtype="Code" buildaction="Compile" /> | |||
| </Contents> | |||
| <References> | |||
| <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> | |||
| @@ -61,4 +62,4 @@ | |||
| <Widget>ThePimp.ToolBox</Widget> | |||
| </ExportedWidgets> | |||
| </GtkDesignInfo> | |||
| </Project> | |||
| </Project> | |||
| @@ -0,0 +1,89 @@ | |||
| // ------------------------------------------------------------------------------ | |||
| // <autogenerated> | |||
| // This code was generated by a tool. | |||
| // Mono Runtime Version: 2.0.50727.42 | |||
| // | |||
| // Changes to this file may cause incorrect behavior and will be lost if | |||
| // the code is regenerated. | |||
| // </autogenerated> | |||
| // ------------------------------------------------------------------------------ | |||
| namespace ThePimp { | |||
| public partial class ErrorWindow { | |||
| private Gtk.HBox hbox1; | |||
| private Gtk.Image image1; | |||
| private Gtk.Label message; | |||
| private Gtk.Button buttonOk; | |||
| protected virtual void Build() { | |||
| Stetic.Gui.Initialize(this); | |||
| // Widget ThePimp.ErrorWindow | |||
| this.Name = "ThePimp.ErrorWindow"; | |||
| this.Title = Mono.Unix.Catalog.GetString("Error"); | |||
| this.Icon = Stetic.IconLoader.LoadIcon(this, "gtk-dialog-error", Gtk.IconSize.Menu, 16); | |||
| this.WindowPosition = ((Gtk.WindowPosition)(4)); | |||
| this.HasSeparator = false; | |||
| // Internal child ThePimp.ErrorWindow.VBox | |||
| Gtk.VBox w1 = this.VBox; | |||
| w1.Name = "dialog1_VBox"; | |||
| w1.BorderWidth = ((uint)(2)); | |||
| // Container child dialog1_VBox.Gtk.Box+BoxChild | |||
| this.hbox1 = new Gtk.HBox(); | |||
| this.hbox1.Name = "hbox1"; | |||
| this.hbox1.Spacing = 20; | |||
| this.hbox1.BorderWidth = ((uint)(10)); | |||
| // Container child hbox1.Gtk.Box+BoxChild | |||
| this.image1 = new Gtk.Image(); | |||
| this.image1.Name = "image1"; | |||
| this.image1.Pixbuf = Stetic.IconLoader.LoadIcon(this, "gtk-dialog-error", Gtk.IconSize.Dialog, 48); | |||
| this.hbox1.Add(this.image1); | |||
| Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(this.hbox1[this.image1])); | |||
| w2.Position = 0; | |||
| w2.Expand = false; | |||
| w2.Fill = false; | |||
| // Container child hbox1.Gtk.Box+BoxChild | |||
| this.message = new Gtk.Label(); | |||
| this.message.Name = "message"; | |||
| this.message.LabelProp = Mono.Unix.Catalog.GetString("Error!"); | |||
| this.message.Wrap = true; | |||
| this.hbox1.Add(this.message); | |||
| Gtk.Box.BoxChild w3 = ((Gtk.Box.BoxChild)(this.hbox1[this.message])); | |||
| w3.Position = 1; | |||
| w3.Expand = false; | |||
| w1.Add(this.hbox1); | |||
| Gtk.Box.BoxChild w4 = ((Gtk.Box.BoxChild)(w1[this.hbox1])); | |||
| w4.Position = 0; | |||
| w4.Fill = false; | |||
| // Internal child ThePimp.ErrorWindow.ActionArea | |||
| Gtk.HButtonBox w5 = this.ActionArea; | |||
| w5.Name = "dialog1_ActionArea"; | |||
| w5.Spacing = 6; | |||
| w5.BorderWidth = ((uint)(5)); | |||
| w5.LayoutStyle = ((Gtk.ButtonBoxStyle)(4)); | |||
| // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild | |||
| this.buttonOk = new Gtk.Button(); | |||
| this.buttonOk.CanDefault = true; | |||
| this.buttonOk.CanFocus = true; | |||
| this.buttonOk.Name = "buttonOk"; | |||
| this.buttonOk.UseStock = true; | |||
| this.buttonOk.UseUnderline = true; | |||
| this.buttonOk.Label = "gtk-ok"; | |||
| this.AddActionWidget(this.buttonOk, -5); | |||
| Gtk.ButtonBox.ButtonBoxChild w6 = ((Gtk.ButtonBox.ButtonBoxChild)(w5[this.buttonOk])); | |||
| w6.Expand = false; | |||
| w6.Fill = false; | |||
| if ((this.Child != null)) { | |||
| this.Child.ShowAll(); | |||
| } | |||
| this.DefaultWidth = 229; | |||
| this.DefaultHeight = 133; | |||
| this.Show(); | |||
| } | |||
| } | |||
| } | |||
| @@ -797,6 +797,7 @@ Bayer Dithering Pattern</property> | |||
| <property name="Text" translatable="yes">1024</property> | |||
| <property name="IsEditable">True</property> | |||
| <property name="WidthChars">6</property> | |||
| <property name="InvisibleChar">●</property> | |||
| <property name="Xalign">1</property> | |||
| </widget> | |||
| <packing> | |||
| @@ -820,6 +821,7 @@ Bayer Dithering Pattern</property> | |||
| <property name="Text" translatable="yes">768</property> | |||
| <property name="IsEditable">True</property> | |||
| <property name="WidthChars">6</property> | |||
| <property name="InvisibleChar">●</property> | |||
| <property name="Xalign">1</property> | |||
| </widget> | |||
| <packing> | |||
| @@ -977,4 +979,81 @@ Bayer Dithering Pattern</property> | |||
| </widget> | |||
| </child> | |||
| </widget> | |||
| <widget class="Gtk.Dialog" id="ThePimp.ErrorWindow" design-size="229 133"> | |||
| <property name="MemberName" /> | |||
| <property name="Title" translatable="yes">Error</property> | |||
| <property name="Icon">stock:gtk-dialog-error Menu</property> | |||
| <property name="WindowPosition">CenterOnParent</property> | |||
| <property name="Buttons">1</property> | |||
| <property name="HelpButton">False</property> | |||
| <property name="HasSeparator">False</property> | |||
| <child internal-child="VBox"> | |||
| <widget class="Gtk.VBox" id="dialog1_VBox"> | |||
| <property name="MemberName" /> | |||
| <property name="BorderWidth">2</property> | |||
| <child> | |||
| <widget class="Gtk.HBox" id="hbox1"> | |||
| <property name="MemberName" /> | |||
| <property name="Spacing">20</property> | |||
| <property name="BorderWidth">10</property> | |||
| <child> | |||
| <widget class="Gtk.Image" id="image1"> | |||
| <property name="MemberName" /> | |||
| <property name="Pixbuf">stock:gtk-dialog-error Dialog</property> | |||
| </widget> | |||
| <packing> | |||
| <property name="Position">0</property> | |||
| <property name="AutoSize">True</property> | |||
| <property name="Expand">False</property> | |||
| <property name="Fill">False</property> | |||
| </packing> | |||
| </child> | |||
| <child> | |||
| <widget class="Gtk.Label" id="message"> | |||
| <property name="MemberName" /> | |||
| <property name="LabelProp" translatable="yes">Error!</property> | |||
| <property name="Wrap">True</property> | |||
| </widget> | |||
| <packing> | |||
| <property name="Position">1</property> | |||
| <property name="AutoSize">False</property> | |||
| <property name="Expand">False</property> | |||
| </packing> | |||
| </child> | |||
| </widget> | |||
| <packing> | |||
| <property name="Position">0</property> | |||
| <property name="AutoSize">False</property> | |||
| <property name="Fill">False</property> | |||
| </packing> | |||
| </child> | |||
| </widget> | |||
| </child> | |||
| <child internal-child="ActionArea"> | |||
| <widget class="Gtk.HButtonBox" id="dialog1_ActionArea"> | |||
| <property name="MemberName" /> | |||
| <property name="Spacing">6</property> | |||
| <property name="BorderWidth">5</property> | |||
| <property name="Size">1</property> | |||
| <property name="LayoutStyle">End</property> | |||
| <child> | |||
| <widget class="Gtk.Button" id="buttonOk"> | |||
| <property name="MemberName" /> | |||
| <property name="CanDefault">True</property> | |||
| <property name="CanFocus">True</property> | |||
| <property name="UseStock">True</property> | |||
| <property name="Type">StockItem</property> | |||
| <property name="StockId">gtk-ok</property> | |||
| <property name="ResponseId">-5</property> | |||
| <property name="label">gtk-ok</property> | |||
| <signal name="Clicked" handler="OnButtonCloseClicked" /> | |||
| </widget> | |||
| <packing> | |||
| <property name="Expand">False</property> | |||
| <property name="Fill">False</property> | |||
| </packing> | |||
| </child> | |||
| </widget> | |||
| </child> | |||
| </widget> | |||
| </stetic-interface> | |||
| @@ -13,14 +13,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pipi-sharp", "pipi-sharp\pi | |||
| EndProject | |||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThePimp", "ThePimp\ThePimp.csproj", "{D681A55E-B8E2-4741-87E6-49500109D6E0}" | |||
| EndProject | |||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpipi", "pipi\libpipi.vcproj", "{48A34C3A-1E36-49B7-92C4-E982FDCB90C0}" | |||
| EndProject | |||
| Global | |||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
| Debug|Any CPU = Debug|Any CPU | |||
| Release|Any CPU = Release|Any CPU | |||
| Debug|Mixed Platforms = Debug|Mixed Platforms | |||
| Debug|Win32 = Debug|Win32 | |||
| Release|Any CPU = Release|Any CPU | |||
| Release|Mixed Platforms = Release|Mixed Platforms | |||
| Release|Win32 = Release|Win32 | |||
| EndGlobalSection | |||
| @@ -35,16 +33,6 @@ Global | |||
| {2A062F77-ED16-4B74-B7B7-5ED93FAF300A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | |||
| {2A062F77-ED16-4B74-B7B7-5ED93FAF300A}.Release|Mixed Platforms.Build.0 = Release|Any CPU | |||
| {2A062F77-ED16-4B74-B7B7-5ED93FAF300A}.Release|Win32.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Win32.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Any CPU.Build.0 = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Win32.ActiveCfg = Release|Any CPU | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | |||
| @@ -55,6 +43,16 @@ Global | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU | |||
| {D681A55E-B8E2-4741-87E6-49500109D6E0}.Release|Win32.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Debug|Win32.ActiveCfg = Debug|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Any CPU.Build.0 = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU | |||
| {FD11AF71-DCBE-4861-9DC6-EE4C6FD951C0}.Release|Win32.ActiveCfg = Release|Any CPU | |||
| {48A34C3A-1E36-49B7-92C4-E982FDCB90C0}.Debug|Any CPU.ActiveCfg = Debug|Win32 | |||
| {48A34C3A-1E36-49B7-92C4-E982FDCB90C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 | |||
| {48A34C3A-1E36-49B7-92C4-E982FDCB90C0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 | |||
| @@ -66,6 +64,8 @@ Global | |||
| {48A34C3A-1E36-49B7-92C4-E982FDCB90C0}.Release|Win32.ActiveCfg = Release|Win32 | |||
| {48A34C3A-1E36-49B7-92C4-E982FDCB90C0}.Release|Win32.Build.0 = Release|Win32 | |||
| EndGlobalSection | |||
| GlobalSection(NestedProjects) = preSolution | |||
| EndGlobalSection | |||
| GlobalSection(SolutionProperties) = preSolution | |||
| HideSolutionNode = FALSE | |||
| EndGlobalSection | |||
| @@ -21,16 +21,16 @@ namespace Pipi | |||
| public class Picture | |||
| { | |||
| private IntPtr _picture; | |||
| private string _filename; | |||
| public readonly string FileName; | |||
| public string FileName | |||
| { | |||
| get { return _filename; } | |||
| } | |||
| [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl), | |||
| SuppressUnmanagedCodeSecurity] | |||
| private static extern IntPtr pipi_load(string s); | |||
| public Picture(string s) | |||
| private Picture(IntPtr p) | |||
| { | |||
| _picture = pipi_load(s); | |||
| FileName = s; | |||
| _picture = p; | |||
| } | |||
| [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl), | |||
| @@ -41,6 +41,20 @@ namespace Pipi | |||
| pipi_free(_picture); | |||
| } | |||
| [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl), | |||
| SuppressUnmanagedCodeSecurity] | |||
| private static extern IntPtr pipi_load(string s); | |||
| public static Picture Load(string s) | |||
| { | |||
| IntPtr p = pipi_load(s); | |||
| if(p == IntPtr.Zero) | |||
| return null; | |||
| Picture ret = new Picture(p); | |||
| ret._filename = s; | |||
| return ret; | |||
| } | |||
| [DllImport("libpipi.dll", CallingConvention=CallingConvention.Cdecl), | |||
| SuppressUnmanagedCodeSecurity] | |||
| private static extern int pipi_save(IntPtr p, string s); | |||
| @@ -55,4 +55,4 @@ | |||
| </Target> | |||
| <Target Name="AfterBuild"> | |||
| </Target> | |||
| </Project> | |||
| </Project> | |||
| @@ -24,7 +24,7 @@ class Test | |||
| Console.WriteLine("libpipi {0} .NET test", Libpipi.getVersion()); | |||
| Console.WriteLine("(c) 2008 Sam Hocevar <sam@zoy.org>"); | |||
| Pipi.Picture p = new Pipi.Picture("random:640x480"); | |||
| Pipi.Picture p = Pipi.Picture.Load("random:640x480"); | |||
| Console.WriteLine("Test picture size: {0}x{1}", p.Width, p.Height); | |||
| } | |||
| } | |||