digit.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 AddActionToChangeset(int, action_type, int);
  31. int ApplyChangeset(int, bool);
  32. void FreeChangeset(int);
  33. int RemoveActionFromChangeset(int, action_type, int);
  34. public:
  35. Digit(DisplayDriver *, void *);
  36. ~Digit();
  37. int InitCats();
  38. int AddLine(int, std::vector<double>, int, int,
  39. const char*, int, double);
  40. int RewriteLine(int, std::vector<double>,
  41. const char*, int, double);
  42. int SplitLine(double, double, double,
  43. double);
  44. int DeleteLines(bool);
  45. int MoveLines(double, double, double,
  46. const char*, int, double);
  47. int FlipLines();
  48. int MergeLines();
  49. int BreakLines();
  50. int SnapLines(double);
  51. int ConnectLines(double);
  52. int TypeConvLines();
  53. int ZBulkLabeling(double, double, double, double,
  54. double, double);
  55. int CopyLines(std::vector<int>, const char*);
  56. int MoveVertex(double, double, double,
  57. double, double, double,
  58. const char*, int,
  59. double, double);
  60. int ModifyLineVertex(int, double, double, double,
  61. double);
  62. std::vector<int> SelectLinesByQuery(double, double, double,
  63. double, double, double, bool,
  64. int, int, double);
  65. int CopyCats(std::vector<int>, std::vector<int>, bool);
  66. int GetCategory(int);
  67. std::map<int, std::vector<int> > GetLineCats(int);
  68. int SetLineCats(int, int, std::vector<int>, bool);
  69. std::vector<int> GetLayers();
  70. int Undo(int);
  71. int GetUndoLevel();
  72. void UpdateSettings(bool);
  73. };
  74. #endif /* WXVDIGIT_DIGIT_H */