76 lines
1.7 KiB
D
76 lines
1.7 KiB
D
/* MinWin Image class
|
|
*
|
|
* Written by Ben Hinkle and released to the public domain, as
|
|
* explained at http://creativecommons.org/licenses/publicdomain
|
|
* Report comments and bugs at dsource: http://www.dsource.org/projects/minwin
|
|
*/
|
|
|
|
module minwin.image;
|
|
|
|
public import minwin.component;
|
|
|
|
private {
|
|
import minwin.app;
|
|
import minwin.paint;
|
|
}
|
|
|
|
version (MinWin32) {
|
|
private import minwin.mswindows;
|
|
|
|
alias HBITMAP ImagePeer;
|
|
|
|
class Image {
|
|
int width,height;
|
|
ImagePeer peer;
|
|
|
|
this(ImagePeer bm) {
|
|
peer = bm;
|
|
hasPeer = FOREIGN_PEER;
|
|
}
|
|
|
|
void getBits() {
|
|
// call GetDIBits. make sure bitmap isn't selected in memGC
|
|
getGContext();
|
|
// GetDIBits(memGC.peer,sdf);
|
|
}
|
|
|
|
GContext getGContext() {
|
|
GContext gc = newGContext();
|
|
gc.peer = CreateCompatibleDC(null); // hmm. null is for screen
|
|
sysAssert(gc.peer !is null, "Failed to create compatible DC for image");
|
|
gc.hasPeer = OWNS_PEER;
|
|
SelectObject(gc.peer,peer);
|
|
return gc;
|
|
}
|
|
|
|
mixin SimplePeerMixin!();
|
|
|
|
}
|
|
} else version (GTK) {
|
|
|
|
private import minwin.window;
|
|
private import minwin.gtk;
|
|
|
|
// alias GdkPixbuf* ImagePeer;
|
|
alias GdkPixmap* ImagePeer;
|
|
|
|
class Image {
|
|
int width,height;
|
|
ImagePeer peer;
|
|
|
|
this(ImagePeer bm) {
|
|
peer = bm;
|
|
hasPeer = FOREIGN_PEER;
|
|
}
|
|
|
|
GContext getGContext() {
|
|
GContext gc = newGContext();
|
|
gc.drawable = peer;
|
|
gc.peer = gdk_gc_new(gc.drawable);
|
|
gc.hasPeer = OWNS_PEER;
|
|
return gc;
|
|
}
|
|
|
|
mixin SimplePeerMixin!();
|
|
}
|
|
}
|