182 lines
7.4 KiB
C
182 lines
7.4 KiB
C
#ifndef cmGrPage_h
|
|
#define cmGrPage_h
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//( { file_desc:"Device independent plotting window with one or more plot views." kw:[plot]}
|
|
|
|
enum
|
|
{
|
|
kHashMarkGrFl = 0x10,
|
|
kHashLabelGrFl= 0x20
|
|
};
|
|
|
|
typedef cmHandle_t cmGrPgH_t;
|
|
typedef cmHandle_t cmGrVwH_t;
|
|
typedef cmHandle_t cmGrAxH_t;
|
|
|
|
extern cmGrPgH_t cmGrPgNullHandle;
|
|
extern cmGrVwH_t cmGrVwNullHandle;
|
|
extern cmGrAxH_t cmGrAxNullHandle;
|
|
|
|
// Create a cmGrPage object.
|
|
cmGrRC_t cmGrPageCreate( cmCtx_t* ctx, cmGrPgH_t* hp, cmGrCbFunc_t cbFunc, void* cbArg );
|
|
|
|
// Destroy and release the resources assoc'd with a cmGrPage object;
|
|
cmGrRC_t cmGrPageDestroy( cmGrPgH_t* hp );
|
|
|
|
// Return true if the cmGrPage object handle is valid
|
|
bool cmGrPageIsValid( cmGrPgH_t h );
|
|
|
|
// Remove all objects from the page.
|
|
cmGrRC_t cmGrPageClear( cmGrPgH_t h );
|
|
|
|
// Intialize the count of rows and columns and setup the default layout.
|
|
cmGrRC_t cmGrPageInit( cmGrPgH_t h, const cmGrPExt_t* r, unsigned rn, unsigned cn, cmGrDcH_t dcH );
|
|
|
|
// Update the position of the views on the page.
|
|
cmGrRC_t cmGrPageResize( cmGrPgH_t h, const cmGrPExt_t* r, cmGrDcH_t dcH );
|
|
|
|
// Return the current page size and loc'n as set by cmGrPageInit() or cmGrPageResize().
|
|
void cmGrPageRect( cmGrPgH_t h, cmGrPExt_t* r );
|
|
|
|
// Return the count of plot views contained by this page. (rn*cn)
|
|
unsigned cmGrPageViewCount( cmGrPgH_t h );
|
|
|
|
// Enable or disable the focus for a given view.
|
|
// Note that the focused view is the view which is the target of controller
|
|
// buttons and scrollbars. This does not refer to the focused object.
|
|
// Set 'enableFl' if the view is receiving the focus.
|
|
// Clear 'enableFl' if the view is losing focus.
|
|
void cmGrPageViewFocus( cmGrPgH_t h, unsigned vwIdx, bool enableFl );
|
|
|
|
// Return the view which currently has the focus or cmGrVwNullHandle if
|
|
// no view has the focus.
|
|
cmGrVwH_t cmGrPageFocusedView( cmGrPgH_t h );
|
|
|
|
//
|
|
bool cmGrPageLayout( cmGrPgH_t h, cmGrDcH_t dcH );
|
|
|
|
// Draw the page.
|
|
void cmGrPageDraw( cmGrPgH_t h, cmGrDcH_t dcH );
|
|
|
|
// Label callback functions are used to translate numeric axis values to
|
|
// text strings. Multiple label callback functions can be registered with
|
|
// a page and then assigned to a given view axis via cmGrViewSetLabelFunc().
|
|
typedef void (*cmGrLabelFunc_t)( void* arg, cmChar_t* label, unsigned labelCharCnt, cmGrV_t value );
|
|
|
|
// Returns id of the new page label function.
|
|
unsigned cmGrPageLabelFuncRegister( cmGrPgH_t h, cmGrLabelFunc_t func, void* arg, const cmChar_t* label );
|
|
unsigned cmGrPageLabelFuncCount( cmGrPgH_t h );
|
|
unsigned cmGrPageLabelFuncIndexToId( cmGrPgH_t h, unsigned index );
|
|
unsigned cmGrPageLabelFuncLabelToId( cmGrPgH_t h, const cmChar_t* label );
|
|
cmGrLabelFunc_t cmGrPageLabelFunc( cmGrPgH_t h, unsigned id );
|
|
const cmChar_t* cmGrPageLabelFuncLabel( cmGrPgH_t h, unsigned id );
|
|
void* cmGrPageLabelFuncArg( cmGrPgH_t h, unsigned id );
|
|
|
|
//----------------------------------------------------------------------------
|
|
//)
|
|
//( { label:cmGrView file_desc:"Device independent plotting view." kw:[plot]}
|
|
//
|
|
|
|
// Get a view handle from the view index.
|
|
cmGrVwH_t cmGrPageViewHandle( cmGrPgH_t h, unsigned vwIdx );
|
|
|
|
// Get a view handle from to cmGrH_t.
|
|
cmGrVwH_t cmGrPageGrHandleToView( cmGrPgH_t h, cmGrH_t grH );
|
|
|
|
bool cmGrViewIsValid( cmGrVwH_t h );
|
|
|
|
// Initialize a plot view. title,xLabel, and yLabel are optional.
|
|
cmGrRC_t cmGrViewInit( cmGrVwH_t h, cmGrH_t grH, const cmChar_t* vwTitle, const cmChar_t* xLabel, const cmChar_t* yLabel );
|
|
|
|
// Remove all objects from the view.
|
|
cmGrRC_t cmGrViewClear( cmGrVwH_t h );
|
|
|
|
// Get the plot views physical extents. This function will return the
|
|
// current view location/size only after a call to cmGrPageDraw().
|
|
// See the implementation note at the top of this file.
|
|
cmGrRC_t cmGrViewPExt( cmGrVwH_t h, cmGrPExt_t* pext );
|
|
|
|
bool cmGrViewHasFocus( cmGrVwH_t h );
|
|
|
|
// Get the cmGrH_t associated with a view.
|
|
cmGrH_t cmGrViewGrHandle( cmGrVwH_t h );
|
|
|
|
// kExpandViewGrFl | kSelectHorzGrFl | kSelectVertGrFl
|
|
void cmGrViewSetCfg( cmGrVwH_t h, unsigned cfgFlags );
|
|
unsigned cmGrViewCfg( cmGrVwH_t h );
|
|
void cmGrViewSetTitle( cmGrVwH_t h, const cmChar_t* title );
|
|
const cmChar_t* cmGrViewTitle( cmGrVwH_t h );
|
|
void cmGrViewSetFontFamily( cmGrVwH_t h, unsigned id );
|
|
unsigned cmGrViewFontFamily( cmGrVwH_t h );
|
|
void cmGrViewSetFontStyle( cmGrVwH_t h, unsigned flags );
|
|
unsigned cmGrViewFontStyle( cmGrVwH_t h );
|
|
void cmGrViewSetFontSize( cmGrVwH_t h, unsigned size );
|
|
unsigned cmGrViewFontSize( cmGrVwH_t h );
|
|
|
|
// Assign a translation function to be used with cmGrViewValue().
|
|
// cmLeftGrIdx or cmGrRightGrIdx is used to assign y axis translation functions.
|
|
// cmTopGrIdx or cmGrBottomGrIdx is used to assign x axis translation functions.
|
|
// 'pgLabelFuncId' must be a valid page label function id as returned from cmGrPageLabelFuncRegister().
|
|
// or cmGrPageLabelFuncIndexToId().
|
|
void cmGrViewSetLabelFunc( cmGrVwH_t h, cmGrAxisIdx_t axisId, unsigned pgLabelFuncId );
|
|
|
|
typedef enum
|
|
{
|
|
kLocalX_VwId,
|
|
kLocalY_VwId,
|
|
kGlobalX_VwId,
|
|
kGlobalY_VwId,
|
|
kSelX0_VwId,
|
|
kSelY0_VwId,
|
|
kSelX1_VwId,
|
|
kSelY1_VwId,
|
|
kSelW_VwId,
|
|
kSelH_VwId
|
|
} cmGrViewValueId_t;
|
|
const cmChar_t* cmGrViewValue( cmGrVwH_t h, cmGrViewValueId_t id, cmChar_t* buf, unsigned bufCharCnt );
|
|
|
|
// Get an axis handle.
|
|
cmGrAxH_t cmGrViewAxisHandle( cmGrVwH_t h, cmGrAxisIdx_t axisIdx );
|
|
|
|
//----------------------------------------------------------------------------
|
|
//)
|
|
//( { label:cmGrAxis file_desc:"Device independent plotting axis." kw:[plot]}
|
|
//
|
|
|
|
bool cmGrAxisIsValid( cmGrAxH_t h );
|
|
// kHashMarkGrFl | kHashLabelGrFl
|
|
void cmGrAxisSetCfg( cmGrAxH_t h, unsigned cfgFlags );
|
|
unsigned cmGrAxisCfg( cmGrAxH_t h );
|
|
void cmGrAxisSetTitle( cmGrAxH_t h, const cmChar_t* title );
|
|
const cmChar_t* cmGrAxisTitle( cmGrAxH_t h );
|
|
void cmGrAxisTitleSetFontFamily( cmGrAxH_t h, unsigned id );
|
|
unsigned cmGrAxisTitleFontFamily( cmGrAxH_t h );
|
|
void cmGrAxisTitleSetFontStyle( cmGrAxH_t h, unsigned flags );
|
|
unsigned cmGrAxisTitleFontStyle( cmGrAxH_t h );
|
|
void cmGrAxisTitleSetFontSize( cmGrAxH_t h, unsigned size );
|
|
unsigned cmGrAxisTitleFontSize( cmGrAxH_t h );
|
|
|
|
void cmGrAxisLabelSetFontFamily( cmGrAxH_t h, unsigned id );
|
|
unsigned cmGrAxisLabelFontFamily( cmGrAxH_t h );
|
|
void cmGrAxisLabelSetFontStyle( cmGrAxH_t h, unsigned flags );
|
|
unsigned cmGrAxisLabelFontStyle( cmGrAxH_t h );
|
|
void cmGrAxisLabelSetFontSize( cmGrAxH_t h, unsigned size );
|
|
unsigned cmGrAxisLabelFontSize( cmGrAxH_t h );
|
|
|
|
// Assign a translation function for the value on this axis.
|
|
// 'pgLabelFuncId' must be a valid page label function id as returned from cmGrPageLabelFuncRegister().
|
|
// or cmGrPageLabelFuncIndexToId().
|
|
void cmGrAxisSetLabelFunc( cmGrAxH_t h, unsigned pgLabelFuncId );
|
|
|
|
//)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|