载入中...
搜索中...
未找到
PcgPhotoModeColorPicker.cpp
浏览该文件的文档.
6namespace eve::ui {namespace {bool finite4(float a,float b,float c,float d){return std::isfinite(a)&&std::isfinite(b)&&std::isfinite(c)&&std::isfinite(d);}}
8Result<void> PcgPhotoModeColorPicker::open(float r,float g,float b,float a,bool hdr){if(!finite4(r,g,b,a))return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"color must be finite","ui.pcgPhotoModeColorPicker"));float nr=r,ng=g,nb=b;if(hdr&&(a>1.f||a<0.f)){nr*=a;ng*=a;nb*=a;}r_=nr;g_=ng;b_=nb;a_=a;hdr_=hdr;open_=true;front_=true;return Result<void>::success();}
9Result<void> PcgPhotoModeColorPicker::setLast(float r,float g,float b,float a){if(!finite4(r,g,b,a))return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"color must be finite","ui.pcgPhotoModeColorPicker"));lastR_=r;lastG_=g;lastB_=b;lastA_=a;return Result<void>::success();}
10Result<void> PcgPhotoModeColorPicker::setChannel(float&dst,float v){if(!std::isfinite(v))return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"color must be finite","ui.pcgPhotoModeColorPicker"));dst=v;++revision_;return Result<void>::success();}
11Result<void> PcgPhotoModeColorPicker::setRed(float v){return setChannel(r_,v);}Result<void> PcgPhotoModeColorPicker::setGreen(float v){return setChannel(g_,v);}Result<void> PcgPhotoModeColorPicker::setBlue(float v){return setChannel(b_,v);}Result<void> PcgPhotoModeColorPicker::setHdr(float v){return setChannel(a_,v);}
12void PcgPhotoModeColorPicker::reset()noexcept{r_=lastR_;g_=lastG_;b_=lastB_;a_=lastA_;revision_+=5;}
13float PcgPhotoModeColorPicker::getPreviewRed()const noexcept{return r_*(hdrActive()?a_:1.f);}float PcgPhotoModeColorPicker::getPreviewGreen()const noexcept{return g_*(hdrActive()?a_:1.f);}float PcgPhotoModeColorPicker::getPreviewBlue()const noexcept{return b_*(hdrActive()?a_:1.f);}float PcgPhotoModeColorPicker::getHdrSwatch()const noexcept{return std::clamp((a_+5.f)/10.f,0.f,1.f);}PcgUiRequestStatus PcgPhotoModeColorPicker::consumeBringToFront()noexcept{auto v=front_?PcgUiRequestStatus::Requested:PcgUiRequestStatus::None;front_=false;return v;}
14void exposePcgPhotoModeColorPickerBindings(ssq::Table&t){auto c=t.addClass("PcgPhotoModeColorPicker",ssq::Class::Ctor<PcgPhotoModeColorPicker()>());auto vm=t.getHandle();c.addFunc("open",[vm](PcgPhotoModeColorPicker*s,float r,float g,float b,float a,bool h){return eve::script::projectResult(vm,s->open(r,g,b,a,h));});c.addFunc("setLast",[vm](PcgPhotoModeColorPicker*s,float r,float g,float b,float a){return eve::script::projectResult(vm,s->setLast(r,g,b,a));});c.addFunc("setFocusedName",&PcgPhotoModeColorPicker::setFocusedName);c.addFunc("close",[](PcgPhotoModeColorPicker*s){s->close();});c.addFunc("setRed",[vm](PcgPhotoModeColorPicker*s,float v){return eve::script::projectResult(vm,s->setRed(v));});c.addFunc("setGreen",[vm](PcgPhotoModeColorPicker*s,float v){return eve::script::projectResult(vm,s->setGreen(v));});c.addFunc("setBlue",[vm](PcgPhotoModeColorPicker*s,float v){return eve::script::projectResult(vm,s->setBlue(v));});c.addFunc("setHdr",[vm](PcgPhotoModeColorPicker*s,float v){return eve::script::projectResult(vm,s->setHdr(v));});c.addFunc("reset",[](PcgPhotoModeColorPicker*s){s->reset();});c.addFunc("getRed",[](const PcgPhotoModeColorPicker*s){return s->getRed();});c.addFunc("getGreen",[](const PcgPhotoModeColorPicker*s){return s->getGreen();});c.addFunc("getBlue",[](const PcgPhotoModeColorPicker*s){return s->getBlue();});c.addFunc("getAlpha",[](const PcgPhotoModeColorPicker*s){return s->getAlpha();});c.addFunc("getPreviewRed",[](const PcgPhotoModeColorPicker*s){return s->getPreviewRed();});c.addFunc("getPreviewGreen",[](const PcgPhotoModeColorPicker*s){return s->getPreviewGreen();});c.addFunc("getPreviewBlue",[](const PcgPhotoModeColorPicker*s){return s->getPreviewBlue();});c.addFunc("getHdrSwatch",[](const PcgPhotoModeColorPicker*s){return s->getHdrSwatch();});c.addFunc("getHdrEnabled",[](const PcgPhotoModeColorPicker*s){return s->getHdrEnabled();});c.addFunc("getOpen",[](const PcgPhotoModeColorPicker*s){return s->getOpen();});c.addFunc("getFocusedName",[](const PcgPhotoModeColorPicker*s){return s->getFocusedName();});c.addFunc("getChangeRevision",[](const PcgPhotoModeColorPicker*s){return s->getChangeRevision();});c.addFunc("consumeBringToFront",[](PcgPhotoModeColorPicker*s){return s->consumeBringToFront()==PcgUiRequestStatus::Requested;});}
The single Squirrel projection for common Result, Status and Value.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Caller-owned runtime model of Pcg PhotoModeColorPicker.
Definition PcgPhotoModeColorPicker.h:11
Result< void > open(float r, float g, float b, float a, bool hdr)
Open with a source color and preserve Pcg's HDR preprocessing.
Definition PcgPhotoModeColorPicker.cpp:8
Result< void > setHdr(float v)
Set HDR alpha and publish one change.
Definition PcgPhotoModeColorPicker.cpp:11
void setFocusedName(const std::string &name)
Set the focused display name, exposed with Pcg parentheses.
Definition PcgPhotoModeColorPicker.h:15
Result< void > setGreen(float v)
Set one raw channel and publish one change.
Definition PcgPhotoModeColorPicker.cpp:11
float getPreviewRed() const noexcept
Return displayed/applied RGB after optional HDR multiplication.
Definition PcgPhotoModeColorPicker.cpp:13
PcgUiRequestStatus consumeBringToFront() noexcept
Return and clear the SetAsLastSibling request.
Definition PcgPhotoModeColorPicker.cpp:13
float getPreviewBlue() const noexcept
Definition PcgPhotoModeColorPicker.cpp:13
float getPreviewGreen() const noexcept
Definition PcgPhotoModeColorPicker.cpp:13
float getHdrSwatch() const noexcept
Return HDR slider grayscale swatch.
Definition PcgPhotoModeColorPicker.cpp:13
void reset() noexcept
Restore last RGBA and reproduce four slider events plus explicit callback.
Definition PcgPhotoModeColorPicker.cpp:12
Result< void > setRed(float v)
Set one raw channel and publish one change.
Definition PcgPhotoModeColorPicker.cpp:11
Result< void > setLast(float r, float g, float b, float a)
Store the color restored by reset.
Definition PcgPhotoModeColorPicker.cpp:9
Result< void > setBlue(float v)
Set one raw channel and publish one change.
Definition PcgPhotoModeColorPicker.cpp:11
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Definition SquirrelBinding.cpp:470
Definition Component.cpp:5
void exposePcgPhotoModeColorPickerBindings(ssq::Table &t)
Register Pcg photo-mode color-picker bindings.
Definition PcgPhotoModeColorPicker.cpp:14
PcgUiRequestStatus
Explicit status returned when consuming a one-shot Pcg UI request.
Definition PcgUiStatus.h:4
@ Requested
@ InvalidArgument