00001 // $Id: doccomp.cpp 1302 2006-06-12 21:02:01Z alex $ 00002 /* @@tag:xara-cn@@ DO NOT MODIFY THIS LINE 00003 ================================XARAHEADERSTART=========================== 00004 00005 Xara LX, a vector drawing and manipulation program. 00006 Copyright (C) 1993-2006 Xara Group Ltd. 00007 Copyright on certain contributions may be held in joint with their 00008 respective authors. See AUTHORS file for details. 00009 00010 LICENSE TO USE AND MODIFY SOFTWARE 00011 ---------------------------------- 00012 00013 This file is part of Xara LX. 00014 00015 Xara LX is free software; you can redistribute it and/or modify it 00016 under the terms of the GNU General Public License version 2 as published 00017 by the Free Software Foundation. 00018 00019 Xara LX and its component source files are distributed in the hope 00020 that it will be useful, but WITHOUT ANY WARRANTY; without even the 00021 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00022 See the GNU General Public License for more details. 00023 00024 You should have received a copy of the GNU General Public License along 00025 with Xara LX (see the file GPL in the root directory of the 00026 distribution); if not, write to the Free Software Foundation, Inc., 51 00027 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00028 00029 00030 ADDITIONAL RIGHTS 00031 ----------------- 00032 00033 Conditional upon your continuing compliance with the GNU General Public 00034 License described above, Xara Group Ltd grants to you certain additional 00035 rights. 00036 00037 The additional rights are to use, modify, and distribute the software 00038 together with the wxWidgets library, the wxXtra library, and the "CDraw" 00039 library and any other such library that any version of Xara LX relased 00040 by Xara Group Ltd requires in order to compile and execute, including 00041 the static linking of that library to XaraLX. In the case of the 00042 "CDraw" library, you may satisfy obligation under the GNU General Public 00043 License to provide source code by providing a binary copy of the library 00044 concerned and a copy of the license accompanying it. 00045 00046 Nothing in this section restricts any of the rights you have under 00047 the GNU General Public License. 00048 00049 00050 SCOPE OF LICENSE 00051 ---------------- 00052 00053 This license applies to this program (XaraLX) and its constituent source 00054 files only, and does not necessarily apply to other Xara products which may 00055 in part share the same code base, and are subject to their own licensing 00056 terms. 00057 00058 This license does not apply to files in the wxXtra directory, which 00059 are built into a separate library, and are subject to the wxWindows 00060 license contained within that directory in the file "WXXTRA-LICENSE". 00061 00062 This license does not apply to the binary libraries (if any) within 00063 the "libs" directory, which are subject to a separate license contained 00064 within that directory in the file "LIBS-LICENSE". 00065 00066 00067 ARRANGEMENTS FOR CONTRIBUTION OF MODIFICATIONS 00068 ---------------------------------------------- 00069 00070 Subject to the terms of the GNU Public License (see above), you are 00071 free to do whatever you like with your modifications. However, you may 00072 (at your option) wish contribute them to Xara's source tree. You can 00073 find details of how to do this at: 00074 http://www.xaraxtreme.org/developers/ 00075 00076 Prior to contributing your modifications, you will need to complete our 00077 contributor agreement. This can be found at: 00078 http://www.xaraxtreme.org/developers/contribute/ 00079 00080 Please note that Xara will not accept modifications which modify any of 00081 the text between the start and end of this header (marked 00082 XARAHEADERSTART and XARAHEADEREND). 00083 00084 00085 MARKS 00086 ----- 00087 00088 Xara, Xara LX, Xara X, Xara X/Xtreme, Xara Xtreme, the Xtreme and Xara 00089 designs are registered or unregistered trademarks, design-marks, and/or 00090 service marks of Xara Group Ltd. All rights in these marks are reserved. 00091 00092 00093 Xara Group Ltd, Gaddesden Place, Hemel Hempstead, HP2 6EX, UK. 00094 http://www.xara.com/ 00095 00096 =================================XARAHEADEREND============================ 00097 */ 00098 00099 // Implementation of the Document Component objects. 00100 00101 /* 00102 */ 00103 00104 #include "camtypes.h" 00105 00106 //#include "doccomp.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00107 00108 00109 DECLARE_SOURCE("$Revision: 1302 $"); 00110 00111 // Declare smart memory handling in Debug builds 00112 #define new CAM_DEBUG_NEW 00113 00114 00115 CC_IMPLEMENT_DYNAMIC(DocComponentClass, ListItem) 00116 CC_IMPLEMENT_DYNAMIC(DocComponent, ListItem) 00117 00118 00119 /******************************************************************************************** 00120 00121 > BOOL DocComponentClass::AddComponent(Document *pDocument) 00122 00123 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00124 Created: 01/08/94 00125 Inputs: pDocument - the document object to add the document component to. 00126 Returns: TRUE if the component was added without problems; 00127 FALSE if not. 00128 Purpose: Add an instance of a document component to the specified document. 00129 This function should create a default instance of the relevant 00130 DocComponent object for this class, and add it to the document. 00131 The function should check to see if one already exists in this document, 00132 and either replace it, or leave it alone, depending on the nature of the 00133 component. 00134 00135 NB. This is a pure virtual function in the base class - you must override it. 00136 00137 Errors: Out of memory. 00138 SeeAlso: DocComponentClass 00139 00140 ********************************************************************************************/ 00141 00142 /******************************************************************************************** 00143 00144 > BOOL DocComponent::EPSStartImport(BaseCamelotFilter *pFilter) 00145 00146 Author: Neville_Humphrys (Xara Group Ltd) <camelotdev@xara.com> 00147 Created: 21/5/96 00148 Inputs: pFilter - the BaseCamelotFilter filter that is being used to import a file. 00149 Returns: TRUE if the component was able to prepare for importing; 00150 FALSE if not (e.g. out of memory) 00151 Purpose: Inform the document component that a Native or Web import is about to start. 00152 SeeAlso: DocComponent 00153 00154 ********************************************************************************************/ 00155 00156 BOOL DocComponent::StartImport(BaseCamelotFilter *pFilter) 00157 { 00158 return TRUE; 00159 } 00160 00161 /******************************************************************************************** 00162 00163 > BOOL DocComponent::EndImport(BaseCamelotFilter *pFilter, BOOL Success) 00164 00165 Author: Neville_Humphrys (Xara Group Ltd) <camelotdev@xara.com> 00166 Created: 21/5/96 00167 Inputs: pFilter - the BaseCamelotFilter filter that is being used to import a file. 00168 Success - TRUE => The import was successful; 00169 FALSE => The import failed - abandon any changes. 00170 Returns: TRUE if the component was able to end the importing; 00171 FALSE if not (e.g. out of memory) 00172 Purpose: Inform the document component that a Native or Web import has just finished. 00173 SeeAlso: DocComponent 00174 00175 ********************************************************************************************/ 00176 00177 BOOL DocComponent::EndImport(BaseCamelotFilter *pFilter, BOOL Success) 00178 { 00179 return TRUE; 00180 } 00181 00182 /******************************************************************************************** 00183 00184 > BOOL DocComponent::StartExportBeforeComp(BaseCamelotFilter *pFilter) 00185 00186 Author: Mark_Neves (Xara Group Ltd) <camelotdev@xara.com> 00187 Created: 30/7/96 00188 Returns: TRUE if the component was able to prepare for exporting; 00189 FALSE if not (e.g. out of memory) 00190 Inputs: pFilter - the BaseCamelotFilter filter that is being used to export a file. 00191 Purpose: Inform the document component that a Web or Native export is about to start. 00192 00193 This is called before zlib compression is turned on, to give the doc component 00194 a chance to write out uncompressed records. 00195 00196 SeeAlso: DocComponent 00197 00198 ********************************************************************************************/ 00199 00200 BOOL DocComponent::StartExportBeforeComp(BaseCamelotFilter *pFilter) 00201 { 00202 return TRUE; 00203 } 00204 00205 /******************************************************************************************** 00206 00207 > BOOL DocComponent::StartExport(BaseCamelotFilter *pFilter) 00208 00209 Author: Neville_Humphrys (Xara Group Ltd) <camelotdev@xara.com> 00210 Created: 21/5/96 00211 Returns: TRUE if the component was able to prepare for exporting; 00212 FALSE if not (e.g. out of memory) 00213 Inputs: pFilter - the BaseCamelotFilter filter that is being used to export a file. 00214 Purpose: Inform the document component that a WEb or Native export is about to start. 00215 SeeAlso: DocComponent 00216 00217 ********************************************************************************************/ 00218 00219 BOOL DocComponent::StartExport(BaseCamelotFilter *pFilter) 00220 { 00221 return TRUE; 00222 } 00223 00224 /******************************************************************************************** 00225 00226 > BOOL DocComponent::EndExport(BaseCamelotFilter *pFilter, BOOL Success) 00227 00228 Author: Neville_Humphrys (Xara Group Ltd) <camelotdev@xara.com> 00229 Created: 21/5/96 00230 Inputs: pFilter - the BaseCamelotFilter filter that is being used to import a file. 00231 Success - True if everything went swimmingly, False if just a clean up is required. 00232 00233 Returns: TRUE if the component was able to end the importing; 00234 FALSE if not (e.g. out of memory) 00235 00236 Purpose: Inform the document component that a Web or Native export is just finishing. 00237 This gives the component a chance to write out any pending data, such as 00238 named colours that weren't referenced in the document, etc. 00239 00240 Notes: This saves any pending data (e.g. unreferenced Named colours) but DOES NOT 00241 DELETE ANY DATA STRUCTURES - these should be deleted in the CleanUpAfterExport 00242 function. This allows situations like: PrintComponent wants to save a colour 00243 reference in it's Endxport call, but is called after the ColourComponent 00244 EndExport. The ColourComponent EndExport does not delete its data structures, 00245 so is still able to supply colour references to other components' EndExport 00246 functions. 00247 00248 SeeAlso: DocComponent::StartExport; DocComponent::CleanUpAfterExport 00249 00250 ********************************************************************************************/ 00251 00252 BOOL DocComponent::EndExport(BaseCamelotFilter *pFilter, BOOL Success) 00253 { 00254 return TRUE; 00255 } 00256 00257 00258 00259 /******************************************************************************************** 00260 00261 > virtual void DocComponent::CleanUpAfterExport(BOOL Success) 00262 00263 Author: Jason_Williams (Xara Group Ltd) <camelotdev@xara.com> 00264 Created: 21/8/96 00265 Inputs: Success - True if everything went swimmingly, False if the export failed 00266 00267 Purpose: Inform the document component that a Web or Native export has just finished. 00268 00269 Notes: This is called after EndExport, so that the componenbt can clean up any 00270 during-export data structures. This allows situations like: PrintComponent 00271 wants to save a colour reference in it's Endxport call, but is called after 00272 the ColourComponent EndExport. The ColourComponent EndExport does not delete 00273 its data structures, so is still able to supply colour references to other 00274 components' EndExport functions. 00275 00276 The base class implementation does nothing 00277 00278 SeeAlso: DocComponent::EndExport 00279 00280 ********************************************************************************************/ 00281 00282 void DocComponent::CleanUpAfterExport(BOOL Success) 00283 { 00284 // Base class does nothing 00285 } 00286 00287 00288 00289 /******************************************************************************************** 00290 00291 > BOOL DocComponent::EPSStartImport(EPSFilter *pFilter) 00292 00293 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00294 Created: 03/08/94 00295 Inputs: pFilter - the EPS filter that is being used to import a file. 00296 Returns: TRUE if the component was able to prepare for importing; 00297 FALSE if not (e.g. out of memory) 00298 Purpose: Inform the document component that an EPS import is about to start. 00299 SeeAlso: DocComponent 00300 00301 ********************************************************************************************/ 00302 00303 BOOL DocComponent::EPSStartImport(EPSFilter *pFilter) 00304 { 00305 return TRUE; 00306 } 00307 00308 /******************************************************************************************** 00309 00310 > void DocComponent::EPSEndImport(EPSFilter *pFilter, BOOL Success) 00311 00312 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00313 Created: 03/08/94 00314 Inputs: pFilter - the EPS filter that is being used to import a file. 00315 Success - TRUE => The import was successful; 00316 FALSE => The import failed - abandon any changes. 00317 Purpose: Inform the document component that an EPS import has just finished. 00318 SeeAlso: DocComponent 00319 00320 ********************************************************************************************/ 00321 00322 void DocComponent::EPSEndImport(EPSFilter *pFilter, BOOL Success) 00323 { 00324 } 00325 00326 /******************************************************************************************** 00327 00328 > BOOL DocComponent::EPSStartExport(EPSFilter *pFilter) 00329 00330 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00331 Created: 03/08/94 00332 Returns: TRUE if the component was able to prepare for exporting; 00333 FALSE if not (e.g. out of memory) 00334 Inputs: pFilter - the EPS filter that is being used to export a file. 00335 Purpose: Inform the document component that an EPS export is about to start. 00336 SeeAlso: DocComponent 00337 00338 ********************************************************************************************/ 00339 00340 BOOL DocComponent::EPSStartExport(EPSFilter *pFilter) 00341 { 00342 return TRUE; 00343 } 00344 00345 /******************************************************************************************** 00346 00347 > void DocComponent::EPSEndExport(EPSFilter *pFilter) 00348 00349 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00350 Created: 03/08/94 00351 Inputs: pFilter - the EPS filter that is being used to import a file. 00352 Purpose: Inform the document component that an EPS export has just finished. 00353 SeeAlso: DocComponent 00354 00355 ********************************************************************************************/ 00356 00357 void DocComponent::EPSEndExport(EPSFilter *pFilter) 00358 { 00359 } 00360 00361 00362 /******************************************************************************************** 00363 00364 > BOOL DocComponent::WriteEPSProlog(EPSFilter *pFilter) 00365 00366 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00367 Created: 01/08/94 00368 Inputs: pFilter - the EPS filter that is being used to export a file. 00369 Returns: TRUE if the Prolog for this component was written out successfully; 00370 FALSE if not (e.g. out of disk space etc) 00371 Purpose: Write out the EPS prolog for this document component, using the EPS 00372 filter object supplied. 00373 (The base class does nothing) 00374 00375 SeeAlso: DocComponent::WriteEPSSetup; 00376 DocComponent::WriteEPSComments; 00377 DocComponent::ProcessEPSComment; 00378 DocComponent; 00379 EPSFilter 00380 00381 ********************************************************************************************/ 00382 00383 BOOL DocComponent::WriteEPSProlog(EPSFilter *pFilter) 00384 { 00385 return TRUE; 00386 } 00387 00388 00389 /******************************************************************************************** 00390 00391 > BOOL DocComponent::WriteEPSSetup(EPSFilter *pFilter) 00392 00393 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00394 Created: 01/08/94 00395 Inputs: pFilter - the EPS filter that is being used to export a file. 00396 Returns: TRUE if the Prolog for this component was written out successfully; 00397 FALSE if not (e.g. out of disk space etc) 00398 Purpose: Write out the EPS setup for this document component, using the EPS 00399 filter object supplied. 00400 (The base class does nothing) 00401 00402 SeeAlso: DocComponent::WriteEPSProlog; 00403 DocComponent::WriteEPSComments; 00404 DocComponent::ProcessEPSComment; 00405 DocComponent; 00406 EPSFilter 00407 00408 ********************************************************************************************/ 00409 00410 BOOL DocComponent::WriteEPSSetup(EPSFilter *pFilter) 00411 { 00412 return TRUE; 00413 } 00414 00415 00416 00417 /******************************************************************************************** 00418 00419 > BOOL DocComponent::WriteEPSComments(EPSFilter *pFilter) 00420 00421 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00422 Created: 01/08/94 00423 Inputs: pFilter - the EPS filter that is being used to export a file. 00424 Outputs: - 00425 Returns: TRUE if the Prolog for this component was written out successfully; 00426 FALSE if not (e.g. out of disk space etc) 00427 Purpose: Write out any comments that need to be in the initial batch of EPS 00428 comments (i.e. before the %%EndComments line), using the specified EPS 00429 Filter object. 00430 (The base class does nothing) 00431 00432 SeeAlso: DocComponent::WriteEPSSetup; 00433 DocComponent::WriteEPSProlog; 00434 DocComponent::ProcessEPSComment; 00435 DocComponent; 00436 EPSFIlter 00437 00438 ********************************************************************************************/ 00439 00440 BOOL DocComponent::WriteEPSComments(EPSFilter *pFilter) 00441 { 00442 return TRUE; 00443 } 00444 00445 00446 00447 /******************************************************************************************** 00448 00449 > BOOL DocComponent::WriteScript(EPSFilter* pFilter) 00450 00451 Author: Rik_Heywood (Xara Group Ltd) <camelotdev@xara.com> 00452 Created: 18/1/95 00453 Inputs: pFilter - the EPS filter that is being used to export a file. 00454 Returns: TRUE if the Script for this component was written out successfully; 00455 FALSE if not (e.g. out of disk space etc) 00456 Purpose: This is called after all the Comments, Prolog etc have been output so that 00457 DocComponents get a chance to do something right at the start of the real 00458 EPS data, but before the tree starts to be exported. 00459 (The base class does nothing) 00460 SeeAlso: DocComponent::WriteEPSSetup; 00461 DocComponent::WriteEPSProlog; 00462 DocComponent::ProcessEPSComment; 00463 DocComponent; 00464 EPSFIlter 00465 00466 ********************************************************************************************/ 00467 00468 BOOL DocComponent::WriteScript(EPSFilter* pFilter) 00469 { 00470 return TRUE; 00471 } 00472 00473 00474 00475 /******************************************************************************************** 00476 00477 > ProcessEPSResult DocComponent::ProcessEPSComment(EPSFilter *pFilter, 00478 const THCAR *pComment) 00479 00480 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00481 Created: 01/08/94 00482 Inputs: pFilter - the EPS filter that is being used to import a file. 00483 pComment - read only buffer containing the whole EPS comment to parse. 00484 Returns: EPSCommentUnknown - This EPS comment is not recognised by the document 00485 component. 00486 EPSCommentError - This EPS comment was recognised by this document 00487 component, but it contained an error. 00488 EPSCommentSystemError - This EPS comment was recognised by this document 00489 component, but an error occured that was not caused 00490 directly by the comment, e.g. out of memory. 00491 EPSCommentOK - This EPS comment was recognised as a legal comment by 00492 this document component, and was processed 00493 successfully. 00494 Purpose: Process an EPS comment found in the file, if it 'belongs' to this 00495 document component. If it does not, then the document component should 00496 return EPSCommentUnknown, and the comment will be passed on to the next 00497 document component. 00498 If the function returns EPSCommentOK, and the next line in the file starts 00499 with "%%+", i.e. an EPS/PostScript continuation comment, then this will be 00500 passed to this document component immediately, without trying any of the 00501 other document components first. This allows items such a colour lists 00502 to be imported easily, as they are usually specified on multiple lines in 00503 the file, using "%%+" comments. 00504 (The base class does nothing - it returns EPSCommentUnknown) 00505 00506 SeeAlso: DocComponent::EndOfEPSComment; 00507 DocComponent::WriteEPSProlog; 00508 DocComponent::WriteEPSSetup; 00509 DocComponent::WriteEPSComments; 00510 DocComponent; 00511 ProcessEPSResult; 00512 EPSFIlter 00513 00514 ********************************************************************************************/ 00515 00516 ProcessEPSResult DocComponent::ProcessEPSComment(EPSFilter *pFilter, 00517 const TCHAR *pComment) 00518 { 00519 return EPSCommentUnknown; 00520 } 00521 00522 00523 /******************************************************************************************** 00524 00525 > void DocComponent::EndOfEPSComment(EPSFilter *pFilter) 00526 00527 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00528 Created: 02/08/94 00529 Inputs: pFilter - the EPS filter that is being used to import a file. 00530 Purpose: Informs the document component that the comment it has been decoding has 00531 now finished, and it should take whatever action required to act on 00532 the comment. 00533 This call is made even for single-line comments, because by the nature of 00534 DSC comments, it is not known until the next comment starts or a 00535 non-comment line is encountered that the comment is over and is not 00536 multi-line. 00537 00538 SeeAlso: DocComponent::ProcessEPSComment; 00539 DocComponent::WriteEPSProlog; 00540 DocComponent::WriteEPSSetup; 00541 DocComponent::WriteEPSComments; 00542 DocComponent; EPSFilter 00543 00544 ********************************************************************************************/ 00545 00546 void DocComponent::EndOfEPSComment(EPSFilter *pFilter) 00547 { 00548 } 00549 00550 00551 /******************************************************************************************** 00552 00553 > INT32 DocComponent::GetSizeOfExport(Filter *pFilter) 00554 00555 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00556 Created: 27/01/95 00557 Inputs: pFilter - the export filter that will be used. 00558 Returns: An approximation of the size of data that will be exported by this 00559 document component, in terms of nodes. (see NodeRenderable::GetSizeOfExport). 00560 Purpose: Find out how many nodes will be exported when this document component 00561 is exported. 00562 The node can use the filter to find out how it will be exported, e.g. 00563 bitmap lists should return a value that reflects whether or not bitmap 00564 indirection is possible with this filter and so on. 00565 NB. This is virtual - the default implementation just returns 1 - only 00566 override if this is not accurate. 00567 SeeAlso: Node::NeedsToExport; Node::ExportRender; NodeRenderable::GetSizeOfExport 00568 00569 ********************************************************************************************/ 00570 00571 INT32 DocComponent::GetSizeOfExport(Filter*) 00572 { 00573 // Default value is one node... 00574 return 1; 00575 } 00576 00577 00578 00579 00580 /******************************************************************************************** 00581 00582 > virtual BOOL DocComponent::StartComponentCopy() 00583 00584 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00585 Created: 16/8/94 00586 Inputs: - 00587 Outputs: - 00588 Returns: FALSE if we run out of memory 00589 Purpose: This function is called prior to nodes being copied from some Source document to 00590 the document where this DocComponent lives. It gives the DocComponent a chance 00591 to make preperations for caching any possible updates. 00592 Errors: - 00593 SeeAlso: NodeRenderable::CopyComponentData 00594 SeeAlso: DocComponent::EndComponentCopy 00595 SeeAlso: DocComponent::AbortComponentCopy 00596 00597 ********************************************************************************************/ 00598 00599 BOOL DocComponent::StartComponentCopy() { return TRUE;} 00600 00601 /******************************************************************************************** 00602 00603 > virtual BOOL DocComponent::EndComponentCopy() 00604 00605 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00606 Created: 16/8/94 00607 Inputs: - 00608 Outputs: - 00609 Returns: - 00610 Purpose: This function is called after a successful copy from another document. If 00611 changes have been made to the components data then now is the time to 00612 commit them. 00613 Errors: - 00614 SeeAlso: NodeRenderable::CopyComponentData 00615 SeeAlso: DocComponent::StartComponentCopy 00616 SeeAlso: DocComponent::AbortComponentCopy 00617 00618 ********************************************************************************************/ 00619 00620 00621 BOOL DocComponent::EndComponentCopy() { return TRUE; } 00622 00623 00624 /******************************************************************************************** 00625 00626 > virtual void DocComponent::AbortComponentCopy() 00627 00628 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00629 Created: 16/8/94 00630 Inputs: - 00631 Outputs: - 00632 Returns: - 00633 Purpose: This function is called if a node copy has failed. If any changes have been 00634 made then they may need to be vaped at this point. Note this function could get 00635 called without a prior StartComponentCopy call. Also it could get called more 00636 than once. 00637 Errors: - 00638 SeeAlso: NodeRenderable::CopyComponentData 00639 SeeAlso: DocComponent::EndComponentCopy 00640 SeeAlso: DocComponent::StartComponentCopy 00641 00642 ********************************************************************************************/ 00643 00644 void DocComponent::AbortComponentCopy() { } 00645 00646