digit.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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*, int);
  16. int AddActionsBefore(void);
  17. void AddActionsAfter(int, int);
  18. /* settings */
  19. struct _settings {
  20. bool breakLines;
  21. } settings;
  22. /* undo/redo */
  23. enum action_type { ADD, DEL };
  24. struct action_meta {
  25. action_type type;
  26. int line;
  27. long offset;
  28. };
  29. std::map<int, std::vector<action_meta> > changesets;
  30. int changesetCurrent; /* first changeset to apply */
  31. int AddActionToChangeset(int, action_type, int);
  32. int ApplyChangeset(int, bool);
  33. void FreeChangeset(int);
  34. int RemoveActionFromChangeset(int, action_type, int);
  35. /* message dialogs */
  36. wxString msgCaption;
  37. void DisplayMsg(void);
  38. void Only2DMsg(void);
  39. void ReadLineMsg(int);
  40. void DeadLineMsg(int);
  41. void WriteLineMsg(void);
  42. void BackgroundMapMsg(const char *);
  43. void DblinkMsg(int);
  44. void DbDriverMsg(const char *);
  45. void DbDatabaseMsg(const char *, const char *);
  46. void DbExecuteMsg(const char *);
  47. void DbSelectCursorMsg(const char *);
  48. void GetLineCatsMsg(int);
  49. public:
  50. Digit(DisplayDriver *, void *);
  51. ~Digit();
  52. int InitCats();
  53. int AddLine(int, std::vector<double>, int, int,
  54. const char*, int, double);
  55. int RewriteLine(int, std::vector<double>,
  56. const char*, int, double);
  57. int SplitLine(double, double, double,
  58. double);
  59. int DeleteLines(bool);
  60. int MoveLines(double, double, double,
  61. const char*, int, double);
  62. int FlipLines();
  63. int MergeLines();
  64. int BreakLines();
  65. int SnapLines(double);
  66. int ConnectLines(double);
  67. int TypeConvLines();
  68. int ZBulkLabeling(double, double, double, double,
  69. double, double);
  70. int CopyLines(std::vector<int>, const char*);
  71. int MoveVertex(double, double, double,
  72. double, double, double,
  73. const char*, int,
  74. double, double);
  75. int ModifyLineVertex(int, double, double, double,
  76. double);
  77. std::vector<int> SelectLinesByQuery(double, double, double,
  78. double, double, double, bool,
  79. int, int, double);
  80. int CopyCats(std::vector<int>, std::vector<int>, bool);
  81. int GetCategory(int);
  82. std::map<int, std::vector<int> > GetLineCats(int);
  83. int SetLineCats(int, int, std::vector<int>, bool);
  84. std::vector<int> GetLayers();
  85. int Undo(int);
  86. int GetUndoLevel();
  87. void UpdateSettings(bool);
  88. };
  89. #endif /* WXVDIGIT_DIGIT_H */