GUI_DrawBitmap.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:3k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. *********************************************************************************************************
  3. *                                                uC/GUI
  4. *                        Universal graphic software for embedded applications
  5. *
  6. *                       (c) Copyright 2002, Micrium Inc., Weston, FL
  7. *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
  8. *
  9. *              礐/GUI is protected by international copyright laws. Knowledge of the
  10. *              source code may not be used to write a similar product. This file may
  11. *              only be used in accordance with a license and should not be redistributed
  12. *              in any way. We appreciate your understanding and fairness.
  13. *
  14. ----------------------------------------------------------------------
  15. File        : GUI_DrawBitmap.C
  16. Purpose     : Implementation of GUI_DrawBitmap
  17. ---------------------------END-OF-HEADER------------------------------
  18. */
  19. #include "GUI_Protected.H"
  20. /*********************************************************************
  21. *
  22. *             GUI_DrawBitmap
  23. *
  24. **********************************************************************
  25.   Translates the external bitmap format into an internal
  26.   format. This turned out to be necessary as the internal
  27.   format is easier to create and more flexible for routines
  28.   that draw text-bitmaps.
  29. */
  30. void GL_DrawBitmap   (const GUI_BITMAP *pBitmap, int x0, int y0) {
  31.   GUI_DRAWMODE PrevDraw;
  32.   const GUI_LOGPALETTE* pPal;
  33.   pPal = pBitmap->pPal;
  34.   PrevDraw = GUI_SetDrawMode(0);  /* No Get... at this point */
  35.   GUI_SetDrawMode((pPal && pPal->HasTrans) ? (PrevDraw|GUI_DRAWMODE_TRANS) : PrevDraw &(~GUI_DRAWMODE_TRANS));
  36.   if (pBitmap->pfDraw) {
  37.     #if !defined (__C51__)  /* Avoid Keil C51 limitation */
  38.       pBitmap->pfDraw(x0, y0, pBitmap->XSize ,pBitmap->YSize, (U8 const *)pBitmap->pData, pBitmap->pPal, 1, 1);
  39.     #endif
  40.   } else {
  41.     LCD_DrawBitmap( x0,y0
  42.                     ,pBitmap->XSize ,pBitmap->YSize
  43.                     ,1,1
  44.                     ,pBitmap->BitsPerPixel
  45.                     ,pBitmap->BytesPerLine
  46.                     ,(U8 const *)pBitmap->pData
  47.                     ,pBitmap->pPal);
  48.   }
  49.   GUI_SetDrawMode(PrevDraw);
  50. }
  51. void GUI_DrawBitmap   (const GUI_BITMAP  *pBitmap, int x0, int y0) {
  52.   #if (GUI_WINSUPPORT)
  53.     GUI_RECT r;
  54.   #endif
  55.   GUI_LOCK();
  56.   #if (GUI_WINSUPPORT)
  57.     WM_ADDORG(x0,y0);
  58.     r.x1 = (r.x0 = x0) + pBitmap->XSize-1;
  59.     r.y1 = (r.y0 = y0) + pBitmap->YSize-1;
  60.     WM_ITERATE_START(&r) {
  61.   #endif
  62.   GL_DrawBitmap(pBitmap, x0, y0);
  63.   #if (GUI_WINSUPPORT)
  64.     } WM_ITERATE_END();
  65.   #endif
  66.   GUI_UNLOCK();
  67. }