1 /*************************************************************************
\r
5 Demonstrates Planar Bitmap Clipping Functions
\r
8 **************************************************************************/
\r
19 #include "xpbitmap.h"
\r
20 #include "xpbmclip.h"
\r
22 #include "xbmtools.h"
\r
25 /* Macro to make pointer parameters model independent */
\r
26 #define FARPTR(x) (MK_FP(FP_SEG(x),FP_OFF(x)))
\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
68 void error(char * string){
\r
70 printf("%s\n",string);
\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
84 int i,j,k,handle,size,comp_size;
\r
87 alignment_header far * tempbuff;
\r
88 x_set_mode(X_MODE_360x240,360);
\r
89 ;NonVisual_Offs=16384;
\r
92 x_set_font(FONT_8x15);
\r
93 x_bgprintf(0,0,0,14,0," This is a demo of PBM clipping.");
\r
96 bm=farmalloc(20*30+2);
\r
97 x_bm_to_pbm(MK_FP(_DS,turtle),bm);
\r
99 x_set_cliprect(4,5,50,150);
\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
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
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
117 x_rect_fill((LeftClip<<2),TopClip,(RightClip<<2)+3,BottomClip,0,0);
\r
119 x_bgprintf(0,BottomClip+4,0,14,0," Now the clipping...");
\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
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
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
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
145 printf("%d %d %d %d\n",LeftClip,TopClip,RightClip,BottomClip);
\r