123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
- //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
- #include <FL/Fl.H>
- #include <Fl/fl_draw.h>
- #include <FL/Fl_Widget.H>
- #include <FL/Fl_Double_Window.H>
- #include <Fl/Fl_Output.H>
- #include <Fl/Fl_Menu_Bar.H>
-
- #include <vector>
-
- #include "Fl_CbLinker.h"
-
- #include "cmGlobal.h"
- #include "cmFloatTypes.h"
- #include "cmRpt.h"
- #include "cmErr.h"
- #include "cmCtx.h"
- #include "cmMem.h"
- #include "cmMallocDebug.h"
- #include "cmLinkedHeap.h"
- #include "cmText.h"
-
- #include "cmGr.h"
- #include "cmGrDevCtx.h"
- #include "cmGrPlot.h"
- #include "cmGrPage.h"
- #include "cmGrFltk.h"
- #include "cmGr2dFltk.h"
-
-
- cmGr2dFltk::cmGr2dFltk(cmCtx_t* ctx, Fl_Menu_Bar* menuBar, int x, int y, int w, int h)
- : cmGrPlotFltk(ctx,x,y,w,h),
- _x(0),_y(0),_radius(0),_angle(0),
- _objId(0)
- {
- cmErrSetup(&_err,&ctx->rpt,"cmGr2dFltk");
-
- if( cmGrPageIsValid(pageHandle()) == false )
- return;
-
- initViews(1,1);
-
- unsigned vwIdx = 0;
- cmGrPgH_t pgH = pageHandle();
- cmGrVwH_t vwH = cmGrPageViewHandle( pgH, vwIdx);
- cmGrH_t cvH = cmGrViewGrHandle( vwH );
- cmGrVExt_t limExt;
-
- cmGrVExtSetD(&limExt,-kWidth,-kHeight,kWidth, kHeight);
-
- cmGrObjSetWorldExt( cvH, cmGrRootObjH(cvH), &limExt );
- cmGrObjSetWorldLimitExt(cvH, cmGrRootObjH(cvH), &limExt, kLeftGrFl | kRightGrFl | kTopGrFl | kBottomGrFl );
-
- _createObj();
-
- cmGrSetViewExtentsE( cvH, &limExt );
-
- }
-
- cmGr2dFltk::~cmGr2dFltk()
- {
- }
-
-
- bool cmGr2dFltk::on_plot_object( cmGrPlotCbArg_t* arg )
- {
- if( arg->selId==kEventCbSelGrPlId && cmIsFlag(arg->eventFlags,kMsDragGrFl ) )
- {
- cmGrVExt_t vext;
- cmGrPlotObjVExt(arg->objH,&vext);
- //cmGrVExtPrint("",&vext);
- _x = cmGrVExtMinX(&vext);
- _y = cmGrVExtMinY(&vext);
- _radius = sqrtf(_x*_x + _y*_y)/kWidth;
- _angle = -( atan2f(_y,_x) - M_PI/2.0);
-
- if( _angle < 0 )
- _angle += 2.0 * M_PI;
-
- _angle = 360.0f * _angle / (2.0*M_PI);
-
- setStatusText(cmTsPrintfS("r:%f angle:%f",_radius,_angle));
-
- callback()(this,user_data());
-
- }
-
- return true;
- }
-
-
- double cmGr2dFltk::x() const
- { return _x; }
-
- double cmGr2dFltk::y() const
- { return _y; }
-
- double cmGr2dFltk::radius() const
- { return _radius; }
-
- double cmGr2dFltk::angle() const
- { return _angle; }
-
- void cmGr2dFltk::_createObj()
- {
- cmGrPlH_t plH = plotHandle();
- cmGrPgH_t pgH = pageHandle();
- unsigned vwIdx = 0;
- cmGrVwH_t vwH = cmGrPageViewHandle( pgH, vwIdx );
- cmGrH_t cvH = cmGrViewGrHandle( vwH );
- cmGrPlObjH_t parentObjH = cmGrPlObjNullHandle;
- cmGrPlObjH_t xAnchorObjH = cmGrPlObjNullHandle;
- cmGrPlObjH_t yAnchorObjH = cmGrPlObjNullHandle;
- cmGrPlObjH_t objH = cmGrPlObjNullHandle;
- cmGrPlObjTypeId_t objTypeId = kRectGrPlId;
- cmReal_t x = 0;
- cmReal_t y = 0;
- cmReal_t w = 0;
- cmReal_t h = 0;
- unsigned flags = 0; //kNoDragGrPlFl;
- cmGrVExt_t* wext = NULL;
-
- if( cmGrPlotObjCreate(plH, cvH, &objH, _objId++, parentObjH, xAnchorObjH, yAnchorObjH, objTypeId, flags | kNoDragGrPlFl, x, y, w, h, NULL, wext ) != kOkGrPlRC )
- {
- cmErrMsg(&_err,kCreateObjRC,"Plot origin object create failed.");
- }
- else
- {
- cmGrPlotObjSetPhysExt(objH, -2, -2, 2, 2 );
- cmGrPlotObjSetFontSize(objH,8);
- }
-
- objH = cmGrPlObjNullHandle;
-
- if( cmGrPlotObjCreate(plH, cvH, &objH, _objId++, parentObjH, xAnchorObjH, yAnchorObjH, objTypeId, flags, x, y, w, h, NULL, wext ) != kOkGrPlRC )
- {
- cmErrMsg(&_err,kCreateObjRC,"Plot object create failed.");
- }
- else
- {
- //unsigned f = 0 ? (kNorthJsGrFl | kTopJsGrFl) : (kSouthJsGrFl | kBottomJsGrFl);
- //cmGrPlotObjSetLabelAttr( objH, f | kWestJsGrFl | kTopJsGrFl | kRightJsGrFl, 0, kBlackGrId );
- cmGrPlotObjSetLineColor( objH, kEnablePlGrId, kGreenGrId );
- cmGrPlotObjSetPhysExt(objH, -4, -4, 4, 4 );
- cmGrPlotObjSetFontSize(objH,8);
- }
-
- }
|