windows-nt/Source/XPSP1/NT/multimedia/directx/gamectrl/default/pov.h
2020-09-26 16:20:57 +08:00

150 lines
4 KiB
C

#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 <windows.h>
#include <math.h>
#include <assert.h>
#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=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=