Graph Object Get Set Font

 

 

Version Info

Minimum Origin Version Required: Origin 8 SR0

Example

  • Font only can via format tree to access, GraphObject class not support yet.
  • Before running, please keep there is text object named MyText on active graph.
  • Get and set bold, italic, underline properties can be used from Origin8.1.
void GraphObject_SetFont_ex(string strName = "MyText")
{
        GraphLayer gl = Project.ActiveLayer();
        if( !gl )
                return;
        
        GraphObject go = gl.GraphObjects(strName);
        if( !go )
                return;
        
        int nTypeFace, nFontSize;
        bool bBold, bItalic, bUnderline;
        if( GetFontInfo(go, nTypeFace, nFontSize, bBold, bItalic, bUnderline) )
        {     
                nFontSize = nFontSize * 1.5;
                bBold = !bBold;
                bItalic = !bItalic;
                bUnderline = !bUnderline;             
                SetFontInfo(go, &nTypeFace, &nFontSize, &bBold, &bItalic, &bUnderline);
        }
}

bool GetFontInfo(GraphObject &go, int &nTypeFace, int &nFontSize, bool &bBold, bool &bItalic, bool &bUnderline)
{
        if ( !go )
                return false;
        
        int nType;
        go.GetObjectType(&nType);               
        if(GROT_TEXT != nType)
                return false;
        
        Tree trFormat;
        trFormat = go.GetFormat(FPB_ALL, FPB_ALL, TRUE, TRUE);
        
        nTypeFace = trFormat.Root.Font.Face.nVal;
        nFontSize = trFormat.Root.Font.Size.nVal;
        
        // The following settings will be ready from Origin8.1
        /*
        bBold = trFormat.Root.Font.Bold.nVal;
        bItalic = trFormat.Root.Font.Italic.nVal;
        bUnderline = trFormat.Root.Font.Underline.nVal; 
        */
        return true;
}

bool SetFontInfo(GraphObject &go,  int *pnTypeFace = NULL, int *pnFontSize = NULL, bool *pbBold = NULL, bool *pbItalic = NULL, bool *pbUnderline = NULL)
{
        if( !go )
                return false;
        
        int nType;
        go.GetObjectType(&nType);               
        if(GROT_TEXT != nType)
                return false;

        Tree trFormat;
        
        if(pnTypeFace)
                trFormat.Root.Font.Face.nVal = *pnTypeFace;
        
        if(pnFontSize)
                trFormat.Root.Font.Size.nVal = *pnFontSize;
        
        // The following settings will be ready from Origin8.1
        /*
        if(pbBold)
                trFormat.Root.Font.Bold.nVal = *pbBold;
        
        if(pbItalic)
                trFormat.Root.Font.Italic.nVal = *pbItalic;
        
        if(pbUnderline)
                trFormat.Root.Font.Underline.nVal = *pbUnderline;
        */
        
        if( 0 == go.UpdateThemeIDs(trFormat.Root) )
                return go.ApplyFormat(trFormat, true, true);
        return false;
}