|
|
- /* --COPYRIGHT--,BSD
- * Copyright (c) 2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * --/COPYRIGHT--*/
-
- #include "grlib.h"
-
- //*****************************************************************************
- //
- //! \addtogroup context_api
- //! @{
- //
- //*****************************************************************************
-
- //*****************************************************************************
- //
- //! Initializes a drawing context.
- //!
- //! \param pContext is a pointer to the drawing context to initialize.
- //! \param pDisplay is a pointer to the tDisplayInfo structure that describes
- //! the display driver to use.
- //!
- //! This function initializes a drawing context, preparing it for use. The
- //! provided display driver will be used for all subsequent graphics
- //! operations, and the default clipping region will be set to the extent of
- //! the screen.
- //!
- //! \return None.
- //
- //*****************************************************************************
- void
- GrContextInit(tContext *pContext, const tDisplay *pDisplay)
- {
- //
- // Check the arguments.
- //
- assert(pContext);
- assert(pDisplay);
-
- //
- // Set the size of the context.
- //
- pContext->lSize = sizeof(tContext);
-
- //
- // Save the pointer to the display.
- //
- pContext->pDisplay = pDisplay;
-
- //
- // Initialize the extent of the clipping region to the extents of the
- // screen.
- //
- pContext->sClipRegion.sXMin = 0;
- pContext->sClipRegion.sYMin = 0;
- pContext->sClipRegion.sXMax = pDisplay->usWidth - 1;
- pContext->sClipRegion.sYMax = pDisplay->usHeight - 1;
-
- //
- // Provide a default color and font.
- //
- pContext->ulForeground = 0;
- pContext->ulBackground = 0;
- pContext->pFont = 0;
- }
-
- //*****************************************************************************
- //
- //! Sets the extents of the clipping region.
- //!
- //! \param pContext is a pointer to the drawing context to use.
- //! \param pRect is a pointer to the structure containing the extents of the
- //! clipping region.
- //!
- //! This function sets the extents of the clipping region. The clipping region
- //! is not allowed to exceed the extents of the screen, but may be a portion of
- //! the screen.
- //!
- //! The supplied coordinate are inclusive; \e sXMin of 1 and \e sXMax of 1 will
- //! define a clipping region that will display only the pixels in the X = 1
- //! column. A consequence of this is that the clipping region must contain
- //! at least one row and one column.
- //!
- //! \return None.
- //
- //*****************************************************************************
- void
- GrContextClipRegionSet(tContext *pContext, tRectangle *pRect)
- {
- unsigned long ulW, ulH;
-
- //
- // Check the arguments.
- //
- assert(pContext);
- assert(pRect);
-
- //
- // Get the width and height of the display.
- //
- ulW = DpyWidthGet(pContext->pDisplay);
- ulH = DpyHeightGet(pContext->pDisplay);
-
- //
- // Set the extents of the clipping region, forcing them to reside within
- // the extents of the screen.
- //
- pContext->sClipRegion.sXMin = ((pRect->sXMin < 0) ? 0 :
- ((pRect->sXMin >= ulW) ? (ulW - 1) :
- pRect->sXMin));
- pContext->sClipRegion.sYMin = ((pRect->sYMin < 0) ? 0 :
- ((pRect->sYMin >= ulH) ? (ulH - 1) :
- pRect->sYMin));
- pContext->sClipRegion.sXMax = ((pRect->sXMax < 0) ? 0 :
- ((pRect->sXMax >= ulW) ? (ulW - 1) :
- pRect->sXMax));
- pContext->sClipRegion.sYMax = ((pRect->sYMax < 0) ? 0 :
- ((pRect->sYMax >= ulH) ? (ulH - 1) :
- pRect->sYMax));
- }
-
- //*****************************************************************************
- //
- // Close the Doxygen group.
- //! @}
- //
- //*****************************************************************************
|