33,311
社区成员
发帖
与我相关
我的任务
分享
#ifndef __RAINBOWPIXLE_H__
#define __RAINBOWPIXLE_H__
#include <iostream>
namespace rpf
{
class Canvas;
class Graphics;
/**
* 画布类,包含Graphics
*/
class Canvas
{
private:
Graphics* graphics;
public:
Canvas();
Graphics* getGraphics();
};
/**
* 画笔类,属于Canvas
*/
class Graphics
{
private:
Canvas* canvas;
public:
void init();
Graphics(Canvas* canvas);
Graphics* drawPoint(uint32_t x, uint32_t y);
};
}
#endif // !__RAINBOWPIXLE_H__
#include "include/rpf.h"
namespace rpf
{
Canvas::Canvas()
{
this->graphics = new Graphics(this);
}
Graphics* Canvas::getGraphics()
{
return this->graphics;
}
}
#include "include/rpf.h"
namespace rpf
{
using namespace std;
Graphics::Graphics(Canvas* canvas)
{
this->canvas = canvas;
}
Graphics* Graphics::drawPoint(uint32_t x, uint32_t y)
{
cout << "Draw a dot at " << x << " and " << y << endl;
return this;
}
}
#include "include/rpf.h"
int main(int argc, char** argv)
{
using namespace rpf;
Canvas* canvas = new Canvas();
Graphics* g = canvas->getGraphics();
g->drawPoint(100, 200)->drawPoint(30,40);
return 0;
}
CC = $(CROSS_COMPILE)g++
CXX = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
AR = $(CROSS_COMPILE)ar
CPP_SOURCES = $(wildcard ./src/*.cpp)
OUTPUT = ./debug
TARGET = $(OUTPUT)/exec
INSTALLDIR = ./
CPPOBJS = $(objects)run.o $(objects)canvas.o $(objects)graphics.o
DIR_OBJS = $(patsubst %.cpp,%.o,$(CPP_SOURCES))
OBJS_NAME = $(notdir $(patsubst %.cpp,%.o,$(CPP_SOURCES)))
OBJS = $(addprefix $(OUTPUT)/,$(notdir $(patsubst %.cpp,%.o,$(CPP_SOURCES))))
INCS =-Isrc/include
LIBS =-std=c++11 -lstdc++
CFLAGS += -O2 $(INC_DIRS)
LKFLAGS += $(LIBS)
all:$(TARGET)
$(TARGET):$(OUTPUT) $(OBJS)
$(CC) $(INCS) $(OBJS) $(LDFLAGS) -o $(TARGET)
$(OBJS):$(CPP_SOURCES)
@echo "BUILD : " $< " -> " $@
$(CC) $(INCS) $(LIBS) -c $< -o $@
distclean :
-rm $(OUTPUT)/* -f
namespace rpf
{
class RP_Graphics
{
private:
RP_Brush brush; // 画笔样式
RP_Canvas* canvas; // 操作的画布
public:
RP_Graphics();
RP_Graphics(RP_Canvas* canvas);
~RP_Graphics();
RP_Brush& getBrush(); // 获得画笔,获得后可直接修改
RP_Graphics drawPoint(const RP_Point& point) const; // 画点
RP_Graphics drawLine(const int size ,const RP_Point** point) const; // 划线
RP_Graphics drawRect(const RP_Rectangle& rect) const; // 绘制矩形
RP_Graphics fillRect(const RP_Rectangle& rect) const; // 绘制填充矩形
RP_Graphics drawCircle(const RP_Rectangle& rect) const; // 绘制圆形
RP_Graphics fillCircle(const RP_Point& point , const uint32_t radius) const; // 绘制圆形
RP_Graphics drawPolygon(const int size ,const RP_Point** point) const; // 绘制多边形
RP_Graphics fillPolygon(const int size ,const RP_Point** point) const; // 绘制多边形
// 绘制Canvas和Image的函数
RP_Graphics draw(RP_Canvas& canvas , const RP_Point& rect) const;
RP_Graphics draw(RP_Canvas& canvas , const RP_Rectangle& rect) const;
RP_Graphics draw(RP_Canvas& canvas , const RP_Rectangle& r_rect,const RP_Point& rect) const;
RP_Graphics draw(RP_Canvas& canvas , const RP_Rectangle& r_rect,const RP_Rectangle& d_rect) const;
};
}