本文整理汇总了C++中rect::y方法的典型用法代码示例。如果您正苦于以下问题:C++ rect::y方法的具体用法?C++ rect::y怎么用?C++ rect::y使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rect
的用法示例。
在下文中一共展示了rect::y方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: queue_draw_from_tilesheet
void queue_draw_from_tilesheet(graphics::blit_queue& q, const graphics::texture& t, const rect& area, int tile_num, int x, int y, bool reverse)
{
if(tile_num < 0 || area.w() <= 0 || area.h() <= 0 || area.x() < 0 || area.y() < 0) {
return;
}
q.set_texture(t.get_id());
const int width = std::max<int>(t.width(), t.height());
const int xpos = 16*(tile_num%(width/16)) + area.x();
const int ypos = 16*(tile_num/(width/16)) + area.y();
//a value we subtract from the width and height of tiles when calculating
//UV co-ordinates. This is to prevent floating point rounding errors
//from causing us to draw slightly outside the tile. This is pretty
//nasty stuff though, and I'm not sure of a better way to do it. :(
const GLfloat TileEpsilon = 0.01;
GLfloat x1 = t.translate_coord_x(GLfloat(xpos)/GLfloat(t.width()));
GLfloat x2 = t.translate_coord_x(GLfloat(xpos+area.w() - TileEpsilon)/GLfloat(t.width()));
const GLfloat y1 = t.translate_coord_y(GLfloat(ypos)/GLfloat(t.height()));
const GLfloat y2 = t.translate_coord_y(GLfloat(ypos+area.h() - TileEpsilon)/GLfloat(t.height()));
int area_x = area.x()*2;
if(reverse) {
std::swap(x1, x2);
area_x = 32 - area.x()*2 - area.w()*2;
}
x += area_x;
y += area.y()*2;
q.add(x, y, x1, y1);
q.add(x, y + area.h()*2, x1, y2);
q.add(x + area.w()*2, y, x2, y1);
q.add(x + area.w()*2, y + area.h()*2, x2, y2);
}
示例2: rotate_rect
void rotate_rect(const rect& r, GLfloat angle, GLshort* output){
point offset;
offset.x = r.x() + r.w()/2;
offset.y = r.y() + r.h()/2;
point p;
p = rotate_point_around_origin_with_offset( r.x(), r.y(), angle, offset.x, offset.y );
output[0] = p.x;
output[1] = p.y;
p = rotate_point_around_origin_with_offset( r.x2(), r.y(), angle, offset.x, offset.y );
output[2] = p.x;
output[3] = p.y;
p = rotate_point_around_origin_with_offset( r.x2(), r.y2(), angle, offset.x, offset.y );
output[4] = p.x;
output[5] = p.y;
p = rotate_point_around_origin_with_offset( r.x(), r.y2(), angle, offset.x, offset.y );
output[6] = p.x;
output[7] = p.y;
}
示例3: intersection_rect
rect intersection_rect(const rect& a, const rect& b)
{
const int x = std::max(a.x(), b.x());
const int y = std::max(a.y(), b.y());
const int w = std::max(0, std::min(a.x2(), b.x2()) - x);
const int h = std::max(0, std::min(a.y2(), b.y2()) - y);
return rect(x, y, w, h);
}
示例4: get_tile_corners
int get_tile_corners(tile_corner* result, const graphics::texture& t, const rect& area, int tile_num, int x, int y, bool reverse)
{
if(tile_num < 0 || area.w() <= 0 || area.h() <= 0 || area.x() < 0 || area.y() < 0) {
return 0;
}
const int width = std::max<int>(t.width(), t.height());
if (width == 0) return 0;
const int xpos = 16*(tile_num%(width/16)) + area.x();
const int ypos = 16*(tile_num/(width/16)) + area.y();
//a value we subtract from the width and height of tiles when calculating
//UV co-ordinates. This is to prevent floating point rounding errors
//from causing us to draw slightly outside the tile. This is pretty
//nasty stuff though, and I'm not sure of a better way to do it. :(
const GLfloat TileEpsilon = 0.1;
GLfloat x1 = t.translate_coord_x(GLfloat(xpos + TileEpsilon)/GLfloat(t.width()));
GLfloat x2 = t.translate_coord_x(GLfloat(xpos+area.w() - TileEpsilon)/GLfloat(t.width()));
const GLfloat y1 = t.translate_coord_y(GLfloat(ypos + TileEpsilon)/GLfloat(t.height()));
const GLfloat y2 = t.translate_coord_y(GLfloat(ypos+area.h() - TileEpsilon)/GLfloat(t.height()));
int area_x = area.x()*2;
if(reverse) {
std::swap(x1, x2);
area_x = 32 - area.x()*2 - area.w()*2;
}
x += area_x;
y += area.y()*2;
result->vertex[0] = x;
result->vertex[1] = y;
result->uv[0] = x1;
result->uv[1] = y1;
++result;
result->vertex[0] = x;
result->vertex[1] = y + area.h()*2;
result->uv[0] = x1;
result->uv[1] = y2;
++result;
result->vertex[0] = x + area.w()*2;
result->vertex[1] = y;
result->uv[0] = x2;
result->uv[1] = y1;
++result;
result->vertex[0] = x + area.w()*2;
result->vertex[1] = y + area.h()*2;
result->uv[0] = x2;
result->uv[1] = y2;
++result;
return 4;
}
示例5: update_geometry
bool window::update_geometry( rect &r )
{
SetWindowPos( _hwnd, NULL, r.x(), r.y(), r.width(), r.height(),
SWP_NOOWNERZORDER | SWP_NOZORDER );
r = query_geometry();
return true;
}
示例6: rects_intersect
bool rects_intersect(const rect& a, const rect& b)
{
if(a.x2() <= b.x() || b.x2() <= a.x()) {
return false;
}
if(a.y2() <= b.y() || b.y2() <= a.y()) {
return false;
}
if(a.w() == 0 || a.h() == 0 || b.w() == 0 || b.h() == 0) {
return false;
}
return true;
}
示例7: dialog
code_editor_dialog::code_editor_dialog(const rect& r)
: dialog(r.x(), r.y(), r.w(), r.h()), invalidated_(0), has_error_(false),
modified_(false), file_contents_set_(true), suggestions_prefix_(-1),
have_close_buttons_(false)
{
init();
}
示例8: reset_clip
void context::reset_clip( const rect &r )
{
glEnable( GL_SCISSOR_TEST );
glScissor( static_cast<GLint>( r.x() ),
static_cast<GLint>( _last_vp[3] - ( r.y() + r.height() ) ),
static_cast<GLsizei>( r.width() ),
static_cast<GLsizei>( r.height() ) );
}
示例9: rect_union
rect rect_union(const rect& a, const rect& b)
{
if(a.w() == 0 || a.h() == 0) {
return b;
}
if(b.w() == 0 || b.h() == 0) {
return a;
}
const int x = std::min<int>(a.x(), b.x());
const int y = std::min<int>(a.y(), b.y());
const int x2 = std::max<int>(a.x2(), b.x2());
const int y2 = std::max<int>(a.y2(), b.y2());
return rect(x, y, x2 - x, y2 - y);
}
示例10: setViewPort
void DisplayDeviceOpenGL::setViewPort(const rect& vp)
{
if(get_current_viewport() != vp && vp.w() != 0 && vp.h() != 0) {
get_current_viewport() = vp;
// N.B. glViewPort has the origin in the bottom-left corner.
glViewport(vp.x(), vp.y(), vp.w(), vp.h());
}
}
示例11: draw_rect
void draw_rect(const rect& r, const graphics::color& color)
{
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glColor4ub(color.r(),color.g(),color.b(),color.a());
GLfloat varray[] = {
r.x(), r.y(),
r.x()+r.w(), r.y(),
r.x(), r.y()+r.h(),
r.x()+r.w(), r.y()+r.h()
};
glVertexPointer(2, GL_FLOAT, 0, varray);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
//glRecti(r.x(),r.y(),r.x()+r.w(),r.y()+r.h());
glColor4ub(255, 255, 255, 255);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}
示例12: midpoint
point entity::midpoint() const
{
if(solid()) {
const rect r = solid_rect();
return point(r.x() + r.w()/2, r.y() + r.h()/2);
}
const frame& f = current_frame();
return point(x() + f.width()/2, y() + f.height()/2);
}
示例13: slider_button
void dark_style::slider_button( const std::shared_ptr<draw::canvas> &c, const rect &r, bool pressed, coord val )
{
construct( c );
coord rad = 9.0; //r.radius();
rect tmp( rad * 2, rad * 2 );
tmp.set_center( { r.x( val, rad ), r.y( 0.5, rad ) } );
_slider_button->set( c, tmp );
_slider_button->draw( *c );
}
示例14: handle_draw
void dialog::handle_draw(const rect& r, float rotation, float scale) const
{
for(auto& tex : bg_) {
ASSERT_LOG(tex.is_valid(), "Texture isn't valid.");
}
// XXX move all the rect calculations to recalc_dimensions() and store rects.
// like in the texture.
auto& tl = bg_[static_cast<int>(BackgroundSections::CORNER_TL)];
tl.blit_ex(rect(r.x(), r.y(), tl.width(), tl.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& tr = bg_[static_cast<int>(BackgroundSections::CORNER_TR)];
tr.blit_ex(rect(r.x2() - tr.width(), r.y(), tr.width(), tr.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& bl = bg_[static_cast<int>(BackgroundSections::CORNER_BL)];
bl.blit_ex(rect(r.x(), r.y2() - bl.height(), bl.width(), bl.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& br = bg_[static_cast<int>(BackgroundSections::CORNER_BR)];
br.blit_ex(rect(r.x2() - br.width(), r.y2() - br.height(), br.width(), br.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& cc = bg_[static_cast<int>(BackgroundSections::CENTER)];
cc.blit_ex(rect(r.x()+tl.width(), r.y()+tl.height(), r.w() - br.width() - tl.width(), r.h() - br.height() - tl.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& sl = bg_[static_cast<int>(BackgroundSections::SIDE_LEFT)];
sl.blit_ex(rect(r.x(), r.y()+tl.height(), tl.width(), r.h()-bl.height()-tl.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& sr = bg_[static_cast<int>(BackgroundSections::SIDE_RIGHT)];
sr.blit_ex(rect(r.x2() - sr.width(), r.y() + tr.height(), sr.width(), r.h()-tr.height()-br.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& st = bg_[static_cast<int>(BackgroundSections::SIDE_TOP)];
st.blit_ex(rect(r.x() + tl.width(), r.y(), r.w() - tl.width() - tr.width(), st.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
auto& sb = bg_[static_cast<int>(BackgroundSections::SIDE_BOTTOM)];
sb.blit_ex(rect(r.x() + br.width(), r.y2() - sb.height(), r.w() - bl.width() - br.width(), sb.height()) * scale, rotation, r.mid() * scale, graphics::FlipFlags::NONE);
for(auto& w : children_) {
w->draw(r, rotation, scale);
}
}
示例15: entity_collides_with_entity
bool entity_collides_with_entity(const entity& e, const entity& other, collision_info* info)
{
if((e.solid_dimensions()&other.weak_solid_dimensions()) == 0 &&
(e.weak_solid_dimensions()&other.solid_dimensions()) == 0) {
return false;
}
const rect& our_rect = e.solid_rect();
const rect& other_rect = other.solid_rect();
if(!rects_intersect(our_rect, other_rect)) {
return false;
}
if(other.destroyed()) {
return false;
}
const rect area = intersection_rect(our_rect, other_rect);
const solid_info* our_solid = e.solid();
const solid_info* other_solid = other.solid();
assert(our_solid && other_solid);
const frame& our_frame = e.current_frame();
const frame& other_frame = other.current_frame();
for(int y = area.y(); y <= area.y2(); ++y) {
for(int x = area.x(); x < area.x2(); ++x) {
const int our_x = e.face_right() ? x - e.x() : (e.x() + our_frame.width()-1) - x;
const int our_y = y - e.y();
if(our_solid->solid_at(our_x, our_y, info ? &info->area_id : NULL)) {
const int other_x = other.face_right() ? x - other.x() : (other.x() + other_frame.width()-1) - x;
const int other_y = y - other.y();
if(other_solid->solid_at(other_x, other_y, info ? &info->collide_with_area_id : NULL)) {
return true;
}
}
}
}
return false;
}