2025-03-26 16:56:51 +08:00

78 lines
3.4 KiB
C++

/*
* 说明: 图像轨迹对象(画图)
*
* 作者: 杨海洋
* 日期: 2023-03-06
*/
#ifndef GRAPHICIMAGE_H
#define GRAPHICIMAGE_H
#include "IGraphicAbstract.h"
class GraphicImage : public IGraphicAbstract
{
public:
GraphicImage(int width = IMG_SIZE_WIDTH, int height = IMG_SIZE_HEIGHT);
virtual ~GraphicImage();
virtual void recreating() override;
virtual void resize(int w, int h) override;
virtual void setScaling(int s) override;
virtual int scale() override;
virtual double scaling() override;
virtual int width() override;
virtual int height() override;
virtual int depth() override;
virtual int channel() override;
virtual const TMapping& mapping() override;
virtual int size() override;
virtual void clean() override;
virtual const char* data() override;
virtual const char* image() override;
virtual void display() override;
virtual void drawLine (const Pointi& p1, const Pointi& p2,
const RgbColor& color = RGB_BLUE, int thickness = IMG_THICKNESS) override;
virtual void drawLine (const Linei& line,
const RgbColor& color = RGB_BLUE, int thickness = IMG_THICKNESS) override;
virtual void drawDashedLine (const Pointi& p1, const Pointi& p2, int divide = IMG_DIVIDE,
const RgbColor& color = RGB_BLUE, int thickness = IMG_THICKNESS) override;
virtual void drawDashedLine (const Linei& line, int divide = IMG_DIVIDE,
const RgbColor& color = RGB_BLUE, int thickness = IMG_THICKNESS) override;
virtual void drawDottedLine (const Pointi& p1, const Pointi& p2, int divide = IMG_DIVIDE,
const RgbColor& color = RGB_BLUE, int radius = IMG_RADIUS) override;
virtual void drawDottedLine (const Linei& line, int divide = IMG_DIVIDE,
const RgbColor& color = RGB_BLUE, int radius = IMG_RADIUS) override;
virtual void drawText (const Pointi& p, const std::string& text,
const RgbColor& color = RGB_BLACK, int size = IMG_FONT_SIZE) override;
virtual void drawText2 (const Pointi& p, const std::string& text,
const RgbColor& color = RGB_BLACK, const RgbColor& bg = RGB_RED,
int size = IMG_FONT_SIZE) override;
virtual void drawPoint (const Pointi& p,
const RgbColor& color = RGB_RED, int radius = IMG_RADIUS) override;
private:
void toRgb();
private:
unsigned char* m_rgb = nullptr;
CxxImage* m_img = nullptr;
TMapping m_mapping;
int m_scale = MAP_OPER_SCALE;
const int m_depth = 1;
const int m_channel = 4;
const unsigned char m_default = 255; //默认底色 白色
bool m_showVersion = true;
bool m_showTime = true;
};
#endif // GRAPHICIMAGE_H