| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 |
- /******************************************************************************/
- #include "stdafx.h"
- /******************************************************************************/
- PanelImageEditor PanelImageEdit;
- /******************************************************************************/
- /******************************************************************************/
- cchar8 *PanelImageEditor::image_modes[]=
- {
- "Multiply" , // 0
- "Scale" , // 1
- "Add" , // 2
- "Add Signed", // 3
- "Blend" , // 4
- };
- /******************************************************************************/
- void PanelImageEditor::Change::create(ptr user)
- {
- data=PanelImageEdit.params;
- PanelImageEdit.undoVis();
- }
- void PanelImageEditor::Change::apply(ptr user)
- {
- PanelImageEdit.params.undo(data);
- PanelImageEdit.setChanged();
- PanelImageEdit.toGui();
- PanelImageEdit.undoVis();
- }
- void PanelImageEditor::undoVis() {SetUndo(undos, undo, redo);}
- PanelImageEditor::~PanelImageEditor() {del();}
- void PanelImageEditor::Preview(Viewport &viewport) {((PanelImageEditor*)viewport.user)->preview();}
- void PanelImageEditor::preview()
- {
- SyncLocker locker(lock);
- bool have_image=false;
- Rect rect=D.viewRect(), image_rect;
- switch(preview_mode())
- {
- case 0:
- {
- have_image=true; image_rect=panel_image.image.fit(rect); panel_image.image.draw(image_rect); image_rect.draw(BLACK, false); if(draw_depth())drawDepth(image_rect); if(draw_lines())panel_image.drawBaseLines(PURPLE, image_rect);
- }break;
- case 1:
- {
- have_image=true; image_rect=rect; image_rect.min.y=rect.centerY(); image_rect=panel_image.image.fit(image_rect); panel_image.image.draw(image_rect); image_rect.draw(TURQ, false); if(draw_depth())drawDepth(image_rect); if(draw_lines())panel_image.drawBaseLines(PURPLE, image_rect);
- Vec2 center=rect.lerp(0.5f, 0.25f);
- flt h=rect.h()*0.25f, w=h*params.width/params.height, max_w=rect.w()*0.9f; if(w>max_w){h*=max_w/w; w=max_w;}
- Rect_C rc(center, w, h);
- panel_image.draw(rc); if(draw_lines()){panel_image.drawScaledLines(RED, rc); panel_image.drawInnerPadding(GREEN, rc); rc.draw(TURQ, false);}
- }break;
- case 2: DrawPanelImage(panel_image, rect, draw_lines()); break;
- }
- if(have_image && Gui.ms()==&viewport && Cuts(Ms.pos(), image_rect))
- {
- Vec2 f(LerpR(image_rect.min.x, image_rect.max.x, Ms.pos().x)*soft.w(),
- LerpR(image_rect.max.y, image_rect.min.y, Ms.pos().y)*soft.h());
- Color c=soft.colorFLinear(f.x, f.y),
- ca=soft.areaColorAverage(f, 8);
- TextStyleParams tsp; tsp.align.set(0, 1); tsp.color=ColorInverse(ca); tsp.color.a=255; tsp.shadow=tsp.color.lum(); tsp.size=0.045f;
- D.text(tsp, Ms.pos(), S+"R:"+c.r+", G:"+c.g+", B:"+c.b+", A:"+c.a);
- }
- }
- void PanelImageEditor::drawDepth(C Rect &rect)
- {
- Memt<Vec2> points; int y=depth.h()/2; flt w=0.006f; Rect r=rect; r.extend(w*-0.5f);
- FREP(depth.w())
- {
- flt x=i/flt(depth.w()-1);
- points.add(r.lerp(x, 0.5f+0.5f*depth.pixelF(i, y)));
- }
- VI.color(RED); REP(points.elms()-1)VI.line(points[i], points[i+1], w);
- VI.end();
- }
- bool PanelImageEditor::Make(Thread &thread) {return (*(PanelImageEditor*)thread.user).make();}
- bool PanelImageEditor::make()
- {
- if(event.wait() && !thread.wantStop())
- {
- SyncLockerEx locker(lock); Params params=T.params; locker.off();
- ThreadMayUseGPUData();
- PanelImage temp; Image temp_soft, temp_depth; params.make(temp, WorkerThreads, Proj, &temp_soft, &temp_depth, true); {locker.on(); Swap(panel_image, temp); Swap(soft, temp_soft); Swap(depth, temp_depth); locker.off();}
- }
- return true;
- }
- void PanelImageEditor::Undo(PanelImageEditor &editor) {editor.undos.undo();}
- void PanelImageEditor::Redo(PanelImageEditor &editor) {editor.undos.redo();}
- void PanelImageEditor::Locate(PanelImageEditor &editor) {Proj.elmLocate(editor.elm_id);}
- void PanelImageEditor::Copy(PanelImageEditor &editor) {TextData data; FileText f; SaveProperties(editor.props, data.nodes, ' ', true); data.save(f.writeMem()); ClipSet(f.rewind().getAll());}
- void PanelImageEditor::Paste(PanelImageEditor &editor) {TextData data; FileText f; f.writeMem().putText(ClipGet()); data.load(f.rewind()); editor.force_undo_change_type="paste"; LoadProperties(editor.props, data.nodes, ' ', true); editor.force_undo_change_type=null; editor.setChanged();}
- C Rect& PanelImageEditor::rect( )C {return ::EE::Window::rect();}
- PanelImageEditor& PanelImageEditor::rect(C Rect &rect)
- {
- ::EE::Window::rect(rect);
- flt p=0.02f;
- region .rect(Rect (p, -clientHeight()+p, p+props_w+region.slidebarSize(), -0.07f));
- viewport .rect(Rect (region.rect().max.x+p+0.01f, region.rect().min.y, clientWidth()-p, -0.07f));
- preview_mode.rect(Rect_LD(viewport.rect().lu()+Vec2(0, 0.005f), 0.67f, 0.055f), 0, true);
- draw_depth .rect(Rect_L (preview_mode.rect().right()+Vec2(0.05f, 0), 0.22f, 0.05f));
- draw_lines .rect(Rect_L (draw_depth .rect().right()+Vec2(0.01f, 0), 0.22f, 0.05f));
- return T;
- }
- void PanelImageEditor::PreChanged(C Property &prop) {PanelImageEdit.undos.set(PanelImageEdit.force_undo_change_type ? PanelImageEdit.force_undo_change_type : &prop);}
- void PanelImageEditor::Changed(C Property &prop) {if(!PanelImageEdit.force_undo_change_type)PanelImageEdit.setChanged();}
- void PanelImageEditor::SetCutLeft(Params &p, C Str &t) {p.cut_left =TextBool(t); p.base.cut_left .getUTC();}
- void PanelImageEditor::SetCutRight(Params &p, C Str &t) {p.cut_right =TextBool(t); p.base.cut_right .getUTC();}
- void PanelImageEditor::SetCutTop(Params &p, C Str &t) {p.cut_top =TextBool(t); p.base.cut_top .getUTC();}
- void PanelImageEditor::SetCutBottom(Params &p, C Str &t) {p.cut_bottom=TextBool(t); p.base.cut_bottom.getUTC();}
- void PanelImageEditor::SetCutCorner00(Params &p, C Str &t) {p.cut_corners[0][0]=TextBool(t); p.base.cut_corners[0][0].getUTC();}
- void PanelImageEditor::SetCutCorner01(Params &p, C Str &t) {p.cut_corners[0][1]=TextBool(t); p.base.cut_corners[0][1].getUTC();}
- void PanelImageEditor::SetCutCorner10(Params &p, C Str &t) {p.cut_corners[1][0]=TextBool(t); p.base.cut_corners[1][0].getUTC();}
- void PanelImageEditor::SetCutCorner11(Params &p, C Str &t) {p.cut_corners[1][1]=TextBool(t); p.base.cut_corners[1][1].getUTC();}
- void PanelImageEditor::SetCutCornerSlope(Params &p, C Str &t) {p.cut_corner_slope =TextFlt(t); p.base.cut_corner_slope .getUTC();}
- void PanelImageEditor::SetCutCornerAmount(Params &p, C Str &t) {p.cut_corner_amount=TextFlt(t); p.base.cut_corner_amount.getUTC();}
- void PanelImageEditor::SetForceUniformStretch0(Params &p, C Str &t) {p.force_uniform_stretch[0]=TextBool(t); p.base.force_uniform_stretch[0].getUTC();}
- void PanelImageEditor::SetForceUniformStretch1(Params &p, C Str &t) {p.force_uniform_stretch[1]=TextBool(t); p.base.force_uniform_stretch[1].getUTC();}
- void PanelImageEditor::SetCompressed(Params &p, C Str &t) {p.base.compressed=TextBool(t); p.base.compressed_time.getUTC();}
- void PanelImageEditor::SetMipMaps(Params &p, C Str &t) {p.base.mip_maps =TextBool(t); p.base.mip_maps_time .getUTC();}
- void PanelImageEditor::SetResolution(Params &p, C Str &t) {p.resolution =TextInt (t); p.base.resolution .getUTC();}
- void PanelImageEditor::SetWidth(Params &p, C Str &t) {p.width =TextInt (t); p.base.width .getUTC();}
- void PanelImageEditor::SetHeight(Params &p, C Str &t) {p.height =TextInt (t); p.base.height .getUTC();}
- void PanelImageEditor::SetRoundCorners(Params &p, C Str &t) {p.round_corners =TextFlt (t); p.base.round_corners .getUTC();}
- void PanelImageEditor::SetLeftSlope(Params &p, C Str &t) {p.left_slope =TextFlt (t); p.base.left_slope .getUTC();}
- void PanelImageEditor::SetRightSlope(Params &p, C Str &t) {p.right_slope =TextFlt (t); p.base.right_slope .getUTC();}
- void PanelImageEditor::SetBorderSize(Params &p, C Str &t) {p.border_size =TextFlt (t); p.base.border_size .getUTC();}
- void PanelImageEditor::SetMaxSideStretch(Params &p, C Str &t) {p.max_side_stretch=TextFlt (t); p.base.max_side_stretch.getUTC();}
- void PanelImageEditor::SetExtend(Params &p, C Str &t) {p.extend =TextVec2(t); p.base.extend .getUTC();}
- void PanelImageEditor::ExtendInnerPaddLR( Params &p, C Str &t) {p.extend_inner_padd.min.x=p.extend_inner_padd.max.x=TextFlt(t); p.base.extend_inner_padd.getUTC();}
- Str PanelImageEditor::ExtendInnerPaddLR(C Params &p ) {return p.extend_inner_padd.min.x;}
- void PanelImageEditor::ExtendInnerPaddT( Params &p, C Str &t) {p.extend_inner_padd.max.y=-TextFlt(t); p.base.extend_inner_padd.getUTC();}
- Str PanelImageEditor::ExtendInnerPaddT(C Params &p ) {return -p.extend_inner_padd.max.y;}
- void PanelImageEditor::ExtendInnerPaddB( Params &p, C Str &t) {p.extend_inner_padd.min.y=TextFlt(t); p.base.extend_inner_padd.getUTC();}
- Str PanelImageEditor::ExtendInnerPaddB(C Params &p ) {return p.extend_inner_padd.min.y;}
- void PanelImageEditor::SetColor(Params &p, C Str &t) {p.color =TextVec4(t); p.base.color .getUTC();}
- void PanelImageEditor::SetColorTop(Params &p, C Str &t) {p.color_top =TextVec4(t); p.base.color_top .getUTC();}
- void PanelImageEditor::SetColorBottom(Params &p, C Str &t) {p.color_bottom=TextVec4(t); p.base.color_bottom.getUTC();}
- void PanelImageEditor::SetColorLeft(Params &p, C Str &t) {p.color_left =TextVec4(t); p.base.color_left .getUTC();}
- void PanelImageEditor::SetColorRight(Params &p, C Str &t) {p.color_right =TextVec4(t); p.base.color_right .getUTC();}
- void PanelImageEditor::SetOuterGlowColor(Params &p, C Str &t) {p.outer_glow_color =TextVec4(t); p.base.outer_glow_color .getUTC();}
- void PanelImageEditor::SetOuterGlowRadius(Params &p, C Str &t) {p.outer_glow_radius=TextFlt (t); p.base.outer_glow_radius.getUTC();}
- void PanelImageEditor::SetOuterGlowSpread(Params &p, C Str &t) {p.outer_glow_spread=TextFlt (t); p.base.outer_glow_spread.getUTC();}
- void PanelImageEditor::SetInnerGlowColor(Params &p, C Str &t) {p.inner_glow_color =TextVec4(t); p.base.inner_glow_color .getUTC();}
- void PanelImageEditor::SetInnerGlowRadius(Params &p, C Str &t) {p.inner_glow_radius=TextFlt (t); p.base.inner_glow_radius.getUTC();}
- void PanelImageEditor::SetDepth(Params &p, C Str &t) {p.depth =TextFlt (t); p.base.depth .getUTC();}
- void PanelImageEditor::SetRoundDepth(Params &p, C Str &t) {p.round_depth =TextFlt (t); p.base.round_depth .getUTC();}
- void PanelImageEditor::SetInnerDistance(Params &p, C Str &t) {p.inner_distance=TextFlt (t); p.base.inner_distance.getUTC();}
- void PanelImageEditor::SetSmoothDepth(Params &p, C Str &t) {p.smooth_depth =TextVec2(t); p.base.smooth_depth .getUTC();}
- void PanelImageEditor::SetShadowRadius(Params &p, C Str &t) {p.shadow_radius =TextFlt(t); p.base.shadow_radius .getUTC();}
- void PanelImageEditor::SetShadowOpacity(Params &p, C Str &t) {p.shadow_opacity=TextFlt(t); p.base.shadow_opacity.getUTC();}
- void PanelImageEditor::SetShadowSpread(Params &p, C Str &t) {p.shadow_spread =TextFlt(t); p.base.shadow_spread .getUTC();}
- Str PanelImageEditor::SetTopImage(C Params &p ) {return Proj.elmFullName(p.base.top_id);}
- void PanelImageEditor::SetTopImage( Params &p, C Str &t) { p.base.top_id=Proj.findElmImageID(t); p.base.top_image.getUTC();}
- Str PanelImageEditor::SetBottomImage(C Params &p ) {return Proj.elmFullName(p.base.bottom_id);}
- void PanelImageEditor::SetBottomImage( Params &p, C Str &t) { p.base.bottom_id=Proj.findElmImageID(t); p.base.bottom_image.getUTC();}
- Str PanelImageEditor::SetCenterImage(C Params &p ) {return Proj.elmFullName(p.base.center_id);}
- void PanelImageEditor::SetCenterImage( Params &p, C Str &t) { p.base.center_id=Proj.findElmImageID(t); p.base.center_image.getUTC();}
- Str PanelImageEditor::SetLeftImage(C Params &p ) {return Proj.elmFullName(p.base.left_id);}
- void PanelImageEditor::SetLeftImage( Params &p, C Str &t) { p.base.left_id=Proj.findElmImageID(t); p.base.left_image.getUTC();}
- Str PanelImageEditor::SetRightImage(C Params &p ) {return Proj.elmFullName(p.base.right_id);}
- void PanelImageEditor::SetRightImage( Params &p, C Str &t) { p.base.right_id=Proj.findElmImageID(t); p.base.right_image.getUTC();}
- Str PanelImageEditor::SetTopLeftImage(C Params &p ) {return Proj.elmFullName(p.base.top_left_id);}
- void PanelImageEditor::SetTopLeftImage( Params &p, C Str &t) { p.base.top_left_id=Proj.findElmImageID(t); p.base.top_left_image.getUTC();}
- Str PanelImageEditor::SetTopRightImage(C Params &p ) {return Proj.elmFullName(p.base.top_right_id);}
- void PanelImageEditor::SetTopRightImage( Params &p, C Str &t) { p.base.top_right_id=Proj.findElmImageID(t); p.base.top_right_image.getUTC();}
- Str PanelImageEditor::SetBottomLeftImage(C Params &p ) {return Proj.elmFullName(p.base.bottom_left_id);}
- void PanelImageEditor::SetBottomLeftImage( Params &p, C Str &t) { p.base.bottom_left_id=Proj.findElmImageID(t); p.base.bottom_left_image.getUTC();}
- Str PanelImageEditor::SetBottomRightImage(C Params &p ) {return Proj.elmFullName(p.base.bottom_right_id);}
- void PanelImageEditor::SetBottomRightImage( Params &p, C Str &t) { p.base.bottom_right_id=Proj.findElmImageID(t); p.base.bottom_right_image.getUTC();}
- void PanelImageEditor::SetImagesSize(Params &p, C Str &t) {p. images_size =TextFlt(t); p.base. images_size .getUTC();}
- void PanelImageEditor::SetTopHeight(Params &p, C Str &t) {p. top_height=TextFlt(t); p.base. top_height.getUTC();}
- void PanelImageEditor::SetBottomHeight(Params &p, C Str &t) {p. bottom_height=TextFlt(t); p.base. bottom_height.getUTC();}
- void PanelImageEditor::SetLeftRightWidth(Params &p, C Str &t) {p. left_right_width =TextFlt(t); p.base. left_right_width .getUTC();}
- void PanelImageEditor::SetTopCornerWidth(Params &p, C Str &t) {p. top_corner_width =TextFlt(t); p.base. top_corner_width .getUTC();}
- void PanelImageEditor::SetBottomCornerWidth(Params &p, C Str &t) {p.bottom_corner_width =TextFlt(t); p.base.bottom_corner_width .getUTC();}
- void PanelImageEditor::SetAmbientLight(Params &p, C Str &t) {p.light_ambient=TextFlt(t); p.base.light_ambient.getUTC();}
- void PanelImageEditor::Filter(PanelImageEditor &editor)
- {
- flt y=editor.prop_h*-0.5f; FREPA(editor.props)
- {
- Property &prop=editor.props[i];
- bool visible=(!editor.filter().is() || ContainsAll(prop.name(), editor.filter()));
- prop.visible(visible); if(visible){prop.pos(Vec2(editor.prop_x, y)); y-=editor.prop_h;}
- }
- }
- void PanelImageEditor::create()
- {
- add("Compressed" , MemberDesc(MEMBER(Params, base.compressed)).setTextToDataFunc(SetCompressed));
- add("Mip Maps" , MemberDesc(MEMBER(Params, base.mip_maps )).setTextToDataFunc(SetMipMaps ));
- add("Resolution" , MemberDesc(MEMBER(Params, resolution )).setTextToDataFunc(SetResolution)).range(1, 2048);
- add("Width" , MemberDesc(MEMBER(Params, width )).setTextToDataFunc(SetWidth )).range(1, 8).mouseEditSpeed(1.3f);
- add("Height" , MemberDesc(MEMBER(Params, height )).setTextToDataFunc(SetHeight )).range(1, 8).mouseEditSpeed(1.3f);
- add("Cutoff Left" , MemberDesc(MEMBER(Params, cut_left )).setTextToDataFunc(SetCutLeft ));
- add("Cutoff Right" , MemberDesc(MEMBER(Params, cut_right )).setTextToDataFunc(SetCutRight ));
- add("Cutoff Top" , MemberDesc(MEMBER(Params, cut_top )).setTextToDataFunc(SetCutTop ));
- add("Cutoff Bottom", MemberDesc(MEMBER(Params, cut_bottom )).setTextToDataFunc(SetCutBottom ));
- add("Uniform Horizontal Stretching", MemberDesc(MEMBER(Params, force_uniform_stretch[0])).setTextToDataFunc(SetForceUniformStretch0));
- add("Uniform Vertical Stretching" , MemberDesc(MEMBER(Params, force_uniform_stretch[1])).setTextToDataFunc(SetForceUniformStretch1));
-
- add();
- add("Cut Top Left Corner" , MemberDesc(MEMBER(Params, cut_corners[0][0])).setTextToDataFunc(SetCutCorner00));
- add("Cut Top Right Corner" , MemberDesc(MEMBER(Params, cut_corners[0][1])).setTextToDataFunc(SetCutCorner01));
- add("Cut Bottom Left Corner" , MemberDesc(MEMBER(Params, cut_corners[1][0])).setTextToDataFunc(SetCutCorner10));
- add("Cut Bottom Right Corner", MemberDesc(MEMBER(Params, cut_corners[1][1])).setTextToDataFunc(SetCutCorner11));
-
- add("Cut Corner Slope" , MemberDesc(MEMBER(Params, cut_corner_slope )).setTextToDataFunc(SetCutCornerSlope )).range(0, 2).mouseEditSpeed(0.5f);
- add("Cut Corner Amount", MemberDesc(MEMBER(Params, cut_corner_amount)).setTextToDataFunc(SetCutCornerAmount)).range(0, 1).mouseEditSpeed(0.5f);
- add("Round Corners" , MemberDesc(MEMBER(Params, round_corners )).setTextToDataFunc(SetRoundCorners )).range( 0, 1).mouseEditSpeed(0.5f);
- add("Left Slope" , MemberDesc(MEMBER(Params, left_slope )).setTextToDataFunc(SetLeftSlope )).range(-1, 1).mouseEditSpeed(0.5f);
- add("Right Slope" , MemberDesc(MEMBER(Params, right_slope )).setTextToDataFunc(SetRightSlope )).range(-1, 1).mouseEditSpeed(0.5f);
- add("Border Size" , MemberDesc(MEMBER(Params, border_size )).setTextToDataFunc(SetBorderSize )).range( 0, 1).mouseEditSpeed(0.1f);
- add("Max Side Stretch" , MemberDesc(MEMBER(Params, max_side_stretch )).setTextToDataFunc(SetMaxSideStretch )).range( 0, 16).mouseEditSpeed(0.2f);
- add("Extend" , MemberDesc(MEMBER(Params, extend )).setTextToDataFunc(SetExtend )).range( 0, 1).mouseEditSpeed(0.2f);
- add("Inner Padding Left Right", MemberDesc(DATA_REAL).setFunc(ExtendInnerPaddLR, ExtendInnerPaddLR)).range(-1, 1).mouseEditSpeed(0.1f);
- add("Inner Padding Top" , MemberDesc(DATA_REAL).setFunc(ExtendInnerPaddT , ExtendInnerPaddT )).range(-1, 1).mouseEditSpeed(0.1f);
- add("Inner Padding Bottom" , MemberDesc(DATA_REAL).setFunc(ExtendInnerPaddB , ExtendInnerPaddB )).range(-1, 1).mouseEditSpeed(0.1f);
- add();
- add("Depth" , MemberDesc(MEMBER(Params, depth )).setTextToDataFunc(SetDepth )).range(-1, 1).mouseEditSpeed(0.2f);
- add("Round Depth" , MemberDesc(MEMBER(Params, round_depth )).setTextToDataFunc(SetRoundDepth )).range( 0, 1).mouseEditSpeed(0.5f);
- add("Inner Distance" , MemberDesc(MEMBER(Params, inner_distance)).setTextToDataFunc(SetInnerDistance)).range( 0, 1).mouseEditSpeed(0.5f);
- add("Depth Smoothing", MemberDesc(MEMBER(Params, smooth_depth )).setTextToDataFunc(SetSmoothDepth )).range( 0, 1);
- add();
- add("Shadow Radius" , MemberDesc(MEMBER(Params, shadow_radius )).setTextToDataFunc(SetShadowRadius )).range(0, 1).mouseEditSpeed(0.5f);
- add("Shadow Opacity", MemberDesc(MEMBER(Params, shadow_opacity)).setTextToDataFunc(SetShadowOpacity)).range(0, 1);
- add("Shadow Spread" , MemberDesc(MEMBER(Params, shadow_spread )).setTextToDataFunc(SetShadowSpread )).range(0, 1);
- add();
- add("Color" , MemberDesc(MEMBER(Params, color )).setTextToDataFunc(SetColor )).setColor();
- add("Color Top" , MemberDesc(MEMBER(Params, color_top )).setTextToDataFunc(SetColorTop )).setColor();
- add("Color Bottom", MemberDesc(MEMBER(Params, color_bottom)).setTextToDataFunc(SetColorBottom)).setColor();
- add("Color Left" , MemberDesc(MEMBER(Params, color_left )).setTextToDataFunc(SetColorLeft )).setColor();
- add("Color Right" , MemberDesc(MEMBER(Params, color_right )).setTextToDataFunc(SetColorRight )).setColor();
- add();
- add("Outer Glow Color" , MemberDesc(MEMBER(Params, outer_glow_color )).setTextToDataFunc(SetOuterGlowColor )).setColor();
- add("Outer Glow Radius", MemberDesc(MEMBER(Params, outer_glow_radius)).setTextToDataFunc(SetOuterGlowRadius)).range(0, 1).mouseEditSpeed(0.5f);
- add("Outer Glow Spread", MemberDesc(MEMBER(Params, outer_glow_spread)).setTextToDataFunc(SetOuterGlowSpread)).range(0, 1).mouseEditSpeed(0.5f);
- add();
- add("Inner Glow Color" , MemberDesc(MEMBER(Params, inner_glow_color )).setTextToDataFunc(SetInnerGlowColor )).setColor();
- add("Inner Glow Radius", MemberDesc(MEMBER(Params, inner_glow_radius)).setTextToDataFunc(SetInnerGlowRadius)).range(0, 1).mouseEditSpeed(0.5f);
- add();
- add( "Top Image", MemberDesc(MEMBER(Params, base. top_id)).setFunc( SetTopImage, SetTopImage)).elmType(ELM_IMAGE);
- add( "Bottom Image", MemberDesc(MEMBER(Params, base. bottom_id)).setFunc( SetBottomImage, SetBottomImage)).elmType(ELM_IMAGE);
- add( "Center Image", MemberDesc(MEMBER(Params, base. center_id)).setFunc( SetCenterImage, SetCenterImage)).elmType(ELM_IMAGE);
- add( "Left Image", MemberDesc(MEMBER(Params, base. left_id)).setFunc( SetLeftImage, SetLeftImage)).elmType(ELM_IMAGE);
- add( "Right Image", MemberDesc(MEMBER(Params, base. right_id)).setFunc( SetRightImage, SetRightImage)).elmType(ELM_IMAGE);
- add( "Top Left Image", MemberDesc(MEMBER(Params, base. top_left_id)).setFunc( SetTopLeftImage, SetTopLeftImage)).elmType(ELM_IMAGE);
- add( "Top Right Image", MemberDesc(MEMBER(Params, base. top_right_id)).setFunc( SetTopRightImage, SetTopRightImage)).elmType(ELM_IMAGE);
- add( "Bottom Left Image", MemberDesc(MEMBER(Params, base. bottom_left_id)).setFunc( SetBottomLeftImage, SetBottomLeftImage)).elmType(ELM_IMAGE);
- add("Bottom Right Image", MemberDesc(MEMBER(Params, base.bottom_right_id)).setFunc(SetBottomRightImage, SetBottomRightImage)).elmType(ELM_IMAGE);
- add( "Images Size", MemberDesc(MEMBER(Params, images_size)).setTextToDataFunc(SetImagesSize )).range(0, 1024);
- add( "Top Height", MemberDesc(MEMBER(Params, top_height)).setTextToDataFunc(SetTopHeight )).range(0, 1024);
- add( "Bottom Height", MemberDesc(MEMBER(Params, bottom_height)).setTextToDataFunc(SetBottomHeight )).range(0, 1024);
- add( "Left Right Width", MemberDesc(MEMBER(Params, left_right_width)).setTextToDataFunc(SetLeftRightWidth )).range(0, 1024);
- add( "Top Corners Width", MemberDesc(MEMBER(Params, top_corner_width)).setTextToDataFunc(SetTopCornerWidth )).range(0, 1024);
- add("Bottom Corners Width", MemberDesc(MEMBER(Params, bottom_corner_width)).setTextToDataFunc(SetBottomCornerWidth)).range(0, 1024);
- add();
- add("Ambient Light", MemberDesc(MEMBER(Params, light_ambient)).setTextToDataFunc(SetAmbientLight)).range(0, 1).mouseEditSpeed(0.2f);
- add();
- add("Light 0:");
- add("Enabled" , MemberDesc(MEMBER(Params, lights[0].enabled )).setTextToDataFunc(LightEnabled <0>));
- add("Angle" , MemberDesc(MEMBER(Params, lights[0].angle )).setTextToDataFunc(LightAngle <0>)).range(-1, 1);
- add("Intensity" , MemberDesc(MEMBER(Params, lights[0].intensity )).setTextToDataFunc(LightIntensity <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Back Intensity" , MemberDesc(MEMBER(Params, lights[0].back )).setTextToDataFunc(LightBack <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Highlight" , MemberDesc(MEMBER(Params, lights[0].highlight )).setTextToDataFunc(LightHighlight <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Highlight Cutoff" , MemberDesc(MEMBER(Params, lights[0].highlight_cut )).setTextToDataFunc(LightHighlightCut <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Specular Intensity" , MemberDesc(MEMBER(Params, lights[0].specular )).setTextToDataFunc(LightSpecular <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular Back Intensity" , MemberDesc(MEMBER(Params, lights[0].specular_back )).setTextToDataFunc(LightSpecularBack <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Specular Exponent" , MemberDesc(MEMBER(Params, lights[0].specular_exp )).setTextToDataFunc(LightSpecularExp <0>)).range( 0, 256).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Specular Highlight" , MemberDesc(MEMBER(Params, lights[0].specular_highlight )).setTextToDataFunc(LightSpecularHighlight <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular Highlight Cutoff", MemberDesc(MEMBER(Params, lights[0].specular_highlight_cut)).setTextToDataFunc(LightSpecularHighlightCut<0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add();
- add("Light 1:");
- add("Enabled" , MemberDesc(MEMBER(Params, lights[1].enabled )).setTextToDataFunc(LightEnabled <1>));
- add("Angle" , MemberDesc(MEMBER(Params, lights[1].angle )).setTextToDataFunc(LightAngle <1>)).range(-1, 1);
- add("Intensity" , MemberDesc(MEMBER(Params, lights[1].intensity )).setTextToDataFunc(LightIntensity <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Back Intensity" , MemberDesc(MEMBER(Params, lights[1].back )).setTextToDataFunc(LightBack <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Highlight" , MemberDesc(MEMBER(Params, lights[1].highlight )).setTextToDataFunc(LightHighlight <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Highlight Cutoff" , MemberDesc(MEMBER(Params, lights[1].highlight_cut )).setTextToDataFunc(LightHighlightCut <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Specular Intensity" , MemberDesc(MEMBER(Params, lights[1].specular )).setTextToDataFunc(LightSpecular <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular Back Intensity" , MemberDesc(MEMBER(Params, lights[1].specular_back )).setTextToDataFunc(LightSpecularBack <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Specular Exponent" , MemberDesc(MEMBER(Params, lights[1].specular_exp )).setTextToDataFunc(LightSpecularExp <1>)).range( 0, 256).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Specular Highlight" , MemberDesc(MEMBER(Params, lights[1].specular_highlight )).setTextToDataFunc(LightSpecularHighlight <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular Highlight Cutoff", MemberDesc(MEMBER(Params, lights[1].specular_highlight_cut)).setTextToDataFunc(LightSpecularHighlightCut<1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add();
- add("Section 0:");
- add("Round Depth" , MemberDesc(MEMBER(Params, sections[0].round_depth )).setTextToDataFunc(SectionRoundDepth <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Outer Depth" , MemberDesc(MEMBER(Params, sections[0].outer_depth )).setTextToDataFunc(SectionOuterDepth <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Inner Depth" , MemberDesc(MEMBER(Params, sections[0].inner_depth )).setTextToDataFunc(SectionInnerDepth <0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Inner Distance" , MemberDesc(MEMBER(Params, sections[0].inner_distance )).setTextToDataFunc(SectionInnerDistance <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Depth Smoothing" , MemberDesc(MEMBER(Params, sections[0].smooth_depth )).setTextToDataFunc(SectionSmoothDepth <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular" , MemberDesc(MEMBER(Params, sections[0].specular )).setTextToDataFunc(SectionSpecular <0>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Color" , MemberDesc(MEMBER(Params, sections[0].color )).setTextToDataFunc(SectionColor <0>)).setColor();
- add("Color Outer" , MemberDesc(MEMBER(Params, sections[0].outer_color )).setTextToDataFunc(SectionOuterColor <0>)).setColor();
- add("Color Inner" , MemberDesc(MEMBER(Params, sections[0].inner_color )).setTextToDataFunc(SectionInnerColor <0>)).setColor();
- add("Color Top" , MemberDesc(MEMBER(Params, sections[0].color_top )).setTextToDataFunc(SectionColorTop <0>)).setColor();
- add("Color Bottom" , MemberDesc(MEMBER(Params, sections[0].color_bottom )).setTextToDataFunc(SectionColorBottom <0>)).setColor();
- add("Color Left" , MemberDesc(MEMBER(Params, sections[0].color_left )).setTextToDataFunc(SectionColorLeft <0>)).setColor();
- add("Color Right" , MemberDesc(MEMBER(Params, sections[0].color_right )).setTextToDataFunc(SectionColorRight <0>)).setColor();
- add("Outer Border Color", MemberDesc(MEMBER(Params, sections[0].outer_border_color)).setTextToDataFunc(SectionOuterBorderColor<0>)).setColor();
- add("Inner Border Color", MemberDesc(MEMBER(Params, sections[0].inner_border_color)).setTextToDataFunc(SectionInnerBorderColor<0>)).setColor();
- add("Depth Overlay Image", MemberDesc(MEMBER(Params, base.sections[0].depth_overlay_id)).setFunc(SectionDepthOverlay<0>, SectionDepthOverlay<0>)).elmType(ELM_IMAGE);
- add("Depth Overlay Blur" , MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.blur )).setTextToDataFunc(SectionDepthOverlayBlur <0>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Depth Overlay Blur Clamp", MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.blur_clamp)).setTextToDataFunc(SectionDepthOverlayBlurClamp<0>));
- add("Depth Overlay UV Scale" , MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.uv_scale )).setTextToDataFunc(SectionDepthOverlayUVScale <0>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Depth Overlay UV Offset" , MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.uv_offset )).setTextToDataFunc(SectionDepthOverlayUVOffset <0>)).range( -1, 1).mouseEditSpeed(0.2f);
- add("Depth Overlay Intensity" , MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.intensity )).setTextToDataFunc(SectionDepthOverlayIntensity<0>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Depth Overlay Mode" , MemberDesc(MEMBER(Params, sections[0].depth_overlay_params.mode )).setTextToDataFunc(SectionDepthOverlayMode <0>)).setEnum(image_modes, Elms(image_modes));
- add("Depth Noise Blur" , MemberDesc(MEMBER(Params, sections[0].depth_noise.blur )).setTextToDataFunc(SectionDepthNoiseBlur <0>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Depth Noise UV Scale" , MemberDesc(MEMBER(Params, sections[0].depth_noise.uv_scale )).setTextToDataFunc(SectionDepthNoiseUVScale <0>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Depth Noise Intensity", MemberDesc(MEMBER(Params, sections[0].depth_noise.intensity)).setTextToDataFunc(SectionDepthNoiseIntensity<0>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Depth Noise Mode" , MemberDesc(MEMBER(Params, sections[0].depth_noise.mode )).setTextToDataFunc(SectionDepthNoiseMode <0>)).setEnum(image_modes, Elms(image_modes));
- add("Color Overlay Image", MemberDesc(MEMBER(Params, base.sections[0].color_overlay_id)).setFunc(SectionColorOverlay<0>, SectionColorOverlay<0>)).elmType(ELM_IMAGE);
- add("Color Overlay Blur" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.blur )).setTextToDataFunc(SectionColorOverlayBlur <0>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Color Overlay Blur Clamp", MemberDesc(MEMBER(Params, sections[0].color_overlay_params.blur_clamp)).setTextToDataFunc(SectionColorOverlayBlurClamp<0>));
- add("Color Overlay UV Scale" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.uv_scale )).setTextToDataFunc(SectionColorOverlayUVScale <0>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Color Overlay UV Offset" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.uv_offset )).setTextToDataFunc(SectionColorOverlayUVOffset <0>)).range( -1, 1).mouseEditSpeed(0.2f);
- add("Color Overlay UV Warp" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.uv_warp )).setTextToDataFunc(SectionColorOverlayUVWarp <0>)).range( -1, 1).mouseEditSpeed(0.5f);
- add("Color Overlay Intensity" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.intensity )).setTextToDataFunc(SectionColorOverlayIntensity<0>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Color Overlay Mode" , MemberDesc(MEMBER(Params, sections[0].color_overlay_params.mode )).setTextToDataFunc(SectionColorOverlayMode <0>)).setEnum(image_modes, Elms(image_modes));
- add("Color Noise Blur" , MemberDesc(MEMBER(Params, sections[0].color_noise.blur )).setTextToDataFunc(SectionColorNoiseBlur <0>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Color Noise UV Scale" , MemberDesc(MEMBER(Params, sections[0].color_noise.uv_scale )).setTextToDataFunc(SectionColorNoiseUVScale <0>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Color Noise UV Warp" , MemberDesc(MEMBER(Params, sections[0].color_noise.uv_warp )).setTextToDataFunc(SectionColorNoiseUVWarp <0>)).range( -1, 1).mouseEditSpeed(0.5f);
- add("Color Noise Intensity", MemberDesc(MEMBER(Params, sections[0].color_noise.intensity)).setTextToDataFunc(SectionColorNoiseIntensity<0>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Color Noise Mode" , MemberDesc(MEMBER(Params, sections[0].color_noise.mode )).setTextToDataFunc(SectionColorNoiseMode <0>)).setEnum(image_modes, Elms(image_modes));
- add("Reflection Image", MemberDesc(MEMBER(Params, base.sections[0].reflection_id)).setFunc(SectionReflection<0>, SectionReflection<0>)).elmType(ELM_IMAGE);
- add("Reflection Intensity", MemberDesc(MEMBER(Params, sections[0].reflection_intensity)).setTextToDataFunc(SectionReflectionIntensity<0>)).range(-1, 1).mouseEditSpeed(0.2f);
- add();
- add("Section 1:");
- add("Size" , MemberDesc(MEMBER(Params, sections[1].size )).setTextToDataFunc(SectionSize <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Top Offset" , MemberDesc(MEMBER(Params, sections[1].top_offset )).setTextToDataFunc(SectionTopOffset <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Round Depth" , MemberDesc(MEMBER(Params, sections[1].round_depth )).setTextToDataFunc(SectionRoundDepth <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Center Depth" , MemberDesc(MEMBER(Params, sections[1].outer_depth )).setTextToDataFunc(SectionOuterDepth <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Center Distance" , MemberDesc(MEMBER(Params, sections[1].inner_distance )).setTextToDataFunc(SectionInnerDistance <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Inner Depth" , MemberDesc(MEMBER(Params, sections[1].inner_depth )).setTextToDataFunc(SectionInnerDepth <1>)).range(-1, 1).mouseEditSpeed(0.2f);
- add("Depth Smoothing" , MemberDesc(MEMBER(Params, sections[1].smooth_depth )).setTextToDataFunc(SectionSmoothDepth <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Specular" , MemberDesc(MEMBER(Params, sections[1].specular )).setTextToDataFunc(SectionSpecular <1>)).range( 0, 1).mouseEditSpeed(0.2f);
- add("Color" , MemberDesc(MEMBER(Params, sections[1].color )).setTextToDataFunc(SectionColor <1>)).setColor();
- add("Color Outer" , MemberDesc(MEMBER(Params, sections[1].outer_color )).setTextToDataFunc(SectionOuterColor <1>)).setColor();
- add("Color Inner" , MemberDesc(MEMBER(Params, sections[1].inner_color )).setTextToDataFunc(SectionInnerColor <1>)).setColor();
- add("Color Top" , MemberDesc(MEMBER(Params, sections[1].color_top )).setTextToDataFunc(SectionColorTop <1>)).setColor();
- add("Color Bottom" , MemberDesc(MEMBER(Params, sections[1].color_bottom )).setTextToDataFunc(SectionColorBottom <1>)).setColor();
- add("Color Left" , MemberDesc(MEMBER(Params, sections[1].color_left )).setTextToDataFunc(SectionColorLeft <1>)).setColor();
- add("Color Right" , MemberDesc(MEMBER(Params, sections[1].color_right )).setTextToDataFunc(SectionColorRight <1>)).setColor();
- add("Outer Border Color", MemberDesc(MEMBER(Params, sections[1].outer_border_color)).setTextToDataFunc(SectionOuterBorderColor<1>)).setColor();
- add("Inner Border Color", MemberDesc(MEMBER(Params, sections[1].inner_border_color)).setTextToDataFunc(SectionInnerBorderColor<1>)).setColor();
- add( "Prev Border Color", MemberDesc(MEMBER(Params, sections[1]. prev_border_color)).setTextToDataFunc(SectionPrevBorderColor <1>)).setColor();
- add("Depth Overlay Image", MemberDesc(MEMBER(Params, base.sections[1].depth_overlay_id)).setFunc(SectionDepthOverlay<1>, SectionDepthOverlay<1>)).elmType(ELM_IMAGE);
- add("Depth Overlay Blur" , MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.blur )).setTextToDataFunc(SectionDepthOverlayBlur <1>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Depth Overlay Blur Clamp", MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.blur_clamp)).setTextToDataFunc(SectionDepthOverlayBlurClamp<1>));
- add("Depth Overlay UV Scale" , MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.uv_scale )).setTextToDataFunc(SectionDepthOverlayUVScale <1>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Depth Overlay UV Offset" , MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.uv_offset )).setTextToDataFunc(SectionDepthOverlayUVOffset <1>)).range( -1, 1).mouseEditSpeed(0.2f);
- add("Depth Overlay Intensity" , MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.intensity )).setTextToDataFunc(SectionDepthOverlayIntensity<1>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Depth Overlay Mode" , MemberDesc(MEMBER(Params, sections[1].depth_overlay_params.mode )).setTextToDataFunc(SectionDepthOverlayMode <1>)).setEnum(image_modes, Elms(image_modes));
- add("Depth Noise Blur" , MemberDesc(MEMBER(Params, sections[1].depth_noise.blur )).setTextToDataFunc(SectionDepthNoiseBlur <1>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Depth Noise UV Scale" , MemberDesc(MEMBER(Params, sections[1].depth_noise.uv_scale )).setTextToDataFunc(SectionDepthNoiseUVScale <1>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Depth Noise Intensity", MemberDesc(MEMBER(Params, sections[1].depth_noise.intensity)).setTextToDataFunc(SectionDepthNoiseIntensity<1>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Depth Noise Mode" , MemberDesc(MEMBER(Params, sections[1].depth_noise.mode )).setTextToDataFunc(SectionDepthNoiseMode <1>)).setEnum(image_modes, Elms(image_modes));
- add("Color Overlay Image", MemberDesc(MEMBER(Params, base.sections[1].color_overlay_id)).setFunc(SectionColorOverlay<1>, SectionColorOverlay<1>)).elmType(ELM_IMAGE);
- add("Color Overlay Blur" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.blur )).setTextToDataFunc(SectionColorOverlayBlur <1>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Color Overlay Blur Clamp", MemberDesc(MEMBER(Params, sections[1].color_overlay_params.blur_clamp)).setTextToDataFunc(SectionColorOverlayBlurClamp<1>));
- add("Color Overlay UV Scale" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.uv_scale )).setTextToDataFunc(SectionColorOverlayUVScale <1>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Color Overlay UV Offset" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.uv_offset )).setTextToDataFunc(SectionColorOverlayUVOffset <1>)).range( -1, 1).mouseEditSpeed(0.2f);
- add("Color Overlay UV Warp" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.uv_warp )).setTextToDataFunc(SectionColorOverlayUVWarp <1>)).range( -1, 1).mouseEditSpeed(0.5f);
- add("Color Overlay Intensity" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.intensity )).setTextToDataFunc(SectionColorOverlayIntensity<1>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Color Overlay Mode" , MemberDesc(MEMBER(Params, sections[1].color_overlay_params.mode )).setTextToDataFunc(SectionColorOverlayMode <1>)).setEnum(image_modes, Elms(image_modes));
- add("Color Noise Blur" , MemberDesc(MEMBER(Params, sections[1].color_noise.blur )).setTextToDataFunc(SectionColorNoiseBlur <1>)).range( 0, 64).mouseEditMode(PROP_MOUSE_EDIT_SCALAR).mouseEditSpeed(1);
- add("Color Noise UV Scale" , MemberDesc(MEMBER(Params, sections[1].color_noise.uv_scale )).setTextToDataFunc(SectionColorNoiseUVScale <1>)).range(-16, 16).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- add("Color Noise UV Warp" , MemberDesc(MEMBER(Params, sections[1].color_noise.uv_warp )).setTextToDataFunc(SectionColorNoiseUVWarp <1>)).range( -1, 1).mouseEditSpeed(0.5f);
- add("Color Noise Intensity", MemberDesc(MEMBER(Params, sections[1].color_noise.intensity)).setTextToDataFunc(SectionColorNoiseIntensity<1>)).range( -2, 2).mouseEditSpeed(0.2f);
- add("Color Noise Mode" , MemberDesc(MEMBER(Params, sections[1].color_noise.mode )).setTextToDataFunc(SectionColorNoiseMode <1>)).setEnum(image_modes, Elms(image_modes));
- add("Reflection Image", MemberDesc(MEMBER(Params, base.sections[1].reflection_id)).setFunc(SectionReflection<1>, SectionReflection<1>)).elmType(ELM_IMAGE);
- add("Reflection Intensity", MemberDesc(MEMBER(Params, sections[1].reflection_intensity)).setTextToDataFunc(SectionReflectionIntensity<1>)).range(-1, 1).mouseEditSpeed(0.2f);
- autoData(¶ms);
- props_w=::PropWin::create("Panel Image Editor", Vec2(prop_x, 0), 0.036f, prop_h, 0.3f).max.x+0.02f; button[1].show(); button[2].func(HideProjAct, SCAST(GuiObj, T)).show(); flag|=WIN_RESIZABLE;
- T+=undo .create(Rect_LU(0.02f, -0.01f , 0.05f, 0.05f)).func(Undo, T).focusable(false).desc("Undo"); undo.image="Gui/Misc/undo.img";
- T+=redo .create(Rect_LU(undo .rect().ru(), 0.05f, 0.05f)).func(Redo, T).focusable(false).desc("Redo"); redo.image="Gui/Misc/redo.img";
- T+=locate.create(Rect_LU(redo .rect().ru()+Vec2(0.01f, 0), 0.14f, 0.05f), "Locate").func(Locate, T).focusable(false).desc("Locate this element in the Project");
- T+=copy .create(Rect_LU(locate.rect().ru()+Vec2(0.01f, 0), 0.11f, 0.05f), "Copy" ).func(Copy , T).focusable(false).desc("Copy values to system clipboard");
- T+=paste .create(Rect_LU(copy .rect().ru()+Vec2(0.01f, 0), 0.12f, 0.05f), "Paste" ).func(Paste , T).focusable(false).desc("Paste values from system clipboard");
- T+=filter.create(Rect_LU(paste .rect().ru()+Vec2(0.01f, 0), 0.28f, 0.05f)).func(Filter, T).desc("Find property by name"); filter.reset.show(); filter.show_find=true; filter.hint="Find Property";
- T+=region.create();
- FREPA(props){Property &prop=props[i]; prop.parent(region).changed(Changed, PreChanged);}
- cchar8 *modes[]={"Image", "Image + Scaled", "4 x Scaled"};
- T+=preview_mode.create(modes, Elms(modes)).valid(true).set(1);
- T+=draw_depth.create("Show Depth"); draw_depth.mode=BUTTON_TOGGLE;
- T+=draw_lines.create("Show Lines"); draw_lines.mode=BUTTON_TOGGLE;
- T+=viewport.create(Preview, this);
- rect(Rect_C(0, 0, 2.2f, 1.5f));
- }
- void PanelImageEditor::toGui() {::PropWin::toGui(); refresh();}
- void PanelImageEditor::stopThread() {thread.stop(); event.on();}
- void PanelImageEditor::refresh() {if(elm){event.on(); if(!thread.active() || thread.wantStop())thread.create(Make, this);}}
- PanelImageEditor& PanelImageEditor::del() {stopThread(); thread.del(); ::EE::Window::del (); return T;}
- PanelImageEditor& PanelImageEditor::hide() {stopThread(); set(null ); ::PropWin::hide(); return T;}
- Rect PanelImageEditor::sizeLimit()C {Rect r=::EE::Window::sizeLimit(); r.min.set(0.3f, 0.2f); return r;}
- void PanelImageEditor::flush()
- {
- if(elm && changed)
- {
- if(ElmPanelImage *data=elm->panelImageData()){data->newVer(); data->from(params);} // modify just before saving/sending in case we've received data from server after edit
- Save(params, Proj.basePath(*elm));
- PanelImage panel_image; params.make(panel_image, WorkerThreads, Proj); Save(panel_image, Proj.gamePath(*elm)); Proj.savedGame(*elm);
- Server.setElmLong(elm->id);
- Proj.panelImageChanged(elm->id);
- }
- changed=false;
- }
- void PanelImageEditor::setChanged()
- {
- if(elm)
- {
- changed=true;
- if(ElmPanelImage *data=elm->panelImageData()){data->newVer(); data->from(params);}
- refresh();
- }
- }
- void PanelImageEditor::set(Elm *elm)
- {
- if(elm && elm->type!=ELM_PANEL_IMAGE)elm=null;
- if(T.elm!=elm)
- {
- flush();
- undos.del(); undoVis();
- T.elm =elm;
- T.elm_id=(elm ? elm->id : UIDZero);
- {
- SyncLocker locker(lock);
- if(elm){params.load(Proj.basePath(*elm)); panel_image.load(Proj.gamePath(*elm));}else{params.reset(); panel_image.del();}
- }
- toGui();
- Proj.refresh(false, false);
- visible(T.elm!=null).moveToTop();
- }
- }
- void PanelImageEditor::activate(Elm *elm) {set(elm); if(T.elm)::EE::GuiObj::activate();}
- void PanelImageEditor::toggle(Elm *elm) {if(elm==T.elm)elm=null; set(elm);}
- void PanelImageEditor::elmChanged(C UID &panel_image_id)
- {
- if(elm && elm->id==panel_image_id)
- {
- undos.set(null, true);
- EditPanelImage temp; if(temp.load(Proj.basePath(*elm)))if(params.sync(temp))toGui();
- }
- }
- void PanelImageEditor::erasing(C UID &elm_id) {if(elm && elm->id==elm_id)set(null);}
- PanelImageEditor::PanelImageEditor() : elm_id(UIDZero), elm(null), changed(false), props_w(0), prop_h(0.043f), prop_x(0.01f), force_undo_change_type(null), undos(true) {}
- /******************************************************************************/
|