Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
OldBitMap.c
/* |
File: OldBitMap.c |
Contains: old-style bitmap utility routines for allocating, de-allocating, and masking. |
Written by: |
Copyright: Copyright © 1992-1999 by Apple Computer, Inc., All Rights Reserved. |
You may incorporate this Apple sample source code into your program(s) without |
restriction. This Apple sample source code has been provided "AS IS" and the |
responsibility for its operation is yours. You are not permitted to redistribute |
this Apple sample source code as "Apple sample source code" after having made |
changes. If you're going to re-distribute the source, we require that you make |
it clear in the source that the code was descended from Apple sample source |
code, but that you've made changes. |
Change History (most recent first): |
7/9/1999 Karl Groethe Updated for Metrowerks Codewarror Pro 2.1 |
*/ |
#include "OldBitMap.h" |
#include <Quickdraw.h> |
#include <Memory.h> |
void FreeBitMap(BitMap *Bits) |
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Dumps a BitMap created by NewBitMap below. |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ |
{ |
DisposePtr(Bits->baseAddr); |
Bits->baseAddr=nil; |
SetRect(&Bits->bounds,0,0,0,0); |
Bits->rowBytes=0; |
} |
void CalcOffScreen(register Rect *frame,register long *needed, register short *rows) |
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Calculates how much memory and rowbytes a bitmap of the size frame would require. |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ |
{ |
*rows=((((frame->right) - (frame->left)) + 15)/16) *2; |
*needed=(((long)(*rows)) * (long)((frame->bottom) - (frame->top))); |
} |
void NewBitMap(Rect *frame,BitMap *theMap) |
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Creates a new empty bitmap. |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ |
{ |
Size size; |
short rbytes; |
CalcOffScreen(frame,&size,&rbytes); |
theMap->rowBytes=rbytes; |
theMap->bounds=*frame; |
theMap->baseAddr=NewPtrClear(size); |
} |
void NewMaskedBitMap(BitMap *srcBits, BitMap *maskBits, Rect *srcRect) |
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Pass a pointer to an existing bitmap, and this creates a bitmap that is an |
equivelent mask. |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ |
{ |
short rowbytes,height,words; |
long needed; |
NewBitMap(srcRect,maskBits); |
if(MemError()) |
{ |
maskBits->baseAddr=nil; |
SetRect(&maskBits->bounds,0,0,0,0); |
maskBits->rowBytes=0; |
} |
else /* memory was allocated for Mask BitMap ok */ |
{ |
CalcOffScreen(srcRect,&needed,&rowbytes); |
words=rowbytes/2; |
height=srcRect->bottom - srcRect->top; |
CalcMask(srcBits->baseAddr,maskBits->baseAddr,rowbytes,rowbytes,height,words); |
} |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14