home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 17
/
amigaformatcd17.iso
/
-look_here_1st!-
/
handy_tools
/
tinymeter
/
source
/
tinymeter_main
/
misc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-02-27
|
4KB
|
151 lines
#include <exec/types.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <intuition/intuitionbase.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <intuition/cghooks.h>
#include <intuition/icclass.h>
#include <intuition/classes.h>
#include <intuition/sghooks.h>
#include <intuition/screens.h>
#include <graphics/gfxbase.h>
#include <graphics/text.h>
#include <graphics/gfxmacros.h>
#include <utility/tagitem.h>
#include <utility/hooks.h>
#include <string.h>
#include <datatypes/datatypesclass.h>
#include <datatypes/datatypes.h>
#include <datatypes/pictureclass.h>
#include "gaugeclass.h"
#include "tinymeter.h"
void BltT(struct BitMap *src, UWORD s_x, UWORD s_y, struct RastPort *dest, UWORD d_x, UWORD d_y, UWORD w, UWORD h, UBYTE t_col, UBYTE *mask)
{
ULONG i,k;
UBYTE *s1,*s2,*s3;
BOOL allocated=FALSE,firstrun=FALSE;
k = src->BytesPerRow*src->Rows;
if(!mask) { mask=(UBYTE *)AllocVec(k,MEMF_CHIP); allocated=TRUE; }
if( mask)
{
s3 = mask+k+1;
for(i=0;i<src->Depth;i++)
{
s1 = (UBYTE *)mask;
s2 = (UBYTE *)src->Planes[i];
if(firstrun)
{
if((1<<i)&t_col) for(;s1<s3;s1++) *s1&= *(s2++);
else for(;s1<s3;s1++) *s1&= ~(*(s2++));
}
else
{
firstrun=TRUE;
if((1<<i)&t_col) for(;s1<s3;s1++) *s1=(0xFF)& (*(s2++));
else for(;s1<s3;s1++) *s1=(0xFF)&(~(*(s2++)));
}
}
BltMaskBitMapRastPort(src,s_x,s_y,dest,d_x,d_y,w,h,0xb0,mask);
if(allocated) FreeVec(mask);
}
}
void DrawDTObject(Object *src, UWORD s_x, UWORD s_y, struct RastPort *dest, UWORD d_x, UWORD d_y, WORD w, WORD h, BOOL really)
{
UBYTE *ColorTable;
struct BitMapHeader *bmhd;
struct BitMap *bm;
GetDTAttrs(src,PDTA_BitMapHeader,&bmhd,PDTA_DestBitMap,&bm,PDTA_ColorTable,&ColorTable,TAG_DONE);
if(w=-1)w=bmhd->bmh_Width;
if(h=-1)h=bmhd->bmh_Height;
if (!bm) GetDTAttrs(src,PDTA_BitMap,&bm,TAG_DONE);
if((bmhd->bmh_Masking==mskHasTransparentColor)&&(ColorTable)&&(really!=FALSE))
BltT(bm,s_x,s_y,dest,d_x,d_y,w,h,ColorTable[bmhd->bmh_Transparent],NULL);
else
BltBitMapRastPort(bm,s_x,s_y,dest,d_x,d_y,w,h,0xc0);
}
struct GAU_Color *GetGaugePen(WORD pen)
{
static struct GAU_Color dummycol={ TRUE, 0, 0, 0 };
dummycol.red=pen; return(&dummycol);
}
int my_strlen(char s[])
{
int i=0; while (s[i]!='\0')++i; return(i);
}
UBYTE long_2_string_with_thousand(ULONG num, char output[], char point, BOOL negative)
{
char output_private[16];
char n = 0;
char n_1 = 0;
if(negative)output[n_1++]='-';
sprintf(output_private,"%12ld",num);
while(output_private[n]==0x20)n++;
for(;(output_private[n]!=0)&(output_private[n]!=0x20);n++)
{
output[n_1++]=output_private[n];
if((n==2)||(n==5)||(n==8)) output[n_1++]=(char)point;
}
output[n_1]=0;
return((UBYTE)n_1);
}
void draw_border_new( struct RastPort *rp,ULONG x, ULONG y, ULONG width, ULONG height, int b_col1, int b_col2 )
{
width--;height--;
SetAPen(rp,b_col1);
RectFill(rp,x,y,x,y+height);
RectFill(rp,x,y,x+width,y);
SetAPen(rp,b_col2);
RectFill(rp,x+width,y,x+width,y+height);
RectFill(rp,x,y+height,x+width,y+height);
}
void my_RectFill(struct RastPort *rp,WORD x,WORD y,WORD width,WORD height)
{
if(((x+width)>1)&&((y+height)>1)) RectFill(rp,x,y,x+width-1,y+height-1);
}
void my_Blit(struct RastPort *src, WORD topx, WORD topy, struct RastPort *dest, WORD dtopx, WORD dtopy, WORD width, WORD height)
{
ClipBlit(src,topx,topy,dest,dtopx,dtopy,width,height,0xC0);
}
void FreePenNew( struct Screen *scr, struct GAU_Color *col,ULONG number, ULONG *Pens)
{
if(!col->pen) ReleasePen(scr->ViewPort.ColorMap,Pens[number]);
}
UWORD obtainPen( struct Screen *src, struct GAU_Color *scr)
{
return((UWORD)(scr->pen ? scr->red : ObtainBestPenA(src->ViewPort.ColorMap, scr->red, scr->green, scr->blue, 0L)));
}
void GetPenNew(struct Screen *scr,struct GAU_Color *col,ULONG number, BOOL *PorC, ULONG *Pens)
{
PorC[number]= col->pen ? FALSE : TRUE;
Pens[number]= obtainPen(scr,col);
}
struct TextFont *OpenTopaz()
{
static struct TextAttr topaz_font =
{
"topaz.font",
8,
0,
FPF_ROMFONT,
};
return((struct TextFont *)OpenFont( &topaz_font));
}