Pyro higlevel API
Classes | Public Member Functions | Friends | List of all members
os::Splitter Class Reference

Splitter View. More...

Inheritance diagram for os::Splitter:
os::View os::Handler

Classes

class  Private
 

Public Member Functions

 Splitter (const Rect &cFrame, const String &cTitle, View *pView1, View *pView2, orientation eOrientation=HORIZONTAL, uint32 nResizeMask=CF_FOLLOW_LEFT|CF_FOLLOW_TOP, uint32 nFlags=WID_WILL_DRAW|WID_CLEAR_BACKGROUND)
 Spliter constructor. More...
 
virtual ~Splitter ()
 
virtual void SplitChanged ()
 Hook called when the split bar position has changed. More...
 
void SetSplitRatio (float vRatio)
 Set split ratio. More...
 
float GetSplitRatio () const
 Get split ratio. More...
 
void SetSplitLimits (float fMinSize1=0, float fMinSize2=0)
 Set limits in the position of the split bar. More...
 
void SetOrientation (os::orientation eOrientation)
 Change the direction of the split bar. More...
 
ViewSeparatorView () const
 Get the separator view. More...
 
float GetSplitPosition () const
 Return the separator position. More...
 
float GetSeparatorWidth () const
 Return the separator width. More...
 
void SetSeparatorWidth (float fWidth)
 Set the separator width. More...
 
void AdjustLayout ()
 Refresh the layout of the splitter. More...
 
void SplitBy (float fValue)
 Change the position of the split bar. More...
 
void SplitTo (float fValue)
 Set the position of the split bar. More...
 
virtual void MouseMove (const Point &cNewPos, int nCode, uint32 nButtons, Message *pcData)
 Hook called by the system when the mouse is moved. More...
 
virtual void MouseUp (const Point &cPosition, uint32 nButtons, Message *pcData)
 Hook called by the system when a mouse button is release. More...
 
virtual void KeyDown (const char *pzString, const char *pzRawString, uint32 nQualifiers)
 Hook called by the system when a key is pressed while the view has focus. More...
 
virtual void FrameSized (const Point &cDelta)
 Virtual hook called by the system when the view is resized. More...
 
virtual os::Point GetPreferredSize (bool bLargest) const
 
- Public Member Functions inherited from os::View
 View (const Rect &cFrame, const String &cTitle, uint32 nResizeMask=CF_FOLLOW_LEFT|CF_FOLLOW_TOP, uint32 nFlags=WID_WILL_DRAW|WID_CLEAR_BACKGROUND)
 View constructor. More...
 
virtual ~View ()
 View destructor. More...
 
virtual void AttachedToWindow ()
 
virtual void AllAttached ()
 
virtual void DetachedFromWindow ()
 
virtual void AllDetached ()
 
virtual void Activated (bool bIsActive)
 Hook called when the view gain or loose focus. More...
 
virtual void WindowActivated (bool bIsActive)
 Hook called when the window hosting this view gain or loose focus. More...
 
virtual void Paint (const Rect &cUpdateRect)
 Called by the system update "damaged" areas of the view. More...
 
virtual void MouseDown (const Point &cPosition, uint32 nButtons)
 Hook called by the system when a mouse button is pressed. More...
 
virtual void KeyUp (const char *pzString, const char *pzRawString, uint32 nQualifiers)
 Hook called by the system when a key is released while the view has focus. More...
 
virtual void FrameMoved (const Point &cDelta)
 Virtual hook called by the system when the view is moved within it's parent. More...
 
virtual void ViewScrolled (const Point &cDelta)
 Virtual hook called by the system when the view content is scrolled. More...
 
virtual void FontChanged (Font *pcNewFont)
 Called to notify the view that the font has changed. More...
 
virtual Point GetContentSize () const
 
virtual void WheelMoved (const Point &cDelta)
 Hook called by the system when the scroll-wheel is rotated. More...
 
virtual void AddChild (View *pcView, bool bAssignTabOrder=false)
 
void RemoveChild (View *pcChild)
 
void RemoveThis ()
 
ViewGetChildAt (const Point &cPos) const
 
ViewGetChildAt (int nIndex) const
 
ViewGetParent () const
 
ScrollBarGetVScrollBar () const
 
ScrollBarGetHScrollBar () const
 
WindowGetWindow () const
 
String GetTitle () const
 
virtual int GetTabOrder () const
 Get the keybord manouvering order. More...
 
virtual void SetTabOrder (int nOrder=NEXT_TAB_ORDER)
 Set the keyboard manouvering sorting order. More...
 
virtual const ShortcutKeyGetShortcut () const
 
virtual void SetShortcut (const ShortcutKey &cShortcut)
 Set keyboard shortcut. More...
 
virtual void SetShortcutFromLabel (const String &cLabel)
 Set keyboard shortcut from Label. More...
 
void SetContextMenu (Menu *pcMenu)
 Set popup menu for a View. More...
 
MenuGetContextMenu () const
 Get popup menu. More...
 
uint32 GetQualifiers () const
 
void GetMouse (Point *pcPosition, uint32 *pnButtons) const
 
void SetMousePos (const Point &cPosition)
 
void BeginDrag (Message *pcData, const Point &cOffset, const Bitmap *pcBitmap, Handler *pcReplyTarget=NULL)
 Start a drag and drop operation. More...
 
void BeginDrag (Message *pcData, const Point &cOffset, const Rect &cBounds, Handler *pcReplyTarget=NULL)
 Start a drag and drop operation. More...
 
void SetFlags (uint32 nFlags)
 
uint32 GetFlags (uint32 nMask=~0L) const
 
void SetResizeMask (uint32 nFlags)
 
uint32 GetResizeMask () const
 
void Show (bool bVisible=true)
 Show/hide a view and all it's children. More...
 
void Hide ()
 
bool IsVisible () const
 
virtual void MakeFocus (bool bFocus=true)
 
virtual bool HasFocus () const
 
Rect GetFrame () const
 
Rect GetBounds () const
 
Rect GetNormalizedBounds () const
 
float Width () const
 
float Height () const
 
Point GetLeftTop () const
 
virtual void SetFrame (const Rect &cRect, bool bNotifyServer=true)
 Set the size and position relative to the parent view. More...
 
virtual void MoveBy (const Point &cDelta)
 Move the view within the parent coordinate system. More...
 
virtual void MoveBy (float vDeltaX, float vDeltaY)
 
virtual void MoveTo (const Point &cPos)
 Set the views position within the parent coordinate system. More...
 
virtual void MoveTo (float x, float y)
 
virtual void ResizeBy (const Point &cDelta)
 
virtual void ResizeBy (float vDeltaW, float vDeltaH)
 
virtual void ResizeTo (const Point &cSize)
 Set a new absolute size for the view. More...
 
virtual void ResizeTo (float W, float H)
 Set a new absolute size for the view. More...
 
void SetDrawingRegion (const Region &cReg)
 Restrict rendering using a clipping region. More...
 
void ClearDrawingRegion ()
 Remove any previously assigned drawing region. More...
 
void SetShapeRegion (const Region &cReg)
 Define a non-square shape for the view. More...
 
void ClearShapeRegion ()
 Remove any previously assigned shape region. More...
 
virtual int ToggleDepth ()
 
Point ConvertFromParent (const Point &cPoint) const
 
void ConvertFromParent (Point *cPoint) const
 
Rect ConvertFromParent (const Rect &cRect) const
 
void ConvertFromParent (Rect *cRect) const
 
Point ConvertToWindow (const Point &cPoint) const
 
void ConvertToWindow (Point *cPoint) const
 
Rect ConvertToWindow (const Rect &cRect) const
 
void ConvertToWindow (Rect *cRect) const
 
Point ConvertFromWindow (const Point &cPoint) const
 
void ConvertFromWindow (Point *cPoint) const
 
Rect ConvertFromWindow (const Rect &cRect) const
 
void ConvertFromWindow (Rect *cRect) const
 
Point ConvertToScreen (const Point &cPoint) const
 
void ConvertToScreen (Point *cPoint) const
 
Rect ConvertToScreen (const Rect &cRect) const
 
void ConvertToScreen (Rect *cRect) const
 
Point ConvertFromScreen (const Point &cPoint) const
 
void ConvertFromScreen (Point *cPoint) const
 
Rect ConvertFromScreen (const Rect &cRect) const
 
void ConvertFromScreen (Rect *cRect) const
 
void Invalidate (const Rect &cRect, bool bRecurse=false)
 Add a rectangle to the damage list. More...
 
void Invalidate (bool bRecurse=false)
 Invalidate the whole view. More...
 
void Flush ()
 Flush the render queue. More...
 
void Sync ()
 Flush the render queue. More...
 
void SetDrawingMode (drawing_mode nMode)
 
drawing_mode GetDrawingMode () const
 
void SetFont (Font *pcFont)
 Change the views text font. More...
 
FontGetFont () const
 
void SetFgColor (int nRed, int nGreen, int nBlue, int nAlpha=255)
 
void SetFgColor (Color32_s sColor)
 
Color32_s GetFgColor () const
 
void SetBgColor (int nRed, int nGreen, int nBlue, int nAlpha=255)
 
void SetBgColor (Color32_s sColor)
 
Color32_s GetBgColor () const
 
void SetEraseColor (int nRed, int nGreen, int nBlue, int nAlpha=255)
 
void SetEraseColor (Color32_s sColor)
 
Color32_s GetEraseColor () const
 
void MovePenTo (const Point &cPos)
 
void MovePenTo (float x, float y)
 
void MovePenBy (const Point &cPos)
 
void MovePenBy (float x, float y)
 
Point GetPenPosition () const
 Get the current pen position. More...
 
void DrawLine (const Point &cToPoint)
 
void DrawLine (const Point &cFromPnt, const Point &cToPnt)
 
virtual void ScrollBy (const Point &cDelta)
 
virtual void ScrollBy (float vDeltaX, float vDeltaY)
 
virtual void ScrollTo (Point cTopLeft)
 
virtual void ScrollTo (float x, float y)
 
Point GetScrollOffset () const
 
void ScrollRect (const Rect &cSrcRect, const Rect &cDstRect)
 Copy a rectangle from one location to another within the view. More...
 
void FillRect (const Rect &cRect)
 
void FillRect (const Rect &cRect, Color32_s sColor)
 
void DrawBitmap (const Bitmap *pcBitmap, const Rect &cSrcRect, const Rect &cDstRect)
 Render a bitmap into the view. More...
 
void EraseRect (const Rect &cRect)
 
void DrawFrame (const Rect &cRect, uint32 nFlags)
 
void DrawRoundedFrame (const os::Rect &cReizeFrame=os::Rect(1, 4,-1,-4), const os::Color32_s &cColor=get_default_color(COL_SHADOW))
 
void DrawRoundedFrame (const os::Rect &cFrame, const os::Rect &cReizeFrame=os::Rect(1, 4,-1,-4), const os::Color32_s &cColor=get_default_color(COL_SHADOW))
 
void DrawString (const Point &cPos, const String &cString)
 
void DrawString (const String &cString)
 Render a text-string at the current pen position. More...
 
void DrawString (const char *pzStr, int Len=-1)
 
void DrawText (const Rect &cPos, const String &cString, uint32 nFlags=0)
 Render a text-string in a specified rectangle. More...
 
void DrawSelectedText (const Rect &cPos, const String &cString, const IPoint &cSel1, const IPoint &cSel2, uint32 nMode=SEL_CHAR, uint32 nFlags=0)
 
void GetSelection (const String &cClipboard="__system_clipboard__")
 
void GetTruncatedStrings (const char **pazStringArray, int nStringCount, uint32 nMode, float nWidth, char **pazResultArray) const
 
float GetStringWidth (const String &cString) const
 
float GetStringWidth (const char *pzString, int nLen=-1) const
 
void GetStringWidths (const char **apzStringArray, const int *anLengthArray, int nStringCount, float *avWidthArray) const
 
Point GetTextExtent (const String &cString, uint32 nFlags=0, int nTargetWidth=-1) const
 
int GetStringLength (const String &cString, float vWidth, bool bIncludeLast=false) const
 
int GetStringLength (const char *pzString, int nLen, float vWidth, bool bIncludeLast=false) const
 
void GetStringLengths (const char **apzStringArray, const int *anLengthArray, int nStringCount, float vWidth, int *anMaxLengthArray, bool bIncludeLast=false) const
 
void GetFontHeight (font_height *psHeight) const
 
void Ping (int nSize=0) const
 
void SetToolTip (const os::String &t)
 
os::String GetToolTip () const
 
Point ConvertToParent (const Point &cPoint) const
 Translate a os::Point into our parents coordinate system. More...
 
void ConvertToParent (Point *cPoint) const
 Translate a os::Point into our parents coordinate system. More...
 
Rect ConvertToParent (const Rect &cRect) const
 
void ConvertToParent (Rect *cRect) const
 
- Public Member Functions inherited from os::Handler
 Handler (const String &cName)
 Construct a handler. More...
 
virtual ~Handler ()
 Destructor. More...
 
virtual void TimerTick (int nID)
 Timer dispatch member. More...
 
virtual void HandleMessage (Message *pcMessage)
 Handle a message targeted at this handler. More...
 
String GetName () const
 Get the handlers name. More...
 
void SetName (const String &cName)
 Rename the handler. More...
 
LooperGetLooper () const
 Get a pointer to the looper this handler belongs to. More...
 
void SetNextHandler (Handler *pcNextHandler)
 Set a handler that should handle messages this handler is not interrested in. More...
 
HandlerGetNextHandler () const
 Get the next handler in a handler chain. More...
 
void AddFilter (MessageFilter *pcFilter)
 
void RemoveFilter (MessageFilter *pcFilter)
 
const MsgFilterListGetFilterList () const
 
const uint32 GetToken ()
 Get the handlers token. More...
 

Friends

class os_priv::SplitterSeparator
 

Detailed Description

An Splitter object stacks two subviews within one view so that the user can change their relative sizes. By default, the separator bar between the views is horizontal, so the views are one on top of the other. To have vertical split bars (so the views are side by side), use the method Splitter::SetDirection. The rest of this section assumes you have horizontal split bars and gives information on vertical split bars in parentheses.

The Splitter resizes its subviews so that each subview is the same width (or height) as the Splitter view, and the total of the subviews' heights (or widths), plus the separator's thicknesses, is equal to the height (or width) of the Splitter. The Splitter positions its subviews so that the first subview is at the top (or left) of the Splitter frame. The user can set the height (or width) of two subviews by moving a horizontal (or vertical) bar called the separator, which makes one subview smaller and the other larger.

Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

Constructor & Destructor Documentation

Splitter::Splitter ( const Rect cFrame,
const String cTitle,
View pView1,
View pView2,
orientation  eOrientation = HORIZONTAL,
uint32  nResizeMask = CF_FOLLOW_LEFT|CF_FOLLOW_TOP,
uint32  nFlags = WID_WILL_DRAW|WID_CLEAR_BACKGROUND 
)
Description:
Notes:
Warning:
Parameters
cFrameThe position and size of the splitter view
cTitleThe title of the splitter
pView1The top(left) subview
pView2The bottom(right) subview
eOrientationThe direction of the separator
nResizeMaskView resize mask
nFlagsView flags
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::View::AddChild(), AdjustLayout(), os::CF_FOLLOW_ALL, os::CF_FOLLOW_LEFT, os::CF_FOLLOW_RIGHT, os::CF_FOLLOW_TOP, os::Splitter::Private::m_pSeparator, os::Splitter::Private::m_pView1, os::Splitter::Private::m_pView2, os::Splitter::Private::m_SeparatorWidth, os::Splitter::Private::m_Tracking, os::Splitter::Private::m_vLimit1, os::Splitter::Private::m_vLimit2, os::Splitter::Private::m_vSplitPos, SEPARATOR_WIDTH, SetOrientation(), and os::View::SetResizeMask().

Splitter::~Splitter ( )
virtual

Member Function Documentation

void Splitter::AdjustLayout ( )
void Splitter::FrameSized ( const Point cDelta)
virtual
Description:
Overload this member if you need to know when the view is resized.
Note:
This member is called after the view is resized. If you need the old size you can subtract the cDelta calue from the current size.
Parameters
cDeltaThe distance the bottom/right corner was moved relative to the upper/left corner.
See Also
FrameMoved(), SetFrame, ResizeBy(), ResizeTo()
Author
Kurt Skauen (kurt@.nosp@m.athe.nosp@m.os.cx)

Reimplemented from os::View.

References AdjustLayout(), and os::View::FrameSized().

Point Splitter::GetPreferredSize ( bool  bLargest) const
virtual
float Splitter::GetSeparatorWidth ( ) const
Description:
Notes:
Warning:
Parameters
\return
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::Splitter::Private::m_SeparatorWidth.

float Splitter::GetSplitPosition ( ) const
Description:
Return the separator position
Notes:
Warning:
Parameters
\returnthe top(left) view height(width)
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::Rect::bottom, os::View::GetFrame(), os::Rect::left, os::Splitter::Private::m_eOrientation, os::Splitter::Private::m_pView1, os::Rect::right, os::Rect::top, and VERTICAL.

float Splitter::GetSplitRatio ( ) const
Description:
Get the split ratio.
See Also
SetSplitRatio()
Author
Henrik Isaksson (sylla.nosp@m.ble@.nosp@m.isaks.nosp@m.son..nosp@m.tk)

References os::Splitter::Private::m_vSplitPos.

void Splitter::KeyDown ( const char *  pzString,
const char *  pzRawString,
uint32  nQualifiers 
)
virtual
Description:
Overload this member if your view need to handle keyboard input. This member is called to allow the view to handle M_KEY_DOWN messages. The most common members are exctracted from the message and passed as parameters but you might need to obtain the raw message with os::Looper::GetCurrentMessage() and find some members yourself if you the data you needed are not passed in.
For example if you need the raw key-code for the pressed key you will have to lookup the "_raw_key" member from the message.
Parameters
pzStringString containing a single UTF-8 encoded character. This is the character generated by the pressed key according to the current keymap accounting for any qualifiers that might be pressed.
pzRawStringSame as pzString except that the key is converted without accounting for qualifiers. Ie. if 'A' is pressed while pressing <SHIFT> pzString will contain 'A' and pzRawString will contain 'a'.
nQualifiersBitmask describing which qualifiers that was active when the key was pressed.
See Also
KeyUp(), os::Looper::GetCurrentMessage()
Author
Kurt Skauen (kurt@.nosp@m.athe.nosp@m.os.cx)

Reimplemented from os::View.

References os::View::HasFocus(), os::View::KeyDown(), os::Splitter::Private::m_pView1, os::Splitter::Private::m_pView2, QUAL_ALT, VK_DOWN_ARROW, VK_END, VK_HOME, VK_LEFT_ARROW, VK_PAGE_DOWN, VK_PAGE_UP, VK_RIGHT_ARROW, and VK_UP_ARROW.

void Splitter::MouseMove ( const Point cNewPos,
int  nCode,
uint32  nButtons,
Message pcData 
)
virtual
Description:
This member is called from the window thread whenever the mouse is moved above the view or if the view has focus.
Oveload this member if your view need to handle mouse-move events.
The default implementation of this member will call MouseMove() on it's parent view if one exists.
Parameters
cNewPosNew mouse position given in the views coordinate system.
nCodeEnter/exit code. This is MOUSE_ENTERED when the mouse first enter the view, MOUSE_EXITED when the mouse leaves the view, MOUSE_INSIDE whenever the mouse move withing the boundary of the view and MOUSE_OUTSIDE when the mouse move outside the view (will only happen if the view has focus).
nButtonsBitmask telling which buttons that are currently pressed. Bit 0 is button 1 (left), bit 1 is button 2 (right), and bit 2 is button 3 (middle), and so on.
pcDataPointer to a Message object containing the dragged data if the user is in the middle of a drag and drop operation. Otherwise this pointer is NULL. Look at BeginDrag() for a more detailed description of the drag and drop system.
See Also
MouseDown(), MouseUp(), WheelMoved(), BeginDrag()
Author
Kurt Skauen (kurt@.nosp@m.athe.nosp@m.os.cx)

Reimplemented from os::View.

References os::Splitter::Private::m_eOrientation, os::Splitter::Private::m_OldPosition, os::Splitter::Private::m_Tracking, os::View::MouseMove(), SplitBy(), SplitChanged(), VERTICAL, os::Point::x, and os::Point::y.

void Splitter::MouseUp ( const Point cPosition,
uint32  nButtons,
Message pcData 
)
virtual
Description:
This member is called from the window thread whenever a mouse button is released above the view. You can overload this member if your view need to know about mouse-up events or if your view support drag and drop.
If mouse-up was the result of ending a drag and drop operation the pcData member will point to a Message containing the dragged data. Look at BeginDrag() for a more detailed description of the drag and drop system.
The default implementation of this member will call MouseDown() on it's parent view if one exists.
Parameters
cPositionMouse position in the views coordinate system at the time the mouse was pressed.
nButtonsIndex of the pressed button. Buttons start at 1 for the left button, 2 for the right button, 3 for the middle button. Additional buttons might be supported by the mouse driver and will then be assigned numbers from 4 and up.
pcDataPointer to a Message object containing the dragged data if this mouse-up was the end of a drag and drop operation. If no data was dragged it will be NULL.
See Also
MouseDown(), MouseMove(), WheelMoved()
Author
Kurt Skauen (kurt@.nosp@m.athe.nosp@m.os.cx)

Reimplemented from os::View.

References os::Splitter::Private::m_Tracking, and os::View::MouseUp().

View * Splitter::SeparatorView ( ) const
Description:
Return the separator view. This can be usefull for sample if you want to place icons on the separator.
Notes:
Warning:
Parameters
\return
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::Splitter::Private::m_pSeparator.

void Splitter::SetOrientation ( os::orientation  eOrientation)
void Splitter::SetSeparatorWidth ( float  fWidth)
Description:
The layout is automatically refreshed.
Notes:
Warning:
Parameters
\return
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References AdjustLayout(), and os::Splitter::Private::m_SeparatorWidth.

void Splitter::SetSplitLimits ( float  fMinSize1 = 0,
float  fMinSize2 = 0 
)
Description:
By default the split bar can be moved to the boders of the splitter. this method allow to limit the range of the split bar moves.
Notes:
Warning:
This limits are only used for user interaction. They are never checked when you change the layout programaticaly.
Parameters
nMinSize1minimal size that can take the top(left) view
nMinSize2minimal size that can take the bottom(right) view
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::Splitter::Private::m_vLimit1, and os::Splitter::Private::m_vLimit2.

void Splitter::SetSplitRatio ( float  vRatio)
Description:
Set the ratio between the two views of the splitter, eg. a ratio of 0.5 will make the two views share the size equally and position the splitter bar in the middle. Note that min/max sizes still apply, so you can't set the ratio to values that would violate those sizes.
Parameters
vRatioThe ratio View1 / (View1 + View2)
Author
Henrik Isaksson (sylla.nosp@m.ble@.nosp@m.isaks.nosp@m.son..nosp@m.tk)

References AdjustLayout(), os::View::Flush(), os::View::Invalidate(), and os::Splitter::Private::m_vSplitPos.

void Splitter::SplitBy ( float  fValue)
void Splitter::SplitChanged ( )
virtual
Description:
Notes:
The hook is only called when the split bar was moved by the user, not when the object was modified by a call to the Splitter::SplitBy or Splitter::SplitTo methods.
Warning:
Returns
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

Referenced by MouseMove().

void Splitter::SplitTo ( float  fValue)
Description:
Move the separator.
Notes:
Warning:
This method works with pixel values, normally you should use SetSplitRatio().
Parameters
fValuenew height(width) of the top(left) view
Returns
See Also
Author
Sebastien Keim (s.kei.nosp@m.m@la.nosp@m.poste.nosp@m..net)

References os::Rect::bottom, os::View::GetFrame(), os::Rect::left, os::Splitter::Private::m_eOrientation, os::Splitter::Private::m_pView1, os::Rect::right, SplitBy(), os::Rect::top, and VERTICAL.

Friends And Related Function Documentation

friend class os_priv::SplitterSeparator
friend