/* === S Y N F I G ========================================================= */
-/*! \file template.cpp
+/*! \file renderer_canvas.cpp
** \brief Template File
**
-** $Id: renderer_canvas.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
+** $Id$
**
** \legal
-** Copyright (c) 2002 Robert B. Quattlebaum Jr.
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
-** This software and associated documentation
-** are CONFIDENTIAL and PROPRIETARY property of
-** the above-mentioned copyright holder.
+** This package is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License as
+** published by the Free Software Foundation; either version 2 of
+** the License, or (at your option) any later version.
**
-** You may not copy, print, publish, or in any
-** other way distribute this software without
-** a prior written agreement with
-** the copyright holder.
+** This package is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** General Public License for more details.
** \endlegal
*/
/* ========================================================================= */
void
Renderer_Canvas::render_vfunc(
const Glib::RefPtr<Gdk::Drawable>& drawable,
- const Gdk::Rectangle& expose_area
+ const Gdk::Rectangle& /*expose_area*/
)
{
assert(get_work_area());
if(!get_work_area())
return;
-
+
// const synfig::RendDesc &rend_desc(get_work_area()->get_canvas()->rend_desc());
-
+
const synfig::Vector focus_point(get_work_area()->get_focus_point());
std::vector< std::pair<Glib::RefPtr<Gdk::Pixbuf>,int> >& tile_book(get_tile_book());
-
+
int drawable_w,drawable_h;
drawable->get_size(drawable_w,drawable_h);
-
+
// Calculate the window coordinates of the top-left
// corner of the canvas.
const synfig::Vector::value_type
const int
w(get_w()),
h(get_h());
-
+
Glib::RefPtr<Gdk::GC> gc(Gdk::GC::create(drawable));
-
+
if(!tile_book.empty())
if(get_full_frame())
{
{
const int width_in_tiles(w/tile_w+(w%tile_w?1:0));
const int height_in_tiles(h/tile_h+(h%tile_h?1:0));
-
+
int u(0),v(0),tx,ty;
int u1(0),v1(0),u2(width_in_tiles), v2(height_in_tiles);
bool needs_refresh(false);
-
+
u1=int(-x/tile_w);
v1=int(-y/tile_h);
u2=int((-x+drawable_w)/tile_w+1);
if(v2>height_in_tiles)v2=height_in_tiles;
if(u1<0)u1=0;
if(v1<0)v1=0;
-
+
for(v=v1;v<v2;v++)
{
for(u=u1;u<u2;u++)
{
int index=v*width_in_tiles+u;
- if(tile_book.size()>index && tile_book[index].first)
+ if(int(tile_book.size())>index && tile_book[index].first)
{
tx=u*tile_w;
ty=v*tile_w;
// Draw the border around the rendered region
{
gc->set_rgb_fg_color(Gdk::Color("#000000"));
- gc->set_line_attributes(1,Gdk::LINE_SOLID,Gdk::CAP_BUTT,Gdk::JOIN_MITER);
+ gc->set_line_attributes(1,Gdk::LINE_SOLID,Gdk::CAP_BUTT,Gdk::JOIN_MITER);
drawable->draw_rectangle(
gc,
false, // Fill?