home *** CD-ROM | disk | FTP | other *** search
Wrap
/* GadTools layout toolkit ** ** Copyright © 1993-1995 by Olaf `Olsen' Barthel ** Freely distributable. */ #include "gtlayout_global.h" STATIC LONG __stdargs DefaultDispFunc(struct Gadget *gad,WORD value) { return(value); } /*****************************************************************************/ VOID __stdargs LTP_LevelWidth(LayoutHandle *handle,STRPTR levelFormat,LONG (* __stdargs dispFunc)(struct Gadget *,WORD),LONG min,LONG max,LONG *maxWidth,LONG *maxLen,BOOL fullCheck) { UBYTE buffer[80]; LONG localMaxWidth; LONG localMaxLen; LONG len; localMaxWidth = 0; localMaxLen = 0; if(handle) { if(!dispFunc) dispFunc = DefaultDispFunc; if(!levelFormat) { if(LocaleBase && LocaleBase -> lb_SysPatches) levelFormat = "%lD"; else levelFormat = "%ld"; } if(fullCheck) { LONG i; for(i = min ; i <= max ; i++) { sprintf(buffer,levelFormat,(*dispFunc)(NULL,i)); len = strlen(buffer); if(len > localMaxLen) localMaxLen = len; len = TextLength(&handle -> RPort,buffer,len); if(len > localMaxWidth) localMaxWidth = len; // kprintf("i=%3ld len=%3ld width=%3ld |%s|\n",i,localMaxLen,localMaxWidth,buffer); } } else { sprintf(buffer,levelFormat,(*dispFunc)(NULL,min)); len = strlen(buffer); if(len > localMaxLen) localMaxLen = len; len = TextLength(&handle -> RPort,buffer,len); if(len > localMaxWidth) localMaxWidth = len; // kprintf("i=%3ld len=%3ld width=%3ld |%s|\n",min,localMaxLen,localMaxWidth,buffer); sprintf(buffer,levelFormat,(*dispFunc)(NULL,max)); len = strlen(buffer); if(len > localMaxLen) localMaxLen = len; len = TextLength(&handle -> RPort,buffer,len); if(len > localMaxWidth) localMaxWidth = len; // kprintf("i=%3ld len=%3ld width=%3ld |%s|\n",max,localMaxLen,localMaxWidth,buffer); } } if(maxLen) *maxLen = localMaxLen; if(maxWidth) *maxWidth = localMaxWidth + handle -> GlyphWidth; } /*****************************************************************************/ VOID LIBENT LT_LevelWidth(REG(a0) LayoutHandle *handle,REG(a1) STRPTR levelFormat,REG(a2) DISPFUNC dispFunc,REG(d0) LONG min,REG(d1) LONG max,REG(a3) LONG *maxWidth,REG(a5) LONG *maxLen,REG(d2) BOOL fullCheck) { LTP_LevelWidth(handle,levelFormat,(LONG (* __stdargs)(struct Gadget *,WORD))dispFunc,min,max,maxWidth,maxLen,fullCheck); } VOID LIBENT LT_NewLevelWidth(REG(a0) LayoutHandle *handle,REG(a1) STRPTR levelFormat,REG(a2) DISPFUNC dispFunc,REG(d0) LONG min,REG(d1) LONG max,REG(a3) LONG *maxWidth,REG(d3) LONG *maxLen,REG(d2) BOOL fullCheck) { LTP_LevelWidth(handle,levelFormat,(LONG (* __stdargs)(struct Gadget *,WORD))dispFunc,min,max,maxWidth,maxLen,fullCheck); }