//***************************************************************************** // //! Draws a vertical line. //! //! \param pContext is a pointer to the drawing context to use. //! \param i32X is the X coordinate of the line. //! \param i32Y1 is the Y coordinate of one end of the line. //! \param i32Y2 is the Y coordinate of the other end of the line. //! //! This function draws a vertical line, taking advantage of the fact that the //! line is vertical to draw it more efficiently. The clipping of the vertical //! line to the clipping rectangle is performed within this routine; the //! display driver's vertical line routine is used to perform the actual line //! drawing. //! //! \return None. // //***************************************************************************** void GrLineDrawV(const tContext *pContext, int32_t i32X, int32_t i32Y1, int32_t i32Y2) { int32_t i32Temp; // // Check the arguments. // ASSERT(pContext); // // If the X coordinate of this line is not within the clipping region, then // there is nothing to be done. // if((i32X < pContext->sClipRegion.i16XMin) || (i32X > pContext->sClipRegion.i16XMax)) { return; } // // Swap the Y coordinates if the first is larger than the second. // if(i32Y1 > i32Y2) { i32Temp = i32Y1; i32Y1 = i32Y2; i32Y2 = i32Temp; } // // If the entire line is out of the clipping region, then there is nothing // to be done. // if((i32Y1 > pContext->sClipRegion.i16YMax) || (i32Y2 < pContext->sClipRegion.i16YMin)) { return; } // // Clip the starting coordinate to the top side of the clipping region if // required. // if(i32Y1 < pContext->sClipRegion.i16YMin) { i32Y1 = pContext->sClipRegion.i16YMin; } // // Clip the ending coordinate to the bottom side of the clipping region if // required. // if(i32Y2 > pContext->sClipRegion.i16YMax) { i32Y2 = pContext->sClipRegion.i16YMax; } // // Call the low level vertical line drawing routine. // DpyLineDrawV(pContext->psDisplay, i32X, i32Y1, i32Y2, pContext->ui32Foreground); }
//***************************************************************************** // //! Draws a vertical line. //! //! \param pContext is a pointer to the drawing context to use. //! \param lX is the X coordinate of the line. //! \param lY1 is the Y coordinate of one end of the line. //! \param lY2 is the Y coordinate of the other end of the line. //! //! This function draws a vertical line, taking advantage of the fact that the //! line is vertical to draw it more efficiently. The clipping of the vertical //! line to the clipping rectangle is performed within this routine; the //! display driver's vertical line routine is used to perform the actual line //! drawing. //! //! \return None. // //***************************************************************************** void GrLineDrawV(const tContext *pContext, long lX, long lY1, long lY2) { long lTemp; // // Check the arguments. // ASSERT(pContext); // // If the X coordinate of this line is not within the clipping region, then // there is nothing to be done. // if((lX < pContext->sClipRegion.sXMin) || (lX > pContext->sClipRegion.sXMax)) { return; } // // Swap the Y coordinates if the first is larger than the second. // if(lY1 > lY2) { lTemp = lY1; lY1 = lY2; lY2 = lTemp; } // // If the entire line is out of the clipping region, then there is nothing // to be done. // if((lY1 > pContext->sClipRegion.sYMax) || (lY2 < pContext->sClipRegion.sYMin)) { return; } // // Clip the starting coordinate to the top side of the clipping region if // required. // if(lY1 < pContext->sClipRegion.sYMin) { lY1 = pContext->sClipRegion.sYMin; } // // Clip the ending coordinate to the bottom side of the clipping region if // required. // if(lY2 > pContext->sClipRegion.sYMax) { lY2 = pContext->sClipRegion.sYMax; } // // Call the low level vertical line drawing routine. // DpyLineDrawV(pContext->pDisplay, lX, lY1, lY2, pContext->ulForeground); }