digit.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. /* undo/redo */
  15. enum action_type { ADD, DELETE, REWRITE };
  16. struct action_meta {
  17. action_type type;
  18. int line;
  19. /* TODO: replace by new Vect_restore_line() */
  20. int ltype; // line type
  21. struct line_pnts *Points;
  22. struct line_cats *Cats;
  23. };
  24. std::map<int, std::vector<action_meta> > changesets;
  25. int changesetCurrent; /* first changeset to apply */
  26. int changesetDead; /* first dead changeset */
  27. int AddActionToChangeset(int, action_type, int);
  28. int ApplyChangeset(int, bool);
  29. void FreeChangeset(int);
  30. int RemoveActionFromChangeset(int, action_type, int);
  31. public:
  32. Digit(DisplayDriver *);
  33. ~Digit();
  34. int InitCats();
  35. int AddLine(int, std::vector<double>, int, int,
  36. const char*, int, double);
  37. int RewriteLine(int, std::vector<double>,
  38. const char*, int, double);
  39. int SplitLine(double, double, double,
  40. double);
  41. int DeleteLines(bool);
  42. int MoveLines(double, double, double,
  43. const char*, int, double);
  44. int FlipLines();
  45. int MergeLines();
  46. int BreakLines();
  47. int SnapLines(double);
  48. int ConnectLines(double);
  49. int TypeConvLines();
  50. int ZBulkLabeling(double, double, double, double,
  51. double, double);
  52. int CopyLines(std::vector<int>, const char*);
  53. int MoveVertex(double, double, double,
  54. double, double, double,
  55. const char*, int,
  56. double, double);
  57. int ModifyLineVertex(int, double, double, double,
  58. double);
  59. std::vector<int> SelectLinesByQuery(double, double, double,
  60. double, double, double, bool,
  61. int, int, double);
  62. int CopyCats(std::vector<std::vector<int> >, std::vector<int>);
  63. int GetCategory(int);
  64. std::map<int, std::vector<int> > GetLineCats(int);
  65. int SetLineCats(int, int, std::vector<int>, bool);
  66. std::vector<int> GetLayers();
  67. int Undo(int);
  68. int GetUndoLevel();
  69. };
  70. #endif /* WXVDIGIT_DIGIT_H */