diff --git a/CNAME b/CNAME index 292c50917..a95428109 100644 --- a/CNAME +++ b/CNAME @@ -1,2 +1 @@ -webassembly.studio -www.webassembly.studio +webassembly-studio.kamenokosoft.com diff --git a/bin/bundle-templates.js b/bin/bundle-templates.js index 72984d235..87de056ed 100644 --- a/bin/bundle-templates.js +++ b/bin/bundle-templates.js @@ -45,7 +45,7 @@ function bundleTemplate(templateName) { let base = path.join(templatesDir, templateName); let files = []; walk(base, (path) => { - let name = path.substring(base.length + 1); + let name = path.substring(base.length + 1).replace("\\", "/"); if (name == "package.json") { const pkg = JSON.parse(fs.readFileSync(path, "utf8")); templateName = pkg.name; @@ -56,8 +56,10 @@ function bundleTemplate(templateName) { icon = pkg.wasmStudio.icon || icon; } } + const extensionsOfBinaryFile = [ "wasm", "data" ]; files.push({ name, + type: extensionsOfBinaryFile.includes(name.split(".").pop()) ? "binary" : "text" }); }) return { diff --git a/config.json b/config.json index 82bdb0cb4..a24877ecd 100644 --- a/config.json +++ b/config.json @@ -3,9 +3,10 @@ "clang": "//webassembly-studio-clang.herokuapp.com/build", "rustc": "//webassembly-studio-rust.herokuapp.com/rustc", "cargo": "//webassembly-studio-rust.herokuapp.com/cargo", + "emscripten": "//emscripten-compiler.herokuapp.com/build", "templates": { - "default": "/dist/templates/index.js", - "arc": "/dist/arc-templates/index.js" + "default": "dist/templates/index.js", + "arc": "dist/arc-templates/index.js" }, "sentryDNS": "https://756ae32005ed49cf9d4dd2aa106ccd4a@sentry.io/1229949" } diff --git a/package-lock.json b/package-lock.json index 0778587a4..75767d2b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -225,6 +225,12 @@ "@types/puppeteer": "*" } }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, "@types/jszip": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.1.4.tgz", @@ -623,6 +629,7 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -634,6 +641,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -653,9 +661,9 @@ "dev": true }, "ansi-colors": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.1.tgz", - "integrity": "sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, "ansi-escapes": { @@ -750,9 +758,9 @@ "dev": true }, "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "array-union": { @@ -834,7 +842,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -2030,33 +2038,33 @@ "dev": true }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.43.0 < 2" }, "dependencies": { "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true } } }, "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" } @@ -2086,7 +2094,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -2101,7 +2109,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -2111,9 +2119,9 @@ } }, "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, "console-browserify": { @@ -2495,10 +2503,26 @@ "dev": true }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } }, "deep-equal-ident": { "version": "1.1.1", @@ -3184,9 +3208,9 @@ } }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, "events": { @@ -3821,22 +3845,28 @@ } }, "follow-redirects": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", - "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", "dev": true, "requires": { - "debug": "=3.1.0" + "debug": "^3.0.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -3968,7 +3998,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3989,12 +4020,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4009,17 +4042,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4136,7 +4172,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4148,6 +4185,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4162,6 +4200,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4169,12 +4208,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4193,6 +4234,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4273,7 +4315,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4285,6 +4328,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4370,7 +4414,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4406,6 +4451,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4425,6 +4471,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4468,12 +4515,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -4659,9 +4708,9 @@ } }, "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, "handlebars": { @@ -4874,7 +4923,7 @@ "dependencies": { "domelementtype": { "version": "1.3.0", - "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", "dev": true }, @@ -4919,18 +4968,18 @@ } }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -4954,9 +5003,9 @@ "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -5248,6 +5297,12 @@ } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6542,9 +6597,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", "dev": true }, "json5": { @@ -6850,16 +6905,17 @@ } }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -7338,9 +7394,9 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-int64": { @@ -7388,7 +7444,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -7403,7 +7459,7 @@ "dependencies": { "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -7657,9 +7713,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -7687,9 +7743,9 @@ "dev": true }, "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { "is-wsl": "^1.1.0" @@ -7837,7 +7893,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -7852,7 +7908,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -8051,20 +8107,44 @@ "dev": true }, "portfinder": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz", - "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" }, "dependencies": { "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -8820,9 +8900,9 @@ "dev": true }, "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, "raf": { @@ -9154,6 +9234,108 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -9510,12 +9692,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.9.0" } }, "semver": { @@ -9642,7 +9824,7 @@ "dependencies": { "kind-of": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { @@ -9831,18 +10013,18 @@ } }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -9951,62 +10133,88 @@ "dev": true }, "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", "dev": true, "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", + "debug": "^4.1.0", + "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", + "debug": "^4.1.0", + "detect-node": "^2.0.4", "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" }, "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } } } @@ -10149,7 +10357,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10164,7 +10372,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -10214,7 +10422,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10275,6 +10483,60 @@ "function-bind": "^1.0.2" } }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -10503,13 +10765,109 @@ } }, "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + } } }, "supports-color": { @@ -10752,7 +11110,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10767,7 +11125,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -10777,9 +11135,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "timers-browserify": { @@ -11277,12 +11635,12 @@ } }, "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "dev": true, "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -11326,9 +11684,9 @@ "dev": true }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { @@ -11406,7 +11764,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -11419,7 +11777,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -11830,17 +12188,17 @@ }, "dependencies": { "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true } } }, "webpack-dev-server": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz", - "integrity": "sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.11.tgz", + "integrity": "sha512-E/uGbO9ndXrXgNUzw+O2UrrvYY/eIw10fpJnbvJf8VOH/NWZuY3nUG7arbgB/kbkORlF/sPHxnv10tKFtKf3aA==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -11862,24 +12220,26 @@ "portfinder": "^1.0.9", "schema-utils": "^1.0.0", "selfsigned": "^1.9.1", + "semver": "^5.6.0", "serve-index": "^1.7.2", "sockjs": "0.3.19", "sockjs-client": "1.3.0", - "spdy": "^3.4.1", + "spdy": "^4.0.0", "strip-ansi": "^3.0.0", "supports-color": "^5.1.0", + "url": "^0.11.0", "webpack-dev-middleware": "3.4.0", "webpack-log": "^2.0.0", "yargs": "12.0.2" }, "dependencies": { "ajv": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", - "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -11951,13 +12311,13 @@ } }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -11966,9 +12326,9 @@ } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "find-up": { @@ -11980,6 +12340,15 @@ "locate-path": "^3.0.0" } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -12022,37 +12391,49 @@ } }, "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.10.0", + "execa": "^1.0.0", "lcid": "^2.0.0", "mem": "^4.0.0" } }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -12068,9 +12449,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pkg-dir": { @@ -12099,6 +12480,12 @@ "ajv-keywords": "^3.1.0" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -12156,14 +12543,6 @@ "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } } }, "webpack-sources": { @@ -12185,12 +12564,13 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, diff --git a/package.json b/package.json index a34abd3d7..6e3c63236 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "stryker-html-reporter": "^0.16.9", "stryker-jest-runner": "^1.2.9", "stryker-typescript": "^0.14.2", - "style-loader": "^0.21.0", + "style-loader": "^2.0.0", "ts-loader": "^4.5.0", "tslint": "^5.11.0", "typescript": "^3.1.6", @@ -114,6 +114,6 @@ "webpack": "^4.26.1", "webpack-bundle-analyzer": "^2.13.1", "webpack-cli": "^3.1.1", - "webpack-dev-server": "^3.1.10" + "webpack-dev-server": "^3.1.11" } } diff --git a/src/compilerServices/emscriptenService.ts b/src/compilerServices/emscriptenService.ts new file mode 100644 index 000000000..75303a313 --- /dev/null +++ b/src/compilerServices/emscriptenService.ts @@ -0,0 +1,90 @@ +/* Copyright 2018 Mozilla Foundation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import { CompilerService, ServiceInput, ServiceOutput, Language, InputFile } from "./types"; +import { sendRequestJSON, ServiceTypes } from "./sendRequest"; +import { decodeBinary } from "./utils"; +import { StringDecoder } from "string_decoder"; + +interface IFileContent { + name: string; + data?: string; + type?: "text" | "binary"; +} + +interface ICompileResult { + files: IFileContent[]; +} + +export class EmscriptenService implements CompilerService { + + async compile(input: ServiceInput): Promise { + const files = Object.values(input.files); + const inputFile = Object.keys(input.files); + const compiledFiles = []; + + for (let i = 0; i < inputFile.length; i++) { + compiledFiles.push({ + type: inputFile[i].split(".").pop(), + name: inputFile[i].split("/").pop(), + options: input.options, + src: files[i].content, + }); + } + + const project = { + output: "wasm", + compress: true, + files: compiledFiles, + link_options: input.options + }; + const result = await sendRequestJSON(project, ServiceTypes.Emscripten); + const items: any = {}; + if (result.success) { + const content = await decodeBinary(result.output); + items["a.wasm"] = { content }; + } + + const findInputFileFromFileName = (fileName: string): string => { + const maybeFileRef = inputFile.filter(x => x.indexOf(fileName) >= 0); + if (maybeFileRef.length > 0) { + return maybeFileRef[0]; + } else { + return null; + } + }; + for (const task of result.tasks) { + const fileRef = findInputFileFromFileName(task.file); + items[task.file] = { fileRef, console: task.console }; + } + + if (result.wasmBindgenJs) { + items["wasm_bindgen.js"] = { + content: result.wasmBindgenJs, + }; + } + + return { + success: result.success, + console: result.message, + items, + }; + } +} diff --git a/src/compilerServices/index.ts b/src/compilerServices/index.ts index 16524d545..20f6e1f65 100644 --- a/src/compilerServices/index.ts +++ b/src/compilerServices/index.ts @@ -21,6 +21,7 @@ import { CompilerService, Language } from "./types"; import { RustService } from "./rustService"; import { ClangService } from "./clangService"; +import { EmscriptenService } from "./emscriptenService"; import { X86Service } from "./x86Service"; export { @@ -37,7 +38,7 @@ export async function createCompilerService(from: Language, to: Language): Promi return new RustService(); } if ((from === Language.C || from === Language.Cpp) && to === Language.Wasm) { - return new ClangService(from); + return new EmscriptenService(); } if (from === Language.Wasm && to === Language.x86) { return new X86Service(); diff --git a/src/compilerServices/sendRequest.ts b/src/compilerServices/sendRequest.ts index a6c9d2685..b4f87a600 100644 --- a/src/compilerServices/sendRequest.ts +++ b/src/compilerServices/sendRequest.ts @@ -24,6 +24,7 @@ export enum ServiceTypes { Rustc, Cargo, Clang, + Emscripten, Service } @@ -54,6 +55,8 @@ export async function getServiceURL(to: ServiceTypes): Promise { return config.clang; case ServiceTypes.Service: return config.serviceUrl; + case ServiceTypes.Emscripten: + return config.emscripten; default: throw new Error(`Invalid ServiceType: ${to}`); } diff --git a/src/config.ts b/src/config.ts index 0a353e704..7f100f7a9 100644 --- a/src/config.ts +++ b/src/config.ts @@ -24,6 +24,7 @@ export interface IConfig { clang: string; rustc: string; cargo: string; + emscripten: string; templates: { [name: string]: string }; } diff --git a/src/models/File.ts b/src/models/File.ts index 06bb99505..fc0679c38 100644 --- a/src/models/File.ts +++ b/src/models/File.ts @@ -127,6 +127,8 @@ export class File { monaco.editor.setModelLanguage(this.buffer, languageForFileType(FileType.Wat)); this.description = "This .wasm file is editable as a .wat file, and is automatically reassembled to .wasm when saved."; return; + } else if (isBinaryFileType(this.type)) { + this.description = "Binary file will not be shown."; } else { this.buffer.setValue(this.data as string); this.resetDirty(); diff --git a/src/models/types.ts b/src/models/types.ts index 767e49b05..f42847e68 100644 --- a/src/models/types.ts +++ b/src/models/types.ts @@ -40,6 +40,14 @@ export enum FileType { JSON = "json", DOT = "dot", TOML = "toml", + TTF = "ttf", + Bitmap = "bitmap", + PNG = "png", + Jpeg = "jpeg", + Wave = "wave", + MP3 = "mp3", + Ogg = "ogg", + DATA = "data", Unknown = "unknown" } @@ -58,6 +66,22 @@ export function isBinaryFileType(type: FileType) { switch (type) { case FileType.Wasm: return true; + case FileType.TTF: + return true; + case FileType.Bitmap: + return true; + case FileType.PNG: + return true; + case FileType.Jpeg: + return true; + case FileType.Wave: + return true; + case FileType.MP3: + return true; + case FileType.Ogg: + return true; + case FileType.DATA: + return true; default: return false; } @@ -92,6 +116,22 @@ export function languageForFileType(type: FileType): string { return "dot"; } else if (type === FileType.TOML) { return "toml"; + } else if (type === FileType.TTF) { + return "ttf"; + } else if (type === FileType.Bitmap) { + return "bitmap"; + } else if (type === FileType.PNG) { + return "png"; + } else if (type === FileType.Jpeg) { + return "jpeg"; + } else if (type === FileType.Wave) { + return "wave"; + } else if (type === FileType.MP3) { + return "mp3"; + } else if (type === FileType.Ogg) { + return "ogg"; + } else if (type === FileType.DATA) { + return "data"; } return ""; } @@ -125,6 +165,22 @@ export function nameForFileType(type: FileType): string { return "DOT"; } else if (type === FileType.TOML) { return "TOML"; + } else if (type === FileType.TTF) { + return "TrueType Font"; + } else if (type === FileType.Bitmap) { + return "Bitmap Image"; + } else if (type === FileType.PNG) { + return "Png Image"; + } else if (type === FileType.Jpeg) { + return "Jpeg Image"; + } else if (type === FileType.Wave) { + return "Wave Audio"; + } else if (type === FileType.MP3) { + return "MP3 Audio"; + } else if (type === FileType.Ogg) { + return "Ogg Audio"; + } else if (type === FileType.DATA) { + return "Binary File"; } return ""; } @@ -158,6 +214,22 @@ export function extensionForFileType(type: FileType): string { return "dot"; } else if (type === FileType.TOML) { return "toml"; + } else if (type === FileType.TTF) { + return "ttf"; + } else if (type === FileType.Bitmap) { + return "bmp"; + } else if (type === FileType.PNG) { + return "png"; + } else if (type === FileType.Jpeg) { + return "jpeg"; + } else if (type === FileType.Wave) { + return "wav"; + } else if (type === FileType.MP3) { + return "mp3"; + } else if (type === FileType.Ogg) { + return "ogg"; + } else if (type === FileType.DATA) { + return "data"; } return ""; } @@ -195,6 +267,22 @@ export function fileTypeForExtension(extension: string): FileType { return FileType.DOT; } else if (extension === "toml") { return FileType.TOML; + } else if (extension === "ttf") { + return FileType.TTF; + } else if (extension === "bmp") { + return FileType.Bitmap; + } else if (extension === "png") { + return FileType.PNG; + } else if (extension === "jpeg") { + return FileType.Jpeg; + } else if (extension === "wav") { + return FileType.Wave; + } else if (extension === "mp3") { + return FileType.MP3; + } else if (extension === "ogg" || extension === "oga") { + return FileType.Ogg; + } else if (extension === "data" || extension === "dat") { + return FileType.DATA; } return null; } @@ -212,6 +300,22 @@ export function mimeTypeForFileType(type: FileType): string { return "text/plain"; } else if (type === FileType.Markdown) { return "text/markdown"; + } else if (type === FileType.TTF) { + return "font/ttf"; + } else if (type === FileType.Bitmap) { + return "image/bmp"; + } else if (type === FileType.PNG) { + return "image/png"; + } else if (type === FileType.Jpeg) { + return "image/jpeg"; + } else if (type === FileType.Wave) { + return "audio/wav"; + } else if (type === FileType.MP3) { + return "audio/mpeg"; + } else if (type === FileType.Ogg) { + return "audio/ogg"; + } else if (type === FileType.DATA) { + return "application/octet-stream"; } return ""; } @@ -227,6 +331,22 @@ export function fileTypeForMimeType(type: string): FileType { return FileType.Markdown; } else if (type === "application/json") { return FileType.JSON; + } else if (type === "font/ttf") { + return FileType.TTF; + } else if (type === "image/bmp") { + return FileType.Bitmap; + } else if (type === "image/png") { + return FileType.PNG; + } else if (type === "image/jpeg") { + return FileType.Jpeg; + } else if (type === "audio/wav") { + return FileType.Wave; + } else if (type === "audio/mpeg") { + return FileType.MP3; + } else if (type === "audio/ogg") { + return FileType.Ogg; + } else if (type === "application/octet-stream") { + return FileType.DATA; } return FileType.Unknown; } diff --git a/templates/empty_c/README.md b/templates/empty_c/README.md deleted file mode 100644 index 31148208d..000000000 --- a/templates/empty_c/README.md +++ /dev/null @@ -1 +0,0 @@ -# Empty C Project diff --git a/templates/empty_c/build.ts b/templates/empty_c/build.ts deleted file mode 100644 index 626bb3aad..000000000 --- a/templates/empty_c/build.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as gulp from "gulp"; -import { Service, project } from "@wasm/studio-utils"; - -gulp.task("build", async () => { - const data = await Service.compileFile(project.getFile("src/main.c"), "c", "wasm", "-g -O3"); - const outWasm = project.newFile("out/main.wasm", "wasm", true); - outWasm.setData(data); -}); - -gulp.task("default", ["build"], async () => {}); diff --git a/templates/empty_c/src/main.c b/templates/empty_c/src/main.c deleted file mode 100644 index 056e3c3ee..000000000 --- a/templates/empty_c/src/main.c +++ /dev/null @@ -1,6 +0,0 @@ -#define WASM_EXPORT __attribute__((visibility("default"))) - -WASM_EXPORT -int main() { - return 42; -} diff --git a/templates/empty_c/src/main.html b/templates/empty_c/src/main.html deleted file mode 100644 index e5fad12c5..000000000 --- a/templates/empty_c/src/main.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/templates/empty_c/src/main.js b/templates/empty_c/src/main.js deleted file mode 100644 index 61f441be6..000000000 --- a/templates/empty_c/src/main.js +++ /dev/null @@ -1,6 +0,0 @@ -fetch('../out/main.wasm').then(response => - response.arrayBuffer() -).then(bytes => WebAssembly.instantiate(bytes)).then(results => { - instance = results.instance; - document.getElementById("container").textContent = instance.exports.main(); -}).catch(console.error); diff --git a/templates/empty_rust/README.md b/templates/empty_rust/README.md deleted file mode 100644 index 71e4e7110..000000000 --- a/templates/empty_rust/README.md +++ /dev/null @@ -1 +0,0 @@ -# Empty Rust Project diff --git a/templates/empty_rust/build.ts b/templates/empty_rust/build.ts deleted file mode 100644 index 729435cb2..000000000 --- a/templates/empty_rust/build.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as gulp from "gulp"; -import { Service, project } from "@wasm/studio-utils"; - -gulp.task("build", async () => { - const options = { lto: true, opt_level: 's', debug: true }; - const data = await Service.compileFile(project.getFile("src/main.rs"), "rust", "wasm", options); - const outWasm = project.newFile("out/main.wasm", "wasm", true); - outWasm.setData(data); -}); - -gulp.task("default", ["build"], async () => {}); diff --git a/templates/empty_rust/src/main.html b/templates/empty_rust/src/main.html deleted file mode 100644 index e5fad12c5..000000000 --- a/templates/empty_rust/src/main.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/templates/empty_rust/src/main.js b/templates/empty_rust/src/main.js deleted file mode 100644 index 2ec355b72..000000000 --- a/templates/empty_rust/src/main.js +++ /dev/null @@ -1,6 +0,0 @@ -fetch('../out/main.wasm').then(response => - response.arrayBuffer() -).then(bytes => WebAssembly.instantiate(bytes)).then(results => { - instance = results.instance; - document.getElementById("container").textContent = instance.exports.add_one(41); -}).catch(console.error); diff --git a/templates/empty_rust/src/main.rs b/templates/empty_rust/src/main.rs deleted file mode 100644 index da5a56924..000000000 --- a/templates/empty_rust/src/main.rs +++ /dev/null @@ -1,4 +0,0 @@ -#[no_mangle] -pub extern "C" fn add_one(x: i32) -> i32 { - x + 1 -} \ No newline at end of file diff --git a/templates/empty_wat/README.md b/templates/empty_wat/README.md deleted file mode 100644 index 007fe30f7..000000000 --- a/templates/empty_wat/README.md +++ /dev/null @@ -1 +0,0 @@ -# Empty Wat Project diff --git a/templates/empty_wat/build.ts b/templates/empty_wat/build.ts deleted file mode 100644 index fddbbe5df..000000000 --- a/templates/empty_wat/build.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as gulp from "gulp"; -import { Service, project } from "@wasm/studio-utils"; - -gulp.task("build", async () => { - const data = await Service.assembleWat(project.getFile("src/main.wat").getData()); - const outWasm = project.newFile("out/main.wasm", "wasm", true); - outWasm.setData(data); -}); - -gulp.task("default", ["build"], async () => {}); diff --git a/templates/empty_wat/src/main.html b/templates/empty_wat/src/main.html deleted file mode 100644 index e5fad12c5..000000000 --- a/templates/empty_wat/src/main.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/templates/empty_wat/src/main.js b/templates/empty_wat/src/main.js deleted file mode 100644 index 978b2c545..000000000 --- a/templates/empty_wat/src/main.js +++ /dev/null @@ -1,7 +0,0 @@ -fetch('../out/main.wasm').then(response => - response.arrayBuffer() -).then(bytes => WebAssembly.instantiate(bytes)).then(results => { - instance = results.instance; - document.getElementById("container").textContent = instance.exports.add(1,1); -}).catch(console.error); - diff --git a/templates/empty_wat/src/main.wat b/templates/empty_wat/src/main.wat deleted file mode 100644 index 7f603563b..000000000 --- a/templates/empty_wat/src/main.wat +++ /dev/null @@ -1,7 +0,0 @@ -(module - (func $add (param $lhs i32) (param $rhs i32) (result i32) - get_local $lhs - get_local $rhs - i32.add) - (export "add" (func $add)) -) \ No newline at end of file diff --git a/templates/hello-dxlib/README.md b/templates/hello-dxlib/README.md new file mode 100644 index 000000000..3405b98e1 --- /dev/null +++ b/templates/hello-dxlib/README.md @@ -0,0 +1,17 @@ +# Hello DxLib in C++ + +Level: *Advanced* + +This project has simple DxLib code for WebGL app. This project owes to [emscripten compiler backend](https://github.com/nokotan/emscripten-compiler) and [DxLib for HTML5](https://github.com/nokotan/DxLibForHTML5). + +### Project Overview + +* `main.cpp` - Imports `DxLib.h` and draws red circle using `DrawCircle`. +* `main.html` - For canvas to be rendered. +* `DxLib.wasm` - Precompiled library. Should be listed in `Module.dynamicLibraries` and loaded dynamically by emscripten runtime. + +### Things to Explore + +1. Click Build to compile `main.cpp` file to `src/main.wasm`. + +2. Click Run diff --git a/templates/hello-dxlib/build.ts b/templates/hello-dxlib/build.ts new file mode 100644 index 000000000..5d48575b8 --- /dev/null +++ b/templates/hello-dxlib/build.ts @@ -0,0 +1,14 @@ +import * as gulp from "gulp"; +import { Service, project } from "@wasm/studio-utils"; + +gulp.task("build", async () => { + const data = await Service.compileFiles([ + project.getFile("src/main.cpp") + ], "cpp", "wasm", "-std=c++17 -Wall -O2 -include-pch /include/DxLib/DxLib.O2.pch -I/include/DxLib -s MAIN_MODULE=1 -s ALLOW_MEMORY_GROWTH=1 -s FULL_ES2=1"); + const outWasm = project.newFile("src/main.wasm", "wasm", true); + outWasm.setData(data["a.wasm"]); + const outJS = project.newFile("src/main.js", "javascript", true); + outJS.setData(data["wasm_bindgen.js"]); +}); + +gulp.task("default", ["build"], async () => {}); diff --git a/templates/hello-dxlib/include/DxCompileConfig.h b/templates/hello-dxlib/include/DxCompileConfig.h new file mode 100644 index 000000000..917a447df --- /dev/null +++ b/templates/hello-dxlib/include/DxCompileConfig.h @@ -0,0 +1,402 @@ +// ---------------------------------------------------------------------------- +// +// DXライブラリ コンパイルコンフィグヘッダファイル +// +// Ver 3.21d +// +// ---------------------------------------------------------------------------- + +/* +<<注意>> +  このヘッダファイルの #define のコメントアウト状態を変更しても、 + DXライブラリ自体の再コンパイルを行わないと効果はありません。 +*/ + +// 多重インクルード防止用マクロ +#ifndef DXCOMPILECONFIG_H +#define DXCOMPILECONFIG_H + +// スタティックライブラリ生成時ライブラリ機能制限用定義 ----------------------- + +// namespace DxLib を使用しない場合は次のコメントを外してください +//#define DX_NON_NAMESPACE + +// DxLib.h に書かれている using namespace DxLib ; を使用しない場合は次のコメントを外してください +//#define DX_NON_USING_NAMESPACE_DXLIB + +// インラインアセンブラを使用しないソースコードでコンパイルする場合は以下のコメントアウトを外してください +#define DX_NON_INLINE_ASM + +// DXライブラリのプログラムから文字列を一切排除する場合はコメントを外してください +// (バイナリエディタで実行ファイルを開いてもDXライブラリを使用していることが分かり難くなります(よく調べれば当然分かりますが) +// 因みに、エラー出力が一切されなくなりますので管理人の対応時に支障をきたすかもしれません) +// #define DX_NON_LITERAL_STRING + +// すべての関数をスレッドセーフにする場合はコメントを外してください +// #define DX_THREAD_SAFE + +// ネットワーク関連の関数だけスレッドセーフにする場合はコメントを外して下さい +// #define DX_THREAD_SAFE_NETWORK_ONLY + +// DXアーカイブがいらない方は次のコメントを外してください +// ( DXアーカイブを無効にすると、DXアーカイブを内部で使っている関係上 DX_NON_MODEL と DX_NON_FILTER と DX_NON_MOVIE と DX_NON_NORMAL_DRAW_SHADER も有効になります ) +//#define DX_NON_DXA + +// ムービー機能がいらない方は次のコメントを外してください +#define DX_NON_MOVIE + +// TGA画像の読み込み機能がいらない方は次のコメントを外してください +#define DX_NON_TGA + +// JPEG画像の読みこみ機能がいらない方は次のコメントを外してください +// ※DxUseCLib.lib も再コンパイルする必要があります +#define DX_NON_JPEGREAD + +// PNG画像の読みこみ機能がいらない方は次のコメントを外してください +// ※DxUseCLib.lib も再コンパイルする必要があります +//#define DX_NON_PNGREAD + +// TIFF画像の読みこみ機能がいらない方は次のコメントを外してください +// ※DxUseCLib.lib も再コンパイルする必要があります +#define DX_NON_TIFFREAD + +// GraphFilter や GraphBlend を使用しない方は次のコメントを外して下さい +// #define DX_NON_FILTER + +// 通常描画にプログラマブルシェーダーを使用しない方は次のコメントを外してください +// #define DX_NON_NORMAL_DRAW_SHADER + +// グラフィックス処理がいらない方は次のコメントを外してください +// #define DX_NON_GRAPHICS + +// ソフトウエア2D描画がいらない方は次のコメントを外してください +#define DX_NON_2DDRAW + +// 標準 WAVE ファイル以外の音声ファイルを使用しない方は次のコメントを外してください +//#define DX_NON_ACM + +// DirectShow を使用した MP3 ファイルのデコードを行わない場合は次のコメントをはずしてください +//#define DX_NON_DSHOW_MP3 + +// DirectShow を使用した動画ファイルのデコードを行わない場合は次のコメントをはずしてください +//#define DX_NON_DSHOW_MOVIE + +// Media Foundation を使用した動画ファイルのデコードを行わない場合は次のコメントをはずしてください +//#define DX_NON_MEDIA_FOUNDATION + +// キーボードの基本的な入力機能以外はいらない方は次のコメントを外してください +//#define DX_NON_KEYEX + +// 文字列入力機能はいらない方は次のコメントを外して下さい +//#define DX_NON_INPUTSTRING + +// 通信機能がいらない方は次のコメントを外してください +#define DX_NON_NETWORK + +// マスク機能がいらない方は次のコメントを外してください +//#define DX_NON_MASK + +// Ogg Vorbis データを使用しない方は次のコメントをはずしてください +// ※DxUseCLib.lib も再コンパイルする必要があります +// #define DX_NON_OGGVORBIS + +// Ogg Theora データを使用しない方は次のコメントをはずしてください +// ※DxUseCLib.lib も再コンパイルする必要があります +#define DX_NON_OGGTHEORA + +// Opus データを使用しない方は次のコメントをはずしてください +// ※DxUseCLib.lib も再コンパイルする必要があります +#define DX_NON_OPUS + +// ASIO を使用しない方は次のコメントをはずしてください +#define DX_NON_ASIO + +// 乱数発生器に Mersenne Twister を使用しない場合は以下のコメントを外して下さい +// ※DxUseCLib.lib も再コンパイルする必要があります +//#define DX_NON_MERSENNE_TWISTER + +// DXライブラリ内の確保メモリのダンプ機能を有効にする場合は次のコメントを外してください +// #define DX_USE_DXLIB_MEM_DUMP + +// モデルデータを扱う機能を使用しない方は次のコメントを外してください +// #define DX_NON_MODEL + +// Bullet Physics をリンクしない場合は次のコメントを外してください +// ※DxUseCLib.lib も再コンパイルする必要があります +// #define DX_NON_BULLET_PHYSICS + +// FBXファイルを読み込む機能を使用する方は次のコメントを外してください( 使用には FBX SDK のセットアップが必要です ) +//#define DX_LOAD_FBX_MODEL + +// ビープ音機能がいらない方は次のコメントを外してください +//#define DX_NON_BEEP + +// タスクスイッチをOFFにする機能がいらない方は次のコメントを外してください +// ( タスクスイッチOFF機能は使用不可です ) +//#define DX_NON_STOPTASKSWITCH + +// ログ出力を行わない場合は次のコメントを外して下さい +//#define DX_NON_LOG + +// printfDx を無効にする場合は次のコメントを外して下さい +//#define DX_NON_PRINTF_DX + +// 非同期読み込みを無効にする場合は次のコメントを外して下さい +#define DX_NON_ASYNCLOAD + +// ファイル保存機能を無効にする場合は次のコメントを外して下さい +//#define DX_NON_SAVEFUNCTION + +// ソフトウェアで扱うイメージを無効にする場合は次のコメントを外して下さい +#define DX_NON_SOFTIMAGE + +// フォント描画機能を無効にする場合は次のコメントを外して下さい +//#define DX_NON_FONT + +// サウンド再生機能( ソフトウエアサウンド、MIDI含む )を無効にする場合は次のコメントを外して下さい +//#define DX_NON_SOUND + +// 入力機能を無効にする場合は次のコメントを外して下さい +//#define DX_NON_INPUT + +// マルチスレッドを使用しない場合は次のコメントを外してください +#define DX_NON_MULTITHREAD + +// 各ハンドルのエラーチェックを無効にする場合は次のコメントを外してください( 若干高速化される代わりに無効なハンドルを関数に渡すと即不正なメモリアクセスエラーが発生するようになります ) +// #define DX_NON_HANDLE_ERROR_CHECK + +// Direct3D11 を使用しない場合は以下のコメントを外してください( 現在開発中なので、必ずコメントを外した状態にしてください ) +#define DX_NON_DIRECT3D11 + +// Direct3D9 を使用しない場合は以下のコメントを外してください +#define DX_NON_DIRECT3D9 + +// 軽量バージョンのDXライブラリを生成する場合は次のコメントを外してください +// #define DX_LIB_LITEVER + +// コンパイル済みのシェーダーバイナリを使用せず、シェーダーコードの実行時コンパイルを利用する場合は次のコメントを外してください +//#define DX_NON_SHADERCODE_BINARY + +// Live2D Cubism 4 関連の機能を使用しない場合は次のコメントを外してください +#define DX_NON_LIVE2D_CUBISM4 + +#ifndef __APPLE__ +#ifndef __ANDROID__ +#ifndef EMSCRIPTEN + #define WINDOWS_DESKTOP_OS +#endif // EMSCRIPTEN +#endif // __ANDROID__ +#endif // __APPLE__ + +#if defined( DX_GCC_COMPILE ) || defined( __ANDROID__ ) || defined( __APPLE__ ) || defined( BC2_COMPILER ) || defined( EMSCRIPTEN ) + #define USE_ULL +#endif + + +#ifndef WINDOWS_DESKTOP_OS + #ifndef DX_NON_BEEP + #define DX_NON_BEEP + #endif // DX_NON_BEEP + #ifndef DX_NON_ACM + #define DX_NON_ACM + #endif // DX_NON_ACM + #ifndef DX_NON_DSHOW_MP3 + #define DX_NON_DSHOW_MP3 + #endif // DX_NON_DSHOW_MP3 + #ifndef DX_NON_DSHOW_MOVIE + #define DX_NON_DSHOW_MOVIE + #endif // DX_NON_DSHOW_MOVIE + #ifndef DX_NON_MEDIA_FOUNDATION + #define DX_NON_MEDIA_FOUNDATION + #endif // DX_NON_MEDIA_FOUNDATION +#endif // WINDOWS_DESKTOP_OS + +#if defined( __ANDROID__ ) || defined( __APPLE__ ) || defined ( EMSCRIPTEN ) +//#define DX_NON_2DDRAW +#define DX_NON_ACM +#define DX_NON_DSHOW_MP3 +#define DX_NON_DSHOW_MOVIE +#define DX_NON_MEDIA_FOUNDATION +#define DX_NON_KEYEX +#define DX_NON_INPUTSTRING +#define DX_NON_NETWORK +#define DX_NON_STOPTASKSWITCH +#define DX_NON_DIRECT3D11 +#define DX_NON_DIRECT3D9 +#endif + +#ifdef EMSCRIPTEN +#define DX_NON_MULTITHREAD +#endif + + + + +#ifdef DX_LIB_LITEVER +#define DX_NON_ACM +#define DX_NON_2DDRAW +#define DX_NON_MOVIE +#define DX_NON_KEYEX +#define DX_NON_NETWORK +#define DX_NON_MASK +#define DX_NON_JPEGREAD +#define DX_NON_PNGREAD +#define DX_NON_TIFFREAD +#define DX_NON_BEEP +#define DX_NON_OGGVORBIS +#define DX_NON_OGGTHEORA +#define DX_NON_OPUS +#define DX_NON_MODEL +#define DX_NON_SHADERCODE_BINARY +#endif + +#ifdef DX_NON_GRAPHICS + #ifndef DX_NON_FONT + #define DX_NON_FONT + #endif + #ifndef DX_NON_MOVIE + #define DX_NON_MOVIE + #endif + #ifndef DX_NON_FILTER + #define DX_NON_FILTER + #endif + #ifndef DX_NON_2DDRAW + #define DX_NON_2DDRAW + #endif + #ifndef DX_NON_MASK + #define DX_NON_MASK + #endif + #ifndef DX_NON_MODEL + #define DX_NON_MODEL + #endif + #ifndef DX_NON_BULLET_PHYSICS + #define DX_NON_BULLET_PHYSICS + #endif + #ifndef DX_NON_PRINTF_DX + #define DX_NON_PRINTF_DX + #endif + #ifndef DX_NON_KEYEX + #define DX_NON_KEYEX + #endif + #ifndef DX_NON_DIRECT3D11 + #define DX_NON_DIRECT3D11 + #endif + #ifndef DX_NON_DIRECT3D9 + #define DX_NON_DIRECT3D9 + #endif + #ifndef DX_NOTUSE_DRAWFUNCTION + #define DX_NOTUSE_DRAWFUNCTION + #endif +#endif // DX_NON_GRAPHICS + +#ifdef DX_NON_SOUND + #ifndef DX_NON_OPUS + #define DX_NON_OPUS + #endif + #ifndef DX_NON_OGGVORBIS + #define DX_NON_OGGVORBIS + #endif + #ifndef DX_NON_OGGTHEORA + #define DX_NON_OGGTHEORA + #endif + #ifndef DX_NON_ACM + #define DX_NON_ACM + #endif + #ifndef DX_NON_DSHOW_MP3 + #define DX_NON_DSHOW_MP3 + #endif + #ifndef DX_NON_DSHOW_MOVIE + #define DX_NON_DSHOW_MOVIE + #endif + #ifndef DX_NON_MEDIA_FOUNDATION + #define DX_NON_MEDIA_FOUNDATION + #endif + #ifndef DX_NON_MOVIE + #define DX_NON_MOVIE + #endif +#endif // DX_NON_SOUND + +#ifdef DX_NON_MULTITHREAD + #ifndef DX_NON_ASYNCLOAD + #define DX_NON_ASYNCLOAD + #endif + #ifdef DX_THREAD_SAFE + #undef DX_THREAD_SAFE + #endif +#endif + +#ifdef DX_NON_INPUTSTRING + #ifndef DX_NON_KEYEX + #define DX_NON_KEYEX + #endif +#endif + +#ifdef DX_NON_DXA + #ifndef DX_NON_NORMAL_DRAW_SHADER + #define DX_NON_NORMAL_DRAW_SHADER + #endif + #ifndef DX_NON_MODEL + #define DX_NON_MODEL + #endif + #ifndef DX_NON_FILTER + #define DX_NON_FILTER + #endif + #ifndef DX_NON_MOVIE + #define DX_NON_MOVIE + #endif +#endif + +#ifdef DX_NON_MOVIE + #ifndef DX_NON_OGGTHEORA + #define DX_NON_OGGTHEORA + #endif + #ifndef DX_NON_MEDIA_FOUNDATION + #define DX_NON_MEDIA_FOUNDATION + #endif // DX_NON_MEDIA_FOUNDATION +#endif + +#ifdef DX_NON_INPUT + #ifndef DX_NON_KEYEX + #define DX_NON_KEYEX + #endif +#endif + +#ifdef DX_NON_FONT + #ifndef DX_NON_PRINTF_DX + #define DX_NON_PRINTF_DX + #endif + #ifndef DX_NON_KEYEX + #define DX_NON_KEYEX + #endif +#endif + +#ifdef DX_NON_OGGVORBIS + #ifndef DX_NON_OGGTHEORA + #define DX_NON_OGGTHEORA + #endif + #ifndef DX_NON_OPUS + #define DX_NON_OPUS + #endif +#endif + + +#if defined( _WIN64 ) || defined( __LP64__ ) + #ifndef PLATFORM_64BIT + #define PLATFORM_64BIT + #endif +#endif + + + +#if defined( _WIN64 ) || defined( __ANDROID__ ) || defined( __APPLE__ ) || defined( EMSCRIPTEN ) + #ifndef DX_NON_INLINE_ASM + #define DX_NON_INLINE_ASM + #endif +#endif + + + + +#include "DxDataType.h" + +#endif // DXCOMPILECONFIG_H diff --git a/templates/hello-dxlib/include/DxDataType.h b/templates/hello-dxlib/include/DxDataType.h new file mode 100644 index 000000000..70ad35508 --- /dev/null +++ b/templates/hello-dxlib/include/DxDataType.h @@ -0,0 +1,85 @@ +// ------------------------------------------------------------------------------- +// +// DXライブラリ データタイプ定義ヘッダファイル +// +// Ver 3.21d +// +// ------------------------------------------------------------------------------- + +#ifndef DX_DATATYPE_H +#define DX_DATATYPE_H + +// インクルード ------------------------------------------------------------------ +#include "DxCompileConfig.h" +#include + +#ifdef WINDOWS_DESKTOP_OS +#include "DxDataTypeWin.h" +#endif // WINDOWS_DESKTOP_OS + +#ifdef __ANDROID__ +#include "DxDataTypeAndroid.h" +#endif // __ANDROID__ + +#ifdef __APPLE__ + #include "TargetConditionals.h" + #if TARGET_OS_IPHONE + #include "DxDataTypeiOS.h" + #endif +#endif // __APPLE__ + +#ifdef EMSCRIPTEN +#include "DxDataTypeHTML5.h" +#endif + + + + +#ifndef DX_NON_NAMESPACE + +namespace DxLib +{ + +#endif // DX_NON_NAMESPACE + +// マクロ定義 -------------------------------------------------------------------- + +#define SETRECT( Dest, Left, Top, Right, Bottom ) \ + ( Dest ).left = Left ;\ + ( Dest ).top = Top ;\ + ( Dest ).right = Right ;\ + ( Dest ).bottom = Bottom ; + +#ifdef USE_ULL +#define ULL_NUM( x ) ( x##ULL ) +#define LL_NUM( x ) ( x##LL ) +#define ULL_PARAM( x ) x##ULL +#define LL_PARAM( x ) x##LL +#else +#define ULL_NUM( x ) ( ( ULONGLONG )x ) +#define LL_NUM( x ) ( ( LONGLONG )x ) +#define ULL_PARAM( x ) x +#define LL_PARAM( x ) x +#endif + +// 構造体定義 -------------------------------------------------------------------- + +// RGBA色構造体 +struct RGBCOLOR +{ + unsigned char Blue, Green, Red, Alpha ; +} ; + +// テーブル----------------------------------------------------------------------- + +// 内部大域変数宣言 -------------------------------------------------------------- + +// 関数プロトタイプ宣言----------------------------------------------------------- + +#ifndef DX_NON_NAMESPACE + +} + +#endif // DX_NON_NAMESPACE + +#endif // DX_DATATYPE_H diff --git a/templates/hello-dxlib/include/DxDataTypeHTML5.h b/templates/hello-dxlib/include/DxDataTypeHTML5.h new file mode 100644 index 000000000..4b2ca2f5d --- /dev/null +++ b/templates/hello-dxlib/include/DxDataTypeHTML5.h @@ -0,0 +1,232 @@ +// ------------------------------------------------------------------------------- +// +// DXライブラリ Nintendo Switch用データタイプ定義ヘッダファイル +// +// Ver 3.21d +// +// ------------------------------------------------------------------------------- + +#ifndef DX_DATATYPENSW_H +#define DX_DATATYPENSW_H + +// インクルード ------------------------------------------------------------------ +#include "DxCompileConfig.h" +#include + +// #ifndef DX_NON_NAMESPACE +// +// namespace DxLib +// { +// +// #endif // DX_NON_NAMESPACE + +// マクロ定義 -------------------------------------------------------------------- + +// センサー +#define DX_ANDROID_SENSOR_ACCELEROMETER (0) // 加速度センサー +#define DX_ANDROID_SENSOR_MAGNETIC_FIELD (1) // 磁界センサー +#define DX_ANDROID_SENSOR_GYROSCOPE (2) // ジャイロスコープセンサー +#define DX_ANDROID_SENSOR_LIGHT (3) // 照度センサー +#define DX_ANDROID_SENSOR_PROXIMITY (4) // 近接センサー +#define DX_ANDROID_SENSOR_PRESSURE (5) // 加圧センサー +#define DX_ANDROID_SENSOR_AMBIENT_TEMPERATURE (6) // 温度センサー +#define DX_ANDROID_SENSOR_NUM (7) + +// 環境依存キーワードなど +#ifndef FASTCALL +#define FASTCALL +#endif + +typedef void * HBITMAP ; +typedef void * HINSTANCE ; +typedef char * LPSTR ; + +#ifndef TRUE +#define TRUE (1) +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#ifndef BOOL +#define BOOL int +#endif + +#ifndef TCHAR +#ifdef UNICODE +#define TCHAR wchar_t +#else +#define TCHAR char +#endif +#endif + +#ifndef _T +#ifdef UNICODE +#define _T( x ) L ## x +#else +#define _T( x ) x +#endif +#endif + +#ifndef TEXT +#ifdef UNICODE +#define TEXT( x ) L ## x +#else +#define TEXT( x ) x +#endif +#endif + +#ifndef NEAR +#define NEAR +#endif + +#ifndef FAR +#define FAR +#endif + +#ifndef WINAPI +#define WINAPI +#endif + +#ifndef LONG +#define LONG int +#endif + +typedef int * LPLONG ; + +#ifndef LONGLONG +#define LONGLONG int64_t +#endif + +#ifndef ULONGLONG +#define ULONGLONG uint64_t +#endif + +#ifndef BYTE +#define BYTE uint8_t +#endif + +#ifndef WORD +#define WORD uint16_t +#endif + +#ifndef DWORD +#define DWORD uint32_t +#endif + +typedef uint32_t * LPDWORD ; + +#ifndef DWORD_PTR +#ifdef __LP64__ +#define DWORD_PTR uint64_t +#else +#define DWORD_PTR uint32_t +#endif +#endif + +#ifndef LONG_PTR +#define LONG_PTR int32_t +#endif + +#define _FPCLASS_SNAN 0x0001 +#define _FPCLASS_QNAN 0x0002 +#define _FPCLASS_NINF 0x0004 +#define _FPCLASS_NN 0x0008 +#define _FPCLASS_ND 0x0010 +#define _FPCLASS_NZ 0x0020 +#define _FPCLASS_PZ 0x0040 +#define _FPCLASS_PD 0x0080 +#define _FPCLASS_PN 0x0100 +#define _FPCLASS_PINF 0x0200 + +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 + +#define BI_RGB 0L +#define BI_RLE8 1L +#define BI_RLE4 2L +#define BI_BITFIELDS 3L + +#define MAKEFOURCC( ch0, ch1, ch2, ch3 ) \ + ( ( DWORD )( BYTE )( ch0 ) | ( ( DWORD )( BYTE )( ch1 ) << 8 ) | \ + ( ( DWORD )( BYTE )( ch2 ) << 16) | ( ( DWORD )( BYTE )( ch3 ) << 24 ) ) + + +#define DX_READSOUNDFUNCTION_AT9 (1 << ( DX_READSOUNDFUNCTION_DEFAULT_NUM + 0 )) // ATRAC9 を使用した読み込み処理 + +// 構造体定義 -------------------------------------------------------------------- + +typedef struct tagRECT +{ + LONG left ; + LONG top ; + LONG right ; + LONG bottom ; +} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT ; + +typedef struct tagPOINT +{ + LONG x ; + LONG y ; +} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT ; + + +typedef struct tagSIZE +{ + LONG cx ; + LONG cy ; +} SIZE, *PSIZE, *LPSIZE ; + +#pragma pack(push, 2) +typedef struct tagBITMAPFILEHEADER +{ + WORD bfType ; + DWORD bfSize ; + WORD bfReserved1 ; + WORD bfReserved2 ; + DWORD bfOffBits ; +} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER ; +#pragma pack(pop) + +typedef struct tagRGBQUAD +{ + BYTE rgbBlue ; + BYTE rgbGreen ; + BYTE rgbRed ; + BYTE rgbReserved ; +} RGBQUAD ; + +typedef struct tagBITMAPINFOHEADER +{ + DWORD biSize ; + LONG biWidth ; + LONG biHeight ; + WORD biPlanes ; + WORD biBitCount ; + DWORD biCompression ; + DWORD biSizeImage ; + LONG biXPelsPerMeter ; + LONG biYPelsPerMeter ; + DWORD biClrUsed ; + DWORD biClrImportant ; +} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER ; + +typedef struct tagBITMAPINFO +{ + BITMAPINFOHEADER bmiHeader ; + RGBQUAD bmiColors[ 1 ] ; +} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO ; + +// テーブル----------------------------------------------------------------------- + +// 内部大域変数宣言 -------------------------------------------------------------- + +// 関数プロトタイプ宣言----------------------------------------------------------- + +// #ifndef DX_NON_NAMESPACE +// +// } +// +// #endif // DX_NON_NAMESPACE + +#endif // DX_DATATYPENSW_H diff --git a/templates/hello-dxlib/include/DxFunctionWin.h b/templates/hello-dxlib/include/DxFunctionWin.h new file mode 100644 index 000000000..a7e9e9d4e --- /dev/null +++ b/templates/hello-dxlib/include/DxFunctionWin.h @@ -0,0 +1,486 @@ +// ------------------------------------------------------------------------------- +// +// DXライブラリ Windows専用関数プロトタイプ宣言用ヘッダファイル +// +// Ver 3.20f +// +// ------------------------------------------------------------------------------- + +#ifndef DX_FUNCTIONWIN_H +#define DX_FUNCTIONWIN_H + +// 関数プロトタイプ宣言------------------------------------------------------------------ + +#ifndef DX_NON_NAMESPACE + +namespace DxLib +{ + +#endif // DX_NON_NAMESPACE + +#define DX_FUNCTION_START + + +// DxWindow.cpp関数プロトタイプ宣言 + +// 便利関数 +extern int GetResourceInfo( const TCHAR *ResourceName, const TCHAR *ResourceType, void **DataPointerP , int *DataSizeP ) ; // 指定の名前、タイプのリソースのアドレスとサイズを取得する( 戻り値 -1:失敗 0:成功 ) +extern int GetResourceInfoWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength, void **DataPointerP , int *DataSizeP ) ; // 指定の名前、タイプのリソースのアドレスとサイズを取得する( 戻り値 -1:失敗 0:成功 ) +extern const TCHAR* GetResourceIDString( int ResourceID ) ; // リソースID値からリソース名を取得する + +// ウインドウ関係情報取得関数 +extern int GetWindowCRect( RECT *RectBuf ) ; // GetWindowClientRect の旧名称 +extern int GetWindowClientRect( RECT *RectBuf ) ; // メインウインドウのクライアント領域を取得する +extern int GetWindowFrameRect( RECT *RectBuf ) ; // メインウインドウの枠の部分も含めた全体の領域を取得する +extern int GetWindowActiveFlag( void ) ; // メインウインドウがアクティブかどうかを取得する( 戻り値 TRUE:アクティブ FALSE:非アクティブ ) +extern int GetWindowMinSizeFlag( void ) ; // メインウインドウが最小化されているかどうかを取得する( 戻り値 TRUE:最小化されている FALSE:最小化されていない ) +extern int GetWindowMaxSizeFlag( void ) ; // メインウインドウが最大化されているかどうかを取得する( 戻り値 TRUE:最大化されている FALSE:最大化されていない ) +extern int GetActiveFlag( void ) ; // GetWindowActiveFlag の別名関数 +extern HWND GetMainWindowHandle( void ) ; // メインウインドウのウインドウハンドルを取得する +extern int GetWindowModeFlag( void ) ; // ウインドウモードで起動しているかどうかを取得する( 戻り値 TRUE:ウインドウモード FALSE:フルスクリーンモード ) +extern int GetDefaultState( int *SizeX, int *SizeY, int *ColorBitDepth, int *RefreshRate = NULL , int *LeftTopX = NULL , int *LeftTopY = NULL , int *PixelSizeX = NULL , int *PixelSizeY = NULL ) ; // 起動時のデスクトップの画面情報を取得する( SizeX:デスクトップの横解像度を格納する変数のポインタ SizeY:縦解像度を格納する変数のポインタ ColorBitDepth:画面カラービット数を格納する変数のポインタ RefreshRate:デスクトップのリフレッシュレートを格納する変数のポインタ LeftTopX:デスクトップの左上X座標を格納する変数のポインタ LeftTopY:デスクトップの左上Y座標を格納する変数のポインタ PixelSizeX:OSの拡大率設定の影響を受けないデスクトップの横解像度を格納する変数のポインタ PixelSizeY:OSの拡大率設定の影響を受けないデスクトップの縦解像度を格納する変数のポインタ ) +extern int GetNoActiveState( int ResetFlag = TRUE ) ; // メインウインドウが非アクティブになり、処理が一時停止していたかどうかを取得する(引数 ResetFlag=TRUE:状態をリセット FALSE:状態をリセットしない 戻り値: 0=一時停止はしていない 1=一時停止していた ) +extern int GetMouseDispFlag( void ) ; // マウスポインタを表示するかどうかの設定を取得する( 戻り値 TRUE:表示する FALSE:表示しない ) +extern int GetAlwaysRunFlag( void ) ; // メインウインドウが非アクティブになっても処理を実行し続けるかどうかの設定を取得する( TRUE:実行する FALSE:停止する ) +extern int _GetSystemInfo( int *DxLibVer , int *DirectXVer , int *WindowsVer ) ; // DXライブラリと DirectX のバージョンと Windows のバージョン番号を取得する +extern int GetPcInfo( TCHAR *OSString , TCHAR *DirectXString , TCHAR *CPUString , int *CPUSpeed /* 単位MHz */ , double *FreeMemorySize /* 単位MByte */ , double *TotalMemorySize , TCHAR *VideoDriverFileName , TCHAR *VideoDriverString , double *FreeVideoMemorySize /* 単位MByte */ , double *TotalVideoMemorySize ) ; // PCの情報を取得する +extern int GetUseMMXFlag( void ) ; // MMXが使えるかどうかの情報を得る +extern int GetUseSSEFlag( void ) ; // SSEが使えるかどうかの情報を得る +extern int GetUseSSE2Flag( void ) ; // SSE2が使えるかどうかの情報を得る +extern int GetWindowCloseFlag( void ) ; // ウインドウを閉じようとしているかの情報を得る +extern HINSTANCE GetTaskInstance( void ) ; // ソフトのインスタンスを取得する +extern int GetUseWindowRgnFlag( void ) ; // リージョンを使っているかどうかを取得する +extern int GetWindowSizeChangeEnableFlag( int *FitScreen = NULL ) ; // ウインドウのサイズを変更できる設定になっているかどうかを取得する( 戻り値 TRUE:変更できるようになっている FALSE:変更できないようになっている ) +extern double GetWindowSizeExtendRate( double *ExRateX = NULL , double *ExRateY = NULL ) ; // 描画画面のサイズに対するウインドウサイズの比率を取得する( 戻り値は ExRateX に代入される値と同じです ) +extern int GetWindowSize( int *Width, int *Height ) ; // メインウインドウのクライアント領域のサイズを取得する +extern int GetWindowEdgeWidth( int *LeftWidth, int *RightWidth, int *TopWidth, int *BottomWidth ) ; // ウインドウの上下左右の縁の幅を取得する +extern int GetWindowPosition( int *x, int *y ) ; // メインウインドウのデスクトップ上の左上端座標を取得する( 枠も含める ) +extern int GetWindowUserCloseFlag( int StateResetFlag = FALSE ) ; // メインウインドウの閉じるボタンが押されたかどうかを取得する +extern int GetNotDrawFlag( void ) ; // DXライブラリの描画機能を使うかどうかの設定を取得する +extern int GetPaintMessageFlag( void ) ; // WM_PAINT メッセージが来たかどうかを取得する(戻り値 TRUE:WM_PAINTメッセージが来た(一度取得すると以後、再び WM_PAINTメッセージが来るまで FALSE が返ってくるようになる) FALSE:WM_PAINT メッセージは来ていない) +extern int GetValidHiPerformanceCounter( void ) ; // パフォーマンスカウンタが有効かどうかを取得する(戻り値 TRUE:有効 FALSE:無効) +extern TCHAR GetInputSystemChar( int DeleteFlag ) ; // 入力されたシステム文字を取得する + +// 設定系関数 +extern int ChangeWindowMode( int Flag ) ; // ウインドウモードを変更する +extern int SetUseCharSet( int CharSet /* = DX_CHARSET_SHFTJIS 等 */ ) ; // DXライブラリの文字列処理で前提とする文字列セットを設定する +extern int LoadPauseGraph( const TCHAR *FileName ) ; // アクティブウインドウが他のソフトに移っている際に表示する画像をファイルから読み込む( FileName に NULL を渡すことで解除) +extern int LoadPauseGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // アクティブウインドウが他のソフトに移っている際に表示する画像をファイルから読み込む( FileName に NULL を渡すことで解除) +extern int LoadPauseGraphFromMem( const void *MemImage , int MemImageSize ) ; // アクティブウインドウが他のソフトに移っている際に表示する画像をメモリから読み込む( MemImage:ファイルイメージの先頭アドレス,NULL にすることで設定解除 MemImageSize:ファイルイメージのサイズ( 単位:Byte ) ) +extern int SetActiveStateChangeCallBackFunction( int (* CallBackFunction )( int ActiveState , void *UserData ) , void *UserData ) ; // メインウインドウのアクティブ状態に変化があったときに呼ばれるコールバック関数を設定する( CallBackFunction:呼ばれるコールバック関数、NULL を渡すと設定解除 UserData:CallBackFunction の第2引数に渡される値 ) +extern int SetWindowText( const TCHAR *WindowText ) ; // メインウインドウのウインドウテキストを変更する +extern int SetWindowTextWithStrLen( const TCHAR *WindowText, size_t WindowTextLength ) ; // メインウインドウのウインドウテキストを変更する +extern int SetMainWindowText( const TCHAR *WindowText ) ; // SetWindowText の別名関数 +extern int SetMainWindowTextWithStrLen( const TCHAR *WindowText, size_t WindowTextLength ) ; // SetWindowText の別名関数 +extern int SetMainWindowClassName( const TCHAR *ClassName ) ; // メインウインドウのクラス名を設定する( DxLib_Init の前でのみ使用可能 ) +extern int SetMainWindowClassNameWithStrLen( const TCHAR *ClassName, size_t ClassNameLength ) ; // メインウインドウのクラス名を設定する( DxLib_Init の前でのみ使用可能 ) +extern int SetWindowIconID( int ID ) ; // メインウインドウで使用するアイコンのIDをセットする +extern int SetWindowIconHandle( HICON Icon ) ; // メインウインドウで使用するアイコンのハンドルをセットする +extern int SetUseASyncChangeWindowModeFunction( int Flag , void (* CallBackFunction )( void * ) , void *Data ) ; // 最大化ボタンやALT+ENTERキーによる非同期なウインドウモードの変更の機能の設定を行う( Flag:非同期ウインドウモード変更を有効にするかどうかのフラグ( TRUE:有効にする FALSE:無効にする( デフォルト ) ) CallBackFunction:非同期ウインドウモード変更が行われた場合に呼ばれるコールバック関数のアドレス Data:CallBackFunction の引数に渡される void 型のポインタ ) +extern int SetShutdownCallbackFunction( void (* CallbackFunction )( void * ), void *Data, const TCHAR *Message ) ; // シャットダウンによるソフトの強制終了の際に呼ばれるコールバック関数を登録する( Message はコールバック関数の終了を待つ間表示されるメッセージ ) +extern int SetWindowStyleMode( int Mode ) ; // メインウインドウのスタイルを変更する +extern int SetWindowZOrder( int ZType /* = DX_WIN_ZTYPE_TOP 等 */ , int WindowActivateFlag = TRUE ) ; // メインウインドウの奥行き位置を変更する +extern int SetWindowSizeChangeEnableFlag( int Flag, int FitScreen = TRUE ) ; // メインウインドウの端を掴んでウインドウのサイズを変更できるようにするかどうかの設定を行う( Flag:変更を可能にするかどうか( TRUE:可能にする FALSE:不可能にする( デフォルト ) ) FitScreen:ウインドウのクライアント領域に画面をフィットさせる(拡大させる)かどうか TRUE:フィットさせる FALSE:フィットさせない ) +extern int SetWindowSizeExtendRate( double ExRateX, double ExRateY = -1.0 ) ; // 描画画面のサイズに対するメインウインドウサイズの比率を設定する( ExRateY がマイナスの場合は ExRateX の値が ExRateY にも使用されます ) +extern int SetWindowSize( int Width, int Height ) ; // メインウインドウのクライアント領域のサイズを設定する +extern int SetWindowMaxSize( int MaxWidth, int MaxHeight ) ; // メインウインドウのクライアント領域の最大サイズを設定する( SetWindowSizeChangeEnableFlag の第一引数を TRUE で呼び出して、ウインドウのサイズが変更できる状態でのみ使用されるパラメータです ) +extern int SetWindowMinSize( int MinWidth, int MinHeight ) ; // メインウインドウのクライアント領域の最小サイズを設定する( SetWindowSizeChangeEnableFlag の第一引数を TRUE で呼び出して、ウインドウのサイズが変更できる状態でのみ使用されるパラメータです ) +extern int SetWindowPosition( int x, int y ) ; // メインウインドウの位置を設定する( 枠も含めた左上座標 ) +extern int SetSysCommandOffFlag( int Flag , const TCHAR *HookDllPath = NULL ) ; // タスクスイッチを有効にするかどうかを設定する +extern int SetSysCommandOffFlagWithStrLen( int Flag , const TCHAR *HookDllPath = NULL , size_t HookDllPathLength = 0 ) ; // タスクスイッチを有効にするかどうかを設定する +extern int SetHookWinProc( WNDPROC WinProc ) ; // メインウインドウへのメッセージをフックするウインドウプロージャを登録する +extern int SetUseHookWinProcReturnValue( int UseFlag ) ; // SetHookWinProc で設定したウインドウプロージャの戻り値を使用するかどうかを設定する、SetHookWinProc で設定したウインドウプロージャの中でのみ使用可能( UseFlag TRUE:戻り値を使用して、DXライブラリのウインドウプロージャの処理は行わない FALSE:戻り値は使用せず、ウインドウプロージャから出た後、DXライブラリのウインドウプロージャの処理を行う ) +extern int SetDoubleStartValidFlag( int Flag ) ; // DXライブラリを使用したソフトの二重起動を可能にするかどうかの設定を行う( TRUE:可能にする FALSE:不可能にする( デフォルト ) ) +extern int CheckDoubleStart( void ) ; // DXライブラリを使用したソフトが既に起動しているかどうかを取得する( TRUE:既に起動している FALSE:起動していない ) +extern int AddMessageTakeOverWindow( HWND Window ) ; // メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを追加する +extern int SubMessageTakeOverWindow( HWND Window ) ; // メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを減らす + +extern int SetWindowInitPosition( int x , int y ) ; // メインウインドウの初期位置を設定する +extern int SetNotWinFlag( int Flag ) ; // DXライブラリのウインドウ関連の機能を使用しないかどうかを設定する( TRUE:使用しない FALSE:使用する( デフォルト ) ) +extern int SetNotDrawFlag( int Flag ) ; // DXライブラリの描画機能を使うかどうかを設定する( TRUE:使用しない FALSE:使用する( デフォルト ) ) +extern int SetNotSoundFlag( int Flag ) ; // DXライブラリのサウンド機能を使うかどうかを設定する( TRUE:使用しない FALSE:使用する( デフォルト ) ) +extern int SetNotInputFlag( int Flag ) ; // DXライブラリの入力状態の取得機能を使うかどうかを設定する( TRUE:使用しない FALSE:使用する( デフォルト ) ) +extern int SetDialogBoxHandle( HWND WindowHandle ) ; // DXライブラリでメッセージ処理を行うダイアログボックスを登録する +extern int SetWindowVisibleFlag( int Flag ) ; // メインウインドウを表示するかどうかを設定する( TRUE:表示する FALSE:表示しない ) +extern int SetWindowMinimizeFlag( int Flag ) ; // メインウインドウを最小化するかどうかを設定する( TRUE:最小化する FALSE:最小化を解除 ) +extern int SetWindowUserCloseEnableFlag( int Flag ) ; // メインウインドウの×ボタンを押した時にDXライブラリが自動的にウインドウを閉じるかどうかを設定する( TRUE:自動的に閉じる( デフォルト ) FALSE:閉じない ) +extern int SetDxLibEndPostQuitMessageFlag( int Flag ) ; // DXライブラリ終了時に PostQuitMessage を呼ぶかどうかを設定する( TRUE:PostQuitMessage を呼ぶ( デフォルト ) FALSE:呼ばない ) +extern int SetUserWindow( HWND WindowHandle ) ; // DXライブラリで使用するウインドウのハンドルをセットする( DxLib_Init を実行する以前でのみ有効 ) +extern int SetUserChildWindow( HWND WindowHandle ) ; // DXライブラリで使用する表示用の子ウインドウのハンドルをセットする( DxLib_Init を実行する以前でのみ有効 ) +extern int SetUserWindowMessageProcessDXLibFlag( int Flag ) ; // SetUseWindow で設定したウインドウのメッセージループ処理をDXライブラリで行うかどうかを設定する( TRUE:DXライブラリで行う( デフォルト ) FALSE:DXライブラリでは行わない ) +extern int SetUseFPUPreserveFlag( int Flag ) ; // FPUの精度を落とさない設定を使用するかどうかを設定する、DxLib_Init を呼び出す前のみ有効( TRUE:使用する(精度が落ちない) FALSE:使用しない(精度を落とす(デフォルト) ) +extern int SetValidMousePointerWindowOutClientAreaMoveFlag( int Flag ) ; // マウスポインタがウインドウのクライアントエリアの外にいけるかどうかを設定する( TRUE:いける( デフォルト設定 ) FALSE:いけない ) +extern int SetUseBackBufferTransColorFlag( int Flag ) ; // バックバッファの透過色の部分を透過させるかどうかを設定する( TRUE:透過させる FALSE:透過させない( デフォルト ) ) +extern int SetUseUpdateLayerdWindowFlag( int Flag ) ; // UpdateLayerdWindowForBaseImage や UpdateLayerdWindowForSoftImage を使用するかどうかを設定する( TRUE:使用する FALSE:使用しない ) +extern int SetResourceModule( HMODULE ResourceModule ) ; // リソースを読み込む際に使用するモジュールを設定する( NULL を指定すると初期状態に戻ります、デフォルトでは NULL ) +extern int SetUseDxLibWM_PAINTProcess( int Flag ) ; // WM_PAINT メッセージが来た際に『DXライブラリの WM_PAINTメッセージが来た際の処理』を行うかどうかを設定する( 別スレッドで描画処理を行う場合などで使用 ) + +// ドラッグ&ドロップされたファイル関係 +extern int SetDragFileValidFlag( int Flag ) ; // ファイルのメインウインドウへのドラッグ&ドロップ機能を有効にするかどうかのフラグをセットする +extern int DragFileInfoClear( void ) ; // メインウインドウへドラッグ&ドロップされたファイルの情報をリセットする +extern int GetDragFilePath( TCHAR *FilePathBuffer ) ; // メインウインドウへドラッグ&ドロップされたファイル名を取得する( FilePathBuffer:ファイル名を格納するバッファの先頭アドレス  戻り値 -1:取得できなかった 0:取得できた ) +extern int GetDragFileNum( void ) ; // メインウインドウへドラッグ&ドロップされたファイルの数を取得する + +// ウインドウ描画領域設定系関数 +extern HRGN CreateRgnFromGraph( int Width , int Height , const void *MaskData , int Pitch , int Byte ) ; // 任意の画像イメージからRGNハンドルを作成する( Width:横ドット数 Height:縦ドット数 MaskData:ドット情報配列の先頭アドレス Pitch:1ラインあたりのbyteサイズ Byte:1ドット辺りのbyteサイズ( 対応しているのは 1~4 )、ドットの数値が0かそれ以外かで判別 ) +extern HRGN CreateRgnFromBaseImage( BASEIMAGE *BaseImage, int TransColorR, int TransColorG, int TransColorB ) ; // 任意の基本イメージデータと透過色からRGNハンドルを作成する( BaseImage:基本イメージデータのアドレス TransColorR,TransColorG,TransColorB:透過色( それぞれ0~255 ) +extern int SetWindowRgnGraph( const TCHAR *FileName ) ; // 任意の画像ファイルからRGNをセットする +extern int SetWindowRgnGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 任意の画像ファイルからRGNをセットする +extern int UpdateTransColorWindowRgn( void ) ; // 描画先の画面の透過色の部分を透過させるRGNをセットする( 使用される透過色は関数 SetTransColor で設定した色 ) + +// ツールバー関係 +extern int SetupToolBar( const TCHAR *BitmapName, int DivNum, int ResourceID = -1 ) ; // ツールバーの準備、BitmapName に NULL, ResourceID に -1 を渡すとツールバーを解除( BitmapName:ツールバーのボタンに使用する画像ファイルパス、ResourceID に -1 以外を渡す場合は NULL にする DivNum:ボタン画像中のボタンの数 ResourceID:ツールバーのボタンに使用するビットマップリソースのID、BitmapName に NULL を渡すとこの引数が使用される ) +extern int SetupToolBarWithStrLen( const TCHAR *BitmapName, size_t BitmapNameLength, int DivNum, int ResourceID = -1 ) ; // ツールバーの準備、BitmapName に NULL, ResourceID に -1 を渡すとツールバーを解除( BitmapName:ツールバーのボタンに使用する画像ファイルパス、ResourceID に -1 以外を渡す場合は NULL にする DivNum:ボタン画像中のボタンの数 ResourceID:ツールバーのボタンに使用するビットマップリソースのID、BitmapName に NULL を渡すとこの引数が使用される ) +extern int AddToolBarButton( int Type /* TOOLBUTTON_TYPE_NORMAL 等 */ , int State /* TOOLBUTTON_STATE_ENABLE 等 */ , int ImageIndex, int ID ) ; // ツールバーにボタンを追加する( Type:ボタンタイプ( TOOLBUTTON_TYPE_NORMAL 等( 解説は #define の定義を参照してください ) ) State:初期状態( TOOLBUTTON_STATE_ENABLE 等( 解説は #define の定義を参照してください ) ) ImageIndex:使用するボタンの画像番号 ID:ボタンに割り当てる識別番号 ) +extern int AddToolBarSep( void ) ; // ツールバーに隙間を追加する +extern int GetToolBarButtonState( int ID ) ; // ツールバーのボタンの状態を取得する( ID:AddToolBarButtonで設定したボタンの識別番号  戻り値 TRUE:押されている or 押された FALSE:押されていない ) +extern int SetToolBarButtonState( int ID , int State /* TOOLBUTTON_STATE_ENABLE 等 */ ) ; // ツールバーのボタンの状態を設定する( ID:AddToolBarButtonで設定したボタンの識別番号 State:設定する状態( TOOLBUTTON_STATE_ENABLE 等( 解説は #define の定義を参照してください ) ) +extern int DeleteAllToolBarButton( void ) ; // ツールバーのボタンを全て削除する + +// メニュー関係 +extern int SetUseMenuFlag( int Flag ) ; // メニューを有効にするかどうかを設定する( TRUE:使用する FALSE:使用しない ) +extern int SetUseKeyAccelFlag( int Flag ) ; // キーボードアクセラレーターを使用するかどうかを設定する( TRUE:使用する FALSE:使用しない ) + +extern int AddKeyAccel( const TCHAR *ItemName, int ItemID , int KeyCode , int CtrlFlag , int AltFlag , int ShiftFlag ) ; // ショートカットキーを追加する( ItemName:ショートカットキーを割り当てるメニューのアイテム名( AddMenuItem で NewItemName に渡した名前 )、ItemID を使用する場合は NULL を渡す ItemID:メニュー項目の識別番号( AddMenuItem の引数 NewItemID で指定したもの )、ItemName を使用する場合は -1 を渡す KeyCode:ショートカットキーのキー( KEY_INPUT_L 等 ) CtrlFlag:同時にCTRLキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) AltFlag:同時にALTキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) ShiftFlag:同時にSHIFTキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) +extern int AddKeyAccelWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int ItemID , int KeyCode , int CtrlFlag , int AltFlag , int ShiftFlag ) ; // ショートカットキーを追加する( ItemName:ショートカットキーを割り当てるメニューのアイテム名( AddMenuItem で NewItemName に渡した名前 )、ItemID を使用する場合は NULL を渡す ItemID:メニュー項目の識別番号( AddMenuItem の引数 NewItemID で指定したもの )、ItemName を使用する場合は -1 を渡す KeyCode:ショートカットキーのキー( KEY_INPUT_L 等 ) CtrlFlag:同時にCTRLキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) AltFlag:同時にALTキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) ShiftFlag:同時にSHIFTキーを押す必要があるようにするかどうか( TRUE:押す必要がある FALSE:押さなくても良い ) +extern int AddKeyAccel_Name( const TCHAR *ItemName, int KeyCode , int CtrlFlag , int AltFlag , int ShiftFlag ) ; // ショートカットキーを追加する( 各引数の解説は AddKeyAccel と同じ、ItemID が無くなっただけ ) +extern int AddKeyAccel_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int KeyCode , int CtrlFlag , int AltFlag , int ShiftFlag ) ; // ショートカットキーを追加する( 各引数の解説は AddKeyAccel と同じ、ItemID が無くなっただけ ) +extern int AddKeyAccel_ID( int ItemID, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag ) ; // ショートカットキーを追加する( 各引数の解説は AddKeyAccel と同じ、ItemName が無くなっただけ ) +extern int ClearKeyAccel( void ) ; // ショートカットキーの情報をリセットする + +extern int AddMenuItem( int AddType /* MENUITEM_ADD_CHILD等 */ , const TCHAR *ItemName, int ItemID, int SeparatorFlag, const TCHAR *NewItemName = NULL , int NewItemID = -1 ) ; // メニューに項目を追加する( AddType:項目タイプ( MENUITEM_ADD_CHILD 等( 解説は #define の定義を参照してください ) ) ItemName:AddType が MENUITEM_ADD_CHILDの場合は親となる項目の名前、MENUITEM_ADD_INSERTの場合は挿入位置となる項目の名前、NULL を指定すると ItemID が使用される ItemID:ItemName の代わりに識別番号で指定するもの、AddType毎の違いは ItemName の解説の通り、-1を指定すると ItemName が使用される  SeparatorFlag:区切り線を追加するかどうか( TRUE:区切り線を追加、この場合 NewItemName と NewItemID は無視される FALSE:追加するのは区切り線ではない )  NewItemName:新しい項目の名前 NewItemID:新しい項目の識別番号、-1を指定すると内部で適当な番号が割り当てられる ) +extern int AddMenuItemWithStrLen( int AddType /* MENUITEM_ADD_CHILD等 */ , const TCHAR *ItemName, size_t ItemNameLength, int ItemID, int SeparatorFlag, const TCHAR *NewItemName = NULL , size_t NewItemNameLength = 0 , int NewItemID = -1 ) ; // メニューに項目を追加する( AddType:項目タイプ( MENUITEM_ADD_CHILD 等( 解説は #define の定義を参照してください ) ) ItemName:AddType が MENUITEM_ADD_CHILDの場合は親となる項目の名前、MENUITEM_ADD_INSERTの場合は挿入位置となる項目の名前、NULL を指定すると ItemID が使用される ItemID:ItemName の代わりに識別番号で指定するもの、AddType毎の違いは ItemName の解説の通り、-1を指定すると ItemName が使用される  SeparatorFlag:区切り線を追加するかどうか( TRUE:区切り線を追加、この場合 NewItemName と NewItemID は無視される FALSE:追加するのは区切り線ではない )  NewItemName:新しい項目の名前 NewItemID:新しい項目の識別番号、-1を指定すると内部で適当な番号が割り当てられる ) +extern int DeleteMenuItem( const TCHAR *ItemName, int ItemID ) ; // メニューから選択項目を削除する( ItemName:削除する項目の名前( AddMenuItem で NewItemName に渡した名前 )、NULL を指定すると ItemID が使用される ItemID:削除する項目の識別番号( AddMenuItem で NewItemID に渡した番号 )、-1 を指定すると ItemName が使用される ) +extern int DeleteMenuItemWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int ItemID ) ; // メニューから選択項目を削除する( ItemName:削除する項目の名前( AddMenuItem で NewItemName に渡した名前 )、NULL を指定すると ItemID が使用される ItemID:削除する項目の識別番号( AddMenuItem で NewItemID に渡した番号 )、-1 を指定すると ItemName が使用される ) +extern int CheckMenuItemSelect( const TCHAR *ItemName, int ItemID ) ; // メニューが選択されたかどうかを取得する( 戻り値  0:選択されていない 1:選択された ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) +extern int CheckMenuItemSelectWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int ItemID ) ; // メニューが選択されたかどうかを取得する( 戻り値  0:選択されていない 1:選択された ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) +extern int SetMenuItemEnable( const TCHAR *ItemName, int ItemID, int EnableFlag ) ; // メニューの項目を選択出来るかどうかを設定する( EnableFlag:項目が選択できるかどうか( TRUE:選択できる FALSE:選択できない ) ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) +extern int SetMenuItemEnableWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int ItemID, int EnableFlag ) ; // メニューの項目を選択出来るかどうかを設定する( EnableFlag:項目が選択できるかどうか( TRUE:選択できる FALSE:選択できない ) ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) +extern int SetMenuItemMark( const TCHAR *ItemName, int ItemID, int Mark ) ; // メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する( Mark:設定するマーク( MENUITEM_MARK_NONE 等( 解説は #define の定義を参照してください ) ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) ) +extern int SetMenuItemMarkWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int ItemID, int Mark ) ; // メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する( Mark:設定するマーク( MENUITEM_MARK_NONE 等( 解説は #define の定義を参照してください ) ItemName と ItemID については関数 DeleteMenuItem の注釈を参照してください ) ) +extern int CheckMenuItemSelectAll( void ) ; // メニューの項目がどれか選択されたかどうかを取得する( 戻り値 TRUE:どれか選択された FALSE:選択されていない ) + +extern int AddMenuItem_Name( const TCHAR *ParentItemName, const TCHAR *NewItemName ) ; // メニューに選択項目を追加する( ParentItemName:親となる項目の名前、親が持つリストの末端に新しい項目を追加します NewItemName:新しい項目の名前 ) +extern int AddMenuItem_NameWithStrLen( const TCHAR *ParentItemName, size_t ParentItemNameLength, const TCHAR *NewItemName, size_t NewItemNameLength ) ; // メニューに選択項目を追加する( ParentItemName:親となる項目の名前、親が持つリストの末端に新しい項目を追加します NewItemName:新しい項目の名前 ) +extern int AddMenuLine_Name( const TCHAR *ParentItemName ) ; // メニューのリストに区切り線を追加する( ParentItemName:区切り線を付ける項目リストの親の名前、リストの末端に区切り線を追加します ) +extern int AddMenuLine_NameWithStrLen( const TCHAR *ParentItemName, size_t ParentItemNameLength ) ; // メニューのリストに区切り線を追加する( ParentItemName:区切り線を付ける項目リストの親の名前、リストの末端に区切り線を追加します ) +extern int InsertMenuItem_Name( const TCHAR *ItemName, const TCHAR *NewItemName ) ; // 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する +extern int InsertMenuItem_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, const TCHAR *NewItemName, size_t NewItemNameLength ) ; // 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する +extern int InsertMenuLine_Name( const TCHAR *ItemName ) ; // 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する +extern int InsertMenuLine_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength ) ; // 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する +extern int DeleteMenuItem_Name( const TCHAR *ItemName ) ; // メニューから選択項目を削除する +extern int DeleteMenuItem_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength ) ; // メニューから選択項目を削除する +extern int CheckMenuItemSelect_Name( const TCHAR *ItemName ) ; // メニューが選択されたかどうかを取得する( 戻り値 0:選択されていない 1:選択された ) +extern int CheckMenuItemSelect_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength ) ; // メニューが選択されたかどうかを取得する( 戻り値 0:選択されていない 1:選択された ) +extern int SetMenuItemEnable_Name( const TCHAR *ItemName, int EnableFlag ) ; // メニューの項目を選択出来るかどうかを設定する( EnableFlag 1:選択できる 0:選択できない ) +extern int SetMenuItemEnable_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int EnableFlag ) ; // メニューの項目を選択出来るかどうかを設定する( EnableFlag 1:選択できる 0:選択できない ) +extern int SetMenuItemMark_Name( const TCHAR *ItemName, int Mark ) ; // メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する( Mark:設定するマーク( MENUITEM_MARK_NONE 等 ) ) +extern int SetMenuItemMark_NameWithStrLen( const TCHAR *ItemName, size_t ItemNameLength, int Mark ) ; // メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する( Mark:設定するマーク( MENUITEM_MARK_NONE 等 ) ) + +extern int AddMenuItem_ID( int ParentItemID, const TCHAR *NewItemName, int NewItemID = -1 ) ; // メニューに選択項目を追加する +extern int AddMenuItem_IDWithStrLen( int ParentItemID, const TCHAR *NewItemName, size_t NewItemNameLength, int NewItemID = -1 ) ; // メニューに選択項目を追加する +extern int AddMenuLine_ID( int ParentItemID ) ; // メニューのリストに区切り線を追加する +extern int InsertMenuItem_ID( int ItemID, int NewItemID ) ; // 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する +extern int InsertMenuLine_ID( int ItemID, int NewItemID ) ; // 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する +extern int DeleteMenuItem_ID( int ItemID ) ; // メニューから選択項目を削除する +extern int CheckMenuItemSelect_ID( int ItemID ) ; // メニューが選択されたかどうかを取得する( 戻り値  0:選択されていない 1:選択された ) +extern int SetMenuItemEnable_ID( int ItemID, int EnableFlag ) ; // メニューの項目を選択出来るかどうかを設定する( EnableFlag 1:選択できる 0:選択できない ) +extern int SetMenuItemMark_ID( int ItemID, int Mark ) ; // メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する( Mark:設定するマーク( MENUITEM_MARK_NONE 等 ) ) + +extern int DeleteMenuItemAll( void ) ; // メニューの全ての選択項目を削除する +extern int ClearMenuItemSelect( void ) ; // メニューが選択されたかどうかの情報をリセット +extern int GetMenuItemID( const TCHAR *ItemName ) ; // メニューの項目名から項目識別番号を取得する +extern int GetMenuItemIDWithStrLen( const TCHAR *ItemName, size_t ItemNameLength ) ; // メニューの項目名から項目識別番号を取得する +extern int GetMenuItemName( int ItemID, TCHAR *NameBuffer ) ; // メニューの項目識別番号から項目名を取得する +extern int LoadMenuResource( int MenuResourceID ) ; // メニューをリソースから読み込む +extern int SetMenuItemSelectCallBackFunction( void (* CallBackFunction )( const TCHAR *ItemName, int ItemID ) ) ; // メニューの選択項目が選択されたときに呼ばれるコールバック関数を設定する( CallBackFunction:項目が選択されたときに呼ばれるコールバック関数、引数に項目名と項目の識別番号を渡されて呼ばれる ) + +extern int SetWindowMenu( int MenuID, int (* MenuProc )( WORD ID ) ) ; // (古い関数)ウインドウにメニューを設定する +extern int SetDisplayMenuFlag( int Flag ) ; // (古い関数)メニューを表示するかどうかをセットする +extern int GetDisplayMenuFlag( void ) ; // (古い関数)メニューを表示しているかどうかを取得する +extern int GetUseMenuFlag( void ) ; // メニューを使用しているかどうかを得る +extern int SetAutoMenuDisplayFlag( int Flag ) ; // フルスクリーン時にメニューを自動で表示したり非表示にしたりするかどうかのフラグをセットする + + + + + + + + + + + + +// DxNetwork.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_NETWORK +extern int GetWinSockLastError( void ) ; // WinSock で最後に発生したエラーのコードを取得する +#endif // DX_NON_NETWORK + + + + + + + + + + + + + +// DxInputString.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_KEYEX + +extern int SetUseTSFFlag( int UseFlag ) ; // IMEの漢字変換候補表示の処理に TSF を使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない ) + +#endif // DX_NON_KEYEX + + + + + + + + + + + + + + +// DxInput.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_INPUT + +extern int SetKeyExclusiveCooperativeLevelFlag( int Flag ) ; // DirectInput のキーボードの協調レベルを排他レベルにするかどうかを設定する( TRUE:排他レベルにする FALSE:標準レベルにする( デフォルト ) )、DxLib_Init の呼び出し前でのみ実行可能  +extern int SetKeyboardNotDirectInputFlag( int Flag ) ; // キーボードの入力処理に DirectInput を使わないかどうかを設定する( TRUE:DirectInput を使わず、Windows標準機能を使用する  FALSE:DirectInput を使用する ) +extern int SetUseDirectInputFlag( int Flag ) ; // 入力処理に DirectInput を使用するかどうかを設定する( TRUE:DirectInput を使用する  FALSE:DirectInput を使わず、Windows標準機能を使用する ) +extern int SetUseXInputFlag( int Flag ) ; // Xbox360コントローラの入力処理に XInput を使用するかどうかを設定する( TRUE:XInput を使用する( デフォルト )  FALSE:XInput を使用しない ) +extern int SetUseXboxControllerDirectInputFlag( int Flag ) ; // Xbox360コントローラや Xbox Oneコントローラを DirectInputコントローラとしても検出するかどうかを設定する( TRUE:DirectInputコントローラとしても検出する FALSE:DirectInputコントローラとしては検出しない(デフォルト) )、DxLib_Init の呼び出し前でのみ実行可能 +extern int GetJoypadGUID( int PadIndex, GUID *GuidInstanceBuffer, GUID *GuidProductBuffer = NULL ) ; // ジョイパッドのGUIDを得る +extern int GetJoypadName( int InputType, TCHAR *InstanceNameBuffer, TCHAR *ProductNameBuffer ) ; // ジョイパッドのデバイス登録名と製品登録名を取得する( InstanceNameBuffer, ProductNameBuffer 共に 260 以上のバッファサイズが必要 ) +extern int ConvertKeyCodeToVirtualKey( int KeyCode ) ; // DXライブラリのキーコード( KEY_INPUT_A など )に対応する Windows の仮想キーコード( VK_LEFT など ) を取得する( KeyCode:変換したいDXライブラリのキーコード 戻り値:Windowsの仮想キーコード ) +extern int ConvertVirtualKeyToKeyCode( int VirtualKey ) ; // Windows の仮想キーコード( VK_LEFT など ) に対応するDXライブラリのキーコード( KEY_INPUT_A など )を取得する( VirtualKey:変換したいWindowsの仮想キーコード 戻り値:DXライブラリのキーコード ) + +#endif // DX_NON_INPUT + + + + + + + + + + + +#ifndef DX_NOTUSE_DRAWFUNCTION + +// 画像からグラフィックハンドルを作成する関数 +extern int LoadGraphToResource( int ResourceID ) ; // 画像リソースからグラフィックハンドルを作成する +extern int LoadDivGraphToResource( int ResourceID, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する +extern int LoadDivGraphFToResource( int ResourceID, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する( float型 ) +extern int LoadGraphToResource( const TCHAR *ResourceName, const TCHAR *ResourceType ) ; // 画像リソースからグラフィックハンドルを作成する +extern int LoadGraphToResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength ) ; // 画像リソースからグラフィックハンドルを作成する +extern int LoadDivGraphToResource( const TCHAR *ResourceName, const TCHAR *ResourceType, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する +extern int LoadDivGraphToResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する +extern int LoadDivGraphFToResource( const TCHAR *ResourceName, const TCHAR *ResourceType, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する( float型 ) +extern int LoadDivGraphFToResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray ) ; // 画像リソースを分割してグラフィックハンドルを作成する( float型 ) +extern int CreateGraphFromID3D11Texture2D( const void *pID3D11Texture2D ) ; // ID3D11Texture2D からグラフィックハンドルを作成する + +// 画像情報関係関数 +extern const void* GetGraphID3D11Texture2D( int GrHandle ) ; // グラフィックハンドルが持つ ID3D11Texture2D を取得する( Direct3D11 を使用している場合のみ有効 )( 戻り値を ID3D11Texture2D * にキャストしてください ) +extern const void* GetGraphID3D11RenderTargetView( int GrHandle ) ; // グラフィックハンドルが持つ ID3D11RenderTargetView を取得する( Direct3D11 を使用していて、且つ MakeScreen で作成したグラフィックハンドルでのみ有効 )( 戻り値を ID3D11RenderTargetView * にキャストしてください ) +extern const void* GetGraphID3D11DepthStencilView( int GrHandle ) ; // グラフィックハンドルが持つ ID3D11DepthStencilView を取得する( Direct3D11 を使用していて、且つ MakeScreen で作成したグラフィックハンドルでのみ有効 )( 戻り値を ID3D11DepthStencilView * にキャストしてください ) + +// 画面関係関数 +extern int BltBackScreenToWindow( HWND Window, int ClientX, int ClientY ) ; // 裏画面の内容を指定のウインドウに転送する +extern int BltRectBackScreenToWindow( HWND Window, RECT BackScreenRect, RECT WindowClientRect ) ; // 裏画面の指定の領域をウインドウのクライアント領域の指定の領域に転送する +extern int SetScreenFlipTargetWindow( HWND TargetWindow, double ScaleX = 1.0 , double ScaleY = 1.0 ) ; // ScreenFlip で画像を転送する先のウインドウを設定する( NULL を指定すると設定解除 ) +extern int GetDesktopScreenGraph( int x1, int y1, int x2, int y2, int GrHandle, int DestX = 0 , int DestY = 0 ) ; // デスクトップ画面から指定領域の画像情報をグラフィックハンドルに転送する + +// その他設定関係関数 +extern int SetMultiThreadFlag( int Flag ) ; // DirectDraw や Direct3D の協調レベルをマルチスレッド対応にするかどうかをセットする( TRUE:マルチスレッド対応にする FALSE:マルチスレッド対応にしない( デフォルト ) ) +extern int SetUseDirectDrawDeviceIndex( int Index ) ; // 使用する DirectDraw デバイスのインデックスを設定する +extern int SetAeroDisableFlag( int Flag ) ; // Vista,7 の Windows Aero を無効にするかどうかを設定する( TRUE:無効にする( デフォルト ) FALSE:有効にする )( DxLib_Init の前に呼ぶ必要があります ) +extern int SetUseDirect3D9Ex( int Flag ) ; // Vista以降の環境で Direct3D9Ex を使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない )( DxLib_Init の前に呼ぶ必要があります ) +extern int SetUseDirect3D11( int Flag ) ; // Direct3D11 を使用するかどうかを設定する( TRUE:使用する FALSE:使用しない ) +extern int SetUseDirect3D11MinFeatureLevel( int Level /* DX_DIRECT3D_11_FEATURE_LEVEL_10_0 など */ ) ; // Direct3D11 で使用する最低機能レベルを指定する関数です、尚、DX_DIRECT3D_11_FEATURE_LEVEL_11_0 より低い機能レベルでの正常な動作は保証しません( デフォルトは DX_DIRECT3D_11_FEATURE_LEVEL_11_0 ) +extern int SetUseDirect3D11WARPDriver( int Flag ) ; // D3D_DRIVER_TYPE_WARP タイプの Direct3D 11 ドライバを使用するかどうかを設定する( TRUE:使用する FALSE:使用しない( デフォルト ) ) +extern int SetUseDirect3DVersion( int Version /* DX_DIRECT3D_9 など */ ) ; // 使用する Direct3D のバージョンを設定する、DxLib_Init 呼び出しの前でのみ使用可能  +extern int GetUseDirect3DVersion( void ) ; // 使用している Direct3D のバージョンを取得する( DX_DIRECT3D_9 など ) +extern int GetUseDirect3D11FeatureLevel( void ) ; // 使用している Direct3D11 の FeatureLevel ( DX_DIRECT3D_11_FEATURE_LEVEL_9_1 等 )を取得する( 戻り値 -1:エラー -1以外:Feature Level ) +extern int SetUseDirectDrawFlag( int Flag ) ; // ( 同効果のSetUseSoftwareRenderModeFlag を使用して下さい )DirectDrawを使用するかどうかを設定する +extern int SetUseGDIFlag( int Flag ) ; // GDI描画を使用するかどうかを設定する +extern int GetUseGDIFlag( void ) ; // GDI描画を使用するかどうかを取得する +extern int SetDDrawUseGuid( const GUID *Guid ) ; // DirectDrawが使用するGUIDを設定する +extern const void* GetUseDDrawObj( void ) ; // 現在使用しているDirectDrawオブジェクトのアドレスを取得する( 戻り値を IDirectDraw7 * にキャストして下さい ) +extern const GUID* GetDirectDrawDeviceGUID( int Number ) ; // 有効な DirectDraw デバイスの GUID を取得する +extern int GetDirectDrawDeviceDescription( int Number, char *StringBuffer ) ; // 有効な DirectDraw デバイスの名前を取得する +extern int GetDirectDrawDeviceNum( void ) ; // 有効な DirectDraw デバイスの数を取得する +extern const void* GetUseDirect3DDevice9( void ) ; // 使用中のDirect3DDevice9オブジェクトを取得する( 戻り値を IDirect3DDevice9 * にキャストして下さい ) +extern const void* GetUseDirect3D9BackBufferSurface( void ) ; // 使用中のバックバッファのDirect3DSurface9オブジェクトを取得する( 戻り値を D_IDirect3DSurface9 * にキャストしてください ) +extern const void* GetUseDirect3D11Device( void ) ; // 使用中のID3D11Deviceオブジェクトを取得する( 戻り値を ID3D11Device * にキャストして下さい ) +extern const void* GetUseDirect3D11DeviceContext( void ) ; // 使用中のID3D11DeviceContextオブジェクトを取得する( 戻り値を ID3D11DeviceContext * にキャストして下さい ) +extern const void* GetUseDirect3D11BackBufferTexture2D( void ) ; // 使用中のバックバッファのID3D11Texture2Dオブジェクトを取得する( 戻り値を ID3D11Texture2D * にキャストしてください ) +extern const void* GetUseDirect3D11BackBufferRenderTargetView( void ) ; // 使用中のバックバッファのID3D11RenderTargetViewオブジェクトを取得する( 戻り値を ID3D11RenderTargetView * にキャストしてください ) +extern const void* GetUseDirect3D11DepthStencilTexture2D( void ) ; // 使用中の深度ステンシルバッファのID3D11Texture2Dオブジェクトを取得する( 戻り値を ID3D11Texture2D * にキャストしてください ) +extern int SetDrawScreen_ID3D11RenderTargetView( const void *pID3D11RenderTargetView, const void *pID3D11DepthStencilView = NULL ) ; // 指定の ID3D11RenderTargetView を描画対象にする( pID3D11DepthStencilView が NULL の場合はデフォルトの深度ステンシルバッファを使用する ) +extern int RefreshDxLibDirect3DSetting( void ) ; // DXライブラリが行ったDirect3Dの設定を再度行う( 特殊用途 ) + +#ifndef DX_NON_MEDIA_FOUNDATION +extern int SetUseMediaFoundationFlag( int Flag ) ; // Media Foundation を使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない ) +#endif // DX_NON_MEDIA_FOUNDATION + +// 色情報取得用関数 +extern int ColorKaiseki( const void *PixelData, COLORDATA* ColorData ) ; // 色ビット情報解析 + + + + + + + + + + +// DxMask.cpp 関数プロトタイプ宣言 +#ifndef DX_NON_MASK + +extern int BmpBltToMask( HBITMAP Bmp, int BmpPointX, int BmpPointY, int MaskHandle ) ; // マスクハンドルにBMPデータを転送する + +#endif // DX_NON_MASK + +#endif // DX_NOTUSE_DRAWFUNCTION + + + + + + + + + +// DxFont.cpp 関数プロトタイプ宣言 + +#ifndef DX_NON_FONT + +extern HANDLE AddFontFile( const TCHAR *FontFilePath ) ; // 指定のフォントファイルをシステムに追加する( 戻り値 NULL:失敗 NULL以外:フォントハンドル( WindowsOS のものなので、DXライブラリのフォントハンドルとは別物です ) ) +extern HANDLE AddFontFileWithStrLen( const TCHAR *FontFilePath, size_t FontFilePathLength ) ; // 指定のフォントファイルをシステムに追加する( 戻り値 NULL:失敗 NULL以外:フォントハンドル( WindowsOS のものなので、DXライブラリのフォントハンドルとは別物です ) ) +extern HANDLE AddFontFileFromMem( const void *FontFileImage, int FontFileImageSize ) ; // 指定のメモリアドレスに展開したフォントファイルイメージをシステムに追加する( 戻り値 NULL:失敗 NULL以外:フォントハンドル( WindowsOS のものなので、DXライブラリのフォントハンドルとは別物です ) ) +extern int RemoveFontFile( HANDLE FontHandle ) ; // 指定のフォントハンドルをシステムから削除する( 引数は AddFontFile や AddFontFileFromMem の戻り値 ) + +#ifndef DX_NON_SAVEFUNCTION + +extern int CreateFontDataFile( const TCHAR *SaveFilePath, const TCHAR *FontName, int Size, int BitDepth /* DX_FONTIMAGE_BIT_1等 */ , int Thick, int Italic = FALSE , int CharSet = -1 , const TCHAR *SaveCharaList = NULL ) ; // フォントデータファイルを作成する +extern int CreateFontDataFileWithStrLen( const TCHAR *SaveFilePath, size_t SaveFilePathLength, const TCHAR *FontName, size_t FontNameLength, int Size, int BitDepth /* DX_FONTIMAGE_BIT_1等 */ , int Thick, int Italic = FALSE , int CharSet = -1 , const TCHAR *SaveCharaList = NULL , size_t SaveCharaListLength = 0 ) ; // フォントデータファイルを作成する + +#endif // DX_NON_SAVEFUNCTION +#endif // DX_NON_FONT + + + + + + + + + +// 基本イメージデータのロード+DIB関係 +extern HBITMAP CreateDIBGraph( const TCHAR *FileName, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイルからDIBデータを作成する +extern HBITMAP CreateDIBGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイルからDIBデータを作成する +extern HBITMAP CreateDIBGraphToMem( const BITMAPINFO *BmpInfo, const void *GraphData, int ReverseFlag, COLORDATA *SrcColor ) ; // BMPデータからDIBデータクを作成する +extern int CreateDIBGraph_plus_Alpha( const TCHAR *FileName, HBITMAP *RGBBmp, HBITMAP *AlphaBmp, int ReverseFlag = FALSE , COLORDATA *SrcColor = NULL ) ; // 画像ファイルからDIBデータとマスク用DIBデータを作成する +extern int CreateDIBGraph_plus_AlphaWithStrLen( const TCHAR *FileName, size_t FileNameLength, HBITMAP *RGBBmp, HBITMAP *AlphaBmp, int ReverseFlag = FALSE , COLORDATA *SrcColor = NULL ) ; // 画像ファイルからDIBデータとマスク用DIBデータを作成する +extern HBITMAP CreateDIBGraphVer2( const TCHAR *FileName, const void *MemImage, int MemImageSize, int ImageType, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータを作成する +extern HBITMAP CreateDIBGraphVer2WithStrLen( const TCHAR *FileName, size_t FileNameLength, const void *MemImage, int MemImageSize, int ImageType, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータを作成する +extern int CreateDIBGraphVer2_plus_Alpha( const TCHAR *FileName, const void *MemImage, int MemImageSize, const void *AlphaImage, int AlphaImageSize, int ImageType, HBITMAP *RGBBmp, HBITMAP *AlphaBmp, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータとマスク用DIBデータを作成する +extern int CreateDIBGraphVer2_plus_AlphaWithStrLen( const TCHAR *FileName, size_t FileNameLength, const void *MemImage, int MemImageSize, const void *AlphaImage, int AlphaImageSize, int ImageType, HBITMAP *RGBBmp, HBITMAP *AlphaBmp, int ReverseFlag, COLORDATA *SrcColor ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータとマスク用DIBデータを作成する +extern int ConvBitmapToGraphImage( const BITMAPINFO *BmpInfo, void *GraphData, BASEIMAGE *GraphImage, int CopyFlag ) ; // BMPデータから基本イメージデータを構築する( Ret 0:正常終了 1:コピーを行った -1:エラー ) +extern int ConvGraphImageToBitmap( const BASEIMAGE *GraphImage, BITMAPINFO *BmpInfo, void **GraphData, int CopyFlag, int FullColorConv = TRUE ) ; // 基本イメージデータをBMPデータに変換するGraphImage を BMP に変換する(アルファデータはあっても無視される)( 戻り値 0:正常終了 1:コピーを行った -1:エラー ) + +// 基本イメージデータ構造体関係 +extern int UpdateLayerdWindowForBaseImage( const BASEIMAGE *BaseImage ) ; // 基本イメージデータを使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForBaseImageRect( const BASEIMAGE *BaseImage, int x1, int y1, int x2, int y2 ) ; // 基本イメージデータの指定の範囲を使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForPremultipliedAlphaBaseImage( const BASEIMAGE *BaseImage ) ; // 乗算済みアルファの基本イメージデータを使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForPremultipliedAlphaBaseImageRect( const BASEIMAGE *BaseImage, int x1, int y1, int x2, int y2 ) ; // 乗算済みアルファの基本イメージデータの指定の範囲を使用して UpdateLayerdWindow を行う + +// デスクトップキャプチャ +extern int GetDesktopScreenBaseImage( int x1, int y1, int x2, int y2, BASEIMAGE *BaseImage, int DestX, int DestY ) ; // デスクトップの指定の領域を基本イメージデータに転送する + + + + + + + + + + +// DxSoftImage.cpp関数プロトタイプ宣言 +#ifndef DX_NON_SOFTIMAGE + +extern int UpdateLayerdWindowForSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルを使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForSoftImageRect( int SIHandle, int x1, int y1, int x2, int y2 ) ; // ソフトウエアイメージハンドルの指定の範囲を使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForPremultipliedAlphaSoftImage( int SIHandle ) ; // 乗算済みアルファのソフトウエアイメージハンドルを使用して UpdateLayerdWindow を行う +extern int UpdateLayerdWindowForPremultipliedAlphaSoftImageRect( int SIHandle, int x1, int y1, int x2, int y2 ) ; // 乗算済みアルファのソフトウエアイメージハンドルの指定の範囲を使用して UpdateLayerdWindow を行う + +// デスクトップキャプチャ +extern int GetDesktopScreenSoftImage( int x1, int y1, int x2, int y2, int SIHandle, int DestX, int DestY ) ; // デスクトップの指定の領域をソフトウエアイメージハンドルに転送する + +#endif // DX_NON_SOFTIMAGE + + + + + + + + + + +// DxSound.cpp関数プロトタイプ宣言 +#ifndef DX_NON_SOUND + +// サウンドデータ管理系関数 +extern int LoadSoundMemByResource( const TCHAR *ResourceName, const TCHAR *ResourceType, int BufferNum = 1 ) ; // サウンドリソースからサウンドハンドルを作成する +extern int LoadSoundMemByResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength, int BufferNum = 1 ) ; // サウンドリソースからサウンドハンドルを作成する + +// 設定関係関数 +extern int SetUseSoftwareMixingSoundFlag( int Flag ) ; // サウンドの処理をソフトウエアで行うかどうかを設定する( TRUE:ソフトウエア FALSE:ハードウエア( デフォルト ) ) +extern int SetEnableXAudioFlag( int Flag ) ; // サウンドの再生にXAudioを使用するかどうかを設定する( TRUE:使用する FALSE:使用しない( デフォルト ) ) + +// 情報取得系関数 +extern const void* GetDSoundObj( void ) ; /* 戻り値を IDirectSound * にキャストして下さい */ // DXライブラリが使用している DirectSound オブジェクトを取得する + +// MIDI制御関数 +extern int LoadMusicMemByResource( const TCHAR *ResourceName, const TCHAR *ResourceType ) ; // リソース上のMIDIファイルからMIDIハンドルを作成する +extern int LoadMusicMemByResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength ) ; // リソース上のMIDIファイルからMIDIハンドルを作成する +extern int PlayMusicByResource( const TCHAR *ResourceName, const TCHAR *ResourceType, int PlayType ) ; // リソースからMIDIファイルを読み込んで演奏する +extern int PlayMusicByResourceWithStrLen( const TCHAR *ResourceName, size_t ResourceNameLength, const TCHAR *ResourceType, size_t ResourceTypeLength, int PlayType ) ; // リソースからMIDIファイルを読み込んで演奏する + +#endif // DX_NON_SOUND + + + + + + + + + +#undef DX_FUNCTION_START +#define DX_FUNCTION_END +#undef DX_FUNCTION_END + +#ifndef DX_NON_NAMESPACE + +} + +#endif // DX_NON_NAMESPACE + +#endif // DX_FUNCTIONWIN_H + diff --git a/templates/hello-dxlib/include/DxLib.h b/templates/hello-dxlib/include/DxLib.h new file mode 100644 index 000000000..fa8c43aed --- /dev/null +++ b/templates/hello-dxlib/include/DxLib.h @@ -0,0 +1,5336 @@ +// ------------------------------------------------------------------------------- +// +// DXライブラリ ヘッダファイル +// +// Ver 3.21d +// +// ------------------------------------------------------------------------------- + +#ifndef DX_LIB_H +#define DX_LIB_H + +#include "DxCompileConfig.h" + +// DXライブラリのバージョン +#define DXLIB_VERSION 0x321d +#define DXLIB_VERSION_STR_T _T( "3.21d" ) +#define DXLIB_VERSION_STR_W L"3.21d" + +// 設定 ----------------------------------------------------------------------- + +// DXライブラリに必要な lib ファイルを、プロジェクトのカレントフォルダや +// コンパイラのデフォルト LIB パスに設定せずに使用される場合は以下の +// コメントを外してください +//#define DX_LIB_NOT_DEFAULTPATH + +#ifndef DX_MAKE + +// 描画関連の関数を一切使用されない場合は以下のコメントを外して下さい +//#define DX_NOTUSE_DRAWFUNCTION + +#endif // DX_MAKE + + +// 定義--------------------------------------------------------------------------- + +// π +#define DX_PI (3.1415926535897932384626433832795 ) +#define DX_PI_F (3.1415926535897932384626433832795f) +#define DX_TWO_PI (3.1415926535897932384626433832795 * 2.0 ) +#define DX_TWO_PI_F (3.1415926535897932384626433832795f * 2.0f) + +#define DX_CHAR char + +#define DX_DEFINE_START + +#define MAX_IMAGE_NUM (32768) // 同時に持てるグラフィックハンドルの最大数( ハンドルエラーチェックのマスクに使用しているので 65536 以下の 2 のべき乗にして下さい ) +#define MAX_2DSURFACE_NUM (32768) // 2Dサーフェスデータの最大数( ハンドルエラーチェックのマスクに使用しているので 65536 以下の 2 のべき乗にして下さい ) +#define MAX_3DSURFACE_NUM (65536) // 3Dサーフェスデータの最大数( ハンドルエラーチェックのマスクに使用しているので 65536 以下の 2 のべき乗にして下さい ) +#define MAX_IMAGE_DIVNUM (64) // 画像分割の最大数 +#define MAX_SURFACE_NUM (65536) // サーフェスデータの最大数 +#define MAX_SHADOWMAP_NUM (8192) // シャドウマップデータの最大数 +#define MAX_SOFTIMAGE_NUM (8192) // 同時に持てるソフトイメージハンドルの最大数( ハンドルエラーチェックのマスクに使用しているので 65536 以下の 2 のべき乗にして下さい ) + +#define MAX_SOUND_NUM (32768) // 同時に持てるサウンドハンドルの最大数 +#define MAX_SOFTSOUND_NUM (8192) // 同時に持てるソフトウエアサウンドハンドルの最大数 +#define MAX_MUSIC_NUM (256) // 同時に持てるミュージックハンドルの最大数 +#define MAX_MOVIE_NUM (100) // 同時に持てるムービーハンドルの最大数 +#define MAX_MASK_NUM (32768) // 同時に持てるマスクハンドルの最大数 +#define MAX_FONT_NUM (40) // 同時に持てるフォントハンドルの最大数 +#define MAX_INPUT_NUM (256) // 同時に持てる文字列入力ハンドルの最大数 +#define MAX_SOCKET_NUM (8192) // 同時に持てる通信ハンドルの最大数 +#define MAX_LIGHT_NUM (4096) // 同時に持てるライトハンドルの最大数 +#define MAX_SHADER_NUM (4096) // 同時に持てるシェーダーハンドルの最大数 +#define MAX_CONSTANT_BUFFER_NUM (8192) // 同時に持てる定数バッファハンドルの最大数 +#define MAX_MODEL_BASE_NUM (32768) // 同時に持てる3Dモデル基本データハンドルの最大数 +#define MAX_MODEL_NUM (32768) // 同時に持てる3Dモデルデータハンドルの最大数 +#define MAX_VERTEX_BUFFER_NUM (16384) // 同時に持てる頂点バッファハンドルの最大数 +#define MAX_INDEX_BUFFER_NUM (16384) // 同時に持てるインデックスバッファの最大数 +#define MAX_FILE_NUM (32768) // 同時に持てるファイルハンドルの最大数 +#define MAX_LIVE2D_CUBISM4_MODEL_NUM (32768) // 同時に持てる Live2D Cubism 4 Model ハンドルの最大数 + +#define MAX_JOYPAD_NUM (16) // ジョイパッドの最大数 + +#define DEFAULT_SCREEN_SIZE_X (640) // デフォルトの画面の幅 +#define DEFAULT_SCREEN_SIZE_Y (480) // デフォルトの画面の高さ +#define DEFAULT_COLOR_BITDEPTH (16) // デフォルトの色ビット深度 +#define DEFAULT_ZBUFFER_BITDEPTH (16) // デフォルトのZバッファビット深度 + +#define DEFAULT_FOV (60.0F * 3.1415926535897932384626433832795F / 180.0F) // デフォルトの視野角 +#define DEFAULT_TAN_FOV_HALF (0.57735026918962576450914878050196F) // tan( FOV * 0.5 ) +#define DEFAULT_NEAR (0.0F) // NEARクリップ面 +#define DEFAULT_FAR (20000.0F) // FARクリップ面 + +#define DX_DEFAULT_FONT_HANDLE (-2) // デフォルトフォントを示す値 + +#define DEFAULT_FONT_SIZE (16) // フォントのデフォルトのサイズ +#define DEFAULT_FONT_THINCK (6) // フォントのデフォルトの太さ +#define DEFAULT_FONT_TYPE ( DX_FONTTYPE_NORMAL ) // フォントのデフォルトの形態 +#define DEFAULT_FONT_EDGESIZE (1) // フォントのデフォルトの太さ + +#define MAX_USERIMAGEREAD_FUNCNUM (10) // ユーザーが登録できるグラフィックロード関数の最大数 + +// WINDOWSのバージョンマクロ +#define DX_WINDOWSVERSION_31 (0x000) +#define DX_WINDOWSVERSION_95 (0x001) +#define DX_WINDOWSVERSION_98 (0x002) +#define DX_WINDOWSVERSION_ME (0x003) +#define DX_WINDOWSVERSION_NT31 (0x104) +#define DX_WINDOWSVERSION_NT40 (0x105) +#define DX_WINDOWSVERSION_2000 (0x106) +#define DX_WINDOWSVERSION_XP (0x107) +#define DX_WINDOWSVERSION_VISTA (0x108) +#define DX_WINDOWSVERSION_7 (0x109) +#define DX_WINDOWSVERSION_8 (0x10A) +#define DX_WINDOWSVERSION_8_1 (0x10B) +#define DX_WINDOWSVERSION_10 (0x10C) +#define DX_WINDOWSVERSION_NT_TYPE (0x100) + +// DirectXのバージョン +#define DX_DIRECTXVERSION_NON (0) +#define DX_DIRECTXVERSION_1 (0x10000) +#define DX_DIRECTXVERSION_2 (0x20000) +#define DX_DIRECTXVERSION_3 (0x30000) +#define DX_DIRECTXVERSION_4 (0x40000) +#define DX_DIRECTXVERSION_5 (0x50000) +#define DX_DIRECTXVERSION_6 (0x60000) +#define DX_DIRECTXVERSION_6_1 (0x60100) +#define DX_DIRECTXVERSION_7 (0x70000) +#define DX_DIRECTXVERSION_8 (0x80000) +#define DX_DIRECTXVERSION_8_1 (0x80100) + +// Direct3Dのバージョン +#define DX_DIRECT3D_NONE (0) +#define DX_DIRECT3D_9 (1) +#define DX_DIRECT3D_9EX (2) +#define DX_DIRECT3D_11 (3) + +// Direct3D11 の Feature Level +#define DX_DIRECT3D_11_FEATURE_LEVEL_9_1 (0x9100) +#define DX_DIRECT3D_11_FEATURE_LEVEL_9_2 (0x9200) +#define DX_DIRECT3D_11_FEATURE_LEVEL_9_3 (0x9300) +#define DX_DIRECT3D_11_FEATURE_LEVEL_10_0 (0xa000) +#define DX_DIRECT3D_11_FEATURE_LEVEL_10_1 (0xa100) +#define DX_DIRECT3D_11_FEATURE_LEVEL_11_0 (0xb000) +#define DX_DIRECT3D_11_FEATURE_LEVEL_11_1 (0xb100) + +// 文字セット +#define DX_CHARSET_DEFAULT (0) // デフォルト文字セット +#define DX_CHARSET_SHFTJIS (1) // シフトJIS +#define DX_CHARSET_HANGEUL (2) // ハングル文字セット +#define DX_CHARSET_BIG5 (3) // 繁体文字セット +#define DX_CHARSET_GB2312 (4) // 簡体文字セット +#define DX_CHARSET_WINDOWS_1252 (5) // 欧文(ラテン文字の文字コード) +#define DX_CHARSET_ISO_IEC_8859_15 (6) // 欧文(ラテン文字の文字コード) +#define DX_CHARSET_UTF8 (7) // UTF-8 +#define DX_CHARSET_NUM (8) // 文字セットの数 + +// 文字コード形式 +#define DX_CHARCODEFORMAT_SHIFTJIS (932) // シフトJISコード +#define DX_CHARCODEFORMAT_GB2312 (936) // 簡体字文字コード +#define DX_CHARCODEFORMAT_UHC (949) // ハングル文字コード +#define DX_CHARCODEFORMAT_BIG5 (950) // 繁体文字コード +#define DX_CHARCODEFORMAT_UTF16LE (1200) // UTF-16 リトルエンディアン +#define DX_CHARCODEFORMAT_UTF16BE (1201) // UTF-16 ビッグエンディアン +#define DX_CHARCODEFORMAT_WINDOWS_1252 (1252) // 欧文(ラテン文字の文字コード) +#define DX_CHARCODEFORMAT_ISO_IEC_8859_15 (32764) // 欧文(ラテン文字の文字コード) +#define DX_CHARCODEFORMAT_UTF8 (65001) // UTF-8 +#define DX_CHARCODEFORMAT_ASCII (32765) // アスキー文字コード +#define DX_CHARCODEFORMAT_UTF32LE (32766) // UTF-32 リトルエンディアン +#define DX_CHARCODEFORMAT_UTF32BE (32767) // UTF-32 ビッグエンディアン + +// MIDIの演奏モード定義 +#define DX_MIDIMODE_MCI (0) // MCIによる演奏 +#define DX_MIDIMODE_DM (1) // DirectMusicによる演奏 +#define DX_MIDIMODE_DIRECT_MUSIC_REVERB (1) // DirectMusic(リバーブあり)による演奏 +#define DX_MIDIMODE_DIRECT_MUSIC_NORMAL (2) // DirectMusic(リバーブなし)による演奏 +#define DX_MIDIMODE_NUM (3) // MIDIの演奏モードの数 + +// 描画モード定義 +#define DX_DRAWMODE_NEAREST (0) // ネアレストネイバー法で描画 +#define DX_DRAWMODE_BILINEAR (1) // バイリニア法で描画する +#define DX_DRAWMODE_ANISOTROPIC (2) // 異方性フィルタリング法で描画する +#define DX_DRAWMODE_OTHER (3) // それ以外 +#define DX_DRAWMODE_NUM (4) // 描画モードの数 + +// フォントのタイプ +#define DX_FONTTYPE_NORMAL (0x00) // ノーマルフォント +#define DX_FONTTYPE_EDGE (0x01) // エッジつきフォント +#define DX_FONTTYPE_ANTIALIASING (0x02) // アンチエイリアスフォント( 標準機能アンチエイリアス ) +#define DX_FONTTYPE_ANTIALIASING_4X4 (0x12) // アンチエイリアスフォント( 4x4サンプリング ) +#define DX_FONTTYPE_ANTIALIASING_8X8 (0x22) // アンチエイリアスフォント( 8x8サンプリング ) +#define DX_FONTTYPE_ANTIALIASING_EDGE (0x03) // アンチエイリアス&エッジ付きフォント( 標準機能アンチエイリアス ) +#define DX_FONTTYPE_ANTIALIASING_EDGE_4X4 (0x13) // アンチエイリアス&エッジ付きフォント( 4x4サンプリング ) +#define DX_FONTTYPE_ANTIALIASING_EDGE_8X8 (0x23) // アンチエイリアス&エッジ付きフォント( 8x8サンプリング ) + +// フォント画像の階調ビット数 +#define DX_FONTIMAGE_BIT_1 (0) +#define DX_FONTIMAGE_BIT_4 (1) +#define DX_FONTIMAGE_BIT_8 (2) + +// 描画ブレンドモード定義 +#define DX_BLENDMODE_NOBLEND (0) // ノーブレンド +#define DX_BLENDMODE_ALPHA (1) // αブレンド +#define DX_BLENDMODE_ADD (2) // 加算ブレンド +#define DX_BLENDMODE_SUB (3) // 減算ブレンド +#define DX_BLENDMODE_MUL (4) // 乗算ブレンド + // (内部処理用) +#define DX_BLENDMODE_SUB2 (5) // 内部処理用減算ブレンド2 +//#define DX_BLENDMODE_BLINEALPHA (7) // 境界線ぼかし +#define DX_BLENDMODE_XOR (6) // XORブレンド( ソフトウエアレンダリングモードでのみ有効 ) +#define DX_BLENDMODE_DESTCOLOR (8) // カラーは更新されない +#define DX_BLENDMODE_INVDESTCOLOR (9) // 描画先の色の反転値を掛ける +#define DX_BLENDMODE_INVSRC (10) // 描画元の色を反転する +#define DX_BLENDMODE_MULA (11) // アルファチャンネル考慮付き乗算ブレンド +#define DX_BLENDMODE_ALPHA_X4 (12) // αブレンドの描画元の輝度を最大4倍にできるモード +#define DX_BLENDMODE_ADD_X4 (13) // 加算ブレンドの描画元の輝度を最大4倍にできるモード +#define DX_BLENDMODE_SRCCOLOR (14) // 描画元のカラーでそのまま描画される +#define DX_BLENDMODE_HALF_ADD (15) // 半加算ブレンド +#define DX_BLENDMODE_SUB1 (16) // 内部処理用減算ブレンド1 +#define DX_BLENDMODE_PMA_ALPHA (17) // 乗算済みαブレンドモードのαブレンド +#define DX_BLENDMODE_PMA_ADD (18) // 乗算済みαブレンドモードの加算ブレンド +#define DX_BLENDMODE_PMA_SUB (19) // 乗算済みαブレンドモードの減算ブレンド +#define DX_BLENDMODE_PMA_INVSRC (20) // 乗算済みαブレンドモードの描画元の色を反転する +#define DX_BLENDMODE_PMA_ALPHA_X4 (21) // 乗算済みαブレンドモードのαブレンドの描画元の輝度を最大4倍にできるモード +#define DX_BLENDMODE_PMA_ADD_X4 (22) // 乗算済みαブレンドモードの加算ブレンドの描画元の輝度を最大4倍にできるモード +#define DX_BLENDMODE_LIVE2D_ZERO (23) // Live2D のブレンドモード Zero 用 +#define DX_BLENDMODE_LIVE2D_NORMAL (24) // Live2D のブレンドモード Normal 用 +#define DX_BLENDMODE_LIVE2D_ADD (25) // Live2D のブレンドモード Add 用 +#define DX_BLENDMODE_LIVE2D_MULT (26) // Live2D のブレンドモード Mult 用 +#define DX_BLENDMODE_LIVE2D_MASK (27) // Live2D のブレンドモード Mask 用 +#define DX_BLENDMODE_NUM (28) // ブレンドモードの数 + +// DrawGraphF 等の浮動小数点値で座標を指定する関数における座標タイプ +#define DX_DRAWFLOATCOORDTYPE_DIRECT3D9 (0) // Direct3D9タイプ( -0.5f の補正を行わないとテクスチャのピクセルが綺麗にマップされないタイプ ) +#define DX_DRAWFLOATCOORDTYPE_DIRECT3D10 (1) // Direct3D10タイプ( -0.5f の補正を行わななくてもテクスチャのピクセルが綺麗にマップされるタイプ ) + +// 画像合成タイプ +#define DX_BLENDGRAPHTYPE_NORMAL (0) // 通常合成 +#define DX_BLENDGRAPHTYPE_WIPE (1) // ワイプ処理 +#define DX_BLENDGRAPHTYPE_ALPHA (2) // ブレンド画像のα値と元画像のα値を掛け合わせる +#define DX_BLENDGRAPHTYPE_NUM (3) + +// 画像合成座標タイプ +#define DX_BLENDGRAPH_POSMODE_DRAWGRAPH (0) // 描画する画像基準で合成画像の座標を決定 +#define DX_BLENDGRAPH_POSMODE_SCREEN (1) // スクリーン座標基準で合成画像の座標を決定 +#define DX_BLENDGRAPH_POSMODE_NUM (2) + +// グラフィックフィルタータイプ +#define DX_GRAPH_FILTER_MONO (0) // モノトーンフィルタ +#define DX_GRAPH_FILTER_GAUSS (1) // ガウスフィルタ +#define DX_GRAPH_FILTER_DOWN_SCALE (2) // 縮小フィルタ +#define DX_GRAPH_FILTER_BRIGHT_CLIP (3) // 明るさクリップフィルタ +#define DX_GRAPH_FILTER_BRIGHT_SCALE (4) // 指定の明るさ領域を拡大するフィルタ +#define DX_GRAPH_FILTER_HSB (5) // 色相・彩度・明度フィルタ +#define DX_GRAPH_FILTER_INVERT (6) // 階調の反転フィルタ +#define DX_GRAPH_FILTER_LEVEL (7) // レベル補正フィルタ +#define DX_GRAPH_FILTER_TWO_COLOR (8) // 2階調化フィルタ +#define DX_GRAPH_FILTER_GRADIENT_MAP (9) // グラデーションマップフィルタ +#define DX_GRAPH_FILTER_PREMUL_ALPHA (10) // 通常のアルファチャンネル付き画像を乗算済みアルファ画像に変換するフィルタ +#define DX_GRAPH_FILTER_INTERP_ALPHA (11) // 乗算済みα画像を通常のアルファチャンネル付き画像に変換するフィルタ +#define DX_GRAPH_FILTER_YUV_TO_RGB (12) // YUVカラーをRGBカラーに変換するフィルタ +#define DX_GRAPH_FILTER_Y2UV1_TO_RGB (13) // YUVカラーをRGBカラーに変換するフィルタ( UV成分が Y成分の半分・又は4分の1( 横・縦片方若しくは両方 )の解像度しかない場合用 ) +#define DX_GRAPH_FILTER_YUV_TO_RGB_RRA (14) // YUVカラーをRGBカラーに変換するフィルタ( 且つ右側半分のRの値をアルファ値として扱う ) +#define DX_GRAPH_FILTER_Y2UV1_TO_RGB_RRA (15) // YUVカラーをRGBカラーに変換するフィルタ( UV成分が Y成分の半分・又は4分の1( 横・縦片方若しくは両方 )の解像度しかない場合用 )( 且つ右側半分のRの値をアルファ値として扱う ) +#define DX_GRAPH_FILTER_BICUBIC_SCALE (16) // バイキュービックを使用した拡大・縮小フィルタ +#define DX_GRAPH_FILTER_LANCZOS3_SCALE (17) // Lanczos-3を使用した拡大・縮小フィルタ +#define DX_GRAPH_FILTER_PMA_BRIGHT_CLIP (18) // 明るさクリップフィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_BRIGHT_SCALE (19) // 指定の明るさ領域を拡大するフィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_HSB (20) // 色相・彩度・明度フィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_INVERT (21) // 階調の反転フィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_LEVEL (22) // レベル補正フィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_TWO_COLOR (23) // 2階調化フィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_PMA_GRADIENT_MAP (24) // グラデーションマップフィルタ(乗算済みアルファ画像用) +#define DX_GRAPH_FILTER_NUM (25) + +// グラフィックブレンドタイプ +#define DX_GRAPH_BLEND_NORMAL (0) // 通常 +#define DX_GRAPH_BLEND_RGBA_SELECT_MIX (1) // RGBAの要素を選択して合成 +#define DX_GRAPH_BLEND_MULTIPLE (2) // 乗算 +#define DX_GRAPH_BLEND_DIFFERENCE (3) // 減算 +#define DX_GRAPH_BLEND_ADD (4) // 加算 +#define DX_GRAPH_BLEND_SCREEN (5) // スクリーン +#define DX_GRAPH_BLEND_OVERLAY (6) // オーバーレイ +#define DX_GRAPH_BLEND_DODGE (7) // 覆い焼き +#define DX_GRAPH_BLEND_BURN (8) // 焼き込み +#define DX_GRAPH_BLEND_DARKEN (9) // 比較(暗) +#define DX_GRAPH_BLEND_LIGHTEN (10) // 比較(明) +#define DX_GRAPH_BLEND_SOFTLIGHT (11) // ソフトライト +#define DX_GRAPH_BLEND_HARDLIGHT (12) // ハードライト +#define DX_GRAPH_BLEND_EXCLUSION (13) // 除外 +#define DX_GRAPH_BLEND_NORMAL_ALPHACH (14) // αチャンネル付き画像の通常合成 +#define DX_GRAPH_BLEND_ADD_ALPHACH (15) // αチャンネル付き画像の加算合成 +#define DX_GRAPH_BLEND_MULTIPLE_A_ONLY (16) // アルファチャンネルのみの乗算 +#define DX_GRAPH_BLEND_PMA_NORMAL (17) // 通常( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_RGBA_SELECT_MIX (18) // RGBAの要素を選択して合成( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_MULTIPLE (19) // 乗算( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_DIFFERENCE (20) // 減算( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_ADD (21) // 加算( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_SCREEN (22) // スクリーン( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_OVERLAY (23) // オーバーレイ( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_DODGE (24) // 覆い焼き( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_BURN (25) // 焼き込み( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_DARKEN (26) // 比較(暗)( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_LIGHTEN (27) // 比較(明)( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_SOFTLIGHT (28) // ソフトライト( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_HARDLIGHT (29) // ハードライト( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_EXCLUSION (30) // 除外( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_NORMAL_ALPHACH (31) // αチャンネル付き画像の通常合成( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_ADD_ALPHACH (32) // αチャンネル付き画像の加算合成( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_PMA_MULTIPLE_A_ONLY (33) // アルファチャンネルのみの乗算( 乗算済みα画像用 ) +#define DX_GRAPH_BLEND_NUM (34) + +// DX_GRAPH_BLEND_RGBA_SELECT_MIX 用の色選択用定義 +#define DX_RGBA_SELECT_SRC_R (0) // 元画像の赤成分 +#define DX_RGBA_SELECT_SRC_G (1) // 元画像の緑成分 +#define DX_RGBA_SELECT_SRC_B (2) // 元画像の青成分 +#define DX_RGBA_SELECT_SRC_A (3) // 元画像のα成分 +#define DX_RGBA_SELECT_BLEND_R (4) // ブレンド画像の赤成分 +#define DX_RGBA_SELECT_BLEND_G (5) // ブレンド画像の緑成分 +#define DX_RGBA_SELECT_BLEND_B (6) // ブレンド画像の青成分 +#define DX_RGBA_SELECT_BLEND_A (7) // ブレンド画像のα成分 + +// フィルモード +#define DX_FILL_WIREFRAME (2) // ワイヤーフレーム +#define DX_FILL_SOLID (3) // ポリゴン + +// ポリゴンカリングモード +#define DX_CULLING_NONE (0) // カリングなし +#define DX_CULLING_LEFT (1) // 背面を左回りでカリング +#define DX_CULLING_RIGHT (2) // 背面を右回りでカリング +#define DX_CULLING_NUM (3) // カリングモードの数 + +// クリッピング方向 +#define DX_CAMERACLIP_LEFT (0x01) // 画面左方向にクリップ +#define DX_CAMERACLIP_RIGHT (0x02) // 画面右方向にクリップ +#define DX_CAMERACLIP_BOTTOM (0x04) // 画面下方向にクリップ +#define DX_CAMERACLIP_TOP (0x08) // 画面上方向にクリップ +#define DX_CAMERACLIP_BACK (0x10) // 画面後方向にクリップ +#define DX_CAMERACLIP_FRONT (0x20) // 画面前方向にクリップ + +// MV1モデルの頂点タイプ +#define DX_MV1_VERTEX_TYPE_1FRAME (0) // 1フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_4FRAME (1) // 1~4フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_8FRAME (2) // 5~8フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_FREE_FRAME (3) // 9フレーム以上の影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_NMAP_1FRAME (4) // 法線マップ用の情報が含まれる1フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_NMAP_4FRAME (5) // 法線マップ用の情報が含まれる1~4フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_NMAP_8FRAME (6) // 法線マップ用の情報が含まれる5~8フレームの影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_NMAP_FREE_FRAME (7) // 法線マップ用の情報が含まれる9フレーム以上の影響を受ける頂点 +#define DX_MV1_VERTEX_TYPE_NUM (8) // 頂点タイプの数 + +// メッシュの種類 +#define DX_MV1_MESHCATEGORY_NORMAL (0) // 普通のメッシュ +#define DX_MV1_MESHCATEGORY_OUTLINE (1) // 輪郭線描画用メッシュ +#define DX_MV1_MESHCATEGORY_OUTLINE_ORIG_SHADER (2) // 輪郭線描画用メッシュ( オリジナルシェーダーでの描画用 ) +#define DX_MV1_MESHCATEGORY_NUM (3) // メッシュの種類の数 + +// シェイプ率の適用タイプ +#define DX_MV1_SHAPERATE_ADD (0) // 元の値に加算 +#define DX_MV1_SHAPERATE_OVERWRITE (1) // 元の値に上書き + +// MV1ファイルの保存タイプ +#define MV1_SAVETYPE_MESH (0x0001) // メッシュ情報のみ保存 +#define MV1_SAVETYPE_ANIM (0x0002) // アニメーション情報のみ保存 +#define MV1_SAVETYPE_NORMAL ( MV1_SAVETYPE_MESH | MV1_SAVETYPE_ANIM ) // 通常保存 + +// アニメーションキーデータタイプ +#define MV1_ANIMKEY_DATATYPE_ROTATE (0) // 回転 +#define MV1_ANIMKEY_DATATYPE_ROTATE_X (1) // 回転X +#define MV1_ANIMKEY_DATATYPE_ROTATE_Y (2) // 回転Y +#define MV1_ANIMKEY_DATATYPE_ROTATE_Z (3) // 回転Z +#define MV1_ANIMKEY_DATATYPE_SCALE (5) // 拡大 +#define MV1_ANIMKEY_DATATYPE_SCALE_X (6) // スケールX +#define MV1_ANIMKEY_DATATYPE_SCALE_Y (7) // スケールY +#define MV1_ANIMKEY_DATATYPE_SCALE_Z (8) // スケールZ +#define MV1_ANIMKEY_DATATYPE_TRANSLATE (10) // 平行移動 +#define MV1_ANIMKEY_DATATYPE_TRANSLATE_X (11) // 平行移動X +#define MV1_ANIMKEY_DATATYPE_TRANSLATE_Y (12) // 平行移動Y +#define MV1_ANIMKEY_DATATYPE_TRANSLATE_Z (13) // 平行移動Z +#define MV1_ANIMKEY_DATATYPE_MATRIX4X4C (15) // 4×4行列の4列目( 0,0,0,1 )固定版 +#define MV1_ANIMKEY_DATATYPE_MATRIX3X3 (17) // 3×3行列 +#define MV1_ANIMKEY_DATATYPE_SHAPE (18) // シェイプ +#define MV1_ANIMKEY_DATATYPE_OTHRE (20) // その他 + +// タイムタイプ +#define MV1_ANIMKEY_TIME_TYPE_ONE (0) // 時間情報は全体で一つ +#define MV1_ANIMKEY_TIME_TYPE_KEY (1) // 時間情報は各キーに一つ + +// アニメーションキータイプ +#define MV1_ANIMKEY_TYPE_QUATERNION_X (0) // クォータニオン( Xファイルタイプ ) +#define MV1_ANIMKEY_TYPE_VECTOR (1) // ベクター +#define MV1_ANIMKEY_TYPE_MATRIX4X4C (2) // 4×4行列の4列目( 0,0,0,1 )固定版 +#define MV1_ANIMKEY_TYPE_MATRIX3X3 (3) // 3×3行列 +#define MV1_ANIMKEY_TYPE_FLAT (4) // フラット +#define MV1_ANIMKEY_TYPE_LINEAR (5) // 線形補間 +#define MV1_ANIMKEY_TYPE_BLEND (6) // 混合 +#define MV1_ANIMKEY_TYPE_QUATERNION_VMD (7) // クォータニオン( VMDタイプ ) + +// 描画先画面指定用定義 +#define DX_SCREEN_FRONT (0xfffffffc) +#define DX_SCREEN_BACK (0xfffffffe) +#define DX_SCREEN_WORK (0xfffffffd) +#define DX_SCREEN_TEMPFRONT (0xfffffff0) +#define DX_SCREEN_OTHER (0xfffffffa) + +#define DX_NONE_GRAPH (0xfffffffb) // グラフィックなしハンドル + +// グラフィック減色時の画像劣化緩和処理モード +#define DX_SHAVEDMODE_NONE (0) // 画像劣化緩和処理を行わない +#define DX_SHAVEDMODE_DITHER (1) // ディザリング +#define DX_SHAVEDMODE_DIFFUS (2) // 誤差拡散 + +// 画像の保存タイプ +#define DX_IMAGESAVETYPE_BMP (0) // bitmap +#define DX_IMAGESAVETYPE_JPEG (1) // jpeg +#define DX_IMAGESAVETYPE_PNG (2) // Png +#define DX_IMAGESAVETYPE_DDS (3) // Direct Draw Surface + +// サウンド再生形態指定用定義 +#define DX_PLAYTYPE_LOOPBIT (0x0002) // ループ再生ビット +#define DX_PLAYTYPE_BACKBIT (0x0001) // バックグラウンド再生ビット + +#define DX_PLAYTYPE_NORMAL (0) // ノーマル再生 +#define DX_PLAYTYPE_BACK ( DX_PLAYTYPE_BACKBIT ) // バックグラウンド再生 +#define DX_PLAYTYPE_LOOP ( DX_PLAYTYPE_LOOPBIT | DX_PLAYTYPE_BACKBIT ) // ループ再生 + +// 動画再生タイプ定義 +#define DX_MOVIEPLAYTYPE_BCANCEL (0) // ボタンキャンセルあり +#define DX_MOVIEPLAYTYPE_NORMAL (1) // ボタンキャンセルなし + +// サウンドのタイプ +#define DX_SOUNDTYPE_NORMAL (0) // ノーマルサウンド形式 +#define DX_SOUNDTYPE_STREAMSTYLE (1) // ストリーム風サウンド形式 + +// サウンドデータタイプのマクロ +#define DX_SOUNDDATATYPE_MEMNOPRESS (0) // 圧縮された全データは再生が始まる前にサウンドメモリにすべて解凍され、格納される +#define DX_SOUNDDATATYPE_MEMNOPRESS_PLUS (1) // 圧縮された全データはシステムメモリに格納され、再生しながら逐次解凍され、最終的にすべてサウンドメモリに格納される(その後システムメモリに存在する圧縮データは破棄される) +#define DX_SOUNDDATATYPE_MEMPRESS (2) // 圧縮された全データはシステムメモリに格納され、再生する部分だけ逐次解凍しながらサウンドメモリに格納する(鳴らし終わると解凍したデータは破棄されるので何度も解凍処理が行われる) +#define DX_SOUNDDATATYPE_FILE (3) // 圧縮されたデータの再生する部分だけファイルから逐次読み込み解凍され、サウンドメモリに格納される(鳴らし終わると解凍したデータは破棄されるので何度も解凍処理が行われる) + +// 読み込み処理のタイプ +#define DX_READSOUNDFUNCTION_PCM (1 << 0) // PCM の読み込み処理 +#define DX_READSOUNDFUNCTION_OGG (1 << 1) // Ogg Vorbis の読み込み処理 +#define DX_READSOUNDFUNCTION_OPUS (1 << 2) // Opus の読み込み処理 +#define DX_READSOUNDFUNCTION_DEFAULT_NUM (3) // 環境非依存の読み込み処理タイプの数 + +// 3Dサウンドリバーブエフェクトのプリセット +#define DX_REVERB_PRESET_DEFAULT (0) // デフォルト +#define DX_REVERB_PRESET_GENERIC (1) // 一般的な空間 +#define DX_REVERB_PRESET_PADDEDCELL (2) // 精神病患者室(?) +#define DX_REVERB_PRESET_ROOM (3) // 部屋 +#define DX_REVERB_PRESET_BATHROOM (4) // バスルーム +#define DX_REVERB_PRESET_LIVINGROOM (5) // リビングルーム +#define DX_REVERB_PRESET_STONEROOM (6) // 石の部屋 +#define DX_REVERB_PRESET_AUDITORIUM (7) // 講堂 +#define DX_REVERB_PRESET_CONCERTHALL (8) // コンサートホール +#define DX_REVERB_PRESET_CAVE (9) // 洞穴 +#define DX_REVERB_PRESET_ARENA (10) // 舞台 +#define DX_REVERB_PRESET_HANGAR (11) // 格納庫 +#define DX_REVERB_PRESET_CARPETEDHALLWAY (12) // カーペットが敷かれた玄関 +#define DX_REVERB_PRESET_HALLWAY (13) // 玄関 +#define DX_REVERB_PRESET_STONECORRIDOR (14) // 石の廊下 +#define DX_REVERB_PRESET_ALLEY (15) // 裏通り +#define DX_REVERB_PRESET_FOREST (16) // 森 +#define DX_REVERB_PRESET_CITY (17) // 都市 +#define DX_REVERB_PRESET_MOUNTAINS (18) // 山 +#define DX_REVERB_PRESET_QUARRY (19) // 採石場 +#define DX_REVERB_PRESET_PLAIN (20) // 平原 +#define DX_REVERB_PRESET_PARKINGLOT (21) // 駐車場 +#define DX_REVERB_PRESET_SEWERPIPE (22) // 下水管 +#define DX_REVERB_PRESET_UNDERWATER (23) // 水面下 +#define DX_REVERB_PRESET_SMALLROOM (24) // 小部屋 +#define DX_REVERB_PRESET_MEDIUMROOM (25) // 中部屋 +#define DX_REVERB_PRESET_LARGEROOM (26) // 大部屋 +#define DX_REVERB_PRESET_MEDIUMHALL (27) // 中ホール +#define DX_REVERB_PRESET_LARGEHALL (28) // 大ホール +#define DX_REVERB_PRESET_PLATE (29) // 板 + +#define DX_REVERB_PRESET_NUM (30) // プリセットの数 + +// マスク透過色モード +#define DX_MASKTRANS_WHITE (0) // マスク画像の白い部分を透過色とする +#define DX_MASKTRANS_BLACK (1) // マスク画像の黒い部分を透過色とする +#define DX_MASKTRANS_NONE (2) // 透過色なし + +// マスク画像チャンネル +#define DX_MASKGRAPH_CH_A (0) // アルファ +#define DX_MASKGRAPH_CH_R (1) // 赤 +#define DX_MASKGRAPH_CH_G (2) // 緑 +#define DX_MASKGRAPH_CH_B (3) // 青 + +// Zバッファ書き込みモード +#define DX_ZWRITE_MASK (0) // 書き込めないようにマスクする +#define DX_ZWRITE_CLEAR (1) // 書き込めるようにマスクをクリアする + +// 比較モード +#define DX_CMP_NEVER (1) // FALSE +#define DX_CMP_LESS (2) // Src < Dest DrawAlpha < TestParam +#define DX_CMP_EQUAL (3) // Src == Dest DrawAlpha == TestParam +#define DX_CMP_LESSEQUAL (4) // Src <= Dest DrawAlpha <= TestParam +#define DX_CMP_GREATER (5) // Src > Dest DrawAlpha > TestParam +#define DX_CMP_NOTEQUAL (6) // Src != Dest DrawAlpha != TestParam +#define DX_CMP_GREATEREQUAL (7) // Src >= Dest DrawAlpha >= TestParam +#define DX_CMP_ALWAYS (8) // TRUE +#define DX_ZCMP_DEFAULT ( DX_CMP_LESSEQUAL ) +#define DX_ZCMP_REVERSE ( DX_CMP_GREATEREQUAL ) + +// シェーディングモード +#define DX_SHADEMODE_FLAT (1) // D_D3DSHADE_FLAT +#define DX_SHADEMODE_GOURAUD (2) // D_D3DSHADE_GOURAUD + +// フォグモード +#define DX_FOGMODE_NONE (0) // D_D3DFOG_NONE +#define DX_FOGMODE_EXP (1) // D_D3DFOG_EXP +#define DX_FOGMODE_EXP2 (2) // D_D3DFOG_EXP2 +#define DX_FOGMODE_LINEAR (3) // D_D3DFOG_LINEAR + +// マテリアルタイプ +#define DX_MATERIAL_TYPE_NORMAL (0) // 標準マテリアル +#define DX_MATERIAL_TYPE_TOON (1) // トゥーンレンダリング用マテリアル +#define DX_MATERIAL_TYPE_TOON_2 (2) // トゥーンレンダリング用マテリアル_タイプ2( MMD互換 ) +#define DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_UNORM (3) // マテリアルのスペキュラ色の輝度の指定の範囲の値を 0.0f ~ 1.0f の値に正規化して書き込むマテリアル +#define DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_CLIP_UNORM (4) // DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_UNORM に『指定の値未満の場合は書き込む値を 0.0f にする』という処理を加えたマテリアル +#define DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_CMP_GREATEREQUAL (5) // マテリアルのスペキュラ色の輝度が指定の閾値以上 の場合は 1.0f を、未満の場合は 0.0f を書き込むマテリアル +#define DX_MATERIAL_TYPE_MAT_SPEC_POWER_UNORM (6) // マテリアルのスペキュラハイライトの鮮明度の指定の範囲の値を 0.0f ~ 1.0f の値に正規化して書き込むマテリアル +#define DX_MATERIAL_TYPE_MAT_SPEC_POWER_CLIP_UNORM (7) // DX_MATERIAL_TYPE_MAT_SPEC_POWER_UNORM に『指定の値未満の場合は書き込む値を 0.0f にする』という処理を加えたマテリアル +#define DX_MATERIAL_TYPE_MAT_SPEC_POWER_CMP_GREATEREQUAL (8) // マテリアルのスペキュラハイライトの鮮明度が指定の閾値以上 の場合は 1.0f を、未満の場合は 0.0f を書き込むマテリアル +#define DX_MATERIAL_TYPE_NUM (9) + +// マテリアルブレンドタイプ +#define DX_MATERIAL_BLENDTYPE_TRANSLUCENT (0) // アルファ合成 +#define DX_MATERIAL_BLENDTYPE_ADDITIVE (1) // 加算 +#define DX_MATERIAL_BLENDTYPE_MODULATE (2) // 乗算 +#define DX_MATERIAL_BLENDTYPE_NONE (3) // 無効 + +// テクスチャアドレスタイプ +#define DX_TEXADDRESS_WRAP (1) // D_D3DTADDRESS_WRAP +#define DX_TEXADDRESS_MIRROR (2) // D_D3DTADDRESS_MIRROR +#define DX_TEXADDRESS_CLAMP (3) // D_D3DTADDRESS_CLAMP +#define DX_TEXADDRESS_BORDER (4) // D_D3DTADDRESS_BORDER +#define DX_TEXADDRESS_NUM (5) // テクスチャアドレスタイプの数 + +// シェーダータイプ +#define DX_SHADERTYPE_VERTEX (0) // 頂点シェーダー +#define DX_SHADERTYPE_PIXEL (1) // ピクセルシェーダー +#define DX_SHADERTYPE_GEOMETRY (2) // ジオメトリシェーダー +#define DX_SHADERTYPE_COMPUTE (3) // コンピュートシェーダー +#define DX_SHADERTYPE_DOMAIN (4) // ドメインシェーダー +#define DX_SHADERTYPE_HULL (5) // ハルシェーダー + +// 頂点データタイプ +#define DX_VERTEX_TYPE_NORMAL_3D (0) // VERTEX3D構造体形式 +#define DX_VERTEX_TYPE_SHADER_3D (1) // VERTEX3DSHADER構造体形式 +#define DX_VERTEX_TYPE_NUM (2) + +// インデックスデータタイプ +#define DX_INDEX_TYPE_16BIT (0) // 16bitインデックス +#define DX_INDEX_TYPE_32BIT (1) // 32bitインデックス + +// モデルファイル読み込み時の物理演算モード +#define DX_LOADMODEL_PHYSICS_DISABLE (1) // 物理演算を使用しない +#define DX_LOADMODEL_PHYSICS_LOADCALC (0) // 読み込み時に計算 +#define DX_LOADMODEL_PHYSICS_REALTIME (2) // 実行時計算 + +// モデルファイル読み込み時の物理演算無効名前ワードのモード +#define DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_ALWAYS (0) // 全てのファイルに対して無効名ワードを適用する +#define DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_DISABLEPHYSICSFILEONLY (1) // vmdファイル名に NP を含めた「物理演算無効」のファイルに対してのみ無効名ワードを適用する( この場合、無効名ワードが適用されない剛体については物理演算が行われる ) +#define DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_NUM (2) + +// PMD, PMX ファイル読み込み時のアニメーションの FPS モード( 主に IK 部分の精度に影響します ) +#define DX_LOADMODEL_PMD_PMX_ANIMATION_FPSMODE_30 (0) // アニメーションを 30FPS で読み込む( IK部分の精度:低 データサイズ:小 )( デフォルト ) +#define DX_LOADMODEL_PMD_PMX_ANIMATION_FPSMODE_60 (1) // アニメーションを 60FPS で読み込む( IK部分の精度:高 データサイズ:大 ) + +// モデルの半透明要素がある箇所に関する描画モード +#define DX_SEMITRANSDRAWMODE_ALWAYS (0) // 半透明かどうか関係なく描画する +#define DX_SEMITRANSDRAWMODE_SEMITRANS_ONLY (1) // 半透明のもののみ描画する +#define DX_SEMITRANSDRAWMODE_NOT_SEMITRANS_ONLY (2) // 半透明ではないもののみ描画する + +// キューブマップの面番号 +#define DX_CUBEMAP_FACE_POSITIVE_X (0) +#define DX_CUBEMAP_FACE_NEGATIVE_X (1) +#define DX_CUBEMAP_FACE_POSITIVE_Y (2) +#define DX_CUBEMAP_FACE_NEGATIVE_Y (3) +#define DX_CUBEMAP_FACE_POSITIVE_Z (4) +#define DX_CUBEMAP_FACE_NEGATIVE_Z (5) + +// ポリゴン描画タイプ +#define DX_PRIMTYPE_POINTLIST (1) // D_D3DPT_POINTLIST +#define DX_PRIMTYPE_LINELIST (2) // D_D3DPT_LINELIST +#define DX_PRIMTYPE_LINESTRIP (3) // D_D3DPT_LINESTRIP +#define DX_PRIMTYPE_TRIANGLELIST (4) // D_D3DPT_TRIANGLELIST +#define DX_PRIMTYPE_TRIANGLESTRIP (5) // D_D3DPT_TRIANGLESTRIP +#define DX_PRIMTYPE_TRIANGLEFAN (6) // D_D3DPT_TRIANGLEFAN +#define DX_PRIMTYPE_MIN (1) +#define DX_PRIMTYPE_MAX (6) + +// ライトタイプ +#define DX_LIGHTTYPE_D3DLIGHT_POINT (1) // D_D3DLIGHT_POINT +#define DX_LIGHTTYPE_D3DLIGHT_SPOT (2) // D_D3DLIGHT_SPOT +#define DX_LIGHTTYPE_D3DLIGHT_DIRECTIONAL (3) // D_D3DLIGHT_DIRECTIONAL +#define DX_LIGHTTYPE_POINT (1) // D_D3DLIGHT_POINT +#define DX_LIGHTTYPE_SPOT (2) // D_D3DLIGHT_SPOT +#define DX_LIGHTTYPE_DIRECTIONAL (3) // D_D3DLIGHT_DIRECTIONAL + +// グラフィックイメージフォーマットの定義 +#define DX_GRAPHICSIMAGE_FORMAT_3D_PAL4 (0) // 16色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_PAL8 (1) // 256色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHA_PAL4 (2) // αチャンネルつき16色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHA_PAL8 (3) // αチャンネルつき256色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHATEST_PAL4 (4) // αテストつき16色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHATEST_PAL8 (5) // αテストつき256色パレットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_RGB16 (6) // 16ビットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_RGB32 (7) // 32ビットカラー標準 +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHA_RGB16 (8) // αチャンネル付き16ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHA_RGB32 (9) // αチャンネル付き32ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHATEST_RGB16 (10) // αテスト付き16ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ALPHATEST_RGB32 (11) // αテスト付き32ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DXT1 (12) // DXT1 +#define DX_GRAPHICSIMAGE_FORMAT_3D_DXT2 (13) // DXT2 +#define DX_GRAPHICSIMAGE_FORMAT_3D_DXT3 (14) // DXT3 +#define DX_GRAPHICSIMAGE_FORMAT_3D_DXT4 (15) // DXT4 +#define DX_GRAPHICSIMAGE_FORMAT_3D_DXT5 (16) // DXT5 +#define DX_GRAPHICSIMAGE_FORMAT_3D_BC7_UNORM (17) // BC7 UNORM +#define DX_GRAPHICSIMAGE_FORMAT_3D_BC7_UNORM_SRGB (18) // BC7 UNORM SRGB +#define DX_GRAPHICSIMAGE_FORMAT_3D_PLATFORM0 (19) // プラットフォーム依存フォーマット0 +#define DX_GRAPHICSIMAGE_FORMAT_3D_PLATFORM1 (20) // プラットフォーム依存フォーマット1 +#define DX_GRAPHICSIMAGE_FORMAT_3D_PLATFORM2 (21) // プラットフォーム依存フォーマット2 +#define DX_GRAPHICSIMAGE_FORMAT_3D_PLATFORM3 (22) // プラットフォーム依存フォーマット3 +#define DX_GRAPHICSIMAGE_FORMAT_3D_YUV (23) // YUVフォーマット +#define DX_GRAPHICSIMAGE_FORMAT_3D_ABGR_I16 (24) // ARGB整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ABGR_F16 (25) // ARGB浮動小数点16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ABGR_F32 (26) // ARGB浮動小数点32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ONE_I8 (27) // 1チャンネル整数8ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ONE_I16 (28) // 1チャンネル整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ONE_F16 (29) // 1チャンネル浮動少数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_ONE_F32 (30) // 1チャンネル浮動少数32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_TWO_I8 (31) // 2チャンネル整数8ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_TWO_I16 (32) // 2チャンネル整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_TWO_F16 (33) // 2チャンネル浮動少数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_TWO_F32 (34) // 2チャンネル浮動少数32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_RGB16 (35) // 描画可能16ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_RGB32 (36) // 描画可能32ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ALPHA_RGB32 (37) // 描画可能α付き32ビットカラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ABGR_I16 (38) // 描画可能ARGB整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ABGR_F16 (39) // 描画可能ARGB浮動小数点16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ABGR_F32 (40) // 描画可能ARGB浮動小数点32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ONE_I8 (41) // 描画可能1チャンネル整数8ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ONE_I16 (42) // 描画可能1チャンネル整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ONE_F16 (43) // 描画可能1チャンネル浮動少数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_ONE_F32 (44) // 描画可能1チャンネル浮動少数32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_TWO_I8 (45) // 描画可能2チャンネル整数8ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_TWO_I16 (46) // 描画可能2チャンネル整数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_TWO_F16 (47) // 描画可能2チャンネル浮動少数16ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_DRAWVALID_TWO_F32 (48) // 描画可能2チャンネル浮動少数32ビット型カラー +#define DX_GRAPHICSIMAGE_FORMAT_3D_NUM (49) +#define DX_GRAPHICSIMAGE_FORMAT_2D (50) // 標準( DirectDrawSurface の場合はこれのみ ) +#define DX_GRAPHICSIMAGE_FORMAT_R5G6B5 (51) // R5G6B5( MEMIMG 用 ) +#define DX_GRAPHICSIMAGE_FORMAT_X8A8R5G6B5 (52) // X8A8R5G6B5( MEMIMG 用 ) +#define DX_GRAPHICSIMAGE_FORMAT_X8R8G8B8 (53) // X8R8G8B8( MEMIMG 用 ) +#define DX_GRAPHICSIMAGE_FORMAT_A8R8G8B8 (54) // A8R8G8B8( MEMIMG 用 ) + +#define DX_GRAPHICSIMAGE_FORMAT_NUM (55) // グラフィックフォーマットの種類の数 + +// 基本イメージのピクセルフォーマット +#define DX_BASEIMAGE_FORMAT_NORMAL (0) // 普通の画像 +#define DX_BASEIMAGE_FORMAT_DXT1 (1) // DXT1 +#define DX_BASEIMAGE_FORMAT_DXT2 (2) // DXT2 +#define DX_BASEIMAGE_FORMAT_DXT3 (3) // DXT3 +#define DX_BASEIMAGE_FORMAT_DXT4 (4) // DXT4 +#define DX_BASEIMAGE_FORMAT_DXT5 (5) // DXT5 +#define DX_BASEIMAGE_FORMAT_BC7_UNORM (6) // BC7 UNORM +#define DX_BASEIMAGE_FORMAT_BC7_UNORM_SRGB (7) // BC7 UNORM SRGB +#define DX_BASEIMAGE_FORMAT_PLATFORM0 (8) // プラットフォーム依存フォーマット0 +#define DX_BASEIMAGE_FORMAT_PLATFORM1 (9) // プラットフォーム依存フォーマット1 +#define DX_BASEIMAGE_FORMAT_PLATFORM2 (10) // プラットフォーム依存フォーマット2 +#define DX_BASEIMAGE_FORMAT_PLATFORM3 (11) // プラットフォーム依存フォーマット3 +#define DX_BASEIMAGE_FORMAT_YUV (12) // YUV + +// ムービーのサーフェスモード +#define DX_MOVIESURFACE_NORMAL (0) +#define DX_MOVIESURFACE_OVERLAY (1) +#define DX_MOVIESURFACE_FULLCOLOR (2) + +// SetUserScreenImage で渡す画面のピクセルフォーマット +#define DX_USER_SCREEN_PIXEL_FORMAT_R5G6B5 (0) // R5G6B5( DXライブラリの描画関数も使用できます( ソフトウェアレンダリングモード相当 ) ) +#define DX_USER_SCREEN_PIXEL_FORMAT_R5G5B5X1 (1) // R5G5B5X1( DXライブラリの描画関数は使用できなくなります ) +#define DX_USER_SCREEN_PIXEL_FORMAT_X1R5G5B5 (2) // X1R5G5B5( DXライブラリの描画関数は使用できなくなります ) +#define DX_USER_SCREEN_PIXEL_FORMAT_X8B8G8R8 (3) // X8B8G8R8( DXライブラリの描画関数は使用できなくなります ) +#define DX_USER_SCREEN_PIXEL_FORMAT_X8R8G8B8 (4) // X8R8G8B8( DXライブラリの描画関数も使用できます( ソフトウェアレンダリングモード相当 ) ) +#define DX_USER_SCREEN_PIXEL_FORMAT_NUM (5) + +// ウインドウの奥行き位置設定タイプ +#define DX_WIN_ZTYPE_NORMAL (0) // 通常設定 +#define DX_WIN_ZTYPE_BOTTOM (1) // 全てのウインドウの一番奥に配置する +#define DX_WIN_ZTYPE_TOP (2) // 全てのウインドウの一番手前に配置する +#define DX_WIN_ZTYPE_TOPMOST (3) // 全てのウインドウの一番手前に配置する( ウインドウがアクティブではないときも最前面に表示される ) + +// ツールバーのボタンの状態 +#define TOOLBUTTON_STATE_ENABLE (0) // 入力可能な状態 +#define TOOLBUTTON_STATE_PRESSED (1) // 押されている状態 +#define TOOLBUTTON_STATE_DISABLE (2) // 入力不可能な状態 +#define TOOLBUTTON_STATE_PRESSED_DISABLE (3) // 押されている状態で、入力不可能な状態 +#define TOOLBUTTON_STATE_NUM (4) // ツールバーのボタンの状態の数 + +// ツールバーのボタンのタイプ +#define TOOLBUTTON_TYPE_NORMAL (0) // 普通のボタン +#define TOOLBUTTON_TYPE_CHECK (1) // 押すごとにON/OFFが切り替わるボタン +#define TOOLBUTTON_TYPE_GROUP (2) // 別の TOOLBUTTON_TYPE_GROUP タイプのボタンが押されるとOFFになるタイプのボタン(グループの区切りは隙間で) +#define TOOLBUTTON_TYPE_SEP (3) // 隙間(ボタンではありません) +#define TOOLBUTTON_TYPE_NUM (4) // ツールバーのボタンのタイプの数 + +// 親メニューのID +#define MENUITEM_IDTOP (0xabababab) + +// メニューに追加する際のタイプ +#define MENUITEM_ADD_CHILD (0) // 指定の項目の子として追加する +#define MENUITEM_ADD_INSERT (1) // 指定の項目と指定の項目より一つ上の項目の間に追加する + +// メニューの横に付くマークタイプ +#define MENUITEM_MARK_NONE (0) // 何も付け無い +#define MENUITEM_MARK_CHECK (1) // チェックマーク +#define MENUITEM_MARK_RADIO (2) // ラジオボタン + +// 文字変換タイプ定義 +#define DX_NUMMODE_10 (0) // 10進数 +#define DX_NUMMODE_16 (1) // 16進数 +#define DX_STRMODE_NOT0 (2) // 空きを0で埋めない +#define DX_STRMODE_USE0 (3) // 空きを0で埋める + +// CheckHitKeyAll で調べる入力タイプ +#define DX_CHECKINPUT_KEY (0x0001) // キー入力を調べる +#define DX_CHECKINPUT_PAD (0x0002) // パッド入力を調べる +#define DX_CHECKINPUT_MOUSE (0x0004) // マウスボタン入力を調べる +#define DX_CHECKINPUT_ALL (DX_CHECKINPUT_KEY | DX_CHECKINPUT_PAD | DX_CHECKINPUT_MOUSE) // すべての入力を調べる + +// パッド入力取得パラメータ +#define DX_INPUT_KEY_PAD1 (0x1001) // キー入力とパッド1入力 +#define DX_INPUT_PAD1 (0x0001) // パッド1入力 +#define DX_INPUT_PAD2 (0x0002) // パッド2入力 +#define DX_INPUT_PAD3 (0x0003) // パッド3入力 +#define DX_INPUT_PAD4 (0x0004) // パッド4入力 +#define DX_INPUT_PAD5 (0x0005) // パッド5入力 +#define DX_INPUT_PAD6 (0x0006) // パッド6入力 +#define DX_INPUT_PAD7 (0x0007) // パッド7入力 +#define DX_INPUT_PAD8 (0x0008) // パッド8入力 +#define DX_INPUT_PAD9 (0x0009) // パッド9入力 +#define DX_INPUT_PAD10 (0x000a) // パッド10入力 +#define DX_INPUT_PAD11 (0x000b) // パッド11入力 +#define DX_INPUT_PAD12 (0x000c) // パッド12入力 +#define DX_INPUT_PAD13 (0x000d) // パッド13入力 +#define DX_INPUT_PAD14 (0x000e) // パッド14入力 +#define DX_INPUT_PAD15 (0x000f) // パッド15入力 +#define DX_INPUT_PAD16 (0x0010) // パッド16入力 +#define DX_INPUT_KEY (0x1000) // キー入力 + +// タッチの同時接触検出対応最大数 +#define TOUCHINPUTPOINT_MAX (16) + +// パッド入力定義 +#define PAD_INPUT_DOWN (0x00000001) // ↓チェックマスク +#define PAD_INPUT_LEFT (0x00000002) // ←チェックマスク +#define PAD_INPUT_RIGHT (0x00000004) // →チェックマスク +#define PAD_INPUT_UP (0x00000008) // ↑チェックマスク +#define PAD_INPUT_A (0x00000010) // Aボタンチェックマスク +#define PAD_INPUT_B (0x00000020) // Bボタンチェックマスク +#define PAD_INPUT_C (0x00000040) // Cボタンチェックマスク +#define PAD_INPUT_X (0x00000080) // Xボタンチェックマスク +#define PAD_INPUT_Y (0x00000100) // Yボタンチェックマスク +#define PAD_INPUT_Z (0x00000200) // Zボタンチェックマスク +#define PAD_INPUT_L (0x00000400) // Lボタンチェックマスク +#define PAD_INPUT_R (0x00000800) // Rボタンチェックマスク +#define PAD_INPUT_START (0x00001000) // STARTボタンチェックマスク +#define PAD_INPUT_M (0x00002000) // Mボタンチェックマスク +#define PAD_INPUT_D (0x00004000) +#define PAD_INPUT_F (0x00008000) +#define PAD_INPUT_G (0x00010000) +#define PAD_INPUT_H (0x00020000) +#define PAD_INPUT_I (0x00040000) +#define PAD_INPUT_J (0x00080000) +#define PAD_INPUT_K (0x00100000) +#define PAD_INPUT_LL (0x00200000) +#define PAD_INPUT_N (0x00400000) +#define PAD_INPUT_O (0x00800000) +#define PAD_INPUT_P (0x01000000) +#define PAD_INPUT_RR (0x02000000) +#define PAD_INPUT_S (0x04000000) +#define PAD_INPUT_T (0x08000000) +#define PAD_INPUT_U (0x10000000) +#define PAD_INPUT_V (0x20000000) +#define PAD_INPUT_W (0x40000000) +#define PAD_INPUT_XX (0x80000000) + +#define PAD_INPUT_1 (0x00000010) +#define PAD_INPUT_2 (0x00000020) +#define PAD_INPUT_3 (0x00000040) +#define PAD_INPUT_4 (0x00000080) +#define PAD_INPUT_5 (0x00000100) +#define PAD_INPUT_6 (0x00000200) +#define PAD_INPUT_7 (0x00000400) +#define PAD_INPUT_8 (0x00000800) +#define PAD_INPUT_9 (0x00001000) +#define PAD_INPUT_10 (0x00002000) +#define PAD_INPUT_11 (0x00004000) +#define PAD_INPUT_12 (0x00008000) +#define PAD_INPUT_13 (0x00010000) +#define PAD_INPUT_14 (0x00020000) +#define PAD_INPUT_15 (0x00040000) +#define PAD_INPUT_16 (0x00080000) +#define PAD_INPUT_17 (0x00100000) +#define PAD_INPUT_18 (0x00200000) +#define PAD_INPUT_19 (0x00400000) +#define PAD_INPUT_20 (0x00800000) +#define PAD_INPUT_21 (0x01000000) +#define PAD_INPUT_22 (0x02000000) +#define PAD_INPUT_23 (0x04000000) +#define PAD_INPUT_24 (0x08000000) +#define PAD_INPUT_25 (0x10000000) +#define PAD_INPUT_26 (0x20000000) +#define PAD_INPUT_27 (0x40000000) +#define PAD_INPUT_28 (0x80000000) + +// XInputボタン入力定義 +#define XINPUT_BUTTON_DPAD_UP (0) // デジタル方向ボタン上 +#define XINPUT_BUTTON_DPAD_DOWN (1) // デジタル方向ボタン下 +#define XINPUT_BUTTON_DPAD_LEFT (2) // デジタル方向ボタン左 +#define XINPUT_BUTTON_DPAD_RIGHT (3) // デジタル方向ボタン右 +#define XINPUT_BUTTON_START (4) // STARTボタン +#define XINPUT_BUTTON_BACK (5) // BACKボタン +#define XINPUT_BUTTON_LEFT_THUMB (6) // 左スティック押し込み +#define XINPUT_BUTTON_RIGHT_THUMB (7) // 右スティック押し込み +#define XINPUT_BUTTON_LEFT_SHOULDER (8) // LBボタン +#define XINPUT_BUTTON_RIGHT_SHOULDER (9) // RBボタン +#define XINPUT_BUTTON_A (12) // Aボタン +#define XINPUT_BUTTON_B (13) // Bボタン +#define XINPUT_BUTTON_X (14) // Xボタン +#define XINPUT_BUTTON_Y (15) // Yボタン + +// マウス入力定義 +#define MOUSE_INPUT_LEFT (0x0001) // マウス左ボタン +#define MOUSE_INPUT_RIGHT (0x0002) // マウス右ボタン +#define MOUSE_INPUT_MIDDLE (0x0004) // マウス中央ボタン +#define MOUSE_INPUT_1 (0x0001) // マウス1ボタン +#define MOUSE_INPUT_2 (0x0002) // マウス2ボタン +#define MOUSE_INPUT_3 (0x0004) // マウス3ボタン +#define MOUSE_INPUT_4 (0x0008) // マウス4ボタン +#define MOUSE_INPUT_5 (0x0010) // マウス5ボタン +#define MOUSE_INPUT_6 (0x0020) // マウス6ボタン +#define MOUSE_INPUT_7 (0x0040) // マウス7ボタン +#define MOUSE_INPUT_8 (0x0080) // マウス8ボタン + +// マウスのログ情報タイプ +#define MOUSE_INPUT_LOG_DOWN (0) // ボタンを押した +#define MOUSE_INPUT_LOG_UP (1) // ボタンを離した + +// キー定義 +#define KEY_INPUT_BACK (0x0E) // BackSpaceキー D_DIK_BACK +#define KEY_INPUT_TAB (0x0F) // Tabキー D_DIK_TAB +#define KEY_INPUT_RETURN (0x1C) // Enterキー D_DIK_RETURN + +#define KEY_INPUT_LSHIFT (0x2A) // 左Shiftキー D_DIK_LSHIFT +#define KEY_INPUT_RSHIFT (0x36) // 右Shiftキー D_DIK_RSHIFT +#define KEY_INPUT_LCONTROL (0x1D) // 左Ctrlキー D_DIK_LCONTROL +#define KEY_INPUT_RCONTROL (0x9D) // 右Ctrlキー D_DIK_RCONTROL +#define KEY_INPUT_ESCAPE (0x01) // Escキー D_DIK_ESCAPE +#define KEY_INPUT_SPACE (0x39) // スペースキー D_DIK_SPACE +#define KEY_INPUT_PGUP (0xC9) // PageUpキー D_DIK_PGUP +#define KEY_INPUT_PGDN (0xD1) // PageDownキー D_DIK_PGDN +#define KEY_INPUT_END (0xCF) // Endキー D_DIK_END +#define KEY_INPUT_HOME (0xC7) // Homeキー D_DIK_HOME +#define KEY_INPUT_LEFT (0xCB) // 左キー D_DIK_LEFT +#define KEY_INPUT_UP (0xC8) // 上キー D_DIK_UP +#define KEY_INPUT_RIGHT (0xCD) // 右キー D_DIK_RIGHT +#define KEY_INPUT_DOWN (0xD0) // 下キー D_DIK_DOWN +#define KEY_INPUT_INSERT (0xD2) // Insertキー D_DIK_INSERT +#define KEY_INPUT_DELETE (0xD3) // Deleteキー D_DIK_DELETE + +#define KEY_INPUT_MINUS (0x0C) // -キー D_DIK_MINUS +#define KEY_INPUT_YEN (0x7D) // ¥キー D_DIK_YEN +#define KEY_INPUT_PREVTRACK (0x90) // ^キー D_DIK_PREVTRACK +#define KEY_INPUT_PERIOD (0x34) // .キー D_DIK_PERIOD +#define KEY_INPUT_SLASH (0x35) // /キー D_DIK_SLASH +#define KEY_INPUT_LALT (0x38) // 左Altキー D_DIK_LALT +#define KEY_INPUT_RALT (0xB8) // 右Altキー D_DIK_RALT +#define KEY_INPUT_SCROLL (0x46) // ScrollLockキー D_DIK_SCROLL +#define KEY_INPUT_SEMICOLON (0x27) // ;キー D_DIK_SEMICOLON +#define KEY_INPUT_COLON (0x92) // :キー D_DIK_COLON +#define KEY_INPUT_LBRACKET (0x1A) // [キー D_DIK_LBRACKET +#define KEY_INPUT_RBRACKET (0x1B) // ]キー D_DIK_RBRACKET +#define KEY_INPUT_AT (0x91) // @キー D_DIK_AT +#define KEY_INPUT_BACKSLASH (0x2B) // \キー D_DIK_BACKSLASH +#define KEY_INPUT_COMMA (0x33) // ,キー D_DIK_COMMA +#define KEY_INPUT_KANJI (0x94) // 漢字キー D_DIK_KANJI +#define KEY_INPUT_CONVERT (0x79) // 変換キー D_DIK_CONVERT +#define KEY_INPUT_NOCONVERT (0x7B) // 無変換キー D_DIK_NOCONVERT +#define KEY_INPUT_KANA (0x70) // カナキー D_DIK_KANA +#define KEY_INPUT_APPS (0xDD) // アプリケーションメニューキー D_DIK_APPS +#define KEY_INPUT_CAPSLOCK (0x3A) // CaspLockキー D_DIK_CAPSLOCK +#define KEY_INPUT_SYSRQ (0xB7) // PrintScreenキー D_DIK_SYSRQ +#define KEY_INPUT_PAUSE (0xC5) // PauseBreakキー D_DIK_PAUSE +#define KEY_INPUT_LWIN (0xDB) // 左Winキー D_DIK_LWIN +#define KEY_INPUT_RWIN (0xDC) // 右Winキー D_DIK_RWIN + +#define KEY_INPUT_NUMLOCK (0x45) // テンキーNumLockキー D_DIK_NUMLOCK +#define KEY_INPUT_NUMPAD0 (0x52) // テンキー0 D_DIK_NUMPAD0 +#define KEY_INPUT_NUMPAD1 (0x4F) // テンキー1 D_DIK_NUMPAD1 +#define KEY_INPUT_NUMPAD2 (0x50) // テンキー2 D_DIK_NUMPAD2 +#define KEY_INPUT_NUMPAD3 (0x51) // テンキー3 D_DIK_NUMPAD3 +#define KEY_INPUT_NUMPAD4 (0x4B) // テンキー4 D_DIK_NUMPAD4 +#define KEY_INPUT_NUMPAD5 (0x4C) // テンキー5 D_DIK_NUMPAD5 +#define KEY_INPUT_NUMPAD6 (0x4D) // テンキー6 D_DIK_NUMPAD6 +#define KEY_INPUT_NUMPAD7 (0x47) // テンキー7 D_DIK_NUMPAD7 +#define KEY_INPUT_NUMPAD8 (0x48) // テンキー8 D_DIK_NUMPAD8 +#define KEY_INPUT_NUMPAD9 (0x49) // テンキー9 D_DIK_NUMPAD9 +#define KEY_INPUT_MULTIPLY (0x37) // テンキー*キー D_DIK_MULTIPLY +#define KEY_INPUT_ADD (0x4E) // テンキー+キー D_DIK_ADD +#define KEY_INPUT_SUBTRACT (0x4A) // テンキー-キー D_DIK_SUBTRACT +#define KEY_INPUT_DECIMAL (0x53) // テンキー.キー D_DIK_DECIMAL +#define KEY_INPUT_DIVIDE (0xB5) // テンキー/キー D_DIK_DIVIDE +#define KEY_INPUT_NUMPADENTER (0x9C) // テンキーのエンターキー D_DIK_NUMPADENTER + +#define KEY_INPUT_F1 (0x3B) // F1キー D_DIK_F1 +#define KEY_INPUT_F2 (0x3C) // F2キー D_DIK_F2 +#define KEY_INPUT_F3 (0x3D) // F3キー D_DIK_F3 +#define KEY_INPUT_F4 (0x3E) // F4キー D_DIK_F4 +#define KEY_INPUT_F5 (0x3F) // F5キー D_DIK_F5 +#define KEY_INPUT_F6 (0x40) // F6キー D_DIK_F6 +#define KEY_INPUT_F7 (0x41) // F7キー D_DIK_F7 +#define KEY_INPUT_F8 (0x42) // F8キー D_DIK_F8 +#define KEY_INPUT_F9 (0x43) // F9キー D_DIK_F9 +#define KEY_INPUT_F10 (0x44) // F10キー D_DIK_F10 +#define KEY_INPUT_F11 (0x57) // F11キー D_DIK_F11 +#define KEY_INPUT_F12 (0x58) // F12キー D_DIK_F12 + +#define KEY_INPUT_A (0x1E) // Aキー D_DIK_A +#define KEY_INPUT_B (0x30) // Bキー D_DIK_B +#define KEY_INPUT_C (0x2E) // Cキー D_DIK_C +#define KEY_INPUT_D (0x20) // Dキー D_DIK_D +#define KEY_INPUT_E (0x12) // Eキー D_DIK_E +#define KEY_INPUT_F (0x21) // Fキー D_DIK_F +#define KEY_INPUT_G (0x22) // Gキー D_DIK_G +#define KEY_INPUT_H (0x23) // Hキー D_DIK_H +#define KEY_INPUT_I (0x17) // Iキー D_DIK_I +#define KEY_INPUT_J (0x24) // Jキー D_DIK_J +#define KEY_INPUT_K (0x25) // Kキー D_DIK_K +#define KEY_INPUT_L (0x26) // Lキー D_DIK_L +#define KEY_INPUT_M (0x32) // Mキー D_DIK_M +#define KEY_INPUT_N (0x31) // Nキー D_DIK_N +#define KEY_INPUT_O (0x18) // Oキー D_DIK_O +#define KEY_INPUT_P (0x19) // Pキー D_DIK_P +#define KEY_INPUT_Q (0x10) // Qキー D_DIK_Q +#define KEY_INPUT_R (0x13) // Rキー D_DIK_R +#define KEY_INPUT_S (0x1F) // Sキー D_DIK_S +#define KEY_INPUT_T (0x14) // Tキー D_DIK_T +#define KEY_INPUT_U (0x16) // Uキー D_DIK_U +#define KEY_INPUT_V (0x2F) // Vキー D_DIK_V +#define KEY_INPUT_W (0x11) // Wキー D_DIK_W +#define KEY_INPUT_X (0x2D) // Xキー D_DIK_X +#define KEY_INPUT_Y (0x15) // Yキー D_DIK_Y +#define KEY_INPUT_Z (0x2C) // Zキー D_DIK_Z + +#define KEY_INPUT_0 (0x0B) // 0キー D_DIK_0 +#define KEY_INPUT_1 (0x02) // 1キー D_DIK_1 +#define KEY_INPUT_2 (0x03) // 2キー D_DIK_2 +#define KEY_INPUT_3 (0x04) // 3キー D_DIK_3 +#define KEY_INPUT_4 (0x05) // 4キー D_DIK_4 +#define KEY_INPUT_5 (0x06) // 5キー D_DIK_5 +#define KEY_INPUT_6 (0x07) // 6キー D_DIK_6 +#define KEY_INPUT_7 (0x08) // 7キー D_DIK_7 +#define KEY_INPUT_8 (0x09) // 8キー D_DIK_8 +#define KEY_INPUT_9 (0x0A) // 9キー D_DIK_9 + +// アスキーコントロールキーコード +#define CTRL_CODE_BS (0x08) // バックスペース +#define CTRL_CODE_TAB (0x09) // タブ +#define CTRL_CODE_CR (0x0d) // 改行 +#define CTRL_CODE_DEL (0x10) // DELキー + +#define CTRL_CODE_COPY (0x03) // コピー +#define CTRL_CODE_PASTE (0x16) // ペースト +#define CTRL_CODE_CUT (0x18) // カット +#define CTRL_CODE_ALL (0x01) // 全て選択 + +#define CTRL_CODE_LEFT (0x1d) // ←キー +#define CTRL_CODE_RIGHT (0x1c) // →キー +#define CTRL_CODE_UP (0x1e) // ↑キー +#define CTRL_CODE_DOWN (0x1f) // ↓キー + +#define CTRL_CODE_HOME (0x1a) // HOMEボタン +#define CTRL_CODE_END (0x19) // ENDボタン +#define CTRL_CODE_PAGE_UP (0x17) // PAGE UP +#define CTRL_CODE_PAGE_DOWN (0x15) // PAGE DOWN + +#define CTRL_CODE_ESC (0x1b) // ESCキー +#define CTRL_CODE_CMP (0x20) // 制御コード敷居値 + +// SetKeyInputStringColor2 に渡す色変更対象を指定するための識別子 +#define DX_KEYINPSTRCOLOR_NORMAL_STR (0) // 入力文字列の色 +#define DX_KEYINPSTRCOLOR_NORMAL_STR_EDGE (1) // 入力文字列の縁の色 +#define DX_KEYINPSTRCOLOR_NORMAL_CURSOR (2) // IME非使用時のカーソルの色 +#define DX_KEYINPSTRCOLOR_SELECT_STR (3) // 入力文字列の選択部分( SHIFTキーを押しながら左右キーで選択 )の色 +#define DX_KEYINPSTRCOLOR_SELECT_STR_EDGE (4) // 入力文字列の選択部分( SHIFTキーを押しながら左右キーで選択 )の縁の色 +#define DX_KEYINPSTRCOLOR_SELECT_STR_BACK (5) // 入力文字列の選択部分( SHIFTキーを押しながら左右キーで選択 )の周りの色 +#define DX_KEYINPSTRCOLOR_IME_STR (6) // IME使用時の入力文字列の色 +#define DX_KEYINPSTRCOLOR_IME_STR_EDGE (7) // IME使用時の入力文字列の縁の色 +#define DX_KEYINPSTRCOLOR_IME_STR_BACK (8) // IME使用時の入力文字列の周りの色 +#define DX_KEYINPSTRCOLOR_IME_CURSOR (9) // IME使用時のカーソルの色 +#define DX_KEYINPSTRCOLOR_IME_LINE (10) // IME使用時の変換文字列の下線の色 +#define DX_KEYINPSTRCOLOR_IME_SELECT_STR (11) // IME使用時の選択対象の変換候補文字列の色 +#define DX_KEYINPSTRCOLOR_IME_SELECT_STR_EDGE (12) // IME使用時の選択対象の変換候補文字列の縁の色 +#define DX_KEYINPSTRCOLOR_IME_SELECT_STR_BACK (13) // IME使用時の選択対象の変換候補文字列の周りの色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_STR (14) // IME使用時の変換候補ウインドウ内の文字列の色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_STR_EDGE (15) // IME使用時の変換候補ウインドウ内の文字列の縁の色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_SELECT_STR (16) // IME使用時の変換候補ウインドウ内で選択している文字列の色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_SELECT_STR_EDGE (17) // IME使用時の変換候補ウインドウ内で選択している文字列の縁の色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_SELECT_STR_BACK (18) // IME使用時の変換候補ウインドウ内で選択している文字列の周りの色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_EDGE (19) // IME使用時の変換候補ウインドウの縁の色 +#define DX_KEYINPSTRCOLOR_IME_CONV_WIN_BACK (20) // IME使用時の変換候補ウインドウの下地の色 +#define DX_KEYINPSTRCOLOR_IME_MODE_STR (21) // IME使用時の入力モード文字列の色(『全角ひらがな』等) +#define DX_KEYINPSTRCOLOR_IME_MODE_STR_EDGE (22) // IME使用時の入力モード文字列の縁の色 +#define DX_KEYINPSTRCOLOR_NUM (23) + +// 文字列入力処理の入力文字数が限界に達している状態で、文字列の末端部分で入力が行われた場合の処理モード +#define DX_KEYINPSTR_ENDCHARAMODE_OVERWRITE (0) // 文字数が限界に達している状態で文字列の末端で文字が入力された場合は、最後の文字を上書き( デフォルト ) +#define DX_KEYINPSTR_ENDCHARAMODE_NOTCHANGE (1) // 文字数が限界に達している状態で文字列の末端で文字が入力された場合は、何も変化しない + +// フルスクリーン解像度モード定義 +#define DX_FSRESOLUTIONMODE_DESKTOP (0) // モニターの画面モードをデスクトップ画面と同じにしてDXライブラリ画面を拡大して表示するモード +#define DX_FSRESOLUTIONMODE_NATIVE (1) // モニターの解像度をDXライブラリ画面の解像度に合わせるモード +#define DX_FSRESOLUTIONMODE_MAXIMUM (2) // モニターの解像度を最大にしてDXライブラリ画面を拡大して表示するモード + +// フルスクリーン拡大モード定義 +#define DX_FSSCALINGMODE_BILINEAR (0) // バイリニアモード( ピクセルが滲んでピクセルとピクセルの区切りがはっきりしない ) +#define DX_FSSCALINGMODE_NEAREST (1) // 最近点モード( ピクセルが四角くくっきり表示される ) + +// SetGraphMode 戻り値定義 +#define DX_CHANGESCREEN_OK (0) // 画面変更は成功した +#define DX_CHANGESCREEN_RETURN (-1) // 画面の変更は失敗し、元の画面モードに戻された +#define DX_CHANGESCREEN_DEFAULT (-2) // 画面の変更は失敗しデフォルトの画面モードに変更された +#define DX_CHANGESCREEN_REFRESHNORMAL (-3) // 画面の変更は成功したが、リフレッシュレートの変更は失敗した + +// ストリームデータ読み込み処理コード簡略化関連 +#define STTELL( st ) ((st)->ReadShred.Tell( (st)->DataPoint )) +#define STSEEK( st, pos, type ) ((st)->ReadShred.Seek( (st)->DataPoint, (pos), (type) )) +#define STREAD( buf, length, num, st ) ((st)->ReadShred.Read( (buf), (length), (num), (st)->DataPoint )) +#define STWRITE( buf, length, num, st ) ((st)->ReadShred.Write( (buf), (length), (num), (st)->DataPoint )) +#define STEOF( st ) ((st)->ReadShred.Eof( (st)->DataPoint )) +#define STCLOSE( st ) ((st)->ReadShred.Close( (st)->DataPoint )) + +// ストリームデータ制御のシークタイプ定義 +#define STREAM_SEEKTYPE_SET (SEEK_SET) +#define STREAM_SEEKTYPE_END (SEEK_END) +#define STREAM_SEEKTYPE_CUR (SEEK_CUR) + +// グラフィックロード時のイメージタイプ +#define LOADIMAGE_TYPE_FILE (0) // イメージはファイルである +#define LOADIMAGE_TYPE_MEM (1) // イメージはメモリである +#define LOADIMAGE_TYPE_NONE (-1) // イメージは無い + + + +#ifndef DX_NON_NETWORK + +// HTTP エラー +#define HTTP_ERR_SERVER (0) // サーバーエラー +#define HTTP_ERR_NOTFOUND (1) // ファイルが見つからなかった +#define HTTP_ERR_MEMORY (2) // メモリ確保の失敗 +#define HTTP_ERR_LOST (3) // 途中で切断された +#define HTTP_ERR_NONE (-1) // エラーは報告されていない + +// HTTP 処理の結果 +#define HTTP_RES_COMPLETE (0) // 処理完了 +#define HTTP_RES_STOP (1) // 処理中止 +#define HTTP_RES_ERROR (2) // エラー終了 +#define HTTP_RES_NOW (-1) // 現在進行中 + +#endif // DX_NON_NETWORK + +#define DX_DEFINE_END + +// データ型定義------------------------------------------------------------------- + +// WAVEFORMATEX の定義 +#ifndef _WAVEFORMATEX_ +#define _WAVEFORMATEX_ + +struct tWAVEFORMATEX +{ + WORD wFormatTag ; // フォーマット( WAVE_FORMAT_PCM( 値は 1 ) 等 ) + WORD nChannels ; // チャンネル数 + DWORD nSamplesPerSec ; // 1秒辺りのサンプル数 + DWORD nAvgBytesPerSec ; // 1秒辺りのバイト数( PCMの場合 nSamplesPerSec * nBlockAlign ) + WORD nBlockAlign ; // 全チャンネルの1サンプルを合わせたバイト数( wBitsPerSample / 8 * nChannels ) + WORD wBitsPerSample ; // 1サンプル辺りのビット数 + WORD cbSize ; // 拡張情報のバイト数( 拡張情報が無い場合は 0 ) +} ; + +typedef tWAVEFORMATEX WAVEFORMATEX, *PWAVEFORMATEX, NEAR *NPWAVEFORMATEX, FAR *LPWAVEFORMATEX ; + +#endif // _WAVEFORMATEX_ + +// WAVEFORMAT の定義 +#ifndef WAVE_FORMAT_PCM + +struct waveformat_tag +{ + WORD wFormatTag ; // フォーマット( WAVE_FORMAT_PCM( 値は 1 ) 等 ) + WORD nChannels ; // チャンネル数 + DWORD nSamplesPerSec ; // 1秒辺りのサンプル数 + DWORD nAvgBytesPerSec ; // 1秒辺りのバイト数( PCMの場合 nSamplesPerSec * nBlockAlign ) + WORD nBlockAlign ; // 全チャンネルの1サンプルを合わせたバイト数( wBitsPerSample / 8 * nChannels ) +} ; + +typedef waveformat_tag WAVEFORMAT, *PWAVEFORMAT, NEAR *NPWAVEFORMAT, FAR *LPWAVEFORMAT ; + +#define WAVE_FORMAT_PCM 1 + +#endif // WAVE_FORMAT_PCM + +#ifndef DX_NON_NAMESPACE + +namespace DxLib +{ + +#endif // DX_NON_NAMESPACE + +#define DX_STRUCT_START + +// IME入力文字列の描画に必要な情報の内の文節情報 +typedef struct tagIMEINPUTCLAUSEDATA +{ + int Position ; // 何文字目から + int Length ; // 何文字か +} IMEINPUTCLAUSEDATA, *LPIMEINPUTCLAUSEDATA ; + +// IME入力文字列の描画に必要な情報 +typedef struct tagIMEINPUTDATA +{ + const TCHAR * InputString ; // 入力中の文字列 + + int CursorPosition ; // カーソルの入力文字列中の位置(バイト単位) + + const IMEINPUTCLAUSEDATA * ClauseData ; // 文節情報 + int ClauseNum ; // 文節情報の数 + int SelectClause ; // 選択中の分節( -1 の場合はどの文節にも属していない( 末尾にカーソルがある ) ) + + int CandidateNum ; // 変換候補の数( 0の場合は変換中ではない ) + const TCHAR ** CandidateList ; // 変換候補文字列リスト( 例:n番目の候補を描画する場合 DrawString( 0, 0, data.CandidateList[ n ], GetColor(255,255,255) ); ) + int SelectCandidate ; // 選択中の変換候補 + + int ConvertFlag ; // 文字変換中かどうか( TRUE:変換中 FALSE:変換中ではない( 文字単位でカーソルが移動できる状態 ) ) +} IMEINPUTDATA, *LPIMEINPUTDATA ; + +// 描画文字列一文字の情報 +typedef struct tagDRAWCHARINFO +{ + TCHAR Char[ 14 ] ; // 文字 + WORD Bytes ; // 文字のバイト数 + float DrawX, DrawY ; // 描画位置 + float SizeX, SizeY ; // 描画サイズ +} DRAWCHARINFO, *LPDRAWCHARINFO ; + +// 画面モード情報データ型 +typedef struct tagDISPLAYMODEDATA +{ + int Width ; // 水平解像度 + int Height ; // 垂直解像度 + int ColorBitDepth ; // 色ビット深度 + int RefreshRate ; // リフレッシュレート( -1 の場合は規定値 ) +} DISPLAYMODEDATA, *LPDISPLAYMODEDATA ; + +// タイムデータ型 +typedef struct tagDATEDATA +{ + int Year ; // 年 + int Mon ; // 月 + int Day ; // 日 + int Hour ; // 時間 + int Min ; // 分 + int Sec ; // 秒 +} DATEDATA, *LPDATEDATA ; + +// ファイル情報構造体 +typedef struct tagFILEINFO +{ + TCHAR Name[ 260 ] ; // オブジェクト名 + int DirFlag ; // ディレクトリかどうか( TRUE:ディレクトリ FALSE:ファイル ) + LONGLONG Size ; // サイズ + DATEDATA CreationTime ; // 作成日時 + DATEDATA LastWriteTime ; // 最終更新日時 +} FILEINFO, *LPFILEINFO ; + +// ファイル情報構造体( wchar_t 版 ) +typedef struct tagFILEINFOW +{ + wchar_t Name[ 260 ] ; // オブジェクト名 + int DirFlag ; // ディレクトリかどうか( TRUE:ディレクトリ FALSE:ファイル ) + LONGLONG Size ; // サイズ + DATEDATA CreationTime ; // 作成日時 + DATEDATA LastWriteTime ; // 最終更新日時 +} FILEINFOW, *LPFILEINFOW ; + +// 行列構造体 +typedef struct tagMATRIX +{ + float m[4][4] ; +} MATRIX, *LPMATRIX ; + +typedef struct tagMATRIX_D +{ + double m[4][4] ; +} MATRIX_D, *LPMATRIX_D ; + +// ベクトルデータ型 +typedef struct tagVECTOR +{ + float x, y, z ; +} VECTOR, *LPVECTOR, FLOAT3, *LPFLOAT3 ; + +typedef struct tagVECTOR_D +{ + double x, y, z ; +} VECTOR_D, *LPVECTOR_D, DOUBLE3, *LPDOUBLE3 ; + +// FLOAT2個データ型 +typedef struct tagFLOAT2 +{ + float u, v ; +} FLOAT2 ; + +// float 型のカラー値 +typedef struct tagCOLOR_F +{ + float r, g, b, a ; +} COLOR_F, *LPCOLOR_F ; + +// unsigned char 型のカラー値 +typedef struct tagCOLOR_U8 +{ + BYTE b, g, r, a ; +} COLOR_U8 ; + +// FLOAT4個データ型 +typedef struct tagFLOAT4 +{ + float x, y, z, w ; +} FLOAT4, *LPFLOAT4 ; + +// DOUBLE4個データ型 +typedef struct tagDOUBLE4 +{ + double x, y, z, w ; +} DOUBLE4, *LPDOUBLE4 ; + +// INT4個データ型 +typedef struct tagINT4 +{ + int x, y, z, w ; +} INT4 ; + +#ifndef DX_NOTUSE_DRAWFUNCTION + +// 2D描画に使用する頂点データ型(DrawPrimitive2D用) +typedef struct tagVERTEX2D +{ + VECTOR pos ; + float rhw ; + COLOR_U8 dif ; + float u, v ; +} VERTEX2D, *LPVERTEX2D ; + +// 2D描画に使用する頂点データ型(DrawPrimitive2DToShader用) +typedef struct tagVERTEX2DSHADER +{ + VECTOR pos ; + float rhw ; + COLOR_U8 dif ; + COLOR_U8 spc ; + float u, v ; + float su, sv ; +} VERTEX2DSHADER, *LPVERTEX2DSHADER ; + +// 2D描画に使用する頂点データ型(公開用) +typedef struct tagVERTEX +{ + float x, y ; + float u, v ; + unsigned char b, g, r, a ; +} VERTEX ; + +// 3D描画に使用する頂点データ型( 旧バージョンのもの ) +typedef struct tagVERTEX_3D +{ + VECTOR pos ; + unsigned char b, g, r, a ; + float u, v ; +} VERTEX_3D, *LPVERTEX_3D ; + +// 3D描画に使用する頂点データ型 +typedef struct tagVERTEX3D +{ + VECTOR pos ; // 座標 + VECTOR norm ; // 法線 + COLOR_U8 dif ; // ディフューズカラー + COLOR_U8 spc ; // スペキュラカラー + float u, v ; // テクスチャ座標 + float su, sv ; // 補助テクスチャ座標 +} VERTEX3D, *LPVERTEX3D ; + +// 3D描画に使用する頂点データ型( DrawPrimitive3DToShader用 ) +// 注意…メンバ変数に追加があるかもしれませんので、宣言時の初期化( VERTEX3DSHADER Vertex = { 0.0f, 0.0f, ... というようなもの )はしない方が良いです +typedef struct tagVERTEX3DSHADER +{ + VECTOR pos ; // 座標 + FLOAT4 spos ; // 補助座標 + VECTOR norm ; // 法線 + VECTOR tan ; // 接線 + VECTOR binorm ; // 従法線 + COLOR_U8 dif ; // ディフューズカラー + COLOR_U8 spc ; // スペキュラカラー + float u, v ; // テクスチャ座標 + float su, sv ; // 補助テクスチャ座標 +} VERTEX3DSHADER, *LPVERTEX3DSHADER ; + +// ライトパラメータ +typedef struct tagLIGHTPARAM +{ + int LightType ; // ライトのタイプ( DX_LIGHTTYPE_D3DLIGHT_POINT 等 ) + COLOR_F Diffuse ; // ディフューズカラー + COLOR_F Specular ; // スペキュラカラー + COLOR_F Ambient ; // アンビエント色 + VECTOR Position ; // 位置 + VECTOR Direction ; // 方向 + float Range ; // 有効距離 + float Falloff ; // フォールオフ 1.0f にしておくのが好ましい + float Attenuation0 ; // 距離による減衰係数0 + float Attenuation1 ; // 距離による減衰係数1 + float Attenuation2 ; // 距離による減衰係数2 + float Theta ; // スポットライトの内部コーンの照明角度( ラジアン ) + float Phi ; // スポットライトの外部コーンの照明角度 +} LIGHTPARAM ; + +// マテリアルパラメータ +typedef struct tagMATERIALPARAM +{ + COLOR_F Diffuse ; // ディフューズカラー + COLOR_F Ambient ; // アンビエントカラー + COLOR_F Specular ; // スペキュラカラー + COLOR_F Emissive ; // エミッシブカラー + float Power ; // スペキュラハイライトの鮮明度 +} MATERIALPARAM ; + +#endif // DX_NOTUSE_DRAWFUNCTION + +// ラインヒットチェック結果格納用構造体 +typedef struct tagHITRESULT_LINE +{ + int HitFlag ; // 当たったかどうか( 1:当たった 0:当たらなかった ) + VECTOR Position ; // 当たった座標 +} HITRESULT_LINE ; + +// ラインヒットチェック結果格納用構造体 +typedef struct tagHITRESULT_LINE_D +{ + int HitFlag ; // 当たったかどうか( 1:当たった 0:当たらなかった ) + VECTOR_D Position ; // 当たった座標 +} HITRESULT_LINE_D ; + +// 関数 Segment_Segment_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_SEGMENT_RESULT +{ + float SegA_SegB_MinDist_Square ; // 線分Aと線分Bが最も接近する座標間の距離の二乗 + + float SegA_MinDist_Pos1_Pos2_t ; // 線分Aと線分Bに最も接近する座標の線分Aの t ( 0.0f ~ 1.0f 、最近点座標 = ( SegAPos2 - SegAPos1 ) * t + SegAPos1 ) + float SegB_MinDist_Pos1_Pos2_t ; // 線分Bが線分Aに最も接近する座標の線分Bの t ( 0.0f ~ 1.0f 、最近点座標 = ( SegBPos2 - SegBPos1 ) * t + SegBPos1 ) + + VECTOR SegA_MinDist_Pos ; // 線分Aが線分Bに最も接近する線分A上の座標 + VECTOR SegB_MinDist_Pos ; // 線分Bが線分Aに最も接近する線分B上の座標 +} SEGMENT_SEGMENT_RESULT ; + +// 関数 Segment_Segment_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_SEGMENT_RESULT_D +{ + double SegA_SegB_MinDist_Square ; // 線分Aと線分Bが最も接近する座標間の距離の二乗 + + double SegA_MinDist_Pos1_Pos2_t ; // 線分Aと線分Bに最も接近する座標の線分Aの t ( 0.0 ~ 1.0 、最近点座標 = ( SegAPos2 - SegAPos1 ) * t + SegAPos1 ) + double SegB_MinDist_Pos1_Pos2_t ; // 線分Bが線分Aに最も接近する座標の線分Bの t ( 0.0 ~ 1.0 、最近点座標 = ( SegBPos2 - SegBPos1 ) * t + SegBPos1 ) + + VECTOR_D SegA_MinDist_Pos ; // 線分Aが線分Bに最も接近する線分A上の座標 + VECTOR_D SegB_MinDist_Pos ; // 線分Bが線分Aに最も接近する線分B上の座標 +} SEGMENT_SEGMENT_RESULT_D ; + +// 関数 Segment_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_POINT_RESULT +{ + float Seg_Point_MinDist_Square ; // 線分と点が最も接近する座標間の距離の二乗 + float Seg_MinDist_Pos1_Pos2_t ; // 線分が点に最も接近する座標の線分の t ( 0.0f ~ 1.0f 、最近点座標 = ( SegPos2 - SegPos1 ) * t + SegPos1 ) + VECTOR Seg_MinDist_Pos ; // 線分が点に最も接近する線分上の座標 +} SEGMENT_POINT_RESULT ; + +// 関数 Segment_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_POINT_RESULT_D +{ + double Seg_Point_MinDist_Square ; // 線分と点が最も接近する座標間の距離の二乗 + double Seg_MinDist_Pos1_Pos2_t ; // 線分が点に最も接近する座標の線分の t ( 0.0 ~ 1.0 、最近点座標 = ( SegPos2 - SegPos1 ) * t + SegPos1 ) + VECTOR_D Seg_MinDist_Pos ; // 線分が点に最も接近する線分上の座標 +} SEGMENT_POINT_RESULT_D ; + +// 関数 Segment_Triangle_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_TRIANGLE_RESULT +{ + float Seg_Tri_MinDist_Square ; // 線分と三角形が最も接近する座標間の距離の二乗 + + float Seg_MinDist_Pos1_Pos2_t ; // 線分が三角形に最も接近する座標の線分の t ( 0.0f ~ 1.0f 、最近点座標 = ( SegPos2 - SegPos1 ) * t + SegPos1 ) + VECTOR Seg_MinDist_Pos ; // 線分が三角形に最も接近する線分上の座標 + + float Tri_MinDist_Pos1_w ; // 三角形が線分に最も接近する座標の三角形座標1の重み( 最近点座標 = TriPos1 * TriPos1_w + TriPos2 * TriPos2_w + TriPos3 * TriPos3_w ) + float Tri_MinDist_Pos2_w ; // 三角形が線分に最も接近する座標の三角形座標2の重み + float Tri_MinDist_Pos3_w ; // 三角形が線分に最も接近する座標の三角形座標3の重み + VECTOR Tri_MinDist_Pos ; // 三角形が線分に最も接近する三角形上の座標 +} SEGMENT_TRIANGLE_RESULT ; + +// 関数 Segment_Triangle_Analyse の結果を受け取る為の構造体 +typedef struct tagSEGMENT_TRIANGLE_RESULT_D +{ + double Seg_Tri_MinDist_Square ; // 線分と三角形が最も接近する座標間の距離の二乗 + + double Seg_MinDist_Pos1_Pos2_t ; // 線分が三角形に最も接近する座標の線分の t ( 0.0 ~ 1.0 、最近点座標 = ( SegPos2 - SegPos1 ) * t + SegPos1 ) + VECTOR_D Seg_MinDist_Pos ; // 線分が三角形に最も接近する線分上の座標 + + double Tri_MinDist_Pos1_w ; // 三角形が線分に最も接近する座標の三角形座標1の重み( 最近点座標 = TriPos1 * TriPos1_w + TriPos2 * TriPos2_w + TriPos3 * TriPos3_w ) + double Tri_MinDist_Pos2_w ; // 三角形が線分に最も接近する座標の三角形座標2の重み + double Tri_MinDist_Pos3_w ; // 三角形が線分に最も接近する座標の三角形座標3の重み + VECTOR_D Tri_MinDist_Pos ; // 三角形が線分に最も接近する三角形上の座標 +} SEGMENT_TRIANGLE_RESULT_D ; + +// 関数 Triangle_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagTRIANGLE_POINT_RESULT +{ + float Tri_Pnt_MinDist_Square ; // 三角形と点が最も接近する座標間の距離の二乗 + + float Tri_MinDist_Pos1_w ; // 三角形が点に最も接近する座標の三角形座標1の重み( 最近点座標 = TriPos1 * TriPos1_w + TriPos2 * TriPos2_w + TriPos3 * TriPos3_w ) + float Tri_MinDist_Pos2_w ; // 三角形が点に最も接近する座標の三角形座標2の重み + float Tri_MinDist_Pos3_w ; // 三角形が点に最も接近する座標の三角形座標3の重み + VECTOR Tri_MinDist_Pos ; // 三角形が点に最も接近する三角形上の座標 +} TRIANGLE_POINT_RESULT ; + +// 関数 Triangle_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagTRIANGLE_POINT_RESULT_D +{ + double Tri_Pnt_MinDist_Square ; // 三角形と点が最も接近する座標間の距離の二乗 + + double Tri_MinDist_Pos1_w ; // 三角形が点に最も接近する座標の三角形座標1の重み( 最近点座標 = TriPos1 * TriPos1_w + TriPos2 * TriPos2_w + TriPos3 * TriPos3_w ) + double Tri_MinDist_Pos2_w ; // 三角形が点に最も接近する座標の三角形座標2の重み + double Tri_MinDist_Pos3_w ; // 三角形が点に最も接近する座標の三角形座標3の重み + VECTOR_D Tri_MinDist_Pos ; // 三角形が点に最も接近する三角形上の座標 +} TRIANGLE_POINT_RESULT_D ; + +// 関数 Plane_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagPLANE_POINT_RESULT +{ + int Pnt_Plane_Normal_Side ; // 点が平面の法線の側にあるかどうか( 1:法線の側にある 0:法線と反対側にある ) + float Plane_Pnt_MinDist_Square ; // 平面と点の距離 + VECTOR Plane_MinDist_Pos ; // 平面上の点との最近点座標 +} PLANE_POINT_RESULT ; + +// 関数 Plane_Point_Analyse の結果を受け取る為の構造体 +typedef struct tagPLANE_POINT_RESULT_D +{ + int Pnt_Plane_Normal_Side ; // 点が平面の法線の側にあるかどうか( 1:法線の側にある 0:法線と反対側にある ) + double Plane_Pnt_MinDist_Square ; // 平面と点の距離 + VECTOR_D Plane_MinDist_Pos ; // 平面上の点との最近点座標 +} PLANE_POINT_RESULT_D ; + +#ifndef DX_NOTUSE_DRAWFUNCTION + +// コリジョン結果代入用ポリゴン +typedef struct tagMV1_COLL_RESULT_POLY +{ + int HitFlag ; // ( MV1CollCheck_Line でのみ有効 )ヒットフラグ( 1:ヒットした 0:ヒットしなかった ) + VECTOR HitPosition ; // ( MV1CollCheck_Line でのみ有効 )ヒット座標 + + int FrameIndex ; // 当たったポリゴンが含まれるフレームの番号 + int MeshIndex ; // 当たったポリゴンが含まれるメッシュの番号( メッシュ単位で判定した場合のみ有効 ) + int PolygonIndex ; // 当たったポリゴンの番号 + int MaterialIndex ; // 当たったポリゴンが使用しているマテリアルの番号 + VECTOR Position[ 3 ] ; // 当たったポリゴンを形成する三点の座標 + VECTOR Normal ; // 当たったポリゴンの法線 + float PositionWeight[ 3 ] ; // 当たった座標は、当たったポリゴンの三点それぞれどの割合で影響しているか、の値( 当たった座標 = Position[ 0 ] * PositionWeight[ 0 ] + Position[ 1 ] * PositionWeight[ 1 ] + Position[ 2 ] * PositionWeight[ 2 ] ) + int PosMaxWeightFrameIndex[ 3 ] ; // 当たったポリゴンの座標がそれぞれ最も影響を受けているフレームの番号 +} MV1_COLL_RESULT_POLY ; + +// コリジョン結果代入用ポリゴン配列 +typedef struct tagMV1_COLL_RESULT_POLY_DIM +{ + int HitNum ; // ヒットしたポリゴンの数 + MV1_COLL_RESULT_POLY * Dim ; // ヒットしたポリゴンの配列( HitNum個分存在する ) +} MV1_COLL_RESULT_POLY_DIM ; + +// 参照用頂点構造体 +typedef struct tagMV1_REF_VERTEX +{ + VECTOR Position ; // 位置 + VECTOR Normal ; // 法線 + FLOAT2 TexCoord[ 2 ] ; // テクスチャ座標 + COLOR_U8 DiffuseColor ; // ディフューズカラー + COLOR_U8 SpecularColor ; // スペキュラカラー + int MaxWeightFrameIndex ; // 最も大きな影響を与えているフレーム( スキニングメッシュ用 ) +} MV1_REF_VERTEX ; + +// 参照用ポリゴン構造体 +typedef struct tagMV1_REF_POLYGON +{ + unsigned short FrameIndex ; // このポリゴンが属しているフレーム + unsigned short MeshIndex ; // このポリゴンが属しているメッシュ + unsigned short MaterialIndex ; // 使用しているマテリアル + unsigned short VIndexTarget ; // VIndex が指すインデックスの参照先( 1:フレーム 0:モデル全体 ) + int VIndex[ 3 ] ; // 3角形ポリゴンを成す参照頂点のインデックス + VECTOR MinPosition ; // ポリゴンを成す頂点座標の最小値 + VECTOR MaxPosition ; // ポリゴンを成す頂点座標の最大値 +} MV1_REF_POLYGON ; + +// 参照用ポリゴンデータ構造体 +typedef struct tagMV1_REF_POLYGONLIST +{ + int PolygonNum ; // 参照用ポリゴンの数 + int VertexNum ; // 頂点の数 + VECTOR MinPosition ; // 頂点座標の最小値 + VECTOR MaxPosition ; // 頂点座標の最大値 + MV1_REF_POLYGON * Polygons ; // 参照用ポリゴン配列 + MV1_REF_VERTEX * Vertexs ; // 参照用頂点配列 +} MV1_REF_POLYGONLIST ; + +#endif // DX_NOTUSE_DRAWFUNCTION + + + + +// 3Dサウンドリバーブエフェクトパラメータ構造体 +// ( 注釈は MSDN の XAUDIO2FX_REVERB_PARAMETERS 構造体の解説をほぼ引用しています ) +typedef struct tagSOUND3D_REVERB_PARAM +{ + float WetDryMix ; // リバーブとなる出力の割合( 指定可能範囲 0.0f ~ 100.0f ) + + unsigned int ReflectionsDelay ; // ダイレクト パスに対する初期反射の遅延時間、単位はミリ秒( 指定可能範囲 0 ~ 300 ) + BYTE ReverbDelay ; // 初期反射に対するリバーブの遅延時間、単位はミリ秒( 指定可能範囲 0 ~ 85 ) + BYTE RearDelay ; // 左後方出力および右後方出力の遅延時間、単位はミリ秒( 指定可能範囲 0 ~ 5 ) + + BYTE PositionLeft ; // シミュレーション空間における視聴者に対する左入力の位置( 指定可能範囲 0 ~ 30 ) + // PositionLeft を最小値に設定した場合、左入力は視聴者の近くに配置されます。 + // この位置では、サウンド フィールドにおいて初期反射が優勢になり、残響減衰は弱まって、振幅が小さくなります。 + // PositionLeft を最大値に設定した場合、左入力はシミュレーション室内で視聴者から最大限遠い位置に配置されます。 + // PositionLeft は残響減衰時間 (部屋の残響効果) に影響せず、視聴者に対する音源の見かけの位置のみに影響します。 + BYTE PositionRight ; // PositionLeft と同効果の右入力値( 指定可能範囲 0 ~ 30 )、右入力にのみ影響を与える + BYTE PositionMatrixLeft ; // 音源から視聴者までの距離によるインプレッションを増減させる値( 指定可能範囲 0 ~ 30 ) + BYTE PositionMatrixRight ; // 音源から視聴者までの距離によるインプレッションを増減させま値( 指定可能範囲 0 ~ 30 ) + BYTE EarlyDiffusion ; // 個々の壁の反射特性値( 指定可能範囲 0 ~ 15 )、( 堅く平らな表面をシミュレートするには小さな値を設定し、散乱性の表面をシミュレートするには大きな値を設定します。) + BYTE LateDiffusion ; // 個々の壁のリバーブ特性値( 指定可能範囲 0 ~ 15 )、( 堅く平らな表面をシミュレートするには小さな値を設定し、散乱性の表面をシミュレートするには大きな値を設定します。) + BYTE LowEQGain ; // 1 kHz における減衰時間を基準にして低周波数の減衰時間調整値( 指定可能範囲 0 ~ 12 ) + // 値とゲイン (dB) の関係 + // 値 0 1 2 3 4 5 6 7 8 9 10 11 12 + // ゲイン(dB) -8 -7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 + // LowEQGain の値が 8 の場合、低周波数の減衰時間と 1 kHz における減衰時間が等しくなることに注意してください + BYTE LowEQCutoff ; // LowEQGain パラメーターにより制御されるローパス フィルターの折点周波数の設定値( 指定可能範囲 0 ~ 9 ) + // 値と周波数 (Hz) の関係 + // 値 0 1 2 3 4 5 6 7 8 9 + // 周波数(Hz) 50 100 150 200 250 300 350 400 450 500 + BYTE HighEQGain ; // 1 kHz における減衰時間を基準にして高周波数の減衰時間調整値( 指定可能範囲 0 ~ 8 ) + // 値とゲイン (dB) の関係 + // 値 0 1 2 3 4 5 6 7 8 + // ゲイン(dB) -8 -7 -6 -5 -4 -3 -2 -1 0 + // 0 に設定すると、高周波数の音が 1 kHz の場合と同じ割合で減衰します。最大値に設定すると、高周波数の音が 1 kHz の場合よりもはるかに高い割合で減衰します。 + BYTE HighEQCutoff ; // HighEQGain パラメーターにより制御されるハイパス フィルターの折点周波数設定値( 指定可能範囲 0 ~ 14 ) + // 値と周波数 (kHz) の関係 + // 値 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + // 周波数(kHz) 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 + + float RoomFilterFreq ; // 室内エフェクトのローパス フィルターの折点周波数、単位は Hz ( 指定可能範囲 20.0f ~ 20000.0f ) + float RoomFilterMain ; // 初期反射と後期フィールド残響の両方に適用されるローパス フィルターのパス バンド強度レベル、単位は dB ( 指定可能範囲 -100.0f ~ 0.0f ) + float RoomFilterHF ; // 折点周波数 (RoomFilterFreq) での初期反射と後期フィールド残響の両方に適用されるローパス フィルターのパス バンド強度レベル、単位は dB ( 指定可能範囲 -100.0f ~ 0.0f ) + float ReflectionsGain ; // 初期反射の強度/レベルを調整値、単位は dB ( 指定可能範囲 -100.0f ~ 20.0f ) + float ReverbGain ; // リバーブの強度/レベルを調整値、単位は dB ( 指定可能範囲 -100.0f ~ 20.0f ) + float DecayTime ; // 1 kHz における残響減衰時間、単位は秒 ( 指定可能範囲 0.1f ~ 上限値特になし )、これは、フル スケールの入力信号が 60 dB 減衰するまでの時間です。 + float Density ; // 後期フィールド残響のモード密度を制御値、単位はパーセント( 指定可能範囲 0.0f ~ 100.0f ) + // 無色 (colorless) の空間では、Density を最大値 (100.0f ) に設定する必要があります。 + // Density を小さくすると、サウンドはくぐもった音 (くし形フィルターが適用された音) になります。 + // これはサイロをシミュレーションするときに有効なエフェクトです。 + float RoomSize ; // 音響空間の見かけ上のサイズ、単位はフィート( 指定可能範囲 1.0f (30.48 cm) ~ 100.0f (30.48 m) ) +} SOUND3D_REVERB_PARAM ; + + + + + +// ストリームデータ制御用関数ポインタ構造体タイプ2 +typedef struct tagSTREAMDATASHREDTYPE2 +{ + DWORD_PTR (*Open )( const TCHAR *Path, int UseCacheFlag, int BlockReadFlag, int UseASyncReadFlag ) ; + int (*Close )( DWORD_PTR Handle ) ; + LONGLONG (*Tell )( DWORD_PTR Handle ) ; + int (*Seek )( DWORD_PTR Handle, LONGLONG SeekPoint, int SeekType ) ; + size_t (*Read )( void *Buffer, size_t BlockSize, size_t DataNum, DWORD_PTR Handle ) ; + int (*Eof )( DWORD_PTR Handle ) ; + int (*IdleCheck )( DWORD_PTR Handle ) ; + int (*ChDir )( const TCHAR *Path ) ; + int (*GetDir )( TCHAR *Buffer ) ; + int (*GetDirS )( TCHAR *Buffer, size_t BufferSize ) ; + DWORD_PTR (*FindFirst )( const TCHAR *FilePath, FILEINFO *Buffer ) ; // 戻り値: -1=エラー -1以外=FindHandle + int (*FindNext )( DWORD_PTR FindHandle, FILEINFO *Buffer ) ; // 戻り値: -1=エラー 0=成功 + int (*FindClose )( DWORD_PTR FindHandle ) ; // 戻り値: -1=エラー 0=成功 +} STREAMDATASHREDTYPE2 ; + +// ストリームデータ制御用関数ポインタ構造体タイプ2の wchar_t 使用版 +typedef struct tagSTREAMDATASHREDTYPE2W +{ + DWORD_PTR (*Open )( const wchar_t *Path, int UseCacheFlag, int BlockReadFlag, int UseASyncReadFlag ) ; + int (*Close )( DWORD_PTR Handle ) ; + LONGLONG (*Tell )( DWORD_PTR Handle ) ; + int (*Seek )( DWORD_PTR Handle, LONGLONG SeekPoint, int SeekType ) ; + size_t (*Read )( void *Buffer, size_t BlockSize, size_t DataNum, DWORD_PTR Handle ) ; + int (*Eof )( DWORD_PTR Handle ) ; + int (*IdleCheck )( DWORD_PTR Handle ) ; + int (*IsDXA )( DWORD_PTR Handle ) ; // 戻り値: -1=エラー 0=DXアーカイブファイル内のファイルではない 1=DXアーカイブファイル内のファイル + int (*ChDir )( const wchar_t *Path ) ; + int (*GetDir )( wchar_t *Buffer ) ; + int (*GetDirS )( wchar_t *Buffer, size_t BufferSize ) ; + DWORD_PTR (*FindFirst )( const wchar_t *FilePath, FILEINFOW *Buffer ) ; // 戻り値: -1=エラー -1以外=FindHandle + int (*FindNext )( DWORD_PTR FindHandle, FILEINFOW *Buffer ) ; // 戻り値: -1=エラー 0=成功 + int (*FindClose )( DWORD_PTR FindHandle ) ; // 戻り値: -1=エラー 0=成功 +} STREAMDATASHREDTYPE2W ; + +// ストリームデータ制御用関数ポインタ構造体 +typedef struct tagSTREAMDATASHRED +{ + LONGLONG (*Tell )( DWORD_PTR StreamDataPoint ) ; + int (*Seek )( DWORD_PTR StreamDataPoint, LONGLONG SeekPoint, int SeekType ) ; + size_t (*Read )( void *Buffer, size_t BlockSize, size_t DataNum, DWORD_PTR StreamDataPoint ) ; +// size_t (*Write )( void *Buffer, size_t BlockSize, size_t DataNum, DWORD_PTR StreamDataPoint ) ; + int (*Eof )( DWORD_PTR StreamDataPoint ) ; + int (*IdleCheck )( DWORD_PTR StreamDataPoint ) ; + int (*Close )( DWORD_PTR StreamDataPoint ) ; +} STREAMDATASHRED, *LPSTREAMDATASHRED ; + +// ストリームデータ制御用データ構造体 +typedef struct tagSTREAMDATA +{ + STREAMDATASHRED ReadShred ; + DWORD_PTR DataPoint ; +} STREAMDATA ; + + + + + +// パレット情報構造体 +typedef struct tagCOLORPALETTEDATA +{ + unsigned char Blue ; + unsigned char Green ; + unsigned char Red ; + unsigned char Alpha ; +} COLORPALETTEDATA ; + +// カラー構造情報構造体 +typedef struct tagCOLORDATA +{ + unsigned char Format ; // フォーマット( DX_BASEIMAGE_FORMAT_NORMAL 等 ) + + unsigned char ChannelNum ; // チャンネル数 + unsigned char ChannelBitDepth ; // 1チャンネル辺りのビット深度 + unsigned char FloatTypeFlag ; // 浮動小数点型かどうか( TRUE:浮動小数点型 FALSE:整数型 ) + unsigned char PixelByte ; // 1ピクセルあたりのバイト数 + + // 以下は ChannelNum 又は ChannelBitDepth が 0 の時のみ有効 + unsigned char ColorBitDepth ; // ビット深度 + unsigned char NoneLoc, NoneWidth ; // 使われていないビットのアドレスと幅 + unsigned char RedWidth, GreenWidth, BlueWidth, AlphaWidth ; // 各色のビット幅 + unsigned char RedLoc , GreenLoc , BlueLoc , AlphaLoc ; // 各色の配置されているビットアドレス + unsigned int RedMask , GreenMask , BlueMask , AlphaMask ; // 各色のビットマスク + unsigned int NoneMask ; // 使われていないビットのマスク + int MaxPaletteNo ; // 使用しているパレット番号の最大値( 0 の場合は 255 とみなす ) + + // memo : ここより上にメンバー変数を追加したら DxBaseImage.cpp の NS_GraphColorMatchBltVer2 のアセンブラでのパレットデータ参照のリテラル値を修正する必要あり + COLORPALETTEDATA Palette[ 256 ] ; // パレット( ColorBitDepth が8以下の場合のみ有効 ) +} COLORDATA, *LPCOLORDATA ; + +// 基本イメージデータ構造体 +typedef struct tagBASEIMAGE +{ + COLORDATA ColorData ; // 色情報 + int Width, Height, Pitch ; // 幅、高さ、ピッチ + void *GraphData ; // グラフィックイメージ + int MipMapCount ; // ミップマップの数 + int GraphDataCount ; // グラフィックイメージの数 +} BASEIMAGE, GRAPHIMAGE, *LPGRAPHIMAGE ; + +// ラインデータ型 +typedef struct tagLINEDATA +{ + int x1, y1, x2, y2 ; // 座標 + unsigned int color ; // 色 + int pal ; // パラメータ +} LINEDATA, *LPLINEDATA ; + +// 座標データ型 +typedef struct tagPOINTDATA +{ + int x, y ; // 座標 + unsigned int color ; // 色 + int pal ; // パラメータ +} POINTDATA, *LPPOINTDATA ; + +#ifndef DX_NOTUSE_DRAWFUNCTION + +// イメージフォーマットデータ +typedef struct tagIMAGEFORMATDESC +{ + unsigned char TextureFlag ; // テクスチャか、フラグ( TRUE:テクスチャ FALSE:標準サーフェス ) + unsigned char CubeMapTextureFlag ; // キューブマップテクスチャか、フラグ( TRUE:キューブマップテクスチャ FALSE:それ以外 ) + unsigned char AlphaChFlag ; // αチャンネルはあるか、フラグ ( TRUE:ある FALSE:ない ) + unsigned char DrawValidFlag ; // 描画可能か、フラグ( TRUE:可能 FALSE:不可能 ) + unsigned char SystemMemFlag ; // システムメモリ上に存在しているか、フラグ( TRUE:システムメモリ上 FALSE:VRAM上 )( 標準サーフェスの時のみ有効 ) + unsigned char UseManagedTextureFlag ; // マネージドテクスチャを使用するか、フラグ + unsigned char UseLinearMapTextureFlag ; // テクスチャのメモリデータ配置にリニアが選択できる場合はデータ配置方式をリニアにするかどうか( TRUE:リニアが可能な場合はリニアにする FALSE:リニアが可能な場合も特にリニアを指定しない ) + unsigned char PlatformTextureFormat ; // 環境依存のテクスチャフォーマットを直接指定するために使用するための変数( DX_TEXTUREFORMAT_DIRECT3D9_R8G8B8 など ) + + unsigned char BaseFormat ; // 基本フォーマット( DX_BASEIMAGE_FORMAT_NORMAL 等 ) + unsigned char MipMapCount ; // ミップマップの数 + unsigned char AlphaTestFlag ; // αテストチャンネルはあるか、フラグ( TRUE:ある FALSE:ない )( テクスチャの場合のみ有効 ) + unsigned char FloatTypeFlag ; // 浮動小数点型かどうか + unsigned char ColorBitDepth ; // 色深度( テクスチャの場合のみ有効 ) + unsigned char ChannelNum ; // チャンネルの数 + unsigned char ChannelBitDepth ; // 1チャンネル辺りのビット深度( テクスチャの場合のみ有効、0 の場合は ColorBitDepth が使用される ) + unsigned char BlendGraphFlag ; // ブレンド用画像か、フラグ + unsigned char UsePaletteFlag ; // パレットを使用しているか、フラグ( SystemMemFlag が TRUE の場合のみ有効 ) + + unsigned char MSSamples ; // マルチサンプリング数( 描画対象の場合使用 ) + unsigned char MSQuality ; // マルチサンプリングクオリティ( 描画対象の場合使用 ) +} IMAGEFORMATDESC ; + +#endif // DX_NOTUSE_DRAWFUNCTION + +// DirectInput のジョイパッド入力情報 +typedef struct tagDINPUT_JOYSTATE +{ + int X ; // スティックのX軸パラメータ( -1000~1000 ) + int Y ; // スティックのY軸パラメータ( -1000~1000 ) + int Z ; // スティックのZ軸パラメータ( -1000~1000 ) + int Rx ; // スティックのX軸回転パラメータ( -1000~1000 ) + int Ry ; // スティックのY軸回転パラメータ( -1000~1000 ) + int Rz ; // スティックのZ軸回転パラメータ( -1000~1000 ) + int Slider[ 2 ] ; // スライダー二つ( 0~65535 ) + unsigned int POV[ 4 ] ; // ハットスイッチ4つ( 0xffffffff:入力なし 0:上 4500:右上 9000:右 13500:右下 18000:下 22500:左下 27000:左 31500:左上 ) + unsigned char Buttons[ 32 ] ; // ボタン32個( 押されたボタンは 128 になる ) +} DINPUT_JOYSTATE ; + +// XInput のジョイパッド入力情報 +typedef struct tagXINPUT_STATE +{ + unsigned char Buttons[ 16 ] ; // ボタン16個( 添字には XINPUT_BUTTON_DPAD_UP 等を使用する、0:押されていない 1:押されている ) + unsigned char LeftTrigger ; // 左トリガー( 0~255 ) + unsigned char RightTrigger ; // 右トリガー( 0~255 ) + short ThumbLX ; // 左スティックの横軸値( -32768 ~ 32767 ) + short ThumbLY ; // 左スティックの縦軸値( -32768 ~ 32767 ) + short ThumbRX ; // 右スティックの横軸値( -32768 ~ 32767 ) + short ThumbRY ; // 右スティックの縦軸値( -32768 ~ 32767 ) +} XINPUT_STATE ; + +// タッチパネルの1箇所分のタッチの情報 +typedef struct tagTOUCHINPUTPOINT +{ + DWORD Device ; // タッチされたデバイス + DWORD ID ; // タッチを判別するためのID + int PositionX ; // タッチされた座標X + int PositionY ; // タッチされた座標Y +} TOUCHINPUTPOINT ; + +// タッチパネルのタッチの情報 +typedef struct tagTOUCHINPUTDATA +{ + LONGLONG Time ; // 情報の時間 + + int PointNum ; // 有効なタッチ情報の数 + TOUCHINPUTPOINT Point[ TOUCHINPUTPOINT_MAX ] ; // タッチ情報 +} TOUCHINPUTDATA ; + + + + + + +// WinSockets使用時のアドレス指定用構造体 +typedef struct tagIPDATA +{ + unsigned char d1, d2, d3, d4 ; // アドレス値 +} IPDATA, *LPIPDATA ; + +typedef struct tagIPDATA_IPv6 +{ + union + { + unsigned char Byte[ 16 ] ; + unsigned short Word[ 8 ] ; + } ; + unsigned long ScopeID ; +} IPDATA_IPv6 ; + +#define DX_STRUCT_END + + +#ifndef DX_NON_NAMESPACE + +} + +#endif // DX_NON_NAMESPACE + +// 関数プロトタイプ宣言------------------------------------------------------------------ + +#ifdef WINDOWS_DESKTOP_OS +#include "DxFunctionWin.h" +#endif // WINDOWS_DESKTOP_OS + +#ifdef __ANDROID__ +#include "DxFunctionAndroid.h" +#endif // __ANDROID__ + +#ifdef __APPLE__ + #include "TargetConditionals.h" + #if TARGET_OS_IPHONE + #include "DxFunctioniOS.h" + #endif +#endif // __APPLE__ + +#define DXLIBAPI + + + + + + +#ifndef DX_NON_NAMESPACE + +namespace DxLib +{ + +#endif // DX_NON_NAMESPACE + +#define DX_FUNCTION_START + +// DxSystem.cpp関数プロトタイプ宣言 + +// 初期化終了系関数 +extern DXLIBAPI int DxLib_Init( void ) ; // ライブラリ初期化を行う +extern DXLIBAPI int DxLib_End( void ) ; // ライブラリ使用の後始末を行う + +extern DXLIBAPI int DxLib_GlobalStructInitialize( void ) ; // ライブラリの内部で使用している構造体をゼロ初期化して、DxLib_Init の前に行った設定を無効化する( DxLib_Init の前でのみ有効 ) +extern DXLIBAPI int DxLib_IsInit( void ) ; // ライブラリが初期化されているかどうかを取得する( 戻り値: TRUE=初期化されている FALSE=されていない ) + +// エラー関係関数 +extern DXLIBAPI int GetLastErrorCode( void ) ; // 最後に発生したエラーのエラーコードを取得する( 戻り値 0:エラーが発生していない、又はエラーコード出力に対応したエラーが発生していない  0以外:エラーコード、DX_ERRORCODE_WIN_DESKTOP_24BIT_COLOR など ) +extern DXLIBAPI int GetLastErrorMessage( TCHAR *StringBuffer, int StringBufferBytes ) ; // 最後に発生したエラーのエラーメッセージを指定の文字列バッファに取得する + +// メッセージ処理関数 +extern DXLIBAPI int ProcessMessage( void ) ; // ウインドウズのメッセージループに代わる処理を行う + +// 設定系関数 +extern DXLIBAPI int SetAlwaysRunFlag( int Flag ) ; // アプリが非アクティブ状態でも処理を実行するかどうかを設定する( TRUE:実行する FALSE:停止する( デフォルト ) ) + +// ウエイト系関数 +extern DXLIBAPI int WaitTimer( int WaitTime ) ; // 指定の時間だけ処理をとめる +#ifndef DX_NON_INPUT +extern DXLIBAPI int WaitKey( void ) ; // キーの入力待ちを行う +#endif // DX_NON_INPUT + +// カウンタ及び時刻取得系関数 +extern DXLIBAPI int GetNowCount( int UseRDTSCFlag = FALSE ) ; // ミリ秒単位の精度を持つカウンタの現在の値を得る +extern DXLIBAPI LONGLONG GetNowHiPerformanceCount( int UseRDTSCFlag = FALSE ) ; // GetNowCountの高精度バージョン( μ秒単位の精度を持つカウンタの現在の値を得る ) +extern DXLIBAPI ULONGLONG GetNowSysPerformanceCount( void ) ; // OSが提供する高精度カウンタの現在の値を得る +extern DXLIBAPI ULONGLONG GetSysPerformanceFrequency( void ) ; // OSが提供する高精度カウンタの周波数( 1秒辺りのカウント数 )を得る +extern DXLIBAPI ULONGLONG ConvSysPerformanceCountToSeconds( ULONGLONG Count ) ; // OSが提供する高精度カウンタの値を秒の値に変換する +extern DXLIBAPI ULONGLONG ConvSysPerformanceCountToMilliSeconds( ULONGLONG Count ) ; // OSが提供する高精度カウンタの値をミリ秒の値に変換する +extern DXLIBAPI ULONGLONG ConvSysPerformanceCountToMicroSeconds( ULONGLONG Count ) ; // OSが提供する高精度カウンタの値をマイクロ秒の値に変換する +extern DXLIBAPI ULONGLONG ConvSysPerformanceCountToNanoSeconds( ULONGLONG Count ) ; // OSが提供する高精度カウンタの値をナノ秒の値に変換する +extern DXLIBAPI ULONGLONG ConvSecondsToSysPerformanceCount( ULONGLONG Seconds ) ; // 秒の値をOSが提供する高精度カウンタの値に変換する +extern DXLIBAPI ULONGLONG ConvMilliSecondsToSysPerformanceCount( ULONGLONG MilliSeconds ) ; // ミリ秒の値をOSが提供する高精度カウンタの値に変換する +extern DXLIBAPI ULONGLONG ConvMicroSecondsToSysPerformanceCount( ULONGLONG MicroSeconds ) ; // マイクロ秒の値をOSが提供する高精度カウンタの値に変換する +extern DXLIBAPI ULONGLONG ConvNanoSecondsToSysPerformanceCount( ULONGLONG NanoSeconds ) ; // ナノ秒の値をOSが提供する高精度カウンタの値に変換する +extern DXLIBAPI int GetDateTime( DATEDATA *DateBuf ) ; // 現在時刻を取得する + +// 乱数取得 +extern DXLIBAPI int GetRand( int RandMax ) ; // 乱数を取得する( RandMax : 返って来る値の最大値 ) +extern DXLIBAPI int SRand( int Seed ) ; // 乱数の初期値を設定する + +// バッテリー関連 +extern DXLIBAPI int GetBatteryLifePercent( void ) ; // 電池の残量を % で取得する( 戻り値: 100=フル充電状態 0=充電残量無し ) + +// クリップボード関係 +extern DXLIBAPI int GetClipboardText( TCHAR *DestBuffer ) ; // クリップボードに格納されているテキストデータを読み出す( DestBuffer:文字列を格納するバッファの先頭アドレス 戻り値 -1:クリップボードにテキストデータが無い -1以外:クリップボードに格納されている文字列データのサイズ( 単位:byte ) ) +extern DXLIBAPI int SetClipboardText( const TCHAR *Text ) ; // クリップボードにテキストデータを格納する +extern DXLIBAPI int SetClipboardTextWithStrLen( const TCHAR *Text, size_t TextLength ) ; // クリップボードにテキストデータを格納する + +// iniファイル関係 +extern DXLIBAPI int GetPrivateProfileStringDx( const TCHAR *AppName, const TCHAR *KeyName, const TCHAR *Default, TCHAR *ReturnedStringBuffer, size_t ReturnedStringBufferBytes, const TCHAR *IniFilePath, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileString のDXライブラリ版 +extern DXLIBAPI int GetPrivateProfileStringDxWithStrLen( const TCHAR *AppName, size_t AppNameLength, const TCHAR *KeyName, size_t KeyNameLength, const TCHAR *Default, size_t DefaultLength, TCHAR *ReturnedStringBuffer, size_t ReturnedStringBufferBytes, const TCHAR *IniFilePath, size_t IniFilePathLength, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileString のDXライブラリ版 +extern DXLIBAPI int GetPrivateProfileIntDx( const TCHAR *AppName, const TCHAR *KeyName, int Default, const TCHAR *IniFilePath, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileInt のDXライブラリ版 +extern DXLIBAPI int GetPrivateProfileIntDxWithStrLen( const TCHAR *AppName, size_t AppNameLength, const TCHAR *KeyName, size_t KeyNameLength, int Default, const TCHAR *IniFilePath, size_t IniFilePathLength, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileInt のDXライブラリ版 +extern DXLIBAPI int GetPrivateProfileStringDxForMem( const TCHAR *AppName, const TCHAR *KeyName, const TCHAR *Default, TCHAR *ReturnedStringBuffer, size_t ReturnedStringBufferBytes, const void *IniFileImage, size_t IniFileImageBytes, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileStringDx のメモリから読み込む版 +extern DXLIBAPI int GetPrivateProfileStringDxForMemWithStrLen( const TCHAR *AppName, size_t AppNameLength, const TCHAR *KeyName, size_t KeyNameLength, const TCHAR *Default, size_t DefaultLength, TCHAR *ReturnedStringBuffer, size_t ReturnedStringBufferBytes, const void *IniFileImage, size_t IniFileImageBytes, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileStringDx のメモリから読み込む版 +extern DXLIBAPI int GetPrivateProfileIntDxForMem( const TCHAR *AppName, const TCHAR *KeyName, int Default, const void *IniFileImage, size_t IniFileImageBytes, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileIntDx のメモリから読み込む版 +extern DXLIBAPI int GetPrivateProfileIntDxForMemWithStrLen( const TCHAR *AppName, size_t AppNameLength, const TCHAR *KeyName, size_t KeyNameLength, int Default, const void *IniFileImage, size_t IniFileImageBytes, int IniFileCharCodeFormat = -1 /* DX_CHARCODEFORMAT_SHIFTJIS 等、-1 でデフォルト */ ) ; // GetPrivateProfileIntDx のメモリから読み込む版 + +#if defined( __APPLE__ ) || defined( __ANDROID__ ) + +// メールアプリを送信メール編集状態で起動する +// MailAddr : 宛先( NULL で無効 )、メールアドレスが複数ある場合はカンマ『,』で区切ってください +// MailCCAddr : CC の宛先( NULL で無効 )、メールアドレスが複数ある場合はカンマ『,』で区切ってください +// MailBCCAddr : BCC の宛先( NULL で無効 )、メールアドレスが複数ある場合はカンマ『,』で区切ってください +// Subject : タイトル( NULL で無効 )、メールアドレスが複数ある場合はカンマ『,』で区切ってください +// Text : 本文( NULL で無効 )、メールアドレスが複数ある場合はカンマ『,』で区切ってください +extern DXLIBAPI int MailApp_Send( const TCHAR *MailAddr = NULL , const TCHAR *MailCCAddr = NULL , const TCHAR *MailBCCAddr = NULL , const TCHAR *Subject = NULL , const TCHAR *Text = NULL ) ; +extern DXLIBAPI int MailApp_SendWithStrLen( const TCHAR *MailAddr = NULL , size_t MailAddrLength = 0 , const TCHAR *MailCCAddr = NULL , size_t MailCCAddrLength = 0 , const TCHAR *MailBCCAddr = NULL , size_t MailBCCAddrLength = 0 , const TCHAR *Subject = NULL , size_t SubjectLength = 0 , const TCHAR *Text = NULL , size_t TextLength = 0 ) ; + +#endif // defined( __APPLE__ ) || defined( __ANDROID__ ) + + + + + + + + + + + +// DxLog.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_LOG +// ログファイル関数 +extern DXLIBAPI int LogFileAdd( const TCHAR *String ) ; // ログファイル( Log.txt ) に文字列を出力する +extern DXLIBAPI int LogFileAddWithStrLen( const TCHAR *String, size_t StringLength ) ; // ログファイル( Log.txt ) に文字列を出力する +extern DXLIBAPI int LogFileFmtAdd( const TCHAR *FormatString , ... ) ; // 書式付きで ログファイル( Log.txt ) に文字列を出力する( 書式は printf と同じ ) +extern DXLIBAPI int LogFileTabAdd( void ) ; // ログファイル( Log.txt ) に出力する文字列の前に付けるタブの数を一つ増やす +extern DXLIBAPI int LogFileTabSub( void ) ; // ログファイル( Log.txt ) に出力する文字列の前に付けるタブの数を一つ減らす +extern DXLIBAPI int ErrorLogAdd( const TCHAR *String ) ; // LogFileAdd の旧名称関数 +extern DXLIBAPI int ErrorLogFmtAdd( const TCHAR *FormatString , ... ) ; // LogFileFmtAdd の旧名称関数 +extern DXLIBAPI int ErrorLogTabAdd( void ) ; // LogFileTabAdd の旧名称関数 +extern DXLIBAPI int ErrorLogTabSub( void ) ; // LogFileTabSub の旧名称関数 +extern DXLIBAPI int SetUseTimeStampFlag( int UseFlag ) ; // ログファイル( Log.txt ) に出力する文字列の前に起動してからの時間を付けるかどうかを設定する( TRUE:付ける( デフォルト) FALSE:付けない ) +extern DXLIBAPI int AppLogAdd( const TCHAR *String , ... ) ; // LogFileFmtAdd と同じ機能の関数 + +// ログ出力設定関数 +extern DXLIBAPI int SetOutApplicationLogValidFlag( int Flag ) ; // ログファイル( Log.txt ) を作成するかどうかを設定する( TRUE:作成する( デフォルト ) FALSE:作成しない )、DxLib_Init の前でのみ使用可能  +extern DXLIBAPI int SetApplicationLogFileName( const TCHAR *FileName ) ; // ログファイルの名前を設定する( Log.txt 以外にしたい場合に使用 ) +extern DXLIBAPI int SetApplicationLogFileNameWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // ログファイルの名前を設定する( Log.txt 以外にしたい場合に使用 ) +extern DXLIBAPI int SetApplicationLogSaveDirectory( const TCHAR *DirectoryPath ) ; // ログファイル( Log.txt ) を保存するディレクトリパスを設定する +extern DXLIBAPI int SetApplicationLogSaveDirectoryWithStrLen( const TCHAR *DirectoryPath, size_t DirectoryPathLength ) ; // ログファイル( Log.txt ) を保存するディレクトリパスを設定する +extern DXLIBAPI int SetUseDateNameLogFile( int Flag ) ; // ログファイル名に日付をつけるかどうかをセットする( TRUE:付ける FALSE:付けない( デフォルト ) ) + +#ifndef DX_NON_PRINTF_DX + +// ログ出力機能関数 +extern DXLIBAPI int SetLogDrawOutFlag( int DrawFlag ) ; // printfDx の結果を画面に出力するかどうかを設定する、TRUE:出力を行う FALSE:出力を行わない( printfDx を実行すると内部で SetLogDrawOutFlag( TRUE ) ; が呼ばれます ) +extern DXLIBAPI int GetLogDrawFlag( void ) ; // printfDx の結果を画面に出力するかどうかの設定を取得する( 戻り値 TRUE:出力を行う FALSE:出力を行わない ) +extern DXLIBAPI int SetLogFontSize( int Size ) ; // printfDx の結果を画面に出力する際に使用するフォントのサイズを設定する +extern DXLIBAPI int SetLogFontHandle( int FontHandle ) ; // printfDx の結果を画面に出力する際に使用するフォントのハンドルを変更する +extern DXLIBAPI int SetLogDrawArea( int x1, int y1, int x2, int y2 ) ; // printfDx の結果を画面に出力する際の描画する領域を設定する + +// 簡易画面出力関数 +extern DXLIBAPI int printfDx( const TCHAR *FormatString , ... ) ; // printf と同じ引数で画面に文字列を表示するための関数 +extern DXLIBAPI int putsDx( const TCHAR *String, int NewLine = TRUE ) ; // puts と同じ引数で画面に文字列を表示するための関数 +extern DXLIBAPI int putsDxWithStrLen( const TCHAR *String, size_t StringLength, int NewLine = TRUE ) ; // puts と同じ引数で画面に文字列を表示するための関数 +extern DXLIBAPI int clsDx( void ) ; // printfDx の結果をリセットするための関数 +#endif // DX_NON_PRINTF_DX + +#endif // DX_NON_LOG + + + + + + + + + + + + +#ifndef DX_NON_ASYNCLOAD + +// DxASyncLoad.cpp関数プロトタイプ宣言 + +// 非同期読み込み関係 +extern DXLIBAPI int SetUseASyncLoadFlag( int Flag ) ; // 読み込み処理系の関数で非同期読み込みを行うかどうかを設定する( 非同期読み込みに対応している関数のみ有効 )( TRUE:非同期読み込みを行う FALSE:非同期読み込みを行わない( デフォルト ) ) +extern DXLIBAPI int GetUseASyncLoadFlag( void ) ; // 読み込み処理系の関数で非同期読み込みを行うかどうかを取得する( 非同期読み込みに対応している関数のみ有効 )( TRUE:非同期読み込みを行う FALSE:非同期読み込みを行わない( デフォルト ) ) +extern DXLIBAPI int CheckHandleASyncLoad( int Handle ) ; // ハンドルの非同期読み込みが完了しているかどうかを取得する( TRUE:まだ完了していない FALSE:完了している -1:エラー ) +extern DXLIBAPI int GetHandleASyncLoadResult( int Handle ) ; // ハンドルの非同期読み込み処理の戻り値を取得する( 非同期読み込み中の場合は一つ前の非同期読み込み処理の戻り値が返ってきます ) +extern DXLIBAPI int SetASyncLoadFinishDeleteFlag( int Handle ) ; // ハンドルの非同期読み込み処理が完了したらハンドルを削除するフラグを立てる +extern DXLIBAPI int GetASyncLoadNum( void ) ; // 非同期読み込み中の処理の数を取得する +extern DXLIBAPI int SetASyncLoadThreadNum( int ThreadNum ) ; // 非同期読み込み処理を行うスレッドの数を設定する( ThreadNum に指定できる数は 1 ~ 32 ) + +#endif // DX_NON_ASYNCLOAD + + + + + + + + + + + +// DxHandle.cpp関数プロトタイプ宣言 + +extern DXLIBAPI int SetDeleteHandleFlag( int Handle, int *DeleteFlag ) ; // ハンドルが削除されたときに-1が設定される変数を登録する + + + + + + + + + + + + + + + +// マウス関係関数 +extern DXLIBAPI int SetMouseDispFlag( int DispFlag ) ; // マウスポインタの表示状態を設定する( DispFlag:マウスポインタを表示するかどうか( TRUE:表示する FALSE:表示しない ) +#ifndef DX_NON_INPUT +extern DXLIBAPI int GetMousePoint( int *XBuf, int *YBuf ) ; // マウスポインタの位置を取得する +extern DXLIBAPI int SetMousePoint( int PointX, int PointY ) ; // マウスポインタの位置を設定する +extern DXLIBAPI int GetMouseInput( void ) ; // マウスのボタンの押下状態を取得する +extern DXLIBAPI int GetMouseWheelRotVol( int CounterReset = TRUE ) ; // 垂直マウスホイールの回転量を取得する +extern DXLIBAPI int GetMouseHWheelRotVol( int CounterReset = TRUE ) ; // 水平マウスホイールの回転量を取得する +extern DXLIBAPI float GetMouseWheelRotVolF( int CounterReset = TRUE ) ; // 垂直マウスホイールの回転量を取得する( 戻り値が float 型 ) +extern DXLIBAPI float GetMouseHWheelRotVolF( int CounterReset = TRUE ) ; // 水平マウスホイールの回転量を取得する( 戻り値が float 型 ) +extern DXLIBAPI int GetMouseInputLog( int *Button, int *ClickX, int *ClickY, int LogDelete = TRUE ) ; // マウスのボタンを押した情報を一つ取得する( Button:押されたボタン( MOUSE_INPUT_LEFT 等 )を格納する変数のアドレス ClickX:押された時のX座標を格納する変数のアドレス ClickY:押された時のY座標を格納する変数のアドレス LogDelete:取得した押下情報一つ分をログから削除するかどうか( TRUE:削除する FALSE:削除しない、つまり次にこの関数が呼ばれたときに同じ値を取得することになる )  戻り値 0:押された情報取得できた -1:押された情報が無かった、つまり前回の呼び出し( または起動時から最初の呼び出し )の間に一度もマウスのボタンが押されなかった ) +extern DXLIBAPI int GetMouseInputLog2( int *Button, int *ClickX, int *ClickY, int *LogType, int LogDelete = TRUE ) ; // マウスのボタンを押したり離したりした情報を一つ取得する( Button:押されたり離されたりしたボタン( MOUSE_INPUT_LEFT 等 )を格納する変数のアドレス ClickX:押されたり離されたりした時のX座標を格納する変数のアドレス ClickY:押されたり離されたりした時のY座標を格納する変数のアドレス LogType:押されたのか( MOUSE_INPUT_LOG_DOWN )離されたのか( MOUSE_INPUT_LOG_UP )、等の情報を格納する変数のアドレス LogDelete:取得した押されたり離されたりした情報一つ分をログから削除するかどうか( TRUE:削除する FALSE:削除しない、つまり次にこの関数が呼ばれたときに同じ値を取得することになる )  戻り値 0:押されたり離されたりした情報取得できた -1:押されたり離されたりした情報が無かった、つまり前回の呼び出し( または起動時から最初の呼び出し )の間に一度もマウスのボタンが押されたり離されたりしなかった ) +#endif // DX_NON_INPUT + + + + + + + + + + + + +// タッチパネル入力関係関数 +#ifndef DX_NON_INPUT +extern DXLIBAPI int GetTouchInputNum( void ) ; // タッチされている数を取得する +extern DXLIBAPI int GetTouchInput( int InputNo, int *PositionX, int *PositionY, int *ID = NULL , int *Device = NULL ) ; // タッチの情報を取得する + +extern DXLIBAPI int GetTouchInputLogNum( void ) ; // ストックされているタッチ情報の数を取得する +extern DXLIBAPI int ClearTouchInputLog( void ) ; // ストックされているタッチ情報をクリアする +extern DXLIBAPI TOUCHINPUTDATA GetTouchInputLogOne( int PeekFlag = FALSE ) ; // ストックされているタッチ情報から一番古い情報をひとつ取得する +extern DXLIBAPI int GetTouchInputLog( TOUCHINPUTDATA *TouchData, int GetNum, int PeekFlag = FALSE ) ; // ストックされているタッチ情報から古い順に指定数バッファに取得する( 戻り値 -1:エラー 0以上:取得した情報の数 ) + +extern DXLIBAPI int GetTouchInputDownLogNum( void ) ; // ストックされているタッチされ始めた情報の数を取得する +extern DXLIBAPI int ClearTouchInputDownLog( void ) ; // ストックされているタッチされ始めた情報をクリアする +extern DXLIBAPI TOUCHINPUTPOINT GetTouchInputDownLogOne( int PeekFlag = FALSE ) ; // ストックされているタッチされ始めた情報から一番古い情報をひとつ取得する +extern DXLIBAPI int GetTouchInputDownLog( TOUCHINPUTPOINT *PointData, int GetNum, int PeekFlag = FALSE ) ; // ストックされているタッチされ始めた情報から古い順に指定数バッファに取得する( 戻り値 -1:エラー 0以上:取得した情報の数 ) + +extern DXLIBAPI int GetTouchInputUpLogNum( void ) ; // ストックされているタッチが離された情報の数を取得する +extern DXLIBAPI int ClearTouchInputUpLog( void ) ; // ストックされているタッチが離された情報をクリアする +extern DXLIBAPI TOUCHINPUTPOINT GetTouchInputUpLogOne( int PeekFlag = FALSE ) ; // ストックされているタッチが離された情報から一番古い情報をひとつ取得する +extern DXLIBAPI int GetTouchInputUpLog( TOUCHINPUTPOINT *PointData, int GetNum, int PeekFlag = FALSE ) ; // ストックされているタッチが離された情報から古い順に指定数バッファに取得する( 戻り値 -1:エラー 0以上:取得した情報の数 ) + +#endif // DX_NON_INPUT + + + + + + + + + + + + + + + +// DxMemory.cpp関数プロトタイプ宣言 + +// メモリ確保系関数 +extern DXLIBAPI void* DxAlloc( size_t AllocSize , const char *File = NULL , int Line = -1 ) ; // 指定のサイズのメモリを確保する( AllocSize:確保するメモリのサイズ( 単位:byte ) File:DxAllocを呼んだソースファイル名( デバッグ用 ) Line:DxAllocを呼んだソースファイル中の行番号( デバッグ用 )  戻り値 NULL:メモリの確保失敗 NULL以外:確保したメモリ領域の先頭アドレス ) +extern DXLIBAPI void* DxAllocAligned( size_t AllocSize , size_t Alignment , const char *File = NULL , int Line = -1 ) ; // 指定のサイズのメモリを確保する( アライン指定版 )( AllocSize:確保するメモリのサイズ( 単位:byte ) Alignment:確保するメモリ領域のアドレス値の倍数 File:DxAllocを呼んだソースファイル名( デバッグ用 ) Line:DxAllocを呼んだソースファイル中の行番号( デバッグ用 )  戻り値 NULL:メモリの確保失敗 NULL以外:確保したメモリ領域の先頭アドレス ) +extern DXLIBAPI void* DxCalloc( size_t AllocSize , const char *File = NULL , int Line = -1 ) ; // 指定のサイズのメモリを確保して、0で埋める、初期化後に0で埋める以外は DxAlloc と動作は同じ +extern DXLIBAPI void* DxCallocAligned( size_t AllocSize , size_t Alignment , const char *File = NULL , int Line = -1 ) ; // 指定のサイズのメモリを確保して、0で埋める、初期化後に0で埋める以外は DxAllocAligned と動作は同じ +extern DXLIBAPI void* DxRealloc( void *Memory , size_t AllocSize , const char *File = NULL , int Line = -1 ) ; // メモリの再確保を行う( Memory:再確保を行うメモリ領域の先頭アドレス( DxAlloc の戻り値 ) AllocSize:新しい確保サイズ FileとLine の説明は DxAlloc の注釈の通り  戻り値 NULL:メモリの再確保失敗 NULL以外:再確保した新しいメモリ領域の先頭アドレス ) +extern DXLIBAPI void* DxReallocAligned( void *Memory , size_t AllocSize , size_t Alignment , const char *File = NULL , int Line = -1 ) ; // メモリの再確保を行う( アライン指定版 )( Memory:再確保を行うメモリ領域の先頭アドレス( DxAlloc の戻り値 ) AllocSize:新しい確保サイズ Alignment:新しく確保するメモリ領域のアドレス値の倍数 FileとLine の説明は DxAlloc の注釈の通り  戻り値 NULL:メモリの再確保失敗 NULL以外:再確保した新しいメモリ領域の先頭アドレス ) +extern DXLIBAPI void DxFree( void *Memory ) ; // メモリを解放する( Memory:解放するメモリ領域の先頭アドレス( DxAlloc の戻り値 ) ) +extern DXLIBAPI size_t DxSetAllocSizeTrap( size_t Size ) ; // 列挙対象にするメモリの確保容量をセットする +extern DXLIBAPI int DxSetAllocPrintFlag( int Flag ) ; // DXライブラリ内でメモリ確保が行われる時に情報を出力するかどうかをセットする +extern DXLIBAPI size_t DxGetAllocSize( void ) ; // DxAlloc や DxCalloc で確保しているメモリサイズを取得する +extern DXLIBAPI int DxGetAllocNum( void ) ; // DxAlloc や DxCalloc で確保しているメモリの数を取得する +extern DXLIBAPI void DxDumpAlloc( void ) ; // DxAlloc や DxCalloc で確保しているメモリを列挙する +extern DXLIBAPI void DxDrawAlloc( int x, int y, int Width, int Height ) ; // DxAlloc や DxCalloc で確保しているメモリの状況を描画する +extern DXLIBAPI int DxErrorCheckAlloc( void ) ; // 確保したメモリ情報が破壊されていないか調べる( -1:破壊あり 0:なし ) +extern DXLIBAPI int DxSetAllocSizeOutFlag( int Flag ) ; // メモリが確保、解放が行われる度に確保しているメモリの容量を出力するかどうかのフラグをセットする +extern DXLIBAPI int DxSetAllocMemoryErrorCheckFlag( int Flag ) ; // メモリの確保、解放が行われる度に確保しているメモリ確保情報が破損していないか調べるかどうかのフラグをセットする + + + + + + + + + + + + + + +// DxBaseFunc.cpp 関数プロトタイプ宣言 + +// 文字コード関係 +extern DXLIBAPI int GetCharBytes( int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , const void *String ) ; // 文字列の先頭の文字のバイト数を取得する +extern DXLIBAPI int ConvertStringCharCodeFormat( int SrcCharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , const void *SrcString, int DestCharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , void *DestStringBuffer ) ; // 文字列の文字コード形式を別の文字コード形式に変換する +extern DXLIBAPI int SetUseCharCodeFormat( int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ ) ; // 文字列の引数の文字コード形式を設定する( 文字列描画系関数とその他一部関数を除く )( UNICODE版では無効 ) +extern DXLIBAPI int GetUseCharCodeFormat( void ) ; // 文字列の引数の文字コード形式を取得する( 戻り値:文字コード形式( DX_CHARCODEFORMAT_SHIFTJIS 等 ) )( UNICODE版では無効 ) +extern DXLIBAPI int Get_wchar_t_CharCodeFormat( void ) ; // wchar_t型の文字コード形式を取得する( 戻り値: DX_CHARCODEFORMAT_UTF16LE など ) + +// 文字列関係 +extern DXLIBAPI void strcpyDx( TCHAR *Dest, const TCHAR *Src ) ; // strcpy と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strcpy_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src ) ; // strcpy_s と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpcpyDx( TCHAR *Dest, const TCHAR *Src, int Pos ) ; // 位置指定付き strcpy、Pos はコピー開始位置 ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpcpy_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Pos ) ; // 位置指定付き strcpy_s、Pos はコピー開始位置 ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpcpy2Dx( TCHAR *Dest, const TCHAR *Src, int Pos ) ; // 位置指定付き strcpy、Pos はコピー開始位置( 全角文字も 1 扱い ) ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpcpy2_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Pos ) ; // 位置指定付き strcpy_s、Pos はコピー開始位置( 全角文字も 1 扱い ) ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strncpyDx( TCHAR *Dest, const TCHAR *Src, int Num ) ; // strncpy と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strncpy_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Num ) ; // strncpy_s と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strncpy2Dx( TCHAR *Dest, const TCHAR *Src, int Num ) ; // strncpy の Num が文字数( 全角文字も 1 扱い )になったもの、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strncpy2_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Num ) ; // strncpy_s の Num が文字数( 全角文字も 1 扱い )になったもの、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strrncpyDx( TCHAR *Dest, const TCHAR *Src, int Num ) ; // strncpy の文字列の終端からの文字数指定版( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strrncpy_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Num ) ; // strncpy_s の文字列の終端からの文字数指定版( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strrncpy2Dx( TCHAR *Dest, const TCHAR *Src, int Num ) ; // strncpy の文字列の終端からの文字数( 全角文字も 1 扱い )指定版、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strrncpy2_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Num ) ; // strncpy_s の文字列の終端からの文字数( 全角文字も 1 扱い )指定版、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpncpyDx( TCHAR *Dest, const TCHAR *Src, int Pos, int Num ) ; // strncpy のコピー開始位置指定版、Pos はコピー開始位置、Num は文字数( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpncpy_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Pos, int Num ) ; // strncpy_s のコピー開始位置指定版、Pos はコピー開始位置、Num は文字数( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpncpy2Dx( TCHAR *Dest, const TCHAR *Src, int Pos, int Num ) ; // strncpy のコピー開始位置指定版、Pos はコピー開始位置( 全角文字も 1 扱い )、Num は文字数( 全角文字も 1 扱い )、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strpncpy2_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src, int Pos, int Num ) ; // strncpy_s のコピー開始位置指定版、Pos はコピー開始位置( 全角文字も 1 扱い )、Num は文字数( 全角文字も 1 扱い )、終端に必ずヌル文字が代入される( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strcatDx( TCHAR *Dest, const TCHAR *Src ) ; // strcat と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI void strcat_sDx( TCHAR *Dest, size_t DestBytes, const TCHAR *Src ) ; // strcat_s と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI size_t strlenDx( const TCHAR *Str ) ; // strlen と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI size_t strlen2Dx( const TCHAR *Str ) ; // strlen の戻り値が文字数( 全角文字も 1 扱い )になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strcmpDx( const TCHAR *Str1, const TCHAR *Str2 ) ; // strcmp と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int stricmpDx( const TCHAR *Str1, const TCHAR *Str2 ) ; // stricmp と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strncmpDx( const TCHAR *Str1, const TCHAR *Str2, int Num ) ; // strncmp と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strncmp2Dx( const TCHAR *Str1, const TCHAR *Str2, int Num ) ; // strncmp の Num が文字数( 全角文字も 1 扱い )になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strpncmpDx( const TCHAR *Str1, const TCHAR *Str2, int Pos, int Num ) ; // strncmp の比較開始位置指定版、Pos が Str1 の比較開始位置、Num が文字数( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strpncmp2Dx( const TCHAR *Str1, const TCHAR *Str2, int Pos, int Num ) ; // strncmp の比較開始位置指定版、Pos が Str1 の比較開始位置( 全角文字も 1 扱い )、Num が文字数( 全角文字も 1 扱い )( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI DWORD strgetchrDx( const TCHAR *Str, int Pos, int *CharNums = NULL ) ; // 文字列の指定の位置の文字コードを取得する、Pos は取得する位置、CharNums は文字数を代入する変数のアドレス、戻り値は文字コード( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI DWORD strgetchr2Dx( const TCHAR *Str, int Pos, int *CharNums = NULL ) ; // 文字列の指定の位置の文字コードを取得する、Pos は取得する位置( 全角文字も 1 扱い )、CharNums は文字数を代入する変数のアドレス、戻り値は文字コード( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strputchrDx( TCHAR *Str, int Pos, DWORD CharCode ) ; // 文字列の指定の位置に文字コードを書き込む、Pos は書き込む位置、CharCode は文字コード、戻り値は書き込んだ文字数( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strputchr2Dx( TCHAR *Str, int Pos, DWORD CharCode ) ; // 文字列の指定の位置に文字コードを書き込む、Pos は書き込む位置( 全角文字も 1 扱い )、CharCode は文字コード、戻り値は書き込んだ文字数( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strposDx( const TCHAR *Str, int Pos ) ; // 文字列の指定の位置のアドレスを取得する、Pos は取得する位置 ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strpos2Dx( const TCHAR *Str, int Pos ) ; // 文字列の指定の位置のアドレスを取得する、Pos は取得する位置( 全角文字も 1 扱い ) ( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strstrDx( const TCHAR *Str1, const TCHAR *Str2 ) ; // strstr と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strstr2Dx( const TCHAR *Str1, const TCHAR *Str2 ) ; // strstr の戻り値が文字列先頭からの文字数( 全角文字も 1 扱い ) になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strrstrDx( const TCHAR *Str1, const TCHAR *Str2 ) ; // strrstr と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strrstr2Dx( const TCHAR *Str1, const TCHAR *Str2 ) ; // strrstr の戻り値が文字列先頭からの文字数( 全角文字も 1 扱い ) になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strchrDx( const TCHAR *Str, DWORD CharCode ) ; // strchr と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strchr2Dx( const TCHAR *Str, DWORD CharCode ) ; // strchr の戻り値が文字列先頭からの文字数( 全角文字も 1 扱い ) になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI const TCHAR * strrchrDx( const TCHAR *Str, DWORD CharCode ) ; // strrchr と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int strrchr2Dx( const TCHAR *Str, DWORD CharCode ) ; // strrchr の戻り値が文字列先頭からの文字数( 全角文字も 1 扱い ) になったもの( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI TCHAR * struprDx( TCHAR *Str ) ; // strupr と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int vsprintfDx( TCHAR *Buffer, const TCHAR *FormatString, va_list Arg ) ; // vsprintf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int vsnprintfDx( TCHAR *Buffer, size_t BufferSize, const TCHAR *FormatString, va_list Arg ) ; // vsnprintf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int sprintfDx( TCHAR *Buffer, const TCHAR *FormatString, ... ) ; // sprintf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int snprintfDx( TCHAR *Buffer, size_t BufferSize, const TCHAR *FormatString, ... ) ; // snprintf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI TCHAR * itoaDx( int Value, TCHAR *Buffer, int Radix ) ; // itoa と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI TCHAR * itoa_sDx( int Value, TCHAR *Buffer, size_t BufferBytes, int Radix ) ; // itoa_s と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int atoiDx( const TCHAR *Str ) ; // atoi と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI double atofDx( const TCHAR *Str ) ; // atof と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int vsscanfDx( const TCHAR *String, const TCHAR *FormatString, va_list Arg ) ; // vsscanf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) +extern DXLIBAPI int sscanfDx( const TCHAR *String, const TCHAR *FormatString, ... ) ; // sscanf と同等の機能( マルチバイト文字列版では文字コード形式として SetUseCharCodeFormat で設定した形式が使用されます ) + + + + + + + + + + + + + + + + + + +// DxNetwork.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_NETWORK + +// 通信関係 +extern DXLIBAPI int ProcessNetMessage( int RunReleaseProcess = FALSE ) ; // 通信メッセージの処理をする関数 + +extern DXLIBAPI int GetHostIPbyName( const TCHAR *HostName, IPDATA *IPDataBuf, int IPDataBufLength = 1 , int *IPDataGetNum = NULL ) ; // DNSサーバーを使ってホスト名からIPアドレスを取得する( IPv4版 ) +extern DXLIBAPI int GetHostIPbyNameWithStrLen( const TCHAR *HostName, size_t HostNameLength, IPDATA *IPDataBuf, int IPDataBufLength = 1 , int *IPDataGetNum = NULL ) ; // DNSサーバーを使ってホスト名からIPアドレスを取得する( IPv4版 ) +extern DXLIBAPI int GetHostIPbyName_IPv6( const TCHAR *HostName, IPDATA_IPv6 *IPDataBuf, int IPDataBufLength = 1 , int *IPDataGetNum = NULL ) ; // DNSサーバーを使ってホスト名からIPアドレスを取得する( IPv6版 ) +extern DXLIBAPI int GetHostIPbyName_IPv6WithStrLen( const TCHAR *HostName, size_t HostNameLength, IPDATA_IPv6 *IPDataBuf, int IPDataBufLength = 1 , int *IPDataGetNum = NULL ) ; // DNSサーバーを使ってホスト名からIPアドレスを取得する( IPv6版 ) +extern DXLIBAPI int ConnectNetWork( IPDATA IPData, int Port = -1 ) ; // 他マシンに接続する( IPv4版 ) +extern DXLIBAPI int ConnectNetWork_IPv6( IPDATA_IPv6 IPData, int Port = -1 ) ; // 他マシンに接続する( IPv6版 ) +extern DXLIBAPI int ConnectNetWork_ASync( IPDATA IPData, int Port = -1 ) ; // 他マシンに接続する( IPv4版 )、非同期版 +extern DXLIBAPI int ConnectNetWork_IPv6_ASync( IPDATA_IPv6 IPData, int Port = -1 ) ; // 他マシンに接続する( IPv6版 )、非同期版 +extern DXLIBAPI int PreparationListenNetWork( int Port = -1 ) ; // 接続を受けられる状態にする( IPv4版 ) +extern DXLIBAPI int PreparationListenNetWork_IPv6( int Port = -1 ) ; // 接続を受けられる状態にする( IPv6版 ) +extern DXLIBAPI int StopListenNetWork( void ) ; // 接続を受けつけ状態の解除 +extern DXLIBAPI int CloseNetWork( int NetHandle ) ; // 接続を終了する + +extern DXLIBAPI int GetNetWorkAcceptState( int NetHandle ) ; // 接続状態を取得する +extern DXLIBAPI int GetNetWorkDataLength( int NetHandle ) ; // 受信データの量を得る +extern DXLIBAPI int GetNetWorkSendDataLength( int NetHandle ) ; // 未送信のデータの量を得る +extern DXLIBAPI int GetNewAcceptNetWork( void ) ; // 新たに接続した通信回線を得る +extern DXLIBAPI int GetLostNetWork( void ) ; // 接続を切断された通信回線を得る +extern DXLIBAPI int GetNetWorkIP( int NetHandle, IPDATA *IpBuf ) ; // 接続先のIPを得る( IPv4版 ) +extern DXLIBAPI int GetNetWorkIP_IPv6( int NetHandle, IPDATA_IPv6 *IpBuf ) ; // 接続先のIPを得る( IPv6版 ) +extern DXLIBAPI int GetMyIPAddress( IPDATA *IpBuf, int IpBufLength = 1 , int *IpNum = NULL ) ; // 自分のIPv4を得る +extern DXLIBAPI int GetMyIPAddress_IPv6( IPDATA_IPv6 *IpBuf, int IpBufLength = 1 , int *IpNum = NULL ) ; // 自分のIPv6を得る +extern DXLIBAPI int SetConnectTimeOutWait( int Time ) ; // 接続のタイムアウトまでの時間を設定する +extern DXLIBAPI int SetUseDXNetWorkProtocol( int Flag ) ; // DXライブラリの通信形態を使うかどうかをセットする +extern DXLIBAPI int GetUseDXNetWorkProtocol( void ) ; // DXライブラリの通信形態を使うかどうかを取得する +extern DXLIBAPI int SetUseDXProtocol( int Flag ) ; // SetUseDXNetWorkProtocol の別名 +extern DXLIBAPI int GetUseDXProtocol( void ) ; // GetUseDXNetWorkProtocol の別名 +extern DXLIBAPI int SetNetWorkCloseAfterLostFlag( int Flag ) ; // 接続が切断された直後に接続ハンドルを解放するかどうかのフラグをセットする +extern DXLIBAPI int GetNetWorkCloseAfterLostFlag( void ) ; // 接続が切断された直後に接続ハンドルを解放するかどうかのフラグを取得する +//extern DXLIBAPI int SetProxySetting( int UseFlag, const char *Address, int Port ) ; // HTTP通信で使用するプロキシ設定を行う +//extern DXLIBAPI int GetProxySetting( int *UseFlagBuffer, char *AddressBuffer, int *PortBuffer ) ; // HTTP通信で使用するプロキシ設定を取得する +//extern DXLIBAPI int SetIEProxySetting( void ) ; // IEのプロキシ設定を適応する + +extern DXLIBAPI int NetWorkRecv( int NetHandle, void *Buffer, int Length ) ; // 受信したデータを読み込む +extern DXLIBAPI int NetWorkRecvToPeek( int NetHandle, void *Buffer, int Length ) ; // 受信したデータを読み込む、読み込んだデータはバッファから削除されない +extern DXLIBAPI int NetWorkRecvBufferClear( int NetHandle ) ; // 受信したデータをクリアする +extern DXLIBAPI int NetWorkSend( int NetHandle, const void *Buffer, int Length ) ; // データを送信する + +extern DXLIBAPI int MakeUDPSocket( int RecvPort = -1 ) ; // UDPを使用した通信を行うソケットハンドルを作成する( RecvPort を -1 にすると送信専用のソケットハンドルになります ) +extern DXLIBAPI int MakeUDPSocket_IPv6( int RecvPort = -1 ) ; // UDPを使用した通信を行うソケットハンドルを作成する( RecvPort を -1 にすると送信専用のソケットハンドルになります )( IPv6版 ) +extern DXLIBAPI int DeleteUDPSocket( int NetUDPHandle ) ; // UDPを使用した通信を行うソケットハンドルを削除する +extern DXLIBAPI int NetWorkSendUDP( int NetUDPHandle, IPDATA SendIP, int SendPort, const void *Buffer, int Length ) ; // UDPを使用した通信で指定のIPにデータを送信する、Length は最大65507、SendPort を -1 にすると MakeUDPSocket に RecvPort で渡したポートが使用されます( 戻り値 0以上;送信できたデータサイズ -1:エラー -2:送信データが大きすぎる -3:送信準備ができていない ) +extern DXLIBAPI int NetWorkSendUDP_IPv6( int NetUDPHandle, IPDATA_IPv6 SendIP, int SendPort, const void *Buffer, int Length ) ; // UDPを使用した通信で指定のIPにデータを送信する、Length は最大65507、SendPort を -1 にすると MakeUDPSocket に RecvPort で渡したポートが使用されます( 戻り値 0以上;送信できたデータサイズ -1:エラー -2:送信データが大きすぎる -3:送信準備ができていない )( IPv6版 ) +extern DXLIBAPI int NetWorkRecvUDP( int NetUDPHandle, IPDATA *RecvIP, int *RecvPort, void *Buffer, int Length, int Peek ) ; // UDPを使用した通信でデータを受信する、Peek に TRUE を渡すと受信に成功してもデータを受信キューから削除しません( 戻り値 0以上:受信したデータのサイズ -1:エラー -2:バッファのサイズが足りない -3:受信データがない ) +extern DXLIBAPI int NetWorkRecvUDP_IPv6( int NetUDPHandle, IPDATA_IPv6 *RecvIP, int *RecvPort, void *Buffer, int Length, int Peek ) ; // UDPを使用した通信でデータを受信する、Peek に TRUE を渡すと受信に成功してもデータを受信キューから削除しません( 戻り値 0以上:受信したデータのサイズ -1:エラー -2:バッファのサイズが足りない -3:受信データがない )( IPv6版 ) +//extern DXLIBAPI int CheckNetWorkSendUDP( int NetUDPHandle ) ; // UDPを使用した通信でデータが送信できる状態かどうかを調べる( 戻り値 -1:エラー TRUE:送信可能 FALSE:送信不可能 ) +extern DXLIBAPI int CheckNetWorkRecvUDP( int NetUDPHandle ) ; // UDPを使用した通信で新たな受信データが存在するかどうかを調べる( 戻り値 -1:エラー TRUE:受信データあり FALSE:受信データなし ) + +/* 使用不可 +extern DXLIBAPI int HTTP_FileDownload( const char *FileURL, const char *SavePath = NULL , void **SaveBufferP = NULL , int *FileSize = NULL , char **ParamList = NULL ) ; // HTTP を使用してネットワーク上のファイルをダウンロードする +extern DXLIBAPI int HTTP_GetFileSize( const char *FileURL ) ; // HTTP を使用してネットワーク上のファイルのサイズを得る + +extern DXLIBAPI int HTTP_StartFileDownload( const char *FileURL, const char *SavePath, void **SaveBufferP = NULL , char **ParamList = NULL ) ; // HTTP を使用したネットワーク上のファイルをダウンロードする処理を開始する +extern DXLIBAPI int HTTP_StartGetFileSize( const char *FileURL ) ; // HTTP を使用したネットワーク上のファイルのサイズを得る処理を開始する +extern DXLIBAPI int HTTP_Close( int HttpHandle ) ; // HTTP の処理を終了し、ハンドルを解放する +extern DXLIBAPI int HTTP_CloseAll( void ) ; // 全てのハンドルに対して HTTP_Close を行う +extern DXLIBAPI int HTTP_GetState( int HttpHandle ) ; // HTTP 処理の現在の状態を得る( NET_RES_COMPLETE 等 ) +extern DXLIBAPI int HTTP_GetError( int HttpHandle ) ; // HTTP 処理でエラーが発生した場合、エラーの内容を得る( HTTP_ERR_NONE 等 ) +extern DXLIBAPI int HTTP_GetDownloadFileSize( int HttpHandle ) ; // HTTP 処理で対象となっているファイルのサイズを得る( 戻り値: -1 = エラー・若しくはまだファイルのサイズを取得していない 0以上 = ファイルのサイズ ) +extern DXLIBAPI int HTTP_GetDownloadedFileSize( int HttpHandle ) ; // HTTP 処理で既にダウンロードしたファイルのサイズを取得する + +extern DXLIBAPI int fgetsForNetHandle( int NetHandle, char *strbuffer ) ; // fgets のネットワークハンドル版( -1:取得できず 0:取得できた ) +extern DXLIBAPI int URLAnalys( const char *URL, char *HostBuf = NULL , char *PathBuf = NULL , char *FileNameBuf = NULL , int *PortBuf = NULL ) ; // URLを解析する +extern DXLIBAPI int URLConvert( char *URL, int ParamConvert = TRUE , int NonConvert = FALSE ) ; // HTTP に渡せない記号が使われた文字列を渡せるような文字列に変換する( 戻り値: -1 = エラー 0以上 = 変換後の文字列のサイズ ) +extern DXLIBAPI int URLParamAnalysis( char **ParamList, char **ParamStringP ) ; // HTTP 用パラメータリストから一つのパラメータ文字列を作成する( 戻り値: -1 = エラー 0以上 = パラメータの文字列の長さ ) +*/ + +#endif // DX_NON_NETWORK + + + + + + + + + + + + + + + + +// DxInputString.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_INPUTSTRING + +// 文字コードバッファ操作関係 +extern DXLIBAPI int StockInputChar( TCHAR CharCode ) ; // 文字コードバッファに文字コードをストックする +extern DXLIBAPI int ClearInputCharBuf( void ) ; // 文字コードバッファをクリアする +extern DXLIBAPI TCHAR GetInputChar( int DeleteFlag ) ; // 文字コードバッファに溜まったデータから文字コードを一つ取得する +extern DXLIBAPI TCHAR GetInputCharWait( int DeleteFlag ) ; // 文字コードバッファに溜まったデータから文字コードを一つ取得する、バッファになにも文字コードがない場合は文字コードがバッファに一文字分溜まるまで待つ + +extern DXLIBAPI int GetOneChar( TCHAR *CharBuffer, int DeleteFlag ) ; // 文字コードバッファに溜まったデータから1文字分取得する +extern DXLIBAPI int GetOneCharWait( TCHAR *CharBuffer, int DeleteFlag ) ; // 文字コードバッファに溜まったデータから1文字分取得する、バッファに何も文字コードがない場合は文字コードがバッファに一文字分溜まるまで待つ +extern DXLIBAPI int GetCtrlCodeCmp( TCHAR Char ) ; // 指定の文字コードがアスキーコントロールコードか調べる + +#endif // DX_NON_INPUTSTRING + +#ifndef DX_NON_KEYEX + +extern DXLIBAPI int DrawIMEInputString( int x, int y, int SelectStringNum , int DrawCandidateList = TRUE ) ; // 画面上に入力中の文字列を描画する +extern DXLIBAPI int SetUseIMEFlag( int UseFlag ) ; // IMEを使用するかどうかを設定する +extern DXLIBAPI int GetUseIMEFlag( void ) ; // IMEを使用するかどうかの設定を取得する +extern DXLIBAPI int SetInputStringMaxLengthIMESync( int Flag ) ; // IMEで入力できる最大文字数を MakeKeyInput の設定に合わせるかどうかをセットする( TRUE:あわせる FALSE:あわせない(デフォルト) ) +extern DXLIBAPI int SetIMEInputStringMaxLength( int Length ) ; // IMEで一度に入力できる最大文字数を設定する( 0:制限なし 1以上:指定の文字数で制限 ) + +#endif // DX_NON_KEYEX + +extern DXLIBAPI int GetStringPoint( const TCHAR *String, int Point ) ; // 全角文字、半角文字入り乱れる中から指定の文字数での半角文字数を得る +extern DXLIBAPI int GetStringPointWithStrLen( const TCHAR *String, size_t StringLength, int Point ) ; // 全角文字、半角文字入り乱れる中から指定の文字数での半角文字数を得る +extern DXLIBAPI int GetStringPoint2( const TCHAR *String, int Point ) ; // 全角文字、半角文字入り乱れる中から指定の半角文字数での文字数を得る +extern DXLIBAPI int GetStringPoint2WithStrLen( const TCHAR *String, size_t StringLength, int Point ) ; // 全角文字、半角文字入り乱れる中から指定の半角文字数での文字数を得る +extern DXLIBAPI int GetStringLength( const TCHAR *String ) ; // 全角文字、半角文字入り乱れる中から文字数を取得する + +#ifndef DX_NON_FONT +extern DXLIBAPI int DrawObtainsString( int x, int y, int AddY, const TCHAR *String, unsigned int StrColor, unsigned int StrEdgeColor = 0 , int FontHandle = -1 , unsigned int SelectBackColor = 0xffffffff , unsigned int SelectStrColor = 0 , unsigned int SelectStrEdgeColor = 0xffffffff , int SelectStart = -1 , int SelectEnd = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画 +extern DXLIBAPI int DrawObtainsNString( int x, int y, int AddY, const TCHAR *String, size_t StringLength, unsigned int StrColor, unsigned int StrEdgeColor = 0 , int FontHandle = -1 , unsigned int SelectBackColor = 0xffffffff , unsigned int SelectStrColor = 0 , unsigned int SelectStrEdgeColor = 0xffffffff , int SelectStart = -1 , int SelectEnd = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画 +extern DXLIBAPI int DrawObtainsString_CharClip( int x, int y, int AddY, const TCHAR *String, unsigned int StrColor, unsigned int StrEdgeColor = 0 , int FontHandle = -1 , unsigned int SelectBackColor = 0xffffffff , unsigned int SelectStrColor = 0 , unsigned int SelectStrEdgeColor = 0xffffffff , int SelectStart = -1 , int SelectEnd = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画( クリップが文字単位 ) +extern DXLIBAPI int DrawObtainsNString_CharClip( int x, int y, int AddY, const TCHAR *String, size_t StringLength, unsigned int StrColor, unsigned int StrEdgeColor = 0 , int FontHandle = -1 , unsigned int SelectBackColor = 0xffffffff , unsigned int SelectStrColor = 0 , unsigned int SelectStrEdgeColor = 0xffffffff , int SelectStart = -1 , int SelectEnd = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画( クリップが文字単位 ) +extern DXLIBAPI int GetObtainsStringCharPosition( int x, int y, int AddY, const TCHAR *String, int StrLen, int *PosX, int *PosY, int FontHandle = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画した場合の文字列の末端の座標を取得する +extern DXLIBAPI int GetObtainsStringCharPosition_CharClip( int x, int y, int AddY, const TCHAR *String, int StrLen, int *PosX, int *PosY, int FontHandle = -1 ) ; // 描画可能領域に収まるように改行しながら文字列を描画した場合の文字列の末端の座標を取得する( クリップが文字単位 ) +#endif // DX_NON_FONT +extern DXLIBAPI int DrawObtainsBox( int x1, int y1, int x2, int y2, int AddY, unsigned int Color, int FillFlag ) ; // 描画可能領域に収まるように補正を加えながら矩形を描画 + +#ifndef DX_NON_KEYEX + +extern DXLIBAPI int InputStringToCustom( int x, int y, size_t BufLength, TCHAR *StrBuffer, int CancelValidFlag, int SingleCharOnlyFlag, int NumCharOnlyFlag, int DoubleCharOnlyFlag = FALSE , int EnableNewLineFlag = FALSE , int DisplayCandidateList = TRUE ) ; // 文字列の入力取得 + +extern DXLIBAPI int KeyInputString( int x, int y, size_t CharMaxLength, TCHAR *StrBuffer, int CancelValidFlag ) ; // 文字列の入力取得 +extern DXLIBAPI int KeyInputSingleCharString( int x, int y, size_t CharMaxLength, TCHAR *StrBuffer, int CancelValidFlag ) ; // 半角文字列のみの入力取得 +extern DXLIBAPI int KeyInputNumber( int x, int y, int MaxNum, int MinNum, int CancelValidFlag ) ; // 数値の入力取得 + +extern DXLIBAPI int GetIMEInputModeStr( TCHAR *GetBuffer ) ; // IMEの入力モード文字列を取得する +extern DXLIBAPI const IMEINPUTDATA* GetIMEInputData( void ) ; // IMEで入力中の文字列の情報を取得する +extern DXLIBAPI int SetKeyInputStringColor( ULONGLONG NmlStr, ULONGLONG NmlCur, ULONGLONG IMEStrBack, ULONGLONG IMECur, ULONGLONG IMELine, ULONGLONG IMESelectStr, ULONGLONG IMEModeStr , ULONGLONG NmlStrE = 0 , ULONGLONG IMESelectStrE = 0 , ULONGLONG IMEModeStrE = 0 , ULONGLONG IMESelectWinE = ULL_PARAM( 0xffffffffffffffff ) , ULONGLONG IMESelectWinF = ULL_PARAM( 0xffffffffffffffff ) , ULONGLONG SelectStrBackColor = ULL_PARAM( 0xffffffffffffffff ) , ULONGLONG SelectStrColor = ULL_PARAM( 0xffffffffffffffff ) , ULONGLONG SelectStrEdgeColor = ULL_PARAM( 0xffffffffffffffff ), ULONGLONG IMEStr = ULL_PARAM( 0xffffffffffffffff ), ULONGLONG IMEStrE = ULL_PARAM( 0xffffffffffffffff ) ) ; // ( SetKeyInputStringColor2 の旧関数 )InputString関数使用時の文字の各色を変更する +extern DXLIBAPI int SetKeyInputStringColor2( int TargetColor /* DX_KEYINPSTRCOLOR_NORMAL_STR 等 */ , unsigned int Color ) ; // InputString関数使用時の文字の各色を変更する +extern DXLIBAPI int ResetKeyInputStringColor2( int TargetColor /* DX_KEYINPSTRCOLOR_NORMAL_STR 等 */ ) ; // SetKeyInputStringColor2 で設定した色をデフォルトに戻す +extern DXLIBAPI int SetKeyInputStringFont( int FontHandle ) ; // キー入力文字列描画関連で使用するフォントのハンドルを変更する(-1でデフォルトのフォントハンドル) +extern DXLIBAPI int SetKeyInputStringEndCharaMode( int EndCharaMode /* DX_KEYINPSTR_ENDCHARAMODE_OVERWRITE 等 */ ) ; // キー入力文字列処理の入力文字数が限界に達している状態で、文字列の末端部分で入力が行われた場合の処理モードを変更する +extern DXLIBAPI int DrawKeyInputModeString( int x, int y ) ; // 入力モード文字列を描画する + +extern DXLIBAPI int InitKeyInput( void ) ; // キー入力データ初期化 +extern DXLIBAPI int MakeKeyInput( size_t MaxStrLength, int CancelValidFlag, int SingleCharOnlyFlag, int NumCharOnlyFlag, int DoubleCharOnlyFlag = FALSE , int EnableNewLineFlag = FALSE ) ; // 新しいキー入力ハンドルの作成 +extern DXLIBAPI int DeleteKeyInput( int InputHandle ) ; // キー入力ハンドルの削除 +extern DXLIBAPI int SetActiveKeyInput( int InputHandle ) ; // 指定のキー入力ハンドルをアクティブにする( -1 を指定するとアクティブなキー入力ハンドルが無い状態になります ) +extern DXLIBAPI int GetActiveKeyInput( void ) ; // 現在アクティブになっているキー入力ハンドルを取得する +extern DXLIBAPI int CheckKeyInput( int InputHandle ) ; // キー入力ハンドルの入力が終了しているか取得する +extern DXLIBAPI int ReStartKeyInput( int InputHandle ) ; // 入力が完了したキー入力ハンドルを再度編集状態に戻す +extern DXLIBAPI int ProcessActKeyInput( void ) ; // キー入力ハンドル処理関数 +extern DXLIBAPI int DrawKeyInputString( int x, int y, int InputHandle , int DrawCandidateList = TRUE ) ; // キー入力ハンドルの入力中情報の描画 +extern DXLIBAPI int SetKeyInputDrawArea( int x1, int y1, int x2, int y2, int InputHandle ) ; // キー入力ハンドルの入力中文字列を描画する際の描画範囲を設定する + +extern DXLIBAPI int SetKeyInputSelectArea( int SelectStart, int SelectEnd, int InputHandle ) ; // キー入力ハンドルの指定の領域を選択状態にする( SelectStart と SelectEnd に -1 を指定すると選択状態が解除されます ) +extern DXLIBAPI int GetKeyInputSelectArea( int *SelectStart, int *SelectEnd, int InputHandle ) ; // キー入力ハンドルの選択領域を取得する +extern DXLIBAPI int SetKeyInputDrawStartPos( int DrawStartPos, int InputHandle ) ; // キー入力ハンドルの描画開始文字位置を設定する +extern DXLIBAPI int GetKeyInputDrawStartPos( int InputHandle ) ; // キー入力ハンドルの描画開始文字位置を取得する +extern DXLIBAPI int SetKeyInputCursorBrinkTime( int Time ) ; // キー入力ハンドルのキー入力時のカーソルの点滅する早さをセットする +extern DXLIBAPI int SetKeyInputCursorBrinkFlag( int Flag ) ; // キー入力ハンドルのキー入力時のカーソルを点滅させるかどうかをセットする +extern DXLIBAPI int SetKeyInputString( const TCHAR *String, int InputHandle ) ; // キー入力ハンドルに指定の文字列をセットする +extern DXLIBAPI int SetKeyInputStringWithStrLen( const TCHAR *String, size_t StringLength, int InputHandle ) ; // キー入力ハンドルに指定の文字列をセットする +extern DXLIBAPI int SetKeyInputNumber( int Number, int InputHandle ) ; // キー入力ハンドルに指定の数値を文字に置き換えてセットする +extern DXLIBAPI int SetKeyInputNumberToFloat( float Number, int InputHandle ) ; // キー入力ハンドルに指定の浮動小数点値を文字に置き換えてセットする +extern DXLIBAPI int GetKeyInputString( TCHAR *StrBuffer, int InputHandle ) ; // キー入力ハンドルの入力中の文字列を取得する +extern DXLIBAPI int GetKeyInputNumber( int InputHandle ) ; // キー入力ハンドルの入力中の文字列を整数値として取得する +extern DXLIBAPI float GetKeyInputNumberToFloat( int InputHandle ) ; // キー入力ハンドルの入力中の文字列を浮動小数点値として取得する +extern DXLIBAPI int SetKeyInputCursorPosition( int Position, int InputHandle ) ; // キー入力ハンドルの現在のカーソル位置を設定する +extern DXLIBAPI int GetKeyInputCursorPosition( int InputHandle ) ; // キー入力ハンドルの現在のカーソル位置を取得する + +#endif // DX_NON_KEYEX + + + + + + + + + + + +// DxFile.cpp関数プロトタイプ宣言 + +// ファイルアクセス関数 +extern DXLIBAPI int FileRead_open( const TCHAR *FilePath, int ASync = FALSE ) ; // ファイルを開く +extern DXLIBAPI int FileRead_open_WithStrLen( const TCHAR *FilePath, size_t FilePathLength, int ASync = FALSE ) ; // ファイルを開く +extern DXLIBAPI int FileRead_open_mem( const void *FileImage, size_t FileImageSize ) ; // メモリに展開されたファイルを開く +extern DXLIBAPI LONGLONG FileRead_size( const TCHAR *FilePath ) ; // ファイルのサイズを取得する +extern DXLIBAPI LONGLONG FileRead_size_WithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // ファイルのサイズを取得する +extern DXLIBAPI int FileRead_close( int FileHandle ) ; // ファイルを閉じる +extern DXLIBAPI LONGLONG FileRead_tell( int FileHandle ) ; // ファイルポインタの読み込み位置を取得する +extern DXLIBAPI int FileRead_seek( int FileHandle , LONGLONG Offset , int Origin ) ; // ファイルポインタの読み込み位置を変更する +extern DXLIBAPI int FileRead_read( void *Buffer , int ReadSize , int FileHandle ) ; // ファイルからデータを読み込む +extern DXLIBAPI int FileRead_idle_chk( int FileHandle ) ; // ファイル読み込みが完了しているかどうかを取得する +extern DXLIBAPI int FileRead_eof( int FileHandle ) ; // ファイルの読み込み位置が終端に達しているかどうかを取得する +extern DXLIBAPI int FileRead_set_format( int FileHandle, int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ ) ; // ファイルの文字コード形式を設定する( テキストファイル用 ) +extern DXLIBAPI int FileRead_gets( TCHAR *Buffer , int BufferSize , int FileHandle ) ; // ファイルから文字列を読み出す +extern DXLIBAPI TCHAR FileRead_getc( int FileHandle ) ; // ファイルから一文字読み出す +extern DXLIBAPI int FileRead_scanf( int FileHandle , const TCHAR *Format , ... ) ; // ファイルから書式化されたデータを読み出す + +extern DXLIBAPI DWORD_PTR FileRead_createInfo( const TCHAR *ObjectPath ) ; // ファイル情報ハンドルを作成する( 戻り値 -1:エラー -1以外:ファイル情報ハンドル ) +extern DXLIBAPI DWORD_PTR FileRead_createInfo_WithStrLen( const TCHAR *ObjectPath, size_t ObjectPathLength ) ; // ファイル情報ハンドルを作成する( 戻り値 -1:エラー -1以外:ファイル情報ハンドル ) +extern DXLIBAPI int FileRead_getInfoNum( DWORD_PTR FileInfoHandle ) ; // ファイル情報ハンドル中のファイルの数を取得する +extern DXLIBAPI int FileRead_getInfo( int Index , FILEINFO *Buffer , DWORD_PTR FileInfoHandle ) ; // ファイル情報ハンドル中のファイルの情報を取得する +extern DXLIBAPI int FileRead_deleteInfo( DWORD_PTR FileInfoHandle ) ; // ファイル情報ハンドルを削除する + +extern DXLIBAPI DWORD_PTR FileRead_findFirst( const TCHAR *FilePath, FILEINFO *Buffer ) ; // 指定のファイル又はフォルダの情報を取得し、ファイル検索ハンドルも作成する( 戻り値: -1=エラー -1以外=ファイル検索ハンドル ) +extern DXLIBAPI DWORD_PTR FileRead_findFirst_WithStrLen( const TCHAR *FilePath, size_t FilePathLength, FILEINFO *Buffer ) ; // 指定のファイル又はフォルダの情報を取得し、ファイル検索ハンドルも作成する( 戻り値: -1=エラー -1以外=ファイル検索ハンドル ) +extern DXLIBAPI int FileRead_findNext( DWORD_PTR FindHandle, FILEINFO *Buffer ) ; // 条件の合致する次のファイルの情報を取得する( 戻り値: -1=エラー 0=成功 ) +extern DXLIBAPI int FileRead_findClose( DWORD_PTR FindHandle ) ; // ファイル検索ハンドルを閉じる( 戻り値: -1=エラー 0=成功 ) + +extern DXLIBAPI int FileRead_fullyLoad( const TCHAR *FilePath ) ; // 指定のファイルの内容を全てメモリに読み込み、その情報のアクセスに必要なハンドルを返す( 戻り値 -1:エラー -1以外:ハンドル )、使い終わったらハンドルは FileRead_fullyLoad_delete で削除する必要があります +extern DXLIBAPI int FileRead_fullyLoad_WithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // 指定のファイルの内容を全てメモリに読み込み、その情報のアクセスに必要なハンドルを返す( 戻り値 -1:エラー -1以外:ハンドル )、使い終わったらハンドルは FileRead_fullyLoad_delete で削除する必要があります +extern DXLIBAPI int FileRead_fullyLoad_delete( int FLoadHandle ) ; // FileRead_fullyLoad で読み込んだファイルのハンドルを削除する +extern DXLIBAPI const void* FileRead_fullyLoad_getImage( int FLoadHandle ) ; // FileRead_fullyLoad で読み込んだファイルの内容を格納したメモリアドレスを取得する +extern DXLIBAPI LONGLONG FileRead_fullyLoad_getSize( int FLoadHandle ) ; // FileRead_fullyLoad で読み込んだファイルのサイズを取得する + +// 設定関係関数 +extern DXLIBAPI int GetStreamFunctionDefault( void ) ; // DXライブラリでストリームデータアクセスに使用する関数がデフォルトのものか調べる( TRUE:デフォルトのもの FALSE:デフォルトではない ) +extern DXLIBAPI int ChangeStreamFunction( const STREAMDATASHREDTYPE2 *StreamThread ) ; // DXライブラリでストリームデータアクセスに使用する関数を変更する +extern DXLIBAPI int ChangeStreamFunctionW( const STREAMDATASHREDTYPE2W *StreamThreadW ) ; // DXライブラリでストリームデータアクセスに使用する関数を変更する( wchar_t 使用版 ) + +// 補助関係関数 +extern DXLIBAPI int ConvertFullPath( const TCHAR *Src, TCHAR *Dest, const TCHAR *CurrentDir = NULL ) ; // フルパスではないパス文字列をフルパスに変換する( CurrentDir はフルパスである必要がある(語尾に『\』があっても無くても良い) )( CurrentDir が NULL の場合は現在のカレントディレクトリを使用する ) +extern DXLIBAPI int ConvertFullPathWithStrLen( const TCHAR *Src, size_t SrcLength, TCHAR *Dest, const TCHAR *CurrentDir = NULL, size_t CurrentDirLength = 0 ) ; // フルパスではないパス文字列をフルパスに変換する( CurrentDir はフルパスである必要がある(語尾に『\』があっても無くても良い) )( CurrentDir が NULL の場合は現在のカレントディレクトリを使用する ) + + + + + + + + + + + + +// DxInput.cpp関数プロトタイプ宣言 + +#ifndef DX_NON_INPUT + +// 入力状態取得関数 +extern DXLIBAPI int CheckHitKey( int KeyCode ) ; // キーボードの押下状態を取得する +extern DXLIBAPI int CheckHitKeyAll( int CheckType = DX_CHECKINPUT_ALL ) ; // どれか一つでもキーが押されているかどうかを取得( 押されていたら戻り値が 0 以外になる ) +extern DXLIBAPI int GetHitKeyStateAll( DX_CHAR *KeyStateArray ) ; // すべてのキーの押下状態を取得する( KeyStateBuf:char型256個分の配列の先頭アドレス ) +extern DXLIBAPI int GetJoypadNum( void ) ; // ジョイパッドが接続されている数を取得する +extern DXLIBAPI int GetJoypadButtonNum( int InputType ) ; // ジョイパッドのボタンの数を取得する +extern DXLIBAPI int GetJoypadInputState( int InputType ) ; // ジョイパッドの入力状態を取得する +extern DXLIBAPI int GetJoypadAnalogInput( int *XBuf, int *YBuf, int InputType ) ; // ジョイパッドのアナログ的なスティック入力情報を得る +extern DXLIBAPI int GetJoypadAnalogInputRight( int *XBuf, int *YBuf, int InputType ) ; // ( 使用非推奨 )ジョイパッドのアナログ的なスティック入力情報を得る(右スティック用) +extern DXLIBAPI int GetJoypadDirectInputState( int InputType, DINPUT_JOYSTATE *DInputState ) ; // DirectInput から得られるジョイパッドの生のデータを取得する( DX_INPUT_KEY や DX_INPUT_KEY_PAD1 など、キーボードが絡むタイプを InputType に渡すとエラーとなり -1 を返す ) +extern DXLIBAPI int CheckJoypadXInput( int InputType ) ; // 指定の入力デバイスが XInput に対応しているかどうかを取得する( 戻り値 TRUE:XInput対応の入力デバイス FALSE:XInput非対応の入力デバイス -1:エラー )( DX_INPUT_KEY や DX_INPUT_KEY_PAD1 など、キーボードが絡むタイプを InputType に渡すとエラーとなり -1 を返す ) +extern DXLIBAPI int GetJoypadXInputState( int InputType, XINPUT_STATE *XInputState ) ; // XInput から得られる入力デバイス( Xbox360コントローラ等 )の生のデータを取得する( XInput非対応のパッドの場合はエラーとなり -1 を返す、DX_INPUT_KEY や DX_INPUT_KEY_PAD1 など、キーボードが絡むタイプを InputType に渡すとエラーとなり -1 を返す ) +extern DXLIBAPI int SetJoypadInputToKeyInput( int InputType, int PadInput, int KeyInput1, int KeyInput2 = -1 , int KeyInput3 = -1 , int KeyInput4 = -1 ) ; // ジョイパッドの入力に対応したキーボードの入力を設定する( InputType:設定を変更するパッドの識別子( DX_INPUT_PAD1等 )  PadInput:設定を変更するパッドボタンの識別子( PAD_INPUT_1 等 )  KeyInput1:PadInput を押下したことにするキーコード( KEY_INPUT_A など )その1  KeyInput2:その2、-1で設定なし  KeyInput3:その3、-1で設定なし  KeyInput4:その4、-1で設定なし ) +extern DXLIBAPI int SetJoypadDeadZone( int InputType, double Zone ) ; // ジョイパッドの無効ゾーンの設定を行う( InputType:設定を変更するパッドの識別子( DX_INPUT_PAD1等 ) Zone:新しい無効ゾーン( 0.0 ~ 1.0 )、デフォルト値は 0.35 ) +extern DXLIBAPI double GetJoypadDeadZone( int InputType ) ; // ジョイパッドの無効ゾーンの設定を取得する( InputType:設定を変更するパッドの識別子( DX_INPUT_PAD1等 ) 戻り値:無効ゾーン( 0.0 ~ 1.0 ) +extern DXLIBAPI int StartJoypadVibration( int InputType, int Power, int Time, int EffectIndex = -1 ) ; // ジョイパッドの振動を開始する +extern DXLIBAPI int StopJoypadVibration( int InputType, int EffectIndex = -1 ) ; // ジョイパッドの振動を停止する +extern DXLIBAPI int GetJoypadPOVState( int InputType, int POVNumber ) ; // ジョイパッドのPOV入力の状態を得る( 戻り値 指定のPOVデータの角度、単位は角度の100倍( 90度なら 9000 ) 中心位置にある場合は -1 が返る ) +extern DXLIBAPI int ReSetupJoypad( void ) ; // ジョイパッドの再セットアップを行う( 新たに接続されたジョイパッドがあったら検出される ) + +extern DXLIBAPI int SetUseJoypadVibrationFlag( int Flag ) ; // ジョイパッドの振動機能を使用するかどうかを設定する( TRUE:使用する  FALSE:使用しない ) + +#endif // DX_NON_INPUT + + + + + + + +#ifndef DX_NOTUSE_DRAWFUNCTION + +// 画像処理系関数プロトタイプ宣言 + +// グラフィックハンドル作成関係関数 +extern DXLIBAPI int MakeGraph( int SizeX, int SizeY, int NotUse3DFlag = FALSE ) ; // 指定サイズのグラフィックハンドルを作成する +extern DXLIBAPI int MakeScreen( int SizeX, int SizeY, int UseAlphaChannel = FALSE ) ; // SetDrawScreen で描画対象にできるグラフィックハンドルを作成する +extern DXLIBAPI int DerivationGraph( int SrcX, int SrcY, int Width, int Height, int SrcGraphHandle ) ; // 指定のグラフィックハンドルの指定部分だけを抜き出して新たなグラフィックハンドルを作成する +extern DXLIBAPI int DerivationGraphF( float SrcX, float SrcY, float Width, float Height, int SrcGraphHandle ) ; // 指定のグラフィックハンドルの指定部分だけを抜き出して新たなグラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int DeleteGraph( int GrHandle, int LogOutFlag = FALSE ) ; // グラフィックハンドルを削除する +extern DXLIBAPI int DeleteSharingGraph( int GrHandle ) ; // 指定のグラフィックハンドルと、同じグラフィックハンドルから派生しているグラフィックハンドル( DerivationGraph で派生したハンドル、LoadDivGraph 読み込んで作成された複数のハンドル )を一度に削除する +extern DXLIBAPI int GetGraphNum( void ) ; // 有効なグラフィックハンドルの数を取得する +extern DXLIBAPI int FillGraph( int GrHandle, int Red, int Green, int Blue, int Alpha = 255 ) ; // グラフィックハンドルを指定の色で塗りつぶす +extern DXLIBAPI int FillRectGraph( int GrHandle, int x, int y, int Width, int Height, int Red, int Green, int Blue, int Alpha = 255 ) ; // グラフィックハンドルの指定の範囲を指定の色で塗りつぶす +extern DXLIBAPI int SetGraphLostFlag( int GrHandle, int *LostFlag ) ; // 指定のグラフィックハンドルが削除された際に 1 にする変数のアドレスを設定する +extern DXLIBAPI int InitGraph( int LogOutFlag = FALSE ) ; // すべてのグラフィックハンドルを削除する +extern DXLIBAPI int ReloadFileGraphAll( void ) ; // ファイルから画像を読み込んだ全てのグラフィックハンドルについて、再度ファイルから画像を読み込む + +// シャドウマップハンドル関係関数 +extern DXLIBAPI int MakeShadowMap( int SizeX, int SizeY ) ; // シャドウマップハンドルを作成する +extern DXLIBAPI int DeleteShadowMap( int SmHandle ) ; // シャドウマップハンドルを削除する +extern DXLIBAPI int SetShadowMapLightDirection( int SmHandle, VECTOR Direction ) ; // シャドウマップが想定するライトの方向を設定する +extern DXLIBAPI int ShadowMap_DrawSetup( int SmHandle ) ; // シャドウマップへの描画の準備を行う +extern DXLIBAPI int ShadowMap_DrawEnd( void ) ; // シャドウマップへの描画を終了する +extern DXLIBAPI int SetUseShadowMap( int SmSlotIndex, int SmHandle ) ; // 描画で使用するシャドウマップを指定する、有効なスロットは0~2、SmHandle に -1 を渡すと指定のスロットのシャドウマップを解除 +extern DXLIBAPI int SetShadowMapDrawArea( int SmHandle, VECTOR MinPosition, VECTOR MaxPosition ) ; // シャドウマップに描画する際の範囲を設定する( この関数で描画範囲を設定しない場合は視錐台を拡大した範囲が描画範囲となる ) +extern DXLIBAPI int ResetShadowMapDrawArea( int SmHandle ) ; // SetShadowMapDrawArea の設定を解除する +extern DXLIBAPI int SetShadowMapAdjustDepth( int SmHandle, float Depth ) ; // シャドウマップを使用した描画時の補正深度を設定する +extern DXLIBAPI int GetShadowMapViewProjectionMatrix( int SmHandle, MATRIX *MatrixBuffer ) ; // シャドウマップ作成時や適用時に使用するビュー行列と射影行列を乗算した行列を取得する +extern DXLIBAPI int TestDrawShadowMap( int SmHandle, int x1, int y1, int x2, int y2 ) ; // シャドウマップを画面にテスト描画する + +// グラフィックハンドルへの画像転送関数 +extern DXLIBAPI int BltBmpToGraph( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int CopyPointX, int CopyPointY, int GrHandle ) ; // BMPの内容をグラフィックハンドルに転送 +extern DXLIBAPI int BltBmpToDivGraph( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int AllNum, int XNum, int YNum, int Width, int Height, const int *GrHandle, int ReverseFlag ) ; // BMPの内容を分割作成したグラフィックハンドルたちに転送 +extern DXLIBAPI int BltBmpOrGraphImageToGraph( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int BmpFlag, const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int CopyPointX, int CopyPointY, int GrHandle ) ; // BMP か BASEIMAGE をグラフィックハンドルに転送 +extern DXLIBAPI int BltBmpOrGraphImageToGraph2( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int BmpFlag, const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, const RECT *SrcRect, int DestX, int DestY, int GrHandle ) ; // BMP か BASEIMAGE の指定の領域をグラフィックハンドルに転送 +extern DXLIBAPI int BltBmpOrGraphImageToDivGraph( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int BmpFlag, const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, int Width, int Height, const int *GrHandle, int ReverseFlag ) ; // BMP か BASEIMAGE を分割作成したグラフィックハンドルたちに転送 +extern DXLIBAPI int BltBmpOrGraphImageToDivGraphF( const COLORDATA *BmpColorData, HBITMAP RgbBmp, HBITMAP AlphaBmp, int BmpFlag, const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, float Width, float Height, const int *GrHandle, int ReverseFlag ) ; // BMP か BASEIMAGE を分割作成したグラフィックハンドルたちに転送( float型 ) + +// 画像からグラフィックハンドルを作成する関数 +extern DXLIBAPI int LoadBmpToGraph( const TCHAR *FileName, int TextureFlag, int ReverseFlag, int SurfaceMode = DX_MOVIESURFACE_NORMAL ) ; // 画像ファイルからグラフィックハンドルを作成する +extern DXLIBAPI int LoadBmpToGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int TextureFlag, int ReverseFlag, int SurfaceMode = DX_MOVIESURFACE_NORMAL ) ; // 画像ファイルからグラフィックハンドルを作成する +extern DXLIBAPI int LoadGraph( const TCHAR *FileName, int NotUse3DFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルを作成する +extern DXLIBAPI int LoadGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int NotUse3DFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseGraph( const TCHAR *FileName, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものでグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものでグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivGraph( const TCHAR *FileName, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivGraphF( const TCHAR *FileName, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivGraphFWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivBmpToGraph( const TCHAR *FileName, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag, int ReverseFlag ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivBmpToGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag, int ReverseFlag ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivBmpToGraphF( const TCHAR *FileName, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag, int ReverseFlag ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadDivBmpToGraphFWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag, int ReverseFlag ) ; // 画像ファイルを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseDivGraph( const TCHAR *FileName, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseDivGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseDivGraphF( const TCHAR *FileName, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadReverseDivGraphFWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, float XSize, float YSize, int *HandleArray, int NotUse3DFlag = FALSE ) ; // 画像ファイルを反転したものを分割してグラフィックハンドルを作成する +extern DXLIBAPI int LoadBlendGraph( const TCHAR *FileName ) ; // 画像ファイルからブレンド用グラフィックハンドルを作成する +extern DXLIBAPI int LoadBlendGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 画像ファイルからブレンド用グラフィックハンドルを作成する + +extern DXLIBAPI int CreateGraphFromMem( const void *RGBFileImage, int RGBFileImageSize, const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 , int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // メモリ上の画像イメージからグラフィックハンドルを作成する +extern DXLIBAPI int ReCreateGraphFromMem( const void *RGBFileImage, int RGBFileImageSize, int GrHandle, const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 , int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // メモリ上の画像イメージから既存のグラフィックハンドルにデータを転送する +extern DXLIBAPI int CreateDivGraphFromMem( const void *RGBFileImage, int RGBFileImageSize, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 ) ; // メモリ上の画像イメージから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromMem( const void *RGBFileImage, int RGBFileImageSize, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 ) ; // メモリ上の画像イメージから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromMem( const void *RGBFileImage, int RGBFileImageSize, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 ) ; // メモリ上の画像イメージから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromMem( const void *RGBFileImage, int RGBFileImageSize, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const void *AlphaFileImage = NULL , int AlphaFileImageSize = 0 ) ; // メモリ上の画像イメージから既存の分割グラフィックハンドルにデータを転送する( float版 ) +extern DXLIBAPI int CreateGraphFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL , int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // ビットマップデータからグラフィックハンドルを作成する +extern DXLIBAPI int ReCreateGraphFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, int GrHandle, const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL , int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // ビットマップデータから既存のグラフィックハンドルにデータを転送する +extern DXLIBAPI int CreateDivGraphFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL ) ; // ビットマップデータから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL ) ; // ビットマップデータから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL ) ; // ビットマップデータから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromBmp( const BITMAPINFO *RGBBmpInfo, const void *RGBBmpImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE , const BITMAPINFO *AlphaBmpInfo = NULL , const void *AlphaBmpImage = NULL ) ; // ビットマップデータから既存の分割グラフィックハンドルにデータを転送する( float版 ) +extern DXLIBAPI int CreateDXGraph( const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int TextureFlag ) ; // 基本イメージデータからサイズを割り出し、それに合ったグラフィックハンドルを作成する +extern DXLIBAPI int CreateGraphFromGraphImage( const BASEIMAGE *RgbBaseImage, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータからグラフィックハンドルを作成する +extern DXLIBAPI int CreateGraphFromGraphImage( const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータからグラフィックハンドルを作成する +extern DXLIBAPI int ReCreateGraphFromGraphImage( const BASEIMAGE *RgbBaseImage, int GrHandle, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存のグラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateGraphFromGraphImage( const BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int GrHandle, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存のグラフィックハンドルにデータを転送する +extern DXLIBAPI int CreateDivGraphFromGraphImage( BASEIMAGE *RgbBaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromGraphImage( BASEIMAGE *RgbBaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int CreateDivGraphFromGraphImage( BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromGraphImage( BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromGraphImage( BASEIMAGE *RgbBaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromGraphImage( BASEIMAGE *RgbBaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromGraphImage( BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromGraphImage( BASEIMAGE *RgbBaseImage, const BASEIMAGE *AlphaBaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray, int TextureFlag = TRUE , int ReverseFlag = FALSE ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する( float版 ) +extern DXLIBAPI int CreateGraph( int Width, int Height, int Pitch, const void *RGBImage, const void *AlphaImage = NULL , int GrHandle = -1 ) ; // メモリ上のビットマップイメージからグラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraph( int Width, int Height, int Pitch, const void *RGBImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray, const void *AlphaImage = NULL ) ; // メモリ上のビットマップイメージから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphF( int Width, int Height, int Pitch, const void *RGBImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray, const void *AlphaImage = NULL ) ; // メモリ上のビットマップイメージから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateGraph( int Width, int Height, int Pitch, const void *RGBImage, int GrHandle, const void *AlphaImage = NULL ) ; // メモリ上のビットマップイメージからグラフィックハンドルを再作成する +#ifndef DX_NON_SOFTIMAGE +extern DXLIBAPI int CreateBlendGraphFromSoftImage( int SIHandle ) ; // ソフトウエアで扱うイメージからブレンド用画像グラフィックハンドルを作成する( -1:エラー -1以外:ブレンド用グラフィックハンドル ) +extern DXLIBAPI int CreateGraphFromSoftImage( int SIHandle ) ; // ソフトウエアで扱うイメージからグラフィックハンドルを作成する( -1:エラー -1以外:グラフィックハンドル ) +extern DXLIBAPI int CreateGraphFromRectSoftImage( int SIHandle, int x, int y, int SizeX, int SizeY ) ; // ソフトウエアで扱うイメージの指定の領域を使ってグラフィックハンドルを作成する( -1:エラー -1以外:グラフィックハンドル ) +extern DXLIBAPI int ReCreateGraphFromSoftImage( int SIHandle, int GrHandle ) ; // ソフトウエアで扱うイメージから既存のグラフィックハンドルに画像データを転送する +extern DXLIBAPI int ReCreateGraphFromRectSoftImage( int SIHandle, int x, int y, int SizeX, int SizeY, int GrHandle ) ; // ソフトウエアで扱うイメージから既存のグラフィックハンドルに画像データを転送する +extern DXLIBAPI int CreateDivGraphFromSoftImage( int SIHandle, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray ) ; // ソフトウエアで扱うイメージから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromSoftImage( int SIHandle, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray ) ; // ソフトウエアで扱うイメージから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromSoftImage( int SIHandle, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray ) ; // ソフトウエアで扱うイメージから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromSoftImage( int SIHandle, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray ) ; // ソフトウエアで扱うイメージから既存の分割グラフィックハンドルにデータを転送する( float版 ) +#endif // DX_NON_SOFTIMAGE +extern DXLIBAPI int CreateGraphFromBaseImage( const BASEIMAGE *BaseImage ) ; // 基本イメージデータからグラフィックハンドルを作成する +extern DXLIBAPI int CreateGraphFromRectBaseImage( const BASEIMAGE *BaseImage, int x, int y, int SizeX, int SizeY ) ; // 基本イメージデータの指定の領域を使ってグラフィックハンドルを作成する +extern DXLIBAPI int ReCreateGraphFromBaseImage( const BASEIMAGE *BaseImage, int GrHandle ) ; // 基本イメージデータから既存のグラフィックハンドルに画像データを転送する +extern DXLIBAPI int ReCreateGraphFromRectBaseImage( const BASEIMAGE *BaseImage, int x, int y, int SizeX, int SizeY, int GrHandle ) ; // 基本イメージデータの指定の領域を使って既存のグラフィックハンドルに画像データを転送する +extern DXLIBAPI int CreateDivGraphFromBaseImage( BASEIMAGE *BaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleArray ) ; // 基本イメージデータから分割グラフィックハンドルを作成する +extern DXLIBAPI int CreateDivGraphFFromBaseImage( BASEIMAGE *BaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, int *HandleArray ) ; // 基本イメージデータから分割グラフィックハンドルを作成する( float版 ) +extern DXLIBAPI int ReCreateDivGraphFromBaseImage( BASEIMAGE *BaseImage, int AllNum, int XNum, int YNum, int SizeX, int SizeY, const int *HandleArray ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する +extern DXLIBAPI int ReCreateDivGraphFFromBaseImage( BASEIMAGE *BaseImage, int AllNum, int XNum, int YNum, float SizeX, float SizeY, const int *HandleArray ) ; // 基本イメージデータから既存の分割グラフィックハンドルにデータを転送する( float版 ) +extern DXLIBAPI int ReloadGraph( const TCHAR *FileName, int GrHandle, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルへ画像データを転送する +extern DXLIBAPI int ReloadGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int GrHandle, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルへ画像データを転送する +extern DXLIBAPI int ReloadDivGraph( const TCHAR *FileName, int AllNum, int XNum, int YNum, int XSize, int YSize, const int *HandleArray, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルたちへ画像データを分割転送する +extern DXLIBAPI int ReloadDivGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int XSize, int YSize, const int *HandleArray, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルたちへ画像データを分割転送する +extern DXLIBAPI int ReloadDivGraphF( const TCHAR *FileName, int AllNum, int XNum, int YNum, float XSize, float YSize, const int *HandleArray, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルたちへ画像データを分割転送する( float版 ) +extern DXLIBAPI int ReloadDivGraphFWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, float XSize, float YSize, const int *HandleArray, int ReverseFlag = FALSE ) ; // 画像ファイルからグラフィックハンドルたちへ画像データを分割転送する( float版 ) +extern DXLIBAPI int ReloadReverseGraph( const TCHAR *FileName, int GrHandle ) ; // ReloadGraph の画像反転処理追加版 +extern DXLIBAPI int ReloadReverseGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int GrHandle ) ; // ReloadGraph の画像反転処理追加版 +extern DXLIBAPI int ReloadReverseDivGraph( const TCHAR *FileName, int AllNum, int XNum, int YNum, int XSize, int YSize, const int *HandleArray ) ; // ReloadDivGraph の画像反転処理追加版 +extern DXLIBAPI int ReloadReverseDivGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int XSize, int YSize, const int *HandleArray ) ; // ReloadDivGraph の画像反転処理追加版 +extern DXLIBAPI int ReloadReverseDivGraphF( const TCHAR *FileName, int AllNum, int XNum, int YNum, float XSize, float YSize, const int *HandleArray ) ; // ReloadDivGraph の画像反転処理追加版( float版 ) +extern DXLIBAPI int ReloadReverseDivGraphFWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, float XSize, float YSize, const int *HandleArray ) ; // ReloadDivGraph の画像反転処理追加版( float版 ) + +// グラフィックハンドル作成時設定係関数 +extern DXLIBAPI int SetGraphColorBitDepth( int ColorBitDepth ) ; // SetCreateGraphColorBitDepth の旧名称 +extern DXLIBAPI int GetGraphColorBitDepth( void ) ; // GetCreateGraphColorBitDepth の旧名称 +extern DXLIBAPI int SetCreateGraphColorBitDepth( int BitDepth ) ; // 作成するグラフィックハンドルの色深度を設定する +extern DXLIBAPI int GetCreateGraphColorBitDepth( void ) ; // 作成するグラフィックハンドルの色深度を取得する +extern DXLIBAPI int SetCreateGraphChannelBitDepth( int BitDepth ) ; // 作成するグラフィックハンドルの1チャンネル辺りのビット深度を設定する +extern DXLIBAPI int GetCreateGraphChannelBitDepth( void ) ; // 作成するグラフィックハンドルの1チャンネル辺りのビット深度を取得する +extern DXLIBAPI int SetDrawValidGraphCreateFlag( int Flag ) ; // SetDrawScreen に引数として渡せる( 描画対象として使用できる )グラフィックハンドルを作成するかどうかを設定する( TRUE:描画可能グラフィックハンドルを作成する FLASE:通常のグラフィックハンドルを作成する( デフォルト ) ) +extern DXLIBAPI int GetDrawValidGraphCreateFlag( void ) ; // SetDrawScreen に引数として渡せる( 描画対象として使用できる )グラフィックハンドルを作成するかどうかを設定を取得する +extern DXLIBAPI int SetDrawValidFlagOf3DGraph( int Flag ) ; // SetDrawValidGraphCreateFlag の旧名称 +extern DXLIBAPI int SetLeftUpColorIsTransColorFlag( int Flag ) ; // 画像ファイルからグラフィックハンドルを作成する際に画像左上の色を透過色として扱うかどうかを設定する( TRUE:透過色として扱う  FALSE:透過色として扱わない( デフォルト ) ) +extern DXLIBAPI int SetUsePaletteGraphFlag( int Flag ) ; // 読み込む画像がパレット画像の場合、パレット画像として使用できる場合はパレット画像として使用するかどうかを設定する( TRUE:パレット画像として使用できる場合はパレット画像として使用する( デフォルト ) FALSE:パレット画像として使用できる場合もパレット画像としては使用しない( 通常タイプの画像に変換して使用する ) ) +extern DXLIBAPI int SetUseBlendGraphCreateFlag( int Flag ) ; // ブレンド処理用画像を作成するかどうか( 要は画像の赤成分をα成分として扱うかどうか )の設定を行う( TRUE:ブレンド画像として読み込む FALSE:通常画像として読み込む( デフォルト ) ) +extern DXLIBAPI int GetUseBlendGraphCreateFlag( void ) ; // ブレンド処理用画像を作成するかどうか( 要は画像の赤成分をα成分として扱うかどうか )の設定を取得する +extern DXLIBAPI int SetUseAlphaTestGraphCreateFlag( int Flag ) ; // アルファテストを使用するグラフィックハンドルを作成するかどうかを設定する( TRUE:アルファテストを使用する( デフォルト ) FALSE:アルファテストを使用しない ) +extern DXLIBAPI int GetUseAlphaTestGraphCreateFlag( void ) ; // アルファテストを使用するグラフィックハンドルを作成するかどうかを取得する +extern DXLIBAPI int SetUseAlphaTestFlag( int Flag ) ; // SetUseAlphaTestGraphCreateFlag の旧名称 +extern DXLIBAPI int GetUseAlphaTestFlag( void ) ; // GetUseAlphaTestGraphCreateFlag の旧名称 +extern DXLIBAPI int SetCubeMapTextureCreateFlag( int Flag ) ; // キューブマップテクスチャを作成するかどうかのフラグを設定する +extern DXLIBAPI int GetCubeMapTextureCreateFlag( void ) ; // キューブマップテクスチャを作成するかどうかのフラグを取得する +extern DXLIBAPI int SetUseNoBlendModeParam( int Flag ) ; // SetDrawBlendMode 関数の第一引数に DX_BLENDMODE_NOBLEND を代入した際に、デフォルトでは第二引数は内部で255を指定したことになるが、その自動255化をしないかどうかを設定する( TRUE:しない(第二引数の値が使用される) FALSE:する(第二引数の値は無視されて 255 が常に使用される)(デフォルト) )αチャンネル付き画像に対して描画を行う場合のみ意味がある関数 +extern DXLIBAPI int SetDrawValidAlphaChannelGraphCreateFlag( int Flag ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )αチャンネル付きグラフィックハンドルを作成するかどうかを設定する( SetDrawValidGraphCreateFlag 関数で描画対象として使用できるグラフィックハンドルを作成するように設定されていないと効果ありません )( TRUE:αチャンネル付き FALSE:αチャンネルなし( デフォルト ) ) +extern DXLIBAPI int GetDrawValidAlphaChannelGraphCreateFlag( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )αチャンネル付きグラフィックハンドルを作成するかどうかを取得する +extern DXLIBAPI int SetDrawValidFloatTypeGraphCreateFlag( int Flag ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )ピクセルフォーマットが浮動小数点型のグラフィックハンドルを作成するかどうかを設定する( SetDrawValidGraphCreateFlag 関数で描画対象として使用できるグラフィックハンドルを作成するように設定されていないと効果ありません )、グラフィックスデバイスが浮動小数点型のピクセルフォーマットに対応していない場合はグラフィックハンドルの作成に失敗する( TRUE:浮動小数点型  FALSE:整数型( デフォルト ) ) +extern DXLIBAPI int GetDrawValidFloatTypeGraphCreateFlag( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )ピクセルフォーマットが浮動小数点型のグラフィックハンドルを作成するかどうかを取得する +extern DXLIBAPI int SetDrawValidGraphCreateZBufferFlag( int Flag ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルを作成する際に専用のZバッファも作成するかどうかを設定する( TRUE:専用のZバッファを作成する( デフォルト ) FALSE:専用のZバッファは作成しない ) +extern DXLIBAPI int GetDrawValidGraphCreateZBufferFlag( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルを作成する際に専用のZバッファも作成するかどうかを取得する +extern DXLIBAPI int SetCreateDrawValidGraphZBufferBitDepth( int BitDepth ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用するZバッファのビット深度を設定する( BitDepth:ビット深度( 指定可能な値は 16, 24, 32 の何れか( SetDrawValidGraphCreateFlag 関数で描画対象として使用できるグラフィックハンドルを作成するように設定されていないと効果ありません ) +extern DXLIBAPI int GetCreateDrawValidGraphZBufferBitDepth( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用するZバッファのビット深度を取得する +extern DXLIBAPI int SetCreateDrawValidGraphMipLevels( int MipLevels ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用するMipMapのレベルを設定する +extern DXLIBAPI int GetCreateDrawValidGraphMipLevels( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用するMipMapのレベルを取得する +extern DXLIBAPI int SetCreateDrawValidGraphChannelNum( int ChannelNum ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用する色のチャンネル数を設定する( ChannelNum:チャンネル数( 指定可能な値は 1, 2, 4 の何れか( SetDrawValidGraphCreateFlag 関数で描画対象として使用できるグラフィックハンドルを作成するように設定されていないと効果ありません ) +extern DXLIBAPI int GetCreateDrawValidGraphChannelNum( void ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用する色のチャンネル数を取得する +extern DXLIBAPI int SetCreateDrawValidGraphMultiSample( int Samples, int Quality ) ; // SetDrawScreen の引数として渡せる( 描画対象として使用できる )グラフィックハンドルに適用するマルチサンプリング( アンチエイリアシング )設定を行う( Samples:マルチサンプル処理に使用するドット数( 多いほど重くなります ) Quality:マルチサンプル処理の品質 ) +extern DXLIBAPI int SetDrawValidMultiSample( int Samples, int Quality ) ; // SetCreateDrawValidGraphMultiSample の旧名称 +extern DXLIBAPI int GetMultiSampleQuality( int Samples ) ; // 指定のマルチサンプル数で使用できる最大クオリティ値を取得する( 戻り値がマイナスの場合は引数のサンプル数が使用できないことを示します ) +extern DXLIBAPI int SetUseTransColor( int Flag ) ; // 透過色機能を使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない ) +extern DXLIBAPI int SetUseTransColorGraphCreateFlag( int Flag ) ; // 透過色機能を使用することを前提とした画像データの読み込み処理を行うかどうかを設定する( TRUE にすると SetDrawMode( DX_DRAWMODE_BILINEAR ); をした状態で DrawGraphF 等の浮動小数点型座標を受け取る関数で小数点以下の値を指定した場合に発生する描画結果の不自然を緩和する効果があります ( デフォルトは FALSE ) ) +extern DXLIBAPI int SetUseGraphAlphaChannel( int Flag ) ; // SetUseAlphaChannelGraphCreateFlag の旧名称 +extern DXLIBAPI int GetUseGraphAlphaChannel( void ) ; // GetUseAlphaChannelGraphCreateFlag の旧名称 +extern DXLIBAPI int SetUseAlphaChannelGraphCreateFlag( int Flag ) ; // αチャンネル付きグラフィックハンドルを作成するかどうかを設定する( TRUE:αチャンネル付き FALSE:αチャンネル無し ) +extern DXLIBAPI int GetUseAlphaChannelGraphCreateFlag( void ) ; // αチャンネル付きグラフィックハンドルを作成するかどうかを取得する( TRUE:αチャンネル付き FALSE:αチャンネル無し ) +extern DXLIBAPI int SetUseNotManageTextureFlag( int Flag ) ; // Direct3D の管理テクスチャ機能を使用するグラフィックハンドルを作成するかどうかを設定する( TRUE:管理機能を使用する( デフォルト ) FALSE:管理機能を使用しない )、管理機能を使用するとグラフィックスデバイスのVRAM容量以上の画像を扱うことができる代わりにシステムメモリの使用量が増えます +extern DXLIBAPI int GetUseNotManageTextureFlag( void ) ; // Direct3D の管理テクスチャ機能を使用するグラフィックハンドルを作成するかどうかを取得する +extern DXLIBAPI int SetUsePlatformTextureFormat( int PlatformTextureFormat ) ; // 作成するグラフィックハンドルで使用する環境依存のテクスチャフォーマットを指定する( Direct3D9環境なら DX_TEXTUREFORMAT_DIRECT3D9_R8G8B8 など、0 を渡すと解除 ) +extern DXLIBAPI int GetUsePlatformTextureFormat( void ) ; // 作成するグラフィックハンドルで使用する環境依存のテクスチャフォーマットを取得する +extern DXLIBAPI int SetTransColor( int Red, int Green, int Blue ) ; // 作成するグラフィックハンドルに適用する透過色を設定する( Red,Green,Blue:透過色を光の3原色で表したもの( 各色0~255 ) ) +extern DXLIBAPI int GetTransColor( int *Red, int *Green, int *Blue ) ; // 作成するグラフィックハンドルに適用する透過色を取得する +extern DXLIBAPI int SetUseDivGraphFlag( int Flag ) ; // 2のn乗ではないサイズの画像を複数のテクスチャを使用してVRAMの無駄を省くかどうかを設定する( TRUE:複数のテクスチャを使用する FALSE:なるべく一枚のテクスチャで済ます( デフォルト ) )、複数のテクスチャを使用する場合はVRAM容量の節約ができる代わりに速度の低下やバイリニアフィルタリング描画時にテクスチャとテクスチャの境目が良く見るとわかる等の弊害があります +extern DXLIBAPI int SetUseAlphaImageLoadFlag( int Flag ) ; // LoadGraph などの際にファイル名の末尾に _a が付いたアルファチャンネル用の画像ファイルを追加で読み込む処理を行うかどうかを設定する( TRUE:行う( デフォルト ) FALSE:行わない ) +extern DXLIBAPI int SetUseMaxTextureSize( int Size ) ; // 使用するテクスチャーの最大サイズを設定する( デフォルトではグラフィックスデバイスが対応している最大テクスチャーサイズ、引数に 0 を渡すとデフォルト設定になります ) +extern DXLIBAPI int SetUseGraphBaseDataBackup( int Flag ) ; // グラフィックハンドルを作成する際に使用した画像データのバックアップをして Direct3DDevice のデバイスロスト時に使用するかどうかを設定する( TRUE:バックアップをする( デフォルト ) FALSE:バックアップをしない )、バックアップをしないとメモリの節約になりますが、復帰に掛かる時間が長くなり、メモリ上のファイルイメージからグラフィックハンドルを作成した場合は自動復帰ができないなどの弊害があります +extern DXLIBAPI int GetUseGraphBaseDataBackup( void ) ; // グラフィックハンドルを作成する際に使用した画像データのバックアップをして Direct3DDevice のデバイスロスト時に使用するかどうかを取得する +extern DXLIBAPI int SetUseSystemMemGraphCreateFlag( int Flag ) ; // ( 現在効果なし )グラフィックハンドルが持つ画像データをシステムメモリ上に作成するかどうかを設定する( TRUE:システムメモリ上に作成 FALSE:VRAM上に作成( デフォルト ) ) +extern DXLIBAPI int GetUseSystemMemGraphCreateFlag( void ) ; // ( 現在効果なし )グラフィックハンドルが持つ画像データをシステムメモリ上に作成するかどうかを取得する + +// 画像情報関係関数 +extern DXLIBAPI const unsigned int* GetFullColorImage( int GrHandle ) ; // 指定のグラフィックハンドルのARGB8イメージを取得する( 現在動画ファイルをグラフィックハンドルで読み込んだ場合のみ使用可能 ) + +extern DXLIBAPI int GraphLock( int GrHandle, int *PitchBuf, void **DataPointBuf, COLORDATA **ColorDataPP = NULL, int WriteOnly = FALSE ) ; // グラフィックメモリ領域のロック +extern DXLIBAPI int GraphUnLock( int GrHandle ) ; // グラフィックメモリ領域のロック解除 + +extern DXLIBAPI int SetUseGraphZBuffer( int GrHandle, int UseFlag, int BitDepth = -1 ) ; // グラフィックハンドル専用のZバッファを持つかどうかを設定する( GrHandle:対象となるグラフィックハンドル( 描画対象として使用可能なグラフィックハンドルのみ有効 ) UseFlag:専用のZバッファを持つかどうか( TRUE:持つ( デフォルト ) FALSE:持たない ) BitDepth:ビット深度( 16 or 24 or 32 ) ) +extern DXLIBAPI int CopyGraphZBufferImage( int DestGrHandle, int SrcGrHandle ) ; // グラフィックハンドルのZバッファの状態を別のグラフィックハンドルのZバッファにコピーする( DestGrHandle も SrcGrHandle もZバッファを持っている描画対象にできるグラフィックハンドルで、サイズが同じであり、且つマルチサンプリング( アンチエイリアス )設定が無いことが条件 ) + +extern DXLIBAPI int SetDeviceLostDeleteGraphFlag( int GrHandle, int DeleteFlag ) ; // グラフィックスデバイスのデバイスロスト発生時に指定のグラフィックハンドルを削除するかどうかを設定する( TRUE:デバイスロスト時に削除する FALSE:デバイスロストが発生しても削除しない ) + +extern DXLIBAPI int GetGraphSize( int GrHandle, int *SizeXBuf, int *SizeYBuf ) ; // グラフィックハンドルが持つ画像のサイズを得る +extern DXLIBAPI int GetGraphSizeF( int GrHandle, float *SizeXBuf, float *SizeYBuf ) ; // グラフィックハンドルが持つ画像のサイズを得る( float型 ) +extern DXLIBAPI int GetGraphTextureSize( int GrHandle, int *SizeXBuf, int *SizeYBuf ) ; // グラフィックハンドルが持つ一つ目のテクスチャのサイズを得る +extern DXLIBAPI int GetGraphUseBaseGraphArea( int GrHandle, int *UseX, int *UseY, int *UseSizeX, int *UseSizeY ) ; // LoadDivGraph や DerivationGraph で元画像の一部分を使用している場合に、指定のグラフィックハンドルが使用している元画像の範囲を取得する +extern DXLIBAPI int GetGraphMipmapCount( int GrHandle ) ; // グラフィックハンドルが持つテクスチャのミップマップレベル数を取得する +extern DXLIBAPI int GetGraphFilePath( int GrHandle, TCHAR *FilePathBuffer ) ; // グラフィックハンドルが画像ファイルから読み込まれていた場合、その画像のファイルパスを取得する +extern DXLIBAPI int CheckDrawValidGraph( int GrHandle ) ; // 指定のグラフィックハンドルが描画対象にできる( SetDrawScreen の引数に渡せる )グラフィックハンドルかどうかを取得する( 戻り値 TRUE:描画対象にできるグラフィックハンドル FALSE:描画対象にできないグラフィックハンドル ) + +extern DXLIBAPI const COLORDATA* GetTexColorData( int AlphaCh, int AlphaTest, int ColorBitDepth, int DrawValid = FALSE ) ; // カラーデータを得る +extern DXLIBAPI const COLORDATA* GetTexColorData( const IMAGEFORMATDESC *Format ) ; // フォーマットに基づいたカラーデータを得る +extern DXLIBAPI const COLORDATA* GetTexColorData( int FormatIndex ) ; // 指定のフォーマットインデックスのカラーデータを得る +extern DXLIBAPI int GetMaxGraphTextureSize( int *SizeX, int *SizeY ) ; // グラフィックスデバイスが対応している最大テクスチャサイズを取得する +extern DXLIBAPI int GetValidRestoreShredPoint( void ) ; // グラフィックハンドルの画像を復元する関数が登録されているかどうかを取得する( TRUE:登録されている FALSE:登録されていない ) +extern DXLIBAPI int GetCreateGraphColorData( COLORDATA *ColorData, IMAGEFORMATDESC *Format ) ; // ( 現在効果なし )これから新たにグラフィックを作成する場合に使用するカラー情報を取得する + +// 画像パレット操作関係関数( ソフトウエア画像のみ使用可能 ) +extern DXLIBAPI int GetGraphPalette( int GrHandle, int ColorIndex, int *Red, int *Green, int *Blue ) ; // グラフィックハンドルのパレットを取得する( ソフトウエアレンダリングモードで、且つパレット画像の場合のみ使用可能 ) +extern DXLIBAPI int GetGraphOriginalPalette( int GrHandle, int ColorIndex, int *Red, int *Green, int *Blue ) ; // グラフィックハンドルの SetGraphPalette で変更する前のパレットを取得する( ソフトウエアレンダリングモードで、且つパレット画像の場合のみ使用可能 ) +extern DXLIBAPI int SetGraphPalette( int GrHandle, int ColorIndex, unsigned int Color ) ; // グラフィックハンドルのパレットを変更する( ソフトウエアレンダリングモードで、且つパレット画像の場合のみ使用可能 ) +extern DXLIBAPI int ResetGraphPalette( int GrHandle ) ; // SetGraphPalette で変更したパレットを全て元に戻す( ソフトウエアレンダリングモードで、且つパレット画像の場合のみ使用可能 ) + +// 図形描画関数 +extern DXLIBAPI int DrawLine( int x1, int y1, int x2, int y2, unsigned int Color, int Thickness = 1 ) ; // 線を描画する +extern DXLIBAPI int DrawLineAA( float x1, float y1, float x2, float y2, unsigned int Color, float Thickness = 1.0f ) ; // 線を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawBox( int x1, int y1, int x2, int y2, unsigned int Color, int FillFlag ) ; // 四角形を描画する +extern DXLIBAPI int DrawBoxAA( float x1, float y1, float x2, float y2, unsigned int Color, int FillFlag, float LineThickness = 1.0f ) ; // 四角形を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawFillBox( int x1, int y1, int x2, int y2, unsigned int Color ) ; // 中身を塗りつぶす四角形を描画する +extern DXLIBAPI int DrawLineBox( int x1, int y1, int x2, int y2, unsigned int Color ) ; // 枠だけの四角形の描画 する +extern DXLIBAPI int DrawCircle( int x, int y, int r, unsigned int Color, int FillFlag = TRUE, int LineThickness = 1 ) ; // 円を描画する +extern DXLIBAPI int DrawCircleAA( float x, float y, float r, int posnum, unsigned int Color, int FillFlag = TRUE, float LineThickness = 1.0f ) ; // 円を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawOval( int x, int y, int rx, int ry, unsigned int Color, int FillFlag, int LineThickness = 1 ) ; // 楕円を描画する +extern DXLIBAPI int DrawOvalAA( float x, float y, float rx, float ry, int posnum, unsigned int Color, int FillFlag, float LineThickness = 1.0f ) ; // 楕円を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawOval_Rect( int x1, int y1, int x2, int y2, unsigned int Color, int FillFlag ) ; // 指定の矩形に収まる円( 楕円 )を描画する +extern DXLIBAPI int DrawTriangle( int x1, int y1, int x2, int y2, int x3, int y3, unsigned int Color, int FillFlag ) ; // 三角形を描画する +extern DXLIBAPI int DrawTriangleAA( float x1, float y1, float x2, float y2, float x3, float y3, unsigned int Color, int FillFlag, float LineThickness = 1.0f ) ; // 三角形を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawQuadrangle( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, int FillFlag ) ; // 四角形を描画する +extern DXLIBAPI int DrawQuadrangleAA( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FillFlag, float LineThickness = 1.0f ) ; // 四角形を描画する( アンチエイリアス付き ) +extern DXLIBAPI int DrawRoundRect( int x1, int y1, int x2, int y2, int rx, int ry, unsigned int Color, int FillFlag ) ; // 角の丸い四角形を描画する +extern DXLIBAPI int DrawRoundRectAA( float x1, float y1, float x2, float y2, float rx, float ry, int posnum, unsigned int Color, int FillFlag, float LineThickness = 1.0f ) ; // 角の丸い四角形を描画する( アンチエイリアス付き ) +extern DXLIBAPI int BeginAADraw( void ) ; // DrawTriangleAA などのアンチエイリアス付き図形描画の準備を行う +extern DXLIBAPI int EndAADraw( void ) ; // DrawTriangleAA などのアンチエイリアス付き図形描画の後始末を行う +extern DXLIBAPI int DrawPixel( int x, int y, unsigned int Color ) ; // 点を描画する + +extern DXLIBAPI int Paint( int x, int y, unsigned int FillColor, ULONGLONG BoundaryColor = ULL_PARAM( 0xffffffffffffffff ) ) ; // 指定点から境界色があるところまで塗りつぶす(境界色を -1 にすると指定点の色の領域を塗りつぶす) + +extern DXLIBAPI int DrawPixelSet( const POINTDATA *PointDataArray, int Num ) ; // 点の集合を描画する +extern DXLIBAPI int DrawLineSet( const LINEDATA *LineDataArray, int Num ) ; // 線の集合を描画する + +extern DXLIBAPI int DrawPixel3D( VECTOR Pos, unsigned int Color ) ; // 3Dの点を描画する +extern DXLIBAPI int DrawPixel3DD( VECTOR_D Pos, unsigned int Color ) ; // 3Dの点を描画する +extern DXLIBAPI int DrawLine3D( VECTOR Pos1, VECTOR Pos2, unsigned int Color ) ; // 3Dの線分を描画する +extern DXLIBAPI int DrawLine3DD( VECTOR_D Pos1, VECTOR_D Pos2, unsigned int Color ) ; // 3Dの線分を描画する +extern DXLIBAPI int DrawTriangle3D( VECTOR Pos1, VECTOR Pos2, VECTOR Pos3, unsigned int Color, int FillFlag ) ; // 3Dの三角形を描画する +extern DXLIBAPI int DrawTriangle3DD( VECTOR_D Pos1, VECTOR_D Pos2, VECTOR_D Pos3, unsigned int Color, int FillFlag ) ; // 3Dの三角形を描画する +extern DXLIBAPI int DrawCube3D( VECTOR Pos1, VECTOR Pos2, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの立方体を描画する +extern DXLIBAPI int DrawCube3DD( VECTOR_D Pos1, VECTOR_D Pos2, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの立方体を描画する +extern DXLIBAPI int DrawSphere3D( VECTOR CenterPos, float r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの球体を描画する +extern DXLIBAPI int DrawSphere3DD( VECTOR_D CenterPos, double r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの球体を描画する +extern DXLIBAPI int DrawCapsule3D( VECTOR Pos1, VECTOR Pos2, float r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dのカプセルを描画する +extern DXLIBAPI int DrawCapsule3DD( VECTOR_D Pos1, VECTOR_D Pos2, double r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dのカプセルを描画する +extern DXLIBAPI int DrawCone3D( VECTOR TopPos, VECTOR BottomPos, float r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの円錐を描画する +extern DXLIBAPI int DrawCone3DD( VECTOR_D TopPos, VECTOR_D BottomPos, double r, int DivNum, unsigned int DifColor, unsigned int SpcColor, int FillFlag ) ; // 3Dの円錐を描画する + +// 画像描画関数 +extern DXLIBAPI int LoadGraphScreen( int x, int y, const TCHAR *GraphName, int TransFlag ) ; // 画像ファイルを読みこんで画面に描画する +extern DXLIBAPI int LoadGraphScreenWithStrLen( int x, int y, const TCHAR *GraphName, size_t GraphNameLength, int TransFlag ) ; // 画像ファイルを読みこんで画面に描画する + +extern DXLIBAPI int DrawGraph( int x, int y, int GrHandle, int TransFlag ) ; // 画像の等倍描画 +extern DXLIBAPI int DrawExtendGraph( int x1, int y1, int x2, int y2, int GrHandle, int TransFlag ) ; // 画像の拡大描画 +extern DXLIBAPI int DrawRotaGraph( int x, int y, double ExRate, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画 +extern DXLIBAPI int DrawRotaGraph2( int x, int y, int cx, int cy, double ExtRate, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画2( 回転中心指定付き ) +extern DXLIBAPI int DrawRotaGraph3( int x, int y, int cx, int cy, double ExtRateX, double ExtRateY, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 ) +extern DXLIBAPI int DrawRotaGraphFast( int x, int y, float ExRate, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast2( int x, int y, int cx, int cy, float ExtRate, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画2( 回転中心指定付き )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast3( int x, int y, int cx, int cy, float ExtRateX, float ExtRateY, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawModiGraph( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int GrHandle, int TransFlag ) ; // 画像の自由変形描画 +extern DXLIBAPI int DrawTurnGraph( int x, int y, int GrHandle, int TransFlag ) ; // 画像の左右反転描画 +extern DXLIBAPI int DrawReverseGraph( int x, int y, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の反転描画 + +extern DXLIBAPI int DrawGraphF( float xf, float yf, int GrHandle, int TransFlag ) ; // 画像の描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendGraphF( float x1f, float y1f, float x2f, float y2, int GrHandle, int TransFlag ) ; // 画像の拡大描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaGraphF( float xf, float yf, double ExRate, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaGraph2F( float xf, float yf, float cxf, float cyf, double ExtRate, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画2( 回転中心指定付き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaGraph3F( float xf, float yf, float cxf, float cyf, double ExtRateX, double ExtRateY, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaGraphFastF( float xf, float yf, float ExRate, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast2F( float xf, float yf, float cxf, float cyf, float ExtRate, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画2( 回転中心指定付き )( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast3F( float xf, float yf, float cxf, float cyf, float ExtRateX, float ExtRateY, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawModiGraphF( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, int GrHandle, int TransFlag ) ; // 画像の自由変形描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawTurnGraphF( float xf, float yf, int GrHandle, int TransFlag ) ; // 画像の左右反転描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawReverseGraphF( float xf, float yf, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の反転描画( 座標指定が float 版 ) + +extern DXLIBAPI int DrawChipMap( int Sx, int Sy, int XNum, int YNum, const int *MapData, int ChipTypeNum, int MapDataPitch, const int *ChipGrHandle, int TransFlag ) ; // チップ画像を使った2Dマップ描画 +extern DXLIBAPI int DrawChipMap( int MapWidth, int MapHeight, const int *MapData, int ChipTypeNum, const int *ChipGrHandle, int TransFlag, int MapDrawPointX, int MapDrawPointY, int MapDrawWidth, int MapDrawHeight, int ScreenX, int ScreenY ) ; // チップ画像を使った2Dマップ描画 +extern DXLIBAPI int DrawTile( int x1, int y1, int x2, int y2, int Tx, int Ty, double ExtRate, double Angle, int GrHandle, int TransFlag ) ; // 画像を指定領域にタイル状に描画する + +extern DXLIBAPI int DrawRectGraph( int DestX, int DestY, int SrcX, int SrcY, int Width, int Height, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを等倍描画 +extern DXLIBAPI int DrawRectExtendGraph( int DestX1, int DestY1, int DestX2, int DestY2, int SrcX, int SrcY, int SrcWidth, int SrcHeight, int GraphHandle, int TransFlag ) ; // 画像の指定矩形部分のみを拡大描画 +extern DXLIBAPI int DrawRectRotaGraph( int x, int y, int SrcX, int SrcY, int Width, int Height, double ExtRate, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画 +extern DXLIBAPI int DrawRectRotaGraph2( int x, int y, int SrcX, int SrcY, int Width, int Height, int cx, int cy, double ExtRate, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画2( 回転中心指定付き ) +extern DXLIBAPI int DrawRectRotaGraph3( int x, int y, int SrcX, int SrcY, int Width, int Height, int cx, int cy, double ExtRateX, double ExtRateY, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画3( 回転中心指定付き+縦横拡大率別指定版 ) +extern DXLIBAPI int DrawRectRotaGraphFast( int x, int y, int SrcX, int SrcY, int Width, int Height, float ExtRate, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectRotaGraphFast2( int x, int y, int SrcX, int SrcY, int Width, int Height, int cx, int cy, float ExtRate, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画2( 回転中心指定付き )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectRotaGraphFast3( int x, int y, int SrcX, int SrcY, int Width, int Height, int cx, int cy, float ExtRateX, float ExtRateY, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectModiGraph( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int SrcX, int SrcY, int Width, int Height, int GraphHandle, int TransFlag ) ; // 画像の指定矩形部分のみを自由変形描画 + +extern DXLIBAPI int DrawRectGraphF( float DestX, float DestY, int SrcX, int SrcY, int Width, int Height, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを等倍描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawRectExtendGraphF( float DestX1, float DestY1, float DestX2, float DestY2, int SrcX, int SrcY, int SrcWidth, int SrcHeight, int GraphHandle, int TransFlag ) ; // 画像の指定矩形部分のみを拡大描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawRectRotaGraphF( float x, float y, int SrcX, int SrcY, int Width, int Height, double ExtRate, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawRectRotaGraph2F( float x, float y, int SrcX, int SrcY, int Width, int Height, float cxf, float cyf, double ExtRate, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画2( 回転中心指定付き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRectRotaGraph3F( float x, float y, int SrcX, int SrcY, int Width, int Height, float cxf, float cyf, double ExtRateX, double ExtRateY, double Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRectRotaGraphFastF( float x, float y, int SrcX, int SrcY, int Width, int Height, float ExtRate, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectRotaGraphFast2F( float x, float y, int SrcX, int SrcY, int Width, int Height, float cxf, float cyf, float ExtRate, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画2( 回転中心指定付き )( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectRotaGraphFast3F( float x, float y, int SrcX, int SrcY, int Width, int Height, float cxf, float cyf, float ExtRateX, float ExtRateY, float Angle, int GraphHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の指定矩形部分のみを回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 座標指定が float 版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRectModiGraphF( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, int SrcX, int SrcY, int Width, int Height, int GraphHandle, int TransFlag ) ; // 画像の指定矩形部分のみを自由変形描画( 座標指定が float 版 ) + +extern DXLIBAPI int DrawBlendGraph( int x, int y, int GrHandle, int TransFlag, int BlendGraph, int BorderParam, int BorderRange ) ; // ブレンド画像と合成して画像を等倍描画する +extern DXLIBAPI int DrawBlendGraphPos( int x, int y, int GrHandle, int TransFlag, int bx, int by, int BlendGraph, int BorderParam, int BorderRange ) ; // ブレンド画像と合成して画像を等倍描画する( ブレンド画像の起点座標を指定する引数付き ) + +extern DXLIBAPI int DrawCircleGauge( int CenterX, int CenterY, double Percent, int GrHandle, double StartPercent = 0.0 , double Scale = 1.0 , int ReverseX = FALSE , int ReverseY = FALSE ) ; // 円グラフ的な描画を行う( GrHandle の画像の上下左右の端は透過色にしておく必要があります ) + +extern DXLIBAPI int DrawGraphToZBuffer( int X, int Y, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して画像の等倍描画 +extern DXLIBAPI int DrawTurnGraphToZBuffer( int x, int y, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して画像の左右反転描画 +extern DXLIBAPI int DrawReverseGraphToZBuffer( int x, int y, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の反転描画 +extern DXLIBAPI int DrawExtendGraphToZBuffer( int x1, int y1, int x2, int y2, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して画像の拡大描画 +extern DXLIBAPI int DrawRotaGraphToZBuffer( int x, int y, double ExRate, double Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画 +extern DXLIBAPI int DrawRotaGraph2ToZBuffer( int x, int y, int cx, int cy, double ExtRate, double Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画2( 回転中心指定付き ) +extern DXLIBAPI int DrawRotaGraph3ToZBuffer( int x, int y, int cx, int cy, double ExtRateX, double ExtRateY, double Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 ) +extern DXLIBAPI int DrawRotaGraphFastToZBuffer( int x, int y, float ExRate, float Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast2ToZBuffer( int x, int y, int cx, int cy, float ExtRate, float Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画2( 回転中心指定付き )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawRotaGraphFast3ToZBuffer( int x, int y, int cx, int cy, float ExtRateX, float ExtRateY, float Angle, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // Zバッファに対して画像の回転描画3( 回転中心指定付き+縦横拡大率別指定版 )( 高速版、座標計算のアルゴリズムが簡略化されています、描画結果に不都合が無ければこちらの方が高速です ) +extern DXLIBAPI int DrawModiGraphToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int GrHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して画像の自由変形描画 +extern DXLIBAPI int DrawBoxToZBuffer( int x1, int y1, int x2, int y2, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して矩形の描画 +extern DXLIBAPI int DrawCircleToZBuffer( int x, int y, int r, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して円の描画 +extern DXLIBAPI int DrawTriangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して三角形を描画する +extern DXLIBAPI int DrawQuadrangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して四角形を描画する +extern DXLIBAPI int DrawRoundRectToZBuffer( int x1, int y1, int x2, int y2, int rx, int ry, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // Zバッファに対して角の丸い四角形を描画する + +extern DXLIBAPI int DrawPolygon( const VERTEX *VertexArray, int PolygonNum, int GrHandle, int TransFlag, int UVScaling = FALSE ) ; // 2Dポリゴンを描画する( Vertex:三角形を形成する頂点配列の先頭アドレス( 頂点の数はポリゴンの数×3 ) PolygonNum:描画するポリゴンの数 GrHandle:使用するグラフィックハンドル TransFlag:透過色処理を行うかどうか( TRUE:行う FALSE:行わない ) UVScaling:基本FALSEでOK ) +extern DXLIBAPI int DrawPolygon2D( const VERTEX2D *VertexArray, int PolygonNum, int GrHandle, int TransFlag ) ; // 2Dポリゴンを描画する +extern DXLIBAPI int DrawPolygon3D( const VERTEX3D *VertexArray, int PolygonNum, int GrHandle, int TransFlag ) ; // 3Dポリゴンを描画する +extern DXLIBAPI int DrawPolygonIndexed2D( const VERTEX2D *VertexArray, int VertexNum, const unsigned short *IndexArray, int PolygonNum, int GrHandle, int TransFlag ) ; // 2Dポリゴンを描画する( 頂点インデックスを使用 ) +extern DXLIBAPI int DrawPolygonIndexed3D( const VERTEX3D *VertexArray, int VertexNum, const unsigned short *IndexArray, int PolygonNum, int GrHandle, int TransFlag ) ; // 3Dポリゴンを描画する( 頂点インデックスを使用 ) +extern DXLIBAPI int DrawPolygonIndexed3DBase( const VERTEX_3D *VertexArray, int VertexNum, const unsigned short *IndexArray, int IndexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 3Dポリゴンを描画する( 頂点インデックスを使用 )( 旧バージョン用 ) +extern DXLIBAPI int DrawPolygon3DBase( const VERTEX_3D *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 3Dポリゴンを描画する( 旧バージョン用 ) +extern DXLIBAPI int DrawPolygon3D( const VERTEX_3D *VertexArray, int PolygonNum, int GrHandle, int TransFlag ) ; // 3Dポリゴンを描画する( 旧バージョン用 ) + +extern DXLIBAPI int DrawPolygonBase( const VERTEX *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag, int UVScaling = FALSE ) ; // 2Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitive2D( const VERTEX2D *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 2Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitive3D( const VERTEX3D *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 3Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitiveIndexed2D( const VERTEX2D *VertexArray, int VertexNum, const unsigned short *IndexArray, int IndexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 2Dプリミティブを描画する(頂点インデックス使用) +extern DXLIBAPI int DrawPrimitiveIndexed3D( const VERTEX3D *VertexArray, int VertexNum, const unsigned short *IndexArray, int IndexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 3Dプリミティブを描画する(頂点インデックス使用) + +extern DXLIBAPI int DrawPolygon3D_UseVertexBuffer( int VertexBufHandle, int GrHandle, int TransFlag ) ; // 頂点バッファを使用して3Dポリゴンを描画する +extern DXLIBAPI int DrawPrimitive3D_UseVertexBuffer( int VertexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 頂点バッファを使用して3Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitive3D_UseVertexBuffer2( int VertexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int StartVertex, int UseVertexNum, int GrHandle, int TransFlag ) ; // 頂点バッファを使用して3Dプリミティブを描画する +extern DXLIBAPI int DrawPolygonIndexed3D_UseVertexBuffer( int VertexBufHandle, int IndexBufHandle, int GrHandle, int TransFlag ) ; // 頂点バッファとインデックスバッファを使用して3Dポリゴンを描画する +extern DXLIBAPI int DrawPrimitiveIndexed3D_UseVertexBuffer( int VertexBufHandle, int IndexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int GrHandle, int TransFlag ) ; // 頂点バッファとインデックスバッファを使用して3Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitiveIndexed3D_UseVertexBuffer2( int VertexBufHandle, int IndexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int BaseVertex, int StartVertex, int UseVertexNum, int StartIndex, int UseIndexNum, int GrHandle, int TransFlag ) ; // 頂点バッファとインデックスバッファを使用して3Dプリミティブを描画する + +extern DXLIBAPI int DrawGraph3D( float x, float y, float z, int GrHandle, int TransFlag ) ; // 画像の3D描画 +extern DXLIBAPI int DrawExtendGraph3D( float x, float y, float z, double ExRateX, double ExRateY, int GrHandle, int TransFlag ) ; // 画像の拡大3D描画 +extern DXLIBAPI int DrawRotaGraph3D( float x, float y, float z, double ExRate, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転3D描画 +extern DXLIBAPI int DrawRota2Graph3D( float x, float y, float z, float cx, float cy, double ExtRateX, double ExtRateY, double Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 画像の回転3D描画(回転中心指定型) +extern DXLIBAPI int DrawModiBillboard3D( VECTOR Pos, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, int GrHandle, int TransFlag ) ; // 画像の自由変形3D描画 +extern DXLIBAPI int DrawBillboard3D( VECTOR Pos, float cx, float cy, float Size, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // 3D空間上に画像を描画 + + +// 描画設定関係関数 +extern DXLIBAPI int SetDrawMode( int DrawMode ) ; // 描画モードを設定する +extern DXLIBAPI int GetDrawMode( void ) ; // 描画モードを取得する +extern DXLIBAPI int SetDrawBlendMode( int BlendMode, int BlendParam ) ; // 描画ブレンドモードを設定する +extern DXLIBAPI int GetDrawBlendMode( int *BlendMode, int *BlendParam ) ; // 描画ブレンドモードを取得する +extern DXLIBAPI int SetDrawAlphaTest( int TestMode, int TestParam ) ; // 描画時のアルファテストの設定を行う( TestMode:テストモード( DX_CMP_GREATER等 -1でデフォルト動作に戻す ) TestParam:描画アルファ値との比較に使用する値( 0~255 ) ) +extern DXLIBAPI int GetDrawAlphaTest( int *TestMode, int *TestParam ) ; // 描画時のアルファテストの設定を取得する( TestMode:テストモード( DX_CMP_GREATER等 -1でデフォルト動作に戻す ) TestParam:描画アルファ値との比較に使用する値( 0~255 ) ) +extern DXLIBAPI int SetBlendGraph( int BlendGraph, int BorderParam, int BorderRange ) ; // ( SetBlendGraphParam の BlendType = DX_BLENDGRAPHTYPE_WIPE の処理を行う旧関数 )描画処理時に描画する画像とブレンドするαチャンネル付き画像をセットする( BlendGraph を -1 でブレンド機能を無効 ) +extern DXLIBAPI int SetBlendGraphParam( int BlendGraph, int BlendType, ... ) ; // 描画処理時に描画する画像とブレンドする画像のブレンド設定を行う、BlendGraph を -1 にすれば設定を解除、その場合 BlendType とその後ろのパラメータは無視される +// int SetBlendGraphParam( int BlendGraph, int BlendType = DX_BLENDGRAPHTYPE_NORMAL, int Ratio = ( 0( ブレンド率0% )~255( ブレンド率100% ) ) ) ; +// int SetBlendGraphParam( int BlendGraph, int BlendType = DX_BLENDGRAPHTYPE_WIPE, int BorderParam = 境界位置(0~255), int BorderRange = 境界幅(指定できる値は1、64、128、255の4つ) ) ; +// int SetBlendGraphParam( int BlendGraph, int BlendType = DX_BLENDGRAPHTYPE_ALPHA ) ; +extern DXLIBAPI int SetBlendGraphPosition( int x, int y ) ; // ブレンド画像の起点座標をセットする +extern DXLIBAPI int SetBlendGraphPositionMode( int BlendGraphPositionMode /* DX_BLENDGRAPH_POSMODE_DRAWGRAPH など */ ) ; // ブレンド画像の適応座標モードを設定する +extern DXLIBAPI int SetDrawBright( int RedBright, int GreenBright, int BlueBright ) ; // 描画輝度を設定する +extern DXLIBAPI int GetDrawBright( int *Red, int *Green, int *Blue ) ; // 描画輝度を取得する +extern DXLIBAPI int SetWriteAlphaChannelFlag( int Flag ) ; // 描画先のアルファチャンネルの内容を書き換えるかを設定する( FALSE:書き換えない TRUE:書き換える( デフォルト ) ) +extern DXLIBAPI int GetWriteAlphaChannelFlag( void ) ; // 描画先のアルファチャンネルの内容を書き換えるかを取得する( FALSE:書き換えない TRUE:書き換える( デフォルト ) ) +extern DXLIBAPI int CheckSeparateAlphaBlendEnable( void ) ; // 描画先のアルファチャンネルの内容を書き換えないことができるかどうかを取得する( TRUE:書き換えないことができる FALSE:書き換えないことができない ) +extern DXLIBAPI int SetIgnoreDrawGraphColor( int EnableFlag ) ; // 描画する画像のRGB成分を無視するかどうかを指定する( EnableFlag:この機能を使うかどうか( TRUE:使う FALSE:使わない( デフォルト ) ) ) +extern DXLIBAPI int SetMaxAnisotropy( int MaxAnisotropy ) ; // 最大異方性値を設定する +extern DXLIBAPI int SetUseLarge3DPositionSupport( int UseFlag ) ; // 3D処理で使用する座標値が 10000000.0f などの大きな値になっても描画の崩れを小さく抑える処理を使用するかどうかを設定する、DxLib_Init の呼び出し前でのみ使用可能( TRUE:描画の崩れを抑える処理を使用する( CPU負荷が上がります )  FALSE:描画の崩れを抑える処理は使用しない( デフォルト ) ) + +extern DXLIBAPI int SetUseZBufferFlag( int Flag ) ; // Zバッファを使用するかどうかを設定する( 2Dと3D描画に影響 )( TRUE:Zバッファを使用する FALSE:Zバッファを使用しない( デフォルト ) ) +extern DXLIBAPI int SetWriteZBufferFlag( int Flag ) ; // Zバッファに書き込みを行うかどうかを設定する( 2Dと3D描画に影響 )( TRUE:書き込みを行う FALSE:書き込みを行わない( デフォルト ) ) +extern DXLIBAPI int SetZBufferCmpType( int CmpType /* DX_CMP_NEVER 等 */ ) ; // ZバッファのZ値と書き込むZ値との比較モードを設定する( 2Dと3D描画に影響 )( CmpType:DX_CMP_NEVER等( デフォルト:DX_CMP_LESSEQUAL ) ) +extern DXLIBAPI int SetZBias( int Bias ) ; // 書き込むZ値のバイアスを設定する( 2Dと3D描画に影響 )( Bias:バイアス値( デフォルト:0 ) ) +extern DXLIBAPI int SetUseZBuffer3D( int Flag ) ; // Zバッファを使用するかどうかを設定する( 3D描画のみに影響 )( TRUE:Zバッファを使用する FALSE:Zバッファを使用しない( デフォルト ) ) +extern DXLIBAPI int SetWriteZBuffer3D( int Flag ) ; // Zバッファに書き込みを行うかどうかを設定する( 3D描画のみに影響 )( TRUE:書き込みを行う FALSE:書き込みを行わない( デフォルト ) ) +extern DXLIBAPI int SetZBufferCmpType3D( int CmpType /* DX_CMP_NEVER 等 */ ) ; // ZバッファのZ値と書き込むZ値との比較モードを設定する( 3D描画のみに影響 )( CmpType:DX_CMP_NEVER等( デフォルト:DX_CMP_LESSEQUAL ) ) +extern DXLIBAPI int SetZBias3D( int Bias ) ; // 書き込むZ値のバイアスを設定する( 3D描画のみに影響 )( Bias:バイアス値( デフォルト:0 ) ) +extern DXLIBAPI int SetDrawZ( float Z ) ; // 2D描画でZバッファに書き込むZ値を設定する( Z:書き込むZ値( デフォルト:0.2f ) ) + +extern DXLIBAPI int SetDrawArea( int x1, int y1, int x2, int y2 ) ; // 描画可能領域の設定する +extern DXLIBAPI int GetDrawArea( RECT *Rect ) ; // 描画可能領域を取得する +extern DXLIBAPI int SetDrawAreaFull( void ) ; // 描画可能領域を描画対象画面全体にする +extern DXLIBAPI int SetDraw3DScale( float Scale ) ; // 3D描画の拡大率を設定する + +extern DXLIBAPI int SetRestoreShredPoint( void (* ShredPoint )( void ) ) ; // SetRestoreGraphCallback の旧名 +extern DXLIBAPI int SetRestoreGraphCallback( void (* Callback )( void ) ) ; // グラフィックハンドル復元関数を登録する +extern DXLIBAPI int RunRestoreShred( void ) ; // グラフィック復元関数を実行する +extern DXLIBAPI int SetGraphicsDeviceRestoreCallbackFunction( void (* Callback )( void *Data ), void *CallbackData ) ; // グラフィックスデバイスがロストから復帰した際に呼ばれるコールバック関数を設定する +extern DXLIBAPI int SetGraphicsDeviceLostCallbackFunction( void (* Callback )( void *Data ), void *CallbackData ) ; // グラフィックスデバイスがロストから復帰する前に呼ばれるコールバック関数を設定する + +extern DXLIBAPI int SetTransformTo2D( const MATRIX *Matrix ) ; // 2D描画に使用される変換行列を設定する +extern DXLIBAPI int SetTransformTo2DD( const MATRIX_D *Matrix ) ; // 2D描画に使用される変換行列を設定する +extern DXLIBAPI int ResetTransformTo2D( void ) ; // 2D描画用に使用する変換行列の設定を初期状態に戻す +extern DXLIBAPI int SetTransformToWorld( const MATRIX *Matrix ) ; // ローカル座標からワールド座標に変換するための行列を設定する +extern DXLIBAPI int SetTransformToWorldD( const MATRIX_D *Matrix ) ; // ローカル座標からワールド座標に変換するための行列を設定する +extern DXLIBAPI int GetTransformToWorldMatrix( MATRIX *MatBuf ) ; // ローカル座標からワールド座標に変換するための行列を取得する +extern DXLIBAPI int GetTransformToWorldMatrixD( MATRIX_D *MatBuf ) ; // ローカル座標からワールド座標に変換するための行列を取得する +extern DXLIBAPI int SetTransformToView( const MATRIX *Matrix ) ; // ワールド座標からビュー座標に変換するための行列を設定する +extern DXLIBAPI int SetTransformToViewD( const MATRIX_D *Matrix ) ; // ワールド座標からビュー座標に変換するための行列を設定する +extern DXLIBAPI int GetTransformToViewMatrix( MATRIX *MatBuf ) ; // ワールド座標からビュー座標に変換するための行列を取得する +extern DXLIBAPI int GetTransformToViewMatrixD( MATRIX_D *MatBuf ) ; // ワールド座標からビュー座標に変換するための行列を取得する +extern DXLIBAPI int SetTransformToProjection( const MATRIX *Matrix ) ; // ビュー座標からプロジェクション座標に変換するための行列を設定する +extern DXLIBAPI int SetTransformToProjectionD( const MATRIX_D *Matrix ) ; // ビュー座標からプロジェクション座標に変換するための行列を設定する +extern DXLIBAPI int GetTransformToProjectionMatrix( MATRIX *MatBuf ) ; // ビュー座標からプロジェクション座標に変換するための行列を取得する +extern DXLIBAPI int GetTransformToProjectionMatrixD( MATRIX_D *MatBuf ) ; // ビュー座標からプロジェクション座標に変換するための行列を取得する +extern DXLIBAPI int SetTransformToViewport( const MATRIX *Matrix ) ; // ビューポート行列を設定する +extern DXLIBAPI int SetTransformToViewportD( const MATRIX_D *Matrix ) ; // ビューポート行列を設定する +extern DXLIBAPI int GetTransformToViewportMatrix( MATRIX *MatBuf ) ; // ビューポート行列を取得する +extern DXLIBAPI int GetTransformToViewportMatrixD( MATRIX_D *MatBuf ) ; // ビューポート行列を取得する +extern DXLIBAPI int GetTransformToAPIViewportMatrix( MATRIX *MatBuf ) ; // Direct3Dで自動適用されるビューポート行列を取得する +extern DXLIBAPI int GetTransformToAPIViewportMatrixD( MATRIX_D *MatBuf ) ; // Direct3Dで自動適用されるビューポート行列を取得する +extern DXLIBAPI int SetDefTransformMatrix( void ) ; // デフォルトの変換行列を設定する +extern DXLIBAPI int GetTransformPosition( VECTOR *LocalPos, float *x, float *y ) ; // ローカル座標からスクリーン座標を取得する +extern DXLIBAPI int GetTransformPositionD( VECTOR_D *LocalPos, double *x, double *y ) ; // ローカル座標からスクリーン座標を取得する +extern DXLIBAPI float GetBillboardPixelSize( VECTOR WorldPos, float WorldSize ) ; // ワールド空間上のビルボードのサイズからスクリーンに投影した場合のピクセル単位のサイズを取得する +extern DXLIBAPI double GetBillboardPixelSizeD( VECTOR_D WorldPos, double WorldSize ) ; // ワールド空間上のビルボードのサイズからスクリーンに投影した場合のピクセル単位のサイズを取得する +extern DXLIBAPI VECTOR ConvWorldPosToViewPos( VECTOR WorldPos ) ; // ワールド座標をビュー座標に変換する +extern DXLIBAPI VECTOR_D ConvWorldPosToViewPosD( VECTOR_D WorldPos ) ; // ワールド座標をビュー座標に変換する +extern DXLIBAPI VECTOR ConvWorldPosToScreenPos( VECTOR WorldPos ) ; // ワールド座標をスクリーン座標に変換する +extern DXLIBAPI VECTOR_D ConvWorldPosToScreenPosD( VECTOR_D WorldPos ) ; // ワールド座標をスクリーン座標に変換する +extern DXLIBAPI FLOAT4 ConvWorldPosToScreenPosPlusW( VECTOR WorldPos ) ; // ワールド座標をスクリーン座標に変換する、最後のXYZ座標をWで割る前の値を得る +extern DXLIBAPI DOUBLE4 ConvWorldPosToScreenPosPlusWD( VECTOR_D WorldPos ) ; // ワールド座標をスクリーン座標に変換する、最後のXYZ座標をWで割る前の値を得る +extern DXLIBAPI VECTOR ConvScreenPosToWorldPos( VECTOR ScreenPos ) ; // スクリーン座標をワールド座標に変換する +extern DXLIBAPI VECTOR_D ConvScreenPosToWorldPosD( VECTOR_D ScreenPos ) ; // スクリーン座標をワールド座標に変換する +extern DXLIBAPI VECTOR ConvScreenPosToWorldPos_ZLinear( VECTOR ScreenPos ) ; // スクリーン座標をワールド座標に変換する( Z座標が線形 ) +extern DXLIBAPI VECTOR_D ConvScreenPosToWorldPos_ZLinearD( VECTOR_D ScreenPos ) ; // スクリーン座標をワールド座標に変換する( Z座標が線形 ) + +extern DXLIBAPI int SetUseCullingFlag( int Flag ) ; // SetUseBackCulling の旧名称 +extern DXLIBAPI int SetUseBackCulling( int Flag /* DX_CULLING_LEFT 等 */ ) ; // ポリゴンカリングモードを設定する +extern DXLIBAPI int GetUseBackCulling( void ) ; // ポリゴンカリングモードを取得する + +extern DXLIBAPI int SetTextureAddressMode( int Mode /* DX_TEXADDRESS_WRAP 等 */ , int Stage = -1 ) ; // テクスチャアドレスモードを設定する +extern DXLIBAPI int SetTextureAddressModeUV( int ModeU, int ModeV, int Stage = -1 ) ; // テクスチャアドレスモードを設定する( U と V を別々に設定する ) +extern DXLIBAPI int SetTextureAddressTransform( float TransU, float TransV, float ScaleU, float ScaleV, float RotCenterU, float RotCenterV, float Rotate ) ; // テクスチャ座標変換パラメータを設定する +extern DXLIBAPI int SetTextureAddressTransformMatrix( MATRIX Matrix ) ; // テクスチャ座標変換行列を設定する +extern DXLIBAPI int ResetTextureAddressTransform( void ) ; // テクスチャ座標変換設定をリセットする + +extern DXLIBAPI int SetFogEnable( int Flag ) ; // フォグを有効にするかどうかを設定する( TRUE:有効 FALSE:無効 ) +extern DXLIBAPI int GetFogEnable( void ) ; // フォグが有効かどうかを取得する( TRUE:有効 FALSE:無効 ) +extern DXLIBAPI int SetFogMode( int Mode /* DX_FOGMODE_NONE 等 */ ) ; // フォグモードを設定する +extern DXLIBAPI int GetFogMode( void ) ; // フォグモードを取得する +extern DXLIBAPI int SetFogColor( int r, int g, int b ) ; // フォグカラーを設定する +extern DXLIBAPI int GetFogColor( int *r, int *g, int *b ) ; // フォグカラーを取得する +extern DXLIBAPI int SetFogStartEnd( float start, float end ) ; // フォグが始まる距離と終了する距離を設定する( 0.0f ~ 1.0f ) +extern DXLIBAPI int GetFogStartEnd( float *start, float *end ) ; // フォグが始まる距離と終了する距離を取得する( 0.0f ~ 1.0f ) +extern DXLIBAPI int SetFogDensity( float density ) ; // フォグの密度を設定する( 0.0f ~ 1.0f ) +extern DXLIBAPI float GetFogDensity( void ) ; // フォグの密度を取得する( 0.0f ~ 1.0f ) + + +// 画面関係関数 +extern DXLIBAPI unsigned int GetPixel( int x, int y ) ; // 指定座標の色を取得する +extern DXLIBAPI COLOR_F GetPixelF( int x, int y ) ; // 指定座標の色を取得する( float型 ) +extern DXLIBAPI int SetBackgroundColor( int Red, int Green, int Blue, int Alpha = 0 ) ; // メインウインドウの背景色を設定する( Red,Green,Blue,Alpha:それぞれ 0~255 ) +extern DXLIBAPI int GetBackgroundColor( int *Red, int *Green, int *Blue, int *Alpha = NULL ) ; // メインウインドウの背景色を取得する( Red,Green,Blue,Alpha:それぞれ 0~255 ) +extern DXLIBAPI int GetDrawScreenGraph( int x1, int y1, int x2, int y2, int GrHandle, int UseClientFlag = TRUE ) ; // 描画先の画面から指定領域の画像情報をグラフィックハンドルに転送する +extern DXLIBAPI int BltDrawValidGraph( int TargetDrawValidGrHandle, int x1, int y1, int x2, int y2, int DestX, int DestY, int DestGrHandle ) ; // SetDrawScreen で描画対象にできるグラフィックハンドルから指定領域の画像情報を別のグラフィックハンドルに転送する +extern DXLIBAPI int ScreenFlip( void ) ; // 裏画面と表画面の内容を交換する +extern DXLIBAPI int ScreenCopy( void ) ; // 裏画面の内容を表画面に転送する +extern DXLIBAPI int WaitVSync( int SyncNum ) ; // 垂直同期信号を待つ +extern DXLIBAPI int ClearDrawScreen( const RECT *ClearRect = NULL ) ; // 画面をクリアする +extern DXLIBAPI int ClearDrawScreenZBuffer( const RECT *ClearRect = NULL ) ; // 画面のZバッファをクリアする +extern DXLIBAPI int ClsDrawScreen( void ) ; // ClearDrawScreenの旧名称 +extern DXLIBAPI int SetDrawScreen( int DrawScreen ) ; // 描画先画面を設定する( MakeScreen で作成したグラフィックハンドルも渡すことができます ) +extern DXLIBAPI int GetDrawScreen( void ) ; // 描画先画面を取得する +extern DXLIBAPI int GetActiveGraph( void ) ; // GetDrawScreen の旧名称 +extern DXLIBAPI int SetUseSetDrawScreenSettingReset( int UseFlag ) ; // SetDrawScreen を実行した際にカメラや描画範囲の設定をリセットするかを設定する( UseFlag TRUE:リセットする( デフォルト ) FALSE:リセットしない ) +extern DXLIBAPI int GetUseSetDrawScreenSettingReset( void ) ; // SetDrawScreen を実行した際にカメラや描画範囲の設定をリセットするかを取得する +extern DXLIBAPI int SetDrawZBuffer( int DrawScreen ) ; // 描画先Zバッファのセット( DrawScreen 付属のZバッファを描画先Zバッファにする、DrawScreen を -1 にするとデフォルトの描画先Zバッファに戻る ) +extern DXLIBAPI int SetGraphMode( int ScreenSizeX, int ScreenSizeY, int ColorBitDepth, int RefreshRate = 60 ) ; // 画面モードを設定する +extern DXLIBAPI int SetUserScreenImage( void *Image, int PixelFormat /* DX_USER_SCREEN_PIXEL_FORMAT_R5G6B5 等 */ ) ; // 画面のメモリイメージをセットする( DxLib_Init の前で呼ぶ必要がある( DxLib_Init の前に一度でも呼んでいれば、DxLib_Init 後は Image のアドレスのみの変更目的で呼ぶことは可能 )、PixelFormat に DX_USER_SCREEN_PIXEL_FORMAT_R5G6B5 又は DX_USER_SCREEN_PIXEL_FORMAT_X8R8G8B8 の二つ以外を指定した場合はDXライブラリの描画関数は一切使用できなくなります ) +extern DXLIBAPI int SetFullScreenResolutionMode( int ResolutionMode /* DX_FSRESOLUTIONMODE_NATIVE 等 */ ) ; // フルスクリーン解像度モードを設定する +extern DXLIBAPI int GetFullScreenResolutionMode( int *ResolutionMode, int *UseResolutionMode ) ; // フルスクリーン解像度モードを取得する( UseResolutionMode は実際に使用されている解像度モード( 例えば DX_FSRESOLUTIONMODE_NATIVE を指定していてもモニタが指定の解像度に対応していない場合は UseResolutionMode が DX_FSRESOLUTIONMODE_DESKTOP や DX_FSRESOLUTIONMODE_MAXIMUM になります ) ) +extern DXLIBAPI int SetFullScreenScalingMode( int ScalingMode /* DX_FSSCALINGMODE_NEAREST 等 */ , int FitScaling = FALSE ) ; // フルスクリーンモード時の画面拡大モードを設定する +extern DXLIBAPI int SetEmulation320x240( int Flag ) ; // 640x480の画面で320x240の画面解像度にするかどうかを設定する、640x480以外の解像度では無効( TRUE:有効 FALSE:無効 ) +extern DXLIBAPI int SetZBufferSize( int ZBufferSizeX, int ZBufferSizeY ) ; // 画面用のZバッファのサイズを設定する +extern DXLIBAPI int SetZBufferBitDepth( int BitDepth ) ; // 画面用のZバッファのビット深度を設定する( 16 or 24 or 32 ) +extern DXLIBAPI int SetWaitVSyncFlag( int Flag ) ; // ScreenFlip 実行時にVSYNC待ちをするかどうかを設定する +extern DXLIBAPI int GetWaitVSyncFlag( void ) ; // ScreenFlip 実行時にVSYNC待ちをするかどうかを取得する +extern DXLIBAPI int SetFullSceneAntiAliasingMode( int Samples, int Quality ) ; // 画面のフルスクリーンアンチエイリアスモードの設定を行う( DxLib_Init の前でのみ使用可能 ) +extern DXLIBAPI int SetGraphDisplayArea( int x1, int y1, int x2, int y2 ) ; // ScreenFlip 時に表画面全体に転送する裏画面の領域を設定する( DxLib_Init の前でのみ使用可能 ) +extern DXLIBAPI int SetChangeScreenModeGraphicsSystemResetFlag( int Flag ) ; // 画面モード変更時( とウインドウモード変更時 )にグラフィックスシステムの設定やグラフィックハンドルをリセットするかどうかを設定する( TRUE:リセットする( デフォルト ) FALSE:リセットしない ) +extern DXLIBAPI int GetScreenState( int *SizeX, int *SizeY, int *ColorBitDepth ) ; // 現在の画面の解像度とカラービット数を得る +extern DXLIBAPI int GetDrawScreenSize( int *XBuf, int *YBuf ) ; // 描画先のサイズを取得する +extern DXLIBAPI int GetScreenBitDepth( void ) ; // 画面のカラービット数を取得する +extern DXLIBAPI int GetColorBitDepth( void ) ; // GetScreenBitDepth の旧名称 +extern DXLIBAPI int GetChangeDisplayFlag( void ) ; // 画面モードが変更されているかどうかを取得する +extern DXLIBAPI int GetVideoMemorySize( int *AllSize, int *FreeSize ) ; // ( 現在正常に動作しません )ビデオメモリの容量を得る +extern DXLIBAPI int GetRefreshRate( void ) ; // 現在の画面のリフレッシュレートを取得する +extern DXLIBAPI int GetDisplayNum( void ) ; // ディスプレイの数を取得 +extern DXLIBAPI int GetDisplayInfo( int DisplayIndex, int *DesktopRectX, int *DesktopRectY, int *DesktopSizeX, int *DesktopSizeY, int *IsPrimary ) ; // ディスプレイのデスクトップ上での矩形位置を取得する +extern DXLIBAPI int GetDisplayModeNum( int DisplayIndex = 0 ) ; // 変更可能なディスプレイモードの数を取得する +extern DXLIBAPI DISPLAYMODEDATA GetDisplayMode( int ModeIndex, int DisplayIndex = 0 ) ; // 変更可能なディスプレイモードの情報を取得する( ModeIndex は 0 ~ GetDisplayModeNum の戻り値-1 ) +extern DXLIBAPI int GetDisplayMaxResolution( int *SizeX, int *SizeY, int DisplayIndex = 0 ) ; // ディスプレイの最大解像度を取得する +extern DXLIBAPI const COLORDATA* GetDispColorData( void ) ; // ディスプレイのカラーデータアドレスを取得する +extern DXLIBAPI int GetMultiDrawScreenNum( void ) ; // 同時に描画を行うことができる画面の数を取得する +extern DXLIBAPI int GetDrawFloatCoordType( void ) ; // DrawGraphF 等の浮動小数点値で座標を指定する関数における座標タイプを取得する( 戻り値 : DX_DRAWFLOATCOORDTYPE_DIRECT3D9 など ) + +// その他設定関係関数 +extern DXLIBAPI int SetUseNormalDrawShader( int Flag ) ; // 通常描画にプログラマブルシェーダーを使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない ) +extern DXLIBAPI int SetUseSoftwareRenderModeFlag( int Flag ) ; // ソフトウエアレンダリングモードを使用するかどうかを設定する( TRUE:使用する FALSE:使用しない( デフォルト ) )( DxLib_Init の前に呼ぶ必要があります ) +extern DXLIBAPI int SetNotUse3DFlag( int Flag ) ; // ( 同効果のSetUseSoftwareRenderModeFlag を使用して下さい )3D機能を使わないかどうかを設定する +extern DXLIBAPI int SetUse3DFlag( int Flag ) ; // ( 同効果のSetUseSoftwareRenderModeFlag を使用して下さい )3D機能を使うかどうかを設定する +extern DXLIBAPI int GetUse3DFlag( void ) ; // 描画に3D機能を使うかどうかを取得する +extern DXLIBAPI int SetScreenMemToVramFlag( int Flag ) ; // ( 同効果のSetUseSoftwareRenderModeFlag を使用して下さい )画面のピクセルデータをVRAMに置くかどうかを設定する +extern DXLIBAPI int GetScreenMemToSystemMemFlag( void ) ; // 画面のピクセルデータがシステムメモリ上に存在するかを取得する + +extern DXLIBAPI int SetWindowDrawRect( const RECT *DrawRect ) ; // 通常使用しない +extern DXLIBAPI int RestoreGraphSystem( void ) ; // DXライブラリのグラフィックス処理関連の復帰処理を行う +extern DXLIBAPI int SetUseHardwareVertexProcessing( int Flag ) ; // ハードウエアの頂点演算処理機能を使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない )( DxLib_Init の前に呼ぶ必要があります ) +extern DXLIBAPI int SetUsePixelLighting( int Flag ) ; // ピクセル単位でライティングを行うかどうかを設定する、要 ShaderModel 3.0( TRUE:ピクセル単位のライティングを行う FALSE:頂点単位のライティングを行う( デフォルト ) ) +extern DXLIBAPI int SetUseOldDrawModiGraphCodeFlag( int Flag ) ; // 古いバージョンの DrawModiGraph 関数のコードを使用するかどうかを設定する +extern DXLIBAPI int SetUseVramFlag( int Flag ) ; // ( 現在効果なし )VRAMを使用するかのフラグをセットする +extern DXLIBAPI int GetUseVramFlag( void ) ; // ( 現在効果なし )2Dグラフィックサーフェス作成時にシステムメモリーを使用するかのフラグ取得 +extern DXLIBAPI int SetBasicBlendFlag( int Flag ) ; // ( 現在効果なし )簡略化ブレンド処理を行うか否かのフラグをセットする +extern DXLIBAPI int SetUseBasicGraphDraw3DDeviceMethodFlag( int Flag ) ; // ( 現在効果なし )単純図形の描画に3Dデバイスの機能を使用するかどうかを設定する +extern DXLIBAPI int SetUseDisplayIndex( int Index ) ; // DXライブラリのウインドウを表示するディスプレイデバイスを設定する( -1 を指定するとマウスカーソルがあるディスプレイデバイスにDXライブラリのウインドウを表示する ) +extern DXLIBAPI int RenderVertex( void ) ; // 頂点バッファに溜まった頂点データを描画する( 特殊用途 ) + +// 描画パフォーマンス関係関数 +extern DXLIBAPI int GetDrawCallCount( void ) ; // 前々回の ScreenFlip 呼び出しから、前回の ScreenFlip 呼び出しまでの間に行われた描画コールの回数を取得する +extern DXLIBAPI float GetFPS( void ) ; // フレームレート( 1秒間に呼ばれる ScreenFlip の回数 )を取得する + +#ifndef DX_NON_SAVEFUNCTION + +// 描画先画面保存関数 +// Jpeg_Quality = 0:低画質~100:高画質 +// Png_CompressionLevel = 0:無圧縮~ 9:最高圧縮 +extern DXLIBAPI int SaveDrawScreen( int x1, int y1, int x2, int y2, const TCHAR *FileName, int SaveType = DX_IMAGESAVETYPE_BMP , int Jpeg_Quality = 80 , int Jpeg_Sample2x1 = TRUE , int Png_CompressionLevel = -1 ) ; // 現在描画対象になっている画面をファイルで保存する +extern DXLIBAPI int SaveDrawScreenWithStrLen( int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int SaveType = DX_IMAGESAVETYPE_BMP , int Jpeg_Quality = 80 , int Jpeg_Sample2x1 = TRUE , int Png_CompressionLevel = -1 ) ; // 現在描画対象になっている画面をファイルで保存する +extern DXLIBAPI int SaveDrawScreenToBMP( int x1, int y1, int x2, int y2, const TCHAR *FileName ) ; // 現在描画対象になっている画面をBMP形式で保存する +extern DXLIBAPI int SaveDrawScreenToBMPWithStrLen( int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength ) ; // 現在描画対象になっている画面をBMP形式で保存する +extern DXLIBAPI int SaveDrawScreenToDDS( int x1, int y1, int x2, int y2, const TCHAR *FileName ) ; // 現在描画対象になっている画面をDDS形式で保存する +extern DXLIBAPI int SaveDrawScreenToDDSWithStrLen( int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength ) ; // 現在描画対象になっている画面をDDS形式で保存する +extern DXLIBAPI int SaveDrawScreenToJPEG( int x1, int y1, int x2, int y2, const TCHAR *FileName, int Quality = 80 , int Sample2x1 = TRUE ) ; // 現在描画対象になっている画面をJPEG形式で保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +extern DXLIBAPI int SaveDrawScreenToJPEGWithStrLen( int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int Quality = 80 , int Sample2x1 = TRUE ) ; // 現在描画対象になっている画面をJPEG形式で保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +extern DXLIBAPI int SaveDrawScreenToPNG( int x1, int y1, int x2, int y2, const TCHAR *FileName, int CompressionLevel = -1 ) ; // 現在描画対象になっている画面をPNG形式で保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 +extern DXLIBAPI int SaveDrawScreenToPNGWithStrLen( int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int CompressionLevel = -1 ) ; // 現在描画対象になっている画面をPNG形式で保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 + +// 描画対象にできるグラフィックハンドル保存関数 +// Jpeg_Quality = 0:低画質~100:高画質 +// Png_CompressionLevel = 0:無圧縮~ 9:最高圧縮 +extern DXLIBAPI int SaveDrawValidGraph( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, int SaveType = DX_IMAGESAVETYPE_BMP , int Jpeg_Quality = 80 , int Jpeg_Sample2x1 = TRUE , int Png_CompressionLevel = -1 ) ; // 描画対象にできるグラフィックハンドルをファイルで保存する +extern DXLIBAPI int SaveDrawValidGraphWithStrLen( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int SaveType = DX_IMAGESAVETYPE_BMP , int Jpeg_Quality = 80 , int Jpeg_Sample2x1 = TRUE , int Png_CompressionLevel = -1 ) ; // 描画対象にできるグラフィックハンドルをファイルで保存する +extern DXLIBAPI int SaveDrawValidGraphToBMP( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName ) ; // 描画対象にできるグラフィックハンドルをBMP形式で保存する +extern DXLIBAPI int SaveDrawValidGraphToBMPWithStrLen( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength ) ; // 描画対象にできるグラフィックハンドルをBMP形式で保存する +extern DXLIBAPI int SaveDrawValidGraphToDDS( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName ) ; // 描画対象にできるグラフィックハンドルをDDS形式で保存する +extern DXLIBAPI int SaveDrawValidGraphToDDSWithStrLen( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength ) ; // 描画対象にできるグラフィックハンドルをDDS形式で保存する +extern DXLIBAPI int SaveDrawValidGraphToJPEG( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, int Quality = 80 , int Sample2x1 = TRUE ) ; // 描画対象にできるグラフィックハンドルをJPEG形式で保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +extern DXLIBAPI int SaveDrawValidGraphToJPEGWithStrLen( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int Quality = 80 , int Sample2x1 = TRUE ) ; // 描画対象にできるグラフィックハンドルをJPEG形式で保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +extern DXLIBAPI int SaveDrawValidGraphToPNG( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, int CompressionLevel = -1 ) ; // 描画対象にできるグラフィックハンドルをPNG形式で保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 +extern DXLIBAPI int SaveDrawValidGraphToPNGWithStrLen( int GrHandle, int x1, int y1, int x2, int y2, const TCHAR *FileName, size_t FileNameLength, int CompressionLevel = -1 ) ; // 描画対象にできるグラフィックハンドルをPNG形式で保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 + +#endif // DX_NON_SAVEFUNCTION + +// 頂点バッファ関係関数 +extern DXLIBAPI int CreateVertexBuffer( int VertexNum, int VertexType /* DX_VERTEX_TYPE_NORMAL_3D 等 */ ) ; // 頂点バッファを作成する( -1:エラー 0以上:頂点バッファハンドル ) +extern DXLIBAPI int DeleteVertexBuffer( int VertexBufHandle ) ; // 頂点バッファを削除する +extern DXLIBAPI int InitVertexBuffer( void ) ; // すべての頂点バッファを削除する +extern DXLIBAPI int SetVertexBufferData( int SetIndex, const void *VertexArray, int VertexNum, int VertexBufHandle ) ; // 頂点バッファに頂点データを転送する +extern DXLIBAPI void * GetBufferVertexBuffer( int VertexBufHandle ) ; // 頂点バッファハンドルの頂点バッファのアドレスを取得する +extern DXLIBAPI int UpdateVertexBuffer( int VertexBufHandle, int UpdateStartIndex, int UpdateVertexNum ) ; // 頂点バッファハンドルの頂点バッファへの変更を適用する( GetBufferVertexBuffer で取得したバッファへの変更を反映する ) +extern DXLIBAPI int CreateIndexBuffer( int IndexNum, int IndexType /* DX_INDEX_TYPE_16BIT 等 */ ) ; // インデックスバッファを作成する( -1:エラー 0以上:インデックスバッファハンドル ) +extern DXLIBAPI int DeleteIndexBuffer( int IndexBufHandle ) ; // インデックスバッファを削除する +extern DXLIBAPI int InitIndexBuffer( void ) ; // すべてのインデックスバッファを削除する +extern DXLIBAPI int SetIndexBufferData( int SetIndex, const void *IndexArray, int IndexNum, int IndexBufHandle ) ; // インデックスバッファにインデックスデータを転送する +extern DXLIBAPI void * GetBufferIndexBuffer( int IndexBufHandle ) ; // インデックスバッファハンドルのインデックスバッファのアドレスを取得する +extern DXLIBAPI int UpdateIndexBuffer( int IndexBufHandle, int UpdateStartIndex, int UpdateIndexNum ) ; // インデックスバッファハンドルのインデックスバッファへの変更を適用する( GetBufferIndexBuffer で取得したバッファへの変更を反映する ) +extern DXLIBAPI int GetMaxPrimitiveCount( void ) ; // グラフィックスデバイスが対応している一度に描画できるプリミティブの最大数を取得する +extern DXLIBAPI int GetMaxVertexIndex( void ) ; // グラフィックスデバイスが対応している一度に使用することのできる最大頂点数を取得する + +// シェーダー関係関数 +extern DXLIBAPI int GetValidShaderVersion( void ) ; // 使用できるシェーダーのバージョンを取得する( 0=使えない 200=シェーダーモデル2.0が使用可能 300=シェーダーモデル3.0が使用可能 ) + +extern DXLIBAPI int LoadVertexShader( const TCHAR *FileName ) ; // 頂点シェーダーバイナリをファイルから読み込み頂点シェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadVertexShaderWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 頂点シェーダーバイナリをファイルから読み込み頂点シェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadGeometryShader( const TCHAR *FileName ) ; // ジオメトリシェーダーバイナリをファイルから読み込みジオメトリシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadGeometryShaderWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // ジオメトリシェーダーバイナリをファイルから読み込みジオメトリシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadPixelShader( const TCHAR *FileName ) ; // ピクセルシェーダーバイナリをファイルから読み込みピクセルシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadPixelShaderWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // ピクセルシェーダーバイナリをファイルから読み込みピクセルシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadVertexShaderFromMem( const void *ImageAddress, int ImageSize ) ; // メモリに読み込まれた頂点シェーダーバイナリから頂点シェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadGeometryShaderFromMem( const void *ImageAddress, int ImageSize ) ; // メモリに読み込まれたジオメトリシェーダーバイナリからジオメトリシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int LoadPixelShaderFromMem( const void *ImageAddress, int ImageSize ) ; // メモリに読み込まれたピクセルシェーダーバイナリからピクセルシェーダーハンドルを作成する( 戻り値 -1:エラー -1以外:シェーダーハンドル ) +extern DXLIBAPI int DeleteShader( int ShaderHandle ) ; // シェーダーハンドルの削除( 頂点シェーダー・ピクセルシェーダー共通 ) +extern DXLIBAPI int InitShader( void ) ; // シェーダーハンドルを全て削除する( 頂点シェーダーハンドル・ピクセルシェーダーハンドルどちらもすべて削除 ) + +extern DXLIBAPI int GetConstIndexToShader( const TCHAR *ConstantName, int ShaderHandle ) ; // 指定の名前を持つ定数が使用するシェーダー定数の番号を取得する +extern DXLIBAPI int GetConstIndexToShaderWithStrLen( const TCHAR *ConstantName, size_t ConstantNameLength, int ShaderHandle ) ; // 指定の名前を持つ定数が使用するシェーダー定数の番号を取得する +extern DXLIBAPI int GetConstCountToShader( const TCHAR *ConstantName, int ShaderHandle ) ; // 指定の名前を持つ定数が使用するシェーダー定数の数を取得する +extern DXLIBAPI int GetConstCountToShaderWithStrLen( const TCHAR *ConstantName, size_t ConstantNameLength, int ShaderHandle ) ; // 指定の名前を持つ定数が使用するシェーダー定数の数を取得する +extern DXLIBAPI const FLOAT4 *GetConstDefaultParamFToShader( const TCHAR *ConstantName, int ShaderHandle ) ; // 指定の名前を持つ浮動小数点数定数のデフォルトパラメータが格納されているメモリアドレスを取得する +extern DXLIBAPI const FLOAT4 *GetConstDefaultParamFToShaderWithStrLen( const TCHAR *ConstantName, size_t ConstantNameLength, int ShaderHandle ) ; // 指定の名前を持つ浮動小数点数定数のデフォルトパラメータが格納されているメモリアドレスを取得する +extern DXLIBAPI int SetVSConstSF( int ConstantIndex, float Param ) ; // 頂点シェーダーの float 型定数を設定する +extern DXLIBAPI int SetVSConstF( int ConstantIndex, FLOAT4 Param ) ; // 頂点シェーダーの float 型定数を設定する +extern DXLIBAPI int SetVSConstFMtx( int ConstantIndex, MATRIX Param ) ; // 頂点シェーダーの float 型定数に行列を設定する +extern DXLIBAPI int SetVSConstFMtxT( int ConstantIndex, MATRIX Param ) ; // 頂点シェーダーの float 型定数に転置した行列を設定する +extern DXLIBAPI int SetVSConstSI( int ConstantIndex, int Param ) ; // 頂点シェーダーの int 型定数を設定する +extern DXLIBAPI int SetVSConstI( int ConstantIndex, INT4 Param ) ; // 頂点シェーダーの int 型定数を設定する +extern DXLIBAPI int SetVSConstB( int ConstantIndex, BOOL Param ) ; // 頂点シェーダーの BOOL 型定数を設定する +extern DXLIBAPI int SetVSConstSFArray( int ConstantIndex, const float *ParamArray, int ParamNum ) ; // 頂点シェーダーの float 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstFArray( int ConstantIndex, const FLOAT4 *ParamArray, int ParamNum ) ; // 頂点シェーダーの float 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstFMtxArray( int ConstantIndex, const MATRIX *ParamArray, int ParamNum ) ; // 頂点シェーダーの float 型定数に行列を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstFMtxTArray( int ConstantIndex, const MATRIX *ParamArray, int ParamNum ) ; // 頂点シェーダーの float 型定数に転置した行列を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstSIArray( int ConstantIndex, const int *ParamArray, int ParamNum ) ; // 頂点シェーダーの int 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstIArray( int ConstantIndex, const INT4 *ParamArray, int ParamNum ) ; // 頂点シェーダーの int 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetVSConstBArray( int ConstantIndex, const BOOL *ParamArray, int ParamNum ) ; // 頂点シェーダーの BOOL 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int ResetVSConstF( int ConstantIndex, int ParamNum ) ; // 頂点シェーダーの float 型定数の設定をリセットする +extern DXLIBAPI int ResetVSConstI( int ConstantIndex, int ParamNum ) ; // 頂点シェーダーの int 型定数の設定をリセットする +extern DXLIBAPI int ResetVSConstB( int ConstantIndex, int ParamNum ) ; // 頂点シェーダーの BOOL 型定数の設定をリセットする + +extern DXLIBAPI int SetPSConstSF( int ConstantIndex, float Param ) ; // ピクセルシェーダーの float 型定数を設定する +extern DXLIBAPI int SetPSConstF( int ConstantIndex, FLOAT4 Param ) ; // ピクセルシェーダーの float 型定数を設定する +extern DXLIBAPI int SetPSConstFMtx( int ConstantIndex, MATRIX Param ) ; // ピクセルシェーダーの float 型定数に行列を設定する +extern DXLIBAPI int SetPSConstFMtxT( int ConstantIndex, MATRIX Param ) ; // ピクセルシェーダーの float 型定数に転置した行列を設定する +extern DXLIBAPI int SetPSConstSI( int ConstantIndex, int Param ) ; // ピクセルシェーダーの int 型定数を設定する +extern DXLIBAPI int SetPSConstI( int ConstantIndex, INT4 Param ) ; // ピクセルシェーダーの int 型定数を設定する +extern DXLIBAPI int SetPSConstB( int ConstantIndex, BOOL Param ) ; // ピクセルシェーダーの BOOL 型定数を設定する +extern DXLIBAPI int SetPSConstSFArray( int ConstantIndex, const float *ParamArray, int ParamNum ) ; // ピクセルシェーダーの float 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstFArray( int ConstantIndex, const FLOAT4 *ParamArray, int ParamNum ) ; // ピクセルシェーダーの float 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstFMtxArray( int ConstantIndex, const MATRIX *ParamArray, int ParamNum ) ; // ピクセルシェーダーの float 型定数に行列を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstFMtxTArray( int ConstantIndex, const MATRIX *ParamArray, int ParamNum ) ; // ピクセルシェーダーの float 型定数に転置した行列を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstSIArray( int ConstantIndex, const int *ParamArray, int ParamNum ) ; // ピクセルシェーダーの int 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstIArray( int ConstantIndex, const INT4 *ParamArray, int ParamNum ) ; // ピクセルシェーダーの int 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int SetPSConstBArray( int ConstantIndex, const BOOL *ParamArray, int ParamNum ) ; // ピクセルシェーダーの BOOL 型定数を設定する( 配列を使って連番インデックスに一度に設定 ) +extern DXLIBAPI int ResetPSConstF( int ConstantIndex, int ParamNum ) ; // ピクセルシェーダーの float 型定数の設定をリセットする +extern DXLIBAPI int ResetPSConstI( int ConstantIndex, int ParamNum ) ; // ピクセルシェーダーの int 型定数の設定をリセットする +extern DXLIBAPI int ResetPSConstB( int ConstantIndex, int ParamNum ) ; // ピクセルシェーダーの BOOL 型定数の設定をリセットする + +extern DXLIBAPI int SetRenderTargetToShader( int TargetIndex, int DrawScreen, int SurfaceIndex = 0 , int MipLevel = 0 ) ; // シェーダーを使用した描画での描画先を設定する( DrawScreen に -1 を渡すと無効化 ) +extern DXLIBAPI int SetUseTextureToShader( int StageIndex, int GraphHandle ) ; // シェーダーを使用した描画で使用するグラフィックハンドルを設定する +extern DXLIBAPI int SetUseVertexShader( int ShaderHandle ) ; // シェーダーを使用した描画に使用する頂点シェーダーを設定する( -1を渡すと解除 ) +extern DXLIBAPI int SetUseGeometryShader( int ShaderHandle ) ; // シェーダーを使用した描画に使用するジオメトリシェーダーを設定する( -1を渡すと解除 ) +extern DXLIBAPI int SetUsePixelShader( int ShaderHandle ) ; // シェーダーを使用した描画に使用するピクセルシェーダーを設定する( -1を渡すと解除 ) + +extern DXLIBAPI int CalcPolygonBinormalAndTangentsToShader( VERTEX3DSHADER *VertexArray, int PolygonNum ) ; // ポリゴンの頂点の接線と従法線をUV座標から計算してセットする +extern DXLIBAPI int CalcPolygonIndexedBinormalAndTangentsToShader( VERTEX3DSHADER *VertexArray, int VertexNum, const unsigned short *IndexArray, int PolygonNum ) ; // ポリゴンの頂点の接線と従法線をUV座標から計算してセットする( 頂点インデックスを使用する ) + +extern DXLIBAPI int DrawBillboard3DToShader( VECTOR Pos, float cx, float cy, float Size, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE , int ReverseYFlag = FALSE ) ; // シェーダーを使ってビルボードを描画する +extern DXLIBAPI int DrawPolygon2DToShader( const VERTEX2DSHADER *VertexArray, int PolygonNum ) ; // シェーダーを使って2Dポリゴンを描画する +extern DXLIBAPI int DrawPolygon3DToShader( const VERTEX3DSHADER *VertexArray, int PolygonNum ) ; // シェーダーを使って3Dポリゴンを描画する +extern DXLIBAPI int DrawPolygonIndexed2DToShader( const VERTEX2DSHADER *VertexArray, int VertexNum, const unsigned short *IndexArray, int PolygonNum ) ; // シェーダーを使って2Dポリゴンを描画する( 頂点インデックスを使用する ) +extern DXLIBAPI int DrawPolygonIndexed3DToShader( const VERTEX3DSHADER *VertexArray, int VertexNum, const unsigned short *IndexArray, int PolygonNum ) ; // シェーダーを使って3Dポリゴンを描画する( 頂点インデックスを使用する ) +extern DXLIBAPI int DrawPrimitive2DToShader( const VERTEX2DSHADER *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って2Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitive3DToShader( const VERTEX3DSHADER *VertexArray, int VertexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って3Dプリミティブを描画する +extern DXLIBAPI int DrawPrimitiveIndexed2DToShader( const VERTEX2DSHADER *VertexArray, int VertexNum, const unsigned short *IndexArray, int IndexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って2Dプリミティブを描画する( 頂点インデックスを使用する ) +extern DXLIBAPI int DrawPrimitiveIndexed3DToShader( const VERTEX3DSHADER *VertexArray, int VertexNum, const unsigned short *IndexArray, int IndexNum, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って3Dプリミティブを描画する( 頂点インデックスを使用する ) +extern DXLIBAPI int DrawPolygon3DToShader_UseVertexBuffer( int VertexBufHandle ) ; // シェーダーを使って3Dポリゴンを描画する( 頂点バッファ使用版 ) +extern DXLIBAPI int DrawPolygonIndexed3DToShader_UseVertexBuffer( int VertexBufHandle, int IndexBufHandle ) ; // シェーダーを使って3Dポリゴンを描画する( 頂点バッファとインデックスバッファ使用版 ) +extern DXLIBAPI int DrawPrimitive3DToShader_UseVertexBuffer( int VertexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って3Dプリミティブを描画する( 頂点バッファ使用版 ) +extern DXLIBAPI int DrawPrimitive3DToShader_UseVertexBuffer2( int VertexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int StartVertex, int UseVertexNum ) ; // シェーダーを使って3Dプリミティブを描画する( 頂点バッファ使用版 ) +extern DXLIBAPI int DrawPrimitiveIndexed3DToShader_UseVertexBuffer( int VertexBufHandle, int IndexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */ ) ; // シェーダーを使って3Dプリミティブを描画する( 頂点バッファとインデックスバッファ使用版 ) +extern DXLIBAPI int DrawPrimitiveIndexed3DToShader_UseVertexBuffer2( int VertexBufHandle, int IndexBufHandle, int PrimitiveType /* DX_PRIMTYPE_TRIANGLELIST 等 */, int BaseVertex, int StartVertex, int UseVertexNum, int StartIndex, int UseIndexNum ) ; // シェーダーを使って3Dプリミティブを描画する( 頂点バッファとインデックスバッファ使用版 ) + +// シェーダー用定数バッファ関係関数 +extern DXLIBAPI int InitShaderConstantBuffer( void ) ; // 全てのシェーダー用定数バッファハンドルを削除する +extern DXLIBAPI int CreateShaderConstantBuffer( int BufferSize ) ; // シェーダー用定数バッファハンドルを初期化する +extern DXLIBAPI int DeleteShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルを削除する +extern DXLIBAPI void * GetBufferShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルの定数バッファのアドレスを取得する +extern DXLIBAPI int UpdateShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルの定数バッファへの変更を適用する +extern DXLIBAPI int SetShaderConstantBuffer( int SConstBufHandle, int TargetShader /* DX_SHADERTYPE_VERTEX など */ , int Slot ) ; // シェーダー用定数バッファハンドルの定数バッファを指定のシェーダーの指定のスロットにセットする + +// フィルター関係関数 +#ifndef DX_NON_FILTER +extern DXLIBAPI int GraphFilter( int GrHandle, int FilterType /* DX_GRAPH_FILTER_GAUSS 等 */ , ... ) ; // 画像にフィルター処理を行う +extern DXLIBAPI int GraphFilterBlt( int SrcGrHandle, int DestGrHandle, int FilterType /* DX_GRAPH_FILTER_GAUSS 等 */ , ... ) ; // 画像のフィルター付き転送を行う +extern DXLIBAPI int GraphFilterRectBlt( int SrcGrHandle, int DestGrHandle, int SrcX1, int SrcY1, int SrcX2, int SrcY2, int DestX, int DestY, int FilterType /* DX_GRAPH_FILTER_GAUSS 等 */ , ... ) ; // 画像のフィルター付き転送を行う( 矩形指定 ) +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_MONO, int Cb = 青色差( -255 ~ 255 ), int Cr = 赤色差( -255 ~ 255 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_GAUSS, int PixelWidth = 使用ピクセル幅( 8 , 16 , 32 の何れか ), int Param = ぼかしパラメータ( 100 で約1ピクセル分の幅 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_DOWN_SCALE, int DivNum = 元のサイズの何分の1か、という値( 2 , 4 , 8 の何れか ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_BRIGHT_CLIP, int CmpType = クリップタイプ( DX_CMP_LESS:CmpParam以下をクリップ 又は DX_CMP_GREATER:CmpParam以上をクリップ ), int CmpParam = クリップパラメータ( 0 ~ 255 ), int ClipFillFlag = クリップしたピクセルを塗りつぶすかどうか( TRUE:塗りつぶす FALSE:塗りつぶさない ), unsigned int ClipFillColor = クリップしたピクセルに塗る色値( GetColor で取得する )( ClipFillFlag が FALSE の場合は使用しない ), int ClipFillAlpha = クリップしたピクセルに塗るα値( 0 ~ 255 )( ClipFillFlag が FALSE の場合は使用しない ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_BRIGHT_SCALE, int MinBright = 変換後に真っ暗になる明るさ( 0 ~ 255 ), int MaxBright = 変換後に真っ白になる明るさ( 0 ~ 255 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_HSB, int HueType = Hue の意味( 0:相対値 1:絶対値 ), int Hue = 色相パラメータ( HueType が 0 の場合 = ピクセルの色相に対する相対値( -180 ~ 180 ) HueType が 1 の場合 = 色相の絶対値( 0 ~ 360 ) ), int Saturation = 彩度( -255 ~ ), int Bright = 輝度( -255 ~ 255 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_INVERT ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_LEVEL, int Min = 変換元の下限値( 0 ~ 255 ), int Max = 変換元の上限値( 0 ~ 255 ), int Gamma = ガンマ値( 100 でガンマ補正無し、0 とそれ以下の値は不可 ), int AfterMin = 変換後の最低値( 0 ~ 255 ), int AfterMax = 変換後の最大値( 0 ~ 255 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_TWO_COLOR, int Threshold = 閾値( 0 ~ 255 ), unsigned int LowColor = 閾値より値が低かったピクセルの変換後の色値( GetColor で取得する ), int LowAlpha = 閾値より値が低かったピクセルの変換後のα値( 0 ~ 255 ), unsigned int HighColor = 閾値より値が高かったピクセルの変換後の色値( GetColor で取得する ), int HighAlpha = 閾値より値が高かったピクセルの変換後のα値( 0 ~ 255 ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_GRADIENT_MAP, int MapGrHandle = グラデーションマップのグラフィックハンドル( 元画像の輝度からグラデーションマップ画像の x 座標を算出しますので縦幅は1dotでもOK ), int Reverse = グラデーションマップ左右反転フラグ( TRUE : グラデーションマップを左右反転して使う FALSE : 左右反転しない ) ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_PREMUL_ALPHA ) ; // 通常のアルファチャンネル付き画像を乗算済みアルファ画像に変換するフィルタ +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_INTERP_ALPHA ) ; // 乗算済みα画像を通常のアルファチャンネル付き画像に変換するフィルタ +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_YUV_TO_RGB ) ; // YUVカラーをRGBカラーに変換するフィルタ +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_Y2UV1_TO_RGB, int UVGrHandle = YUVカラーのUV成分のみで、且つYに対して解像度が半分( 若しくは 4 分の 1 )のグラフィックハンドル( U=R, V=G ) ) ; // YUVカラーをRGBカラーに変換するフィルタ( UV成分が Y成分の半分・又は4分の1( 横・縦片方若しくは両方 )の解像度しかない場合用 ) +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_YUV_TO_RGB_RRA ) ; // YUVカラーをRGBカラーに変換するフィルタ( 且つ右側半分のRの値をアルファ値として扱う ) +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_Y2UV1_TO_RGB_RRA, int UVGrHandle = YUVカラーのUV成分のみで、且つYに対して解像度が半分( 若しくは 4 分の 1 )のグラフィックハンドル( U=R, V=G ) ) ; // YUVカラーをRGBカラーに変換するフィルタ( UV成分が Y成分の半分・又は4分の1( 横・縦片方若しくは両方 )の解像度しかない場合用 )( 且つ右側半分のRの値をアルファ値として扱う ) +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_BICUBIC_SCALE, int DestSizeX = スケーリング後の横ピクセル数, int DestSizeY = スケーリング後の縦ピクセル数 ) ; +// int GraphFilter( int GrHandle, int FilterType = DX_GRAPH_FILTER_LANCZOS3_SCALE, int DestSizeX = スケーリング後の横ピクセル数, int DestSizeY = スケーリング後の縦ピクセル数 ) ; + +extern DXLIBAPI int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio /* ブレンド効果の影響度( 0:0% 255:100% ) */ , int BlendType /* DX_GRAPH_BLEND_ADD 等 */ , ... ) ; // 二つの画像をブレンドする +extern DXLIBAPI int GraphBlendBlt( int SrcGrHandle, int BlendGrHandle, int DestGrHandle, int BlendRatio /* ブレンド効果の影響度( 0:0% 255:100% ) */ , int BlendType /* DX_GRAPH_BLEND_ADD 等 */ , ... ) ; // 二つの画像をブレンドして結果を指定の画像に出力する +extern DXLIBAPI int GraphBlendRectBlt( int SrcGrHandle, int BlendGrHandle, int DestGrHandle, int SrcX1, int SrcY1, int SrcX2, int SrcY2, int BlendX, int BlendY, int DestX, int DestY, int BlendRatio /* ブレンド効果の影響度( 0:0% 255:100% ) */ , int BlendType /* DX_GRAPH_BLEND_ADD 等 */ , ... ) ; // 二つの画像をブレンドして結果を指定の画像に出力する( 矩形指定 ) +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_NORMAL ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_RGBA_SELECT_MIX, int SelectR = ( 出力の赤分となる成分 DX_RGBA_SELECT_SRC_R 等 ), int SelectG = ( 出力の緑成分となる成分 DX_RGBA_SELECT_SRC_R 等 ), int SelectB = ( 出力の青成分となる成分 DX_RGBA_SELECT_SRC_R 等 ), int SelectA = ( 出力のα成分となる成分 DX_RGBA_SELECT_SRC_R 等 ) ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_MULTIPLE ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_DIFFERENCE ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_ADD ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_SCREEN ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_OVERLAY ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_DODGE ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_BURN ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_DARKEN ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_LIGHTEN ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_SOFTLIGHT ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_HARDLIGHT ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_EXCLUSION ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_NORMAL_ALPHACH ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_ADD_ALPHACH ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_MULTIPLE_A_ONLY ) ; +// int GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType = DX_GRAPH_BLEND_PMA_MULTIPLE_A_ONLY ) ; +#endif // DX_NON_FILTER + +#ifndef DX_NON_MOVIE +// ムービーグラフィック関係関数 +extern DXLIBAPI int PlayMovie( const TCHAR *FileName, int ExRate, int PlayType ) ; // 動画ファイルの再生 +extern DXLIBAPI int PlayMovieWithStrLen( const TCHAR *FileName, size_t FileNameLength, int ExRate, int PlayType ) ; // 動画ファイルの再生 +extern DXLIBAPI int GetMovieImageSize_File( const TCHAR *FileName, int *SizeX, int *SizeY ) ; // 動画ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI int GetMovieImageSize_File_WithStrLen( const TCHAR *FileName, size_t FileNameLength, int *SizeX, int *SizeY ) ; // 動画ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI int GetMovieImageSize_Mem( const void *FileImage, int FileImageSize, int *SizeX, int *SizeY ) ; // メモリ上に展開された動画ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI int OpenMovieToGraph( const TCHAR *FileName, int FullColor = TRUE ) ; // 動画ファイルを開く +extern DXLIBAPI int OpenMovieToGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, int FullColor = TRUE ) ; // 動画ファイルを開く +extern DXLIBAPI int PlayMovieToGraph( int GraphHandle, int PlayType = DX_PLAYTYPE_BACK , int SysPlay = 0 ) ; // 動画ファイルを使用するグラフィックハンドルの動画ファイルの再生を開始する +extern DXLIBAPI int PauseMovieToGraph( int GraphHandle, int SysPause = 0 ) ; // 動画ファイルを使用するグラフィックハンドルの動画ファイルの再生を停止する +extern DXLIBAPI int AddMovieFrameToGraph( int GraphHandle, unsigned int FrameNum ) ; // 動画ファイルの再生フレームを進める、戻すことは出来ない( 動画ファイルが停止状態で、且つ Ogg Theora のみ有効 ) +extern DXLIBAPI int SeekMovieToGraph( int GraphHandle, int Time ) ; // 動画ファイルの再生位置を設定する(ミリ秒単位) +extern DXLIBAPI int SetPlaySpeedRateMovieToGraph( int GraphHandle, double SpeedRate ) ; // 動画ファイルの再生速度を設定する( 1.0 = 等倍速 2.0 = 2倍速 )、一部のファイルフォーマットのみで有効な機能です +extern DXLIBAPI int GetMovieStateToGraph( int GraphHandle ) ; // 動画ファイルの再生状態を得る +extern DXLIBAPI int SetMovieVolumeToGraph( int Volume, int GraphHandle ) ; // 動画ファイルの音量を設定する(0~10000) +extern DXLIBAPI int ChangeMovieVolumeToGraph( int Volume, int GraphHandle ) ; // 動画ファイルの音量を設定する(0~255) +extern DXLIBAPI const BASEIMAGE* GetMovieBaseImageToGraph( int GraphHandle, int *ImageUpdateFlag = NULL , int ImageUpdateFlagSetOnly = FALSE ) ; // 動画ファイルの基本イメージデータを取得する( ImageUpdateFlag に int 型変数のアドレスを渡すと、イメージが更新された場合は 1 が、更新されていない場合は 0 が格納されます、 ImageUpdateFlagSetOnly を TRUE にすると戻り値の BASEIMAGE は有効な画像データではなくなりますが、BASEIMAGE の更新処理が行われませんので、ImageUpdateFlag を利用して画像が更新されたかどうかだけをチェックしたい場合は TRUE にしてください ) +extern DXLIBAPI int GetMovieTotalFrameToGraph( int GraphHandle ) ; // 動画ファイルの総フレーム数を得る( Ogg Theora でのみ有効 ) +extern DXLIBAPI int TellMovieToGraph( int GraphHandle ) ; // 動画ファイルの再生位置を取得する(ミリ秒単位) +extern DXLIBAPI int TellMovieToGraphToFrame( int GraphHandle ) ; // 動画ファイルの再生位置を取得する(フレーム単位) +extern DXLIBAPI int SeekMovieToGraphToFrame( int GraphHandle, int Frame ) ; // 動画ファイルの再生位置を設定する(フレーム単位) +extern DXLIBAPI LONGLONG GetOneFrameTimeMovieToGraph( int GraphHandle ) ; // 動画ファイルの1フレームあたりの時間を取得する(戻り値:1フレームの時間(単位:マイクロ秒)) +extern DXLIBAPI int GetLastUpdateTimeMovieToGraph( int GraphHandle ) ; // 動画ファイルのイメージを最後に更新した時間を得る(ミリ秒単位) +extern DXLIBAPI int SetMovieRightImageAlphaFlag( int Flag ) ; // 読み込む動画ファイル映像の右半分の赤成分をα情報として扱うかどうかをセットする( TRUE:α情報として扱う FALSE:α情報として扱わない( デフォルト ) ) +extern DXLIBAPI int SetMovieColorA8R8G8B8Flag( int Flag ) ; // 読み込む動画ファイルが32bitカラーだった場合、A8R8G8B8 形式として扱うかどうかをセットする、32bitカラーではない動画ファイルに対しては無効( Flag TRUE:A8R8G8B8として扱う FALSE:X8R8G8B8として扱う( デフォルト ) ) +extern DXLIBAPI int SetMovieUseYUVFormatSurfaceFlag( int Flag ) ; // YUVフォーマットのサーフェスが使用できる場合はYUVフォーマットのサーフェスを使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:RGBフォーマットのサーフェスを使用する ) +#endif // DX_NON_MOVIE + +// カメラ関係関数 +extern DXLIBAPI int SetCameraNearFar( float Near, float Far ) ; // カメラの Nearクリップ面と Farクリップ面の距離を設定する +extern DXLIBAPI int SetCameraNearFarD( double Near, double Far ) ; // カメラの Nearクリップ面と Farクリップ面の距離を設定する +extern DXLIBAPI int SetCameraPositionAndTarget_UpVecY( VECTOR Position, VECTOR Target ) ; // カメラの視点、注視点、アップベクトルを設定する( アップベクトルはY軸方向から導き出す ) +extern DXLIBAPI int SetCameraPositionAndTarget_UpVecYD( VECTOR_D Position, VECTOR_D Target ) ; // カメラの視点、注視点、アップベクトルを設定する( アップベクトルはY軸方向から導き出す ) +extern DXLIBAPI int SetCameraPositionAndTargetAndUpVec( VECTOR Position, VECTOR TargetPosition, VECTOR UpVector ) ; // カメラの視点、注視点、アップベクトルを設定する +extern DXLIBAPI int SetCameraPositionAndTargetAndUpVecD( VECTOR_D Position, VECTOR_D TargetPosition, VECTOR_D UpVector ) ; // カメラの視点、注視点、アップベクトルを設定する +extern DXLIBAPI int SetCameraPositionAndAngle( VECTOR Position, float VRotate, float HRotate, float TRotate ) ; // カメラの視点、注視点、アップベクトルを設定する( 注視点とアップベクトルは垂直回転角度、水平回転角度、捻り回転角度から導き出す ) +extern DXLIBAPI int SetCameraPositionAndAngleD( VECTOR_D Position, double VRotate, double HRotate, double TRotate ) ; // カメラの視点、注視点、アップベクトルを設定する( 注視点とアップベクトルは垂直回転角度、水平回転角度、捻り回転角度から導き出す ) +extern DXLIBAPI int SetCameraViewMatrix( MATRIX ViewMatrix ) ; // ビュー行列を直接設定する +extern DXLIBAPI int SetCameraViewMatrixD( MATRIX_D ViewMatrix ) ; // ビュー行列を直接設定する +extern DXLIBAPI int SetCameraScreenCenter( float x, float y ) ; // 画面上におけるカメラが見ている映像の中心の座標を設定する +extern DXLIBAPI int SetCameraScreenCenterD( double x, double y ) ; // 画面上におけるカメラが見ている映像の中心の座標を設定する + +extern DXLIBAPI int SetupCamera_Perspective( float Fov ) ; // 遠近法カメラをセットアップする +extern DXLIBAPI int SetupCamera_PerspectiveD( double Fov ) ; // 遠近法カメラをセットアップする +extern DXLIBAPI int SetupCamera_Ortho( float Size ) ; // 正射影カメラをセットアップする +extern DXLIBAPI int SetupCamera_OrthoD( double Size ) ; // 正射影カメラをセットアップする +extern DXLIBAPI int SetupCamera_ProjectionMatrix( MATRIX ProjectionMatrix ) ; // 射影行列を直接設定する +extern DXLIBAPI int SetupCamera_ProjectionMatrixD( MATRIX_D ProjectionMatrix ) ; // 射影行列を直接設定する +extern DXLIBAPI int SetCameraDotAspect( float DotAspect ) ; // カメラのドットアスペクト比を設定する +extern DXLIBAPI int SetCameraDotAspectD( double DotAspect ) ; // カメラのドットアスペクト比を設定する + +extern DXLIBAPI int CheckCameraViewClip( VECTOR CheckPos ) ; // 指定の座標がカメラの視界に入っているかどうかを判定する( 戻り値 TRUE:視界に入っていない FALSE:視界に入っている ) +extern DXLIBAPI int CheckCameraViewClipD( VECTOR_D CheckPos ) ; // 指定の座標がカメラの視界に入っているかどうかを判定する( 戻り値 TRUE:視界に入っていない FALSE:視界に入っている ) +extern DXLIBAPI int CheckCameraViewClip_Dir( VECTOR CheckPos ) ; // 指定の座標がカメラの視界に入っているかどうかを判定する、戻り値で外れている方向も知ることができる( 戻り値 0:視界に入っている 0以外:視界に入っていない( DX_CAMERACLIP_LEFT や DX_CAMERACLIP_RIGHT が or 演算で混合されたもの、and 演算で方向を確認できる ) ) +extern DXLIBAPI int CheckCameraViewClip_DirD( VECTOR_D CheckPos ) ; // 指定の座標がカメラの視界に入っているかどうかを判定する、戻り値で外れている方向も知ることができる( 戻り値 0:視界に入っている 0以外:視界に入っていない( DX_CAMERACLIP_LEFT や DX_CAMERACLIP_RIGHT が or 演算で混合されたもの、and 演算で方向を確認できる ) ) +extern DXLIBAPI int CheckCameraViewClip_Box( VECTOR BoxPos1, VECTOR BoxPos2 ) ; // 二つの座標で表されるボックスがカメラの視界に入っているかどうかを判定する( 戻り値 TRUE:視界に入っていない FALSE:視界に入っている ) +extern DXLIBAPI int CheckCameraViewClip_BoxD( VECTOR_D BoxPos1, VECTOR_D BoxPos2 ) ; // 二つの座標で表されるボックスがカメラの視界に入っているかどうかを判定する( 戻り値 TRUE:視界に入っていない FALSE:視界に入っている ) + +extern DXLIBAPI float GetCameraNear( void ) ; // カメラの Near クリップ面の距離を取得する +extern DXLIBAPI double GetCameraNearD( void ) ; // カメラの Near クリップ面の距離を取得する +extern DXLIBAPI float GetCameraFar( void ) ; // カメラの Far クリップ面の距離を取得する +extern DXLIBAPI double GetCameraFarD( void ) ; // カメラの Far クリップ面の距離を取得する + +extern DXLIBAPI VECTOR GetCameraPosition( void ) ; // カメラの位置を取得する +extern DXLIBAPI VECTOR_D GetCameraPositionD( void ) ; // カメラの位置を取得する +extern DXLIBAPI VECTOR GetCameraTarget( void ) ; // カメラの注視点を取得する +extern DXLIBAPI VECTOR_D GetCameraTargetD( void ) ; // カメラの注視点を取得する +extern DXLIBAPI VECTOR GetCameraUpVector( void ) ; // カメラの正面方向に垂直な上方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraUpVectorD( void ) ; // カメラの正面方向に垂直な上方向のベクトルを取得する +extern DXLIBAPI VECTOR GetCameraDownVector( void ) ; // カメラの正面方向に垂直な下方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraDownVectorD( void ) ; // カメラの正面方向に垂直な下方向のベクトルを取得する +extern DXLIBAPI VECTOR GetCameraRightVector( void ) ; // カメラの正面方向に垂直な右方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraRightVectorD( void ) ; // カメラの正面方向に垂直な右方向のベクトルを取得する +extern DXLIBAPI VECTOR GetCameraLeftVector( void ) ; // カメラの正面方向に垂直な左方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraLeftVectorD( void ) ; // カメラの正面方向に垂直な左方向のベクトルを取得する +extern DXLIBAPI VECTOR GetCameraFrontVector( void ) ; // カメラの正面方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraFrontVectorD( void ) ; // カメラの正面方向のベクトルを取得する +extern DXLIBAPI VECTOR GetCameraBackVector( void ) ; // カメラの後ろ方向のベクトルを取得する +extern DXLIBAPI VECTOR_D GetCameraBackVectorD( void ) ; // カメラの後ろ方向のベクトルを取得する +extern DXLIBAPI float GetCameraAngleHRotate( void ) ; // カメラの水平方向の向きを取得する +extern DXLIBAPI double GetCameraAngleHRotateD( void ) ; // カメラの水平方向の向きを取得する +extern DXLIBAPI float GetCameraAngleVRotate( void ) ; // カメラの垂直方向の向きを取得する +extern DXLIBAPI double GetCameraAngleVRotateD( void ) ; // カメラの垂直方向の向きを取得する +extern DXLIBAPI float GetCameraAngleTRotate( void ) ; // カメラの向きの捻り角度を取得する +extern DXLIBAPI double GetCameraAngleTRotateD( void ) ; // カメラの向きの捻り角度を取得する + +extern DXLIBAPI MATRIX GetCameraViewMatrix( void ) ; // ビュー行列を取得する +extern DXLIBAPI MATRIX_D GetCameraViewMatrixD( void ) ; // ビュー行列を取得する +extern DXLIBAPI MATRIX GetCameraBillboardMatrix( void ) ; // ビルボード行列を取得する +extern DXLIBAPI MATRIX_D GetCameraBillboardMatrixD( void ) ; // ビルボード行列を取得する +extern DXLIBAPI int GetCameraScreenCenter( float *x, float *y ) ; // 画面上におけるカメラが見ている映像の中心の座標を取得する +extern DXLIBAPI int GetCameraScreenCenterD( double *x, double *y ) ; // 画面上におけるカメラが見ている映像の中心の座標を取得する +extern DXLIBAPI float GetCameraFov( void ) ; // カメラの視野角を取得する +extern DXLIBAPI double GetCameraFovD( void ) ; // カメラの視野角を取得する +extern DXLIBAPI float GetCameraSize( void ) ; // カメラの視野サイズを取得する +extern DXLIBAPI double GetCameraSizeD( void ) ; // カメラの視野サイズを取得する +extern DXLIBAPI MATRIX GetCameraProjectionMatrix( void ) ; // 射影行列を取得する +extern DXLIBAPI MATRIX_D GetCameraProjectionMatrixD( void ) ; // 射影行列を取得する +extern DXLIBAPI float GetCameraDotAspect( void ) ; // カメラのドットアスペクト比を得る +extern DXLIBAPI double GetCameraDotAspectD( void ) ; // カメラのドットアスペクト比を得る +extern DXLIBAPI MATRIX GetCameraViewportMatrix( void ) ; // ビューポート行列を取得する +extern DXLIBAPI MATRIX_D GetCameraViewportMatrixD( void ) ; // ビューポート行列を取得する +extern DXLIBAPI MATRIX GetCameraAPIViewportMatrix( void ) ; // Direct3Dで自動適用されるビューポート行列を取得する +extern DXLIBAPI MATRIX_D GetCameraAPIViewportMatrixD( void ) ; // Direct3Dで自動適用されるビューポート行列を取得する + +// ライト関係関数 +extern DXLIBAPI int SetUseLighting( int Flag ) ; // ライティングを使用するかどうかを設定する +extern DXLIBAPI int SetMaterialUseVertDifColor( int UseFlag ) ; // 3D描画のライティング計算で頂点カラーのディフューズカラーを使用するかどうかを設定する +extern DXLIBAPI int SetMaterialUseVertSpcColor( int UseFlag ) ; // 3D描画のライティング計算で頂点カラーのスペキュラカラーを使用するかどうかを設定する +extern DXLIBAPI int SetMaterialParam( MATERIALPARAM Material ) ; // 3D描画のライティング計算で使用するマテリアルパラメータを設定する +extern DXLIBAPI int SetUseSpecular( int UseFlag ) ; // 3D描画にスペキュラを使用するかどうかを設定する +extern DXLIBAPI int SetGlobalAmbientLight( COLOR_F Color ) ; // グローバルアンビエントライトカラーを設定する + +extern DXLIBAPI int ChangeLightTypeDir( VECTOR Direction ) ; // デフォルトライトのタイプをディレクショナルライトにする +extern DXLIBAPI int ChangeLightTypeSpot( VECTOR Position, VECTOR Direction, float OutAngle, float InAngle, float Range, float Atten0, float Atten1, float Atten2 ) ; // デフォルトライトのタイプをスポットライトにする +extern DXLIBAPI int ChangeLightTypePoint( VECTOR Position, float Range, float Atten0, float Atten1, float Atten2 ) ; // デフォルトライトのタイプをポイントライトにする +extern DXLIBAPI int GetLightType( void ) ; // デフォルトライトのタイプを取得する( 戻り値は DX_LIGHTTYPE_DIRECTIONAL 等 ) +extern DXLIBAPI int SetLightEnable( int EnableFlag ) ; // デフォルトライトを使用するかどうかを設定する +extern DXLIBAPI int GetLightEnable( void ) ; // デフォルトライトを使用するかどうかを取得する( 戻り値 TRUE:有効 FALSE:無効 ) +extern DXLIBAPI int SetLightDifColor( COLOR_F Color ) ; // デフォルトライトのディフューズカラーを設定する +extern DXLIBAPI COLOR_F GetLightDifColor( void ) ; // デフォルトライトのディフューズカラーを取得する +extern DXLIBAPI int SetLightSpcColor( COLOR_F Color ) ; // デフォルトライトのスペキュラカラーを設定する +extern DXLIBAPI COLOR_F GetLightSpcColor( void ) ; // デフォルトライトのスペキュラカラーを取得する +extern DXLIBAPI int SetLightAmbColor( COLOR_F Color ) ; // デフォルトライトのアンビエントカラーを設定する +extern DXLIBAPI COLOR_F GetLightAmbColor( void ) ; // デフォルトライトのアンビエントカラーを取得する +extern DXLIBAPI int SetLightDirection( VECTOR Direction ) ; // デフォルトライトの方向を設定する +extern DXLIBAPI VECTOR GetLightDirection( void ) ; // デフォルトライトの方向を取得する +extern DXLIBAPI int SetLightPosition( VECTOR Position ) ; // デフォルトライトの位置を設定する +extern DXLIBAPI VECTOR GetLightPosition( void ) ; // デフォルトライトの位置を取得する +extern DXLIBAPI int SetLightRangeAtten( float Range, float Atten0, float Atten1, float Atten2 ) ; // デフォルトライトの距離減衰パラメータを設定する( 有効距離、距離減衰係数0、1、2 ) +extern DXLIBAPI int GetLightRangeAtten( float *Range, float *Atten0, float *Atten1, float *Atten2 ) ; // デフォルトライトの距離減衰パラメータを取得する( 有効距離、距離減衰係数0、1、2 ) +extern DXLIBAPI int SetLightAngle( float OutAngle, float InAngle ) ; // デフォルトライトのスポットライトのパラメータを設定する( 外部コーン角度、内部コーン角度 ) +extern DXLIBAPI int GetLightAngle( float *OutAngle, float *InAngle ) ; // デフォルトライトのスポットライトのパラメータを取得する( 外部コーン角度、内部コーン角度 ) +extern DXLIBAPI int SetLightUseShadowMap( int SmSlotIndex, int UseFlag ) ; // デフォルトライトに SetUseShadowMap で指定したシャドウマップを適用するかどうかを設定する( SmSlotIndex:シャドウマップスロット( SetUseShadowMap の第一引数に設定する値 ) UseFlag:適用にするかどうかのフラグ( TRUE:適用する( デフォルト ) FALSE:適用しない ) ) + +extern DXLIBAPI int CreateDirLightHandle( VECTOR Direction ) ; // ディレクショナルライトハンドルを作成する +extern DXLIBAPI int CreateSpotLightHandle( VECTOR Position, VECTOR Direction, float OutAngle, float InAngle, float Range, float Atten0, float Atten1, float Atten2 ) ; // スポットライトハンドルを作成する +extern DXLIBAPI int CreatePointLightHandle( VECTOR Position, float Range, float Atten0, float Atten1, float Atten2 ) ; // ポイントライトハンドルを作成する +extern DXLIBAPI int DeleteLightHandle( int LHandle ) ; // ライトハンドルを削除する +extern DXLIBAPI int DeleteLightHandleAll( void ) ; // ライトハンドルを全て削除する +extern DXLIBAPI int SetLightTypeHandle( int LHandle, int LightType ) ; // ライトハンドルのライトのタイプを変更する( DX_LIGHTTYPE_DIRECTIONAL 等 ) +extern DXLIBAPI int SetLightEnableHandle( int LHandle, int EnableFlag ) ; // ライトハンドルのライト効果の有効、無効を設定する( TRUE:有効 FALSE:無効 ) +extern DXLIBAPI int SetLightDifColorHandle( int LHandle, COLOR_F Color ) ; // ライトハンドルのライトのディフューズカラーを設定する +extern DXLIBAPI int SetLightSpcColorHandle( int LHandle, COLOR_F Color ) ; // ライトハンドルのライトのスペキュラカラーを設定する +extern DXLIBAPI int SetLightAmbColorHandle( int LHandle, COLOR_F Color ) ; // ライトハンドルのライトのアンビエントカラーを設定する +extern DXLIBAPI int SetLightDirectionHandle( int LHandle, VECTOR Direction ) ; // ライトハンドルのライトの方向を設定する +extern DXLIBAPI int SetLightPositionHandle( int LHandle, VECTOR Position ) ; // ライトハンドルのライトの位置を設定する +extern DXLIBAPI int SetLightRangeAttenHandle( int LHandle, float Range, float Atten0, float Atten1, float Atten2 ) ; // ライトハンドルのライトの距離減衰パラメータを設定する( 有効距離、距離減衰係数0、1、2 ) +extern DXLIBAPI int SetLightAngleHandle( int LHandle, float OutAngle, float InAngle ) ; // ライトハンドルのライトのスポットライトのパラメータを設定する( 外部コーン角度、内部コーン角度 ) +extern DXLIBAPI int SetLightUseShadowMapHandle( int LHandle, int SmSlotIndex, int UseFlag ) ; // ライトハンドルのライトに SetUseShadowMap で指定したシャドウマップを適用するかどうかを設定する( SmSlotIndex:シャドウマップスロット( SetUseShadowMap の第一引数に設定する値 ) UseFlag:適用にするかどうかのフラグ( TRUE:適用する( デフォルト ) FALSE:適用しない ) ) +extern DXLIBAPI int GetLightTypeHandle( int LHandle ) ; // ライトハンドルのライトのタイプを取得する( 戻り値は DX_LIGHTTYPE_DIRECTIONAL 等 ) +extern DXLIBAPI int GetLightEnableHandle( int LHandle ) ; // ライトハンドルのライト効果の有効、無効を取得する( TRUE:有効 FALSE:無効 ) +extern DXLIBAPI COLOR_F GetLightDifColorHandle( int LHandle ) ; // ライトハンドルのライトのディフューズカラーを取得する +extern DXLIBAPI COLOR_F GetLightSpcColorHandle( int LHandle ) ; // ライトハンドルのライトのスペキュラカラーを取得する +extern DXLIBAPI COLOR_F GetLightAmbColorHandle( int LHandle ) ; // ライトハンドルのライトのアンビエントカラーを取得する +extern DXLIBAPI VECTOR GetLightDirectionHandle( int LHandle ) ; // ライトハンドルのライトの方向を取得する +extern DXLIBAPI VECTOR GetLightPositionHandle( int LHandle ) ; // ライトハンドルのライトの位置を取得する +extern DXLIBAPI int GetLightRangeAttenHandle( int LHandle, float *Range, float *Atten0, float *Atten1, float *Atten2 ) ; // ライトハンドルのライトの距離減衰パラメータを取得する( 有効距離、距離減衰係数0、1、2 ) +extern DXLIBAPI int GetLightAngleHandle( int LHandle, float *OutAngle, float *InAngle ) ; // ライトハンドルのライトのスポットライトのパラメータを取得する( 外部コーン角度、内部コーン角度 ) + +extern DXLIBAPI int GetEnableLightHandleNum( void ) ; // 有効になっているライトハンドルの数を取得する +extern DXLIBAPI int GetEnableLightHandle( int Index ) ; // 有効になっているライトハンドルを取得する + +// 色情報取得用関数 +extern DXLIBAPI int GetTexFormatIndex( const IMAGEFORMATDESC *Format ) ; // テクスチャフォーマットのインデックスを得る + + + + + + + + +// DxMask.cpp 関数プロトタイプ宣言 + +#ifndef DX_NON_MASK + +// マスク関係 +extern DXLIBAPI int CreateMaskScreen( void ) ; // マスクスクリーンを作成する +extern DXLIBAPI int DeleteMaskScreen( void ) ; // マスクスクリーンを削除する +extern DXLIBAPI int DrawMaskToDirectData( int x, int y, int Width, int Height, const void *MaskData , int TransMode ) ; // マスクスクリーンにメモリ上のビットマップデータを転送する( MaskData は 1byte で 1dot 表す1ラインあたり Width byte のデータ配列の先頭アドレス ) +extern DXLIBAPI int DrawFillMaskToDirectData( int x1, int y1, int x2, int y2, int Width, int Height, const void *MaskData ) ; // マスクスクリーンにメモリ上のビットマップデータで指定矩形内を塗りつぶすように転送する + +extern DXLIBAPI int SetUseMaskScreenFlag( int ValidFlag ) ; // マスクスクリーンを使用するかどうかを設定する( ValidFlag:使用するかどうか( TRUE:使用する FALSE:使用しない( デフォルト ) ) +extern DXLIBAPI int GetUseMaskScreenFlag( void ) ; // マスクスクリーンを使用するかどうかを取得する +extern DXLIBAPI int FillMaskScreen( int Flag ) ; // マスクスクリーンを指定の色で塗りつぶす +extern DXLIBAPI int SetMaskScreenGraph( int GraphHandle ) ; // マスクスクリーンとして使用するグラフィックのハンドルを設定する、-1を渡すと解除( 引数で渡すグラフィックハンドルは MakeScreen で作成した「アルファチャンネル付きの描画対象にできるグラフィックハンドル」である必要があります( アルファチャンネルがマスクに使用されます ) ) +extern DXLIBAPI int SetMaskScreenGraphUseChannel( int UseChannel /* DX_MASKGRAPH_CH_A 等 */ ) ; // マスクスクリーンとして使用するグラフィックの、どのチャンネルをマスクとして使用するかを設定する( デフォルトは DX_MASKGRAPH_CH_A、 尚、DX_MASKGRAPH_CH_A以外を使用する場合はグラフィックスデバイスがシェーダーモデル2.0以降に対応している必要があります ) + +extern DXLIBAPI int InitMask( void ) ; // マスクハンドルをすべて削除する +extern DXLIBAPI int MakeMask( int Width, int Height ) ; // マスクハンドルを作成する +extern DXLIBAPI int GetMaskSize( int *WidthBuf, int *HeightBuf, int MaskHandle ) ; // マスクハンドルが持つマスクイメージのサイズを取得する +extern DXLIBAPI int GetMaskBaseImageInfo( BASEIMAGE *BaseImage, int MaskHandle ) ; // マスクハンドルが持つマスクイメージのBASEIMAGEデータを取得する( フォーマットが変更されるような操作をすると正常に動作しなくなります、あと、ReleaseBaseImage は実行する必要はありません ) +extern DXLIBAPI int SetDataToMask( int Width, int Height, const void *MaskData, int MaskHandle ) ; // マスクハンドルにビットマップイメージを転送する +extern DXLIBAPI int DeleteMask( int MaskHandle ) ; // マスクハンドルを削除する +extern DXLIBAPI int GraphImageBltToMask( const BASEIMAGE *BaseImage, int ImageX, int ImageY, int MaskHandle ) ; // マスクハンドルにBASEIMAGEデータを転送する +extern DXLIBAPI int LoadMask( const TCHAR *FileName ) ; // 画像ファイルを読み込みマスクハンドルを作成する +extern DXLIBAPI int LoadMaskWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 画像ファイルを読み込みマスクハンドルを作成する +extern DXLIBAPI int LoadDivMask( const TCHAR *FileName, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // 画像ファイルを分割読み込みしてマスクハンドルを作成する +extern DXLIBAPI int LoadDivMaskWithStrLen( const TCHAR *FileName, size_t FileNameLength, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // 画像ファイルを分割読み込みしてマスクハンドルを作成する +extern DXLIBAPI int CreateMaskFromMem( const void *FileImage, int FileImageSize ) ; // メモリ上にある画像ファイルイメージを読み込みマスクハンドルを作成する +extern DXLIBAPI int CreateDivMaskFromMem( const void *FileImage, int FileImageSize, int AllNum, int XNum, int YNum, int XSize, int YSize, int *HandleArray ) ; // メモリ上にある画像ファイルイメージを分割読み込みしてマスクハンドルを作成する +extern DXLIBAPI int DrawMask( int x, int y, int MaskHandle, int TransMode ) ; // マスクスクリーンにマスクハンドルの持つマスクイメージを書き込む +#ifndef DX_NON_FONT +extern DXLIBAPI int DrawFormatStringMask( int x, int y, int Flag, const TCHAR *FormatString, ... ) ; // 書式指定ありの文字列をマスクスクリーンに描画する +extern DXLIBAPI int DrawFormatStringMaskToHandle( int x, int y, int Flag, int FontHandle, const TCHAR *FormatString, ... ) ; // 書式指定ありの文字列をマスクスクリーンに描画する( フォントハンドル指定版 )( SetFontCacheToTextureFlag( FALSE ) ; にして作成したフォントハンドルのみ使用可能 ) +extern DXLIBAPI int DrawStringMask( int x, int y, int Flag, const TCHAR *String ) ; // 文字列をマスクスクリーンに描画する +extern DXLIBAPI int DrawNStringMask( int x, int y, int Flag, const TCHAR *String, size_t StringLength ) ; // 文字列をマスクスクリーンに描画する +extern DXLIBAPI int DrawStringMaskToHandle( int x, int y, int Flag, int FontHandle, const TCHAR *String ) ; // 文字列をマスクスクリーンに描画する( フォントハンドル指定版 )( SetFontCacheToTextureFlag( FALSE ) ; にして作成したフォントハンドルのみ使用可能 ) +extern DXLIBAPI int DrawNStringMaskToHandle( int x, int y, int Flag, int FontHandle, const TCHAR *String, size_t StringLength ) ; // 文字列をマスクスクリーンに描画する( フォントハンドル指定版 )( SetFontCacheToTextureFlag( FALSE ) ; にして作成したフォントハンドルのみ使用可能 ) +#endif // DX_NON_FONT +extern DXLIBAPI int DrawFillMask( int x1, int y1, int x2, int y2, int MaskHandle ) ; // マスクハンドルが持つマスクイメージをマスクスクリーンいっぱいに描画する( タイル状に並べる ) +extern DXLIBAPI int SetMaskReverseEffectFlag( int ReverseFlag ) ; // マスクイメージ内の数値に対する効果を逆転させる( 旧バージョンとの互換性の為の機能 ) + +extern DXLIBAPI int GetMaskScreenData( int x1, int y1, int x2, int y2, int MaskHandle ) ; // マスクスクリーンの指定矩形部分をマスクハンドルに転送する +extern DXLIBAPI int GetMaskUseFlag( void ) ; // マスクスクリーンを使用する設定になっているかどうかを取得する + +#endif // DX_NON_MASK + +#endif // DX_NOTUSE_DRAWFUNCTION + + + + + + + + + + + + + + + +// DxFont.cpp 関数プロトタイプ宣言 + +#ifndef DX_NON_FONT + +// フォント、文字列描画関係関数 +extern DXLIBAPI int EnumFontName( TCHAR *NameBuffer, int NameBufferNum, int JapanOnlyFlag = TRUE ) ; // 使用可能なフォントの名前を列挙する( NameBuffer に 64バイト区切りで名前が格納されます ) +extern DXLIBAPI int EnumFontNameEx( TCHAR *NameBuffer, int NameBufferNum, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ; // 使用可能なフォントの名前を列挙する( NameBuffer に 64バイト区切りで名前が格納されます )( 文字セット指定版 ) +extern DXLIBAPI int EnumFontNameEx2( TCHAR *NameBuffer, int NameBufferNum, const TCHAR *EnumFontName, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ; // 指定のフォント名のフォントを列挙する +extern DXLIBAPI int EnumFontNameEx2WithStrLen( TCHAR *NameBuffer, int NameBufferNum, const TCHAR *EnumFontName, size_t EnumFontNameLength, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ; // 指定のフォント名のフォントを列挙する +extern DXLIBAPI int CheckFontName( const TCHAR *FontName, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ; // 指定のフォント名のフォントが存在するかどうかをチェックする( 戻り値 TRUE:存在する FALSE:存在しない ) +extern DXLIBAPI int CheckFontNameWithStrLen( const TCHAR *FontName, size_t FontNameLength, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ; // 指定のフォント名のフォントが存在するかどうかをチェックする( 戻り値 TRUE:存在する FALSE:存在しない ) + +extern DXLIBAPI int InitFontToHandle( void ) ; // 全てのフォントハンドルを削除する + +extern DXLIBAPI int CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ; // フォントハンドルを作成する +extern DXLIBAPI int CreateFontToHandleWithStrLen( const TCHAR *FontName, size_t FontNameLength, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ; // フォントハンドルを作成する +extern DXLIBAPI int LoadFontDataToHandle( const TCHAR *FileName, int EdgeSize = 0 ) ; // フォントデータファイルからフォントハンドルを作成する +extern DXLIBAPI int LoadFontDataToHandleWithStrLen( const TCHAR *FileName, size_t FileNameLength, int EdgeSize = 0 ) ; // フォントデータファイルからフォントハンドルを作成する +extern DXLIBAPI int LoadFontDataFromMemToHandle( const void *FontDataImage, int FontDataImageSize, int EdgeSize = 0 ) ; // メモリ上のフォントデータファイルイメージからフォントハンドルを作成する +extern DXLIBAPI int SetFontSpaceToHandle( int Pixel, int FontHandle ) ; // フォントハンドルの字間を変更する +extern DXLIBAPI int SetFontLineSpaceToHandle( int Pixel, int FontHandle ) ; // フォントハンドルの行間を変更する +extern DXLIBAPI int SetFontCharCodeFormatToHandle( int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ , int FontHandle ) ; // 指定のフォントハンドルを使用する関数の引数に渡す文字列の文字コード形式を設定する( UNICODE版では無効 ) +extern DXLIBAPI int DeleteFontToHandle( int FontHandle ) ; // フォントハンドルを削除する +extern DXLIBAPI int SetFontLostFlag( int FontHandle, int *LostFlag ) ; // フォントハンドルを削除した際に TRUE を代入する変数のアドレスを設定する +extern DXLIBAPI int AddFontImageToHandle( int FontHandle, const TCHAR *Char, int GrHandle, int DrawX, int DrawY, int AddX ) ; // 指定の文字の代わりに描画するグラフィックハンドルを登録する +extern DXLIBAPI int AddFontImageToHandleWithStrLen( int FontHandle, const TCHAR *Char, size_t CharLength, int GrHandle, int DrawX, int DrawY, int AddX ) ; // 指定の文字の代わりに描画するグラフィックハンドルを登録する +extern DXLIBAPI int SubFontImageToHandle( int FontHandle, const TCHAR *Char ) ; // 指定の文字の代わりに描画するグラフィックハンドルの登録を解除する +extern DXLIBAPI int SubFontImageToHandleWithStrLen( int FontHandle, const TCHAR *Char, size_t CharLength ) ; // 指定の文字の代わりに描画するグラフィックハンドルの登録を解除する +extern DXLIBAPI int AddSubstitutionFontToHandle( int FontHandle, int SubstitutionFontHandle, int DrawX, int DrawY ) ; // 代替フォントハンドル( FontHandle に無い文字を描画しようとしたときに代わりに使用されるフォントハンドル )を登録する +extern DXLIBAPI int SubSubstitutionFontToHandle( int FontHandle, int SubstitutionFontHandle ) ; // 代替フォントハンドルの登録を解除する + +extern DXLIBAPI int ChangeFont( const TCHAR *FontName, int CharSet = -1 /* DX_CHARSET_SHFTJIS 等 */ ) ; // デフォルトフォントハンドルで使用するフォントを変更 +extern DXLIBAPI int ChangeFontWithStrLen( const TCHAR *FontName, size_t FontNameLength, int CharSet = -1 /* DX_CHARSET_SHFTJIS 等 */ ) ; // デフォルトフォントハンドルで使用するフォントを変更 +extern DXLIBAPI int ChangeFontType( int FontType ) ; // デフォルトフォントハンドルのフォントタイプの変更 +extern DXLIBAPI const TCHAR *GetFontName( void ) ; // デフォルトフォントハンドルのフォント名を取得する +extern DXLIBAPI int SetFontSize( int FontSize ) ; // デフォルトフォントハンドルのサイズを設定する +extern DXLIBAPI int GetFontSize( void ) ; // デフォルトフォントハンドルのサイズを取得する +extern DXLIBAPI int GetFontEdgeSize( void ) ; // デフォルトフォントハンドルの縁サイズを取得する +extern DXLIBAPI int SetFontThickness( int ThickPal ) ; // デフォルトフォントハンドルの太さを設定する +extern DXLIBAPI int SetFontSpace( int Pixel ) ; // デフォルトフォントハンドルの字間を変更する +extern DXLIBAPI int GetFontSpace( void ) ; // デフォルトフォントハンドルの字間を取得する +extern DXLIBAPI int SetFontLineSpace( int Pixel ) ; // デフォルトフォントハンドルの行間を変更する +extern DXLIBAPI int GetFontLineSpace( void ) ; // デフォルトフォントハンドルの行間を取得する +extern DXLIBAPI int SetFontCharCodeFormat( int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ ) ; // デフォルトフォントハンドルを使用する関数の引数に渡す文字列の文字コード形式を設定する( UNICODE版では無効 ) +extern DXLIBAPI int SetDefaultFontState( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE ) ; // デフォルトフォントハンドルの設定を変更する +extern DXLIBAPI int SetDefaultFontStateWithStrLen( const TCHAR *FontName, size_t FontNameLength, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE ) ; // デフォルトフォントハンドルの設定を変更する +extern DXLIBAPI int GetDefaultFontHandle( void ) ; // デフォルトフォントハンドルを取得する +extern DXLIBAPI int GetFontMaxCacheCharNum( void ) ; // デフォルトフォントハンドルのキャッシュできる文字の数を取得する +extern DXLIBAPI int GetFontMaxWidth( void ) ; // デフォルトフォントハンドルの文字の最大幅を取得する +extern DXLIBAPI int GetFontAscent( void ) ; // デフォルトフォントハンドルの描画位置からベースラインまでの高さを取得する +extern DXLIBAPI int GetDrawStringWidth( const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawNStringWidth( const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawFormatStringWidth( const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の描画幅を取得する +extern DXLIBAPI int GetDrawExtendStringWidth( double ExRateX, const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawExtendNStringWidth( double ExRateX, const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawExtendFormatStringWidth( double ExRateX, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の描画幅を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawStringSize( int *SizeX, int *SizeY, int *LineCount, const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawNStringSize( int *SizeX, int *SizeY, int *LineCount, const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawFormatStringSize( int *SizeX, int *SizeY, int *LineCount, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawExtendStringSize( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅・高さ・行数を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawExtendNStringSize( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の描画幅・高さ・行数を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawExtendFormatStringSize( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の描画幅・高さ・行数を取得する( 拡大率付き ) +extern DXLIBAPI int GetDrawStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawNStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawFormatStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, const TCHAR *String, int StrLen, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendNStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int VerticalFlag = FALSE ) ; // デフォルトフォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendFormatStringCharInfo( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用した書式付き文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawStringKerningPairInfo( const TCHAR *PairChar, int *KernAmount ) ; // デフォルトフォントハンドルを使用した二つの文字のペアのカーニング情報を取得する( PairChar:カーニング情報を調べるペアとなる2文字の文字列( 2文字以上あっても先頭の2文字だけ使用されます ) KernAmount:2文字目の文字を基本の位置からずらすドット数を代入するint型変数のアドレス ) +extern DXLIBAPI int GetDrawStringKerningPairInfoWithStrLen( const TCHAR *PairChar, size_t PairCharLength, int *KernAmount ) ; // デフォルトフォントハンドルを使用した二つの文字のペアのカーニング情報を取得する( PairChar:カーニング情報を調べるペアとなる2文字の文字列( 2文字以上あっても先頭の2文字だけ使用されます ) KernAmount:2文字目の文字を基本の位置からずらすドット数を代入するint型変数のアドレス ) + +extern DXLIBAPI const TCHAR *GetFontNameToHandle( int FontHandle ) ; // フォントハンドルのフォント名を取得する +extern DXLIBAPI int GetFontMaxCacheCharNumToHandle( int FontHandle ) ; // フォントハンドルのキャッシュできる文字の数を取得する +extern DXLIBAPI int GetFontMaxWidthToHandle( int FontHandle ) ; // フォントハンドルの文字の最大幅を取得する +extern DXLIBAPI int GetFontAscentToHandle( int FontHandle ) ; // フォントハンドルの描画位置からベースラインまでの高さを取得する +extern DXLIBAPI int GetFontSizeToHandle( int FontHandle ) ; // フォントハンドルのサイズを取得する +extern DXLIBAPI int GetFontEdgeSizeToHandle( int FontHandle ) ; // フォントハンドルの縁サイズを取得する +extern DXLIBAPI int GetFontSpaceToHandle( int FontHandle ) ; // フォントハンドルの字間を取得する +extern DXLIBAPI int GetFontLineSpaceToHandle( int FontHandle ) ; // フォントハンドルの行間を取得する +extern DXLIBAPI int GetFontCharInfo( int FontHandle, const TCHAR *Char, int *DrawX, int *DrawY, int *NextCharX, int *SizeX, int *SizeY ) ; // フォントハンドルの指定の文字の描画情報を取得する +extern DXLIBAPI int GetFontCharInfoWithStrLen( int FontHandle, const TCHAR *Char, size_t CharLength, int *DrawX, int *DrawY, int *NextCharX, int *SizeX, int *SizeY ) ; // フォントハンドルの指定の文字の描画情報を取得する +extern DXLIBAPI int GetDrawStringWidthToHandle( const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawNStringWidthToHandle( const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawFormatStringWidthToHandle( int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の描画幅を取得する +extern DXLIBAPI int GetDrawExtendStringWidthToHandle( double ExRateX, const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawExtendNStringWidthToHandle( double ExRateX, const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅を取得する +extern DXLIBAPI int GetDrawExtendFormatStringWidthToHandle( double ExRateX, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の描画幅を取得する +extern DXLIBAPI int GetDrawStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawNStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawFormatStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawExtendStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawExtendNStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawExtendFormatStringSizeToHandle( int *SizeX, int *SizeY, int *LineCount, double ExRateX, double ExRateY, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の描画幅・高さ・行数を取得する +extern DXLIBAPI int GetDrawStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawNStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawFormatStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendNStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int FontHandle, int VerticalFlag = FALSE ) ; // フォントハンドルを使用した文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawExtendFormatStringCharInfoToHandle( DRAWCHARINFO *InfoBuffer, size_t InfoBufferSize, double ExRateX, double ExRateY, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用した書式付き文字列の1文字毎の情報を取得する +extern DXLIBAPI int GetDrawStringKerningPairInfoToHandle( const TCHAR *PairChar, int *KernAmount, int FontHandle ) ; // フォントハンドルを使用した二つの文字のペアのカーニング情報を取得する( PairChar:カーニング情報を調べるペアとなる2文字の文字列( 2文字以上あっても先頭の2文字だけ使用されます ) KernAmount:2文字目の文字を基本の位置からずらすドット数を代入するint型変数のアドレス ) +extern DXLIBAPI int GetDrawStringKerningPairInfoToHandleWithStrLen( const TCHAR *PairChar, size_t PairCharLength, int *KernAmount, int FontHandle ) ; // フォントハンドルを使用した二つの文字のペアのカーニング情報を取得する( PairChar:カーニング情報を調べるペアとなる2文字の文字列( 2文字以上あっても先頭の2文字だけ使用されます ) KernAmount:2文字目の文字を基本の位置からずらすドット数を代入するint型変数のアドレス ) +extern DXLIBAPI int GetFontStateToHandle( TCHAR *FontName, int *Size, int *Thick, int FontHandle, int *FontType = NULL , int *CharSet = NULL , int *EdgeSize = NULL , int *Italic = NULL ) ; // フォントハンドルの情報を取得する +extern DXLIBAPI int CheckFontCacheToTextureFlag( int FontHandle ) ; // フォントハンドルがテクスチャキャッシュを使用しているかどうかを取得する +extern DXLIBAPI int CheckFontChacheToTextureFlag( int FontHandle ) ; // CheckFontCacheToTextureFlag の誤字版 +extern DXLIBAPI int CheckFontHandleValid( int FontHandle ) ; // フォントハンドルが有効かどうかを取得する +extern DXLIBAPI int ClearFontCacheToHandle( int FontHandle ) ; // フォントハンドルのキャッシュ情報を初期化する + +extern DXLIBAPI int SetFontCacheToTextureFlag( int Flag ) ; // フォントのキャッシュにテクスチャを使用するかどうかを設定する( TRUE:テクスチャを使用する( デフォルト ) FALSE:テクスチャは使用しない ) +extern DXLIBAPI int GetFontCacheToTextureFlag( void ) ; // フォントのキャッシュにテクスチャを使用するかどうかを設定する +extern DXLIBAPI int SetFontChacheToTextureFlag( int Flag ) ; // SetFontCacheToTextureFlag の誤字版 +extern DXLIBAPI int GetFontChacheToTextureFlag( void ) ; // GetFontCacheToTextureFlag の誤字版 +extern DXLIBAPI int SetFontCacheTextureColorBitDepth( int ColorBitDepth ) ; // フォントのキャッシュとして使用するテクスチャのカラービット深度を設定する( 16 又は 32 のみ指定可能 デフォルトは 32 ) +extern DXLIBAPI int GetFontCacheTextureColorBitDepth( void ) ; // フォントのキャッシュとして使用するテクスチャのカラービット深度を取得する +extern DXLIBAPI int SetFontCacheCharNum( int CharNum ) ; // フォントキャッシュでキャッシュできる文字数を設定する +extern DXLIBAPI int GetFontCacheCharNum( void ) ; // フォントキャッシュでキャッシュできる文字数を取得する( 戻り値 0:デフォルト 1以上:指定文字数 ) +extern DXLIBAPI int SetFontCacheUsePremulAlphaFlag( int Flag ) ; // フォントキャッシュとして保存する画像の形式を乗算済みαチャンネル付き画像にするかどうかを設定する( TRUE:乗算済みαを使用する FLASE:乗算済みαを使用しない( デフォルト ) ) +extern DXLIBAPI int GetFontCacheUsePremulAlphaFlag( void ) ; // フォントキャッシュとして保存する画像の形式を乗算済みαチャンネル付き画像にするかどうかを取得する +extern DXLIBAPI int SetFontUseAdjustSizeFlag( int Flag ) ; // フォントのサイズを補正する処理を行うかどうかを設定する( Flag TRUE:行う( デフォルト ) FALSE:行わない ) +extern DXLIBAPI int GetFontUseAdjustSizeFlag( void ) ; // フォントのサイズを補正する処理を行うかどうかを取得する + + +// FontCacheStringDraw の代わりに DrawString を使ってください +extern DXLIBAPI int FontCacheStringDrawToHandle( int x, int y, const TCHAR *StrData, unsigned int Color, unsigned int EdgeColor, BASEIMAGE *DestImage, const RECT *ClipRect /* NULL 可 */ , int FontHandle, int VerticalFlag = FALSE , SIZE *DrawSizeP = NULL ) ; +extern DXLIBAPI int FontCacheStringDrawToHandleWithStrLen( int x, int y, const TCHAR *StrData, size_t StrDataLength, unsigned int Color, unsigned int EdgeColor, BASEIMAGE *DestImage, const RECT *ClipRect /* NULL 可 */ , int FontHandle, int VerticalFlag = FALSE , SIZE *DrawSizeP = NULL ) ; +extern DXLIBAPI int FontBaseImageBlt( int x, int y, const TCHAR *StrData, BASEIMAGE *DestImage, BASEIMAGE *DestEdgeImage, int VerticalFlag = FALSE ) ; // 基本イメージに文字列を描画する( デフォルトフォントハンドルを使用する ) +extern DXLIBAPI int FontBaseImageBltWithStrLen( int x, int y, const TCHAR *StrData, size_t StrDataLength, BASEIMAGE *DestImage, BASEIMAGE *DestEdgeImage, int VerticalFlag = FALSE ) ; // 基本イメージに文字列を描画する( デフォルトフォントハンドルを使用する ) +extern DXLIBAPI int FontBaseImageBltToHandle( int x, int y, const TCHAR *StrData, BASEIMAGE *DestImage, BASEIMAGE *DestEdgeImage, int FontHandle, int VerticalFlag = FALSE ) ; // 基本イメージに文字列を描画する +extern DXLIBAPI int FontBaseImageBltToHandleWithStrLen( int x, int y, const TCHAR *StrData, size_t StrDataLength, BASEIMAGE *DestImage, BASEIMAGE *DestEdgeImage, int FontHandle, int VerticalFlag = FALSE ) ; // 基本イメージに文字列を描画する + +extern DXLIBAPI int MultiByteCharCheck( const char *Buf, int CharSet /* DX_CHARSET_SHFTJIS */ ) ; // 2バイト文字か調べる( TRUE:2バイト文字 FALSE:1バイト文字 ) + +// 文字列描画関数 +extern DXLIBAPI int DrawString( int x, int y, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する +extern DXLIBAPI int DrawNString( int x, int y, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する +extern DXLIBAPI int DrawVString( int x, int y, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawNVString( int x, int y, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawFormatString( int x, int y, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を描画する +extern DXLIBAPI int DrawFormatVString( int x, int y, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawExtendString( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画 +extern DXLIBAPI int DrawExtendNString( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画 +extern DXLIBAPI int DrawExtendVString( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 縦書き ) +extern DXLIBAPI int DrawExtendNVString( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 縦書き ) +extern DXLIBAPI int DrawExtendFormatString( int x, int y, double ExRateX, double ExRateY, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を拡大描画する +extern DXLIBAPI int DrawExtendFormatVString( int x, int y, double ExRateX, double ExRateY, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawRotaString( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL ) ; // デフォルトフォントハンドルを使用して文字列を回転描画する +extern DXLIBAPI int DrawRotaNString( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL , size_t StringLength = 0 ) ; // デフォルトフォントハンドルを使用して文字列を回転描画する +extern DXLIBAPI int DrawRotaFormatString( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *FormatString = NULL , ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を回転描画する +extern DXLIBAPI int DrawModiString( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL ) ; // デフォルトフォントハンドルを使用して文字列を変形描画する +extern DXLIBAPI int DrawModiNString( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL , size_t StringLength = 0 ) ; // デフォルトフォントハンドルを使用して文字列を変形描画する +extern DXLIBAPI int DrawModiFormatString( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *FormatString = NULL , ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を変形描画する + +extern DXLIBAPI int DrawStringF( float x, float y, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawNStringF( float x, float y, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawVStringF( float x, float y, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawNVStringF( float x, float y, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawFormatStringF( float x, float y, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawFormatVStringF( float x, float y, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendStringF( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendNStringF( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendVStringF( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendNVStringF( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して文字列の拡大描画( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendFormatStringF( float x, float y, double ExRateX, double ExRateY, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を拡大描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendFormatVStringF( float x, float y, double ExRateX, double ExRateY, unsigned int Color, const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を拡大描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaStringF( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL ) ; // デフォルトフォントハンドルを使用して文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaNStringF( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL , size_t StringLength = 0 ) ; // デフォルトフォントハンドルを使用して文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaFormatStringF( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *FormatString = NULL , ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiStringF( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL ) ; // デフォルトフォントハンドルを使用して文字列を変形描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiNStringF( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL , size_t StringLength = 0 ) ; // デフォルトフォントハンドルを使用して文字列を変形描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiFormatStringF( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *FormatString = NULL , ... ) ; // デフォルトフォントハンドルを使用して書式指定文字列を変形描画する( 座標指定が float 版 ) + +extern DXLIBAPI int DrawNumberToI( int x, int y, int Num, int RisesNum, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して整数型の数値を描画する +extern DXLIBAPI int DrawNumberToF( int x, int y, double Num, int Length, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して浮動小数点型の数値を描画する +extern DXLIBAPI int DrawNumberPlusToI( int x, int y, const TCHAR *NoteString, int Num, int RisesNum, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して整数型の数値とその説明の文字列を一度に描画する +extern DXLIBAPI int DrawNumberPlusToF( int x, int y, const TCHAR *NoteString, double Num, int Length, unsigned int Color, unsigned int EdgeColor = 0 ) ; // デフォルトフォントハンドルを使用して浮動小数点型の数値とその説明の文字列を一度に描画する + +extern DXLIBAPI int DrawStringToZBuffer( int x, int y, const TCHAR *String, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を描画する +extern DXLIBAPI int DrawNStringToZBuffer( int x, int y, const TCHAR *String, size_t StringLength, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を描画する +extern DXLIBAPI int DrawVStringToZBuffer( int x, int y, const TCHAR *String, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawNVStringToZBuffer( int x, int y, const TCHAR *String, size_t StringLength, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawFormatStringToZBuffer( int x, int y, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を描画する +extern DXLIBAPI int DrawFormatVStringToZBuffer( int x, int y, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawExtendStringToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を拡大描画する +extern DXLIBAPI int DrawExtendNStringToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を拡大描画する +extern DXLIBAPI int DrawExtendVStringToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendNVStringToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendFormatStringToZBuffer( int x, int y, double ExRateX, double ExRateY, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を拡大描画する +extern DXLIBAPI int DrawExtendFormatVStringToZBuffer( int x, int y, double ExRateX, double ExRateY, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawRotaStringToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *String ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を回転描画する +extern DXLIBAPI int DrawRotaNStringToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *String, size_t StringLength ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を回転描画する +extern DXLIBAPI int DrawRotaFormatStringToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *FormatString , ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を回転描画する +extern DXLIBAPI int DrawModiStringToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *String ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を変形描画する +extern DXLIBAPI int DrawModiNStringToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *String, size_t StringLength ) ; // デフォルトフォントハンドルを使用してZバッファに対して文字列を変形描画する +extern DXLIBAPI int DrawModiFormatStringToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag , const TCHAR *FormatString , ... ) ; // デフォルトフォントハンドルを使用してZバッファに対して書式指定文字列を変形描画する + + +extern DXLIBAPI int DrawStringToHandle( int x, int y, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を描画する +extern DXLIBAPI int DrawNStringToHandle( int x, int y, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を描画する +extern DXLIBAPI int DrawVStringToHandle( int x, int y, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawNVStringToHandle( int x, int y, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawFormatStringToHandle( int x, int y, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を描画する +extern DXLIBAPI int DrawFormatVStringToHandle( int x, int y, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawExtendStringToHandle( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を拡大描画する +extern DXLIBAPI int DrawExtendNStringToHandle( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を拡大描画する +extern DXLIBAPI int DrawExtendVStringToHandle( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendNVStringToHandle( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendFormatStringToHandle( int x, int y, double ExRateX, double ExRateY, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を拡大描画する +extern DXLIBAPI int DrawExtendFormatVStringToHandle( int x, int y, double ExRateX, double ExRateY, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawRotaStringToHandle( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用して文字列を回転描画する +extern DXLIBAPI int DrawRotaNStringToHandle( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String, size_t StringLength ) ; // フォントハンドルを使用して文字列を回転描画する +extern DXLIBAPI int DrawRotaFormatStringToHandle( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を回転描画する +extern DXLIBAPI int DrawModiStringToHandle( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用して文字列を変形描画する +extern DXLIBAPI int DrawModiNStringToHandle( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String, size_t StringLength ) ; // フォントハンドルを使用して文字列を変形描画する +extern DXLIBAPI int DrawModiFormatStringToHandle( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を変形描画する + +extern DXLIBAPI int DrawStringFToHandle( float x, float y, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawNStringFToHandle( float x, float y, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawVStringFToHandle( float x, float y, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawNVStringFToHandle( float x, float y, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawFormatStringFToHandle( float x, float y, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawFormatVStringFToHandle( float x, float y, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendStringFToHandle( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を拡大描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendNStringFToHandle( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE ) ; // フォントハンドルを使用して文字列を拡大描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendVStringFToHandle( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を拡大描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendNVStringFToHandle( float x, float y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して文字列を拡大描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendFormatStringFToHandle( float x, float y, double ExRateX, double ExRateY, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を拡大描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawExtendFormatVStringFToHandle( float x, float y, double ExRateX, double ExRateY, unsigned int Color, int FontHandle, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を拡大描画する( 縦書き )( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaStringFToHandle( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL ) ; // フォントハンドルを使用して文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaNStringFToHandle( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *String = NULL , size_t StringLength = 0 ) ; // フォントハンドルを使用して文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawRotaFormatStringFToHandle( float x, float y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *FormatString = NULL , ... ) ; // フォントハンドルを使用して書式指定文字列を回転描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiStringFToHandle( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用して文字列を変形描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiNStringFToHandle( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String, size_t StringLength ) ; // フォントハンドルを使用して文字列を変形描画する( 座標指定が float 版 ) +extern DXLIBAPI int DrawModiFormatStringFToHandle( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用して書式指定文字列を変形描画する( 座標指定が float 版 ) + +extern DXLIBAPI int DrawNumberToIToHandle( int x, int y, int Num, int RisesNum, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して整数型の数値を描画する +extern DXLIBAPI int DrawNumberToFToHandle( int x, int y, double Num, int Length, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して浮動小数点型の数値を描画する +extern DXLIBAPI int DrawNumberPlusToIToHandle( int x, int y, const TCHAR *NoteString, int Num, int RisesNum, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して整数型の数値とその説明の文字列を一度に描画する +extern DXLIBAPI int DrawNumberPlusToFToHandle( int x, int y, const TCHAR *NoteString, double Num, int Length, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 ) ; // フォントハンドルを使用して浮動小数点型の数値とその説明の文字列を一度に描画する + +extern DXLIBAPI int DrawStringToHandleToZBuffer( int x, int y, const TCHAR *String, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag = FALSE ) ; // フォントハンドルを使用してZバッファに対して文字列を描画する +extern DXLIBAPI int DrawNStringToHandleToZBuffer( int x, int y, const TCHAR *String, size_t StringLength, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag = FALSE ) ; // フォントハンドルを使用してZバッファに対して文字列を描画する +extern DXLIBAPI int DrawVStringToHandleToZBuffer( int x, int y, const TCHAR *String, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // フォントハンドルを使用してZバッファに対して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawNVStringToHandleToZBuffer( int x, int y, const TCHAR *String, size_t StringLength, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // フォントハンドルを使用してZバッファに対して文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawFormatStringToHandleToZBuffer( int x, int y, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を描画する +extern DXLIBAPI int DrawFormatVStringToHandleToZBuffer( int x, int y, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を描画する( 縦書き ) +extern DXLIBAPI int DrawExtendStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag = FALSE ) ; // フォントハンドルを使用してZバッファに対して文字列を拡大描画する +extern DXLIBAPI int DrawExtendNStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag = FALSE ) ; // フォントハンドルを使用してZバッファに対して文字列を拡大描画する +extern DXLIBAPI int DrawExtendVStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // フォントハンドルを使用してZバッファに対して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendNVStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, size_t StringLength, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; // フォントハンドルを使用してZバッファに対して文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawExtendFormatStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を拡大描画する +extern DXLIBAPI int DrawExtendFormatVStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を拡大描画する( 縦書き ) +extern DXLIBAPI int DrawRotaStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用してZバッファに対して文字列を回転描画する +extern DXLIBAPI int DrawRotaNStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *String, size_t StringLength ) ; // フォントハンドルを使用してZバッファに対して文字列を回転描画する +extern DXLIBAPI int DrawRotaFormatStringToHandleToZBuffer( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を回転描画する +extern DXLIBAPI int DrawModiStringToHandleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用してZバッファに対して文字列を変形描画する +extern DXLIBAPI int DrawModiNStringToHandleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *String, size_t StringLength ) ; // フォントハンドルを使用してZバッファに対して文字列を変形描画する +extern DXLIBAPI int DrawModiFormatStringToHandleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FontHandle, int WriteZMode /* DX_ZWRITE_MASK 等 */ , int VerticalFlag, const TCHAR *FormatString, ... ) ; // フォントハンドルを使用してZバッファに対して書式指定文字列を変形描画する + +#endif // DX_NON_FONT + + + + + + + + +// DxMath.cpp 関数プロトタイプ宣言 + +// 演算ライブラリ +extern DXLIBAPI int ConvertMatrixFtoD( MATRIX_D *Out, const MATRIX *In ) ; // float型要素の行列をdouble型要素の行列に変換する +extern DXLIBAPI int ConvertMatrixDtoF( MATRIX *Out, const MATRIX_D *In ) ; // double型要素の行列をfloat型要素の行列に変換する +extern DXLIBAPI int CreateIdentityMatrix( MATRIX *Out ) ; // 単位行列を作成する +extern DXLIBAPI int CreateIdentityMatrixD( MATRIX_D *Out ) ; // 単位行列を作成する +extern DXLIBAPI int CreateLookAtMatrix( MATRIX *Out, const VECTOR *Eye, const VECTOR *At, const VECTOR *Up ) ; // ビュー行列を作成する +extern DXLIBAPI int CreateLookAtMatrixD( MATRIX_D *Out, const VECTOR_D *Eye, const VECTOR_D *At, const VECTOR_D *Up ) ; // ビュー行列を作成する +extern DXLIBAPI int CreateLookAtMatrix2( MATRIX *Out, const VECTOR *Eye, double XZAngle, double Oira ) ; // ビュー行列を作成する(方向を回転値で指定) +extern DXLIBAPI int CreateLookAtMatrix2D( MATRIX_D *Out, const VECTOR_D *Eye, double XZAngle, double Oira ) ; // ビュー行列を作成する(方向を回転値で指定) +extern DXLIBAPI int CreateLookAtMatrixRH( MATRIX *Out, const VECTOR *Eye, const VECTOR *At, const VECTOR *Up ) ; // ビュー行列を作成する(右手座標系用) +extern DXLIBAPI int CreateLookAtMatrixRHD( MATRIX_D *Out, const VECTOR_D *Eye, const VECTOR_D *At, const VECTOR_D *Up ) ; // ビュー行列を作成する(右手座標系用) +extern DXLIBAPI int CreateMultiplyMatrix( MATRIX *Out, const MATRIX *In1, const MATRIX *In2 ) ; // 行列の積を求める +extern DXLIBAPI int CreateMultiplyMatrixD( MATRIX_D *Out, const MATRIX_D *In1, const MATRIX_D *In2 ) ; // 行列の積を求める +extern DXLIBAPI int CreatePerspectiveFovMatrix( MATRIX *Out, float fov, float zn, float zf, float aspect = -1.0f ) ; // 射影行列を作成する +extern DXLIBAPI int CreatePerspectiveFovMatrixD( MATRIX_D *Out, double fov, double zn, double zf, double aspect = -1.0f ) ; // 射影行列を作成する +extern DXLIBAPI int CreatePerspectiveFovMatrixRH( MATRIX *Out, float fov, float zn, float zf, float aspect = -1.0f ) ; // 射影行列を作成する(右手座標系用) +extern DXLIBAPI int CreatePerspectiveFovMatrixRHD( MATRIX_D *Out, double fov, double zn, double zf, double aspect = -1.0f ) ; // 射影行列を作成する(右手座標系用) +extern DXLIBAPI int CreateOrthoMatrix( MATRIX *Out, float size, float zn, float zf, float aspect = -1.0f ) ; // 正射影行列を作成する +extern DXLIBAPI int CreateOrthoMatrixD( MATRIX_D *Out, double size, double zn, double zf, double aspect = -1.0f ) ; // 正射影行列を作成する +extern DXLIBAPI int CreateOrthoMatrixRH( MATRIX *Out, float size, float zn, float zf, float aspect = -1.0f ) ; // 正射影行列を作成する(右手座標系用) +extern DXLIBAPI int CreateOrthoMatrixRHD( MATRIX_D *Out, double size, double zn, double zf, double aspect = -1.0f ) ; // 正射影行列を作成する(右手座標系用) +extern DXLIBAPI int CreateScalingMatrix( MATRIX *Out, float sx, float sy, float sz ) ; // スケーリング行列を作成する +extern DXLIBAPI int CreateScalingMatrixD( MATRIX_D *Out, double sx, double sy, double sz ) ; // スケーリング行列を作成する +extern DXLIBAPI int CreateRotationXMatrix( MATRIX *Out, float Angle ) ; // X軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateRotationXMatrixD( MATRIX_D *Out, double Angle ) ; // X軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateRotationYMatrix( MATRIX *Out, float Angle ) ; // Y軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateRotationYMatrixD( MATRIX_D *Out, double Angle ) ; // Y軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateRotationZMatrix( MATRIX *Out, float Angle ) ; // Z軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateRotationZMatrixD( MATRIX_D *Out, double Angle ) ; // Z軸を中心とした回転行列を作成する +extern DXLIBAPI int CreateTranslationMatrix( MATRIX *Out, float x, float y, float z ) ; // 平行移動行列を作成する +extern DXLIBAPI int CreateTranslationMatrixD( MATRIX_D *Out, double x, double y, double z ) ; // 平行移動行列を作成する +extern DXLIBAPI int CreateTransposeMatrix( MATRIX *Out, const MATRIX *In ) ; // 転置行列を作成する +extern DXLIBAPI int CreateTransposeMatrixD( MATRIX_D *Out, const MATRIX_D *In ) ; // 転置行列を作成する +extern DXLIBAPI int CreateInverseMatrix( MATRIX *Out, const MATRIX *In ) ; // 逆行列を作成する +extern DXLIBAPI int CreateInverseMatrixD( MATRIX_D *Out, const MATRIX_D *In ) ; // 逆行列を作成する +extern DXLIBAPI int CreateViewportMatrix( MATRIX *Out, float CenterX, float CenterY, float Width, float Height ) ; // ビューポート行列を作成する +extern DXLIBAPI int CreateViewportMatrixD( MATRIX_D *Out, double CenterX, double CenterY, double Width, double Height ) ; // ビューポート行列を作成する +extern DXLIBAPI int CreateRotationXYZMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // X軸回転→Y軸回転→Z軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationXYZMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // X軸回転→Y軸回転→Z軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationXZYMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // X軸回転→Z軸回転→Y軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationXZYMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // X軸回転→Z軸回転→Y軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationYXZMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // Y軸回転→X軸回転→Z軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationYXZMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // Y軸回転→X軸回転→Z軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationYZXMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // Y軸回転→Z軸回転→X軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationYZXMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // Y軸回転→Z軸回転→X軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationZXYMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // Z軸回転→X軸回転→Y軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationZXYMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // Z軸回転→X軸回転→Y軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationZYXMatrix( MATRIX *Out, float XRot, float YRot, float ZRot ) ; // Z軸回転→Y軸回転→X軸回転を合成した行列を作成する +extern DXLIBAPI int CreateRotationZYXMatrixD( MATRIX_D *Out, double XRot, double YRot, double ZRot ) ; // Z軸回転→Y軸回転→X軸回転を合成した行列を作成する +extern DXLIBAPI int GetMatrixXYZRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からXYZ軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixXYZRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からXYZ軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixXZYRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からXZY軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixXZYRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からXZY軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixYXZRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からYXZ軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixYXZRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からYXZ軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixYZXRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からYZX軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixYZXRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からYZX軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixZXYRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からZXY軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixZXYRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からZXY軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixZYXRotation( const MATRIX *In, float *OutXRot, float *OutYRot, float *OutZRot ) ; // 行列からZYX軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int GetMatrixZYXRotationD( const MATRIX_D *In, double *OutXRot, double *OutYRot, double *OutZRot ) ; // 行列からZYX軸回転の値を取得する( 戻り値 -1:ジンバルロック発生 0:成功 ) +extern DXLIBAPI int VectorConvertFtoD( VECTOR_D *Out, const VECTOR *In ) ; // float型のベクトルをdouble型のベクトルに変換する +extern DXLIBAPI int VectorConvertDtoF( VECTOR *Out, const VECTOR_D *In ) ; // double型のベクトルをfloat型のベクトルに変換する +extern DXLIBAPI int VectorNormalize( VECTOR *Out, const VECTOR *In ) ; // ベクトルを正規化する +extern DXLIBAPI int VectorNormalizeD( VECTOR_D *Out, const VECTOR_D *In ) ; // ベクトルを正規化する +extern DXLIBAPI int VectorScale( VECTOR *Out, const VECTOR *In, float Scale ) ; // ベクトルをスカラー倍する +extern DXLIBAPI int VectorScaleD( VECTOR_D *Out, const VECTOR_D *In, double Scale ) ; // ベクトルをスカラー倍する +extern DXLIBAPI int VectorMultiply( VECTOR *Out, const VECTOR *In1, const VECTOR *In2 ) ; // ベクトルの掛け算をする +extern DXLIBAPI int VectorMultiplyD( VECTOR_D *Out, const VECTOR_D *In1, const VECTOR_D *In2 ) ; // ベクトルの掛け算をする +extern DXLIBAPI int VectorSub( VECTOR *Out, const VECTOR *In1, const VECTOR *In2 ) ; // Out = In1 - In2 のベクトル計算をする +extern DXLIBAPI int VectorSubD( VECTOR_D *Out, const VECTOR_D *In1, const VECTOR_D *In2 ) ; // Out = In1 - In2 のベクトル計算をする +extern DXLIBAPI int VectorAdd( VECTOR *Out, const VECTOR *In1, const VECTOR *In2 ) ; // Out = In1 + In2 のベクトル計算をする +extern DXLIBAPI int VectorAddD( VECTOR_D *Out, const VECTOR_D *In1, const VECTOR_D *In2 ) ; // Out = In1 + In2 のベクトル計算をする +extern DXLIBAPI int VectorOuterProduct( VECTOR *Out, const VECTOR *In1, const VECTOR *In2 ) ; // In1とIn2の外積を計算する +extern DXLIBAPI int VectorOuterProductD( VECTOR_D *Out, const VECTOR_D *In1, const VECTOR_D *In2 ) ; // In1とIn2の外積を計算する +extern DXLIBAPI float VectorInnerProduct( const VECTOR *In1, const VECTOR *In2 ) ; // In1とIn2の内積を計算する +extern DXLIBAPI double VectorInnerProductD( const VECTOR_D *In1, const VECTOR_D *In2 ) ; // In1とIn2の内積を計算する +extern DXLIBAPI int VectorRotationX( VECTOR *Out, const VECTOR *In, double Angle ) ; // ベクトルのX軸を軸にした回転を行う +extern DXLIBAPI int VectorRotationXD( VECTOR_D *Out, const VECTOR_D *In, double Angle ) ; // ベクトルのX軸を軸にした回転を行う +extern DXLIBAPI int VectorRotationY( VECTOR *Out, const VECTOR *In, double Angle ) ; // ベクトルのY軸を軸にした回転を行う +extern DXLIBAPI int VectorRotationYD( VECTOR_D *Out, const VECTOR_D *In, double Angle ) ; // ベクトルのY軸を軸にした回転を行う +extern DXLIBAPI int VectorRotationZ( VECTOR *Out, const VECTOR *In, double Angle ) ; // ベクトルのZ軸を軸にした回転を行う +extern DXLIBAPI int VectorRotationZD( VECTOR_D *Out, const VECTOR_D *In, double Angle ) ; // ベクトルのZ軸を軸にした回転を行う +extern DXLIBAPI int VectorTransform( VECTOR *Out, const VECTOR *InVec, const MATRIX *InMatrix ) ; // ベクトル行列と4x4正方行列を乗算する( w は 1 と仮定 ) +extern DXLIBAPI int VectorTransformD( VECTOR_D *Out, const VECTOR_D *InVec, const MATRIX_D *InMatrix ) ; // ベクトル行列と4x4正方行列を乗算する( w は 1 と仮定 ) +extern DXLIBAPI int VectorTransformSR( VECTOR *Out, const VECTOR *InVec, const MATRIX *InMatrix ) ; // ベクトル行列と4x4正方行列の回転部分のみを乗算する +extern DXLIBAPI int VectorTransformSRD( VECTOR_D *Out, const VECTOR_D *InVec, const MATRIX_D *InMatrix ) ; // ベクトル行列と4x4正方行列の回転部分のみを乗算する +extern DXLIBAPI int VectorTransform4( VECTOR *Out, float *V4Out, const VECTOR *InVec, const float *V4In, const MATRIX *InMatrix ) ; // ベクトル行列と4x4正方行列を乗算する( w の要素を渡す ) +extern DXLIBAPI int VectorTransform4D( VECTOR_D *Out, double *V4Out, const VECTOR_D *InVec, const double *V4In, const MATRIX_D *InMatrix ) ; // ベクトル行列と4x4正方行列を乗算する( w の要素を渡す ) + +extern DXLIBAPI int Segment_Segment_Analyse( const VECTOR *SegmentAPos1, const VECTOR *SegmentAPos2, const VECTOR *SegmentBPos1, const VECTOR *SegmentBPos2, SEGMENT_SEGMENT_RESULT *Result ) ; // 二つの線分の最接近点情報を解析する +extern DXLIBAPI int Segment_Segment_AnalyseD( const VECTOR_D *SegmentAPos1, const VECTOR_D *SegmentAPos2, const VECTOR_D *SegmentBPos1, const VECTOR_D *SegmentBPos2, SEGMENT_SEGMENT_RESULT_D *Result ) ; // 二つの線分の最接近点情報を解析する +extern DXLIBAPI int Segment_Point_Analyse( const VECTOR *SegmentPos1, const VECTOR *SegmentPos2, const VECTOR *PointPos, SEGMENT_POINT_RESULT *Result ) ; // 線分と点の最接近点情報を解析する +extern DXLIBAPI int Segment_Point_AnalyseD( const VECTOR_D *SegmentPos1, const VECTOR_D *SegmentPos2, const VECTOR_D *PointPos, SEGMENT_POINT_RESULT_D *Result ) ; // 線分と点の最接近点情報を解析する +extern DXLIBAPI int Segment_Triangle_Analyse( const VECTOR *SegmentPos1, const VECTOR *SegmentPos2, const VECTOR *TrianglePos1, const VECTOR *TrianglePos2, const VECTOR *TrianglePos3, SEGMENT_TRIANGLE_RESULT *Result ) ; // 線分と三角形の最接近点情報を解析する +extern DXLIBAPI int Segment_Triangle_AnalyseD( const VECTOR_D *SegmentPos1, const VECTOR_D *SegmentPos2, const VECTOR_D *TrianglePos1, const VECTOR_D *TrianglePos2, const VECTOR_D *TrianglePos3, SEGMENT_TRIANGLE_RESULT_D *Result ) ; // 線分と三角形の最接近点情報を解析する +extern DXLIBAPI int Triangle_Point_Analyse( const VECTOR *TrianglePos1, const VECTOR *TrianglePos2, const VECTOR *TrianglePos3, const VECTOR *PointPos, TRIANGLE_POINT_RESULT *Result ) ; // 三角形と点の最接近点情報を解析する +extern DXLIBAPI int Triangle_Point_AnalyseD( const VECTOR_D *TrianglePos1, const VECTOR_D *TrianglePos2, const VECTOR_D *TrianglePos3, const VECTOR_D *PointPos, TRIANGLE_POINT_RESULT_D *Result ) ; // 三角形と点の最接近点情報を解析する +extern DXLIBAPI int Plane_Point_Analyse( const VECTOR *PlanePos, const VECTOR *PlaneNormal, const VECTOR *PointPos, PLANE_POINT_RESULT *Result ) ; // 平面と点の最近点情報を解析する +extern DXLIBAPI int Plane_Point_AnalyseD( const VECTOR_D *PlanePos, const VECTOR_D *PlaneNormal, const VECTOR_D *PointPos, PLANE_POINT_RESULT_D *Result ) ; // 平面と点の最近点情報を解析する + +extern DXLIBAPI void TriangleBarycenter( VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3, VECTOR Position, float *TrianglePos1Weight, float *TrianglePos2Weight, float *TrianglePos3Weight ) ; // 指定の座標から三角形の重心を求める +extern DXLIBAPI void TriangleBarycenterD( VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3, VECTOR_D Position, double *TrianglePos1Weight, double *TrianglePos2Weight, double *TrianglePos3Weight ) ; // 指定の座標から三角形の重心を求める + +extern DXLIBAPI float Segment_Segment_MinLength( VECTOR SegmentAPos1, VECTOR SegmentAPos2, VECTOR SegmentBPos1, VECTOR SegmentBPos2 ) ; // 二つの線分の最近点間の距離を得る +extern DXLIBAPI double Segment_Segment_MinLengthD( VECTOR_D SegmentAPos1, VECTOR_D SegmentAPos2, VECTOR_D SegmentBPos1, VECTOR_D SegmentBPos2 ) ; // 二つの線分の最近点間の距離を得る +extern DXLIBAPI float Segment_Segment_MinLength_Square( VECTOR SegmentAPos1, VECTOR SegmentAPos2, VECTOR SegmentBPos1, VECTOR SegmentBPos2 ) ; // 二つの線分の最近点間の距離の二乗を得る +extern DXLIBAPI double Segment_Segment_MinLength_SquareD( VECTOR_D SegmentAPos1, VECTOR_D SegmentAPos2, VECTOR_D SegmentBPos1, VECTOR_D SegmentBPos2 ) ; // 二つの線分の最近点間の距離の二乗を得る +extern DXLIBAPI float Segment_Triangle_MinLength( VECTOR SegmentPos1, VECTOR SegmentPos2, VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3 ) ; // 線分と三角形の最近点間の距離を得る +extern DXLIBAPI double Segment_Triangle_MinLengthD( VECTOR_D SegmentPos1, VECTOR_D SegmentPos2, VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3 ) ; // 線分と三角形の最近点間の距離を得る +extern DXLIBAPI float Segment_Triangle_MinLength_Square( VECTOR SegmentPos1, VECTOR SegmentPos2, VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3 ) ; // 線分と三角形の最近点間の距離の二乗を得る +extern DXLIBAPI double Segment_Triangle_MinLength_SquareD( VECTOR_D SegmentPos1, VECTOR_D SegmentPos2, VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3 ) ; // 線分と三角形の最近点間の距離の二乗を得る +extern DXLIBAPI float Segment_Point_MinLength( VECTOR SegmentPos1, VECTOR SegmentPos2, VECTOR PointPos ) ; // 線分と点の一番近い距離を得る +extern DXLIBAPI double Segment_Point_MinLengthD( VECTOR_D SegmentPos1, VECTOR_D SegmentPos2, VECTOR_D PointPos ) ; // 線分と点の一番近い距離を得る +extern DXLIBAPI float Segment_Point_MinLength_Square( VECTOR SegmentPos1, VECTOR SegmentPos2, VECTOR PointPos ) ; // 線分と点の一番近い距離の二乗を得る +extern DXLIBAPI double Segment_Point_MinLength_SquareD( VECTOR_D SegmentPos1, VECTOR_D SegmentPos2, VECTOR_D PointPos ) ; // 線分と点の一番近い距離の二乗を得る +extern DXLIBAPI float Triangle_Point_MinLength( VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3, VECTOR PointPos ) ; // 三角形と点の一番近い距離を得る +extern DXLIBAPI double Triangle_Point_MinLengthD( VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3, VECTOR_D PointPos ) ; // 三角形と点の一番近い距離を得る +extern DXLIBAPI float Triangle_Point_MinLength_Square( VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3, VECTOR PointPos ) ; // 三角形と点の一番近い距離の二乗を得る +extern DXLIBAPI double Triangle_Point_MinLength_SquareD( VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3, VECTOR_D PointPos ) ; // 三角形と点の一番近い距離の二乗を得る +extern DXLIBAPI float Triangle_Triangle_MinLength( VECTOR Triangle1Pos1, VECTOR Triangle1Pos2, VECTOR Triangle1Pos3, VECTOR Triangle2Pos1, VECTOR Triangle2Pos2, VECTOR Triangle2Pos3 ) ; // 二つの三角形の最近点間の距離を得る +extern DXLIBAPI double Triangle_Triangle_MinLengthD( VECTOR_D Triangle1Pos1, VECTOR_D Triangle1Pos2, VECTOR_D Triangle1Pos3, VECTOR_D Triangle2Pos1, VECTOR_D Triangle2Pos2, VECTOR_D Triangle2Pos3 ) ; // 二つの三角形の最近点間の距離を得る +extern DXLIBAPI float Triangle_Triangle_MinLength_Square( VECTOR Triangle1Pos1, VECTOR Triangle1Pos2, VECTOR Triangle1Pos3, VECTOR Triangle2Pos1, VECTOR Triangle2Pos2, VECTOR Triangle2Pos3 ) ; // 二つの三角形の最近点間の距離の二乗を得る +extern DXLIBAPI double Triangle_Triangle_MinLength_SquareD( VECTOR_D Triangle1Pos1, VECTOR_D Triangle1Pos2, VECTOR_D Triangle1Pos3, VECTOR_D Triangle2Pos1, VECTOR_D Triangle2Pos2, VECTOR_D Triangle2Pos3 ) ; // 二つの三角形の最近点間の距離の二乗を得る +extern DXLIBAPI VECTOR Plane_Point_MinLength_Position( VECTOR PlanePos, VECTOR PlaneNormal, VECTOR PointPos ) ; // 点に一番近い平面上の座標を得る +extern DXLIBAPI VECTOR_D Plane_Point_MinLength_PositionD( VECTOR_D PlanePos, VECTOR_D PlaneNormal, VECTOR_D PointPos ) ; // 点に一番近い平面上の座標を得る +extern DXLIBAPI float Plane_Point_MinLength( VECTOR PlanePos, VECTOR PlaneNormal, VECTOR PointPos ) ; // 平面と点の一番近い距離を得る +extern DXLIBAPI double Plane_Point_MinLengthD( VECTOR_D PlanePos, VECTOR_D PlaneNormal, VECTOR_D PointPos ) ; // 平面と点の一番近い距離を得る + +extern DXLIBAPI HITRESULT_LINE HitCheck_Line_Triangle( VECTOR LinePos1, VECTOR LinePos2, VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3 ) ; // 三角形と線の当たり判定 +extern DXLIBAPI HITRESULT_LINE_D HitCheck_Line_TriangleD( VECTOR_D LinePos1, VECTOR_D LinePos2, VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3 ) ; // 三角形と線の当たり判定 +extern DXLIBAPI int HitCheck_Triangle_Triangle( VECTOR Triangle1Pos1, VECTOR Triangle1Pos2, VECTOR Triangle1Pos3, VECTOR Triangle2Pos1, VECTOR Triangle2Pos2, VECTOR Triangle2Pos3 ) ; // 三角形と三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Triangle_TriangleD( VECTOR_D Triangle1Pos1, VECTOR_D Triangle1Pos2, VECTOR_D Triangle1Pos3, VECTOR_D Triangle2Pos1, VECTOR_D Triangle2Pos2, VECTOR_D Triangle2Pos3 ) ; // 三角形と三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Triangle_Triangle_2D( VECTOR Triangle1Pos1, VECTOR Triangle1Pos2, VECTOR Triangle1Pos3, VECTOR Triangle2Pos1, VECTOR Triangle2Pos2, VECTOR Triangle2Pos3 ) ; // 三角形と三角形の当たり判定( 2D版 )( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Triangle_TriangleD_2D( VECTOR_D Triangle1Pos1, VECTOR_D Triangle1Pos2, VECTOR_D Triangle1Pos3, VECTOR_D Triangle2Pos1, VECTOR_D Triangle2Pos2, VECTOR_D Triangle2Pos3 ) ; // 三角形と三角形の当たり判定( 2D版 )( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI HITRESULT_LINE HitCheck_Line_Cube( VECTOR LinePos1, VECTOR LinePos2, VECTOR CubePos1, VECTOR CubePos2 ); // 線と箱の当たり判定 +extern DXLIBAPI HITRESULT_LINE_D HitCheck_Line_CubeD( VECTOR_D LinePos1, VECTOR_D LinePos2, VECTOR_D CubePos1, VECTOR_D CubePos2 ); // 線と箱の当たり判定 +extern DXLIBAPI int HitCheck_Point_Cone( VECTOR PointPos, VECTOR ConeTopPos, VECTOR ConeBottomPos, float ConeR ) ; // 点と円錐の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Point_ConeD( VECTOR_D PointPos, VECTOR_D ConeTopPos, VECTOR_D ConeBottomPos, double ConeR ) ; // 点と円錐の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Line_Sphere( VECTOR LinePos1, VECTOR LinePos2, VECTOR SphereCenterPos, float SphereR ) ; // 線と球の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Line_SphereD( VECTOR_D LinePos1, VECTOR_D LinePos2, VECTOR_D SphereCenterPos, double SphereR ) ; // 線と球の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_Sphere( VECTOR Sphere1CenterPos, float Sphere1R, VECTOR Sphere2CenterPos, float Sphere2R ) ; // 球と球の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_SphereD( VECTOR_D Sphere1CenterPos, double Sphere1R, VECTOR_D Sphere2CenterPos, double Sphere2R ) ; // 球と球の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_Capsule( VECTOR SphereCenterPos, float SphereR, VECTOR CapPos1, VECTOR CapPos2, float CapR ) ; // 球とカプセルの当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_CapsuleD( VECTOR_D SphereCenterPos, double SphereR, VECTOR_D CapPos1, VECTOR_D CapPos2, double CapR ) ; // 球とカプセルの当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_Triangle( VECTOR SphereCenterPos, float SphereR, VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3 ) ; // 球と三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Sphere_TriangleD( VECTOR_D SphereCenterPos, double SphereR, VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3 ) ; // 球と三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Capsule_Capsule( VECTOR Cap1Pos1, VECTOR Cap1Pos2, float Cap1R, VECTOR Cap2Pos1, VECTOR Cap2Pos2, float Cap2R ) ; // カプセル同士の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Capsule_CapsuleD( VECTOR_D Cap1Pos1, VECTOR_D Cap1Pos2, double Cap1R, VECTOR_D Cap2Pos1, VECTOR_D Cap2Pos2, double Cap2R ) ; // カプセル同士の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Capsule_Triangle( VECTOR CapPos1, VECTOR CapPos2, float CapR, VECTOR TrianglePos1, VECTOR TrianglePos2, VECTOR TrianglePos3 ) ; // カプセルと三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) +extern DXLIBAPI int HitCheck_Capsule_TriangleD( VECTOR_D CapPos1, VECTOR_D CapPos2, double CapR, VECTOR_D TrianglePos1, VECTOR_D TrianglePos2, VECTOR_D TrianglePos3 ) ; // カプセルと三角形の当たり判定( TRUE:当たっている FALSE:当たっていない ) + +// その他 +extern DXLIBAPI int RectClipping( RECT *Rect, const RECT *ClippuRect ) ; // 矩形のクリッピング +extern DXLIBAPI int RectAdjust( RECT *Rect ) ; // 矩形の left が right より値が大きい場合などの誤りを補正する +extern DXLIBAPI int GetRectSize( const RECT *Rect, int *Width, int *Height ) ; // 矩形の幅と高さを求める + +// 表記簡略版 +extern DXLIBAPI MATRIX MGetIdent( void ) ; // 単位行列を取得する +extern DXLIBAPI MATRIX_D MGetIdentD( void ) ; // 単位行列を取得する +extern DXLIBAPI MATRIX MMult( MATRIX In1, MATRIX In2 ) ; // 行列の乗算を行う +extern DXLIBAPI MATRIX_D MMultD( MATRIX_D In1, MATRIX_D In2 ) ; // 行列の乗算を行う +extern DXLIBAPI MATRIX MScale( MATRIX InM, float Scale ) ; // 行列のスケーリングを行う +extern DXLIBAPI MATRIX_D MScaleD( MATRIX_D InM, double Scale ) ; // 行列のスケーリングを行う +extern DXLIBAPI MATRIX MAdd( MATRIX In1, MATRIX In2 ) ; // 行列の足し算を行う +extern DXLIBAPI MATRIX_D MAddD( MATRIX_D In1, MATRIX_D In2 ) ; // 行列の足し算を行う +extern DXLIBAPI MATRIX MGetScale( VECTOR Scale ) ; // 拡大行列を取得する +extern DXLIBAPI MATRIX_D MGetScaleD( VECTOR_D Scale ) ; // 拡大行列を取得する +extern DXLIBAPI MATRIX MGetRotX( float XAxisRotate ) ; // X軸回転行列を取得する +extern DXLIBAPI MATRIX_D MGetRotXD( double XAxisRotate ) ; // X軸回転行列を取得する +extern DXLIBAPI MATRIX MGetRotY( float YAxisRotate ) ; // Y軸回転行列を取得する +extern DXLIBAPI MATRIX_D MGetRotYD( double YAxisRotate ) ; // Y軸回転行列を取得する +extern DXLIBAPI MATRIX MGetRotZ( float ZAxisRotate ) ; // Z軸回転行列を取得する +extern DXLIBAPI MATRIX_D MGetRotZD( double ZAxisRotate ) ; // Z軸回転行列を取得する +extern DXLIBAPI MATRIX MGetRotAxis( VECTOR RotateAxis, float Rotate ) ; // 指定軸で指定角度回転する行列を取得する +extern DXLIBAPI MATRIX_D MGetRotAxisD( VECTOR_D RotateAxis, double Rotate ) ; // 指定軸で指定角度回転する行列を取得する +extern DXLIBAPI MATRIX MGetRotVec2( VECTOR In1, VECTOR In2 ) ; // In1 の向きから In2 の向きへ変換する回転行列を取得する( In2 と In1 が真逆のベクトルの場合は回転軸は不定 ) +extern DXLIBAPI MATRIX_D MGetRotVec2D( VECTOR_D In1, VECTOR_D In2 ) ; // In1 の向きから In2 の向きへ変換する回転行列を取得する( In2 と In1 が真逆のベクトルの場合は回転軸は不定 ) +extern DXLIBAPI MATRIX MGetTranslate( VECTOR Trans ) ; // 平行移動行列を取得する +extern DXLIBAPI MATRIX_D MGetTranslateD( VECTOR_D Trans ) ; // 平行移動行列を取得する +extern DXLIBAPI MATRIX MGetAxis1( VECTOR XAxis, VECTOR YAxis, VECTOR ZAxis, VECTOR Pos ) ; // 指定の3軸ローカルのベクトルを基本軸上のベクトルに変換する行列を取得する( x' = XAxis.x * x + YAixs.x * y + ZAxis.z * z + Pos.x y' = XAxis.y * x + YAixs.y * y + ZAxis.y * z + Pos.y z' = XAxis.z * x + YAixs.z * y + ZAxis.z * z + Pos.z ) +extern DXLIBAPI MATRIX_D MGetAxis1D( VECTOR_D XAxis, VECTOR_D YAxis, VECTOR_D ZAxis, VECTOR_D Pos ) ; // 指定の3軸ローカルのベクトルを基本軸上のベクトルに変換する行列を取得する( x' = XAxis.x * x + YAixs.x * y + ZAxis.z * z + Pos.x y' = XAxis.y * x + YAixs.y * y + ZAxis.y * z + Pos.y z' = XAxis.z * x + YAixs.z * y + ZAxis.z * z + Pos.z ) +extern DXLIBAPI MATRIX MGetAxis2( VECTOR XAxis, VECTOR YAxis, VECTOR ZAxis, VECTOR Pos ) ; // 基本軸上のベクトルを指定の3軸上に投影したベクトルに変換する行列を取得する( x' = XAxis.x * ( x - Pos.x ) + XAxis.y * ( x - Pos.x ) + XAxis.z * ( x - Pos.x ) y' = YAxis.x * ( x - Pos.x ) + YAxis.y * ( x - Pos.x ) + YAxis.z * ( x - Pos.x ) z' = ZAxis.x * ( x - Pos.x ) + ZAxis.y * ( x - Pos.x ) + ZAxis.z * ( x - Pos.x ) ) +extern DXLIBAPI MATRIX_D MGetAxis2D( VECTOR_D XAxis, VECTOR_D YAxis, VECTOR_D ZAxis, VECTOR_D Pos ) ; // 基本軸上のベクトルを指定の3軸上に投影したベクトルに変換する行列を取得する( x' = XAxis.x * ( x - Pos.x ) + XAxis.y * ( x - Pos.x ) + XAxis.z * ( x - Pos.x ) y' = YAxis.x * ( x - Pos.x ) + YAxis.y * ( x - Pos.x ) + YAxis.z * ( x - Pos.x ) z' = ZAxis.x * ( x - Pos.x ) + ZAxis.y * ( x - Pos.x ) + ZAxis.z * ( x - Pos.x ) ) +extern DXLIBAPI MATRIX MTranspose( MATRIX InM ) ; // 転置行列を取得する +extern DXLIBAPI MATRIX_D MTransposeD( MATRIX_D InM ) ; // 転置行列を取得する +extern DXLIBAPI MATRIX MInverse( MATRIX InM ) ; // 逆行列を取得する +extern DXLIBAPI MATRIX_D MInverseD( MATRIX_D InM ) ; // 逆行列を取得する +extern DXLIBAPI VECTOR MGetSize( MATRIX InM ) ; // 拡大行列のX軸、Y軸、Z軸の拡大率を取得する +extern DXLIBAPI VECTOR_D MGetSizeD( MATRIX_D InM ) ; // 拡大行列のX軸、Y軸、Z軸の拡大率を取得する +extern DXLIBAPI MATRIX MGetRotElem( MATRIX InM ) ; // 行列の回転成分を取得する +extern DXLIBAPI MATRIX_D MGetRotElemD( MATRIX_D InM ) ; // 行列の回転成分を取得する + + +// 行列の平行移動成分を取得する +__inline VECTOR MGetTranslateElem( MATRIX &InM ) +{ + VECTOR Result ; + + Result.x = InM.m[ 3 ][ 0 ] ; + Result.y = InM.m[ 3 ][ 1 ] ; + Result.z = InM.m[ 3 ][ 2 ] ; + + return Result ; +} + +// 行列の平行移動成分を取得する +__inline VECTOR_D MGetTranslateElemD( MATRIX_D &InM ) +{ + VECTOR_D Result ; + + Result.x = InM.m[ 3 ][ 0 ] ; + Result.y = InM.m[ 3 ][ 1 ] ; + Result.z = InM.m[ 3 ][ 2 ] ; + + return Result ; +} + +// ベクトル値の変換 +__inline VECTOR_D VConvFtoD( const VECTOR &In ) +{ + VECTOR_D Result ; + + Result.x = In.x ; + Result.y = In.y ; + Result.z = In.z ; + + return Result ; +} + +__inline VECTOR VConvDtoF( const VECTOR_D &In ) +{ + VECTOR Result ; + + Result.x = ( float )In.x ; + Result.y = ( float )In.y ; + Result.z = ( float )In.z ; + + return Result ; +} + +// ベクトル値の生成 +__inline VECTOR VGet( float x, float y, float z ) +{ + VECTOR Result; + Result.x = x ; + Result.y = y ; + Result.z = z ; + return Result ; +} + +__inline VECTOR_D VGetD( double x, double y, double z ) +{ + VECTOR_D Result; + Result.x = x ; + Result.y = y ; + Result.z = z ; + return Result ; +} + +__inline FLOAT2 F2Get( float u, float v ) +{ + FLOAT2 Result; + Result.u = u ; + Result.v = v ; + return Result ; +} + +// 4要素ベクトル値の生成 +__inline FLOAT4 F4Get( float x, float y, float z, float w ) +{ + FLOAT4 Result; + Result.x = x ; + Result.y = y ; + Result.z = z ; + Result.w = w ; + return Result ; +} + +__inline DOUBLE4 D4Get( double x, double y, double z, double w ) +{ + DOUBLE4 Result; + Result.x = x ; + Result.y = y ; + Result.z = z ; + Result.w = w ; + return Result ; +} + +// ベクトルの加算 +__inline VECTOR VAdd( const VECTOR &In1, const VECTOR &In2 ) +{ + VECTOR Result ; + Result.x = In1.x + In2.x ; + Result.y = In1.y + In2.y ; + Result.z = In1.z + In2.z ; + return Result ; +} + +__inline VECTOR_D VAddD( const VECTOR_D &In1, const VECTOR_D &In2 ) +{ + VECTOR_D Result ; + Result.x = In1.x + In2.x ; + Result.y = In1.y + In2.y ; + Result.z = In1.z + In2.z ; + return Result ; +} + +// ベクトルの減算 +__inline VECTOR VSub( const VECTOR &In1, const VECTOR &In2 ) +{ + VECTOR Result ; + Result.x = In1.x - In2.x ; + Result.y = In1.y - In2.y ; + Result.z = In1.z - In2.z ; + return Result ; +} + +__inline VECTOR_D VSubD( const VECTOR_D &In1, const VECTOR_D &In2 ) +{ + VECTOR_D Result ; + Result.x = In1.x - In2.x ; + Result.y = In1.y - In2.y ; + Result.z = In1.z - In2.z ; + return Result ; +} + +__inline FLOAT2 F2Add( const FLOAT2 &In1, const FLOAT2 &In2 ) +{ + FLOAT2 Result ; + Result.u = In1.u + In2.u ; + Result.v = In1.v + In2.v ; + return Result ; +} + +// 4要素ベクトルの加算 +__inline FLOAT4 F4Add( const FLOAT4 &In1, const FLOAT4 &In2 ) +{ + FLOAT4 Result ; + Result.x = In1.x + In2.x ; + Result.y = In1.y + In2.y ; + Result.z = In1.z + In2.z ; + Result.w = In1.w + In2.w ; + return Result ; +} + +__inline DOUBLE4 D4Add( const DOUBLE4 &In1, const DOUBLE4 &In2 ) +{ + DOUBLE4 Result ; + Result.x = In1.x + In2.x ; + Result.y = In1.y + In2.y ; + Result.z = In1.z + In2.z ; + Result.w = In1.w + In2.w ; + return Result ; +} + +__inline FLOAT2 F2Sub( const FLOAT2 &In1, const FLOAT2 &In2 ) +{ + FLOAT2 Result ; + Result.u = In1.u - In2.u ; + Result.v = In1.v - In2.v ; + return Result ; +} + +// 4要素ベクトルの減算 +__inline FLOAT4 F4Sub( const FLOAT4 &In1, const FLOAT4 &In2 ) +{ + FLOAT4 Result ; + Result.x = In1.x - In2.x ; + Result.y = In1.y - In2.y ; + Result.z = In1.z - In2.z ; + Result.w = In1.w - In2.w ; + return Result ; +} + +__inline DOUBLE4 D4Sub( const DOUBLE4 &In1, const DOUBLE4 &In2 ) +{ + DOUBLE4 Result ; + Result.x = In1.x - In2.x ; + Result.y = In1.y - In2.y ; + Result.z = In1.z - In2.z ; + Result.w = In1.w - In2.w ; + return Result ; +} + +// ベクトルの内積 +__inline float VDot( const VECTOR &In1, const VECTOR &In2 ) +{ + return In1.x * In2.x + In1.y * In2.y + In1.z * In2.z ; +} + +__inline double VDotD( const VECTOR_D &In1, const VECTOR_D &In2 ) +{ + return In1.x * In2.x + In1.y * In2.y + In1.z * In2.z ; +} + +// ベクトルの外積 +__inline VECTOR VCross( const VECTOR &In1, const VECTOR &In2 ) +{ + VECTOR Result ; + Result.x = In1.y * In2.z - In1.z * In2.y ; + Result.y = In1.z * In2.x - In1.x * In2.z ; + Result.z = In1.x * In2.y - In1.y * In2.x ; + return Result ; +} + +__inline VECTOR_D VCrossD( const VECTOR_D &In1, const VECTOR_D &In2 ) +{ + VECTOR_D Result ; + Result.x = In1.y * In2.z - In1.z * In2.y ; + Result.y = In1.z * In2.x - In1.x * In2.z ; + Result.z = In1.x * In2.y - In1.y * In2.x ; + return Result ; +} + +// ベクトルのスケーリング +__inline VECTOR VScale( const VECTOR &In, float Scale ) +{ + VECTOR Result ; + Result.x = In.x * Scale ; + Result.y = In.y * Scale ; + Result.z = In.z * Scale ; + return Result ; +} + +__inline VECTOR_D VScaleD( const VECTOR_D &In, double Scale ) +{ + VECTOR_D Result ; + Result.x = In.x * Scale ; + Result.y = In.y * Scale ; + Result.z = In.z * Scale ; + return Result ; +} + +__inline FLOAT2 F2Scale( const FLOAT2 &In, float Scale ) +{ + FLOAT2 Result ; + Result.u = In.u * Scale ; + Result.v = In.v * Scale ; + return Result ; +} + +// 4要素ベクトルのスケーリング +__inline FLOAT4 F4Scale( const FLOAT4 &In, float Scale ) +{ + FLOAT4 Result ; + Result.x = In.x * Scale ; + Result.y = In.y * Scale ; + Result.z = In.z * Scale ; + Result.w = In.w * Scale ; + return Result ; +} + +__inline DOUBLE4 D4Scale( const DOUBLE4 &In, double Scale ) +{ + DOUBLE4 Result ; + Result.x = In.x * Scale ; + Result.y = In.y * Scale ; + Result.z = In.z * Scale ; + Result.w = In.w * Scale ; + return Result ; +} + +// ベクトルの正規化 +extern DXLIBAPI VECTOR VNorm( VECTOR In ) ; +extern DXLIBAPI VECTOR_D VNormD( VECTOR_D In ) ; + +// ベクトルのサイズ +extern DXLIBAPI float VSize( VECTOR In ) ; +extern DXLIBAPI double VSizeD( VECTOR_D In ) ; + +// ベクトルのサイズの2乗 +__inline float VSquareSize( const VECTOR &In ) +{ + return In.x * In.x + In.y * In.y + In.z * In.z ; +} + +__inline double VSquareSizeD( const VECTOR_D &In ) +{ + return In.x * In.x + In.y * In.y + In.z * In.z ; +} + +// 行列を使った座標変換 +__inline VECTOR VTransform( const VECTOR &InV, const MATRIX &InM ) +{ + VECTOR Result ; + Result.x = InV.x * InM.m[0][0] + InV.y * InM.m[1][0] + InV.z * InM.m[2][0] + InM.m[3][0] ; + Result.y = InV.x * InM.m[0][1] + InV.y * InM.m[1][1] + InV.z * InM.m[2][1] + InM.m[3][1] ; + Result.z = InV.x * InM.m[0][2] + InV.y * InM.m[1][2] + InV.z * InM.m[2][2] + InM.m[3][2] ; + return Result ; +} + +__inline VECTOR_D VTransformD( const VECTOR_D &InV, const MATRIX_D &InM ) +{ + VECTOR_D Result ; + Result.x = InV.x * InM.m[0][0] + InV.y * InM.m[1][0] + InV.z * InM.m[2][0] + InM.m[3][0] ; + Result.y = InV.x * InM.m[0][1] + InV.y * InM.m[1][1] + InV.z * InM.m[2][1] + InM.m[3][1] ; + Result.z = InV.x * InM.m[0][2] + InV.y * InM.m[1][2] + InV.z * InM.m[2][2] + InM.m[3][2] ; + return Result ; +} + +// 行列を使った座標変換( スケーリング+回転成分のみ ) +__inline VECTOR VTransformSR( const VECTOR &InV, const MATRIX &InM ) +{ + VECTOR Result ; + Result.x = InV.x * InM.m[0][0] + InV.y * InM.m[1][0] + InV.z * InM.m[2][0] ; + Result.y = InV.x * InM.m[0][1] + InV.y * InM.m[1][1] + InV.z * InM.m[2][1] ; + Result.z = InV.x * InM.m[0][2] + InV.y * InM.m[1][2] + InV.z * InM.m[2][2] ; + return Result ; +} + +__inline VECTOR_D VTransformSRD( const VECTOR_D &InV, const MATRIX_D &InM ) +{ + VECTOR_D Result ; + Result.x = InV.x * InM.m[0][0] + InV.y * InM.m[1][0] + InV.z * InM.m[2][0] ; + Result.y = InV.x * InM.m[0][1] + InV.y * InM.m[1][1] + InV.z * InM.m[2][1] ; + Result.z = InV.x * InM.m[0][2] + InV.y * InM.m[1][2] + InV.z * InM.m[2][2] ; + return Result ; +} + +// 二つのベクトルが成す角のコサイン値を得る +extern DXLIBAPI float VCos( VECTOR In1, VECTOR In2 ) ; +extern DXLIBAPI double VCosD( VECTOR_D In1, VECTOR_D In2 ) ; + +// 二つのベクトルが成す角の角度を得る( 単位:ラジアン ) +extern DXLIBAPI float VRad( VECTOR In1, VECTOR In2 ) ; +extern DXLIBAPI double VRadD( VECTOR_D In1, VECTOR_D In2 ) ; + + + +// 2つのクォータニオンの乗算の結果を返す +__inline FLOAT4 QTCross( const FLOAT4 &A, const FLOAT4 &B ) +{ + FLOAT4 Result ; + Result.w = A.w * B.w - ( A.x * B.x + A.y * B.y + A.z * B.z ) ; + Result.x = B.x * A.w + A.x * B.w + ( A.y * B.z - A.z * B.y ) ; + Result.y = B.y * A.w + A.y * B.w + ( A.z * B.x - A.x * B.z ) ; + Result.z = B.z * A.w + A.z * B.w + ( A.x * B.y - A.y * B.x ) ; + return Result ; +} +__inline DOUBLE4 QTCrossD( const DOUBLE4 &A, const DOUBLE4 &B ) +{ + DOUBLE4 Result ; + Result.w = A.w * B.w - ( A.x * B.x + A.y * B.y + A.z * B.z ) ; + Result.x = B.x * A.w + A.x * B.w + ( A.y * B.z - A.z * B.y ) ; + Result.y = B.y * A.w + A.y * B.w + ( A.z * B.x - A.x * B.z ) ; + Result.z = B.z * A.w + A.z * B.w + ( A.x * B.y - A.y * B.x ) ; + return Result ; +} + +// 共役クォータニオンを返す +__inline FLOAT4 QTConj( const FLOAT4 &A ) +{ + FLOAT4 Result ; + Result.w = A.w ; + Result.x = -A.x ; + Result.y = -A.y ; + Result.z = -A.z ; + return Result ; +} +__inline DOUBLE4 QTConjD( const DOUBLE4 &A ) +{ + DOUBLE4 Result ; + Result.w = A.w ; + Result.x = -A.x ; + Result.y = -A.y ; + Result.z = -A.z ; + return Result ; +} + +// 回転を表すクォータニオンを返す +extern DXLIBAPI FLOAT4 QTRot( VECTOR Axis, float Angle ) ; +extern DXLIBAPI DOUBLE4 QTRotD( VECTOR_D Axis, double Angle ) ; + +// 3次元空間上の点を任意の軸の周りに任意の角度だけ回転させる関数 +extern DXLIBAPI VECTOR VRotQ( VECTOR P, VECTOR Axis, float Angle ) ; +extern DXLIBAPI VECTOR_D VRotQD( VECTOR_D P, VECTOR_D Axis, double Angle ) ; + + + + + + + + + + +// DxBaseImage.cpp 関数プロトタイプ宣言 + +// 基本イメージデータのロード+DIB関係 +extern DXLIBAPI int CreateGraphImageOrDIBGraph( const TCHAR *FileName, const void *DataImage, int DataImageSize, int DataImageType /* LOADIMAGE_TYPE_FILE 等 */ , int BmpFlag, int ReverseFlag, BASEIMAGE *BaseImage, BITMAPINFO **BmpInfo, void **GraphData ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージを読み込み、基本イメージデータ若しくはBMPデータを構築する +extern DXLIBAPI int CreateGraphImageOrDIBGraphWithStrLen( const TCHAR *FileName, size_t FileNameLength, const void *DataImage, int DataImageSize, int DataImageType /* LOADIMAGE_TYPE_FILE 等 */ , int BmpFlag, int ReverseFlag, BASEIMAGE *BaseImage, BITMAPINFO **BmpInfo, void **GraphData ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージを読み込み、基本イメージデータ若しくはBMPデータを構築する +extern DXLIBAPI int CreateGraphImageType2( STREAMDATA *Src, BASEIMAGE *Dest ) ; // 画像データから構築したストリーム読み込み用データを使用して基本イメージデータを構築する +extern DXLIBAPI int CreateBmpInfo( BITMAPINFO *BmpInfo, int Width, int Height, int Pitch, const void *SrcGrData, void **DestGrData ) ; // 24bitカラー形式のビットマップデータからBMPデータを構築する +extern DXLIBAPI int GetImageSize_File( const TCHAR *FileName, int *SizeX, int *SizeY ) ; // 画像ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI int GetImageSize_FileWithStrLen( const TCHAR *FileName, size_t FileNameLength, int *SizeX, int *SizeY ) ; // 画像ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI int GetImageSize_Mem( const void *FileImage, int FileImageSize, int *SizeX, int *SizeY ) ; // メモリ上に展開された画像ファイルの横ピクセル数と縦ピクセル数を取得する +extern DXLIBAPI unsigned int GetGraphImageFullColorCode( const BASEIMAGE *GraphImage, int x, int y ) ; // 基本イメージデータの指定座標のフルカラーコードを取得する +extern DXLIBAPI int CreateGraphImage_plus_Alpha( const TCHAR *FileName, const void *RgbImage, int RgbImageSize, int RgbImageType, const void *AlphaImage, int AlphaImageSize, int AlphaImageType, BASEIMAGE *RgbGraphImage, BASEIMAGE *AlphaGraphImage, int ReverseFlag ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージを読み込み、基本イメージデータを構築する +extern DXLIBAPI int CreateGraphImage_plus_AlphaWithStrLen( const TCHAR *FileName, size_t FileNameLength, const void *RgbImage, int RgbImageSize, int RgbImageType, const void *AlphaImage, int AlphaImageSize, int AlphaImageType, BASEIMAGE *RgbGraphImage, BASEIMAGE *AlphaGraphImage, int ReverseFlag ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージを読み込み、基本イメージデータを構築する +extern DXLIBAPI int ReverseGraphImage( BASEIMAGE *GraphImage ) ; // 基本イメージデータを左右反転する + +//extern DXLIBAPI int AddUserGraphLoadFunction( int ( *UserLoadFunc )( FILE *fp, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数を登録する +//extern DXLIBAPI int AddUserGraphLoadFunction2( int ( *UserLoadFunc )( void *Image, int ImageSize, int ImageType, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数を登録する +//extern DXLIBAPI int AddUserGraphLoadFunction3( int ( *UserLoadFunc )( void *DataImage, int DataImageSize, int DataImageType, int BmpFlag, BASEIMAGE *BaseImage, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数Ver3を登録する +extern DXLIBAPI int AddUserGraphLoadFunction4( int (* UserLoadFunc )( STREAMDATA *Src, BASEIMAGE *BaseImage ) ) ; // ユーザー定義の画像データ読み込み関数Ver4を登録する +//extern DXLIBAPI int SubUserGraphLoadFunction( int ( *UserLoadFunc )( FILE *fp, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数を登録から抹消する +//extern DXLIBAPI int SubUserGraphLoadFunction2( int ( *UserLoadFunc )( void *Image, int ImageSize, int ImageType, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数を登録から抹消する +//extern DXLIBAPI int SubUserGraphLoadFunction3( int ( *UserLoadFunc )( void *DataImage, int DataImageSize, int DataImageType, int BmpFlag, BASEIMAGE *BaseImage, BITMAPINFO **BmpInfo, void **GraphData ) ) ; // ユーザー定義の画像データ読み込み関数Ver3を登録から抹消する +extern DXLIBAPI int SubUserGraphLoadFunction4( int (* UserLoadFunc )( STREAMDATA *Src, BASEIMAGE *BaseImage ) ) ; // ユーザー定義の画像データ読み込み関数Ver4を登録から抹消する + +extern DXLIBAPI int SetUseFastLoadFlag( int Flag ) ; // 高速読み込みルーチンを使用するかどうかを設定する( TRUE:使用する( デフォルト ) FALSE:使用しない ) +extern DXLIBAPI int SetGraphDataShavedMode( int ShavedMode /* DX_SHAVEDMODE_NONE 等 */ ) ; // 画像減色時の画像劣化緩和処理モードを設定する( デフォルトでは緩和処理無しの DX_SHAVEDMODE_NONE ) +extern DXLIBAPI int GetGraphDataShavedMode( void ) ; // 画像減色時の画像劣化緩和処理モードを取得する +extern DXLIBAPI int SetUsePremulAlphaConvertLoad( int UseFlag ) ; // 画像ファイル読み込み時に乗算済みアルファ画像に変換するかどうかを設定する( TRUE:変換処理を行う FALSE:変換処理を行わない( デフォルト ) ) + +// 基本イメージデータ構造体関係 +extern DXLIBAPI int CreateBaseImage( const TCHAR *FileName, const void *FileImage, int FileImageSize, int DataType /*=LOADIMAGE_TYPE_FILE*/ , BASEIMAGE *BaseImage, int ReverseFlag ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージから基本イメージデータを構築する +extern DXLIBAPI int CreateBaseImageWithStrLen( const TCHAR *FileName, size_t FileNameLength, const void *FileImage, int FileImageSize, int DataType /*=LOADIMAGE_TYPE_FILE*/ , BASEIMAGE *BaseImage, int ReverseFlag ) ; // 画像ファイル若しくはメモリ上に展開された画像ファイルイメージから基本イメージデータを構築する +extern DXLIBAPI int CreateGraphImage( const TCHAR *FileName, const void *DataImage, int DataImageSize, int DataImageType, BASEIMAGE *GraphImage, int ReverseFlag ) ; // CreateBaseImage の旧名称 +extern DXLIBAPI int CreateBaseImageToFile( const TCHAR *FileName, BASEIMAGE *BaseImage, int ReverseFlag = FALSE ) ; // 画像ファイルから基本イメージデータを構築する +extern DXLIBAPI int CreateBaseImageToFileWithStrLen( const TCHAR *FileName, size_t FileNameLength, BASEIMAGE *BaseImage, int ReverseFlag = FALSE ) ; // 画像ファイルから基本イメージデータを構築する +extern DXLIBAPI int CreateBaseImageToMem( const void *FileImage, int FileImageSize, BASEIMAGE *BaseImage, int ReverseFlag = FALSE ) ; // メモリ上に展開された画像ファイルイメージから基本イメージデータを構築する +extern DXLIBAPI int CreateARGBF32ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // ARGB各チャンネル 32bit 浮動小数点型 カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateARGBF16ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // ARGB各チャンネル 16bit 浮動小数点型 カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateARGB8ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // ARGB8カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateXRGB8ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // XRGB8カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateRGB8ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // RGB8カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateARGB4ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // ARGB4カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateA1R5G5B5ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // A1R5G5B5カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateX1R5G5B5ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // X1R5G5B5カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateR5G5B5A1ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // R5G5B5A1カラーの基本イメージデータを作成する +extern DXLIBAPI int CreateR5G6B5ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage ) ; // R5G6B5カラーの基本イメージデータを作成する +extern DXLIBAPI int CreatePAL8ColorBaseImage( int SizeX, int SizeY, BASEIMAGE *BaseImage, int UseAlpha = FALSE ) ; // パレット8ビットカラーの基本イメージデータを作成する +extern DXLIBAPI int CreateColorDataBaseImage( int SizeX, int SizeY, const COLORDATA *ColorData, BASEIMAGE *BaseImage ) ; // 指定のカラーフォーマットの基本イメージデータを作成する +extern DXLIBAPI int GetBaseImageGraphDataSize( const BASEIMAGE *BaseImage ) ; // 基本イメージデータのイメージサイズを取得する( 単位:byte ) +extern DXLIBAPI int DerivationBaseImage( const BASEIMAGE *BaseImage, int x1, int y1, int x2, int y2, BASEIMAGE *NewBaseImage ) ; // 基本イメージデータの指定の部分だけを使う基本イメージデータの情報を作成する( BaseImage にはフォーマットが DX_BASEIMAGE_FORMAT_NORMAL でミップマップを使用していない画像のみ使用可能 ) + +extern DXLIBAPI int ReleaseBaseImage( BASEIMAGE *BaseImage ) ; // 基本イメージデータの後始末を行う +extern DXLIBAPI int ReleaseGraphImage( BASEIMAGE *GraphImage ) ; // ReleaseBaseImage の旧名称 + +extern DXLIBAPI int ConvertNormalFormatBaseImage( BASEIMAGE *BaseImage, int ReleaseOrigGraphData = TRUE ) ; // DX_BASEIMAGE_FORMAT_NORMAL 以外の形式のイメージを DX_BASEIMAGE_FORMAT_NORMAL 形式のイメージに変換する +extern DXLIBAPI int ConvertPremulAlphaBaseImage( BASEIMAGE *BaseImage ) ; // 通常のαチャンネル付き画像を乗算済みαチャンネル付き画像に変換する( ピクセルフォーマットが ARGB8 以外の場合は ARGB8 に変換されます ) +extern DXLIBAPI int ConvertInterpAlphaBaseImage( BASEIMAGE *BaseImage ) ; // 乗算済みαチャンネル付き画像を通常のαチャンネル付き画像に変換する( ピクセルフォーマットが ARGB8 以外の場合は ARGB8 に変換されます ) + +extern DXLIBAPI int GetDrawScreenBaseImage( int x1, int y1, int x2, int y2, BASEIMAGE *BaseImage ) ; // 描画対象の画面から指定領域を基本イメージデータに転送する +extern DXLIBAPI int GetDrawScreenBaseImageDestPos( int x1, int y1, int x2, int y2, BASEIMAGE *BaseImage, int DestX, int DestY ) ; // 描画対象の画面から指定領域を基本イメージデータに転送する( 転送先座標指定版 ) +extern DXLIBAPI int FillBaseImage( BASEIMAGE *BaseImage, int r, int g, int b, int a ) ; // 基本イメージデータを指定の色で塗りつぶす +extern DXLIBAPI int FillRectBaseImage( BASEIMAGE *BaseImage, int x, int y, int w, int h, int r, int g, int b, int a ) ; // 基本イメージデータの指定の領域を指定の色で塗りつぶす +extern DXLIBAPI int ClearRectBaseImage( BASEIMAGE *BaseImage, int x, int y, int w, int h ) ; // 基本イメージデータの指定の領域を0クリアする +extern DXLIBAPI int GetPaletteBaseImage( const BASEIMAGE *BaseImage, int PaletteNo, int *r, int *g, int *b, int *a ) ; // 基本イメージデータのパレットを取得する +extern DXLIBAPI int SetPaletteBaseImage( BASEIMAGE *BaseImage, int PaletteNo, int r, int g, int b, int a ) ; // 基本イメージデータのパレットをセットする +extern DXLIBAPI int SetPixelPalCodeBaseImage( BASEIMAGE *BaseImage, int x, int y, int palNo ) ; // 基本イメージデータの指定の座標の色コードを変更する(パレット画像用) +extern DXLIBAPI int GetPixelPalCodeBaseImage( const BASEIMAGE *BaseImage, int x, int y ) ; // 基本イメージデータの指定の座標の色コードを取得する(パレット画像用) +extern DXLIBAPI int SetPixelBaseImage( BASEIMAGE *BaseImage, int x, int y, int r, int g, int b, int a ) ; // 基本イメージデータの指定の座標の色を変更する(各色要素は0~255) +extern DXLIBAPI int SetPixelBaseImageF( BASEIMAGE *BaseImage, int x, int y, float r, float g, float b, float a ) ; // 基本イメージデータの指定の座標の色を変更する(各色要素は浮動小数点数) +extern DXLIBAPI int GetPixelBaseImage( const BASEIMAGE *BaseImage, int x, int y, int *r, int *g, int *b, int *a ) ; // 基本イメージデータの指定の座標の色を取得する(各色要素は0~255) +extern DXLIBAPI int GetPixelBaseImageF( const BASEIMAGE *BaseImage, int x, int y, float *r, float *g, float *b, float *a ) ; // 基本イメージデータの指定の座標の色を取得する(各色要素は浮動小数点数) +extern DXLIBAPI int DrawLineBaseImage( BASEIMAGE *BaseImage, int x1, int y1, int x2, int y2, int r, int g, int b, int a ) ; // 基本イメージデータの指定の座標に線を描画する(各色要素は0~255) +extern DXLIBAPI int DrawCircleBaseImage( BASEIMAGE *BaseImage, int x, int y, int radius, int r, int g, int b, int a, int FillFlag = TRUE ) ; // 基本イメージデータの指定の座標に円を描画する(各色要素は0~255) +extern DXLIBAPI int BltBaseImage( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int DestX, int DestY, BASEIMAGE *SrcBaseImage, BASEIMAGE *DestBaseImage ) ; // 基本イメージデータを別の基本イメージデータに転送する +extern DXLIBAPI int BltBaseImage( int DestX, int DestY, BASEIMAGE *SrcBaseImage, BASEIMAGE *DestBaseImage ) ; // 基本イメージデータを別の基本イメージデータに転送する +extern DXLIBAPI int BltBaseImageWithTransColor( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int DestX, int DestY, BASEIMAGE *SrcBaseImage, BASEIMAGE *DestBaseImage, int Tr, int Tg, int Tb, int Ta ) ; // 基本イメージデータを別の基本イメージデータに透過色処理付きで転送する +extern DXLIBAPI int BltBaseImageWithAlphaBlend( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int DestX, int DestY, BASEIMAGE *SrcBaseImage, BASEIMAGE *DestBaseImage, int Opacity = 255 ) ; // 基本イメージデータを別の基本イメージデータにアルファ値のブレンドを考慮した上で転送する( Opacity は透明度 : 0( 完全透明 ) ~ 255( 完全不透明 ) )( 出力先が ARGB8 形式以外の場合はエラーになります ) +extern DXLIBAPI int ReverseBaseImageH( BASEIMAGE *BaseImage ) ; // 基本イメージデータを左右反転する +extern DXLIBAPI int ReverseBaseImageV( BASEIMAGE *BaseImage ) ; // 基本イメージデータを上下反転する +extern DXLIBAPI int ReverseBaseImage( BASEIMAGE *BaseImage ) ; // 基本イメージデータを上下左右反転する +extern DXLIBAPI int CheckPixelAlphaBaseImage( const BASEIMAGE *BaseImage ) ; // 基本イメージデータに含まれるピクセルのアルファ値をチェックする( 戻り値 -1:エラー 0:画像にアルファ成分が無い 1:画像にアルファ成分があり、すべて最大(255)値 2:画像にアルファ成分があり、存在するアルファ値は最小(0)と最大(255)もしくは最小(0)のみ 3:画像にアルファ成分があり、最小と最大以外の中間の値がある ) +extern DXLIBAPI int GetBaseImageUseMaxPaletteNo( const BASEIMAGE *BaseImage ) ; // 基本イメージデータで使用されているパレット番号の最大値を取得する( パレット画像では無い場合は -1 が返る ) + +#ifndef DX_NON_JPEGREAD +extern DXLIBAPI int ReadJpegExif( const TCHAR *JpegFilePath, BYTE *ExifBuffer_Array, size_t ExifBufferSize ) ; // JPEGファイルの Exif情報を取得する、ExifBuffer を NULL に渡すと、戻り値の情報のサイズのみ取得できます( 戻り値 -1:エラー -1以外:Exif情報のサイズ ) +extern DXLIBAPI int ReadJpegExifWithStrLen( const TCHAR *JpegFilePath, size_t JpegFilePathLength, BYTE *ExifBuffer_Array, size_t ExifBufferSize ) ; // JPEGファイルの Exif情報を取得する、ExifBuffer を NULL に渡すと、戻り値の情報のサイズのみ取得できます( 戻り値 -1:エラー -1以外:Exif情報のサイズ ) +#endif // DX_NON_JPEGREAD + +#ifndef DX_NON_SAVEFUNCTION + +extern DXLIBAPI int SaveBaseImageToBmp( const TCHAR *FilePath, const BASEIMAGE *BaseImage ) ; // 基本イメージデータをBMP画像として保存する +extern DXLIBAPI int SaveBaseImageToBmpWithStrLen( const TCHAR *FilePath, size_t FilePathLength, const BASEIMAGE *BaseImage ) ; // 基本イメージデータをBMP画像として保存する +extern DXLIBAPI int SaveBaseImageToDds( const TCHAR *FilePath, const BASEIMAGE *BaseImage ) ; // 基本イメージデータをDDS画像として保存する +extern DXLIBAPI int SaveBaseImageToDdsWithStrLen( const TCHAR *FilePath, size_t FilePathLength, const BASEIMAGE *BaseImage ) ; // 基本イメージデータをDDS画像として保存する +#ifndef DX_NON_PNGREAD +extern DXLIBAPI int SaveBaseImageToPng( const TCHAR *FilePath, BASEIMAGE *BaseImage, int CompressionLevel ) ; // 基本イメージデータをPNG画像として保存する +extern DXLIBAPI int SaveBaseImageToPngWithStrLen( const TCHAR *FilePath, size_t FilePathLength, BASEIMAGE *BaseImage, int CompressionLevel ) ; // 基本イメージデータをPNG画像として保存する +#endif // DX_NON_PNGREAD +#ifndef DX_NON_JPEGREAD +extern DXLIBAPI int SaveBaseImageToJpeg( const TCHAR *FilePath, BASEIMAGE *BaseImage, int Quality, int Sample2x1 ) ; // 基本イメージデータをJPEG画像として保存する +extern DXLIBAPI int SaveBaseImageToJpegWithStrLen( const TCHAR *FilePath, size_t FilePathLength, BASEIMAGE *BaseImage, int Quality, int Sample2x1 ) ; // 基本イメージデータをJPEG画像として保存する +#endif // DX_NON_JPEGREAD + +#endif // DX_NON_SAVEFUNCTION + +// 基本イメージ描画 +extern DXLIBAPI int DrawBaseImage( int x, int y, BASEIMAGE *BaseImage ) ; // 基本イメージデータを描画する + +// カラーマッチングしながらイメージデータ間転送を行う Ver2 +extern DXLIBAPI int GraphColorMatchBltVer2( void *DestGraphData, int DestPitch, const COLORDATA *DestColorData, + const void *SrcGraphData, int SrcPitch, const COLORDATA *SrcColorData, + const void *AlphaMask, int AlphaPitch, const COLORDATA *AlphaColorData, + POINT DestPoint, const RECT *SrcRect, int ReverseFlag, + int TransColorAlphaTestFlag, unsigned int TransColor, + int ImageShavedMode, int AlphaOnlyFlag = FALSE , + int RedIsAlphaFlag = FALSE , int TransColorNoMoveFlag = FALSE , + int Pal8ColorMatch = FALSE ) ; + + +// 色情報取得関係 +extern DXLIBAPI COLOR_F GetColorF( float Red, float Green, float Blue, float Alpha ) ; // 浮動小数点型のカラー値を作成する +extern DXLIBAPI COLOR_U8 GetColorU8( int Red, int Green, int Blue, int Alpha ) ; // 符号なし整数8ビットのカラー値を作成する +extern DXLIBAPI unsigned int GetColor( int Red, int Green, int Blue ) ; // DrawPixel 等の描画関数で使用するカラー値を取得する +extern DXLIBAPI int GetColor2( unsigned int Color, int *Red, int *Green, int *Blue ) ; // カラー値から赤、緑、青の値を取得する +extern DXLIBAPI unsigned int GetColor3( const COLORDATA *ColorData, int Red, int Green, int Blue, int Alpha = 255 ) ; // 指定のピクセルフォーマットに対応したカラー値を得る +extern DXLIBAPI unsigned int GetColor4( const COLORDATA *DestColorData, const COLORDATA* SrcColorData, unsigned int SrcColor ) ; // 指定のカラーフォーマットのカラー値を別のカラーフォーマットのカラー値に変換する +extern DXLIBAPI int GetColor5( const COLORDATA *ColorData, unsigned int Color, int *Red, int *Green, int *Blue, int *Alpha = NULL ) ; // 指定のカラーフォーマットのカラー値を赤、緑、青、アルファの値を取得する +extern DXLIBAPI int CreatePaletteColorData( COLORDATA *ColorDataBuf ) ; // パレットカラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateARGBF32ColorData( COLORDATA *ColorDataBuf ) ; // ARGB各チャンネル 32bit 浮動小数点型カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateARGBF16ColorData( COLORDATA *ColorDataBuf ) ; // ARGB各チャンネル 16bit 浮動小数点型カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateXRGB8ColorData( COLORDATA *ColorDataBuf ) ; // XRGB8カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateARGB8ColorData( COLORDATA *ColorDataBuf ) ; // ARGB8カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateARGB4ColorData( COLORDATA *ColorDataBuf ) ; // ARGB4カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateA1R5G5B5ColorData( COLORDATA *ColorDataBuf ) ; // A1R5G5B5カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateX1R5G5B5ColorData( COLORDATA *ColorDataBuf ) ; // X1R5G5B5カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateR5G5B5A1ColorData( COLORDATA *ColorDataBuf ) ; // R5G5B5A1カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateR5G6B5ColorData( COLORDATA *ColorDataBuf ) ; // R5G6B5カラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateFullColorData( COLORDATA *ColorDataBuf ) ; // 24ビットカラーのカラーフォーマットを構築する +extern DXLIBAPI int CreateGrayColorData( COLORDATA *ColorDataBuf ) ; // グレースケールのカラーフォーマットを構築する +extern DXLIBAPI int CreatePal8ColorData( COLORDATA *ColorDataBuf, int UseAlpha = FALSE ) ; // パレット256色のカラーフォーマットを構築する +extern DXLIBAPI int CreateColorData( COLORDATA *ColorDataBuf, int ColorBitDepth, + DWORD RedMask, DWORD GreenMask, DWORD BlueMask, DWORD AlphaMask, + int ChannelNum = 0, int ChannelBitDepth = 0, int FloatTypeFlag = FALSE ) ; // カラーフォーマットを作成する +extern DXLIBAPI void SetColorDataNoneMask( COLORDATA *ColorData ) ; // NoneMask 以外の要素を埋めた COLORDATA 構造体の情報を元に NoneMask をセットする +extern DXLIBAPI int CmpColorData( const COLORDATA *ColorData1, const COLORDATA *ColorData2 ) ; // 二つのカラーフォーマットが等しいかどうか調べる( 戻り値 TRUE:等しい FALSE:等しくない ) + + + + + + + + + + + + + +// DxSoftImage.cpp関数プロトタイプ宣言 +#ifndef DX_NON_SOFTIMAGE +extern DXLIBAPI int InitSoftImage( void ) ; // ソフトウエアイメージハンドルを全て削除する +extern DXLIBAPI int LoadSoftImage( const TCHAR *FileName ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル ) +extern DXLIBAPI int LoadSoftImageWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル ) +extern DXLIBAPI int LoadARGB8ColorSoftImage( const TCHAR *FileName ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が RGBA8 以外のフォーマットだった場合は RGBA8 カラーに変換 ) +extern DXLIBAPI int LoadARGB8ColorSoftImageWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が RGBA8 以外のフォーマットだった場合は RGBA8 カラーに変換 ) +extern DXLIBAPI int LoadXRGB8ColorSoftImage( const TCHAR *FileName ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が XGBA8 以外のフォーマットだった場合は XGBA8 カラーに変換 ) +extern DXLIBAPI int LoadXRGB8ColorSoftImageWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 画像ファイルを読み込みソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が XGBA8 以外のフォーマットだった場合は XGBA8 カラーに変換 ) +extern DXLIBAPI int LoadSoftImageToMem( const void *FileImage, int FileImageSize ) ; // メモリ上に展開された画像ファイルイメージからソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル ) +extern DXLIBAPI int LoadARGB8ColorSoftImageToMem( const void *FileImage, int FileImageSize ) ; // メモリ上に展開された画像ファイルイメージからソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が RGBA8 以外のフォーマットだった場合は RGBA8 カラーに変換 ) +extern DXLIBAPI int LoadXRGB8ColorSoftImageToMem( const void *FileImage, int FileImageSize ) ; // メモリ上に展開された画像ファイルイメージからソフトウエアイメージハンドルを作成する( -1:エラー -1以外:イメージハンドル )( 読み込んだ画像が XGBA8 以外のフォーマットだった場合は XGBA8 カラーに変換 ) +extern DXLIBAPI int MakeSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( -1:エラー -1以外:イメージハンドル ) +extern DXLIBAPI int MakeARGBF32ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( RGBA 各チャンネル 32bit 浮動小数点型 カラー ) +extern DXLIBAPI int MakeARGBF16ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( RGBA 各チャンネル 16bit 浮動小数点型 カラー ) +extern DXLIBAPI int MakeARGB8ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( RGBA8 カラー ) +extern DXLIBAPI int MakeXRGB8ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( XRGB8 カラー ) +extern DXLIBAPI int MakeARGB4ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( ARGB4 カラー ) +extern DXLIBAPI int MakeA1R5G5B5ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( A1R5G5B5 カラー ) +extern DXLIBAPI int MakeX1R5G5B5ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( X1R5G5B5 カラー ) +extern DXLIBAPI int MakeR5G5B5A1ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( R5G5B5A1 カラー ) +extern DXLIBAPI int MakeR5G6B5ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( R5G6B5 カラー ) +extern DXLIBAPI int MakeRGB8ColorSoftImage( int SizeX, int SizeY ) ; // ソフトウエアイメージハンドルの作成( RGB8 カラー ) +extern DXLIBAPI int MakePAL8ColorSoftImage( int SizeX, int SizeY, int UseAlpha = FALSE ) ; // ソフトウエアイメージハンドルの作成( パレット256色 カラー ) + +extern DXLIBAPI int DeleteSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルの削除する + +extern DXLIBAPI int GetSoftImageSize( int SIHandle, int *Width, int *Height ) ; // ソフトウエアイメージハンドルのサイズを取得する +extern DXLIBAPI int CheckPaletteSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルがパレット画像かどうかを取得する( TRUE:パレット画像 FALSE:パレット画像じゃない ) +extern DXLIBAPI int CheckAlphaSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルのフォーマットにα要素があるかどうかを取得する( TRUE:ある FALSE:ない ) +extern DXLIBAPI int CheckPixelAlphaSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルに含まれるピクセルのα値をチェックする( 戻り値 -1:エラー 0:画像にα成分が無い 1:画像にα成分があり、すべて最大(255)値 2:画像にα成分があり、存在するα値は最小(0)と最大(255)もしくは最小(0)のみ 3:画像にα成分があり、最小と最大以外の中間の値がある ) + +extern DXLIBAPI int GetDrawScreenSoftImage( int x1, int y1, int x2, int y2, int SIHandle ) ; // 描画対象の画面から指定領域をソフトウエアイメージハンドルに転送する +extern DXLIBAPI int GetDrawScreenSoftImageDestPos( int x1, int y1, int x2, int y2, int SIHandle, int DestX, int DestY ) ; // 描画対象の画面から指定領域をソフトウエアイメージハンドルに転送する( 転送先座標指定版 ) +extern DXLIBAPI int FillSoftImage( int SIHandle, int r, int g, int b, int a ) ; // ソフトウエアイメージハンドルを指定色で塗りつぶす(各色要素は0~255) +extern DXLIBAPI int ClearRectSoftImage( int SIHandle, int x, int y, int w, int h ) ; // ソフトウエアイメージハンドルの指定の領域を0クリアする +extern DXLIBAPI int GetPaletteSoftImage( int SIHandle, int PaletteNo, int *r, int *g, int *b, int *a ) ; // ソフトウエアイメージハンドルのパレットを取得する(各色要素は0~255) +extern DXLIBAPI int SetPaletteSoftImage( int SIHandle, int PaletteNo, int r, int g, int b, int a ) ; // ソフトウエアイメージハンドルのパレットを設定する(各色要素は0~255) +extern DXLIBAPI int DrawPixelPalCodeSoftImage( int SIHandle, int x, int y, int palNo ) ; // ソフトウエアイメージハンドルの指定座標にドットを描画する(パレット画像用、有効値は0~255) +extern DXLIBAPI int GetPixelPalCodeSoftImage( int SIHandle, int x, int y ) ; // ソフトウエアイメージハンドルの指定座標の色コードを取得する(パレット画像用、戻り値は0~255) +extern DXLIBAPI void *GetImageAddressSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルの画像が格納されているメモリ領域の先頭アドレスを取得する +extern DXLIBAPI int GetPitchSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルのメモリに格納されている画像データの1ライン辺りのバイト数を取得する +extern DXLIBAPI int DrawPixelSoftImage( int SIHandle, int x, int y, int r, int g, int b, int a ) ; // ソフトウエアイメージハンドルの指定座標にドットを描画する(各色要素は0~255) +extern DXLIBAPI int DrawPixelSoftImageF( int SIHandle, int x, int y, float r, float g, float b, float a ) ; // ソフトウエアイメージハンドルの指定座標にドットを描画する(各色要素は浮動小数点数) +extern DXLIBAPI void DrawPixelSoftImage_Unsafe_XRGB8( int SIHandle, int x, int y, int r, int g, int b ) ; // ソフトウエアイメージハンドルの指定座標にドットを描画する(各色要素は0~255)、エラーチェックをしない代わりに高速ですが、範囲外の座標や ARGB8 以外のフォーマットのソフトハンドルを渡すと不正なメモリアクセスで強制終了します +extern DXLIBAPI void DrawPixelSoftImage_Unsafe_ARGB8( int SIHandle, int x, int y, int r, int g, int b, int a ) ; // ソフトウエアイメージハンドルの指定座標にドットを描画する(各色要素は0~255)、エラーチェックをしない代わりに高速ですが、範囲外の座標や XRGB8 以外のフォーマットのソフトハンドルを渡すと不正なメモリアクセスで強制終了します +extern DXLIBAPI int GetPixelSoftImage( int SIHandle, int x, int y, int *r, int *g, int *b, int *a ) ; // ソフトウエアイメージハンドルの指定座標の色を取得する(各色要素は0~255) +extern DXLIBAPI int GetPixelSoftImageF( int SIHandle, int x, int y, float *r, float *g, float *b, float *a ) ; // ソフトウエアイメージハンドルの指定座標の色を取得する(各色要素は浮動小数点数) +extern DXLIBAPI void GetPixelSoftImage_Unsafe_XRGB8( int SIHandle, int x, int y, int *r, int *g, int *b ) ; // ソフトウエアイメージハンドルの指定座標の色を取得する(各色要素は0~255)、エラーチェックをしない代わりに高速ですが、範囲外の座標や XRGB8 以外のフォーマットのソフトハンドルを渡すと不正なメモリアクセスで強制終了します +extern DXLIBAPI void GetPixelSoftImage_Unsafe_ARGB8( int SIHandle, int x, int y, int *r, int *g, int *b, int *a ) ; // ソフトウエアイメージハンドルの指定座標の色を取得する(各色要素は0~255)、エラーチェックをしない代わりに高速ですが、範囲外の座標や ARGB8 以外のフォーマットのソフトハンドルを渡すと不正なメモリアクセスで強制終了します +extern DXLIBAPI int DrawLineSoftImage( int SIHandle, int x1, int y1, int x2, int y2, int r, int g, int b, int a ) ; // ソフトウエアイメージハンドルの指定座標に線を描画する(各色要素は0~255) +extern DXLIBAPI int DrawCircleSoftImage( int SIHandle, int x, int y, int radius, int r, int g, int b, int a, int FillFlag = TRUE ) ; // ソフトウエアイメージハンドルの指定座標に円を描画する(各色要素は0~255) +extern DXLIBAPI int BltSoftImage( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int SrcSIHandle, int DestX, int DestY, int DestSIHandle ) ; // ソフトウエアイメージハンドルを別のソフトウエアイメージハンドルに転送する +extern DXLIBAPI int BltSoftImageWithTransColor( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int SrcSIHandle, int DestX, int DestY, int DestSIHandle, int Tr, int Tg, int Tb, int Ta ) ; // ソフトウエアイメージハンドルを別のソフトウエアイメージハンドルに透過色処理付きで転送する +extern DXLIBAPI int BltSoftImageWithAlphaBlend( int SrcX, int SrcY, int SrcSizeX, int SrcSizeY, int SrcSIHandle, int DestX, int DestY, int DestSIHandle, int Opacity = 255 ) ; // ソフトウエアイメージハンドルを別のソフトウエアイメージハンドルにアルファ値のブレンドを考慮した上で転送する( Opacity は透明度 : 0( 完全透明 ) ~ 255( 完全不透明 ) )( 出力先が ARGB8 形式以外の場合はエラーになります ) +extern DXLIBAPI int ReverseSoftImageH( int SIHandle ) ; // ソフトウエアイメージハンドルを左右反転する +extern DXLIBAPI int ReverseSoftImageV( int SIHandle ) ; // ソフトウエアイメージハンドルを上下反転する +extern DXLIBAPI int ReverseSoftImage( int SIHandle ) ; // ソフトウエアイメージハンドルを上下左右反転する + +#ifndef DX_NON_FONT +extern DXLIBAPI int BltStringSoftImage( int x, int y, const TCHAR *StrData, int DestSIHandle, int DestEdgeSIHandle = -1 , int VerticalFlag = FALSE ) ; // ソフトウエアイメージハンドルに文字列を描画する( デフォルトフォントハンドルを使用する ) +extern DXLIBAPI int BltStringSoftImageWithStrLen( int x, int y, const TCHAR *StrData, size_t StrDataLength, int DestSIHandle, int DestEdgeSIHandle = -1 , int VerticalFlag = FALSE ) ; // ソフトウエアイメージハンドルに文字列を描画する( デフォルトフォントハンドルを使用する ) +extern DXLIBAPI int BltStringSoftImageToHandle( int x, int y, const TCHAR *StrData, int DestSIHandle, int DestEdgeSIHandle /* 縁が必要ない場合は -1 */ , int FontHandle, int VerticalFlag = FALSE ) ; // ソフトウエアイメージハンドルに文字列を描画する( フォントハンドル使用版 ) +extern DXLIBAPI int BltStringSoftImageToHandleWithStrLen( int x, int y, const TCHAR *StrData, size_t StrDataLength, int DestSIHandle, int DestEdgeSIHandle /* 縁が必要ない場合は -1 */ , int FontHandle, int VerticalFlag = FALSE ) ; // ソフトウエアイメージハンドルに文字列を描画する( フォントハンドル使用版 ) +#endif // DX_NON_FONT + +extern DXLIBAPI int DrawSoftImage( int x, int y, int SIHandle ) ; // ソフトウエアイメージハンドルを画面に描画する + +#ifndef DX_NON_SAVEFUNCTION + +extern DXLIBAPI int SaveSoftImageToBmp( const TCHAR *FilePath, int SIHandle ) ; // ソフトウエアイメージハンドルをBMP画像ファイルとして保存する +extern DXLIBAPI int SaveSoftImageToBmpWithStrLen( const TCHAR *FilePath, size_t FilePathLength, int SIHandle ) ; // ソフトウエアイメージハンドルをBMP画像ファイルとして保存する +extern DXLIBAPI int SaveSoftImageToDds( const TCHAR *FilePath, int SIHandle ) ; // ソフトウエアイメージハンドルをDDS画像ファイルとして保存する +extern DXLIBAPI int SaveSoftImageToDdsWithStrLen( const TCHAR *FilePath, size_t FilePathLength, int SIHandle ) ; // ソフトウエアイメージハンドルをDDS画像ファイルとして保存する +#ifndef DX_NON_PNGREAD +extern DXLIBAPI int SaveSoftImageToPng( const TCHAR *FilePath, int SIHandle, int CompressionLevel ) ; // ソフトウエアイメージハンドルをPNG画像ファイルとして保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 +extern DXLIBAPI int SaveSoftImageToPngWithStrLen( const TCHAR *FilePath, size_t FilePathLength, int SIHandle, int CompressionLevel ) ; // ソフトウエアイメージハンドルをPNG画像ファイルとして保存する CompressionLevel = 圧縮率、値が大きいほど高圧縮率高負荷、0は無圧縮,0~9 +#endif // DX_NON_PNGREAD +#ifndef DX_NON_JPEGREAD +extern DXLIBAPI int SaveSoftImageToJpeg( const TCHAR *FilePath, int SIHandle, int Quality, int Sample2x1 ) ; // ソフトウエアイメージハンドルをJPEG画像ファイルとして保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +extern DXLIBAPI int SaveSoftImageToJpegWithStrLen( const TCHAR *FilePath, size_t FilePathLength, int SIHandle, int Quality, int Sample2x1 ) ; // ソフトウエアイメージハンドルをJPEG画像ファイルとして保存する Quality = 画質、値が大きいほど低圧縮高画質,0~100 +#endif // DX_NON_JPEGREAD + +#endif // DX_NON_SAVEFUNCTION + +#endif // DX_NON_SOFTIMAGE + + + + + + + + + + + + + + + + + + +#ifndef DX_NON_SOUND + +// DxSound.cpp関数プロトタイプ宣言 + +// サウンドデータ管理系関数 +extern DXLIBAPI int InitSoundMem( int LogOutFlag = FALSE ) ; // 全てのサウンドハンドルを削除する + +extern DXLIBAPI int AddSoundData( int Handle = -1 ) ; // サウンドハンドルを作成する +extern DXLIBAPI int AddStreamSoundMem( STREAMDATA *Stream, int LoopNum, int SoundHandle, int StreamDataType, int *CanStreamCloseFlag, int UnionHandle = -1 ) ; // ストリーム再生タイプのサウンドハンドルにストリームデータを再生対象に追加する +extern DXLIBAPI int AddStreamSoundMemToMem( const void *FileImage, size_t FileImageSize, int LoopNum, int SoundHandle, int StreamDataType, int UnionHandle = -1 ) ; // ストリーム再生タイプのサウンドハンドルにメモリ上に展開したサウンドファイルイメージを再生対象に追加する +extern DXLIBAPI int AddStreamSoundMemToFile( const TCHAR *WaveFile, int LoopNum, int SoundHandle, int StreamDataType, int UnionHandle = -1 ) ; // ストリーム再生タイプのサウンドハンドルにサウンドファイルを再生対象に追加する +extern DXLIBAPI int AddStreamSoundMemToFileWithStrLen( const TCHAR *WaveFile, size_t WaveFilePathLength, int LoopNum, int SoundHandle, int StreamDataType, int UnionHandle = -1 ) ; // ストリーム再生タイプのサウンドハンドルにサウンドファイルを再生対象に追加する +extern DXLIBAPI int SetupStreamSoundMem( int SoundHandle ) ; // ストリーム再生タイプのサウンドハンドルの再生準備をする +extern DXLIBAPI int PlayStreamSoundMem( int SoundHandle, int PlayType = DX_PLAYTYPE_LOOP , int TopPositionFlag = TRUE ) ; // ストリーム再生タイプのサウンドハンドルの再生を開始する +extern DXLIBAPI int CheckStreamSoundMem( int SoundHandle ) ; // ストリーム再生タイプのサウンドハンドルの再生状態を取得する +extern DXLIBAPI int StopStreamSoundMem( int SoundHandle ) ; // ストリーム再生タイプのサウンドハンドルの再生を停止する +extern DXLIBAPI int SetStreamSoundCurrentPosition( LONGLONG Byte, int SoundHandle ) ; // サウンドハンドルの再生位置をバイト単位で変更する(再生が止まっている時のみ有効) +extern DXLIBAPI LONGLONG GetStreamSoundCurrentPosition( int SoundHandle ) ; // サウンドハンドルの再生位置をバイト単位で取得する +extern DXLIBAPI int SetStreamSoundCurrentTime( LONGLONG Time, int SoundHandle ) ; // サウンドハンドルの再生位置をミリ秒単位で設定する(圧縮形式の場合は正しく設定されない場合がある) +extern DXLIBAPI LONGLONG GetStreamSoundCurrentTime( int SoundHandle ) ; // サウンドハンドルの再生位置をミリ秒単位で取得する(圧縮形式の場合は正しい値が返ってこない場合がある) +extern DXLIBAPI int ProcessStreamSoundMem( int SoundHandle ) ; // ストリーム再生タイプのサウンドハンドルの周期的な処理を行う関数( 内部で自動的に呼ばれます ) +extern DXLIBAPI int ProcessStreamSoundMemAll( void ) ; // 有効なストリーム再生タイプのサウンドハンドルに対して ProcessStreamSoundMem を実行する( 内部で自動的に呼ばれます ) + + +extern DXLIBAPI int LoadSoundMem2( const TCHAR *FileName1, const TCHAR *FileName2 ) ; // 前奏部とループ部に分かれたサウンドファイルを読み込みサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMem2WithStrLen( const TCHAR *FileName1, size_t FileName1Length, const TCHAR *FileName2, size_t FileName2Length ) ; // 前奏部とループ部に分かれたサウンドファイルを読み込みサウンドハンドルを作成する +extern DXLIBAPI int LoadBGM( const TCHAR *FileName ) ; // 主にBGMを読み込みサウンドハンドルを作成するのに適した関数 +extern DXLIBAPI int LoadBGMWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 主にBGMを読み込みサウンドハンドルを作成するのに適した関数 + +extern DXLIBAPI int LoadSoundMemBase( const TCHAR *FileName, int BufferNum, int UnionHandle = -1 ) ; // サウンドファイルからサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMemBaseWithStrLen( const TCHAR *FileName, size_t FileNameLength, int BufferNum, int UnionHandle = -1 ) ; // サウンドファイルからサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMem( const TCHAR *FileName, int BufferNum = 3 , int UnionHandle = -1 ) ; // LoadSoundMemBase の別名関数 +extern DXLIBAPI int LoadSoundMemWithStrLen( const TCHAR *FileName, size_t FileNameLength, int BufferNum = 3 , int UnionHandle = -1 ) ; // LoadSoundMemBase の別名関数 +extern DXLIBAPI int LoadSoundMemToBufNumSitei( const TCHAR *FileName, int BufferNum ) ; // LoadSoundMem を使用して下さい +extern DXLIBAPI int LoadSoundMemToBufNumSiteiWithStrLen( const TCHAR *FileName, size_t FileNameLength, int BufferNum ) ; // LoadSoundMem を使用して下さい +extern DXLIBAPI int DuplicateSoundMem( int SrcSoundHandle, int BufferNum = 3 ) ; // 同じサウンドデータを使用するサウンドハンドルを作成する( DX_SOUNDDATATYPE_MEMNOPRESS タイプのサウンドハンドルのみ可能 ) + +extern DXLIBAPI int LoadSoundMemByMemImageBase( const void *FileImage, size_t FileImageSize, int BufferNum, int UnionHandle = -1 ) ; // メモリ上に展開されたサウンドファイルイメージからサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMemByMemImage( const void *FileImage, size_t FileImageSize, int BufferNum = 3 , int UnionHandle = -1 ) ; // LoadSoundMemByMemImageBase の別名関数 +extern DXLIBAPI int LoadSoundMemByMemImage2( const void *WaveImage, size_t WaveImageSize, const WAVEFORMATEX *WaveFormat, size_t WaveHeaderSize ) ; // メモリ上に展開されたPCMデータからサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMemByMemImageToBufNumSitei( const void *FileImage, size_t FileImageSize, int BufferNum ) ; // LoadSoundMemByMemImageBase を使用して下さい +extern DXLIBAPI int LoadSoundMem2ByMemImage( const void *FileImage1, size_t FileImageSize1, const void *FileImage2, size_t FileImageSize2 ) ; // 前奏部とループ部に分かれた二つのメモリ上に展開されたサウンドファイルイメージからサウンドハンドルを作成する +extern DXLIBAPI int LoadSoundMemFromSoftSound( int SoftSoundHandle, int BufferNum = 3 ) ; // ソフトウエアサウンドハンドルが持つサウンドデータからサウンドハンドルを作成する + +extern DXLIBAPI int DeleteSoundMem( int SoundHandle, int LogOutFlag = FALSE ) ; // サウンドハンドルを削除する + +extern DXLIBAPI int PlaySoundMem( int SoundHandle, int PlayType, int TopPositionFlag = TRUE ) ; // サウンドハンドルを再生する +extern DXLIBAPI int StopSoundMem( int SoundHandle ) ; // サウンドハンドルの再生を停止する +extern DXLIBAPI int CheckSoundMem( int SoundHandle ) ; // サウンドハンドルが再生中かどうかを取得する +extern DXLIBAPI int SetPanSoundMem( int PanPal, int SoundHandle ) ; // サウンドハンドルのパンを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangePanSoundMem( int PanPal, int SoundHandle ) ; // サウンドハンドルのパンを設定する( -255 ~ 255 ) +extern DXLIBAPI int GetPanSoundMem( int SoundHandle ) ; // サウンドハンドルのパンを取得する +extern DXLIBAPI int SetVolumeSoundMem( int VolumePal, int SoundHandle ) ; // サウンドハンドルのボリュームを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangeVolumeSoundMem( int VolumePal, int SoundHandle ) ; // サウンドハンドルのボリュームを設定する( 0 ~ 255 ) +extern DXLIBAPI int GetVolumeSoundMem( int SoundHandle ) ; // サウンドハンドルのボリュームを取得する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int GetVolumeSoundMem2( int SoundHandle ) ; // サウンドハンドルのボリュームを取得する( 0 ~ 255 ) +extern DXLIBAPI int SetChannelVolumeSoundMem( int Channel, int VolumePal, int SoundHandle ) ; // サウンドハンドルの指定のチャンネルのボリュームを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangeChannelVolumeSoundMem( int Channel, int VolumePal, int SoundHandle ) ; // サウンドハンドルの指定のチャンネルのボリュームを設定する( 0 ~ 255 ) +extern DXLIBAPI int GetChannelVolumeSoundMem( int Channel, int SoundHandle ) ; // サウンドハンドルの指定のチャンネルのボリュームを取得する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int GetChannelVolumeSoundMem2( int Channel, int SoundHandle ) ; // サウンドハンドルの指定のチャンネルのボリュームを取得する( 0 ~ 255 ) +extern DXLIBAPI int SetFrequencySoundMem( int FrequencyPal, int SoundHandle ) ; // サウンドハンドルの再生周波数を設定する +extern DXLIBAPI int GetFrequencySoundMem( int SoundHandle ) ; // サウンドハンドルの再生周波数を取得する +extern DXLIBAPI int ResetFrequencySoundMem( int SoundHandle ) ; // サウンドハンドルの再生周波数を読み込み直後の状態に戻す + +extern DXLIBAPI int SetNextPlayPanSoundMem( int PanPal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するパンを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangeNextPlayPanSoundMem( int PanPal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するパンを設定する( -255 ~ 255 ) +extern DXLIBAPI int SetNextPlayVolumeSoundMem( int VolumePal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するボリュームを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangeNextPlayVolumeSoundMem( int VolumePal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するボリュームを設定する( 0 ~ 255 ) +extern DXLIBAPI int SetNextPlayChannelVolumeSoundMem( int Channel, int VolumePal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するチャンネルのボリュームを設定する( 100分の1デシベル単位 0 ~ 10000 ) +extern DXLIBAPI int ChangeNextPlayChannelVolumeSoundMem( int Channel, int VolumePal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用するチャンネルのボリュームを設定する( 0 ~ 255 ) +extern DXLIBAPI int SetNextPlayFrequencySoundMem( int FrequencyPal, int SoundHandle ) ; // サウンドハンドルの次の再生にのみ使用する再生周波数を設定する + +extern DXLIBAPI int SetCurrentPositionSoundMem( LONGLONG SamplePosition, int SoundHandle ) ; // サウンドハンドルの再生位置をサンプル単位で設定する(再生が止まっている時のみ有効) +extern DXLIBAPI LONGLONG GetCurrentPositionSoundMem( int SoundHandle ) ; // サウンドハンドルの再生位置をサンプル単位で取得する +extern DXLIBAPI int SetSoundCurrentPosition( LONGLONG Byte, int SoundHandle ) ; // サウンドハンドルの再生位置をバイト単位で設定する(再生が止まっている時のみ有効) +extern DXLIBAPI LONGLONG GetSoundCurrentPosition( int SoundHandle ) ; // サウンドハンドルの再生位置をバイト単位で取得する +extern DXLIBAPI int SetSoundCurrentTime( LONGLONG Time, int SoundHandle ) ; // サウンドハンドルの再生位置をミリ秒単位で設定する(圧縮形式の場合は正しく設定されない場合がある) +extern DXLIBAPI LONGLONG GetSoundCurrentTime( int SoundHandle ) ; // サウンドハンドルの再生位置をミリ秒単位で取得する(圧縮形式の場合は正しい値が返ってこない場合がある) +extern DXLIBAPI LONGLONG GetSoundTotalSample( int SoundHandle ) ; // サウンドハンドルの音の総時間をサンプル単位で取得する +extern DXLIBAPI LONGLONG GetSoundTotalTime( int SoundHandle ) ; // サウンドハンドルの音の総時間をミリ秒単位で取得する + +extern DXLIBAPI int SetLoopPosSoundMem( LONGLONG LoopTime, int SoundHandle ) ; // SetLoopTimePosSoundMem の別名関数 +extern DXLIBAPI int SetLoopTimePosSoundMem( LONGLONG LoopTime, int SoundHandle ) ; // サウンドハンドルにループ位置を設定する(ミリ秒単位) +extern DXLIBAPI int SetLoopSamplePosSoundMem( LONGLONG LoopSamplePosition, int SoundHandle ) ; // サウンドハンドルにループ位置を設定する(サンプル単位) + +extern DXLIBAPI int SetLoopStartTimePosSoundMem( LONGLONG LoopStartTime, int SoundHandle ) ; // サウンドハンドルにループ開始位置を設定する(ミリ秒単位) +extern DXLIBAPI int SetLoopStartSamplePosSoundMem( LONGLONG LoopStartSamplePosition, int SoundHandle ) ; // サウンドハンドルにループ開始位置を設定する(サンプル単位) + +extern DXLIBAPI int SetLoopAreaTimePosSoundMem( LONGLONG LoopStartTime, LONGLONG LoopEndTime, int SoundHandle ) ; // サウンドハンドルにループ範囲を設定する(ミリ秒単位) +extern DXLIBAPI int GetLoopAreaTimePosSoundMem( LONGLONG *LoopStartTime, LONGLONG *LoopEndTime, int SoundHandle ) ; // サウンドハンドルにループ範囲を取得する(ミリ秒単位) +extern DXLIBAPI int SetLoopAreaSamplePosSoundMem( LONGLONG LoopStartSamplePosition, LONGLONG LoopEndSamplePosition, int SoundHandle ) ; // サウンドハンドルにループ範囲を設定する(サンプル単位) +extern DXLIBAPI int GetLoopAreaSamplePosSoundMem( LONGLONG *LoopStartSamplePosition, LONGLONG *LoopEndSamplePosition, int SoundHandle ) ; // サウンドハンドルにループ範囲を取得する(サンプル単位) + +extern DXLIBAPI int SetPlayFinishDeleteSoundMem( int DeleteFlag, int SoundHandle ) ; // サウンドハンドルの再生が終了したら自動的にハンドルを削除するかどうかを設定する + +extern DXLIBAPI int Set3DReverbParamSoundMem( const SOUND3D_REVERB_PARAM *Param, int SoundHandle ) ; // サウンドハンドルの3Dサウンド用のリバーブパラメータを設定する +extern DXLIBAPI int Set3DPresetReverbParamSoundMem( int PresetNo /* DX_REVERB_PRESET_DEFAULT 等 */ , int SoundHandle ) ; // サウンドハンドルの3Dサウンド用のリバーブパラメータをプリセットを使用して設定する +extern DXLIBAPI int Set3DReverbParamSoundMemAll( const SOUND3D_REVERB_PARAM *Param, int PlaySoundOnly = FALSE ) ; // 全ての3Dサウンドのサウンドハンドルにリバーブパラメータを設定する( PlaySoundOnly TRUE:再生中のサウンドにのみ設定する FALSE:再生していないサウンドにも設定する ) +extern DXLIBAPI int Set3DPresetReverbParamSoundMemAll( int PresetNo /* DX_REVERB_PRESET_DEFAULT 等 */ , int PlaySoundOnly = FALSE ) ; // 全ての3Dサウンドのサウンドハンドルにリバーブパラメータをプリセットを使用して設定する( PlaySoundOnly TRUE:再生中のサウンドにのみ設定する FALSE:再生していないサウンドにも設定する ) +extern DXLIBAPI int Get3DReverbParamSoundMem( SOUND3D_REVERB_PARAM *ParamBuffer, int SoundHandle ) ; // サウンドハンドルに設定されている3Dサウンド用のリバーブパラメータを取得する +extern DXLIBAPI int Get3DPresetReverbParamSoundMem( SOUND3D_REVERB_PARAM *ParamBuffer, int PresetNo /* DX_REVERB_PRESET_DEFAULT 等 */ ) ; // プリセットの3Dサウンド用のリバーブパラメータを取得する + +extern DXLIBAPI int Set3DPositionSoundMem( VECTOR Position, int SoundHandle ) ; // サウンドハンドルの3Dサウンド用の再生位置を設定する +extern DXLIBAPI int Set3DRadiusSoundMem( float Radius, int SoundHandle ) ; // サウンドハンドルの3Dサウンド用の音が聞こえる距離を設定する +extern DXLIBAPI int Set3DVelocitySoundMem( VECTOR Velocity, int SoundHandle ) ; // サウンドハンドルの3Dサウンド用の移動速度を設定する + +extern DXLIBAPI int SetNextPlay3DPositionSoundMem( VECTOR Position, int SoundHandle ) ; // サウンドハンドルの次の再生のみに使用する3Dサウンド用の再生位置を設定する +extern DXLIBAPI int SetNextPlay3DRadiusSoundMem( float Radius, int SoundHandle ) ; // サウンドハンドルの次の再生のみに使用する3Dサウンド用の音が聞こえる距離を設定する +extern DXLIBAPI int SetNextPlay3DVelocitySoundMem( VECTOR Velocity, int SoundHandle ) ; // サウンドハンドルの次の再生のみに使用する3Dサウンド用の移動速度を設定する + + +// 特殊関数 +extern DXLIBAPI int GetMP3TagInfo( const TCHAR *FileName, TCHAR *TitleBuffer, size_t TitleBufferBytes, TCHAR *ArtistBuffer, size_t ArtistBufferBytes, TCHAR *AlbumBuffer, size_t AlbumBufferBytes, TCHAR *YearBuffer, size_t YearBufferBytes, TCHAR *CommentBuffer, size_t CommentBufferBytes, TCHAR *TrackBuffer, size_t TrackBufferBytes, TCHAR *GenreBuffer, size_t GenreBufferBytes, int *PictureGrHandle ) ; // MP3ファイルのタグ情報を取得する +extern DXLIBAPI int GetMP3TagInfoWithStrLen( const TCHAR *FileName, size_t FileNameLength, TCHAR *TitleBuffer, size_t TitleBufferBytes, TCHAR *ArtistBuffer, size_t ArtistBufferBytes, TCHAR *AlbumBuffer, size_t AlbumBufferBytes, TCHAR *YearBuffer, size_t YearBufferBytes, TCHAR *CommentBuffer, size_t CommentBufferBytes, TCHAR *TrackBuffer, size_t TrackBufferBytes, TCHAR *GenreBuffer, size_t GenreBufferBytes, int *PictureGrHandle ) ; // MP3ファイルのタグ情報を取得する + + +// 設定関係関数 +extern DXLIBAPI int SetCreateSoundDataType( int SoundDataType ) ; // 作成するサウンドハンドルの再生タイプを設定する( DX_SOUNDDATATYPE_MEMNOPRESS 等 ) +extern DXLIBAPI int GetCreateSoundDataType( void ) ; // 作成するサウンドハンドルの再生タイプを取得する( DX_SOUNDDATATYPE_MEMNOPRESS 等 ) +extern DXLIBAPI int SetCreateSoundPitchRate( float Cents ) ; // 作成するサウンドハンドルのピッチ( 音の長さを変えずに音程を変更する )レートを設定する( 単位はセント( 100.0fで半音、1200.0fで1オクターヴ )、プラスの値で音程が高く、マイナスの値で音程が低くなります ) +extern DXLIBAPI float GetCreateSoundPitchRate( void ) ; // 作成するサウンドハンドルのピッチ( 音の長さを変えずに音程を変更する )レートを取得する( 単位はセント( 100.0fで半音、1200.0fで1オクターヴ )、プラスの値で音程が高く、マイナスの値で音程が低くなります ) +extern DXLIBAPI int SetCreateSoundTimeStretchRate( float Rate ) ; // 作成するサウンドハンドルのタイムストレッチ( 音程を変えずに音の長さを変更する )レートを設定する( 単位は倍率、2.0f で音の長さが2倍に、0.5f で音の長さが半分になります ) +extern DXLIBAPI float GetCreateSoundTimeStretchRate( void ) ; // 作成するサウンドハンドルのタイムストレッチ( 音程を変えずに音の長さを変更する )レートを取得する( 単位は倍率、2.0f で音の長さが2倍に、0.5f で音の長さが半分になります ) +extern DXLIBAPI int SetCreateSoundLoopAreaTimePos( LONGLONG LoopStartTime, LONGLONG LoopEndTime ) ; // 作成するサウンドハンドルのループ範囲を設定する( ミリ秒単位 ) +extern DXLIBAPI int GetCreateSoundLoopAreaTimePos( LONGLONG *LoopStartTime, LONGLONG *LoopEndTime ) ; // 作成するサウンドハンドルのループ範囲を取得する( ミリ秒単位 ) +extern DXLIBAPI int SetCreateSoundLoopAreaSamplePos( LONGLONG LoopStartSamplePosition, LONGLONG LoopEndSamplePosition ) ; // 作成するサウンドハンドルのループ範囲を設定する( サンプル単位 ) +extern DXLIBAPI int GetCreateSoundLoopAreaSamplePos( LONGLONG *LoopStartSamplePosition, LONGLONG *LoopEndSamplePosition ) ; // 作成するサウンドハンドルのループ範囲を取得する( サンプル単位 ) +extern DXLIBAPI int SetCreateSoundIgnoreLoopAreaInfo( int IgnoreFlag ) ; // LoadSoundMem などで読み込むサウンドデータにループ範囲情報があっても無視するかどうかを設定する( TRUE:無視する FALSE:無視しない( デフォルト ) ) +extern DXLIBAPI int GetCreateSoundIgnoreLoopAreaInfo( void ) ; // LoadSoundMem などで読み込むサウンドデータにループ範囲情報があっても無視するかどうかを取得する( TRUE:無視する FALSE:無視しない( デフォルト ) ) +extern DXLIBAPI int SetDisableReadSoundFunctionMask( int Mask ) ; // 使用しないサウンドデータ読み込み処理のマスクを設定する( DX_READSOUNDFUNCTION_PCM 等 ) +extern DXLIBAPI int GetDisableReadSoundFunctionMask( void ) ; // 使用しないサウンドデータ読み込み処理のマスクを取得する( DX_READSOUNDFUNCTION_PCM 等 ) +extern DXLIBAPI int SetEnableSoundCaptureFlag( int Flag ) ; // サウンドキャプチャを前提とした動作をするかどうかを設定する +extern DXLIBAPI int SetUseOldVolumeCalcFlag( int Flag ) ; // ChangeVolumeSoundMem, ChangeNextPlayVolumeSoundMem, ChangeMovieVolumeToGraph の音量計算式を Ver3.10c以前のものを使用するかどうかを設定する( TRUE:Ver3.10c以前の計算式を使用 FALSE:3.10d以降の計算式を使用( デフォルト ) ) + +extern DXLIBAPI int SetCreate3DSoundFlag( int Flag ) ; // 次に作成するサウンドハンドルを3Dサウンド用にするかどうかを設定する( TRUE:3Dサウンド用にする FALSE:3Dサウンド用にしない( デフォルト ) ) +extern DXLIBAPI int Set3DSoundOneMetre( float Distance ) ; // 3D空間の1メートルに相当する距離を設定する、DxLib_Init を呼び出す前でのみ呼び出し可能( デフォルト:1.0f ) +extern DXLIBAPI int Set3DSoundListenerPosAndFrontPos_UpVecY( VECTOR Position, VECTOR FrontPosition ) ; // 3Dサウンドのリスナーの位置とリスナーの前方位置を設定する( リスナーの上方向はY軸固定 ) +extern DXLIBAPI int Set3DSoundListenerPosAndFrontPosAndUpVec( VECTOR Position, VECTOR FrontPosition, VECTOR UpVector ) ; // 3Dサウンドのリスナーの位置とリスナーの前方位置とリスナーの上方向を設定する +extern DXLIBAPI int Set3DSoundListenerVelocity( VECTOR Velocity ) ; // 3Dサウンドのリスナーの移動速度を設定する +extern DXLIBAPI int Set3DSoundListenerConeAngle( float InnerAngle, float OuterAngle ) ; // 3Dサウンドのリスナーの可聴角度範囲を設定する +extern DXLIBAPI int Set3DSoundListenerConeVolume( float InnerAngleVolume, float OuterAngleVolume ) ; // 3Dサウンドのリスナーの可聴角度範囲の音量倍率を設定する + +#ifndef DX_NON_BEEP +// BEEP音再生用命令 +extern DXLIBAPI int SetBeepFrequency( int Freq ) ; // ビープ音周波数設定関数 +extern DXLIBAPI int PlayBeep( void ) ; // ビープ音を再生する +extern DXLIBAPI int StopBeep( void ) ; // ビープ音を止める +#endif // DX_NON_BEEP + +// ラッパー関数 +extern DXLIBAPI int PlaySoundFile( const TCHAR *FileName, int PlayType ) ; // サウンドファイルを再生する +extern DXLIBAPI int PlaySoundFileWithStrLen( const TCHAR *FileName, size_t FileNameLength, int PlayType ) ; // サウンドファイルを再生する +extern DXLIBAPI int PlaySound( const TCHAR *FileName, int PlayType ) ; // PlaySoundFile の旧名称 +extern DXLIBAPI int PlaySoundWithStrLen( const TCHAR *FileName, size_t FileNameLength, int PlayType ) ; // PlaySoundFile の旧名称 +extern DXLIBAPI int CheckSoundFile( void ) ; // サウンドファイルの再生中かどうかを取得する +extern DXLIBAPI int CheckSound( void ) ; // CheckSoundFile の旧名称 +extern DXLIBAPI int StopSoundFile( void ) ; // サウンドファイルの再生を停止する +extern DXLIBAPI int StopSound( void ) ; // StopSoundFile の旧名称 +extern DXLIBAPI int SetVolumeSoundFile( int VolumePal ) ; // サウンドファイルの音量を設定する +extern DXLIBAPI int SetVolumeSound( int VolumePal ) ; // SetVolumeSound の旧名称 + +// ソフトウエア制御サウンド系関数 +extern DXLIBAPI int InitSoftSound( void ) ; // ソフトウエアで扱う波形データハンドルをすべて削除する +extern DXLIBAPI int LoadSoftSound( const TCHAR *FileName ) ; // ソフトウエアで扱う波形データハンドルをサウンドファイルから作成する +extern DXLIBAPI int LoadSoftSoundWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // ソフトウエアで扱う波形データハンドルをサウンドファイルから作成する +extern DXLIBAPI int LoadSoftSoundFromMemImage( const void *FileImage, size_t FileImageSize ) ; // ソフトウエアで扱う波形データハンドルをメモリ上に展開されたサウンドファイルイメージから作成する +extern DXLIBAPI int MakeSoftSound( int UseFormat_SoftSoundHandle, LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( フォーマットは引数のソフトウエアサウンドハンドルと同じものにする ) +extern DXLIBAPI int MakeSoftSound2Ch16Bit44KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSound2Ch16Bit22KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSound2Ch8Bit44KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSound2Ch8Bit22KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSound1Ch16Bit44KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSound1Ch16Bit22KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSound1Ch8Bit44KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSound1Ch8Bit22KHz( LONGLONG SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSoundCustom( int ChannelNum, int BitsPerSample, int SamplesPerSec, LONGLONG SampleNum, int IsFloatType = 0 ) ; // ソフトウエアで扱う空の波形データハンドルを作成する +extern DXLIBAPI int DeleteSoftSound( int SoftSoundHandle ) ; // ソフトウエアで扱う波形データハンドルを削除する +#ifndef DX_NON_SAVEFUNCTION +extern DXLIBAPI int SaveSoftSound( int SoftSoundHandle, const TCHAR *FileName ) ; // ソフトウエアで扱う波形データハンドルをWAVEファイル(PCM)形式で保存する +extern DXLIBAPI int SaveSoftSoundWithStrLen( int SoftSoundHandle, const TCHAR *FileName, size_t FileNameLength ) ; // ソフトウエアで扱う波形データハンドルをWAVEファイル(PCM)形式で保存する +#endif // DX_NON_SAVEFUNCTION +extern DXLIBAPI LONGLONG GetSoftSoundSampleNum( int SoftSoundHandle ) ; // ソフトウエアで扱う波形データハンドルのサンプル数を取得する +extern DXLIBAPI int GetSoftSoundFormat( int SoftSoundHandle, int *Channels, int *BitsPerSample, int *SamplesPerSec, int *IsFloatType = NULL ) ; // ソフトウエアで扱う波形データハンドルのフォーマットを取得する +extern DXLIBAPI int ReadSoftSoundData( int SoftSoundHandle, LONGLONG SamplePosition, int *Channel1, int *Channel2 ) ; // ソフトウエアで扱う波形データハンドルのサンプルを読み取る +extern DXLIBAPI int ReadSoftSoundDataF( int SoftSoundHandle, LONGLONG SamplePosition, float *Channel1, float *Channel2 ) ; // ソフトウエアで扱う波形データハンドルのサンプルを読み取る( float型版 ) +extern DXLIBAPI int WriteSoftSoundData( int SoftSoundHandle, LONGLONG SamplePosition, int Channel1, int Channel2 ) ; // ソフトウエアで扱う波形データハンドルのサンプルを書き込む +extern DXLIBAPI int WriteSoftSoundDataF( int SoftSoundHandle, LONGLONG SamplePosition, float Channel1, float Channel2 ) ; // ソフトウエアで扱う波形データハンドルのサンプルを書き込む( float型版 ) +extern DXLIBAPI int WriteTimeStretchSoftSoundData( int SrcSoftSoundHandle, int DestSoftSoundHandle ) ; // ソフトウエアで扱う波形データハンドルの波形データを音程を変えずにデータの長さを変更する +extern DXLIBAPI int WritePitchShiftSoftSoundData( int SrcSoftSoundHandle, int DestSoftSoundHandle ) ; // ソフトウエアで扱う波形データハンドルの波形データの長さを変更する +extern DXLIBAPI void* GetSoftSoundDataImage( int SoftSoundHandle ) ; // ソフトウエアで扱う波形データハンドルの波形イメージが格納されているメモリアドレスを取得する +extern DXLIBAPI int GetFFTVibrationSoftSound( int SoftSoundHandle, int Channel, LONGLONG SamplePosition, int SampleNum, float *Buffer_Array, int BufferLength ) ; // ソフトウエアで扱う波形データハンドルの指定の範囲を高速フーリエ変換を行い、各周波数域の振幅を取得する( SampleNum は 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 の何れかである必要があります、Channel を -1 にすると二つのチャンネルを合成した結果になります ) +extern DXLIBAPI int GetFFTVibrationSoftSoundBase( int SoftSoundHandle, int Channel, LONGLONG SamplePosition, int SampleNum, float *RealBuffer_Array, float *ImagBuffer_Array, int BufferLength ) ; // ソフトウエアで扱う波形データハンドルの指定の範囲を高速フーリエ変換を行い、各周波数域の振幅を取得する、結果の実数と虚数を別々に取得することができるバージョン( SampleNum は 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 の何れかである必要があります、Channel を -1 にすると二つのチャンネルを合成した結果になります ) + +extern DXLIBAPI int InitSoftSoundPlayer( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルをすべて解放する +extern DXLIBAPI int MakeSoftSoundPlayer( int UseFormat_SoftSoundHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( フォーマットは引数のソフトウエアサウンドハンドルと同じものにする ) +extern DXLIBAPI int MakeSoftSoundPlayer2Ch16Bit44KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer2Ch16Bit22KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer2Ch8Bit44KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer2Ch8Bit22KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer1Ch16Bit44KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer1Ch16Bit22KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer1Ch8Bit44KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:44.1KHz ) +extern DXLIBAPI int MakeSoftSoundPlayer1Ch8Bit22KHz( void ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:22KHz ) +extern DXLIBAPI int MakeSoftSoundPlayerCustom( int ChannelNum, int BitsPerSample, int SamplesPerSec ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを作成する +extern DXLIBAPI int DeleteSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルを削除する +extern DXLIBAPI int AddDataSoftSoundPlayer( int SSoundPlayerHandle, int SoftSoundHandle, LONGLONG AddSamplePosition, int AddSampleNum ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルに波形データを追加する( フォーマットが同じではない場合はエラー ) +extern DXLIBAPI int AddDirectDataSoftSoundPlayer( int SSoundPlayerHandle, const void *SoundData, int AddSampleNum ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルにプレイヤーが対応したフォーマットの生波形データを追加する +extern DXLIBAPI int AddOneDataSoftSoundPlayer( int SSoundPlayerHandle, int Channel1, int Channel2 ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルに波形データを一つ追加する +extern DXLIBAPI int GetSoftSoundPlayerFormat( int SSoundPlayerHandle, int *Channels, int *BitsPerSample, int *SamplesPerSec ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルが扱うデータフォーマットを取得する +extern DXLIBAPI int StartSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルの再生処理を開始する +extern DXLIBAPI int CheckStartSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルの再生処理が開始されているか取得する( TRUE:開始している FALSE:停止している ) +extern DXLIBAPI int StopSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルの再生処理を停止する +extern DXLIBAPI int ResetSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルの状態を初期状態に戻す( 追加された波形データは削除され、再生状態だった場合は停止する ) +extern DXLIBAPI int GetStockDataLengthSoftSoundPlayer( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルに追加した波形データでまだ再生用サウンドバッファに転送されていない波形データのサンプル数を取得する +extern DXLIBAPI int CheckSoftSoundPlayerNoneData( int SSoundPlayerHandle ) ; // ソフトウエアで扱う波形データのプレイヤーハンドルに再生用サウンドバッファに転送していない波形データが無く、再生用サウンドバッファにも無音データ以外無いかどうかを取得する( TRUE:無音データ以外無い FALSE:有効データがある ) + + + + +// MIDI制御関数 +extern DXLIBAPI int DeleteMusicMem( int MusicHandle ) ; // MIDIハンドルを削除する +extern DXLIBAPI int LoadMusicMem( const TCHAR *FileName ) ; // MIDIファイルを読み込みMIDIハンドルを作成する +extern DXLIBAPI int LoadMusicMemWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // MIDIファイルを読み込みMIDIハンドルを作成する +extern DXLIBAPI int LoadMusicMemByMemImage( const void *FileImage, size_t FileImageSize ) ; // メモリ上に展開されたMIDIファイルイメージからMIDIハンドルを作成する +extern DXLIBAPI int PlayMusicMem( int MusicHandle, int PlayType ) ; // MIDIハンドルの演奏を開始する +extern DXLIBAPI int StopMusicMem( int MusicHandle ) ; // MIDIハンドルの演奏を停止する +extern DXLIBAPI int CheckMusicMem( int MusicHandle ) ; // MIDIハンドルが演奏中かどうかを取得する( TRUE:演奏中 FALSE:停止中 ) +extern DXLIBAPI int SetVolumeMusicMem( int Volume, int MusicHandle ) ; // MIDIハンドルの再生音量をセットする +extern DXLIBAPI int GetMusicMemPosition( int MusicHandle ) ; // MIDIハンドルの現在の再生位置を取得する +extern DXLIBAPI int InitMusicMem( void ) ; // MIDIハンドルをすべて削除する +extern DXLIBAPI int ProcessMusicMem( void ) ; // MIDIハンドルの周期的処理( 内部で呼ばれます ) + +extern DXLIBAPI int PlayMusic( const TCHAR *FileName, int PlayType ) ; // MIDIファイルを演奏する +extern DXLIBAPI int PlayMusicWithStrLen( const TCHAR *FileName, size_t FileNameLength, int PlayType ) ; // MIDIファイルを演奏する +extern DXLIBAPI int PlayMusicByMemImage( const void *FileImage, size_t FileImageSize, int PlayType ) ; // メモリ上に展開されているMIDIファイルを演奏する +extern DXLIBAPI int SetVolumeMusic( int Volume ) ; // MIDIの再生音量をセットする +extern DXLIBAPI int StopMusic( void ) ; // MIDIファイルの演奏停止 +extern DXLIBAPI int CheckMusic( void ) ; // MIDIファイルが演奏中か否か情報を取得する +extern DXLIBAPI int GetMusicPosition( void ) ; // MIDIの現在の再生位置を取得する + +extern DXLIBAPI int SelectMidiMode( int Mode ) ; // MIDIの再生形式を設定する + +#endif // DX_NON_SOUND + + + + + + + + + + +// DxArchive_.cpp 関数 プロトタイプ宣言 +extern DXLIBAPI int SetUseDXArchiveFlag( int Flag ) ; // DXアーカイブファイルの読み込み機能を使うかどうかを設定する( FALSE:使用しない TRUE:使用する ) +extern DXLIBAPI int SetDXArchivePriority( int Priority = 0 ) ; // 同名のDXアーカイブファイルとフォルダが存在した場合、どちらを優先させるかを設定する( 1:フォルダを優先  0:DXアーカイブファイルを優先( デフォルト ) ) +extern DXLIBAPI int SetDXArchiveExtension( const TCHAR *Extension = NULL ) ; // 検索するDXアーカイブファイルの拡張子を設定する( Extension:拡張子名文字列 ) +extern DXLIBAPI int SetDXArchiveExtensionWithStrLen( const TCHAR *Extension = NULL , size_t ExtensionLength = 0 ) ; // 検索するDXアーカイブファイルの拡張子を設定する( Extension:拡張子名文字列 ) +extern DXLIBAPI int SetDXArchiveKeyString( const TCHAR *KeyString = NULL ) ; // DXアーカイブファイルの鍵文字列を設定する( KeyString:鍵文字列 ) +extern DXLIBAPI int SetDXArchiveKeyStringWithStrLen( const TCHAR *KeyString = NULL , size_t KeyStringLength = 0 ) ; // DXアーカイブファイルの鍵文字列を設定する( KeyString:鍵文字列 ) + +extern DXLIBAPI int DXArchivePreLoad( const TCHAR *FilePath, int ASync = FALSE ) ; // 指定のDXAファイルを丸ごとメモリに読み込む( 戻り値 -1:エラー 0:成功 ) +extern DXLIBAPI int DXArchivePreLoadWithStrLen( const TCHAR *FilePath, size_t FilePathLength, int ASync = FALSE ) ; // 指定のDXAファイルを丸ごとメモリに読み込む( 戻り値 -1:エラー 0:成功 ) +extern DXLIBAPI int DXArchiveCheckIdle( const TCHAR *FilePath ) ; // 指定のDXAファイルの事前読み込みが完了したかどうかを取得する( 戻り値 TRUE:完了した FALSE:まだ ) +extern DXLIBAPI int DXArchiveCheckIdleWithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // 指定のDXAファイルの事前読み込みが完了したかどうかを取得する( 戻り値 TRUE:完了した FALSE:まだ ) +extern DXLIBAPI int DXArchiveRelease( const TCHAR *FilePath ) ; // 指定のDXAファイルをメモリから解放する +extern DXLIBAPI int DXArchiveReleaseWithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // 指定のDXAファイルをメモリから解放する +extern DXLIBAPI int DXArchiveCheckFile( const TCHAR *FilePath, const TCHAR *TargetFilePath ) ; // DXAファイルの中に指定のファイルが存在するかどうかを調べる、TargetFilePath はDXAファイルをカレントフォルダとした場合のパス( 戻り値: -1=エラー 0:無い 1:ある ) +extern DXLIBAPI int DXArchiveCheckFileWithStrLen( const TCHAR *FilePath, size_t FilePathLength, const TCHAR *TargetFilePath, size_t TargetFilePathLength ) ; // DXAファイルの中に指定のファイルが存在するかどうかを調べる、TargetFilePath はDXAファイルをカレントフォルダとした場合のパス( 戻り値: -1=エラー 0:無い 1:ある ) +extern DXLIBAPI int DXArchiveSetMemImage( void *ArchiveImage, int ArchiveImageSize, const TCHAR *EmulateFilePath, int ArchiveImageCopyFlag = FALSE , int ArchiveImageReadOnly = TRUE ) ; // メモリ上に展開されたDXAファイルを指定のファイルパスにあることにする( EmulateFilePath は見立てる dxa ファイルのパス、例えばDXAファイルイメージを Image.dxa というファイル名で c:\Temp にあることにしたい場合は EmulateFilePath に "c:\\Temp\\Image.dxa" を渡す、SetDXArchiveExtension で拡張子を変更している場合は EmulateFilePath に渡すファイルパスの拡張子もそれに合わせる必要あり ) +extern DXLIBAPI int DXArchiveSetMemImageWithStrLen( void *ArchiveImage, int ArchiveImageSize, const TCHAR *EmulateFilePath, size_t EmulateFilePathLength, int ArchiveImageCopyFlag = FALSE , int ArchiveImageReadOnly = TRUE ) ; // メモリ上に展開されたDXAファイルを指定のファイルパスにあることにする( EmulateFilePath は見立てる dxa ファイルのパス、例えばDXAファイルイメージを Image.dxa というファイル名で c:\Temp にあることにしたい場合は EmulateFilePath に "c:\\Temp\\Image.dxa" を渡す、SetDXArchiveExtension で拡張子を変更している場合は EmulateFilePath に渡すファイルパスの拡張子もそれに合わせる必要あり ) +extern DXLIBAPI int DXArchiveReleaseMemImage( void *ArchiveImage ) ; // DXArchiveSetMemImage の設定を解除する + +extern DXLIBAPI DWORD HashCRC32( const void *SrcData, size_t SrcDataSize ) ; // バイナリデータを元に CRC32 のハッシュ値を計算する + + + + + + + + + + + + + + + + + + + + + +// DxModel.cpp 関数 プロトタイプ宣言 + +#ifndef DX_NON_MODEL + +// モデルの読み込み・複製関係 +extern DXLIBAPI int MV1LoadModel( const TCHAR *FileName ) ; // モデルの読み込み( -1:エラー 0以上:モデルハンドル ) +extern DXLIBAPI int MV1LoadModelWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // モデルの読み込み( -1:エラー 0以上:モデルハンドル ) +extern DXLIBAPI int MV1LoadModelFromMem( const void *FileImage, int FileSize, int (* FileReadFunc )( const TCHAR *FilePath, void **FileImageAddr, int *FileSize, void *FileReadFuncData ), int (* FileReleaseFunc )( void *MemoryAddr, void *FileReadFuncData ), void *FileReadFuncData = NULL ) ; // メモリ上のモデルファイルイメージと独自の読み込みルーチンを使用してモデルを読み込む +extern DXLIBAPI int MV1DuplicateModel( int SrcMHandle ) ; // 指定のモデルと同じモデル基本データを使用してモデルを作成する( -1:エラー 0以上:モデルハンドル ) +extern DXLIBAPI int MV1CreateCloneModel( int SrcMHandle ) ; // 指定のモデルをモデル基本データも含め複製する( MV1DuplicateModel はモデル基本データは共有しますが、こちらは複製元のモデルとは一切共有データの無いモデルハンドルを作成します )( -1:エラー 0以上:モデルハンドル ) + +extern DXLIBAPI int MV1DeleteModel( int MHandle ) ; // モデルを削除する +extern DXLIBAPI int MV1InitModel( void ) ; // すべてのモデルを削除する + +extern DXLIBAPI int MV1SetLoadModelReMakeNormal( int Flag ) ; // モデルを読み込む際に法線の再計算を行うかどうかを設定する( TRUE:行う FALSE:行わない( デフォルト ) ) +extern DXLIBAPI int MV1SetLoadModelReMakeNormalSmoothingAngle( float SmoothingAngle = 1.562069f ) ; // モデルを読み込む際に行う法泉の再計算で使用するスムージング角度を設定する( 単位はラジアン ) +extern DXLIBAPI int MV1SetLoadModelIgnoreScaling( int Flag ) ; // モデルを読み込む際にスケーリングデータを無視するかどうかを設定する( TRUE:無視する FALSE:無視しない( デフォルト ) ) +extern DXLIBAPI int MV1SetLoadModelPositionOptimize( int Flag ) ; // モデルを読み込む際に座標データの最適化を行うかどうかを設定する( TRUE:行う FALSE:行わない( デフォルト ) ) +extern DXLIBAPI int MV1SetLoadModelNotEqNormalSide_AddZeroAreaPolygon( int Flag ) ; // モデルを読み込む際にポリゴンの辺が接していて、且つ法線の方向が異なる辺に面積0のポリゴンを埋め込むかどうかを設定する( TRUE:埋め込む FALSE:埋め込まない( デフォルト ) )、( MV1ファイルの読み込みではこの関数の設定は無視され、ポリゴンの埋め込みは実行されません ) +extern DXLIBAPI int MV1SetLoadModelUsePhysicsMode( int PhysicsMode /* DX_LOADMODEL_PHYSICS_LOADCALC 等 */ ) ; // 読み込むモデルの物理演算モードを設定する +extern DXLIBAPI int MV1SetLoadModelPhysicsWorldGravity( float Gravity ) ; // 読み込むモデルの物理演算に適用する重力パラメータを設定する +extern DXLIBAPI float MV1GetLoadModelPhysicsWorldGravity( void ) ; // 読み込むモデルの物理演算に適用する重力パラメータを取得する +extern DXLIBAPI int MV1SetLoadCalcPhysicsWorldGravity( int GravityNo, VECTOR Gravity ) ; // 読み込むモデルの物理演算モードが事前計算( DX_LOADMODEL_PHYSICS_LOADCALC )だった場合に適用される重力の設定をする +extern DXLIBAPI VECTOR MV1GetLoadCalcPhysicsWorldGravity( int GravityNo ) ; // 読み込むモデルの物理演算モードが事前計算( DX_LOADMODEL_PHYSICS_LOADCALC )だった場合に適用される重力を取得する +extern DXLIBAPI int MV1SetLoadModelPhysicsCalcPrecision( int Precision ) ; // 読み込むモデルの物理演算モードが事前計算( DX_LOADMODEL_PHYSICS_LOADCALC )だった場合に適用される物理演算の時間進行の精度を設定する( 0:60FPS 1:120FPS 2:240FPS 3:480FPS 4:960FPS 5:1920FPS ) +extern DXLIBAPI int MV1SetLoadModel_PMD_PMX_AnimationFPSMode( int FPSMode /* DX_LOADMODEL_PMD_PMX_ANIMATION_FPSMODE_30 等 */ ) ; // PMD, PMX ファイルを読み込んだ際のアニメーションの FPS モードを設定する +extern DXLIBAPI int MV1AddLoadModelDisablePhysicsNameWord( const TCHAR *NameWord ) ; // 読み込むモデルの物理演算を特定の剛体のみ無効にするための名前のワードを追加する、追加できるワード文字列の最大長は 63 文字、追加できるワードの数は最大 256 個 +extern DXLIBAPI int MV1AddLoadModelDisablePhysicsNameWordWithStrLen( const TCHAR *NameWord, size_t NameWordLength ) ; // 読み込むモデルの物理演算を特定の剛体のみ無効にするための名前のワードを追加する、追加できるワード文字列の最大長は 63 文字、追加できるワードの数は最大 256 個 +extern DXLIBAPI int MV1ResetLoadModelDisablePhysicsNameWord( void ) ; // MV1AddLoadModelDisablePhysicsNameWord で追加した剛体の無効ワードをリセットして無効ワード無しの初期状態に戻す +extern DXLIBAPI int MV1SetLoadModelDisablePhysicsNameWordMode( int DisableNameWordMode /* DX_LOADMODEL_PHYSICS_DISABLENAMEWORD_ALWAYS 等 */ ) ; // MV1AddLoadModelDisablePhysicsNameWord で追加した剛体の無効ワードの適用ルールを変更する +extern DXLIBAPI int MV1SetLoadModelAnimFilePath( const TCHAR *FileName ) ; // 読み込むモデルに適用するアニメーションファイルのパスを設定する、NULLを渡すと設定リセット( 現在は PMD,PMX のみに効果あり ) +extern DXLIBAPI int MV1SetLoadModelAnimFilePathWithStrLen( const TCHAR *FileName, size_t FileNameLength ) ; // 読み込むモデルに適用するアニメーションファイルのパスを設定する、NULLを渡すと設定リセット( 現在は PMD,PMX のみに効果あり ) +extern DXLIBAPI int MV1SetLoadModelUsePackDraw( int Flag ) ; // 読み込むモデルを同時複数描画に対応させるかどうかを設定する( TRUE:対応させる FALSE:対応させない( デフォルト ) )、( 「対応させる」にすると描画が高速になる可能性がある代わりに消費VRAMが増えます ) +extern DXLIBAPI int MV1SetLoadModelTriangleListUseMaxBoneNum( int UseMaxBoneNum ) ; // 読み込むモデルのひとつのトライアングルリストで使用できる最大ボーン数を設定する( UseMaxBoneNum で指定できる値の範囲は 8 ~ 54、 0 を指定するとデフォルト動作に戻る ) + +// モデル保存関係 +extern DXLIBAPI int MV1SaveModelToMV1File( int MHandle, const TCHAR *FileName, int SaveType = MV1_SAVETYPE_NORMAL , int AnimMHandle = -1 , int AnimNameCheck = TRUE , int Normal8BitFlag = 1 , int Position16BitFlag = 1 , int Weight8BitFlag = 0 , int Anim16BitFlag = 1 ) ; // 指定のパスにモデルを保存する( 戻り値 0:成功 -1:メモリ不足 -2:使われていないアニメーションがあった ) +extern DXLIBAPI int MV1SaveModelToMV1FileWithStrLen( int MHandle, const TCHAR *FileName, size_t FileNameLength, int SaveType = MV1_SAVETYPE_NORMAL , int AnimMHandle = -1 , int AnimNameCheck = TRUE , int Normal8BitFlag = 1 , int Position16BitFlag = 1 , int Weight8BitFlag = 0 , int Anim16BitFlag = 1 ) ; // 指定のパスにモデルを保存する( 戻り値 0:成功 -1:メモリ不足 -2:使われていないアニメーションがあった ) +#ifndef DX_NON_SAVEFUNCTION +extern DXLIBAPI int MV1SaveModelToXFile( int MHandle, const TCHAR *FileName, int SaveType = MV1_SAVETYPE_NORMAL , int AnimMHandle = -1 , int AnimNameCheck = TRUE ) ; // 指定のパスにモデルをXファイル形式で保存する( 戻り値 0:成功 -1:メモリ不足 -2:使われていないアニメーションがあった ) +extern DXLIBAPI int MV1SaveModelToXFileWithStrLen( int MHandle, const TCHAR *FileName, size_t FileNameLength, int SaveType = MV1_SAVETYPE_NORMAL , int AnimMHandle = -1 , int AnimNameCheck = TRUE ) ; // 指定のパスにモデルをXファイル形式で保存する( 戻り値 0:成功 -1:メモリ不足 -2:使われていないアニメーションがあった ) +#endif // DX_NON_SAVEFUNCTION + +// モデル描画関係 +extern DXLIBAPI int MV1DrawModel( int MHandle ) ; // モデルを描画する +extern DXLIBAPI int MV1DrawFrame( int MHandle, int FrameIndex ) ; // モデルの指定のフレームを描画する +extern DXLIBAPI int MV1DrawMesh( int MHandle, int MeshIndex ) ; // モデルの指定のメッシュを描画する +extern DXLIBAPI int MV1DrawTriangleList( int MHandle, int TriangleListIndex ) ; // モデルの指定のトライアングルリストを描画する +extern DXLIBAPI int MV1DrawModelDebug( int MHandle, unsigned int Color, int IsNormalLine, float NormalLineLength, int IsPolyLine, int IsCollisionBox ) ; // モデルのデバッグ描画 + +// 描画設定関係 +extern DXLIBAPI int MV1SetUseOrigShader( int UseFlag ) ; // モデルの描画に SetUseVertexShader, SetUsePixelShader で指定したシェーダーを使用するかどうかを設定する( TRUE:使用する FALSE:使用しない( デフォルト ) ) +extern DXLIBAPI int MV1SetSemiTransDrawMode( int DrawMode /* DX_SEMITRANSDRAWMODE_ALWAYS 等 */ ) ; // モデルの半透明要素がある部分についての描画モードを設定する + +// モデル基本制御関係 +extern DXLIBAPI MATRIX MV1GetLocalWorldMatrix( int MHandle ) ; // モデルのローカル座標からワールド座標に変換する行列を得る +extern DXLIBAPI MATRIX_D MV1GetLocalWorldMatrixD( int MHandle ) ; // モデルのローカル座標からワールド座標に変換する行列を得る +extern DXLIBAPI int MV1SetPosition( int MHandle, VECTOR Position ) ; // モデルの座標をセット +extern DXLIBAPI int MV1SetPositionD( int MHandle, VECTOR_D Position ) ; // モデルの座標をセット +extern DXLIBAPI VECTOR MV1GetPosition( int MHandle ) ; // モデルの座標を取得 +extern DXLIBAPI VECTOR_D MV1GetPositionD( int MHandle ) ; // モデルの座標を取得 +extern DXLIBAPI int MV1SetScale( int MHandle, VECTOR Scale ) ; // モデルの拡大値をセット +extern DXLIBAPI VECTOR MV1GetScale( int MHandle ) ; // モデルの拡大値を取得 +extern DXLIBAPI int MV1SetRotationXYZ( int MHandle, VECTOR Rotate ) ; // モデルの回転値をセット( X軸回転→Y軸回転→Z軸回転方式 ) +extern DXLIBAPI VECTOR MV1GetRotationXYZ( int MHandle ) ; // モデルの回転値を取得( X軸回転→Y軸回転→Z軸回転方式 ) +extern DXLIBAPI int MV1SetRotationZYAxis( int MHandle, VECTOR ZAxisDirection, VECTOR YAxisDirection, float ZAxisTwistRotate ) ; // モデルのZ軸とY軸の向きをセットする +extern DXLIBAPI int MV1SetRotationYUseDir( int MHandle, VECTOR Direction, float OffsetYAngle ) ; // モデルのY軸の回転値を指定のベクトルの向きを元に設定する、モデルはZ軸のマイナス方向を向いていることを想定するので、そうではない場合は OffsetYAngle で補正する、X軸回転、Z軸回転は0で固定 +extern DXLIBAPI int MV1SetRotationMatrix( int MHandle, MATRIX Matrix ) ; // モデルの回転用行列をセットする +extern DXLIBAPI MATRIX MV1GetRotationMatrix( int MHandle ) ; // モデルの回転用行列を取得する +extern DXLIBAPI int MV1SetMatrix( int MHandle, MATRIX Matrix ) ; // モデルの変形用行列をセットする +extern DXLIBAPI int MV1SetMatrixD( int MHandle, MATRIX_D Matrix ) ; // モデルの変形用行列をセットする +extern DXLIBAPI MATRIX MV1GetMatrix( int MHandle ) ; // モデルの変形用行列を取得する +extern DXLIBAPI MATRIX_D MV1GetMatrixD( int MHandle ) ; // モデルの変形用行列を取得する +extern DXLIBAPI int MV1SetVisible( int MHandle, int VisibleFlag ) ; // モデルの表示、非表示状態を変更する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetVisible( int MHandle ) ; // モデルの表示、非表示状態を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetMeshCategoryVisible( int MHandle, int MeshCategory, int VisibleFlag ) ; // モデルのメッシュの種類( DX_MV1_MESHCATEGORY_NORMAL など )毎の表示、非表示を設定する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetMeshCategoryVisible( int MHandle, int MeshCategory ) ; // モデルのメッシュの種類( DX_MV1_MESHCATEGORY_NORMAL など )毎の表示、非表示を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetDifColorScale( int MHandle, COLOR_F Scale ) ; // モデルのディフューズカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetDifColorScale( int MHandle ) ; // モデルのディフューズカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetSpcColorScale( int MHandle, COLOR_F Scale ) ; // モデルのスペキュラカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetSpcColorScale( int MHandle ) ; // モデルのスペキュラカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetEmiColorScale( int MHandle, COLOR_F Scale ) ; // モデルのエミッシブカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetEmiColorScale( int MHandle ) ; // モデルのエミッシブカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetAmbColorScale( int MHandle, COLOR_F Scale ) ; // モデルのアンビエントカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetAmbColorScale( int MHandle ) ; // モデルのアンビエントカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1GetSemiTransState( int MHandle ) ; // モデルに半透明要素があるかどうかを取得する( 戻り値 TRUE:ある FALSE:ない ) +extern DXLIBAPI int MV1SetOpacityRate( int MHandle, float Rate ) ; // モデルの不透明度を設定する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI float MV1GetOpacityRate( int MHandle ) ; // モデルの不透明度を取得する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI int MV1SetUseDrawMulAlphaColor( int MHandle, int Flag ) ; // モデルを描画する際にRGB値に対してA値を乗算するかどうかを設定する( 描画結果が乗算済みアルファ画像になります )( Flag TRUE:RGB値に対してA値を乗算する FALSE:乗算しない(デフォルト) ) +extern DXLIBAPI int MV1GetUseDrawMulAlphaColor( int MHandle ) ; // モデルを描画する際にRGB値に対してA値を乗算するかどうかを取得する( 描画結果が乗算済みアルファ画像になります )( 戻り値 TRUE:RGB値に対してA値を乗算する FALSE:乗算しない(デフォルト) ) +extern DXLIBAPI int MV1SetUseZBuffer( int MHandle, int Flag ) ; // モデルを描画する際にZバッファを使用するかどうかを設定する +extern DXLIBAPI int MV1SetWriteZBuffer( int MHandle, int Flag ) ; // モデルを描画する際にZバッファに書き込みを行うかどうかを設定する +extern DXLIBAPI int MV1SetZBufferCmpType( int MHandle, int CmpType /* DX_CMP_NEVER 等 */ ) ; // モデルの描画時のZ値の比較モードを設定する +extern DXLIBAPI int MV1SetZBias( int MHandle, int Bias ) ; // モデルの描画時の書き込むZ値のバイアスを設定する +extern DXLIBAPI int MV1SetUseVertDifColor( int MHandle, int UseFlag ) ; // モデルの含まれるメッシュの頂点ディフューズカラーをマテリアルのディフューズカラーの代わりに使用するかどうかを設定する( TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1SetUseVertSpcColor( int MHandle, int UseFlag ) ; // モデルに含まれるメッシュの頂点スペキュラカラーをマテリアルのスペキュラカラーの代わりに使用するかどうかを設定する( TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1SetSampleFilterMode( int MHandle, int FilterMode ) ; // モデルのテクスチャのサンプルフィルターモードを変更する( FilterMode は DX_DRAWMODE_NEAREST 等 ) +extern DXLIBAPI int MV1SetMaxAnisotropy( int MHandle, int MaxAnisotropy ) ; // モデルの異方性フィルタリングの最大次数を設定する +extern DXLIBAPI int MV1SetWireFrameDrawFlag( int MHandle, int Flag ) ; // モデルをワイヤーフレームで描画するかどうかを設定する +extern DXLIBAPI int MV1RefreshVertColorFromMaterial( int MHandle ) ; // モデルの頂点カラーを現在設定されているマテリアルのカラーにする +extern DXLIBAPI int MV1SetPhysicsWorldGravity( int MHandle, VECTOR Gravity ) ; // モデルの物理演算の重力を設定する +extern DXLIBAPI int MV1PhysicsCalculation( int MHandle, float MillisecondTime ) ; // モデルの物理演算を指定時間分経過したと仮定して計算する( MillisecondTime で指定する時間の単位はミリ秒 ) +extern DXLIBAPI int MV1PhysicsResetState( int MHandle ) ; // モデルの物理演算の状態をリセットする( 位置がワープしたとき用 ) +extern DXLIBAPI int MV1SetUseShapeFlag( int MHandle, int UseFlag ) ; // モデルのシェイプ機能を使用するかどうかを設定する( UseFlag TRUE:使用する( デフォルト ) FALSE:使用しない ) +extern DXLIBAPI int MV1GetMaterialNumberOrderFlag( int MHandle ) ; // モデルのマテリアル番号順にメッシュを描画するかどうかのフラグを取得する( TRUE:マテリアル番号順に描画 FALSE:不透明メッシュの後半透明メッシュ ) + +// アニメーション関係 +extern DXLIBAPI int MV1AttachAnim( int MHandle, int AnimIndex, int AnimSrcMHandle = -1 , int NameCheck = TRUE ) ; // アニメーションをアタッチする( 戻り値 -1:エラー 0以上:アタッチインデックス ) +extern DXLIBAPI int MV1DetachAnim( int MHandle, int AttachIndex ) ; // アニメーションをデタッチする +extern DXLIBAPI int MV1SetAttachAnimTime( int MHandle, int AttachIndex, float Time ) ; // アタッチしているアニメーションの再生時間を設定する +extern DXLIBAPI float MV1GetAttachAnimTime( int MHandle, int AttachIndex ) ; // アタッチしているアニメーションの再生時間を取得する +extern DXLIBAPI float MV1GetAttachAnimTotalTime( int MHandle, int AttachIndex ) ; // アタッチしているアニメーションの総時間を得る +extern DXLIBAPI int MV1SetAttachAnimBlendRate( int MHandle, int AttachIndex, float Rate = 1.0f ) ; // アタッチしているアニメーションのブレンド率を設定する +extern DXLIBAPI float MV1GetAttachAnimBlendRate( int MHandle, int AttachIndex ) ; // アタッチしているアニメーションのブレンド率を取得する +extern DXLIBAPI int MV1SetAttachAnimBlendRateToFrame( int MHandle, int AttachIndex, int FrameIndex, float Rate, int SetChild = TRUE ) ; // アタッチしているアニメーションのブレンド率を設定する( フレーム単位 ) +extern DXLIBAPI float MV1GetAttachAnimBlendRateToFrame( int MHandle, int AttachIndex, int FrameIndex ) ; // アタッチしているアニメーションのブレンド率を設定する( フレーム単位 ) +extern DXLIBAPI int MV1GetAttachAnim( int MHandle, int AttachIndex ) ; // アタッチしているアニメーションのアニメーションインデックスを取得する +extern DXLIBAPI int MV1SetAttachAnimUseShapeFlag( int MHandle, int AttachIndex, int UseFlag ) ; // アタッチしているアニメーションのシェイプを使用するかどうかを設定する( UseFlag TRUE:使用する( デフォルト ) FALSE:使用しない ) +extern DXLIBAPI int MV1GetAttachAnimUseShapeFlag( int MHandle, int AttachIndex ) ; // アタッチしているアニメーションのシェイプを使用するかどうかを取得する +extern DXLIBAPI VECTOR MV1GetAttachAnimFrameLocalPosition( int MHandle, int AttachIndex, int FrameIndex ) ; // アタッチしているアニメーションの指定のフレームの現在のローカル座標を取得する +extern DXLIBAPI MATRIX MV1GetAttachAnimFrameLocalMatrix( int MHandle, int AttachIndex, int FrameIndex ) ; // アタッチしているアニメーションの指定のフレームの現在のローカル変換行列を取得する + +extern DXLIBAPI int MV1GetAnimNum( int MHandle ) ; // アニメーションの数を取得する +extern DXLIBAPI const TCHAR *MV1GetAnimName( int MHandle, int AnimIndex ) ; // 指定番号のアニメーション名を取得する( NULL:エラー ) +extern DXLIBAPI int MV1SetAnimName( int MHandle, int AnimIndex, const TCHAR *AnimName ) ; // 指定番号のアニメーション名を変更する +extern DXLIBAPI int MV1SetAnimNameWithStrLen( int MHandle, int AnimIndex, const TCHAR *AnimName, size_t AnimNameLength ) ; // 指定番号のアニメーション名を変更する +extern DXLIBAPI int MV1GetAnimIndex( int MHandle, const TCHAR *AnimName ) ; // 指定名のアニメーション番号を取得する( -1:エラー ) +extern DXLIBAPI int MV1GetAnimIndexWithStrLen( int MHandle, const TCHAR *AnimName, size_t AnimNameLength ) ; // 指定名のアニメーション番号を取得する( -1:エラー ) +extern DXLIBAPI float MV1GetAnimTotalTime( int MHandle, int AnimIndex ) ; // 指定番号のアニメーションの総時間を得る +extern DXLIBAPI int MV1GetAnimTargetFrameNum( int MHandle, int AnimIndex ) ; // 指定のアニメーションがターゲットとするフレームの数を取得する +extern DXLIBAPI const TCHAR *MV1GetAnimTargetFrameName( int MHandle, int AnimIndex, int AnimFrameIndex ) ; // 指定のアニメーションがターゲットとするフレームの名前を取得する +extern DXLIBAPI int MV1GetAnimTargetFrame( int MHandle, int AnimIndex, int AnimFrameIndex ) ; // 指定のアニメーションがターゲットとするフレームの番号を取得する +extern DXLIBAPI int MV1GetAnimTargetFrameKeySetNum( int MHandle, int AnimIndex, int AnimFrameIndex ) ; // 指定のアニメーションがターゲットとするフレーム用のアニメーションキーセットの数を取得する +extern DXLIBAPI int MV1GetAnimTargetFrameKeySet( int MHandle, int AnimIndex, int AnimFrameIndex, int Index ) ; // 指定のアニメーションがターゲットとするフレーム用のアニメーションキーセットキーセットインデックスを取得する + +extern DXLIBAPI int MV1GetAnimKeySetNum( int MHandle ) ; // モデルに含まれるアニメーションキーセットの総数を得る +extern DXLIBAPI int MV1GetAnimKeySetType( int MHandle, int AnimKeySetIndex ) ; // 指定のアニメーションキーセットのタイプを取得する( MV1_ANIMKEY_TYPE_QUATERNION 等 ) +extern DXLIBAPI int MV1GetAnimKeySetDataType( int MHandle, int AnimKeySetIndex ) ; // 指定のアニメーションキーセットのデータタイプを取得する( MV1_ANIMKEY_DATATYPE_ROTATE 等 ) +extern DXLIBAPI int MV1GetAnimKeySetTimeType( int MHandle, int AnimKeySetIndex ) ; // 指定のアニメーションキーセットのキーの時間データタイプを取得する( MV1_ANIMKEY_TIME_TYPE_ONE 等 ) +extern DXLIBAPI int MV1GetAnimKeySetDataNum( int MHandle, int AnimKeySetIndex ) ; // 指定のアニメーションキーセットのキーの数を取得する +extern DXLIBAPI float MV1GetAnimKeyDataTime( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーの時間を取得する +extern DXLIBAPI int MV1GetAnimKeyDataIndexFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットの指定の時間でのキーの番号を取得する +extern DXLIBAPI FLOAT4 MV1GetAnimKeyDataToQuaternion( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_QUATERNION では無かった場合は失敗する +extern DXLIBAPI FLOAT4 MV1GetAnimKeyDataToQuaternionFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_QUATERNION では無かった場合は失敗する( 時間指定版 ) +extern DXLIBAPI VECTOR MV1GetAnimKeyDataToVector( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_VECTOR では無かった場合は失敗する +extern DXLIBAPI VECTOR MV1GetAnimKeyDataToVectorFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_VECTOR では無かった場合は失敗する( 時間指定版 ) +extern DXLIBAPI MATRIX MV1GetAnimKeyDataToMatrix( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_MATRIX4X4C か MV1_ANIMKEY_TYPE_MATRIX3X3 では無かった場合は失敗する +extern DXLIBAPI MATRIX MV1GetAnimKeyDataToMatrixFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_MATRIX4X4C か MV1_ANIMKEY_TYPE_MATRIX3X3 では無かった場合は失敗する( 時間指定版 ) +extern DXLIBAPI float MV1GetAnimKeyDataToFlat( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_FLAT では無かった場合は失敗する +extern DXLIBAPI float MV1GetAnimKeyDataToFlatFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_FLAT では無かった場合は失敗する( 時間指定版 ) +extern DXLIBAPI float MV1GetAnimKeyDataToLinear( int MHandle, int AnimKeySetIndex, int Index ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_LINEAR では無かった場合は失敗する +extern DXLIBAPI float MV1GetAnimKeyDataToLinearFromTime( int MHandle, int AnimKeySetIndex, float Time ) ; // 指定のアニメーションキーセットのキーを取得する、キータイプが MV1_ANIMKEY_TYPE_LINEAR では無かった場合は失敗する( 時間指定版 ) + +// マテリアル関係 +extern DXLIBAPI int MV1GetMaterialNum( int MHandle ) ; // モデルで使用しているマテリアルの数を取得する +extern DXLIBAPI const TCHAR *MV1GetMaterialName( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの名前を取得する +extern DXLIBAPI int MV1SetMaterialTypeAll( int MHandle, int Type ) ; // 全てのマテリアルのタイプを変更する( Type : DX_MATERIAL_TYPE_NORMAL など ) +extern DXLIBAPI int MV1SetMaterialType( int MHandle, int MaterialIndex, int Type ) ; // 指定のマテリアルのタイプを変更する( Type : DX_MATERIAL_TYPE_NORMAL など ) +extern DXLIBAPI int MV1GetMaterialType( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのタイプを取得する( 戻り値 : DX_MATERIAL_TYPE_NORMAL など ) +extern DXLIBAPI int MV1SetMaterialTypeParamAll( int MHandle, ... ) ; // 全てのマテリアルのタイプ別パラメータを変更する( マテリアルタイプ DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_TWO_COLOR などで使用 ) +extern DXLIBAPI int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, ... ) ; // 指定のマテリアルのタイプ別パラメータを変更する( マテリアルタイプ DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_TWO_COLOR などで使用 ) +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_UNORM の場合 */ float MinParam = 正規化の下限値( この値以下が 0.0f になる ), float MaxParam = 正規化の上限値( この値以上が 1.0f になる ) ) ; +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_CLIP_UNORM の場合 */ float MinParam = 正規化の下限値( この値以下が 0.0f になる ), float MaxParam = 正規化の上限値( この値以上が 1.0f になる ), float ClipParam = 閾値( この値未満が 0.0f になる ) ) ; +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_LUMINANCE_CMP_GREATEREQUAL の場合 */ float CmpParam = 比較値( この値以上の場合は 1.0f が、未満の場合は 0.0f が書き込まれる ) ) ; +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_POWER_UNORM の場合 */ float MinParam = 正規化の下限値( この値以下が 0.0f になる ), float MaxParam = 正規化の上限値( この値以上が 1.0f になる ) ) ; +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_POWER_CLIP_UNORM の場合 */ float MinParam = 正規化の下限値( この値以下が 0.0f になる ), float MaxParam = 正規化の上限値( この値以上が 1.0f になる ), float ClipParam = 閾値( この値未満が 0.0f になる ) ) ; +// int MV1SetMaterialTypeParam( int MHandle, int MaterialIndex, /* DX_MATERIAL_TYPE_MAT_SPEC_POWER_CMP_GREATEREQUAL の場合 */ float CmpParam = 比較値( この値以上の場合は 1.0f が、未満の場合は 0.0f が書き込まれる ) ) ; +extern DXLIBAPI int MV1SetMaterialDifColor( int MHandle, int MaterialIndex, COLOR_F Color ) ; // 指定のマテリアルのディフューズカラーを設定する +extern DXLIBAPI COLOR_F MV1GetMaterialDifColor( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのディフューズカラーを取得する +extern DXLIBAPI int MV1SetMaterialSpcColor( int MHandle, int MaterialIndex, COLOR_F Color ) ; // 指定のマテリアルのスペキュラカラーを設定する +extern DXLIBAPI COLOR_F MV1GetMaterialSpcColor( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのスペキュラカラーを取得する +extern DXLIBAPI int MV1SetMaterialEmiColor( int MHandle, int MaterialIndex, COLOR_F Color ) ; // 指定のマテリアルのエミッシブカラーを設定する +extern DXLIBAPI COLOR_F MV1GetMaterialEmiColor( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのエミッシブカラーを取得する +extern DXLIBAPI int MV1SetMaterialAmbColor( int MHandle, int MaterialIndex, COLOR_F Color ) ; // 指定のマテリアルのアンビエントカラーを設定する +extern DXLIBAPI COLOR_F MV1GetMaterialAmbColor( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのアンビエントカラーを取得する +extern DXLIBAPI int MV1SetMaterialSpcPower( int MHandle, int MaterialIndex, float Power ) ; // 指定のマテリアルのスペキュラの強さを設定する +extern DXLIBAPI float MV1GetMaterialSpcPower( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのスペキュラの強さを取得する +extern DXLIBAPI int MV1SetMaterialDifMapTexture( int MHandle, int MaterialIndex, int TexIndex ) ; // 指定のマテリアルでディフューズマップとして使用するテクスチャを指定する +extern DXLIBAPI int MV1GetMaterialDifMapTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルでディフューズマップとして使用されているテクスチャのインデックスを取得する +extern DXLIBAPI int MV1SetMaterialSpcMapTexture( int MHandle, int MaterialIndex, int TexIndex ) ; // 指定のマテリアルでスペキュラマップとして使用するテクスチャを指定する +extern DXLIBAPI int MV1GetMaterialSpcMapTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルでスペキュラマップとして使用されているテクスチャのインデックスを取得する +extern DXLIBAPI int MV1GetMaterialNormalMapTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルで法線マップとして使用されているテクスチャのインデックスを取得する +extern DXLIBAPI int MV1SetMaterialDifGradTexture( int MHandle, int MaterialIndex, int TexIndex ) ; // 指定のマテリアルでトゥーンレンダリングのディフューズグラデーションマップとして使用するテクスチャを設定する +extern DXLIBAPI int MV1GetMaterialDifGradTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルでトゥーンレンダリングのディフューズグラデーションマップとして使用するテクスチャを取得する +extern DXLIBAPI int MV1SetMaterialSpcGradTexture( int MHandle, int MaterialIndex, int TexIndex ) ; // 指定のマテリアルでトゥーンレンダリングのスペキュラグラデーションマップとして使用するテクスチャを設定する +extern DXLIBAPI int MV1GetMaterialSpcGradTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルでトゥーンレンダリングのスペキュラグラデーションマップとして使用するテクスチャを取得する +extern DXLIBAPI int MV1SetMaterialSphereMapTexture( int MHandle, int MaterialIndex, int TexIndex ) ; // 指定のマテリアルでトゥーンレンダリングのスフィアマップとして使用するテクスチャを設定する +extern DXLIBAPI int MV1GetMaterialSphereMapTexture( int MHandle, int MaterialIndex ) ; // 指定のマテリアルでトゥーンレンダリングのスフィアマップとして使用するテクスチャを取得する +extern DXLIBAPI int MV1SetMaterialDifGradBlendTypeAll( int MHandle, int BlendType ) ; // 全てのマテリアルのトゥーンレンダリングで使用するディフューズグラデーションマップとディフューズカラーの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialDifGradBlendType( int MHandle, int MaterialIndex, int BlendType ) ; // 指定のマテリアルのトゥーンレンダリングで使用するディフューズグラデーションマップとディフューズカラーの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1GetMaterialDifGradBlendType( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用するディフューズグラデーションマップとディフューズカラーの合成方法を取得する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialSpcGradBlendTypeAll( int MHandle, int BlendType ) ; // 全てのマテリアルのトゥーンレンダリングで使用するスペキュラグラデーションマップとスペキュラカラーの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialSpcGradBlendType( int MHandle, int MaterialIndex, int BlendType ) ; // 指定のマテリアルのトゥーンレンダリングで使用するスペキュラグラデーションマップとスペキュラカラーの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1GetMaterialSpcGradBlendType( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用するスペキュラグラデーションマップとスペキュラカラーの合成方法を取得する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialSphereMapBlendTypeAll( int MHandle, int BlendType ) ; // 全てのマテリアルのトゥーンレンダリングで使用するスフィアマップの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialSphereMapBlendType( int MHandle, int MaterialIndex, int BlendType ) ; // 指定のマテリアルのトゥーンレンダリングで使用するスフィアマップの合成方法を設定する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1GetMaterialSphereMapBlendType( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用するスフィアマップの合成方法を取得する( DX_MATERIAL_BLENDTYPE_ADDITIVE など ) +extern DXLIBAPI int MV1SetMaterialOutLineWidthAll( int MHandle, float Width ) ; // 全てのマテリアルのトゥーンレンダリングで使用する輪郭線の太さを設定する +extern DXLIBAPI int MV1SetMaterialOutLineWidth( int MHandle, int MaterialIndex, float Width ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線の太さを設定する +extern DXLIBAPI float MV1GetMaterialOutLineWidth( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線の太さを取得する +extern DXLIBAPI int MV1SetMaterialOutLineDotWidthAll( int MHandle, float Width ) ; // 全てのマテリアルのトゥーンレンダリングで使用する輪郭線のドット単位の太さを設定する +extern DXLIBAPI int MV1SetMaterialOutLineDotWidth( int MHandle, int MaterialIndex, float Width ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線のドット単位の太さを設定する +extern DXLIBAPI float MV1GetMaterialOutLineDotWidth( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線のドット単位の太さを取得する +extern DXLIBAPI int MV1SetMaterialOutLineColorAll( int MHandle, COLOR_F Color ) ; // 全てのマテリアルのトゥーンレンダリングで使用する輪郭線の色を設定する +extern DXLIBAPI int MV1SetMaterialOutLineColor( int MHandle, int MaterialIndex, COLOR_F Color ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線の色を設定する +extern DXLIBAPI COLOR_F MV1GetMaterialOutLineColor( int MHandle, int MaterialIndex ) ; // 指定のマテリアルのトゥーンレンダリングで使用する輪郭線の色を取得する +extern DXLIBAPI int MV1SetMaterialDrawBlendModeAll( int MHandle, int BlendMode ) ; // 全てのマテリアルの描画ブレンドモードを設定する( DX_BLENDMODE_ALPHA 等 ) +extern DXLIBAPI int MV1SetMaterialDrawBlendMode( int MHandle, int MaterialIndex, int BlendMode ) ; // 指定のマテリアルの描画ブレンドモードを設定する( DX_BLENDMODE_ALPHA 等 ) +extern DXLIBAPI int MV1GetMaterialDrawBlendMode( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの描画ブレンドモードを取得する( DX_BLENDMODE_ALPHA 等 ) +extern DXLIBAPI int MV1SetMaterialDrawBlendParamAll( int MHandle, int BlendParam ) ; // 全てのマテリアルの描画ブレンドパラメータを設定する +extern DXLIBAPI int MV1SetMaterialDrawBlendParam( int MHandle, int MaterialIndex, int BlendParam ) ; // 指定のマテリアルの描画ブレンドパラメータを設定する +extern DXLIBAPI int MV1GetMaterialDrawBlendParam( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの描画ブレンドパラメータを設定する +extern DXLIBAPI int MV1SetMaterialDrawAlphaTestAll( int MHandle, int Enable, int Mode, int Param ) ; // 全てのマテリアルの描画時のアルファテストの設定を行う( Enable:αテストを行うかどうか( TRUE:行う FALSE:行わない( デフォルト ) ) Mode:テストモード( DX_CMP_GREATER等 ) Param:描画アルファ値との比較に使用する値( 0~255 ) ) +extern DXLIBAPI int MV1SetMaterialDrawAlphaTest( int MHandle, int MaterialIndex, int Enable, int Mode, int Param ) ; // 指定のマテリアルの描画時のアルファテストの設定を行う( Enable:αテストを行うかどうか( TRUE:行う FALSE:行わない( デフォルト ) ) Mode:テストモード( DX_CMP_GREATER等 ) Param:描画アルファ値との比較に使用する値( 0~255 ) ) +extern DXLIBAPI int MV1GetMaterialDrawAlphaTestEnable( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの描画時のアルファテストを行うかどうかを取得する( 戻り値 TRUE:アルファテストを行う FALSE:アルファテストを行わない ) +extern DXLIBAPI int MV1GetMaterialDrawAlphaTestMode( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの描画時のアルファテストのテストモードを取得する( 戻り値 テストモード( DX_CMP_GREATER等 ) ) +extern DXLIBAPI int MV1GetMaterialDrawAlphaTestParam( int MHandle, int MaterialIndex ) ; // 指定のマテリアルの描画時のアルファテストの描画アルファ地との比較に使用する値( 0~255 )を取得する + +// テクスチャ関係 +extern DXLIBAPI int MV1GetTextureNum( int MHandle ) ; // テクスチャの数を取得 +extern DXLIBAPI const TCHAR *MV1GetTextureName( int MHandle, int TexIndex ) ; // テクスチャの名前を取得 +extern DXLIBAPI int MV1SetTextureColorFilePath( int MHandle, int TexIndex, const TCHAR *FilePath ) ; // カラーテクスチャのファイルパスを変更する +extern DXLIBAPI int MV1SetTextureColorFilePathWithStrLen( int MHandle, int TexIndex, const TCHAR *FilePath, size_t FilePathLength ) ; // カラーテクスチャのファイルパスを変更する +extern DXLIBAPI const TCHAR *MV1GetTextureColorFilePath( int MHandle, int TexIndex ) ; // カラーテクスチャのファイルパスを取得 +extern DXLIBAPI int MV1SetTextureAlphaFilePath( int MHandle, int TexIndex, const TCHAR *FilePath ) ; // アルファテクスチャのファイルパスを変更する +extern DXLIBAPI int MV1SetTextureAlphaFilePathWithStrLen( int MHandle, int TexIndex, const TCHAR *FilePath, size_t FilePathLength ) ; // アルファテクスチャのファイルパスを変更する +extern DXLIBAPI const TCHAR *MV1GetTextureAlphaFilePath( int MHandle, int TexIndex ) ; // アルファテクスチャのファイルパスを取得 +extern DXLIBAPI int MV1SetTextureGraphHandle( int MHandle, int TexIndex, int GrHandle, int SemiTransFlag ) ; // テクスチャで使用するグラフィックハンドルを変更する( GrHandle を -1 にすると解除 ) +extern DXLIBAPI int MV1GetTextureGraphHandle( int MHandle, int TexIndex ) ; // テクスチャのグラフィックハンドルを取得する +extern DXLIBAPI int MV1SetTextureAddressMode( int MHandle, int TexIndex, int AddrUMode, int AddrVMode ) ; // テクスチャのアドレスモードを設定する( AddUMode の値は DX_TEXADDRESS_WRAP 等 ) +extern DXLIBAPI int MV1GetTextureAddressModeU( int MHandle, int TexIndex ) ; // テクスチャのU値のアドレスモードを取得する( 戻り値:DX_TEXADDRESS_WRAP 等 ) +extern DXLIBAPI int MV1GetTextureAddressModeV( int MHandle, int TexIndex ) ; // テクスチャのV値のアドレスモードを取得する( 戻り値:DX_TEXADDRESS_WRAP 等 ) +extern DXLIBAPI int MV1GetTextureWidth( int MHandle, int TexIndex ) ; // テクスチャの幅を取得する +extern DXLIBAPI int MV1GetTextureHeight( int MHandle, int TexIndex ) ; // テクスチャの高さを取得する +extern DXLIBAPI int MV1GetTextureSemiTransState( int MHandle, int TexIndex ) ; // テクスチャに半透明要素があるかどうかを取得する( 戻り値 TRUE:ある FALSE:ない ) +extern DXLIBAPI int MV1SetTextureBumpImageFlag( int MHandle, int TexIndex, int Flag ) ; // テクスチャで使用している画像がバンプマップかどうかを設定する +extern DXLIBAPI int MV1GetTextureBumpImageFlag( int MHandle, int TexIndex ) ; // テクスチャがバンプマップかどうかを取得する( 戻り値 TRUE:バンプマップ FALSE:違う ) +extern DXLIBAPI int MV1SetTextureBumpImageNextPixelLength( int MHandle, int TexIndex, float Length ) ; // バンプマップ画像の場合の隣のピクセルとの距離を設定する +extern DXLIBAPI float MV1GetTextureBumpImageNextPixelLength( int MHandle, int TexIndex ) ; // バンプマップ画像の場合の隣のピクセルとの距離を取得する +extern DXLIBAPI int MV1SetTextureSampleFilterMode( int MHandle, int TexIndex, int FilterMode ) ; // テクスチャのフィルタリングモードを設定する +extern DXLIBAPI int MV1GetTextureSampleFilterMode( int MHandle, int TexIndex ) ; // テクスチャのフィルタリングモードを取得する( 戻り値 DX_DRAWMODE_BILINEAR等 ) +extern DXLIBAPI int MV1LoadTexture( const TCHAR *FilePath ) ; // 3Dモデルに貼り付けるのに向いた画像の読み込み方式で画像を読み込む( 戻り値 -1:エラー 0以上:グラフィックハンドル ) +extern DXLIBAPI int MV1LoadTextureWithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // 3Dモデルに貼り付けるのに向いた画像の読み込み方式で画像を読み込む( 戻り値 -1:エラー 0以上:グラフィックハンドル ) + +// フレーム関係 +extern DXLIBAPI int MV1GetFrameNum( int MHandle ) ; // フレームの数を取得する +extern DXLIBAPI int MV1SearchFrame( int MHandle, const TCHAR *FrameName ) ; // フレームの名前からモデル中のフレームのフレームインデックスを取得する( 無かった場合は戻り値が-1 ) +extern DXLIBAPI int MV1SearchFrameWithStrLen( int MHandle, const TCHAR *FrameName, size_t FrameNameLength ) ; // フレームの名前からモデル中のフレームのフレームインデックスを取得する( 無かった場合は戻り値が-1 ) +extern DXLIBAPI int MV1SearchFrameChild( int MHandle, int FrameIndex = -1 , const TCHAR *ChildName = NULL ) ; // フレームの名前から指定のフレームの子フレームのフレームインデックスを取得する( 名前指定版 )( FrameIndex を -1 にすると親を持たないフレームを ChildIndex で指定する )( 無かった場合は戻り値が-1 ) +extern DXLIBAPI int MV1SearchFrameChildWithStrLen( int MHandle, int FrameIndex = -1 , const TCHAR *ChildName = NULL , size_t ChildNameLength = 0 ) ; // フレームの名前から指定のフレームの子フレームのフレームインデックスを取得する( 名前指定版 )( FrameIndex を -1 にすると親を持たないフレームを ChildIndex で指定する )( 無かった場合は戻り値が-1 ) +extern DXLIBAPI const TCHAR *MV1GetFrameName( int MHandle, int FrameIndex ) ; // 指定のフレームの名前を取得する( エラーの場合は戻り値が NULL ) +extern DXLIBAPI int MV1GetFrameName2( int MHandle, int FrameIndex, TCHAR *StrBuffer ) ; // 指定のフレームの名前を取得する( 戻り値 -1:エラー -1以外:文字列のサイズ ) +extern DXLIBAPI int MV1GetFrameParent( int MHandle, int FrameIndex ) ; // 指定のフレームの親フレームのインデックスを得る( 親がいない場合は -2 が返る ) +extern DXLIBAPI int MV1GetFrameChildNum( int MHandle, int FrameIndex = -1 ) ; // 指定のフレームの子フレームの数を取得する( FrameIndex を -1 にすると親を持たないフレームの数が返ってくる ) +extern DXLIBAPI int MV1GetFrameChild( int MHandle, int FrameIndex = -1 , int ChildIndex = 0 ) ; // 指定のフレームの子フレームのフレームインデックスを取得する( 番号指定版 )( FrameIndex を -1 にすると親を持たないフレームを ChildIndex で指定する )( エラーの場合は戻り値が-1 ) +extern DXLIBAPI VECTOR MV1GetFramePosition( int MHandle, int FrameIndex ) ; // 指定のフレームの座標を取得する +extern DXLIBAPI VECTOR_D MV1GetFramePositionD( int MHandle, int FrameIndex ) ; // 指定のフレームの座標を取得する +extern DXLIBAPI MATRIX MV1GetFrameBaseLocalMatrix( int MHandle, int FrameIndex ) ; // 指定のフレームの初期状態での座標変換行列を取得する +extern DXLIBAPI MATRIX_D MV1GetFrameBaseLocalMatrixD( int MHandle, int FrameIndex ) ; // 指定のフレームの初期状態での座標変換行列を取得する +extern DXLIBAPI MATRIX MV1GetFrameLocalMatrix( int MHandle, int FrameIndex ) ; // 指定のフレームの座標変換行列を取得する +extern DXLIBAPI MATRIX_D MV1GetFrameLocalMatrixD( int MHandle, int FrameIndex ) ; // 指定のフレームの座標変換行列を取得する +extern DXLIBAPI MATRIX MV1GetFrameLocalWorldMatrix( int MHandle, int FrameIndex ) ; // 指定のフレームのローカル座標からワールド座標に変換する行列を得る +extern DXLIBAPI MATRIX_D MV1GetFrameLocalWorldMatrixD( int MHandle, int FrameIndex ) ; // 指定のフレームのローカル座標からワールド座標に変換する行列を得る +extern DXLIBAPI int MV1SetFrameUserLocalMatrix( int MHandle, int FrameIndex, MATRIX Matrix ) ; // 指定のフレームの座標変換行列( ローカル行列 )を設定する +extern DXLIBAPI int MV1SetFrameUserLocalMatrixD( int MHandle, int FrameIndex, MATRIX_D Matrix ) ; // 指定のフレームの座標変換行列( ローカル行列 )を設定する +extern DXLIBAPI int MV1ResetFrameUserLocalMatrix( int MHandle, int FrameIndex ) ; // 指定のフレームの座標変換行列( ローカル行列 )をデフォルトに戻す +extern DXLIBAPI int MV1SetFrameUserLocalWorldMatrix( int MHandle, int FrameIndex, MATRIX Matrix ) ; // 指定のフレームの座標変換行列( ローカル座標からワールド座標に変換する行列 )を設定する +extern DXLIBAPI int MV1SetFrameUserLocalWorldMatrixD( int MHandle, int FrameIndex, MATRIX_D Matrix ) ; // 指定のフレームの座標変換行列( ローカル座標からワールド座標に変換する行列 )を設定する +extern DXLIBAPI int MV1ResetFrameUserLocalWorldMatrix( int MHandle, int FrameIndex ) ; // 指定のフレームの座標変換行列( ローカル座標からワールド座標に変換する行列 )をデフォルトに戻す +extern DXLIBAPI VECTOR MV1GetFrameMaxVertexLocalPosition( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での最大値を得る +extern DXLIBAPI VECTOR_D MV1GetFrameMaxVertexLocalPositionD( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での最大値を得る +extern DXLIBAPI VECTOR MV1GetFrameMinVertexLocalPosition( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での最小値を得る +extern DXLIBAPI VECTOR_D MV1GetFrameMinVertexLocalPositionD( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での最小値を得る +extern DXLIBAPI VECTOR MV1GetFrameAvgVertexLocalPosition( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での平均値を得る +extern DXLIBAPI VECTOR_D MV1GetFrameAvgVertexLocalPositionD( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュ頂点のローカル座標での平均値を得る +extern DXLIBAPI int MV1GetFrameVertexNum( int MHandle, int FrameIndex ) ; // 指定のフレームに含まれる頂点の数を取得する +extern DXLIBAPI int MV1GetFrameTriangleNum( int MHandle, int FrameIndex ) ; // 指定のフレームに含まれるポリゴンの数を取得する +extern DXLIBAPI int MV1GetFrameMeshNum( int MHandle, int FrameIndex ) ; // 指定のフレームが持つメッシュの数を取得する +extern DXLIBAPI int MV1GetFrameMesh( int MHandle, int FrameIndex, int Index ) ; // 指定のフレームが持つメッシュのメッシュインデックスを取得する +extern DXLIBAPI int MV1SetFrameVisible( int MHandle, int FrameIndex, int VisibleFlag ) ; // 指定のフレームの表示、非表示状態を変更する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetFrameVisible( int MHandle, int FrameIndex ) ; // 指定のフレームの表示、非表示状態を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetFrameDifColorScale( int MHandle, int FrameIndex, COLOR_F Scale ) ; // 指定のフレームのディフューズカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetFrameSpcColorScale( int MHandle, int FrameIndex, COLOR_F Scale ) ; // 指定のフレームのスペキュラカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetFrameEmiColorScale( int MHandle, int FrameIndex, COLOR_F Scale ) ; // 指定のフレームのエミッシブカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetFrameAmbColorScale( int MHandle, int FrameIndex, COLOR_F Scale ) ; // 指定のフレームのアンビエントカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetFrameDifColorScale( int MHandle, int FrameIndex ) ; // 指定のフレームのディフューズカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetFrameSpcColorScale( int MHandle, int FrameIndex ) ; // 指定のフレームのスペキュラカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetFrameEmiColorScale( int MHandle, int FrameIndex ) ; // 指定のフレームのエミッシブカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetFrameAmbColorScale( int MHandle, int FrameIndex ) ; // 指定のフレームのアンビエントカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1GetFrameSemiTransState( int MHandle, int FrameIndex ) ; // 指定のフレームに半透明要素があるかどうかを取得する( 戻り値 TRUE:ある FALSE:ない ) +extern DXLIBAPI int MV1SetFrameOpacityRate( int MHandle, int FrameIndex, float Rate ) ; // 指定のフレームの不透明度を設定する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI float MV1GetFrameOpacityRate( int MHandle, int FrameIndex ) ; // 指定のフレームの不透明度を取得する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI int MV1SetFrameBaseVisible( int MHandle, int FrameIndex, int VisibleFlag ) ; // 指定のフレームの初期表示状態を設定する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetFrameBaseVisible( int MHandle, int FrameIndex ) ; // 指定のフレームの初期表示状態を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetFrameTextureAddressTransform( int MHandle, int FrameIndex, float TransU, float TransV, float ScaleU, float ScaleV, float RotCenterU, float RotCenterV, float Rotate ) ; // 指定のフレームのテクスチャ座標変換パラメータを設定する +extern DXLIBAPI int MV1SetFrameTextureAddressTransformMatrix( int MHandle, int FrameIndex, MATRIX Matrix ) ; // 指定のフレームのテクスチャ座標変換行列をセットする +extern DXLIBAPI int MV1ResetFrameTextureAddressTransform( int MHandle, int FrameIndex ) ; // 指定のフレームのテクスチャ座標変換パラメータをリセットする + +// メッシュ関係 +extern DXLIBAPI int MV1GetMeshNum( int MHandle ) ; // モデルに含まれるメッシュの数を取得する +extern DXLIBAPI int MV1GetMeshMaterial( int MHandle, int MeshIndex ) ; // 指定メッシュが使用しているマテリアルのインデックスを取得する +extern DXLIBAPI int MV1GetMeshVertexNum( int MHandle, int MeshIndex ) ; // 指定メッシュに含まれる頂点の数を取得する +extern DXLIBAPI int MV1GetMeshTriangleNum( int MHandle, int MeshIndex ) ; // 指定メッシュに含まれる三角形ポリゴンの数を取得する +extern DXLIBAPI int MV1SetMeshVisible( int MHandle, int MeshIndex, int VisibleFlag ) ; // 指定メッシュの表示、非表示状態を変更する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetMeshVisible( int MHandle, int MeshIndex ) ; // 指定メッシュの表示、非表示状態を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetMeshDifColorScale( int MHandle, int MeshIndex, COLOR_F Scale ) ; // 指定のメッシュのディフューズカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetMeshSpcColorScale( int MHandle, int MeshIndex, COLOR_F Scale ) ; // 指定のメッシュのスペキュラカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetMeshEmiColorScale( int MHandle, int MeshIndex, COLOR_F Scale ) ; // 指定のメッシュのエミッシブカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetMeshAmbColorScale( int MHandle, int MeshIndex, COLOR_F Scale ) ; // 指定のメッシュのアンビエントカラーのスケール値を設定する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetMeshDifColorScale( int MHandle, int MeshIndex ) ; // 指定のメッシュのディフューズカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetMeshSpcColorScale( int MHandle, int MeshIndex ) ; // 指定のメッシュのスペキュラカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetMeshEmiColorScale( int MHandle, int MeshIndex ) ; // 指定のメッシュのエミッシブカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI COLOR_F MV1GetMeshAmbColorScale( int MHandle, int MeshIndex ) ; // 指定のメッシュのアンビエントカラーのスケール値を取得する( デフォルト値は 1.0f ) +extern DXLIBAPI int MV1SetMeshOpacityRate( int MHandle, int MeshIndex, float Rate ) ; // 指定のメッシュの不透明度を設定する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI float MV1GetMeshOpacityRate( int MHandle, int MeshIndex ) ; // 指定のメッシュの不透明度を取得する( 不透明 1.0f ~ 透明 0.0f ) +extern DXLIBAPI int MV1SetMeshDrawBlendMode( int MHandle, int MeshIndex, int BlendMode ) ; // 指定のメッシュの描画ブレンドモードを設定する( DX_BLENDMODE_ALPHA 等 ) +extern DXLIBAPI int MV1SetMeshDrawBlendParam( int MHandle, int MeshIndex, int BlendParam ) ; // 指定のメッシュの描画ブレンドパラメータを設定する +extern DXLIBAPI int MV1GetMeshDrawBlendMode( int MHandle, int MeshIndex ) ; // 指定のメッシュの描画ブレンドモードを取得する( DX_BLENDMODE_ALPHA 等 ) +extern DXLIBAPI int MV1GetMeshDrawBlendParam( int MHandle, int MeshIndex ) ; // 指定のメッシュの描画ブレンドパラメータを設定する +extern DXLIBAPI int MV1SetMeshBaseVisible( int MHandle, int MeshIndex, int VisibleFlag ) ; // 指定のメッシュの初期表示状態を設定する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1GetMeshBaseVisible( int MHandle, int MeshIndex ) ; // 指定のメッシュの初期表示状態を取得する( TRUE:表示 FALSE:非表示 ) +extern DXLIBAPI int MV1SetMeshBackCulling( int MHandle, int MeshIndex, int CullingFlag ) ; // 指定のメッシュのバックカリングを行うかどうかを設定する( DX_CULLING_LEFT 等 ) +extern DXLIBAPI int MV1GetMeshBackCulling( int MHandle, int MeshIndex ) ; // 指定のメッシュのバックカリングを行うかどうかを取得する( DX_CULLING_LEFT 等 ) +extern DXLIBAPI VECTOR MV1GetMeshMaxPosition( int MHandle, int MeshIndex ) ; // 指定のメッシュに含まれるポリゴンの最大ローカル座標を取得する +extern DXLIBAPI VECTOR MV1GetMeshMinPosition( int MHandle, int MeshIndex ) ; // 指定のメッシュに含まれるポリゴンの最小ローカル座標を取得する +extern DXLIBAPI int MV1GetMeshTListNum( int MHandle, int MeshIndex ) ; // 指定のメッシュに含まれるトライアングルリストの数を取得する +extern DXLIBAPI int MV1GetMeshTList( int MHandle, int MeshIndex, int Index ) ; // 指定のメッシュに含まれるトライアングルリストのインデックスを取得する +extern DXLIBAPI int MV1GetMeshSemiTransState( int MHandle, int MeshIndex ) ; // 指定のメッシュに半透明要素があるかどうかを取得する( 戻り値 TRUE:ある FALSE:ない ) +extern DXLIBAPI int MV1SetMeshUseVertDifColor( int MHandle, int MeshIndex, int UseFlag ) ; // 指定のメッシュの頂点ディフューズカラーをマテリアルのディフューズカラーの代わりに使用するかどうかを設定する( TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1SetMeshUseVertSpcColor( int MHandle, int MeshIndex, int UseFlag ) ; // 指定のメッシュの頂点スペキュラカラーをマテリアルのスペキュラカラーの代わりに使用するかどうかを設定する( TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1GetMeshUseVertDifColor( int MHandle, int MeshIndex ) ; // 指定のメッシュの頂点ディフューズカラーをマテリアルのディフューズカラーの代わりに使用するかどうかの設定を取得する( 戻り値 TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1GetMeshUseVertSpcColor( int MHandle, int MeshIndex ) ; // 指定のメッシュの頂点スペキュラカラーをマテリアルのスペキュラカラーの代わりに使用するかどうかの設定を取得する( 戻り値 TRUE:マテリアルカラーの代わりに使用する FALSE:マテリアルカラーを使用する ) +extern DXLIBAPI int MV1GetMeshShapeFlag( int MHandle, int MeshIndex ) ; // 指定のメッシュがシェイプメッシュかどうかを取得する( 戻り値 TRUE:シェイプメッシュ FALSE:通常メッシュ ) + +// シェイプ関係 +extern DXLIBAPI int MV1GetShapeNum( int MHandle ) ; // モデルに含まれるシェイプの数を取得する +extern DXLIBAPI int MV1SearchShape( int MHandle, const TCHAR *ShapeName ) ; // シェイプの名前からモデル中のシェイプのシェイプインデックスを取得する( 無かった場合は戻り値が-1 ) +extern DXLIBAPI int MV1SearchShapeWithStrLen( int MHandle, const TCHAR *ShapeName, size_t ShapeNameLength ) ; // シェイプの名前からモデル中のシェイプのシェイプインデックスを取得する( 無かった場合は戻り値が-1 ) +extern DXLIBAPI const TCHAR *MV1GetShapeName( int MHandle, int ShapeIndex ) ; // 指定シェイプの名前を取得する +extern DXLIBAPI int MV1GetShapeTargetMeshNum( int MHandle, int ShapeIndex ) ; // 指定シェイプが対象としているメッシュの数を取得する +extern DXLIBAPI int MV1GetShapeTargetMesh( int MHandle, int ShapeIndex, int Index ) ; // 指定シェイプが対象としているメッシュのメッシュインデックスを取得する +extern DXLIBAPI int MV1SetShapeRate( int MHandle, int ShapeIndex, float Rate, int Type = DX_MV1_SHAPERATE_ADD ) ; // 指定シェイプの有効率を設定する( Rate 0.0f:0% ~ 1.0f:100% ) +extern DXLIBAPI float MV1GetShapeRate( int MHandle, int ShapeIndex ) ; // 指定シェイプの有効率を取得する( 戻り値 0.0f:0% ~ 1.0f:100% ) +extern DXLIBAPI float MV1GetShapeApplyRate( int MHandle, int ShapeIndex ) ; // 指定シェイプの有効率を取得する( 戻り値 0.0f:0% ~ 1.0f:100% )( MV1SetShapeRate で指定した値がそのまま戻り値となる MV1GetShapeRate と異なりアニメーションのシェイプ情報なども加味した値が戻り値となります ) + +// トライアングルリスト関係 +extern DXLIBAPI int MV1GetTriangleListNum( int MHandle ) ; // モデルに含まれるトライアングルリストの数を取得する +extern DXLIBAPI int MV1GetTriangleListVertexType( int MHandle, int TListIndex ) ; // 指定のトライアングルリストの頂点データタイプを取得する( DX_MV1_VERTEX_TYPE_1FRAME 等 ) +extern DXLIBAPI int MV1GetTriangleListPolygonNum( int MHandle, int TListIndex ) ; // 指定のトライアングルリストに含まれるポリゴンの数を取得する +extern DXLIBAPI int MV1GetTriangleListVertexNum( int MHandle, int TListIndex ) ; // 指定のトライアングルリストに含まれる頂点データの数を取得する +extern DXLIBAPI int MV1GetTriangleListLocalWorldMatrixNum( int MHandle, int TListIndex ) ; // 指定のトライアングルリストが使用する座標変換行列の数を取得する +extern DXLIBAPI MATRIX MV1GetTriangleListLocalWorldMatrix( int MHandle, int TListIndex, int LWMatrixIndex ) ; // 指定のトライアングルリストが使用する座標変換行列( ローカル→ワールド )を取得する +extern DXLIBAPI int MV1GetTriangleListPolygonVertexPosition( int MHandle, int TListIndex, int PolygonIndex, VECTOR *VertexPositionArray = NULL , float *MatrixWeightArray = NULL ) ; // 指定のトライアングルリストの指定のポリゴンが使用している頂点の座標を取得する( 戻り値 エラー:-1 0以上:ポリゴンが使用している頂点の数 ) +extern DXLIBAPI int MV1GetTriangleListUseMaterial( int MHandle, int TListIndex ) ; // 指定のトライアングルリストが使用しているマテリアルのインデックスを取得する + +// コリジョン関係 +extern DXLIBAPI int MV1SetupCollInfo( int MHandle, int FrameIndex = -1 , int XDivNum = 32 , int YDivNum = 8 , int ZDivNum = 32 , int MeshIndex = -1 ) ; // コリジョン情報を構築する +extern DXLIBAPI int MV1TerminateCollInfo( int MHandle, int FrameIndex = -1 , int MeshIndex = -1 ) ; // コリジョン情報の後始末 +extern DXLIBAPI int MV1RefreshCollInfo( int MHandle, int FrameIndex = -1 , int MeshIndex = -1 ) ; // コリジョン情報を更新する +extern DXLIBAPI MV1_COLL_RESULT_POLY MV1CollCheck_Line( int MHandle, int FrameIndex, VECTOR PosStart, VECTOR PosEnd , int MeshIndex = -1 ) ; // 線とモデルの当たり判定 +extern DXLIBAPI MV1_COLL_RESULT_POLY_DIM MV1CollCheck_LineDim( int MHandle, int FrameIndex, VECTOR PosStart, VECTOR PosEnd , int MeshIndex = -1 ) ; // 線とモデルの当たり判定( 戻り値が MV1_COLL_RESULT_POLY_DIM ) +extern DXLIBAPI MV1_COLL_RESULT_POLY_DIM MV1CollCheck_Sphere( int MHandle, int FrameIndex, VECTOR CenterPos, float r , int MeshIndex = -1 ) ; // 球とモデルの当たり判定 +extern DXLIBAPI MV1_COLL_RESULT_POLY_DIM MV1CollCheck_Capsule( int MHandle, int FrameIndex, VECTOR Pos1, VECTOR Pos2, float r , int MeshIndex = -1 ) ; // カプセルとモデルの当たり判定 +extern DXLIBAPI MV1_COLL_RESULT_POLY_DIM MV1CollCheck_Triangle( int MHandle, int FrameIndex, VECTOR Pos1, VECTOR Pos2, VECTOR Pos3 , int MeshIndex = -1 ) ; // 三角形とモデルの当たり判定 +extern DXLIBAPI MV1_COLL_RESULT_POLY MV1CollCheck_GetResultPoly( MV1_COLL_RESULT_POLY_DIM ResultPolyDim, int PolyNo ) ; // コリジョン結果ポリゴン配列から指定番号のポリゴン情報を取得する +extern DXLIBAPI int MV1CollResultPolyDimTerminate( MV1_COLL_RESULT_POLY_DIM ResultPolyDim ) ; // コリジョン結果ポリゴン配列の後始末をする + +// 参照用メッシュ関係 +extern DXLIBAPI int MV1SetupReferenceMesh( int MHandle, int FrameIndex, int IsTransform, int IsPositionOnly = FALSE , int MeshIndex = -1 ) ; // 参照用メッシュのセットアップ +extern DXLIBAPI int MV1TerminateReferenceMesh( int MHandle, int FrameIndex, int IsTransform, int IsPositionOnly = FALSE , int MeshIndex = -1 ) ; // 参照用メッシュの後始末 +extern DXLIBAPI int MV1RefreshReferenceMesh( int MHandle, int FrameIndex, int IsTransform, int IsPositionOnly = FALSE , int MeshIndex = -1 ) ; // 参照用メッシュの更新 +extern DXLIBAPI MV1_REF_POLYGONLIST MV1GetReferenceMesh( int MHandle, int FrameIndex, int IsTransform, int IsPositionOnly = FALSE , int MeshIndex = -1 ) ; // 参照用メッシュを取得する + +#endif // DX_NON_MODEL + + + + + + + + + + + + + + + + + + + + + + + + +// DxLive2DCubism4.cpp 関数 プロトタイプ宣言 + +#ifndef DX_NON_LIVE2D_CUBISM4 + +extern DXLIBAPI int Live2D_SetCubism4CoreDLLPath( const TCHAR *CoreDLLFilePath ) ; // Live2DCubismCore.dll のファイルパスを設定する +extern DXLIBAPI int Live2D_SetCubism4CoreDLLPathWithStrLen( const TCHAR *CoreDLLFilePath, size_t CoreDLLFilePathLength ) ; // Live2DCubismCore.dll のファイルパスを設定する +extern DXLIBAPI int Live2D_SetCubism3CoreDLLPath( const TCHAR *CoreDLLFilePath ) ; // Live2DCubismCore.dll のファイルパスを設定する +extern DXLIBAPI int Live2D_SetCubism3CoreDLLPathWithStrLen( const TCHAR *CoreDLLFilePath, size_t CoreDLLFilePathLength ) ; // Live2DCubismCore.dll のファイルパスを設定する + +extern DXLIBAPI int Live2D_RenderBegin( void ) ; // Live2D の描画処理を開始する +extern DXLIBAPI int Live2D_RenderEnd( void ) ; // Live2D の描画処理を終了する + +extern DXLIBAPI int Live2D_LoadModel( const TCHAR *FilePath ) ; // Live2D のモデルファイルを読み込む( 0以上:Live2Dモデルハンドル マイナス値:エラー発生 ) +extern DXLIBAPI int Live2D_LoadModelWithStrLen( const TCHAR *FilePath, size_t FilePathLength ) ; // Live2D のモデルファイルを読み込む( 0以上:Live2Dモデルハンドル マイナス値:エラー発生 ) +extern DXLIBAPI int Live2D_DeleteModel( int Live2DModelHandle ) ; // Live2D のモデルを削除する +extern DXLIBAPI int Live2D_InitModel( void ) ; // すべての Live2D のモデルを削除する + +extern DXLIBAPI int Live2D_Model_Update( int Live2DModelHandle, float DeltaTimeSeconds ) ; // Live2D のモデルの状態を更新する +extern DXLIBAPI int Live2D_Model_SetTranslate( int Live2DModelHandle, float x, float y ) ; // Live2D のモデルの位置を設定する +extern DXLIBAPI int Live2D_Model_SetExtendRate( int Live2DModelHandle, float ExRateX, float ExRateY ) ; // Live2D のモデルの拡大率を設定する +extern DXLIBAPI int Live2D_Model_SetRotate( int Live2DModelHandle, float RotAngle ) ; // Live2D のモデルの回転を設定する +extern DXLIBAPI int Live2D_Model_Draw( int Live2DModelHandle ) ; // Live2D のモデルを描画する + +extern DXLIBAPI int Live2D_Model_StartMotion( int Live2DModelHandle, const TCHAR *group, int no ) ; // Live2D のモデルの指定のモーションを再生する +extern DXLIBAPI int Live2D_Model_StartMotionWithStrLen( int Live2DModelHandle, const TCHAR *group, size_t groupLength, int no ) ; // Live2D のモデルの指定のモーションを再生する +extern DXLIBAPI int Live2D_Model_IsMotionFinished( int Live2DModelHandle ) ; // Live2D のモデルのモーション再生が終了しているかを取得する( 戻り値 TRUE:再生が終了している FALSE:再生中 ) +extern DXLIBAPI int Live2D_Model_SetExpression( int Live2DModelHandle, const TCHAR *expressionID ) ; // Live2D のモデルの指定の表情モーションを設定する +extern DXLIBAPI int Live2D_Model_SetExpressionWithStrLen( int Live2DModelHandle, const TCHAR *expressionID, size_t expressionIDLength ) ; // Live2D のモデルの指定の表情モーションを設定する +extern DXLIBAPI int Live2D_Model_HitTest( int Live2DModelHandle, const TCHAR *hitAreaName, float x, float y ) ; // 指定の座標が Live2D のモデルの指定の当たり判定の矩形範囲内か判定する( TRUE:矩形範囲内 FALSE:矩形範囲外 ) +extern DXLIBAPI int Live2D_Model_HitTestWithStrLen( int Live2DModelHandle, const TCHAR *hitAreaName, size_t hitAreaNameLength, float x, float y ) ; // 指定の座標が Live2D のモデルの指定の当たり判定の矩形範囲内か判定する( TRUE:矩形範囲内 FALSE:矩形範囲外 ) + +extern DXLIBAPI int Live2D_Model_GetParameterCount( int Live2DModelHandle ) ; // Live2D のモデルに設定されているパラメータの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetParameterId( int Live2DModelHandle, int index ) ; // Live2D のモデルに設定されているパラメータのIDを取得する +extern DXLIBAPI float Live2D_Model_GetParameterValue( int Live2DModelHandle, const TCHAR *parameterId ) ; // Live2D のモデルに設定されているパラメータを取得する +extern DXLIBAPI float Live2D_Model_GetParameterValueWithStrLen( int Live2DModelHandle, const TCHAR *parameterId, size_t parameterIdLength ) ; // Live2D のモデルに設定されているパラメータを取得する +extern DXLIBAPI int Live2D_Model_SetParameterValue( int Live2DModelHandle, const TCHAR *parameterId, float value ) ; // Live2D のモデルに設定されているパラメータを設定する +extern DXLIBAPI int Live2D_Model_SetParameterValueWithStrLen( int Live2DModelHandle, const TCHAR *parameterId, size_t parameterIdLength, float value ) ; // Live2D のモデルに設定されているパラメータを設定する + +extern DXLIBAPI int Live2D_Model_GetHitAreasCount( int Live2DModelHandle ) ; // Live2D のモデルに設定された当たり判定の数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetHitAreaName( int Live2DModelHandle, int index ) ; // Live2D のモデルの当たり判定に設定された名前を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetPhysicsFileName( int Live2DModelHandle ) ; // Live2D のモデルの物理演算設定ファイルの名前を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetPoseFileName( int Live2DModelHandle ) ; // Live2D のモデルのパーツ切り替え設定ファイルの名前を取得する +extern DXLIBAPI int Live2D_Model_GetExpressionCount( int Live2DModelHandle ) ; // Live2D のモデルの表情設定ファイルの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetExpressionName( int Live2DModelHandle, int index ) ; // Live2D のモデルの表情設定ファイルを識別する名前(別名)を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetExpressionFileName( int Live2DModelHandle, int index ) ; // Live2D のモデルの表情設定ファイルの名前を取得する +extern DXLIBAPI int Live2D_Model_GetMotionGroupCount( int Live2DModelHandle ) ; // Live2D のモデルのモーショングループの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetMotionGroupName( int Live2DModelHandle, int index ) ; // Live2D のモデルのモーショングループの名前を取得する +extern DXLIBAPI int Live2D_Model_GetMotionCount( int Live2DModelHandle, const TCHAR *groupName ) ; // Live2D のモデルのモーショングループに含まれるモーションの数を取得する +extern DXLIBAPI int Live2D_Model_GetMotionCountWithStrLen( int Live2DModelHandle, const TCHAR *groupName, size_t groupNameLength ) ; // Live2D のモデルのモーショングループに含まれるモーションの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetMotionFileName( int Live2DModelHandle, const TCHAR *groupName, int index ) ; // Live2D のモデルのグループ名とインデックス値からモーションファイルの名前を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetMotionFileNameWithStrLen( int Live2DModelHandle, const TCHAR *groupName, size_t groupNameLength, int index ) ; // Live2D のモデルのグループ名とインデックス値からモーションファイルの名前を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetMotionSoundFileName( int Live2DModelHandle, const TCHAR *groupName, int index ) ; // Live2D のモデルのモーションに対応するサウンドファイルの名前を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetMotionSoundFileNameWithStrLen( int Live2DModelHandle, const TCHAR *groupName, size_t groupNameLength, int index ) ; // Live2D のモデルのモーションに対応するサウンドファイルの名前を取得する +extern DXLIBAPI float Live2D_Model_GetMotionFadeInTimeValue( int Live2DModelHandle, const TCHAR *groupName, int index ) ; // Live2D のモデルのモーション開始時のフェードイン処理時間を取得する +extern DXLIBAPI float Live2D_Model_GetMotionFadeInTimeValueWithStrLen( int Live2DModelHandle, const TCHAR *groupName, size_t groupNameLength, int index ) ; // Live2D のモデルのモーション開始時のフェードイン処理時間を取得する +extern DXLIBAPI float Live2D_Model_GetMotionFadeOutTimeValue( int Live2DModelHandle, const TCHAR *groupName, int index ) ; // Live2D のモデルのモーション終了時のフェードアウト処理時間を取得する +extern DXLIBAPI float Live2D_Model_GetMotionFadeOutTimeValueWithStrLen( int Live2DModelHandle, const TCHAR *groupName, size_t groupNameLength, int index ) ; // Live2D のモデルのモーション終了時のフェードアウト処理時間を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetUserDataFile( int Live2DModelHandle ) ; // Live2D のモデルのユーザデータのファイル名を取得する +extern DXLIBAPI int Live2D_Model_GetEyeBlinkParameterCount( int Live2DModelHandle ) ; // Live2D のモデルの目パチに関連付けられたパラメータの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetEyeBlinkParameterId( int Live2DModelHandle, int index ) ; // Live2D のモデルの目パチに関連付けられたパラメータのIDを取得する +extern DXLIBAPI int Live2D_Model_GetLipSyncParameterCount( int Live2DModelHandle ) ; // Live2D のモデルのリップシンクに関連付けられたパラメータの数を取得する +extern DXLIBAPI const TCHAR *Live2D_Model_GetLipSyncParameterId( int Live2DModelHandle, int index ) ; // Live2D のモデルのリップシンクに関連付けられたパラメータのIDを取得する + +#endif // DX_NON_LIVE2D_CUBISM4 + + + + + + + + +#undef DX_FUNCTION_START +#define DX_FUNCTION_END +#undef DX_FUNCTION_END + +#ifndef DX_NON_NAMESPACE + +} + +#endif // DX_NON_NAMESPACE + +// ネームスペース DxLib を使用する ------------------------------------------------------ +#ifndef DX_NON_NAMESPACE +#ifndef DX_NON_USING_NAMESPACE_DXLIB + +using namespace DxLib ; + +#endif // DX_NON_USING_NAMESPACE_DXLIB +#endif // DX_NON_NAMESPACE + +// DXライブラリ内部でのみ使用するヘッダファイルのインクルード ------------------------- + +#ifdef DX_MAKE +// #include "DxStatic.h" +#endif + +#endif // DX_LIB_H + + diff --git a/templates/empty_rust/package.json b/templates/hello-dxlib/package.json similarity index 56% rename from templates/empty_rust/package.json rename to templates/hello-dxlib/package.json index 6c7a93462..3c53ee0ec 100644 --- a/templates/empty_rust/package.json +++ b/templates/hello-dxlib/package.json @@ -1,5 +1,5 @@ { - "name": "@wasm/empty_rust", + "name": "@wasm/hello_dxlib_cpp", "description": "", "version": "1.0.0", "scripts": { @@ -12,8 +12,8 @@ "typescript": "~2.7.2" }, "wasmStudio": { - "name": "Empty Rust Project", - "description": "# Empty Rust Project", - "icon": "rust-lang-file-icon" + "name": "Hello DxLib in C++", + "description": "# Hello DxLib in C++\n\nSimple DxLib Sample.\nLevel: *Advanced*\nTopics: DxLib", + "icon": "cpp-lang-file-icon" } } \ No newline at end of file diff --git a/templates/hello-dxlib/src/DxLib.wasm b/templates/hello-dxlib/src/DxLib.wasm new file mode 100644 index 000000000..0c00628d8 Binary files /dev/null and b/templates/hello-dxlib/src/DxLib.wasm differ diff --git a/templates/hello-dxlib/src/main.cpp b/templates/hello-dxlib/src/main.cpp new file mode 100644 index 000000000..0e5844f59 --- /dev/null +++ b/templates/hello-dxlib/src/main.cpp @@ -0,0 +1,74 @@ +/* + * File: Main + * Author: nokotan + * + * Created on 2020/01/30, 0:57 + * + * DxLibToHTML5雛形ファイル + */ + +#include "DxLib.h" + +#ifdef EMSCRIPTEN +# include +#endif + +EM_JS(int, canvas_width, (), { + return Module.canvas.width; +}); + +EM_JS(int, canvas_height, (), { + return Module.canvas.height; +}); + +static bool shouldExit = false; + +void mainLoop(void*) { + if (ProcessMessage() == -1) { + shouldExit = true; + } + + ClearDrawScreen(); + + { + int MouseX, MouseY; + int CircleColor = (GetMouseInput() & MOUSE_INPUT_LEFT) ? GetColor(255, 255, 0) : GetColor(255, 0, 0); + + GetMousePoint(&MouseX, &MouseY); + DrawCircle(MouseX, MouseY, 64, CircleColor); + } + + { + int StringColor = CheckHitKey(KEY_INPUT_SPACE) ? GetColor(0, 255, 0) : GetColor(255, 255, 255); + // DrawString(3, 3, "Hello DxLib on HTML5!", StringColor); + } + + ScreenFlip(); +} + +#ifdef _WIN32 +int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { +#else +int main () { +#endif + SetGraphMode(640, 480, 32); + + if (DxLib_Init() == -1) { + return -1; + } + + // ChangeFont("assets/07LogoTypeGothic7.ttf"); + SetDrawScreen(DX_SCREEN_BACK); + +#ifdef EMSCRIPTEN + emscripten_set_main_loop_arg(mainLoop, NULL, 0, 1); +#else + while (!shouldExit) { + mainLoop(); + } + + DxLib_End(); + #endif + + return 0; +} \ No newline at end of file diff --git a/templates/hello-dxlib/src/main.html b/templates/hello-dxlib/src/main.html new file mode 100644 index 000000000..bbdfbaf41 --- /dev/null +++ b/templates/hello-dxlib/src/main.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/hello-opensiv3d/README.md b/templates/hello-opensiv3d/README.md new file mode 100644 index 000000000..526e61a81 --- /dev/null +++ b/templates/hello-opensiv3d/README.md @@ -0,0 +1,16 @@ +# Hello OpenSiv3D in C++ + +Level: *Advanced* + +This project has simple OpenSiv3D code for WebGL app. This project owes to [emscripten compiler backend](https://github.com/nokotan/emscripten-compiler). + +### Project Overview + +* `main.cpp` - Imports `OpenSiv3D` and draws blue rectangle using `SDL_RenderFillRect`. +* `main.html` - For canvas to be rendered. + +### Things to Explore + +1. Click Build to compile `main.cpp` file to `src/main.wasm`. + +2. Click Run diff --git a/templates/hello-opensiv3d/build.ts b/templates/hello-opensiv3d/build.ts new file mode 100644 index 000000000..470c55d0e --- /dev/null +++ b/templates/hello-opensiv3d/build.ts @@ -0,0 +1,22 @@ +import * as gulp from "gulp"; +import { Service, project } from "@wasm/studio-utils"; + +gulp.task("build", async () => { + const data = await Service.compileFiles([ + project.getFile("src/main.cpp"), + ], "cpp", "wasm", "-Wall -std=c++17 -O2 -include-pch /include/OpenSiv3D/Siv3D.O2.pch -I/include/OpenSiv3D -I/include/OpenSiv3D/ThirdParty -s MAIN_MODULE=1 -s FORCE_FILESYSTEM=1 -s ALLOW_MEMORY_GROWTH=1 -s FULL_ES3=1 -s USE_GLFW=3"); + const outWasm = project.newFile("src/main.wasm", "wasm", true); + outWasm.setData(data["a.wasm"]); + const outJS = project.newFile("src/main.js", "javascript", true); + outJS.setData(data["wasm_bindgen.js"]); +}); + +gulp.task("default", ["build"], async () => {}); + +gulp.task("project:load", async () => { + logLn("Downloading Siv3D.wasm..."); + const siv3DWasmFile = project.newFile("src/Siv3D.wasm", "wasm", true); + const siv3DWasm = await (await fetch("https://siv3d-assets.kamenokosoft.com/lib/Siv3D.wasm")).arrayBuffer(); + siv3DWasmFile.setData(siv3DWasm); + logLn("Successfully Downloaded Siv3D.wasm"); +}); diff --git a/templates/empty_c/package.json b/templates/hello-opensiv3d/package.json similarity index 54% rename from templates/empty_c/package.json rename to templates/hello-opensiv3d/package.json index 2e5d0c62e..a687d4360 100644 --- a/templates/empty_c/package.json +++ b/templates/hello-opensiv3d/package.json @@ -1,5 +1,5 @@ { - "name": "@wasm/empty_c", + "name": "@wasm/hello_sdl2_cpp", "description": "", "version": "1.0.0", "scripts": { @@ -12,8 +12,8 @@ "typescript": "~2.7.2" }, "wasmStudio": { - "name": "Empty C Project", - "description": "# Empty C Project", - "icon": "c-lang-file-icon" + "name": "Hello OpenSiv3D in C++", + "description": "# Hello OpenSiv3D in C++\n\nSimple OpenSiv3D Sample.\nLevel: *Advanced*\nTopics: OpenSiv3D", + "icon": "cpp-lang-file-icon" } } \ No newline at end of file diff --git a/templates/hello-opensiv3d/src/Siv3D.js b/templates/hello-opensiv3d/src/Siv3D.js new file mode 100644 index 000000000..b7352e576 --- /dev/null +++ b/templates/hello-opensiv3d/src/Siv3D.js @@ -0,0 +1,202 @@ +var videoElements = []; +var activeTouches = []; + +var Module = { + glfwGetKeysSiv3D: function (windowid) { + const window = GLFW.WindowFromId(windowid); + if (!window) return 0; + if (!window.keysBuffer) { + window.keysBuffer = Module._malloc(349 /* GLFW_KEY_LAST + 1 */) + } + Module.HEAPU8.set(window.keys, window.keysBuffer); + return window.keysBuffer; + }, + + glfwGetMonitorInfo_Siv3D: function(handle, displayID, name, xpos, ypos, w, h, wx, wy, ww, wh) { + setValue(displayID, 1, 'i32'); + setValue(name, allocate(intArrayFromString("HTML5 WebGL Canvas"), 'i8', ALLOC_NORMAL), 'i32'); + setValue(xpos, 0, 'i32'); + setValue(ypos, 0, 'i32'); + setValue(w, 0, 'i32'); + setValue(h, 0, 'i32'); + setValue(wx, 0, 'i32'); + setValue(wy, 0, 'i32'); + setValue(ww, 0, 'i32'); + setValue(wh, 0, 'i32'); + }, + + glfwGetMonitorRect_Siv3D: function(handle, xpos, ypos, w, h) { + setValue(xpos, 0, 'i32'); + setValue(ypos, 0, 'i32'); + setValue(w, 0, 'i32'); + setValue(h, 0, 'i32'); + }, + + s3dOpenVideo: function(callback, callbackArg) { + const constraint = { + video: true, + audio: false + }; + + navigator.mediaDevices.getUserMedia(constraint).then( + stream => { + const video = document.createElement("video"); + + video.addEventListener('loadedmetadata', function() { + const idx = GL.getNewId(videoElements); + + video.removeEventListener('loadedmetadata', arguments.callee); + videoElements[idx] = video; + + if (callback) dynCall_vii(callback, callbackArg, idx); + }); + + video.srcObject = stream; + } + ).catch(_ => { + if (callback) dynCall_vii(callback, callbackArg, 0); + }) + }, + + s3dBindVideo: function(target, level, internalFormat, width, height, border, format, type, idx) { + const video = videoElements[idx]; + GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, video); + }, + + s3dPlayVideo: function(idx, callback, callbackArg) { + const video = videoElements[idx]; + video.play().then( + () => { + if (callback) dynCall_vii(callback, callbackArg, 1); + } + ); + }, + + s3dStopVideo: function(idx) { + const video = videoElements[idx]; + + let stream = video.srcObject; + let tracks = stream.getTracks(); + + tracks.forEach(function(track) { + track.stop(); + }); + }, + + s3dOnTouchMove: function(e) { + activeTouches = Array.from(e.touches); + }, + s3dRegisterTouchCallback: function() { + Module["canvas"].addEventListener("touchmove", Module['s3dOnTouchMove']); + }, + s3dUnregisterTouchCallback: function() { + Module["canvas"].removeEventListener("touchmove", Module['s3dOnTouchMove']); + }, + s3dGetPrimaryTouchPoint: function(pX, pY) { + if (activeTouches.length > 0) { + const touch = activeTouches[0]; + + const rect = Module["canvas"].getBoundingClientRect(); + const cw = Module["canvas"].width; + const ch = Module["canvas"].height; + + const scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); + const scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); + + let adjustedX = touch.pageX - (scrollX + rect.left); + let adjustedY = touch.pageY - (scrollY + rect.top); + + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + + setValue(pX, adjustedX, 'double'); + setValue(pY, adjustedY, 'double'); + return 1; + } else { + return 0; + } + }, + s3dCallIndirect: function(funcPtr, funcTypes, retPtr, argsPtr) { + let args = []; + let funcTypeIndex = funcTypes; + let argsPtrIndex = argsPtr; + + const retType = HEAPU8[funcTypeIndex++]; + + while (true) { + const funcType = HEAPU8[funcTypeIndex++]; + + if (funcType === 0) break; + + switch (funcType) { + case 105: // 'i': + args.push(HEAP32[argsPtrIndex >> 2]); + argsPtrIndex += 4; + break; + case 102: // 'f': + args.push(HEAPF32[argsPtrIndex >> 2]); + argsPtrIndex += 4; + break; + case 100: // 'd': + args.push(HEAPF64[argsPtrIndex >> 3]); + argsPtrIndex += 8; + break; + default: + err("Unrecognized Function Type"); + } + } + + const retValue = wasmTable.get(funcPtr).apply(null, args); + + switch (retType) { + case 105: // 'i': + HEAP32[retPtr >> 2] = retValue; + break; + case 102: // 'f': + HEAPF32[retPtr >> 2] = retValue; + break; + case 100: // 'd': + HEAPF64[retPtr >> 3] = retValue; + break; + case 118: // 'v': + break; + default: + err("Unrecognized Function Type"); + } + }, + s3dCallIndirectReturnInMemory: function(funcPtr, funcTypes, retPtr, argsPtr) { + let args = []; + let funcTypeIndex = funcTypes; + let argsPtrIndex = argsPtr; + + const retType = HEAPU8[funcTypeIndex++]; + const retValPtr = HEAP32[argsPtrIndex >> 2]; + argsPtrIndex += 4; + + while (true) { + const funcType = HEAPU8[funcTypeIndex++]; + + if (funcType === 0) break; + + switch (funcType) { + case 105: // 'i': + args.push(HEAP32[argsPtrIndex >> 2]); + argsPtrIndex += 4; + break; + case 102: // 'f': + args.push(HEAPF32[argsPtrIndex >> 2]); + argsPtrIndex += 4; + break; + case 100: // 'd': + args.push(HEAPF64[argsPtrIndex >> 3]); + argsPtrIndex += 8; + break; + default: + err("Unrecognized Function Type"); + } + } + + wasmTable.get(funcPtr).apply(null, args); + HEAP32[retPtr >> 2] = retValPtr; + } +} \ No newline at end of file diff --git a/templates/hello-opensiv3d/src/main.cpp b/templates/hello-opensiv3d/src/main.cpp new file mode 100644 index 000000000..583f09d75 --- /dev/null +++ b/templates/hello-opensiv3d/src/main.cpp @@ -0,0 +1,55 @@ +# include // OpenSiv3D v0.4.3 +# include + +void RunMainLoop(void* arg) +{ + static_cast*>(arg)->operator()(); +} + +void SetMainLoop(std::function mainLoop) +{ + emscripten_set_main_loop_arg(RunMainLoop, reinterpret_cast(&mainLoop), 0, 1); +} + +void Main() +{ + // 背景を水色にする + Scene::SetBackground(ColorF(0.8, 0.9, 1.0)); + + // 大きさ 60 のフォントを用意 + const Font font(60); + + // 猫のテクスチャを用意 + const Texture cat(Emoji(U"🐈")); + + // 猫の座標 + Vec2 catPos(640, 450); + + SetMainLoop([&]() + { + System::Update(); + + // テキストを画面の中心に描く + font(U"Hello, Siv3D!🐣").drawAt(Scene::Center(), Palette::Black); + + // 大きさをアニメーションさせて猫を表示する + cat.resized(100 + Periodic::Sine0_1(1s) * 20).drawAt(catPos); + + // マウスカーソルに追従する半透明の赤い円を描く + Circle(Cursor::Pos(), 40).draw(ColorF(1, 0, 0, 0.5)); + + // [A] キーが押されたら + if (KeyA.down()) + { + // Hello とデバッグ表示する + Print << U"Hello!"; + } + + // ボタンが押されたら + if (SimpleGUI::Button(U"Move the cat", Vec2(600, 20))) + { + // 猫の座標を画面内のランダムな位置に移動する + catPos = RandomVec2(Scene::Rect()); + } + }); +} \ No newline at end of file diff --git a/templates/hello-opensiv3d/src/main.data b/templates/hello-opensiv3d/src/main.data new file mode 100644 index 000000000..301c27c65 Binary files /dev/null and b/templates/hello-opensiv3d/src/main.data differ diff --git a/templates/hello-opensiv3d/src/main.data.js b/templates/hello-opensiv3d/src/main.data.js new file mode 100644 index 000000000..457834386 --- /dev/null +++ b/templates/hello-opensiv3d/src/main.data.js @@ -0,0 +1,151 @@ +// Auto-generated code by file_packager.py +var Module = typeof Module !== 'undefined' ? Module : {}; + +if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + Module.finishedDataFileDownloads = 0; +} +Module.expectedDataFileDownloads++; +(function() { + var loadPackage = function(metadata) { + + var PACKAGE_PATH; + if (typeof window === 'object') { + PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/'); + } else if (typeof location !== 'undefined') { + // worker + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/'); + } else { + throw 'using preloaded data can only be done on a web page or in a web worker'; + } + var PACKAGE_NAME = 'main.data'; + var REMOTE_PACKAGE_BASE = 'main.data'; + if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) { + Module['locateFile'] = Module['locateFilePackage']; + err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); + } + var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE; + + var REMOTE_PACKAGE_SIZE = metadata['remote_package_size']; + var PACKAGE_UUID = metadata['package_uuid']; + + function fetchRemotePackage(packageName, packageSize, callback, errback) { + fetch(packageName).then( + response => response.arrayBuffer() + ).then( + buffer => callback(buffer) + ).catch( + e => { throw new Error("NetworkError for: " + packageName + " " + e); } + ) + }; + + function handleError(error) { + console.error('package error:', error); + }; + + var fetchedCallback = null; + var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null; + } else { + fetched = data; + } + }, handleError); + + function runWithFS() { + + function assert(check, msg) { + if (!check) throw msg + new Error().stack; + } + Module['FS_createPath']('/', 'resources', true, true); + Module['FS_createPath']('/resources', 'engine', true, true); + Module['FS_createPath']('/resources/engine', 'emoji', true, true); + Module['FS_createPath']('/resources/engine', 'font', true, true); + Module['FS_createPath']('/resources/engine/font', 'fontawesome', true, true); + Module['FS_createPath']('/resources/engine/font', 'mplus', true, true); + Module['FS_createPath']('/resources/engine/font', 'noto', true, true); + Module['FS_createPath']('/resources/engine', 'lib', true, true); + Module['FS_createPath']('/resources/engine/lib', 'mpg123', true, true); + Module['FS_createPath']('/resources/engine', 'nlp', true, true); + Module['FS_createPath']('/resources/engine/nlp', 'japanese', true, true); + Module['FS_createPath']('/resources/engine/nlp/japanese', 'jumanpp', true, true); + Module['FS_createPath']('/resources/engine', 'objdetect', true, true); + Module['FS_createPath']('/resources/engine/objdetect', 'haarcascade', true, true); + Module['FS_createPath']('/resources/engine', 'shader', true, true); + Module['FS_createPath']('/resources/engine', 'soundfont', true, true); + Module['FS_createPath']('/resources/engine', 'texture', true, true); + Module['FS_createPath']('/resources/engine/texture', 'box-shadow', true, true); + + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; + this.audio = audio; + } + DataRequest.prototype = { + requests: {}, + open: function(mode, name) { + this.name = name; + this.requests[name] = this; + Module['addRunDependency']('fp ' + this.name); + }, + send: function() {}, + onload: function() { + var byteArray = this.byteArray.subarray(this.start, this.end); + this.finish(byteArray); + }, + finish: function(byteArray) { + var that = this; + + Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change + Module['removeRunDependency']('fp ' + that.name); + + this.requests[this.name] = null; + } + }; + + var files = metadata['files']; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i]['start'], files[i]['end'], files[i]['audio']).open('GET', files[i]['filename']); + } + + function processPackageData(arrayBuffer) { + Module.finishedDataFileDownloads++; + assert(arrayBuffer, 'Loading data file failed.'); + // FIXME: fetched .data file in WebAssembly Studio is not recognized as ArrayBuffer + // assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData'); + var byteArray = new Uint8Array(arrayBuffer); + + DataRequest.prototype.byteArray = byteArray; + + var files = metadata['files']; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload(); + } + Module['removeRunDependency']('datafile_main.data'); + }; + + Module['addRunDependency']('datafile_main.data'); + + if (!Module.preloadResults) Module.preloadResults = {}; + Module.preloadResults[PACKAGE_NAME] = {fromCache: false}; + if (fetched) { + processPackageData(fetched); + fetched = null; + } else { + fetchedCallback = processPackageData; + } + } + + if (Module['calledRun']) { + runWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it + } + } + loadPackage({"files": [{"start": 0, "audio": 0, "end": 26004, "filename": "/resources/engine/emoji/noto7_dictionary.dat"}, {"start": 26004, "audio": 0, "end": 27552, "filename": "/resources/engine/font/fontawesome/LICENSE.txt"}, {"start": 27552, "audio": 0, "end": 232053, "filename": "/resources/engine/font/fontawesome/fontawesome-brands.otf.zstdcmp"}, {"start": 232053, "audio": 0, "end": 443659, "filename": "/resources/engine/font/fontawesome/fontawesome-solid.otf.zstdcmp"}, {"start": 443659, "audio": 0, "end": 444006, "filename": "/resources/engine/font/mplus/LICENSE_E"}, {"start": 444006, "audio": 0, "end": 1305259, "filename": "/resources/engine/font/mplus/mplus-1p-black.ttf.zstdcmp"}, {"start": 1305259, "audio": 0, "end": 2222464, "filename": "/resources/engine/font/mplus/mplus-1p-bold.ttf.zstdcmp"}, {"start": 2222464, "audio": 0, "end": 3154493, "filename": "/resources/engine/font/mplus/mplus-1p-heavy.ttf.zstdcmp"}, {"start": 3154493, "audio": 0, "end": 4009845, "filename": "/resources/engine/font/mplus/mplus-1p-light.ttf.zstdcmp"}, {"start": 4009845, "audio": 0, "end": 4877617, "filename": "/resources/engine/font/mplus/mplus-1p-medium.ttf.zstdcmp"}, {"start": 4877617, "audio": 0, "end": 5746478, "filename": "/resources/engine/font/mplus/mplus-1p-regular.ttf.zstdcmp"}, {"start": 5746478, "audio": 0, "end": 6483831, "filename": "/resources/engine/font/mplus/mplus-1p-thin.ttf.zstdcmp"}, {"start": 6483831, "audio": 0, "end": 6488132, "filename": "/resources/engine/font/noto/LICENSE_OFL.txt"}, {"start": 6488132, "audio": 0, "end": 10800931, "filename": "/resources/engine/font/noto/NotoColorEmoji.ttf.zstdcmp"}, {"start": 10800931, "audio": 0, "end": 11084655, "filename": "/resources/engine/font/noto/NotoEmoji-Regular.ttf.zstdcmp"}, {"start": 11084655, "audio": 0, "end": 12485447, "filename": "/resources/engine/lib/mpg123/libmpg123.so.0.44.8"}, {"start": 12485447, "audio": 0, "end": 12486049, "filename": "/resources/engine/nlp/japanese/jumanpp/LICENSE"}, {"start": 12486049, "audio": 0, "end": 14403297, "filename": "/resources/engine/nlp/japanese/jumanpp/jumanpp_v2"}, {"start": 14403297, "audio": 0, "end": 14447220, "filename": "/resources/engine/objdetect/haarcascade/eye.xml.zstdcmp"}, {"start": 14447220, "audio": 0, "end": 14534178, "filename": "/resources/engine/objdetect/haarcascade/eye_eyeglasses.xml.zstdcmp"}, {"start": 14534178, "audio": 0, "end": 14586377, "filename": "/resources/engine/objdetect/haarcascade/face_anime.xml.zstdcmp"}, {"start": 14586377, "audio": 0, "end": 14636589, "filename": "/resources/engine/objdetect/haarcascade/frontal_catface.xml.zstdcmp"}, {"start": 14636589, "audio": 0, "end": 14707767, "filename": "/resources/engine/objdetect/haarcascade/frontal_face_alt2.xml.zstdcmp"}, {"start": 14707767, "audio": 0, "end": 14707997, "filename": "/resources/engine/shader/copy.frag"}, {"start": 14707997, "audio": 0, "end": 14708212, "filename": "/resources/engine/shader/fullscreen_triangle.frag"}, {"start": 14708212, "audio": 0, "end": 14708468, "filename": "/resources/engine/shader/fullscreen_triangle.vert"}, {"start": 14708468, "audio": 0, "end": 14709359, "filename": "/resources/engine/shader/gaussian_blur_9.frag"}, {"start": 14709359, "audio": 0, "end": 14709811, "filename": "/resources/engine/shader/round_dot.frag"}, {"start": 14709811, "audio": 0, "end": 14710566, "filename": "/resources/engine/shader/sdf.frag"}, {"start": 14710566, "audio": 0, "end": 14710851, "filename": "/resources/engine/shader/shape.frag"}, {"start": 14710851, "audio": 0, "end": 14711466, "filename": "/resources/engine/shader/sprite.vert"}, {"start": 14711466, "audio": 0, "end": 14711934, "filename": "/resources/engine/shader/square_dot.frag"}, {"start": 14711934, "audio": 0, "end": 14712315, "filename": "/resources/engine/shader/texture.frag"}, {"start": 14712315, "audio": 0, "end": 18583617, "filename": "/resources/engine/soundfont/GMGSx.sf2.zstdcmp"}, {"start": 18583617, "audio": 0, "end": 18586172, "filename": "/resources/engine/texture/box-shadow/128.png"}, {"start": 18586172, "audio": 0, "end": 18586435, "filename": "/resources/engine/texture/box-shadow/16.png"}, {"start": 18586435, "audio": 0, "end": 18592074, "filename": "/resources/engine/texture/box-shadow/256.png"}, {"start": 18592074, "audio": 0, "end": 18592691, "filename": "/resources/engine/texture/box-shadow/32.png"}, {"start": 18592691, "audio": 0, "end": 18594060, "filename": "/resources/engine/texture/box-shadow/64.png"}, {"start": 18594060, "audio": 0, "end": 18594200, "filename": "/resources/engine/texture/box-shadow/8.png"}], "remote_package_size": 18594200, "package_uuid": "de5dbe87-8a4f-4dad-ae11-e01cc721d082"}); +})(); + \ No newline at end of file diff --git a/templates/hello-opensiv3d/src/main.html b/templates/hello-opensiv3d/src/main.html new file mode 100644 index 000000000..d025772c5 --- /dev/null +++ b/templates/hello-opensiv3d/src/main.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/hello-sdl2/README.md b/templates/hello-sdl2/README.md new file mode 100644 index 000000000..f4c347267 --- /dev/null +++ b/templates/hello-sdl2/README.md @@ -0,0 +1,16 @@ +# Hello SDL2 in C++ + +Level: *Advanced* + +This project has simple SDL2 code for WebGL app. This project owes to [emscripten compiler backend](https://github.com/nokotan/emscripten-compiler). + +### Project Overview + +* `main.cpp` - Imports `SDL2/SDL.h` and draws blue rectangle using `SDL_RenderFillRect`. +* `main.html` - For canvas to be rendered. + +### Things to Explore + +1. Click Build to compile `main.cpp` file to `src/main.wasm`. + +2. Click Run diff --git a/templates/hello-sdl2/build.ts b/templates/hello-sdl2/build.ts new file mode 100644 index 000000000..0d06ed036 --- /dev/null +++ b/templates/hello-sdl2/build.ts @@ -0,0 +1,14 @@ +import * as gulp from "gulp"; +import { Service, project } from "@wasm/studio-utils"; + +gulp.task("build", async () => { + const data = await Service.compileFiles([ + project.getFile("src/main.cpp"), + ], "cpp", "wasm", "-Wall -O1 -s USE_SDL=2 -s ALLOW_MEMORY_GROWTH=1 -s FULL_ES2=1"); + const outWasm = project.newFile("src/main.wasm", "wasm", true); + outWasm.setData(data["a.wasm"]); + const outJS = project.newFile("src/main.js", "javascript", true); + outJS.setData(data["wasm_bindgen.js"]); +}); + +gulp.task("default", ["build"], async () => {}); diff --git a/templates/empty_wat/package.json b/templates/hello-sdl2/package.json similarity index 57% rename from templates/empty_wat/package.json rename to templates/hello-sdl2/package.json index 9ab3e20fb..bc54de34a 100644 --- a/templates/empty_wat/package.json +++ b/templates/hello-sdl2/package.json @@ -1,5 +1,5 @@ { - "name": "@wasm/empty_wat", + "name": "@wasm/hello_sdl2_cpp", "description": "", "version": "1.0.0", "scripts": { @@ -12,8 +12,8 @@ "typescript": "~2.7.2" }, "wasmStudio": { - "name": "Empty Wat Project", - "description": "# Empty Wat Project", - "icon": "wat-lang-file-icon" + "name": "Hello SDL2 in C++", + "description": "# Hello SDL2 in C++\n\nSimple SDL2 Sample.\nLevel: *Advanced*\nTopics: SDL2", + "icon": "cpp-lang-file-icon" } } \ No newline at end of file diff --git a/templates/hello-sdl2/src/main.cpp b/templates/hello-sdl2/src/main.cpp new file mode 100644 index 000000000..fa7d7ae42 --- /dev/null +++ b/templates/hello-sdl2/src/main.cpp @@ -0,0 +1,58 @@ +// Sample code from https://github.com/timhutton/sdl-canvas-wasm/blob/master/core.cpp + +#include +#include +#include + +struct context +{ + SDL_Renderer *renderer; + int iteration; +}; + +void mainloop(void *arg) +{ + context *ctx = static_cast(arg); + SDL_Renderer *renderer = ctx->renderer; + + // example: draw a moving rectangle + + // red background + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + SDL_RenderClear(renderer); + + // moving blue rectangle + SDL_Rect r; + r.x = ctx->iteration % 255; + r.y = 50; + r.w = 50; + r.h = 50; + SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255 ); + SDL_RenderFillRect(renderer, &r ); + + SDL_RenderPresent(renderer); + + ctx->iteration++; +} + +int main() +{ + SDL_Init(SDL_INIT_VIDEO); + SDL_Window *window; + SDL_Renderer *renderer; + SDL_CreateWindowAndRenderer(255, 255, 0, &window, &renderer); + + context ctx; + ctx.renderer = renderer; + ctx.iteration = 0; + + const int simulate_infinite_loop = 1; // call the function repeatedly + const int fps = 0; // call the function as fast as the browser wants to render (typically 60fps) + emscripten_set_main_loop_arg(mainloop, &ctx, fps, simulate_infinite_loop); + + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/templates/hello-sdl2/src/main.html b/templates/hello-sdl2/src/main.html new file mode 100644 index 000000000..30c5640c9 --- /dev/null +++ b/templates/hello-sdl2/src/main.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/hello_world_c/src/main.c b/templates/hello_world_c/src/main.c index 241126fc9..458782c0c 100644 --- a/templates/hello_world_c/src/main.c +++ b/templates/hello_world_c/src/main.c @@ -6,6 +6,7 @@ WASM_EXPORT int main(void) { printf("Hello World\n"); + return 42; } /* External function that is implemented in JavaScript. */ diff --git a/templates/hello_world_rust/README.md b/templates/hello_world_rust/README.md deleted file mode 100644 index 86c882bea..000000000 --- a/templates/hello_world_rust/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# "Hello, World!" Rust Project - -This is a sample Rust project which uses the [`wasm_bindgen` crate][crate] to -enable richer interactions between Rust and JS such as communicating with -strings rather than just numbers. - -Typically `wasm-bindgen` is paired with a bundler but here we're not using a -bundler so you can poke around all the raw output! - -Some files you may be interested in are: - -* `lib.rs` - this is the main body of Rust code, annotated with - `#[wasm_bindgen]` to have its functionality exported to JS. -* `main.js` - this is the application's supporting JS, automatically run by - `main.html`. Here you'll import items implemented in Rust through the - `wasmBindgen` global. - -When building the project you'll get `out/main_bg.wasm`, the generated wasm -filtered through the `wasm-bindgen` CLI tool, as well as `out/main.js` which is -an auxiliary JS file generated by the `wasm-bindgen` tool, included by default -in `main.html`. The `out/main.js` file is responsible for creating the -`wasmBindgen` global and filling it in. - -[crate]: https://github.com/rustwasm/wasm-bindgen diff --git a/templates/hello_world_rust/build.ts b/templates/hello_world_rust/build.ts deleted file mode 100644 index 7a8277ec3..000000000 --- a/templates/hello_world_rust/build.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as gulp from "gulp"; -import { Service, project } from "@wasm/studio-utils"; - -gulp.task("build", async () => { - // Optimize for small builds for now - const options = { lto: true, opt_level: 's', debug: true }; - const libSrc = project.getFile("src/lib.rs"); - const data = await Service.compileFileWithBindings(libSrc, "rust", "wasm", options); - - const outWasm = project.newFile("out/main_bg.wasm", "wasm", true); - outWasm.setData(data.wasm); - const outJs = project.newFile("out/main.js", "javascript", true); - outJs.setData(data.wasmBindgenJs); -}); - -gulp.task("default", ["build"], async () => {}); diff --git a/templates/hello_world_rust/package.json b/templates/hello_world_rust/package.json deleted file mode 100644 index d50a400a7..000000000 --- a/templates/hello_world_rust/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@wasm/hello_world_rust", - "description": "", - "version": "1.0.0", - "scripts": { - "build": "gulp --gulpfile ./build.ts" - }, - "devDependencies": { - "@wasm/studio-utils": "*", - "gulp": "~3.9.1", - "ts-node": "~5.0.0", - "typescript": "~2.7.2" - }, - "wasmStudio": { - "name": "Hello World Rust Project", - "description": "# Hello World Rust Project", - "icon": "rust-lang-file-icon" - } -} diff --git a/templates/hello_world_rust/src/lib.rs b/templates/hello_world_rust/src/lib.rs deleted file mode 100644 index fb92fe5da..000000000 --- a/templates/hello_world_rust/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Current prelude for using `wasm_bindgen`, and this'll get smaller over time! -#![feature(proc_macro, wasm_custom_section, wasm_import_module)] -extern crate wasm_bindgen; -use wasm_bindgen::prelude::*; - -// Here we're importing the `alert` function from the browser, using -// `#[wasm_bindgen]` to generate correct wrappers. -#[wasm_bindgen] -extern { - fn alert(s: &str); -} - -// Here we're exporting a function called `greet` which will display a greeting -// for `name` through a dialog. -#[wasm_bindgen] -pub fn greet(name: &str) { - alert(&format!("Hello, {}!", name)); -} diff --git a/templates/hello_world_rust/src/main.html b/templates/hello_world_rust/src/main.html deleted file mode 100644 index 135c1f671..000000000 --- a/templates/hello_world_rust/src/main.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/templates/hello_world_rust/src/main.js b/templates/hello_world_rust/src/main.js deleted file mode 100644 index e9506caa0..000000000 --- a/templates/hello_world_rust/src/main.js +++ /dev/null @@ -1,10 +0,0 @@ -const { greet } = wasm_bindgen; - -function runApp() { - greet('World'); -} - -// Load and instantiate the wasm file, and we specify the source of the wasm -// file here. Once the returned promise is resolved we're ready to go and -// use our imports. -wasm_bindgen('../out/main_bg.wasm').then(runApp).catch(console.error); diff --git a/test-shim.js b/test-shim.js index 511af4255..08f6867cb 100644 --- a/test-shim.js +++ b/test-shim.js @@ -91,3 +91,9 @@ global.monaco = { as: (args) => Promise.resolve(args) } } + +global.TextDecoder = function() { + this.decode = function (arg) { + return arg; + } +} diff --git a/tests/compilerServices/clangService.spec.ts b/tests/compilerServices/clangService.spec.ts index 887d86547..0c1d4fddf 100644 --- a/tests/compilerServices/clangService.spec.ts +++ b/tests/compilerServices/clangService.spec.ts @@ -13,7 +13,8 @@ jest.mock("../../src/compilerServices/utils", () => ({ decodeBinary: decodeBinary.mockImplementation((args) => args) })); -import { createCompilerService, Language } from "../../src/compilerServices"; +import { Language } from "../../src/compilerServices"; +import { ClangService } from "../../src/compilerServices/clangService"; describe("Tests for clangService", () => { afterAll(() => { @@ -28,7 +29,7 @@ describe("Tests for clangService", () => { tasks: [{ console }], message: "response-message" })); - const clangService = await createCompilerService(Language.C, Language.Wasm); + const clangService = new ClangService(Language.C); const input = { files: { "a.c": { content: "a" }}, options: "options"}; const output = await clangService.compile(input); expect(sendRequestJSON).toHaveBeenCalledWith({ @@ -46,7 +47,7 @@ describe("Tests for clangService", () => { }); it("should handle errors during compilation", async () => { sendRequestJSON.mockImplementation(() => ({ success: false, message: "error", tasks: [] })); - const clangService = await createCompilerService(Language.C, Language.Wasm); + const clangService = new ClangService(Language.C); const input = { files: { "a.c": { content: "a" }}, options: "options"}; const output = await clangService.compile(input); expect(decodeBinary).not.toHaveBeenCalled(); @@ -57,7 +58,7 @@ describe("Tests for clangService", () => { }); }); it("should throw an error when trying to compile more than one file", async () => { - const clangService = await createCompilerService(Language.C, Language.Wasm); + const clangService = new ClangService(Language.C); const input = { files: { "a.c": { content: "a" }, "b.c": { content: "b" }}}; await expect(clangService.compile(input)) .rejects diff --git a/tests/compilerServices/createCompilerService.spec.ts b/tests/compilerServices/createCompilerService.spec.ts index 7cbd69735..3e5eec2d8 100644 --- a/tests/compilerServices/createCompilerService.spec.ts +++ b/tests/compilerServices/createCompilerService.spec.ts @@ -5,19 +5,20 @@ import { createCompilerService, Language } from "../../src/compilerServices"; import { RustService } from "../../src/compilerServices/rustService"; import { ClangService } from "../../src/compilerServices/clangService"; import { X86Service } from "../../src/compilerServices/x86Service"; +import { EmscriptenService } from "../../src/compilerServices/emscriptenService"; describe("Tests for createCompilerService", () => { it("should be able to create a RustService (Rust -> Wasm)", async () => { const service = await createCompilerService(Language.Rust, Language.Wasm); expect(service).toBeInstanceOf(RustService); }); - it("should be able to create a ClangService (C -> Wasm)", async () => { + it("should be able to create a EmscriptenService (C -> Wasm)", async () => { const service = await createCompilerService(Language.C, Language.Wasm); - expect(service).toBeInstanceOf(ClangService); + expect(service).toBeInstanceOf(EmscriptenService); }); - it("should be able to create a ClangService (C++ -> Wasm)", async () => { + it("should be able to create a EmscriptenService (C++ -> Wasm)", async () => { const service = await createCompilerService(Language.Cpp, Language.Wasm); - expect(service).toBeInstanceOf(ClangService); + expect(service).toBeInstanceOf(EmscriptenService); }); it("should be able to create a X86Service (Wasm -> x86)", async () => { const service = await createCompilerService(Language.Wasm, Language.x86); diff --git a/tests/compilerServices/emscriptenService.spec.ts b/tests/compilerServices/emscriptenService.spec.ts new file mode 100644 index 000000000..dae0d1288 --- /dev/null +++ b/tests/compilerServices/emscriptenService.spec.ts @@ -0,0 +1,100 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const sendRequestJSON = jest.fn(); +const decodeBinary = jest.fn(); + +jest.mock("../../src/compilerServices/sendRequest", () => ({ + sendRequestJSON, + ServiceTypes: { Emscripten: 3 } +})); + +jest.mock("../../src/compilerServices/utils", () => ({ + decodeBinary: decodeBinary.mockImplementation((args) => args) +})); + +import { EmscriptenService } from "../../src/compilerServices/emscriptenService"; + +describe("Tests for emscriptenService", () => { + afterAll(() => { + jest.unmock("../../src/compilerServices/sendRequest"); + jest.unmock("../../src/compilerServices/utils"); + }); + it("should compile C/Cpp -> Wasm", async () => { + const console = { log: jest.fn() }; + sendRequestJSON.mockImplementation(() => ({ + success: true, + output: "wasm", + wasmBindgenJs: "bindgen", + tasks: [{ file: "a.c", console }], + message: "response-message" + })); + const emscriptenService = new EmscriptenService(); + const input = { files: { "a.c": { content: "a" }}, options: "options"}; + const output = await emscriptenService.compile(input); + expect(sendRequestJSON).toHaveBeenCalledWith({ + output: "wasm", + compress: true, + files: [{ type: "c", name: "a.c", options: "options", src: "a" }], + link_options: "options" + }, 3); + expect(decodeBinary).toHaveBeenCalledTimes(1); + expect(decodeBinary).toHaveBeenCalledWith("wasm"); + expect(output).toEqual({ + success: true, + items: { + "a.wasm": { content: "wasm" }, + "wasm_bindgen.js": { content: "bindgen" }, + "a.c": { fileRef: "a.c", console } + }, + console: "response-message" + }); + }); + it("should handle errors during compilation", async () => { + decodeBinary.mockClear(); + sendRequestJSON.mockImplementation(() => ({ success: false, message: "error", tasks: [] })); + const emscriptenService = new EmscriptenService(); + const input = { files: { "a.c": { content: "a" }}, options: "options"}; + const output = await emscriptenService.compile(input); + expect(decodeBinary).not.toHaveBeenCalled(); + expect(output).toEqual({ + success: false, + items: {}, + console: "error" + }); + }); + it("should compile C/Cpp -> Wasm when trying to compile more than one file", async () => { + decodeBinary.mockClear(); + sendRequestJSON.mockImplementation(() => ({ + success: true, + output: "wasm", + wasmBindgenJs: "bindgen", + tasks: [{ file: "a.c", console }, { file: "b.c", console }], + message: "response-message" + })); + const emscriptenService = new EmscriptenService(); + const input = { files: { "a.c": { content: "a" }, "b.c": { content: "b" }}, options: "options" }; + const output = await emscriptenService.compile(input); + expect(sendRequestJSON).toHaveBeenCalledWith({ + output: "wasm", + compress: true, + files: [ + { type: "c", name: "a.c", options: "options", src: "a" }, + { type: "c", name: "b.c", options: "options", src: "b" } + ], + link_options: "options" + }, 3); + expect(decodeBinary).toHaveBeenCalledTimes(1); + expect(decodeBinary).toHaveBeenCalledWith("wasm"); + expect(output).toEqual({ + success: true, + items: { + "a.wasm": { content: "wasm" }, + "wasm_bindgen.js": { content: "bindgen" }, + "a.c": { fileRef: "a.c", console }, + "b.c": { fileRef: "b.c", console }, + }, + console: "response-message" + }); + }); +}); diff --git a/tests/e2e/EmptyCProject.e2e.ts b/tests/e2e/HelloWorldCProject.e2e.ts similarity index 89% rename from tests/e2e/EmptyCProject.e2e.ts rename to tests/e2e/HelloWorldCProject.e2e.ts index 177beb04f..a1e24f66f 100644 --- a/tests/e2e/EmptyCProject.e2e.ts +++ b/tests/e2e/HelloWorldCProject.e2e.ts @@ -15,15 +15,16 @@ async function getRunResults() { }, "iframe"); } -describe("Empty C Project: Create, Build and Run", () => { +describe("Hello World in C: Create, Build and Run", () => { beforeAll(async () => { jest.setTimeout(30000); await page.goto("https://localhost:28443"); }); it("should initialy display the Create New Project dialog", async () => { - await expect(page).toMatch("Empty C Project"); + await expect(page).toMatch("Hello World in C"); }); - it("should create an Empty C Project when clicking the Create button", async () => { + it("should create an Hello World in C when clicking the Create button", async () => { + await page.click("div.list-item:nth-child(5)"); await page.click("div.button[title=\"Create\"]"); await page.waitForSelector("a.label-name"); await expect(getDirectoryStructure()).resolves.toEqual([ diff --git a/tests/utils/config.spec.ts b/tests/utils/config.spec.ts index b28785ae3..1cea4c8c2 100644 --- a/tests/utils/config.spec.ts +++ b/tests/utils/config.spec.ts @@ -18,11 +18,12 @@ describe("Tests for getConfig", () => { cargo: "//webassembly-studio-rust.herokuapp.com/cargo", clang: "//webassembly-studio-clang.herokuapp.com/build", rustc: "//webassembly-studio-rust.herokuapp.com/rustc", + emscripten: "//emscripten-compiler.herokuapp.com/build", sentryDNS: "https://756ae32005ed49cf9d4dd2aa106ccd4a@sentry.io/1229949", serviceUrl: "//wasmexplorer-service.herokuapp.com/service.php", templates: { - arc: "/dist/arc-templates/index.js", - default: "/dist/templates/index.js" + arc: "dist/arc-templates/index.js", + default: "dist/templates/index.js" } }); expect((global as any).fetch).toHaveBeenCalledWith("./config.json"); diff --git a/webpack.config.js b/webpack.config.js index 066e9d18b..9bae69eee 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -11,7 +11,7 @@ module.exports = env => { filename: "[name].bundle.js", chunkFilename: "[name].bundle.js", path: path.resolve(__dirname, "dist/"), - publicPath: "/dist/", + publicPath: "dist/", }, // Enable sourcemaps for debugging webpack's output.