>  I'd like to finish the spritemaps first though. 

agreed.

> I also think it will only be worth our effort once we have the bigger 
> textures exported from Blender.

No, I think the benefits will be immediately visible once you use downscaled 
textures. It just looks better. 

> [representative image]

okay, as long as you have it on the radar and we agree that it has to die 
eventually :)

About this change: I am still unhappy about it... Sorry :/. Now we have a 
circular dependency between RenderTarget and Surface.

I feel the semantics break down in animation::get_width() and height. We have 
two dimensions now: the "perceived" (logical) one and the images on disk ones 
(physical) - the drawing code only knows about the first, and Animation should 
be the only knowing about the other. 

Can we not simply scale the source rect whenever blit_data() is requested? 
Other solution would be to not expose Animation width/height and instead deal 
in all code with relative quantities - i.e. a source rect of {w:0.5, h:1, 
x:0.25, y:0.} would mean: use the full height of the texture, but only 50% of 
the width starting at 25%. 





Diff comments:

> 
> === modified file 'src/graphic/animation.cc'
> --- src/graphic/animation.cc  2016-10-26 10:56:02 +0000
> +++ src/graphic/animation.cc  2016-11-16 08:32:51 +0000
> @@ -144,9 +146,19 @@
>                               throw wexception("Animation is missing player 
> color file: %s", image_file.c_str());
>                       }
>               }
> +
> +             if (table.has_key("scale")) {
> +                     scale_ = table.get_double("scale");
> +                     if (scale_ <= 0.0f) {
> +                             throw wexception(
> +                                "Animation scale %f needs to be > 0.0f. 
> First image of this animation is %s", scale_,

s/First image of/This animation has/

> +                                image_files_[0].c_str());
> +                     }
> +             }
> +
>               assert(!image_files_.empty());
>               assert(pc_mask_image_files_.size() == image_files_.size() || 
> pc_mask_image_files_.empty());
> -
> +             assert(scale_ > 0);
>       } catch (const LuaError& e) {
>               throw wexception("Error in animation table: %s", e.what());
>       }
> 
> === modified file 'src/graphic/rendertarget.h'
> --- src/graphic/rendertarget.h        2016-10-17 20:39:15 +0000
> +++ src/graphic/rendertarget.h        2016-11-16 08:32:51 +0000
> @@ -130,9 +130,10 @@
>               return offset_;
>       }
>  
> +     bool to_surface_geometry(Rectf* destination_rect, Rectf* source_rect) 
> const;

Add a comment what this does?

> +
>  protected:
>       bool clip(Rectf& r) const;
> -     bool to_surface_geometry(Rectf* destination_rect, Rectf* source_rect) 
> const;
>  
>       // Does the actual blitting.
>       void do_blit_animation(const Vector2f& dst,


-- 
https://code.launchpad.net/~widelands-dev/widelands/animation_scaling/+merge/310718
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/animation_scaling.

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to