mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
4.6 KiB
203 lines
4.6 KiB
/***
|
|
*cpoly.h
|
|
*
|
|
* Copyright (C) 1992-1994, Microsoft Corporation. All Rights Reserved.
|
|
* Information Contained Herein Is Proprietary and Confidential.
|
|
*
|
|
*Purpose:
|
|
* Definition of the CPoly class.
|
|
*
|
|
* The CPoly class defines a number of methods and exposes them for
|
|
* external programmability via IDispatch,
|
|
*
|
|
* methods:
|
|
* DRAW - draw the polygon
|
|
* RESET - delete all points from the polygon
|
|
*
|
|
* ADDPOINT(X, Y) - add a point with coordinates (x,y) to the polygon
|
|
*
|
|
* ENUMPOINTS - return a collection of the polygon's points
|
|
*
|
|
* GETXORIGIN - get and set the X origin of the polygon
|
|
* SETXORIGIN
|
|
*
|
|
* GETYORIGIN - get and set the Y origin of the polygon
|
|
* SETYORIGIN
|
|
*
|
|
* GETWIDTH - get and set the line width of the polygon
|
|
* SETWIDTH
|
|
*
|
|
* UNDONE: update description
|
|
*
|
|
*Implementation Notes:
|
|
*
|
|
*****************************************************************************/
|
|
|
|
|
|
#ifndef CLASS
|
|
# ifdef __TURBOC__
|
|
# define CLASS class huge
|
|
# else
|
|
# define CLASS class FAR
|
|
# endif
|
|
#endif
|
|
|
|
class CPoint;
|
|
|
|
CLASS CPoly : public IDispatch
|
|
{
|
|
public:
|
|
static CPoly FAR* Create();
|
|
|
|
/* IUnknown methods */
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
/* IDispatch methods */
|
|
STDMETHOD(GetTypeInfoCount)(unsigned int FAR* pcTypeInfo);
|
|
|
|
STDMETHOD(GetTypeInfo)(
|
|
unsigned int iTypeInfo,
|
|
LCID lcid,
|
|
ITypeInfo FAR* FAR* ppTypeInfo);
|
|
|
|
STDMETHOD(GetIDsOfNames)(
|
|
REFIID riid,
|
|
OLECHAR FAR* FAR* rgszNames,
|
|
unsigned int cNames,
|
|
LCID lcid,
|
|
DISPID FAR* rgdispid);
|
|
|
|
STDMETHOD(Invoke)(
|
|
DISPID dispidMember,
|
|
REFIID riid,
|
|
LCID lcid,
|
|
unsigned short wFlags,
|
|
DISPPARAMS FAR* pdispparams,
|
|
VARIANT FAR* pvarResult,
|
|
EXCEPINFO FAR* pexcepinfo,
|
|
unsigned int FAR* puArgErr);
|
|
|
|
/* Introduced methods */
|
|
|
|
virtual void PASCAL Draw(void);
|
|
virtual void PASCAL Reset(void);
|
|
|
|
// add a point with the given 'x' and 'y' coordinates
|
|
virtual HRESULT PASCAL AddPoint(short x, short y);
|
|
|
|
// return a collection of the polygon's points
|
|
virtual HRESULT PASCAL EnumPoints(IEnumVARIANT FAR* FAR* ppenum);
|
|
|
|
// get/set the polygon's X origin property
|
|
virtual short PASCAL GetXOrigin(void);
|
|
virtual void PASCAL SetXOrigin(short x);
|
|
|
|
// get/set the polygon's Y origin property
|
|
virtual short PASCAL GetYOrigin(void);
|
|
virtual void PASCAL SetYOrigin(short y);
|
|
|
|
virtual short PASCAL GetWidth(void);
|
|
virtual void PASCAL SetWidth(short width);
|
|
|
|
virtual short PASCAL get_red(void);
|
|
virtual void PASCAL set_red(short red);
|
|
|
|
virtual short PASCAL get_green(void);
|
|
virtual void PASCAL set_green(short green);
|
|
|
|
virtual short PASCAL get_blue(void);
|
|
virtual void PASCAL set_blue(short blue);
|
|
|
|
// Debug method
|
|
virtual void PASCAL Dump(void);
|
|
|
|
public:
|
|
|
|
// Draw all polygons.
|
|
static void PolyDraw(void);
|
|
|
|
// Release all polygons.
|
|
static void PolyTerm(void);
|
|
|
|
// Dump all polygons to dbwin.
|
|
static void PolyDump(void);
|
|
|
|
|
|
private:
|
|
CPoly();
|
|
|
|
short m_xorg;
|
|
short m_yorg;
|
|
short m_width;
|
|
|
|
short m_red;
|
|
short m_green;
|
|
short m_blue;
|
|
|
|
unsigned long m_refs;
|
|
unsigned int m_cPoints;
|
|
|
|
POINTLINK FAR* m_ppointlink;
|
|
POINTLINK FAR* m_ppointlinkLast;
|
|
};
|
|
|
|
// DISPIDs for the members and properties available via IDispatch.
|
|
//
|
|
enum IDMEMBER_CPOLY {
|
|
IDMEMBER_CPOLY_DRAW = 1,
|
|
IDMEMBER_CPOLY_RESET,
|
|
IDMEMBER_CPOLY_ADDPOINT,
|
|
IDMEMBER_CPOLY_ENUMPOINTS,
|
|
IDMEMBER_CPOLY_GETXORIGIN,
|
|
IDMEMBER_CPOLY_SETXORIGIN,
|
|
IDMEMBER_CPOLY_GETYORIGIN,
|
|
IDMEMBER_CPOLY_SETYORIGIN,
|
|
IDMEMBER_CPOLY_GETWIDTH,
|
|
IDMEMBER_CPOLY_SETWIDTH,
|
|
IDMEMBER_CPOLY_GETRED,
|
|
IDMEMBER_CPOLY_SETRED,
|
|
IDMEMBER_CPOLY_GETGREEN,
|
|
IDMEMBER_CPOLY_SETGREEN,
|
|
IDMEMBER_CPOLY_GETBLUE,
|
|
IDMEMBER_CPOLY_SETBLUE,
|
|
IDMEMBER_CPOLY_DUMP,
|
|
IDMEMBER_CPOLY_MAX
|
|
};
|
|
|
|
// structure used to link together polygons
|
|
//
|
|
struct POLYLINK {
|
|
POLYLINK FAR* next;
|
|
CPoly FAR* ppoly;
|
|
};
|
|
|
|
|
|
// The CPoly class factory
|
|
//
|
|
CLASS CPolyCF : public IClassFactory
|
|
{
|
|
public:
|
|
static IClassFactory FAR* Create();
|
|
|
|
/* IUnknown methods */
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
/* IClassFactory methods */
|
|
STDMETHOD(CreateInstance)(
|
|
IUnknown FAR* pUnkOuter, REFIID riid, void FAR* FAR* ppv);
|
|
#ifdef _MAC
|
|
STDMETHOD(LockServer)(unsigned long fLock);
|
|
#else
|
|
STDMETHOD(LockServer)(BOOL fLock);
|
|
#endif
|
|
|
|
private:
|
|
CPolyCF();
|
|
|
|
unsigned long m_refs;
|
|
};
|
|
|