OSDN Git Service

update todo list with new stuff
[proj16/16.git] / 16 / xlib / demo5.c
1 /*************************************************************************\r
2 \r
3 DEMO 5\r
4 \r
5 Demonstrates Planar Bitmap Clipping Functions\r
6 \r
7 Themie Gouthas\r
8 **************************************************************************/\r
9 \r
10 \r
11 \r
12 #include <stdio.h>\r
13 #include <stdlib.h>\r
14 #include <conio.h>\r
15 #include <ctype.h>\r
16 #include <malloc.h>\r
17 #include <dos.h>\r
18 #include "xlib.h"\r
19 #include "xpbitmap.h"\r
20 #include "xpbmclip.h"\r
21 #include "xrect.h"\r
22 #include "xbmtools.h"\r
23 #include "xline.h"\r
24 #include "xtext.h"\r
25 /* Macro to make pointer parameters model independent */\r
26 #define FARPTR(x) (MK_FP(FP_SEG(x),FP_OFF(x)))\r
27 \r
28 int i,j;\r
29 \r
30 char turtle[] = {\r
31     20,30,\r
32 /*  |      .       |       .      |       .      |      .       */\r
33     8,14, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
34     8, 2,14, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
35     8, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
36     8, 0, 2,14, 0, 0,14,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
37     8, 0, 2, 5, 0, 4, 4, 4, 4,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
38     8, 0, 2, 2, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0, 0, 0, 0,\r
39     0, 0, 2, 4, 4, 4, 0, 4, 4, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,\r
40     0, 0, 2, 4, 4, 4, 0, 0, 0, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,\r
41     0, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 4, 0, 0, 2, 2, 0, 0, 0,\r
42     0, 0, 0, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0,14, 0, 0, 2, 2, 0, 0,\r
43     0, 0, 0, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 4, 2, 2, 2, 2, 0, 0,\r
44     0, 0, 0, 4, 4, 4, 0, 4, 4, 0, 4, 4, 0, 4,14, 2, 2, 2, 0, 0,\r
45     0, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 0, 2, 2, 0, 0, 0,\r
46     0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4,14, 2, 0, 0, 0, 0,\r
47     0, 0, 2, 2, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0,\r
48     2, 2, 2, 2, 4, 0, 0, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0,\r
49     0, 2, 2, 0, 4, 4, 4, 0, 0, 4, 4, 0, 4, 0, 2, 0, 0, 0, 0, 0,\r
50     0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 4, 0, 4, 4, 2,14, 0, 0, 0, 0,\r
51     0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 2, 2,14,14, 0, 0,\r
52     0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 2, 2, 2, 2, 2,14, 0,\r
53     0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 5,14, 0,\r
54     0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 2, 0, 0, 2, 2, 2, 0, 2,14,\r
55     0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,14,\r
56     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,\r
57     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0,\r
58     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,\r
59     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,\r
60     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,\r
61     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,\r
62     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\r
63     };\r
64 \r
65 \r
66 char far *vbm;\r
67 \r
68 void error(char * string){\r
69   x_text_mode();\r
70   printf("%s\n",string);\r
71   exit(0);\r
72 }\r
73 \r
74 typedef struct {\r
75   unsigned int  size;           /* valid only for the first header */\r
76   unsigned char ImageWidth;\r
77   unsigned char ImageHeight;\r
78   unsigned int  ImagePtr;\r
79   unsigned int  MaskPtr;\r
80 } alignment_header;\r
81 \r
82 \r
83 void main(){\r
84     int i,j,k,handle,size,comp_size;\r
85     char far *bm;\r
86 \r
87     alignment_header  far * tempbuff;\r
88     x_set_mode(X_MODE_360x240,360);\r
89     ;NonVisual_Offs=16384;\r
90 \r
91     x_text_init();\r
92     x_set_font(FONT_8x15);\r
93     x_bgprintf(0,0,0,14,0," This is a demo of PBM clipping.");\r
94     getch();\r
95 \r
96     bm=farmalloc(20*30+2);\r
97     x_bm_to_pbm(MK_FP(_DS,turtle),bm);\r
98 \r
99     x_set_cliprect(4,5,50,150);\r
100 \r
101     x_line(0,TopClip-1,320,TopClip-1,23,0);\r
102     x_line(0,BottomClip+1,320,BottomClip+1,23,0);\r
103     x_line((LeftClip<<2)-1,0,(LeftClip<<2)-1,200,23,0);\r
104     x_line((RightClip<<2)+4,0,(RightClip<<2)+4,200,23,0);\r
105 \r
106     for (k=0;k<8;k++){\r
107      for (j=1;j<ScrnPhysicalHeight;j+=30)\r
108       for (i=0;i<ScrnPhysicalPixelWidth-20;i+=20)\r
109         x_put_pbm(i+k+1,j,0,bm);\r
110     }\r
111 \r
112     x_line(0,TopClip-1,320,TopClip-1,23,0);\r
113     x_line(0,BottomClip+1,320,BottomClip+1,23,0);\r
114     x_line((LeftClip<<2)-1,0,(LeftClip<<2)-1,200,23,0);\r
115     x_line((RightClip<<2)+4,0,(RightClip<<2)+4,200,23,0);\r
116 \r
117     x_rect_fill((LeftClip<<2),TopClip,(RightClip<<2)+3,BottomClip,0,0);\r
118 \r
119     x_bgprintf(0,BottomClip+4,0,14,0," Now the clipping...");\r
120     getch();\r
121 \r
122     for (k=0;k<8;k++){\r
123      for (j=1;j<ScrnPhysicalHeight;j+=30)\r
124       for (i=0;i<ScrnPhysicalPixelWidth-20;i+=20)\r
125         x_put_pbm_clipxy(i+k+1,j,0,bm);\r
126     }\r
127     for (k=0;k<8;k++){\r
128      for (j=1;j<ScrnPhysicalHeight;j+=30)\r
129       for (i=0;i<ScrnPhysicalPixelWidth-20;i+=20)\r
130         x_put_pbm_clipxy(i+7+1,j+k,0,bm);\r
131     }\r
132     for (k=7;k>=0;k--){\r
133      for (j=1;j<ScrnPhysicalHeight;j+=30)\r
134       for (i=0;i<ScrnPhysicalPixelWidth-20;i+=20)\r
135         x_put_pbm_clipxy(i+k+1,j+7,0,bm);\r
136     }\r
137     for (k=7;k>=0;k--){\r
138      for (j=1;j<ScrnPhysicalHeight;j+=30)\r
139       for (i=0;i<ScrnPhysicalPixelWidth-20;i+=20)\r
140         x_put_pbm_clipxy(i+1,j+k,0,bm);\r
141     }\r
142 \r
143     getch();\r
144     x_text_mode();\r
145     printf("%d %d %d %d\n",LeftClip,TopClip,RightClip,BottomClip);\r
146 \r
147 }\r
148 \r