#include <freeinfo.h>
Inheritance diagram for FreeHandInfoBarOp:
Public Member Functions | |
FreeHandInfoBarOp () | |
Sets the info bars vars to NULL defaults. | |
~FreeHandInfoBarOp () | |
destructor | |
MsgResult | Message (Msg *Msg) |
Takes a look at the message and if it is for me it responds to it. Here the scroll bar for the freehand tool is Created and closed. It also responds to changes in the sliders position and tells the freehand tool to set its smoothing factor to something appropriate. | |
void | SetToolActiveState (BOOL IsToolActive) |
Allows the info bar to know if it is valid or not. | |
void | SetRetroState (BOOL CanRetroFit) |
Sets the Flag CanRetroFit and gets the infobar to redraw the static text item that says this. | |
void | SetRetroString () |
Sets the static text item in the freehand info bar to say either 'Retro' or nothing, depending on the state of the flag CanRetroFit. | |
void | AddBrush () |
Tells the infobar that a new brush has been added to the brush component. This function finds the last created brush and selects it as the head of the list of brushes to be displayed in the brush combo. | |
void | AddBrush (BrushHandle Handle) |
Overridden version of above function. In this version we specify the handle of the brush to add, plus we do not select the new brush. | |
virtual void | UpdateState () |
Sets the state of button on the bar to keep them up to date. | |
BrushData | GetBrushDataFromSelection (BOOL *pSelEmpty=NULL) |
if there is one and only one brush in the selection the this function returns a brush data object representing its current state. If there is any other number then a data item is still returned but it will not be valid | |
void | SetDefaultStrokeInCombo () |
Sets the bitmap showing in the brush combo to be that of the default stroke !!! Note - not actually working at the moment. | |
void | RemoveBrush (BrushHandle Handle) |
to remove the specified brush from the brush list | |
Static Public Member Functions | |
static CBrushGadget * | GetBrushGadget () |
Public Attributes | |
FreeHandTool * | pTool |
BOOL | CanRetroFit |
Protected Member Functions | |
BOOL | InitBrushList () |
creates the brush list if it does not exist, if it already exists then we just empty it. Then we fill it with brush handles in the order that they exist in the brush component. | |
BOOL | ReInitBrushList () |
This takes care of a situation where we might add a number of brushes at once and want to update the brush list without forgetting the order of the list. This kind of thing arises when we load in a new document. Anyway what we do is compare the number of brushes with the number of items in the list, and if there is a mismatch we add the new ones to the end of the list. | |
BOOL | SetBrushListToControl () |
Goes through the brush list in order, creating attribute nodes from the brush handles and setting them into the combo. | |
BOOL | SetStrokesToControl () |
Creates stroke shape items and adds them to the stroke combo. | |
void | HandleBrushSelectChange () |
Called when a DIM_SELECTION message is received from _R(IDC_BRUSHTYPE). | |
void | HandleCreate () |
Called when a DIM_CREATE message is received. | |
void | HandleSliderPosChanging () |
Called when a SLIDER_POS_CHANGING message is received. | |
void | HandleStrokeSelectChange () |
Called when a DIM_SELECTION message is received from _R(IDC_STROKETYPE). | |
void | LaunchBrushEditDialog () |
void | SetHeadOfListSelected () |
void | SetDisplayBrush () |
void | SetBrushComboFromSelection () |
BrushHandle | GetBrushHandleFromSelection (BOOL *pSelEmpty=NULL) |
To find out if there are any brushed objects in the selection. | |
void | SetStrokeComboFromSelection () |
INT32 | GetStrokeIndexFromValueFunctionID (ValueFunctionID ID) |
Bit of a last minute bodge this, as we are trying to implement a small subset of the value functions into the stroke combo at fixed indexes. We will map the ValueFunctionID used by the ValueFunctions to the index into the combo. | |
BrushHandle | GetBrushHandleFromControlIndex (BrushHandle Index) |
Retrieves the brushhandle of the Indexth item in the list. | |
INT32 | GetControlIndexFromBrushHandle (BrushHandle Handle) |
Retrieves the list position of the handle. | |
void | SetHeadOfList (BrushHandle Handle) |
Sets the given handle to the head of the 'most popular brush' list, also goes through the rest of the list and removes other instances of it, so as not to duplicate. | |
Protected Attributes | |
BOOL | ControlsExist |
BOOL | DropDownInited |
INT32 | m_LastSmoothness |
BrushList * | m_pBrushList |
BrushHandle | m_DisplayBrush |
CBitmapGridDropDown | m_bgddBrushType |
CBitmapGridDropDown | m_bgddStrokes |
INT32 | m_SelectedStroke |
Static Protected Attributes | |
static CBrushGadget | BrushGadget |
Definition at line 127 of file freeinfo.h.
|
Sets the info bars vars to NULL defaults.
Definition at line 200 of file freeinfo.cpp. 00201 { 00202 DlgResID = _R(IDD_FREEHANDTOOL); 00203 00204 // Don't know about the tool and can not retro fit to start with 00205 pTool = NULL; 00206 CanRetroFit = FALSE; 00207 00208 // The Controls hasve not been created yet 00209 ControlsExist = FALSE; 00210 00211 m_pBrushList = NULL; 00212 00213 m_DisplayBrush = BrushHandle_NoBrush; 00214 00215 /* m_pStrokeList = NULL; 00216 00217 m_DisplayStroke = StrokeHandle_NoStroke; 00218 */ 00219 00220 m_SelectedStroke = CONSTANT; // we want to start by displaying the constant stroke 00221 }
|
|
destructor
Definition at line 234 of file freeinfo.cpp. 00235 { 00236 if (m_pBrushList != NULL) 00237 { 00238 m_pBrushList->clear(); 00239 delete m_pBrushList; 00240 m_pBrushList = NULL; 00241 } 00242 00243 /* 00244 if (m_pStrokeList != NULL) 00245 { 00246 m_pStrokeList->RemoveAll(); 00247 delete m_pStrokeList; 00248 m_pStrokeList = NULL; 00249 } 00250 */ 00251 }
|
|
Overridden version of above function. In this version we specify the handle of the brush to add, plus we do not select the new brush.
Definition at line 612 of file freeinfo.cpp. 00613 { 00614 // Simply add this to the head of the list 00615 if (m_pBrushList == NULL) 00616 { 00617 // we might get here on start-up before the list is generated so just leave 00618 return; 00619 } 00620 m_pBrushList->push_back(Handle); 00621 00622 if (ControlsExist) 00623 { 00624 SetBrushListToControl(); 00625 SetDisplayBrush(); 00626 } 00627 }
|
|
Tells the infobar that a new brush has been added to the brush component. This function finds the last created brush and selects it as the head of the list of brushes to be displayed in the brush combo.
Definition at line 578 of file freeinfo.cpp. 00579 { 00580 UINT32 BrushNum = BrushComponent::GetNumberOfBrushes() - 1; 00581 00582 // Simply add this to the head of the list 00583 if (m_pBrushList == NULL) 00584 { 00585 ERROR3("Brush list is null in FreeHandInfoBarOp::AddBrush"); 00586 } 00587 SetHeadOfList((BrushHandle)BrushNum); 00588 m_DisplayBrush = 2; 00589 // display the new list 00590 if (ControlsExist) 00591 { 00592 SetBrushListToControl(); 00593 SetHeadOfListSelected(); 00594 } 00595 00596 }
|
|
if there is one and only one brush in the selection the this function returns a brush data object representing its current state. If there is any other number then a data item is still returned but it will not be valid
Definition at line 1644 of file freeinfo.cpp. 01645 { 01646 // find all the brushes in the current selection 01647 List NodeList; 01648 BevelTools::BuildListOfSelectedNodes(&NodeList, CC_RUNTIME_CLASS(AttrBrushType)); 01649 BrushData Data; // initialises to default values 01650 INT32 NumItems = NodeList.GetCount(); 01651 01652 // we can only retrieve a valid data item if there is a single item selected, 01653 // if there is any other number then we must return 01654 switch (NumItems) 01655 { 01656 case 0: 01657 if (pSelEmpty != NULL) 01658 *pSelEmpty = TRUE; 01659 NodeList.DeleteAll(); 01660 return Data; 01661 case 1: 01662 if (pSelEmpty != NULL) 01663 *pSelEmpty = FALSE; 01664 break; 01665 default: 01666 if (pSelEmpty != NULL) 01667 *pSelEmpty = FALSE; 01668 NodeList.DeleteAll(); 01669 return Data; 01670 } 01671 01672 // we've got an item, so find its applied brush attribute 01673 NodeListItem * pItem = (NodeListItem *)NodeList.GetHead(); 01674 01675 if (pItem) 01676 { 01677 Node* pBrush = pItem->pNode; 01678 if (pBrush) 01679 { 01680 AttrBrushType* pAttrBrush = (AttrBrushType*)pBrush; 01681 if (pAttrBrush->GetBrushHandle() != BrushHandle_NoBrush) 01682 { 01683 Data = pAttrBrush->GetBrushData(); 01684 01685 } 01686 } 01687 } 01688 NodeList.DeleteAll(); 01689 return Data; 01690 }
|
|
Definition at line 155 of file freeinfo.h. 00155 { return &BrushGadget;}
|
|
Retrieves the brushhandle of the Indexth item in the list.
Definition at line 2521 of file freeinfo.cpp. 02522 { 02523 BrushHandle RetVal = BrushHandle_NoBrush; 02524 if (m_pBrushList != NULL) 02525 { 02526 size_t i = (size_t)Index; // No, I don't know why it's declared to take a BrushHandle - bizarre - amb 02527 if (i<m_pBrushList->size()) 02528 { 02529 BrushList::const_iterator iter = m_pBrushList->begin(); 02530 for (size_t n=0; n<i; n++) iter++; 02531 return *iter; 02532 } 02533 } 02534 return RetVal; 02535 }
|
|
To find out if there are any brushed objects in the selection.
Definition at line 1707 of file freeinfo.cpp. 01708 { 01709 // find all the brushes in the current selection 01710 List NodeList; 01711 BevelTools::BuildListOfSelectedNodes(&NodeList, CC_RUNTIME_CLASS(AttrBrushType), TRUE); 01712 BrushData Data; // initialises to default values 01713 INT32 NumItems = NodeList.GetCount(); 01714 01715 BrushHandle SelHandle = BrushHandle_NoBrush; 01716 01717 if (NumItems != 0) 01718 { 01719 if (pSelEmpty !=NULL) 01720 *pSelEmpty = FALSE; 01721 // we've got an item, so find its applied brush attribute 01722 NodeListItem * pItem = (NodeListItem *)NodeList.GetHead(); 01723 // BrushHandle LastHandle = BrushHandle_NoBrush; 01724 BOOL bFirst = TRUE; 01725 01726 AttrBrushType* pAttrBrush = NULL; 01727 Node* pBrush = NULL; 01728 while (pItem) 01729 { 01730 pBrush = pItem->pNode; 01731 if (pBrush) 01732 { 01733 pAttrBrush = (AttrBrushType*)pBrush; 01734 if (bFirst) 01735 { 01736 SelHandle = pAttrBrush->GetBrushHandle(); 01737 bFirst = FALSE; 01738 } 01739 else 01740 { 01741 // if we have different brushes then show the 'many' string 01742 if (pAttrBrush->GetBrushHandle() != SelHandle) 01743 { 01744 SelHandle = BrushHandle_Many; 01745 break; 01746 } 01747 } 01748 } 01749 pItem = (NodeListItem *)NodeList.GetNext(pItem); 01750 } 01751 } 01752 else 01753 { 01754 // see if we actually have anything in the selection 01755 SelRange* pSel = GetApplication()->FindSelection(); 01756 if (pSel && pSel->IsEmpty()) 01757 { 01758 if (pSelEmpty != NULL) 01759 *pSelEmpty = TRUE; 01760 } 01761 } 01762 NodeList.DeleteAll(); 01763 return SelHandle; 01764 }
|
|
Retrieves the list position of the handle.
Definition at line 2549 of file freeinfo.cpp. 02550 { 02551 INT32 Retval = -1; 02552 if (m_pBrushList != NULL) 02553 { 02554 INT32 Counter = 0; 02555 BrushList::const_iterator iter; 02556 for (iter = m_pBrushList->begin(); iter != m_pBrushList->end(); iter++) 02557 { 02558 if (*iter == Handle) 02559 { 02560 Retval = Counter; 02561 break; 02562 } 02563 Counter++; 02564 } 02565 } 02566 return Retval; 02567 }
|
|
Bit of a last minute bodge this, as we are trying to implement a small subset of the value functions into the stroke combo at fixed indexes. We will map the ValueFunctionID used by the ValueFunctions to the index into the combo.
Definition at line 2395 of file freeinfo.cpp. 02396 { 02397 INT32 ReturnVal = CONSTANT; // if we get an invalid ID we will just stick to this 02398 switch (ID) 02399 { 02400 case ValueFunctionID_None: 02401 break; 02402 case ValueFunctionID_Constant: 02403 break; 02404 case ValueFunctionID_RampS: 02405 ReturnVal = RAMPS; 02406 break; 02407 case ValueFunctionID_RampS2: 02408 ReturnVal = RAMPS2; 02409 break; 02410 case ValueFunctionID_Teardrop: 02411 ReturnVal = TEARDROP; 02412 break; 02413 case ValueFunctionID_Ellipse: 02414 ReturnVal = ELLIPSE; 02415 break; 02416 case ValueFunctionID_Blip: 02417 ReturnVal = BLIP; 02418 break; 02419 case ValueFunctionID_RampL: 02420 ReturnVal = RAMPL; 02421 break; 02422 case ValueFunctionID_RampL2: 02423 ReturnVal = RAMPL2; 02424 break; 02425 case ValueFunctionID_DoubleRampS: 02426 ReturnVal = DOUBLERAMPS; 02427 break; 02428 case ValueFunctionID_TeardropCurvedEnd: 02429 ReturnVal = TEARDROPCURVEDEND; 02430 break; 02431 case ValueFunctionID_SawTooth: 02432 ReturnVal = SAWTOOTH; 02433 break; 02434 case ValueFunctionID_Propeller: 02435 ReturnVal = PROPELLER; 02436 break; 02437 case ValueFunctionID_Intestine: 02438 ReturnVal = INTESTINE; 02439 break; 02440 case ValueFunctionID_Decay: 02441 ReturnVal = DECAY; 02442 break; 02443 case ValueFunctionID_BevelEnds: 02444 ReturnVal = BEVELENDS; 02445 break; 02446 case ValueFunctionID_SS_Yacht: 02447 ReturnVal = SS_Yacht; 02448 break; 02449 case ValueFunctionID_SS_Iron: 02450 ReturnVal = SS_Iron; 02451 break; 02452 case ValueFunctionID_SS_Reed: 02453 ReturnVal = SS_Reed; 02454 break; 02455 case ValueFunctionID_SS_Meteor: 02456 ReturnVal = SS_Meteor; 02457 break; 02458 case ValueFunctionID_SS_Petal: 02459 ReturnVal = SS_Petal; 02460 break; 02461 case ValueFunctionID_SS_Comet: 02462 ReturnVal = SS_Comet; 02463 break; 02464 case ValueFunctionID_SS_Fallout: 02465 ReturnVal = SS_Fallout; 02466 break; 02467 case ValueFunctionID_SS_Torpedo: 02468 ReturnVal = SS_Torpedo; 02469 break; 02470 case ValueFunctionID_SS_Missile: 02471 ReturnVal = SS_Missile; 02472 break; 02473 case ValueFunctionID_SS_Convex: 02474 ReturnVal = SS_Convex; 02475 break; 02476 case ValueFunctionID_SS_Concave: 02477 ReturnVal = SS_Concave; 02478 break; 02479 case ValueFunctionID_SS_SlimBlip: 02480 ReturnVal = SS_SlimBlip; 02481 break; 02482 case ValueFunctionID_SS_Cigar: 02483 ReturnVal = SS_Cigar; 02484 break; 02485 case ValueFunctionID_SS_Cigar2: 02486 ReturnVal = SS_Cigar2; 02487 break; 02488 case ValueFunctionID_SS_Cigar3: 02489 ReturnVal = SS_Cigar3; 02490 break; 02491 case ValueFunctionID_SS_OceanLiner: 02492 ReturnVal = SS_OceanLiner; 02493 break; 02494 case ValueFunctionID_SS_Goldfish: 02495 ReturnVal = SS_Goldfish; 02496 break; 02497 case ValueFunctionID_SS_Barb: 02498 ReturnVal = SS_Barb; 02499 break; 02500 02501 default: 02502 ERROR3("Illegal ValueFunction ID"); 02503 break; 02504 } 02505 02506 return ReturnVal; 02507 }
|
|
Called when a DIM_SELECTION message is received from _R(IDC_BRUSHTYPE).
Definition at line 755 of file freeinfo.cpp. 00756 { 00757 //#ifdef BUILDNEWBRUSHES 00758 00759 // if we don't have a document then forget it, though its not erroneous 00760 Document* pDoc = Document::GetCurrent(); 00761 if (!pDoc) 00762 return; 00763 00764 // Someone selected a new brush 00765 INT32 iIndex = m_bgddBrushType.GetSelected(); 00766 00767 BrushHandle SelHandle; 00768 00769 // the zeroth index is always reserved for the 'no-brush' 00770 // if (iIndex == 0) 00771 // SelHandle = BrushHandle_NoBrush; 00772 // else 00773 SelHandle = GetBrushHandleFromControlIndex(iIndex); 00774 //TRACEUSER( "Diccon", _T("Brush Combo: Handle = %d, Index = %d\n"), SelHandle, Index); 00775 00776 // tell the tool our selection has changed 00777 if (pTool != NULL) 00778 { 00779 pTool->SetBrushUpdateState(UPDATE_ONIDLE); 00780 pTool->BrushSelected(SelHandle); 00781 } 00782 00783 if (SelHandle != BrushHandle_NoBrush) 00784 { 00785 SetHeadOfList(SelHandle); 00786 SetBrushListToControl(); 00787 m_DisplayBrush = SelHandle; 00788 // TRACEUSER( "Diccon", _T("Brush Combo: Handle = %d, Index = %d\n"), SelHandle, Index);SetBrushListToControl(); 00789 SetHeadOfListSelected(); 00790 } 00791 else 00792 { 00793 m_DisplayBrush = SelHandle; 00794 // SetDisplayBrush(); 00795 } 00796 00797 00798 00799 //#endif 00800 }
|
|
Called when a DIM_CREATE message is received.
Definition at line 677 of file freeinfo.cpp. 00678 { 00679 if (WindowID!=NULL) 00680 { 00681 // Set the state of the pressure button according to the Op's state. 00682 // Why buttons on infobars can't dynamically auto-connect to their ops is beyond me 00683 UpdateState(); 00684 00685 // Set the range of the control 00686 SetGadgetRange(_R(IDC_FREEHANDSLIDER), 0, 100, 5); 00687 SetGadgetBitmaps(_R(IDC_FREEHANDSLIDER), _R(IDB_SLIDERBASE), _R(IDB_SLIDERSLIDER)); 00688 00689 // and its position 00690 INT32 Smoothness = 50; 00691 if (pTool!=NULL) 00692 Smoothness = pTool->GetSmoothness(); 00693 SetLongGadgetValue(_R(IDC_FREEHANDSLIDER), Smoothness); 00694 00695 // Set the percentage string 00696 TCHAR Str[32]; 00697 String_32 jcf(_R(IDS_PERCENT_FORMAT)); 00698 camSnprintf(Str, 32, jcf, (INT32) Smoothness); 00699 String_32 PercentStr(Str); 00700 SetStringGadgetValue(_R(IDC_FREEHANDPERCENT), PercentStr); 00701 00702 // Set the Retro field (Will be empty initially) 00703 if (pTool!=NULL) 00704 CanRetroFit = pTool->IsRetroPathStillValid(); 00705 SetRetroString(); 00706 00707 // only initialise the brush list once otherwise we upset the order 00708 if (m_pBrushList == NULL || m_pBrushList->size() == 0) 00709 InitBrushList(); 00710 00711 // Create the brush type combobox. 00712 m_bgddBrushType.Init(WindowID, _R(IDC_BRUSHTYPE)); 00713 m_bgddBrushType.SetColumns(3); 00714 m_bgddBrushType.SetItemSize(wxSize(75, 40)); 00715 00716 // Create the stroke type combobox. 00717 m_bgddStrokes.Init(WindowID, _R(IDC_STROKETYPE)); 00718 m_bgddStrokes.SetColumns(3); 00719 m_bgddStrokes.SetItemSize(wxSize(50, 50)); 00720 00721 // create our brush list objects and put them in the control 00722 SetBrushListToControl(); 00723 00724 // make sure the combo shows the right thing 00725 SetBrushComboFromSelection(); 00726 //#ifdef BUILDNEWBRUSHES 00727 // set up the brush gadget 00728 PORTNOTE("other", "Disabled BrushGadget") 00729 #ifndef EXCLUDE_FROM_XARALX 00730 BrushGadget.LinkControlButton (this, _R(IDC_EDITBRUSH), _R(IDBBL_BRUSHEDIT), _R(IDS_BRUSHEDITDLG)); 00731 BrushGadget.DisableTimeStamping (); 00732 #endif 00733 //#endif 00734 00735 } 00736 // Mark the controls as existing 00737 ControlsExist = TRUE; 00738 }
|
|
Called when a SLIDER_POS_CHANGING message is received.
Definition at line 1581 of file freeinfo.cpp. 01582 { 01583 // Find the current scrollers position 01584 TCHAR Str[32]; 01585 BOOL Valid; 01586 INT32 Result = GetLongGadgetValue(_R(IDC_FREEHANDSLIDER), 0, 100, 0, &Valid); 01587 01588 // Build the Percentage string and set it 01589 String_32 jcf(_R(IDS_PERCENT_FORMAT)); 01590 camSnprintf(Str, 32, jcf, (INT32) Result); 01591 String_8 PercentStr(Str); 01592 SetStringGadgetValue(_R(IDC_FREEHANDPERCENT), PercentStr); 01593 01594 // Tell the freehand tool about the new smoothness 01595 if (Valid) 01596 { 01597 // Set the smoothness and re-fit the path if possible 01598 pTool->SetSmoothness(Result); 01599 pTool->RetroFitChanging(); 01600 } 01601 01602 }
|
|
Called when a DIM_SELECTION message is received from _R(IDC_STROKETYPE).
Definition at line 814 of file freeinfo.cpp. 00815 { 00816 // if we don't have a document then forget it, though its not erroneous 00817 Document* pDoc = Document::GetCurrent(); 00818 if (!pDoc) 00819 return; 00820 00821 // Someone selected a new brush 00822 INT32 Index = m_bgddStrokes.GetSelected(); 00823 00824 00825 // what we are going to do is apply a stroke attribute and a variable width attribute at the 00826 // same time via the attribute manager. This will require making a list 00827 00828 List AttribsList; 00829 00830 // create new list items 00831 NodeAttributePtrItem* pStrokeItem = new NodeAttributePtrItem; 00832 if (pStrokeItem == NULL) 00833 { 00834 ERROR3("Unable to create new stroke item in FreeHandInfoBarOp::HandleStrokeSelectChange"); 00835 return; 00836 } 00837 00838 00839 NodeAttributePtrItem* pVarWidthItem = new NodeAttributePtrItem; 00840 if (pVarWidthItem == NULL) 00841 { 00842 ERROR3("Unable to create new variable width item in FreeHandInfoBarOp::HandleStrokeSelectChange"); 00843 delete pStrokeItem; 00844 return; 00845 } 00846 00847 NodeAttribute* pVarWidth = NULL; 00848 NodeAttribute* pStrokeType = NULL; 00849 00850 // now make a pathprocessor and a stroke attribute, note that if we apply a CONSTANT stroke we don't need to 00851 PathProcessorStroke* PPS = NULL; 00852 if (Index != CONSTANT) 00853 { 00854 PPS = new PathProcessorStroke; 00855 if (PPS == NULL) 00856 { 00857 ERROR3("Unable to create new path processor in FreeHandInfoBarOp::HandleStrokeSelectChange"); 00858 delete pStrokeItem; 00859 delete pVarWidthItem; 00860 return; 00861 } 00862 } 00863 00864 StrokeTypeAttrValue NewStroke(PPS); 00865 pStrokeType = NewStroke.MakeNode(); 00866 00867 if (pStrokeType == NULL) 00868 { 00869 ERROR3("Unable to create new stroke attribute in FreeHandInfoBarOp::HandleStrokeSelectChange"); 00870 delete pStrokeItem; 00871 delete pVarWidthItem; 00872 delete PPS; 00873 return; 00874 } 00875 00876 pStrokeItem->NodeAttribPtr = pStrokeType; 00877 00878 00879 switch (Index) 00880 { 00881 case CONSTANT: 00882 { 00883 // Create a default variable width value (should get optimised out when applied to the doc) 00884 VariableWidthAttrValue VarWidth; // creates a CONSTANT variable width 00885 00886 pVarWidth = VarWidth.MakeNode(); 00887 00888 if (pVarWidth) 00889 { 00890 pVarWidthItem->NodeAttribPtr = pVarWidth; 00891 } 00892 else 00893 { 00894 delete pVarWidthItem; 00895 return; 00896 } 00897 } 00898 break; 00899 00900 case RAMPL: 00901 { 00902 // create our attrval with a valuefunction 00903 VariableWidthAttrValue VarWidth(new ValueFunctionRampL); 00904 00905 pVarWidth = VarWidth.MakeNode(); 00906 00907 if (pVarWidth) 00908 { 00909 pVarWidthItem->NodeAttribPtr = pVarWidth; 00910 } 00911 else 00912 { 00913 delete pStrokeItem; 00914 delete pVarWidthItem; 00915 delete pStrokeType; 00916 return; 00917 } 00918 } 00919 break; 00920 00921 case RAMPL2: 00922 { 00923 // create our attrval with a valuefunction 00924 VariableWidthAttrValue VarWidth(new ValueFunctionRampL2); 00925 00926 pVarWidth = VarWidth.MakeNode(); 00927 00928 if (pVarWidth) 00929 { 00930 pVarWidthItem->NodeAttribPtr = pVarWidth; 00931 } 00932 else 00933 { 00934 delete pStrokeItem; 00935 delete pVarWidthItem; 00936 delete pStrokeType; 00937 return; 00938 } 00939 } 00940 break; 00941 00942 case RAMPS: 00943 { 00944 // create our attrval with a valuefunction 00945 VariableWidthAttrValue VarWidth(new ValueFunctionRampS); 00946 00947 pVarWidth = VarWidth.MakeNode(); 00948 00949 if (pVarWidth) 00950 { 00951 pVarWidthItem->NodeAttribPtr = pVarWidth; 00952 } 00953 else 00954 { 00955 delete pStrokeItem; 00956 delete pVarWidthItem; 00957 delete pStrokeType; 00958 return; 00959 } 00960 } 00961 break; 00962 00963 case RAMPS2: 00964 { 00965 // create our attrval with a valuefunction 00966 VariableWidthAttrValue VarWidth(new ValueFunctionRampS2); 00967 00968 pVarWidth = VarWidth.MakeNode(); 00969 00970 if (pVarWidth) 00971 { 00972 pVarWidthItem->NodeAttribPtr = pVarWidth; 00973 } 00974 else 00975 { 00976 delete pStrokeItem; 00977 delete pVarWidthItem; 00978 delete pStrokeType; 00979 return; 00980 } 00981 } 00982 break; 00983 00984 case BLIP: 00985 { 00986 // create our attrval with a valuefunction 00987 VariableWidthAttrValue VarWidth(new ValueFunctionBlip); 00988 00989 pVarWidth = VarWidth.MakeNode(); 00990 00991 if (pVarWidth) 00992 { 00993 pVarWidthItem->NodeAttribPtr = pVarWidth; 00994 } 00995 else 00996 { 00997 delete pStrokeItem; 00998 delete pVarWidthItem; 00999 delete pStrokeType; 01000 return; 01001 } 01002 } 01003 break; 01004 01005 case ELLIPSE: 01006 { 01007 // create our attrval with a valuefunction 01008 VariableWidthAttrValue VarWidth(new ValueFunctionEllipse); 01009 01010 pVarWidth = VarWidth.MakeNode(); 01011 01012 if (pVarWidth) 01013 { 01014 pVarWidthItem->NodeAttribPtr = pVarWidth; 01015 } 01016 else 01017 { 01018 delete pStrokeItem; 01019 delete pVarWidthItem; 01020 delete pStrokeType; 01021 return; 01022 } 01023 01024 } 01025 break; 01026 01027 case TEARDROP: 01028 { 01029 // create our attrval with a valuefunction 01030 VariableWidthAttrValue VarWidth(new ValueFunctionTeardrop); 01031 01032 pVarWidth = VarWidth.MakeNode(); 01033 01034 if (pVarWidth) 01035 { 01036 pVarWidthItem->NodeAttribPtr = pVarWidth; 01037 } 01038 else 01039 { 01040 delete pStrokeItem; 01041 delete pVarWidthItem; 01042 delete pStrokeType; 01043 return; 01044 } 01045 } 01046 break; 01047 01048 case TEARDROPCURVEDEND: 01049 { 01050 // create our attrval with a valuefunction 01051 VariableWidthAttrValue VarWidth(new ValueFunctionTeardropCurvedEnd); 01052 01053 pVarWidth = VarWidth.MakeNode(); 01054 01055 if (pVarWidth) 01056 { 01057 pVarWidthItem->NodeAttribPtr = pVarWidth; 01058 } 01059 else 01060 { 01061 delete pStrokeItem; 01062 delete pVarWidthItem; 01063 delete pStrokeType; 01064 return; 01065 } 01066 } 01067 break; 01068 01069 case DOUBLERAMPS: 01070 { 01071 // create our attrval with a valuefunction 01072 VariableWidthAttrValue VarWidth(new ValueFunctionDoubleRampS); 01073 01074 pVarWidth = VarWidth.MakeNode(); 01075 01076 if (pVarWidth) 01077 { 01078 pVarWidthItem->NodeAttribPtr = pVarWidth; 01079 } 01080 else 01081 { 01082 delete pStrokeItem; 01083 delete pVarWidthItem; 01084 delete pStrokeType; 01085 return; 01086 } 01087 } 01088 break; 01089 01090 case SAWTOOTH: 01091 { 01092 // create our attrval with a valuefunction 01093 VariableWidthAttrValue VarWidth(new ValueFunctionSawTooth); 01094 01095 pVarWidth = VarWidth.MakeNode(); 01096 01097 if (pVarWidth) 01098 { 01099 pVarWidthItem->NodeAttribPtr = pVarWidth; 01100 } 01101 else 01102 { 01103 delete pStrokeItem; 01104 delete pVarWidthItem; 01105 delete pStrokeType; 01106 return; 01107 } 01108 } 01109 break; 01110 01111 case PROPELLER: 01112 { 01113 // create our attrval with a valuefunction 01114 VariableWidthAttrValue VarWidth(new ValueFunctionPropeller); 01115 01116 pVarWidth = VarWidth.MakeNode(); 01117 01118 if (pVarWidth) 01119 { 01120 pVarWidthItem->NodeAttribPtr = pVarWidth; 01121 } 01122 else 01123 { 01124 delete pStrokeItem; 01125 delete pVarWidthItem; 01126 delete pStrokeType; 01127 return; 01128 } 01129 } 01130 break; 01131 01132 case INTESTINE: 01133 { 01134 // create our attrval with a valuefunction 01135 VariableWidthAttrValue VarWidth(new ValueFunctionIntestine); 01136 01137 pVarWidth = VarWidth.MakeNode(); 01138 01139 if (pVarWidth) 01140 { 01141 pVarWidthItem->NodeAttribPtr = pVarWidth; 01142 } 01143 else 01144 { 01145 delete pStrokeItem; 01146 delete pVarWidthItem; 01147 delete pStrokeType; 01148 return; 01149 } 01150 } 01151 break; 01152 01153 case DECAY: 01154 { 01155 // create our attrval with a valuefunction 01156 VariableWidthAttrValue VarWidth(new ValueFunctionDecay); 01157 01158 pVarWidth = VarWidth.MakeNode(); 01159 01160 if (pVarWidth) 01161 { 01162 pVarWidthItem->NodeAttribPtr = pVarWidth; 01163 } 01164 else 01165 { 01166 delete pStrokeItem; 01167 delete pVarWidthItem; 01168 delete pStrokeType; 01169 return; 01170 } 01171 } 01172 break; 01173 01174 case BEVELENDS: 01175 { 01176 // create our attrval with a valuefunction 01177 VariableWidthAttrValue VarWidth(new ValueFunctionBevelEnds); 01178 01179 pVarWidth = VarWidth.MakeNode(); 01180 01181 if (pVarWidth) 01182 { 01183 pVarWidthItem->NodeAttribPtr = pVarWidth; 01184 } 01185 else 01186 { 01187 delete pStrokeItem; 01188 delete pVarWidthItem; 01189 delete pStrokeType; 01190 return; 01191 } 01192 } 01193 break; 01194 01195 case SS_Yacht: 01196 { 01197 // create our attrval with a valuefunction 01198 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Yacht); 01199 01200 pVarWidth = VarWidth.MakeNode(); 01201 01202 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01203 else 01204 { 01205 delete pStrokeItem; 01206 delete pVarWidthItem; 01207 delete pStrokeType; 01208 return; 01209 } 01210 } 01211 break; 01212 01213 case SS_Iron: 01214 { 01215 // create our attrval with a valuefunction 01216 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Iron); 01217 01218 pVarWidth = VarWidth.MakeNode(); 01219 01220 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01221 else 01222 { 01223 delete pStrokeItem; 01224 delete pVarWidthItem; 01225 delete pStrokeType; 01226 return; 01227 } 01228 } 01229 break; 01230 01231 case SS_Reed: 01232 { 01233 // create our attrval with a valuefunction 01234 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Reed); 01235 01236 pVarWidth = VarWidth.MakeNode(); 01237 01238 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01239 else 01240 { 01241 delete pStrokeItem; 01242 delete pVarWidthItem; 01243 delete pStrokeType; 01244 return; 01245 } 01246 } 01247 break; 01248 01249 case SS_Meteor: 01250 { 01251 // create our attrval with a valuefunction 01252 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Meteor); 01253 01254 pVarWidth = VarWidth.MakeNode(); 01255 01256 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01257 else 01258 { 01259 delete pStrokeItem; 01260 delete pVarWidthItem; 01261 delete pStrokeType; 01262 return; 01263 } 01264 } 01265 break; 01266 01267 case SS_Petal: 01268 { 01269 // create our attrval with a valuefunction 01270 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Petal); 01271 01272 pVarWidth = VarWidth.MakeNode(); 01273 01274 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01275 else 01276 { 01277 delete pStrokeItem; 01278 delete pVarWidthItem; 01279 delete pStrokeType; 01280 return; 01281 } 01282 } 01283 break; 01284 01285 case SS_Comet: 01286 { 01287 // create our attrval with a valuefunction 01288 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Comet); 01289 01290 pVarWidth = VarWidth.MakeNode(); 01291 01292 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01293 else 01294 { 01295 delete pStrokeItem; 01296 delete pVarWidthItem; 01297 delete pStrokeType; 01298 return; 01299 } 01300 } 01301 break; 01302 01303 case SS_Fallout: 01304 { 01305 // create our attrval with a valuefunction 01306 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Fallout); 01307 01308 pVarWidth = VarWidth.MakeNode(); 01309 01310 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01311 else 01312 { 01313 delete pStrokeItem; 01314 delete pVarWidthItem; 01315 delete pStrokeType; 01316 return; 01317 } 01318 } 01319 break; 01320 01321 case SS_Torpedo: 01322 { 01323 // create our attrval with a valuefunction 01324 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Torpedo); 01325 01326 pVarWidth = VarWidth.MakeNode(); 01327 01328 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01329 else 01330 { 01331 delete pStrokeItem; 01332 delete pVarWidthItem; 01333 delete pStrokeType; 01334 return; 01335 } 01336 } 01337 break; 01338 01339 case SS_Missile: 01340 { 01341 // create our attrval with a valuefunction 01342 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Missile); 01343 01344 pVarWidth = VarWidth.MakeNode(); 01345 01346 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01347 else 01348 { 01349 delete pStrokeItem; 01350 delete pVarWidthItem; 01351 delete pStrokeType; 01352 return; 01353 } 01354 } 01355 break; 01356 01357 case SS_Convex: 01358 { 01359 // create our attrval with a valuefunction 01360 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Convex); 01361 01362 pVarWidth = VarWidth.MakeNode(); 01363 01364 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01365 else 01366 { 01367 delete pStrokeItem; 01368 delete pVarWidthItem; 01369 delete pStrokeType; 01370 return; 01371 } 01372 } 01373 break; 01374 01375 case SS_Concave: 01376 { 01377 // create our attrval with a valuefunction 01378 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Concave); 01379 01380 pVarWidth = VarWidth.MakeNode(); 01381 01382 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01383 else 01384 { 01385 delete pStrokeItem; 01386 delete pVarWidthItem; 01387 delete pStrokeType; 01388 return; 01389 } 01390 } 01391 break; 01392 01393 case SS_SlimBlip: 01394 { 01395 // create our attrval with a valuefunction 01396 VariableWidthAttrValue VarWidth(new ValueFunctionSS_SlimBlip); 01397 01398 pVarWidth = VarWidth.MakeNode(); 01399 01400 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01401 else 01402 { 01403 delete pStrokeItem; 01404 delete pVarWidthItem; 01405 delete pStrokeType; 01406 return; 01407 } 01408 } 01409 break; 01410 01411 case SS_Cigar: 01412 { 01413 // create our attrval with a valuefunction 01414 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Cigar); 01415 01416 pVarWidth = VarWidth.MakeNode(); 01417 01418 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01419 else 01420 { 01421 delete pStrokeItem; 01422 delete pVarWidthItem; 01423 delete pStrokeType; 01424 return; 01425 } 01426 } 01427 break; 01428 case SS_Cigar2: 01429 { 01430 // create our attrval with a valuefunction 01431 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Cigar2); 01432 01433 pVarWidth = VarWidth.MakeNode(); 01434 01435 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01436 else 01437 { 01438 delete pStrokeItem; 01439 delete pVarWidthItem; 01440 delete pStrokeType; 01441 return; 01442 } 01443 } 01444 break; 01445 01446 case SS_Cigar3: 01447 { 01448 // create our attrval with a valuefunction 01449 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Cigar3); 01450 01451 pVarWidth = VarWidth.MakeNode(); 01452 01453 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01454 else 01455 { 01456 delete pStrokeItem; 01457 delete pVarWidthItem; 01458 delete pStrokeType; 01459 return; 01460 } 01461 } 01462 break; 01463 01464 case SS_OceanLiner: 01465 { 01466 // create our attrval with a valuefunction 01467 VariableWidthAttrValue VarWidth(new ValueFunctionSS_OceanLiner); 01468 01469 pVarWidth = VarWidth.MakeNode(); 01470 01471 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01472 else 01473 { 01474 delete pStrokeItem; 01475 delete pVarWidthItem; 01476 delete pStrokeType; 01477 return; 01478 } 01479 } 01480 break; 01481 01482 case SS_Goldfish: 01483 { 01484 // create our attrval with a valuefunction 01485 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Goldfish); 01486 01487 pVarWidth = VarWidth.MakeNode(); 01488 01489 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01490 else 01491 { 01492 delete pStrokeItem; 01493 delete pVarWidthItem; 01494 delete pStrokeType; 01495 return; 01496 } 01497 } 01498 break; 01499 01500 case SS_Barb: 01501 { 01502 // create our attrval with a valuefunction 01503 VariableWidthAttrValue VarWidth(new ValueFunctionSS_Barb); 01504 01505 pVarWidth = VarWidth.MakeNode(); 01506 01507 if (pVarWidth) { pVarWidthItem->NodeAttribPtr = pVarWidth; } 01508 else 01509 { 01510 delete pStrokeItem; 01511 delete pVarWidthItem; 01512 delete pStrokeType; 01513 return; 01514 } 01515 } 01516 break; 01517 01518 default: 01519 { 01520 ERROR3("Unrecognised stroke type in HandleStrokeSelectChange"); 01521 delete pStrokeItem; 01522 delete pVarWidthItem; 01523 delete pStrokeType; 01524 m_SelectedStroke = CONSTANT; 01525 return; 01526 } 01527 } 01528 01529 01530 // now if the selection is empty then we want to update our selected stroke member 01531 SelRange* pSel = GetApplication()->FindSelection(); 01532 if (pSel) 01533 { 01534 // recall that the indexes in the control are 1 greater than our enum constants 01535 if (pSel->IsEmpty()) 01536 m_SelectedStroke = Index; 01537 01538 // update the selection bounds 01539 pSel->UpdateParentBoundsOfSelection(); 01540 } 01541 01542 01543 // OK so now we should have two ListItems to add to the list, or only one if 01544 // its a CONSTANT stroke 01545 01546 if (pStrokeItem != NULL) 01547 AttribsList.AddTail(pStrokeItem); 01548 01549 if (pVarWidthItem != NULL) 01550 AttribsList.AddTail(pVarWidthItem); 01551 01552 // apply those attributes! 01553 AttributeManager::AttributesSelected(AttribsList, _R(IDS_STROKEAPPLY_UNDO)); 01554 01555 01556 // We don't need the list of attrs anymore 01557 NodeAttributePtrItem* pAttrItem = (NodeAttributePtrItem*)AttribsList.GetHead(); 01558 while (pAttrItem) 01559 { 01560 delete (pAttrItem->NodeAttribPtr); 01561 pAttrItem->NodeAttribPtr = NULL; 01562 pAttrItem = (NodeAttributePtrItem*)AttribsList.GetNext(pAttrItem); 01563 } 01564 AttribsList.DeleteAll(); // tidyup 01565 01566 }
|
|
creates the brush list if it does not exist, if it already exists then we just empty it. Then we fill it with brush handles in the order that they exist in the brush component.
Definition at line 1778 of file freeinfo.cpp. 01779 { 01780 if (m_pBrushList == NULL) 01781 m_pBrushList = new BrushList; 01782 01783 if (m_pBrushList == NULL) 01784 return FALSE; 01785 01786 m_pBrushList->clear(); 01787 01788 UINT32 NumBrushes = BrushComponent::GetNumberOfBrushes(); 01789 01790 for (UINT32 Index = 0; Index < NumBrushes; Index++) 01791 { 01792 BrushHandle Handle = Index; 01793 m_pBrushList->push_back(Handle); 01794 } 01795 01796 return TRUE; 01797 }
|
|
Definition at line 1616 of file freeinfo.cpp. 01617 { 01618 01619 // launch the dialog 01620 OpDescriptor* pDesc = OpDescriptor::FindOpDescriptor(OPTOKEN_BRUSHEDIT_DLG); 01621 if (pDesc != NULL) 01622 { 01623 pDesc->Invoke(); 01624 } 01625 01626 }
|
|
Takes a look at the message and if it is for me it responds to it. Here the scroll bar for the freehand tool is Created and closed. It also responds to changes in the sliders position and tells the freehand tool to set its smoothing factor to something appropriate.
Reimplemented from InformationBarOp. Definition at line 269 of file freeinfo.cpp. 00270 { 00271 if (IS_OUR_DIALOG_MSG(Message)) 00272 { 00273 DialogMsg* Msg = (DialogMsg*)Message; 00274 00275 // Check if the message is a CANCEL 00276 if (Msg->DlgMsg == DIM_CANCEL) 00277 { 00278 // Mark the controls as no longer existing 00279 ControlsExist = FALSE; 00280 00281 // Close the dialog 00282 Close(); 00283 } 00284 00285 else if (Msg->DlgMsg == DIM_CREATE) 00286 { 00287 #if 0 00288 // NB - not #ifndef 00289 #ifdef EXCLUDE_FROM_XARALX 00290 EnableGadget(_R(IDC_CREATEBRUSH), FALSE); 00291 EnableGadget(_R(IDC_EDITBRUSH), FALSE); 00292 #endif 00293 #endif 00294 HandleCreate(); 00295 } 00296 else 00297 { 00298 if (FALSE) {} 00299 // WEBSTER - markn 25/4/97 00300 // No pen presure stuff required in Webster 00301 // Taken out by vector stroking code Neville 2/10/97 00302 #ifdef VECTOR_STROKING 00303 else if (Msg->GadgetID == _R(IDC_FREEHANDPRESSURE)) 00304 { 00305 if (Msg->DlgMsg == DIM_LFT_BN_CLICKED) 00306 { 00307 OpDescriptor *pOpDesc = OpDescriptor::FindOpDescriptor(OPTOKEN_TOGGLEPRESSURE); 00308 if (pOpDesc != NULL) 00309 { 00310 pOpDesc->Invoke(); 00311 UpdateState(); 00312 } 00313 } 00314 } 00315 #endif // VECTOR_STROKING 00316 else if (Msg->GadgetID == _R(IDC_FREEHANDSLIDER)) 00317 { 00318 switch (Msg->DlgMsg) 00319 { 00320 case DIM_SLIDER_POS_CHANGING: 00321 { 00322 HandleSliderPosChanging(); 00323 break; 00324 } 00325 00326 case DIM_SLIDER_POS_SET: 00327 { 00328 // Tell the tool that things are all finished with 00329 pTool->RetroFitFinished(); 00330 break; 00331 } 00332 default: 00333 break; 00334 } 00335 } 00336 else if (Msg->GadgetID == _R(IDC_CREATEBRUSH)) 00337 { 00338 pTool->CreateBrush(); 00339 UpdateState(); 00340 } 00341 else if (Msg->GadgetID == _R(IDC_EDITBRUSH)) 00342 { 00343 switch (Msg->DlgMsg) 00344 { 00345 case DIM_LFT_BN_CLICKED: 00346 { 00347 LaunchBrushEditDialog(); 00348 break; 00349 } 00350 default: 00351 break; 00352 } 00353 } 00354 else if (Msg->GadgetID == _R(IDC_BRUSHTYPE)) 00355 { 00356 switch (Msg->DlgMsg) 00357 { 00358 case DIM_SELECTION_CHANGED: 00359 { 00360 HandleBrushSelectChange(); 00361 UpdateState(); 00362 break; 00363 } 00364 default: 00365 break; 00366 } 00367 } 00368 else if (Msg->GadgetID == _R(IDC_STROKETYPE)) 00369 { 00370 switch (Msg->DlgMsg) 00371 { 00372 case DIM_SELECTION_CHANGED: 00373 { 00374 HandleStrokeSelectChange(); 00375 //UpdateState(); 00376 break; 00377 } 00378 default: 00379 break; 00380 } 00381 } 00382 } 00383 } 00384 else 00385 { 00386 // Handle non dialog messages in here 00387 if (ControlsExist && Message->IsKindOf(CC_RUNTIME_CLASS(SelChangingMsg))) 00388 { 00389 // Yep, we had better go an see if the retro path field is still valid 00390 if (pTool!=NULL) 00391 { 00392 // Find out if we can still do the retro fitting stuff 00393 CanRetroFit = pTool->IsRetroPathStillValid(); 00394 00395 // set the string in the info bar 00396 SetRetroString(); 00397 } 00398 } 00399 00400 // the following is required because the brushes do NOT exist until the document has 00401 // been created! We need to init brushes in three cases: 00402 00403 // 1) THIS infobar is made active by the user - brushes inited via DIM_CREATE 00404 // 2) THIS infobar was the last used infobar when camelot quit - which means it will 00405 // be the first one created; occuring BEFORE the document has been created! 00406 // 3) Someone has edited the brush definition fron the line gallery, thereby changing the 00407 // appearance of the brushes. 00408 // we overcome this problem by detecting the documents BORNANDSTABLE and message 00409 00410 if (ControlsExist) 00411 { 00412 if (IsVisible ()) // BUT only if the infobar is visible! 00413 { 00414 if (Message->IsKindOf(CC_RUNTIME_CLASS(DocChangingMsg))) 00415 { 00416 Document* pDoc = Document::GetCurrent(); 00417 BOOL EnableCombos = pDoc != NULL; 00418 if (!EnableCombos) 00419 { 00420 EnableGadget(_R(IDC_BRUSHTYPE), EnableCombos); 00421 EnableGadget(_R(IDC_STROKETYPE), EnableCombos); 00422 EnableGadget(_R(IDC_FREEHANDSLIDER), EnableCombos); 00423 } 00424 DocChangingMsg* pDocMsg = (DocChangingMsg*)Message; 00425 if (pDocMsg->State == DocChangingMsg::BORNANDSTABLE) 00426 { 00427 EnableGadget(_R(IDC_BRUSHTYPE), TRUE); 00428 EnableGadget(_R(IDC_STROKETYPE), TRUE); 00429 EnableGadget(_R(IDC_FREEHANDSLIDER), TRUE); 00430 if (m_pBrushList == NULL || m_pBrushList->size() == 0) 00431 InitBrushList(); 00432 else 00433 ReInitBrushList(); 00434 00435 SetBrushListToControl (); 00436 00437 } 00438 00439 } 00440 else if (Message->IsKindOf(CC_RUNTIME_CLASS(BrushDefMsg))) 00441 { 00442 SetBrushListToControl(); // we've updated a brush definition so refresh 00443 SetHeadOfListSelected(); // the display 00444 00445 } 00446 } 00447 } 00448 00449 // if it is a brush selection message then pass the new handle on to the tool 00450 if (Message->IsKindOf(CC_RUNTIME_CLASS(BrushMsg))) 00451 00452 // only pass it on if a) our tool is the current tool and b)we have a current document 00453 { 00454 BrushHandle SelHandle = ((BrushMsg*)Message)->m_BrushSelected; 00455 00456 if (pTool != NULL) 00457 { 00458 pTool->SetBrushUpdateState(UPDATE_ONIDLE); 00459 pTool->BrushSelected(SelHandle, FALSE); 00460 } 00461 00462 // tell the list it has a new head 00463 if (SelHandle != BrushHandle_NoBrush) 00464 SetHeadOfList(SelHandle); 00465 00466 m_DisplayBrush = SelHandle; 00467 00468 // display the new list 00469 if (ControlsExist) 00470 { 00471 SetBrushListToControl(); 00472 SetHeadOfListSelected(); 00473 } 00474 } 00475 00476 // if it is a stroke message then update our combo 00477 if (Message->IsKindOf(CC_RUNTIME_CLASS(StrokeMsg)) && ControlsExist && IsVisible()) 00478 SetStrokeComboFromSelection(); 00479 00480 // likewise if it is a screen change message 00481 if (Message->IsKindOf(CC_RUNTIME_CLASS(ScreenChangeMsg)) || Message->IsKindOf(CC_RUNTIME_CLASS(CurrentAttrChangedMsg)) 00482 || Message->IsKindOf(CC_RUNTIME_CLASS(BrushDefMsg))) 00483 { 00484 if (pTool != NULL && HasWindow() 00485 && (Document::GetCurrent() != NULL)) 00486 { 00487 pTool->ScreenChanged(TRUE); //((ScreenChangeMsg*)Message)->m_bClear); 00488 UpdateState(); 00489 } 00490 } 00491 00492 00493 if (Message->IsKindOf(CC_RUNTIME_CLASS(DocViewMsg))) 00494 { 00495 DocViewMsg* pDVM = (DocViewMsg*)Message; 00496 if (pDVM->State == DocViewMsg::SELCHANGED) 00497 pTool->ScreenChanged(TRUE); 00498 } 00499 00500 // if it is a new brush then we need to update our list 00501 if (Message->IsKindOf(CC_RUNTIME_CLASS(NewBrushMsg))) 00502 { 00503 AddBrush(); 00504 if (pTool) 00505 { 00506 UINT32 BrushNum = BrushComponent::GetNumberOfBrushes() - 1; 00507 pTool->BrushSelected(BrushNum, FALSE); 00508 } 00509 } 00510 } 00511 00512 // do we have a selection change message? 00513 if (MESSAGE_IS_A(Message, SelChangingMsg)) 00514 { 00515 Document* pDoc = Document::GetCurrent(); 00516 if (pDoc != NULL) 00517 { 00518 if (ControlsExist && IsVisible()) 00519 { 00520 // we may have just undone a brush edit, if the brush edit dialog is open then we 00521 // want to make sure it has the uptodate data. 00522 BrushData Data = GetBrushDataFromSelection(); 00523 if (Data.m_BrushHandle != BrushHandle_NoBrush) 00524 { 00525 PORTNOTE("other", "Disabled Brush editing") 00526 #ifndef EXCLUDE_FROM_XARALX 00527 if (BrushGadget.IsDialogOpen()) 00528 BrushGadget.ReInitialiseDialog(&Data); 00529 #endif 00530 } 00531 // also make sure our combo reflects the selection 00532 SetBrushComboFromSelection(); 00533 SetStrokeComboFromSelection(); 00534 } 00535 } 00536 // ask the tool to refresh its cache, as blobs will have changed 00537 if (pTool != NULL && HasWindow()) 00538 pTool->ScreenChanged(TRUE); 00539 } 00540 00541 if (MESSAGE_IS_A(Message, ColourChangingMsg)) 00542 { 00543 ColourChangingMsg *TheMsg = (ColourChangingMsg *) Message; 00544 00545 // handle the selected View's Colour Context is changing 00546 // e.g. if the show printer colours (plate) has changed 00547 if(TheMsg->State == ColourChangingMsg::SELVIEWCONTEXTCHANGE) 00548 { 00549 // ask the tool to refresh its cache 00550 // (so that the cache does not have the old colour in it 00551 // and the drawing will be agains the correct (current) 00552 // background!) 00553 if (pTool != NULL && HasWindow()) 00554 pTool->ScreenChanged(TRUE); 00555 } 00556 } 00557 00558 // Pass message on 00559 return (InformationBarOp::Message(Message)); 00560 }
|
|
This takes care of a situation where we might add a number of brushes at once and want to update the brush list without forgetting the order of the list. This kind of thing arises when we load in a new document. Anyway what we do is compare the number of brushes with the number of items in the list, and if there is a mismatch we add the new ones to the end of the list.
Definition at line 1816 of file freeinfo.cpp. 01817 { 01818 if (m_pBrushList == NULL) 01819 return InitBrushList(); 01820 01821 UINT32 NumBrushes = BrushComponent::GetNumberOfBrushes(); 01822 UINT32 NumListBrushes = m_pBrushList->size(); 01823 01824 while (NumListBrushes < NumBrushes) 01825 { 01826 m_pBrushList->push_back(NumListBrushes); 01827 NumListBrushes++; 01828 } 01829 return TRUE; 01830 01831 }
|
|
to remove the specified brush from the brush list
Definition at line 641 of file freeinfo.cpp. 00642 { 00643 // first remove it from the list 00644 if (m_pBrushList != NULL) 00645 { 00646 m_pBrushList->remove(Handle); 00647 } 00648 00649 // now we want to display the no-brush 00650 m_DisplayBrush = BrushHandle_NoBrush; 00651 00652 if (ControlsExist) 00653 { 00654 SetBrushListToControl(); 00655 SetDisplayBrush(); 00656 } 00657 00658 // tell the tool 00659 if (pTool != NULL) 00660 { 00661 pTool->SetBrushUpdateState(UPDATE_NOW); 00662 pTool->BrushSelected(BrushHandle_NoBrush, FALSE); 00663 } 00664 }
|
|
Definition at line 2176 of file freeinfo.cpp. 02177 { 02178 /* there are a few different scenarios here: 02179 1) we have a single brush in the selection, in which case show it in the combo 02180 2) we have many different brushes in the selection, in which case show our most 02181 recently selected drawing brush 02182 3) we have no brushes in the selection, but the selection is not empty, in this case 02183 show a default line 02184 4) the selection is empty, in which case we show the selected drawing brush. 02185 */ 02186 02187 BOOL bSelectionEmpty = FALSE; 02188 BrushHandle SelHandle = GetBrushHandleFromSelection(&bSelectionEmpty); 02189 02190 switch (SelHandle) 02191 { 02192 case BrushHandle_NoBrush: // display our currently selected brush for drawing 02193 { 02194 // if the selection is empty then show our drawing brush, if however we just don't 02195 // have any brushes in the selection then display the no-brush 02196 if (bSelectionEmpty) 02197 { 02198 SetDisplayBrush(); 02199 } 02200 else 02201 { 02202 // temporarily change the display brush and reflect it in the control 02203 BrushHandle Temp = m_DisplayBrush; 02204 m_DisplayBrush = SelHandle; 02205 SetDisplayBrush(); 02206 // restore the original display brush 02207 m_DisplayBrush = Temp; 02208 } 02209 } 02210 break; 02211 case BrushHandle_Many: // display the 'many' string 02212 { 02213 // the only way to do this seems to be by sending a string to the control 02214 String_256 Many; 02215 Many.Load(_R(IDS_FILLTOOL_MANY)); 02216 02217 // call custom controls interface .... 02218 // SelectCustomComboGadgetValueOnString (_R(IDC_BRUSHTYPE), &Many); 02219 m_bgddBrushType.SetSelected(-1); 02220 02221 } 02222 break; 02223 02224 default: // display the brush from the selection 02225 { 02226 // temporarily change the display brush and reflect it in the control 02227 BrushHandle Temp = m_DisplayBrush; 02228 m_DisplayBrush = SelHandle; 02229 SetDisplayBrush(); 02230 // restore the original display brush 02231 m_DisplayBrush = Temp; 02232 } 02233 break; 02234 } 02235 02236 }
|
|
Goes through the brush list in order, creating attribute nodes from the brush handles and setting them into the combo.
Definition at line 1845 of file freeinfo.cpp. 01846 { 01847 //#ifdef BUILDNEWBRUSHES 01848 if (m_pBrushList == NULL) 01849 return TRUE; // not an error, we just can't do it 01850 01851 // if we have no document then don't bother 01852 Document* pDoc = Document::GetCurrent(); 01853 if (pDoc == NULL) 01854 return TRUE; 01855 01856 // wipe our existing control 01857 // DeleteAllValues(_R(IDC_BRUSHTYPE)); 01858 m_bgddBrushType.Clear(); 01859 01860 // need a pointer of type CustomComboBoxControlDataItem to insert items into 01861 // a custom combobox .... 01862 // CustomComboBoxControlDataItem* theItem = NULL; 01863 01864 // UINT32 Counter = 1; // the combo's indexes start at 1 01865 01866 BrushHandle Handle = BrushHandle_NoBrush; 01867 01868 BrushList::const_iterator iter; 01869 for (iter = m_pBrushList->begin(); iter !=m_pBrushList->end(); iter++) 01870 { 01871 // get the next handle 01872 Handle = *iter; 01873 01874 // ask the component to make a node for us 01875 if (Handle != BrushHandle_NoBrush) 01876 { 01877 AttrBrushType* pNewAttr = BrushComponent::CreateNode (Handle); 01878 01879 if (pNewAttr != NULL) 01880 m_bgddBrushType.AddItem(pNewAttr); 01881 } 01882 else 01883 { 01884 ERROR3("Default brush handle found in list in FreeHandInfoBarOp::SetBrushListToControl"); 01885 } 01886 } 01887 01888 return SetStrokesToControl() ; 01889 }
|
|
Sets the bitmap showing in the brush combo to be that of the default stroke !!! Note - not actually working at the moment.
Definition at line 2617 of file freeinfo.cpp. 02618 { 02619 //#ifdef BUILDNEWBRUSHES 02620 // SetCustomComboGadgetValue(_R(IDC_BRUSHTYPE), NULL, 0, 1); 02621 m_bgddBrushType.SetSelected(0); 02622 //#endif 02623 }
|
|
Definition at line 2137 of file freeinfo.cpp. 02138 { 02139 //#ifdef BUILDNEWBRUSHES 02140 // we need to find the index for our brush 02141 INT32 iIndex = GetControlIndexFromBrushHandle(m_DisplayBrush); 02142 02143 m_bgddBrushType.SetSelected(iIndex); 02144 /* 02145 switch (Index) 02146 { 02147 case -1: 02148 // SetCustomComboGadgetValue ( _R(IDC_BRUSHTYPE), NULL, TRUE, -2); 02149 // TRACEUSER( "Diccon", _T("Display default brush\n")); 02150 break; 02151 case 0: // the zeroth index is the same as the head of our selected brushes list 02152 SetHeadOfListSelected(); 02153 // TRACEUSER( "Diccon", _T("Displayed head of list\n")); 02154 break; 02155 default: 02156 SetCustomComboGadgetValue(_R(IDC_BRUSHTYPE), NULL, 0, Index + 2); // control indexes are +2 from the index into our list 02157 // TRACEUSER( "Diccon", _T("Displayed display brush\n")); 02158 break; 02159 } 02160 */ 02161 //#endif 02162 }
|
|
Sets the given handle to the head of the 'most popular brush' list, also goes through the rest of the list and removes other instances of it, so as not to duplicate.
Definition at line 2582 of file freeinfo.cpp. 02583 { 02584 if (Handle == BrushHandle_NoBrush) 02585 { 02586 ERROR3("Attempting to set BrushHandle_NoBrush to head of list in FreeHandInfoBarOp::SetHeadOfList"); 02587 return; 02588 } 02589 02590 if (m_pBrushList == NULL) 02591 { 02592 ERROR3("Brush list is NULL in FreeHandInfoBarOp::SetHeadOfList"); 02593 return; 02594 } 02595 02596 // go through the list replacing existing instances of Handle 02597 m_pBrushList->remove(Handle); 02598 // set Handle to the head of the list 02599 m_pBrushList->push_front(Handle); 02600 02601 }
|
|
Definition at line 2097 of file freeinfo.cpp. 02098 { 02099 //#ifdef BUILDNEWBRUSHES 02100 // if we have no document then don't bother 02101 Document* pDoc = Document::GetCurrent(); 02102 if (pDoc == NULL) 02103 return; 02104 if (m_pBrushList == NULL) 02105 { 02106 ERROR3("Brush list is NULL in FreeHandInfoBarOp::SetHeadOfListSelected"); 02107 return; 02108 } 02109 02110 // on start up we have not yet put anything in the list so make sure we're not empty, 02111 // however this may not be cause for an error 02112 if (!m_pBrushList->empty()) 02113 { 02114 BrushHandle Handle = m_pBrushList->front(); 02115 02116 // SetCustomComboGadgetValue(_R(IDC_BRUSHTYPE), NULL, 0, 2 ); 02117 m_bgddBrushType.SetSelected(0); 02118 02119 m_DisplayBrush = Handle; 02120 02121 } 02122 //#endif 02123 }
|
|
Sets the Flag CanRetroFit and gets the infobar to redraw the static text item that says this.
Definition at line 2656 of file freeinfo.cpp. 02657 { 02658 // Set the Retro field to be empty by default 02659 CanRetroFit = CanFit; 02660 02661 // Set the string in the info bar now 02662 SetRetroString(); 02663 }
|
|
Sets the static text item in the freehand info bar to say either 'Retro' or nothing, depending on the state of the flag CanRetroFit.
Definition at line 2678 of file freeinfo.cpp. 02679 { 02680 // go see if there is an info bar to use 02681 if (WindowID!=NULL) 02682 { 02683 if (CanRetroFit) 02684 { 02685 // Make the word Retro appear 02686 String_64 RetroWord; 02687 if (RetroWord.Load(_R(IDS_FHANDRETROTEXT))) 02688 { 02689 // Set the contents of the field to indicate retro is possible 02690 SetStringGadgetValue(_R(IDC_FREEHANDRETRO), RetroWord); 02691 } 02692 } 02693 else 02694 { 02695 // make the word retro not appear 02696 String_8 RetroWord(_T("")); 02697 SetStringGadgetValue(_R(IDC_FREEHANDRETRO), RetroWord); 02698 } 02699 } 02700 }
|
|
Definition at line 2252 of file freeinfo.cpp. 02253 { 02254 Document* pDoc = Document::GetCurrent(); 02255 02256 // if we have no document then don't bother 02257 if (pDoc == NULL) 02258 return; 02259 02260 // find out how many items there are in the selection 02261 SelRange* pSel = GetApplication()->FindSelection(); 02262 // INT32 NumSelItems = 0; 02263 INT32 SelectedStroke = m_SelectedStroke; // this is the index that we will end up setting to the control 02264 02265 if (pSel) 02266 { 02267 Node* pNode = pSel->FindFirst(); 02268 02269 // declare some vars that we need in the loop 02270 AttrVariableWidth* pVarWidth = NULL; 02271 VariableWidthAttrValue* pVal = NULL; 02272 ValueFunction* pFunk = NULL; 02273 ValueFunctionID ID = ValueFunctionID_None; 02274 02275 BOOL bFirst = TRUE; 02276 BOOL bDifferent = FALSE; 02277 INT32 NumItems = 0; 02278 02279 // for each node check to get its applied variable width attribute, and then the value function 02280 // of the attribute. If its the first node then record it, otherwise just check to see if its different 02281 // and if so then break out 02282 02283 while (pNode) 02284 { 02285 NumItems++; 02286 02287 // if its a noderenderable ink then check its applied attrvarwidth 02288 if (pNode->IsAnObject()) 02289 { 02290 // find the attribute 02291 ((NodeRenderableInk*)pNode)->FindAppliedAttribute(CC_RUNTIME_CLASS(AttrVariableWidth), 02292 (NodeAttribute**)&pVarWidth); 02293 02294 if (pVarWidth) 02295 { 02296 // get the variable width function from the attribute (can be null) 02297 pVal = (VariableWidthAttrValue*)pVarWidth->GetAttributeValue(); 02298 pFunk = pVal->GetWidthFunction(); 02299 02300 // its the first one 02301 if (bFirst) 02302 { 02303 if (pFunk) 02304 ID = pFunk->GetUniqueID(); 02305 02306 // get the index into our combo corresponding to this ID 02307 SelectedStroke = GetStrokeIndexFromValueFunctionID(ID); 02308 02309 bFirst = FALSE; 02310 } 02311 else 02312 { 02313 // check to see if it is different, if so set the flag and quit 02314 if (pFunk && (pFunk->GetUniqueID() != ID)) 02315 { 02316 bDifferent = TRUE; 02317 break; 02318 } 02319 } 02320 } 02321 02322 } 02323 pNode = pSel->FindNext(pNode); 02324 } 02325 02326 // if there were no items then display the current attribute 02327 if (NumItems == 0) 02328 { 02329 // get the current attribute from the attribute manager 02330 AttributeManager* pAttrMgr = &(pDoc->GetAttributeMgr()); 02331 if (pAttrMgr == NULL) 02332 { 02333 ERROR3("Unable to get attribute manager!"); 02334 return; 02335 } 02336 02337 // may as well reuse this var 02338 pVarWidth = NULL; 02339 pVarWidth = (AttrVariableWidth*)pAttrMgr->GetCurrentAttribute(CC_RUNTIME_CLASS(NodeRenderableInk), 02340 CC_RUNTIME_CLASS(AttrVariableWidth)); 02341 if (pVarWidth) 02342 { 02343 VariableWidthAttrValue* pVal = (VariableWidthAttrValue*)pVarWidth->GetAttributeValue(); 02344 ValueFunction* pFunk = pVal->GetWidthFunction(); 02345 if (pFunk) 02346 { 02347 SelectedStroke = GetStrokeIndexFromValueFunctionID(pFunk->GetUniqueID()); 02348 } 02349 else 02350 { 02351 SelectedStroke = CONSTANT; 02352 } 02353 } 02354 } 02355 // if we have different strokes we need to say 'many', (what choo talkin' bout Willis!?) 02356 if (bDifferent) 02357 { 02358 /* // the only way to do this seems to be by sending a string to the control 02359 String_256 Many; 02360 Many.Load(_R(IDS_FILLTOOL_MANY)); 02361 02362 // call custom controls interface .... 02363 SelectCustomComboGadgetValueOnString (_R(IDC_STROKETYPE), &Many); 02364 */ 02365 // Select none in the stroke dropdown since we don't support placing "many" word 02366 // into the combobox. 02367 m_bgddStrokes.SetSelected(-1); 02368 return; 02369 } 02370 02371 } 02372 02373 // now set the index to the control 02374 m_bgddStrokes.SetSelected(SelectedStroke); 02375 }
|
|
Creates stroke shape items and adds them to the stroke combo.
Definition at line 1902 of file freeinfo.cpp. 01903 { 01904 // DeleteAllValues(_R(IDC_STROKETYPE)); 01905 m_bgddStrokes.Clear(); 01906 01907 01908 // UINT32 index = 1; 01909 // CustomComboBoxControlDataItem* theItem = NULL; 01910 01911 // --- Simple constant-width line ------------------------------------------ 01912 VariableWidthAttrValue *pAttr; 01913 pAttr = new VariableWidthAttrValue(NULL); 01914 VarWidthItem* pItem = new VarWidthItem(pAttr, String_64(TEXT("Constant"))); 01915 m_bgddStrokes.AddItem(pItem); 01916 01917 // --- Smooth Stroke SS_Fallout ------------------------------------------------ 01918 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Fallout); 01919 pItem = new VarWidthItem(pAttr, String_64(TEXT("Fallout"))); 01920 m_bgddStrokes.AddItem(pItem); 01921 01922 // --- Smooth Stroke SS_Iron ------------------------------------------------ 01923 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Iron); 01924 pItem = new VarWidthItem(pAttr, String_64(TEXT("Iron"))); 01925 m_bgddStrokes.AddItem(pItem); 01926 01927 // --- Ellipse ------------------------------------------------------------- 01928 pAttr = new VariableWidthAttrValue(new ValueFunctionEllipse); 01929 pItem = new VarWidthItem(pAttr, String_64(TEXT("Ellipse"))); 01930 m_bgddStrokes.AddItem(pItem); 01931 01932 // --- Smooth Stroke SS_SlimBlip ------------------------------------------------ 01933 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_SlimBlip); 01934 pItem = new VarWidthItem(pAttr, String_64(TEXT("Slim Blip"))); 01935 m_bgddStrokes.AddItem(pItem); 01936 01937 // --- Blip ---------------------------------------------------------------- 01938 pAttr = new VariableWidthAttrValue(new ValueFunctionBlip); 01939 pItem = new VarWidthItem(pAttr, String_64(TEXT("Blip"))); 01940 m_bgddStrokes.AddItem(pItem); 01941 01942 // --- Smooth Stroke SS_Cigar ------------------------------------------------ 01943 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Cigar); 01944 pItem = new VarWidthItem(pAttr, String_64(TEXT("Cigar"))); 01945 m_bgddStrokes.AddItem(pItem); 01946 01947 // --- Smooth Stroke SS_Cigar2 ------------------------------------------------ 01948 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Cigar2); 01949 pItem = new VarWidthItem(pAttr, String_64(TEXT("Cigar 2"))); 01950 m_bgddStrokes.AddItem(pItem); 01951 01952 // --- Smooth Stroke SS_Cigar3 ------------------------------------------------ 01953 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Cigar3); 01954 pItem = new VarWidthItem(pAttr, String_64(TEXT("Cigar 3"))); 01955 m_bgddStrokes.AddItem(pItem); 01956 01957 // --- Smooth Stroke SS_Convex ------------------------------------------------ 01958 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Convex); 01959 pItem = new VarWidthItem(pAttr, String_64(TEXT("Convex"))); 01960 m_bgddStrokes.AddItem(pItem); 01961 01962 // --- Simple S-shaped ramp with non-zero end width ------------------------------------------------ 01963 pAttr = new VariableWidthAttrValue(new ValueFunctionRampS2); 01964 pItem = new VarWidthItem(pAttr, String_64(TEXT("Convex 2"))); 01965 m_bgddStrokes.AddItem(pItem); 01966 01967 // --- Simple S-shaped ramp ------------------------------------------------ 01968 pAttr = new VariableWidthAttrValue(new ValueFunctionRampS); 01969 pItem = new VarWidthItem(pAttr, String_64(TEXT("Convex 3"))); 01970 m_bgddStrokes.AddItem(pItem); 01971 01972 // --- Smooth Stroke SS_Concave ------------------------------------------------ 01973 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Concave); 01974 pItem = new VarWidthItem(pAttr, String_64(TEXT("Concave"))); 01975 m_bgddStrokes.AddItem(pItem); 01976 01977 // --- Simple linear ramp with non-zero end width -------------------------------------------------- 01978 pAttr = new VariableWidthAttrValue(new ValueFunctionRampL2); 01979 pItem = new VarWidthItem(pAttr, String_64(TEXT("Concave 2"))); 01980 m_bgddStrokes.AddItem(pItem); 01981 01982 // --- Simple linear ramp -------------------------------------------------- 01983 pAttr = new VariableWidthAttrValue(new ValueFunctionRampL); 01984 pItem = new VarWidthItem(pAttr, String_64(TEXT("Concave 3"))); 01985 m_bgddStrokes.AddItem(pItem); 01986 01987 // --- Teardrop CurvedEnd------------------------------------------------------------ 01988 pAttr = new VariableWidthAttrValue(new ValueFunctionTeardropCurvedEnd); 01989 pItem = new VarWidthItem(pAttr, String_64(TEXT("Dab"))); 01990 m_bgddStrokes.AddItem(pItem); 01991 01992 // --- Teardrop ------------------------------------------------------------ 01993 pAttr = new VariableWidthAttrValue(new ValueFunctionTeardrop); 01994 pItem = new VarWidthItem(pAttr, String_64(TEXT("Raindrop"))); 01995 m_bgddStrokes.AddItem(pItem); 01996 01997 // --- Smooth Stroke SS_Comet ------------------------------------------------ 01998 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Comet); 01999 pItem = new VarWidthItem(pAttr, String_64(TEXT("Comet"))); 02000 m_bgddStrokes.AddItem(pItem); 02001 02002 // --- Smooth Stroke SS_Petal ------------------------------------------------ 02003 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Petal); 02004 pItem = new VarWidthItem(pAttr, String_64(TEXT("Petal"))); 02005 m_bgddStrokes.AddItem(pItem); 02006 02007 // --- Smooth Stroke SS_Reed ------------------------------------------------ 02008 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Reed); 02009 pItem = new VarWidthItem(pAttr, String_64(TEXT("Reed"))); 02010 m_bgddStrokes.AddItem(pItem); 02011 02012 // --- Smooth Stroke SS_Meteor ------------------------------------------------ 02013 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Meteor); 02014 pItem = new VarWidthItem(pAttr, String_64(TEXT("Meteor"))); 02015 m_bgddStrokes.AddItem(pItem); 02016 02017 // --- Smooth Stroke SS_Torpedo ------------------------------------------------ 02018 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Torpedo); 02019 pItem = new VarWidthItem(pAttr, String_64(TEXT("Torpedo"))); 02020 m_bgddStrokes.AddItem(pItem); 02021 02022 // --- Smooth Stroke SS_Missile ------------------------------------------------ 02023 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Missile); 02024 pItem = new VarWidthItem(pAttr, String_64(TEXT("Missile"))); 02025 m_bgddStrokes.AddItem(pItem); 02026 02027 // --- Smooth Stroke SS_Goldfish ------------------------------------------------ 02028 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Goldfish); 02029 pItem = new VarWidthItem(pAttr, String_64(TEXT("Goldfish"))); 02030 m_bgddStrokes.AddItem(pItem); 02031 02032 // --- Smooth Stroke SS_Yacht ------------------------------------------------ 02033 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Yacht); 02034 pItem = new VarWidthItem(pAttr, String_64(TEXT("Yacht"))); 02035 m_bgddStrokes.AddItem(pItem); 02036 02037 // --- Smooth Stroke SS_Barb ------------------------------------------------ 02038 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_Barb); 02039 pItem = new VarWidthItem(pAttr, String_64(TEXT("Barb"))); 02040 m_bgddStrokes.AddItem(pItem); 02041 02042 // --- Smooth Stroke SS_OceanLiner ------------------------------------------------ 02043 pAttr = new VariableWidthAttrValue(new ValueFunctionSS_OceanLiner); 02044 pItem = new VarWidthItem(pAttr, String_64(TEXT("Ocean Liner"))); 02045 m_bgddStrokes.AddItem(pItem); 02046 02047 // --- Propeller ------------------------------------------------ 02048 pAttr = new VariableWidthAttrValue(new ValueFunctionPropeller); 02049 pItem = new VarWidthItem(pAttr, String_64(TEXT("Propeller"))); 02050 m_bgddStrokes.AddItem(pItem); 02051 02052 // --- Double S-shaped ramp ------------------------------------------------ 02053 pAttr = new VariableWidthAttrValue(new ValueFunctionDoubleRampS); 02054 pItem = new VarWidthItem(pAttr, String_64(TEXT("Bow Tie"))); 02055 //pAttr2 = (NodeAttribute*) pItem->CreateNode (); 02056 m_bgddStrokes.AddItem(pItem); 02057 02058 // --- BevelEnds ------------------------------------------------ 02059 pAttr = new VariableWidthAttrValue(new ValueFunctionBevelEnds); 02060 pItem = new VarWidthItem(pAttr, String_64(TEXT("Bevel Ends"))); 02061 m_bgddStrokes.AddItem(pItem); 02062 02063 // --- SawTooth ------------------------------------------------ 02064 pAttr = new VariableWidthAttrValue(new ValueFunctionSawTooth); 02065 pItem = new VarWidthItem(pAttr, String_64(TEXT("Saw Tooth"))); 02066 //pAttr2 = (NodeAttribute*) pItem->CreateNode (); 02067 m_bgddStrokes.AddItem(pItem); 02068 02069 // --- Intestine ------------------------------------------------ 02070 pAttr = new VariableWidthAttrValue(new ValueFunctionIntestine); 02071 pItem = new VarWidthItem(pAttr, String_64(TEXT("Intestine"))); 02072 m_bgddStrokes.AddItem(pItem); 02073 02074 // --- Decay ------------------------------------------------ 02075 pAttr = new VariableWidthAttrValue(new ValueFunctionDecay); 02076 pItem = new VarWidthItem(pAttr, String_64(TEXT("Decay"))); 02077 m_bgddStrokes.AddItem(pItem); 02078 02079 02080 SetStrokeComboFromSelection(); 02081 02082 return TRUE; 02083 }
|
|
Allows the info bar to know if it is valid or not.
Definition at line 2636 of file freeinfo.cpp. 02637 { 02638 // Set the control state 02639 ControlsExist = IsToolActive; 02640 }
|
|
Sets the state of button on the bar to keep them up to date.
Reimplemented from DialogBarOp. Definition at line 2715 of file freeinfo.cpp. 02716 { 02717 // Don't try to set our controls when they're not there! 02718 if (!ControlsExist) 02719 return; 02720 02721 // see if we're allowed to launch the brush dialog 02722 OpState State = CBrushEditDlg::GetState(NULL, NULL); 02723 //#ifdef BUILDNEWBRUSHES 02724 if (State.Greyed == FALSE) // && !BrushGadget.IsDialogOpen()) 02725 EnableGadget(_R(IDC_EDITBRUSH), TRUE); 02726 else 02727 EnableGadget(_R(IDC_EDITBRUSH), FALSE); 02728 //#endif 02729 SelRange* pSel = GetApplication()->FindSelection(); 02730 if (pSel != NULL) 02731 { 02732 //#ifdef BUILDNEWBRUSHES 02733 if (pSel->FindFirst() == NULL) 02734 EnableGadget(_R(IDC_CREATEBRUSH), FALSE); 02735 else 02736 EnableGadget(_R(IDC_CREATEBRUSH), TRUE); 02737 //#endif 02738 } 02739 02740 // WEBSTER - markn 25/4/97 02741 // No pen stuff required in Webster 02742 // Taken out by vector stroking code Neville 2/10/97 02743 #ifdef VECTOR_STROKING 02744 // Set the state of the pressure button according to the Op's state. 02745 // Why buttons on infobars can't dynamically auto-connect to their ops is beyond me 02746 OpDescriptor *pOpDesc = OpDescriptor::FindOpDescriptor(OPTOKEN_TOGGLEPRESSURE); 02747 if (pOpDesc != NULL) 02748 { 02749 String_256 Why; 02750 OpState State = pOpDesc->GetOpsState(&Why); 02751 02752 // stop this damn thing from falling over when there is no infobar .... 02753 02754 CWindowID hGadget = DialogManager::GetGadget(GetReadWriteWindowID (), _R(IDC_FREEHANDPRESSURE)); 02755 02756 if (hGadget) 02757 { 02758 SetBoolGadgetSelected(_R(IDC_FREEHANDPRESSURE), (State.Ticked) ? 1 : 0); 02759 EnableGadget(_R(IDC_FREEHANDPRESSURE), (State.Greyed) ? 0 : 1); 02760 } 02761 } 02762 #endif // VECTOR_STROKING 02763 02764 02765 02766 }
|
|
Definition at line 213 of file freeinfo.h. |
|
Definition at line 188 of file freeinfo.h. |
|
Definition at line 194 of file freeinfo.h. |
|
Definition at line 195 of file freeinfo.h. |
|
Definition at line 208 of file freeinfo.h. |
|
Definition at line 209 of file freeinfo.h. |
|
Definition at line 206 of file freeinfo.h. |
|
Definition at line 202 of file freeinfo.h. |
|
Definition at line 204 of file freeinfo.h. |
|
Definition at line 217 of file freeinfo.h. |
|
Definition at line 187 of file freeinfo.h. |