00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "MorePrefix.h"
00018 #include "MoreWindow.h"
00019 #include "MoreStringMgr.h"
00020 #include "MorePrivate.h"
00021
00022 #include <PalmTypes.h>
00023 #include <SystemMgr.h>
00024 #include <Window.h>
00025
00026
00027
00028 Err MWinScreenToDefault( MOREPALMOS_NOPARAMS )
00029 {
00030 return WinScreenMode( winScreenModeSetToDefaults,
00031 NULL, NULL, NULL, NULL );
00032 }
00033
00034
00035
00036 Err MWinScreenToDepth( UInt8 depth )
00037 {
00038 Err err;
00039 UInt32 supportedDepths;
00040 UInt32 requiredDepth;
00041
00042 err = WinScreenMode( winScreenModeGetSupportedDepths, NULL, NULL,
00043 &supportedDepths, NULL );
00044 _reject( err, fail )
00045
00046 _require_action( ( supportedDepths & ( 1 << ( depth - 1 ) ) ), fail,
00047 err = sysErrParamErr; );
00048
00049 requiredDepth = depth;
00050 err = WinScreenMode( winScreenModeSet, NULL, NULL, &requiredDepth, NULL );
00051 _reject( err, fail );
00052
00053 fail:
00054 return err;
00055 }
00056
00057
00058
00059 Coord MWinDrawAlignStr( const char *str, Coord x, Coord y, Alignment align )
00060 {
00061 return MWinDrawAlignChars( str, MStrLen( str ), x, y, align );
00062 }
00063
00064 Coord MWinDrawAlignChars( const char *str, UInt32 len, Coord x, Coord y,
00065 Alignment align )
00066 {
00067 Coord strWidth;
00068 _require( str, noString );
00069 _require( len, noString );
00070 strWidth = FntCharsWidth( str, len );
00071 if ( align != Left )
00072 {
00073 x -= ( align == Center ) ? ( strWidth >> 1 ) : strWidth;
00074 }
00075 WinPaintChars( str, len, x, y );
00076 x += strWidth;
00077
00078 noString:
00079 return x;
00080 }
00081
00082
00083
00084 Coord MWinDrawAlignStrTrunc( const char *str, Coord x, Coord y,
00085 Coord availWidth, Alignment align )
00086 {
00087 return MWinDrawAlignCharsTrunc( str, MStrLen( str ), x, y, availWidth,
00088 align );
00089 }
00090
00091 Coord MWinDrawAlignCharsTrunc( const char *str, UInt32 len, Coord x, Coord y,
00092 Coord availWidth, Alignment align )
00093 {
00094 Coord strWidth;
00095 _require( str, noString );
00096 _require( len, noString );
00097 strWidth = FntCharsWidth( str, len );
00098 if ( strWidth > availWidth )
00099 strWidth = availWidth;
00100 if ( align != Left )
00101 {
00102 x -= ( align == Center ) ? ( strWidth >> 1 ) : strWidth;
00103 }
00104 WinDrawTruncChars( str, len, x, y, availWidth );
00105 x += strWidth;
00106
00107 noString:
00108 return x;
00109 }