Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23153/src Modified Files: mswindow.c Log Message: Added new scaling function that will allow us to use higher resolution bitmaps - requires a set of x,y coords for the source bitmap (all defined in bitmap.h already) and a set for the diplay coords (defined in data.h for most bitmaps already). Index: mswindow.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- mswindow.c 1 May 2006 16:10:18 -0000 1.10 +++ mswindow.c 1 May 2006 18:06:22 -0000 1.11 @@ -3765,6 +3765,63 @@ ReleaseDC (bitmap->hwnd, hdc); } +// Modified WriteBitmap for scaling images - BB, 5/1/2006 +void +W_WriteScaleBitmap (int x, + int y, + float SCALEX, + float SCALEY, + W_Icon icon, + W_Color color) +{ + register struct Icon *bitmap = (struct Icon *) icon; + register int border, width, height; + register int srcx, srcy; + HDC hdc; + + //Fast (I hope) rectangle intersection, don't overwrite our borders + srcx = bitmap->x; + srcy = bitmap->y; + border = bitmap->ClipRectAddr->top; + x += border; + y += border; + + if (x < border) + { + width = bitmap->width - (border - x); + srcx += border - x; + x = border; + } + else if ((width = bitmap->ClipRectAddr->right - x) > bitmap->width) + width = bitmap->width; + if (y < border) + { + height = bitmap->height - (border - y); + srcy += (border - y); + y = border; + } + else if ((height = bitmap->ClipRectAddr->bottom - y) > bitmap->height) + height = bitmap->height; + + hdc = GetDC (bitmap->hwnd); + if (NetrekPalette) + { + SelectPalette (hdc, NetrekPalette, FALSE); + RealizePalette (hdc); + } + SelectObject (GlobalMemDC, bitmap->bm); + + //Set the color of the bitmap + //(oddly enough, 1-bit = bk color, 0-bit = text (fg) color) + SetBkColor (hdc, colortable[color].rgb); + SetTextColor (hdc, colortable[BLACK].rgb); + SetStretchBltMode(hdc, HALFTONE); // Best quality + StretchBlt (hdc, x, y, //Copy the bitmap + (int)(height/SCALEX), (int)(width/SCALEY), GlobalMemDC, srcx, srcy, width, height, SRCPAINT); // <-- using OR mode + + ReleaseDC (bitmap->hwnd, hdc); +} + void W_WriteBitmapGrey (int x, int y,