Annotation of mstools/samples/sdktools/capview/dispobj.cpp, revision 1.1.1.1

1.1       root        1: #include       <afxwin.h>
                      2: #include       <afxdlgs.h>
                      3: #include       <afxcoll.h>
                      4: #include       <string.h>
                      5: 
                      6: #include "types.h"
                      7: #include "ranges.h"
                      8: #include "dispobj.h"
                      9: 
                     10: 
                     11: void DISPOBJ::PaintTree(CDC * cdc, BOOL fZoom, RANGESTRUCT * prs, RECT rtPaint)
                     12: {
                     13:     DISPOBJ * p = pChild;
                     14:     CRect       rt;
                     15:     CRect      rt1;
                     16:     BOOL       fLines;
                     17:     BOOL       fChildren;
                     18:     
                     19:     
                     20:     if (fOpen && (p != NULL)) {
                     21:         fChildren = rt.IntersectRect( &rtChildren, &rtPaint);
                     22:        rt1.UnionRect( &rtChildren, &rtArea);
                     23:        fLines = rt.IntersectRect(&rt1, &rtPaint);
                     24:        while ( p != NULL) {
                     25:            if (!p->fPrune) {
                     26:                if (fLines) {
                     27:                    cdc->MoveTo( ptRight );
                     28:                    cdc->LineTo( p->ptLeft );
                     29:                }
                     30:                if (fChildren) {
                     31:                    p->PaintTree(cdc, fZoom, prs, rtPaint);
                     32:                }
                     33:            }
                     34:            p = p->pSib;
                     35:         }
                     36:     }
                     37: 
                     38:     if (rt.IntersectRect(&rtArea, &rtPaint)) {
                     39:         DoForeground(cdc, fZoom, prs);
                     40:     }
                     41: 
                     42:     return;
                     43: }
                     44: 
                     45: 
                     46: void DISPOBJ::DoSetLocation(BOOL fZoom, BOOL fPrep)
                     47: {
                     48:     CRect       rt;
                     49: 
                     50:     if (fPrep) {
                     51:         rtChildren.SetRectEmpty();
                     52:         rtArea.SetRectEmpty();
                     53:         rtTotal.SetRectEmpty();
                     54:         if (fPrune) {
                     55:             return;
                     56:         }
                     57: 
                     58:         if (iLevel >= rgLoc.GetUpperBound()) {
                     59:             AAA aaa = {0, 0, 0};
                     60:             rgLoc.SetAtGrow(iLevel, aaa);
                     61:         }
                     62:             
                     63:         if (rgLoc[iLevel].width < Width(fZoom)) {
                     64:             rgLoc[iLevel].width = Width(fZoom);
                     65:         }
                     66: 
                     67:         return;
                     68:     } else {
                     69:         if (fPrune || ((pParent != NULL) && !pParent->fOpen)) {
                     70:             return;
                     71:         }
                     72:         
                     73:         rtArea.top = rgLoc[iLevel].y + spaceVertical;
                     74:         rtArea.left = rgLoc[iLevel].left;
                     75:         rtArea.right = rgLoc[iLevel].left + rgLoc[iLevel].width;
                     76:         rtArea.bottom = rtArea.top + Height(fZoom);
                     77: 
                     78:         rgLoc[iLevel].y = rtArea.bottom;
                     79: 
                     80:         ptRight.x = rtArea.right;
                     81:         ptLeft.x = rtArea.left;
                     82:         ptLeft.y = ptRight.y = (rtArea.bottom - rtArea.top) / 2 + rtArea.top;
                     83: 
                     84:         rtTotal = rtArea;
                     85: 
                     86:         if (fOpen && pChild) {
                     87:             DISPOBJ *   p = pChild;
                     88:             CRect       rt1;
                     89: 
                     90:             while (p != NULL) {
                     91:                 rt1 = p->rtTotal;
                     92:                 if (!rt1.IsRectEmpty()) {
                     93:                     if (rtChildren.IsRectEmpty()) {
                     94:                         rtChildren = rt1;
                     95:                     } else {
                     96:                         rtChildren |= rt1;
                     97:                     }
                     98:                 }
                     99:                 p = p->pSib;
                    100:             }
                    101: 
                    102:             if (!rtChildren.IsRectEmpty()) {
                    103:                 rtTotal |= rtChildren;
                    104:             }
                    105:         }
                    106:     }
                    107: 
                    108:     return;
                    109: }                               /* DISPOBJ::DoSetLocation() */
                    110: 
                    111: void DISPOBJ::SetPropOnOne(int flags, RANGESTRUCT * prs, CDC * pcdc,
                    112:                 BOOL fZoom, TIMETYPE progTime)
                    113: {
                    114:     if (flags & SET_PERCENT) {
                    115:         DoSetPercents(progTime);
                    116:     }
                    117: 
                    118:     if (flags & SET_COLORS) {
                    119:         DoSetColors(prs);
                    120:     }
                    121: 
                    122:     if (flags & SET_STRING) {
                    123:         DoSetString();
                    124:     }
                    125: 
                    126:     if (flags & SET_SIZE) {
                    127:         DoAssignSize(pcdc);
                    128:     }
                    129: 
                    130:     if (flags & SET_LOCATIONPREP) {
                    131:         DoSetLocation(fZoom, TRUE);
                    132:     }
                    133: 
                    134:     if (flags & SET_LOCATION) {
                    135:         DoSetLocation(fZoom, FALSE);
                    136:     }
                    137: 
                    138:     return;
                    139: }
                    140: 
                    141: 
                    142: void DISPOBJ::SetProperties(int flags, RANGESTRUCT * prs, CDC * pcdc,
                    143:                 BOOL fZoom, TIMETYPE progTime)
                    144: {
                    145:     if (pChild != NULL) {
                    146:         pChild->SetProperties(flags, prs, pcdc, fZoom, progTime);
                    147:     }
                    148: 
                    149:     SetPropOnOne(flags, prs, pcdc, fZoom, progTime);
                    150: 
                    151:     if (pSib != NULL) {
                    152:         pSib->SetProperties(flags, prs, pcdc, fZoom, progTime);
                    153:     }
                    154: 
                    155:     return;
                    156: }                               /* DISPOBJ::SetProperties() */

unix.superglobalmegacorp.com

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