home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / FWSOMPrt.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  43.6 KB  |  1,243 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWSOMPrt.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #define SOM_Module_sompart_Source
  11.  
  12. //========================================================================================
  13. // Configuration checks
  14. //========================================================================================
  15.  
  16. #ifndef FW_SUPPORTS_EMBEDDING
  17. #error You must define FW_SUPPORTS_EMBEDDING to be 0 or 1
  18. #endif
  19.  
  20. #ifndef FW_SUPPORTS_EXTENSIONS
  21. #error You must define FW_SUPPORTS_EXTENSIONS to be 0 or 1
  22. #endif
  23.  
  24. #ifndef FW_SUPPORTS_SCRIPTING
  25. #error You must define FW_SUPPORTS_SCRIPTING to be 0 or 1
  26. #endif
  27.  
  28. #if !FW_SUPPORTS_EXTENSIONS && FW_SUPPORTS_SCRIPTING
  29. #error Scripting support requires Extensions support!
  30. #endif
  31.  
  32. //========================================================================================
  33. // Includes
  34. //========================================================================================
  35.  
  36. #include "SOMPart.xih"
  37.  
  38. #if FW_SUPPORTS_EMBEDDING
  39. #include "SOMIter.xh"
  40.  
  41. #ifndef FWFRMING_H
  42. #include "FWFrming.h"
  43. #endif
  44.  
  45. #endif
  46.  
  47. #ifndef FWODPART_H
  48. #include "FWODPart.h"
  49. #endif
  50.  
  51. #ifndef FWGRINIT_H
  52. #include "FWGrInit.h"
  53. #endif
  54.  
  55. #ifndef SOM_ODShape_xh
  56. #include <Shape.xh>
  57. #endif
  58.  
  59. #ifndef SOM_Module_OpenDoc_Errors_defined
  60. #include <ErrorDef.h>
  61. #endif
  62.  
  63. #ifndef SOM_Module_OpenDoc_StandardExtensions_defined
  64. #include <StdExts.xh>
  65. #endif
  66.  
  67. //========================================================================================
  68. // Extension macro
  69. //========================================================================================
  70.  
  71. #if FW_SUPPORTS_EXTENSIONS
  72.     #ifndef FWEXTMGR_H
  73.     #include "FWExtMgr.h"
  74.     #endif
  75.     #define FW_CREATE_EXTENSION_MANAGER    part->PrivSetExtensionManager(FW_NEW(FW_CExtensionManager, (part)));
  76.     #define FW_HAS_EXTENSION  \
  77.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  78.         if (manager) result = manager->HasExtension(ev, extensionName);
  79.     #define FW_ACQUIRE_EXTENSION \
  80.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  81.         if (manager) extension = manager->AcquireExtension(ev, extensionName, FW_kCreateExtension);
  82.     #define FW_RELEASE_EXTENSION \
  83.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  84.         if (manager) released = manager->ReleaseExtension(ev, extension);
  85.     #define FW_ABANDON_EXTENSIONS \
  86.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  87.         if (manager) manager->AbandonExtensions(ev);
  88.     #define FW_PURGE_EXTENSIONS \
  89.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  90.         if (manager) manager->PurgeCachedExtensions(ev);
  91.     #define FW_DELETE_EXTENSION_MANAGER \
  92.         FW_CExtensionManager *manager = part->GetExtensionManager(ev); \
  93.         delete manager;
  94. #else
  95.     #define FW_CREATE_EXTENSION_MANAGER
  96.     #define FW_HAS_EXTENSION
  97.     #define FW_ACQUIRE_EXTENSION
  98.     #define FW_RELEASE_EXTENSION
  99.     #define FW_ABANDON_EXTENSIONS
  100.     #define FW_PURGE_EXTENSIONS
  101.     #define FW_DELETE_EXTENSION_MANAGER
  102. #endif
  103.  
  104. //========================================================================================
  105. // Semantic Interface macro
  106. //========================================================================================
  107.  
  108. #if FW_SUPPORTS_SCRIPTING
  109.     #ifndef FWSEMINT_H
  110.     #include "FWSemInt.h"
  111.     #endif
  112.     #ifndef FWPRTSCP_H
  113.     #include "FWPrtScp.h"
  114.     #endif
  115.     #ifndef FW_SEMANTIC_INTERFACE_CLASS
  116.         #define FW_SEMANTIC_INTERFACE_CLASS FW_CSemanticInterface
  117.     #endif
  118.     #define FW_CREATE_SEMANTIC_INTERFACE \
  119.         FW_SEMANTIC_INTERFACE_CLASS* semInt = FW_NEW(FW_SEMANTIC_INTERFACE_CLASS,(ev, part)); \
  120.         part->PrivSetSemanticInterface(semInt); \
  121.         part->GetExtensionManager(ev)->RegisterExtension(ev, kODExtSemanticInterface, FW_CSemanticInterface::PrivCreate, NULL, FW_kCacheWhenReleased);
  122.     #define FW_EMBEDDED_FRAME_SPEC \
  123.         FW_MPartScriptable::EmbeddedFrameSpecGlue(ev, somSelf->GetFrameworkPart(ev), embeddedFrame, spec);
  124. #else
  125.     #define FW_CREATE_SEMANTIC_INTERFACE
  126.     #define FW_EMBEDDED_FRAME_SPEC \
  127.         FW_UNUSED(somSelf); \
  128.         FW_UNUSED(embeddedFrame); \
  129.         FW_UNUSED(spec); \
  130.         FW_SetEvError(ev, kODErrCannotEmbed);
  131. #endif
  132.  
  133. //========================================================================================
  134. // FW_SOMPART macro
  135. //========================================================================================
  136.  
  137. #define FW_SOMPART(ModuleName, PartName, PartClass) \
  138.     FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  139.     FW_CONTAINER_PART_API(ModuleName, PartName, PartClass)
  140.     
  141. //========================================================================================
  142. // FW_LEAF_API macro
  143. //========================================================================================
  144.  
  145. #define FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  146. \
  147. /*======================================================================================== \
  148.  PartName \
  149. ========================================================================================*/\
  150.  \
  151. /*---------------------------------------------------------------------------------------- \
  152.     GetFrameworkPart \
  153. ----------------------------------------------------------------------------------------*/ \
  154.  \
  155. SOM_Scope FW_CPart* SOMLINK PartName##GetFrameworkPart(ModuleName##_##PartName *somSelf, Environment*) \
  156. { \
  157.       ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  158.  \
  159.     return somThis->fFrameworkPart; \
  160. } \
  161.  \
  162. /*---------------------------------------------------------------------------------------- \
  163.     NewFrameworkPart \
  164. ----------------------------------------------------------------------------------------*/ \
  165.  \
  166. SOM_Scope FW_CPart*  SOMLINK PartName##NewFrameworkPart(ModuleName##_##PartName*, Environment *ev, \
  167.         ODPart* partWrapper) \
  168. { \
  169. FW_UNUSED(ev); \
  170.     FW_PrivInitGraphics(); \
  171.     PartClass* part = FW_NEW(PartClass, (partWrapper)); \
  172.     FW_CREATE_EXTENSION_MANAGER \
  173.     FW_CREATE_SEMANTIC_INTERFACE \
  174.     return part; \
  175. } \
  176.  \
  177. /*---------------------------------------------------------------------------------------- \
  178.     somInit \
  179. ----------------------------------------------------------------------------------------*/ \
  180.  \
  181. SOM_Scope void  SOMLINK PartName##somInit(ModuleName##_##PartName *) \
  182. { \
  183. /*   ModuleName##_##PartName##_parent_ODPart_somInit(somSelf); */\
  184. } \
  185.  \
  186. /*---------------------------------------------------------------------------------------- \
  187.     somUninit \
  188. ----------------------------------------------------------------------------------------*/ \
  189.  \
  190. SOM_Scope void  SOMLINK PartName##somUninit(ModuleName##_##PartName *somSelf) \
  191. { \
  192.     FW_TRY \
  193.     { \
  194.         FW_SOMEnvironment ev; \
  195.         if (somSelf->GetFrameworkPart(ev)) \
  196.         { \
  197.             FW_CPart *part = somSelf->GetFrameworkPart(ev); \
  198.             FW_DELETE_EXTENSION_MANAGER \
  199.             delete part; \
  200.         } \
  201.         FW_PrivShutdownGraphics(); \
  202.              \
  203. /*   ModuleName##_##PartName##_parent_ODPart_somUninit(somSelf); */\
  204.     } \
  205.     FW_CATCH_BEGIN \
  206.     FW_CATCH_EVERYTHING() \
  207.     { \
  208.     } \
  209.     FW_CATCH_END\
  210. } \
  211.  \
  212. /*---------------------------------------------------------------------------------------- \
  213.     FulfillPromise \
  214. ----------------------------------------------------------------------------------------*/ \
  215.  \
  216. SOM_Scope void  SOMLINK PartName##FulfillPromise(ModuleName##_##PartName *somSelf, Environment *ev, \
  217.         ODStorageUnitView* promiseSUView) \
  218. { \
  219.     FW_CODPart::FulfillPromise(ev, somSelf->GetFrameworkPart(ev), promiseSUView); \
  220. } \
  221.  \
  222. /*---------------------------------------------------------------------------------------- \
  223.     DragEnter \
  224. ----------------------------------------------------------------------------------------*/ \
  225.  \
  226. SOM_Scope ODDragResult  SOMLINK PartName##DragEnter(ModuleName##_##PartName*, Environment *ev, \
  227.         ODDragItemIterator* dragInfo, \
  228.         ODFacet* facet, \
  229.         ODPoint* where) \
  230. { \
  231.     return FW_CODPart::DragEnter(ev, dragInfo, facet, *where); \
  232. } \
  233.  \
  234. /*---------------------------------------------------------------------------------------- \
  235.     DragWithin \
  236. ----------------------------------------------------------------------------------------*/ \
  237.  \
  238. SOM_Scope ODDragResult  SOMLINK PartName##DragWithin(ModuleName##_##PartName*, Environment *ev, \
  239.         ODDragItemIterator* dragInfo, \
  240.         ODFacet* facet, \
  241.         ODPoint* where) \
  242. { \
  243.     return FW_CODPart::DragWithin(ev, dragInfo, facet, *where); \
  244. } \
  245.  \
  246. /*---------------------------------------------------------------------------------------- \
  247.     DragLeave \
  248. ----------------------------------------------------------------------------------------*/ \
  249.  \
  250. SOM_Scope void  SOMLINK PartName##DragLeave(ModuleName##_##PartName*, Environment *ev, \
  251.         ODFacet* facet, \
  252.         ODPoint* where) \
  253. { \
  254.     FW_CODPart::DragLeave(ev, facet, *where); \
  255. } \
  256.  \
  257. /*---------------------------------------------------------------------------------------- \
  258.     Drop \
  259. ----------------------------------------------------------------------------------------*/ \
  260.  \
  261. SOM_Scope ODDropResult  SOMLINK PartName##Drop(ModuleName##_##PartName*, Environment *ev, \
  262.         ODDragItemIterator* dropInfo, \
  263.         ODFacet* facet, \
  264.         ODPoint* where) \
  265. { \
  266.     return FW_CODPart::Drop(ev, dropInfo, facet, *where); \
  267. } \
  268.  \
  269. /*---------------------------------------------------------------------------------------- \
  270.     DropCompleted \
  271. ----------------------------------------------------------------------------------------*/ \
  272.  \
  273. SOM_Scope void  SOMLINK PartName##DropCompleted(ModuleName##_##PartName*, Environment *ev, \
  274.         ODPart* destPart, \
  275.         ODDropResult dropResult) \
  276. { \
  277.     FW_CODPart::DropCompleted(ev, destPart, dropResult); \
  278. } \
  279.  \
  280. /*---------------------------------------------------------------------------------------- \
  281.     ContainingPartPropertiesUpdated \
  282. ----------------------------------------------------------------------------------------*/ \
  283.  \
  284. SOM_Scope void  SOMLINK PartName##ContainingPartPropertiesUpdated(ModuleName##_##PartName*, Environment *ev, \
  285.         ODFrame* frame, \
  286.         ODStorageUnit* propertyUnit) \
  287. { \
  288.     FW_CODPart::ContainingPartPropertiesUpdated(ev, frame, propertyUnit); \
  289. } \
  290.  \
  291. /*---------------------------------------------------------------------------------------- \
  292.     EmbeddedFrameSpec \
  293. ----------------------------------------------------------------------------------------*/ \
  294.  \
  295. SOM_Scope void  SOMLINK PartName##EmbeddedFrameSpec(ModuleName##_##PartName *somSelf, Environment *ev, \
  296.         ODFrame* embeddedFrame, \
  297.         ODObjectSpec* spec) \
  298. { \
  299.     FW_EMBEDDED_FRAME_SPEC \
  300. } \
  301.  \
  302. /*---------------------------------------------------------------------------------------- \
  303.     DisplayFrameAdded \
  304. ----------------------------------------------------------------------------------------*/ \
  305.  \
  306. SOM_Scope void  SOMLINK PartName##DisplayFrameAdded(ModuleName##_##PartName *somSelf, Environment *ev, \
  307.         ODFrame* odFrame) \
  308. { \
  309.     FW_CODPart::DisplayFrameAdded(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  310. } \
  311.  \
  312. /*---------------------------------------------------------------------------------------- \
  313.     AttachSourceFrame \
  314. ----------------------------------------------------------------------------------------*/ \
  315.  \
  316. SOM_Scope void  SOMLINK PartName##AttachSourceFrame(ModuleName##_##PartName*, Environment *ev, \
  317.         ODFrame* odFrame, \
  318.         ODFrame* odSourceFrame) \
  319. { \
  320.     FW_CODPart::AttachSourceFrame(ev, odFrame, odSourceFrame); \
  321. } \
  322.  \
  323. /*---------------------------------------------------------------------------------------- \
  324.     DisplayFrameRemoved \
  325. ----------------------------------------------------------------------------------------*/ \
  326.  \
  327. SOM_Scope void  SOMLINK PartName##DisplayFrameRemoved(ModuleName##_##PartName *somSelf, Environment *ev, \
  328.         ODFrame* odFrame) \
  329. { \
  330.     FW_CODPart::DisplayFrameRemoved(ev, somSelf->GetFrameworkPart(ev), odFrame, FALSE); \
  331. } \
  332.  \
  333. /*---------------------------------------------------------------------------------------- \
  334.     DisplayFrameConnected \
  335. ----------------------------------------------------------------------------------------*/ \
  336.  \
  337. SOM_Scope void  SOMLINK PartName##DisplayFrameConnected(ModuleName##_##PartName*, Environment *ev, \
  338.         ODFrame* odFrame) \
  339. { \
  340.     FW_CODPart::DisplayFrameConnected(ev, odFrame); \
  341. } \
  342.  \
  343. /*---------------------------------------------------------------------------------------- \
  344.     DisplayFrameClosed \
  345. ----------------------------------------------------------------------------------------*/ \
  346.  \
  347. SOM_Scope void  SOMLINK PartName##DisplayFrameClosed(ModuleName##_##PartName *somSelf, Environment *ev, \
  348.         ODFrame* odFrame) \
  349. { \
  350.     FW_CODPart::DisplayFrameRemoved(ev, somSelf->GetFrameworkPart(ev), odFrame, TRUE); \
  351. } \
  352.  \
  353. /*---------------------------------------------------------------------------------------- \
  354.     FrameShapeChanged \
  355. ----------------------------------------------------------------------------------------*/ \
  356.  \
  357. SOM_Scope void  SOMLINK PartName##FrameShapeChanged(ModuleName##_##PartName*, Environment *ev, \
  358.         ODFrame* frame) \
  359. { \
  360.     FW_CODPart::FrameShapeChanged(ev, frame); \
  361. } \
  362.  \
  363. /*---------------------------------------------------------------------------------------- \
  364.     ViewTypeChanged \
  365. ----------------------------------------------------------------------------------------*/ \
  366.  \
  367. SOM_Scope void  SOMLINK PartName##ViewTypeChanged(ModuleName##_##PartName*, Environment *ev, \
  368.         ODFrame* frame) \
  369. { \
  370.     FW_CODPart::ViewTypeChanged(ev, frame); \
  371. } \
  372.  \
  373. /*---------------------------------------------------------------------------------------- \
  374.     PresentationChanged \
  375. ----------------------------------------------------------------------------------------*/ \
  376.  \
  377. SOM_Scope void  SOMLINK PartName##PresentationChanged(ModuleName##_##PartName*, Environment *ev, \
  378.         ODFrame* frame) \
  379. { \
  380.     FW_CODPart::PresentationChanged(ev, frame); \
  381. } \
  382.  \
  383. /*---------------------------------------------------------------------------------------- \
  384.     SequenceChanged \
  385. ----------------------------------------------------------------------------------------*/ \
  386.  \
  387. SOM_Scope void  SOMLINK PartName##SequenceChanged(ModuleName##_##PartName*, Environment *ev, \
  388.         ODFrame* frame) \
  389. { \
  390.     FW_CODPart::SequenceChanged(ev, frame); \
  391. } \
  392.  \
  393. /*---------------------------------------------------------------------------------------- \
  394.     WritePartInfo \
  395. ----------------------------------------------------------------------------------------*/ \
  396.  \
  397. SOM_Scope void  SOMLINK PartName##WritePartInfo(ModuleName##_##PartName*, Environment *ev, \
  398.         ODInfoType partInfo, \
  399.         ODStorageUnitView* storageUnitView) \
  400. { \
  401.     FW_CODPart::WritePartInfo(ev, partInfo, storageUnitView); \
  402. } \
  403.  \
  404. /*---------------------------------------------------------------------------------------- \
  405.     ReadPartInfo \
  406. ----------------------------------------------------------------------------------------*/ \
  407.  \
  408. SOM_Scope ODInfoType  SOMLINK PartName##ReadPartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  409.         ODFrame* odFrame, \
  410.         ODStorageUnitView* storageUnitView) \
  411. { \
  412.     return FW_CODPart::ReadPartInfo(ev, somSelf->GetFrameworkPart(ev), odFrame, storageUnitView); \
  413. } \
  414.  \
  415. /*---------------------------------------------------------------------------------------- \
  416.     ClonePartInfo \
  417. ----------------------------------------------------------------------------------------*/ \
  418.  \
  419. SOM_Scope void  SOMLINK PartName##ClonePartInfo(ModuleName##_##PartName*, Environment *ev, \
  420.         ODDraftKey key, \
  421.         ODInfoType partInfo, \
  422.         ODStorageUnitView* storageUnitView, \
  423.         ODFrame* scope) \
  424. { \
  425.     FW_CODPart::ClonePartInfo(ev, \
  426.                                 key, \
  427.                                 partInfo, \
  428.                                 storageUnitView, \
  429.                                 scope); \
  430. } \
  431.  \
  432. /*---------------------------------------------------------------------------------------- \
  433.     Open \
  434. ----------------------------------------------------------------------------------------*/ \
  435.  \
  436. SOM_Scope ODID  SOMLINK PartName##Open(ModuleName##_##PartName *somSelf, Environment *ev, \
  437.         ODFrame* odFrame) \
  438. { \
  439.     return FW_CODPart::Open(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  440. } \
  441.  \
  442. /*---------------------------------------------------------------------------------------- \
  443.     FacetAdded \
  444. ----------------------------------------------------------------------------------------*/ \
  445.  \
  446. SOM_Scope void  SOMLINK PartName##FacetAdded(ModuleName##_##PartName*, Environment *ev, \
  447.         ODFacet* facet) \
  448. { \
  449.     FW_CODPart::FacetAdded(ev, facet); \
  450. } \
  451.  \
  452. /*---------------------------------------------------------------------------------------- \
  453.     FacetRemoved \
  454. ----------------------------------------------------------------------------------------*/ \
  455.  \
  456. SOM_Scope void  SOMLINK PartName##FacetRemoved(ModuleName##_##PartName*, Environment *ev, \
  457.         ODFacet* facet) \
  458. { \
  459.     FW_CODPart::FacetRemoved(ev, facet); \
  460. } \
  461.  \
  462. /*---------------------------------------------------------------------------------------- \
  463.     CanvasChanged \
  464. ----------------------------------------------------------------------------------------*/ \
  465.  \
  466. SOM_Scope void  SOMLINK PartName##CanvasChanged(ModuleName##_##PartName*, Environment *ev, \
  467.         ODFacet* facet) \
  468. { \
  469.     FW_CODPart::CanvasChanged(ev, facet); \
  470. } \
  471.  \
  472. /*---------------------------------------------------------------------------------------- \
  473.     GeometryChanged \
  474. ----------------------------------------------------------------------------------------*/ \
  475.  \
  476. SOM_Scope void  SOMLINK PartName##GeometryChanged(ModuleName##_##PartName*, Environment *ev, \
  477.         ODFacet* facet, \
  478.         ODBoolean clipShapeChanged, \
  479.         ODBoolean externalTransformChanged) \
  480. { \
  481.     FW_CODPart::GeometryChanged(ev, facet, clipShapeChanged, externalTransformChanged); \
  482. } \
  483.  \
  484. /*---------------------------------------------------------------------------------------- \
  485.     Draw \
  486. ----------------------------------------------------------------------------------------*/ \
  487.  \
  488. SOM_Scope void  SOMLINK PartName##Draw(ModuleName##_##PartName*, Environment *ev, \
  489.         ODFacet* facet, \
  490.         ODShape* invalidShape) \
  491. { \
  492.     FW_CODPart::Draw(ev, facet, invalidShape); \
  493. } \
  494.  \
  495. /*---------------------------------------------------------------------------------------- \
  496.     CanvasUpdated \
  497. ----------------------------------------------------------------------------------------*/ \
  498.  \
  499. SOM_Scope void  SOMLINK PartName##CanvasUpdated(ModuleName##_##PartName*, Environment *ev, \
  500.         ODCanvas* canvas) \
  501. { \
  502.     FW_CODPart::CanvasUpdated(ev,canvas); \
  503. } \
  504.  \
  505. /*---------------------------------------------------------------------------------------- \
  506.     HighlightChanged \
  507. ----------------------------------------------------------------------------------------*/ \
  508.  \
  509. SOM_Scope void  SOMLINK PartName##HighlightChanged(ModuleName##_##PartName*, Environment *ev, \
  510.         ODFacet* facet) \
  511. { \
  512.     FW_CODPart::HighlightChanged(ev,facet); \
  513. } \
  514.  \
  515. /*---------------------------------------------------------------------------------------- \
  516.     GetPrintResolution \
  517. ----------------------------------------------------------------------------------------*/ \
  518.  \
  519. SOM_Scope ODULong  SOMLINK PartName##GetPrintResolution(ModuleName##_##PartName*, Environment *ev, \
  520.         ODFrame* frame) \
  521. { \
  522.     return FW_CODPart::GetPrintResolution(ev,frame); \
  523. } \
  524.  \
  525. /*---------------------------------------------------------------------------------------- \
  526.     CreateLink \
  527. ----------------------------------------------------------------------------------------*/ \
  528.  \
  529. SOM_Scope ODLinkSource*  SOMLINK PartName##CreateLink(ModuleName##_##PartName* somSelf, Environment *ev, \
  530.         ODByteArray* data) \
  531. { \
  532.     return FW_CODPart::CreateLink(ev, somSelf->GetFrameworkPart(ev), data); \
  533. } \
  534.  \
  535. /*---------------------------------------------------------------------------------------- \
  536.     LinkUpdated \
  537. ----------------------------------------------------------------------------------------*/ \
  538.  \
  539. SOM_Scope void  SOMLINK PartName##LinkUpdated(ModuleName##_##PartName* somSelf, Environment *ev, \
  540.         ODLink* updatedLink, \
  541.         ODUpdateID updateID) \
  542. { \
  543.     FW_CODPart::LinkUpdated(ev, somSelf->GetFrameworkPart(ev), updatedLink, updateID); \
  544. } \
  545.  \
  546. /*---------------------------------------------------------------------------------------- \
  547.     RevealLink
  548. ----------------------------------------------------------------------------------------*/ \
  549.  \
  550. SOM_Scope void  SOMLINK PartName##RevealLink(ModuleName##_##PartName *somSelf, Environment *ev, \
  551.         ODLinkSource* linkSource) \
  552. { \
  553.     FW_CODPart::RevealLink(ev, somSelf->GetFrameworkPart(ev), linkSource); \
  554. } \
  555.  \
  556. /*---------------------------------------------------------------------------------------- \
  557.     EditInLinkAttempted \
  558. ----------------------------------------------------------------------------------------*/ \
  559.  \
  560. SOM_Scope ODBoolean  SOMLINK PartName##EditInLinkAttempted(ModuleName##_##PartName *somSelf, Environment *ev, \
  561.         ODFrame* frame) \
  562. { \
  563.     return FW_CODPart::EditInLinkAttempted(ev, somSelf->GetFrameworkPart(ev), frame); \
  564. } \
  565.  \
  566. /*---------------------------------------------------------------------------------------- \
  567.     LinkStatusChanged \
  568. ----------------------------------------------------------------------------------------*/ \
  569.  \
  570. SOM_Scope void  SOMLINK PartName##LinkStatusChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  571.         ODFrame* frame) \
  572. { \
  573.     FW_CODPart::LinkStatusChanged(ev, somSelf->GetFrameworkPart(ev), frame); \
  574. } \
  575.  \
  576. /*---------------------------------------------------------------------------------------- \
  577.     BeginRelinquishFocus \
  578. ----------------------------------------------------------------------------------------*/ \
  579.  \
  580. SOM_Scope ODBoolean  SOMLINK PartName##BeginRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  581.         ODTypeToken focus, \
  582.         ODFrame* ownerFrame, \
  583.         ODFrame* proposedFrame) \
  584. { \
  585.     return FW_CODPart::BeginRelinquishFocus(ev, \
  586.                                             somSelf->GetFrameworkPart(ev),  \
  587.                                             focus, \
  588.                                             ownerFrame, \
  589.                                             proposedFrame); \
  590. } \
  591.  \
  592. /*---------------------------------------------------------------------------------------- \
  593.     CommitRelinquishFocus \
  594. ----------------------------------------------------------------------------------------*/ \
  595.  \
  596. SOM_Scope void  SOMLINK PartName##CommitRelinquishFocus(ModuleName##_##PartName*, Environment *ev, \
  597.         ODTypeToken focus, \
  598.         ODFrame* ownerFrame, \
  599.         ODFrame* proposedFrame) \
  600. { \
  601.     FW_CODPart::CommitRelinquishFocus(ev,  \
  602.                                         focus, \
  603.                                         ownerFrame, \
  604.                                         proposedFrame); \
  605. } \
  606.  \
  607. /*---------------------------------------------------------------------------------------- \
  608.     AbortRelinquishFocus \
  609. ----------------------------------------------------------------------------------------*/ \
  610. \
  611. SOM_Scope void  SOMLINK PartName##AbortRelinquishFocus(ModuleName##_##PartName*, Environment *ev, \
  612.         ODTypeToken focus, \
  613.         ODFrame* ownerFrame, \
  614.         ODFrame* proposedFrame) \
  615. { \
  616.     FW_CODPart::AbortRelinquishFocus(ev, focus, ownerFrame, proposedFrame); \
  617. } \
  618.  \
  619. /*---------------------------------------------------------------------------------------- \
  620.     FocusAcquired \
  621. ----------------------------------------------------------------------------------------*/ \
  622.  \
  623. SOM_Scope void  SOMLINK PartName##FocusAcquired(ModuleName##_##PartName*, Environment *ev, \
  624.         ODTypeToken focus, \
  625.         ODFrame* ownerFrame) \
  626. { \
  627.     FW_CODPart::FocusAcquired(ev, focus, ownerFrame); \
  628. } \
  629.  \
  630. /*---------------------------------------------------------------------------------------- \
  631.     FocusLost \
  632. ----------------------------------------------------------------------------------------*/ \
  633.  \
  634. SOM_Scope void  SOMLINK PartName##FocusLost(ModuleName##_##PartName*, Environment *ev, \
  635.         ODTypeToken focus, \
  636.         ODFrame* ownerFrame) \
  637. { \
  638.     FW_CODPart::FocusLost(ev, focus, ownerFrame); \
  639. } \
  640.  \
  641. /*---------------------------------------------------------------------------------------- \
  642.     CloneInto \
  643. ----------------------------------------------------------------------------------------*/ \
  644.  \
  645. SOM_Scope void  SOMLINK PartName##CloneInto(ModuleName##_##PartName *somSelf, Environment *ev, \
  646.         ODDraftKey key, \
  647.         ODStorageUnit* toSU, \
  648.         ODFrame* scope) \
  649. { \
  650.     FW_TRY \
  651.     { \
  652.         ModuleName##_##PartName##_parent_ODPart_CloneInto(somSelf,ev, key, toSU, scope);     \
  653.         FW_CODPart::CloneInto(ev, somSelf->GetFrameworkPart(ev), key, toSU, scope); \
  654.     } \
  655.     FW_CATCH_BEGIN \
  656.     FW_CATCH_REFERENCE(FW_XException, exception) \
  657.     { \
  658.         FW_SetException(ev, exception); \
  659.     } \
  660.     FW_CATCH_END\
  661. } \
  662.  \
  663. /*---------------------------------------------------------------------------------------- \
  664.     ExternalizeKinds \
  665. ----------------------------------------------------------------------------------------*/ \
  666.  \
  667. SOM_Scope void  SOMLINK PartName##ExternalizeKinds(ModuleName##_##PartName *somSelf, Environment *ev, \
  668.         ODTypeList* kindset) \
  669. { \
  670.     FW_CODPart::ExternalizeKinds(ev, somSelf->GetFrameworkPart(ev), kindset); \
  671. } \
  672.  \
  673. /*---------------------------------------------------------------------------------------- \
  674.     ChangeKind \
  675. ----------------------------------------------------------------------------------------*/ \
  676.  \
  677. SOM_Scope void  SOMLINK PartName##ChangeKind(ModuleName##_##PartName *somSelf, Environment *ev, \
  678.         ODType kind) \
  679. { \
  680.     FW_CODPart::ChangeKind(ev, somSelf->GetFrameworkPart(ev), kind); \
  681. } \
  682.  \
  683. /*---------------------------------------------------------------------------------------- \
  684.     HandleEvent \
  685. ----------------------------------------------------------------------------------------*/ \
  686.  \
  687. SOM_Scope ODBoolean  SOMLINK PartName##HandleEvent(ModuleName##_##PartName *somSelf, Environment *ev, \
  688.         ODEventData* event, \
  689.         ODFrame* frame, \
  690.         ODFacet* facet, \
  691.         ODEventInfo* eventInfo) \
  692. { \
  693.     return FW_CODPart::HandleEvent(ev, somSelf->GetFrameworkPart(ev), event, frame, facet, eventInfo); \
  694. } \
  695.  \
  696. /*---------------------------------------------------------------------------------------- \
  697.     AdjustMenus \
  698. ----------------------------------------------------------------------------------------*/ \
  699.  \
  700. SOM_Scope void  SOMLINK PartName##AdjustMenus(ModuleName##_##PartName *somSelf, Environment *ev, \
  701.         ODFrame* odFrame) \
  702. { \
  703.     FW_CODPart::AdjustMenus(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  704. } \
  705.  \
  706. /*---------------------------------------------------------------------------------------- \
  707.     UndoAction \
  708. ----------------------------------------------------------------------------------------*/ \
  709.  \
  710. SOM_Scope void  SOMLINK PartName##UndoAction(ModuleName##_##PartName *somSelf, Environment *ev, \
  711.         ODActionData* actionState) \
  712. { \
  713.     FW_CODPart::UndoAction(ev, somSelf->GetFrameworkPart(ev), actionState); \
  714. } \
  715.  \
  716. /*---------------------------------------------------------------------------------------- \
  717.     RedoAction \
  718. ----------------------------------------------------------------------------------------*/ \
  719.  \
  720. SOM_Scope void  SOMLINK PartName##RedoAction(ModuleName##_##PartName*, Environment *ev, \
  721.         ODActionData* actionState) \
  722. { \
  723.     FW_CODPart::RedoAction(ev, actionState); \
  724. } \
  725.  \
  726. /*---------------------------------------------------------------------------------------- \
  727.     DisposeActionState \
  728. ----------------------------------------------------------------------------------------*/ \
  729.  \
  730. SOM_Scope void  SOMLINK PartName##DisposeActionState(ModuleName##_##PartName*, Environment *ev, \
  731.         ODActionData* actionState, \
  732.         ODDoneState doneState) \
  733. { \
  734.     FW_CODPart::DisposeActionState(ev, actionState, doneState); \
  735. } \
  736.  \
  737. /*---------------------------------------------------------------------------------------- \
  738.     WriteActionState \
  739. ----------------------------------------------------------------------------------------*/ \
  740.  \
  741. SOM_Scope void  SOMLINK PartName##WriteActionState(ModuleName##_##PartName*, Environment *ev, \
  742.         ODActionData* actionState, \
  743.         ODStorageUnitView* storageUnitView) \
  744. { \
  745.     FW_CODPart::WriteActionState(ev, actionState, storageUnitView); \
  746. } \
  747.  \
  748. /*---------------------------------------------------------------------------------------- \
  749.     ReadActionState \
  750. ----------------------------------------------------------------------------------------*/ \
  751.  \
  752. SOM_Scope ODActionData  SOMLINK PartName##ReadActionState(ModuleName##_##PartName*, Environment *ev, \
  753.         ODStorageUnitView* storageUnitView) \
  754. { \
  755.     ODActionData actionData; \
  756.     actionData._maximum = 0; \
  757.     actionData._length = 0; \
  758.     actionData._buffer = NULL; \
  759.      \
  760.     FW_CODPart::ReadActionState(ev, storageUnitView, &actionData); \
  761.      \
  762.     return actionData; \
  763. } \
  764.  \
  765. /*---------------------------------------------------------------------------------------- \
  766.     InitPart \
  767. ----------------------------------------------------------------------------------------*/ \
  768.  \
  769. SOM_Scope void  SOMLINK PartName##InitPart(ModuleName##_##PartName *somSelf, Environment *ev, \
  770.         ODStorageUnit* storageUnit, \
  771.         ODPart* partWrapper) \
  772. { \
  773.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  774.  \
  775.      FW_TRY \
  776.      { \
  777.         ModuleName##_##PartName##_parent_ODPart_InitPart(somSelf, ev, storageUnit, partWrapper); \
  778.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);         \
  779.          \
  780.         FW_CODPart::InitPart(ev, somThis->fFrameworkPart, storageUnit); \
  781.     } \
  782.     FW_CATCH_BEGIN \
  783.     FW_CATCH_REFERENCE(FW_XException, exception) \
  784.     { \
  785.         FW_SetException(ev, exception); \
  786.     } \
  787.     FW_CATCH_END \
  788. } \
  789.  \
  790. /*---------------------------------------------------------------------------------------- \
  791.     InitPartFromStorage \
  792. ----------------------------------------------------------------------------------------*/ \
  793.  \
  794. SOM_Scope void  SOMLINK PartName##InitPartFromStorage(ModuleName##_##PartName *somSelf, Environment *ev, \
  795.         ODStorageUnit* storageUnit, \
  796.         ODPart* partWrapper) \
  797. { \
  798.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  799.  \
  800.      FW_TRY \
  801.      { \
  802.         ModuleName##_##PartName##_parent_ODPart_InitPartFromStorage(somSelf, ev, storageUnit, partWrapper); \
  803.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);     \
  804.      \
  805.         FW_CODPart::InitPartFromStorage(ev, somThis->fFrameworkPart, storageUnit); \
  806.     } \
  807.     FW_CATCH_BEGIN \
  808.     FW_CATCH_REFERENCE(FW_XException, exception) \
  809.     { \
  810.         FW_SetException(ev, exception); \
  811.     } \
  812.     FW_CATCH_END \
  813. } \
  814.  \
  815. /*---------------------------------------------------------------------------------------- \
  816.     Externalize \
  817. ----------------------------------------------------------------------------------------*/ \
  818.  \
  819. SOM_Scope void  SOMLINK PartName##Externalize(ModuleName##_##PartName *somSelf, Environment *ev) \
  820. { \
  821.     FW_TRY \
  822.     { \
  823.         ModuleName##_##PartName##_parent_ODPart_Externalize(somSelf,ev); \
  824.          \
  825.         FW_CODPart::Externalize(ev, somSelf->GetFrameworkPart(ev)); \
  826.     } \
  827.     FW_CATCH_BEGIN \
  828.     FW_CATCH_REFERENCE(FW_XException, exception) \
  829.     { \
  830.         FW_SetException(ev, exception); \
  831.     } \
  832.     FW_CATCH_END \
  833. } \
  834.  \
  835. /*---------------------------------------------------------------------------------------- \
  836.     Release \
  837. ----------------------------------------------------------------------------------------*/ \
  838.  \
  839. SOM_Scope void  SOMLINK PartName##Release(ModuleName##_##PartName *somSelf, Environment *ev) \
  840. { \
  841.     FW_TRY \
  842.     { \
  843.         ModuleName##_##PartName##_parent_ODPart_Release(somSelf,ev); \
  844.         FW_CODPart::Release(ev, somSelf->GetFrameworkPart(ev)); \
  845.     } \
  846.     FW_CATCH_BEGIN \
  847.     FW_CATCH_REFERENCE(FW_XException, exception) \
  848.     { \
  849.         FW_SetException(ev, exception); \
  850.     } \
  851.     FW_CATCH_END \
  852. } \
  853.  \
  854. /*---------------------------------------------------------------------------------------- \
  855.     ReleaseAll \
  856. ----------------------------------------------------------------------------------------*/ \
  857.  \
  858. SOM_Scope void  SOMLINK PartName##ReleaseAll(ModuleName##_##PartName *somSelf, Environment *ev) \
  859. { \
  860.     FW_TRY \
  861.     { \
  862.         ModuleName##_##PartName##_parent_ODPart_ReleaseAll(somSelf,ev); \
  863.         FW_CODPart::ReleaseAll(ev, somSelf->GetFrameworkPart(ev)); \
  864.         FW_ABANDON_EXTENSIONS \
  865.     } \
  866.     FW_CATCH_BEGIN \
  867.     FW_CATCH_REFERENCE(FW_XException, exception) \
  868.     { \
  869.         FW_SetException(ev, exception); \
  870.     } \
  871.     FW_CATCH_END \
  872. } \
  873.  \
  874. /*---------------------------------------------------------------------------------------- \
  875.     HasExtension \
  876. ----------------------------------------------------------------------------------------*/ \
  877.  \
  878. SOM_Scope ODBoolean  SOMLINK PartName##HasExtension(ModuleName##_##PartName *somSelf, \
  879.                                                     Environment *ev, \
  880.                                                     ODType extensionName) \
  881. { \
  882.     ODBoolean result = FALSE; \
  883.     \
  884.     FW_TRY \
  885.     { \
  886.         FW_HAS_EXTENSION \
  887.         if (!result)  \
  888.             result = ModuleName##_##PartName##_parent_ODPart_HasExtension(somSelf, ev, extensionName);  \
  889.     } \
  890.     FW_CATCH_BEGIN \
  891.     FW_CATCH_REFERENCE(FW_XException, exception) \
  892.     { \
  893.         FW_SetException(ev, exception); \
  894.     } \
  895.     FW_CATCH_END \
  896.     \
  897.     return result; \
  898. } \
  899.  \
  900. /*---------------------------------------------------------------------------------------- \
  901.     AcquireExtension \
  902. ----------------------------------------------------------------------------------------*/ \
  903.  \
  904. SOM_Scope ODExtension*  SOMLINK PartName##AcquireExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  905.         ODType extensionName) \
  906. { \
  907.     ODExtension* extension = NULL; \
  908.     \
  909.     FW_TRY \
  910.     { \
  911.         FW_ACQUIRE_EXTENSION \
  912.         if (!extension) \
  913.             extension = ModuleName##_##PartName##_parent_ODPart_AcquireExtension(somSelf, ev, extensionName); \
  914.     } \
  915.     FW_CATCH_BEGIN \
  916.     FW_CATCH_REFERENCE(FW_XException, exception) \
  917.     { \
  918.         FW_SetException(ev, exception); \
  919.     } \
  920.     FW_CATCH_END \
  921.     \
  922.     return extension; \
  923. } \
  924.  \
  925. /*---------------------------------------------------------------------------------------- \
  926.     ReleaseExtension \
  927. ----------------------------------------------------------------------------------------*/ \
  928.  \
  929. SOM_Scope void  SOMLINK PartName##ReleaseExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  930.         ODExtension* extension) \
  931. { \
  932.     ODBoolean released = false; \
  933.     \
  934.     FW_TRY \
  935.     { \
  936.         FW_RELEASE_EXTENSION \
  937.         if (!released) \
  938.             ModuleName##_##PartName##_parent_ODPart_ReleaseExtension(somSelf, ev, extension); \
  939.     } \
  940.     FW_CATCH_BEGIN \
  941.     FW_CATCH_REFERENCE(FW_XException, exception) \
  942.     { \
  943.         FW_SetException(ev, exception); \
  944.     } \
  945.     FW_CATCH_END \
  946. } \
  947.  \
  948. /*---------------------------------------------------------------------------------------- \
  949.     Purge \
  950. ----------------------------------------------------------------------------------------*/ \
  951.  \
  952. SOM_Scope ODSize  SOMLINK PartName##Purge(ModuleName##_##PartName *somSelf, Environment *ev, \
  953.         ODSize size) \
  954. { \
  955.     ODSize bytesRecovered; \
  956.     \
  957.     FW_TRY \
  958.     { \
  959.         FW_PURGE_EXTENSIONS \
  960.         bytesRecovered = FW_CODPart::Purge(ev, somSelf->GetFrameworkPart(ev), size); \
  961.     } \
  962.     FW_CATCH_BEGIN \
  963.     FW_CATCH_REFERENCE(FW_XException, exception) \
  964.     { \
  965.         FW_SetException(ev, exception); \
  966.     } \
  967.     FW_CATCH_END \
  968.     \
  969.     return bytesRecovered; \
  970. } \
  971. \
  972.  
  973. //========================================================================================
  974. // FW_CONTAINER_PART_API macro
  975. //========================================================================================
  976.  
  977.  
  978. #if FW_SUPPORTS_EMBEDDING
  979.  
  980. // ======== Non-EmbeddingPart =========
  981.  
  982. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  983. /*---------------------------------------------------------------------------------------- \
  984.     AdjustBorderShape \
  985. ----------------------------------------------------------------------------------------*/ \
  986.  \
  987. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName*, Environment * ev, \
  988.         ODFacet* embeddedFacet, \
  989.         ODShape* shape) \
  990. { \
  991.     return FW_CODPart::AdjustBorderShape(ev, embeddedFacet, shape); \
  992. } \
  993.  \
  994. /*---------------------------------------------------------------------------------------- \
  995.     EmbeddedFrameUpdated \
  996. ----------------------------------------------------------------------------------------*/ \
  997.  \
  998. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  999.         ODFrame* frame, \
  1000.         ODUpdateID updateID) \
  1001. { \
  1002.     FW_CODPart::EmbeddedFrameUpdated(ev, somSelf->GetFrameworkPart(ev), frame, updateID); \
  1003. } \
  1004.  \
  1005. /*---------------------------------------------------------------------------------------- \
  1006.     UsedShapeChanged \
  1007. ----------------------------------------------------------------------------------------*/ \
  1008.  \
  1009. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName*, Environment *ev, \
  1010.         ODFrame* embeddedFrame) \
  1011. { \
  1012.     FW_CODPart::UsedShapeChanged(ev, embeddedFrame); \
  1013. } \
  1014.  \
  1015. /*---------------------------------------------------------------------------------------- \
  1016.     RevealFrame \
  1017. ----------------------------------------------------------------------------------------*/ \
  1018.  \
  1019. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName* somSelf, Environment *ev, \
  1020.         ODFrame* embeddedFrame, \
  1021.         ODShape* revealShape) \
  1022. { \
  1023.     return FW_CODPart::RevealFrame(ev, \
  1024.                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1025.                                     embeddedFrame, \
  1026.                                     revealShape); \
  1027. } \
  1028.  \
  1029. /*---------------------------------------------------------------------------------------- \
  1030.     CreateEmbeddedFramesIterator \
  1031. ----------------------------------------------------------------------------------------*/ \
  1032.  \
  1033. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName *somSelf, Environment *ev, \
  1034.         ODFrame* frame) \
  1035. { \
  1036.     FW_CEmbeddingFrame* fwFrame = NULL;\
  1037.     ModuleName##_##PartName##EmbeddedFramesIterator* iter = NULL; \
  1038.     FW_VOLATILE(iter); \
  1039. \
  1040.     FW_TRY \
  1041.     { \
  1042.         if (frame != NULL) \
  1043.             fwFrame = FW_CEmbeddingFrame::ODtoFWEmbeddingFrame(ev, frame); \
  1044.         \
  1045.         if (frame != NULL && fwFrame == NULL) \
  1046.         { \
  1047.             FW_SetEvError(ev, kODErrInvalidFrame); \
  1048.         } \
  1049.         else \
  1050.         { \
  1051.             iter = new ModuleName##_##PartName##EmbeddedFramesIterator;\
  1052.             iter->InitIterator(ev, (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), fwFrame);\
  1053.         } \
  1054.     } \
  1055.     FW_CATCH_BEGIN \
  1056.     FW_CATCH_REFERENCE(FW_XException, exception) \
  1057.     { \
  1058.         delete iter; \
  1059.         iter = NULL; \
  1060.         FW_SetException(ev, exception); \
  1061.     } \
  1062.     FW_CATCH_END \
  1063.     \
  1064.     return iter; \
  1065. } \
  1066.  \
  1067. /*---------------------------------------------------------------------------------------- \
  1068.     RequestEmbeddedFrame \
  1069. ----------------------------------------------------------------------------------------*/ \
  1070.  \
  1071. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1072.         ODFrame* containingFrame, \
  1073.         ODFrame* baseFrame, \
  1074.         ODShape* frameShape, \
  1075.         ODPart* embeddedPart, \
  1076.         ODTypeToken viewType, \
  1077.         ODTypeToken presentation, \
  1078.         ODBoolean isOverlaid) \
  1079. { \
  1080.     return FW_CODPart::RequestEmbeddedFrame(ev,  \
  1081.                                             (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1082.                                             containingFrame, \
  1083.                                             baseFrame, \
  1084.                                             frameShape, \
  1085.                                             embeddedPart, \
  1086.                                             viewType, \
  1087.                                             presentation, \
  1088.                                             isOverlaid); \
  1089. } \
  1090.  \
  1091. /*---------------------------------------------------------------------------------------- \
  1092.     RemoveEmbeddedFrame \
  1093. ----------------------------------------------------------------------------------------*/ \
  1094.  \
  1095. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1096.         ODFrame* embeddedFrame) \
  1097. { \
  1098.     FW_CODPart::RemoveEmbeddedFrame(ev, \
  1099.                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1100.                                     embeddedFrame); \
  1101. } \
  1102.  \
  1103. /*---------------------------------------------------------------------------------------- \
  1104.     RequestFrameShape \
  1105. ----------------------------------------------------------------------------------------*/ \
  1106.  \
  1107. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName*, Environment *ev, \
  1108.         ODFrame* embeddedFrame, \
  1109.         ODShape* frameShape) \
  1110. { \
  1111.     return FW_CODPart::RequestFrameShape(ev, embeddedFrame, frameShape); \
  1112. } \
  1113.  \
  1114. /*---------------------------------------------------------------------------------------- \
  1115.     AcquireContainingPartProperties \
  1116. ----------------------------------------------------------------------------------------*/ \
  1117.  \
  1118. SOM_Scope ODStorageUnit*  SOMLINK PartName##AcquireContainingPartProperties(ModuleName##_##PartName *somSelf, \
  1119.                                                                             Environment *ev, \
  1120.                                                                             ODFrame* frame) \
  1121. { \
  1122.     return FW_CODPart::AcquireContainingPartProperties(ev, \
  1123.                                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1124.                                                     frame); \
  1125. }
  1126.  
  1127. #else
  1128.  
  1129. // ======== Non-EmbeddingPart =========
  1130.  
  1131. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  1132. /*---------------------------------------------------------------------------------------- \
  1133.     AdjustBorderShape \
  1134. ----------------------------------------------------------------------------------------*/ \
  1135.  \
  1136. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName*, Environment * ev, \
  1137.         ODFacet*, \
  1138.         ODShape* shape) \
  1139. { \
  1140.     FW_DEBUG_MESSAGE("AdjustBorderShape: Error, this part editor does not support embedding"); \
  1141.     if (shape != NULL) \
  1142.         shape->Acquire(ev); \
  1143.     return shape; \
  1144. } \
  1145.  \
  1146. /*---------------------------------------------------------------------------------------- \
  1147.     EmbeddedFrameUpdated \
  1148. ----------------------------------------------------------------------------------------*/ \
  1149.  \
  1150. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName*, Environment*, \
  1151.         ODFrame*, \
  1152.         ODUpdateID) \
  1153. { \
  1154.     FW_DEBUG_MESSAGE("EmbeddedFrameUpdated: Error, this part editor does not support embedding"); \
  1155. } \
  1156.  \
  1157. /*---------------------------------------------------------------------------------------- \
  1158.     UsedShapeChanged \
  1159. ----------------------------------------------------------------------------------------*/ \
  1160.  \
  1161. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName*, Environment*, \
  1162.         ODFrame*) \
  1163. { \
  1164.     FW_DEBUG_MESSAGE("UsedShapeChanged: Error, this part editor does not support embedding"); \
  1165. } \
  1166.  \
  1167. /*---------------------------------------------------------------------------------------- \
  1168.     RevealFrame \
  1169. ----------------------------------------------------------------------------------------*/ \
  1170.  \
  1171. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName*, Environment*, \
  1172.         ODFrame*, \
  1173.         ODShape*) \
  1174. { \
  1175.     FW_DEBUG_MESSAGE("RevealFrame: Error, this part editor does not support embedding"); \
  1176.     return FALSE; \
  1177. } \
  1178.  \
  1179. /*---------------------------------------------------------------------------------------- \
  1180.     CreateEmbeddedFramesIterator \
  1181. ----------------------------------------------------------------------------------------*/ \
  1182.  \
  1183. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName*, Environment *ev, \
  1184.         ODFrame*) \
  1185. { \
  1186.     FW_SetEvError(ev, kODErrCannotEmbed); \
  1187.     return NULL; \
  1188. } \
  1189.  \
  1190. /*---------------------------------------------------------------------------------------- \
  1191.     RequestEmbeddedFrame \
  1192. ----------------------------------------------------------------------------------------*/ \
  1193.  \
  1194. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName*, Environment*, \
  1195.         ODFrame*, \
  1196.         ODFrame*, \
  1197.         ODShape*, \
  1198.         ODPart*, \
  1199.         ODTypeToken, \
  1200.         ODTypeToken, \
  1201.         ODBoolean) \
  1202. { \
  1203.     FW_DEBUG_MESSAGE("RequestEmbeddedFrame: Error, this part editor does not support embedding"); \
  1204.     return NULL; \
  1205. } \
  1206.  \
  1207. /*---------------------------------------------------------------------------------------- \
  1208.     RemoveEmbeddedFrame \
  1209. ----------------------------------------------------------------------------------------*/ \
  1210.  \
  1211. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName*, Environment*, \
  1212.         ODFrame*) \
  1213. { \
  1214.     FW_DEBUG_MESSAGE("RemoveEmbeddedFrame: Error, this part editor does not support embedding"); \
  1215. } \
  1216.  \
  1217. /*---------------------------------------------------------------------------------------- \
  1218.     RequestFrameShape \
  1219. ----------------------------------------------------------------------------------------*/ \
  1220.  \
  1221. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName*, Environment *ev, \
  1222.         ODFrame*, \
  1223.         ODShape* frameShape) \
  1224. { \
  1225.     FW_DEBUG_MESSAGE("RequestFrameShape: Error, this part editor does not support embedding"); \
  1226.     frameShape->Acquire(ev); \
  1227.     return frameShape; \
  1228. } \
  1229.  \
  1230. /*---------------------------------------------------------------------------------------- \
  1231.     AcquireContainingPartProperties \
  1232. ----------------------------------------------------------------------------------------*/ \
  1233.  \
  1234. SOM_Scope ODStorageUnit*  SOMLINK PartName##AcquireContainingPartProperties(ModuleName##_##PartName*, \
  1235.                                                                             Environment *ev, \
  1236.                                                                             ODFrame*) \
  1237. { \
  1238.     FW_SetEvError(ev, kODErrCannotEmbed); \
  1239.     return NULL; \
  1240. }
  1241.  
  1242.  
  1243. #endif