|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD>: <20><>ʽת<CABD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// ת<><D7AA>GeoMap3.2<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2009-8-04
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "GeoMapDataType.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace NFormatReader
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
namespace NGeoMapReader
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//*****************************************
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD>(Geomap 3.2 lsl)
|
|
|
|
|
|
//*****************************************
|
|
|
|
|
|
|
|
|
|
|
|
// Geomap <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
struct GMShapeLineIndex
|
|
|
|
|
|
{
|
|
|
|
|
|
int pos; // <20><><EFBFBD>ݿ<EFBFBD>ʼλ<CABC><CEBB>
|
|
|
|
|
|
int len; // <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Geomap <20><><EFBFBD><EFBFBD>ͼԪ
|
|
|
|
|
|
struct GMShapeLineElement
|
|
|
|
|
|
{
|
|
|
|
|
|
::byte eType; // ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD>(0:<3A><><EFBFBD><EFBFBD>,1:ֱ<><D6B1>,2:<3A><>Բ,3:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,4:<3A><>,5:<3A><>Բ<EFBFBD><D4B2>)
|
|
|
|
|
|
::byte isFill; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GColor lineColor; // <20><>/<2F>߽<EFBFBD><DFBD><EFBFBD>ɫ
|
|
|
|
|
|
GColor fillColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
char x1,y1,x2,y2; // ͼԪ<CDBC><D4AA><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Geomap <20><><EFBFBD>Ͳ<EFBFBD>
|
|
|
|
|
|
struct GMShapeLineLayer
|
|
|
|
|
|
{
|
|
|
|
|
|
::byte yTop; // <20>ϲ<EFBFBD><CFB2>߶<EFBFBD>
|
|
|
|
|
|
::byte yBottom; // <20>²<EFBFBD><C2B2>߶<EFBFBD>
|
|
|
|
|
|
::byte width; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
::byte nElement; // ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
::byte type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1:<3A><>ʼ<EFBFBD><CABC>,2:ѭ<><D1AD><EFBFBD><EFBFBD>,4:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
::byte res1; // δ֪(?=1)
|
|
|
|
|
|
GMShapeLineElement *elem; // ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Geomap <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
struct GMShapeLine
|
|
|
|
|
|
{
|
|
|
|
|
|
::byte nameLen; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
|
|
|
|
|
|
char name[256]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int user; // <20>Ƿ<EFBFBD><C7B7>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>(0:ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>,1:<3A>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
::byte nLayer; // <20><><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>
|
|
|
|
|
|
GMShapeLineLayer *layer; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Windows ϵͳȱʡ<C8B1><CAA1>ɫ<EFBFBD><C9AB>
|
|
|
|
|
|
static GColor GMsysColors[48] = {
|
|
|
|
|
|
{255,128,128,0},{255,255,128,0},{128,255,128,0},{ 0,255,128,0},{128,255,255,0},{ 0,128,255,0},{255,128,192,0},{255,128,255,0},
|
|
|
|
|
|
{255, 0, 0,0},{255,255, 0,0},{128,255, 0,0},{ 0,255, 64,0},{ 0,255,255,0},{ 0,128,192,0},{128,128,192,0},{255, 0,255,0},
|
|
|
|
|
|
{128, 64, 64,0},{255,128, 64,0},{ 0,255, 0,0},{ 0,128,128,0},{ 0, 64,128,0},{128,128,255,0},{128, 0, 64,0},{255, 0,128,0},
|
|
|
|
|
|
{128, 0, 0,0},{255,128, 0,0},{ 0,128, 0,0},{ 0,128, 64,0},{ 0, 0,255,0},{ 0, 0,160,0},{128, 0,128,0},{128, 0,255,0},
|
|
|
|
|
|
{ 64, 0, 0,0},{128, 64, 0,0},{ 0, 64, 0,0},{ 0, 64, 64,0},{ 0, 0,128,0},{ 0, 0, 64,0},{ 64, 0, 64,0},{ 64, 0,128,0},
|
|
|
|
|
|
{ 0, 0, 0,0},{128,128, 0,0},{128,128, 64,0},{128,128,128,0},{ 64,128,128,0},{192,192,192,0},{ 64, 0, 64,0},{255,255,255,0}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class CGeoMapLineShapeLib
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CGeoMapLineShapeLib(void);
|
|
|
|
|
|
virtual ~CGeoMapLineShapeLib(void);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>GDI<44><49><EFBFBD><EFBFBD>)(<28><>ǰδ<C7B0><CEB4><EFBFBD><EFBFBD><EFBFBD>㴦<EFBFBD><E3B4A6>)
|
|
|
|
|
|
bool DrawLine( CDC *pDC, int lineID, bool useColor, GColor color, int size, int nVertex, CPoint *vertex);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|
|
|
|
|
static bool LoadLine(CString *fname=NULL);
|
|
|
|
|
|
// <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|
|
|
|
|
static void FreeLine();
|
|
|
|
|
|
private:
|
|
|
|
|
|
static GMShapeLine *lineShapes; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int nLine; // <20><><EFBFBD>Ϳ<EFBFBD><CDBF>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
void DrawLayer( GMShapeLineLayer layer); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
void DrawLineSeg( GMShapeLineLayer layer, int DrawType ); // <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|
|
|
|
|
void convert(CPoint &pt);
|
|
|
|
|
|
void convert(CPoint *pt, int n);
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>
|
|
|
|
|
|
bool CalcIntersectedPoint( CPoint pt11,CPoint pt12, CPoint pt21, CPoint pt22, CPoint &pt);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
int lineID = 0; // <20><><EFBFBD><EFBFBD>ID
|
|
|
|
|
|
IPoint ptStart{}; // ʵ<>ʻ<EFBFBD><CABB>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int BegPos = 0, EndPos = 0; // <20><><EFBFBD>ƵIJ<C6B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ֹλ<D6B9><CEBB>
|
|
|
|
|
|
double sina = 0,cosa = 0; // <20><>ǰ<EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
CDC *pDC = nullptr; // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool useColor = false; // <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GColor color{}; // <20>û<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
int size = 0; // <20>߿<EFBFBD>
|
|
|
|
|
|
int nVertex = 0; // <20><><EFBFBD>ߵĶ<DFB5><C4B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CPoint *vertex = nullptr; // <20><><EFBFBD>ߵĶ<DFB5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|