예제 #1
0
void BASE_SCREEN::Trace_Curseur(WinEDA_DrawPanel * panel, wxDC * DC)
/*******************************************************************/
/*
 Trace Le curseur sur la zone PCB , se deplacant sur la grille
*/
{
int color = WHITE;
	
	GRSetDrawMode(DC, GR_XOR);
	if( g_CursorShape == 1 )	/* Trace d'un reticule */
		{
		int dx = panel->m_ClipBox.GetWidth() * GetZoom();
		int dy = panel->m_ClipBox.GetHeight() * GetZoom();
		GRLine(&panel->m_ClipBox, DC, m_Curseur.x - dx, m_Curseur.y,
							m_Curseur.x + dx, m_Curseur.y, color); // axe Y
		GRLine(&panel->m_ClipBox, DC, m_Curseur.x, m_Curseur.y - dx,
				m_Curseur.x, m_Curseur.y + dy, color);  // axe X
		}

	else
		{
		int len = CURSOR_SIZE * GetZoom();
		GRLine(&panel->m_ClipBox, DC, m_Curseur.x - len, m_Curseur.y,
				m_Curseur.x + len, m_Curseur.y, color);
		GRLine(&panel->m_ClipBox, DC, m_Curseur.x, m_Curseur.y - len,
				m_Curseur.x, m_Curseur.y + len, color);
		}
}
예제 #2
0
void WinEDA_DrawPanel::SetBoundaryBox(void)
/******************************************/
{
BASE_SCREEN * Screen = GetScreen();;
wxPoint org;
int ii, jj;

	Screen->m_SizeVisu = GetClientSize();
	GetViewStart(&org.x, &org.y);

	GetScrollPixelsPerUnit(&ii, &jj);
	org.x *= ii; org.y *= jj;
	Screen->m_StartVisu = org;

	m_ClipBox.SetOrigin(org);
	m_ClipBox.SetSize(GetClientSize());

#ifdef WX_ZOOM
	m_ClipBox.m_Pos.x *= GetZoom();
	m_ClipBox.m_Pos.y *= GetZoom();
	m_ClipBox.m_Size.x *= GetZoom();
	m_ClipBox.m_Size.y *= GetZoom();
#else
	m_ClipBox.m_Pos.x -= GetScreen()->m_StartVisu.x;
	m_ClipBox.m_Pos.y -= GetScreen()->m_StartVisu.y;
#endif

	m_ScrollButt_unit = MIN( Screen->m_SizeVisu.x, Screen->m_SizeVisu.y ) / 4;
	if ( m_ScrollButt_unit < 2 ) m_ScrollButt_unit = 2;

	Screen->m_ScrollbarPos.x = GetScrollPos(wxHORIZONTAL);
	Screen->m_ScrollbarPos.y = GetScrollPos(wxVERTICAL);
}
예제 #3
0
bool WinEDA_DrawPanel::IsPointOnDisplay(wxPoint ref_pos)
/********************************************************/
/* retourne TRUE si le point de coord physique ref_pos
	est visible sur l'ecran, c'est a dire:
	si ref_pos est sur la partie du schema ou pcb affichee a l'ecran
*/
{
wxPoint pos;
EDA_Rect display_rect;

	SetBoundaryBox();
	display_rect = m_ClipBox;

	// Reduction legere des dimension de l'ecran utile pour eviter cadrage
	// en limite d'ecran
	#define PIXEL_MARGIN 8
	display_rect.Inflate(-PIXEL_MARGIN,-PIXEL_MARGIN);

	// Conversion en coord physiques
	pos = CalcAbsolutePosition( display_rect.GetPosition() );
	pos.x *= GetZoom();
	pos.y *= GetZoom();
	pos.x += GetScreen()->m_DrawOrg.x;
	pos.y += GetScreen()->m_DrawOrg.y;
	display_rect.SetX(pos.x); display_rect.SetY(pos.y);
	display_rect.SetWidth( display_rect.GetWidth() * GetZoom() );
	display_rect.SetHeight( display_rect.GetHeight() * GetZoom() );

	return display_rect.Inside(ref_pos);
}
예제 #4
0
/** \brief Returns the whole size ("scrollable") of the music score, in pixels.

	It can be much bigger than the current visible portion of the score in the control.
*/
void		
GuidoCarbonControl::GetFullScoreSize( float * outWidth, float * outHeight ) const
{
	GuidoPageFormat format = { 100, 100, 10, 10, 10, 10 };
	GuidoGetPageFormat( GetGuidoGR(), GetPageNum(),  &format );
	
	*outWidth = format.width * GetZoom() * 0.1f;
	*outHeight = format.height * GetZoom() * 0.1f;
}
예제 #5
0
wxPoint WinEDA_DrawPanel::CursorScreenPosition(void)
/********************************************************/
/* retourne la position sur l'ecran,en pixels, du curseur
	Orgine = coord absolue 0,0;
*/
{
wxPoint curpos = GetScreen()->m_Curseur;

	curpos.x -= GetScreen()->m_DrawOrg.x;
	curpos.y -= GetScreen()->m_DrawOrg.y;

	curpos.x /= GetZoom();
	curpos.y /= GetZoom();

	return curpos;
}
예제 #6
0
wxPoint WinEDA_DrawPanel::CursorRealPosition(const wxPoint & ScreenPos)
/**********************************************************************/
/* Retourne la position en unites utilisateur du pointeur souris
	ScreenPos = position pointeur en coord absolue ecran
*/
{
wxPoint curpos;

	curpos.x = ScreenPos.x * GetZoom();
	curpos.y = ScreenPos.y * GetZoom();

	curpos.x += GetScreen()->m_DrawOrg.x;
	curpos.y += GetScreen()->m_DrawOrg.y;

	return curpos;
}
예제 #7
0
void fbtTextFile::zoomEvent(wxStyledTextEvent& evt)
{
	evt.Skip();

	// dsiable zoom
	if (GetZoom() != 0) SetZoom(0);
}
예제 #8
0
void CDiagramButton::Draw( CDC* dc, CRect rect )
/* ============================================================
	Function :		CDiagramButton::Draw
	Description :	Draws the "control"
					
	Return :		void
	Parameters :	CDC* dc		-	CDC to draw to
					CRect rect	-	Total object rect (zoomed)
					
	Usage :			

   ============================================================*/
{
	CStdGrfx::drawframed3dBox( dc, rect );

	LOGFONT lf;
	CFont font;

	GetFont( lf );
	// MS Sans Serif will not scale below 8 pts.
	if( GetZoom() < 1 )
		lstrcpy( lf.lfFaceName, _T( "Arial" ) );

	font.CreateFontIndirect( &lf );

	dc->SelectObject( &font );

	dc->SetBkMode( TRANSPARENT );
	dc->DrawText( GetTitle(), rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE );

	dc->SelectStockObject( ANSI_VAR_FONT );

}
예제 #9
0
void CDiagramCombobox::Draw( CDC* dc, CRect rect )
/* ============================================================
	Function :		CDiagramCombobox::Draw
	Description :	Draws the "control"
					
	Return :		void
	Parameters :	CDC* dc		-	CDC to draw to
					CRect rect	-	Total object rect (zoomed)
					
	Usage :			

   ============================================================*/
{

	CStdGrfx::drawsunkenframed3dWindow( dc, rect );

	LOGFONT lf;
	GetFont( lf );
	dc->SetBkMode( TRANSPARENT );
	dc->SetTextColor( ::GetSysColor( COLOR_BTNTEXT ) );

	CRect rectArrow( rect );
	rectArrow.left = rectArrow.right - ( int ) ( ( double ) GetMinimumSize().cy * GetZoom() );
	rectArrow.InflateRect( -2, -2 );

	CStdGrfx::drawframed3dBox( dc, rectArrow );

	CFont chk;
	chk.CreateFont( lf.lfHeight, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DECORATIVE, "Marlett" );
	dc->SelectObject( &chk );
	dc->DrawText( "u", rectArrow, DT_VCENTER | DT_SINGLELINE | DT_CENTER );

	dc->SelectStockObject( DEFAULT_GUI_FONT );

}
예제 #10
0
void  RichTextView::Paint(Draw& w)
{
	Size sz = GetSize();
	w.DrawRect(sz, background);
	sz.cx -= margin.left + margin.right;
	sz.cy -= margin.top + margin.bottom;
	w.Clipoff(margin.left, margin.top, sz.cx, sz.cy);
	PaintInfo pi;
	if(!hldec)
		pi.hyperlink = Null;
	if(sell < selh) {
		pi.sell = sell;
		pi.selh = selh;
	}
	pi.indexentry = Null;
	pi.highlightpara = highlight;
	pi.zoom = GetZoom();
	int q = sb * pi.zoom;
	scroller.Set(q);
	w.Offset(0, -q);
	SimplePageDraw pw(w);
	pi.top = PageY(0, sb);
	pi.bottom = PageY(0, sb + sz.cy / pi.zoom);
	pi.usecache = true;
	pi.sizetracking = sizetracking;
	pi.shrink_oversized_objects = shrink_oversized_objects;
	Color c = SColorPaper();
	if(Grayscale(c) < 100)
		pi.coloroverride = true;
	text.Paint(pw, GetPage(), pi);
	w.End();
	w.End();
}
예제 #11
0
void CGumpBorder::Draw( CDC* dc, CRect rect )
{
	if (!m_pGumpB[LT]) {
		CGumpEntity::Draw(dc,rect);
		return;
	}

	double zoom = GetZoom();

	int img_x[4],img_y[4];

	img_x[0] = rect.left;
	img_x[1] = max(rect.left, rect.left  + m_sizeGumpB[LT].cx * zoom);
	img_x[2] = min(rect.right, rect.right - m_sizeGumpB[RT].cx * zoom);
	img_x[3] = rect.right;

	img_y[0] = rect.top;
	img_y[1] = max(rect.top, rect.top    + m_sizeGumpB[LT].cy * zoom);
	img_y[2] = min(rect.bottom, rect.bottom - m_sizeGumpB[LB].cy * zoom);
	img_y[3] = rect.bottom;

	if (m_pGumpB[LT]) m_pGumpB[LT]->DrawGump(dc, CPoint(img_x[0],img_y[0]), zoom);
	if (m_pGumpB[RT]) m_pGumpB[RT]->DrawGump(dc, CPoint(img_x[2],img_y[0]), zoom);
	if (m_pGumpB[LB]) m_pGumpB[LB]->DrawGump(dc, CPoint(img_x[0],img_y[2]), zoom);
	if (m_pGumpB[RB]) m_pGumpB[RB]->DrawGump(dc, CPoint(img_x[2],img_y[2]), zoom);
		
	if (m_pGumpB[TOP]) m_pGumpB[TOP]->DrawGump(dc, CRect(img_x[1],img_y[0],img_x[2],img_y[1]), zoom);
	if (m_pGumpB[LC])  m_pGumpB[LC]->DrawGump(dc, CRect(img_x[0],img_y[1],img_x[1],img_y[2]), zoom);
	if (m_pGumpB[RC])  m_pGumpB[RC]->DrawGump(dc, CRect(img_x[2],img_y[1],img_x[3],img_y[2]), zoom);
	if (m_pGumpB[BOTTOM]) m_pGumpB[BOTTOM]->DrawGump(dc, CRect(img_x[1],img_y[2],img_x[2],img_y[3]), zoom);

	if (m_pGumpB[CENTER]) m_pGumpB[CENTER]->DrawGump(dc, CRect(img_x[1],img_y[1],img_x[2],img_y[2]), zoom);
}
void CDiagramRadiobutton::Draw( CDC* dc, CRect rect )
/* ============================================================
	Function :		CDiagramRadiobutton::Draw
	Description :	Draws the "control"
					
	Return :		void
	Parameters :	CDC* dc		-	CDC to draw to
					CRect rect	-	Total object rect (zoomed)
					
	Usage :			

   ============================================================*/
{

	dc->SelectObject( CStdGrfx::dialogBrush() );
	dc->SelectObject( CStdGrfx::dialogPen() );

	dc->Rectangle( rect );

	LOGFONT lf;
	CFont chk;
	CFont font;

	GetFont( lf );
	// MS Sans Serif will not scale below 8 pts
	if( GetZoom() < 1 )
		lstrcpy( lf.lfFaceName, _T( "Arial" ) );
	font.CreateFontIndirect( &lf );

	// Marlett is used for the circle
	chk.CreateFont(  ( int ) ( ( double ) lf.lfHeight * 1.25 ), 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DECORATIVE, "Marlett" );
	dc->SetBkMode( TRANSPARENT );
	dc->SelectObject( &chk );

	dc->SetTextColor( ::GetSysColor( COLOR_WINDOW ) );
	dc->TextOut( rect.left, rect.top, "n" );

	dc->SetTextColor( ::GetSysColor( COLOR_3DSHADOW ) );
	dc->TextOut( rect.left, rect.top, "j" );

	dc->SetTextColor( ::GetSysColor( COLOR_3DHIGHLIGHT  ) );
	dc->TextOut( rect.left, rect.top, "k" );

	dc->SetTextColor( ::GetSysColor( COLOR_3DDKSHADOW ) );
	dc->TextOut( rect.left, rect.top, "l" );

	dc->SetTextColor( ::GetSysColor( COLOR_3DLIGHT ) );
	dc->TextOut( rect.left, rect.top, "m" );

	dc->SelectObject( &font );

	dc->SetTextColor( ::GetSysColor( COLOR_BTNTEXT ) );
	rect.left += ( int ) ( ( double ) abs( lf.lfHeight ) * 1.5 );
	dc->DrawText( GetTitle(), rect, DT_SINGLELINE );

	dc->SelectStockObject( DEFAULT_GUI_FONT );
	dc->SelectStockObject( BLACK_PEN );
	dc->SelectStockObject( WHITE_BRUSH );

}
void CGumpPicture::Draw( CDC* dc, CRect rect )
{
	CGumpEditorDoc* pDoc = GfxGetGumpDocument();
	ASSERT(pDoc);

	if (m_eType == RECTANGLE)
	{
		CBrush brush(pDoc->GetHueColor(GetHueId()));
		dc->FillRect(rect, &brush);
	}	
	else
	if (m_eType == FRAME)
	{
		CBrush brush(pDoc->GetHueColor(GetHueId()));
		dc->FrameRect(rect, &brush);
	}
	else 
	if (m_eType == GUMP && m_pGump) 
	{
		m_pGump->DrawGump(dc, rect, GetZoom());
	}
	else 
	{
		CGumpEntity::Draw(dc,rect);
	}

	//dc->SelectStockObject( ANSI_VAR_FONT );
	
	
}
예제 #14
0
//-----------------------------------------------------------------------------
// Purpose: 
// Input  : FOVOffset - 
//			time - 
//-----------------------------------------------------------------------------
void C_BaseHLPlayer::Zoom( float FOVOffset, float time )
{
	m_flZoomStart		= GetZoom();
	m_flZoomEnd			= FOVOffset;
	m_flZoomRate		= time;
	m_flZoomStartTime	= gpGlobals->curtime;
}
예제 #15
0
void  RichTextView::SetSb()
{
	Rect page(0, 0, GetPageCx(true), INT_MAX);
	PageY py = text.GetHeight(page);
	sb.SetTotal(py.y);
	sb.SetPage((GetSize().cy - margin.top - margin.bottom) / GetZoom());
}
예제 #16
0
RichHotPos RichEdit::GetHotPos(Point p)
{
	int x;
	PageY py;
	GetPagePoint(p, py, x);
	return text.GetHotPos(x, py, 4 / GetZoom(), pagesz);
}
예제 #17
0
파일: display.c 프로젝트: suborb/reelvdr
void Display::ShowUpperHalf() {
    // Enforce upper half of screen to be visible
    if (GetZoom()==cDisplay::Zoom_Lower)
        SetZoom(cDisplay::Zoom_Upper);
    if (mode==HalfLower)
        SetMode(HalfUpper);
}
예제 #18
0
wxPoint WinEDA_DrawPanel::GetScreenCenterRealPosition(void)
/*********************************************************/
{
wxSize size;
wxPoint realpos;

	size = GetClientSize();
	size.x /= 2; size.y /= 2;

	realpos = CalcAbsolutePosition( wxPoint(size.x, size.y) );
	realpos.x *= GetZoom();
	realpos.y *= GetZoom();
	realpos.x += GetScreen()->m_DrawOrg.x;
	realpos.y += GetScreen()->m_DrawOrg.y;

	return realpos;
}
예제 #19
0
void CGumpPicture::Draw( CDC* dc, CRect rect )
{
	if (!m_pGump) {
		CGumpEntity::Draw(dc,rect);
		return;
	}
	
	m_pGump->DrawGump(dc, rect, GetZoom());
}
예제 #20
0
void WinEDA_DrawPanel::OnPaint(wxPaintEvent & event)
/***************************************************/
{
wxPaintDC paintDC(this);
EDA_Rect tmp;
wxRect PaintClipBox;
wxPoint org;

	PrepareGraphicContext(&paintDC);
	tmp = m_ClipBox;

	org = m_ClipBox.GetOrigin();

	wxRegionIterator upd(GetUpdateRegion()); // get the update rect list

	while ( upd )
	{
		PaintClipBox = upd.GetRect();
		upd++;

		PaintClipBox.x += org.x;
		PaintClipBox.y += org.y;

#ifdef WX_ZOOM
		m_ClipBox.m_Pos.x = PaintClipBox.x * GetZoom();
		m_ClipBox.m_Pos.y = PaintClipBox.y * GetZoom();
		m_ClipBox.m_Size.x = PaintClipBox.m_Size.x * GetZoom();
		m_ClipBox.m_Size.y = PaintClipBox.m_Size.y * GetZoom();
		PaintClipBox = m_ClipBox;
#else
		m_ClipBox.SetX(PaintClipBox.GetX());
		m_ClipBox.SetY(PaintClipBox.GetY());
		m_ClipBox.SetWidth(PaintClipBox.GetWidth());
		m_ClipBox.SetHeight(PaintClipBox.GetHeight());
#endif

		wxDCClipper * dcclip = new wxDCClipper(paintDC, PaintClipBox);
		ReDraw(&paintDC, TRUE);
		delete dcclip;
	}

	m_ClipBox = tmp;
		
}
예제 #21
0
파일: GWindow.cpp 프로젝트: FEI17N/Lgi
bool GWindow::SerializeState(GDom *Store, const char *FieldName, bool Load)
{
	if (!Store || !FieldName)
		return false;

	if (Load)
	{
		::GVariant v;
		if (Store->GetValue(FieldName, v) && v.Str())
		{
			GRect Position(0, 0, -1, -1);
			GWindowZoom State = GZoomNormal;

// printf("SerializeState load %s\n", v.Str());


			GToken t(v.Str(), ";");
			for (int i=0; i<t.Length(); i++)
			{
				char *Var = t[i];
				char *Value = strchr(Var, '=');
				if (Value)
				{
					*Value++ = 0;

					if (stricmp(Var, "State") == 0)
						State = (GWindowZoom) atoi(Value);
					else if (stricmp(Var, "Pos") == 0)
						Position.SetStr(Value);
				}
				else return false;
			}
			
			if (Position.Valid())
			{
// printf("SerializeState setpos %s\n", Position.GetStr());
				SetPos(Position);
			}
			
			SetZoom(State);
		}
		else return false;
	}
	else
	{
		char s[256];
		GWindowZoom State = GetZoom();
		sprintf(s, "State=%i;Pos=%s", State, GetPos().GetStr());

		::GVariant v = s;
		if (!Store->SetValue(FieldName, v))
			return false;
	}

	return true;
}
void CGumpRadio::Draw( CDC* dc, CRect rect )
{
	STATE state = IsChecked() ? CHECKED : NORMAL;
	if (!m_pGump[state]) {
		CGumpEntity::DrawRadiobutton(dc,rect);
		return;
	}
	
	m_pGump[state]->DrawGump(dc, rect.TopLeft(), GetZoom());
}
예제 #23
0
int  RichTextView::GetPointPos(Point p) const
{
	Size sz = GetSize();
	sz.cx -= margin.left + margin.right;
	sz.cy -= margin.top + margin.bottom;
	p -= margin.TopLeft();
	Zoom zoom = GetZoom();
	p.y += sb * zoom;
	return text.GetPos(p.x / zoom, PageY(0, p.y / zoom), GetPage());
}
예제 #24
0
void CGumpButton::Draw( CDC* dc, CRect rect )
{
	if (!m_pGump[NORMAL]) {
		CGumpEntity::Draw(dc,rect);
		return;
	}
	
	//m_pGump[NORMAL]->DrawTransparent(dc, rect.TopLeft(), RGB(255,255,255));
	m_pGump[NORMAL]->DrawGump(dc, rect.TopLeft(), GetZoom());
}
예제 #25
0
void RichTextView::RefreshRange(int a, int b)
{
	int l = min(a, b);
	int h = max(a, b);
	if(l == h)
		return;
	Rect r1 = text.GetCaret(l, GetPage());
	Rect r2 = text.GetCaret(h, GetPage());
	Zoom zoom = GetZoom();
	Refresh(0, zoom * (r1.top - sb), GetSize().cx, zoom * (r2.bottom - sb + zoom.d - 1));
}
예제 #26
0
float C_BaseHLPlayer::GetFOV()
{
	//Find our FOV with offset zoom value
	float flFOVOffset = BaseClass::GetFOV() + GetZoom();

	// Clamp FOV in MP
	int min_fov = ( gpGlobals->maxClients == 1 ) ? 5 : default_fov.GetInt();
	
	// Don't let it go too low
	flFOVOffset = MAX( min_fov, flFOVOffset );

	return flFOVOffset;
}
예제 #27
0
void
WinDecorator::_DrawZoom(BRect r)
{
	DrawBeveledRect(r,GetZoom());
	
	// Draw the Zoom box

	BRect rect(r);
	rect.InsetBy(2,2);
	rect.InsetBy(1,0);
	rect.bottom--;
	rect.right--;
	
	if (GetZoom())
		rect.OffsetBy(1,1);

	fDrawingEngine->SetHighColor(RGBColor(0,0,0));
	fDrawingEngine->StrokeRect(rect);
	rect.InsetBy(1,1);
	fDrawingEngine->StrokeLine(rect.LeftTop(),rect.RightTop());
	
}
예제 #28
0
float C_HL2MP_Player::GetFOV( void )
{
	//Find our FOV with offset zoom value
	float flFOVOffset = C_BasePlayer::GetFOV() + GetZoom();

	// Clamp FOV in MP
	int min_fov = GetMinFOV();
	
	// Don't let it go too low
	flFOVOffset = max( min_fov, flFOVOffset );

	return flFOVOffset;
}
void CNCaptureView::OnCaptureImageChanged()
{
	FTLTRACE(TEXT("CNCaptureView::OnCaptureImageChanged\n"));

	CNCaptureDoc* pDoc = CNCaptureApplication::Instance()->GetDocument();
	if (pDoc)
	{
		CCapImageObj* pCaptureImage = pDoc->GetCurCaptureImage();
		//save zoom to imageobject
		if (m_pImage != NULL)
		{
			m_pImage->SetZoom(GetZoom());
		}
		m_pImage = pCaptureImage;
		m_bImageChanged = TRUE;
	}
	//m_iFixedZoomIndex = s_NormalZoomIndex;
	//ReleaseSelectRect();
	_CalcImageSize();
	//make scrollbar disappear and set statusbar text unvisible
	if (NULL == m_pImage)
	{
		CRect rcClient;
		GetClientRect(&rcClient);
		SetScrollSize(0, 0, FALSE, FALSE);
		STATUSBARINFO stStatusBarInfo;
		stStatusBarInfo.bEnable = FALSE;
		SetCurrentToolType(ttNone);
		CMainFrame* pMainFrame = CNCaptureApplication::Instance()->GetMainFrame();
		if (pMainFrame)
		{
			pMainFrame->SetStatusInfo(&stStatusBarInfo);
		}
	}
	else
	{	
		//first capture
		if (1 == pDoc->GetCaptureCount() )
		{
			SetCurrentToolType(CalcCurrentToolType());
		}
		SetZoom(m_pImage->GetZoom(), TRUE, TRUE);
		m_pImage->GetCurrentObjectInfo(m_allObjects, m_selection, TRUE);
	}
		
	Invalidate();


}
예제 #30
0
void ClipBitmapStyleEditor::OnLButtonDown(wxMouseEvent& event)
{
	wxPoint posOrigin = (event.GetPosition() + GetOriginOffset()) / GetZoom();
	for (int i = 0; i < IStyle::SS_NUM; ++i)
	{
		if (m_rectState[i].Contains(posOrigin))
		{
			// set selection
			SetSelState((IStyle::STYLE_STATE)i);
			return;
		}
	}

	SetSelState(IStyle::SS_NUM);
}