On Friday, 21 March 2014 at 11:04:58 UTC, Vladimir Panteleev wrote:
http://blog.thecybershadow.net/2014/03/21/functional-image-processing-in-d/

Some highlights from a recent overhaul of the graphics package from my D library. It makes use of a number of D-specific language features, so I've tried to make the article accessible to people new to D as well.

That's really cool. I have some notes though:

* All the function templates separate the template declaration from the function declaration, when they can just use the function template syntax.

* Any type is accepted for the colour type, even though certain basic assumptions are made, such as the colour type being assignable to itself.

* Image.w/h/pixels should probably be read-only properties in the public interface.

* Any particular reason that coordinate integers are signed? `isView` seems to prefer `size_t`.

 * `Warp` should probably have a `if (isView!V)` constraint.

 * `warp` exclusively uses string expression arguments...

* I'd recommend sticking to structs (often with AliasThis) over mixins for as far as it goes, as it's much more structured, thus easier to read and reason with.

* The most common style for template parameter names (Phobos uses it, too) is just `Color`, not `COLOR`.

* I know "w" and "h" are common abbreviations used in C, but they seem unnecessary in D - detrimental rather - if your code examples are anything to go by.

It's always nice to know examples of high performance range-based code. I noticed that the `View` concept does not have the concept of stride or access to pixels using a single absolute coordinate; maybe if that was the case, the `blitTo` algorithm could be optimized to its conclusion, instead of copying scanlines one by one.

Reply via email to