sdrv_invert.c

来自「MP3 整个 SDK」· C语言 代码 · 共 84 行

C
84
字号
/*
********************************************************************************
*                       ACTOS
*                  ui dirver show picture
*
*                (c) Copyright 2002-2003, Actions Co,Ld.
*                        All Right Reserved
*
* File   : Sdrv_Invert.c
* By     : Rcmai
* Version: 1> v1.00     first version     10/17/2003 10:46PM
********************************************************************************
*/
#include "display.h"
#include "Drv_S6B33B0A.h"

#pragma memory=constseg(BBS_HFUN)
#pragma memory=default

#pragma memory=dataseg(BBD_HFUN)
//SD_RW sdrw;
//extern  unsigned char BufPage;
#pragma memory=default

#pragma codeseg(BBC_HFUN)

////*******************************************************************************/
///* 把指定区域作反白显示
//** FUNCTION:     Sdrv_Invert
//**
//** Description:  
//**
//**  input
//**        region_t * D3region: 要反白区域的区域大小
//**        
//**  output
//**     none
//********************************************************************************/

void Sdrv_Invert (region_t * Invregion)
{

    int block_pixel;//每一小块象素的个数
    BYTE block_line; //每一小块的行数
    int i;

    region_t tmpregion;//临时使用
    BYTE line_cnt;//行数计数器

    tmpregion = *Invregion;

    if ((tmpregion.x + tmpregion.width) > (region_win.x+region_win.width)
                || (tmpregion.y + tmpregion.height) > (region_win.y + region_win.height) )
    {
        return;//超限返回
    }

    //把一个大的矩形分成N个小的矩形块,每个小矩形数据应能用一个page buf 传送完,
    block_line = DisplayBufLen/(2*(tmpregion.width));
    block_pixel = block_line * (tmpregion.width);

    line_cnt = tmpregion.height;//保存高度值
    tmpregion.height = block_line;

    while (line_cnt > block_line)
    {
        //把数据读出
        Hdrv_SetWindow(&tmpregion);
        Hdrv_GetBuffData(DisplayBuffer, block_pixel, NORTransMode_def);
        Hdrv_SetWindow(&tmpregion);
        Hdrv_InvBuffDataTrans(DisplayBuffer,block_pixel);
        line_cnt -= block_line;
        tmpregion.y += block_line;        
    }
        
    //反相余下的        
    tmpregion.height = line_cnt;
    i = line_cnt * tmpregion.width;
    Hdrv_SetWindow(&tmpregion);    
    Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);
    Hdrv_SetWindow(&tmpregion);
    Hdrv_InvBuffDataTrans(DisplayBuffer, i);       
}

⌨️ 快捷键说明

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