home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-28 | 8.1 KB | 351 lines | [TEXT/MPCC] |
- //----------------------------------------------------------------------------------------
- // Imaging protocol
- //----------------------------------------------------------------------------------------
-
- #ifndef _PROCESSMAP_
- #include "CPProcessMap.h"
- #endif
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::Draw(Environment* ev, ODFacet* facet, ODShape* invalidShape)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_Draw
- EnteringMethod("\pCPProcessMap::Draw");
- ODUnused(invalidShape);
-
- CFocus foc(ev, facet);
-
- ODFrame* frame = facet->GetFrame(ev);
- ODShape* usedShape = frame->GetUsedShape(ev, kODNULL);
- RgnHandle rgn = usedShape->GetQDRegion(ev);
-
- usedShape->Release(ev);
-
- Rect rct = (*rgn)->rgnBBox;
- RgnHandle oldClip = NULL;
- RgnHandle newClip;
-
- // ::PenSize(2, 2);
-
- if (frame->IsRoot(ev))
- {
- GrafPtr curPort;
-
- ::GetPort(&curPort);
- Rect r = curPort->portRect;
- rctBar = r;
- rctBar.right -= 15;
- rctBar.bottom-= 15;
- r.left = r.right - 15;
- r.top = r.bottom - 15;
- ::GetClip(oldClip = NewRgn());
- ::ClipRect(&r);
- ::DrawGrowIcon(curPort);
- ::GetClip(newClip = ::NewRgn());
- ::DiffRgn(oldClip, newClip, newClip);
- ::SetClip(newClip);
- ::DisposeRgn(newClip);
- ::EraseRect(&(curPort->portRect));
- }
- else {
- //::EraseRoundRect(&rct, 40, 40);
- rctBar = rct;
- ::EraseRect(&rct);
- }
-
- if ( fHorizontal )
- {
- rctBar.left += 5;
- rctBar.top += 5;
- rctBar.right-= 5;
- rctBar.bottom = rctBar.top + 20;
- }
- else
- {
- rctBar.left += 5;
- rctBar.top += 5;
- rctBar.right = rctBar.left + 20;
- rctBar.bottom-= 5;
- }
- ::FrameRect(&rctBar);
- DrawProcessMap(ev,facet);
-
- if (oldClip) {
- ::SetClip(oldClip);
- ::DisposeRgn(oldClip);
- }
- }
-
- void CPProcessMap::DrawProcessMap(Environment* ev, ODFacet* facet)
- {
- float f;
- short width,height;
- Rect rct;
- Pattern pattern;
-
- width = rctBar.right - rctBar.left;
- height= rctBar.bottom- rctBar.top;
-
- rct = rctBar;
-
- /* System Heap */
- if ( fHorizontal )
- {
- rct.left = rctBar.left;
- f = width;
- f*= lSystemHeap;
- f/= lLogicalSize;
- rct.right= rct.left + f;
- }
- else
- {
- rct.bottom = rctBar.bottom;
- f = height;
- f*= lSystemHeap;
- f/= lLogicalSize;
- rct.top = rctBar.bottom - f;
- }
-
- ::FrameRect(&rct);
- ::InsetRect(&rct,1,1);
- ::GetIndPattern(&pattern, 0, 1);
- ::FillRect(&rct,&pattern);
-
- /* Above BufPtr */
- if ( fHorizontal )
- {
- rct.left = rctBar.left;
- f = width;
- f*= lAboveBufPtr;
- f/= lLogicalSize;
- rct.left+= f;
- rct.right= rctBar.right;
- }
- else
- {
- rct.bottom = rctBar.bottom;
- f = height;
- f*= lAboveBufPtr;
- f/= lLogicalSize;
- rct.bottom -= f;
- rct.top = rctBar.top;
- }
-
- ::FrameRect(&rct);
- ::InsetRect(&rct,1,1);
- ::GetIndPattern(&pattern, 0, 2);
- ::FillRect(&rct,&pattern);
-
- #if 1
- for(int i=0;i<sNumOfProcess;i++)
- {
- rct = rctBar;
- if ( fHorizontal )
- {
- f = width;
- f*= aProcesses[i].lStartAddress;
- f/= lLogicalSize;
- rct.left = rctBar.left + f;
- f = width;
- f*= aProcesses[i].lEndAddress;
- f/= lLogicalSize;
- rct.right= rctBar.left + f;
- }
- else
- {
- f = height;
- f*= aProcesses[i].lStartAddress;
- f/= lLogicalSize;
- rct.bottom = rctBar.bottom - f;
- f = height;
- f*= aProcesses[i].lEndAddress;
- f/= lLogicalSize;
- rct.top = rctBar.bottom - f;
- }
-
- ::FrameRect(&rct);
- ::InsetRect(&rct,1,1);
- ::GetIndPattern(&pattern, 0, i+3);
- ::FillRect(&rct,&pattern);
- }
- #endif
- }
-
- static void hexstring(Str255 str, short sLen, long lNum);
- static void hexstring(Str255 str, short sLen, long lNum)
- {
- char buff[30];
- short i;
- short nChar, nTMP;
- short sOff;
-
- for(i=0;;i++)
- {
- buff[i] = lNum%16;
- if ( 10 <= buff[i] ) buff[i] = buff[i] - 10 + 'A';
- else
- buff[i] += '0';
- lNum/=16;
- if ( 0 == lNum )break;
- }
- nChar = i;
- str[1] = '$';
- sOff = 1;
- nTMP = nChar;
- while ( nTMP < sLen - 1 )
- {
- sOff ++;
- str[sOff] = '0';
- nTMP ++;
- }
- for(i=0;i<=nChar;i++, sOff++)
- {
- str[sOff] = buff[nChar-i];
- }
- str[0] = sLen;
- }
-
- void CPProcessMap::DrawProcessName(StringPtr p, long lFrom, long lTo)
- {
- Point pt;
- short sWidth;
- Rect rct;
- Str255 str0;
-
- if ( ::EqualString(p, (StringPtr)PrevName, false, false) ) return;
-
- rct = rctBar;
- if ( fHorizontal )
- {
- rct.top = rct.bottom + 1;
- rct.bottom = rct.top +100;
- }
- else
- {
- rct.left = rct.right + 1;
- rct.right= rct.right +300;
- }
- ::EraseRect(&rct);
-
- if ( fHorizontal )
- {
- sWidth = ::StringWidth(p);
- pt.h = (rctBar.left + rctBar.right)/2 - sWidth/2;
- pt.v = rctBar.bottom + sSysFontHeight;
- }
- else
- {
- pt.h = rctBar.right + 1;
- pt.v = (rctBar.top + rctBar.bottom)/2;
- }
-
- ::MoveTo(pt.h, pt.v);
- ::DrawString(p);
- if ( 0 != lFrom || 0 != lTo )
- {
- pt.v += (sSysFontHeight + sSysFontLeading);
- ::MoveTo(pt.h, pt.v);
- hexstring(str0,9,lFrom);
- ::DrawString(str0);
- ::DrawString("\p -> ");
- hexstring(str0,9,lTo);
- ::DrawString(str0);
- }
- ::BlockMoveData(p, PrevName, p[0] + 1);
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::CanvasUpdated(Environment* ev, ODCanvas* canvas)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_CanvasUpdated
- EnteringMethod("\pCPProcessMap::CanvasUpdated");
- ODUnused(canvas);
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::HighlightChanged(Environment* ev, ODFacet* facet)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_HighlightChanged
- EnteringMethod("\pCPProcessMap::HighlightChanged");
- ODUnused(facet);
- }
-
- //----------------------------------------------------------------------------------------
-
- ODULong CPProcessMap::GetPrintResolution(Environment* ev, ODFrame* frame)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_GetPrintResolution
- EnteringMethod("\pCPProcessMap::GetPrintResolution");
- ODUnused(frame);
- return 0;
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::FacetAdded(Environment* ev, ODFacet* facet)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_FacetAdded
- EnteringMethod("\pCPProcessMap::FacetAdded");
-
- ODFrame* frame = facet->GetFrame(ev);
- frame->RequestFrameShape(ev, this->PrivGetFrameShape(ev, frame), kODNULL);
- // First, PrivGetFrameShape is called to calculate the frame
- // shape we want. However, we might not get it, due to the
- // needs/constraints of the containing part. Therefore, after
- // calculating what we want, we see if we can get it by calling
- // RequestFrameShape.
- // RequestFrameShape either returns us what we passed it, or
- // returns something else because it thinks it knows best.
- // Either way, we then proceed with the returned result.
- // Note that this means that we have to be prepared to deal
- // with a frame shape other than we desire.
-
- this->PrivAdjustFacets(ev, frame);
- // Given a new negotiated frame shape, adjust our facets based
- // on it. That's all there is to it.
-
- if (frame->IsRoot(ev))
- {
- ODBoolean succeeded = kODFalse;
- succeeded = fSession->GetArbitrator(ev)->RequestFocusSet(ev, fFocusSet,frame);
- if (succeeded)
- {
- this->FocusAcquired(ev, fSelectionFocus, frame);
- this->FocusAcquired(ev, fMenuFocus, frame);
- this->FocusAcquired(ev, fKeyFocus, frame);
- }
- }
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::FacetRemoved(Environment* ev, ODFacet* facet)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_FacetRemoved
- EnteringMethod("\pCPProcessMap::FacetRemoved");
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::CanvasChanged(Environment* ev, ODFacet* facet)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_CanvasChanged
- EnteringMethod("\pCPProcessMap::CanvasChanged");
- ODUnused(facet);
- }
-
- //----------------------------------------------------------------------------------------
-
- void CPProcessMap::GeometryChanged(Environment* ev, ODFacet* facet,
- ODBoolean clipShapeChanged,
- ODBoolean externalTransformChanged)
- {
- // CodeWarrior: Cmd-Click or Search:Find Definition • Explain_GeometryChanged
- EnteringMethod("\pCPProcessMap::GeometryChanged");
- ODUnused(facet);
- ODUnused(clipShapeChanged);
- ODUnused(externalTransformChanged);
- }