home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ctcoll95.zip / RAHMEN / REDPRT.CPP < prev    next >
Text File  |  1995-03-20  |  5KB  |  163 lines

  1. #ifndef SOM_Module_redprt_Source
  2. #define SOM_Module_redprt_Source
  3. #endif
  4. #define RedPart_Class_Source
  5.  
  6. #define VARIABLE_MACROS
  7. #include "redprt.xih"
  8.  
  9. #define INCL_GPI
  10. #define INCL_WIN
  11. #define INCL_BASE
  12. #define INCL_ODFACET
  13. #define INCL_ODFRAME
  14. #define INCL_ODSHAPE
  15. #define INCL_ODTRANSFORM
  16. #define INCL_ODFOCUSSET
  17. #define INCL_ODSESSION
  18. #define INCL_ODSTORAGEUNIT
  19. #define INCL_ODDRAFT
  20. #define INCL_ODCANVAS
  21. #include <os2.h>
  22.  
  23. #define FIXED2LONG(f) (((f) + 0x8000) >> 16)
  24. const ODType kRedPartValueType = "RedPart Data" ;
  25. const ODType kKindRedPart      = "RedPart:redprt" ;
  26.  
  27. SOM_Scope void  SOMLINK redprtCommonInitRedPart(RedPart *somSelf,
  28.                                                  Environment *ev)
  29. {
  30.     RedPartData *somThis = RedPartGetData(somSelf);
  31.     RedPartMethodDebug("RedPart","redprtCommonInitRedPart");
  32.  
  33.     somSelf->CommonInitSimplePart (ev) ;
  34. }
  35.  
  36. SOM_Scope void  SOMLINK redprtInitPart(RedPart *somSelf,  Environment *ev,
  37.                                        ODStorageUnit* storageUnit)
  38. {
  39.     RedPartData *somThis = RedPartGetData(somSelf);
  40.     RedPartMethodDebug("RedPart","redprtInitPart");
  41.  
  42.     if (somSelf->IsInitialized (ev))
  43.       return ;
  44.  
  45.     somSelf->InitPersistentObject (ev, storageUnit) ;
  46.  
  47.     _count = 0 ;
  48.  
  49.     somSelf->CommonInitRedPart (ev) ;
  50.  
  51.     // RedPart_parent_SimplePart_InitPart(somSelf, ev, storageUnit);
  52. }
  53.  
  54. SOM_Scope void  SOMLINK redprtInitPartFromStorage(RedPart *somSelf,
  55.                                                    Environment *ev,
  56.                                                   ODStorageUnit* storageUnit)
  57. {
  58.     RedPartData *somThis = RedPartGetData(somSelf);
  59.     RedPartMethodDebug("RedPart","redprtInitPartFromStorage");
  60.  
  61.     if (somSelf->IsInitialized(ev))
  62.       return ;
  63.  
  64.     somSelf->InitPersistentObjectFromStorage (ev, storageUnit) ;
  65.  
  66.     ODStorageUnit* su = somSelf->GetStorageUnit(ev);
  67.     su->Focus (ev, kODPropContents, kODPosUndefined, kRedPartValueType, 0, kODPosUndefined);
  68.     su->GetValue (ev, sizeof(long), (ODValue) &_count) ;
  69.  
  70.     somSelf->CommonInitRedPart (ev) ;
  71.  
  72.     // RedPart_parent_SimplePart_InitPartFromStorage(somSelf, ev,
  73.     //                                               storageUnit);
  74. }
  75.  
  76. SOM_Scope void  SOMLINK redprtExternalize(RedPart *somSelf,  Environment *ev)
  77. {
  78.     RedPartData *somThis = RedPartGetData(somSelf);
  79.     RedPartMethodDebug("RedPart","redprtExternalize");
  80.  
  81.     ODStorageUnit* su = somSelf->GetStorageUnit(ev);
  82.     su->AddProperty(ev, kODPropPart);
  83.     su->AddValue(ev, kODISOStr);
  84.     su->SetValue(ev, strlen(kKindRedPart) + 1, (ODValue) kKindRedPart);
  85.     su->AddProperty(ev, kODPropContents);
  86.     su->AddValue(ev, (ODValueType) kRedPartValueType);
  87.     su->SetValue(ev, sizeof(long),  (ODValue) &_count);
  88.  
  89.     // RedPart_parent_SimplePart_Externalize(somSelf, ev);
  90. }
  91.  
  92. SOM_Scope ODBoolean  SOMLINK redprtHandleEvent(RedPart *somSelf,
  93.                                                 Environment *ev,
  94.                                                ODEventData* event,
  95.                                                ODFrame* frame,
  96.                                                ODFacet* facet)
  97. {
  98.     RedPartData *somThis = RedPartGetData(somSelf);
  99.     RedPartMethodDebug("RedPart","redprtHandleEvent");
  100.  
  101.     if (event->msg == WM_BUTTON1DOWN)
  102.       {
  103.       _count ++ ;
  104.  
  105.       somSelf->GetStorageUnit(ev)->GetDraft(ev)->SetChangedFromPrev(ev) ;
  106.       frame->Invalidate (ev, kODNULL) ;
  107.       }
  108.     return (RedPart_parent_SimplePart_HandleEvent(somSelf, ev,
  109.                                                   event, frame,
  110.                                                   facet));
  111. }
  112.  
  113. SOM_Scope void  SOMLINK redprtDraw(RedPart *somSelf,  Environment *ev,
  114.                                    ODFacet* facet, ODShape* invalidShape)
  115. {
  116.     RedPartData *somThis = RedPartGetData(somSelf);
  117.     RedPartMethodDebug("RedPart","redprtDraw");
  118.  
  119.     ODBoolean drawing      = facet->GetCanvas(ev)->IsDynamic(ev);
  120.     ODFrame * displayFrame = facet->GetFrame(ev);
  121.  
  122.     HPS hpsDraw = facet->GetCanvas(ev)->GetPlatformCanvas(ev);
  123.     GpiSavePS(hpsDraw);
  124.  
  125.     HRGN frameRgn = displayFrame->GetFrameShape(ev)->GetRegion(ev);
  126.     Rect frameRect;
  127.     GpiQueryRegionBox(hpsDraw, frameRgn, &frameRect);
  128.  
  129.     // set up clipping
  130.     HRGN saveClip;
  131.     ODShape * clipShape = new ODShape;
  132.     clipShape->CopyFrom(ev, facet->GetAggregateClipShape(ev));
  133.     clipShape->Transform(ev, facet->GetContentTransform(ev));
  134.     HRGN clip = clipShape->GetRegion(ev);
  135.     GpiSetClipRegion(hpsDraw, clip, &saveClip);
  136.  
  137.     // paint the background
  138.  
  139.     GpiResetPS(hpsDraw, GRES_ATTRS);
  140.  
  141.     somSelf->SetGrafPortOrigin(ev, facet);
  142.  
  143.     GpiSetColor(hpsDraw, CLR_RED) ;
  144.     POINTL ptl = {frameRect.xRight, frameRect.yTop};
  145.     GpiBox(hpsDraw, DRO_FILL, &ptl, 0, 0);
  146.  
  147.     //GpiSetLineType(hpsDraw, LINETYPE_DASHDOUBLEDOT);
  148.     GpiSetColor(hpsDraw, CLR_BLACK);
  149.     POINTL ptlText = {10, 10};
  150.     char szNumber [100] ;
  151.     ltoa (_count, szNumber, 10) ;
  152.     GpiCharStringAt (hpsDraw, &ptlText, strlen(szNumber), szNumber) ;
  153.  
  154.     GpiRestorePS(hpsDraw, -1);
  155.  
  156.     GpiSetClipRegion(hpsDraw, saveClip, (PHRGN)0);
  157.     facet->GetCanvas(ev)->ReleasePlatformCanvas(ev);
  158.     delete clipShape;
  159.  
  160.     // RedPart_parent_SimplePart_Draw(somSelf, ev, facet, invalidShape);
  161. }
  162.  
  163.