/*********************************************************************
* Function: WORD CcDraw(CUSTOM *pCc)
*
* PreCondition: object must be created before this is called
*
* Input: pCc - pointer to struct CUSTOM with data
*
* Output: returns the status of the drawing
*		  0 - not complete
*         1 - done
*
* Overview: draws control
*
* Note: THIS FUNCTION CALL SHOULD BE ADDED INTO GOLDraw() FUNCTION IN
*       GOL.C FILE
*
********************************************************************/
WORD CcDraw(CUSTOM *pCc)
{
    typedef enum
    {
        REMOVE,
        BOX_DRAW,
        RUN_DRAW
    } CC_DRAW_STATES;

    static CC_DRAW_STATES state = REMOVE;

    switch(state)
    {
        case REMOVE:
            if(GetState(pCc, CC_HIDE))
            {
                SetColor(pCc->pGolScheme->CommonBkColor);
                if(!Bar(pCc->left, pCc->top, pCc->right, pCc->bottom))
                    return (0);
                return (1);
            }

            state = BOX_DRAW;

        case BOX_DRAW:
            if(GetState(pCc, CC_DRAW))
            {
                GOLPanelDraw
                (
                    pCc->left,
                    pCc->top,
                    pCc->right,
                    pCc->bottom,
                    pCc->pGolScheme->Color0,
                    pCc->pGolScheme->EmbossDkColor,
                    pCc->pGolScheme->EmbossLtColor,
                    NULL,
                    GOL_EMBOSS_SIZE
                );
            }
            else
            {
                state = BAR_DRAW;
                goto bar_draw;
            }

            state = RUN_DRAW;

        case RUN_DRAW:
            if(!GOLPanelDrawTsk())
            {
                return (0);
            }

            // DRAWING IS DONE
            state = REMOVE;
            return (1);
    }
}
Exemplo n.º 2
0
/****************************************************************************
  Function:
    void ShowScreenGraph( void )

  Description:
    This function erases the currently displayed screen and replaces it with
    the graphing demonstration.  It draws the initial grid, and initializes
    the variables needed for the demo.

  Precondition:
    None

  Parameters:
    None

  Returns:
    None

  Remarks:
    The global list of graphics objects is destroyed and replaced. Therefore,
    this function cannot be called during the message processing of
    GOLMsgCallback().  It must be called during GOLDrawCallback() processing.
  ***************************************************************************/
void ShowScreenGraph( void )
{
//    strcpy( pageInformation.title, "Potentiometer Graph" );
//    InitializeScreen();
//
//    // Create the hidden controls to receive touchpad messages.
//
//    BtnCreate(          ID_GRAPH_FASTER,
//                        GetMaxX()-8, 0, GetMaxX()-6, 2, 3,
//                        BTN_HIDE,
//                        NULL,
//                        NULL,
//                        NULL );
//
//    BtnCreate(          ID_GRAPH_SLOWER,
//                        GetMaxX()-6, 0, GetMaxX()-4, 2, 3,
//                        BTN_HIDE,
//                        NULL,
//                        NULL,
//                        NULL );
//
//    BtnCreate(          ID_GRAPH_HOME,
//                        GetMaxX()-4, 0, GetMaxX()-2, 2, 3,
//                        BTN_HIDE,
//                        NULL,
//                        NULL,
//                        NULL );

    GOLPanelDraw( GRAPH_PANEL_LEFT, GRAPH_PANEL_TOP, GRAPH_PANEL_RIGHT, GRAPH_PANEL_BOTTOM, 0,
        BLACK, NULL, NULL, NULL, GOL_EMBOSS_SIZE);

    GOLPanelDrawTsk();          // draw panel for graph

    // Draw the initial grid.

    SetColor( WHITE );
    SetLineType( DOTTED_LINE );

    previousTick    = tick;
    graphOffset     = 0;
    graphDataHead   = 0;
    graphDataTail   = 0;
    graphUpdateRate = GRAPH_UPDATE_INTERVAL_INIT;

//    DrawGridVerticals();
//    DrawGridHorizontals();
}
Exemplo n.º 3
0
/*********************************************************************
* Function: WORD BtnDraw(BUTTON *pB)
*
*
* Notes: This is the state machine to draw the button.
*
********************************************************************/
WORD BtnDraw(BUTTON *pB)
{
typedef enum {
	REMOVE,
	BEVEL_DRAW,
    RNDBUTTON_DRAW,
	TEXT_DRAW,
    TEXT_DRAW_RUN,
	FOCUS_DRAW,
} BTN_DRAW_STATES;

static BTN_DRAW_STATES state = REMOVE;
static SHORT width, height, radius;

WORD faceClr, embossLtClr, embossDkClr, xText, yText;

    if(IsDeviceBusy())
        return 0;

    switch(state){

        case REMOVE:

            if(IsDeviceBusy())
                return 0;  

	        if (GetState(pB,BTN_HIDE)) {  				      // Hide the button (remove from screen)
       	        SetColor(pB->hdr.pGolScheme->CommonBkColor);
       	        Bar(pB->hdr.left, pB->hdr.top, pB->hdr.right, pB->hdr.bottom);
		        return 1;
		    }
			/* Note: that width and height adjustment considers the following assumptions:
					1. if circular width = height = radius*2
					2. if vertical capsule width = radius*2
					3. if horizontal capsule height = radius*2
					4. radius must be less than or equal to width if height is greater than width
					5. radius must be less than or equal to height if width is greater than height
					6. if button is cornered, radius must be zero
			*/				
   			radius = pB->radius;								// get radius
	    	width  = (pB->hdr.right - pB->hdr.left) - (radius*2);		// get width
	    	height = (pB->hdr.bottom - pB->hdr.top) - (radius*2);		// get height
            state = BEVEL_DRAW;

        case BEVEL_DRAW:
			if(!GetState(pB,BTN_DISABLED)){
			    if(GetState(pB,BTN_PRESSED)){
			        embossDkClr = pB->hdr.pGolScheme->EmbossLtColor;
			      	embossLtClr = pB->hdr.pGolScheme->EmbossDkColor;
			      	faceClr 	= pB->hdr.pGolScheme->Color1;
			    } else {
			        embossLtClr = pB->hdr.pGolScheme->EmbossLtColor;
			      	embossDkClr = pB->hdr.pGolScheme->EmbossDkColor;
			      	faceClr		= pB->hdr.pGolScheme->Color0;
			    }  
		    }else{    
		        embossLtClr = pB->hdr.pGolScheme->EmbossLtColor;
		      	embossDkClr = pB->hdr.pGolScheme->EmbossDkColor;
		      	faceClr		= pB->hdr.pGolScheme->ColorDisabled;
            } 
   			SetLineThickness(NORMAL_LINE);
			SetLineType(SOLID_LINE);			
            GOLPanelDraw(pB->hdr.left+radius, pB->hdr.top+radius, pB->hdr.right-radius,  	
			   			 pB->hdr.bottom-radius, radius, faceClr, embossLtClr, embossDkClr,  
				  		 pB->pBitmap, GOL_EMBOSS_SIZE);
   			state = RNDBUTTON_DRAW;

        case RNDBUTTON_DRAW:

            if(!GOLPanelDrawTsk()){
                return 0;
            }
   			state = TEXT_DRAW;

        case TEXT_DRAW:
        	if (pB->pText != NULL){
                if (!GetState(pB,BTN_DISABLED)){
        	        if (GetState(pB,BTN_PRESSED)){
	        	        SetColor(pB->hdr.pGolScheme->TextColor1);
	                }else{
		                SetColor(pB->hdr.pGolScheme->TextColor0);
                    }
                }
	            else{
		            SetColor(pB->hdr.pGolScheme->TextColorDisabled);
                }
                SetFont(pB->hdr.pGolScheme->pFont);
                // check text alignment
                if (GetState(pB, BTN_TEXTRIGHT)) 
	                xText = pB->hdr.right-(pB->textWidth+GOL_EMBOSS_SIZE+2);
	            else if (GetState(pB, BTN_TEXTLEFT))    
	                xText = pB->hdr.left+GOL_EMBOSS_SIZE+2;
	            else    
	                xText = (pB->hdr.left+pB->hdr.right-pB->textWidth)>>1;
								
                if (GetState(pB, BTN_TEXTTOP)) 
	                yText = pB->hdr.top+GOL_EMBOSS_SIZE+2;
	            else if (GetState(pB, BTN_TEXTBOTTOM))    
	                yText = pB->hdr.bottom-(pB->textHeight+GOL_EMBOSS_SIZE);
	            else    
	                yText = (pB->hdr.bottom+pB->hdr.top-pB->textHeight)>>1;

           		MoveTo(xText, yText);
           		state = TEXT_DRAW_RUN;
	        }else {
           		state = FOCUS_DRAW;
           		goto rnd_button_draw_focus;
           	}	

        case TEXT_DRAW_RUN:
			if(!OutText(pB->pText))
            	return 0;	
            state = FOCUS_DRAW;
 
        case FOCUS_DRAW:
rnd_button_draw_focus:
            if(IsDeviceBusy())
                return 0;
    
	        if(GetState(pB,BTN_FOCUSED)){
		        SetLineType(FOCUS_LINE);
			    if(GetState(pB,BTN_PRESSED)) {
			        SetColor(pB->hdr.pGolScheme->TextColor1);
			    } else {     
			        SetColor(pB->hdr.pGolScheme->TextColor0);
			    }
			    // check if the object has rounded corners or not    
		        if (!pB->radius) {
					Rectangle(	pB->hdr.left+GOL_EMBOSS_SIZE+2 , pB->hdr.top+GOL_EMBOSS_SIZE+2,
                          		pB->hdr.right-GOL_EMBOSS_SIZE-2, pB->hdr.bottom-GOL_EMBOSS_SIZE-2);
                }    	      
		        else  {
				    // original center is still the same, but radius is reduced
		        	Bevel( pB->hdr.left+radius, pB->hdr.top+radius, 					\
				           pB->hdr.right-radius, pB->hdr.bottom-radius,				\
				           radius - 2 - GOL_EMBOSS_SIZE);
			    }
		        SetLineType(SOLID_LINE);
	        }
	        
            state = REMOVE;
            return 1;
    }
Exemplo n.º 4
0
/*********************************************************************
* Function: WORD WndDraw(WINDOW *pW)
*
* Overview: draws window
*
********************************************************************/
WORD WndDraw(WINDOW *pW){

typedef enum {
    WND_REMOVE,
	WND_TITLE_BAR_DRAW,
	WND_TITLE_BAR_BITMAP,
	WND_TITLE_BAR_TEXT,
	WND_TITLE_BAR_TEXT_DRAW,
    WND_CLIENT,
    WND_CLIENT_DRAW
} WND_DRAW_STATES;

SHORT temp;
static WND_DRAW_STATES state = WND_REMOVE;

    while(1){

        if(IsDeviceBusy())
            return 0;

        switch(state){

            case WND_REMOVE:
                if(GetState(pW,WND_HIDE)){
                    SetColor(pW->hdr.pGolScheme->CommonBkColor);
                    Bar(pW->hdr.left,pW->hdr.top,pW->hdr.right,pW->hdr.bottom);
                    return 1;                  
                }
                
if(GetState(pW,WND_DRAW_CLIENT)){

                state = WND_CLIENT;
                break;

            case WND_CLIENT:

                GOLPanelDraw(pW->hdr.left,pW->hdr.top,pW->hdr.right,pW->hdr.bottom, 0,
                         pW->hdr.pGolScheme->CommonBkColor,
                         pW->hdr.pGolScheme->EmbossLtColor,
                         pW->hdr.pGolScheme->EmbossDkColor,
                         NULL,
                         GOL_EMBOSS_SIZE);

                state = WND_CLIENT_DRAW;

            case WND_CLIENT_DRAW:

                if(!GOLPanelDrawTsk())
                    return 0;

}
                state = WND_TITLE_BAR_DRAW;
                break;

            case WND_TITLE_BAR_DRAW:

                if(!GetState(pW,WND_DISABLED)){
    	            if(GetState(pW,WND_FOCUSED)){
                        SetColor(pW->hdr.pGolScheme->Color1);
	                }else{

                        SetColor(pW->hdr.pGolScheme->Color0);
                    }
                }else{
                        SetColor(pW->hdr.pGolScheme->ColorDisabled);
                }

                Bar(pW->hdr.left+GOL_EMBOSS_SIZE, pW->hdr.top+GOL_EMBOSS_SIZE,
                    pW->hdr.right-GOL_EMBOSS_SIZE, pW->hdr.top+GOL_EMBOSS_SIZE+WND_TITLE_HEIGHT);

                state = WND_TITLE_BAR_BITMAP;
                
                break;
              
            case WND_TITLE_BAR_BITMAP:

        	    if (pW->pBitmap != NULL){
                    PutImage(pW->hdr.left+GOL_EMBOSS_SIZE,
                             pW->hdr.top+GOL_EMBOSS_SIZE+((WND_TITLE_HEIGHT-GetImageHeight(pW->pBitmap))>>1),
                             pW->pBitmap,IMAGE_NORMAL);
                }

if (pW->pText != NULL){

                state = WND_TITLE_BAR_TEXT;
                break;

            case WND_TITLE_BAR_TEXT:

                SetFont(pW->hdr.pGolScheme->pFont);

                if(!GetState(pW,WND_DISABLED)){

        	        if (GetState(pW,WND_FOCUSED)){
	        	        SetColor(pW->hdr.pGolScheme->TextColor1);
	                }else{
		                SetColor(pW->hdr.pGolScheme->TextColor0);
                    }

                }else{
		            SetColor(pW->hdr.pGolScheme->TextColorDisabled);
                }
                    
                temp = pW->hdr.left+GOL_EMBOSS_SIZE+WND_INDENT;

                if(pW->pBitmap != NULL){
                    temp += GetImageWidth(pW->pBitmap);
                }

                MoveTo(temp, pW->hdr.top+GOL_EMBOSS_SIZE+((WND_TITLE_HEIGHT-pW->textHeight)>>1));

                state = WND_TITLE_BAR_TEXT_DRAW;

            case WND_TITLE_BAR_TEXT_DRAW:
                if(!OutText(pW->pText))
                    return 0;	
}
                state = WND_REMOVE;
                return 1;

        }//end of switch
Exemplo n.º 5
0
/*********************************************************************
* Function: WORD CbDraw(CHECKBOX *pCb)
*
* Output: returns the status of the drawing
*		  0 - not complete
*         1 - done
*
* Overview: Draws check box.
*
********************************************************************/
WORD CbDraw(CHECKBOX *pCb)
{
    typedef enum {
        REMOVE,
        BOX_DRAW,
        RUN_DRAW,
        TEXT_DRAW,
        TEXT_DRAW_RUN,
        CHECK_DRAW,
        FOCUS_DRAW
    } CB_DRAW_STATES;

    static CB_DRAW_STATES state = REMOVE;

    SHORT checkIndent;

    if(IsDeviceBusy())
        return 0;

    switch(state) {

    case REMOVE:
        if(GetState(pCb,CB_HIDE|CB_DRAW)) {

            if(IsDeviceBusy())
                return 0;
            SetColor(pCb->hdr.pGolScheme->CommonBkColor);
            Bar(pCb->hdr.left,pCb->hdr.top,pCb->hdr.right,pCb->hdr.bottom);
            if(GetState(pCb,CB_HIDE))
                return 1;
        }
        state = BOX_DRAW;

    case BOX_DRAW:

        if(GetState(pCb,CB_DRAW)) {

            if(!GetState(pCb,CB_DISABLED)) {

                GOLPanelDraw(pCb->hdr.left+CB_INDENT,pCb->hdr.top+CB_INDENT,
                             pCb->hdr.left+(pCb->hdr.bottom-pCb->hdr.top)-CB_INDENT,
                             pCb->hdr.bottom-CB_INDENT, 0,
                             pCb->hdr.pGolScheme->Color0,
                             pCb->hdr.pGolScheme->EmbossDkColor,
                             pCb->hdr.pGolScheme->EmbossLtColor,
                             NULL, GOL_EMBOSS_SIZE);


            } else {

                GOLPanelDraw(pCb->hdr.left+CB_INDENT,pCb->hdr.top+CB_INDENT,
                             pCb->hdr.left+(pCb->hdr.bottom-pCb->hdr.top)-CB_INDENT,
                             pCb->hdr.bottom-CB_INDENT, 0,
                             pCb->hdr.pGolScheme->ColorDisabled,
                             pCb->hdr.pGolScheme->EmbossDkColor,
                             pCb->hdr.pGolScheme->EmbossLtColor,
                             NULL, GOL_EMBOSS_SIZE);

            }

            state = RUN_DRAW;

        case RUN_DRAW:
            if(!GOLPanelDrawTsk())
                return 0;
            state = TEXT_DRAW;


        case TEXT_DRAW:
            if(pCb->pText != NULL) {

                SetFont(pCb->hdr.pGolScheme->pFont);

                if (!GetState(pCb,CB_DISABLED)) {
                    SetColor(pCb->hdr.pGolScheme->TextColor0);
                } else {
                    SetColor(pCb->hdr.pGolScheme->TextColorDisabled);
                }

                MoveTo(pCb->hdr.left+pCb->hdr.bottom-pCb->hdr.top+CB_INDENT,
                       (pCb->hdr.bottom+pCb->hdr.top-pCb->textHeight)>>1);

                state = TEXT_DRAW_RUN;

            case TEXT_DRAW_RUN:
                if(!OutText(pCb->pText))
                    return 0;
            }

        }
        state = CHECK_DRAW;

    case CHECK_DRAW:

        if(GetState(pCb,CB_DRAW|CB_DRAW_CHECK)) {
            if(IsDeviceBusy())
                return 0;

            if(!GetState(pCb,CB_DISABLED)) {
                if(GetState(pCb,CB_CHECKED)) {
                    SetColor(pCb->hdr.pGolScheme->TextColor0);
                } else {
                    SetColor(pCb->hdr.pGolScheme->Color0);
                }
            } else {
                if(GetState(pCb,CB_CHECKED)) {
                    SetColor(pCb->hdr.pGolScheme->TextColorDisabled);
                } else {
                    SetColor(pCb->hdr.pGolScheme->ColorDisabled);
                }
            }

            checkIndent = (pCb->hdr.bottom-pCb->hdr.top)>>2;

            Bar(pCb->hdr.left+checkIndent+GOL_EMBOSS_SIZE,
                pCb->hdr.top+checkIndent+GOL_EMBOSS_SIZE,
                pCb->hdr.left+(pCb->hdr.bottom-pCb->hdr.top)-checkIndent-GOL_EMBOSS_SIZE,
                pCb->hdr.bottom-checkIndent-GOL_EMBOSS_SIZE);
        }
        state = FOCUS_DRAW;

    case FOCUS_DRAW:
        if(GetState(pCb,CB_DRAW|CB_DRAW_FOCUS)) {
            if(IsDeviceBusy())
                return 0;
            if(GetState(pCb,CB_FOCUSED)) {
                SetColor(pCb->hdr.pGolScheme->TextColor0);
            } else {
                SetColor(pCb->hdr.pGolScheme->CommonBkColor);
            }
            SetLineType(FOCUS_LINE);
            Rectangle(pCb->hdr.left, pCb->hdr.top,
                      pCb->hdr.right, pCb->hdr.bottom);
            SetLineType(SOLID_LINE);
        }
        state = REMOVE;
        return 1;
    }