diff --git a/Makefile b/Makefile index 8eee8773..47bbea59 100644 --- a/Makefile +++ b/Makefile @@ -256,6 +256,12 @@ config-macosx: make -C ./loch config-macosx # external sources +extern/lxMath.o: loch/lxMath.h loch/lxMath.cxx + $(CXX) -c $(CXXFLAGS) -o extern/lxMath.o loch/lxMath.cxx + +extern/lxFile.o: loch/lxFile.h loch/lxFile.cxx + $(CXX) -c $(CXXFLAGS) -o extern/lxFile.o loch/lxFile.cxx + extern/getopt.o: extern/getopt.c extern/getopt.h extern/getopt1.o: extern/getopt1.c extern/img.o: extern/img.c extern/img.h @@ -267,578 +273,606 @@ extern/poly2tri/sweep/sweep_context.o: extern/poly2tri/sweep/sweep_context.cc # DEPENDENCIES th2ddataobject.o: th2ddataobject.cxx th2ddataobject.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h \ - thsymbolset.h thsymbolsetlist.h + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexception.h thsymbolset.h thsymbolsetlist.h tharea.o: tharea.cxx tharea.h th2ddataobject.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h \ - thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h \ - thlocale.h thlang.h thlangdata.h thline.h + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexception.h thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h \ + thlayout.h thlocale.h thlang.h thlangdata.h thline.h thattr.o: thattr.cxx thattr.h thmbuffer.h thchenc.h thchencdata.h \ - thparse.h thbuffer.h extern/shapefil.h thexception.h therion.h + thparse.h thbuffer.h extern/shapefil.h thexception.h therion.h thbezier.o: thbezier.cxx thbezier.h thbuffer.o: thbuffer.cxx thbuffer.h thchenc.o: thchenc.cxx thchenc.h thchencdata.h thparse.h thbuffer.h \ - thmbuffer.h thchencdata.cxx therion.h thexception.h + thmbuffer.h thchencdata.cxx therion.h thexception.h thchencdata.o: thchencdata.cxx thcmdline.o: thcmdline.cxx thcmdline.h therion.h thlogfile.h thbuffer.h \ - thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h thexport.h \ - thobjectsrc.h thselector.h thtmpdir.h extern/getopt.h + thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h thexport.h \ + thobjectsrc.h thselector.h thtmpdir.h extern/getopt.h thconfig.o: thconfig.cxx thconfig.h thbuffer.h thmbuffer.h thinput.h \ - thparse.h thexporter.h thexport.h thobjectsrc.h thselector.h therion.h \ - thlang.h thlangdata.h thchenc.h thchencdata.h thexception.h thdatabase.h \ - thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h thinfnan.h \ - thdb1d.h thobjectid.h thdb3d.h thattr.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thdatareader.h thcsdata.h thproj.h thlogfile.h \ - thinit.h thgeomag.h thgeomagdata.h thlayout.h thsymbolset.h \ - thsymbolsetlist.h thlocale.h thsketch.h thpic.h + thparse.h thexporter.h thexport.h thobjectsrc.h thselector.h therion.h \ + thlang.h thlangdata.h thchenc.h thchencdata.h thexception.h \ + thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ + thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h \ + thattr.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h \ + thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h \ + thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ + thscraplp.h thdatareader.h thcsdata.h thproj.h thlogfile.h thinit.h \ + thgeomag.h thgeomagdata.h thlayout.h thsymbolset.h thsymbolsetlist.h \ + thlocale.h thsketch.h thpic.h thcs.h thconvert.o: thconvert.cxx thpdfdbg.h thexception.h therion.h thbuffer.h \ - thpdfdata.h thepsparse.h thtexfonts.h + thpdfdata.h thepsparse.h thtexfonts.h +thcs.o: thcs.cxx thcs.h thcsdata.h thparse.h thbuffer.h thmbuffer.h \ + thexception.h therion.h extern/proj4/proj_api.h thdatabase.h \ + thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ + thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ + thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thcsdata.o: thcsdata.cxx thcsdata.h thparse.h thbuffer.h thmbuffer.h -thdata.o: thdata.cxx thdata.h thdataleg.h thparse.h thbuffer.h \ - thmbuffer.h thobjectname.h therion.h thobjectsrc.h thinfnan.h \ - thdataobject.h thdatabase.h thdb1d.h thobjectid.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thtfangle.h thtf.h thtflength.h \ - thtfpwf.h thexception.h thsurvey.h thgrade.h thcsdata.h thdatareader.h \ - thinput.h thdatabase.o: thdatabase.cxx thdatabase.h thdataobject.h thperson.h \ - thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ - therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thsurvey.h thtfpwf.h thendsurvey.h thexception.h \ - thdata.h thtfangle.h thtf.h thtflength.h thcmdline.h thdatastation.h \ - thgrade.h thlayout.h thsymbolset.h thsymbolsetlist.h thlocale.h \ - thscrap.h thsketch.h thpic.h thtrans.h th2ddataobject.h thpoint.h \ - thline.h tharea.h thjoin.h thmap.h thimport.h thsurface.h thendscrap.h + thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ + therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thsurvey.h thtfpwf.h \ + thendsurvey.h thexception.h thdata.h thtfangle.h thtf.h thtflength.h \ + thcmdline.h thdatastation.h thgrade.h thlayout.h thsymbolset.h \ + thsymbolsetlist.h thlocale.h thscrap.h thsketch.h thpic.h thtrans.h \ + th2ddataobject.h thpoint.h thline.h tharea.h thjoin.h thmap.h \ + thimport.h thsurface.h thendscrap.h +thdata.o: thdata.cxx thdata.h thdataleg.h thparse.h thbuffer.h \ + thmbuffer.h thobjectname.h therion.h thobjectsrc.h thinfnan.h \ + thdataobject.h thdatabase.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thtfangle.h thtf.h thtflength.h thtfpwf.h thexception.h thsurvey.h \ + thgrade.h thcsdata.h thdatareader.h thinput.h thdataleg.o: thdataleg.cxx thdataleg.h thparse.h thbuffer.h thmbuffer.h \ - thobjectname.h therion.h thobjectsrc.h thinfnan.h + thobjectname.h therion.h thobjectsrc.h thinfnan.h thdataobject.o: thdataobject.cxx thdataobject.h thdatabase.h thmbuffer.h \ - thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ - thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thexception.h thsurvey.h thtfpwf.h thconfig.h \ - thinput.h thexporter.h thexport.h thselector.h thcsdata.h thproj.h + thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ + thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thexception.h thsurvey.h \ + thtfpwf.h thconfig.h thinput.h thexporter.h thexport.h thselector.h \ + thcsdata.h thproj.h thcs.h thdatareader.o: thdatareader.cxx thdatareader.h thdatabase.h \ - thdataobject.h thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h \ - thdataleg.h thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h \ - thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thinput.h \ - thexception.h + thdataobject.h thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h \ + thdataleg.h thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h \ + thobjectid.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thinput.h thexception.h thdatastation.o: thdatastation.cxx thdatastation.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexception.h thdate.o: thdate.cxx thdate.h thparse.h thbuffer.h thmbuffer.h \ - thexception.h therion.h + thexception.h therion.h thdb1d.o: thdb1d.cxx thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thbuffer.h thmbuffer.h thobjectname.h therion.h thobjectsrc.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thsurvey.h thdataobject.h \ - thdatabase.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thtfpwf.h thsvxctrl.h thexception.h thdata.h \ - thtfangle.h thtf.h thtflength.h thpoint.h th2ddataobject.h thlogfile.h \ - thsurface.h thlocale.h thinit.h thinput.h thconfig.h thexporter.h \ - thexport.h thselector.h thtrans.h extern/lxMath.h -thdb2d.o: thdb2d.cxx thdb2d.h thinfnan.h thdb2dprj.h thparse.h thbuffer.h \ - thmbuffer.h thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h \ - thdb2dlp.h thdb2dab.h thobjectname.h therion.h thobjectsrc.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thdb1d.h thobjectid.h thdataleg.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thexception.h thdatabase.h \ - thdataobject.h thtfangle.h thtf.h tharea.h th2ddataobject.h thmap.h \ - thjoin.h thpoint.h thline.h thscrap.h thsketch.h thpic.h thtrans.h \ - thsurvey.h thtfpwf.h thlogfile.h thlayout.h thsymbolset.h \ - thsymbolsetlist.h thlocale.h thexpmap.h thexport.h thlang.h thlangdata.h \ - thconfig.h thinput.h thexporter.h thselector.h thtmpdir.h thinit.h + thparse.h thbuffer.h thmbuffer.h thobjectname.h therion.h thobjectsrc.h \ + thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h thsurvey.h \ + thdataobject.h thdatabase.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thtfpwf.h thsvxctrl.h \ + thexception.h thdata.h thtfangle.h thtf.h thtflength.h thpoint.h \ + th2ddataobject.h thlogfile.h thsurface.h thlocale.h thinit.h thinput.h \ + thconfig.h thexporter.h thexport.h thselector.h thtrans.h thdb2d00.o: thdb2d00.cxx thdb2d.h thinfnan.h thdb2dprj.h thparse.h \ - thbuffer.h thmbuffer.h thmapstat.h thdate.h thperson.h thlegenddata.h \ - thdb2dpt.h thdb2dlp.h thdb2dab.h thobjectname.h therion.h thobjectsrc.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thdb1d.h thobjectid.h \ - thdataleg.h thdb3d.h thattr.h thchenc.h thchencdata.h thexception.h \ - thdatabase.h thdataobject.h thtfangle.h thtf.h tharea.h th2ddataobject.h \ - thmap.h thjoin.h thpoint.h thline.h thscrap.h thsketch.h thpic.h \ - thtrans.h thsurvey.h thtfpwf.h thlogfile.h thlayout.h thsymbolset.h \ - thsymbolsetlist.h thlocale.h thconfig.h thinput.h thexporter.h \ - thexport.h thselector.h + thbuffer.h thmbuffer.h thmapstat.h thdate.h thperson.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thobjectname.h therion.h thobjectsrc.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thdb1d.h \ + thobjectid.h thdataleg.h thdb3d.h loch/lxMath.h thattr.h thchenc.h \ + thchencdata.h thexception.h thdatabase.h thdataobject.h thtfangle.h \ + thtf.h tharea.h th2ddataobject.h thmap.h thjoin.h thpoint.h thline.h \ + thscrap.h thsketch.h thpic.h thtrans.h thsurvey.h thtfpwf.h thlogfile.h \ + thlayout.h thsymbolset.h thsymbolsetlist.h thlocale.h thconfig.h \ + thinput.h thexporter.h thexport.h thselector.h thdb2dab.o: thdb2dab.cxx thdb2dab.h thobjectname.h thmbuffer.h therion.h \ - thobjectsrc.h + thobjectsrc.h thdb2dcp.o: thdb2dcp.cxx thdb2dcp.h thdb2dpt.h +thdb2d.o: thdb2d.cxx thdb2d.h thinfnan.h thdb2dprj.h thparse.h thbuffer.h \ + thmbuffer.h thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h \ + thdb2dlp.h thdb2dab.h thobjectname.h therion.h thobjectsrc.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thdb1d.h thobjectid.h thdataleg.h \ + thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h thexception.h \ + thdatabase.h thdataobject.h thtfangle.h thtf.h tharea.h \ + th2ddataobject.h thmap.h thjoin.h thpoint.h thline.h thscrap.h \ + thsketch.h thpic.h thtrans.h thsurvey.h thtfpwf.h thlogfile.h \ + thlayout.h thsymbolset.h thsymbolsetlist.h thlocale.h thexpmap.h \ + thexport.h thlang.h thlangdata.h thconfig.h thinput.h thexporter.h \ + thselector.h thtmpdir.h thinit.h thdb2dji.o: thdb2dji.cxx thdb2dji.h thobjectname.h thmbuffer.h therion.h \ - thdatabase.h thdataobject.h thperson.h thparse.h thbuffer.h thdate.h \ - thdataleg.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dmi.h thdb2dcp.h \ - thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ - thscraplp.h thexception.h + thdatabase.h thdataobject.h thperson.h thparse.h thbuffer.h thdate.h \ + thdataleg.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dmi.h \ + thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thexception.h thdb2dlp.o: thdb2dlp.cxx thdb2dlp.h thdb2dpt.h thline.h th2ddataobject.h \ - thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h \ - thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ - thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thexpmap.h thexport.h \ - thsymbolset.h thsymbolsetlist.h thlayout.h thlocale.h thlang.h \ - thlangdata.h + thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ + thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h thlegenddata.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h \ + thlocale.h thlang.h thlangdata.h thdb2dmi.o: thdb2dmi.cxx thdb2dmi.h thobjectname.h thmbuffer.h therion.h \ - thobjectsrc.h thparse.h thbuffer.h thexception.h + thobjectsrc.h thparse.h thbuffer.h thexception.h thdb2dprj.o: thdb2dprj.cxx thdb2dprj.h thparse.h thbuffer.h thmbuffer.h \ - thmapstat.h thdate.h thperson.h thlegenddata.h thinfnan.h + thmapstat.h thdate.h thperson.h thlegenddata.h thinfnan.h thdb2dpt.o: thdb2dpt.cxx thdb2dpt.h thexpmap.h thexport.h thparse.h \ - thbuffer.h thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h \ - thlayoutclr.h thlayout.h thdataobject.h thdatabase.h thdb1d.h \ - thobjectid.h thinfnan.h thdataleg.h thobjectname.h therion.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thscrapen.h thscraplp.h thlocale.h thlang.h thlangdata.h + thbuffer.h thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h \ + thlayoutclr.h thlayout.h thdataobject.h thdatabase.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thobjectname.h therion.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thscrapen.h thscraplp.h thlocale.h thlang.h thlangdata.h thdb2dxm.o: thdb2dxm.cxx thdb2dxm.h thdb2dmi.h thobjectname.h thmbuffer.h \ - therion.h thobjectsrc.h thparse.h thbuffer.h + therion.h thobjectsrc.h thparse.h thbuffer.h thdb2dxs.o: thdb2dxs.cxx thdb2dxs.h thdb2dmi.h thobjectname.h thmbuffer.h \ - therion.h thobjectsrc.h thparse.h thbuffer.h -thdb3d.o: thdb3d.cxx thdb3d.h + therion.h thobjectsrc.h thparse.h thbuffer.h +thdb3d.o: thdb3d.cxx thdb3d.h loch/lxMath.h thendscrap.o: thendscrap.cxx thendscrap.h thdataobject.h thdatabase.h \ - thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thexception.h + thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ + thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h thendsurvey.o: thendsurvey.cxx thendsurvey.h thdataobject.h thdatabase.h \ - thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thexception.h + thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ + thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h thepsparse.o: thepsparse.cxx thepsparse.h thpdfdbg.h thexception.h \ - therion.h thbuffer.h thpdfdata.h thtexfonts.h thconvert.h + therion.h thbuffer.h thpdfdata.h thtexfonts.h thconvert.h therion.o: therion.cxx therion.h thlogfile.h thbuffer.h thtmpdir.h \ - thcmdline.h thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h \ - thexport.h thobjectsrc.h thselector.h thchenc.h thchencdata.h \ - thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ - thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h thattr.h \ - thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ - thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ - thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ - thdatareader.h thexception.h thlibrary.h thinit.h thgrade.h thdata.h \ - thtfangle.h thtf.h thtflength.h thtfpwf.h thlayout.h thsymbolset.h \ - thsymbolsetlist.h thlocale.h thpoint.h th2ddataobject.h thline.h \ - tharea.h thversion.h thtexfonts.h thlang.h thlangdata.h + thcmdline.h thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h \ + thexport.h thobjectsrc.h thselector.h thchenc.h thchencdata.h \ + thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ + thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h \ + thattr.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h \ + thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h \ + thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ + thscraplp.h thdatareader.h thexception.h thlibrary.h thinit.h thgrade.h \ + thdata.h thtfangle.h thtf.h thtflength.h thtfpwf.h thlayout.h \ + thsymbolset.h thsymbolsetlist.h thlocale.h thpoint.h th2ddataobject.h \ + thline.h tharea.h thversion.h thtexfonts.h thlang.h thlangdata.h \ + thbezier.h thexception.o: thexception.cxx thexception.h therion.h thbuffer.h thexpdb.o: thexpdb.cxx thexpdb.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ - thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h thinfnan.h \ - thdb1d.h thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thdata.h thtfangle.h \ - thtf.h thtflength.h thtfpwf.h thinit.h thinput.h thsurvey.h + thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ + thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ + thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thdata.h thtfangle.h thtf.h thtflength.h \ + thtfpwf.h thinit.h thinput.h thsurvey.h thexpmap.o: thexpmap.cxx thexpmap.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ - thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thobjectname.h therion.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thscrapen.h \ - thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h thexception.h \ - thtmpdir.h thscrap.h thsketch.h thpic.h thtrans.h thpoint.h \ - th2ddataobject.h thline.h thmap.h thconfig.h thinput.h thselector.h \ - thinit.h thlogfile.h thconvert.h thpdf.h thpdfdata.h thepsparse.h \ - thmpost.h thtex.h thcmdline.h thtexfonts.h thsurvey.h thtfpwf.h \ - thcsdata.h thproj.h thsurface.h thtflength.h thtf.h extern/lxMath.h \ - thsvg.h extern/img.h + thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ + thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thobjectname.h therion.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thscrapen.h thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h \ + thexception.h thtmpdir.h thscrap.h thsketch.h thpic.h thtrans.h \ + thpoint.h th2ddataobject.h thline.h tharea.h thmap.h thconfig.h \ + thinput.h thselector.h thinit.h thlogfile.h thconvert.h thpdf.h \ + thpdfdata.h thepsparse.h thmpost.h thtex.h thcmdline.h thtexfonts.h \ + thsurvey.h thtfpwf.h thcsdata.h thproj.h thsurface.h thtflength.h \ + thtf.h thsvg.h extern/img.h thcs.h thexpmodel.o: thexpmodel.cxx thexpmodel.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ - thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h thinfnan.h \ - thdb1d.h thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thdata.h thtfangle.h \ - thtf.h thtflength.h thtfpwf.h thsurvey.h extern/img.h thscrap.h \ - thsketch.h thpic.h thtrans.h thsurface.h extern/lxFile.h thconfig.h \ - thinput.h thexporter.h thselector.h thcsdata.h thproj.h + thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ + thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ + thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thdata.h thtfangle.h thtf.h thtflength.h \ + thtfpwf.h thsurvey.h extern/img.h thscrap.h thsketch.h thpic.h \ + thtrans.h thsurface.h loch/lxFile.h thconfig.h thinput.h thexporter.h \ + thselector.h thcsdata.h thproj.h thcs.h thexport.o: thexport.cxx thexport.h thparse.h thbuffer.h thmbuffer.h \ - thobjectsrc.h thexception.h therion.h thconfig.h thinput.h thexporter.h \ - thselector.h thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ - thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ - thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ - thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ - thscraplp.h + thobjectsrc.h thexception.h therion.h thconfig.h thinput.h thexporter.h \ + thselector.h thdatabase.h thdataobject.h thperson.h thdate.h \ + thdataleg.h thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thexporter.o: thexporter.cxx thexporter.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thexception.h therion.h thconfig.h thinput.h \ - thselector.h thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ - thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ - thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ - thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ - thscraplp.h thexpmodel.h thexpmap.h thsymbolset.h thsymbolsetlist.h \ - thlayout.h thlocale.h thlang.h thlangdata.h thexpdb.h thexpsys.h \ - thexptable.h + thmbuffer.h thobjectsrc.h thexception.h therion.h thconfig.h thinput.h \ + thselector.h thdatabase.h thdataobject.h thperson.h thdate.h \ + thdataleg.h thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thexpmodel.h thexpmap.h \ + thsymbolset.h thsymbolsetlist.h thlayout.h thlocale.h thlang.h \ + thlangdata.h thexpdb.h thexpsys.h thexptable.h thexpshp.o: thexpshp.cxx thexpmap.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ - thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thobjectname.h therion.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thscrapen.h \ - thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h thexception.h \ - thmap.h thsketch.h thpic.h thconfig.h thinput.h thselector.h thtmpdir.h \ - thinit.h thlogfile.h thcmdline.h thsurvey.h thtfpwf.h thsurface.h \ - thtflength.h thtf.h extern/lxMath.h extern/shapefil.h thexpmodel.h \ - thcsdata.h thexpshp.h thscrap.h thtrans.h thpoint.h th2ddataobject.h \ - thline.h tharea.h + thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ + thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thobjectname.h therion.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thscrapen.h thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h \ + thexception.h thmap.h thsketch.h thpic.h thconfig.h thinput.h \ + thselector.h thtmpdir.h thinit.h thlogfile.h thcmdline.h thsurvey.h \ + thtfpwf.h thsurface.h thtflength.h thtf.h extern/shapefil.h \ + thexpmodel.h thcsdata.h thcs.h thexpshp.h thscrap.h thtrans.h thpoint.h \ + th2ddataobject.h thline.h tharea.h thexpsys.o: thexpsys.cxx thexpsys.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ - thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h thinfnan.h \ - thdb1d.h thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h + thmbuffer.h thobjectsrc.h thexception.h therion.h thdatabase.h \ + thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ + thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thexptable.o: thexptable.cxx thexptable.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thattr.h thchenc.h thchencdata.h thexception.h \ - therion.h thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ - thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thdata.h thtfangle.h \ - thtf.h thtflength.h thtfpwf.h thexporter.h thinit.h thinput.h thsurvey.h \ - thscrap.h thsketch.h thpic.h thtrans.h thpoint.h th2ddataobject.h \ - thcsdata.h thproj.h thconfig.h thselector.h + thmbuffer.h thobjectsrc.h thattr.h thchenc.h thchencdata.h \ + thexception.h therion.h thdatabase.h thdataobject.h thperson.h thdate.h \ + thdataleg.h thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thdata.h thtfangle.h thtf.h thtflength.h \ + thtfpwf.h thexporter.h thinit.h thinput.h thsurvey.h thscrap.h \ + thsketch.h thpic.h thtrans.h thpoint.h th2ddataobject.h thcsdata.h \ + thproj.h thconfig.h thselector.h thcs.h thexpuni.o: thexpuni.cxx thexpmap.h thexport.h thparse.h thbuffer.h \ - thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ - thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thobjectname.h therion.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thscrapen.h \ - thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h thexception.h \ - thmap.h thsketch.h thpic.h thconfig.h thinput.h thselector.h thtmpdir.h \ - thcsdata.h thinit.h thlogfile.h thcmdline.h thsurvey.h thtfpwf.h \ - thsurface.h thtflength.h thtf.h extern/lxMath.h extern/shapefil.h \ - thexpmodel.h thexpuni.h thscrap.h thtrans.h thpoint.h th2ddataobject.h \ - thline.h tharea.h thproj.h + thmbuffer.h thobjectsrc.h thsymbolset.h thsymbolsetlist.h thlayoutclr.h \ + thlayout.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thobjectname.h therion.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thscrapen.h thscraplp.h thlocale.h thlang.h thlangdata.h thexporter.h \ + thexception.h thmap.h thsketch.h thpic.h thconfig.h thinput.h \ + thselector.h thtmpdir.h thcsdata.h thinit.h thlogfile.h thcmdline.h \ + thsurvey.h thtfpwf.h thsurface.h thtflength.h thtf.h extern/shapefil.h \ + thexpmodel.h thexpuni.h thscrap.h thtrans.h thpoint.h th2ddataobject.h \ + thline.h tharea.h thproj.h thcs.h thgeomag.o: thgeomag.cxx thgeomagdata.h thgrade.o: thgrade.cxx thgrade.h thdataobject.h thdatabase.h thmbuffer.h \ - thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ - thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thdata.h thtfangle.h thtf.h thtflength.h \ - thtfpwf.h thexception.h + thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ + thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thdata.h thtfangle.h thtf.h \ + thtflength.h thtfpwf.h thexception.h thimport.o: thimport.cxx thimport.h thdataobject.h thdatabase.h \ - thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thexception.h thdata.h thtfangle.h \ - thtf.h thtflength.h thtfpwf.h thsurvey.h thendsurvey.h extern/img.h + thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ + thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h \ + thdata.h thtfangle.h thtf.h thtflength.h thtfpwf.h thsurvey.h \ + thendsurvey.h extern/img.h thinfnan.o: thinfnan.cxx thinfnan.h thinit.o: thinit.cxx thinit.h thbuffer.h thmbuffer.h thinput.h thparse.h \ - thchenc.h thchencdata.h therion.h thconfig.h thexporter.h thexport.h \ - thobjectsrc.h thselector.h thexception.h thtexfonts.h thlang.h \ - thlangdata.h thlocale.h thtmpdir.h + thchenc.h thchencdata.h therion.h thconfig.h thexporter.h thexport.h \ + thobjectsrc.h thselector.h thexception.h thtexfonts.h thlang.h \ + thlangdata.h thlocale.h thtmpdir.h thcs.h thcsdata.h thinput.o: thinput.cxx thinput.h thbuffer.h thmbuffer.h thparse.h \ - thchenc.h thchencdata.h therion.h thexception.h + thchenc.h thchencdata.h therion.h thexception.h thjoin.o: thjoin.cxx thjoin.h thdataobject.h thdatabase.h thmbuffer.h \ - thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ - thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thexception.h + thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ + thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thexception.h thlang.o: thlang.cxx thlang.h thlangdata.h thparse.h thbuffer.h \ - thmbuffer.h thlangdata.cxx thinit.h thinput.h thconfig.h thexporter.h \ - thexport.h thobjectsrc.h thselector.h thdatabase.h thdataobject.h \ - thperson.h thdate.h thdataleg.h thobjectname.h therion.h thinfnan.h \ - thdb1d.h thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h + thmbuffer.h thlangdata.cxx thinit.h thinput.h thconfig.h thexporter.h \ + thexport.h thobjectsrc.h thselector.h thdatabase.h thdataobject.h \ + thperson.h thdate.h thdataleg.h thobjectname.h therion.h thinfnan.h \ + thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h thattr.h thchenc.h \ + thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thexception.h thlangdata.o: thlangdata.cxx -thlayout.o: thlayout.cxx thlayout.h thdataobject.h thdatabase.h \ - thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thsymbolset.h thsymbolsetlist.h \ - thlocale.h thexception.h thdata.h thtfangle.h thtf.h thtflength.h \ - thtfpwf.h thpdfdata.h thepsparse.h thlang.h thlangdata.h thcsdata.h \ - thconfig.h thinput.h thexporter.h thexport.h thselector.h thlayoutclr.o: thlayoutclr.cxx thlayoutclr.h thparse.h thbuffer.h \ - thmbuffer.h thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ - thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ - thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thscrapen.h thscraplp.h thexception.h + thmbuffer.h thdatabase.h thdataobject.h thperson.h thdate.h thdataleg.h \ + thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h \ + thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h \ + thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thscrapen.h thscraplp.h thexception.h +thlayout.o: thlayout.cxx thlayout.h thdataobject.h thdatabase.h \ + thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ + thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thsymbolset.h \ + thsymbolsetlist.h thlocale.h thexception.h thdata.h thtfangle.h thtf.h \ + thtflength.h thtfpwf.h thpdfdata.h thepsparse.h thlang.h thlangdata.h \ + thcsdata.h thconfig.h thinput.h thexporter.h thexport.h thselector.h thlayoutln.o: thlayoutln.cxx thlayoutln.h thlayoutclr.h thlayout.h \ - thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h \ - thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ - thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ - thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ - thscraplo.h thscrapen.h thscraplp.h thsymbolset.h thsymbolsetlist.h \ - thlocale.h + thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ + thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thscrapen.h thscraplp.h thsymbolset.h \ + thsymbolsetlist.h thlocale.h thlegenddata.o: thlegenddata.cxx thlegenddata.h thlibrary.o: thlibrary.cxx thlibrary.h thlibrarydata.cxx thdatabase.h \ - thdataobject.h thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h \ - thdataleg.h thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h \ - thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thlayout.h \ - thsymbolset.h thsymbolsetlist.h thlocale.h thlang.h thlangdata.h \ - thgrade.h thdata.h thtfangle.h thtf.h thtflength.h thtfpwf.h + thdataobject.h thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h \ + thdataleg.h thobjectname.h therion.h thobjectsrc.h thinfnan.h thdb1d.h \ + thobjectid.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thlayout.h thsymbolset.h thsymbolsetlist.h thlocale.h thlang.h \ + thlangdata.h thgrade.h thdata.h thtfangle.h thtf.h thtflength.h \ + thtfpwf.h thlibrarydata.o: thlibrarydata.cxx thdatabase.h thdataobject.h thperson.h \ - thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ - therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thlayout.h thsymbolset.h thsymbolsetlist.h \ - thlocale.h thlang.h thlangdata.h thgrade.h thdata.h thtfangle.h thtf.h \ - thtflength.h thtfpwf.h + thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ + therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thlayout.h thsymbolset.h \ + thsymbolsetlist.h thlocale.h thlang.h thlangdata.h thgrade.h thdata.h \ + thtfangle.h thtf.h thtflength.h thtfpwf.h thline.o: thline.cxx thline.h th2ddataobject.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h \ - thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h \ - thlocale.h thlang.h thlangdata.h thtflength.h thtf.h thtexfonts.h \ - thscrap.h thsketch.h thpic.h thtrans.h + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexception.h thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h \ + thlayout.h thlocale.h thlang.h thlangdata.h thtflength.h thtf.h \ + thtexfonts.h thscrap.h thsketch.h thpic.h thtrans.h thlocale.o: thlocale.cxx thlocale.h thparse.h thbuffer.h thmbuffer.h \ - thexception.h therion.h thlang.h thlangdata.h thinit.h thinput.h + thexception.h therion.h thlang.h thlangdata.h thinit.h thinput.h thlogfile.o: thlogfile.cxx thlogfile.h thbuffer.h therion.h thmap.o: thmap.cxx thmap.h thdataobject.h thdatabase.h thmbuffer.h \ - thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ - thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thexception.h thscrap.h thsketch.h thpic.h \ - thtrans.h thtflength.h thtf.h + thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ + thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thexception.h thscrap.h \ + thsketch.h thpic.h thtrans.h thtflength.h thtf.h thmapstat.o: thmapstat.cxx thmapstat.h thdate.h thperson.h thlegenddata.h \ - thscrap.h thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ - thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ - thobjectsrc.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thsketch.h thpic.h thtrans.h thdata.h \ - thtfangle.h thtf.h thtflength.h thtfpwf.h thmap.h thlayout.h \ - thsymbolset.h thsymbolsetlist.h thlocale.h thlang.h thlangdata.h \ - thtexfonts.h thsurvey.h + thscrap.h thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ + thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thsketch.h thpic.h thtrans.h \ + thdata.h thtfangle.h thtf.h thtflength.h thtfpwf.h thmap.h thlayout.h \ + thsymbolset.h thsymbolsetlist.h thlocale.h thlang.h thlangdata.h \ + thtexfonts.h thsurvey.h thmbuffer.o: thmbuffer.cxx thmbuffer.h thmpost.o: thmpost.cxx thmpost.h thobjectid.o: thobjectid.cxx thobjectid.h thobjectname.o: thobjectname.cxx thobjectname.h thmbuffer.h therion.h \ - thexception.h thbuffer.h thparse.h thdatabase.h thdataobject.h \ - thperson.h thdate.h thdataleg.h thobjectsrc.h thinfnan.h thdb1d.h \ - thobjectid.h thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h \ - thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thsurvey.h thtfpwf.h + thexception.h thbuffer.h thparse.h thdatabase.h thdataobject.h \ + thperson.h thdate.h thdataleg.h thobjectsrc.h thinfnan.h thdb1d.h \ + thobjectid.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thsurvey.h thtfpwf.h thobjectsrc.o: thobjectsrc.cxx thobjectsrc.h thparse.o: thparse.cxx thparse.h thbuffer.h thmbuffer.h therion.h \ - thlang.h thlangdata.h thtexfonts.h thinfnan.h thdatabase.h \ - thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ - thobjectsrc.h thdb1d.h thobjectid.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h \ - thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h \ - thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ - thscraplp.h thtflength.h thtf.h thexception.h + thlang.h thlangdata.h thtexfonts.h thinfnan.h thdatabase.h \ + thdataobject.h thperson.h thdate.h thdataleg.h thobjectname.h \ + thobjectsrc.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thtflength.h thtf.h thexception.h thpdf.o: thpdf.cxx thpdfdbg.h thexception.h therion.h thbuffer.h \ - thpdfdata.h thepsparse.h thtexfonts.h thlang.h thlangdata.h thparse.h \ - thmbuffer.h thversion.h thchenc.h thchencdata.h + thpdfdata.h thepsparse.h thtexfonts.h thlang.h thlangdata.h thparse.h \ + thmbuffer.h thversion.h thchenc.h thchencdata.h thpdfdata.o: thpdfdata.cxx thpdfdata.h thepsparse.h thlang.h thlangdata.h \ - thparse.h thbuffer.h thmbuffer.h + thparse.h thbuffer.h thmbuffer.h thpdfdbg.o: thpdfdbg.cxx thpdfdbg.h thexception.h therion.h thbuffer.h \ - thpdfdata.h thepsparse.h + thpdfdata.h thepsparse.h thperson.o: thperson.cxx thperson.h thdatabase.h thdataobject.h thparse.h \ - thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h therion.h \ - thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thlegenddata.h \ - thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ - thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ - thscraplp.h thexception.h + thbuffer.h thmbuffer.h thdate.h thdataleg.h thobjectname.h therion.h \ + thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ + thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thexception.h thpic.o: thpic.cxx thpic.h thbuffer.h thdatabase.h thdataobject.h \ - thperson.h thparse.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ - therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thinit.h thinput.h thtmpdir.h thexception.h + thperson.h thparse.h thmbuffer.h thdate.h thdataleg.h thobjectname.h \ + therion.h thobjectsrc.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thinit.h thinput.h thtmpdir.h \ + thexception.h thpoint.o: thpoint.cxx thpoint.h th2ddataobject.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thexception.h \ - thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h \ - thlocale.h thlang.h thlangdata.h thtflength.h thtf.h thtexfonts.h \ - thscrap.h thsketch.h thpic.h thtrans.h + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ + thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thexception.h thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h \ + thlayout.h thlocale.h thlang.h thlangdata.h thtflength.h thtf.h \ + thtexfonts.h thscrap.h thsketch.h thpic.h thtrans.h thproj.o: thproj.cxx thexception.h therion.h thbuffer.h \ - extern/proj4/proj_api.h + extern/proj4/proj_api.h thscrap.o: thscrap.cxx thscrap.h thdataobject.h thdatabase.h thmbuffer.h \ - thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ - thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thsketch.h thpic.h thtrans.h thexception.h \ - thtflength.h thtf.h th2ddataobject.h thline.h thpoint.h thscrapis.h \ - thsurvey.h thtfpwf.h thsymbolset.h thsymbolsetlist.h thcsdata.h + thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h thparse.h \ + thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thsketch.h thpic.h thtrans.h \ + thexception.h thtflength.h thtf.h th2ddataobject.h thline.h thpoint.h \ + thscrapis.h thsurvey.h thtfpwf.h thsymbolset.h thsymbolsetlist.h \ + thcsdata.h thscrapen.o: thscrapen.cxx thscrapen.h -thscrapis.o: thscrapis.cxx thscrapis.h thdb3d.h therion.h thdb2dlp.h \ - thdb2dpt.h thscraplo.h thline.h th2ddataobject.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h thobjectsrc.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h \ - thdb2dxm.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thconfig.h \ - thinput.h thexporter.h thexport.h thselector.h \ - extern/poly2tri/poly2tri.h extern/poly2tri/common/shapes.h \ - extern/poly2tri/sweep/cdt.h extern/poly2tri/sweep/advancing_front.h \ - extern/poly2tri/sweep/../common/shapes.h \ - extern/poly2tri/sweep/sweep_context.h extern/poly2tri/sweep/sweep.h +thscrapis.o: thscrapis.cxx thscrapis.h thdb3d.h loch/lxMath.h thscrap.h \ + thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ + thobjectsrc.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thsketch.h thpic.h thtrans.h thpoint.h th2ddataobject.h thline.h \ + thconfig.h thinput.h thexporter.h thexport.h thselector.h \ + extern/poly2tri/poly2tri.h extern/poly2tri/common/shapes.h \ + extern/poly2tri/sweep/cdt.h extern/poly2tri/sweep/advancing_front.h \ + extern/poly2tri/sweep/../common/shapes.h \ + extern/poly2tri/sweep/sweep_context.h extern/poly2tri/sweep/sweep.h \ + thsurvey.h thtfpwf.h thscraplo.o: thscraplo.cxx thscraplo.h thscraplp.o: thscraplp.cxx thscraplp.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thbuffer.h thmbuffer.h thobjectname.h therion.h \ - thobjectsrc.h thdb3d.h thattr.h thchenc.h thchencdata.h thscrap.h \ - thdataobject.h thdatabase.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thsketch.h thpic.h thtrans.h thexpmap.h \ - thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h thlocale.h \ - thlang.h thlangdata.h extern/lxMath.h + thdataleg.h thparse.h thbuffer.h thmbuffer.h thobjectname.h therion.h \ + thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thscrap.h thdataobject.h thdatabase.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thsketch.h thpic.h thtrans.h \ + thexpmap.h thexport.h thsymbolset.h thsymbolsetlist.h thlayout.h \ + thlocale.h thlang.h thlangdata.h thselector.o: thselector.cxx thselector.h thexception.h therion.h \ - thbuffer.h thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h \ - thexport.h thobjectsrc.h thdatabase.h thdataobject.h thperson.h thdate.h \ - thdataleg.h thobjectname.h thinfnan.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thsurvey.h thtfpwf.h th2ddataobject.h thscrap.h \ - thsketch.h thpic.h thtrans.h thmap.h + thbuffer.h thconfig.h thmbuffer.h thinput.h thparse.h thexporter.h \ + thexport.h thobjectsrc.h thdatabase.h thdataobject.h thperson.h \ + thdate.h thdataleg.h thobjectname.h thinfnan.h thdb1d.h thobjectid.h \ + thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h \ + thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thsurvey.h thtfpwf.h \ + th2ddataobject.h thscrap.h thsketch.h thpic.h thtrans.h thmap.h thsketch.o: thsketch.cxx therion.h thsketch.h thpic.h thscrap.h \ - thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h \ - thinfnan.h thdataleg.h thparse.h thobjectname.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thtrans.h thwarpp.h \ - thwarp.h thwarppme.h thwarppdef.h thwarppt.h thconfig.h thinput.h \ - thexporter.h thexport.h thselector.h -thsurface.o: thsurface.cxx thsurface.h thdb3d.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h \ - thdataleg.h thparse.h thobjectname.h therion.h thobjectsrc.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thtflength.h thtf.h thexception.h \ - thcsdata.h thdatareader.h thinput.h + thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h \ + thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h \ + thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h thlegenddata.h \ + thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h \ + thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ + thscrapen.h thscraplp.h thtrans.h thwarpp.h thwarp.h thwarppme.h \ + thwarppdef.h thwarppt.h thconfig.h thinput.h thexporter.h thexport.h \ + thselector.h +thsurface.o: thsurface.cxx thsurface.h thdb3d.h loch/lxMath.h \ + thdataobject.h thdatabase.h thmbuffer.h thbuffer.h thdb1d.h \ + thobjectid.h thinfnan.h thdataleg.h thparse.h thobjectname.h therion.h \ + thobjectsrc.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h \ + thtflength.h thtf.h thexception.h thcsdata.h thdatareader.h thinput.h thsurvey.o: thsurvey.cxx thsurvey.h thdataobject.h thdatabase.h \ - thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ - thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h thattr.h \ - thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ - thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thtfpwf.h thexception.h \ - thtfangle.h thtf.h thdata.h thtflength.h + thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thinfnan.h thdataleg.h \ + thparse.h thobjectname.h therion.h thobjectsrc.h thdb3d.h loch/lxMath.h \ + thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ + thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thtfpwf.h \ + thexception.h thtfangle.h thtf.h thdata.h thtflength.h thsvg.o: thsvg.cxx thepsparse.h thpdfdbg.h thexception.h therion.h \ - thbuffer.h thpdfdata.h thversion.h thlegenddata.h + thbuffer.h thpdfdata.h thversion.h thlegenddata.h thsvxctrl.o: thsvxctrl.cxx thsvxctrl.h thdataleg.h thparse.h thbuffer.h \ - thmbuffer.h thobjectname.h therion.h thobjectsrc.h thinfnan.h \ - thdatabase.h thdataobject.h thperson.h thdate.h thdb1d.h thobjectid.h \ - thdb3d.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ - thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ - thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ - thlayoutclr.h thscrapen.h thscraplp.h thtmpdir.h thdata.h thtfangle.h \ - thtf.h thtflength.h thtfpwf.h thexception.h thinit.h thinput.h \ - thconfig.h thexporter.h thexport.h thselector.h thsurvey.h thlogfile.h \ - extern/img.h + thmbuffer.h thobjectname.h therion.h thobjectsrc.h thinfnan.h \ + thdatabase.h thdataobject.h thperson.h thdate.h thdb1d.h thobjectid.h \ + thdb3d.h loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h \ + thdb2dprj.h thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ + thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ + thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thtmpdir.h thdata.h \ + thtfangle.h thtf.h thtflength.h thtfpwf.h thexception.h thinit.h \ + thinput.h thconfig.h thexporter.h thexport.h thselector.h thsurvey.h \ + thlogfile.h extern/img.h thsymbolset.o: thsymbolset.cxx thsymbolset.h thsymbolsetlist.h \ - thlayoutclr.h thparse.h thbuffer.h thmbuffer.h thpoint.h \ - th2ddataobject.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h \ - thinfnan.h thdataleg.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thscrapen.h thscraplp.h thline.h tharea.h thexception.h \ - thpdfdata.h thepsparse.h thlayout.h thlocale.h thtexfonts.h thlang.h \ - thlangdata.h thtmpdir.h thcmdline.h thmpost.h thinit.h thinput.h \ - thsymbolsets.h thlogfile.h + thlayoutclr.h thparse.h thbuffer.h thmbuffer.h thpoint.h \ + th2ddataobject.h thdataobject.h thdatabase.h thdb1d.h thobjectid.h \ + thinfnan.h thdataleg.h thobjectname.h therion.h thobjectsrc.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h \ + thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h \ + thscraplo.h thlayoutln.h thscrapen.h thscraplp.h thline.h tharea.h \ + thexception.h thpdfdata.h thepsparse.h thlayout.h thlocale.h \ + thtexfonts.h thlang.h thlangdata.h thtmpdir.h thcmdline.h thmpost.h \ + thinit.h thinput.h thsymbolsets.h thlogfile.h thsymbolsets.o: thsymbolsets.cxx thsymbolsets.h thsymbolsetlist.h thtex.o: thtex.cxx thtex.h thtexenc.o: thtexenc.cxx thtexfonts.o: thtexfonts.cxx thtexfonts.h thtexenc.cxx thpdfdbg.h \ - thexception.h therion.h thbuffer.h thinit.h thmbuffer.h thinput.h \ - thparse.h thpdfdata.h thepsparse.h -thtf.o: thtf.cxx thtf.h thexception.h therion.h thbuffer.h thparse.h \ - thmbuffer.h + thexception.h therion.h thbuffer.h thinit.h thmbuffer.h thinput.h \ + thparse.h thpdfdata.h thepsparse.h thtfangle.o: thtfangle.cxx thparse.h thbuffer.h thmbuffer.h thtfangle.h \ - thtf.h thexception.h therion.h thinfnan.h + thtf.h thexception.h therion.h thinfnan.h +thtf.o: thtf.cxx thtf.h thexception.h therion.h thbuffer.h thparse.h \ + thmbuffer.h thtflength.o: thtflength.cxx thtflength.h thtf.h thparse.h thbuffer.h \ - thmbuffer.h thexception.h therion.h + thmbuffer.h thexception.h therion.h thtfpwf.o: thtfpwf.cxx thtfpwf.h thexception.h therion.h thbuffer.h \ - thinfnan.h thparse.h thmbuffer.h + thinfnan.h thparse.h thmbuffer.h thtmpdir.o: thtmpdir.cxx thtmpdir.h thbuffer.h therion.h thinit.h \ - thmbuffer.h thinput.h thparse.h + thmbuffer.h thinput.h thparse.h thtrans.o: thtrans.cxx thtrans.h thinfnan.h thdatabase.h thdataobject.h \ - thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h \ - thobjectname.h therion.h thobjectsrc.h thdb1d.h thobjectid.h thdb3d.h \ - thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h + thperson.h thparse.h thbuffer.h thmbuffer.h thdate.h thdataleg.h \ + thobjectname.h therion.h thobjectsrc.h thdb1d.h thobjectid.h thdb3d.h \ + loch/lxMath.h thattr.h thchenc.h thchencdata.h thdb2d.h thdb2dprj.h \ + thmapstat.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thwarp.o: thwarp.cxx thwarp.h thpic.h thsketch.h thdb1d.h thobjectid.h \ - thinfnan.h thdataleg.h thparse.h thbuffer.h thmbuffer.h thobjectname.h \ - therion.h thobjectsrc.h thdb3d.h thattr.h thchenc.h thchencdata.h \ - thscrap.h thdataobject.h thdatabase.h thdb2d.h thdb2dprj.h thmapstat.h \ - thdate.h thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h \ - thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h \ - thlayoutln.h thlayoutclr.h thscrapen.h thscraplp.h thtrans.h \ - th2ddataobject.h thpoint.h + thinfnan.h thdataleg.h thparse.h thbuffer.h thmbuffer.h thobjectname.h \ + therion.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h thchenc.h \ + thchencdata.h thscrap.h thdataobject.h thdatabase.h thdb2d.h \ + thdb2dprj.h thmapstat.h thdate.h thperson.h thlegenddata.h thdb2dpt.h \ + thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h thdb2dcp.h thdb2dxs.h \ + thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h thscrapen.h \ + thscraplp.h thtrans.h th2ddataobject.h thpoint.h thwarpp.o: thwarpp.cxx thwarpp.h thwarp.h thpic.h thsketch.h thwarppme.h \ - thwarppdef.h therion.h thtrans.h thinfnan.h thwarppt.h thdataobject.h \ - thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thdataleg.h \ - thparse.h thobjectname.h thobjectsrc.h thdb3d.h thattr.h thchenc.h \ - thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h thperson.h \ - thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h thdb2dmi.h \ - thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h thlayoutclr.h \ - thscrapen.h thscraplp.h thscrap.h th2ddataobject.h thpoint.h + thwarppdef.h therion.h thtrans.h thinfnan.h thwarppt.h thdataobject.h \ + thdatabase.h thmbuffer.h thbuffer.h thdb1d.h thobjectid.h thdataleg.h \ + thparse.h thobjectname.h thobjectsrc.h thdb3d.h loch/lxMath.h thattr.h \ + thchenc.h thchencdata.h thdb2d.h thdb2dprj.h thmapstat.h thdate.h \ + thperson.h thlegenddata.h thdb2dpt.h thdb2dlp.h thdb2dab.h thdb2dji.h \ + thdb2dmi.h thdb2dcp.h thdb2dxs.h thdb2dxm.h thscraplo.h thlayoutln.h \ + thlayoutclr.h thscrapen.h thscraplp.h thscrap.h th2ddataobject.h \ + thpoint.h thwarppme.o: thwarppme.cxx thinfnan.h thwarppme.h thwarppdef.h therion.h \ - thtrans.h + thtrans.h thwarppt.o: thwarppt.cxx thwarppt.h thtrans.h thinfnan.h thwarppme.h \ - thwarppdef.h therion.h + thwarppdef.h therion.h diff --git a/extern/img.c b/extern/img.c index 003a5b02..cff4f911 100644 --- a/extern/img.c +++ b/extern/img.c @@ -970,7 +970,8 @@ img_read_item(img *pimg, img_point *p) if (pimg->version < 7) { img_errno = IMG_BADFORMAT; return img_BAD; - } + } else { + int days1 = (int)getu16(pimg->fh); int days2 = (int)getu16(pimg->fh); #if IMG_API_VERSION == 0 @@ -980,7 +981,8 @@ img_read_item(img *pimg, img_point *p) pimg->days1 = days1; pimg->days2 = days2; #endif - break; + } + break; } case 0x24: { /* v7+: No date info */ #if IMG_API_VERSION == 0 diff --git a/extern/lxFile.cxx b/extern/lxFile.cxx deleted file mode 100644 index 1c2d4926..00000000 --- a/extern/lxFile.cxx +++ /dev/null @@ -1,1373 +0,0 @@ -#include "lxFile.h" - -// Standard libraries -#ifndef LXDEPCHECK -#include -#include -#include -#include -#include -#include - -#if defined LXWIN32 || defined LXMACOSX || defined THWIN32 || defined THMACOSX -#include "getline.h" -#endif - -#endif -//LXDEPCHECK - standart libraries - -#include "lxMath.h" -#include "img.h" - -#if defined LXWIN32 || defined THWIN32 -#define strcasecmp stricmp -#endif - - -lxFileSizeT lxFileSize::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(sizeof(uint32_t)); - *((uint32_t *)(ptr)) = (uint32_t) this->m_size; - lxFile::switchEndian(ptr, s); - ptr += s; - return s; -} - - -lxFileSizeT lxFileSize::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(sizeof(lxFileSizeT)); - this->m_size = (lxFileSizeT) *((uint32_t *)(ptr)); - lxFile::switchEndian((char *)(&this->m_size), s); - ptr += s; - return s; -} - - -lxFileSizeT lxFileDbl::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(sizeof(this->m_num)); - *((double *)(ptr)) = this->m_num; - lxFile::switchEndian(ptr, s); - ptr += s; - return s; -} - - -lxFileSizeT lxFileDbl::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(sizeof(this->m_num)); - this->m_num = *((double *)(ptr)); - lxFile::switchEndian((char *)(&this->m_num), s); - ptr += s; - return s; -} - - - -lxFileDataPtr::lxFileDataPtr() -{ - this->Clear(); -} - -void lxFileDataPtr::Clear() -{ - this->m_position = 0; - this->m_size = 0; -} - - -lxFileSizeT lxFileDataPtr::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_position.Save(ptr); - s += this->m_size.Save(ptr); - return s; -} - - -lxFileSizeT lxFileDataPtr::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_position.Load(ptr); - s += this->m_size.Load(ptr); - return s; -} - - -lxFileData::lxFileData() -{ - this->m_data = NULL; - this->m_size = 0; - this->m_buffSize = 0; -} - - -void lxFileData::Clear() -{ - if (this->m_data != NULL) - free(this->m_data); - this->m_data = NULL; - this->m_size = 0; - this->m_buffSize = 0; -} - -void lxFileData::Copy(lxFileSizeT size, const void * src) -{ - this->Clear(); - this->m_data = malloc(size); - this->m_size = size; - this->m_buffSize = size; - memcpy(this->m_data, src, size); -} - - -const void * lxFileData::GetData(lxFileDataPtr ptr) -{ - if (ptr.m_size <= 1) - return NULL; - else - return (void *)(&(((char *)this->m_data)[ptr.m_position])); -} - -FILE * lxFileData::GetTmpFile(lxFileDataPtr ptr) -{ - FILE * rf; - if (ptr.m_size <= 1) - return NULL; - rf = tmpfile(); - //rf = fopen("TMPFILE.JPG","wb"); - if (rf != NULL) { - fwrite(&(((char *)this->m_data)[ptr.m_position]), 1, ptr.m_size, rf); - fseek(rf, 0, SEEK_SET); - //fclose(rf); - //rf = fopen("TMPFILE.JPG","rb"); - } - return rf; -} - -const char * lxFileData::GetString(lxFileDataPtr ptr) -{ - if (ptr.m_size <= 1) - return ""; - else - return &(((char *)this->m_data)[ptr.m_position]); -} - -void lxFileData::BuffResize(lxFileSizeT size) -{ - lxFileSizeT nsize; - void * ndata; - - if (this->m_buffSize > 0) - nsize = this->m_buffSize; - else - nsize = 1024; - while (size >= nsize) nsize *= 2; - this->m_buffSize = nsize; - ndata = malloc(nsize); - if (this->m_size > 0) - memcpy(ndata, this->m_data, this->m_size); - free(this->m_data); - this->m_data = ndata; -} - - -lxFileDataPtr lxFileData::AppendStr(const char * str) -{ - lxFileDataPtr res; - lxFileSizeT strln; - if (str == NULL) - return res; - strln = strlen(str); - if (strln == 0) - return res; - return this->AppendData(str, strln + 1); -} - - -lxFileDataPtr lxFileData::AppendFile(const char * fnm) -{ - lxFileDataPtr res; - FILE * xf; - xf = fopen(fnm, "rb"); - if (xf != NULL) { - fseek(xf, 0, SEEK_END); - lxFileSizeT fsz = ftell(xf); - fseek(xf, 0, SEEK_SET); - if (fsz > 0) { - char * cdata = new char [fsz]; - fread((void *) cdata, 1, fsz, xf); - res = this->AppendData(cdata, fsz); - delete [] cdata; - } - fclose(xf); - } - return res; -} - - - -lxFileDataPtr lxFileData::AppendData(const void * data, lxFileSizeT size) -{ - lxFileDataPtr res; - if ((data == NULL) || (size == 0)) - return res; - if (this->m_buffSize < this->m_size + size) - this->BuffResize(this->m_size + size); - res.m_position = this->m_size; - res.m_size = size; - memcpy(&(((char *)this->m_data)[this->m_size]), data, size); - this->m_size += size; - return res; -} - - -lxFileStation::lxFileStation() -{ - this->m_flags = 0; -} - - -bool lxFileIsBigEndian() { - unsigned long i = 1; - const unsigned char * p = (const unsigned char *) &i; - return (p[0] != 1); -} - - -bool lxFile::m_bigEndian(lxFileIsBigEndian()); - - -void lxFile::switchEndian(char * data, lxFileSizeT size) -{ - if (m_bigEndian) { - char temp; - lxFileSizeT index, rindex, total; - total = size / 2; - for (index = 0; index < total; index++) { - rindex = size - index - 1; - temp = data[index]; - data[index] = data[rindex]; - data[rindex] = temp; - } - } -} - - -lxFileShot::lxFileShot() -{ - this->m_flags = 0; - this->m_threshold = 60.0; - this->m_sectionType = LXFILE_SHOT_SECTION_NONE; -} - -lxFile::lxFile() -{ - this->Clear(); -} - -lxFile::~lxFile() -{ - this->Clear(); -} - - -void lxFile::Clear() -{ - - this->m_surveys.clear(); - this->m_surveysData.Clear(); - this->m_nSurveys = 0; - - this->m_stations.clear(); - this->m_stationsData.Clear(); - this->m_nStations = 0; - - this->m_shots.clear(); - this->m_shotsData.Clear(); - - this->m_scraps.clear(); - this->m_scrapsData.Clear(); - - this->m_surfaces.clear(); - this->m_surfacesData.Clear(); - - this->m_surfaceBitmaps.clear(); - this->m_surfaceBitmapsData.Clear(); - -} - - -enum { - LXFILE_CHUNK_SURVEY = 1, - LXFILE_CHUNK_STATION = 2, - LXFILE_CHUNK_SHOT = 3, - LXFILE_CHUNK_SCRAP = 4, - LXFILE_CHUNK_SURFACE = 5, - LXFILE_CHUNK_SURFACEBMP = 6, -}; - - -struct lxFileChunkHdr { - lxFileSize m_type, m_recSize, m_recCount, m_dataSize; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -lxFileSizeT lxFileChunkHdr::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_type.Save(ptr); - s += this->m_recSize.Save(ptr); - s += this->m_recCount.Save(ptr); - s += this->m_dataSize.Save(ptr); - return s; -} - - - -lxFileSizeT lxFileChunkHdr::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_type.Load(ptr); - s += this->m_recSize.Load(ptr); - s += this->m_recCount.Load(ptr); - s += this->m_dataSize.Load(ptr); - return s; -} - - - - -lxFileSizeT lxFile3Point::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_c[0].Save(ptr); - s += this->m_c[1].Save(ptr); - s += this->m_c[2].Save(ptr); - return s; -} - - -lxFileSizeT lxFile3Angle::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_v[0].Load(ptr); - s += this->m_v[1].Load(ptr); - s += this->m_v[2].Load(ptr); - return s; -} - - -void lxFile::ExportLOX(const char * fn) -{ - - this->m_error.clear(); - - this->m_file = fopen(fn,"wb"); - if (this->m_file == NULL) { - this->m_error = "unable to open file for output"; - return; - } - - // write data - lxFileChunkHdr chunkHdr; - char * tmpPtr, * chunkHdrPtr, chunkHdrBuffer [sizeof(chunkHdr)]; - lxFileSizeT chunkHdrSize, tmpSize; - bool writeErr; - - writeErr = false; - lxFileSizeT x, size; - -#define lxFileExportItem(expID, expClass, expRecs, expData) \ - size = this->expRecs.size(); \ - if ((!writeErr) && (size > 0)) { \ - char * tmpData = new char [size * sizeof(expClass)]; \ - tmpPtr = tmpData; tmpSize = 0; \ - expClass##_list::iterator tmpIter = this->expRecs.begin(); \ - for (x = 0; x < size; x++) { \ - tmpSize += tmpIter->Save(tmpPtr); \ - tmpIter++; \ - } \ - chunkHdr.m_type = expID; \ - chunkHdr.m_recSize = tmpSize; \ - chunkHdr.m_recCount = size; \ - chunkHdr.m_dataSize = this->expData.m_size; \ - chunkHdrPtr = chunkHdrBuffer; \ - chunkHdrSize = chunkHdr.Save(chunkHdrPtr); \ - if (fwrite(&chunkHdrBuffer, chunkHdrSize, 1, this->m_file) != 1) \ - writeErr = true; \ - if (fwrite(tmpData, tmpSize, 1, this->m_file) != 1) \ - writeErr = true; \ - if (chunkHdr.m_dataSize > 0) \ - if (fwrite(this->expData.m_data, chunkHdr.m_dataSize, 1, this->m_file) != 1) \ - writeErr = true; \ - delete [] tmpData; \ - } - - lxFileExportItem(LXFILE_CHUNK_SURVEY, lxFileSurvey, m_surveys, m_surveysData); - lxFileExportItem(LXFILE_CHUNK_STATION, lxFileStation, m_stations, m_stationsData); - lxFileExportItem(LXFILE_CHUNK_SHOT, lxFileShot, m_shots, m_shotsData); - lxFileExportItem(LXFILE_CHUNK_SCRAP, lxFileScrap, m_scraps, m_scrapsData); - lxFileExportItem(LXFILE_CHUNK_SURFACE, lxFileSurface, m_surfaces, m_surfacesData); - lxFileExportItem(LXFILE_CHUNK_SURFACEBMP, lxFileSurfaceBitmap, m_surfaceBitmaps, m_surfaceBitmapsData); - - /* - size = this->m_surveys.size(); - if ((!writeErr) && (size > 0)) { - - lxFileSurvey * tmpData = new lxFileSurvey [size]; - lxFileSurvey_list::iterator tmpIter = this->m_surveys.begin(); - for (x = 0; x < size; x++) { - tmpData[x] = *tmpIter; - tmpIter++; - } - - chunkHdr.m_type = LXFILE_CHUNK_SURVEY; - chunkHdr.m_recSize = sizeof(lxFileSurvey); - chunkHdr.m_recCount = size; - chunkHdr.m_dataSize = this->m_surveysData.m_size; - - if (fwrite(&chunkHdr, sizeof(chunkHdr), 1, this->m_file) != 1) - writeErr = true; - - if (fwrite(tmpData, chunkHdr.m_recSize, size, this->m_file) != size) - writeErr = true; - - if (chunkHdr.m_dataSize > 0) - if (fwrite(this->m_surveysData.m_data, chunkHdr.m_dataSize, 1, this->m_file) != 1) - writeErr = true; - - delete [] tmpData; - } - */ - - fclose(this->m_file); - if (writeErr) - this->m_error = "error writing to file."; - -} - - -void lxFile::ImportLOX(const char * fn) -{ - this->m_error.clear(); - - this->m_file = fopen(fn,"rb"); - if (this->m_file == NULL) { - this->m_error = "unable to open file for input"; - return; - } - - lxFileChunkHdr chunkHdr; - lxFileSizeT i, orig_size, orig_survey_id, orig_station_id; - char * tmpPtr, * chunkHdrPtr, * tmpRecsData, chunkHdrBuffer [sizeof(chunkHdr)]; - lxFileSizeT chunkHdrSize; - - chunkHdrPtr = chunkHdrBuffer; - chunkHdrSize = chunkHdr.Save(chunkHdrPtr); - - orig_survey_id = 0; - for(lxFileSurvey_list::iterator itsurv = this->m_surveys.begin(); itsurv != this->m_surveys.end(); itsurv++) { - if (orig_survey_id < itsurv->m_id) - orig_survey_id = itsurv->m_id; - } - - orig_station_id = 0; - for(lxFileStation_list::iterator itstat = this->m_stations.begin(); itstat != this->m_stations.end(); itstat++) { - if (orig_station_id < itstat->m_id) - orig_station_id = itstat->m_id; - } - - bool readErr = false; - while ((!readErr) && (!feof(this->m_file)) && (fread(chunkHdrBuffer, chunkHdrSize, 1, this->m_file) == 1)) { - - chunkHdrPtr = chunkHdrBuffer; - chunkHdr.Load(chunkHdrPtr); - - switch (chunkHdr.m_type) { - - /* - case LXFILE_CHUNK_SURVEY: - if (chunkHdr.m_recCount > 0) { - orig_size = this->m_surveysData.m_size; - lxFileSurvey * tmpRecs = new lxFileSurvey [chunkHdr.m_recCount]; - if (fread(tmpRecs, sizeof(lxFileSurvey), chunkHdr.m_recCount, this->m_file) != chunkHdr.m_recCount) - readErr = true; - if ((!readErr) && (chunkHdr.m_dataSize > 0)) { - void * tmpData = malloc(chunkHdr.m_dataSize); - if (fread(tmpData, chunkHdr.m_dataSize, 1, this->m_file) != 1) - readErr = true; - else - this->m_surveysData.AppendData(tmpData, chunkHdr.m_dataSize); - free(tmpData); - } - if (!readErr) { - for(i = 0; i < chunkHdr.m_recCount; i++) { - tmpRecs[i].m_namePtr.m_position += orig_size; - tmpRecs[i].m_titlePtr.m_position += orig_size; - this->m_surveys.push_back(tmpRecs[i]); - } - } - delete [] tmpRecs; - } - break; - */ - -#define lxFileStartImportItem(impID, impClass, impData) \ - case impID: \ - if (chunkHdr.m_recCount > 0) { \ - orig_size = this->impData.m_size; \ - tmpRecsData = new char [chunkHdr.m_recSize]; \ - impClass tmpRec; \ - if (fread(tmpRecsData, chunkHdr.m_recSize, 1, this->m_file) != 1) \ - readErr = true; \ - if ((!readErr) && (chunkHdr.m_dataSize > 0)) { \ - void * tmpData = malloc(chunkHdr.m_dataSize); \ - if (fread(tmpData, chunkHdr.m_dataSize, 1, this->m_file) != 1) \ - readErr = true; \ - else \ - this->impData.AppendData(tmpData, chunkHdr.m_dataSize); \ - free(tmpData); \ - } \ - if (!readErr) { \ - tmpPtr = tmpRecsData; \ - for(i = 0; i < chunkHdr.m_recCount; i++) { \ - tmpRec.Load(tmpPtr); - -#define lxFileEndImportItem() \ - } \ - } \ - delete [] tmpRecsData; \ - } \ - break; - - lxFileStartImportItem(LXFILE_CHUNK_SURVEY, lxFileSurvey, m_surveysData) - tmpRec.m_id += orig_survey_id; - tmpRec.m_namePtr.m_position += orig_size; - tmpRec.m_titlePtr.m_position += orig_size; - this->m_surveys.push_back(tmpRec); - this->m_nSurveys++; - lxFileEndImportItem() - - lxFileStartImportItem(LXFILE_CHUNK_STATION, lxFileStation, m_stationsData) - tmpRec.m_id += orig_station_id; - tmpRec.m_surveyId += orig_survey_id; - tmpRec.m_namePtr.m_position += orig_size; - tmpRec.m_commentPtr.m_position += orig_size; - this->m_stations.push_back(tmpRec); - this->m_nStations++; - lxFileEndImportItem() - - lxFileStartImportItem(LXFILE_CHUNK_SHOT, lxFileShot, m_shotsData) - tmpRec.m_from += orig_station_id; - tmpRec.m_to += orig_station_id; - tmpRec.m_surveyId += orig_survey_id; - this->m_shots.push_back(tmpRec); - lxFileEndImportItem() - - lxFileStartImportItem(LXFILE_CHUNK_SCRAP, lxFileScrap, m_scrapsData) - tmpRec.m_pointsPtr.m_position += orig_size; - tmpRec.m_3AnglesPtr.m_position += orig_size; - tmpRec.m_surveyId += orig_survey_id; - this->m_scraps.push_back(tmpRec); - lxFileEndImportItem() - - lxFileStartImportItem(LXFILE_CHUNK_SURFACE, lxFileSurface, m_surfacesData) - tmpRec.m_dataPtr.m_position += orig_size; - this->m_surfaces.push_back(tmpRec); - lxFileEndImportItem() - - lxFileStartImportItem(LXFILE_CHUNK_SURFACEBMP, lxFileSurfaceBitmap, m_surfaceBitmapsData) - tmpRec.m_dataPtr.m_position += orig_size; - this->m_surfaceBitmaps.push_back(tmpRec); - lxFileEndImportItem() - - default: - readErr = true; - } - } - - fclose(this->m_file); -} - - -lxFileSizeT lxFile__SplitTokens(unsigned char * str, unsigned char ** tokens, lxFileSizeT max_tokens) -{ - lxFileSizeT nt = 0, sl, sp; - unsigned char * cc; - bool inside = false; - if ((str == NULL) || (max_tokens == 0)) - return 0; - sl = strlen((char *)str); - max_tokens--; - for (sp = 0, cc = str; (sp < sl) && (nt < max_tokens); sp++, cc++) { - if (inside && (*cc < 33)) { - *cc = 0; - inside = false; - nt++; - } else if ((!inside) && (*cc > 32)) { - inside = true; - tokens[nt] = cc; - } - } - return nt; -} - -bool lxFile__CheckLRUD(double & du, double & dd, double & dl, double & dr, double mv, double mh) { - if ((du <= 0.0) && (dd <= 0.0) && (dl <= 0.0) && (dr <= 0.0)) { - return false; - } else { - if (mv > 0.0) { - if (du < 0.0) du = mv; - if (dd < 0.0) dd = mv; - if (dl < 0.0) dl = mv; - if (dr < 0.0) dr = mv; - return true; - } else { - // LR - if ((du < 0.0) && (dd >= 0.0)) - du = dd; - if ((dd < 0.0) && (du >= 0.0)) - dd = du; - // UD - if ((dl < 0.0) && (dr >= 0.0)) - dl = dr; - if ((dr < 0.0) && (dl >= 0.0)) { - dr = dl; - if (dr > mh) dr = mh; - } - - if (du < 0.0) { - du = dd = (dl + dr) / 2.0; - } - if (dl < 0.0) { - dl = dr = (du + dd) / 2.0; - if (dr > mh) dr = mh; - } - return true; - } - } -} - - -lxFileSizeT lxFileSurvey::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Save(ptr); - s += this->m_namePtr.Save(ptr); - s += this->m_parent.Save(ptr); - s += this->m_titlePtr.Save(ptr); - return s; -} - - -lxFileSizeT lxFileSurvey::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Load(ptr); - s += this->m_namePtr.Load(ptr); - s += this->m_parent.Load(ptr); - s += this->m_titlePtr.Load(ptr); - return s; -} - - -lxFileSurvey * lxFile::NewSurvey() -{ - lxFileSurvey tmp; - tmp.m_id = this->m_nSurveys++; - this->m_surveys.push_back(tmp); - return &(this->m_surveys.back()); -} - - -lxFileStation * lxFile::NewStation() -{ - lxFileStation tmp; - tmp.m_id = this->m_nStations++; - this->m_stations.push_back(tmp); - return &(this->m_stations.back()); -} - - -lxFileShot * lxFile::NewShot() -{ - this->m_shots.push_back(lxFileShot()); - return &(this->m_shots.back()); -} - - -#define PltLrudNaN(x) {if ((x < 0.0) || (long(x*100) == 99900)) x = -999.0;} - - -void lxFile::ImportPLT(const char * fn) -{ - this->m_error.clear(); - char * prevlocale = setlocale(LC_NUMERIC,NULL); - setlocale(LC_NUMERIC,"C"); - - size_t lns; - char * lnp; - char ln[1024]; - lns = 1024; - lnp = &(ln[0]); - bool lrudOK, lrudOKPrev = false; - unsigned char * tok[16]; - lxFileDbl lrud[4], lrudPrev[4]; - lrudPrev[0] = lrudPrev[1] = lrudPrev[2] = lrudPrev[3] = -1.0; - lxFileSizeT nt; - - this->m_file = fopen(fn,"r"); - if (this->m_file == NULL) { - this->m_error = "unable to open file for input"; - return; - } - -#define tok2num(v, n) v = atof((const char *)tok[n]); - - lxFileSurvey * tmpSurvey; - lxFileShot * shPtr; - lxFileStation * stPtr, * stPtrPrev; - stPtrPrev = 0; - bool hasPT = false; - - char * sname = new char [strlen(fn)+1]; - int x, xx; - xx = 0; - for (x = (strlen(fn) - 1); x >= 0; x--) { - if ((fn[x] == '\\') || (fn[x] == '/')) { - xx = x + 1; - break; - } - } - for (x = xx; (x < int(strlen(fn))) && (strcasecmp(&(fn[x]),".PLT") != 0); x++) { - sname[x - xx] = fn[x]; - sname[x - xx + 1] = 0; - } - tmpSurvey = this->NewSurvey(); - tmpSurvey->m_namePtr = this->m_surveysData.AppendStr(sname); - delete [] sname; - - while (!feof(this->m_file)) { - getline(&lnp, &lns, this->m_file); - nt = lxFile__SplitTokens((unsigned char *) lnp, &(tok[0]), 16); - switch (*(tok[0])) { - case 'M': - case 'D': - if (!hasPT && (*(tok[0]) == 'D')) { - *(tok[0]) = 'M'; - } - tok2num(lrud[0],6);PltLrudNaN(lrud[0]); - tok2num(lrud[1],9);PltLrudNaN(lrud[1]); - tok2num(lrud[2],7);PltLrudNaN(lrud[2]); - tok2num(lrud[3],8);PltLrudNaN(lrud[3]); - lrudOK = lxFile__CheckLRUD(lrud[0], lrud[1], lrud[2], lrud[3], 2.0, 5.0); - if (lrudOK) { - lrud[0] *= 0.3048; - lrud[1] *= 0.3048; - lrud[2] *= 0.3048; - lrud[3] *= 0.3048; - } - stPtr = this->NewStation(); - tok2num(stPtr->m_c[0],2); - tok2num(stPtr->m_c[1],1); - tok2num(stPtr->m_c[2],3); - stPtr->m_c[0] *= 0.3048; - stPtr->m_c[1] *= 0.3048; - stPtr->m_c[2] *= 0.3048; - stPtr->m_surveyId = tmpSurvey->m_id; - hasPT = true; - if (*(tok[0]) == 'D') { - - shPtr = this->NewShot(); - shPtr->m_from = stPtrPrev->m_id; - shPtr->m_to = stPtr->m_id; - shPtr->m_fLRUD[0] = lrudPrev[0]; - shPtr->m_fLRUD[1] = lrudPrev[1]; - shPtr->m_fLRUD[2] = lrudPrev[2]; - shPtr->m_fLRUD[3] = lrudPrev[3]; - shPtr->m_tLRUD[0] = lrud[0]; - shPtr->m_tLRUD[1] = lrud[1]; - shPtr->m_tLRUD[2] = lrud[2]; - shPtr->m_tLRUD[3] = lrud[3]; - shPtr->m_surveyId = tmpSurvey->m_id; - - if (lrudOK && lrudOKPrev) { - shPtr->m_sectionType = LXFILE_SHOT_SECTION_OVAL; - } else { - shPtr->m_sectionType = LXFILE_SHOT_SECTION_NONE; - } - - } - lrudPrev[0] = lrud[0]; - lrudPrev[1] = lrud[1]; - lrudPrev[2] = lrud[2]; - lrudPrev[3] = lrud[3]; - lrudOKPrev = lrudOK; - stPtrPrev = stPtr; - break; - } - } - - fclose(this->m_file); - setlocale(LC_NUMERIC,prevlocale); -} - -struct imp3Dpos { - double x, y, z; - imp3Dpos(double xx, double yy, double zz) : x(xx), y(yy), z(zz) {} -}; - -bool operator < (const imp3Dpos & p1, - const imp3Dpos & p2) -{ - if (p1.x < p2.x) - return true; - if (p1.x > p2.x) - return false; - if (p1.y < p2.y) - return true; - if (p1.y > p2.y) - return false; - if (p1.z < p2.z) - return true; - return false; -} - - -void lxFile::Import3D(const char * fn) -{ - - this->m_error.clear(); - img_point imgpt; - img * pimg; - int result; - - bool lrudOK, lrudOKPrev = false; - lxFileDbl lrud[4], lrudPrev[4]; - lrudPrev[0] = lrudPrev[1] = lrudPrev[2] = lrudPrev[3] = -1.0; - - pimg = img_open(fn); - if (pimg == NULL) { - this->m_error = "unable to open file for input"; - return; - } - - lxFileSurvey * tmpSurvey; - lxFileShot * shPtr; - lxFileStation * stPtr, * stPtrPrev, * stPtrLRUD, * stPtrLRUDPrev; - stPtr = NULL; - stPtrPrev = NULL; - stPtrLRUDPrev = NULL; - bool hasPT = false; - - char * sname = new char [strlen(fn)+1]; - int x, xx; - xx = 0; - for (x = (strlen(fn) - 1); x >= 0; x--) { - if ((fn[x] == '\\') || (fn[x] == '/')) { - xx = x + 1; - break; - } - } - for (x = xx; (x < int(strlen(fn))) && (strcasecmp(&(fn[x]),".PLT") != 0); x++) { - sname[x - xx] = fn[x]; - sname[x - xx + 1] = 0; - } - tmpSurvey = this->NewSurvey(); - tmpSurvey->m_namePtr = this->m_surveysData.AppendStr(sname); - delete [] sname; - - int last_result; - std::map label_map; - std::map::iterator lmi; - std::map pos_map; - std::map::iterator pmi; - - // Create all stations with names - // Set HAS_WALLS flag if applicable - do { - result = img_read_item(pimg, &imgpt); - switch (result) { - case img_LABEL: - if (pimg->label != NULL) { - stPtr = this->NewStation(); - stPtr->m_c[0] = imgpt.x; - stPtr->m_c[1] = imgpt.y; - stPtr->m_c[2] = imgpt.z; - stPtr->m_surveyId = tmpSurvey->m_id; - label_map[std::string(pimg->label)] = stPtr; - pos_map[imp3Dpos(imgpt.x, imgpt.y, imgpt.z)] = stPtr; - } - break; - case img_XSECT: - lmi = label_map.find(pimg->label); - if (lmi != label_map.end()) { - stPtr = lmi->second; - stPtr->SetFlag(LXFILE_STATION_FLAG_HAS_WALLS, true); - } - break; - case img_BAD: - this->m_error = "invalid file format"; - return; - } - } while (result != img_STOP); - - img_rewind(pimg); - stPtr = NULL; - - do { - result = img_read_item(pimg, &imgpt); - switch (result) { - case img_MOVE: - case img_LINE: - if ((!hasPT) && (result == img_LINE)) { - result = img_MOVE; - } - pmi = pos_map.find(imp3Dpos(imgpt.x, imgpt.y, imgpt.z)); - if (pmi != pos_map.end()) { - stPtr = pmi->second; - } else { - stPtr = this->NewStation(); - stPtr->m_c[0] = imgpt.x; - stPtr->m_c[1] = imgpt.y; - stPtr->m_c[2] = imgpt.z; - stPtr->m_surveyId = tmpSurvey->m_id; - } - hasPT = true; - if (result == img_LINE) { - shPtr = this->NewShot(); - shPtr->m_from = stPtrPrev->m_id; - shPtr->m_to = stPtr->m_id; - shPtr->m_surveyId = tmpSurvey->m_id; - shPtr->m_sectionType = LXFILE_SHOT_SECTION_NONE; - if ((pimg->flags & img_FLAG_SURFACE) != 0) { - shPtr->SetFlag(LXFILE_SHOT_FLAG_SURFACE, true); - } - if ((pimg->flags & img_FLAG_DUPLICATE) != 0) { - shPtr->SetFlag(LXFILE_SHOT_FLAG_DUPLICATE, true); - } - if (stPtr->GetFlag(LXFILE_STATION_FLAG_HAS_WALLS) || stPtrPrev->GetFlag(LXFILE_STATION_FLAG_HAS_WALLS)) { - shPtr->SetFlag(LXFILE_SHOT_FLAG_NOT_LRUD, true); - } - } - stPtrPrev = stPtr; - last_result = result; - break; - - case img_XSECT: - lmi = label_map.find(pimg->label); - if (lmi != label_map.end()) { - stPtrLRUD = lmi->second; - lrud[0] = pimg->l; - lrud[1] = pimg->r; - lrud[2] = pimg->u; - lrud[3] = pimg->d; - lrudOK = lxFile__CheckLRUD(lrud[0], lrud[1], lrud[2], lrud[3], 2.0, 5.0); - if (lrudOK) { - stPtr->SetFlag(LXFILE_STATION_FLAG_HAS_WALLS, true); - } - if ((stPtrLRUDPrev != NULL) && lrudOK && lrudOKPrev) { - shPtr = this->NewShot(); - shPtr->m_from = stPtrLRUDPrev->m_id; - shPtr->m_to = stPtrLRUD->m_id; - shPtr->m_fLRUD[0] = lrudPrev[0]; - shPtr->m_fLRUD[1] = lrudPrev[1]; - shPtr->m_fLRUD[2] = lrudPrev[2]; - shPtr->m_fLRUD[3] = lrudPrev[3]; - shPtr->m_tLRUD[0] = lrud[0]; - shPtr->m_tLRUD[1] = lrud[1]; - shPtr->m_tLRUD[2] = lrud[2]; - shPtr->m_tLRUD[3] = lrud[3]; - shPtr->m_surveyId = tmpSurvey->m_id; - shPtr->m_sectionType = LXFILE_SHOT_SECTION_OVAL; - shPtr->SetFlag(LXFILE_SHOT_FLAG_NOT_VISIBLE, true); - shPtr->SetFlag(LXFILE_SHOT_FLAG_NOT_LRUD, true); - } - } else { - stPtrLRUD = NULL; - lrud[0] = lrud[1] = lrud[2] = lrud[3] = -999.0; - lrudOK = false; - lrud[0] = -999.0; - } - lrudPrev[0] = lrud[0]; - lrudPrev[1] = lrud[1]; - lrudPrev[2] = lrud[2]; - lrudPrev[3] = lrud[3]; - stPtrLRUDPrev = stPtrLRUD; - lrudOKPrev = lrudOK; - break; - - case img_XSECT_END: - stPtrLRUDPrev = NULL; - break; - case img_BAD: - this->m_error = "invalid file format"; - return; - } - - } while (result != img_STOP); - img_close(pimg); - -} - - - -struct missingShot { - lxFileSizeT f, t; - double length; -}; - - -struct missingStation { - lxVec position; - double average, sum, count; -}; - - -void lxFile::InterpolateMissingLRUD() -{ - - if (this->m_shots.size() == 0) return; - if (this->m_stations.size() == 0) return; - - std::map stmap; - std::vector osts; - std::vector stations; - std::list shots; - lxFileSizeT ns, i; - - - // 0. vytvorit vector originalnych stations - lxFileStation_list::iterator osti; - osts.resize(this->m_stations.size()); - for (osti = this->m_stations.begin(); osti != this->m_stations.end(); osti++) { - osts[osti->m_id] = &(*osti); - } - - - // 1. vytvorit zoznam identickych bodov a zamer medzi nimi - ns = 0; - std::list::iterator shi; - std::map::iterator stmi; - lxFileStation * st; - missingStation tst; - missingShot ts; - lxVec fp, tp; - for (shi = this->m_shots.begin(); shi != this->m_shots.end(); shi++) { - if (!(shi->GetFlag(LXFILE_SHOT_FLAG_SURFACE) || shi->GetFlag(LXFILE_SHOT_FLAG_DUPLICATE) || shi->GetFlag(LXFILE_SHOT_FLAG_NOT_VISIBLE) || shi->GetFlag(LXFILE_SHOT_FLAG_NOT_LRUD))) { - - // from - st = osts[shi->m_from]; - fp = lxVec(st->m_c[0],st->m_c[1],st->m_c[2]); - stmi = stmap.find(fp); - if (stmi == stmap.end()) { - ts.f = ns; - stmap[fp] = ts.f; - tst.position = fp; - stations.push_back(tst); - ns++; - } else { - ts.f = stmi->second; - } - - // to - st = osts[shi->m_to]; - tp = lxVec(st->m_c[0],st->m_c[1],st->m_c[2]); - stmi = stmap.find(tp); - if (stmi == stmap.end()) { - ts.t = ns; - stmap[tp] = ts.t; - ns++; - tst.position = tp; - stations.push_back(tst); - } else { - ts.t = stmi->second; - } - - ts.length = (tp - fp).Length(); - shots.push_back(ts); - } - } - - - // 2. zratat priemerne dlzky - if (ns == 0) return; - std::list::iterator shli; - for(i = 0; i < ns; i++) { - stations[i].sum = 0.0; - stations[i].count = 0.0; - } - for(shli = shots.begin(); shli != shots.end(); shli++) { - stations[shli->f].sum += shli->length; - stations[shli->f].count += 1.0; - stations[shli->t].sum += shli->length; - stations[shli->t].count += 1.0; - } - for(i = 0; i < ns; i++) { - stations[i].average = stations[i].sum / stations[i].count; - stations[i].sum = stations[i].average; - stations[i].count = 1.0; - } - - - // 3. urobit klzavy priemer - for(shli = shots.begin(); shli != shots.end(); shli++) { - stations[shli->f].sum += stations[shli->t].average; - stations[shli->t].sum += stations[shli->f].average; - stations[shli->f].count += 1.0; - stations[shli->t].count += 1.0; - } - double avg; - for(i = 0; i < ns; i++) { - avg = 0.25 * stations[i].sum / stations[i].count; - if (avg < 0.5) avg = 0.3048; - stations[i].average = avg; - } - - - // 4. interpolovat LRUD vsade kde ho nemame a neni surface - for (shi = this->m_shots.begin(); shi != this->m_shots.end(); shi++) { - if (!(shi->GetFlag(LXFILE_SHOT_FLAG_SURFACE) || shi->GetFlag(LXFILE_SHOT_FLAG_DUPLICATE) || shi->GetFlag(LXFILE_SHOT_FLAG_NOT_VISIBLE) || shi->GetFlag(LXFILE_SHOT_FLAG_NOT_LRUD))) { - if (shi->m_sectionType == LXFILE_SHOT_SECTION_NONE) { - shi->m_sectionType = LXFILE_SHOT_SECTION_OVAL; - st = osts[shi->m_from]; - fp = lxVec(st->m_c[0],st->m_c[1],st->m_c[2]); - i = stmap[fp]; - avg = stations[i].average; - shi->m_fLRUD[0] = avg; - shi->m_fLRUD[1] = avg; - shi->m_fLRUD[2] = avg; - shi->m_fLRUD[3] = lxMin(avg, 1.5); - st = osts[shi->m_to]; - tp = lxVec(st->m_c[0],st->m_c[1],st->m_c[2]); - i = stmap[tp]; - avg = stations[i].average; - shi->m_tLRUD[0] = avg; - shi->m_tLRUD[1] = avg; - shi->m_tLRUD[2] = avg; - shi->m_tLRUD[3] = lxMin(avg, 1.5); - } - } - } - -} - - -lxFileSizeT lxFileStation::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Save(ptr); - s += this->m_surveyId.Save(ptr); - s += this->m_namePtr.Save(ptr); - s += this->m_commentPtr.Save(ptr); - s += this->m_flags.Save(ptr); - s += this->m_c[0].Save(ptr); - s += this->m_c[1].Save(ptr); - s += this->m_c[2].Save(ptr); - return s; -} - - -lxFileSizeT lxFileStation::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Load(ptr); - s += this->m_surveyId.Load(ptr); - s += this->m_namePtr.Load(ptr); - s += this->m_commentPtr.Load(ptr); - s += this->m_flags.Load(ptr); - s += this->m_c[0].Load(ptr); - s += this->m_c[1].Load(ptr); - s += this->m_c[2].Load(ptr); - return s; -} - - -void lxFileStation::SetFlag(int flag, bool value) -{ - if (value) - this->m_flags |= flag; - else - this->m_flags &= ~flag; -} - - -bool lxFileStation::GetFlag(int flag) -{ - return ((this->m_flags & flag) != 0); -} - - - - -lxFileSizeT lxFileShot::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_from.Save(ptr); - s += this->m_to.Save(ptr); - s += this->m_fLRUD[0].Save(ptr); - s += this->m_fLRUD[1].Save(ptr); - s += this->m_fLRUD[2].Save(ptr); - s += this->m_fLRUD[3].Save(ptr); - s += this->m_tLRUD[0].Save(ptr); - s += this->m_tLRUD[1].Save(ptr); - s += this->m_tLRUD[2].Save(ptr); - s += this->m_tLRUD[3].Save(ptr); - s += this->m_flags.Save(ptr); - s += this->m_sectionType.Save(ptr); - s += this->m_surveyId.Save(ptr); - s += this->m_threshold.Save(ptr); - return s; -} - - -lxFileSizeT lxFileShot::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_from.Load(ptr); - s += this->m_to.Load(ptr); - s += this->m_fLRUD[0].Load(ptr); - s += this->m_fLRUD[1].Load(ptr); - s += this->m_fLRUD[2].Load(ptr); - s += this->m_fLRUD[3].Load(ptr); - s += this->m_tLRUD[0].Load(ptr); - s += this->m_tLRUD[1].Load(ptr); - s += this->m_tLRUD[2].Load(ptr); - s += this->m_tLRUD[3].Load(ptr); - s += this->m_flags.Load(ptr); - s += this->m_sectionType.Load(ptr); - s += this->m_surveyId.Load(ptr); - s += this->m_threshold.Load(ptr); - return s; -} - - -void lxFileShot::SetFlag(int flag, bool value) -{ - if (value) - this->m_flags |= flag; - else - this->m_flags &= ~flag; -} - - -bool lxFileShot::GetFlag(int flag) -{ - return ((this->m_flags & flag) != 0); -} - - -lxFileSizeT lxFileScrap::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Save(ptr); - s += this->m_surveyId.Save(ptr); - s += this->m_numPoints.Save(ptr); - s += this->m_pointsPtr.Save(ptr); - s += this->m_num3Angles.Save(ptr); - s += this->m_3AnglesPtr.Save(ptr); - return s; -} - - -lxFileSizeT lxFileScrap::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Load(ptr); - s += this->m_surveyId.Load(ptr); - s += this->m_numPoints.Load(ptr); - s += this->m_pointsPtr.Load(ptr); - s += this->m_num3Angles.Load(ptr); - s += this->m_3AnglesPtr.Load(ptr); - return s; -} - - -lxFileSizeT lxFileSurface::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Save(ptr); - s += this->m_width.Save(ptr); - s += this->m_height.Save(ptr); - s += this->m_dataPtr.Save(ptr); - s += this->m_calib[0].Save(ptr); - s += this->m_calib[1].Save(ptr); - s += this->m_calib[2].Save(ptr); - s += this->m_calib[3].Save(ptr); - s += this->m_calib[4].Save(ptr); - s += this->m_calib[5].Save(ptr); - return s; -} - - -lxFileSizeT lxFileSurface::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_id.Load(ptr); - s += this->m_width.Load(ptr); - s += this->m_height.Load(ptr); - s += this->m_dataPtr.Load(ptr); - s += this->m_calib[0].Load(ptr); - s += this->m_calib[1].Load(ptr); - s += this->m_calib[2].Load(ptr); - s += this->m_calib[3].Load(ptr); - s += this->m_calib[4].Load(ptr); - s += this->m_calib[5].Load(ptr); - return s; -} - - -lxFileSizeT lxFileSurfaceBitmap::Save(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_surfaceId.Save(ptr); - s += this->m_type.Save(ptr); - s += this->m_dataPtr.Save(ptr); - s += this->m_calib[0].Save(ptr); - s += this->m_calib[1].Save(ptr); - s += this->m_calib[2].Save(ptr); - s += this->m_calib[3].Save(ptr); - s += this->m_calib[4].Save(ptr); - s += this->m_calib[5].Save(ptr); - return s; -} - - -lxFileSizeT lxFileSurfaceBitmap::Load(lxFileBuff & ptr) -{ - lxFileSizeT s(0); - s += this->m_surfaceId.Load(ptr); - s += this->m_type.Load(ptr); - s += this->m_dataPtr.Load(ptr); - s += this->m_calib[0].Load(ptr); - s += this->m_calib[1].Load(ptr); - s += this->m_calib[2].Load(ptr); - s += this->m_calib[3].Load(ptr); - s += this->m_calib[4].Load(ptr); - s += this->m_calib[5].Load(ptr); - return s; -} - -bool lxFile::HasAnyWalls() -{ - if (this->m_scraps.size() > 0) - return true; - std::list::iterator shi; - for (shi = this->m_shots.begin(); shi != this->m_shots.end(); shi++) { - if (!(shi->GetFlag(LXFILE_SHOT_FLAG_SURFACE) || shi->GetFlag(LXFILE_SHOT_FLAG_DUPLICATE) || shi->GetFlag(LXFILE_SHOT_FLAG_NOT_LRUD))) { - if (shi->m_sectionType != LXFILE_SHOT_SECTION_NONE) { - return true; - } - } - } - return false; -} - - - - - diff --git a/extern/lxFile.h b/extern/lxFile.h deleted file mode 100644 index d9f63dcf..00000000 --- a/extern/lxFile.h +++ /dev/null @@ -1,272 +0,0 @@ -#ifndef lxFile_h -#define lxFile_h - -// Standard libraries -#ifndef LXDEPCHECK -#include -#include -#include -#endif -//LXDEPCHECK - standart libraries - - -typedef char * lxFileBuff; - -#ifdef THMSVC -#ifndef UINT32_MAX -# define UINT32_MAX (0xffffffffUL) -#endif -#ifndef uint32_t -#if (ULONG_MAX == UINT32_MAX) || defined (S_SPLINT_S) - typedef unsigned long uint32_t; -# define UINT32_C(v) v ## UL -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "l" -# endif -#elif (UINT_MAX == UINT32_MAX) - typedef unsigned int uint32_t; -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -# define UINT32_C(v) v ## U -#elif (USHRT_MAX == UINT32_MAX) - typedef unsigned short uint32_t; -# define UINT32_C(v) ((unsigned short) (v)) -# ifndef PRINTF_INT32_MODIFIER -# define PRINTF_INT32_MODIFIER "" -# endif -#else -#error "Platform not supported" -#endif -#endif -#else -#include -#endif - -#define lxFileSizeT uint32_t - - -struct lxFileSize { - lxFileSizeT m_size; - operator lxFileSizeT & () {return this->m_size;} - lxFileSizeT & operator = (const lxFileSizeT & right) {return this->m_size = right;} - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -struct lxFileDbl { - double m_num; - operator double & () {return this->m_num;} - double & operator = (const double & right) {return this->m_num = right;} - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -struct lxFileDataPtr { - lxFileSize m_position, m_size; - - lxFileDataPtr(); - void Clear(); - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - -struct lxFileData { - - void * m_data; - lxFileSizeT m_size, m_buffSize; - - lxFileData(); - void Clear(); - void Copy(lxFileSizeT size, const void * src); - void BuffResize(lxFileSizeT size); - const void * GetData(lxFileDataPtr ptr); - const char * GetString(lxFileDataPtr ptr); - FILE * GetTmpFile(lxFileDataPtr ptr); - lxFileDataPtr AppendStr(const char * str); - lxFileDataPtr AppendData(const void * data, lxFileSizeT size); - lxFileDataPtr AppendFile(const char * fnm); - -}; - - -struct lxFile3Point { - lxFileDbl m_c[3]; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -struct lxFile3Angle { - lxFileSize m_v[3]; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -struct lxFileSurvey { - lxFileSize m_id, m_parent; - lxFileDataPtr m_namePtr, m_titlePtr; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -typedef std::list lxFileSurvey_list; - - -enum { - LXFILE_STATION_FLAG_SURFACE = 1, - LXFILE_STATION_FLAG_ENTRANCE = 2, - LXFILE_STATION_FLAG_FIXED = 4, - LXFILE_STATION_FLAG_CONTINUATION = 8, - LXFILE_STATION_FLAG_HAS_WALLS = 16, -}; - - -struct lxFileStation { - lxFileSize m_id, m_surveyId; - lxFileDataPtr m_namePtr, m_commentPtr; - lxFileSize m_flags; - lxFileDbl m_c[3]; - - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); - void SetFlag(int flag, bool value); - bool GetFlag(int flag); - lxFileStation(); -}; - - -typedef std::list lxFileStation_list; - - -enum { - LXFILE_SHOT_FLAG_SURFACE = 1, - LXFILE_SHOT_FLAG_DUPLICATE = 2, - LXFILE_SHOT_FLAG_NOT_VISIBLE = 4, - LXFILE_SHOT_FLAG_NOT_LRUD = 8, - LXFILE_SHOT_FLAG_SPLAY = 8, -}; - - -enum { - LXFILE_SHOT_SECTION_NONE, - LXFILE_SHOT_SECTION_OVAL, - LXFILE_SHOT_SECTION_SQUARE, - LXFILE_SHOT_SECTION_DIAMOND, - LXFILE_SHOT_SECTION_TUNNEL, -}; - - -struct lxFileShot { - lxFileSize m_from, m_to, m_surveyId; - lxFileDbl m_fLRUD[4], m_tLRUD[4]; - lxFileDbl m_threshold; - lxFileSize m_flags, m_sectionType; - - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); - void SetFlag(int flag, bool value); - bool GetFlag(int flag); - lxFileShot(); -}; - - -typedef std::list lxFileShot_list; - - -struct lxFileScrap { - lxFileSize m_id, m_surveyId; - lxFileDataPtr m_pointsPtr, m_3AnglesPtr; - lxFileSize m_numPoints, m_num3Angles; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - -typedef std::list lxFileScrap_list; - - -struct lxFileSurface { - lxFileSize m_id; - lxFileSize m_width, m_height; - lxFileDbl m_calib[6]; - lxFileDataPtr m_dataPtr; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -typedef std::list lxFileSurface_list; - - -enum { - LXFILE_BITMAP_JPEG, - LXFILE_BITMAP_PNG, -}; - -struct lxFileSurfaceBitmap { - lxFileSize m_surfaceId; - lxFileSize m_type; - lxFileDbl m_calib[6]; - lxFileDataPtr m_dataPtr; - lxFileSizeT Save(lxFileBuff & ptr); - lxFileSizeT Load(lxFileBuff & ptr); -}; - - -typedef std::list lxFileSurfaceBitmap_list; - - -struct lxFile { - - static bool m_bigEndian; - - lxFileSurvey_list m_surveys; - lxFileData m_surveysData; - lxFileSizeT m_nSurveys; - - lxFileStation_list m_stations; - lxFileData m_stationsData; - lxFileSizeT m_nStations; - - lxFileShot_list m_shots; - lxFileData m_shotsData; - - lxFileScrap_list m_scraps; - lxFileData m_scrapsData; - - lxFileSurface_list m_surfaces; - lxFileData m_surfacesData; - - lxFileSurfaceBitmap_list m_surfaceBitmaps; - lxFileData m_surfaceBitmapsData; - - std::string m_error; - FILE * m_file; - - static void switchEndian(char * data, lxFileSizeT size); - - void ImportLOX(const char * fn); - void ExportLOX(const char * fn); - - void Import3D(const char * fn); - void ImportPLT(const char * fn); - - lxFile(); - ~lxFile(); - - void Clear(); - bool HasAnyWalls(); - void InterpolateMissingLRUD(); - lxFileSurvey * NewSurvey(); - lxFileStation * NewStation(); - lxFileShot * NewShot(); - -}; - -#endif - - diff --git a/extern/lxMath.cxx b/extern/lxMath.cxx deleted file mode 100644 index 9b0821c0..00000000 --- a/extern/lxMath.cxx +++ /dev/null @@ -1,464 +0,0 @@ -/** - * @file lxMath.cxx - * Loch math implementation. - */ - -/* Copyright (C) 2004 Stacho Mudrak - * - * $Date: $ - * $RCSfile: $ - * $Revision: $ - * - * -------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * -------------------------------------------------------------------- - */ - -// Standard libraries -#ifndef LXDEPCHECK -#include -#endif -//LXDEPCHECK - standart libraries - -#include "lxMath.h" - - -void lxVec::Normalize() -{ - double n = this->Length(); - if (n > 0.0) { - this->x /= n; - this->y /= n; - this->z /= n; - } -} - - -double lxVec::Norm() { - return (this->x * this->x + this->y * this->y + this->z * this->z); -} - - -double lxVec::Length() { - return sqrt(this->x * this->x + this->y * this->y + this->z * this->z); -} - - -double lxVec::Azimuth() -{ - return atan2(this->x, this->y) / lxPI * 180.0; -} - - -double lxVec::Inclination() -{ - return atan2(this->z, sqrt(this->x * this->x + this->y * this->y)) / lxPI * 180.0; -} - - -lxVec operator + ( const lxVec& p, const lxVec& q ) -{ - return lxVec(p.x + q.x, p.y + q.y, p.z + q.z); -} - - -lxVec operator - ( const lxVec& p, const lxVec& q ) -{ - return lxVec(p.x - q.x, p.y - q.y, p.z - q.z); -} - - -double operator * ( const lxVec& p, const lxVec& q ) -{ - return (p.x * q.x + p.y * q.y + p.z * q.z); -} - - -lxVec operator * ( const double& c, const lxVec& q ) -{ - return lxVec(c * q.x, c * q.y, c * q.z); -} - - -lxVec operator / ( const lxVec& p, const double& c) -{ - return (c != 0.0 ? lxVec(p.x / c, p.y / c, p.z / c) : lxVec()); -} - - -lxVec operator ^ ( const lxVec& p, const lxVec& q ) -{ - return lxVec(p.y * q.z - p.z * q.y, - p.z * q.x - p.x * q.z, p.x * q.y - p.y * q.x); -} - - -void lxVecLimits::Add(double a, double b, double c) -{ - -#define lxVecLimAddSet(par) this->par = lxVec(a, b, c) - - if (this->valid) { - - if (this->min.x > a) { - this->min.x = a; - lxVecLimAddSet(xmin); - } - if (this->max.x < a) { - this->max.x = a; - lxVecLimAddSet(xmax); - } - - if (this->min.y > b) { - this->min.y = b; - lxVecLimAddSet(ymin); - } - if (this->max.y < b) { - this->max.y = b; - lxVecLimAddSet(xmax); - } - - if (this->min.z > c) { - this->min.z = c; - lxVecLimAddSet(zmin); - } - if (this->max.z < c) { - this->max.z = c; - lxVecLimAddSet(zmax); - } - - } else { - - lxVecLimAddSet(min); - lxVecLimAddSet(max); - lxVecLimAddSet(xmin); - lxVecLimAddSet(xmax); - lxVecLimAddSet(ymin); - lxVecLimAddSet(ymax); - lxVecLimAddSet(zmin); - lxVecLimAddSet(zmax); - this->valid = true; - - } -} - - -lxVec lxPol2Vec(const double l, const double a, const double i) -{ - return lxVec( - l * cos(i / 180.0 * lxPI) * sin(a / 180.0 * lxPI), - l * cos(i / 180.0 * lxPI) * cos(a / 180.0 * lxPI), - l * sin(i / 180.0 * lxPI) - ); -} - - -lxVec lxVec::Rotated(double a, double i) { - double sa = sin(a / 180.0 * lxPI), - ca = cos(a / 180.0 * lxPI), - si = sin(i / 180.0 * lxPI), - ci = cos(i / 180.0 * lxPI); - - return lxVec( - this->x * ca - this->y * sa , - this->x * ci * sa + this->y * ca * ci - this->z * si, - this->x * si * sa + this->y * si * ca + this->z * ci - ); -} - -lxVec lxVecLimits::Vertex(int v) { - switch (v) { - case 0: return this->min; - case 1: return lxVec(this->max.x, this->min.y, this->min.z); - case 2: return lxVec(this->max.x, this->max.y, this->min.z); - case 3: return lxVec(this->min.x, this->max.y, this->min.z); - case 4: return lxVec(this->min.x, this->min.y, this->max.z); - case 5: return lxVec(this->max.x, this->min.y, this->max.z); - case 6: return this->max; - default: return lxVec(this->min.x, this->max.y, this->max.z); - } -} - -lxVecLimits lxVecLimits::Rotate(double a, double i, lxVec c) -{ - lxVecLimits result; - lxVec mymin = this->min - c; - lxVec mymax = this->max - c; - result.Add(mymin.Rotated(a,i)); - result.Add(lxVec(mymin.x, mymin.y, mymax.z).Rotated(a,i)); - result.Add(lxVec(mymin.x, mymax.y, mymin.z).Rotated(a,i)); - result.Add(lxVec(mymax.x, mymin.y, mymin.z).Rotated(a,i)); - result.Add(lxVec(mymax.x, mymin.y, mymax.z).Rotated(a,i)); - result.Add(lxVec(mymax.x, mymax.y, mymin.z).Rotated(a,i)); - result.Add(lxVec(mymin.x, mymax.y, mymax.z).Rotated(a,i)); - result.Add(mymax.Rotated(a,i)); - return result; -} - - -lxVec lxVec::operator += ( const lxVec& v) -{ - *this = lxVec(this->x + v.x, this->y + v.y, this->z + v.z); - return *this; -} - -lxVec lxVec::operator -= ( const lxVec& v) -{ - *this = lxVec(this->x - v.x, this->y - v.y, this->z - v.z); - return *this; -} - -lxVec lxVec::operator *= ( const double& c) -{ - *this = lxVec(this->x * c, this->y * c, this->z * c); - return *this; -} - -lxVec lxVec::operator /= ( const double& c) -{ - *this = lxVec(this->x / c, this->y / c, this->z / c); - return *this; -} - -bool operator < (const struct lxVec & p, const struct lxVec & q) -{ - if (p.x < q.x) - return true; - if (p.x > q.x) - return false; - if (p.y < q.y) - return true; - if (p.y > q.y) - return false; - if (p.z < q.z) - return true; - return false; -} - - -bool operator == ( const lxVec& p, const lxVec& q ) -{ - if ((!(p < q)) && (!(q < p))) - return true; - else - return false; -} - - -bool operator != ( const lxVec& p, const lxVec& q ) -{ - return !(p == q); -} - - - -bool operator < ( const lxTriGeomPoint& p, const lxTriGeomPoint& q ) -{ - if (p.p < q.p) - return true; - if (q.p < p.p) - return false; - if (p.n < q.n) - return true; - else - return false; -} - - -void lxVecLimits::Add(lxVec v) -{ - this->Add(lxVecXYZ(v)); -} - - -lxVec lxVecAbs(lxVec v) -{ - return lxVec(fabs(v.x), fabs(v.y), fabs(v.z)); -} - - -size_t lxTriGeom::InsertPoint(lxTriGeomPoint p) -{ - size_t rv; - std::map::iterator i; - i = this->m_points.find(p); - if (i == this->m_points.end()) { - rv = this->m_nPoints; - this->m_positions.push_back(p); - this->m_nPoints++; - this->m_points[p] = rv; - } else { - rv = i->second; - } - return rv; -} - - -void lxTriGeom::Clear() -{ - this->m_nPoints = 0; - this->m_points.clear(); - this->m_positions.clear(); - this->m_triangles.clear(); - this->m_geometry.clear(); -} - - -lxTriGeom3Angle::lxTriGeom3Angle(size_t vv1, size_t vv2, size_t vv3) -{ - this->v1 = vv1; - this->v2 = vv2; - this->v3 = vv3; -} - - -bool lxTriGeom::Insert3Angle(lxTriGeomPoint p1, lxTriGeomPoint p2, lxTriGeomPoint p3) -{ - size_t v1, v2, v3; - v1 = this->InsertPoint(p1); - v2 = this->InsertPoint(p2); - v3 = this->InsertPoint(p3); - if ((p1.p != p2.p) && (p2.p != p3.p) && (p1.p != p3.p)) { - this->m_triangles.push_back(lxTriGeom3Angle(v1, v2, v3)); - return true; - } else { - return false; - } -} - - -bool lxTriGeom::Insert4Angle(lxTriGeomPoint p1, lxTriGeomPoint p2, lxTriGeomPoint p3, lxTriGeomPoint p4) -{ - bool i1, i2; - i1 = this->Insert3Angle(p1, p2, p3); - i2 = this->Insert3Angle(p4, p3, p2); - return (i1 && i2); -} - - -size_t lxTriGeom::GetNPoints() -{ - return this->m_nPoints; -} - - -lxTriGeomPoint lxTriGeom::GetPoint(size_t i) -{ - return this->m_positions[i]; -} - - -size_t lxTriGeom::GetNTriangles() -{ - this->m_geometry.clear(); - std::list::iterator i; - for(i = this->m_triangles.begin(); i != this->m_triangles.end(); i++) { - this->m_geometry.push_back(*i); - } - return this->m_geometry.size(); -} - - -lxTriGeom3Angle lxTriGeom::GetTriangle(size_t i) -{ - return this->m_geometry[i]; -} - - -void lxPlane::Init(lxVec pt, lxVec norm) -{ - norm.Normalize(); - this->m_normal = norm; - this->m_point = pt; - this->m_delta = -1.0 * (this->m_normal * this->m_point); -} - - -double lxPlane::CalcPosition(lxVec pt) -{ - return (pt * this->m_normal + this->m_delta); -} - - -bool lxPlane::CalcIntersection(lxVec fp, lxVec tp, lxVec & tgt) -{ - lxVec d = (tp - fp); - double y = (this->m_normal * d); - if (y == 0.0) - return false; - else { - y = ((this->m_normal * fp + this->m_delta) / y); - tgt = fp - y * d; - if (y > 0.0) - return false; - else - return true; - } -} - - -void lxTriGeom::Append(lxTriGeom * src) -{ - - lxTriGeomPoint pp; - lxTriGeom3Angle tt; - size_t sn, sx, i; - sn = src->GetNPoints(); - sx = this->m_nPoints; - - for(i = 0; i < sn; i++) { - pp = src->GetPoint(i); - this->m_nPoints++; - this->m_positions.push_back(pp); - this->m_points[pp] = sx + i; - } - - sn = src->GetNTriangles(); - for(i = 0; i < sn; i++) { - tt = src->GetTriangle(i); - tt.v1 += sx; - tt.v2 += sx; - tt.v3 += sx; - this->m_triangles.push_back(tt); - } - -} - - -lxVec lxCalcNormal4(lxVec v1, lxVec v2, lxVec v3, lxVec vN) -{ - v1 = vN - v1; - v2 = vN - v2; - v3 = vN - v3; - v1 = v1 ^ (-1.0 * v2); - v3 = v3 ^ v2; - v1.Normalize(); - v3.Normalize(); - vN = v1 + v3; - vN.Normalize(); - return vN; -} - - -lxVec lxCalcNormal5(lxVec v1, lxVec v2, lxVec v3, lxVec v4, lxVec vN) -{ - v2 = lxCalcNormal4(v1, v2, v3, vN); - v4 = lxCalcNormal4(v3, v4, v1, vN); - vN = v2 + v4; - vN.Normalize(); - return vN; -} - - diff --git a/extern/lxMath.h b/extern/lxMath.h deleted file mode 100644 index e1fdc179..00000000 --- a/extern/lxMath.h +++ /dev/null @@ -1,146 +0,0 @@ -/** - * @file lxMath.h - * Loch mathematics module. - */ - -/* Copyright (C) 2004 Stacho Mudrak - * - * $Date: $ - * $RCSfile: $ - * $Revision: $ - * - * -------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * -------------------------------------------------------------------- - */ - -#ifndef lxMath_h -#define lxMath_h - -// Standard libraries -#ifndef LXDEPCHECK -#include -#include -#include -#endif -//LXDEPCHECK - standart libraries - -#define lxPI 3.1415926535898 -extern double lxVecPrec; - -struct lxVec { - - double x, y, z; - - lxVec() : x(0.0), y(0.0), z(0.0) {}; - - lxVec(double a, double b, double c) : x(a), y(b), z(c) {}; - - double Length(); - double Azimuth(); - double Inclination(); - - double Norm(); - - void Normalize(); - - lxVec operator += ( const lxVec& v); - lxVec operator -= ( const lxVec& v); - lxVec operator *= ( const double& c); - lxVec operator /= ( const double& c); - - lxVec Rotated(double a, double i); - -}; - - -lxVec operator + ( const lxVec& p, const lxVec& q ); -lxVec operator - ( const lxVec& p, const lxVec& q ); -double operator * ( const lxVec& p, const lxVec& q ); -lxVec operator * ( const double& c, const lxVec& q ); -lxVec operator / ( const lxVec& p, const double& c); -lxVec operator ^ ( const lxVec& p, const lxVec& q ); -bool operator < ( const lxVec& p, const lxVec& q ); -bool operator == ( const lxVec& p, const lxVec& q ); -bool operator != ( const lxVec& p, const lxVec& q ); -lxVec lxPol2Vec(const double l, const double a, const double i); -lxVec lxVecAbs(lxVec v); -lxVec lxCalcNormal4(lxVec v1, lxVec v2, lxVec v3, lxVec vN); -lxVec lxCalcNormal5(lxVec v1, lxVec v2, lxVec v3, lxVec v4, lxVec vN); - -struct lxVecLimits { - lxVec min, max, xmin, xmax, ymin, ymax, zmin, zmax; - bool valid; - lxVecLimits() : valid(false) {}; - void Add(double a, double b, double c); - void Add(lxVec v); - lxVecLimits Rotate(double a, double i, lxVec c); - lxVec Vertex(int v); -}; - - -struct lxTriGeomPoint { - lxVec p, n; - operator lxVec & () {return this->p;} - const lxVec & operator = (const lxVec q) {this->p = q; return this->p;} -}; - - -bool operator < ( const lxTriGeomPoint& p, const lxTriGeomPoint& q ); - - -struct lxTriGeom3Angle { - size_t v1, v2, v3; - lxTriGeom3Angle() : v1(0), v2(0), v3(0) {} - lxTriGeom3Angle(size_t vv1, size_t vv2, size_t vv3); -}; - - -struct lxTriGeom { - size_t m_nPoints; - std::map m_points; - std::vector m_positions; - std::list m_triangles; - std::vector m_geometry; - void Clear(); - void Append(lxTriGeom * src); - size_t InsertPoint(lxTriGeomPoint p); - bool Insert3Angle(lxTriGeomPoint p1, lxTriGeomPoint p2, lxTriGeomPoint p3); - bool Insert4Angle(lxTriGeomPoint p1, lxTriGeomPoint p2, lxTriGeomPoint p3, lxTriGeomPoint p4); - size_t GetNPoints(); - lxTriGeomPoint GetPoint(size_t i); - size_t GetNTriangles(); - lxTriGeom3Angle GetTriangle(size_t i); - lxTriGeom() : m_nPoints(0) {} -}; - - -struct lxPlane { - lxVec m_point, m_normal; - double m_delta; - void Init(lxVec pt, lxVec norm); - double CalcPosition(lxVec pt); - bool CalcIntersection(lxVec fp, lxVec tp, lxVec & tgt); -}; - - -#define lxVecXYZ(vec) (vec).x, (vec).y, (vec).z -#define lxMax(a,b) ((a) > (b) ? (a) : (b)) -#define lxMin(a,b) ((a) < (b) ? (a) : (b)) -#define lxShiftVecPXYZ(v,s) ((v)->x - (s).x), ((v)->y - (s).y), ((v)->z - (s).z) -#define lxShiftVecXYZ(v,s) ((v).x - (s).x), ((v).y - (s).y), ((v).z - (s).z) -#define lxShiftVecX3(v,s) (v[0] - (s).x), (v[1] - (s).y), (v[2] - (s).z) - -#endif diff --git a/extern/poly2tri/sweep/sweep_context.h b/extern/poly2tri/sweep/sweep_context.h index 0484fb53..f58cc589 100644 --- a/extern/poly2tri/sweep/sweep_context.h +++ b/extern/poly2tri/sweep/sweep_context.h @@ -32,6 +32,7 @@ #ifndef SWEEP_CONTEXT_H #define SWEEP_CONTEXT_H +#include #include #include diff --git a/loch/lxLRUD.cxx b/loch/lxLRUD.cxx index d916946d..4773511a 100644 --- a/loch/lxLRUD.cxx +++ b/loch/lxLRUD.cxx @@ -10,6 +10,7 @@ #endif //LXDEPCHECK - standart libraries +static const double lxVecPrec = 0.01; long lxLRUDData::GetStationID(lxVec pos, bool insert) { diff --git a/loch/lxMath.cxx b/loch/lxMath.cxx index 0a10adb9..9b0821c0 100644 --- a/loch/lxMath.cxx +++ b/loch/lxMath.cxx @@ -35,9 +35,6 @@ #include "lxMath.h" -double lxVecPrec(0.001); - - void lxVec::Normalize() { double n = this->Length(); @@ -235,21 +232,17 @@ lxVec lxVec::operator /= ( const double& c) return *this; } -bool operator < ( const lxVec& p, const lxVec& q ) +bool operator < (const struct lxVec & p, const struct lxVec & q) { - static lxVec d; - d = p - q; - if (d.x > lxVecPrec) - return false; - else if (d.x < -lxVecPrec) + if (p.x < q.x) return true; - if (d.y > lxVecPrec) + if (p.x > q.x) return false; - else if (d.y < -lxVecPrec) + if (p.y < q.y) return true; - if (d.z > lxVecPrec) + if (p.y > q.y) return false; - else if (d.z < -lxVecPrec) + if (p.z < q.z) return true; return false; } diff --git a/loch/lxMath.h b/loch/lxMath.h index e1fdc179..cb5ee62a 100644 --- a/loch/lxMath.h +++ b/loch/lxMath.h @@ -31,6 +31,7 @@ // Standard libraries #ifndef LXDEPCHECK +#include #include #include #include @@ -38,7 +39,6 @@ //LXDEPCHECK - standart libraries #define lxPI 3.1415926535898 -extern double lxVecPrec; struct lxVec { diff --git a/makeunixify.tcl b/makeunixify.tcl index 63422661..30c9719c 100644 --- a/makeunixify.tcl +++ b/makeunixify.tcl @@ -15,7 +15,7 @@ proc procdir {dir} { proc dos2unix {fnm} { set doit 0 - if {[regexp {\.(c|cxx|h|tcl|svx|th|thcfg|th2|thc|cof|xpm|txt|pl|mp|tex|TXT|sty|usr|enc|htm|xvi)$} $fnm]} { + if {[regexp {\.(c|cxx|h|tcl|svx|th|ini|thcfg|th2|thc|cof|xpm|txt|pl|mp|tex|TXT|sty|usr|enc|htm|xvi)$} $fnm]} { set doit 1 } elseif {[regexp {(Makefile|TODO\.\w|README|COPYING|CHANGES|thconfig|thconfig\..*)$} $fnm]} { set doit 1 diff --git a/thbezier.cxx b/thbezier.cxx index ec8e824e..c1069721 100644 --- a/thbezier.cxx +++ b/thbezier.cxx @@ -46,9 +46,9 @@ */ #include "thbezier.h" -#include -#include -#include +#include +#include +#include #define __SP_BEZIER_UTILS_C__ @@ -1367,11 +1367,9 @@ thbezier_segment * thbezier_curve::get_next_segment() void thbezier_curve::copy_polyline(struct thbezier_polyline * line, double err) { this->clear(); - // TODO: polyline 2 bezier conversion - size_t i, max = line->get_length(); long nbp; - if (max < 1) + if (max < 3) return; NR_Point * poly, * bezier; @@ -1382,7 +1380,18 @@ void thbezier_curve::copy_polyline(struct thbezier_polyline * line, double err) poly[i][0] = p->m_x; poly[i][1] = p->m_y; } - nbp = (long) sp_bezier_fit_cubic_r(bezier, poly, (long) max, err, (unsigned int)max); + NR_Point stan(0, 0), etan(0,0); + if ((poly[0][0] == poly[max-1][0]) && (poly[0][1] == poly[max-1][1])) { + stan = NR_Point(poly[1][0] - poly[0][0], poly[1][1] - poly[0][1]); + stan.normalize(); + etan = NR_Point(poly[max-1][0] - poly[max-2][0], poly[max-1][1] - poly[max-2][1]); + etan.normalize(); + stan += etan; + if (is_zero(stan)) stan = etan; + else stan.normalize(); + } + //nbp = (long) sp_bezier_fit_cubic_r(bezier, poly, (long) max, err, (unsigned int)max); + nbp = (long) sp_bezier_fit_cubic_full(bezier, NULL, poly, (long) max, stan, -stan, err, (unsigned int)max); thbezier_segment * s; s = this->insert_segment(); s->m_p = thbezier_point(bezier[0][0], bezier[0][1]); @@ -1439,3 +1448,37 @@ void thbezier_polyline::copy_curve(struct thbezier_curve * curve, double err) // TODO: bezier 2 polyline conversion } + +void thbezier_main() { + + FILE * fin, * fout; + + fin = fopen("therion.bci","r"); + double x, y, px(0.0), py(0.0); + bool xfirst(true); + thbezier_polyline line; + thbezier_curve curve; + thbezier_point * pt; + while (fscanf(fin,"%lf%lf",&x,&y) == 2) { + if ((xfirst) || (x != px) || (y != py)) { + pt = line.insert_point(); + pt->m_x = px = x; + pt->m_y = py = y; + pt->m_valid = true; + } + xfirst = false; + } + fclose(fin); + if (line.m_points.size() < 3) return; + + curve.copy_polyline(&line, 2.0); + thbezier_segment *s; + fout = fopen("therion.bco","w"); + s = curve.get_first_segment(); + fprintf(fout, "%.2lf %.2lf\n", s->m_p.m_x, s->m_p.m_y); + for(s = curve.get_next_segment(); s != NULL; s = curve.get_next_segment()) { + fprintf(fout, "%.2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n",s->m_cp1.m_x, s->m_cp1.m_y, s->m_cp2.m_x, s->m_cp2.m_y, s->m_p.m_x, s->m_p.m_y); + } + fclose(fout); + +} diff --git a/thbezier.h b/thbezier.h index 81da3961..5f44a204 100644 --- a/thbezier.h +++ b/thbezier.h @@ -29,10 +29,12 @@ #ifndef thbezier_h #define thbezier_h +#include #include #include + struct thbezier_point { double m_x, m_y, m_z; bool m_valid; @@ -71,6 +73,7 @@ struct thbezier_polyline { void copy_curve(struct thbezier_curve * curve, double err); }; +void thbezier_main(); #endif diff --git a/thbook/etc/contents.tex b/thbook/etc/contents.tex index 3e471e70..0efcfd3e 100644 --- a/thbook/etc/contents.tex +++ b/thbook/etc/contents.tex @@ -1,97 +1,116 @@ -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 5 {/Fit} \bf Introduction\bodky\ 5\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 5 {/Fit} Why Therion?\bodky\ 5\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 6 {/Fit} Features\bodky\ 6\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 7 {/Fit} Software requirements\bodky\ 7\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 7 {/Fit} Installation\bodky\ 7\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 8 {/Fit} Setting-up environment\bodky\ 8\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 8 {/Fit} How does it work?\bodky\ 8\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 9 {/Fit} First run\bodky\ 9\pdfendlink} -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 10 {/Fit} \bf Creating data files\bodky\ 10\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 10 {/Fit} Basics\bodky\ 10\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 11 {/Fit} Data types\bodky\ 11\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 12 {/Fit} Coordinate systems\bodky\ 12\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 12 {/Fit} Magnetic declination\bodky\ 12\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 13 {/Fit} Data format\bodky\ 13\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 13 {/Fit} `encoding'\bodky\ 13\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 13 {/Fit} `input'\bodky\ 13\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 14 {/Fit} `survey'\bodky\ 14\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 15 {/Fit} `centreline'\bodky\ 15\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 19 {/Fit} `scrap'\bodky\ 19\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 21 {/Fit} `point'\bodky\ 21\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 24 {/Fit} `line'\bodky\ 24\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 27 {/Fit} `area'\bodky\ 27\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 28 {/Fit} `join'\bodky\ 28\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 28 {/Fit} `equate'\bodky\ 28\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 29 {/Fit} `map'\bodky\ 29\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 30 {/Fit} `surface'\bodky\ 30\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 31 {/Fit} `import'\bodky\ 31\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 31 {/Fit} `grade'\bodky\ 31\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 31 {/Fit} `revise'\bodky\ 31\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 32 {/Fit} Custom attributes\bodky\ 32\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 32 {/Fit} XTherion\bodky\ 32\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 33 {/Fit} XTherion---text editor\bodky\ 33\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 33 {/Fit} XTherion---map editor\bodky\ 33\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 36 {/Fit} Additional tools\bodky\ 36\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 37 {/Fit} Keyboard and mouse shortcuts in the Map editor\bodky\ 37\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 39 {/Fit} Thinking in Therion\bodky\ 39\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 39 {/Fit} How to enter centreline?\bodky\ 39\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 40 {/Fit} How to draw maps?\bodky\ 40\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 41 {/Fit} How to create models?\bodky\ 41\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 41 {/Fit} Therion in depth\bodky\ 41\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 41 {/Fit} How the map is put together\bodky\ 41\pdfendlink} -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} \bf Processing data\bodky\ 44\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} Configuration file\bodky\ 44\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} `system'\bodky\ 44\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} `encoding'\bodky\ 44\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} `language'\bodky\ 44\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 44 {/Fit} `cs'\bodky\ 44\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 45 {/Fit} `sketch-warp'\bodky\ 45\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 45 {/Fit} `input'\bodky\ 45\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 45 {/Fit} `source'\bodky\ 45\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 45 {/Fit} `select'\bodky\ 45\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `unselect'\bodky\ 46\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `text'\bodky\ 46\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 47 {/Fit} `layout'\bodky\ 47\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 52 {/Fit} `setup3d'\bodky\ 52\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 53 {/Fit} `export'\bodky\ 53\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 55 {/Fit} Running Therion\bodky\ 55\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 57 {/Fit} XTherion---compiler\bodky\ 57\pdfendlink} -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 58 {/Fit} \bf What we get?\bodky\ 58\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 58 {/Fit} Information files\bodky\ 58\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 58 {/Fit} Log file\bodky\ 58\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 58 {/Fit} XTherion\bodky\ 58\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 58 {/Fit} SQL export\bodky\ 58\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} Lists---caves, surveys, continuations\bodky\ 60\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} 2D maps\bodky\ 60\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} Maps for printing\bodky\ 60\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 61 {/Fit} Maps for GIS\bodky\ 61\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 61 {/Fit} Special-purpose maps\bodky\ 61\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 61 {/Fit} 3D models\bodky\ 61\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 61 {/Fit} Loch\bodky\ 61\pdfendlink} -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 62 {/Fit} \bf Changing layout of PDF maps\bodky\ 62\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 62 {/Fit} Page layout in the atlas mode\bodky\ 62\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 67 {/Fit} Page layout in the map mode\bodky\ 67\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 68 {/Fit} Customizing text labels\bodky\ 68\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 68 {/Fit} New map symbols\bodky\ 68\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 69 {/Fit} Point symbols\bodky\ 69\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 70 {/Fit} Line symbols\bodky\ 70\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 71 {/Fit} Area symbols\bodky\ 71\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 71 {/Fit} Special symbols\bodky\ 71\pdfendlink} -\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 72 {/Fit} \bf Appendix\bodky\ 72\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 72 {/Fit} Compilation\bodky\ 72\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 73 {/Fit} Quick start\bodky\ 73\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 73 {/Fit} Hacker's guide\bodky\ 73\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 74 {/Fit} Environment variables\bodky\ 74\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 75 {/Fit} Initialization files\bodky\ 75\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 75 {/Fit} Therion\bodky\ 75\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 77 {/Fit} XTherion\bodky\ 77\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 78 {/Fit} Limitations\bodky\ 78\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 78 {/Fit} Example data\bodky\ 78\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 79 {/Fit} History\bodky\ 79\pdfendlink} -\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} Future\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} General\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} 2D maps\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} 3D models\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} XTherion\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} Loch\bodky\ 81\pdfendlink} -\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} Labyrinth\bodky\ 81\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 7 {/Fit} \bf Introduction\bodky\ 7\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 7 {/Fit} Why Therion?\bodky\ 7\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 8 {/Fit} Features\bodky\ 8\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 9 {/Fit} Software requirements\bodky\ 9\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 9 {/Fit} Installation\bodky\ 9\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 10 {/Fit} Setting-up environment\bodky\ 10\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 10 {/Fit} How does it work?\bodky\ 10\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 11 {/Fit} First run\bodky\ 11\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 12 {/Fit} \bf Creating data files\bodky\ 12\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 12 {/Fit} Basics\bodky\ 12\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 13 {/Fit} Data types\bodky\ 13\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 14 {/Fit} Coordinate systems\bodky\ 14\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 14 {/Fit} Magnetic declination\bodky\ 14\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 15 {/Fit} Data format\bodky\ 15\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 15 {/Fit} `encoding'\bodky\ 15\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 15 {/Fit} `input'\bodky\ 15\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 16 {/Fit} `survey'\bodky\ 16\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 17 {/Fit} `centreline'\bodky\ 17\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 21 {/Fit} `scrap'\bodky\ 21\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 23 {/Fit} `point'\bodky\ 23\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 26 {/Fit} `line'\bodky\ 26\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 29 {/Fit} `area'\bodky\ 29\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 30 {/Fit} `join'\bodky\ 30\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 30 {/Fit} `equate'\bodky\ 30\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 31 {/Fit} `map'\bodky\ 31\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 32 {/Fit} `surface'\bodky\ 32\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 33 {/Fit} `import'\bodky\ 33\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 33 {/Fit} `grade'\bodky\ 33\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 33 {/Fit} `revise'\bodky\ 33\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 34 {/Fit} Custom attributes\bodky\ 34\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 34 {/Fit} XTherion\bodky\ 34\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 35 {/Fit} XTherion---text editor\bodky\ 35\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 35 {/Fit} XTherion---map editor\bodky\ 35\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 38 {/Fit} Additional tools\bodky\ 38\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 39 {/Fit} Keyboard and mouse shortcuts in the Map editor\bodky\ 39\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 41 {/Fit} Thinking in Therion\bodky\ 41\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 41 {/Fit} How to enter centreline?\bodky\ 41\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 42 {/Fit} How to draw maps?\bodky\ 42\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 43 {/Fit} How to create models?\bodky\ 43\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 43 {/Fit} Therion in depth\bodky\ 43\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 43 {/Fit} How the map is put together\bodky\ 43\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} \bf Processing data\bodky\ 46\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} Configuration file\bodky\ 46\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `system'\bodky\ 46\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `encoding'\bodky\ 46\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `language'\bodky\ 46\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 46 {/Fit} `cs'\bodky\ 46\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 47 {/Fit} `sketch-warp'\bodky\ 47\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 47 {/Fit} `input'\bodky\ 47\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 47 {/Fit} `source'\bodky\ 47\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 47 {/Fit} `select'\bodky\ 47\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 48 {/Fit} `unselect'\bodky\ 48\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 48 {/Fit} `text'\bodky\ 48\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 49 {/Fit} `layout'\bodky\ 49\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 54 {/Fit} `setup3d'\bodky\ 54\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 55 {/Fit} `export'\bodky\ 55\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 57 {/Fit} Running Therion\bodky\ 57\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 59 {/Fit} XTherion---compiler\bodky\ 59\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} \bf What we get?\bodky\ 60\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} Information files\bodky\ 60\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} Log file\bodky\ 60\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} XTherion\bodky\ 60\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 60 {/Fit} SQL export\bodky\ 60\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 62 {/Fit} Lists---caves, surveys, continuations\bodky\ 62\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 62 {/Fit} 2D maps\bodky\ 62\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 62 {/Fit} Maps for printing\bodky\ 62\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 63 {/Fit} Maps for GIS\bodky\ 63\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 63 {/Fit} Special-purpose maps\bodky\ 63\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 63 {/Fit} 3D models\bodky\ 63\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 63 {/Fit} Loch\bodky\ 63\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 64 {/Fit} \bf Changing layout of PDF maps\bodky\ 64\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 64 {/Fit} Page layout in the atlas mode\bodky\ 64\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 69 {/Fit} Page layout in the map mode\bodky\ 69\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 70 {/Fit} Customizing text labels\bodky\ 70\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 70 {/Fit} New map symbols\bodky\ 70\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 71 {/Fit} Point symbols\bodky\ 71\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 72 {/Fit} Line symbols\bodky\ 72\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 73 {/Fit} Area symbols\bodky\ 73\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 73 {/Fit} Special symbols\bodky\ 73\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 74 {/Fit} \bf Appendix\bodky\ 74\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 74 {/Fit} Compilation\bodky\ 74\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 75 {/Fit} Quick start\bodky\ 75\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 75 {/Fit} Hacker's guide\bodky\ 75\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 76 {/Fit} Environment variables\bodky\ 76\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 77 {/Fit} Initialization files\bodky\ 77\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 77 {/Fit} Therion\bodky\ 77\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 79 {/Fit} XTherion\bodky\ 79\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 80 {/Fit} Limitations\bodky\ 80\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 80 {/Fit} Example data\bodky\ 80\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 81 {/Fit} History\bodky\ 81\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} Future\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} General\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} 2D maps\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} 3D models\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} XTherion\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} Loch\bodky\ 83\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 83 {/Fit} Labyrinth\bodky\ 83\pdfendlink} +\cvak\penalty-50 \Line{\pdfstartlink attr {/Border [0 0 0]} goto page 84 {/Fit} \bf Case studies\bodky\ 84\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 84 {/Fit} Drawing maps in therion\bodky\ 84\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 84 {/Fit} Listing caves\bodky\ 84\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 86 {/Fit} Area symbols\bodky\ 86\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 86 {/Fit} Sketch morphing\bodky\ 86\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 89 {/Fit} Extended elevation control\bodky\ 89\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 92 {/Fit} Stations in extended elevation scraps\bodky\ 92\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 93 {/Fit} Dipsplaying overlaying maps in offset\bodky\ 93\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 95 {/Fit} Importing survex .3d files\bodky\ 95\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 95 {/Fit} Using surveys specified in .th files\bodky\ 95\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 96 {/Fit} Creating non-existing surveys\bodky\ 96\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 97 {/Fit} Ignoring station prefixes\bodky\ 97\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 98 {/Fit} Managing large projects\bodky\ 98\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 100 {/Fit} Conclusion\bodky\ 100\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 100 {/Fit} Question marks handling\bodky\ 100\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 100 {/Fit} Question marks in centerline\bodky\ 100\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 101 {/Fit} Question marks in maps\bodky\ 101\pdfendlink} +\cvak\Line{\qquad\pdfstartlink attr {/Border [0 0 0]} goto page 102 {/Fit} Exporting question mark lists\bodky\ 102\pdfendlink} +\cvak\Line{\quad\pdfstartlink attr {/Border [0 0 0]} goto page 103 {/Fit} Using user defined symbol types\bodky\ 103\pdfendlink} diff --git a/thbook/version.tex b/thbook/version.tex index 2e0c25f7..d758bc62 100644 --- a/thbook/version.tex +++ b/thbook/version.tex @@ -1 +1 @@ -5.3.7 \ No newline at end of file +5.3.8 \ No newline at end of file diff --git a/thcmdline.cxx b/thcmdline.cxx index b5991c1f..e0a18f87 100644 --- a/thcmdline.cxx +++ b/thcmdline.cxx @@ -43,6 +43,7 @@ thcmdline::thcmdline() { this->version_ds = false; this->help_ds = false; + this->m_bezier = false; this->extern_libs = false; this->print_state = THPS_NONE; } @@ -83,12 +84,13 @@ void thcmdline::process(int argc, char * argv[]) {"print-xtherion-src",no_argument,NULL,THPS_XTHERION_SRC}, {"use-extern-libs",no_argument,NULL,THPS_EXTERN_LIBS}, {"version",no_argument,NULL,'v'}, + {"bezier",no_argument,NULL,'b'}, {NULL, 0, NULL, 0} }; while(1) { - oc = getopt_long (argc, argv, "dxs:l:qLvhp:", + oc = getopt_long (argc, argv, "dxs:l:qLvbhp:", thlong_options, &oindex); // no other options detected @@ -110,6 +112,10 @@ void thcmdline::process(int argc, char * argv[]) case 'v': this->version_ds = true; break; + + case 'b': + this->m_bezier = true; + break; case 'q': thverbose_mode = false; diff --git a/thcmdline.h b/thcmdline.h index 6c93e6fb..c762d13f 100644 --- a/thcmdline.h +++ b/thcmdline.h @@ -59,6 +59,7 @@ class thcmdline { bool version_ds, ///< Version information display state. help_ds, ///< Help display state. + m_bezier, extern_libs; ///< Use extern libs. int print_state; ///< Query state. diff --git a/thcsdata.cxx b/thcsdata.cxx index 14962e88..e3681e51 100644 --- a/thcsdata.cxx +++ b/thcsdata.cxx @@ -13,7 +13,7 @@ * CS parsing table. */ -const thstok thtt_cs[6862] = { +const thstok thtt_cs[6864] = { {"EPSG:2000", TTCS_EPSG_2000}, {"EPSG:20004", TTCS_EPSG_20004}, {"EPSG:20005", TTCS_EPSG_20005}, @@ -6688,7 +6688,9 @@ const thstok thtt_cs[6862] = { {"ESRI:65161", TTCS_ESRI_65161}, {"EUR79Z30", TTCS_EUR79Z30}, {"IJTSK", TTCS_IJTSK}, + {"IJTSK03", TTCS_IJTSK03}, {"JTSK", TTCS_JTSK}, + {"JTSK03", TTCS_JTSK03}, {"LAT-LONG", TTCS_LAT_LONG}, {"LONG-LAT", TTCS_LONG_LAT}, {"OSGB:SN", TTCS_OSGB_SN}, @@ -6883,11 +6885,13 @@ const thstok thtt_cs[6862] = { * CS data table. */ -const thcsdata thcsdata_table[4367] = { +const thcsdata thcsdata_table[4369] = { {true, false, false, "+proj=latlong +datum=WGS84", "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]"}, {true, false, true, "+proj=latlong +datum=WGS84", ""}, {false, false, false, "+proj=krovak +czech +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623", "PROJCS[\"S-JTSK_Krovak\",GEOGCS[\"GCS_S_JTSK\",DATUM[\"D_S_JTSK\",SPHEROID[\"Bessel_1841\",6377397.155,299.1528128]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Krovak\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5],PARAMETER[\"Scale_Factor\",0.9999],PARAMETER[\"Azimuth\",30.28813975277778],PARAMETER[\"Longitude_Of_Center\",24.83333333333333],PARAMETER[\"Latitude_Of_Center\",49.5],PARAMETER[\"X_Scale\",1.0],PARAMETER[\"Y_Scale\",1.0],PARAMETER[\"XY_Plane_Rotation\",0.0],UNIT[\"Meter\",1.0]]"}, + {false, false, false, "+proj=krovak +czech +ellps=bessel +towgs84=485.021,169.465,483.839,7.786342,4.397554,4.102655,0", ""}, {false, true, false, "+proj=krovak +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623", "PROJCS[\"S-JTSK_Krovak_East_North\",GEOGCS[\"GCS_S_JTSK\",DATUM[\"D_S_JTSK\",SPHEROID[\"Bessel_1841\",6377397.155,299.1528128]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Krovak\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5],PARAMETER[\"Scale_Factor\",0.9999],PARAMETER[\"Azimuth\",30.28813975277778],PARAMETER[\"Longitude_Of_Center\",24.83333333333333],PARAMETER[\"Latitude_Of_Center\",49.5],PARAMETER[\"X_Scale\",-1.0],PARAMETER[\"Y_Scale\",1.0],PARAMETER[\"XY_Plane_Rotation\",90.0],UNIT[\"Meter\",1.0]]"}, + {false, true, false, "+proj=krovak +ellps=bessel +towgs84=485.021,169.465,483.839,7.786342,4.397554,4.102655,0", "PROJCS[\"S-JTSK_Krovak\",GEOGCS[\"GCS_S_JTSK\",DATUM[\"D_S_JTSK\",SPHEROID[\"Bessel_1841\",6377397.155,299.1528128]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Krovak\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5],PARAMETER[\"Scale_Factor\",0.9999],PARAMETER[\"Azimuth\",30.28813975277778],PARAMETER[\"Longitude_Of_Center\",24.83333333333333],PARAMETER[\"Latitude_Of_Center\",49.5],PARAMETER[\"X_Scale\",1.0],PARAMETER[\"Y_Scale\",1.0],PARAMETER[\"XY_Plane_Rotation\",0.0],UNIT[\"Meter\",1.0]]"}, {false, true, false, "+proj=merc +latts=0 +lon0=0 +k=1 +x0=0 +y0=0 +a=6378137 +b=6378137 +units=m +nadgrids=\\@null +no_defs", ""}, {false, true, false, "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=100000 +y_0=-200000 +ellps=airy +datum=OSGB36 +units=m +no_defs", ""}, {false, true, false, "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=200000 +y_0=-300000 +ellps=airy +datum=OSGB36 +units=m +no_defs", ""}, diff --git a/thcsdata.h b/thcsdata.h index 082b287d..072ab9b3 100644 --- a/thcsdata.h +++ b/thcsdata.h @@ -20,7 +20,9 @@ enum { TTCS_LONG_LAT, TTCS_LAT_LONG, TTCS_JTSK, + TTCS_JTSK03, TTCS_IJTSK, + TTCS_IJTSK03, TTCS_S_MERC, TTCS_OSGB_ST, TTCS_OSGB_SN, @@ -4396,9 +4398,9 @@ typedef struct { const char * params; const char * prjspec; } thcsdata; -extern const thstok thtt_cs[6862]; +extern const thstok thtt_cs[6864]; -extern const thcsdata thcsdata_table[4367]; +extern const thcsdata thcsdata_table[4369]; #endif diff --git a/thcsdata.tcl b/thcsdata.tcl index b4f53f8b..2a458051 100755 --- a/thcsdata.tcl +++ b/thcsdata.tcl @@ -47,8 +47,10 @@ proc load_proj_init_file {fn shortcut} { set proj_specs { {{long-lat} {dms} "+proj=latlong +datum=WGS84" {GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]}} {{lat-long} {dms swap} "+proj=latlong +datum=WGS84" {}} - {{jtsk} {} "+proj=krovak +czech +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623" {PROJCS["S-JTSK_Krovak",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Meter",1.0]]}} - {{ijtsk} {output} "+proj=krovak +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623" {PROJCS["S-JTSK_Krovak_East_North",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",90.0],UNIT["Meter",1.0]]}} + {{jtsk} {} "+proj=krovak +czech +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623" {PROJCS["S-JTSK_Krovak",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Meter",1.0]]}} + {{jtsk03} {} "+proj=krovak +czech +ellps=bessel +towgs84=485.021,169.465,483.839,7.786342,4.397554,4.102655,0" {}} + {{ijtsk} {output} "+proj=krovak +ellps=bessel +towgs84=570.8285,85.6769,462.842,4.9984,1.5867,5.2611,3.5623" {PROJCS["S-JTSK_Krovak_East_North",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",90.0],UNIT["Meter",1.0]]}} + {{ijtsk03} {output} "+proj=krovak +ellps=bessel +towgs84=485.021,169.465,483.839,7.786342,4.397554,4.102655,0" {PROJCS["S-JTSK_Krovak",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Meter",1.0]]}} {{s-merc} {output} {+proj=merc +latts=0 +lon0=0 +k=1 +x0=0 +y0=0 +a=6378137 +b=6378137 +units=m +nadgrids=\\@null +no_defs} {}} {{OSGB:ST} {output} {+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=100000 +y_0=-200000 +ellps=airy +datum=OSGB36 +units=m +no_defs} {}} {{OSGB:SN} {output} {+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=200000 +y_0=-300000 +ellps=airy +datum=OSGB36 +units=m +no_defs} {}} diff --git a/thdb1d.cxx b/thdb1d.cxx index 463f4164..906b400e 100644 --- a/thdb1d.cxx +++ b/thdb1d.cxx @@ -45,7 +45,7 @@ #include "thinit.h" #include "thconfig.h" #include "thtrans.h" -#include "extern/lxMath.h" +#include "loch/lxMath.h" #ifdef THMSVC #define hypot _hypot #endif @@ -827,7 +827,6 @@ void thdb1d::process_tree() } // go leg by leg and fill arrows - size_t tn_nosurveylegs(0); for(iil = this->leg_vec.begin(), a1 = arrows; iil != this->leg_vec.end(); iil++) { if (iil->leg->infer_equates) @@ -848,9 +847,8 @@ void thdb1d::process_tree() // )); // } if (iil->leg->data_type == TT_DATATYPE_NOSURVEY) { - a1->is_discovery = true; - a2->is_discovery = true; - tn_nosurveylegs++; + a1->is_nosurvey = true; + a2->is_nosurvey = true; } // hide splay-ed flags from extended elevation2 @@ -891,7 +889,7 @@ void thdb1d::process_tree() this->tree_legs = new thdb1dl* [tn_legs]; thdb1dl ** current_leg = this->tree_legs; - while ((tarrows + tn_nosurveylegs) < tn_legs) { + while (tarrows < tn_legs) { if (component_break) { @@ -949,9 +947,13 @@ void thdb1d::process_tree() current_node->last_arrow = current_node->first_arrow; else current_node->last_arrow = current_node->last_arrow->next_arrow; - - while ((current_node->last_arrow != NULL) && - (current_node->last_arrow->is_discovery)) + + // skip discovery arrows or nosurvey arrows, if station on the other site is not connected + while ((current_node->last_arrow != NULL) && ( + (current_node->last_arrow->is_discovery) || + ((current_node->last_arrow->is_nosurvey) && + (!current_node->last_arrow->end_node->is_attached)) + )) current_node->last_arrow = current_node->last_arrow->next_arrow; if (current_node->last_arrow == NULL) { @@ -1117,10 +1119,10 @@ void thdb1d::process_survey_stat() { while (lit != this->leg_vec.end()) { // skusi ci je duplikovane - if ((lit->leg->flags & TT_LEGFLAG_DUPLICATE) != 0) - lit->data->stat_dlength += lit->leg->total_length; - else if ((lit->leg->flags & TT_LEGFLAG_SPLAY) != 0) + if ((lit->leg->flags & TT_LEGFLAG_SPLAY) != 0) lit->data->stat_splaylength += lit->leg->total_length; + else if ((lit->leg->flags & TT_LEGFLAG_DUPLICATE) != 0) + lit->data->stat_dlength += lit->leg->total_length; // ak nie skusi ci je surface else if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) lit->data->stat_slength += lit->leg->total_length; @@ -1132,23 +1134,26 @@ void thdb1d::process_survey_stat() { if ((lit->leg->flags & TT_LEGFLAG_APPROXIMATE) != 0) lit->data->stat_alength += lit->leg->total_length; } + // stations - if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) { - thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->from.id - 1]), false); - thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->to.id - 1]), false); - } else { - thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->from.id - 1]), true); - thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->to.id - 1]), true); + if ((lit->leg->flags & TT_LEGFLAG_SPLAY) == 0) { + if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) { + thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->from.id - 1]), false); + thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->to.id - 1]), false); + } else { + thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->from.id - 1]), true); + thdb1d__scan_data_station_limits(lit->data, &(this->station_vec[lit->leg->to.id - 1]), true); + } } - ss = lit->survey; while (ss != NULL) { + // skusi ci nie je splay + if ((lit->leg->flags & TT_LEGFLAG_SPLAY) != 0) + ss->stat.length_splay += lit->leg->total_length; // skusi ci je duplikovane - if ((lit->leg->flags & TT_LEGFLAG_DUPLICATE) != 0) + else if ((lit->leg->flags & TT_LEGFLAG_DUPLICATE) != 0) ss->stat.length_duplicate += lit->leg->total_length; - else if ((lit->leg->flags & TT_LEGFLAG_SPLAY) != 0) - ss->stat.length_splay += lit->leg->total_length; // ak nie skusi ci je surface else if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) ss->stat.length_surface += lit->leg->total_length; @@ -1158,12 +1163,14 @@ void thdb1d::process_survey_stat() { ss->stat.length_approx += lit->leg->total_length; ss->stat.length += lit->leg->total_length; } - if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) { - thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->from.id - 1]), false); - thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->to.id - 1]), false); - } else { - thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->from.id - 1]), true); - thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->to.id - 1]), true); + if ((lit->leg->flags & TT_LEGFLAG_SPLAY) == 0) { + if ((lit->leg->flags & TT_LEGFLAG_SURFACE) != 0) { + thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->from.id - 1]), false); + thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->to.id - 1]), false); + } else { + thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->from.id - 1]), true); + thdb1d__scan_survey_station_limits(ss, &(this->station_vec[lit->leg->to.id - 1]), true); + } } ss->stat.num_shots++; ss = ss->fsptr; @@ -2842,7 +2849,7 @@ void thdb1d::postprocess_objects() thdb1d_tree_node * node, * nodes = this->get_tree_nodes(); thdb1ds * s; double numl; - for(long i = 0; i < (long)this->station_vec.size(); i++) { + for(unsigned long i = 0; i < this->station_vec.size(); i++) { s = &(this->station_vec[i]); if (s->uid < (i + 1)) { s->asl = this->station_vec[s->uid - 1].asl; diff --git a/thdb1d.h b/thdb1d.h index ec3dd4ca..3592349e 100644 --- a/thdb1d.h +++ b/thdb1d.h @@ -89,7 +89,7 @@ class thdb1d_tree_arrow { public: - bool is_discovery, is_reversed; + bool is_discovery, is_nosurvey, is_reversed; thdb1d_tree_node * start_node, * end_node; @@ -101,7 +101,7 @@ class thdb1d_tree_arrow { thdb1d_tree_arrow * next_arrow; - thdb1d_tree_arrow() : is_discovery(false), is_reversed(false), + thdb1d_tree_arrow() : is_discovery(false), is_nosurvey(false), is_reversed(false), start_node(NULL), end_node(NULL), leg(NULL), extend(TT_EXTENDFLAG_NORMAL), negative(NULL), next_arrow(NULL) {} diff --git a/thdb2dcp.cxx b/thdb2dcp.cxx index ada3d0c9..2ca5fa25 100644 --- a/thdb2dcp.cxx +++ b/thdb2dcp.cxx @@ -23,8 +23,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -------------------------------------------------------------------- - */ - + */ + #include "thdb2dcp.h" thdb2dcp::thdb2dcp() { diff --git a/thdb2dcp.h b/thdb2dcp.h index 89605ac5..6940b155 100644 --- a/thdb2dcp.h +++ b/thdb2dcp.h @@ -29,6 +29,7 @@ #ifndef thdb2dcp_h #define thdb2dcp_h +#include #include #include "thdb2dpt.h" diff --git a/thdb2dlp.cxx b/thdb2dlp.cxx index 10ac27f0..bb7ef028 100644 --- a/thdb2dlp.cxx +++ b/thdb2dlp.cxx @@ -43,6 +43,7 @@ thdb2dlp::thdb2dlp () { this->subtype = TT_LINE_SUBTYPE_UNKNOWN; this->smooth = TT_AUTO; + this->smooth_orig = TT_AUTO; this->mark = NULL; this->orient = thnan; diff --git a/thdb2dlp.h b/thdb2dlp.h index 2f84f25d..e3931af1 100644 --- a/thdb2dlp.h +++ b/thdb2dlp.h @@ -64,7 +64,7 @@ class thdb2dlp { * cp2; ///< Control point 2. int subtype, ///< Line subtype. - smooth, ///< Whether line is smooth in given point. + smooth, smooth_orig, ///< Whether line is smooth in given point. adjust; ///< line point adjustment const char * mark; ///< Line point mark. diff --git a/thdb3d.h b/thdb3d.h index ad38fbb6..8bd55e18 100644 --- a/thdb3d.h +++ b/thdb3d.h @@ -31,7 +31,7 @@ #include #include -#include "extern/lxMath.h" +#include "loch/lxMath.h" enum { THDB3DFC_POINTS, diff --git a/therion.cxx b/therion.cxx index 340e328d..11ce7456 100644 --- a/therion.cxx +++ b/therion.cxx @@ -46,6 +46,7 @@ #include "thversion.h" #include "thtexfonts.h" #include "thlang.h" +#include "thbezier.h" #include "thsymbolset.h" #include @@ -239,6 +240,13 @@ int main(int argc, char * argv[]) { thprintf("\n"); thexit(EXIT_SUCCESS); } + + if (thcmdln.m_bezier) + { + thbezier_main(); + thexit(EXIT_SUCCESS); + } + if (thcmdln.get_help_disp_state()) { diff --git a/thexpmap.cxx b/thexpmap.cxx index cf92a9bf..92084974 100644 --- a/thexpmap.cxx +++ b/thexpmap.cxx @@ -35,6 +35,7 @@ #include "thscrap.h" #include "thpoint.h" #include "thline.h" +#include "tharea.h" #include "thlayout.h" #include "thmap.h" #include "thsketch.h" @@ -71,7 +72,7 @@ #include "thproj.h" #include "thsurface.h" #include -#include "extern/lxMath.h" +#include "loch/lxMath.h" #include "thsvg.h" #include "extern/img.h" #include "thcs.h" @@ -172,6 +173,7 @@ void thexpmap::parse_options(int & argx, int nargs, char ** args) case TT_EXPMAP_FMT_SVG: case TT_EXPMAP_FMT_XHTML: case TT_EXPMAP_FMT_XVI: + case TT_EXPMAP_FMT_TH2: case TT_EXPMAP_FMT_3D: case TT_EXPMAP_FMT_KML: case TT_EXPMAP_FMT_DXF: @@ -305,6 +307,7 @@ void thexpmap::process_db(class thdatabase * dbp) thexp_set_ext_fmt(".svg", TT_EXPMAP_FMT_SVG) thexp_set_ext_fmt(".xhtml", TT_EXPMAP_FMT_XHTML) thexp_set_ext_fmt(".xvi", TT_EXPMAP_FMT_XVI) + thexp_set_ext_fmt(".th2", TT_EXPMAP_FMT_TH2) thexp_set_ext_fmt(".3d", TT_EXPMAP_FMT_3D) thexp_set_ext_fmt(".shp", TT_EXPMAP_FMT_SHP) thexp_set_ext_fmt(".kml", TT_EXPMAP_FMT_KML) @@ -342,6 +345,9 @@ void thexpmap::process_db(class thdatabase * dbp) case TT_EXPMAP_FMT_XVI: this->export_xvi(this->projptr); break; + case TT_EXPMAP_FMT_TH2: + this->export_th2(this->projptr); + break; } //if (tmp != NULL) { @@ -728,6 +734,343 @@ void thexpmap::export_xvi(class thdb2dprj * prj) +void thexpmap::export_th2(class thdb2dprj * prj) +{ + const char * fnm = this->get_output("cave.th2"); + + switch (prj->type) { + case TT_2DPROJ_PLAN: + case TT_2DPROJ_ELEV: + case TT_2DPROJ_EXTEND: + this->db->db2d.process_projection(prj); + break; + default: + thwarning(("projection type not supported in TH2 export")); + return; + } + + if (thdb.db1d.station_vec.size() == 0) { + thwarning(("no data to export")); + return; + } + + + +#ifdef THDEBUG + thprintf("\n\nwriting %s\n", fnm); +#else + thprintf("writing %s ... ", fnm); + thtext_inline = true; +#endif + + FILE * pltf; + pltf = fopen(fnm,"w"); + if (pltf == NULL) { + thwarning(("can't open %s for output",fnm)) + return; + } + + double xmin = thnan, xmax = thnan, ymin = thnan, ymax = thnan, cx, cy, sf; + double shx, shy; + + // scale factor: assume 100dpi + sf = 3937.00787402 * this->layout->scale; + +#define check_cxy_minmax() \ + if (thisnan(xmin)) { \ + xmin = cx; \ + ymin = cy; \ + xmax = cx; \ + ymax = cy; \ + } else { \ + if (xmin > cx) xmin = cx; \ + if (ymin > cy) ymin = cy; \ + if (xmax < cx) xmax = cx; \ + if (ymax < cy) ymax = cy; \ + } + + + // check all points from selected scraps + thdb2dpt_list::iterator pli; + for(pli = this->db->db2d.pt_list.begin(); pli != this->db->db2d.pt_list.end(); pli++) { + if ((pli->pscrap != NULL) && (pli->pscrap->fsptr->is_selected())) { + cx = sf * pli->xt; + cy = sf * pli->yt; + check_cxy_minmax(); + } + } + + shx = xmin - 2.0; + shy = ymin - 2.0; + xmin -= shx; xmax -= shx; + ymin -= shy; ymax -= shy; + + thdb_object_list_type::iterator obi; + thsketch_list::iterator skit; + thpic * skpic; + thscrap * scrap; + int sknum = 1; + + fprintf(pltf,"encoding utf-8\n"); + fprintf(pltf,"##XTHERION## xth_me_area_adjust %.0f %.0f %0.f %0.f\n",xmin - 0.1 * (xmax - xmin), ymin - 0.1 * (ymax - ymin),xmax + 0.1 * (xmax - xmin), ymax + 0.1 * (ymax - ymin)); + fprintf(pltf,"\n\n"); + +#define tf(x,y) sf * (x) - shx, sf * (y) - shy + + // export scraps & scrap objects + for (obi = thdb.object_list.begin(); obi != thdb.object_list.end(); obi++) { + if (((*obi)->get_class_id() == TT_SCRAP_CMD) && (!((thscrap *)(*obi))->centerline_io) && (*obi)->fsptr->is_selected() && (((thscrap *)(*obi))->proj->id == prj->id)) { + scrap = (thscrap *)(*obi); + + + // export sketches + if (this->layout->sketches) { + skit = scrap->sketch_list.begin(); + while (skit != scrap->sketch_list.end()) { + skpic = skit->morph(sf); + if (skpic != NULL) { + double nx, ny, ns; + const char * srcgif; + nx = sf * (skpic->x - prj->shift_x) - shx; + ny = sf * (skpic->y - prj->shift_y + skpic->scale * double(skpic->height)) - shy; + ns = skpic->scale * sf; + + const char * fn; + size_t fnx, fnl; + fn = skit->m_pic.fname; + fnl = strlen(skit->m_pic.fname); + for(fnx = 0; fnx < fnl; fnx++) { + if (((skit->m_pic.fname[fnx] == '/') || (skit->m_pic.fname[fnx] == '\\')) && (fnx < fnl - 1)) { + fn = &(skit->m_pic.fname[fnx + 1]); + } + } + if (thtext_inline) thprintf("\n"); + thprintf("converting %s ", fn); + thprintf("(%.1f Mpix) ...", double(ns * ns * skpic->width * skpic->height) / 1000000.0); + thtext_inline = true; + + if (fabs(ns - 1.0) < 1e-8) { + srcgif = skpic->convert("GIF", "gif", ""); + } else { + srcgif = skpic->convert("GIF", "gif", "-resize %d", + long(ns * double(skpic->width) + 0.5)); + } + + if (srcgif != NULL) { + size_t cpch, retcode; + thbuffer com; + char prevbf[10]; + snprintf(&(prevbf[0]),10,"%03d",sknum); + // Let's copy results and log-file to working directory +#ifdef THWIN32 + com = "copy \""; +#else + com = "cp \""; +#endif + com += srcgif; + com += "\" \""; + com += fnm; + com += "."; + com += &(prevbf[0]); + com += ".gif\""; + +#ifdef THWIN32 + cpcmd = com.get_buffer(); + for(cpch = 0; cpch < strlen(cpcmd); cpch++) { + if (cpcmd[cpch] == '/') { + cpcmd[cpch] = '\\'; + } + } +#endif + +#ifdef THDEBUG + thprintf("copying results\n"); +#endif + retcode = system(com.get_buffer()); + if (retcode != EXIT_SUCCESS) + ththrow(("cp exit code -- %d", retcode)) + for(cpch = strlen(fnm); cpch > 0; cpch--) { + if ((fnm[cpch] == '/') || (fnm[cpch] == '\\')) { + cpch++; + break; + } + } + fprintf(pltf,"##XTHERION## xth_me_image_insert {%.2f 1 1.0} {%.2f {}} %s.%03d.gif 0 {}\n", nx, ny, &(fnm[cpch]), sknum++); + } + + thprintf(" done\n"); + thtext_inline = false; + } + skit++; + } + } + +#define objname(obj) (obj)->get_name(), (strlen((obj)->fsptr->get_full_name()) > 0 ? "." : ""), (obj)->fsptr->get_full_name() + + // export scrap itself + fprintf(pltf,"scrap %s%s%s\n\n", objname(scrap)); + + // export scrap objects + th2ddataobject * so; + for (so = scrap->fs2doptr; so != NULL; so = so->nscrapoptr) { + switch (so->get_class_id()) { + case TT_POINT_CMD: + { + thpoint * pt = (thpoint *) so; + const char * typestr = thmatch_string(pt->type,thtt_point_types); + fprintf(pltf," point %.2f %.2f %s", tf(pt->point->xt, pt->point->yt), typestr); + if (pt->subtype != TT_POINT_SUBTYPE_UNKNOWN) { + switch (pt->type) { + case TT_POINT_TYPE_U: + fprintf(pltf, ":%s", pt->m_subtype_str); + break; + default: + fprintf(pltf, ":%s", thmatch_string(pt->subtype, thtt_point_subtypes)); + } + } + if (pt->type == TT_POINT_TYPE_STATION) { + if (pt->station_name.id != 0) { + fprintf(pltf," -name %s", pt->station_name.print_name()); + } + } + if (strlen(pt->name) > 0) { + fprintf(pltf," -id %s%s%s", objname(pt)); + } + fprintf(pltf,"\n\n"); + } + break; + case TT_LINE_CMD: + { + thline * ln = (thline *) so; + const char * typestr = thmatch_string(ln->type,thtt_line_types); + fprintf(pltf," line %s", typestr); + int lsubtype = TT_LINE_SUBTYPE_UNKNOWN; + int loutline = TT_LINE_OUTLINE_NONE; + switch (ln->type) { + case TT_LINE_TYPE_WALL: + lsubtype = TT_LINE_SUBTYPE_BEDROCK; + loutline = TT_LINE_OUTLINE_OUT; + break; + case TT_LINE_TYPE_BORDER: + lsubtype = TT_LINE_SUBTYPE_VISIBLE; + break; + case TT_LINE_TYPE_WATER_FLOW: + lsubtype = TT_LINE_SUBTYPE_PERMANENT; + break; + case TT_LINE_TYPE_SURVEY: + lsubtype = TT_LINE_SUBTYPE_CAVE; + break; + case TT_LINE_TYPE_ARROW: + //this->tags |= TT_LINE_TAG_HEAD_END; + break; + case TT_LINE_TYPE_CHIMNEY: + //this->place = TT_2DOBJ_PLACE_DEFAULT_TOP; + break; + case TT_LINE_TYPE_CEILING_STEP: + //this->place = TT_2DOBJ_PLACE_DEFAULT_TOP; + break; + case TT_LINE_TYPE_CEILING_MEANDER: + //this->place = TT_2DOBJ_PLACE_DEFAULT_TOP; + break; + } + if (ln->type == TT_LINE_TYPE_U) fprintf(pltf, ":%s", ln->m_subtype_str); + else if ((ln->first_point != NULL) && (ln->first_point->subtype != lsubtype)) { + thdb2dlp * nlp = ln->first_point->nextlp; + while (nlp != NULL) { + if (nlp->subtype != ln->first_point->subtype) break; + nlp = nlp->nextlp; + } + if (nlp == NULL) { + fprintf(pltf, ":%s", thmatch_string(ln->first_point->subtype, thtt_line_subtypes)); + lsubtype = ln->first_point->subtype; + } + } + if (ln->closed != TT_AUTO) { + if (ln->closed == TT_TRUE) { + fprintf(pltf," -close on"); + } else { + fprintf(pltf," -close off"); + } + } + if (ln->outline != loutline) { + fprintf(pltf," -outline %s", thmatch_string(ln->outline,thtt_line_outlines)); + } + if (strlen(ln->name) > 0) { + fprintf(pltf," -id %s%s%s", objname(ln)); + } + fprintf(pltf,"\n"); + thdb2dlp * lpt = ln->first_point; + while (lpt != NULL) { + fprintf(pltf," "); + if (lpt->cp1 != NULL) { + fprintf(pltf," %.2f %.2f", tf(lpt->cp1->xt, lpt->cp1->yt)); + } + if (lpt->cp2 != NULL) { + fprintf(pltf," %.2f %.2f", tf(lpt->cp2->xt, lpt->cp2->yt)); + } + fprintf(pltf," %.2f %.2f\n", tf(lpt->point->xt, lpt->point->yt)); + // change subtype + if (lpt->cp1 != NULL) { + if (lpt->smooth_orig != TT_AUTO) { + if (lpt->smooth_orig == TT_TRUE) { + fprintf(pltf," smooth on\n"); + } else { + fprintf(pltf," smooth off\n"); + } + } + } + if (lpt->subtype != lsubtype) { + fprintf(pltf," subtype %s\n", thmatch_string(lpt->subtype, thtt_line_subtypes)); + lsubtype = lpt->subtype; + } + if ((lpt->tags | TT_LINEPT_TAG_ALTITUDE) != 0) { + // TODO: altitude tags and others + } + lpt = lpt->nextlp; + } + fprintf(pltf," endline\n\n"); + } + break; + case TT_AREA_CMD: + { + tharea * ar = (tharea *) so; + const char * typestr = thmatch_string(ar->type,thtt_area_types); + fprintf(pltf," area %s", typestr); + if (ar->type == TT_AREA_TYPE_U) fprintf(pltf, ":%s", ar->m_subtype_str); + if (strlen(ar->name) > 0) { + fprintf(pltf," -id %s%s%s", objname(ar)); + } + fprintf(pltf,"\n"); + fprintf(pltf," endarea\n\n"); + } + break; + } + } + + // export e + fprintf(pltf,"endscrap\n\n"); + + } + } + + fclose(pltf); + + +#ifdef THDEBUG +#else + thprintf("done\n"); + thtext_inline = false; +#endif +} + + + + + + + + + void thexpmap::export_pdf(thdb2dxm * maps, thdb2dprj * prj) { diff --git a/thexpmap.h b/thexpmap.h index 3a69caa3..11c519d2 100644 --- a/thexpmap.h +++ b/thexpmap.h @@ -75,6 +75,7 @@ enum { TT_EXPMAP_FMT_XHTML, TT_EXPMAP_FMT_PDF, TT_EXPMAP_FMT_XVI, + TT_EXPMAP_FMT_TH2, TT_EXPMAP_FMT_3D, TT_EXPMAP_FMT_SHP, TT_EXPMAP_FMT_KML, @@ -98,6 +99,7 @@ static const thstok thtt_expmap_fmt[] = { {"shp", TT_EXPMAP_FMT_SHP}, {"survex", TT_EXPMAP_FMT_3D}, {"svg", TT_EXPMAP_FMT_SVG}, + {"th2", TT_EXPMAP_FMT_TH2}, {"xhtml", TT_EXPMAP_FMT_XHTML}, {"xvi", TT_EXPMAP_FMT_XVI}, {NULL, TT_EXPMAP_FMT_UNKNOWN} @@ -180,6 +182,7 @@ class thexpmap : public thexport { thbuffer layoutopts; ///< Layout options buffer. void export_xvi(class thdb2dprj * prj); + void export_th2(class thdb2dprj * prj); void export_pdf(class thdb2dxm * maps, class thdb2dprj * prj); thexpmap_xmps export_mp(thexpmapmpxs * out, class thscrap * scrap, unsigned & startnum, bool outline_mode); diff --git a/thexpmodel.cxx b/thexpmodel.cxx index bcb50a85..e086c1d0 100644 --- a/thexpmodel.cxx +++ b/thexpmodel.cxx @@ -37,7 +37,7 @@ #include "thscrap.h" #include #include "thsurface.h" -#include "extern/lxFile.h" +#include "loch/lxFile.h" #include "thsurface.h" #include "thchenc.h" #include "thconfig.h" diff --git a/thexpshp.cxx b/thexpshp.cxx index 1b39817c..c8bd0995 100644 --- a/thexpshp.cxx +++ b/thexpshp.cxx @@ -60,7 +60,7 @@ #include "thmapstat.h" #include "thsurface.h" #include -#include "extern/lxMath.h" +#include "loch/lxMath.h" #include "extern/shapefil.h" #include "thexpmodel.h" #include "thcsdata.h" diff --git a/thexpuni.cxx b/thexpuni.cxx index 84ba01da..7d071b6f 100644 --- a/thexpuni.cxx +++ b/thexpuni.cxx @@ -57,7 +57,7 @@ #include "thmapstat.h" #include "thsurface.h" #include -#include "extern/lxMath.h" +#include "loch/lxMath.h" #include "extern/shapefil.h" #include "thexpmodel.h" #include diff --git a/thline.cxx b/thline.cxx index 7f3ae98b..0cdc795c 100644 --- a/thline.cxx +++ b/thline.cxx @@ -186,8 +186,10 @@ void thline::set(thcmd_option_desc cod, char ** args, int argenc, unsigned long csmooth = thmatch_token(*args,thtt_onoffauto); if (csmooth == TT_UNKNOWN_BOOL) ththrow(("invalid smooth switch -- %s",*args)) - if (this->last_point != NULL) + if (this->last_point != NULL) { this->last_point->smooth = csmooth; + this->last_point->smooth_orig = csmooth; + } else ththrow(("no line point specified")) break; @@ -433,6 +435,7 @@ void thline::insert_line_point(int nargs, char ** args, double * nums) plp->subtype = this->csubtype; plp->smooth = TT_AUTO; + plp->smooth_orig = TT_AUTO; if (this->last_point == NULL) { this->last_point = plp; @@ -532,7 +535,7 @@ void thline::preprocess() // check reversion thdb2dlp * c_item, * n_item, * t_item; thdb2dpt * t_point; - int t_tags, t_subtype, t_smooth; + int t_tags, t_subtype, t_smooth, t_smooth_orig; double t_rsize, t_lsize, t_orient; bool tmpreverse = this->reverse; @@ -571,6 +574,7 @@ void thline::preprocess() t_lsize = this->first_point->lsize; t_orient = this->first_point->orient; t_smooth = this->first_point->smooth; + t_smooth_orig = this->first_point->smooth_orig; t_subtype = this->last_point->subtype; c_item = this->first_point; while (c_item != NULL) { @@ -581,6 +585,7 @@ void thline::preprocess() c_item->rsize = c_item->nextlp->rsize; c_item->orient = c_item->nextlp->orient; c_item->smooth = c_item->nextlp->smooth; + c_item->smooth_orig = c_item->nextlp->smooth_orig; c_item->subtype = c_item->nextlp->subtype; } else { c_item->point = t_point; @@ -589,6 +594,7 @@ void thline::preprocess() c_item->rsize = t_rsize; c_item->orient = t_orient; c_item->smooth = t_smooth; + c_item->smooth_orig = t_smooth_orig; c_item->subtype = t_subtype; } c_item = c_item->nextlp; diff --git a/thscrapen.h b/thscrapen.h index f782e0d7..2cbe1563 100644 --- a/thscrapen.h +++ b/thscrapen.h @@ -29,6 +29,7 @@ #ifndef thscrapen_h #define thscrapen_h +#include #include /** diff --git a/thscrapis.cxx b/thscrapis.cxx index 84a3a18b..7f5a809d 100644 --- a/thscrapis.cxx +++ b/thscrapis.cxx @@ -1717,4 +1717,4 @@ void thscrapis::dim_interpolate(double x, double y, double z, double & zu, doubl zd = zdown; } -#endif \ No newline at end of file +#endif diff --git a/thscrapis.h b/thscrapis.h index 9df5695b..65ad7cab 100644 --- a/thscrapis.h +++ b/thscrapis.h @@ -29,10 +29,11 @@ #ifndef thscrapis_h #define thscrapis_h +#include #include #include #include "thdb3d.h" -#include "extern/lxMath.h" +#include "loch/lxMath.h" #define THSCRAPISRES 0.001 //#define THSCRAPIS_NEW3D 1 diff --git a/thscraplo.h b/thscraplo.h index c41a0e3d..c32fcf91 100644 --- a/thscraplo.h +++ b/thscraplo.h @@ -29,6 +29,7 @@ #ifndef thscraplo_h #define thscraplo_h +#include #include enum { diff --git a/thscraplp.cxx b/thscraplp.cxx index 3ae00bda..ae82e03c 100644 --- a/thscraplp.cxx +++ b/thscraplp.cxx @@ -28,7 +28,7 @@ #include "thscraplp.h" #include "thscrap.h" #include "thexpmap.h" -#include "extern/lxMath.h" +#include "loch/lxMath.h" thscraplp::thscraplp() { diff --git a/thscraplp.h b/thscraplp.h index 94a61e36..7ac70bc9 100644 --- a/thscraplp.h +++ b/thscraplp.h @@ -29,6 +29,7 @@ #ifndef thscraplp_h #define thscraplp_h +#include #include "thdb1d.h" #include diff --git a/thsymbolset.cxx b/thsymbolset.cxx index 6d55c5ab..62608f07 100644 --- a/thsymbolset.cxx +++ b/thsymbolset.cxx @@ -1527,4 +1527,5 @@ void thsymbolset::export_mp_symbol_options(FILE * mpf, int sym_id) } else { fprintf(mpf,"drawoptions();\n"); } -} \ No newline at end of file +} + diff --git a/thversion.h b/thversion.h index cf146059..e742468c 100644 --- a/thversion.h +++ b/thversion.h @@ -1 +1 @@ -#define THVERSION "5.3.7" +#define THVERSION "5.3.8" diff --git a/thwarp.h b/thwarp.h index e42b2226..6be381e2 100644 --- a/thwarp.h +++ b/thwarp.h @@ -29,6 +29,7 @@ #ifndef thwarp_h #define thwarp_h +#include #include "thpic.h" #include "thsketch.h" diff --git a/xtherion/global.tcl b/xtherion/global.tcl index f0b8f4c7..fcb239bd 100644 --- a/xtherion/global.tcl +++ b/xtherion/global.tcl @@ -153,6 +153,7 @@ set xth(gui,xvi_walls_oclr) gray60 set xth(gui,xvi_shot_clr) gray50 set xth(gui,xvi_station_fclr) black set xth(gui,xvi_station_oclr) black +set xth(gui,xvi_station_size) 3.0 set xth(gui,xvi_sketch_line_width) 1 set xth(gui,me,nozoom) 1 diff --git a/xtherion/me.tcl b/xtherion/me.tcl index cd48800e..f61444a0 100644 --- a/xtherion/me.tcl +++ b/xtherion/me.tcl @@ -1116,6 +1116,7 @@ proc xth_me_area_motion {x y} { proc xth_me_bind_area_drag {tagOrId imgx} { global xth $xth(me,can) bind $tagOrId <1> "xth_me_cmds_click_area $tagOrId %x %y" + $xth(me,can) bind $tagOrId <$xth(kb_control)-1> "xth_me_cmds_click_area $xth(me,canid,area) %x %y" $xth(me,can) bind $tagOrId "xth_me_area_motion %x %y" $xth(me,can) bind $tagOrId "xth_me_area_start_drag $tagOrId \"$imgx\" %x %y" $xth(me,can) bind $tagOrId <$xth(gui,rmb)> "xth_me_area_start_drag $tagOrId \"$imgx\" %x %y" @@ -2072,12 +2073,18 @@ menubutton $lnc.lpa -text [mc "Edit line"] -anchor w -font $xth(gui,lfont) \ xth_status_bar me $lnc.lpa [mc "Insert/delete line point. Split line."] Button $lnc.upd -text [mc "Update"] -anchor center -font $xth(gui,lfont) \ -state disabled -command {xth_me_cmds_update {}} -width 10 +Button $lnc.trace -text [mc "Continue tracing"] -anchor center -font $xth(gui,lfont) \ + -state disabled -command {xth_me_cmds_line_trace} -width 10 +Button $lnc.vector -text [mc "Convert to curve"] -anchor center -font $xth(gui,lfont) \ + -state disabled -command {xth_me_cmds_line_poly2bezier} -width 10 xth_status_bar me $lnc.upd [mc "Click this button to apply line changes."] menu $lnc.lpa.m -tearoff 0 -font $xth(gui,lfont) $lnc.lpa.m add command -label [mc "Insert point"] -command {xth_me_cmds_start_linept_insert} -state disabled $lnc.lpa.m add command -label [mc "Delete point"] -command {xth_me_cmds_delete_linept {} {}} -state disabled $lnc.lpa.m add command -label [mc "Split line"] -command {xth_me_cmds_line_split} -state disabled +$lnc.lpa.m add command -label [mc "Trace line"] -command {xth_me_cmds_line_trace_start} +$lnc.lpa.m add command -label [mc "Convert to curve"] -command {xth_me_cmds_line_poly2bezier} #Button $lnc.insp -text "Insert" -anchor center -font $xth(gui,lfont) \ # -state disabled -width 10 -command {xth_me_cmds_start_linept_insert} @@ -2116,6 +2123,8 @@ grid $lnc.cls -row $crow -column 1 -sticky news incr crow grid $plf -row $crow -column 0 -columnspan 2 -sticky news incr crow +set xth(ctrl,me,line,tracerow) $crow +incr crow grid $lnc.lpa -row $crow -column 0 -sticky news grid $lnc.upd -row $crow -column 1 -sticky news incr crow diff --git a/xtherion/me_cmds.tcl b/xtherion/me_cmds.tcl index 1d90731a..e7ed21f9 100644 --- a/xtherion/me_cmds.tcl +++ b/xtherion/me_cmds.tcl @@ -1393,6 +1393,11 @@ proc xth_me_cmds_click {id tagOrId x y mx my} { xth_me_cmds_end_line } else { # vytvori novy bod + # ak sme klikli na XVIbod, tak hodime presne tam + if {[regexp {XVIstI(\d+)S(\d+)} [$xth(me,can) itemcget $tagOrId -tags] dum imgx sti]} { + set x [lindex [lindex $xth(me,imgs,$imgx,XVIstationsX) $sti] 0] + set y [lindex [lindex $xth(me,imgs,$imgx,XVIstationsX) $sti] 1] + } xth_me_cmds_start_create_linept $tagOrId $x $y $mx $my } } @@ -2094,6 +2099,10 @@ proc xth_me_cmds_drag_to {id pid x y} { set nx $xth(me,cmds,$nid,$npid,x) set ny $xth(me,cmds,$nid,$npid,y) return [list 1 $nx $ny] + } elseif {[regexp {(^|\s)XVIstI(\d+)S(\d+)} $tgs d1 d2 imgx sti]} { + set nx [lindex [lindex $xth(me,imgs,$imgx,XVIstationsX) $sti] 0] + set ny [lindex [lindex $xth(me,imgs,$imgx,XVIstationsX) $sti] 1] + return [list 1 $nx $ny] } return 0 } diff --git a/xtherion/me_cmds2.tcl b/xtherion/me_cmds2.tcl index 7c921c9c..88bd932b 100644 --- a/xtherion/me_cmds2.tcl +++ b/xtherion/me_cmds2.tcl @@ -84,6 +84,8 @@ proc xth_me_cmds_update_line_ctrl {id} { $xth(ctrl,me,line).themetype configure -state normal $xth(ctrl,me,line).lpa configure -state normal $xth(ctrl,me,line).upd configure -state normal + $xth(ctrl,me,line).trace configure -state normal + $xth(ctrl,me,line).vector configure -state normal $xth(ctrl,me,line).lpa.m entryconfigure [mc "Insert point"] -state normal $xth(ctrl,me,line).lpa.m entryconfigure [mc "Delete point"] -state normal $xth(ctrl,me,line).pl.l configure -takefocus 1 \ @@ -129,6 +131,8 @@ proc xth_me_cmds_update_line_ctrl {id} { $xth(ctrl,me,line).themetype configure -state disabled $xth(ctrl,me,line).lpa configure -state disabled $xth(ctrl,me,line).upd configure -state disabled + $xth(ctrl,me,line).trace configure -state disabled + $xth(ctrl,me,line).vector configure -state disabled $xth(ctrl,me,line).lpa.m entryconfigure [mc "Insert point"] -state disabled $xth(ctrl,me,line).lpa.m entryconfigure [mc "Delete point"] -state disabled $xth(ctrl,me,line).pl.l configure -takefocus 0 \ @@ -1085,7 +1089,7 @@ proc xth_me_cmds_create_line {ix mode type opts lines} { $px $py $px2 $py2 {} {} $smth $rot $rsz $lsz $opts 1.0 } - if {$mode} { + if {$mode == 1} { set xth(me,cmds,$id,close) 0 } else { xth_me_cmds_postprocess_line $id @@ -1111,13 +1115,17 @@ proc xth_me_cmds_postprocess_line {id} { } # overi uzavretie + set postclose 0 if {$xth(me,cmds,$id,close) != 0} { if {($xth(me,cmds,$id,[lindex $xl 0],x) == $xth(me,cmds,$id,[lindex $xl $lix],x)) && \ ($xth(me,cmds,$id,[lindex $xl 0],y) == $xth(me,cmds,$id,[lindex $xl $lix],y)) && \ ($lix > 0)} { set xth(me,cmds,$id,close) 1 } else { - set xth(me,cmds,$id,close) 0 + if {$xth(me,cmds,$id,close) == 1} { + set postclose 1 + } + set xth(me,cmds,$id,close) 0 } } @@ -1191,6 +1199,10 @@ proc xth_me_cmds_postprocess_line {id} { } } + if {$postclose} { + xth_me_cmds_close_line $id 0 + } + } @@ -2007,7 +2019,7 @@ proc xth_me_cmds_update_linept_list {id pid} { } -proc xth_me_cmds_close_line {id} { +proc xth_me_cmds_close_line {id {unredo 1}} { global xth # prida bod ak treba, ak je novy, oznaci ho set xl $xth(me,cmds,$id,xplist) @@ -2049,10 +2061,11 @@ proc xth_me_cmds_close_line {id} { set remode "" set unmode "" } - xth_me_unredo_action [mc "line closing"] \ - "$unpoint\nset xth(me,cmds,$id,close) 0\nxth_me_cmds_update_line_vars $id $olpid\nxth_me_cmds_update_line_data $id\nxth_me_prev_cmd \$xth(me,cmds,$id,data)\n$unmode" \ - "$repoint\nset xth(me,cmds,$id,close) 1\nxth_me_cmds_update_line_vars $id $nwpid\nxth_me_cmds_update_line_data $id\nxth_me_prev_cmd \$xth(me,cmds,$id,data)\n$remode" - + if {$unredo} { + xth_me_unredo_action [mc "line closing"] \ + "$unpoint\nset xth(me,cmds,$id,close) 0\nxth_me_cmds_update_line_vars $id $olpid\nxth_me_cmds_update_line_data $id\nxth_me_prev_cmd \$xth(me,cmds,$id,data)\n$unmode" \ + "$repoint\nset xth(me,cmds,$id,close) 1\nxth_me_cmds_update_line_vars $id $nwpid\nxth_me_cmds_update_line_data $id\nxth_me_prev_cmd \$xth(me,cmds,$id,data)\n$remode" + } } @@ -3100,11 +3113,11 @@ proc xth_me_cmds_set_colors {} { 4 - 5 { if {(![string equal $col $dcol]) && ($xth(me,cmds,$id,ct) == 4)} { set xth(me,curscrap) $xth(me,cmds,$id,name) -# if {[string equal $xth(me,cmds,$id,projection) extended]} { -# set xth(me,snai) -1 -# } else { -# set xth(me,snai) 1 -# } +# if {[string equal $xth(me,cmds,$id,projection) extended]} { +# set xth(me,snai) -1 +# } else { +# set xth(me,snai) 1 +# } set xth(me,snai) 1 } if {$cid != $xid} { @@ -3301,4 +3314,380 @@ proc xth_me_cmds_line_split {} { } +# todo - zistovat, ci sme nad inymi, ako prave startovacimi pt a lnpt +# pridat button na tracovanie a stop +# pridat vytvorenie bezierovej krivky +proc xth_me_image_get_color {x y {include {}} {exclude {}}} { + global xth + # najde obrazok na ktory sme klikli - ak taky ma, spocita suradnice a vrati RGB + set iid {} + foreach id [$xth(me,can) find overlapping [xth_me_real2canx $x] [xth_me_real2cany $y] [xth_me_real2canx $x] [xth_me_real2cany $y]] { + set tags [$xth(me,can) itemcget $id -tags] + if {[regexp {bgimg.*imgx(\d+)} $tags dum tmpiid]} { + set iid $tmpiid + } + if {[regexp {command} $tags]} { + if {([string length $include] > 0) && (!([regexp $include $tags])) && ([regexp $exclude $tags])} { + return 1 + } + } + } + if {[string length $iid] == 0} { + return {} + } + # calculate color + set img $xth(me,imgs,$iid,image) + set iw [image width $img] + set ih [image height $img] + set ix [expr round($x - [lindex $xth(me,imgs,$iid,position) 0])] + set iy [expr round([lindex $xth(me,imgs,$iid,position) 1] - $y)] + if {$ix < 0} {set ix 0} + if {$ix >= $iw} {set ix [expr $iw - 1]} + if {$iy < 0} {set iy 0} + if {$iy >= $ih} {set iy [expr $ih - 1]} + return [$img get $ix $iy] +} + +proc xth_me_cmds_line_trace_stop {} { + global xth + set xth(ctrl,me,line,tracecontinue) 0 +} + +proc xth_me_cmds_line_trace_start {} { + global xth + set xth(ctrl,me,line,tracedist) 0.0 + xth_me_cmds_line_trace +} +proc xth_me_cmds_line_trace {} { + global xth + xth_me_cmds_update {} + set xth(ctrl,me,line,tracecontinue) 1 + if {$xth(ctrl,me,line,tracerow) > 0} { + grid $xth(ctrl,me,line).trace -row $xth(ctrl,me,line,tracerow) -column 0 -sticky news + grid $xth(ctrl,me,line).vector -row $xth(ctrl,me,line,tracerow) -column 1 -sticky news + set xth(ctrl,me,line,tracebtnfg) [$xth(ctrl,me,line).trace cget -fg] + set xth(ctrl,me,line,tracebtnbg) [$xth(ctrl,me,line).trace cget -bg] + set xth(ctrl,me,line,tracebtnafg) [$xth(ctrl,me,line).trace cget -activeforeground] + set xth(ctrl,me,line,tracebtnabg) [$xth(ctrl,me,line).trace cget -activebackground] + set xth(ctrl,me,line,tracerow) 0 + } + set id $xth(me,cmds,selid) + set npx [llength $xth(me,cmds,$id,xplist)] + if {$npx < 3} {return} + # zoberieme posledne 2 body na ciare + set px0 [lindex $xth(me,cmds,$id,xplist) [expr $npx - 3]] + set px1 [lindex $xth(me,cmds,$id,xplist) [expr $npx - 2]] + set xth(me,cmds,selpid) 0 + # spocitame ich vzdialenost + set x0 $xth(me,cmds,$id,$px0,x) + set y0 $xth(me,cmds,$id,$px0,y) + set x1 $xth(me,cmds,$id,$px1,x) + set y1 $xth(me,cmds,$id,$px1,y) + set dx [expr $x1 - $x0] + set dy [expr $y1 - $y0] + set l [expr hypot($dx, $dy)] + if {($x0 == $x1) && ($y0 == $y1)} { + return + } + if {$l < 1.0} {set l 1.0} + set tcol [xth_me_image_get_color $x1 $y1] + if {[llength $tcol] != 3} {return} + if {$xth(ctrl,me,line,tracedist) == 0.0} { + set xth(ctrl,me,line,tracedist) $l + set xth(ctrl,me,line,tracecolor) $tcol + set dist $l + } else { + set dist $xth(ctrl,me,line,tracedist) + set tcol $xth(ctrl,me,line,tracecolor) + } + xth_me_cmds_line_trace_point_cycle $dist $tcol + return +} + +proc xth_me_cmds_line_trace_point_cycle {dist tcol} { + global xth + set next [xth_me_cmds_line_trace_point $dist $tcol] + set cont [expr [llength $next] > 0] + if {(!$cont) && ($dist > 2.0)} { + set next [xth_me_cmds_line_trace_point [expr $dist / 2.0] $tcol] + set cont [expr [llength $next] > 0] + } + if {(!$cont)} { + set next [xth_me_cmds_line_trace_point [expr $dist * 2.0] $tcol] + set cont [expr [llength $next] > 0] + } + if {$cont && $xth(ctrl,me,line,tracecontinue) && ([llength $next] == 2)} { + $xth(ctrl,me,line).trace configure -command {xth_me_cmds_line_trace_stop} -text [mc "Stop tracing"] \ + -fg white -bg red -activeforeground white -activebackground red + set lt 0 + set ld 100 + catch { + set lt $xth(ctrl,me,line,traceltime) + set ld $xth(ctrl,me,line,traceldelay) + } + set xth(ctrl,me,line,traceltime) [clock clicks -milliseconds] + set cd [expr 100 - $xth(ctrl,me,line,traceltime) + $lt] + if {$cd < 0} { + set cd 0 + } + if {$cd > 100} { + set cd 100 + } + set cd [expr int(0.95 * $ld + 0.05 * $cd)] + set xth(ctrl,me,line,traceldelay) $cd + after $cd "after idle \"xth_me_cmds_line_trace_point_cycle $dist [list $tcol]\"" + } else { + $xth(ctrl,me,line).trace configure -command {xth_me_cmds_line_trace} -text [mc "Continue tracing"] \ + -fg $xth(ctrl,me,line,tracebtnfg) -bg $xth(ctrl,me,line,tracebtnbg) \ + -activeforeground $xth(ctrl,me,line,tracebtnafg) -activebackground $xth(ctrl,me,line,tracebtnabg) + } +} + + +proc xth_me_cmds_line_trace_point {dist tcol} { + + global xth + set id $xth(me,cmds,selid) + if {$xth(me,cmds,$id,ct) != 3} {return} + set npx [llength $xth(me,cmds,$id,xplist)] + if {$npx < 3} {return} + if {$xth(me,cmds,$id,close)} {return} + + # zoberieme posledne 2 body na ciare + set pxs [lindex $xth(me,cmds,$id,xplist) 0] + set px0 [lindex $xth(me,cmds,$id,xplist) [expr $npx - 3]] + set px1 [lindex $xth(me,cmds,$id,xplist) [expr $npx - 2]] + set xth(me,cmds,selpid) 0 + + set itags "pt$id\\.$px1|ln$id\\.$px1" + set etags "pt$id\\.\\d+|ln$id\\.\\d+" + + # spocitame ich vzdialenost + set xs $xth(me,cmds,$id,$pxs,x) + set ys $xth(me,cmds,$id,$pxs,y) + set x0 $xth(me,cmds,$id,$px0,x) + set y0 $xth(me,cmds,$id,$px0,y) + set x1 $xth(me,cmds,$id,$px1,x) + set y1 $xth(me,cmds,$id,$px1,y) + set dx [expr $x1 - $x0] + set dy [expr $y1 - $y0] + set l [expr hypot($dx, $dy)] + if {($x0 == $x1) && ($y0 == $y1)} { + return + } + set dx [expr $dx / $l * $dist] + set dy [expr $dy / $l * $dist] + + set resol 1.0 + xth_me_center_to [list $x1 $y1] + set da [expr atan2($resol, $dist)] + set maxta [expr $da * (2.0 * $dist / $resol)] + set minta [expr -1.0 * $maxta] + set tR [lindex $tcol 0] + set tG [lindex $tcol 1] + set tB [lindex $tcol 2] + if {[llength $tcol] == 0} { + return + } + + # spocitame polkruznicu + set mode 0 + set ta 0.0 + set sa {} + set ea {} + set cstep 0.0 + set goback 0 + while {$mode >= 0} { + set tx [expr $x1 + $dx * cos($ta) + $dy * sin($ta)] + set ty [expr $y1 - $dx * sin($ta) + $dy * cos($ta)] + set ccol [xth_me_image_get_color $tx $ty $itags $etags] + if {[llength $ccol] != 3} { + set ceq 0 + } else { + set dR [expr [lindex $ccol 0] - $tR] + set dG [expr [lindex $ccol 1] - $tG] + set dB [expr [lindex $ccol 2] - $tB] + set ceq [expr [expr ($dR * $dR) + ($dG * $dG) + ($dB * $dB)] < 1600] + } + switch $mode { + 0 { + if {$ceq} { + set sa $ta + set ea $ta + if {$ta == 0.0} { + set mode 1 + set goback 1 + } elseif {$ta < 0.0} { + set mode 1 + } else { + set mode 2 + } + } else { + if {$ta == 0.0} { + set ta $da + } elseif {$ta < 0.0} { + set ta [expr -1.0 * $ta + $da] + } else { + set ta [expr -1.0 * $ta] + } + } + } + 1 { + # odratavame + if {$ceq} { + set sa $ta + set ta [expr $ta - $da] + } else { + if $goback { + set ta [expr $ea + $da] + set mode 2 + set goback 0 + } else { + set mode -1 + } + } + } + 2 { + # priratavame + if {$ceq} { + set ea $ta + set ta [expr $ta + $da] + } else { + if $goback { + set ta [expr $sa - $da] + set mode 1 + set goback 0 + } else { + set mode -1 + } + } + } + } + if {($ta > $maxta) || ($ta < $minta)} { + set mode -1 + } + } + if {[llength $sa] == 0} { + return + } + + # vypocitame bod + set ta [expr 0.5 * ($sa + $ea)] + set tx [expr $x1 + $dx * cos($ta) + $dy * sin($ta)] + set ty [expr $y1 - $dx * sin($ta) + $dy * cos($ta)] + + set ok 0 + set tryclose [expr ($npx > 3) && (hypot($x1 - $xs, $y1 - $ys) < $dist)] + if {$tryclose} { + set ttx $tx + set tty $ty + set tx $xs + set ty $ys + } + while {!$ok} { + set nin 0 + set nto 0 + for {set t 0.0} {$t <= $dist} {set t [expr $t + 1.0]} { + set lx [expr $x1 + ($tx - $x1) / $dist * $t] + set ly [expr $y1 + ($ty - $y1) / $dist * $t] + if {$tryclose} { + set ccol [xth_me_image_get_color $lx $ly] + } else { + set ccol [xth_me_image_get_color $lx $ly $itags $etags] + } + if {[llength $ccol] == 1} { + return + } elseif {[llength $ccol] == 0} { + set ceq 0 + } else { + set dR [expr [lindex $ccol 0] - $tR] + set dG [expr [lindex $ccol 1] - $tG] + set dB [expr [lindex $ccol 2] - $tB] + set ceq [expr [expr ($dR * $dR) + ($dG * $dG) + ($dB * $dB)] < 1600] + } + if {$ceq} {incr nin} + incr nto + } + if {double($nin)/double($nto) < 0.5} { + if {$tryclose} { + set tryclose 0 + set tx $ttx + set ty $tty + } else { + return + } + } else { + set ok 1 + } + } + + # vlozi bod na ciare + if {$tryclose} { + xth_me_cmds_close_line $id + return 1 + } else { + xth_me_cmds_start_create_linept {} [format "%.2f" $tx] [format "%.2f" $ty] 0 0 + xth_me_cmds_end_create_linept 0 0 0 + return [list $tx $ty] + } + +} + +proc xth_me_cmds_line_poly2bezier {} { + global xth + set id $xth(me,cmds,selid) + if {$xth(me,cmds,$id,ct) != 3} {return} + set npx [llength $xth(me,cmds,$id,xplist)] + if {$npx < 4} {return} + foreach x $xth(me,cmds,$id,xplist) { + if {($x != 0) && ($xth(me,cmds,$id,$x,idn) || $xth(me,cmds,$id,$x,idp))} return + } + set cdir [pwd] + cd $xth(me,fpath) + set f [open "therion.bci" w] + foreach x $xth(me,cmds,$id,xplist) { + if {$x != 0} { + puts $f "$xth(me,cmds,$id,$x,x) $xth(me,cmds,$id,$x,y)" + } + } + close $f + set f [open "therion.bco" w] + close $f + update idletasks + catch { + set thid [open "|$xth(gui,compcmd) -b" r] + read $thid + close $thid + } + set data {} + catch { + set f [open "therion.bco" r] + while {![eof $f]} { + set ln [gets $f] + if {[regexp {\d+} $ln]} { + lappend data $ln + } + } + close $f + } + catch { + file delete therion.bci + file delete therion.bco + } + cd $cdir + if {[llength $data] == 0} {return} + set type $xth(me,cmds,$id,type) + set opts " $xth(me,cmds,$id,options)" + if {$xth(me,cmds,$id,reverse)} { + set opts "$opts -reverse on" + } + if {$xth(me,cmds,$id,close)} { + set opts "$opts -close on" + } + xth_me_cmds_delete $id + xth_me_cmds_create_line 0 2 $type $opts $data + xth_me_cmds_set_mode 0 + return +} + \ No newline at end of file diff --git a/xtherion/me_imgs.tcl b/xtherion/me_imgs.tcl index 83fd0c5c..fbb2c28d 100644 --- a/xtherion/me_imgs.tcl +++ b/xtherion/me_imgs.tcl @@ -443,7 +443,7 @@ proc xth_me_imgs_xvi_redraw {imgx} { lappend xth(me,imgs,$imgx,XVIstationsX) [list $cx $cy] set cx [xth_me_real2canx $cx] set cy [xth_me_real2cany $cy] - $xth(me,can) coords [format "%sST%d" $id $i] [expr $cx - 3.0] [expr $cy - 3.0] [expr $cx + 3.0] [expr $cy + 3.0] + $xth(me,can) coords [format "%sST%d" $id $i] [expr $cx - $xth(gui,xvi_station_size)] [expr $cy - $xth(gui,xvi_station_size)] [expr $cx + $xth(gui,xvi_station_size)] [expr $cy + $xth(gui,xvi_station_size)] } if {$xth(me,imgs,$imgx,vsb) == 1} { @@ -799,7 +799,7 @@ proc xth_me_image_insert {xx yy fname iidx imgx} { if {$xth(gui,me,nozoom)} { set subimg [image create photo] set subcimg [$xth(me,can) create image 0 0 -image $subimg -anchor nw \ - -tags "$imgid bgimg"] + -tags "$imgid bgimg imgx$imgx"] xth_me_bind_area_drag $subcimg $imgx xth_me_bind_image_drag $subcimg $imgx set iw [image width $imgid] @@ -807,34 +807,34 @@ proc xth_me_image_insert {xx yy fname iidx imgx} { lappend xth(me,imgs,$imgx,subimgs) [list $subimg $subcimg 0 0 $iw $ih] $xth(me,can) lower $xth(me,imgs,$imgx,image) command if {$iidx > 0} { - $xth(me,can) lower $xth(me,imgs,$imgx,image) $xth(me,imgs,[lindex $xth(me,imgs,xlist) [expr $iidx - 1]],image) + $xth(me,can) lower $xth(me,imgs,$imgx,image) $xth(me,imgs,[lindex $xth(me,imgs,xlist) [expr $iidx - 1]],image) } } else { set iw [image width $imgid] set ih [image height $imgid] set subisize 128 for {set subx 0} {$subx < $iw} {incr subx $subisize} { - for {set suby 0} {$suby < $ih} {incr suby $subisize} { - set subxx [expr $subx + $subisize] - set subyy [expr $suby + $subisize] - if {$subxx > $iw} { - set subxx $iw - } - if {$subyy > $ih} { - set subyy $ih - } - set subimg [image create photo] - set subcimg [$xth(me,can) create image 0 0 -image $subimg -anchor nw \ - -tags "$imgid bgimg"] - xth_me_bind_area_drag $subcimg $imgx - xth_me_bind_image_drag $subcimg $imgx - lappend xth(me,imgs,$imgx,subimgs) [list $subimg $subcimg $subx $suby $subxx $subyy] - } + for {set suby 0} {$suby < $ih} {incr suby $subisize} { + set subxx [expr $subx + $subisize] + set subyy [expr $suby + $subisize] + if {$subxx > $iw} { + set subxx $iw + } + if {$subyy > $ih} { + set subyy $ih + } + set subimg [image create photo] + set subcimg [$xth(me,can) create image 0 0 -image $subimg -anchor nw \ + -tags "$imgid bgimg imgx$imgx"] + xth_me_bind_area_drag $subcimg $imgx + xth_me_bind_image_drag $subcimg $imgx + lappend xth(me,imgs,$imgx,subimgs) [list $subimg $subcimg $subx $suby $subxx $subyy] + } } $xth(me,can) lower $xth(me,imgs,$imgx,image) command set iidx [lsearch -exact $xth(me,imgs,xlist) $imgx] if {$iidx > 0} { - $xth(me,can) lower $xth(me,imgs,$imgx,image) $xth(me,imgs,[lindex $xth(me,imgs,xlist) [expr $iidx - 1]],image) + $xth(me,can) lower $xth(me,imgs,$imgx,image) $xth(me,imgs,[lindex $xth(me,imgs,xlist) [expr $iidx - 1]],image) } } } diff --git a/xtherion/ver.tcl b/xtherion/ver.tcl index f91bb10e..f3fd3df3 100644 --- a/xtherion/ver.tcl +++ b/xtherion/ver.tcl @@ -1 +1 @@ -set xth(about,ver) 5.3.7 +set xth(about,ver) 5.3.8 diff --git a/xtherion/xtherion.ini b/xtherion/xtherion.ini index ef1d1a1a..455ce213 100644 --- a/xtherion/xtherion.ini +++ b/xtherion/xtherion.ini @@ -112,6 +112,8 @@ # set xth(gui,xvi_station_oclr) black ## station fill color # set xth(gui,xvi_station_fclr) black +## station size (radius) +# set xth(gui,xvi_station_size) 3.0 ## survey shot color # set xth(gui,xvi_shot_clr) gray50 ## walls outline color