static void save_htmlview_preference(HtmlViewOption *option) { SYLPF_START_FUNC; #define TOGGLE_STATE(widget) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) #if USE_WEBKITGTK option->private_flag = TOGGLE_STATE(option->private_browsing); option->image_flag = TOGGLE_STATE(option->load_image); option->script_flag = TOGGLE_STATE(option->scripts); #endif option->switch_tab_flag = TOGGLE_STATE(option->switch_tab); #if USE_WEBKITGTK g_print("%s:%s\n", ENABLE_PRIVATE_BROWSING, BOOL_TOSTRING(option->private_flag)); g_print("%s:%s\n", ENABLE_IMAGES, BOOL_TOSTRING(option->image_flag)); g_print("%s:%s\n", ENABLE_SCRIPTS, BOOL_TOSTRING(option->script_flag)); #endif g_print("%s:%s\n", ENABLE_SWITCH_TAB, BOOL_TOSTRING(option->switch_tab_flag)); #undef TOGGLE_STATE load_option_rcfile(HTMLVIEWRC); #if USE_WEBKITGTK SYLPF_SET_RC_BOOLEAN(ENABLE_PRIVATE_BROWSING, SYLPF_OPTION.private_flag); SYLPF_SET_RC_BOOLEAN(ENABLE_IMAGES, SYLPF_OPTION.image_flag); SYLPF_SET_RC_BOOLEAN(ENABLE_SCRIPTS, SYLPF_OPTION.script_flag); #endif SYLPF_SET_RC_BOOLEAN(ENABLE_SWITCH_TAB, SYLPF_OPTION.switch_tab_flag); save_option_rcfile(); }
/// Called by OpenGL device to active this state block. /// @param oldState The current state, used to make sure we don't set redundant states on the device. Pass NULL to reset all states. void GFXGLStateBlock::activate(const GFXGLStateBlock* oldState) { // Big scary warning copied from Apple docs // http://developer.apple.com/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_performance/chapter_13_section_2.html#//apple_ref/doc/uid/TP40001987-CH213-SW12 // Don't set a state that's already set. Once a feature is enabled, it does not need to be enabled again. // Calling an enable function more than once does nothing except waste time because OpenGL does not check // the state of a feature when you call glEnable or glDisable. For instance, if you call glEnable(GL_LIGHTING) // more than once, OpenGL does not check to see if the lighting state is already enabled. It simply updates // the state value even if that value is identical to the current value. #define STATE_CHANGE(state) (!oldState || oldState->mDesc.state != mDesc.state) #define TOGGLE_STATE(state, enum) if(mDesc.state) glEnable(enum); else glDisable(enum) #define CHECK_TOGGLE_STATE(state, enum) if(!oldState || oldState->mDesc.state != mDesc.state) if(mDesc.state) glEnable(enum); else glDisable(enum) // Blending CHECK_TOGGLE_STATE(blendEnable, GL_BLEND); if(STATE_CHANGE(blendSrc) || STATE_CHANGE(blendDest)) glBlendFunc(GFXGLBlend[mDesc.blendSrc], GFXGLBlend[mDesc.blendDest]); if(STATE_CHANGE(blendOp)) glBlendEquation(GFXGLBlendOp[mDesc.blendOp]); // Color write masks if(STATE_CHANGE(colorWriteRed) || STATE_CHANGE(colorWriteBlue) || STATE_CHANGE(colorWriteGreen) || STATE_CHANGE(colorWriteAlpha)) glColorMask(mDesc.colorWriteRed, mDesc.colorWriteBlue, mDesc.colorWriteGreen, mDesc.colorWriteAlpha); // Culling if(STATE_CHANGE(cullMode)) { TOGGLE_STATE(cullMode, GL_CULL_FACE); glCullFace(GFXGLCullMode[mDesc.cullMode]); } // Depth CHECK_TOGGLE_STATE(zEnable, GL_DEPTH_TEST); if(STATE_CHANGE(zFunc)) glDepthFunc(GFXGLCmpFunc[mDesc.zFunc]); if(STATE_CHANGE(zBias)) { if (mDesc.zBias == 0) { glDisable(GL_POLYGON_OFFSET_FILL); } else { F32 bias = mDesc.zBias * 10000.0f; glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(bias, bias); } } if(STATE_CHANGE(zWriteEnable)) glDepthMask(mDesc.zWriteEnable); // Stencil CHECK_TOGGLE_STATE(stencilEnable, GL_STENCIL_TEST); if(STATE_CHANGE(stencilFunc) || STATE_CHANGE(stencilRef) || STATE_CHANGE(stencilMask)) glStencilFunc(GFXGLCmpFunc[mDesc.stencilFunc], mDesc.stencilRef, mDesc.stencilMask); if(STATE_CHANGE(stencilFailOp) || STATE_CHANGE(stencilZFailOp) || STATE_CHANGE(stencilPassOp)) glStencilOp(GFXGLStencilOp[mDesc.stencilFailOp], GFXGLStencilOp[mDesc.stencilZFailOp], GFXGLStencilOp[mDesc.stencilPassOp]); if(STATE_CHANGE(stencilWriteMask)) glStencilMask(mDesc.stencilWriteMask); if(STATE_CHANGE(fillMode)) glPolygonMode(GL_FRONT_AND_BACK, GFXGLFillMode[mDesc.fillMode]); #undef CHECK_STATE #undef TOGGLE_STATE #undef CHECK_TOGGLE_STATE //sampler objects if( gglHasExtension(ARB_sampler_objects) ) { for (U32 i = 0; i < getMin(getOwningDevice()->getNumSamplers(), (U32) TEXTURE_STAGE_COUNT); i++) { if(!oldState || oldState->mSamplerObjects[i] != mSamplerObjects[i]) glBindSampler(i, mSamplerObjects[i] ); } } // TODO: states added for detail blend }
/****************************************************************** ToggleButtonState() -- This function toggle's a toggle button state. ******************************************************************/ GS_errorType ToggleButtonState(GSgadgetStruct *tb) { tb->togbutton->state = TOGGLE_STATE(tb->togbutton->state); return(GSNOERROR); }