class DisplayMode {
private:
GraphicsAdapter* adapter;
GraphicsAdapterOutput* adapteroutput;
public:
uint32 MultisampleCount, MultisampleQuality;
bool VerticalSync, Windowed;
// Robot would murder me :3c
// Hope you don't mind Cat~
private:
union {
DXGI_MODE_DESC desc;
public:
struct {
uint32 Width;
uint32 Height;
uint32 RefreshrateNumerator;
uint32 RefreshrateDenominator;
SurfaceFormat Format;
SurfaceScanlineOrder ScanlineOrder;
MonitorScaling Scaling;
};
};
public:
DisplayMode () : adapter(null), adapteroutput(null) {
Mem::Zero( desc );
}
DisplayMode ( GraphicsAdapter* dxadapter, GraphicsAdapterOutput* dxadapteroutput, DXGI_MODE_DESC& dxdesc, bool verticalsync = true, bool fullscreen = false, uint32 multisamplecount = 1, uint32 multisamplequality = 0 )
: adapter(dxadapter), adapteroutput(dxadapteroutput), desc(dxdesc), VerticalSync(verticalsync), Windowed(!fullscreen), MultisampleQuality(multisamplequality), MultisampleCount(multisamplecount) {
}
~DisplayMode () {
adapter = null;
adapteroutput = null;
}
};
ICAgIGNsYXNzIERpc3BsYXlNb2RlIHsKICAgIHByaXZhdGU6CgkJR3JhcGhpY3NBZGFwdGVyKiBhZGFwdGVyOwoJCUdyYXBoaWNzQWRhcHRlck91dHB1dCogYWRhcHRlcm91dHB1dDsKCXB1YmxpYzoKCQl1aW50MzIgTXVsdGlzYW1wbGVDb3VudCwgTXVsdGlzYW1wbGVRdWFsaXR5OwoJCWJvb2wgVmVydGljYWxTeW5jLCBXaW5kb3dlZDsKCQkKCS8vIFJvYm90IHdvdWxkIG11cmRlciBtZSA6M2MKCS8vIEhvcGUgeW91IGRvbid0IG1pbmQgQ2F0fgoJcHJpdmF0ZTogCgkJdW5pb24gewoJCQlEWEdJX01PREVfREVTQyBkZXNjOwoJcHVibGljOgoJCQlzdHJ1Y3QgewoJCQkJdWludDMyIFdpZHRoOwoJCQkJdWludDMyIEhlaWdodDsKCQkJCXVpbnQzMiBSZWZyZXNocmF0ZU51bWVyYXRvcjsKCQkJCXVpbnQzMiBSZWZyZXNocmF0ZURlbm9taW5hdG9yOwoJCQkJU3VyZmFjZUZvcm1hdCBGb3JtYXQ7CgkJCQlTdXJmYWNlU2NhbmxpbmVPcmRlciBTY2FubGluZU9yZGVyOwoJCQkJTW9uaXRvclNjYWxpbmcgU2NhbGluZzsKCQkJfTsKCQl9OwoKCXB1YmxpYzoKCQlEaXNwbGF5TW9kZSAoKSA6IGFkYXB0ZXIobnVsbCksIGFkYXB0ZXJvdXRwdXQobnVsbCkgewoJCQlNZW06Olplcm8oIGRlc2MgKTsKCQl9CgoJCURpc3BsYXlNb2RlICggR3JhcGhpY3NBZGFwdGVyKiBkeGFkYXB0ZXIsIEdyYXBoaWNzQWRhcHRlck91dHB1dCogZHhhZGFwdGVyb3V0cHV0LCBEWEdJX01PREVfREVTQyYgZHhkZXNjLCBib29sIHZlcnRpY2Fsc3luYyA9IHRydWUsIGJvb2wgZnVsbHNjcmVlbiA9IGZhbHNlLCB1aW50MzIgbXVsdGlzYW1wbGVjb3VudCA9IDEsIHVpbnQzMiBtdWx0aXNhbXBsZXF1YWxpdHkgPSAwICkKCQk6IGFkYXB0ZXIoZHhhZGFwdGVyKSwgYWRhcHRlcm91dHB1dChkeGFkYXB0ZXJvdXRwdXQpLCBkZXNjKGR4ZGVzYyksIFZlcnRpY2FsU3luYyh2ZXJ0aWNhbHN5bmMpLCBXaW5kb3dlZCghZnVsbHNjcmVlbiksIE11bHRpc2FtcGxlUXVhbGl0eShtdWx0aXNhbXBsZXF1YWxpdHkpLCBNdWx0aXNhbXBsZUNvdW50KG11bHRpc2FtcGxlY291bnQpIHsKCQkKCQl9CgoJCX5EaXNwbGF5TW9kZSAoKSB7CgkJCWFkYXB0ZXIgPSBudWxsOwoJCQlhZGFwdGVyb3V0cHV0ID0gbnVsbDsKCQl9Cgl9Ow==