Annotation of mstools/ole20/samples/spoly2/cpoly.h, revision 1.1.1.1

1.1       root        1: /*** 
                      2: *cpoly.h
                      3: *
                      4: *  Copyright (C) 1992, Microsoft Corporation.  All Rights Reserved.
                      5: *  Information Contained Herein Is Proprietary and Confidential.
                      6: *
                      7: *Purpose:
                      8: *  Definition of the CPoly class.
                      9: *
                     10: *  The CPoly class defines a number of methods and exposes them for
                     11: *  external programmability via IDispatch,
                     12: *
                     13: *  methods:
                     14: *    DRAW              - draw the polygon
                     15: *    RESET             - delete all points from the polygon
                     16: *
                     17: *    ADDPOINT(X, Y)    - add a point with coordinates (x,y) to the polygon
                     18: *
                     19: *    ENUMPOINTS                - return a collection of the polygon's points
                     20: *
                     21: *    GETXORIGIN                - get and set the X origin of the polygon
                     22: *    SETXORIGIN
                     23: *
                     24: *    GETYORIGIN                - get and set the Y origin of the polygon
                     25: *    SETYORIGIN
                     26: *
                     27: *    GETWIDTH          - get and set the line width of the polygon
                     28: *    SETWIDTH
                     29: *
                     30: *  UNDONE: update description
                     31: *
                     32: *Implementation Notes:
                     33: *
                     34: *****************************************************************************/
                     35: 
                     36: #ifndef        CLASS
                     37: # ifdef        __TURBOC__
                     38: #  define CLASS class huge
                     39: # else
                     40: #  define CLASS class FAR
                     41: # endif
                     42: #endif
                     43: 
                     44: class CPoint;
                     45: 
                     46: CLASS CPoly : public IDispatch
                     47: {
                     48: public:
                     49:     static CPoly FAR* Create();
                     50: 
                     51:     /* IUnknown methods */
                     52:     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
                     53:     STDMETHOD_(ULONG, AddRef)(void);
                     54:     STDMETHOD_(ULONG, Release)(void);
                     55: 
                     56:     /* IDispatch methods */
                     57:     STDMETHOD(GetTypeInfoCount)(UINT FAR* pcTypeInfo);
                     58: 
                     59:     STDMETHOD(GetTypeInfo)(
                     60:       UINT iTypeInfo,
                     61:       LCID lcid,
                     62:       ITypeInfo FAR* FAR* ppTypeInfo);
                     63: 
                     64:     STDMETHOD(GetIDsOfNames)(
                     65:       REFIID riid,
                     66:       char FAR* FAR* rgszNames,
                     67:       UINT cNames,
                     68:       LCID lcid,
                     69:       DISPID FAR* rgdispid);
                     70: 
                     71:     STDMETHOD(Invoke)(
                     72:       DISPID dispidMember,
                     73:       REFIID riid,
                     74:       LCID lcid,
                     75:       WORD wFlags,
                     76:       DISPPARAMS FAR* pdispparams,
                     77:       VARIANT FAR* pvarResult,
                     78:       EXCEPINFO FAR* pexcepinfo,
                     79:       UINT FAR* puArgErr);
                     80: 
                     81:     /* Introduced methods */
                     82: 
                     83:     virtual void  METHODCALLTYPE EXPORT Draw(void);
                     84:     virtual void  METHODCALLTYPE EXPORT Reset(void);
                     85: 
                     86:     // add a point with the given 'x' and 'y' coordinates
                     87:     virtual HRESULT METHODCALLTYPE EXPORT AddPoint(short x, short y);
                     88: 
                     89:     // return a collection of the polygon's points
                     90:     virtual IUnknown FAR* METHODCALLTYPE EXPORT EnumPoints(void);
                     91: 
                     92:     // get/set the polygon's X origin property
                     93:     virtual short METHODCALLTYPE EXPORT GetXOrigin(void);
                     94:     virtual void  METHODCALLTYPE EXPORT SetXOrigin(short x);
                     95: 
                     96:     // get/set the polygon's Y origin property
                     97:     virtual short METHODCALLTYPE EXPORT GetYOrigin(void);
                     98:     virtual void  METHODCALLTYPE EXPORT SetYOrigin(short y);
                     99: 
                    100:     virtual short METHODCALLTYPE EXPORT GetWidth(void);
                    101:     virtual void  METHODCALLTYPE EXPORT SetWidth(short width);
                    102: 
                    103:     virtual short METHODCALLTYPE EXPORT get_red(void);
                    104:     virtual void  METHODCALLTYPE EXPORT set_red(short red);
                    105: 
                    106:     virtual short METHODCALLTYPE EXPORT get_green(void);
                    107:     virtual void  METHODCALLTYPE EXPORT set_green(short green);
                    108: 
                    109:     virtual short METHODCALLTYPE EXPORT get_blue(void);
                    110:     virtual void  METHODCALLTYPE EXPORT set_blue(short blue);
                    111: 
                    112:     // Debug method
                    113:     virtual void  METHODCALLTYPE EXPORT Dump(void);
                    114: 
                    115: public: 
                    116: 
                    117:     // Draw all polygons.
                    118:     static void PolyDraw(void);
                    119: 
                    120:     // Release all polygons.
                    121:     static void PolyTerm(void);
                    122: 
                    123:     // Dump all polygons to dbwin.
                    124:     static void PolyDump(void);
                    125: 
                    126: 
                    127: private:
                    128:     CPoly();
                    129: 
                    130:     short m_xorg;
                    131:     short m_yorg;
                    132:     short m_width;
                    133: 
                    134:     short m_red;
                    135:     short m_green;
                    136:     short m_blue;
                    137: 
                    138:     ULONG m_refs;
                    139:     UINT  m_cPoints;
                    140: 
                    141:     ITypeInfo FAR* m_ptinfo;
                    142: 
                    143:     POINTLINK FAR* m_ppointlink;
                    144:     POINTLINK FAR* m_ppointlinkLast;
                    145: };
                    146: 
                    147: // DISPIDs for the members and properties available via IDispatch.
                    148: //
                    149: enum IDMEMBER_CPOLY {
                    150:     IDMEMBER_CPOLY_DRAW = 1,
                    151:     IDMEMBER_CPOLY_RESET,
                    152:     IDMEMBER_CPOLY_ADDPOINT,
                    153:     IDMEMBER_CPOLY_ENUMPOINTS,
                    154:     IDMEMBER_CPOLY_GETXORIGIN,
                    155:     IDMEMBER_CPOLY_SETXORIGIN,
                    156:     IDMEMBER_CPOLY_GETYORIGIN,
                    157:     IDMEMBER_CPOLY_SETYORIGIN,
                    158:     IDMEMBER_CPOLY_GETWIDTH,
                    159:     IDMEMBER_CPOLY_SETWIDTH,
                    160:     IDMEMBER_CPOLY_GETRED,
                    161:     IDMEMBER_CPOLY_SETRED,
                    162:     IDMEMBER_CPOLY_GETGREEN,
                    163:     IDMEMBER_CPOLY_SETGREEN,
                    164:     IDMEMBER_CPOLY_GETBLUE,
                    165:     IDMEMBER_CPOLY_SETBLUE,
                    166:     IDMEMBER_CPOLY_DUMP,
                    167:     IDMEMBER_CPOLY_MAX
                    168: };
                    169: 
                    170: // CPoly method indices
                    171: //
                    172: enum IMETH_CPOLY {
                    173:     IMETH_CPOLY_QUERYINTERFACE = 0,
                    174:     IMETH_CPOLY_ADDREF,
                    175:     IMETH_CPOLY_RELEASE,
                    176:     IMETH_CPOLY_GETTYPEINFOCOUNT,
                    177:     IMETH_CPOLY_GETTYPEINFO,
                    178:     IMETH_CPOLY_GETIDSOFNAMES,
                    179:     IMETH_CPOLY_INVOKE,
                    180:     IMETH_CPOLY_DRAW,
                    181:     IMETH_CPOLY_RESET,
                    182:     IMETH_CPOLY_ADDPOINT,
                    183:     IMETH_CPOLY_ENUMPOINTS,
                    184:     IMETH_CPOLY_GETXORIGIN,
                    185:     IMETH_CPOLY_SETXORIGIN,
                    186:     IMETH_CPOLY_GETYORIGIN,
                    187:     IMETH_CPOLY_SETYORIGIN,
                    188:     IMETH_CPOLY_GETWIDTH,
                    189:     IMETH_CPOLY_SETWIDTH,
                    190:     IMETH_CPOLY_GETRED,
                    191:     IMETH_CPOLY_SETRED,
                    192:     IMETH_CPOLY_GETGREEN,
                    193:     IMETH_CPOLY_SETGREEN,
                    194:     IMETH_CPOLY_GETBLUE,
                    195:     IMETH_CPOLY_SETBLUE,
                    196:     IMETH_CPOLY_DUMP,
                    197:     IMETH_CPOLY_MAX
                    198: };
                    199: 
                    200: // structure used to link together polygons
                    201: //
                    202: struct POLYLINK {
                    203:     POLYLINK FAR* next;
                    204:     CPoly FAR* ppoly;
                    205: };
                    206: 
                    207: 
                    208: // The CPoly class factory
                    209: //
                    210: CLASS CPolyCF : public IClassFactory
                    211: {
                    212: public:
                    213:     static IClassFactory FAR* Create();
                    214: 
                    215:     /* IUnknown methods */
                    216:     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
                    217:     STDMETHOD_(ULONG, AddRef)(void);
                    218:     STDMETHOD_(ULONG, Release)(void);
                    219: 
                    220:     /* IClassFactory methods */
                    221:     STDMETHOD(CreateInstance)(
                    222:       IUnknown FAR* pUnkOuter, REFIID riid, void FAR* FAR* ppv);
                    223:     STDMETHOD(LockServer)(BOOL fLock);
                    224: 
                    225: private:
                    226:     CPolyCF();
                    227:     ~CPolyCF();
                    228: 
                    229:     ULONG m_refs;
                    230: };
                    231: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.