public override bool Execute() { // Look for script-fu-selection-to-pattern as example. The basic idea // is to create a new image and save it as a .pat file var selection = ActiveImage.Selection; bool nonEmpty; var bounds = selection.Bounds(out nonEmpty); int width = bounds.Width; int height = bounds.Height; var image = new Image(width, height, ActiveImage.BaseType); var layer = new Layer(image, "test", width, height, ImageType.Rgb, 100, LayerModeEffects.Normal); image.InsertLayer(layer, 0); Console.WriteLine("{0} {1}", image.Width, image.Height); ActiveDrawable.EditCopy(); layer.EditPaste(true); string filename = Gimp.Directory + System.IO.Path.DirectorySeparatorChar + "patterns" + System.IO.Path.DirectorySeparatorChar + _name + ".pat"; image.Save(RunMode.Noninteractive, filename, filename); // Fix me: next lines should work so we can actually set the name // of the pattern! // Procedure procedure = new Procedure("file_pat_save"); // procedure.Run(image, layer, filename, filename, _name); image.Delete(); PatternList.Refresh(); return false; }
Layer AddLayer(Image image, int layerNr, string name, string translate_x, string translate_y, out PixelRgn destPR) { destPR = null; int keepLayer = GetValue<int>("keep_layer"); if (keepLayer == 0 || keepLayer == layerNr) { var layer = new Layer(image, name, ImageType.Rgba); layer.Translate(GetValue<int>(translate_x), GetValue<int>(translate_y)); layer.AddAlpha(); image.InsertLayer(layer, 0); destPR = new PixelRgn(layer, image.Bounds, true, false); return layer; } return null; }
public override bool Execute() { ImageBaseType type = ImageBaseType.Rgb; // Fix me! switch (_mode.Value) { case "Grys": type = ImageBaseType.Gray; break; default: Console.WriteLine("Type: " + _mode.Value); type = ImageBaseType.Rgb; break; } int width = (int) (Parameters["Wdth"] as DoubleParameter).GetPixels(0); int height = (int) (Parameters["Hght"] as DoubleParameter).GetPixels(0); ImageType imageType; FillType fillType; switch (_fill.Value) { case "Trns": imageType = (type == ImageBaseType.Gray) ? ImageType.Graya : ImageType.Rgba; fillType = FillType.Transparent; break; default: imageType = (type == ImageBaseType.Gray) ? ImageType.Gray : ImageType.Rgb; fillType = FillType.White; break; } var image = new Image(width, height, type); var layer = new Layer(image, "Layer 1", width, height, imageType); image.InsertLayer(layer, 0); layer.Fill(fillType); ActiveImage = image; ActiveDrawable = layer; new Display(image); return true; }