Slightly improve docs and usability

This commit is contained in:
Elias Batek 2024-10-07 03:24:22 +02:00
parent 1fbdcab948
commit db6b6d1f74
1 changed files with 44 additions and 2 deletions

View File

@ -343,10 +343,13 @@ struct Pixmap {
/++ /++
Retrieves a rectangular subimage of the pixmap. Retrieves a rectangular subimage of the pixmap.
+/ +/
inout(SubPixmap) scan2D(Point pos, Size size) inout { inout(SubPixmap) scanSubPixmap(Point pos, Size size) inout {
return inout(SubPixmap)(this, size, pos); return inout(SubPixmap)(this, size, pos);
} }
/// TODO: remove
deprecated alias scan2D = scanSubPixmap;
/++ /++
Retrieves the first line of the Pixmap. Retrieves the first line of the Pixmap.
@ -357,6 +360,42 @@ struct Pixmap {
return data[0 .. width]; return data[0 .. width];
} }
public {
/++
Provides access to a single pixel at the requested 2D-position.
See_also:
Accessing pixels through the [data] array will be more useful,
usually.
+/
ref inout(Pixel) accessPixel(Point pos) inout @system {
const idx = linearOffset(pos, this.width);
return this.data[idx];
}
/// ditto
Pixel getPixel(Point pos) const {
const idx = linearOffset(pos, this.width);
return this.data[idx];
}
/// ditto
Pixel getPixel(int x, int y) const {
return this.getPixel(Point(x, y));
}
/// ditto
void setPixel(Point pos, Pixel value) {
const idx = linearOffset(pos, this.width);
this.data[idx] = value;
}
/// ditto
void setPixel(int x, int y, Pixel value) {
return this.setPixel(Point(x, y), value);
}
}
/// Clears the buffers contents (by setting each pixel to the same color) /// Clears the buffers contents (by setting each pixel to the same color)
void clear(Pixel value) { void clear(Pixel value) {
data[] = value; data[] = value;
@ -1733,7 +1772,10 @@ Pixmap cropInPlace(Pixmap source, Size targetSize, Point offset = Point(0, 0)) @
$(PITFALL $(PITFALL
This function does not work in place. This function does not work in place.
Do not attempt to pass Pixmaps sharing the same buffer for both source Do not attempt to pass Pixmaps sharing the same buffer for both source
and target. Such would lead to a bad result with heavy artifacts. and target. Such would lead to bad results with heavy artifacts.
Do not use the artifacts produced by this as a creative effect.
Those are an implementation detail.
) )
+/ +/
void rotateClockwise(const Pixmap source, Pixmap target) @nogc { void rotateClockwise(const Pixmap source, Pixmap target) @nogc {