digit.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #ifndef WXVDIGIT_DIGIT_H
  2. #define WXVDIGIT_DIGIT_H
  3. #define GSQL_MAX 4000
  4. #include <vector>
  5. #include <map>
  6. class Digit
  7. {
  8. private:
  9. /* layer / max category */
  10. std::map<int, int> cats;
  11. DisplayDriver *display;
  12. wxWindow *parentWin;
  13. int SetCategory(int, int);
  14. struct Map_info** OpenBackgroundVectorMap(const char *);
  15. int BreakLineAtIntersection(int, struct line_pnts*);
  16. /* settings */
  17. struct _settings {
  18. bool breakLines;
  19. } settings;
  20. /* undo/redo */
  21. enum action_type { ADD, DELETE, REWRITE };
  22. struct action_meta {
  23. action_type type;
  24. int line;
  25. /* TODO: replace by new Vect_restore_line() */
  26. int ltype; // line type
  27. struct line_pnts *Points;
  28. struct line_cats *Cats;
  29. };
  30. std::map<int, std::vector<action_meta> > changesets;
  31. int changesetCurrent; /* first changeset to apply */
  32. int changesetDead; /* first dead changeset */
  33. int AddActionToChangeset(int, action_type, int);
  34. int ApplyChangeset(int, bool);
  35. void FreeChangeset(int);
  36. int RemoveActionFromChangeset(int, action_type, int);
  37. /* message dialogs */
  38. wxString msgCaption;
  39. void DisplayMsg(void);
  40. void Only2DMsg(void);
  41. void ReadLineMsg(int);
  42. void DeadLineMsg(int);
  43. void WriteLineMsg(void);
  44. void BackgroundMapMsg(const char *);
  45. void DblinkMsg(int);
  46. void DbDriverMsg(const char *);
  47. void DbDatabaseMsg(const char *, const char *);
  48. void DbExecuteMsg(const char *);
  49. void DbSelectCursorMsg(const char *);
  50. void GetLineCatsMsg(int);
  51. public:
  52. Digit(DisplayDriver *, void *);
  53. ~Digit();
  54. int InitCats();
  55. int AddLine(int, std::vector<double>, int, int,
  56. const char*, int, double);
  57. int RewriteLine(int, std::vector<double>,
  58. const char*, int, double);
  59. int SplitLine(double, double, double,
  60. double);
  61. int DeleteLines(bool);
  62. int MoveLines(double, double, double,
  63. const char*, int, double);
  64. int FlipLines();
  65. int MergeLines();
  66. int BreakLines();
  67. int SnapLines(double);
  68. int ConnectLines(double);
  69. int TypeConvLines();
  70. int ZBulkLabeling(double, double, double, double,
  71. double, double);
  72. int CopyLines(std::vector<int>, const char*);
  73. int MoveVertex(double, double, double,
  74. double, double, double,
  75. const char*, int,
  76. double, double);
  77. int ModifyLineVertex(int, double, double, double,
  78. double);
  79. std::vector<int> SelectLinesByQuery(double, double, double,
  80. double, double, double, bool,
  81. int, int, double);
  82. int CopyCats(std::vector<int>, std::vector<int>, bool);
  83. int GetCategory(int);
  84. std::map<int, std::vector<int> > GetLineCats(int);
  85. int SetLineCats(int, int, std::vector<int>, bool);
  86. std::vector<int> GetLayers();
  87. int Undo(int);
  88. int GetUndoLevel();
  89. void UpdateSettings(bool);
  90. };
  91. #endif /* WXVDIGIT_DIGIT_H */