diff options
Diffstat (limited to 'app/bin/draw.h')
| -rw-r--r-- | app/bin/draw.h | 125 | 
1 files changed, 75 insertions, 50 deletions
| diff --git a/app/bin/draw.h b/app/bin/draw.h index dc01695..0ddf547 100644 --- a/app/bin/draw.h +++ b/app/bin/draw.h @@ -17,14 +17,13 @@   *   *  You should have received a copy of the GNU General Public License   *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA   */  #ifndef DRAW_H  #define DRAW_H  #include "common.h" -#include "wlib.h"  // drawCmd_t.options  // @@ -41,8 +40,15 @@  #define DC_CENTERLINE		(1<<4)  // TICKS: draw rulers on edges  #define DC_TICKS		(1<<5) +// TEMP: temp mode draws +#define DC_TEMP			(1<<6) +// OUTLINE: use outline font +#define DC_OUTLINE		(1<<7) +// Round pixel pos for performance +#define DC_ROUND		(1<<8) +  // Line styles -#define DC_THICK        	(1<<7) +#define DC_THICK        	(1<<9)  #define DC_DASH			(1<<12)  #define DC_DOT          	(1<<13)  #define DC_DASHDOT      	(1<<14) @@ -54,55 +60,60 @@  #define INIT_MAIN_SCALE (8.0)  #define INIT_MAP_SCALE	(64.0) -#define MAX_MAIN_SCALE	(256.0) +#define MAX_MAIN_SCALE	(1024.0)  #define MIN_MAIN_SCALE	(1.0)  #define MIN_MAIN_MACRO  (0.10) +typedef enum { DRAW_OPEN, DRAW_CLOSED, DRAW_FILL, DRAW_TRANSPARENT } drawFill_e; + +struct drawCmd_t;  typedef struct drawCmd_t * drawCmd_p;  typedef struct { -    long options; -    void (*drawLine)(drawCmd_p, coOrd, coOrd, wDrawWidth, wDrawColor); -    void (*drawArc)(drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, BOOL_T, wDrawWidth, -                    wDrawColor); -    void (*drawString)(drawCmd_p, coOrd, ANGLE_T, char *, wFont_p, FONTSIZE_T, -                       wDrawColor); -    void (*drawBitMap)(drawCmd_p, coOrd, wDrawBitMap_p, wDrawColor); -    void (*drawPoly)(drawCmd_p, int, coOrd *, int *, wDrawColor, wDrawWidth, int, -                     int); -    void (*drawFillCircle)(drawCmd_p, coOrd, DIST_T,  wDrawColor); +	void (*drawLine)(drawCmd_p, coOrd, coOrd, wDrawWidth, wDrawColor); +	void (*drawArc)(drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, BOOL_T, wDrawWidth, +	                wDrawColor); +	void (*drawString)(drawCmd_p, coOrd, ANGLE_T, char *, wFont_p, FONTSIZE_T, +	                   wDrawColor); +	void (*drawBitMap)(drawCmd_p, coOrd, wDrawBitMap_p, wDrawColor); +	void (*drawPoly)(drawCmd_p, int, coOrd *, int *, wDrawColor, wDrawWidth, +	                 drawFill_e); +	void (*drawFillCircle)(drawCmd_p, coOrd, DIST_T,  wDrawColor); +	void (*drawRectangle)(drawCmd_p, coOrd, coOrd, wDrawColor, drawFill_e);  } drawFuncs_t; -typedef void (*drawConvertPix2CoOrd)(drawCmd_p, wPos_t, wPos_t, coOrd *); -typedef void (*drawConvertCoOrd2Pix)(drawCmd_p, coOrd, wPos_t *, wPos_t *); +typedef void (*drawConvertPix2CoOrd)(drawCmd_p, wDrawPix_t, wDrawPix_t, +                                     coOrd *); +typedef void (*drawConvertCoOrd2Pix)(drawCmd_p, coOrd, wDrawPix_t *, +                                     wDrawPix_t *);  typedef struct drawCmd_t { -    wDraw_p d; -    drawFuncs_t * funcs; -    unsigned long options; -    DIST_T scale; -    ANGLE_T angle; -    coOrd orig; -    coOrd size; -    drawConvertPix2CoOrd Pix2CoOrd; -    drawConvertCoOrd2Pix CoOrd2Pix; -    FLOAT_T dpi; +	wDraw_p d; +	drawFuncs_t * funcs; +	unsigned long options; +	DIST_T scale; +	ANGLE_T angle; +	coOrd orig; +	coOrd size; +	drawConvertPix2CoOrd Pix2CoOrd; +	drawConvertCoOrd2Pix CoOrd2Pix; +	FLOAT_T dpi;  } drawCmd_t;  #define SCALEX(D,X)		((X)/(D).dpi)  #define SCALEY(D,Y)		((Y)/(D).dpi)  #ifdef WINDOWS -    #define LBORDER (33) -    #define BBORDER (32) +#define LBORDER (33) +#define BBORDER (32)  #else -    #define LBORDER (26) -    #define BBORDER (27) +#define LBORDER (26) +#define BBORDER (27)  #endif  #define RBORDER (9)  #define TBORDER (8) -void Pix2CoOrd(drawCmd_p, wPos_t, wPos_t, coOrd *); -void CoOrd2Pix(drawCmd_p, coOrd, wPos_t *, wPos_t *); +void Pix2CoOrd(drawCmd_p, wDrawPix_t, wDrawPix_t, coOrd *); +void CoOrd2Pix(drawCmd_p, coOrd, wDrawPix_t *, wDrawPix_t *);  extern BOOL_T inError;  extern DIST_T pixelBins; @@ -115,7 +126,6 @@ extern drawCmd_t mapD;  extern drawCmd_t tempD;  #define RoomSize (mapD.size)  extern coOrd oldMarker; -extern wPos_t closePixels;  #define dragDistance	(dragPixels*mainD.scale / mainD.dpi)  extern long dragPixels;  extern long dragTimeout; @@ -124,12 +134,16 @@ extern long minGridSpacing;  extern long drawCount;  extern BOOL_T drawEnable;  extern long currRedraw; +extern long constrainMain; +extern long liveMap; +extern long descriptionFontSize;  extern coOrd panCenter;  extern coOrd menuPos;  extern int log_pan; +extern wBool_t wDrawDoTempDraw;  extern wDrawColor drawColorBlack;  extern wDrawColor drawColorWhite; @@ -137,8 +151,13 @@ extern wDrawColor drawColorRed;  extern wDrawColor drawColorBlue;  extern wDrawColor drawColorGreen;  extern wDrawColor drawColorAqua; +extern wDrawColor drawColorDkRed; +extern wDrawColor drawColorDkBlue; +extern wDrawColor drawColorDkGreen; +extern wDrawColor drawColorDkAqua;  extern wDrawColor drawColorPowderedBlue;  extern wDrawColor drawColorPurple; +extern wDrawColor drawColorMagenta;  extern wDrawColor drawColorGold;  extern wDrawColor drawColorGrey10;  extern wDrawColor drawColorGrey20; @@ -190,8 +209,9 @@ extern drawFuncs_t printDrawFuncs;  #define DrawArc( D, P, R, A0, A1, F, W, C ) (D)->funcs->drawArc( D, P, R, A0, A1, F, W, C )  #define DrawString( D, P, A, S, FP, FS, C ) (D)->funcs->drawString( D, P, A, S, FP, FS, C )  #define DrawBitMap( D, P, B, C ) (D)->funcs->drawBitMap( D, P, B, C ) -#define DrawPoly( D, N, P, T, C, W, F, O ) (D)->funcs->drawPoly( D, N, P, T, C, W, F, O ); +#define DrawPoly( D, N, P, T, C, W, O ) (D)->funcs->drawPoly( D, N, P, T, C, W, O );  #define DrawFillCircle( D, P, R, C ) (D)->funcs->drawFillCircle( D, P, R, C ); +#define DrawRectangle( D, P, S, C, O ) (D)->funcs->drawRectangle( D, P, S, C, O )  #define REORIGIN( Q, P, A, O ) { \          (Q) = (P); \ @@ -213,12 +233,15 @@ extern drawFuncs_t printDrawFuncs;  void DrawHilight(drawCmd_p, coOrd, coOrd, BOOL_T add);  void DrawHilightPolygon(drawCmd_p, coOrd *, int); -#define BOX_NONE		(0) -#define BOX_UNDERLINE	(1) -#define BOX_BOX			(2) -#define BOX_INVERT		(3) -#define BOX_ARROW		(4) -#define BOX_BACKGROUND	(5) +#define BOX_NONE		(0)         // do not draw a frame around text +#define BOX_UNDERLINE	(1)         // draw underline under text only +#define BOX_BOX			(2)         // draw a frame around text +#define BOX_INVERT		(3)         // invert colors, text is drawn gray +#define BOX_ARROW		(4)         // box has a connector +#define BOX_BACKGROUND	(5)         // draw box with backgound only, no frame     +#define BOX_ARROW_BACKGROUND (6)    // box has a connector and background +#define BOX_BOX_BACKGROUND (7)      // draw complete frame and background +  void DrawBoxedString(int, drawCmd_p, coOrd, char *, wFont_p, wFontSize_t,                       wDrawColor, ANGLE_T);  void DrawMultiLineTextSize(drawCmd_p dp, char * text, wFont_p fp, @@ -229,8 +252,10 @@ void DrawTextSize(drawCmd_p, char *, wFont_p, wFontSize_t, BOOL_T, coOrd *);  void DrawMultiString(drawCmd_p d, coOrd pos, char * text, wFont_p fp,                       wFontSize_t fs, wDrawColor color, ANGLE_T a, coOrd * lo, coOrd * hi,                       BOOL_T boxed); +void TranslateBackground(drawCmd_p drawP, POS_T origX, POS_T origY, +                         wWinPix_t* posX, +                         wWinPix_t* posY, wWinPix_t* pWidth);  BOOL_T SetRoomSize(coOrd); -void GetRoomSize(coOrd *);  void DoRedraw(void);  void SetMainSize(void);  void MainRedraw(void); @@ -239,13 +264,13 @@ void TempRedraw(void);  void DrawRuler(drawCmd_p, coOrd, coOrd, DIST_T, int, int, wDrawColor);  void MainProc(wWin_p, winProcEvent, void *, void *);  void InitInfoBar(void); +void InitColor(void);  void DrawInit(int); -void DoZoomUp(void *); -void DoZoomDown(void *); -void DoZoomExtents( void *); -void DoZoom(DIST_T *); -void PanHere(void *); -void PanMenuEnter(int); +void DoZoomUp(void * modeVP); +void DoZoomDown(void * modeVP); +void DoZoomExtents( void * modeVP); +void PanHere(void * modeVP); +void PanMenuEnter(void * modeVP);  void InitCmdZoom(wMenu_p, wMenu_p, wMenu_p, wMenu_p); @@ -253,7 +278,7 @@ void InfoPos(coOrd);  void InfoCount(wIndex_t);  void SetMessage(char *); -wIndex_t panCmdInx; +extern wIndex_t panCmdInx;  void InfoSubstituteControls(wControl_p *, char * *); @@ -265,10 +290,10 @@ STATUS_T GridAction(wAction_t, coOrd, coOrd *, DIST_T *);  void ResetMouseState(void);  void FakeDownMouseState(void); -void GetMousePosition(int  *x, int *y); +void GetMousePosition(wDrawPix_t  *x, wDrawPix_t *y);  void RecordMouse(char *, wAction_t, POS_T, POS_T);  extern long playbackDelay; -void MovePlaybackCursor(drawCmd_p, wPos_t, wPos_t, wBool_t, wControl_p); +void MovePlaybackCursor(drawCmd_p, coOrd pos, wBool_t, wControl_p);  typedef void (*playbackProc)(wAction_t, coOrd);  void PlaybackMouse(playbackProc, drawCmd_p, wAction_t, coOrd, wDrawColor);  void RedrawPlaybackCursor(); | 
