#include <fillattr2.h>
Inheritance diagram for AttrBitmapTranspFill:
Public Member Functions | |
AttrBitmapTranspFill () | |
AttrBitmapTranspFill (Node *ContextNode, AttachNodeDirection Direction, BOOL Locked=FALSE, BOOL Mangled=FALSE, BOOL Marked=FALSE, BOOL Selected=FALSE) | |
void | Render (RenderRegion *pRender) |
'Renders' a Bitmap Fill Transp attribute. | |
Node * | SimpleCopy () |
This method returns a shallow copy of the node with all Node pointers NULL. The function is virtual, and must be defined for all derived classes. | |
virtual UINT32 | GetAttrNameID (void) |
Returns a string resource ID describing the attribute. | |
void | GetDebugDetails (StringBase *Str) |
Output details of this attribute to the Camelot debug tree dialog. | |
virtual UINT32 | GetNodeSize () const |
For finding the size of the node. | |
virtual void | RenderFillMesh (RenderRegion *, DocCoord *, BOOL *, INT32 NumControlPoints=0) |
virtual void | RenderFillBlobs (RenderRegion *pRender) |
Renders the grad fills arrow blob when requested to by its selected parent. | |
virtual BOOL | IsVisible () |
virtual BOOL | NeedsTransparency () const |
Called. | |
virtual CCRuntimeClass * | GetAttributeType () |
virtual AttributeValue * | GetAttributeValue () |
virtual BOOL | ChangeControlTransp (AttrTranspChange *NewTransp) |
Applies a colour to selected Fill Control Points. | |
AttrFillGeometry * | ChangeAttrValue (AttrValueChange *pValue) |
virtual BOOL | IsATranspFill () const |
Virtual function for determining if the node is an attribute. | |
virtual BOOL | IsABitmapTranspFill () const |
virtual BOOL | HasEquivalentDefaultValue (BOOL bAppearance=FALSE) |
Determine whether this attribute has the default value or not. | |
virtual BOOL | WritePreChildrenWeb (BaseCamelotFilter *pFilter) |
Writes the bitmap transparent fill record to the filter. | |
virtual BOOL | WritePreChildrenNative (BaseCamelotFilter *pFilter) |
virtual BOOL | IsSeeThrough (BOOL CheckIndirectAttrs) |
Protected Member Functions | |
virtual void | RenderControl (FillControl, BOOL) |
Redraws the Fill Control blobs when the selection changes. | |
Protected Attributes | |
BitmapTranspFillAttribute | Value |
Definition at line 1958 of file fillattr2.h.
|
Definition at line 1963 of file fillattr2.h. 01963 : AttrBitmapFill() {}
|
|
Definition at line 1964 of file fillattr2.h. 01969 : 01970 AttrBitmapFill(ContextNode, Direction, Locked, Mangled, Marked, Selected) {}
|
|
Reimplemented from AttrFillGeometry. Definition at line 1989 of file fillattr2.h. 01989 { return ChangeTransp(pValue); }
|
|
Applies a colour to selected Fill Control Points.
Reimplemented from AttrBitmapFill. Definition at line 1986 of file fillattr2.h. 01987 { return AttrFillGeometry::ChangeControlTransp(NewTransp); }
|
|
Reimplemented from NodeAttribute. Definition at line 1983 of file fillattr2.h. 01983 { return CC_RUNTIME_CLASS(AttrTranspFillGeometry); }
|
|
Implements AttrBitmapFill. Definition at line 1984 of file fillattr2.h. 01984 { return &Value; }
|
|
Returns a string resource ID describing the attribute.
Reimplemented from NodeAttribute. Definition at line 15425 of file fillattr.cpp. 15426 { 15427 return (_R(IDS_BITMAPTRANSPFILL)); 15428 }
|
|
Output details of this attribute to the Camelot debug tree dialog.
Reimplemented from NodeRenderable. Definition at line 15441 of file fillattr.cpp. 15442 { 15443 #ifdef _DEBUG 15444 NodeAttribute::GetDebugDetails( Str ); 15445 15446 String_256 TempStr; 15447 15448 TempStr._MakeMsg( TEXT("\r\nBitmap Fill:\r\n")); 15449 (*Str) += TempStr; 15450 15451 TempStr._MakeMsg(TEXT("\r\nStart = (#1%ld, #2%ld)"), 15452 (*GetStartPoint()).x, (*GetStartPoint()).y); 15453 (*Str) += TempStr; 15454 15455 TempStr._MakeMsg(TEXT("\r\nEnd = (#1%ld, #2%ld) "), 15456 (*GetEndPoint()).x, (*GetEndPoint()).y); 15457 (*Str) += TempStr; 15458 15459 TempStr._MakeMsg(TEXT("\r\n3rd = (#1%ld, #2%ld) "), 15460 (*GetEndPoint2()).x, (*GetEndPoint2()).y); 15461 (*Str) += TempStr; 15462 15463 BitmapInfo Info; 15464 KernelBitmap* KerBmp = ((BitmapTranspFillAttribute*)GetAttributeValue())->GetBitmap(); 15465 15466 if (KerBmp && KerBmp->ActualBitmap && KerBmp->ActualBitmap->GetInfo( &Info ) ) 15467 { 15468 TempStr._MakeMsg( _T("\r\nBits = (#1%ux#2%ux#3%u) "), Info.PixelWidth, 15469 Info.PixelHeight, 15470 Info.PixelDepth 15471 ); 15472 (*Str) += TempStr; 15473 } 15474 #endif 15475 }
|
|
For finding the size of the node.
Reimplemented from Node. Definition at line 15489 of file fillattr.cpp. 15490 { 15491 return sizeof(AttrBitmapTranspFill); 15492 }
|
|
Determine whether this attribute has the default value or not.
Reimplemented from NodeAttribute. Definition at line 15825 of file fillattr.cpp. 15826 { 15827 // Slight bodge - we will assume that the default transparency is fully opaque 15828 if (bAppearance) 15829 return (Value.TranspType==TT_NoTranspType || (Value.TranspType==TT_Mix && Value.Transp == 0 && Value.EndTransp==0)); 15830 else 15831 return FALSE; 15832 }
|
|
Reimplemented from Node. Definition at line 1992 of file fillattr2.h. 01992 { return TRUE; }
|
|
Virtual function for determining if the node is an attribute.
Reimplemented from NodeAttribute. Definition at line 1991 of file fillattr2.h. 01991 { return TRUE; }
|
|
Reimplemented from NodeAttribute. Definition at line 2005 of file fillattr2.h. 02005 { 02006 return (GetTesselation() == RT_Simple || 02007 (GetStartTransp() != NULL && *GetStartTransp() != 0) || 02008 (GetEndTransp() != NULL && *GetEndTransp() != 0)); 02009 }
|
|
Reimplemented from AttrFillGeometry. Definition at line 1980 of file fillattr2.h. 01980 { return IsTranspMeshVisible(); }
|
|
Called.
Reimplemented from AttrFillGeometry. Definition at line 20187 of file fillattr.cpp. 20188 { 20189 return TRUE; 20190 }
|
|
'Renders' a Bitmap Fill Transp attribute.
Reimplemented from NodeAttribute. Definition at line 15383 of file fillattr.cpp. 15384 { 15385 pRender->SetTranspFillGeometry(&Value, FALSE); 15386 }
|
|
Redraws the Fill Control blobs when the selection changes.
Reimplemented from AttrFillGeometry. Definition at line 15666 of file fillattr.cpp. 15667 { 15668 #if !defined(EXCLUDE_FROM_RALPH) 15669 DocRect ControlRect; 15670 15671 // Ignore if we're not in the tree yet 15672 // We may be a tempory clone, or something 15673 NodeRenderable* pParent = (NodeRenderable*)FindParent(); 15674 15675 if (pParent == NULL) 15676 return; 15677 15678 if (IsBlobSame(Control)) 15679 return; // Ignore if same as the last blob rendered 15680 15681 Spread* pSpread = this->FindParentSpread(); 15682 15683 DocCoord StartPoint = *GetStartPoint(); 15684 DocCoord EndPoint = *GetEndPoint(); 15685 DocCoord EndPoint2 = *GetEndPoint2(); 15686 15687 DocCoord CentrePoint; 15688 DocCoord Drag2Blob; 15689 DocCoord Drag3Blob; 15690 15691 GetBitmapVirtualPoints(StartPoint, EndPoint, EndPoint2, 15692 &CentrePoint, &Drag2Blob, &Drag3Blob); 15693 15694 switch (Control) 15695 { 15696 case FILLCONTROL_STARTPOINT: 15697 15698 if (GetStartPoint() != NULL) 15699 { 15700 // Redraw the Start Point Blob 15701 (Camelot.GetBlobManager())->GetBlobRect(CentrePoint, &ControlRect); 15702 RenderFillControl(RenderOn, &ControlRect, pSpread, pParent); 15703 } 15704 break; 15705 15706 case FILLCONTROL_ENDPOINT: 15707 15708 if (GetEndPoint() != NULL) 15709 { 15710 // Redraw BOTH End Point Blobs 15711 (Camelot.GetBlobManager())->GetBlobRect(Drag2Blob, &ControlRect); 15712 RenderFillControl(RenderOn, &ControlRect, pSpread, pParent); 15713 } 15714 15715 if (GetEndPoint2() != NULL) 15716 { 15717 (Camelot.GetBlobManager())->GetBlobRect(Drag3Blob, &ControlRect); 15718 RenderFillControl(RenderOn, &ControlRect, pSpread, pParent); 15719 } 15720 break; 15721 15722 case FILLCONTROL_SECONDARYPOINT: 15723 15724 if (GetEndPoint2() != NULL) 15725 { 15726 // Redraw BOTH End Point Blobs 15727 (Camelot.GetBlobManager())->GetBlobRect(Drag2Blob, &ControlRect); 15728 RenderFillControl(RenderOn, &ControlRect, pSpread, pParent); 15729 } 15730 15731 if (GetEndPoint2() != NULL) 15732 { 15733 (Camelot.GetBlobManager())->GetBlobRect(Drag3Blob, &ControlRect); 15734 RenderFillControl(RenderOn, &ControlRect, pSpread, pParent); 15735 } 15736 break; 15737 } 15738 #endif 15739 }
|
|
Renders the grad fills arrow blob when requested to by its selected parent.
Reimplemented from AttrBitmapFill. Definition at line 15505 of file fillattr.cpp. 15506 { 15507 #if !defined(EXCLUDE_FROM_RALPH) 15508 if (!IsVisible()) 15509 return; // We're Not in Fill Transparency Mode 15510 15511 // Don't bother if this fill is being edited as a copy of it 15512 // we be rendered thoughout the drag op 15513 if (IsFillBeingEdited()) 15514 return; 15515 15516 // Ignore this if the mesh is the same as the last one rendered. 15517 if (CheckPreviousFillMesh()) 15518 return; 15519 15520 DocCoord ControlPoints[5]; 15521 ControlPoints[FILLCONTROL_STARTPOINT] = (*GetStartPoint()); 15522 ControlPoints[FILLCONTROL_ENDPOINT] = (*GetEndPoint()); 15523 ControlPoints[FILLCONTROL_SECONDARYPOINT] = (*GetEndPoint2()); 15524 15525 // Render a nice pretty Fill Mesh thingy 15526 RenderFillMesh(pRender, ControlPoints, SelectionState, 5); 15527 15528 // This call was removed by Gerry (2/9/96) as it causes blob problems 15529 // If we are removing blobs then force all blobs to be deselected 15530 // if ((Camelot.GetBlobManager())->IsRemovingBlobs()) 15531 // DeselectAllNoRedraw(); 15532 #endif 15533 }
|
|
Reimplemented from AttrBitmapFill. Definition at line 15535 of file fillattr.cpp. 15538 { 15539 #if !defined(EXCLUDE_FROM_RALPH) 15540 DocCoord StartPoint = ControlPoints[FILLCONTROL_STARTPOINT]; 15541 DocCoord EndPoint = ControlPoints[FILLCONTROL_ENDPOINT]; 15542 15543 if (StartPoint == EndPoint) 15544 return; 15545 15546 if (SelState == NULL) 15547 { 15548 // If no selection state passed in, then assume 15549 // all the points are deselected 15550 BOOL Selected[NUMCONTROLPOINTS]; 15551 for (INT32 i=0; i< NumControlPoints; i++) 15552 { 15553 Selected[i] = FALSE; 15554 } 15555 SelState = Selected; 15556 } 15557 15558 DocCoord EndPoint2 = ControlPoints[FILLCONTROL_SECONDARYPOINT]; 15559 15560 DocCoord Start; 15561 DocCoord End; 15562 DocCoord End2; 15563 15564 // Work out the Virtual positions of the Bitmap Controls 15565 GetBitmapVirtualPoints(StartPoint, EndPoint, EndPoint2, 15566 &Start, &End, &End2); 15567 15568 // Remember what attributes were here before 15569 pRender->SaveContext(); 15570 15571 // Get the current blob size in Doc Units 15572 INT32 BlobSize = (Camelot.GetBlobManager())->GetBlobSize(); 15573 15574 // Calculate the Arrow on the End of the Line 15575 Path ArrowPath; 15576 ArrowPath.Initialise(); 15577 DocCoord LineEnd; 15578 MakeMeshArrow(&ArrowPath, Start, End, &LineEnd); 15579 15580 // Calculate the Arrow on the End of the Line2 15581 Path ArrowPath2; 15582 ArrowPath2.Initialise(); 15583 DocCoord LineEnd2; 15584 MakeMeshArrow(&ArrowPath2, Start, End2, &LineEnd2); 15585 15586 // Set the line colours etc as we need them 15587 pRender->SetLineWidth(0); 15588 pRender->SetLineColour(COLOUR_UNSELECTEDBLOB); 15589 pRender->SetFillColour(COLOUR_UNSELECTEDBLOB); 15590 15591 // First Draw the Line 15592 pRender->SetLineWidth(BlobSize/4); 15593 pRender->DrawLine(Start, LineEnd); 15594 15595 // Draw the secondary line 15596 pRender->DrawLine(Start, LineEnd2); 15597 15598 // Render an Arrow at the end of the line 15599 pRender->SetLineWidth(0); 15600 pRender->SetLineColour(COLOUR_NONE); 15601 pRender->DrawPath(&ArrowPath); 15602 15603 // and on the end of the secondary line 15604 pRender->DrawPath(&ArrowPath2); 15605 15606 if (DraggedFill == this) 15607 { 15608 // If we are being dragged then draw a Parallelgram to 15609 // show the shape of the bitmap 15610 pRender->SetLineColour(COLOUR_SELECTEDBLOB); 15611 pRender->SetFillColour(COLOUR_NONE); 15612 15613 Path ParaPath; 15614 ParaPath.Initialise(); 15615 MakeMeshParallelagram(&ParaPath, Start, End, End2); 15616 15617 // Draw the parallelagram 15618 pRender->DrawPath(&ParaPath); 15619 } 15620 15621 // Now Render the blobs on the path 15622 15623 // Draw a blob at the start point 15624 if (SelState[FILLCONTROL_STARTPOINT]) 15625 { 15626 // Draw Selected Blob 15627 // pRender->SetLineColour(COLOUR_SELECTEDBLOB); 15628 pRender->SetLineColour(COLOUR_NONE); 15629 pRender->SetFillColour(COLOUR_SELECTEDBLOB); 15630 pRender->DrawBlob(Start, BT_SELECTED); 15631 } 15632 else 15633 { 15634 // Draw Unselected Blob 15635 // pRender->SetLineColour(COLOUR_UNSELECTEDBLOB); 15636 pRender->SetLineColour(COLOUR_NONE); 15637 pRender->SetFillColour(COLOUR_UNSELECTEDBLOB); 15638 pRender->DrawBlob(Start, BT_UNSELECTED); 15639 } 15640 15641 // Draw a blob at the end point 15642 if (SelState[FILLCONTROL_ENDPOINT]) 15643 { 15644 // Draw Selected Blob 15645 // pRender->SetLineColour(COLOUR_SELECTEDBLOB); 15646 pRender->SetLineColour(COLOUR_NONE); 15647 pRender->SetFillColour(COLOUR_SELECTEDBLOB); 15648 pRender->DrawBlob(End, BT_SELECTED); 15649 pRender->DrawBlob(End2,BT_SELECTED); 15650 } 15651 else 15652 { 15653 // Draw Unselected Blob 15654 // pRender->SetLineColour(COLOUR_UNSELECTEDBLOB); 15655 pRender->SetLineColour(COLOUR_NONE); 15656 pRender->SetFillColour(COLOUR_UNSELECTEDBLOB); 15657 pRender->DrawBlob(End, BT_UNSELECTED); 15658 pRender->DrawBlob(End2,BT_UNSELECTED); 15659 } 15660 15661 // Put all the old attributes back 15662 pRender->RestoreContext(); 15663 #endif 15664 }
|
|
This method returns a shallow copy of the node with all Node pointers NULL. The function is virtual, and must be defined for all derived classes.
Reimplemented from NodeAttribute. Definition at line 15403 of file fillattr.cpp. 15404 { 15405 AttrBitmapTranspFill* NodeCopy = new AttrBitmapTranspFill(); 15406 if (NodeCopy == NULL) 15407 return NULL; 15408 15409 CopyNodeContents(NodeCopy); 15410 15411 return NodeCopy; 15412 }
|
|
Reimplemented from Node. Definition at line 15799 of file fillattr.cpp. 15800 { 15801 #ifdef DO_EXPORT 15802 return WritePreChildrenWeb(pFilter); 15803 #else 15804 return FALSE; 15805 #endif 15806 }
|
|
Writes the bitmap transparent fill record to the filter. > virtual BOOL AttrBitmapTranspFill::WritePreChildrenWeb(BaseCamelotFilter* pFilter)
Reimplemented from Node. Definition at line 15755 of file fillattr.cpp. 15756 { 15757 #ifdef DO_EXPORT 15758 ERROR2IF(pFilter == NULL,FALSE,"NULL filter param"); 15759 15760 BOOL ok = TRUE; 15761 15762 // Find the kernel bmp 15763 KernelBitmap *pBmp = Value.GetBitmap(); 15764 ERROR2IF(pBmp == NULL,FALSE,"CXaraFileNodeBitmap::WriteNodeBitmap pBmp is NULL"); 15765 15766 // Must write out the bitmap first 15767 INT32 BitmapRecordRef = pFilter->WriteRecord(pBmp); 15768 ERROR2IF(BitmapRecordRef == 0,FALSE,"CXaraFileNodeBitmap::WriteNodeBitmap BitmapRecordRef is 0"); 15769 15770 // Is the bmp reference ok? 15771 if (ok) ok = (BitmapRecordRef != 0); 15772 15773 CamelotFileRecord Rec(pFilter,TAG_BITMAPTRANSPARENTFILL,TAG_BITMAPTRANSPARENTFILL_SIZE); 15774 15775 if (ok) ok = Rec.Init(); 15776 if (ok) ok = Rec.WriteCoord(Value.StartPoint); 15777 if (ok) ok = Rec.WriteCoord(Value.EndPoint); 15778 if (ok) ok = Rec.WriteCoord(Value.EndPoint2); 15779 if (ok) ok = Rec.WriteBYTE(BYTE(Value.Transp)); 15780 if (ok) ok = Rec.WriteBYTE(BYTE(Value.EndTransp)); 15781 if (ok) ok = Rec.WriteBYTE(BYTE(Value.TranspType)); 15782 if (ok) ok = Rec.WriteReference(BitmapRecordRef); 15783 if (ok) ok = Rec.WriteDOUBLE ((double) GetProfile ().GetBias ()); 15784 if (ok) ok = Rec.WriteDOUBLE ((double) GetProfile ().GetGain ()); 15785 if (ok) ok = pFilter->Write(&Rec); 15786 15787 if (!ok) 15788 pFilter->GotError(_R(IDE_FILE_WRITE_ERROR)); 15789 15790 return ok; 15791 #else 15792 return FALSE; 15793 #endif 15794 }
|
|
Definition at line 2012 of file fillattr2.h. |