#ifndef __POV_H #define __POV_H /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ** ** FILE: POV.H ** DATE: 3/31/97 ** PROJ: ATLAS ** PROG: JKH ** COMMENTS: ** ** DESCRIPTION:Header file for the POV control class ** ** ** ** NOTE: ** ** HISTORY: ** DATE WHO WHAT ** ---- --- ---- ** 3/31/97 a-kirkh Wrote it. ** ** ** Copyright (C) Microsoft 1997. All Rights Reserved. ** **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ //~=~=~=~=~=~=~=~=~=~=~=~=~=~=~INCLUDES=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ // // // #include #include #include #include "resource.h" //~=~=~=~=~=~=~=~=~=~=~=~=~=~=~STRUCTS~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ // // // typedef struct tag_VerticeInfo { /* int x; long y; */ short x; short y; }VERTICEINFO, *PVERTICEINFO; //~=~=~=~=~=~=~=~=~=~=~=~=~=~=~DEFINES~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ // // ARROWVERTICES DESCRIPTIONS // /\ ------------- X/YARROWPOINT // / \ // /__ __\ ---------- X/YARROWRIGHT/LEFTOUT // X/YARROWBOTTOM \ | |\ // \_______|__| \----------- X/YARROWRIGHT/LEFTIN // #define NUMARROWVERTICES 8 // IN ARROW BITMAP #define PIPI 6.283185307179586476925286766559 // 2 * PI #define PM_MYJOYPOSCHANGED WM_USER + 1000 // PRIVATE MESSAGE #define CIRCLECOLOR RGB(96, 96, 96) //VERTICES COORDINATES //X #define XARROWPOINT 0 //USE TWICE, AT START AND AT END #define XARROWRIGHTOUT 150 #define XARROWRIGHTIN 75 #define XARROWRIGHTBOTTOM 75 #define XARROWLEFTBOTTOM -75 #define XARROWLEFTIN -75 #define XARROWLEFTOUT -150 //VERTICES COORDINATES //Y #define YARROWPOINT 1000 #define YARROWRIGHTOUT 850 #define YARROWRIGHTIN 850 #define YARROWRIGHTBOTTOM 750 #define YARROWLEFTBOTTOM 750 #define YARROWLEFTIN 850 #define YARROWLEFTOUT 850 #define CIRCLERADIUS YARROWRIGHTOUT #define POV1_COLOUR RGB(255,0,0) #define POV2_COLOUR RGB(0,0,255) #define POV3_COLOUR RGB(0,0,0) #define POV4_COLOUR RGB(0,255,0) //~=~=~=~=~=~=~=~=~=~=~=~=~=~=~MACROS=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ // // The sin function takes radians so use the conversion: // // DEGTORAD: DEGREES / 360 == RADIANS / 2PI -> DEGREES * 2PI == RADIANS // // To rotate and translate a coordinate use the functions: // // GETXCOORD: X' = Y * sin(angle) + X * cos(angle) // where angle is in radians and // // GETYCOORD: Y' = Y * cos(angle) - X * sin(angle) // where angle is in radians. // #define DEGTORAD(d) (double)((PIPI * (d))/360) #define GETXCOORD(y, x, theta) (int)((((y) * sin((double)(DEGTORAD(theta))))) + (((x) * cos((double)(DEGTORAD(theta)))))) #define GETYCOORD(y, x, theta) (int)((((y) * cos((double)(DEGTORAD(theta))))) - (((x) * sin((double)(DEGTORAD(theta)))))) void SetDegrees(BYTE nPov, short *dDegrees, HWND hPOVWnd); /* void DrawROPLine(HDC hDC, POINT ptStart, POINT ptEnd, COLORREF rgb = RGB(0, 0, 0), int iWidth = 1, int iStyle = PS_SOLID, int iROPCode = R2_COPYPEN); void DrawControl(HDC hDC, LPRECT prcClient); */ void GetCurrentArrowRegion(HRGN* hRegion, BYTE nPov); extern ATOM RegisterPOVClass(); LRESULT CALLBACK POVWndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam); void DrawBitmap(HDC hDC, HBITMAP hBitmap, BYTE xStart, BYTE yStart); #endif //~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=EOF=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=