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

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_DrawBitmapMag.C
  16. Purpose     : Implementation file for GUI_DrawBitmapMag
  17. ---------------------------END-OF-HEADER------------------------------
  18. */
  19. #include <stddef.h>           /* needed for definition of NULL */
  20. #include "GUI_Protected.H"
  21. void GUI_DrawBitmapMag (const GUI_BITMAP *pBitmap, int x0, int y0, int xMul, int yMul) {
  22.   GUI_DRAWMODE PrevDraw;
  23.   int xSize, ySize;
  24.   const GUI_LOGPALETTE* pPal;
  25.   GUI_LOCK();
  26.   pPal = pBitmap->pPal;
  27.   xSize = pBitmap->XSize;
  28.   ySize = pBitmap->YSize;
  29.   PrevDraw = GUI_SetDrawMode((pPal && pPal->HasTrans) ? GUI_DRAWMODE_TRANS : 0);
  30.   #if (GUI_WINSUPPORT)
  31.     WM_ADDORG(x0,y0);
  32.     {
  33.       GUI_RECT r;
  34.       r.x0 = x0;
  35.       r.x1 = x0 + xSize * yMul -1;
  36.       r.y0 = y0;
  37.       r.y1 = y0 + xSize * yMul -1;
  38.       WM_ITERATE_START(&r);
  39.   #endif
  40.   if (pBitmap->pfDraw) {
  41.     #if !defined (__C51__)  /* Avoid Keil C51 limitation */
  42.       pBitmap->pfDraw(x0, y0, pBitmap->XSize ,pBitmap->YSize, (U8 const *)pBitmap->pData, pBitmap->pPal, xMul, yMul);
  43.     #endif
  44.   } else {
  45.     LCD_DrawBitmap(x0, y0, xSize, ySize, xMul, yMul
  46.                     ,pBitmap->BitsPerPixel, pBitmap->BytesPerLine
  47.                     ,pBitmap->pData, pBitmap->pPal);
  48.   }
  49.   #if (GUI_WINSUPPORT)
  50.       WM_ITERATE_END();
  51.     }
  52.   #endif
  53.   GUI_SetDrawMode(PrevDraw);
  54.   GUI_UNLOCK();
  55. }