pm_numerical.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * File : pm_numerical.h
  3. * COPYRIGHT (C) 2012-2017, Shanghai Real-Thread Technology Co., Ltd
  4. *
  5. * Change Logs:
  6. * Date Author Notes
  7. * 2017-11-05 realthread the first version
  8. */
  9. #pragma once
  10. #include <vector>
  11. #include <pm_widget.h>
  12. #include <pm_image.h>
  13. #include "resource.h"
  14. namespace Persimmon
  15. {
  16. class Numerical : public Widget
  17. {
  18. public:
  19. enum NUM_ALIGN //对齐方式,默认纵向居中,横向有靠左,靠右,居中
  20. {
  21. ALIGN_LEFT = 0x00,
  22. ALIGN_RIGHT = 0x01,
  23. ALIGN_CENTER = 0x02,
  24. };
  25. Numerical(const Rect& rect);
  26. virtual ~Numerical();
  27. void addImgPath(const char *img) //添加数字图片对应路径,从0 - 9 按顺序添加
  28. {
  29. imgPath.push_back(rt_strdup(img));
  30. }
  31. void setNumWidth(int width) //设置数字图片,所占宽度
  32. {
  33. numWidth = width;
  34. }
  35. void setDigit(int digit) //设置数值位数显示,高位填0
  36. {
  37. this->digit = digit;
  38. }
  39. void setNumericalUnit(Image *image) //设置单位显示
  40. {
  41. if (unit)
  42. delete unit;
  43. unit = image;
  44. }
  45. void setNumericalMinus(Image *image) //设置支持显示负号
  46. {
  47. if (minus)
  48. delete minus;
  49. minus = image;
  50. }
  51. void setNumAlign(enum NUM_ALIGN algn = ALIGN_CENTER) //设置对齐方式
  52. {
  53. numAlgn = algn;
  54. }
  55. void setNumerical(int value) //设置显示数值
  56. {
  57. numerical = value;
  58. }
  59. virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
  60. const Rect &srcRect = Rect(),
  61. RenderFlag flags = DrawNormal);
  62. private:
  63. enum NUM_ALIGN numAlgn;
  64. std::vector<char *> imgPath;
  65. Image *unit, *minus;
  66. int numerical, numWidth, digit;
  67. };
  68. }