00001 // $Id: chapter.cpp 1282 2006-06-09 09:46:49Z 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 // NodeRenderableChapter class 00100 00101 00102 #include "camtypes.h" 00103 #include "chapter.h" 00104 //#include "simon.h" 00105 //#include "mario.h" 00106 //#include "tim.h" 00107 //#include "ensure.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00108 //#include "spread.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00109 00110 #include "cxftags.h" 00111 //#include "cxfdefs.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00112 //#include "cxfrec.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00113 //#include "camfiltr.h" - in camtypes.h [AUTOMATICALLY REMOVED] 00114 00115 CC_IMPLEMENT_DYNAMIC(Chapter, NodeRenderablePaper) 00116 00117 00118 /********************************************************************************************* 00119 00120 > Chapter::Chapter() 00121 00122 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00123 Created: 13/5/93 00124 Inputs: - 00125 Outputs: 00126 Returns: - 00127 00128 Purpose: This constructor creates a Chapter linked to no other nodes, with all status 00129 flags false, and NULL bounding and pasteboard rectangles. 00130 00131 Errors: 00132 00133 **********************************************************************************************/ 00134 00135 00136 Chapter::Chapter(): NodeRenderablePaper() 00137 { 00138 FoldLineXCoord = 0; 00139 ShowFoldLine = FALSE; 00140 } 00141 00142 00143 00144 /*********************************************************************************************** 00145 00146 > Chapter::Chapter 00147 ( 00148 Node* ContextNode, 00149 AttachNodeDirection Direction, 00150 MILLIPOINT FldLineXCoord, 00151 BOOL Locked = FALSE, 00152 BOOL Mangled = FALSE, 00153 BOOL Marked = FALSE, 00154 BOOL Selected = FALSE, 00155 ) 00156 00157 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00158 Created: 26/4/93 00159 00160 Inputs: ContextNode: Pointer to a node which this node is to be attached to. 00161 00162 Direction: 00163 00164 Specifies the direction in which this node is to be attached to the 00165 ContextNode. The values this variable can take are as follows: 00166 00167 PREV : Attach node as a previous sibling of the context node 00168 NEXT : Attach node as a next sibling of the context node 00169 FIRSTCHILD: Attach node as the first child of the context node 00170 LASTCHILD : Attach node as a last child of the context node 00171 00172 FldLineXCoord: X Coordinate of the main fold line for the spreads in the chapter 00173 00174 The remaining inputs specify the status of the node: 00175 00176 Locked: Is node locked ? 00177 Mangled: Is node mangled ? 00178 Marked: Is node marked ? 00179 Selected: Is node selected ? 00180 00181 Outputs: - 00182 Returns: - 00183 Purpose: This method initialises the node and links it to ContextNode in the 00184 direction specified by Direction. All neccesary tree links are 00185 updated. 00186 00187 Errors: An assertion error will occur if ContextNode is NULL 00188 00189 00190 ***********************************************************************************************/ 00191 00192 Chapter::Chapter(Node* ContextNode, 00193 AttachNodeDirection Direction, 00194 MILLIPOINT FldLineXCoord, 00195 BOOL Locked, 00196 BOOL Mangled, 00197 BOOL Marked, 00198 BOOL Selected 00199 ): NodeRenderablePaper(ContextNode, Direction, Locked, Mangled, 00200 Marked, Selected) 00201 { 00202 FoldLineXCoord = FldLineXCoord; 00203 ShowFoldLine = TRUE; 00204 } 00205 00206 00207 /******************************************************************************************** 00208 00209 > virtual String Chapter::Describe(BOOL Plural, BOOL Verbose = TRUE) 00210 00211 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00212 Created: 21/6/93 00213 Inputs: Plural: Flag indicating if the string description should be plural or 00214 singular. 00215 Outputs: - 00216 Returns: Description of the object 00217 Purpose: To return a description of the Node object in either the singular or the 00218 plural. This method is called by the DescribeRange method. 00219 00220 The description will always begin with a lower case letter. 00221 00222 Errors: A resource exception will be thrown if a problem occurs when loading the 00223 string resource. 00224 SeeAlso: - 00225 00226 ********************************************************************************************/ 00227 /* 00228 Technical Notes: 00229 00230 The String resource identifiers should be of the form: ID_<Class>_DescriptionS for the 00231 singular description and ID_<Class>_DescriptionP for the plural. 00232 */ 00233 00234 String Chapter::Describe(BOOL Plural, BOOL Verbose) 00235 { 00236 if (Plural) 00237 return(String(_R(IDS_CHAPTER_DESCRP))); 00238 else 00239 return(String(_R(IDS_CHAPTER_DESCRS))); 00240 }; 00241 00242 00243 /*********************************************************************************************** 00244 00245 > Chapter* Chapter::FindPreviousChapter() 00246 00247 Author: Justin_Flude (Xara Group Ltd) <camelotdev@xara.com> 00248 Created: 16/5/93 00249 Inputs: - 00250 Outputs: - 00251 Returns: The previous sibling chapter or NULL if there are no more chapters 00252 Purpose: For finding the previous sibling chapter 00253 Errors: - 00254 SeeAlso: - 00255 00256 ***********************************************************************************************/ 00257 00258 Chapter* Chapter::FindPreviousChapter() 00259 { 00260 Node* CurrentNode = FindPrevious(); 00261 while (CurrentNode != 0) 00262 { 00263 if (CurrentNode->IsChapter()) 00264 return (Chapter*) CurrentNode; 00265 CurrentNode = CurrentNode->FindPrevious(); 00266 } 00267 return 0; // No chapter found 00268 } 00269 00270 00271 /*********************************************************************************************** 00272 00273 > void Chapter::Render( RenderRegion* ) 00274 00275 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00276 Created: 16/5/93 00277 00278 ***********************************************************************************************/ 00279 00280 void Chapter::Render( RenderRegion* ) 00281 { 00282 } 00283 00284 /*********************************************************************************************** 00285 00286 > Spread* Chapter::FindFirstSpread() 00287 00288 Author: Justin_Flude (Xara Group Ltd) <camelotdev@xara.com> 00289 Created: 11/8/94 00290 Inputs: - 00291 Outputs: - 00292 Returns: Returns the first spread in the chapter (or NULL if there are no spreads) 00293 Purpose: Returns the first spread which is an immediate child of the chapter 00294 Errors: - 00295 SeeAlso: - 00296 00297 ***********************************************************************************************/ 00298 00299 Spread* Chapter::FindFirstSpread() 00300 { 00301 Node* pNode = FindFirstChild(); 00302 while(pNode != 0 && !pNode->IsSpread()) 00303 pNode = pNode->FindNext(); 00304 00305 return (Spread*) pNode; 00306 } 00307 00308 /*********************************************************************************************** 00309 00310 > void Chapter::SetFoldLineXCoord(MILLIPOINT value, BOOL DisplayFoldLine = TRUE) 00311 00312 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00313 Created: 11/5/93 00314 00315 Inputs: value: New value for the X coordinate of the chapters fold line 00316 DisplayFoldLine - TRUE if the fold line should be displayed 00317 FALSE to disable display of the fold line altogether 00318 00319 Purpose: For setting the X coordinate of the chapters fold line, and enabling/disabling 00320 the display of the fold line (for single page spreads the fold line is disabled) 00321 00322 Notes: The fold line is rendered in spread.cpp 00323 00324 After setting this value, you'll need to redraw the document appropriately 00325 00326 SeeAlso: Chapter::ShouldShowFoldLine; Chapter::GetFoldLineXCoord 00327 00328 ***********************************************************************************************/ 00329 00330 void Chapter::SetFoldLineXCoord(MILLIPOINT value, BOOL DisplayFoldLine) 00331 { 00332 FoldLineXCoord = value; 00333 ShowFoldLine = DisplayFoldLine; 00334 } 00335 00336 00337 00338 /*********************************************************************************************** 00339 00340 > BOOL Chapter::ShouldShowFoldLine(void) const 00341 00342 Author: Jason_Williams (Xara Group Ltd) <camelotdev@xara.com> 00343 Created: 13/3/95 00344 00345 Returns: TRUE if the chapter fold line should be displayed 00346 FALSE if the chapter fold line should not be displayed 00347 00348 Purpose: To determine if the chapter fold line is intended to be displayed 00349 00350 SeeAlso: Chapter::SetFoldLineXCoord 00351 00352 ***********************************************************************************************/ 00353 00354 BOOL Chapter::ShouldShowFoldLine(void) const 00355 { 00356 return(ShowFoldLine); 00357 } 00358 00359 00360 00361 /*********************************************************************************************** 00362 00363 > MILLIPOINT Chapter::GetFoldLineXCoord() const 00364 00365 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00366 Created: 11/5/93 00367 Inputs: - 00368 Outputs: - 00369 Returns: The value of the X coordinate of the chapters fold line 00370 Purpose: For finding the X coordinate of the chapters fold line 00371 Errors: - 00372 SeeAlso: - 00373 00374 ***********************************************************************************************/ 00375 00376 MILLIPOINT Chapter::GetFoldLineXCoord() const 00377 { 00378 return (FoldLineXCoord); 00379 } 00380 00381 00382 00383 /*********************************************************************************************** 00384 > Node* Chapter::SimpleCopy() 00385 00386 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00387 Created: 28/4/93 00388 00389 Inputs: - 00390 Outputs: 00391 Returns: A copy of the node, or NULL if memory runs out 00392 00393 Purpose: This method returns a shallow copy of the node with all Node pointers NULL. 00394 The function is virtual, and must be defined for all derived classes. 00395 00396 00397 Errors: If memory runs out when trying to copy, then ERROR is called with an out of memory 00398 error and the function returns NULL. 00399 00400 00401 Scope: protected 00402 **********************************************************************************************/ 00403 00404 Node* Chapter::SimpleCopy() 00405 { 00406 Chapter* NodeCopy; 00407 NodeCopy = new Chapter(); 00408 ERRORIF(NodeCopy == NULL, _R(IDE_NOMORE_MEMORY), NULL); 00409 CopyNodeContents(NodeCopy); 00410 return (NodeCopy); 00411 } 00412 00413 /*********************************************************************************************** 00414 > void Chapter::PolyCopyNodeContents(Chapter* pNodeCopy) 00415 00416 Author: Phil_Martin (Xara Group Ltd) <camelotdev@xara.com> 00417 Created: 18/12/2003 00418 Outputs: - 00419 Purpose: Polymorphically copies the contents of this node to another 00420 Errors: An assertion failure will occur if NodeCopy is NULL 00421 Scope: protected 00422 00423 ***********************************************************************************************/ 00424 00425 void Chapter::PolyCopyNodeContents(NodeRenderable* pNodeCopy) 00426 { 00427 ENSURE(pNodeCopy, "Trying to copy a node's contents into a NULL node"); 00428 ENSURE(IS_A(pNodeCopy, Chapter), "PolyCopyNodeContents given wrong dest node type"); 00429 00430 if (IS_A(pNodeCopy, Chapter)) 00431 CopyNodeContents((Chapter*)pNodeCopy); 00432 } 00433 00434 00435 00436 /*********************************************************************************************** 00437 > void Chapter::CopyNodeContents(Chapter* NodeCopy) 00438 00439 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00440 Created: 28/4/93 00441 00442 Inputs: 00443 Outputs: A copy of this node 00444 Returns: - 00445 00446 Purpose: This method copies the node's contents to the node pointed to by NodeCopy. 00447 00448 Errors: An assertion failure will occur if NodeCopy is NULL 00449 00450 Scope: protected 00451 00452 ***********************************************************************************************/ 00453 00454 void Chapter::CopyNodeContents(Chapter* NodeCopy) 00455 { 00456 ENSURE(NodeCopy != NULL,"Trying to copy node contents to\na node pointed to by a NULL pointer"); 00457 NodeRenderablePaper::CopyNodeContents(NodeCopy); 00458 NodeCopy->FoldLineXCoord = FoldLineXCoord; 00459 } 00460 00461 00462 /******************************************************************************************** 00463 00464 > XLONG Chapter::GetChapterDepth() 00465 00466 Author: Tim_Browse (Xara Group Ltd) <camelotdev@xara.com> 00467 Created: 15/12/93 00468 Returns: Depth of the Chapter 00469 Purpose: Find the depth of a chapter in logical coords. 00470 i.e. how far from the top of the document the top of the chapter's 00471 pasteboard is. 00472 00473 ********************************************************************************************/ 00474 00475 XLONG Chapter::GetChapterDepth() 00476 { 00477 XLONG Depth = 0; 00478 00479 // Loop through document tree calculating the logical coordinate offset for the 00480 // current chapter 00481 00482 // Chapter *pChapter = Node::FindFirstChapter(FindOwnerDoc()); 00483 Node* pNode = FindParent(); 00484 ERROR2IF(!(pNode->IsNodeDocument()), 0, "Parent of Chapter is not NodeDocument"); 00485 Chapter *pChapter = (Chapter*)pNode->FindFirstChild(CC_RUNTIME_CLASS(Chapter)); 00486 00487 ENSURE(pChapter != NULL, "Couldn't find first chapter in Chapter::GetChapterDepth"); 00488 00489 while ((pChapter != NULL) && (pChapter != this)) 00490 { 00491 00492 ENSURE(pChapter->IsKindOf(CC_RUNTIME_CLASS(Chapter)), 00493 "Chapter's sibling is not a Chapter"); 00494 00495 const DocRect ChapRect = pChapter->GetPasteboardRect(); 00496 00497 // Accumulate logical offset 00498 Depth += ChapRect.Height(); 00499 00500 pChapter = (Chapter *) pChapter->FindNext(); 00501 } 00502 00503 return Depth; 00504 } 00505 00506 00507 00508 #ifdef _DEBUG 00509 00510 void Chapter::ShowDebugTreeDetails() const 00511 { 00512 TRACE( _T("Chapter ") ); 00513 Node::ShowDebugTreeDetails(); 00514 } 00515 00516 #endif 00517 00518 /******************************************************************************************** 00519 00520 > void* Chapter::GetDebugDetails(StringBase* Str) 00521 00522 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00523 Created: 21/9/93 00524 Inputs: - 00525 Outputs: Str: String giving debug info about the node 00526 Returns: - 00527 Purpose: For obtaining debug information about the Node 00528 Errors: - 00529 SeeAlso: - 00530 00531 ********************************************************************************************/ 00532 00533 00534 void Chapter::GetDebugDetails(StringBase* Str) 00535 { 00536 NodeRenderablePaper::GetDebugDetails(Str); 00537 String_256 TempStr; 00538 TempStr._MakeMsg(TEXT("\r\nFoldLine X Coord = #1%ld\r\n"), 00539 FoldLineXCoord); 00540 (*Str)+=TempStr; 00541 } 00542 00543 /******************************************************************************************** 00544 00545 > virtual UINT32 Chapter::GetNodeSize() const 00546 00547 Author: Simon_Maneggio (Xara Group Ltd) <camelotdev@xara.com> 00548 Created: 6/10/93 00549 Inputs: - 00550 Outputs: - 00551 Returns: The size of the node in bytes 00552 Purpose: For finding the size of the node 00553 00554 SeeAlso: Node::GetSubtreeSize 00555 00556 ********************************************************************************************/ 00557 00558 UINT32 Chapter::GetNodeSize() const 00559 { 00560 return (sizeof(Chapter)); 00561 } 00562 00563 00564 /********************************************************************************************* 00565 00566 > BOOL Chapter::IsChapter(void) const 00567 00568 Author: Peter_Arnold (Xara Group Ltd) <camelotdev@xara.com> 00569 Created: 28/04/95 00570 Returns: TRUE 00571 Purpose: For finding if a node is a chapter node. 00572 00573 **********************************************************************************************/ 00574 00575 BOOL Chapter::IsChapter() const 00576 { 00577 return TRUE; 00578 } 00579 00580 /******************************************************************************************** 00581 00582 > virtual BOOL Chapter::WritePreChildrenWeb(BaseCamelotFilter* pFilter) 00583 00584 Author: Mark_Neves (Xara Group Ltd) <camelotdev@xara.com> 00585 Created: 31/7/96 00586 Inputs: pFilter = ptr to filter to write to 00587 Returns: TRUE if the node has written out a record to the filter 00588 FALSE otherwise 00589 Purpose: Web files don't write out a chapter records. 00590 00591 This code assumes the document will only contain one chapter 00592 00593 SeeAlso: CanWriteChildrenWeb(), WritePostChildrenWeb() 00594 00595 ********************************************************************************************/ 00596 00597 BOOL Chapter::WritePreChildrenWeb(BaseCamelotFilter* pFilter) 00598 { 00599 return FALSE; 00600 } 00601 00602 /******************************************************************************************** 00603 00604 > virtual BOOL Chapter::WritePreChildrenWeb(BaseCamelotFilter* pFilter) 00605 00606 Author: Mark_Neves (Xara Group Ltd) <camelotdev@xara.com> 00607 Created: 31/7/96 00608 Inputs: pFilter = ptr to filter to write to 00609 Returns: TRUE if the node has written out a record to the filter 00610 FALSE otherwise 00611 Purpose: Writes out a chapter record. 00612 00613 SeeAlso: CanWriteChildrenWeb(), WritePostChildrenWeb() 00614 00615 ********************************************************************************************/ 00616 00617 BOOL Chapter::WritePreChildrenNative(BaseCamelotFilter* pFilter) 00618 { 00619 #ifdef DO_EXPORT 00620 BOOL RecordWritten = FALSE; 00621 00622 // Always write out the spread record in native files 00623 CXaraFileRecord Rec(TAG_CHAPTER,TAG_CHAPTER_SIZE); 00624 if (pFilter->Write(&Rec) != 0) 00625 RecordWritten = TRUE; 00626 else 00627 pFilter->GotError(_R(IDE_FILE_WRITE_ERROR)); 00628 00629 return RecordWritten; 00630 #else 00631 return FALSE; 00632 #endif 00633 } 00634 00635 00636 /******************************************************************************************** 00637 00638 > BOOL Chapter::WriteBeginChildRecordsWeb(BaseCamelotFilter* pFilter) 00639 00640 Author: Mark_Neves (Xara Group Ltd) <camelotdev@xara.com> 00641 Created: 1/8/96 00642 Inputs: pFilter = ptr to the filter to write to 00643 Outputs: - 00644 Returns: TRUE ok, FALSE otherwise 00645 Purpose: Begins the child record sequence for chapter in the web format 00646 00647 Web export doesn't write out chapter records, so this overrides the default 00648 behaviour in Node by ensuring the Down record does not get written 00649 00650 SeeAlso: WritePreChildrenNative() 00651 00652 ********************************************************************************************/ 00653 00654 BOOL Chapter::WriteBeginChildRecordsWeb(BaseCamelotFilter* pFilter) 00655 { 00656 return TRUE; 00657 } 00658 00659 /******************************************************************************************** 00660 00661 > BOOL Chapter::WriteEndChildRecordsWeb(BaseCamelotFilter* pFilter) 00662 00663 Author: Mark_Neves (Xara Group Ltd) <camelotdev@xara.com> 00664 Created: 1/8/96 00665 Inputs: pFilter = ptr to the filter to write to 00666 Outputs: - 00667 Returns: TRUE ok, FALSE otherwise 00668 Purpose: Ends the child record sequence for chapter in the web format 00669 00670 Web export doesn't write out chapter records, so this overrides the default 00671 behaviour in Node by ensuring the Up record does not get written 00672 00673 SeeAlso: WritePreChildrenNative() 00674 00675 ********************************************************************************************/ 00676 00677 BOOL Chapter::WriteEndChildRecordsWeb(BaseCamelotFilter* pFilter) 00678 { 00679 return TRUE; 00680 } 00681 00682 //------------------------------------------------------------------------- 00683 // Stubs put here in case they need implementing 00684 BOOL Chapter::WriteBeginChildRecordsNative(BaseCamelotFilter* pFilter) 00685 { 00686 return Node::WriteBeginChildRecordsNative(pFilter); 00687 } 00688 00689 BOOL Chapter::WriteEndChildRecordsNative(BaseCamelotFilter* pFilter) 00690 { 00691 return Node::WriteEndChildRecordsNative(pFilter); 00692 } 00693