本文整理汇总了C++中URect类的典型用法代码示例。如果您正苦于以下问题:C++ URect类的具体用法?C++ URect怎么用?C++ URect使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了URect类的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: getItemRenderArea
/*************************************************************************
Sets up sizes and positions for attached ItemEntry children.
*************************************************************************/
void PopupMenu::layoutItemWidgets()
{
// get render area
Rect render_rect = getItemRenderArea();
// get starting position
const float x0 = PixelAligned(render_rect.d_left);
float y0 = PixelAligned(render_rect.d_top);
URect rect;
UVector2 sz(cegui_absdim(PixelAligned(render_rect.getWidth())), cegui_absdim(0)); // set item width
// iterate through all items attached to this window
ItemEntryList::iterator item = d_listItems.begin();
while ( item != d_listItems.end() )
{
// get the "optimal" height of the item and use that!
sz.d_y.d_offset = PixelAligned((*item)->getItemPixelSize().d_height); // rounding errors ?
// set destination rect
rect.setPosition(UVector2(cegui_absdim(x0), cegui_absdim(y0)) );
rect.setSize( sz );
(*item)->setArea(rect);
// next position
y0 += PixelAligned(sz.d_y.d_offset + d_itemSpacing);
item++; // next item
}
}
开发者ID:akadjoker,项目名称:gmogre3d,代码行数:33,代码来源:CEGUIPopupMenu.cpp
示例2: UNUSED
//---------------------------------------------------------------------------------------
void GmoBoxDocPage::select_objects_in_rectangle(SelectionSet* selection,
const URect& selRect,
unsigned UNUSED(flags))
{
bool fSomethingSelected = false;
std::list<GmoShape*>::reverse_iterator it;
for (it = m_allShapes.rbegin(); it != m_allShapes.rend(); ++it)
{
URect bbox = (*it)->get_bounds();
if (selRect.contains(bbox))
{
selection->add(*it);
fSomethingSelected = true;
}
}
//if no objects in rectangle try to select clicked object
if (!fSomethingSelected)
{
GmoShape* pShape = find_shape_at(selRect.get_x(), selRect.get_y());
if (pShape)
selection->add(pShape);
}
}
开发者ID:lenmus,项目名称:lenmus,代码行数:26,代码来源:lomse_gm_basic.cpp
示例3: get_bounds
//---------------------------------------------------------------------------------------
int GmoCompositeShape::add(GmoShape* pShape)
{
m_components.push_back(pShape);
if (m_components.size() == 1)
{
//copy bounds
m_origin = pShape->get_origin();
m_size = pShape->get_size();
}
else
{
//TODO: Note from LenMus:
// lmCompositeShape: the selection rectangle should not be the boundling rectangle
// but each rectangle of each component shape. This will save the need to define
// specific shapes just to override selection rectangle. i.i. metronome marks
//compute new selection rectangle by union of individual selection rectangles
URect bbox = get_bounds();
bbox.Union(pShape->get_bounds());
m_origin = bbox.get_top_left();
m_size.width = bbox.get_width();
m_size.height = bbox.get_height();
}
//return index to added shape
return (int)m_components.size() - 1;
}
开发者ID:lenmus,项目名称:lomse,代码行数:29,代码来源:lomse_shape_base.cpp
示例4: check_if_accidentals_overlap
//---------------------------------------------------------------------------------------
LUnits ChordEngraver::check_if_accidentals_overlap(GmoShapeAccidentals* pPrevAcc,
GmoShapeAccidentals* pCurAcc)
{
URect overlap = pPrevAcc->get_bounds();
overlap.intersection( pCurAcc->get_bounds() );
return overlap.get_width();
}
开发者ID:lenmus,项目名称:lomse,代码行数:8,代码来源:lomse_chord_engraver.cpp
示例5: get_drag_offset
//---------------------------------------------------------------------------------------
UPoint ClefEngraver::get_drag_offset()
{
//return center of clef
URect bounds = m_pClefShape->get_bounds();
return UPoint(bounds.get_width() / 2.0,
bounds.get_height() / 2.0 );
}
开发者ID:gouchi,项目名称:lenmus,代码行数:8,代码来源:lomse_clef_engraver.cpp
示例6: get_bounds_for_imo
//---------------------------------------------------------------------------------------
void ScoreCaretPositioner::caret_on_pointed_object(Caret* pCaret)
{
URect bounds = get_bounds_for_imo( m_spState->id(), m_spState->staff() );
bounds.x -= tenths_to_logical(1);
set_caret_y_pos_and_height(&bounds, m_spState->id(), m_spState->staff());
pCaret->set_type(Caret::k_line);
pCaret->set_position( bounds.get_top_left() );
pCaret->set_size( USize(bounds.get_width(), bounds.get_height()) );
set_caret_timecode(pCaret);
}
开发者ID:gouchi,项目名称:lenmus,代码行数:12,代码来源:lomse_caret_positioner.cpp
示例7: recompute_bounds
//---------------------------------------------------------------------------------------
void GmoCompositeShape::recompute_bounds()
{
URect bbox;
std::list<GmoShape*>::iterator it;
for (it = m_components.begin(); it != m_components.end(); ++it)
bbox.Union((*it)->get_bounds());
m_origin = bbox.get_top_left();
m_size.width = bbox.get_width();
m_size.height = bbox.get_height();
}
开发者ID:lenmus,项目名称:lomse,代码行数:12,代码来源:lomse_shape_base.cpp
示例8: get_bounds
//---------------------------------------------------------------------------------------
GmoBox* GmoBox::find_inner_box_at(LUnits x, LUnits y)
{
URect bbox = get_bounds();
if (bbox.contains(x, y))
{
std::vector<GmoBox*>::iterator it;
for (it=m_childBoxes.begin(); it != m_childBoxes.end(); ++it)
{
GmoBox* pBox = (*it)->find_inner_box_at(x, y);
if (pBox)
return pBox;
}
return this;
}
return NULL;
}
开发者ID:lenmus,项目名称:lenmus,代码行数:17,代码来源:lomse_gm_basic.cpp
示例9: get_box_for_last_element
//---------------------------------------------------------------------------------------
void TopLevelCaretPositioner::layout_caret(Caret* pCaret, DocCursor* pCursor)
{
m_pCursor = pCursor;
m_state = m_pCursor->get_state();
ImoId id = m_state.get_parent_level_id();
GmoBox* pBox = m_pGModel->get_box_for_imo(id);
URect pos;
if (pBox)
pos = pBox->get_bounds();
else
{
//at end of document
pBox = get_box_for_last_element();
if (pBox)
{
pos.set_top_left( UPoint(pBox->get_left(), pBox->get_bottom()) );
pos.set_height(1000.0f);
pos.set_width(1000.0f);
}
else
{
//empty document
pos = URect(0.0f, 0.0f, 1000.0f, 1000.0f);
}
}
pCaret->set_type(Caret::k_top_level);
pCaret->set_top_level_box(pos);
pCaret->set_position( pos.get_top_left() );
pCaret->set_size( USize(pos.get_width(), pos.get_height()) );
}
开发者ID:gouchi,项目名称:lenmus,代码行数:34,代码来源:lomse_caret_positioner.cpp
示例10: screenToWindow
Rect CoordConverter::screenToWindow(const Window& window, const URect& rect)
{
Vector2 base(getBaseValue(window));
Rect pixel(rect.asAbsolute(System::getSingleton().getRenderer()->getSize()));
// negate base position
base.d_x = -base.d_x;
base.d_y = -base.d_y;
return pixel.offset(base);
}
开发者ID:chenbk85,项目名称:3dlearn,代码行数:11,代码来源:ELGUICoordConverter.cpp
示例11: shift
//---------------------------------------------------------------------------------------
void ArticulationEngraver::center_on_parent()
{
if (!m_pParentShape)
return;
LUnits uCenterPos;
if (m_pParentShape->is_shape_note())
{
//it is a note. Center articulation on notehead shape
GmoShapeNote* pNote = dynamic_cast<GmoShapeNote*>(m_pParentShape);
uCenterPos = pNote->get_notehead_left() + pNote->get_notehead_width() / 2.0f;
}
else
{
//it is not a note (normally it would be a rest).
//Center articulation on parent shape
uCenterPos = m_pParentShape->get_left() + m_pParentShape->get_width() / 2.0f;
}
LUnits xShift = uCenterPos -
(m_pArticulationShape->get_left() + m_pArticulationShape->get_width() / 2.0f);
if (xShift != 0.0f)
{
USize shift(xShift, 0.0f);
m_pArticulationShape->shift_origin(shift);
}
//ensure that articulation does not collides with parent shape
URect overlap = m_pParentShape->get_bounds();
overlap.intersection( m_pArticulationShape->get_bounds() );
LUnits yShift = overlap.get_height();
if (yShift != 0.0f)
{
yShift += tenths_to_logical(5.0f);
yShift = m_fAbove ? - yShift : yShift;
USize shift(0.0f, yShift);
m_pArticulationShape->shift_origin(shift);
}
}
开发者ID:lenmus,项目名称:lomse,代码行数:41,代码来源:lomse_articulation_engraver.cpp
示例12: UNUSED
//---------------------------------------------------------------------------------------
void HyperlinkCtrl::on_draw(Drawer* pDrawer, RenderOptions& UNUSED(opt))
{
select_font();
Color color = (m_fEnabled ? m_currentColor : Color(192, 192, 192));
pDrawer->set_text_color(color);
URect pos = determine_text_position_and_size();
pDrawer->draw_text(pos.x, pos.y, m_label);
//text decoration
if (m_style->text_decoration() == ImoStyle::k_decoration_underline)
{
float factor = (m_language == "zh_CN" ? 0.30f : 0.12f);
LUnits y = pos.y + pos.height * factor;
pDrawer->begin_path();
pDrawer->fill(color);
pDrawer->stroke(color);
pDrawer->stroke_width( pos.height * 0.075f );
pDrawer->move_to(pos.x, y);
pDrawer->hline_to( pos.right() );
pDrawer->end_path();
}
}
开发者ID:lenmus,项目名称:lomse,代码行数:23,代码来源:lomse_hyperlink_ctrl.cpp
示例13: URect
//---------------------------------------------------------------------------------------
void ScoreCaretPositioner::caret_at_start_of_score(Caret* pCaret)
{
//Cursor is at end of score but score is empty.
//Place cursor at start of first system
//get shape for first system
DocCursorState state = m_pDocCursor->get_state();
ImoId scoreId = state.get_parent_level_id();
//GmoShapeStaff* pShape = m_pGModel->get_shape_for_first_staff_in_first_system(scoreId);
GmoBoxScorePage* pBSP =
static_cast<GmoBoxScorePage*>( m_pGModel->get_box_for_imo(scoreId) );
m_pBoxSystem = dynamic_cast<GmoBoxSystem*>(pBSP->get_child_box(0));
GmoShapeStaff* pShape = (m_pBoxSystem ? m_pBoxSystem->get_staff_shape(0) : NULL);
URect bounds;
if (pShape)
{
bounds = pShape->get_bounds();
bounds.x += m_pMeter->tenths_to_logical(20, 0, 0);
}
else
{
//score totally empty. No staff displayed! Position cursors at start of page
//TODO
bounds = URect(0.0f, 0.0f, 20.0f, 700.0f);
// uPos.y = pBPage->GetYTop();
// uPos.x = pBPage->GetXLeft() + pScore->tenths_to_logical(20);
}
set_caret_y_pos_and_height(&bounds, k_no_imoid, 0);
pCaret->set_type(Caret::k_line);
pCaret->set_position( bounds.get_top_left() );
pCaret->set_size( USize(bounds.get_width(), bounds.get_height()) );
set_caret_timecode(pCaret);
}
开发者ID:gouchi,项目名称:lenmus,代码行数:38,代码来源:lomse_caret_positioner.cpp
示例14: getItemRenderArea
/*************************************************************************
Sets up sizes and positions for attached ItemEntry children.
*************************************************************************/
void Menubar::layoutItemWidgets()
{
Rect render_rect = getItemRenderArea();
float x0 = PixelAligned(render_rect.d_left);
URect rect;
ItemEntryList::iterator item = d_listItems.begin();
while ( item != d_listItems.end() )
{
const Size optimal = (*item)->getItemPixelSize();
(*item)->setVerticalAlignment(VA_CENTRE);
rect.setPosition(UVector2(cegui_absdim(x0), cegui_absdim(0)) );
rect.setSize( UVector2( cegui_absdim(PixelAligned(optimal.d_width)),
cegui_absdim(PixelAligned(optimal.d_height))));
(*item)->setArea(rect);
x0 += optimal.d_width + d_itemSpacing;
++item;
}
}
开发者ID:akadjoker,项目名称:gmogre3d,代码行数:27,代码来源:CEGUIMenubar.cpp
示例15: check_if_overlap
//---------------------------------------------------------------------------------------
LUnits ChordEngraver::check_if_overlap(GmoShape* pShape, GmoShape* pNewShape)
{
URect overlap = pShape->get_bounds();
overlap.intersection( pNewShape->get_bounds() );
return overlap.get_width();
}
开发者ID:lenmus,项目名称:lomse,代码行数:7,代码来源:lomse_chord_engraver.cpp
示例16: windowToScreen
Rect CoordConverter::windowToScreen(const Window& window, const URect& rect)
{
Rect tmp(rect.asAbsolute(window.getPixelSize()));
return tmp.offset(getBaseValue(window));
}
开发者ID:chenbk85,项目名称:3dlearn,代码行数:5,代码来源:ELGUICoordConverter.cpp
示例17: get_drag_offset
//---------------------------------------------------------------------------------------
UPoint BarlineEngraver::get_drag_offset()
{
//return left side, vertical center
URect bounds = m_pBarlineShape->get_bounds();
return UPoint(0.0, bounds.get_height() / 2.0);
}
开发者ID:gouchi,项目名称:lenmus,代码行数:7,代码来源:lomse_barline_engraver.cpp
注:本文中的URect类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论