Fixed the partial thumbnail bug.

This commit is contained in:
larsbrubaker 2014-05-08 13:37:00 -07:00
parent 5a17b678f6
commit 9c4bc5cc73

View file

@ -75,7 +75,7 @@ namespace MatterHackers.MatterControl
ImageBuffer buildingThumbnailImage = new Agg.Image.ImageBuffer(); ImageBuffer buildingThumbnailImage = new Agg.Image.ImageBuffer();
ImageBuffer noThumbnailImage = new Agg.Image.ImageBuffer(); ImageBuffer noThumbnailImage = new Agg.Image.ImageBuffer();
ImageBuffer image = new Agg.Image.ImageBuffer(); ImageBuffer tumbnailImage = new Agg.Image.ImageBuffer();
// all the color stuff // all the color stuff
public double BorderWidth = 0; //Don't delete this - required for OnDraw public double BorderWidth = 0; //Don't delete this - required for OnDraw
@ -128,7 +128,7 @@ namespace MatterHackers.MatterControl
ImageIO.LoadImageData(this.GetImageLocation(noThumbnailFileName), noThumbnailImage); ImageIO.LoadImageData(this.GetImageLocation(noThumbnailFileName), noThumbnailImage);
ImageIO.LoadImageData(this.GetImageLocation(buildingThumbnailFileName), buildingThumbnailImage); ImageIO.LoadImageData(this.GetImageLocation(buildingThumbnailFileName), buildingThumbnailImage);
} }
this.image = new ImageBuffer(buildingThumbnailImage); this.tumbnailImage = new ImageBuffer(buildingThumbnailImage);
// Add Handlers // Add Handlers
this.Click += new ButtonEventHandler(onMouseClick); this.Click += new ButtonEventHandler(onMouseClick);
@ -163,7 +163,7 @@ namespace MatterHackers.MatterControl
{ {
if (thumbnailWidget.printItem == null) if (thumbnailWidget.printItem == null)
{ {
thumbnailWidget.image = new ImageBuffer(thumbnailWidget.noThumbnailImage); thumbnailWidget.tumbnailImage = new ImageBuffer(thumbnailWidget.noThumbnailImage);
thumbnailWidget.Invalidate(); thumbnailWidget.Invalidate();
return; return;
} }
@ -176,8 +176,8 @@ namespace MatterHackers.MatterControl
{ {
Mesh loadedMesh = StlProcessing.Load(thumbnailWidget.PrintItem.FileLocation); Mesh loadedMesh = StlProcessing.Load(thumbnailWidget.PrintItem.FileLocation);
thumbnailWidget.image = new ImageBuffer(thumbnailWidget.buildingThumbnailImage); thumbnailWidget.tumbnailImage = new ImageBuffer(thumbnailWidget.buildingThumbnailImage);
thumbnailWidget.image.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0)); thumbnailWidget.tumbnailImage.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0));
bigRender = BuildImageFromSTL(loadedMesh, stlHashCode, bigRenderSize); bigRender = BuildImageFromSTL(loadedMesh, stlHashCode, bigRenderSize);
if (bigRender == null) if (bigRender == null)
{ {
@ -197,9 +197,9 @@ namespace MatterHackers.MatterControl
halfWay2.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0)); halfWay2.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0));
halfWay2.NewGraphics2D().Render(halfWay1, 0, 0, 0, (double)halfWay2.Width / halfWay1.Width, (double)halfWay2.Height / halfWay1.Height); halfWay2.NewGraphics2D().Render(halfWay1, 0, 0, 0, (double)halfWay2.Width / halfWay1.Width, (double)halfWay2.Height / halfWay1.Height);
thumbnailWidget.image = new ImageBuffer(50, 50, 32, new BlenderBGRA()); thumbnailWidget.tumbnailImage = new ImageBuffer(50, 50, 32, new BlenderBGRA());
thumbnailWidget.image.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0)); thumbnailWidget.tumbnailImage.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0));
thumbnailWidget.image.NewGraphics2D().Render(halfWay2, 0, 0, 0, (double)thumbnailWidget.image.Width / halfWay2.Width, (double)thumbnailWidget.image.Height / halfWay2.Height); thumbnailWidget.tumbnailImage.NewGraphics2D().Render(halfWay2, 0, 0, 0, (double)thumbnailWidget.tumbnailImage.Width / halfWay2.Width, (double)thumbnailWidget.tumbnailImage.Height / halfWay2.Height);
} }
break; break;
@ -209,9 +209,9 @@ namespace MatterHackers.MatterControl
halfWay1.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0)); halfWay1.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0));
halfWay1.NewGraphics2D().Render(bigRender, 0, 0, 0, (double)halfWay1.Width / bigRender.Width, (double)halfWay1.Height / bigRender.Height); halfWay1.NewGraphics2D().Render(bigRender, 0, 0, 0, (double)halfWay1.Width / bigRender.Width, (double)halfWay1.Height / bigRender.Height);
thumbnailWidget.image = new ImageBuffer(115, 115, 32, new BlenderBGRA()); thumbnailWidget.tumbnailImage = new ImageBuffer(115, 115, 32, new BlenderBGRA());
thumbnailWidget.image.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0)); thumbnailWidget.tumbnailImage.NewGraphics2D().Clear(new RGBA_Bytes(255, 255, 255, 0));
thumbnailWidget.image.NewGraphics2D().Render(halfWay1, 0, 0, 0, (double)thumbnailWidget.image.Width / halfWay1.Width, (double)thumbnailWidget.image.Height / halfWay1.Height); thumbnailWidget.tumbnailImage.NewGraphics2D().Render(halfWay1, 0, 0, 0, (double)thumbnailWidget.tumbnailImage.Width / halfWay1.Width, (double)thumbnailWidget.tumbnailImage.Height / halfWay1.Height);
} }
break; break;
@ -219,10 +219,16 @@ namespace MatterHackers.MatterControl
throw new NotImplementedException(); throw new NotImplementedException();
} }
thumbnailWidget.Invalidate(); UiThread.RunOnIdle(thumbnailWidget.EnsureImageUpdated);
} }
} }
void EnsureImageUpdated(object state)
{
tumbnailImage.MarkImageChanged();
Invalidate();
}
private static ImageBuffer LoadImageFromDisk(PartThumbnailWidget thumbnailWidget, string stlHashCode, Point2D size) private static ImageBuffer LoadImageFromDisk(PartThumbnailWidget thumbnailWidget, string stlHashCode, Point2D size)
{ {
ImageBuffer tempImage = new ImageBuffer(size.x, size.y, 32, new BlenderBGRA()); ImageBuffer tempImage = new ImageBuffer(size.x, size.y, 32, new BlenderBGRA());
@ -352,7 +358,7 @@ namespace MatterHackers.MatterControl
{ {
graphics2D.Render(rectBorder, this.HoverBackgroundColor); graphics2D.Render(rectBorder, this.HoverBackgroundColor);
} }
graphics2D.Render(image, Width / 2 - image.Width / 2, Height / 2 - image.Height / 2); graphics2D.Render(tumbnailImage, Width / 2 - tumbnailImage.Width / 2, Height / 2 - tumbnailImage.Height / 2);
base.OnDraw(graphics2D); base.OnDraw(graphics2D);
RectangleDouble Bounds = LocalBounds; RectangleDouble Bounds = LocalBounds;