void kwxAngularRegulator::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); // Create a memory DC wxMemoryDC temp_dc; temp_dc.SelectObject(*membitmap); temp_dc.SetBackground(*wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(),wxSOLID)); temp_dc.Clear(); ////////////////////////////////////////////////////// temp_dc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1, wxSOLID)); temp_dc.SetBrush(*wxTheBrushList->FindOrCreateBrush(m_cExtCircle,wxSOLID)); temp_dc.DrawCircle(m_nClientWidth / 2, m_nClientHeight / 2, m_nClientHeight / 2) ; ////////////////////////////////////////////////////// temp_dc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1, wxSOLID)); temp_dc.SetBrush(*wxTheBrushList->FindOrCreateBrush(m_cIntCircle,wxSOLID)); temp_dc.DrawCircle(m_nClientWidth / 2, m_nClientHeight / 2, m_nClientHeight / 2 - 10) ; DrawLimit(temp_dc) ; //limiti if (m_nTags >0 ) DrawTags(temp_dc); //tags DrawKnob(temp_dc) ; //knob // We can now draw into the memory DC... // Copy from this DC to another DC. dc.Blit(0, 0, m_nClientWidth, m_nClientHeight, &temp_dc, 0, 0); }
BOOL DrawItem(WPARAM wParam, LPARAM lParam) { LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam; UINT state = lpdi->itemState; RECT rect = lpdi->rcItem; HDC hdc = lpdi->hDC; switch (wParam) { // Scale case SCALE_ID: DrawScale(hdc, rect, state); break; // Display case DISPLAY_ID: DrawDisplay(hdc, rect, state); break; // Knob case KNOB_ID: DrawKnob(hdc, rect, state); break; } }
HRESULT CSVGGradientEditCtl::OnDraw(ATL_DRAWINFO& di) { HDC hDC = di.hdcDraw; CDCHandle dc(hDC); CRect rcBounds = *(CRect*)di.prcBounds; dc.FillSolidRect(&rcBounds, m_clrBackColor); if (m_gradient != NULL) { /* ???? FillRect(hDC, &CRect(m_previewRect.left, m_previewRect.bottom-17, m_previewRect.right, m_previewRect.bottom), (HBRUSH)GetStockObject(LTGRAY_BRUSH)); */ if (m_canEditStops) { CComPtr<ILDOMNode> child; m_gradient->get_firstChild(&child); while (child != NULL) { CComQIPtr<ILSVGStopElement> stop = child; if (stop != NULL) { double offset; CComPtr<ILSVGAnimatedNumber> aoffset; stop->get_offset(&aoffset); aoffset->get_baseVal(&offset); int x = m_previewRect.left+(offset*m_previewRect.Width()); int y = m_previewRect.bottom-17; DrawKnob(hDC, x, y, stop, (stop == m_activeStop)); } CComPtr<ILDOMNode> nextSibling; child->get_nextSibling(&nextSibling); child = nextSibling; } /* if (m_activeStop) { SVGLib::ISVGStylablePtr stylableStop = m_activeStop; _bstr_t str_color = stylableStop->style->getPropertyValue(L"stop-color"); COLORREF color = ConvertColor(str_color); } */ } PaintGradient(hDC); } return S_OK; }
LRESULT CALLBACK KnobProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; RECT rect; HDC hdc; switch (uMsg) { // Paint case WM_PAINT: hdc = BeginPaint(hWnd, &ps); GetClientRect(hWnd, &rect); DrawKnob(hdc, rect, 0); EndPaint(hWnd, &ps); break; // Char pressed case WM_CHAR: CharPressed(wParam, lParam); break; // Key pressed case WM_KEYDOWN: KeyDown(wParam, lParam); break; // Mouse move case WM_MOUSEMOVE: MouseMove(hWnd, wParam, lParam); break; // Everything else default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; }
void MovieLooperUI::PositionIndicator::Draw(BRect update) { BRect rect = Bounds(); // draw the focus indicator if (IsFocus()) { SetHighColor(navigationColor); StrokeRect(rect); } else // or not { // how bout a nice bevel? SetHighColor(255,255,255,255); StrokeLine(rect.RightTop(), rect.RightBottom()); StrokeLine(rect.LeftBottom(), rect.RightBottom()); SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR)); StrokeLine(rect.LeftTop(), rect.RightTop()); StrokeLine(rect.LeftTop(), rect.LeftBottom()); } // the non-focus-indicating part of the view rect.InsetBy(1.0,1.0); // everything but the knobs if (startCoord == 3.0 && endCoord == rect.right-2.0) { // green SetHighColor(clipColor); // don't draw where the knobs draw rect.left += 5.0; rect.right -= 5.0; // draw FillRect(rect & update); } else { BRect left(rect.left, rect.top, startCoord-3.0, rect.bottom), right(endCoord+3.0, rect.top, rect.right, rect.bottom), middle(startCoord+3.0, rect.top, endCoord-3.0, rect.bottom); SetHighColor(clipColor); FillRect(middle & update); SetHighColor(unClipColor); FillRect(left & update); FillRect(right & update); } // the position indicator if (update.left < playCoord && update.right > playCoord) { if (playCoord >= (startCoord+3.0) && playCoord <= (endCoord-3.0)) { SetHighColor(0,0,0,255); StrokeLine(BPoint(playCoord, 1.0), BPoint(playCoord, Bounds().bottom-1.0)); } } // and the knobs rect.Set(startCoord-2.0, 1.0, startCoord+2.0, Bounds().bottom-1.0); if (update.Intersects(rect)) DrawKnob(startCoord); rect.Set(endCoord-2.0, 1.0, endCoord+2.0, Bounds().bottom-1.0); if (update.Intersects(rect)) DrawKnob(endCoord); }
/************************************************************************** MUIM_HandleEvent **************************************************************************/ IPTR Numericbutton__MUIM_HandleEvent(struct IClass *cl, Object *obj, struct MUIP_HandleEvent *msg) { struct Numericbutton_DATA *data = INST_DATA(cl, obj); if (!msg->imsg) { return 0; } switch(msg->imsg->Class) { case IDCMP_MOUSEBUTTONS: switch(msg->imsg->Code) { case SELECTDOWN: if (_between(_left(obj), msg->imsg->MouseX, _right(obj)) && _between(_top(obj), msg->imsg->MouseY, _bottom(obj)) && (muiAreaData(obj)->mad_Flags & MADF_CANDRAW) && !data->popwin) { data->knob_clickoffset_x = msg->imsg->MouseX - _mleft(obj); if (MakePopupWin(obj, data)) { DoMethod(_win(obj), MUIM_Window_RemEventHandler, (IPTR)&data->ehn); data->ehn.ehn_Events |= IDCMP_MOUSEMOVE; DoMethod(_win(obj), MUIM_Window_AddEventHandler, (IPTR)&data->ehn); return 0; } } break; case SELECTUP: case MENUUP: case MIDDLEUP: default: if (data->popwin) { KillPopupWin(obj, data); if ((msg->imsg->Code == SELECTUP)) { set(obj, MUIA_Numeric_Value, data->knob_val); } return 0; } break; } /* switch(msg->imsg->Code) */ break; case IDCMP_MOUSEMOVE: if (data->popwin) { DrawKnob(obj, data, FALSE); return 0; } break; } /* switch(msg->imsg->Class) */ return 0; }
static BOOL MakePopupWin(Object *obj, struct Numericbutton_DATA *data) { const struct ZuneFrameGfx *zframe; struct RastPort *rp, *saverp; LONG winx, winy, winw, winh; LONG framew, frameh; LONG min, max; zframe = zune_zframe_get_with_state(obj, &muiGlobalInfo(obj)->mgi_Prefs->frames[MUIV_Frame_Slider], muiGlobalInfo(obj)->mgi_Prefs->frames[MUIV_Frame_Slider].state); data->pop_innerx = zframe->ileft; data->pop_innery = zframe->itop; data->knob_width = data->max_text_width + 4; data->knob_height = data->text_height + 2; framew = data->pop_innerx + zframe->iright; frameh = data->pop_innery + zframe->ibottom; longget(obj, MUIA_Numeric_Min, &min); longget(obj, MUIA_Numeric_Max, &max); winw = max - min + data->knob_width + framew; winh = data->knob_height + frameh; if (winw > _screen(obj)->Width) { winw = _screen(obj)->Width; } if ((winw < data->knob_width + framew) || (winh > _screen(obj)->Height)) { return FALSE; } data->pop_innerw = winw - framew; data->pop_innerh = winh - frameh; data->knob_left = DoMethod(obj, MUIM_Numeric_ValueToScale, 0, data->pop_innerw - data->knob_width); winx = _window(obj)->LeftEdge + _mleft(obj) - data->pop_innerx - 2 - data->knob_left; winy = _window(obj)->TopEdge + _mtop(obj) - 1- data->pop_innery; data->popwin = OpenWindowTags(NULL, WA_CustomScreen, (IPTR)_screen(obj), WA_Left, winx, WA_Top, winy, WA_Width, winw, WA_Height, winh, WA_AutoAdjust, TRUE, WA_Borderless, TRUE, WA_Activate, FALSE, WA_BackFill, (IPTR)LAYERS_NOBACKFILL, TAG_DONE); if (!data->popwin) { return FALSE; } rp = data->popwin->RPort; saverp = _rp(obj); _rp(obj) = rp; zframe->draw(zframe->customframe, muiRenderInfo(obj), 0, 0, winw, winh, 0, 0, winw, winh); DrawKnob(obj, data, TRUE); _rp(obj) = saverp; return TRUE; }