]> cvs.zerfleddert.de Git - linexec-j720/blame - graphics.cpp
packed asm-files removed
[linexec-j720] / graphics.cpp
CommitLineData
77a37381 1#include "stdafx.h"
2#include "tester1.h"
3#include <commctrl.h>
4//#include <aygshell.h>
5#include <sipapi.h>
6#include "setup.h"
7
8
9/* TO DO: Detect whether we're running on an AXIM or an iPAQ at runtime,
10 and set accordingly. */
11
12#ifdef AXIM
13# define FB_ADR 0x14042000
14#else
15# define FB_ADR 0xA0051000
16#endif
17
18
19
20#define SET 0xffffffff
21#define LCD_X_RES 240
22#define LCD_Y_RES 320
23UINT16 *fb;
24
25
26void init_fb()
27{
28 fb=(UINT16*)VirtualAlloc((void*)0x0,LCD_X_RES*LCD_Y_RES*2, MEM_RESERVE,PAGE_READWRITE);
29 VirtualCopy((void*)fb,(void *) (FB_ADR/256),LCD_X_RES*LCD_Y_RES*2, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
30}
31
32void try_fb()
33{
34// fb[1]=SET;
35}
36
37Image ReadBMP(char FileName[30])
38{
39 FILE *stream;
40 char buff[29];
41 UINT32 x,y;
42 unsigned char red,green,blue;
43 unsigned long offset;
44 UINT16 *p,c;
45 Image image={NULL};
46 stream=fopen(FileName,"rb");
47 if(!stream) return image;
48 fread(buff,26,1,stream);
49
50 offset=(unsigned char)buff[13]*16777216+(unsigned char)buff[12]*65536+(unsigned char)buff[11]*256+(unsigned char)buff[10];
51 x=(unsigned char)buff[21]*256*256*256+(unsigned char)buff[20]*256*256+(unsigned char)buff[19]*256+(unsigned char)buff[18];
52 y=(unsigned char)buff[25]*256*256*256+(unsigned char)buff[24]*256*256+(unsigned char)buff[23]*256+(unsigned char)buff[22];
53// offset=54;
54 UINT32 imgx=x,imgy=y;
55 if(x<32) x=32;
56 if(y<32) y=32;
57 p=image.p=(UINT16*)malloc(x*y*2);
58 if(!image.p) return(image);
59 fseek(stream,offset,SEEK_SET);
60 p+=(x*y+x);
61
62for(UINT32 zz=0;zz<y;zz++)
63 {
64 p-=2*x;
65
66 for(UINT32 yy=0;yy<x;yy++)
67 {
68 blue=fgetc(stream);
69 green=fgetc(stream);
70 red=fgetc(stream);
71 c=(red/8)*2048+(green/4)*32+blue/8;
72 *p=c;
73 p++;
74
75 }
76
77}
78//image.p=p;
79image.x=imgx;
80image.y=imgy-1;
81fclose(stream);
82return(image);
83}
84
85// shows picture pointed to by p, with res (x by y), at (x_pos, y_pos)
86void ShowImage(UINT16 *p, int x, int y,int x_pos,int y_pos)
87{
88 UINT16 *fb=::fb;
89 if(!p) return;
90 fb+=y_pos*LCD_X_RES+x_pos;
91 for(int yy=0;yy<y;yy++)
92 {
93 for(int xx=0;xx<x;xx++)
94 {
95 *fb=*p;
96 fb++;
97 p++;
98 }
99 if(x<LCD_X_RES) fb+=LCD_X_RES-x;
100 }
101}
Impressum, Datenschutz