亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gdi_main.c

?? Gui of OSD programming
?? C
?? 第 1 頁 / 共 4 頁
字號:
 * @return  --
 *
 ******************************************************************************/

void GDI_Drcs1Compress(const uint8_t lines)
{
   if (lines == LINES_9)
   {
      GlobalDisplayWord[6] &= 0xFE;                      /* set bit 0 to '0' */
      /* combined ROM and DRCS1 characters */
      API_Tvt_Mx3Decompress((uint8_t*)srcDrcs1, fontDrcs1, LINES_9);
      linesPerCharacter = LINES_9;
   }
   else if (lines == LINES_10)
   {
   /* GlobalDisplayWord[6] &= 0xC0; */              /* reset resolution bits */
      GlobalDisplayWord[6] &= 0x40;                 /* reset resolution bits */
      GlobalDisplayWord[6] |= 0x09;/* set bit 0/3 to '1': resolution 10lines */
      /* combined ROM and DRCS1 characters */
      API_Tvt_Mx3Decompress((uint8_t*)srcDrcs1, fontDrcs1, LINES_10);
      linesPerCharacter = LINES_10;
   }
}



/******************************************************************************/
/**
 * @brief   Loads DRCS1 characters depending in vertical frequency.
 *
 * @param   --
 *
 * @return  --
 ******************************************************************************/

void GDI_LoadDrcs1(void)
{
   if (isTvMode50Hz_g == SYS_TRUE)
   {
      if (linesPerCharacter == LINES_9)
         GDI_Drcs1Compress(LINES_10);             /* set 10-lines-characters */
   }
   else
   {
      if (linesPerCharacter == LINES_10)
         GDI_Drcs1Compress(LINES_9);               /* set 9-lines-characters */
   }
}


/******************************************************************************/
/**
 * CODE ARRAY for colour replacement of DRCS4 characters.
 * Attention: Bit order per nibble = bit0, bit1, bit2, bit3
 ******************************************************************************/

uint8_t code exArraySelected[2][2] = { /* 3->8, 4->8, 5->9, 6->10, 7->11 */
   {0x03,0x07},
   {0x0B,0x0F},
//   {0x0A,0x09},
//   {0x06,0x05},
//   {0x0E,0x0D}
};

uint8_t code exArrayActive[2][2] = { /* 1->12, 4->12 */
    {0x03,0x0F},//kent_20060309_test  {0x08,0x03},
   {0x0B,0x07}//kent_20060309_test{0x02,0x03}
};



/******************************************************************************/
/**
 * @brief   Replaces subclut information of a DRCS4 character according to
 *          the given exchange array.
 *
 * @param   charAddr  [in]  Address of character to be changed
 * @param   mode      [in]
 *
 * @return  --
 ******************************************************************************/

void GDI_ReplaceSubclutDrcs4(const uint16_t charAddr, const uint8_t mode)
{
   uint8_t xdata *addrDrcs4;
   uint8_t latch;
   uint8_t nibleftIn, nibrightIn, nibleftOut, nibrightOut;
   uint8_t  j, k;
   uint16_t i;  //kent_20060316

   /* pointer to first char byte */
   addrDrcs4 = (uint8_t*)((uint16_t)((charAddr-DRCS4_BORDER)*60+DRCS4_ADDRESS));

   for (i = 0; i < 720; i++)     /* 1 DRCS4 char has 60 bytes, 4 chars = 240 */
   {
      latch = *addrDrcs4;                              /* get character byte */
      nibleftIn = latch >> 4;                             /* get left nibble */
      nibrightIn = latch & 0x0F;                         /* get right nibble */
      nibleftOut = nibleftIn;            /* just in case no exchange is done */
      nibrightOut = nibrightIn;
      k = 2;                      /* assume mode is ACTIVE, change 2 colours */

      if (mode == BIGICON_SELECTED)
         k = 2;                   /* 5 colours to change if mode is SELECTED */
      /* replace colours */
      for (j = 0; j < k; j++)
      {
         if (mode == BIGICON_ACTIVE)
         {
            if (nibleftIn == exArrayActive[j][0])
               nibleftOut = exArrayActive[j][1];
            if (nibrightIn == exArrayActive[j][0])
               nibrightOut = exArrayActive[j][1];
         }
         else
         {
            if (nibleftIn == exArraySelected[j][0])
               nibleftOut = exArraySelected[j][1];
            if (nibrightIn == exArraySelected[j][0])
               nibrightOut = exArraySelected[j][1];
         }
      }
      latch = nibleftOut << 4 | nibrightOut;
      *addrDrcs4 = latch;
      addrDrcs4++;
   }
}



/******************************************************************************/
/**
 * @brief   Shows edit mode change by highlighting item area
 *
 * @param   editMode: SYS_TRUE, SYS_FALSE
 *
 * @return  --
 ******************************************************************************/

void GDI_ShowEditModeChange(const bool_t editMode)
{
   uint8_t redh, greenh, blueh, red0, green0, blue0;
   uint8_t i;

   if (editMode == prevEditMode)
      return;

   red0 = Clut2[11] & 0x0F;
   green0 = Clut2[10] >> 4;
   blue0 = Clut2[10] & 0x0F;

   if (editMode == SYS_TRUE)
   {
      redh = (2 * red0) + 8;

      if (redh > 15)
         redh = 15;

      greenh = (2 * green0) + 8;

      if (greenh > 15)
         greenh = 15;

      blueh = (2 * blue0) + 8;

      if (blueh > 15)
         blueh = 15;
      Clut2[10] = greenh << 4 | blueh;
      Clut2[11] = 0x10 | redh;
      Clut2[58] = greenh << 4 | blueh;
      Clut2[59] = 0x10 | redh;
      CTRL_Wait(60);

      for (i = 0; i < 8; i++)
      {
         if (redh > 2 * red0)
            redh -= 1;
         if (greenh > 2 * green0)
            greenh -= 1;
         if (blueh > 2 * blue0)
            blueh -= 1;

         Clut2[10] = greenh << 4 | blueh;
         Clut2[11] = 0x10 | redh;
         Clut2[58] = greenh << 4 | blueh;
         Clut2[59] = 0x10 | redh;
         CTRL_Wait(20);
      }
   }
   else
   {
      Clut2[10] = (green0 / 2) << 4 | (blue0 / 2);
      Clut2[11] = 0x10 | (red0 / 2);
      Clut2[58] = (green0 / 2) << 4 | (blue0 / 2);
      Clut2[59] = 0x10 | (red0 / 2);
   }
   prevEditMode = editMode;
}



/******************************************************************************/
/**
 * @brief   Bans a rectangle from any update-action (e.g. in teletext mode).
 *
 * @param   state   [in] SYS_ON or SYS_OFF
 *
 * @return  --
 ******************************************************************************/

#if __TTX_CONFIG__ != NO_TTX
void GDI_BanRectangle(const offOn_t state)
{
   uint8_t length = rectangle_g.StopCol - rectangle_g.StartCol + 1;

   activeRow_g = rectangle_g.StartRow;
   if (state == SYS_ON)
   {
      while (activeRow_g <= rectangle_g.StopRow)
      {
         SetInhibitUpdateBits(activeRow_g * 40 + rectangle_g.StartCol, length);
         activeRow_g++;
      }
   }
   else
   {
      while (activeRow_g <= rectangle_g.StopRow)
      {
         ClearInhibitUpdateBits(activeRow_g*40 + rectangle_g.StartCol, length);
         activeRow_g++;
      }
   }
}
#endif



/******************************************************************************/
/**
 * @brief   Switches off and on the XRam font. Saves old language and restores
 *          it later. Function is used to switch to standard Rom font for some
 *          routines, which are not allowed (or possible) with RAM fonts.
 *
 * @param   mode [in]  SYS_ON:  deactivate XRam font
 *                     SYS_OFF: restore XRam font
 *
 * @return  --
 ******************************************************************************/

#ifdef __X_RAM__
void GDI_DeactivateXRamFont(const uint8_t mode)
{
   if (mode == SYS_ON)
   {
      /* deactivate RAM-font, switch to ROM-font and English language */
      if (xRamLanguage_g == SYS_TRUE)
      {
         activeXRamFont = SYS_TRUE;
         xRamLanguage_g = SYS_FALSE;
         language = osdLanguage_g;
         osdLanguage_g = STRG_ENGLISH;
         CORE_SwitchToRomFont();
         OSD_CTRL |= 0x0D;      /* enable OSD */
      }
      else
      {
         activeXRamFont = SYS_FALSE;
      }
   }
   else
   {
      /* restore original language (RAM-font) */
      if (activeXRamFont == SYS_TRUE)
      {
         osdLanguage_g = language;
         CORE_SwitchToXRamFont();
         xRamLanguage_g = SYS_TRUE;
         OSD_CTRL |= 0x0D;      /* enable OSD */
      }
   }
}
#endif


/******************************************************************************/
/**
 * @brief   Calculation of the Bitmap position, depends on OSD position
 *
 * @param   --
 *
 * @return  --
 ******************************************************************************/
#ifdef __ENABLE_BITMAP_ICONS__
void GDI_Calculate_Bmp_Position(void)
{
   /* set GRHORPOS = Horizontal Position and GRVERPOS = Vertical Position  */
#if __BE_CONFIG__  == VCTP_BE_CRT
     API_Vid_SetBmpWindowPos(BMP_WINDOW1_POS, 
                             (SDH0 * (PIXEL_REPITITION + 1)) + 139, 
                             SDV0 + 11);
#else
     API_Vid_SetBmpWindowPos(BMP_WINDOW1_POS, 
                             (SDH0 * (PIXEL_REPITITION + 1)) + 139, 
                             SDV0 + 31);
#endif
}
#endif



/******************************************************************************/
/**
 * @brief   Initiailisation of the TVTEXT PRO sepcial function registers for
 *          display chapter, VBI-buffer, display position and modes.
 *
 * @param   --
 *
 * @return  --
 ******************************************************************************/

void GDI_sfrinit(void) small
{

   SDH0 = GDI_GetSdh();                 /* horizontal position; lowbyte  */
   SDV0 = GDI_GetSdv();                 /* vertical position; lowbyte    */

#if defined __ENABLE_BITMAP_ICONS__
   GDI_Calculate_Bmp_Position();
#endif

   SDH1 = 0;                            /* horizontal position; highbyte */
   SDV1 = 0;                            /* vertical position; highbyte   */

/* arzdorf: removed following CRT part, PIxel repetition replaced by 
            PIXELDOUBLER, see PIXEL_REPITITION */

/* #if __BE_CONFIG__ == VCTP_BE_CRT */      /* chinaburger1 */
/*   PIX_REP_POS0 = 0x01;  */               /* scale width */
/* #else */
   PIX_REP_POS0 = 0x00;                 /* horizontal scaling            */
/* #endif   */


   EHCR  = 0x00;
   BHCR  = 0x00;

   SCR0  = 0x00;
   SCR1  = 0x00;

   BVCR1 = 0x00;
   BVCR0 = 0x00;
   EVCR1 = 0x00;
   EVCR0 = 0x00;

   VLR1  = 0x01;

   /* enable OSD */
   OSD_CTRL |= 0x6c;

#ifdef DEBUG_IN_OSD
   SDV0  = 2+40;   /* fix position on screen in debug mode */

   L24 = 0;
   IEN3 |= IEN3_E24;
   EAL = 1;
#endif


#if __TTX_CONFIG__ != NO_TTX
   SetInhibitUpdateBits(1, 2);
#endif

   GDI_SetGdw(GDW_INIT);
   CORE_InitRamAdressRegisters();          /* init the ram address registers */

#if __TTX_CONFIG__ != NO_TTX
   /* determine the absolute conversion start address for the TDC */
   TdcParameters.ConversionDestination = (uint16_t)&DisplayBuffer[0];
#endif
}


/******************************************************************************/
/**
 * @brief   replacement for firmware function if no text.
 *
 * @param   --
 *
 * @return  --
 ******************************************************************************/

#if ( __TTX_CONFIG__ == NO_TTX )
void osd(void) small
{
   RETURN_3 ^= 0x10;
}
#endif



#if __BE_CONFIG__ == VCTP_BE_CRT
/* chinaburger_beg */
/******************************************************************************/
/**
 * @brief   Set PROGRESS bit
 *
 * @param   0 or 1
 *
 * @return  --
 ******************************************************************************/

void GDI_SetProgressive(bool_t onOff)
{
   if (onOff == SYS_FALSE)
   {
      GlobalDisplayWord[0] &= 0xDF;
   }
   else
   {
      GlobalDisplayWord[0] |= 0x20;
   }
}

/* chinaburger_end */
#endif


/******************************************************************************
 *
 * LOCAL FUNCTIONS:
 ******************************************************************************/

/******************************************************************************/
/**
 * @brief   Translates the display addressing from row/column format to
 *          binary format.
 *
 * @param   --
 *
 * @return  buffer position
 ******************************************************************************/

static uint16_t BufferPosition(void)
{
   return (3 * ((int16_t)(activeRow_g * NUM_COLS) + activeCol_g));
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频第一区| 日韩限制级电影在线观看| 中文字幕亚洲一区二区av在线| 国产一区二区三区精品视频| 国产亚洲福利社区一区| 成人开心网精品视频| 亚洲男同性视频| 在线观看91精品国产入口| 亚洲国产日日夜夜| 欧美电影免费观看高清完整版在线观看 | 日韩欧美综合在线| 欧美三级日韩三级| 久久精品久久99精品久久| 国产欧美综合色| 欧洲精品在线观看| 看电视剧不卡顿的网站| 国产婷婷色一区二区三区| 色婷婷综合久久久久中文| 日韩国产高清在线| 欧美国产日本韩| 欧美日韩第一区日日骚| 国产美女精品人人做人人爽| 一区二区三区在线观看网站| 日韩三级免费观看| 91小视频在线免费看| 日本一不卡视频| 国产精品国产自产拍高清av| 欧美日韩在线播| 国产精品综合二区| 亚洲高清免费视频| 日本一区二区三区在线不卡| 欧美日韩高清一区二区不卡| 国产传媒日韩欧美成人| 视频一区在线视频| 国产精品久久久99| 欧美成人精品3d动漫h| 色婷婷久久久综合中文字幕| 久久99深爱久久99精品| 亚洲精品国产成人久久av盗摄| 秋霞国产午夜精品免费视频| 亚洲国产高清aⅴ视频| 欧美福利视频导航| 99久久精品免费精品国产| 蜜桃精品视频在线观看| 亚洲精品免费看| 国产欧美1区2区3区| 欧美一区二区在线视频| 色综合亚洲欧洲| 国产白丝网站精品污在线入口| 视频在线观看一区| 一区二区三区欧美在线观看| 国产精品入口麻豆原神| 久久综合五月天婷婷伊人| 欧美日韩成人综合| 色哟哟精品一区| av亚洲产国偷v产偷v自拍| 国产乱码精品一区二区三区五月婷 | 99国产欧美久久久精品| 久久国产精品第一页| 亚洲v日本v欧美v久久精品| 亚洲日本一区二区三区| 日本一区二区成人| 国产欧美日产一区| 久久久久久久免费视频了| 日韩免费观看高清完整版在线观看| 欧美系列亚洲系列| 欧美三级电影在线看| 欧洲一区二区av| 日本高清视频一区二区| 91在线丨porny丨国产| 99精品国产视频| 91免费视频大全| 91免费版在线| 在线观看日韩一区| 欧美日韩精品一区二区天天拍小说| 91黄色免费网站| 欧美在线播放高清精品| 欧美色涩在线第一页| 欧美性色欧美a在线播放| 欧美性生活影院| 欧美精品乱码久久久久久| 91精品蜜臀在线一区尤物| 91精品国产欧美一区二区成人| 欧美日韩国产综合久久| 在线电影一区二区三区| 午夜视频在线观看一区二区| 一区二区欧美国产| 亚洲aaa精品| 久久97超碰色| 高清不卡一区二区| 91蝌蚪国产九色| 精品1区2区3区| 欧美一区二区三区精品| 精品88久久久久88久久久| 国产欧美精品一区二区三区四区| 国产精品天干天干在观线| 一区二区三区高清在线| 国产亚洲婷婷免费| 久久精品国产99久久6| 国产精品自在在线| 99久久精品免费看| 欧美日韩一级二级三级| 欧美一级淫片007| 国产亚洲精久久久久久| 依依成人综合视频| 日本一道高清亚洲日美韩| 国产福利精品导航| 色播五月激情综合网| 日韩欧美一级片| 国产精品女主播在线观看| 亚洲综合激情另类小说区| 青青草国产成人99久久| 不卡视频在线看| 欧美久久久久免费| 欧美激情在线看| 婷婷开心激情综合| 国产精品亚洲一区二区三区在线 | 成人综合日日夜夜| 91福利视频在线| 久久综合中文字幕| 亚洲综合图片区| 成人免费视频免费观看| 欧美三片在线视频观看 | 欧美狂野另类xxxxoooo| 国产日韩三级在线| 色综合天天综合狠狠| 日韩美女在线视频| 亚洲一区二区三区激情| 国产盗摄视频一区二区三区| 欧美日韩国产首页| 中文字幕综合网| 国内久久精品视频| 欧美日本一道本| 亚洲男帅同性gay1069| 国产高清久久久久| 日韩欧美123| 亚洲成av人影院| 91视频观看免费| 亚洲国产成人自拍| 国产真实精品久久二三区| 欧美日韩亚洲不卡| 亚洲精品精品亚洲| 成人免费视频caoporn| 2021久久国产精品不只是精品| 午夜电影久久久| 欧美亚洲一区三区| 亚洲欧美日本韩国| 92精品国产成人观看免费 | 91免费国产视频网站| 久久精品视频一区| 精品影视av免费| 欧美一区二区三区在线观看 | 精品福利在线导航| 青青国产91久久久久久 | 久久综合99re88久久爱| 日韩福利视频网| 欧美三级电影在线观看| 亚洲伊人伊色伊影伊综合网| 91传媒视频在线播放| 日韩理论片中文av| 91在线观看视频| 综合色天天鬼久久鬼色| 99麻豆久久久国产精品免费优播| 中文成人av在线| 成人av电影在线| 亚洲欧洲制服丝袜| 91福利国产精品| 亚洲国产精品久久人人爱| 国产精品国产三级国产aⅴ中文| 国产麻豆一精品一av一免费| 久久久国产精华| 国产ts人妖一区二区| 国产目拍亚洲精品99久久精品| 大尺度一区二区| 亚洲视频一区在线| 欧美无砖砖区免费| 日韩高清不卡一区二区| 精品国产三级电影在线观看| 国产一区二区中文字幕| 国产欧美视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 国产精品久久久久久久午夜片| 成人黄色小视频在线观看| 亚洲黄色录像片| 4438成人网| 国产精品夜夜爽| 亚洲欧美一区二区久久| 欧美日韩免费视频| 久久99久久99小草精品免视看| 久久综合久久综合亚洲| 成人三级在线视频| 亚洲成av人影院在线观看网| 精品国产乱码久久久久久牛牛| 国产**成人网毛片九色 | 亚洲蜜臀av乱码久久精品蜜桃| 欧美天堂一区二区三区| 免费人成精品欧美精品| 国产欧美日韩另类一区| 欧美一a一片一级一片| 国产专区欧美精品|