SXXXXXXX_PyBusMonitor1553/cpp/GrifoScope/GrifoSdkEif/pub/inc/GC/GcGraphicItem.h
2025-12-17 07:59:30 +01:00

123 lines
2.8 KiB
C++

#ifndef GCGRAPHICITEM_H
#define GCGRAPHICITEM_H
#include "GcObject.h"
#include "gfd.h"
#include "gfd_grifo_fonts.h"
typedef gfd_framebuffer_t gfd_grifo_framebuffer_t;
class GcLogicPalette: public GcObject
{
public:
enum logic_color_t
{
c_normal=0,
c_friend,
c_foe,
c_unknown,
c_bold,
c_dimmed,
c_dbg_highlight,
c_spare
};
GcLogicPalette(const char* const name);
enum { num_of_logical_colors=c_spare+1};
unsigned int operator[](logic_color_t c) const { return ctab[c];}
void mapTo(logic_color_t logic, unsigned int phy)
{
ctab[logic]=phy;
}
GC_OBJ_MON_DECLARE(GcLogicPalette)
public:
unsigned int ctab[num_of_logical_colors];
//virtual const mex_mt_tag_t* mexMetatype() const;
friend class GcObjectDebugMonitor;
};
class GcPaintContext
{
public:
GcPaintContext(gfd_grifo_framebuffer_t& fb_, gfd_framebuffer_t& fb_full_, GcLogicPalette& pal_):
fb(fb_),
fb_full(fb_full_),
pal(&pal_)
{
}
GcPaintContext(const GcPaintContext& pCx):
fb(pCx.fb),
fb_full(pCx.fb_full),
pal(pCx.pal)
{
}
gfd_grifo_framebuffer_t& framebuffer() const { return fb;}
gfd_framebuffer_t& full_framebuffer() const { return fb_full;}
GcLogicPalette& palette() const { return *pal;}
void setPalette(GcLogicPalette& p) const { pal=&p;}
unsigned int color_occlusion() const { return 0;}
unsigned int color_background() const { return 1;}
unsigned int color_debug() const { return 64;}
unsigned int color_base_raw_sim() const { return 128;}
/*
const gfd_font16_t* font_debug_small() const { return &gfd_font_pc_8x8;}
const gfd_font16_t* font_debug_normal() const { return &gfd_font_fisar_9x12;}
const gfd_font16_t* font_normal() const { return &gfd_font_f5_14x20;}
const gfd_font16_t* font_small() const { return &gfd_font_f5_10x14;}
const gfd_font16_t* font_big() const {return &gfd_font_m3_16x24;}
const gfd_font16_t* font_normal2() const { return &gfd_font_m3_12x18;}
*/
protected:
gfd_grifo_framebuffer_t& fb;
gfd_framebuffer_t& fb_full;
mutable GcLogicPalette* pal;
};
class GcGraphicItem: public GcObject
{
public:
GcGraphicItem(const char* name);
bool visible() const { return isVisible;}
bool active() const { return isActive;}
virtual void recalculate();
virtual void draw(const GcPaintContext&);
virtual void draw_normal(const GcPaintContext&);
virtual void draw_blink_in(const GcPaintContext&);
virtual void draw_blink_out(const GcPaintContext&);
virtual void draw_inactive(const GcPaintContext&);
virtual void draw_invisible(const GcPaintContext&);
virtual void draw_deg_info(const GcPaintContext&);
virtual void draw_dbg_bounding_box(const GcPaintContext&);
GC_OBJ_MON_DECLARE(GcGraphicItem)
protected:
bool isVisible;
bool isActive;
};
#endif // GCGRAPHICITEM_H