bool PZoomInteraction::Draw (Painter &inPainter) { if (mDragging) { inPainter.SetLineColor (255, 0, 0); float theX1 = mX1; float theX2 = mX2; float theY1 = mY1; float theY2 = mY2; switch (mZoomMode) { case kZoom_Region: break; case kZoom_X: theY1 = mPPlot.mMargins.mTop; theY2 = inPainter.GetHeight ()-mPPlot.mMargins.mBottom; break; case kZoom_Y: theX1 = mPPlot.mMargins.mLeft; theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mRight; break; } // draw rectangle inPainter.DrawLine (theX1, theY1, theX2, theY1); inPainter.DrawLine (theX2, theY1, theX2, theY2); inPainter.DrawLine (theX2, theY2, theX1, theY2); inPainter.DrawLine (theX1, theY2, theX1, theY1); } return true; }
TEST_F(TurtleTest, TestDrawLine) { using ::testing::AtLeast; Painter painter; Turtle& turtle = access_private::turtle(painter); MockTurtle& mockTurtle = GetMockObject(&turtle); EXPECT_CALL(mockTurtle, PenDown()).Times(AtLeast(1)); painter.DrawLine(0, 0, 10, 10); }
bool PZoomInteraction::Draw (Painter &inPainter) { if (mDragging) { inPainter.SetLineColor (255, 0, 0); float theX1 = mX1; float theX2 = mX2; float theY1 = mY1; float theY2 = mY2; bool theDrawInverse = true; switch (mZoomMode) { case kZoom_Region: // theDrawInverse = false; break; case kZoom_X: theY1 = mPPlot.mMargins.mTop; theY2 = inPainter.GetHeight ()-mPPlot.mMargins.mBottom; break; case kZoom_Y: theX1 = mPPlot.mMargins.mLeft; theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mRight; break; } // draw rectangle inPainter.DrawLine (theX1, theY1, theX2, theY1); inPainter.DrawLine (theX2, theY1, theX2, theY2); inPainter.DrawLine (theX2, theY2, theX1, theY2); inPainter.DrawLine (theX1, theY2, theX1, theY1); if (theDrawInverse) { float theX = pmin (theX1, theX2); float theY = pmin (theY1, theY2); float theW = fabs (theX1-theX2); float theH = fabs (theY1-theY2); inPainter.InvertRect (theX, theY, theW, theH); } } return true; }
bool PCrosshairInteraction::Draw (Painter &inPainter) { if (mActive) { float theX1 = mX; float theY1 = mPPlot.mMargins.mTop; float theX2 = mX; float theY2 = inPainter.GetHeight () - mPPlot.mMargins.mBottom; inPainter.SetLineColor (0, 0, 0); inPainter.DrawLine (theX1, theY1, theX2, theY2); PlotDataContainer &theContainer = mPPlot.mPlotDataContainer; long thePlotCount = theContainer.GetPlotCount (); for (long theI=0;theI<thePlotCount;theI++) { PlotDataBase *theXData = theContainer.GetXData (theI); PlotDataBase *theYData = theContainer.GetYData (theI); LegendData *theLegendData = theContainer.GetLegendData (theI); float theY; if (GetCrossPoint (theXData, theYData, theY)) { if (mListener) { float theXTarget = mPPlot.mXTrafo->TransformBack (mX); float theYTarget = mPPlot.mYTrafo->TransformBack (theY); mListener->HandleCrosshair (theI, thePlotCount, theXTarget, theYTarget); } theX1 = mPPlot.mMargins.mLeft; theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mLeft; theY1 = theY2 = theY; PColor theC = theLegendData->mColor; inPainter.SetLineColor (theC.mR, theC.mG, theC.mB); inPainter.DrawLine (theX1, theY1, theX2, theY2); } } } return true; }