Changeset - cca1f914411a
[Not reviewed]
T9_V6 default
0 4 0
Jason Maltzen - 5 years ago 2019-11-04 19:08:16
jason@hiddenachievement.com
More fixes for finding the pigment lab interface. Add a function for loading a saved screenshot and scanning it instead of a screen capture.
4 files changed with 203 insertions and 60 deletions:
0 comments (0 inline, 0 general)
PaintColor.cs
Show inline comments
...
 
@@ -118,3 +118,3 @@ namespace DesertPaintLab
 
		{
 
			return "[" + name + ", " + red + ", " + green + ", " + blue + "]";
 
			return "[" + name + ": " + red + ", " + green + ", " + blue + "]";
 
		}
ReactionRecorder.cs
Show inline comments
...
 
@@ -56,3 +56,3 @@ namespace DesertPaintLab
 
            320, // large
 
            320 // huge
 
            350 // huge
 
        };
...
 
@@ -64,3 +64,3 @@ namespace DesertPaintLab
 
            320, // large
 
            320 // huge
 
            350 // huge
 
        };
...
 
@@ -127,3 +127,27 @@ namespace DesertPaintLab
 
        int pixelMultiplier = 1;
 
        InterfaceSize interfaceSize;
 
        public int PixelMultiplier
 
        {
 
            get
 
            {
 
                return pixelMultiplier;
 
            }
 
            set
 
            {
 
                pixelMultiplier = value;
 
                UpdateSwatchSizes();
 
            }
 
        }
 
        private InterfaceSize interfaceSize;
 
        public InterfaceSize InterfaceSize
 
        {
 
            get
 
            {
 
                return interfaceSize;
 
            }
 
            set
 
            {
 
                interfaceSize = value;
 
                UpdateSwatchSizes();
 
            }
 
        }
 

	
...
 
@@ -158,3 +182,3 @@ namespace DesertPaintLab
 
                // green between 192 and 237
 
                // 223 and 248
 
                // 223 and 250
 
                // blue between 145 and 205
...
 
@@ -163,3 +187,3 @@ namespace DesertPaintLab
 
                //       ((r < 0xF4) && (g <= 0xED) && (b <= 0xCD));
 
                return ((color.r >= 0xF0) && (color.r <= 0xFF) && (color.g >= 0xDF) && (color.g <= 0xF8) && (color.b >= 0xB2) && (color.b <= 0xE8));
 
                return ((color.r >= 0xF0) && (color.r <= 0xFF) && (color.g >= 0xDF) && (color.g <= 0xFA) && (color.b >= 0xB2) && (color.b <= 0xE8));
 
            }
...
 
@@ -187,2 +211,3 @@ namespace DesertPaintLab
 
            public int pixelMultiplier;
 
            public int numChannels;
 

	
...
 
@@ -193,3 +218,3 @@ namespace DesertPaintLab
 
            {
 
                return (y * pixelMultiplier * stride) + (x * pixelMultiplier * 3);
 
                return (y * pixelMultiplier * stride) + (x * pixelMultiplier * numChannels);
 
            }
...
 
@@ -198,3 +223,3 @@ namespace DesertPaintLab
 
            {
 
                return offset + (yChange * pixelMultiplier * stride) + (xChange * pixelMultiplier * 3);
 
                return offset + (yChange * pixelMultiplier * stride) + (xChange * pixelMultiplier * numChannels);
 
            }
...
 
@@ -244,2 +269,3 @@ namespace DesertPaintLab
 
                ColorAt(x, y, ref _tempColor2);
 
                Console.WriteLine("color at {0},{1} = {2},{3},{4}", x, y, _tempColor2.r, _tempColor2.g, _tempColor2.b);
 
                bool ok = true;
...
 
@@ -297,9 +323,4 @@ namespace DesertPaintLab
 
            interfaceSize = DEFAULT_INTERFACE_SIZE;
 
            swatchHeight = SWATCH_HEIGHT[(int)interfaceSize] * pixelMultiplier;
 
            swatchWidth = SWATCH_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            colorBarWidth = COLOR_BAR_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            redBarSpacing = RED_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            greenBarSpacing = GREEN_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            blueBarSpacing = BLUE_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            swatchTestWidth = SWATCH_TEST_WIDTH[(int)interfaceSize] * pixelMultiplier;
 

	
 
            UpdateSwatchSizes();
 
        }
...
 
@@ -310,9 +331,4 @@ namespace DesertPaintLab
 
            this.interfaceSize = DEFAULT_INTERFACE_SIZE;
 
            swatchHeight = SWATCH_HEIGHT[(int)interfaceSize] * pixelMultiplier;
 
            swatchWidth = SWATCH_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            colorBarWidth = COLOR_BAR_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            redBarSpacing = RED_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            greenBarSpacing = GREEN_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            blueBarSpacing = BLUE_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            swatchTestWidth = SWATCH_TEST_WIDTH[(int)interfaceSize] * pixelMultiplier;
 

	
 
            UpdateSwatchSizes();
 
        }
...
 
@@ -323,9 +339,4 @@ namespace DesertPaintLab
 
            this.interfaceSize = interfaceSize;
 
            swatchHeight = SWATCH_HEIGHT[(int)interfaceSize] * pixelMultiplier;
 
            swatchWidth = SWATCH_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            colorBarWidth = COLOR_BAR_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            redBarSpacing = RED_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            greenBarSpacing = GREEN_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            blueBarSpacing = BLUE_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            swatchTestWidth = SWATCH_TEST_WIDTH[(int)interfaceSize] * pixelMultiplier;
 

	
 
            UpdateSwatchSizes();
 
        }
...
 
@@ -336,9 +347,3 @@ namespace DesertPaintLab
 

	
 
            swatchHeight = SWATCH_HEIGHT[(int)interfaceSize] * pixelMultiplier;
 
            swatchWidth      = SWATCH_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            colorBarWidth    = COLOR_BAR_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            redBarSpacing    = RED_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            greenBarSpacing  = GREEN_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            blueBarSpacing   = BLUE_BAR_SPACING[(int)interfaceSize] * pixelMultiplier;
 
            swatchTestWidth  = SWATCH_TEST_WIDTH[(int)interfaceSize] * pixelMultiplier;
 
            UpdateSwatchSizes();
 
        }
...
 
@@ -349,2 +354,7 @@ namespace DesertPaintLab
 

	
 
            UpdateSwatchSizes();
 
        }
 

	
 
        private void UpdateSwatchSizes()
 
        {
 
            swatchHeight = SWATCH_HEIGHT[(int)interfaceSize] * pixelMultiplier;
...
 
@@ -407,2 +417,3 @@ namespace DesertPaintLab
 
            {
 
                WriteLog("Can't test {0},{1} - is not at least 1 row in", x, y);
 
                return false;
...
 
@@ -424,6 +435,24 @@ namespace DesertPaintLab
 
            PixelColor testColor = new PixelColor();
 
            result &= pixels.DoesPixelMatch(swatchSolidRightX, swatchSolidTopY, swatchColor.IsMatch);
 
            result &= pixels.DoesPixelMatch(swatchSolidLeftX, swatchSolidBottomY, swatchColor.IsMatch);
 
            result &= pixels.DoesPixelMatch(swatchSolidRightX, swatchSolidBottomY, swatchColor.IsMatch);
 
            bool upperRightResult = pixels.DoesPixelMatch(swatchSolidRightX, swatchSolidTopY, swatchColor.IsMatch);
 
            //if (!upperRightResult)
 
            //{
 
            //    pixels.ColorAt(swatchSolidRightX, swatchSolidTopY, ref testColor);
 
            //    WriteLog("Upper-right mismatch for {8}, {9} - found {0},{1},{2} at {3}, {4} expected {5},{6},{7}", testColor.r, testColor.g, testColor.b, swatchSolidRightX, swatchSolidTopY, swatchColor.r, swatchColor.g, swatchColor.b, x, y);
 
            //}
 
            bool lowerLeftResult = pixels.DoesPixelMatch(swatchSolidLeftX, swatchSolidBottomY, swatchColor.IsMatch);
 
            //if (!lowerLeftResult)
 
            //{
 
            //    pixels.ColorAt(swatchSolidLeftX, swatchSolidBottomY, ref testColor);
 
            //    WriteLog("Lower-left mismatch for {8}, {9} - found {0},{1},{2} at {3}, {4} expected {5},{6},{7}", testColor.r, testColor.g, testColor.b, swatchSolidLeftX, swatchSolidBottomY, swatchColor.r, swatchColor.g, swatchColor.b, x, y);
 
            //}
 
            bool lowerRightResult = pixels.DoesPixelMatch(swatchSolidRightX, swatchSolidBottomY, swatchColor.IsMatch);
 
            //if (!lowerRightResult)
 
            //{
 
            //    pixels.ColorAt(swatchSolidRightX, swatchSolidBottomY, ref testColor);
 
            //    WriteLog("Lower-right mismatch for {8}, {9} - found {0},{1},{2} at {3}, {4} expected {5},{6},{7}", testColor.r, testColor.g, testColor.b, swatchSolidRightX, swatchSolidBottomY, swatchColor.r, swatchColor.g, swatchColor.b, x, y);
 
            //}
 

	
 
            result &= upperRightResult;
 
            result &= lowerLeftResult;
 
            result &= lowerRightResult;
 
            if (!result)
...
 
@@ -493,3 +522,3 @@ namespace DesertPaintLab
 
            int papyErrorCount = 0;
 
            for (i = 0; result && (i < swatchWidth); ++i)
 
            for (i = 0; result && (i < swatchWidth - 1); ++i)
 
            {
...
 
@@ -499,2 +528,3 @@ namespace DesertPaintLab
 
                {
 
                    WriteLog("Probably swatch at {0},{1} failed upper border test at {2},{3}", x, y, x + i, y);
 
                    borderError = true;
...
 
@@ -547,2 +577,3 @@ namespace DesertPaintLab
 
            {
 
                WriteLog("Found probable swatch at {0},{1} - checking border slices", x, y);
 
                int borderXOffset = 0;
...
 
@@ -551,3 +582,13 @@ namespace DesertPaintLab
 
                    foundSwatch &= IsPossibleSwatchSlice(pixels, x + borderXOffset, y);
 
                    if (!foundSwatch)
 
                    {
 
                        WriteLog("Failed slice test at {0},{1}", x + borderXOffset, y);
 
                        break;
 
                    }
 
                    foundSwatch &= IsPossibleSwatchSlice(pixels, x + swatchWidth - borderXOffset, y);
 
                    if (!foundSwatch)
 
                    {
 
                        WriteLog("Failed slice test at {0},{1}", x + swatchWidth - borderXOffset, y);
 
                        break;
 
                    }
 
                }
...
 
@@ -573,3 +614,3 @@ namespace DesertPaintLab
 

	
 
        unsafe public bool CaptureReaction(byte* pixBytes, int screenshotWidth, int screenshotHeight, int stride)
 
        unsafe public bool CaptureReaction(byte* pixBytes, int screenshotWidth, int screenshotHeight, int stride, int numChannels, int bitsPerSample)
 
        {
...
 
@@ -588,2 +629,3 @@ namespace DesertPaintLab
 
                stride = stride,
 
                numChannels = numChannels,
 
                pixelMultiplier = pixelMultiplier
...
 
@@ -597,3 +639,3 @@ namespace DesertPaintLab
 
                    IsCaptured = true;
 
                    RedBarX = (redPixelStart % stride) / 3;
 
                    RedBarX = (redPixelStart % stride) / numChannels;
 
                    RedBarY = redPixelStart / stride;
...
 
@@ -618,8 +660,14 @@ namespace DesertPaintLab
 
            if (endY == 0) endY = screenshotHeight;
 
            if (endX > screenshotWidth) endX = screenshotWidth;
 
            if (endY > screenshotHeight) endY = screenshotHeight;
 
            if (startX < 2) startX = 2;
 
            if (startY < 2) startY = 2;
 
            if (startX > screenshotWidth) startX = 2;
 
            if (startY > screenshotHeight) startY = 2;
 

	
 
            int patchTestSize = (swatchHeight / 2) - 1;
 
            int patchTestSize = ((swatchHeight - 5) / 2) - 1;
 
            PixelColor patchColor = new PixelColor();
 
            for (int roughX = startX; roughX < endX - colorBarWidth - patchTestSize; roughX += patchTestSize)
 
            for (int roughX = startX; roughX < endX - colorBarWidth + patchTestSize; roughX += patchTestSize)
 
            {
 
                for (int roughY = startY; roughY < (endY - (blueBarSpacing + 10) - patchTestSize  /*53*/); roughY += patchTestSize)
 
                for (int roughY = startY; roughY < (endY - (blueBarSpacing + 10) + patchTestSize  /*53*/); roughY += patchTestSize)
 
                {
...
 
@@ -628,9 +676,11 @@ namespace DesertPaintLab
 
                    pixels.ColorAt(roughX, roughY, ref patchColor);
 
                    for (X = roughX - patchTestSize; X < roughX; ++X)
 
                    //Console.WriteLine("Found a solid patch of {2},{3},{4} at {0}, {1}", roughX, roughY, patchColor.r, patchColor.g, patchColor.b);
 
                    for (X = Math.Max(0, roughX - patchTestSize); X < roughX; ++X)
 
                    {
 
                        for (Y = roughY - patchTestSize; Y < roughY; ++Y)
 
                        for (Y = Math.Max(0, roughY - patchTestSize); Y < roughY; ++Y)
 
                        {
 
                            //WriteLog("Checking for potential swatch at {0},{1} after found square at {2},{3}", X, Y, roughX, roughY);
 
                            if (TestPosition(X, Y, pixels, ref reactedColor, ref redPixelStart))
 
                            {
 
                                RedBarX = (redPixelStart % stride) / 3;
 
                                RedBarX = (redPixelStart % stride) / numChannels;
 
                                RedBarY = redPixelStart / stride;
UI/CaptureView.cs
Show inline comments
...
 
@@ -26,3 +26,3 @@ namespace DesertPaintLab
 

	
 
        public CaptureView(PlayerProfile profile, Gdk.Pixbuf screenBuffer) : base()
 
        public CaptureView(PlayerProfile profile, Gdk.Pixbuf screenBuffer)
 
        {
...
 
@@ -62,2 +62,7 @@ namespace DesertPaintLab
 

	
 
        public Gdk.Pixbuf RecordBuffer
 
        {
 
            get; set;
 
        }
 

	
 
        public PlayerProfile Profile
...
 
@@ -300,6 +305,6 @@ namespace DesertPaintLab
 
        {
 
            byte* pixBytes = (byte*)screenBuffer.Pixels;
 
            byte* pixBytes = (byte*)RecordBuffer.Pixels;
 

	
 
            ReactionRecorder.Instance.OnCaptureProgress += OnCaptureProgress;
 
            ReactionRecorder.Instance.CaptureReaction(pixBytes, screenBuffer.Width, screenBuffer.Height, screenBuffer.Rowstride);
 
            ReactionRecorder.Instance.CaptureReaction(pixBytes, RecordBuffer.Width, RecordBuffer.Height, RecordBuffer.Rowstride, RecordBuffer.NChannels, RecordBuffer.BitsPerSample);
 
            ReactionRecorder.Instance.OnCaptureProgress -= OnCaptureProgress;
...
 
@@ -319,3 +324,10 @@ namespace DesertPaintLab
 
            //ReactionRecorder.Instance.Y;
 
            progressBar.Fraction = ((double)(ReactionRecorder.Instance.X) / (double)(ReactionRecorder.Instance.ScreenWidth - ReactionRecorder.Instance.ColorBarWidth));
 
            double denom = (double)(ReactionRecorder.Instance.ScreenWidth - ReactionRecorder.Instance.ColorBarWidth);
 
            double numer = (double)(ReactionRecorder.Instance.X);
 
            double fraction = (denom > 0 && numer > 0) ? (numer / denom) : 0;
 
            if (numer > denom)
 
            {
 
                fraction = 1;
 
            }
 
            progressBar.Fraction = fraction;
 
        }
...
 
@@ -325,4 +337,4 @@ namespace DesertPaintLab
 
            int screenWidth = screenBuffer.Width;
 
            int screenHeight = screenBuffer.Height;
 
            int stride = screenBuffer.Rowstride;
 
            int screenHeight = RecordBuffer.Height;
 
            int stride = RecordBuffer.Rowstride;
 

	
...
 
@@ -348,3 +360,3 @@ namespace DesertPaintLab
 
                    string filename = FileUtils.FindNumberedFile("DesertPaintLab_Colormatch", "png", screenshotDir);
 
                    screenBuffer.Save(filename, "png");
 
                    RecordBuffer.Save(filename, "png");
 
                }
...
 
@@ -363,7 +375,7 @@ namespace DesertPaintLab
 

	
 
                    Gdk.Pixbuf outPixBuf = new Gdk.Pixbuf(screenBuffer, Math.Max(0, x), Math.Max(0, y), 
 
                    Gdk.Pixbuf outPixBuf = new Gdk.Pixbuf(RecordBuffer, Math.Max(0, x), Math.Max(0, y), 
 
                        captureAreaWidth, captureAreaHeight);
 
                    //Gdk.Pixbuf outPixBuf = new Gdk.Pixbuf(screenBuffer, Math.Max(0, redPixelStartX), Math.Max(0, redPixelStartY),
 
                    //Gdk.Pixbuf outPixBuf = new Gdk.Pixbuf(RecordBuffer, Math.Max(0, redPixelStartX), Math.Max(0, redPixelStartY),
 
                    //    ReactionRecorder.Instance.ColorBarWidth, ReactionRecorder.Instance.GreenBarSpacing - ReactionRecorder.Instance.RedBarSpacing);
 
                    //screenBuffer.Save(filename, "png");
 
                    //RecordBuffer.Save(filename, "png");
 
                    outPixBuf.Save(filename, "png");
...
 
@@ -371,3 +383,3 @@ namespace DesertPaintLab
 
            }
 
            //screenBuffer.Save("screenshot.png", "png");
 
            //RecordBuffer.Save("screenshot.png", "png");
 

	
...
 
@@ -441,2 +453,5 @@ namespace DesertPaintLab
 

	
 
            // release
 
            RecordBuffer = null;
 

	
 
            ingredient1ComboBox.Sensitive = true;
...
 
@@ -463,3 +478,4 @@ namespace DesertPaintLab
 
            Gdk.Image rootImage = rootWindow.GetImage(0, 0, screenWidth, screenHeight);
 
            screenBuffer.GetFromImage(rootImage, rootImage.Colormap, 0, 0, 0, 0, screenWidth, screenHeight);
 
            RecordBuffer = screenBuffer;
 
            RecordBuffer.GetFromImage(rootImage, rootImage.Colormap, 0, 0, 0, 0, screenWidth, screenHeight);
 
            rootImage.Unref();
...
 
@@ -467,2 +483,37 @@ namespace DesertPaintLab
 

	
 
            int pixelMultiplier;
 
            AppSettings.Get("PixelMultiplier", out pixelMultiplier);
 
            if (pixelMultiplier == 0) pixelMultiplier = 1;
 
            int interfaceSizeIndex = 1;
 
            AppSettings.Get("InterfaceSize", out interfaceSizeIndex);
 
            InterfaceSize interfaceSize = (InterfaceSize)interfaceSizeIndex;
 
            ReactionRecorder.Instance.PixelMultiplier = pixelMultiplier;
 
            ReactionRecorder.Instance.InterfaceSize = interfaceSize;
 

	
 
            BeginCapture();
 
        }
 

	
 
        unsafe void CaptureReactionColorFromLoadedImage(string filePath)
 
        {
 
            // read the screenshot from a file
 
            string screenshotDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 
            FileStream pixStream = new FileStream(filePath, FileMode.Open);
 
            RecordBuffer = new Gdk.Pixbuf(pixStream);
 
            ReactionRecorder.Instance.SetPixelMultiplier(1);
 
            // TODO: allow for other size
 
            InterfaceSize interfaceSize = InterfaceSize.Small;
 
            if (filePath.Contains("Large"))
 
            {
 
                interfaceSize = InterfaceSize.Large;
 
            }
 
            else if (filePath.Contains("Huge"))
 
            {
 
                interfaceSize = InterfaceSize.Huge;
 
            }
 
            ReactionRecorder.Instance.InterfaceSize = interfaceSize;
 

	
 
            System.Console.WriteLine("Loaded {0} size {1} x {2} stride {3} bits {4} colorspace {5} channels {6} hasAlpha {7}", filePath, RecordBuffer.Width, RecordBuffer.Height, RecordBuffer.Rowstride, RecordBuffer.BitsPerSample, RecordBuffer.Colorspace, RecordBuffer.NChannels, RecordBuffer.HasAlpha);
 

	
 
            System.GC.Collect(); // really, clean up now
 

	
 
            BeginCapture();
...
 
@@ -475,2 +526,29 @@ namespace DesertPaintLab
 
        
 
        protected void OnCaptureFromFile(object sender, EventArgs e)
 
        {
 
            Gtk.FileChooserDialog fileDialog =
 
                new Gtk.FileChooserDialog("Select screenshot file.",
 
                        (Gtk.Window)Toplevel, Gtk.FileChooserAction.Open,
 
                        Gtk.Stock.Cancel, Gtk.ResponseType.Cancel,
 
                        Gtk.Stock.Open, Gtk.ResponseType.Accept);
 
            Gtk.FileFilter filter = new Gtk.FileFilter();
 
            filter.AddPattern("*.png");
 
            fileDialog.AddFilter(filter);
 
            Gtk.ResponseType resp = (Gtk.ResponseType)fileDialog.Run();
 
            if (resp == Gtk.ResponseType.Accept)
 
            {
 
                string fileName = fileDialog.Filename;
 
                string directory = fileDialog.CurrentFolder;
 
                if (directory != null)
 
                {
 
                    CaptureReactionColorFromLoadedImage(System.IO.Path.Combine(directory, fileName));
 
                }
 
                else
 
                {
 
                    CaptureReactionColorFromLoadedImage(fileName);
 
                }
 
            }
 
            fileDialog.Destroy();
 
        }
 

	
 
        protected virtual void OnRecord(object sender, System.EventArgs e)
gtk-gui/DesertPaintLab.CaptureView.cs
Show inline comments
...
 
@@ -46,2 +46,4 @@ namespace DesertPaintLab
 
		
 
        private global::Gtk.Button captureFromFileButton;
 

	
 
		private global::Gtk.Label unmodifiedLabel;
...
 
@@ -213,2 +215,3 @@ namespace DesertPaintLab
 
			this.vbox3.Add (this.captureButton);
 
            // Container child vbox3.Gtk.Box+BoxChild
 
			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.captureButton]));
...
 
@@ -217,2 +220,13 @@ namespace DesertPaintLab
 
			w15.Fill = false;
 
            this.captureFromFileButton = new global::Gtk.Button();
 
            this.captureFromFileButton.CanFocus = true;
 
            this.captureFromFileButton.Name = "captureButton";
 
            this.captureFromFileButton.UseUnderline = true;
 
            this.captureFromFileButton.Label = "Capture from File";
 
            this.vbox3.Add(this.captureFromFileButton);
 
            // Container child vbox3.Gtk.Box+BoxChild
 
            global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.captureFromFileButton]));
 
            w16.Position = 2;
 
            w16.Expand = false;
 
            w16.Fill = false;
 
			this.GtkAlignment1.Add (this.vbox3);
...
 
@@ -301,2 +315,3 @@ namespace DesertPaintLab
 
			this.captureButton.Clicked += new global::System.EventHandler (this.OnCapture);
 
            this.captureFromFileButton.Clicked += new global::System.EventHandler(this.OnCaptureFromFile);
 
			this.recordButton.Clicked += new global::System.EventHandler (this.OnRecord);
0 comments (0 inline, 0 general)