12 #ifndef hifi_render_utils_HighlightStage_h
13 #define hifi_render_utils_HighlightStage_h
16 #include "HighlightStyle.h"
23 Highlight(
const std::string& selectionName,
const HighlightStyle& style) : _selectionName{ selectionName }, _style{ style } { }
25 std::string _selectionName;
26 HighlightStyle _style;
30 class HighlightStage :
public TypedStage<Highlight> {
32 Index addHighlight(
const std::string& selectionName,
const HighlightStyle& style = HighlightStyle());
33 Index getHighlightIdBySelection(
const std::string& selectionName)
const;
35 const IDList& getActiveHighlightIds()
const {
return _activeElementIDs; }
37 using HighlightStagePointer = std::shared_ptr<HighlightStage>;
39 class HighlightStageConfig :
public render::Job::Config {
41 Q_PROPERTY(QString selectionName READ getSelectionName WRITE setSelectionName NOTIFY dirty)
42 Q_PROPERTY(
bool isOutlineSmooth READ isOutlineSmooth WRITE setOutlineSmooth NOTIFY dirty)
43 Q_PROPERTY(
float colorR READ getColorRed WRITE setColorRed NOTIFY dirty)
44 Q_PROPERTY(
float colorG READ getColorGreen WRITE setColorGreen NOTIFY dirty)
45 Q_PROPERTY(
float colorB READ getColorBlue WRITE setColorBlue NOTIFY dirty)
46 Q_PROPERTY(
float outlineWidth READ getOutlineWidth WRITE setOutlineWidth NOTIFY dirty)
47 Q_PROPERTY(
float outlineIntensity READ getOutlineIntensity WRITE setOutlineIntensity NOTIFY dirty)
48 Q_PROPERTY(
float unoccludedFillOpacity READ getUnoccludedFillOpacity WRITE setUnoccludedFillOpacity NOTIFY dirty)
49 Q_PROPERTY(
float occludedFillOpacity READ getOccludedFillOpacity WRITE setOccludedFillOpacity NOTIFY dirty)
53 using SelectionStyles = std::map<std::string, HighlightStyle>;
55 QString getSelectionName()
const {
return QString(_selectionName.c_str()); }
56 void setSelectionName(
const QString& name);
58 bool isOutlineSmooth()
const {
return getStyle()._isOutlineSmooth; }
59 void setOutlineSmooth(
bool isSmooth);
61 float getColorRed()
const {
return getStyle()._outlineUnoccluded.color.r; }
62 void setColorRed(
float value);
64 float getColorGreen()
const {
return getStyle()._outlineUnoccluded.color.g; }
65 void setColorGreen(
float value);
67 float getColorBlue()
const {
return getStyle()._outlineUnoccluded.color.b; }
68 void setColorBlue(
float value);
70 float getOutlineWidth()
const {
return getStyle()._outlineWidth; }
71 void setOutlineWidth(
float value);
73 float getOutlineIntensity()
const {
return getStyle()._outlineUnoccluded.alpha; }
74 void setOutlineIntensity(
float value);
76 float getUnoccludedFillOpacity()
const {
return getStyle()._fillUnoccluded.alpha; }
77 void setUnoccludedFillOpacity(
float value);
79 float getOccludedFillOpacity()
const {
return getStyle()._fillOccluded.alpha; }
80 void setOccludedFillOpacity(
float value);
82 std::string _selectionName {
"contextOverlayHighlightList" };
83 mutable SelectionStyles _styles;
85 const HighlightStyle& getStyle()
const;
86 HighlightStyle& editStyle();
92 class HighlightStageSetup {
94 using Config = HighlightStageConfig;
95 using JobModel = render::Job::Model<HighlightStageSetup, Config>;
97 HighlightStageSetup() {}
99 void configure(
const Config& config);
100 void run(
const RenderContextPointer& renderContext);
104 HighlightStageConfig::SelectionStyles _styles;