⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_l0_generic.c

📁 基于3SC44B0的移植代码,包括UCOSII、UCGUI、触模屏、摄像头的程序
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : LCD_L0_Generic.h
Purpose     : Color conversion routines for LCD-drivers
              This file may not be compiled by itself, bud needs
              to be included in every LCD driver
---------------------------END-OF-HEADER------------------------------
*/

#include <stddef.h>           /* needed for definition of NULL */
#include "LCD_Private.h"      /* private modul definitions & config */
#include "GUI_Private.h"
#include "GUIDebug.h"

/*
        *********************************************************
        *                                                       *
        *                  Color info                           *
        *                                                       *
        *********************************************************
*/


#if (LCD_FIXEDPALETTE==0)
  static 
  #if !LCD_PHYSCOLORS_IN_RAM
    const
  #endif
  LCD_COLOR       LCD_PhysColors[] = { LCD_PHYSCOLORS };
  const LCD_PHYSPALETTE LCD_PhysPal      = { LCD_NUM_COLORS, &LCD_PhysColors[0] };
#endif

#if LCD_NUM_DISPLAYS > 1
  #if (LCD_FIXEDPALETTE_1 == 0)
    static  const LCD_COLOR       LCD_PhysColors_[] = { LCD_PHYSCOLORS_1 };
            const LCD_PHYSPALETTE LCD_PhysPal_      = { LCD_NUM_COLORS_1, &LCD_PhysColors_1[0] };
  #endif
#endif

/*
      *************************************************
      *                                               *
      *             LCD Device                        *
			*       (if memory devices are supported)       *
      *                                               *
      *************************************************
*/
#if GUI_SUPPORT_MEMDEV

const tLCDDEV_APIList LCD_L0_APIList = {

#if LCD_YMAG==1
  LCD_L0_Color2Index,
  LCD_L0_DrawBitmap,
  LCD_L0_DrawHLine,
  LCD_L0_DrawVLine,
  LCD_L0_FillRect,
  LCD_L0_GetPixelIndex,
  LCD_L0_GetRect,
  LCD_L0_Index2Color,
  LCD_L0_SetPixelIndex,
  LCD_L0_XorPixel
#else
  LCD_L0_Color2Index,
  LCD_L0_MAG_DrawBitmap,
  LCD_L0_MAG_DrawHLine,
  LCD_L0_MAG_DrawVLine,
  LCD_L0_MAG_FillRect,
  LCD_L0_MAG_GetPixelIndex,
  LCD_L0_GetRect,          /* Original routine is o.k. here, since we use the logical
                                 coordinates for clipping, which are not magnified */
  LCD_L0_Index2Color,
  LCD_L0_MAG_SetPixelIndex,
  LCD_L0_MAG_XorPixel,
#endif
};

#endif




/*********************************************************************
*
*           Color conversion routines display 0
*
**********************************************************************
*/

#if   LCD_FIXEDPALETTE == 0
  #define COLOR2INDEX(Color) LCD_Color2Index_0(Color, &LCD_PhysPal)
  #define INDEX2COLOR(Index) LCD_Index2Color_0(Index, &LCD_PhysPal)
#elif LCD_FIXEDPALETTE == 1
  #define COLOR2INDEX(Color) LCD_Color2Index_1(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_1(Index)
#elif LCD_FIXEDPALETTE == 2
  #define COLOR2INDEX(Color) LCD_Color2Index_2(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_2(Index)
#elif LCD_FIXEDPALETTE == 4
  #define COLOR2INDEX(Color) LCD_Color2Index_4(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_4(Index)
#elif (LCD_FIXEDPALETTE == 111) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_111(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_111(Index)
#elif (LCD_FIXEDPALETTE == 111) && (LCD_SWAP_RB)
  #define COLOR2INDEX(Color) LCD_Color2Index_M111(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M111(Index)
#elif (LCD_FIXEDPALETTE == 222) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_222(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_222(Index)
#elif (LCD_FIXEDPALETTE == 222) && (LCD_SWAP_RB==1)
  #define COLOR2INDEX(Color) LCD_Color2Index_M222(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M222(Index)
#elif (LCD_FIXEDPALETTE == 233) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_233(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_233(Index)
#elif (LCD_FIXEDPALETTE == 233) && (LCD_SWAP_RB==1)
  #define COLOR2INDEX(Color) LCD_Color2Index_M233(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M233(Index)
#elif (LCD_FIXEDPALETTE == 323) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_323(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_323(Index)
#elif (LCD_FIXEDPALETTE == 323) && (LCD_SWAP_RB==1)
  #define COLOR2INDEX(Color) LCD_Color2Index_M323(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M323(Index)
#elif (LCD_FIXEDPALETTE == 332) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_332(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_332(Index)
#elif (LCD_FIXEDPALETTE == 332) && (LCD_SWAP_RB==1)
  #define COLOR2INDEX(Color) LCD_Color2Index_M332(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M332(Index)
#elif (LCD_FIXEDPALETTE == 444)  && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_444(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_444(Index)
#elif (LCD_FIXEDPALETTE == 555)  && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_555(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_555(Index)
#elif (LCD_FIXEDPALETTE == 555)  && (LCD_SWAP_RB)
  #define COLOR2INDEX(Color) LCD_Color2Index_M555(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M555(Index)
#elif (LCD_FIXEDPALETTE == 565) && (LCD_SWAP_RB==0)
  #define COLOR2INDEX(Color) LCD_Color2Index_565(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_565(Index)
#elif (LCD_FIXEDPALETTE == 565) && (LCD_SWAP_RB)
  #define COLOR2INDEX(Color) LCD_Color2Index_M565(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_M565(Index)
#elif LCD_FIXEDPALETTE == 8666
  #define COLOR2INDEX(Color) LCD_Color2Index_8666(Color)
  #define INDEX2COLOR(Index) LCD_Index2Color_8666(Index)
#else
  #error Unsupported color mode
#endif


unsigned int LCD_L0_Color2Index(LCD_COLOR Color) {
  unsigned int Index;
  Index = COLOR2INDEX(Color);
  #if LCD_REVERSE
    Index ^= ((1<<LCD_BITSPERPIXEL)-1);
  #endif
  return Index;
}

LCD_COLOR LCD_L0_Index2Color(int Index) {
  #if LCD_REVERSE
    Index ^= ((1<<LCD_BITSPERPIXEL)-1);
  #endif
  return INDEX2COLOR(Index);
}

/*********************************************************************
*
*           LCD_L0_GetRect
*
**********************************************************************

*/
void LCD_L0_GetRect (LCD_RECT *pRect) {
  pRect->x0 = 0;
  pRect->y0 = 0;
  pRect->x1 = LCD_XSIZE-1;
  pRect->y1 = LCD_YSIZE-1;
}


/*********************************************************************
*
*           Color conversion routines display 1
*
**********************************************************************
*/

#if LCD_NUM_DISPLAYS > 1
  #undef COLOR2INDEX
  #undef INDEX2COLOR
  #if   LCD_FIXEDPALETTE_1 == 0
    #define COLOR2INDEX(Color) LCD_Color2Index_0(Color, &LCD_PhysPal)
    #define INDEX2COLOR(Index) LCD_Index2Color_0(Index, &LCD_PhysPal)
  #elif LCD_FIXEDPALETTE_1 == 1
    #define COLOR2INDEX(Color) LCD_Color2Index_1(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_1(Index)
  #elif LCD_FIXEDPALETTE_1 == 2
    #define COLOR2INDEX(Color) LCD_Color2Index_2(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_2(Index)
  #elif LCD_FIXEDPALETTE_1 == 4
    #define COLOR2INDEX(Color) LCD_Color2Index_4(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_4(Index)
  #elif (LCD_FIXEDPALETTE_1 == 111) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_111(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_111(Index)
  #elif (LCD_FIXEDPALETTE_1 == 111) && (LCD_SWAP_RB_1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M111(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M111(Index)
  #elif (LCD_FIXEDPALETTE_1 == 222) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_222(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_222(Index)
  #elif (LCD_FIXEDPALETTE_1 == 222) && (LCD_SWAP_RB_1==1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M222(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M222(Index)
  #elif (LCD_FIXEDPALETTE_1 == 233) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_233(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_233(Index)
  #elif (LCD_FIXEDPALETTE_1 == 233) && (LCD_SWAP_RB_1==1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M233(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M233(Index)
  #elif (LCD_FIXEDPALETTE_1 == 323) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_323(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_323(Index)
  #elif (LCD_FIXEDPALETTE_1 == 323) && (LCD_SWAP_RB_1==1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M323(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M323(Index)
  #elif (LCD_FIXEDPALETTE_1 == 332) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_332(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_332(Index)
  #elif (LCD_FIXEDPALETTE_1 == 332) && (LCD_SWAP_RB_1==1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M332(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M332(Index)
  #elif (LCD_FIXEDPALETTE_1 == 555)  && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_555(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_555(Index)
  #elif (LCD_FIXEDPALETTE_1 == 555)  && (LCD_SWAP_RB_1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M555(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M555(Index)
  #elif (LCD_FIXEDPALETTE_1 == 565) && (LCD_SWAP_RB_1==0)
    #define COLOR2INDEX(Color) LCD_Color2Index_565(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_565(Index)
  #elif (LCD_FIXEDPALETTE_1 == 565) && (LCD_SWAP_RB_1)
    #define COLOR2INDEX(Color) LCD_Color2Index_M565(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_M565(Index)
  #elif LCD_FIXEDPALETTE_1 == 8666
    #define COLOR2INDEX(Color) LCD_Color2Index_8666(Color)
    #define INDEX2COLOR(Index) LCD_Index2Color_8666(Index)
  #else
    #error Unsupported color mode
  #endif


  unsigned int LCD_L0_1_Color2Index(LCD_COLOR Color) {
    unsigned int Index;
    Index = COLOR2INDEX(Color);
    #if LCD_REVERSE
      Index ^= ((1<<LCD_BITSPERPIXEL)-1);
    #endif
    return Index;
  }

  LCD_COLOR LCD_L0_1_Index2Color(int Index) {
    #if LCD_REVERSE
      Index ^= ((1<<LCD_BITSPERPIXEL)-1);
    #endif
    return INDEX2COLOR(Index);
  }
  /*********************************************************************
  *
  *           LCD_L0_1_GetRect
  *
  **********************************************************************

  */
  void LCD_L0_1_GetRect (LCD_RECT *pRect) {
    pRect->x0 = 0;
    pRect->y0 = 0;
    pRect->x1 = LCD_XSIZE_1 - 1;
    pRect->y1 = LCD_YSIZE_1 - 1;
  }

#endif




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -