Annotation of mstools/samples/gdidemo/xform.c, revision 1.1

1.1     ! root        1: /*-------------------------------------------------------------------------*\
        !             2: | XFORM MODULE
        !             3: |
        !             4: | segment: _TEXT (DOS16)
        !             5: | created: 31-Oct-90
        !             6: | history: 31-Oct-90 <chriswil> created.
        !             7: |
        !             8: \*---------------------------------------------------------------------------*/
        !             9: 
        !            10: #include <windows.h>
        !            11: #include "gdidemo.h"
        !            12: #include "xform.h"
        !            13: 
        !            14: VOID ResetXForm(HWND);
        !            15: VOID DrawXForm(HWND);
        !            16: 
        !            17: 
        !            18: /*---------------------------------------------------------------------------*\
        !            19: | CREATE XFORM WINDOW PROCEDURE
        !            20: |
        !            21: | created: 31-Oct-90
        !            22: | history: 31-Oct-90 <chriswil> created.
        !            23: |
        !            24: \*---------------------------------------------------------------------------*/
        !            25: HWND FAR CreateXFormWindow(HWND hWndClient, int nItem)
        !            26: {
        !            27:     HANDLE          hInstance;
        !            28:     MDICREATESTRUCT mcs;
        !            29: 
        !            30: 
        !            31:     hInstance = GETINSTANCE(hWndClient);
        !            32: 
        !            33:     /*
        !            34:     ** Initialize the MDI create struct for creation of the
        !            35:     ** test window.
        !            36:     */
        !            37:     mcs.szClass = XFORMCLASS;
        !            38:     mcs.szTitle = XFORMTITLE;
        !            39:     mcs.hOwner = hInstance;
        !            40:     mcs.x       = CW_USEDEFAULT;
        !            41:     mcs.y       = CW_USEDEFAULT;
        !            42:     mcs.cx      = CW_USEDEFAULT;
        !            43:     mcs.cy      = CW_USEDEFAULT;
        !            44:     mcs.style  = 0l;
        !            45:     mcs.lParam  = (LONG)nItem;
        !            46: 
        !            47:     return((HWND)SendMessage(hWndClient,WM_MDICREATE,NULL,(LONG)(LPMDICREATESTRUCT)&mcs));
        !            48: }
        !            49: 
        !            50: 
        !            51: /*---------------------------------------------------------------------------*\
        !            52: | XFORM WINDOW PROCEDURE
        !            53: |
        !            54: | created: 31-Oct-90
        !            55: | history: 31-Oct-90 <chriswil> created.
        !            56: |
        !            57: \*---------------------------------------------------------------------------*/
        !            58: LONG APIENTRY XFormProc(HWND hWnd, UINT wMsg, WPARAM wParam, LONG lParam)
        !            59: {
        !            60:     switch(wMsg)
        !            61:     {
        !            62:         case WM_CREATE:
        !            63:             XFormCreateProc(hWnd);
        !            64:             break;
        !            65: 
        !            66: 
        !            67:         case WM_MOVE:
        !            68:             ResetXForm(hWnd);
        !            69:             break;
        !            70: 
        !            71: 
        !            72:         case WM_TIMER:
        !            73:             DrawXForm(hWnd);
        !            74:             break;
        !            75: 
        !            76: 
        !            77:         case WM_COMMAND:
        !            78:             XFormCommandProc(hWnd,wParam,lParam);
        !            79:             break;
        !            80: 
        !            81: 
        !            82:         case WM_PAINT:
        !            83:             XFormPaintProc(hWnd);
        !            84:             break;
        !            85: 
        !            86: 
        !            87:         case WM_DESTROY:
        !            88:             XFormDestroyProc(hWnd);
        !            89:             break;
        !            90: 
        !            91: 
        !            92:         default:
        !            93:             return(DefMDIChildProc(hWnd,wMsg,wParam,lParam));
        !            94:     }
        !            95:     return(0l);
        !            96: }
        !            97: 
        !            98: 
        !            99: /*---------------------------------------------------------------------------*\
        !           100: | XFORM CREATE PROCEDURE
        !           101: |
        !           102: | created: 31-Oct-90
        !           103: | history: 31-Oct-90 <chriswil> created.
        !           104: |
        !           105: \*---------------------------------------------------------------------------*/
        !           106: BOOL XFormCreateProc(HWND hWnd)
        !           107: {
        !           108:     PXFORMDATA pxd;
        !           109: 
        !           110: #ifndef NOT_IMPLEMENTED
        !           111: 
        !           112:     RECT       rect;
        !           113:     int        dx,dy;
        !           114: 
        !           115: #endif
        !           116: 
        !           117:     if(AllocWindowInfo(hWnd,sizeof(XFORMDATA)))
        !           118:     {
        !           119:         if(pxd = (PXFORMDATA)LockWindowInfo(hWnd))
        !           120:         {
        !           121: 
        !           122: #ifndef NOT_IMPLEMENTED
        !           123: 
        !           124:             GetClientRect(hWnd,&rect);
        !           125: 
        !           126:             dx = (rect.right + rect.left) >> 4;
        !           127:             dy = (rect.bottom + rect.top) >> 4;
        !           128: 
        !           129:             pxd->pObject[0].x = dx << 1;
        !           130:             pxd->pObject[0].y = 0;
        !           131:             pxd->pObject[1].x = dx;
        !           132:             pxd->pObject[1].y = dy;
        !           133:             pxd->pObject[2].x = 0;
        !           134:             pxd->pObject[2].y = dy;
        !           135:             pxd->pObject[3].x = dx << 1;
        !           136:             pxd->pObject[3].y = 0;
        !           137:             pxd->nObject      = 4;
        !           138: 
        !           139:             pxd->xForm.eM11 = (float) 0.866;
        !           140:             pxd->xForm.eM12 = (float) 0.5;
        !           141:             pxd->xForm.eM21 = (float)-0.5;
        !           142:             pxd->xForm.eM22 = (float) 0.866;
        !           143:             pxd->xForm.eDx  = (float) 0;
        !           144:             pxd->xForm.eDy  = (float) 0;
        !           145: 
        !           146: #endif
        !           147: 
        !           148:             UnlockWindowInfo(hWnd);
        !           149: 
        !           150:             SetTimer(hWnd,1,500,NULL);
        !           151: 
        !           152:             return(TRUE);
        !           153:         }
        !           154:         FreeWindowInfo(hWnd);
        !           155:     }
        !           156:     return(FALSE);
        !           157: }
        !           158: 
        !           159: 
        !           160: /*---------------------------------------------------------------------------*\
        !           161: | XFORM COMMAND PROCEDURE
        !           162: |
        !           163: | created: 31-Oct-90
        !           164: | history: 31-Oct-90 <chriswil> created.
        !           165: |
        !           166: \*---------------------------------------------------------------------------*/
        !           167: BOOL XFormCommandProc(HWND hWnd, WPARAM wParam, LONG lParam)
        !           168: {
        !           169:     hWnd   = hWnd;
        !           170:     wParam = wParam;
        !           171:     lParam = lParam;
        !           172: 
        !           173:     return(TRUE);
        !           174: }
        !           175: 
        !           176: 
        !           177: /*---------------------------------------------------------------------------*\
        !           178: | XFORM PAINT PROCEDURE
        !           179: |
        !           180: | created: 31-Oct-90
        !           181: | history: 31-Oct-90 <chriswil> created.
        !           182: |
        !           183: \*---------------------------------------------------------------------------*/
        !           184: VOID XFormPaintProc(HWND hWnd)
        !           185: {
        !           186:     HDC         hDC;
        !           187:     PAINTSTRUCT ps;
        !           188: 
        !           189: 
        !           190:     if(hDC = BeginPaint(hWnd,&ps))
        !           191:         EndPaint(hWnd,&ps);
        !           192: 
        !           193:     ResetXForm(hWnd);
        !           194: 
        !           195:     return;
        !           196: }
        !           197: 
        !           198: 
        !           199: /*---------------------------------------------------------------------------*\
        !           200: | XFORM DESTROY PROCEDURE
        !           201: |
        !           202: | created: 31-Oct-90
        !           203: | history: 31-Oct-90 <chriswil> created.
        !           204: |
        !           205: \*---------------------------------------------------------------------------*/
        !           206: VOID XFormDestroyProc(HWND hWnd)
        !           207: {
        !           208:     KillTimer(hWnd,1);
        !           209:     FreeWindowInfo(hWnd);
        !           210:     return;
        !           211: }
        !           212: 
        !           213: 
        !           214: 
        !           215: VOID ResetXForm(HWND hWnd)
        !           216: {
        !           217:     PXFORMDATA pxd;
        !           218:     HDC        hDC;
        !           219: 
        !           220: #ifndef NOT_IMPLEMENTED
        !           221: 
        !           222:     RECT       rect;
        !           223: 
        !           224: #endif
        !           225: 
        !           226: 
        !           227:     if(pxd = (PXFORMDATA)LockWindowInfo(hWnd))
        !           228:     {
        !           229:         if(hDC = GetDC(hWnd))
        !           230:         {
        !           231: 
        !           232: #ifndef NOT_IMPLEMENTED
        !           233: 
        !           234:             GetClientRect(hWnd,&rect);
        !           235:             BitBlt(hDC,0,0,rect.right,rect.bottom,(HDC)0,0,0,0);
        !           236: 
        !           237:             SetViewportOrgEx(hDC,rect.right >> 1,rect.bottom >> 1,NULL);
        !           238:             SetWorldTransform(hDC,(LPXFORM)&pxd->xForm);
        !           239:             Polyline(hDC,pxd->pObject,pxd->nObject);
        !           240:             ModifyWorldTransform(hDC,(LPXFORM)&pxd->xForm,MWT_IDENTITY);
        !           241: 
        !           242: 
        !           243:             // I have to put this in since GDI currently doesn't
        !           244:             // reset the drawing attributes -- 5/24/91
        !           245:             //
        !           246:             SetViewportOrgEx(hDC,0,0,NULL);
        !           247: 
        !           248: #endif
        !           249: 
        !           250:             ReleaseDC(hWnd,hDC);
        !           251:         }
        !           252:         UnlockWindowInfo(hWnd);
        !           253:     }
        !           254:     return;
        !           255: }
        !           256: 
        !           257: 
        !           258: VOID DrawXForm(HWND hWnd)
        !           259: {
        !           260:     PXFORMDATA pxd;
        !           261:     HDC        hDC;
        !           262: #ifndef NOT_IMPLEMENTED
        !           263:     XFORM      xForm;
        !           264:     RECT       rect;
        !           265: #endif
        !           266: 
        !           267: 
        !           268:     if(pxd = (PXFORMDATA)LockWindowInfo(hWnd))
        !           269:     {
        !           270:         if(hDC = GetDC(hWnd))
        !           271:         {
        !           272: 
        !           273: #ifndef NOT_IMPLEMENTED
        !           274: 
        !           275:             GetClientRect(hWnd,&rect);
        !           276:             SetViewportOrgEx(hDC,rect.right >> 1, rect.bottom >> 1,NULL);
        !           277: 
        !           278: 
        !           279:             SetWorldTransform(hDC,(LPXFORM)&pxd->xForm);
        !           280:             Polyline(hDC,pxd->pObject,pxd->nObject);
        !           281: 
        !           282:             ModifyWorldTransform(hDC,(LPXFORM)&pxd->xForm,MWT_RIGHTMULTIPLY);
        !           283:             Polyline(hDC,pxd->pObject,pxd->nObject);
        !           284: 
        !           285:             GetWorldTransform(hDC,(LPXFORM)&xForm);
        !           286:             pxd->xForm.eM11 = xForm.eM11;
        !           287:             pxd->xForm.eM12 = xForm.eM12;
        !           288:             pxd->xForm.eM21 = xForm.eM21;
        !           289:             pxd->xForm.eM22 = xForm.eM22;
        !           290:             pxd->xForm.eDx  = xForm.eDx;
        !           291:             pxd->xForm.eDy  = xForm.eDy;
        !           292: 
        !           293:             ModifyWorldTransform(hDC,(LPXFORM)&pxd->xForm,MWT_IDENTITY);
        !           294: 
        !           295: 
        !           296:             // I have to put this in since GDI currently doesn't
        !           297:             // reset the drawing attributes -- 5/24/91
        !           298:             //
        !           299:             SetViewportOrgEx(hDC,0,0,NULL);
        !           300: 
        !           301: #endif
        !           302:             ReleaseDC(hWnd,hDC);
        !           303:         }
        !           304:         UnlockWindowInfo(hWnd);
        !           305:     }
        !           306:     return;
        !           307: }

unix.superglobalmegacorp.com

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