static void OnSkinChanged(HTMLControl *pCtrl) { wchar_t css[128]; if (!pCtrl) return; if (!ml_color) return; // make sure we have the function to get colors first! return; // lets not do this for now... if (S_OK ==StringCchPrintfW(css, 128, L"BODY { background-color: #%06X; color:#%06X }", GetHTMLColor(ml_color(WADLG_ITEMBG)), GetHTMLColor(ml_color(WADLG_ITEMFG)))) { pCtrl->SetHostCSS(css); } }
static LRESULT HostWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { WNDPROC fnOldProc; fnOldProc = (WNDPROC)GetPropW(hwnd, WNDPROP_SCCTRLW); if (!fnOldProc) return DefWindowProcW(hwnd, uMsg, wParam, lParam); switch (uMsg) { case WM_NCDESTROY: // detach RemovePropW(hwnd, WNDPROP_SCCTRLW); CallWindowProcW(fnOldProc, hwnd, uMsg, wParam, lParam); SetWindowLongPtrW(hwnd, GWLP_WNDPROC, (LONG_PTR)fnOldProc); return 0; case WM_ERASEBKGND: if (wParam) { RECT rc; if (GetClientRect(hwnd, &rc)) { SetBkColor((HDC)wParam, ml_color(WADLG_WNDBG)); ExtTextOutW((HDC)wParam, 0, 0, ETO_OPAQUE, &rc, L"", 0, 0); } } return 1; case WM_SETFOCUS: if (htmlControl) { htmlControl->setFocus(TRUE); return 0; } break; } return CallWindowProcW(fnOldProc, hwnd, uMsg, wParam, lParam); }
ml_color cmap(double x) { x *= 10; float s = atan(x)/pi+0.5; return ml_color(s,s,s); }
ml_color cmap(double x1, double x2) { x1 *= 10; x2 *= 10; float s1 = atan(x1)/pi+0.5; float s2 = atan(x2)/pi+0.5; return ml_color(s1,0,s2); }
ml_color color_map_red( double z ) { float x = atan((double)z)/pi+0.5; return ml_color(x,0,0); }
ml_color color_map_blue( double z ) { float x = atan((double)z)/pi+0.5; return ml_color(0,0,x); }
ml_color color_map_green( double z ) { float x = atan((double)z)/pi+0.5; return ml_color(0,x,0); }
ml_color color_map_error( double z ) { //cout << z << endl; float x = float( (log10(fabs(z))+12)/12 ); return ml_color(x,x,x); }