+/* -*-C-*-
+
+$Id: dibutils.c,v 1.2 1995/09/25 18:10:46 adams Exp $
+
+Copyright (c) 1994-1995 Massachusetts Institute of Technology
+
+This material was developed by the Scheme project at the Massachusetts
+Institute of Technology, Department of Electrical Engineering and
+Computer Science. Permission to copy this software, to redistribute
+it, and to use it for any purpose is granted, subject to the following
+restrictions and understandings.
+
+1. Any copy made of this software must include this copyright notice
+in full.
+
+2. Users of this software agree to make their best efforts (a) to
+return to the MIT Scheme project any improvements or extensions that
+they make, so that these may be included in future releases; and (b)
+to inform MIT of noteworthy uses of this software.
+
+3. All materials developed as a consequence of the use of this
+software shall duly acknowledge such use, in accordance with the usual
+standards of acknowledging credit in academic research.
+
+4. MIT has made no warrantee or representation that the operation of
+this software will be error-free, and MIT is under no obligation to
+provide any services, by way of maintenance, update, or otherwise.
+
+5. In conjunction with products arising from the use of this material,
+there shall be no use of the name of the Massachusetts Institute of
+Technology nor of any adaptation thereof in any advertising,
+promotional, or sales literature without prior written consent from
+MIT in each case. */
+
+
+/* This software was derived from the following: */
/******************************************************************************\
* This is a part of the Microsoft Source Code Samples.
****************************************************************************/
BOOL DeleteDIB (HANDLE hdib)
{
- if (!hdib)
+ if (hdib)
return GlobalFree (hdib) == 0;
+ else
+ return FALSE;
}
/****************************************************************************
DWORD width, height;
if (!hdib)
- return 0;
+ return FALSE;
lpbmi = (LPBITMAPINFOHEADER) GlobalLock(hdib);
lpbci = (LPBITMAPCOREHEADER) lpbmi;
{
BYTE *src = src_area + width*(height-scanline-1);
BYTE *dest = dest_area + aligned_width * scanline;
- long column;
- for (column = width; column>0; column--)
+ long column = width;
+ *(DWORD*)(dest+aligned_width-sizeof(DWORD)) = 0; // zero-fill end word
+ loop:
+ if (column>=8)
+ {
+ ((DWORD*)dest)[0] = ((DWORD*)src)[0];
+ ((DWORD*)dest)[1] = ((DWORD*)src)[1];
+ column -= 2*sizeof(DWORD);
+ src += 2*sizeof(DWORD);
+ dest += 2*sizeof(DWORD);
+ goto loop;
+ }
+ else if (column>0)
+ {
+ column -= 1;
*dest++ = *src++;
- for (column = aligned_width - width; column>0; column--)
- *dest++ = 0;
+ goto loop;
+ }
}
}
GlobalUnlock (hdib);
- return 1;
+ return TRUE;
}
/****************************************************************************