void DrawingContext::draw_surface_part(SurfacePtr surface, const Rectf& srcrect, const Rectf& dstrect, int layer) { assert(surface != 0); DrawingRequest* request = new(obst) DrawingRequest(); request->target = target; request->type = SURFACE_PART; request->pos = transform.apply(dstrect.p1); request->layer = layer; request->drawing_effect = transform.drawing_effect; request->alpha = transform.alpha; SurfacePartRequest* surfacepartrequest = new(obst) SurfacePartRequest(); surfacepartrequest->srcrect = srcrect; surfacepartrequest->dstsize = dstrect.get_size(); surfacepartrequest->surface = surface.get(); request->request_data = surfacepartrequest; requests->push_back(request); }
void Sprite_Impl::draw(Canvas &canvas, const Rectf &src, const Rectf &dest) { SpriteFrame &frame = frames[current_frame]; draw(canvas, Rectf(frame.position.left + src.left, frame.position.top + src.top, src.get_size()), dest.get_top_left(), Pointf(dest.get_width() / src.get_width(), dest.get_height() / src.get_height()) ); }
void GraphicContext::set_viewport(int index, const Rectf &viewport) { if (get_texture_image_y_axis() == y_axis_top_down) { impl->set_viewport(index, viewport); } else { Rectf viewport_flipped(Pointf(viewport.left, get_size().height - viewport.bottom), viewport.get_size()); impl->set_viewport(index, viewport_flipped); } }
void Canvas::draw_filled_rect(const Rectf& rect, const Color& color, float radius, int layer) { auto request = new(m_obst) FillRectRequest; request->type = FILLRECT; request->layer = layer; request->flip = m_context.transform().flip; request->alpha = m_context.transform().alpha; request->rect = Rectf(apply_translate(rect.p1()), rect.get_size()); request->color = color; request->color.alpha = color.alpha * m_context.transform().alpha; request->radius = radius; m_requests.push_back(request); }
void Canvas::draw_surface_part(const SurfacePtr& surface, const Rectf& srcrect, const Rectf& dstrect, int layer, const PaintStyle& style) { if (!surface) return; auto request = new(m_obst) TextureRequest(); request->type = TEXTURE; request->layer = layer; request->flip = m_context.transform().flip ^ surface->get_flip(); request->alpha = m_context.transform().alpha * style.get_alpha(); request->blend = style.get_blend(); request->srcrects.emplace_back(srcrect); request->dstrects.emplace_back(apply_translate(dstrect.p1()), dstrect.get_size()); request->angles.emplace_back(0.0f); request->texture = surface->get_texture().get(); request->displacement_texture = surface->get_displacement_texture().get(); request->color = style.get_color(); m_requests.push_back(request); }