Changeset 2080 in Sophya
- Timestamp:
- Jul 2, 2002, 2:28:08 PM (23 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/Makefile
r2003 r2080 1 MODULECXXREPNAME := PI2 MODULEDECCXXFLAGS := -msg_quiet3 1 include ../Mgr/Makefile.h 4 2 5 3 all: $(LIB)libPI.a 6 $(LIB)libPI.a : $(OBJ)lut.o $(OBJ)parradapter.o $(OBJ)pi3ddrw.o $(OBJ)piapplgen.o $(OBJ)piapplx.o $(OBJ)piaxestools.o $(OBJ)pibwdggen.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapview.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pidrwtools.o $(OBJ)pieldrw.o $(OBJ)pievthandler.o $(OBJ)pifilechogen.o $(OBJ)pifilechox.o $(OBJ)pifontgen.o $(OBJ)pifontx.o $(OBJ)pigraph3d.o $(OBJ)pigraphgen.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pigratt.o $(OBJ)piimage.o $(OBJ)piimgtools.o $(OBJ)pilistgen.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenux.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapx.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgx.o $(OBJ)pistzwin.o $(OBJ)pisurfdr.o $(OBJ)pitherm.o $(OBJ)piwdggen.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)piyfxdrw.o $(OBJ)psfile.o 7 $(AR) $(ARFLAGS) $@ $($(ARARGS)) 4 clean: 5 rm -f $(OBJ)lut.o $(OBJ)parradapter.o $(OBJ)pi3ddrw.o $(OBJ)piapplgen.o $(OBJ)piapplmac.o $(OBJ)piapplx.o $(OBJ)piaxes.o $(OBJ)piaxestools.o $(OBJ)pibwdggen.o $(OBJ)pibwdgmac.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapmac.o $(OBJ)picmapview.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainermac.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pidrwtools.o $(OBJ)pieldrw.o $(OBJ)pierrdisp.o $(OBJ)pievthandler.o $(OBJ)pifilechogen.o $(OBJ)pifilechomac.o $(OBJ)pifilechox.o $(OBJ)pifontgen.o $(OBJ)pifontmac.o $(OBJ)pifontx.o $(OBJ)pigraph3d.o $(OBJ)pigraphgen.o $(OBJ)pigraphmac.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pigratt.o $(OBJ)piimage.o $(OBJ)piimgtools.o $(OBJ)pilistgen.o $(OBJ)pilistmac.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarmac.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenumac.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenumac.o $(OBJ)pioptmenux.o $(OBJ)piperiodmac.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapmac.o $(OBJ)pipixmapx.o $(OBJ)pippapplmac.o $(OBJ)pipplist.o $(OBJ)pippmenubar.o $(OBJ)pippoptmenu.o $(OBJ)pippviewadapter.o $(OBJ)pippwindowmac.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgmac.o $(OBJ)pistdwdgx.o $(OBJ)pistzwin.o $(OBJ)pisurfdr.o $(OBJ)pitherm.o $(OBJ)piup.o $(OBJ)piup_def.o $(OBJ)piupdattachment.o $(OBJ)piwdggen.o $(OBJ)piwdgmac.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowmac.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)piyfxdrw.o $(OBJ)psfile.o $(OBJ)xdispim.o 6 rm -f $(LIB)libPI.a 7 $(LIB)libPI.a : $(OBJ)lut.o $(OBJ)parradapter.o $(OBJ)pi3ddrw.o $(OBJ)piapplgen.o $(OBJ)piapplx.o $(OBJ)piaxes.o $(OBJ)piaxestools.o $(OBJ)pibwdggen.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapview.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pidrwtools.o $(OBJ)pieldrw.o $(OBJ)pievthandler.o $(OBJ)pifilechogen.o $(OBJ)pifilechox.o $(OBJ)pifontgen.o $(OBJ)pifontx.o $(OBJ)pigraph3d.o $(OBJ)pigraphgen.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pigratt.o $(OBJ)piimage.o $(OBJ)piimgtools.o $(OBJ)pilistgen.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenux.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapx.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgx.o $(OBJ)pistzwin.o $(OBJ)pisurfdr.o $(OBJ)pitherm.o $(OBJ)piwdggen.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)piyfxdrw.o $(OBJ)psfile.o 8 $(ARCXX) $(ARCXXFLAGS) $@ $($(ARARGS)) 8 9 ifeq ($(CXX),cxx) 9 10 $(CXX) $? $(CPPFLAGS) $(CXXFLAGS) -o $(OBJ)xx.x -Hf 10 endif11 12 clean:13 rm -f $(OBJ)lut.o $(OBJ)parradapter.o $(OBJ)pi3ddrw.o $(OBJ)piapplgen.o $(OBJ)piapplx.o $(OBJ)piaxestools.o $(OBJ)pibwdggen.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapview.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pidrwtools.o $(OBJ)pieldrw.o $(OBJ)pievthandler.o $(OBJ)pifilechogen.o $(OBJ)pifilechox.o $(OBJ)pifontgen.o $(OBJ)pifontx.o $(OBJ)pigraph3d.o $(OBJ)pigraphgen.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pigratt.o $(OBJ)piimage.o $(OBJ)piimgtools.o $(OBJ)pilistgen.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenux.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapx.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgx.o $(OBJ)pistzwin.o $(OBJ)pisurfdr.o $(OBJ)pitherm.o $(OBJ)piwdggen.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)piyfxdrw.o $(OBJ)psfile.o14 ifeq ($(CXX),cxx)15 cd $(REPM); rm -f *.o16 11 endif 17 12 … … 23 18 piwdgx.h piwdggen.h pimsghandler.h picolist.h picmap.h picmapx.h \ 24 19 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 25 pievthandler.h psfile.h pigratt.h pi eldrw.h pigraph3d.h pibwdgx.h \26 pi graphps.h pidrwtools.h pistdwdgx.h pistdwdggen.h pioptmenux.h \27 pioptmenu gen.h pimenux.h pimenugen.h piwindowx.h piwindowgen.h \28 pi containerx.h picontainergen.h piapplx.h piapplgen.h pimenubarx.h \29 pimenubar gen.h picons.h20 pievthandler.h psfile.h pigratt.h piaxes.h pieldrw.h pigraph3d.h \ 21 pibwdgx.h pigraphps.h pidrwtools.h pistdwdgx.h pistdwdggen.h \ 22 pioptmenux.h pioptmenugen.h pimenux.h pimenugen.h piwindowx.h \ 23 piwindowgen.h picontainerx.h picontainergen.h piapplx.h piapplgen.h \ 24 pimenubarx.h pimenubargen.h picons.h 30 25 $(OBJ)piapplgen.o: piapplgen.cc piapplgen.h pimsghandler.h \ 31 26 $(INC)machdefs.h pisysdep.h picontainerx.h \ … … 42 37 pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 43 38 pievthandler.h psfile.h pigraphps.h 44 $(OBJ)piaxestools.o: piaxestools.cc piaxestools.h pisysdep.h \ 45 $(INC)machdefs.h pistdwdgx.h pistdwdggen.h \ 46 piwdgx.h piwdggen.h pimsghandler.h picolist.h pioptmenux.h \ 47 pioptmenugen.h pimenux.h pimenugen.h piwindowx.h piwindowgen.h \ 48 picontainerx.h picontainergen.h piapplx.h piapplgen.h pimenubarx.h \ 49 pimenubargen.h picons.h pibwdgx.h pibwdggen.h picmap.h picmapx.h \ 50 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 51 pievthandler.h psfile.h pigraphps.h piscdrawwdg.h pidrawer.h \ 52 pigratt.h pieldrw.h 39 $(OBJ)piaxes.o: piaxes.cc $(INC)machdefs.h piaxes.h \ 40 pigraphuc.h pisysdep.h pigraphgen.h piwdgx.h piwdggen.h \ 41 pimsghandler.h picolist.h picmap.h picmapx.h picmapgen.h pifontx.h \ 42 pifontgen.h pigratt.h 43 $(OBJ)piaxestools.o: piaxestools.cc piaxes.h pigraphuc.h pisysdep.h \ 44 $(INC)machdefs.h pigraphgen.h piwdgx.h \ 45 piwdggen.h pimsghandler.h picolist.h picmap.h picmapx.h picmapgen.h \ 46 pifontx.h pifontgen.h pigratt.h piaxestools.h pistdwdgx.h \ 47 pistdwdggen.h pioptmenux.h pioptmenugen.h pimenux.h pimenugen.h \ 48 piwindowx.h piwindowgen.h picontainerx.h picontainergen.h piapplx.h \ 49 piapplgen.h pimenubarx.h pimenubargen.h picons.h pibwdgx.h \ 50 pibwdggen.h pigraphx.h pievthandler.h psfile.h pigraphps.h \ 51 piscdrawwdg.h pidrawer.h pieldrw.h 53 52 $(OBJ)pibwdggen.o: pibwdggen.cc pibwdggen.h pisysdep.h \ 54 53 $(INC)machdefs.h piwdgx.h piwdggen.h \ 55 54 pimsghandler.h picolist.h picmap.h picmapx.h picmapgen.h pigraphx.h \ 56 55 pigraphgen.h pifontx.h pifontgen.h pigraphuc.h pievthandler.h \ 57 psfile.h pidrawer.h pigratt.h pi graphps.h pidrwtools.h pistdwdgx.h \58 pistdwdg gen.h pioptmenux.h pioptmenugen.h pimenux.h pimenugen.h \59 pi windowx.h piwindowgen.h picontainerx.h picontainergen.h piapplx.h \60 piappl gen.h pimenubarx.h pimenubargen.h picons.h pibwdgx.h56 psfile.h pidrawer.h pigratt.h piaxes.h pigraphps.h pidrwtools.h \ 57 pistdwdgx.h pistdwdggen.h pioptmenux.h pioptmenugen.h pimenux.h \ 58 pimenugen.h piwindowx.h piwindowgen.h picontainerx.h picontainergen.h \ 59 piapplx.h piapplgen.h pimenubarx.h pimenubargen.h picons.h pibwdgx.h 61 60 $(OBJ)pibwdgx.o: pibwdgx.cc pixtbaseP.h pibwdgx.h pisysdep.h \ 62 61 $(INC)machdefs.h pibwdggen.h piwdgx.h \ … … 89 88 piwdggen.h pimsghandler.h picolist.h 90 89 $(OBJ)pidrawer.o: pidrawer.cc $(INC)machdefs.h \ 91 $(INC)utilgeom.h pidrawer.h pibwdggen.h \ 92 pisysdep.h piwdgx.h piwdggen.h pimsghandler.h picolist.h picmap.h \ 93 picmapx.h picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h \ 94 pigraphuc.h pievthandler.h psfile.h pigratt.h pidrwtools.h \ 95 pistdwdgx.h pistdwdggen.h pioptmenux.h pioptmenugen.h pimenux.h \ 96 pimenugen.h piwindowx.h piwindowgen.h picontainerx.h picontainergen.h \ 97 piapplx.h piapplgen.h pimenubarx.h pimenubargen.h picons.h pibwdgx.h \ 98 pigraphps.h ucckprot.h 90 pidrawer.h pibwdggen.h pisysdep.h piwdgx.h piwdggen.h pimsghandler.h \ 91 picolist.h picmap.h picmapx.h picmapgen.h pigraphx.h pigraphgen.h \ 92 pifontx.h pifontgen.h pigraphuc.h pievthandler.h psfile.h pigratt.h \ 93 piaxes.h pidrwtools.h pistdwdgx.h pistdwdggen.h pioptmenux.h \ 94 pioptmenugen.h pimenux.h pimenugen.h piwindowx.h piwindowgen.h \ 95 picontainerx.h picontainergen.h piapplx.h piapplgen.h pimenubarx.h \ 96 pimenubargen.h picons.h pibwdgx.h pigraphps.h ucckprot.h 99 97 $(OBJ)pidrawwin.o: pidrawwin.cc pidrawwin.h pisysdep.h \ 100 98 $(INC)machdefs.h piwindowx.h piwindowgen.h \ … … 103 101 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 104 102 pievthandler.h psfile.h pigraphps.h pistdwdgx.h pistdwdggen.h \ 105 pidrawer.h pigratt.h pi eldrw.h103 pidrawer.h pigratt.h piaxes.h pieldrw.h 106 104 $(OBJ)pidrwtools.o: pidrwtools.cc pidrwtools.h pisysdep.h \ 107 105 $(INC)machdefs.h pistdwdgx.h pistdwdggen.h \ … … 112 110 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 113 111 pievthandler.h psfile.h pigraphps.h piscdrawwdg.h pidrawer.h \ 114 pigratt.h pi eldrw.h pi3ddrw.h pigraph3d.h112 pigratt.h piaxes.h pieldrw.h pi3ddrw.h pigraph3d.h 115 113 $(OBJ)pieldrw.o: pieldrw.cc $(INC)machdefs.h \ 116 114 pieldrw.h pidrawer.h pibwdggen.h pisysdep.h piwdgx.h piwdggen.h \ 117 115 pimsghandler.h picolist.h picmap.h picmapx.h picmapgen.h pigraphx.h \ 118 116 pigraphgen.h pifontx.h pifontgen.h pigraphuc.h pievthandler.h \ 119 psfile.h pigratt.h 117 psfile.h pigratt.h piaxes.h 120 118 $(OBJ)pievthandler.o: pievthandler.cc pievthandler.h pisysdep.h \ 121 119 $(INC)machdefs.h pimsghandler.h piwdgx.h \ … … 168 166 pidrawer.h pibwdggen.h piwdgx.h piwdggen.h pimsghandler.h picolist.h \ 169 167 picmap.h picmapx.h picmapgen.h pigraphx.h pigraphgen.h pifontx.h \ 170 pifontgen.h pigraphuc.h pievthandler.h psfile.h pigratt.h pipixmapx.h \ 171 pipixmapgen.h pibwdgx.h pigraphps.h pistdwdgx.h pistdwdggen.h \ 172 piwindowx.h piwindowgen.h picontainerx.h picontainergen.h \ 173 picmapview.h piimgtools.h pioptmenux.h pioptmenugen.h pimenux.h \ 174 pimenugen.h piapplx.h piapplgen.h pimenubarx.h pimenubargen.h \ 175 picons.h pidrwtools.h piscdrawwdg.h piyfxdrw.h 168 pifontgen.h pigraphuc.h pievthandler.h psfile.h pigratt.h piaxes.h \ 169 pipixmapx.h pipixmapgen.h pibwdgx.h pigraphps.h pistdwdgx.h \ 170 pistdwdggen.h piwindowx.h piwindowgen.h picontainerx.h \ 171 picontainergen.h picmapview.h piimgtools.h pioptmenux.h \ 172 pioptmenugen.h pimenux.h pimenugen.h piapplx.h piapplgen.h \ 173 pimenubarx.h pimenubargen.h picons.h pidrwtools.h piscdrawwdg.h \ 174 piyfxdrw.h 176 175 $(OBJ)piimgtools.o: piimgtools.cc piimgtools.h pisysdep.h \ 177 176 $(INC)machdefs.h pistdwdgx.h pistdwdggen.h \ … … 182 181 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 183 182 pievthandler.h psfile.h pigraphps.h piimage.h parradapter.h lut.h \ 184 pieldrw.h pidrawer.h pigratt.h pipixmapx.h pipixmapgen.h picmapview.h 183 pieldrw.h pidrawer.h pigratt.h piaxes.h pipixmapx.h pipixmapgen.h \ 184 picmapview.h 185 185 $(OBJ)pilistgen.o: pilistgen.cc pilistgen.h pisysdep.h \ 186 186 $(INC)machdefs.h piwdgx.h piwdggen.h \ … … 240 240 pifontgen.h pigraphuc.h pievthandler.h psfile.h pigraphps.h \ 241 241 pistdwdgx.h pistdwdggen.h piwindowx.h piwindowgen.h picontainerx.h \ 242 picontainergen.h pidrawer.h pigratt.h pi eldrw.h pidrwtools.h \242 picontainergen.h pidrawer.h pigratt.h piaxes.h pieldrw.h pidrwtools.h \ 243 243 pioptmenux.h pioptmenugen.h pimenux.h pimenugen.h piapplx.h \ 244 244 piapplgen.h pimenubarx.h pimenubargen.h picons.h piaxestools.h … … 260 260 pidrawer.h pibwdggen.h piwdgx.h piwdggen.h pimsghandler.h picolist.h \ 261 261 picmap.h picmapx.h picmapgen.h pigraphx.h pigraphgen.h pifontx.h \ 262 pifontgen.h pigraphuc.h pievthandler.h psfile.h pigratt.h pi eldrw.h \263 pi graph3d.h pibwdgx.h pigraphps.h262 pifontgen.h pigraphuc.h pievthandler.h psfile.h pigratt.h piaxes.h \ 263 pieldrw.h pigraph3d.h pibwdgx.h pigraphps.h 264 264 $(OBJ)pitherm.o: pitherm.cc pitherm.h pisysdep.h \ 265 265 $(INC)machdefs.h pibwdgx.h pibwdggen.h \ … … 293 293 piwdgx.h piwdggen.h pimsghandler.h picolist.h picmap.h picmapx.h \ 294 294 picmapgen.h pigraphx.h pigraphgen.h pifontx.h pifontgen.h pigraphuc.h \ 295 pievthandler.h psfile.h pigratt.h 295 pievthandler.h psfile.h pigratt.h piaxes.h 296 296 $(OBJ)psfile.o: psfile.cc psfile.h $(INC)machdefs.h \ 297 297 pisysdep.h pifontgen.h pigraphgen.h piwdgx.h piwdggen.h \ -
trunk/SophyaPI/PI/objlist.list
r1904 r2080 4 4 piapplgen.o 5 5 piapplx.o 6 piaxes.o 6 7 piaxestools.o 7 8 pibwdggen.o -
trunk/SophyaPI/PI/piaxestools.cc
r1932 r2080 7 7 #include <iostream.h> 8 8 9 #include "piaxes.h" 9 10 #include "piaxestools.h" 10 11 … … 196 197 string format,dum; 197 198 PIScDrawWdg* scd = curscdwdg; 198 PI Drawer::BonFormatAxes(scd->XMin(),scd->XMax(),-1.,format,0,2);199 PIAxes::BonFormatAxes(scd->XMin(),scd->XMax(),-1.,format,0,2); 199 200 dum = format; dum += " "; dum += format; 200 201 sprintf(buff,dum.c_str(),scd->XMin(),scd->XMax()); 201 202 mText[0]->SetText(buff); 202 PI Drawer::BonFormatAxes(scd->YMin(),scd->YMax(),-1.,format,0,2);203 PIAxes::BonFormatAxes(scd->YMin(),scd->YMax(),-1.,format,0,2); 203 204 sprintf(buff,dum.c_str(),scd->YMin(),scd->YMax()); 204 205 mText[1]->SetText(buff); -
trunk/SophyaPI/PI/pidrawer.cc
r2057 r2080 12 12 #include "ucckprot.h" 13 13 14 #define dble_SWAP(__a,__b) {double __tmp=__a; __a=__b; __b=__tmp;}15 14 16 15 //++ … … 360 359 361 360 void 362 PIDrawer::CalcTicks()363 {364 int ntick_x = (aXlog) ? 6 : 10;365 BestTicks(xMin,xMax,ntick_x,xMajTickStep,xFirstMajTick);366 xMinTickStep = xMajTickStep/5;367 xFirstMinTick = floor(xMin / xMinTickStep) * xMinTickStep;368 if(xFirstMinTick < xMin) xFirstMinTick += xMinTickStep;369 370 int ntick_y = (aYlog) ? 6 : 12;371 BestTicks(yMin,yMax,ntick_y,yMajTickStep,yFirstMajTick);372 yMinTickStep = yMajTickStep/5;373 yFirstMinTick = floor(yMin / yMinTickStep) * yMinTickStep;374 if(yFirstMinTick < yMin) yFirstMinTick += yMinTickStep;375 376 yMajTickLen = (xMax-xMin)/100;377 yMinTickLen = (xMax-xMin)/250;378 xMajTickLen = (yMax-yMin)/100;379 xMinTickLen = (yMax-yMin)/250;380 }381 382 void383 361 PIDrawer::SetAxesFlags(unsigned int flags) 384 362 { … … 397 375 { 398 376 g->NoClip(); 399 if (GetGraphicAtt().GetLineAtt() == PI_NotDefLineAtt) g->SelLine(PI_ThinLine); 400 else g->SelLine(GetGraphicAtt().GetLineAtt()); 401 if (GetGraphicAtt().GetColor() == PI_NotDefColor) g->SelForeground(PI_Black); 402 else g->SelForeground(GetGraphicAtt().GetColor()); 403 // On calcule les ticks 404 CalcTicks(); 405 406 unsigned int flags = axesFlags; 407 408 if (flags & kStdAxes) { 409 410 // Les axes 411 412 g->DrawLine(xMin, (yMin+yMax)/2., xMax, (yMin+yMax)/2.); 413 g->DrawLine((xMin+xMax)/2., yMin, (xMin+xMax)/2., yMax); 414 415 // La grille en pointilles 416 417 if (flags & kGridOn) DrawGrid(g); 377 PIAxes axes; 378 axes.DrawXYAxes(g, mGrAtt, axesFlags, axesAFSz, XMin(), XMax(), YMin(), YMax()); 379 g->Clip(); 380 } 381 418 382 419 // Les ticks majeurs420 421 if (flags & kMajTicks) {422 DrawHTicks(g, (yMin+yMax)/2., xMajTickLen, xMajTickLen, xFirstMajTick, xMajTickStep);423 DrawVTicks(g, (xMin+xMax)/2., yMajTickLen, yMajTickLen, yFirstMajTick, yMajTickStep);424 }425 426 // Les ticks mineurs427 428 if (flags & kMinTicks) {429 DrawHTicks(g, (yMin+yMax)/2., xMinTickLen, xMinTickLen, xFirstMinTick, xMinTickStep);430 DrawVTicks(g, (xMin+xMax)/2., yMinTickLen, yMinTickLen, yFirstMinTick, yMinTickStep);431 }432 433 // Les labels434 435 if (flags & kLabels) {436 if (!aYdir)437 DrawHLabels(g, (yMin+yMax)/2.-xMajTickLen*2, xFirstMajTick, xMajTickStep,PI_VerticalTop);438 else439 DrawHLabels(g, (yMin+yMax)/2.+xMajTickLen*2, xFirstMajTick, xMajTickStep,PI_VerticalTop);440 if (!aXdir)441 DrawVLabels(g, (xMin+xMax)/2.-yMajTickLen*2, yFirstMajTick, yMajTickStep,PI_HorizontalRight);442 else443 DrawVLabels(g, (xMin+xMax)/2.+yMajTickLen*2, yFirstMajTick, yMajTickStep,PI_HorizontalRight);444 }445 446 }447 448 if (flags & kBoxAxes) {449 450 // La boite451 452 g->DrawLine(xMin, yMin, xMax, yMin);453 g->DrawLine(xMax, yMin, xMax, yMax);454 g->DrawLine(xMax, yMax, xMin, yMax);455 g->DrawLine(xMin, yMax, xMin, yMin);456 457 // Longueur des ticks458 459 double extXMajTickLen = flags&kExtTicks ? xMajTickLen : 0;460 double intXMajTickLen = flags&kIntTicks ? xMajTickLen : 0;461 double extXMinTickLen = flags&kExtTicks ? xMinTickLen : 0;462 double intXMinTickLen = flags&kIntTicks ? xMinTickLen : 0;463 double extYMajTickLen = flags&kExtTicks ? yMajTickLen : 0;464 double intYMajTickLen = flags&kIntTicks ? yMajTickLen : 0;465 double extYMinTickLen = flags&kExtTicks ? yMinTickLen : 0;466 double intYMinTickLen = flags&kIntTicks ? yMinTickLen : 0;467 468 // La grille en pointilles469 470 if (flags & kGridOn) DrawGrid(g);471 472 // Les ticks majeurs473 474 if (flags & kMajTicks) {475 DrawHTicks(g, yMin, intXMajTickLen, extXMajTickLen, xFirstMajTick, xMajTickStep);476 DrawHTicks(g, yMax, extXMajTickLen, intXMajTickLen, xFirstMajTick, xMajTickStep);477 DrawVTicks(g, xMin, extYMajTickLen, intYMajTickLen, yFirstMajTick, yMajTickStep);478 DrawVTicks(g, xMax, intYMajTickLen, extYMajTickLen, yFirstMajTick, yMajTickStep);479 }480 481 // Les ticks mineurs482 483 if (flags & kMinTicks) {484 DrawHTicks(g, yMin, intXMinTickLen, extXMinTickLen, xFirstMinTick, xMinTickStep);485 DrawHTicks(g, yMax, extXMinTickLen, intXMinTickLen, xFirstMinTick, xMinTickStep);486 DrawVTicks(g, xMin, extYMinTickLen, intYMinTickLen, yFirstMinTick, yMinTickStep);487 DrawVTicks(g, xMax, intYMinTickLen, extYMinTickLen, yFirstMinTick, yMinTickStep);488 }489 490 491 // Les labels492 493 if (flags & kLabels) {494 if (!aYdir) {495 DrawHLabels(g, g->DeltaUCY(yMin, -xMajTickLen*2), xFirstMajTick, xMajTickStep,PI_VerticalTop);496 //DrawHLabels(g, g->DeltaUCY(yMax, xMajTickLen*2), xFirstMajTick, xMajTickStep,PI_VerticalBottom);497 }498 else {499 //DrawHLabels(g, g->DeltaUCY(yMin, -xMajTickLen*2), xFirstMajTick, xMajTickStep,PI_VerticalBottom);500 DrawHLabels(g, g->DeltaUCY(yMax, xMajTickLen*2), xFirstMajTick, xMajTickStep,PI_VerticalTop);501 }502 if (!aXdir) {503 DrawVLabels(g, g->DeltaUCX(xMin, -yMajTickLen*2), yFirstMajTick, yMajTickStep,PI_HorizontalRight);504 //DrawVLabels(g, g->DeltaUCX(xMax, yMajTickLen*2), yFirstMajTick, yMajTickStep,PI_HorizontalLeft);505 }506 else {507 //DrawVLabels(g, g->DeltaUCX(xMin, -yMajTickLen*2), yFirstMajTick, yMajTickStep,PI_HorizontalLeft);508 DrawVLabels(g, g->DeltaUCX(xMax, yMajTickLen*2), yFirstMajTick, yMajTickStep,PI_HorizontalRight);509 }510 }511 }512 g->Clip();513 }514 515 516 383 517 384 void … … 529 396 { 530 397 } 531 532 void533 PIDrawer::DrawHTicks(PIGraphicUC* g, double y, double tickUp, double tickDown, double xBeg, double xStep)534 {535 for (double x=xBeg; x<=xMax+xStep/10.; x += xStep)536 g->DrawLine(x, g->DeltaUCY(y, -tickDown), x, g->DeltaUCY(y, tickUp));537 }538 539 void540 PIDrawer::DrawVTicks(PIGraphicUC* g, double x, double tickLeft, double tickRight, double yBeg, double yStep)541 {542 for (double y=yBeg; y<=yMax; y += yStep)543 g->DrawLine(g->DeltaUCX(x, -tickLeft), y, g->DeltaUCX(x,tickRight), y);544 }545 546 void547 PIDrawer::DrawHLabels(PIGraphicUC* g, double y, double xBeg, double xStep, unsigned long just)548 {549 double fsz = xMajTickLen*3.5;550 if(axesAFSz) g->SelFontSz(fsz);551 552 // Choix du bon format pour les labels des axes;553 char label[64]; string format; double fac=1.; bool p10=false;554 int npuiss = BonFormatAxes(xBeg,xMax,xStep,format,2,1);555 if(npuiss<-2 || npuiss>3) {p10 = true; fac=pow(10.,(double)npuiss);}556 else BonFormatAxes(xBeg,xMax,xStep,format,0,1);557 558 double xOffset = 0;559 double xlastlabelfin = xBeg - 2.*(xMax-xBeg);560 for(double x=xBeg; x<=xMax+xStep/10.; x+=xStep) {561 //Attention erreur d'arrondi x->0 (on code 5.1698e-26 au lieu de 0)562 double xx = (fabs(x/xStep)<1.e-5) ? 0.: x;563 sprintf(label,format.c_str(),xx/fac);564 for(int kk=0;kk<64;kk++) if(label[kk]==' ') {label[kk]='\0'; break;}565 double largeur = g->CalcStringWidth(label);566 if(aXdir) xOffset = largeur/2; else xOffset=-largeur/2;567 if(x+xOffset > xlastlabelfin) {568 g->DrawString(x,y,label,PI_HorizontalCenter|just);569 xlastlabelfin = x + xOffset + 1.1*largeur;570 }571 }572 573 if(p10) {574 PIGrCoord asc,desc;575 double h = g->GetFontHeight(asc,desc);576 if((aYdir && (just&PI_VerticalBottom)) || (!aYdir && (just&PI_VerticalTop)) ) h = -h;577 double xm = (aXdir)? xMin: xMax;578 double ym = g->DeltaUCY(y,1.5*h);579 sprintf(label,"%d",npuiss);580 g->DrawCompString(xm,ym,"x 10",label,NULL,PI_HorizontalCenter|just);581 }582 583 }584 585 void586 PIDrawer::DrawVLabels(PIGraphicUC* g, double x, double yBeg, double yStep, unsigned long just)587 {588 double fsz = xMajTickLen*3.5;589 if(axesAFSz) g->SelFontSz(fsz);590 591 // Choix du bon format pour les labels des axes;592 char label[64]; string format; double fac=1.; bool p10=false;593 int npuiss = BonFormatAxes(yBeg,yMax,yStep,format,2,1);594 if(npuiss<-2 || npuiss>3) {p10 = true; fac=pow(10.,(double)npuiss);}595 else BonFormatAxes(yBeg,yMax,yStep,format,0,1);596 597 for(double y=yBeg; y<=yMax; y += yStep) {598 double yy = (fabs(y/yStep)<1.e-5) ? 0.: y;599 sprintf(label,format.c_str(),yy/fac);600 for(int kk=0;kk<64;kk++) if(label[kk]==' ') {label[kk]='\0'; break;}601 g->DrawString(x,y,label,PI_VerticalCenter|just);602 }603 604 if(p10) {605 PIGrCoord asc,desc;606 double h = g->GetFontHeight(asc,desc);607 if(aYdir) h = -h;608 double ym = (aYdir)? yMin: yMax; ym = g->DeltaUCY(ym,h);609 sprintf(label,"%d",npuiss);610 g->DrawCompString(x,ym,"x 10",label,NULL,PI_VerticalBottom|just);611 }612 613 }614 615 void616 PIDrawer::DrawGrid(PIGraphicUC* g)617 {618 PILineAtt savlineatt = g->GetLineAtt();619 // g->SelLine(PI_ThinDashedLine);620 g->SelLine(PI_ThinDottedLine);621 622 for (double x=xFirstMajTick; x<=xMax; x += xMajTickStep)623 g->DrawLine(x, yMin, x, yMax);624 625 for (double y=yFirstMajTick; y<=yMax; y += yMajTickStep)626 g->DrawLine(xMin, y, xMax, y);627 628 g->SelLine(savlineatt);629 }630 631 ///////////////////////////////////////////////////////////////////////////632 /* --Methode-Static-- */633 void PIDrawer::BestTicks(double xmin,double xmax,int nticks634 ,double& steptick,double& xfirsttick)635 // *** Calcul de l'intervalle entre les ticks et de la valeur du premier tick636 {637 double d=xmax-xmin; if(d<1.e-100) d=1.e-100; //if (d<1.e-39) d=1.e-39;638 double ld = log10(d);639 double fld = floor( ((ld<0.)? -ld: ld) );640 double del,del0;641 if(ld>=0.) {fld-=1.; del0=del=pow(10.,fld);}642 else {fld+=2.; del0=del=pow(10.,-fld);}643 // *** Intervalle entre les ticks644 // xmin xmax d ld fld -->fld del0645 // 1 1500 1499 3.17 3 2 10^2646 // 1 9500 9499 3.98 3 2 10^2647 // 1 1.005 0.005 -2.3 2 4 10^-4648 // 1 1.995 0.995 -0.0022 0 2 10^-2649 // - Et recherche de la valeur del={del0,2*del0,...,20*del0}650 // telle que "nticks*del" soit le plus petit nombre ">=d"651 // Par exemple, si nticks=10:652 // 1-/ pour le 2sd cas ou d=9499 et del0=100 :653 // del = 100 200 500 1000 2000654 // nticks*del = 1000 2000 5000 10000 20000655 // d/del = 94.9 47.4 18.9 | 9.499 4.749 ==> majt = 1000656 // 2-/ pour le 3ieme cas ou d=5e-3 et del0=1e-4 :657 // del = 1e-4 2e-4 5e-4 1e-3 2e-3658 // nticks*del = 1e-3 2e-3 5e-3 1e-2 2e-2659 // d/del = 50 25 | 10 5 2.5 ==> majt = 5e-4660 int k=0;661 double fac[4] = {2.,5.,10.,20.};662 while(d/del>(double)nticks && k<4 ) {del=fac[k]*del0; k++;}663 steptick=del;664 //*** Valeur du premier tick665 xfirsttick = floor(xmin/steptick); if(xmin<0.) xfirsttick+=1.;666 xfirsttick *= steptick;667 if(xfirsttick<xmin) xfirsttick += steptick;668 }669 670 /* --Methode-Static-- */671 int PIDrawer::BonFormatAxes(double xmin,double xmax,double xstep672 ,string& format,int typf,int add_digit)673 // *** Calcul format optimal pour ecrire les labels numeriques des axes:674 // ---- Input675 // . xmin,xmax : limites du plot sur l'axe considere.676 // . xstep : distance entre les ticks.677 // . add_digit : nombre de digits a ajouter au nombre de digits minimum.678 // . typf : type de format en sortie679 // 0 : format optimum %-nn.mme ou %-nn.mmf selon valeurs680 // 1 : format %-nn.mme681 // 2 : format %-nn.mmf pour imprimer x/10^npuiss682 // tel que x/10^npuiss soit entre 0 et 10683 // ---- Output684 // . format : le format d'impression685 // ---- Return:686 // Si typ=0 ou 1687 // "ndig" : nombre de digits necessaires pour distinguer688 // les valeurs xmin+k*dx (<=xmax)689 // Si typ=2690 // "npuiss" : tel que x/10^npuiss soit entre 0 et 10691 // Dans ce cas le format est celui qui imprime x/10^npuiss692 {693 format = "%-5g"; // format par default694 if(xmin>=xmax) {if(typf==2) return 0; else return -1;}695 696 if(xstep<=0. || xstep>xmax-xmin) xstep = xmax-xmin;697 698 double axmin=fabs(xmin), axmax=fabs(xmax);699 if(axmin>axmax) dble_SWAP(axmin,axmax)700 701 double l10amax = log10(axmax), l10xstep = log10(xstep);702 int il10amax = int(floor(l10amax));703 704 // choix du type de format705 char ftype = 'e';706 int npuiss = 0;707 if(typf==2) {708 npuiss = il10amax;709 if(npuiss<-300 || npuiss>300) {710 ftype='e'; npuiss=0;711 } else {712 // On recalcule les valeurs de decision pour axmax/10^npuiss, xstep/10^npuiss713 l10amax -= (double)npuiss; l10xstep -= (double)npuiss;714 il10amax = int(floor(l10amax));715 ftype = 'f';716 }717 } else if(typf==1) {718 ftype='e';719 } else {720 ftype='e';721 // On evite d'ecrire +a.bbbe+ccc -> format %f722 // Ex: 1.2345e+2 -> 123.45 / -1.2345e+2 -> -123.45723 // 1.2345e-1 -> 0.12345 / -1.2345e-1 -> -0.12345724 if((axmin>=1e-4 || axmin==0.) && axmax<1e4) ftype='f';725 }726 727 //printf("BonFormatAxes[npuiss=%d]: xmin=%-21.14e xmax=%-21.14e\n",npuiss,xmin,xmax);728 //printf(" xstep=%-21.14e log10(xstep/10^%d)=%g\n",xstep,npuiss,l10xstep);729 //printf(" axmax=%-21.14e log10(axmax/10^%d)=%g diff=%g\n"730 // ,axmax,npuiss,l10amax,l10amax-l10xstep);731 732 // Nombre de digits necessaires pour ecrire axmax et xstep733 int ndig = il10amax - int(floor(l10xstep));734 if(ndig<0) ndig *= -1; ndig += 1;735 //printf("ndig=%d",ndig);736 737 // Add more digits (or suppress digits)738 ndig += add_digit; if(ndig<0) ndig=0;739 //printf(" + %d ==> ndig=%d\n",add_digit,ndig);740 741 // Calcul du bon format742 char str[16];743 if(ftype=='f') { // Calcul du format %-nn.mmf744 int mm=-1, nn;745 if(il10amax<0) { // +0.12345 +0.0012345 +0.0012345 ...746 mm = ndig - il10amax - 1; nn = mm+3;747 } else { // +1.2345 +12.345 +123.45 ...748 mm = ndig - il10amax - 1; nn = ndig+2;749 }750 //printf("format %%f : mm=%d nn=%d\n",mm,nn);751 if(mm<0.) mm=0; if(nn<mm+3) nn=mm+3;752 sprintf(str,"%%-%d.%df",nn,mm);753 } else if(ftype=='e') { // Calcul du format %-nn.mme754 // +d.<--ddd-->e+123755 // 1 2 34567 ==> nn=ndig+7 mm=ndig-1756 sprintf(str,"%%-%d.%de",ndig+7,ndig-1);757 }758 759 format = str;760 //printf("format=[%s]\n",format.c_str());761 762 if(typf==2) return npuiss;763 return ndig;764 } -
trunk/SophyaPI/PI/pidrawer.h
r1974 r2080 9 9 #include "pigraphuc.h" 10 10 #include "pigratt.h" 11 12 13 enum { 14 kStdAxes = 0x0001, 15 kBoxAxes = 0x0002, 16 kTicks = 0x0004, 17 kIntTicks = 0x0010, 18 kExtTicks = 0x0020, 19 kMajTicks = 0x0040, 20 kMinTicks = 0x0080, 21 kLabels = 0x1000, 22 kGridOn = 0x2000, 23 kAxesDflt = kStdAxes | kTicks | kLabels, // Axes trace par defaut 24 kAxesNone = 0 // Pas de trace d axe 25 }; 11 #include "piaxes.h" 26 12 27 13 … … 100 86 inline string& Name() { return mName; } 101 87 inline void SetName(string const& name) { mName = name; } 102 // --- Methode- static ----103 // Calcul des Distances optimales des subdivisions104 static void BestTicks(double xmin,double xmax,int nticks105 ,double& steptick,double& xfirsttick);106 // Calcul du format optimal pour les axes107 static int BonFormatAxes(double xmin,double xmax,double xstep108 ,string& format,int typf=0,int add_digit=0);109 88 110 89 // Les objets/methodes suivants devraient etre protected … … 120 99 virtual void Detach(PIBaseWdgGen*, int id); 121 100 122 void CalcTicks();123 124 void DrawHTicks(PIGraphicUC* g, double y, double tickUp, double tickDown, double xBeg, double xStep);125 void DrawVTicks(PIGraphicUC* g, double x, double tickLeft, double tickRight, double yBeg, double yStep);126 void DrawHLabels(PIGraphicUC* g, double y, double xBeg, double xStep, unsigned long just=0);127 void DrawVLabels(PIGraphicUC* g, double x, double yBeg, double yStep, unsigned long just=0);128 void DrawGrid(PIGraphicUC* g);129 130 101 131 102 bool mFgDeleteOnDetach; // si true -> delete drawer on detach … … 138 109 int aXFlg, aYFlg; 139 110 140 double xFirstMajTick, xFirstMinTick;141 double yFirstMajTick, yFirstMinTick;142 double xMajTickStep, xMinTickStep;143 double yMajTickStep, yMinTickStep;144 double xMajTickLen, xMinTickLen;145 double yMajTickLen, yMinTickLen;146 147 111 int limitsFixed; 148 112 unsigned int axesFlags; -
trunk/SophyaPI/PI/piscdrawwdg.cc
r2003 r2080 9 9 #include "piscdrawwdg.h" 10 10 #include "pidrwtools.h" 11 #include "piaxes.h" 11 12 #include "piaxestools.h" 12 13 … … 650 651 double xm = (fabs(xmax)>fabs(xmin)) ? fabs(xmax): fabs(xmin); 651 652 double dx = fabs(xmax-xmin)/500.; 652 PI Drawer::BonFormatAxes(xm,xm+dx,dx,format,0,1);653 PIAxes::BonFormatAxes(xm,xm+dx,dx,format,0,1); 653 654 return format; 654 655 }
Note:
See TracChangeset
for help on using the changeset viewer.