houxiao
2017-07-13 b022b91c0c6fa807424b6c12cc92ac5946838083
RtspFace/PL_Paint.h
@@ -2,6 +2,73 @@
#define _PL_PAINT_H_
#include "PipeLine.h"
#include "GraphicHelper.h"
/*
PLPaint Language:
COLOR F/B,R,G,B,A
FILL 0/1
PEN TYPE,WIDTH
RECT LTX,LTY,RBX,RBY
TEXT LTX,LTY,"STRING"
*/
enum PLPLCmd
{
   PLPLC__FIRST,
   PLPLC_COLOR,
   PLPLC_FILL,
   PLPLC_PEN,
   PLPLC_RECT,
   PLPLC_TEXT,
   PLPLC__LAST
};
union PLPLType
{
   int val_i;
   float val_f;
   char val_s[sizeof(int)];
    PLPLType() : val_i(0) {}
    PLPLType(int _val_i) : val_i(_val_i) {}
    PLPLType(float _val_f) : val_f(_val_f) {}
    PLPLType(const char* _val_s)
    {
        for (int i = 0; i < sizeof(val_s); i++)
            val_s[i] = _val_s[i];
    }
};
typedef std::vector<PLPLCmd> plplc_vec_t;
typedef std::vector<PLPLType> plplt_vec_t;
struct PLPLContext
{
   plplc_vec_t cmds;
   plplt_vec_t params;
    PLGH_Color_RGBA color_front;
    PLGH_Color_RGBA color_back;
    int fill;
    PLGH_Pen pen;
    PLPLContext() :
            cmds(), params(), color_front(), color_back(), fill(0), pen(0, 0)
    {}
};
struct PL_Paint_Config
{
   bool copyData;
   PLPLContext* plplCtx;
   PL_Paint_Config() :
      copyData(false), plplCtx(nullptr)
   { }
};
class PL_Paint : public PipeLineElem
{
@@ -16,6 +83,9 @@
   virtual bool gain(PipeMaterial& pm);
   
private:
   static bool pay_breaker_MBFT_YUV(const PipeMaterial* pm, void* args);
private:
   void* internal;
};