Thu, 27 Dec 2001 11:17:28 +0000
*** empty log message ***
bitblt.c | file | annotate | diff | revisions | |
bitblt.h | file | annotate | diff | revisions | |
bitblt_test.c | file | annotate | diff | revisions |
1.1 diff -r 8ca2aaf0513f -r 317de52d8a63 bitblt.c 1.2 --- a/bitblt.c Thu Dec 27 11:04:43 2001 +0000 1.3 +++ b/bitblt.c Thu Dec 27 11:17:28 2001 +0000 1.4 @@ -72,9 +72,7 @@ 1.5 Rect src_rect, 1.6 Bitmap *dest_bitmap, 1.7 Point dest_upper_left, 1.8 - boolean flip_horizontal, 1.9 - boolean flip_vertical, 1.10 - boolean transpose, 1.11 + int scan, 1.12 int tfn) 1.13 { 1.14 Point src_point, dest_point; 1.15 @@ -82,7 +80,7 @@ 1.16 1.17 if (! dest_bitmap) 1.18 { 1.19 - if (transpose) 1.20 + if (scan & TRANSPOSE) 1.21 dest_bitmap = create_bitmap (rect_height (src_rect), 1.22 rect_width (src_rect)); 1.23 else 1.24 @@ -102,17 +100,32 @@ 1.25 { 1.26 boolean a, b, c; 1.27 1.28 - if (transpose) 1.29 + if (scan & TRANSPOSE) 1.30 { 1.31 - dest_point.x = dest_upper_left.x + (src_point.y - src_rect.upper_left.y); 1.32 - dest_point.y = dest_upper_left.y + (src_point.x - src_rect.upper_left.x); 1.33 + dest_point.x = src_point.y - src_rect.upper_left.y; 1.34 + dest_point.y = src_point.x - src_rect.upper_left.x; 1.35 + 1.36 + if (scan & FLIP_H) 1.37 + dest_point.x = (rect_height (src_rect) - 1) - dest_point.x; 1.38 + 1.39 + if (scan & FLIP_V) 1.40 + dest_point.y = (rect_width (src_rect) - 1) - dest_point.y; 1.41 } 1.42 else 1.43 { 1.44 - dest_point.x = dest_upper_left.x + (src_point.x - src_rect.upper_left.x); 1.45 - dest_point.y = dest_upper_left.y + (src_point.y - src_rect.upper_left.y); 1.46 + dest_point.x = src_point.x - src_rect.upper_left.x; 1.47 + dest_point.y = src_point.y - src_rect.upper_left.y; 1.48 + 1.49 + if (scan & FLIP_H) 1.50 + dest_point.x = (rect_width (src_rect) - 1) - dest_point.x; 1.51 + 1.52 + if (scan & FLIP_V) 1.53 + dest_point.y = (rect_height (src_rect) - 1) - dest_point.y; 1.54 } 1.55 1.56 + dest_point.x += dest_upper_left.x; 1.57 + dest_point.y += dest_upper_left.y; 1.58 + 1.59 a = get_pixel (src_bitmap, src_point); 1.60 b = get_pixel (dest_bitmap, dest_point); 1.61 c = (tfn & (1 << (a * 2 + b))) != 0;
2.1 diff -r 8ca2aaf0513f -r 317de52d8a63 bitblt.h 2.2 --- a/bitblt.h Thu Dec 27 11:04:43 2001 +0000 2.3 +++ b/bitblt.h Thu Dec 27 11:17:28 2001 +0000 2.4 @@ -29,6 +29,16 @@ 2.5 #define TF_XOR 0x6 2.6 2.7 2.8 +#define FLIP_H 0x1 2.9 +#define FLIP_V 0x2 2.10 +#define TRANSPOSE 0x4 2.11 + 2.12 +#define ROT_0 0x0 2.13 +#define ROT_90 (TRANSPOSE + FLIP_H) 2.14 +#define ROT_180 (FLIP_H + FLIP_V) 2.15 +#define ROT_270 (TRANSPOSE + FLIP_V) 2.16 + 2.17 + 2.18 Bitmap *create_bitmap (u32 width, u32 height); 2.19 void free_bitmap (Bitmap *bitmap); 2.20 boolean get_pixel (Bitmap *bitmap, Point coord); 2.21 @@ -38,7 +48,5 @@ 2.22 Rect src_rect, 2.23 Bitmap *dest_bitmap, 2.24 Point dest_upper_left, 2.25 - boolean flip_horizontal, 2.26 - boolean flip_vertical, 2.27 - boolean transpose, 2.28 + int scan, 2.29 int tfn);
3.1 diff -r 8ca2aaf0513f -r 317de52d8a63 bitblt_test.c 3.2 --- a/bitblt_test.c Thu Dec 27 11:04:43 2001 +0000 3.3 +++ b/bitblt_test.c Thu Dec 27 11:17:28 2001 +0000 3.4 @@ -16,7 +16,7 @@ 3.5 ".....X....X...X.....", 3.6 ".....X.....X..X.....", 3.7 ".....XXXXXXXXXX.....", 3.8 - ".....XXXXXXXXXX....." 3.9 + ".....X.X.X.X.X......" 3.10 }; 3.11 3.12 Bitmap *setup (void) 3.13 @@ -82,8 +82,7 @@ 3.14 3.15 b2 = bitblt (b, r, 3.16 NULL, p, 3.17 - 0, 0, 3.18 - 1, /* transpose */ 3.19 + ROT_90, 3.20 TF_SRC); 3.21 if (! b2) 3.22 {