📄 sdrv_rectfill.s01
字号:
NAME sdrv_rectfill(16)
RSEG BAC_DW1(0)
EXTERN CheckDisplaySpace
EXTERN DisplayBuffer
EXTERN Hdrv_BuffDataTrans
EXTERN Hdrv_SetWindow
EXTERN RectBuffFillColor
PUBLIC Sdrv_FillRect
EXTERN region
EXTERN ?CLZ80L_4_04_L00
EXTERN ?S_MUL_L02
RSEG BAC_DW1
Sdrv_FillRect:
; 1. /*
; 2. ********************************************************************************
; 3. * ACTOS
; 4. * ui dirver show picture
; 5. *
; 6. * (c) Copyright 2002-2003, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * File : FillRect.c
; 10. * By : Rcmai
; 11. * Version: 1> v1.00 first version 10/17/2003 10:46PM
; 12. ********************************************************************************
; 13. */
; 14. #include "display.h"
; 15. #include "Drv_S6B33B0A.h"
; 16.
; 17. #pragma memory=constseg(BAS_DW1)
; 18. #pragma memory=default
; 19.
; 20. #pragma memory=dataseg(BAD_DW1)
; 21. //SD_RW sdrw;
; 22. //extern unsigned char BufPage;
; 23. #pragma memory=default
; 24.
; 25. #pragma codeseg(BAC_DW1)
; 26.
; 27. ////*******************************************************************************/
; 28. ///* 把指定区域填充成画笔颜色
; 29. //** FUNCTION: Sdrv_FillRect
; 30. //**
; 31. //** Description:
; 32. //**
; 33. //** input
; 34. //** region_t * Fillregion:要填充的区域
; 35. //**
; 36. //** output
; 37. //** none
; 38. //********************************************************************************/
; 39.
; 40. void Sdrv_FillRect (region_t * Fillregion)
; 41. {
PUSH BC
PUSH IX
PUSH DE
; 42. unsigned int pixelcnt;
; 43. region = *Fillregion;
LD DE,region
LD HL,0
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD BC,4
LDIR
; 44.
; 45. if ( (region.x > Displaylength-1)
; 46. || (region.y > Displayhight-1) )
LD A,(region)
LD B,A
LD A,159
CP B
JR C,?0005
LD A,(region+1)
LD B,A
LD A,127
CP B
JR C,?0005
?0002:
?0003:
?0000:
; 47. {
; 48. return; //坐标超出,退出
; 49. }
?0001:
; 50.
; 51. if (CheckDisplaySpace(PicDisMode)) //检测显示区域是否超出
LD E,3
CALL CheckDisplaySpace
OR A
JR Z,?0005
?0004:
; 52. {
; 53. Hdrv_SetWindow(®ion);//设定区域 //设定 要填入数据的 起始地址 和 结束地址
LD DE,region
CALL Hdrv_SetWindow
; 54. pixelcnt = region.width * region.height;
LD BC,(region+3)
LD B,0
LD DE,(region+2)
LD D,B
CALL ?S_MUL_L02
PUSH DE
POP IX
?0007:
; 55. while(pixelcnt > DisplayBufLen/2)
PUSH IX
POP BC
LD HL,256
AND A
SBC HL,BC
JR NC,?0006
?0008:
; 56. {
; 57. //找出整个PAGE的送出
; 58. RectBuffFillColor(DisplayBufLen/2);
LD DE,256
CALL RectBuffFillColor
; 59. Hdrv_BuffDataTrans(DisplayBuffer, DisplayBufLen);//把暂时显存区DisplayBuffer里面的数据送到LCM
LD BC,512
LD DE,DisplayBuffer
CALL Hdrv_BuffDataTrans
; 60. //这里只管 填入数据,不管地方,因为在这之前 Hdrv_SetWindow 已经设定好了起始位置地点
; 61.
; 62. pixelcnt = pixelcnt - DisplayBufLen/2;
LD A,255
ADD A,IXH
LD IXH,A
JR ?0007
?0006:
; 63. }
; 64. //把剩余的数据送出
; 65. RectBuffFillColor(pixelcnt);
PUSH IX
POP DE
CALL RectBuffFillColor
; 66. Hdrv_BuffDataTrans(DisplayBuffer, pixelcnt*2);//把暂时显存区的数据送到LCM
PUSH IX
POP HL
ADD HL,HL
LD C,L
LD B,H
LD DE,DisplayBuffer
CALL Hdrv_BuffDataTrans
?0005:
; 67. }
; 68. return;
; 69. }
?0009:
POP HL
POP IX
POP BC
RET
; 70.
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -