digit.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. int SetCategory(int, int);
  13. struct Map_info** OpenBackgroundVectorMap(const char *);
  14. int BreakLineAtIntersection(int, struct line_pnts*, int);
  15. int AddActionsBefore(void);
  16. void AddActionsAfter(int, int);
  17. /* settings */
  18. struct _settings {
  19. bool breakLines;
  20. } settings;
  21. /* undo/redo */
  22. enum action_type { ADD, DEL };
  23. struct action_meta {
  24. action_type type;
  25. int line;
  26. long offset;
  27. };
  28. std::map<int, std::vector<action_meta> > changesets;
  29. int changesetCurrent; /* first changeset to apply */
  30. int changesetEnd; /* last changeset to be applied */
  31. int AddActionToChangeset(int, action_type, int);
  32. int ApplyChangeset(int, bool);
  33. void FreeChangeset(int);
  34. int RemoveActionFromChangeset(int, action_type, int);
  35. public:
  36. Digit(DisplayDriver *, void *);
  37. ~Digit();
  38. int InitCats();
  39. int AddLine(int, std::vector<double>, int, int,
  40. const char*, int, double);
  41. int RewriteLine(int, std::vector<double>,
  42. const char*, int, double);
  43. int SplitLine(double, double, double,
  44. double);
  45. int DeleteLines(bool);
  46. int MoveLines(double, double, double,
  47. const char*, int, double);
  48. int FlipLines();
  49. int MergeLines();
  50. int BreakLines();
  51. int SnapLines(double);
  52. int ConnectLines(double);
  53. int TypeConvLines();
  54. int ZBulkLabeling(double, double, double, double,
  55. double, double);
  56. int CopyLines(std::vector<int>, const char*);
  57. int MoveVertex(double, double, double,
  58. double, double, double,
  59. const char*, int,
  60. double, double);
  61. int ModifyLineVertex(int, double, double, double,
  62. double);
  63. std::vector<int> SelectLinesByQuery(double, double, double,
  64. double, double, double, bool,
  65. int, int, double);
  66. int CopyCats(std::vector<int>, std::vector<int>, bool);
  67. int GetCategory(int);
  68. std::map<int, std::vector<int> > GetLineCats(int);
  69. int SetLineCats(int, int, std::vector<int>, bool);
  70. std::vector<int> GetLayers();
  71. int Undo(int);
  72. int GetUndoLevel();
  73. void UpdateSettings(bool);
  74. };
  75. #endif /* WXVDIGIT_DIGIT_H */