OSDN Git Service

新しい説明の訳に差し替え
[sdl2referencejp/sdl2referencejp.git] / SDL_SetEventFilter.html
index 1e34040..18d801a 100644 (file)
 <tr><td>filter</td><td>\83C\83x\83\93\83g\94­\90\8e\9e\82É\8cÄ\82Î\82ê\82é\8aÖ\90\94 (\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ)</td></tr>\r
 <tr><td>userdata</td><td>filter\82Ö\93n\82³\82ê\82é\83|\83C\83\93\83^</td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<code>\r
+<pre>\r
+#include "SDL.h"\r
+\r
+\r
+// \82Ü\82¸\8cx\8d\90\82±\82ê\82Í\83o\83J\82°\82½\82â\82è\95û\82Å\82 \82é. \82µ\82©\82µ, \83C\83x\83\93\83g\83t\83B\83\8b\83^\82ª\r
+// \82Ç\82Ì\82æ\82¤\82É\93­\82­\82©\82ð\8e¦\82µ\82Ä\82¢\82é. \8eÀ\8dÛ\82Ì\8fê\8d\87\82Í, \83\81\83C\83\93\83\8b\81[\83v\82Å\r
+// SDL_PollEvent\82©\82ç\93¾\82½\83C\83x\83\93\83g\82ð\82½\82¾\8f\88\97\9d\82·\82ê\82Î\82æ\82¢. \88ê\94Ê\93I\82É, \83C\83x\r
+// \83\93\83g\83t\83B\83\8b\83^\82ð\8eg\82¨\82¤\82Æ\8ev\82Á\82½\82Æ\82«\82Í, \97§\82¿\8e~\82Ü\82è, \8c´\93_\82É\8bA\82Á\82Ä\82»\82ê\r
+// \82ª\82æ\82¢\95û\96@\82©\82æ\82­\8dl\82¦\82é\82×\82«\82Å\82 \82é.\r
+\r
+\r
+// \82±\82Ì\8aÖ\90\94\82ðSDL_SetEventFilter\82É\93n\82·. \83\86\81[\83U\82ª\83L\81[\83{\81[\83h\82Ì\83X\83y\81[\83X\r
+// \83o\81[\82ð\89\9f\82µ\82½\82Æ\82«, `userdata`\83|\83C\83\93\83^\82ª\8e¦\82·\92l\82ð\90Ø\82è\91Ö\82¦\82é. \82±\82ê\82Í\r
+// \90Â\90F\82ð\82 \82ç\82í\82µ\82Ä\82¢\82Ä, 255\82Æ0\82Ì\8aÔ\82Ì\92l\82Å\82 \82é. \83\81\83C\83\93\83v\83\8d\83O\83\89\83\80\82Í\83X\r
+// \83y\81[\83X\83o\81[\82ð\89\9f\82·\82½\82Ñ\82É\82±\82Ì\92l\82Ì\90F\82Å\83E\83B\83\93\83h\83E\82ð\83N\83\8a\83A\82·\82é.\r
+static int SDLCALL my_event_filter(void *userdata, SDL_Event * event)\r
+{\r
+    if ((event->type == SDL_KEYDOWN) && (event->key.keysym.sym == SDLK_SPACE)) {\r
+        Uint8 *blue = (Uint8 *) userdata;\r
+        if (*blue == 0) {\r
+            *blue = 255;\r
+        } else {\r
+            *blue = 0;\r
+        }\r
+    }\r
+    return 1;  // \83C\83x\83\93\83g\82ð\83L\83\85\81[\82É\92Ç\89Á\82·\82é\8fê\8d\87\82Í1\82ð\96ß\82·\r
+}\r
+\r
+int main(int argc, char **argv)\r
+{\r
+    Uint8 blue = 0;\r
+    int quit = 0;\r
+\r
+    // \92P\82É\83E\83B\83\93\83h\83E\82ð\90\90¬\82µ\82Ä\8d\95\90F\82Å\83N\83\8a\83A\82·\82é.\r
+    // \8eÀ\8dÛ\82Ì\8fê\8d\87\82Í\83G\83\89\81[\82ð\83`\83F\83b\83N\82·\82é\82±\82Æ!\r
+    SDL_Init(SDL_INIT_VIDEO);\r
+    SDL_Window *window = SDL_CreateWindow("Hello SDL", SDL_WINDOWPOS_UNDEFINED,\r
+                                          SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);\r
+    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC);\r
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);\r
+    SDL_RenderClear(renderer);\r
+    SDL_RenderPresent(renderer);\r
+\r
+    // \83C\83x\83\93\83g\83t\83B\83\8b\83^\82ð\90Ý\92è\82·\82é...\r
+    SDL_SetEventFilter(my_event_filter, &blue);\r
+\r
+    // \83C\83x\83\93\83g\83\8b\81[\83v\82ð\96³\8cÀ\82É\8eÀ\8ds\82·\82é. \91S\82Ä\82Ì\83C\83x\83\93\83g\82Í\82±\82±\82É\93\9e\92B\82·\82é\91O\82É\r
+    // my_event_filter\8aÖ\90\94\82ð\92Ê\89ß\82·\82é. \83t\83\8c\81[\83\80\82²\82Æ\82É\83E\83B\83\93\83h\83E\82ð`blue`\82É\90Ý\92è\82³\r
+    // \82ê\82½\90F\82Å\93h\82è\82Â\82Ô\82·. \82»\82Ì\92l\82Ì\83A\83h\83\8c\83X\82Íuserdata\82Å\83t\83B\83\8b\83^\8aÖ\90\94\82É\93n\82³\82ê,\r
+    // \82»\82±\82Å\95Ï\82¦\82ç\82ê\82é.\r
+    while (!quit) {\r
+        SDL_Event e;\r
+        while (SDL_PollEvent(&e)) {\r
+            if (e.type == SDL_QUIT) {\r
+                quit = 1;\r
+            }\r
+        }\r
+\r
+        SDL_SetRenderDrawColor(renderer, 0, 0, blue, 255);\r
+        SDL_RenderClear(renderer);\r
+        SDL_RenderPresent(renderer);\r
+    }\r
+\r
+    SDL_Quit();\r
+    return 0;\r
+}\r
+</pre>\r
+</code>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 filter\82Ì\8aÖ\90\94\83v\83\8d\83g\83^\83C\83v\82Í\r
@@ -42,12 +112,17 @@ filter
 \82±\82ê\82É\82æ\82è\8eó\90M\82µ\82½\83C\83x\83\93\83g\82ð\93®\93I\82É\83t\83B\83\8b\83^\82Å\91I\91ð\82Å\82«\82é.\r
 </p>\r
 <p>\r
-<em>\92\8d\88Ó:</em> \95Ê\83X\83\8c\83b\83h\82Å\93®\8dì\82·\82é\8fê\8d\87\83C\83x\83\93\83g\83t\83B\83\8b\83^\8aÖ\90\94\82Å\8ds\82¤\82±\82Æ\82É\82Í\8d×\90S\82Ì\92\8d\88Ó\82ð\95¥\82¤\82±\82Æ!\r
+<em>\92\8d\88Ó:</em> \95Ê\83X\83\8c\83b\83h\82Å\8eg\97p\82·\82é\8fê\8d\87\83C\83x\83\93\83g\83t\83B\83\8b\83^\8aÖ\90\94\82Å\8ds\82¤\82±\82Æ\82É\82Í\8d×\90S\82Ì\92\8d\88Ó\82ð\95¥\82¤\82±\82Æ!\r
 </p>\r
 <p>\r
 \8a\84\82è\8d\9e\82Ý(\97á\82¦\82ÎCTRL-C)\82Å\94­\90\82µ\82½\8fI\97¹\83C\83x\83\93\83g\82Í, \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82Í\8e\9f\82Ì\83C\83x\83\93\83g\83|\81[\83\8a\83\93\83O\82Å\93Í\82¯\82ç\82ê\82é.\r
 </p>\r
 <p>\r
+<a href="SDL_QuitEvent.html">SDL_QuitEvent</a>\83C\83x\83\93\83g\82ð\88µ\82¤\8fê\8d\87\92\8d\88Ó\82·\82×\82«\82±\82Æ\82ª\82 \82é.\r
+\82±\82Ì\8fê\8d\87\83C\83x\83\93\83g\83t\83B\83\8b\83^\82Í\83E\83B\83\93\83h\83E\83}\83l\81[\83W\83\83\82ª\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83E\83B\83\93\83h\83E\82ð\95Â\82\82æ\82¤\82Æ\82µ\82½\82Æ\82«\82Ì\82Ý\8cÄ\82Î\82ê\82é.\r
+\82à\82µ\83C\83x\83\93\83g\83t\83B\83\8b\83^\82ª1\82ð\96ß\82·\82Æ\83E\83B\83\93\83h\83E\82Í\95Â\82\82é. \82»\82ê\88È\8aO\82ð\96ß\82·\82Æ\89Â\94\\82È\82ç\82Î\8aJ\82¢\82½\82Ü\82Ü\82É\82·\82é.\r
+</p>\r
+<p>\r
 \83\81\83\82\96³\8cø\89»\82³\82ê\82½\83C\83x\83\93\83g\82Í\83C\83x\83\93\83g\83t\83B\83\8b\83^\8aÖ\90\94\82É\82Í\93Í\82©\82È\82¢. <a href="SDL_EventState.html">SDL_EventState()</a>\82ð\8eQ\8fÆ\82·\82é\82±\82Æ.\r
 </p>\r
 <p>\r
@@ -57,6 +132,8 @@ filter
 \83\81\83\82\83R\81[\83\8b\83o\83b\83N\82Í\83\86\81[\83U\82Ì<a href="SDL_PushEvent.html">SDL_PushEvent()</a>\82Å\94­\90\82³\82¹\82½\83C\83x\83\93\83g\82Å\82à\8cÄ\82Î\82ê\82é.\r
 \82µ\82©\82µ, <a href="SDL_PeepEvents.html">SDL_PeepEvents()</a>\82Å\94­\90\82µ\82½\83C\83x\83\93\83g\82Ì\8fê\8d\87\82Í\8cÄ\82Î\82ê\82È\82¢.\r
 </p>\r
+<h2>\83o\81[\83W\83\87\83\93</h2>\r
+SDL 2.0.0\88È\8d~\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_AddEventWatch.html">SDL_AddEventWatch</a><br>\r
 <a href="SDL_EventState.html">SDL_EventState</a><br>\r