wxMaxima
Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes | Static Protected Attributes
GroupCell Class Referencefinal

A cell grouping input (and, if there is one, also the output) cell to a foldable item. More...

#include <GroupCell.h>

Inheritance diagram for GroupCell:
[legend]
Collaboration diagram for GroupCell:
[legend]

Public Types

typedef std::unordered_map< wxString, wxString, wxStringHash > StringHash
 
typedef std::unordered_map< wxString, int, wxStringHash > CmdsAndVariables
 

Public Member Functions

 GroupCell (Configuration *config, GroupType groupType, const wxString &initString={})
 
 GroupCell (GroupCell const &cell)
 
 GroupCell (GroupCell *group, const GroupCell &cell)
 
std::unique_ptr< CellCopy () const
 
std::unique_ptr< CellCopy (GroupCell *group) const override
 Create a copy of this cell. More...
 
const CellTypeInfoGetInfo () override
 Returns the information about this cell's type.
 
std::unique_ptr< GroupCellCopyList () const
 
GroupCellfirst () const
 
GroupCelllast () const
 
const wxString & GetAnswer (size_t answer) const
 
const wxString & GetAnswer (const wxString &question) const
 
bool ContainsSavedAnswers () const
 Does this GroupCell know the answer to any of maxima's questions?
 
bool AutoAnswer () const
 Does this GroupCell save the answer to a question?
 
void SetAutoAnswer (bool autoAnswer)
 
void MarkNeedsRecalculate ()
 
void SetAnswer (const wxString &question, const wxString &answer)
 Add a new answer to the cell.
 
size_t GetInnerCellCount () const override
 The number of inner cells - for use by the iterators.
 
CellGetInnerCell (size_t index) const override
 Retrieve an inner cell with given index which must be less than GetInnerCellCount.
 
GroupCellGetLastWorkingGroup () const
 Which GroupCell was the last maxima was working on? More...
 
void CellUnderPointer (GroupCell *cell)
 Marks the cell that is under the mouse pointer. More...
 
const wxString GetToolTip (wxPoint point) const override
 Returns the tooltip for the element at the position point. More...
 
GroupType GetGroupType () const
 
void SetGroupType (GroupType groupType)
 
Range GetInnerCellsInRect (const wxRect &rect) const override
 Select the cells inside this cell described by the rectangle rect.
 
Range GetCellsInOutput () const
 
Range GetCellsInOutputRect (const wxRect &rect, wxPoint one, wxPoint two) const
 
bool SetEditableContent (const wxString &text)
 
void AppendOutput (std::unique_ptr< Cell > &&cell)
 
void RemoveOutput ()
 Remove all output cells attached to this one. More...
 
AFontSize EditorFontSize () const
 
void UpdateConfusableCharWarnings ()
 GroupCells warn if they contain both greek and latin lookalike chars.
 
wxString ToTeX (const wxString &imgDir, const wxString &filename, std::size_t *imgCounter) const
 Convert the cell to TeX code. More...
 
wxString ToRTF () const override
 Returns the cell's representation as RTF. More...
 
wxString ToTeXCodeCell (const wxString &imgDir, const wxString &filename, std::size_t *imgCounter) const
 
wxString ToTeX () const override
 Convert this cell to its LaTeX representation.
 
wxString ToXML () const override
 Convert this cell to a representation fit for saving in a .wxmx file.
 
void Hide (bool hide) override
 Hide this cell. See IsHidden() for details.
 
virtual bool FirstLineOnlyEditor () override
 True, if this GroupCell is folded and its editor shows only its first line.
 
void SwitchHide ()
 
wxRect HideRect () const
 
void SetInput (std::unique_ptr< Cell > &&input)
 
void SetOutput (std::unique_ptr< Cell > &&output)
 
void AppendInput (std::unique_ptr< Cell > &&cell)
 
GroupCellGetPrevious () const
 Get the previous GroupCell in the list.
 
GroupCellGetNext () const
 Get the next GroupCell in the list.
 
CellGetPrompt () const
 
EditorCellGetEditable () const
 
CellGetLabel () const
 Returns the list of cells the output consists of, starting with the label. More...
 
CellGetOutput () const
 Returns the list of cells the output consists of, starting after the label. More...
 
wxRect GetOutputRect () const
 Determine which rectangle is occupied by this GroupCell.
 
void Recalculate (AFontSize WXUNUSED(fontsize)) override
 Recalculates the size of this GroupCell and all cells inside it if needed. More...
 
bool Recalculate ()
 
wxPoint CalculateInputPosition ()
 
void RecalculateInput ()
 Recalculate the height of the input part of the cell.
 
wxRect GetRect (bool all=false) const override
 Get the smallest rectangle this cell fits in. More...
 
void RecalculateOutput ()
 Recalculate the height of the output part of the cell. More...
 
void BreakLines ()
 Break this cell into lines.
 
void ResetInputLabel ()
 Reset the input label of the current cell. More...
 
void ResetInputLabelList ()
 Call ResetInputLabel() on all cells in the list of cells this GroupCell starts with.
 
bool IsMainInput (const Cell *active) const
 
bool IsHeading () const
 
bool SectioningCanMoveIn () const
 Can this chapter/section/... converted to a 'smaller' cell, e.g. section->subsection, paragraph->subparagraph, ...?
 
bool SectioningCanMoveOut () const
 Can this chapter/section/... converted to a 'larger' cell, e.g. subsection->section, subparagraph->paragraph, ...?
 
GroupCellSectioningUnitGetEndOf () const
 Get the end of this section/subsection/...
 
void Number (int &section, int &subsection, int &subsubsection, int &heading5, int &heading6, int &image) const
 Return this cell's section- or image number.
 
void Draw (wxPoint point, wxDC *dc, wxDC *antialiassingDC) override
 Draw this GroupCell. More...
 
bool AddEnding () override
 Add a semicolon to a code cell, if needed. More...
 
void DrawBracket (wxDC *dc, wxDC *antialiassingDC)
 Draw the bracket of this cell.
 
bool Empty () const
 Is this list of cells empty?
 
bool Contains (GroupCell *cell) const
 Does this tree contain the cell "cell"?
 
wxString ToString () const override
 A textual representation of this cell.
 
void InEvaluationQueue (bool inQueue)
 Is this cell part of the evaluation Queue?
 
void LastInEvaluationQueue (bool last)
 Is this cell the last cell in the evaluation Queue?
 
void OnSize ()
 Called on MathCtrl resize.
 
void InputHeightChanged ()
 Reset the data when the input size changes.
 
void UpdateYPosition ()
 Recalculate the cell's y position using the position and height of the last one.
 
void UpdateOutputPositions ()
 
void UpdateYPositionList ()
 
bool GetSuppressTooltipMarker () const
 
void SetSuppressTooltipMarker (bool suppress)
 
wxCoord Scale_Px (double px) const
 Scale font sizes and line widths according to the zoom factor. More...
 
AFontSize Scale_Px (AFontSize size) const
 Scale font sizes and line widths according to the zoom factor. More...
 
unsigned long CellsInListRecursive () const
 How many cells does this cell contain? More...
 
wxRect CropToUpdateRegion (wxRect rect) const
 The part of the rectangle rect that is in the region that is currently drawn.
 
bool InUpdateRegion () const
 Is this cell inside the region that is currently drawn?
 
void SoftLineBreak (bool breakLine=true)
 Do we want this cell to start with a linebreak?
 
bool BreakUpCells ()
 Cell list: Convert 2d math objects bigger than the screen width into linear form. More...
 
bool UnBreakUpCells ()
 Convert all maths objects in this call list into their 2D form.
 
void BreakLines_List ()
 
int GetLineIndent () const
 If this were the beginning of a line: How far do we need to indent it?
 
bool BreakLineHere () const
 Are we allowed to break a line here?
 
bool HasHardLineBreak () const
 Does this cell begin with a manual linebreak?
 
virtual bool BreakUp ()
 Try to split this command into lines to make it fit on the screen. More...
 
bool ContainsRect (const wxRect &sm, bool all=true) const
 Is a part of this cell inside a certain rectangle? More...
 
bool ContainsPoint (wxPoint point) const
 Is a given point inside this cell? More...
 
virtual void ClearCache ()
 Clears memory from cached items automatically regenerated when the cell is drawn. More...
 
void ClearCacheList ()
 Clears the cache of the whole list of cells starting with this one. More...
 
void SetConfigurationList (Configuration *config)
 Tell this cell list to use the configuration object config.
 
virtual void SetConfiguration (Configuration *config)
 Tell this cell to use the configuration object config.
 
ConfigurationGetConfiguration ()
 Which configuration object is responsible for this cell?
 
void DrawList (wxPoint point, wxDC *dc, wxDC *adc)
 Draw this list of cells. More...
 
void DrawList (wxDC *dc, wxDC *adc)
 
virtual void DrawBoundingBox (wxDC &WXUNUSED(dc), bool all=false)
 Draw a rectangle that marks this cell or this list of cells as selected. More...
 
bool DrawThisCell (wxPoint point)
 Is this cell currently visible in the window? More...
 
bool DrawThisCell ()
 Is this cell currently visible in the window?
 
void ForceBreakLine (bool force=true)
 Insert (or remove) a forced linebreak at the beginning of this cell. More...
 
wxCoord GetHeight () const
 Get the height of this cell. More...
 
int GetWidth () const
 Get the width of this cell. More...
 
wxCoord GetCenter () const
 Get the distance between the top and the center of this cell. More...
 
bool HasValidSize () const
 Is the size valid and not pending a recalculation?
 
bool HasStaleSize () const
 Is the size valid, whether a recalculation is pending or not?
 
bool HasValidPosition () const
 Is the position valid?
 
wxCoord GetDrop () const
 Get the distance between the center and the bottom of this cell. More...
 
CellType GetType () const
 Returns the type of this cell.
 
wxCoord GetMaxDrop () const
 Returns the maximum distance between center and bottom of this line. More...
 
wxCoord GetCenterList () const
 Returns the maximum distance between top and center of this line. More...
 
wxCoord GetHeightList () const
 Returns the total height of this line. More...
 
wxCoord GetFullWidth () const
 How many pixels is this list of cells wide, if we don't break it into lines?
 
wxCoord GetLineWidth () const
 How many pixels is the current line of this list of cells wide? More...
 
wxCoord GetCurrentX () const
 Get the x position of the top left of this cell. More...
 
wxCoord GetCurrentY () const
 Get the y position of the top left of this cell. More...
 
bool ConfigChanged () const
 Has the configuration changed since the last recalculation of this cell?
 
virtual wxString GetDiffPart () const
 Get the part for diff tag support. More...
 
virtual void Recalculate (AFontSize fontsize)
 Recalculate the size of the cell and the difference between top and center. More...
 
void RecalculateList (AFontSize fontsize)
 Recalculate both width and height of this list of cells. More...
 
void FontsChangedList ()
 Tell a whole list of cells that their fonts have changed.
 
void ResetSize_Recursively ()
 Mark all cached size information as "to be calculated". More...
 
void ResetSize_RecursivelyList ()
 Mark all cached size information of this cell list as "to be calculated".
 
void ResetSize ()
 Mark the cached height and width information as "to be calculated".
 
void ResetSizeList ()
 Mark the cached height information of the whole list of cells as "to be calculated".
 
void SetBigSkip (bool skip)
 Tell this cell to cause an additional vertical space.
 
bool HasBigSkip () const
 Does this cell come with an additional vertical space.
 
virtual void SetType (CellType type)
 Sets the text style according to the type.
 
const TextStyleGetTextStyle () const
 Get the text style.
 
void SetPen (wxDC *dc, double lineWidth=1.0) const
 Sets the drawing pen to the cell's default foreground color.
 
void SetBrush (wxDC *dc) const
 Sets the fill brush to the cell's default foreground color.
 
wxColour GetForegroundColor () const
 
void SetHighlight (bool highlight)
 Mark this cell as highlighted (e.G. being in a maxima box)
 
bool GetHighlight () const
 Is this cell highlighted (e.G. inside a maxima box)
 
virtual void SetIsExponent ()
 Tell this cell to be an exponent. More...
 
virtual void SetIsExponentList ()
 Tell this list of cells to be an exponent. More...
 
virtual void SetValue (const wxString &WXUNUSED(text))
 Allows to change the text a TextCell contains. More...
 
virtual const wxString & GetValue () const
 Gets the text this text cell contains.
 
Range GetCellsInRect (const wxRect &rect) const
 Returns the first and last cells within the given rectangle, recursing into the inner cells.
 
Range GetListCellsInRect (const wxRect &rect) const
 Returns the first and last cells within the given rectangle, without recursing into the inner cells.
 
virtual bool IsOperator () const
 Is this cell an operator?
 
bool IsCompound () const
 Do we have an operator in this line - draw () in frac...
 
virtual bool IsShortNum () const
 True if this cell represents a short number.
 
GroupCellGetGroup () const
 Returns the group cell this cell belongs to.
 
virtual wxString ListToString () const
 Returns this cell list's representation as a string.
 
wxString VariablesAndFunctionsList () const
 Returns all variable and function names used inside this list of cells. More...
 
virtual wxString ListToMatlab () const
 Convert this list to its LaTeX representation.
 
virtual wxString ListToTeX () const
 Convert this list to its LaTeX representation.
 
virtual wxString ListToXML () const
 Convert this list to a representation fit for saving in a .wxmx file.
 
virtual wxString ListToMathML (bool startofline=false) const
 Convert this list to a MathML representation.
 
virtual wxString ListToOMML (bool startofline=false) const
 Convert this list to an OMML representation.
 
virtual wxString ListToRTF (bool startofline=false) const
 Convert this list to an RTF representation.
 
virtual wxString ToOMML () const
 Returns the cell's representation as OMML. More...
 
virtual wxString ToMatlab () const
 Convert this cell to its Matlab representation.
 
virtual wxString ToMathML () const
 Convert this cell to a representation fit for saving in a .wxmx file.
 
virtual void Unbreak ()
 Undo breaking this cell into multiple lines. More...
 
virtual void UnbreakList ()
 Unbreak this line. More...
 
CellGetNextToDraw () const
 Get the next cell that needs to be drawn. More...
 
virtual void SetNextToDraw (Cell *next)
 Tells this cell which one should be the next cell to be drawn. More...
 
template<typename T , typename Del , typename std::enable_if< std::is_base_of< Cell, T >::value, bool >::type = true>
void SetNextToDraw (const std::unique_ptr< T, Del > &ptr)
 Tells this cell which one should be the next cell to be drawn. More...
 
bool IsComment () const
 Determine if this cell contains text that isn't code. More...
 
bool IsHidden () const
 Whether this cell is not to be drawn. More...
 
bool IsEditable (bool input=false) const
 Is this cell editable? More...
 
virtual bool CanPopOut () const
 Can this cell be popped out interactively in gnuplot?
 
virtual wxString GnuplotSource () const
 Retrieve the gnuplot source data for this image. More...
 
virtual void ProcessEvent (wxKeyEvent &WXUNUSED(event))
 Processes a key event.
 
virtual void SelectPointText (wxPoint point)
 Select the text at point.
 
virtual void SelectRectText (wxPoint one, wxPoint two)
 Select the text between the two points.
 
virtual void PasteFromClipboard (bool primary=false)
 Paste from the clipboard into this cell. More...
 
virtual bool CopyToClipboard () const
 Copy this cell's editable contents to the clipboard. More...
 
virtual bool CutToClipboard ()
 Cut this cell's editable contents to the clipboard. More...
 
virtual void SelectAll ()
 Select all editable text of this cell.
 
virtual bool CanCopy () const
 Select Can we copy the editable text of this cell?
 
virtual wxPoint PositionToPoint (size_t WXUNUSED(pos))
 Locates a char in the editable text of this cell.
 
virtual wxPoint PositionToPoint ()
 Locates the cursor in the editable text of this cell.
 
virtual bool IsDirty () const
 Is this cell marked as "from an old maxima run"?
 
virtual void SwitchCaretDisplay ()
 
virtual void SetFocus (bool WXUNUSED(focus))
 Focus this editor cell.
 
void SetTextColor (wxDC *dc)
 Sets the text color.
 
virtual bool IsActive () const
 Is this editor cell focused?
 
virtual void SetStyle (TextStyle style)
 Sets the TextStyle of this cell.
 
bool IsMath () const
 Is this cell possibly output of maxima?
 
virtual int GetImageBorderWidth () const
 0 for ordinary cells, 1 for slide shows and diagrams displayed with a 1-pixel border
 
void CopyCommonData (const Cell &cell)
 Copy common data (used when copying a cell)
 
std::unique_ptr< CellCopyList (GroupCell *group) const
 Return a copy of the list of cells beginning with this one.
 
void ClearToolTip ()
 Remove this cell's tooltip.
 
void SetToolTip (const wxString &tooltip)
 Set the tooltip to a given string.
 
void SetToolTip (const wxString *toolTip)
 Set the tooltip of this math cell - it must be exist at least as long as the cell does. Translation results behave that way. I.e. it must be a static string!
 
void AddToolTip (const wxString &tip)
 Add another tooltip to this cell.
 
virtual void SetCurrentPoint (wxPoint point)
 Tells this cell where it is placed on the worksheet.
 
void SetCurrentPoint (int x, int y)
 Tells this cell where it is placed on the worksheet.
 
wxPoint GetCurrentPoint () const
 Where is this cell placed on the worksheet?
 
bool IsBrokenIntoLines () const
 Whether this cell is broken into two or more lines. More...
 
bool GetSuppressMultiplicationDot () const
 Do we want to begin this cell with a center dot if it is part of a product? More...
 
void SetSuppressMultiplicationDot (bool val)
 
bool GetHidableMultSign () const
 Whether this is a hidable multiplication sign.
 
void SetHidableMultSign (bool val)
 
virtual void SetAltCopyText (const wxString &text)
 What should end up if placing this cell on the clipboard? More...
 
virtual const wxString & GetAltCopyText () const
 Get the text set using SetAltCopyText - may be empty.
 
const wxString & GetLocalToolTip () const
 
bool IsNull () const
 
bool HasControlBlock () const
 
bool HasOneCellPtr () const
 
bool IsFoldable () const
 folding and unfolding More...
 
GroupCellGetHiddenTree () const
 Get the tree of cells that got hidden by folding this cell.
 
bool HideTree (std::unique_ptr< GroupCell > &&tree)
 Fold the current cell. More...
 
std::unique_ptr< GroupCellUnhideTree ()
 Unfold the current cell.
 
bool RevealHidden ()
 Unfold all that is needed to make the current cell seen. More...
 
void SetHiddenTreeParent (GroupCell *parent)
 Set the parent cell of hidden cells. More...
 
GroupCellFold ()
 Fold this cell. More...
 
GroupCellUnfold ()
 Unfold this cell. More...
 
GroupCellFoldAll ()
 Fold all cells. More...
 
GroupCellUnfoldAll ()
 Unfold all cells. More...
 
bool IsLesserGCType (GroupType comparedTo) const
 Document structure: Can this cell type be part of the contents of comparedTo? More...
 

Static Public Member Functions

static wxString ToTeXImage (const Cell *tmp, const wxString &imgDir, const wxString &filename, std::size_t *imgCounter)
 
static wxString TexEscapeOutputCell (wxString Input)
 
static wxString OMML2RTF (wxXmlNode *node)
 Converts an OMML tag to the corresponding RTF snippet.
 
static wxString OMML2RTF (wxString ommltext)
 Converts OMML math to RTF math.
 
static wxString RTFescape (wxString, bool MarkDown=false)
 Escape a string for RTF.
 
static wxString XMLescape (wxString)
 Escape a string for XML.
 
static std::unique_ptr< CellCopyList (GroupCell *group, const Cell *cell)
 Return a copy of the given list of cells.
 
static wxString wxColor2HtmlString (wxColor col)
 
static std::unique_ptr< CellMakeVisiblyInvalidCell (GroupCell *group, Configuration *config)
 
static size_t GetLiveInstanceCount ()
 
static size_t GetLiveControlBlockInstanceCount ()
 

Data Fields

StringHash m_knownAnswers
 A list of answers provided by the user.
 

Protected Member Functions

wxCoord GetInputIndent ()
 
bool NeedsRecalculation (AFontSize fontSize) const override
 True, if something that affects the cell size has changed.
 
void UpdateCellsInGroup ()
 
void InitBitFields_GroupCell ()
 
void BreakUpAndMark ()
 Break up the internal cells of this cell, and mark it as broken up. More...
 
wxBitmap BitmapFromSVG (wxString svgData, wxSize size)
 Renders a bitmap from svgData at the requested size.
 
std::unique_ptr< CellMakeVisiblyInvalidCell () const
 
WorksheetGetWorksheet () const
 
virtual void FontsChanged ()
 To be called if the font has changed.
 
CellPointersGetCellPointers () const
 

Protected Attributes

wxRect m_outputRect {-1, -1, 0, 0}
 
CellPointers *const m_cellPointers = GetCellPointers()
 
std::unique_ptr< GroupCellm_hiddenTree
 here hidden (folded) tree of GCs is stored
 
GroupCellm_hiddenTreeParent = {}
 store linkage to the parent of the fold
 
std::unique_ptr< Cellm_inputLabel
 The input label of this cell. Is followed by the input of the cell.
 
std::unique_ptr< Cellm_output
 The maxima output this cell contains.
 
int m_labelWidth_cached = 0
 
int m_inputWidth
 
int m_inputHeight
 
int16_t m_cellsInGroup = 1
 The number of cells the current group contains (-1, if no GroupCell)
 
int16_t m_numberedAnswersCount = 0
 
AFontSize m_mathFontSize
 
GroupType m_groupType = {}
 Which type this cell is of?
 
bool m_autoAnswer: 1
 Does this GroupCell automatically fill in the answer to questions?
 
bool m_inEvaluationQueue: 1
 
bool m_lastInEvaluationQueue: 1
 
bool m_updateConfusableCharWarnings: 1
 
bool m_suppressTooltipMarker: 1
 Suppress the yellow ToolTip marker?
 
bool m_cellsAppended: 1
 
wxPoint m_currentPoint {-1, -1}
 The point in the work sheet at which this cell begins. More...
 
CellPtr< GroupCellm_group
 The GroupCell this list of cells belongs to.
 
CellPtr< Cellm_nextToDraw
 The next cell in the draw list. This has been factored into Cell temporarily to reduce the change "noise" when it will be subsequently removed.
 
Configurationm_configuration
 A pointer to the configuration responsible for this worksheet.
 
const wxString * m_toolTip
 This tooltip is owned by us when m_ownsToolTip is true. Otherwise, it points to a "static" string.
 
wxCoord m_height = -1
 The height of this cell. More...
 
wxCoord m_width = -1
 The width of this cell; is recalculated by RecalculateHeight.
 
wxCoord m_center = -1
 The distance between the top and the insertion point of this cell. More...
 
AFontSize m_fontSize_Scaled = {}
 The font size is smaller in super- and subscripts.
 
CellType m_type = MC_TYPE_DEFAULT
 
TextStyle m_textStyle = TS_MATH
 

Static Protected Attributes

static wxString m_lookalikeChars
 

Detailed Description

A cell grouping input (and, if there is one, also the output) cell to a foldable item.

Items where a list of groupcells can be folded include

This GroupCell stores the currently hidden cells in the GroupCell m_hiddenTree. This tree has the parent m_hiddenTreeParent.

232 bytes

Member Function Documentation

◆ AddEnding()

bool GroupCell::AddEnding ( )
overridevirtual

Add a semicolon to a code cell, if needed.

Defined in GroupCell and EditorCell

Reimplemented from Cell.

◆ BreakUp()

bool Cell::BreakUp ( )
virtualinherited

Try to split this command into lines to make it fit on the screen.

Return values
true= This cell was split into lines.

Reimplemented in SumCell, SqrtCell, ParenCell, NamedBoxCell, LongNumberCell, ListCell, LimitCell, IntervalCell, IntCell, FunCell, FracCell, ExptCell, DiffCell, ConjugateCell, BoxCell, and AbsCell.

◆ BreakUpAndMark()

void Cell::BreakUpAndMark ( )
protectedinherited

Break up the internal cells of this cell, and mark it as broken up.

Sets the cell's size to 0, as in broken up state the contents of the cell will be displayed in 1D mode while this cell won't be displayed, at all.

◆ BreakUpCells()

bool Cell::BreakUpCells ( )
inherited

Cell list: Convert 2d math objects bigger than the screen width into linear form.

Return values
true,ifthis action has changed the height of cells.

◆ CellsInListRecursive()

unsigned long Cell::CellsInListRecursive ( ) const
inherited

How many cells does this cell contain?

The number of cells the current group contains (-1, if no GroupCell)

◆ CellUnderPointer()

void GroupCell::CellUnderPointer ( GroupCell cell)

Marks the cell that is under the mouse pointer.

Is kept in GroupCell so every GroupCell can decide it is no more under the pointer once it has been deleted from the worksheet.

◆ ClearCache()

virtual void Cell::ClearCache ( )
inlinevirtualinherited

Clears memory from cached items automatically regenerated when the cell is drawn.

The scaled version of the image will be recreated automatically once it is needed.

Reimplemented in ImgCellBase, ImgCell, and AnimationCell.

◆ ClearCacheList()

void Cell::ClearCacheList ( )
inherited

Clears the cache of the whole list of cells starting with this one.

For details see ClearCache().

◆ ContainsPoint()

bool Cell::ContainsPoint ( wxPoint  point) const
inlineinherited

Is a given point inside this cell?

Parameters
pointThe point to test for collision with this cell

◆ ContainsRect()

bool Cell::ContainsRect ( const wxRect &  sm,
bool  all = true 
) const
inherited

Is a part of this cell inside a certain rectangle?

Parameters
smThe rectangle to test for collision with this cell
all
  • true means test this cell and the ones that are following it in the list
  • false means test this cell only.

◆ Copy()

std::unique_ptr<Cell> GroupCell::Copy ( GroupCell group) const
overridevirtual

Create a copy of this cell.

This method is purely virtual, which means every child class has to define its own Copy() method.

Implements Cell.

◆ CopyToClipboard()

virtual bool Cell::CopyToClipboard ( ) const
inlinevirtualinherited

Copy this cell's editable contents to the clipboard.

Only interesting for EditorCells

Reimplemented in ImgCellBase, ImgCell, EditorCell, and AnimationCell.

◆ CutToClipboard()

virtual bool Cell::CutToClipboard ( )
inlinevirtualinherited

Cut this cell's editable contents to the clipboard.

Only interesting for EditorCells

Reimplemented in EditorCell.

◆ Draw()

void GroupCell::Draw ( wxPoint  point,
wxDC *  dc,
wxDC *  antialiassingDC 
)
overridevirtual

Draw this GroupCell.

Also assigns all output cells contained in this GroupCell a y coordinate.

Attention
The height the output has needs to be in sync with the height calculation done during RecalculateAppended() and during RecalculateOutput().
The y position used here must be in sync with the one calculated by RecalculateOutput().

Reimplemented from Cell.

◆ DrawBoundingBox()

void Cell::DrawBoundingBox ( wxDC &  WXUNUSEDdc,
bool  all = false 
)
virtualinherited

Draw a rectangle that marks this cell or this list of cells as selected.

Parameters
all
  • true: Draw the bounding box around this list of cells
  • false: Draw the bounding box around this cell only
dcThe drawing context the box is drawn in.

◆ DrawList()

void Cell::DrawList ( wxPoint  point,
wxDC *  dc,
wxDC *  adc 
)
inherited

Draw this list of cells.

Parameters
pointThe x and y position this cell is drawn at

◆ DrawThisCell()

bool Cell::DrawThisCell ( wxPoint  point)
inherited

Is this cell currently visible in the window?

Parameters
pointThe point to place this cell at

◆ Fold()

GroupCell * GroupCell::Fold ( )

Fold this cell.

Returns
the cell's address if folding was successful, else NULL

◆ FoldAll()

GroupCell * GroupCell::FoldAll ( )

Fold all cells.

Returns
the cell's address if folding was successful, else NULL

◆ ForceBreakLine()

void Cell::ForceBreakLine ( bool  force = true)
inlineinherited

Insert (or remove) a forced linebreak at the beginning of this cell.

Parameters
force
  • true: Insert a forced linebreak
  • false: Remove the forced linebreak

◆ GetCenter()

wxCoord Cell::GetCenter ( ) const
inlineinherited

Get the distance between the top and the center of this cell.

Remember that (for example with double fractions) the center does not have to be in the middle of a cell even if this object is — by definition — center-aligned.

◆ GetCenterList()

int Cell::GetCenterList ( ) const
inherited

Returns the maximum distance between top and center of this line.

Note that the center doesn't need to be exactly in the middle of an object. For a fraction for example the center is exactly at the middle of the horizontal line.

◆ GetCurrentX()

wxCoord Cell::GetCurrentX ( ) const
inlineinherited

Get the x position of the top left of this cell.

See m_currentPoint for more details.

◆ GetCurrentY()

wxCoord Cell::GetCurrentY ( ) const
inlineinherited

Get the y position of the top left of this cell.

See m_currentPoint for more details.

◆ GetDiffPart()

wxString Cell::GetDiffPart ( ) const
virtualinherited

Get the part for diff tag support.

only ExptCell and SubSupCell override this - and this function seems to be used by fractions that represent an diff() command.

Reimplemented in SubSupCell, and ExptCell.

◆ GetDrop()

wxCoord Cell::GetDrop ( ) const
inlineinherited

Get the distance between the center and the bottom of this cell.

Remember that (for example with double fractions) the center does not have to be in the middle of an output cell even if the current object is — by definition — center-aligned.

This value is recalculated by Recalculate

◆ GetHeight()

wxCoord Cell::GetHeight ( ) const
inlineinherited

Get the height of this cell.

This value is recalculated by Recalculate()

◆ GetHeightList()

int Cell::GetHeightList ( ) const
inherited

Returns the total height of this line.

Returns GetCenterList()+GetMaxDrop()

◆ GetLabel()

Cell* GroupCell::GetLabel ( ) const
inline

Returns the list of cells the output consists of, starting with the label.

See also GetOutput();

◆ GetLastWorkingGroup()

GroupCell * GroupCell::GetLastWorkingGroup ( ) const

Which GroupCell was the last maxima was working on?

Must be kept in GroupCell as on deletion a GroupCell will unlink itself from this pointer.

◆ GetLineWidth()

int Cell::GetLineWidth ( ) const
inherited

How many pixels is the current line of this list of cells wide?

This command returns the real line width when all line breaks are really performed. See GetFullWidth().

◆ GetMaxDrop()

int Cell::GetMaxDrop ( ) const
inherited

Returns the maximum distance between center and bottom of this line.

Note that the center doesn't need to be exactly in the middle of an object. For a fraction for example the center is exactly at the middle of the horizontal line.

◆ GetNextToDraw()

Cell* Cell::GetNextToDraw ( ) const
inlineinherited

Get the next cell that needs to be drawn.

In case of potential 2d objects like fractions either the fraction needs to be drawn as a single 2D object or the nominator, the cell containing the "/" and the denominator are pointed to by GetNextToDraw() as single separate objects.

◆ GetOutput()

Cell* GroupCell::GetOutput ( ) const
inline

Returns the list of cells the output consists of, starting after the label.

See also GetLabel()

◆ GetRect()

wxRect GroupCell::GetRect ( bool  wholeList = false) const
overridevirtual

Get the smallest rectangle this cell fits in.

Parameters
all
  • true: Get the rectangle for this cell and the ones that follow it in the list of cells
  • false: Get the rectangle for this cell only.

Reimplemented from Cell.

◆ GetSuppressMultiplicationDot()

bool Cell::GetSuppressMultiplicationDot ( ) const
inlineinherited

Do we want to begin this cell with a center dot if it is part of a product?

Maxima will represent a product like (a*b*c) by a list like the following: [*,a,b,c]. This would result us in converting (a*b*c) to the following LaTeX code: \left(\cdot a ß\cdot b \cdot c\right) which obviously is one \cdot too many => we need parenthesis cells to set this flag for the first cell in their "inner cell" list.

◆ GetToolTip()

const wxString & GroupCell::GetToolTip ( wxPoint  point) const
overridevirtual

Returns the tooltip for the element at the position point.

wxEmptyString means: No toolTip.

Reimplemented from Cell.

◆ GetWidth()

int Cell::GetWidth ( ) const
inlineinherited

Get the width of this cell.

This value is recalculated by Recalculate()

◆ GnuplotSource()

virtual wxString Cell::GnuplotSource ( ) const
inlinevirtualinherited

Retrieve the gnuplot source data for this image.

wxEmptyString means: No such data.

Reimplemented in ImgCellBase, ImgCell, and AnimationCell.

◆ HideTree()

bool GroupCell::HideTree ( std::unique_ptr< GroupCell > &&  tree)

Fold the current cell.

Returns
  • false, if the cell already was folded when this function was called
  • true, if the cell was folded by this function call.

◆ IsBrokenIntoLines()

bool Cell::IsBrokenIntoLines ( ) const
inlineinherited

Whether this cell is broken into two or more lines.

Long abs(), conjugate(), fraction and similar cells can be displayed as 2D objects, but will be displayed in their linear form (and therefore broken into lines) if they end up to be wider than the screen. In this case m_isBrokenIntoLines is true.

◆ IsComment()

bool Cell::IsComment ( ) const
inlineinherited

Determine if this cell contains text that isn't code.

Returns
true, if this is a text cell, a title cell, a section, a subsection or a sub(n)section cell.

◆ IsEditable()

bool Cell::IsEditable ( bool  input = false) const
inlineinherited

Is this cell editable?

Editable cells include comments, code, captions and questions from maxima.

◆ IsFoldable()

bool GroupCell::IsFoldable ( ) const

folding and unfolding

Is this cell foldable?

◆ IsHidden()

bool Cell::IsHidden ( ) const
inlineinherited

Whether this cell is not to be drawn.

Currently the following items fall into this category:

  • parenthesis around fractions or similar things that clearly can be recognized as atoms
  • plus signs within numbers
  • The output in folded GroupCells

Additionally folded GroupCells are marked as "hidden".

◆ IsLesserGCType()

bool GroupCell::IsLesserGCType ( GroupType  comparedTo) const

Document structure: Can this cell type be part of the contents of comparedTo?

For example ordinary text cells can be part of a chapter and sections can be part of a chapter, too.

◆ PasteFromClipboard()

void Cell::PasteFromClipboard ( bool  primary = false)
virtualinherited

Paste from the clipboard into this cell.

Parameters
primaryLinux has two clipboards: One that automatically stores all selected test and that is pasted on middle-click (true) and the traditional copy-and-paste one (false). This parameter tells which clipboard to use.

Reimplemented in EditorCell.

◆ Recalculate() [1/2]

void Cell::Recalculate ( AFontSize  fontsize)
virtualinherited

Recalculate the size of the cell and the difference between top and center.

Must set: m_height, m_width, m_center.

Parameters
fontsizeIn exponents, super- and subscripts the font size is reduced. This cell therefore needs to know which font size it has to be drawn at.

Reimplemented in ImgCellBase, TextCell, SumCell, SubSupCell, SubCell, SqrtCell, ParenCell, MatrCell, LongNumberCell, ListCell, LimitCell, LabelCell, IntervalCell, IntCell, ImgCell, FunCell, FracCell, ExptCell, EditorCell, DigitCell, DiffCell, AtCell, and AbsCell.

◆ Recalculate() [2/2]

void GroupCell::Recalculate ( AFontSize   WXUNUSEDfontsize)
inlineoverride

Recalculates the size of this GroupCell and all cells inside it if needed.

This command will also assign the GroupCell a y coordinate it is plotted at. The y coordinate of all output cells of this GroupCell is assigned during GroupCell::Draw() by providing Cell::Draw() with the cell's coordinates.

◆ RecalculateList()

void Cell::RecalculateList ( AFontSize  fontsize)
inherited

Recalculate both width and height of this list of cells.

Is faster than a RecalculateHeightList();RecalculateWidths();.

◆ RecalculateOutput()

void GroupCell::RecalculateOutput ( )

Recalculate the height of the output part of the cell.

Attention
Needs to be in sync with the height calculation done during Draw() and during RecalculateAppended.

◆ RemoveOutput()

void GroupCell::RemoveOutput ( )

Remove all output cells attached to this one.

If called on an image cell it will not remove the image attached to it (even if the image technically is the first output cell attached to an image cell) but it will remove eventual error messages attached to the image.

◆ ResetInputLabel()

void GroupCell::ResetInputLabel ( )

Reset the input label of the current cell.

Won't do nothing if the cell isn't a code cell and therefore isn't equipped with an input label.

◆ ResetSize_Recursively()

void Cell::ResetSize_Recursively ( )
inherited

Mark all cached size information as "to be calculated".

Resets remembered size and position info for this cell and all cells inside it.

Resets cached data like width and the height of the current cell as well as the vertical position of the center. Then repeats this with

◆ RevealHidden()

bool GroupCell::RevealHidden ( )

Unfold all that is needed to make the current cell seen.

Unfold a tree from the bottom up, when a hidden cell needs to be seen.

Returns
  • false, if the cell already was visible on calling this function
  • true, if cells were unfolded by this function call
true if any cells were unfolded.

◆ Scale_Px() [1/2]

AFontSize Cell::Scale_Px ( AFontSize  size) const
inlineinherited

Scale font sizes and line widths according to the zoom factor.

Is used for displaying/printing/exporting of text/maths

◆ Scale_Px() [2/2]

wxCoord Cell::Scale_Px ( double  px) const
inlineinherited

Scale font sizes and line widths according to the zoom factor.

Is used for displaying/printing/exporting of text/maths

◆ SetAltCopyText()

void Cell::SetAltCopyText ( const wxString &  text)
virtualinherited

What should end up if placing this cell on the clipboard?

AltCopyTexts for example make sense for subCells: a_n looks like a[n], even if both are lookalikes and the cell therefore needs to know what to put on the clipboard if this cell were copied. They also make sense in many other places we may never have thought about. But since we seriously want to save memory space on the ubiuitous TextCells it might be scary to apply this principle to them, at least if you know that text you copy from the internet to a terminal might contain additional commands with TextSize=0...

Reimplemented in TextCell, SumCell, SubSupCell, SubCell, FunCell, and ExptCell.

◆ SetHiddenTreeParent()

void GroupCell::SetHiddenTreeParent ( GroupCell parent)

Set the parent cell of hidden cells.

For every cell in this GroupCell, set m_hiddenTreeParent to parent.

This way, the field can be used to traverse up the tree no matter which child we are on. In other words, every child knows its parent node.

◆ SetIsExponent()

void Cell::SetIsExponent ( )
virtualinherited

Tell this cell to be an exponent.

Fractions in exponents are displayed as 1D maths

Reimplemented in FracCell.

◆ SetIsExponentList()

void Cell::SetIsExponentList ( )
virtualinherited

Tell this list of cells to be an exponent.

Fractions in exponents are displayed as 1D maths

◆ SetNextToDraw() [1/2]

virtual void Cell::SetNextToDraw ( Cell next)
inlinevirtualinherited

Tells this cell which one should be the next cell to be drawn.

If the cell is displayed as 2d object this sets the pointer to the next cell.

If the cell is broken into lines this sets the pointer of the last of the list of cells this cell is displayed as.

Reimplemented in SumCell, SqrtCell, ParenCell, NamedBoxCell, LongNumberCell, ListCell, LimitCell, IntervalCell, IntCell, FunCell, FracCell, DiffCell, ConjugateCell, BoxCell, and AbsCell.

◆ SetNextToDraw() [2/2]

template<typename T , typename Del , typename std::enable_if< std::is_base_of< Cell, T >::value, bool >::type = true>
void Cell::SetNextToDraw ( const std::unique_ptr< T, Del > &  ptr)
inlineinherited

Tells this cell which one should be the next cell to be drawn.

If the cell is displayed as 2d object this sets the pointer to the next cell.

If the cell is broken into lines this sets the pointer of the last of the list of cells this cell is displayed as.

◆ SetValue()

virtual void Cell::SetValue ( const wxString &  WXUNUSEDtext)
inlinevirtualinherited

Allows to change the text a TextCell contains.

Todo:
Do we ever use this function?

◆ ToOMML()

wxString Cell::ToOMML ( ) const
virtualinherited

Returns the cell's representation as OMML.

If this method returns wxEmptyString this might mean that this cell is better handled in RTF; The OOML can later be translated to the respective RTF maths commands using OMML2RTF.

Don't know why OMML was implemented in a world that already knows MathML, though.

Reimplemented in TextCell, SumCell, SubSupCell, SubCell, SqrtCell, ParenCell, MatrCell, ListCell, LimitCell, IntervalCell, IntCell, FunCell, FracCell, ExptCell, DiffCell, AtCell, and AbsCell.

◆ ToRTF()

wxString GroupCell::ToRTF ( ) const
overridevirtual

Returns the cell's representation as RTF.

If this method returns wxEmptyString this might mean that this cell is better handled in OMML.

Reimplemented from Cell.

◆ ToTeX()

wxString GroupCell::ToTeX ( const wxString &  imgDir,
const wxString &  filename,
std::size_t *  imgCounter 
) const

Convert the cell to TeX code.

Parameters
imgDirThe directory eventual images should be stored in
filenameThe base filename for all images
imgCounterThe location of the counter that tells how many unique image filenames we have already generated. NULL means: This TeX export doesn't contain other GroupCells that can export images and therefore need to enumerate them.

◆ Unbreak()

void Cell::Unbreak ( )
virtualinherited

Undo breaking this cell into multiple lines.

Some cells have different representations when they contain a line break. Examples for this are fractions or a set of parenthesis.

This function tries to return a cell to the single-line form.

Reimplemented in SumCell.

◆ UnbreakList()

void Cell::UnbreakList ( )
virtualinherited

Unbreak this line.

Some cells have different representations when they contain a line break. Examples for this are fractions or a set of parenthesis.

This function tries to return a list of cells to the single-line form.

◆ Unfold()

GroupCell * GroupCell::Unfold ( )

Unfold this cell.

Returns
the last cell that was unfolded.

◆ UnfoldAll()

GroupCell * GroupCell::UnfoldAll ( )

Unfold all cells.

Returns
the last unfolded cell's address if unfolding was successful, else NULL

◆ VariablesAndFunctionsList()

wxString Cell::VariablesAndFunctionsList ( ) const
inherited

Returns all variable and function names used inside this list of cells.

Used for detecting lookalike chars in function and variable names.

Field Documentation

◆ m_center

wxCoord Cell::m_center = -1
protectedinherited

The distance between the top and the insertion point of this cell.

◆ m_currentPoint

wxPoint Cell::m_currentPoint {-1, -1}
protectedinherited

The point in the work sheet at which this cell begins.

The begin of a cell is defined as

  • x=the left border of the cell
  • y=the vertical center of the cell. Which (per example in the case of a fraction) might not be the physical center but the vertical position of the horizontal line between numerator and denominator.

The current point is recalculated

  • for GroupCells by GroupCell::RecalculateHeight
  • for EditorCells by it's GroupCell's RecalculateHeight and
  • for Cells when they are drawn.

◆ m_height

wxCoord Cell::m_height = -1
protectedinherited

The height of this cell.


The documentation for this class was generated from the following files: