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);
}
Example #2
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;
    }
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
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);
}
Example #6
0
/**************************************************************************
 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;
}
Example #7
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;

}