vcl/workben/vcldemo.cxx | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-)
New commits: commit 79d1c87bc27231905f21b382e36eae87480e9359 Author: Michael Meeks <[email protected]> Date: Mon Nov 17 02:07:44 2014 +0100 vcldemo: repair mini view, and add alpha blended page corner alike. Change-Id: I0c047a2b8940e2be76c94bf9de5423aa7e0eff8b diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx index b553153..3fb14d6 100644 --- a/vcl/workben/vcldemo.cxx +++ b/vcl/workben/vcldemo.cxx @@ -54,6 +54,7 @@ class DemoRenderer RenderStyle meStyle; bool mbVDev; DemoRenderer *mpDemoRenderer; + Size maSize; }; struct RegionRenderer { public: @@ -117,16 +118,15 @@ public: static std::vector<Rectangle> partition(const RenderContext &rCtx, int nX, int nY) { - return rCtx.mpDemoRenderer->partition(nX, nY); + return rCtx.mpDemoRenderer->partition(rCtx.maSize, nX, nY); } - std::vector<Rectangle> partition(int nX, int nY) + std::vector<Rectangle> partition(Size aSize, int nX, int nY) { Rectangle r; std::vector<Rectangle> aRegions; // Make small cleared area for these guys - Size aSize(GetSizePixel()); long nBorderSize = aSize.Width() / 32; long nBoxWidth = (aSize.Width() - nBorderSize*(nX+1)) / nX; long nBoxHeight = (aSize.Height() - nBorderSize*(nY+1)) / nY; @@ -431,7 +431,6 @@ public: Gradient aGradient; aGradient.SetStartColor(COL_YELLOW); aGradient.SetEndColor(COL_RED); - // aGradient.SetAngle(45); aGradient.SetStyle(GradientStyle_RECT); aGradient.SetBorder(r.GetSize().Width()/20); rDev.DrawGradient(r, aGradient); @@ -478,8 +477,23 @@ public: aWriter.Write(aStream); } #endif - - rDev.DrawBitmapEx(r.Center(), aShadowStretch); + Point aRenderPt(r.Center()); + aRenderPt.Move(-nSlice-1, 0); + rDev.DrawBitmapEx(aRenderPt, aShadowStretch); + + AlphaMask aWholeMask(aPageShadowMask.GetBitmap()); + aBlockColor = Bitmap(aPageShadowMask.GetSizePixel(), 24); + aBlockColor.Erase(COL_GREEN); + BitmapEx aWhole(aBlockColor, aWholeMask); + + aRenderPt = Point(r.Center()); + aRenderPt.Move(nSlice+1, 0); + + // An offset background for alpha rendering + rDev.SetFillColor(COL_BLUE); + Rectangle aSurround(r.Center(), Size(aPageShadowMask.GetSizePixel())); + rDev.DrawRect(aSurround); + rDev.DrawBitmapEx(aRenderPt, aWhole); } virtual void RenderRegion(OutputDevice &rDev, Rectangle r, @@ -586,7 +600,7 @@ public: Rectangle aWhole(Point(0,0), r.GetSize()); // mini me - rCtx.mpDemoRenderer->drawToDevice(*pNested, true); + rCtx.mpDemoRenderer->drawToDevice(*pNested, r.GetSize(), true); if (eType == RENDER_AS_BITMAP) { @@ -774,11 +788,12 @@ public: } }; - void drawToDevice(OutputDevice &rDev, bool bVDev) + void drawToDevice(OutputDevice &rDev, Size aSize, bool bVDev) { RenderContext aCtx; aCtx.mbVDev = bVDev; aCtx.mpDemoRenderer = this; + aCtx.maSize = aSize; Rectangle aWholeWin(Point(0,0), rDev.GetOutputSizePixel()); @@ -793,7 +808,7 @@ public: else { aCtx.meStyle = RENDER_THUMB; - std::vector<Rectangle> aRegions(partition(mnSegmentsX, mnSegmentsY)); + std::vector<Rectangle> aRegions(partition(aSize, mnSegmentsX, mnSegmentsY)); DemoRenderer::clearRects(rDev, aRegions); for (size_t i = 0; i < maRenderers.size(); i++) maRenderers[i]->RenderRegion(rDev, aRegions[i], aCtx); @@ -882,7 +897,7 @@ bool DemoRenderer::MouseButtonDown(const MouseEvent& rMEvt) } // click on a region to zoom into it - std::vector<Rectangle> aRegions(partition(mnSegmentsX, mnSegmentsY)); + std::vector<Rectangle> aRegions(partition(GetSizePixel(), mnSegmentsX, mnSegmentsY)); for (size_t i = 0; i < aRegions.size(); i++) { if (aRegions[i].IsInside(rMEvt.GetPosPixel())) @@ -994,7 +1009,7 @@ public: { mrRenderer.SetSizePixel(GetSizePixel()); fprintf(stderr, "DemoWin::Paint(%ld,%ld,%ld,%ld)\n", rRect.getX(), rRect.getY(), rRect.getWidth(), rRect.getHeight()); - mrRenderer.drawToDevice(*this, false); + mrRenderer.drawToDevice(*this, GetSizePixel(), false); } }; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
