Mercurial > hg > orthanc-stone
comparison Samples/Sdl/SdlHelpers.h @ 1382:9d138883be66
Proper command-line parameter management for SDL sample
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 22 Apr 2020 19:55:34 +0200 |
parents | |
children | dfb48f0794b1 |
comparison
equal
deleted
inserted
replaced
1381:f4a06ad1580b | 1382:9d138883be66 |
---|---|
1 #pragma once | |
2 | |
3 #include <map> | |
4 #include <string> | |
5 | |
6 namespace OrthancStoneHelpers | |
7 { | |
8 inline OrthancStone::KeyboardModifiers GetKeyboardModifiers(const uint8_t* keyboardState, | |
9 const int scancodeCount) | |
10 { | |
11 using namespace OrthancStone; | |
12 int result = KeyboardModifiers_None; | |
13 | |
14 if (keyboardState != NULL) | |
15 { | |
16 if (SDL_SCANCODE_LSHIFT < scancodeCount && | |
17 keyboardState[SDL_SCANCODE_LSHIFT]) | |
18 { | |
19 result |= KeyboardModifiers_Shift; | |
20 } | |
21 | |
22 if (SDL_SCANCODE_RSHIFT < scancodeCount && | |
23 keyboardState[SDL_SCANCODE_RSHIFT]) | |
24 { | |
25 result |= KeyboardModifiers_Shift; | |
26 } | |
27 | |
28 if (SDL_SCANCODE_LCTRL < scancodeCount && | |
29 keyboardState[SDL_SCANCODE_LCTRL]) | |
30 { | |
31 result |= KeyboardModifiers_Control; | |
32 } | |
33 | |
34 if (SDL_SCANCODE_RCTRL < scancodeCount && | |
35 keyboardState[SDL_SCANCODE_RCTRL]) | |
36 { | |
37 result |= KeyboardModifiers_Control; | |
38 } | |
39 | |
40 if (SDL_SCANCODE_LALT < scancodeCount && | |
41 keyboardState[SDL_SCANCODE_LALT]) | |
42 { | |
43 result |= KeyboardModifiers_Alt; | |
44 } | |
45 | |
46 if (SDL_SCANCODE_RALT < scancodeCount && | |
47 keyboardState[SDL_SCANCODE_RALT]) | |
48 { | |
49 result |= KeyboardModifiers_Alt; | |
50 } | |
51 } | |
52 | |
53 return static_cast<KeyboardModifiers>(result); | |
54 } | |
55 | |
56 | |
57 inline void GetPointerEvent(OrthancStone::PointerEvent& p, | |
58 const OrthancStone::ICompositor& compositor, | |
59 SDL_Event event, | |
60 const uint8_t* keyboardState, | |
61 const int scancodeCount) | |
62 { | |
63 using namespace OrthancStone; | |
64 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); | |
65 | |
66 switch (event.button.button) | |
67 { | |
68 case SDL_BUTTON_LEFT: | |
69 p.SetMouseButton(OrthancStone::MouseButton_Left); | |
70 break; | |
71 | |
72 case SDL_BUTTON_RIGHT: | |
73 p.SetMouseButton(OrthancStone::MouseButton_Right); | |
74 break; | |
75 | |
76 case SDL_BUTTON_MIDDLE: | |
77 p.SetMouseButton(OrthancStone::MouseButton_Middle); | |
78 break; | |
79 | |
80 default: | |
81 p.SetMouseButton(OrthancStone::MouseButton_None); | |
82 break; | |
83 } | |
84 | |
85 p.AddPosition(compositor.GetPixelCenterCoordinates(event.button.x, event.button.y)); | |
86 p.SetAltModifier(modifiers & KeyboardModifiers_Alt); | |
87 p.SetControlModifier(modifiers & KeyboardModifiers_Control); | |
88 p.SetShiftModifier(modifiers & KeyboardModifiers_Shift); | |
89 } | |
90 | |
91 //inline void ParseCommonCommandLineArguments() | |
92 //{ | |
93 | |
94 // po::options_description description("Usage:"); | |
95 | |
96 // description.add_options() | |
97 // ("trace", "Enable TRACE logging mode (default: false)") | |
98 // ("info", "Enable INFO logging mode (default: false)") | |
99 // ("orthanc", po::value<string>()->default_value("http://localhost:8042"), "Base URL of the Orthanc instance") | |
100 | |
101 // po::variables_map vm; | |
102 // po::store(po::command_line_parser(argc, argv).options(description).run(), vm); | |
103 // po::notify(vm); | |
104 | |
105 // if (vm.count("help")) | |
106 // { | |
107 | |
108 // } | |
109 | |
110 // if (vm.count("compression")) | |
111 // { | |
112 // cout << "Compression level " << vm["compression"].as<int>() << endl; | |
113 // } | |
114 | |
115 // return 0; | |
116 | |
117 //} | |
118 | |
119 //inline void DeclareOptionAndDefault(boost::program_options::options_description& options, | |
120 // const std::string& flag, const std::string& defaultValue, | |
121 // std::string help = "") | |
122 //{ | |
123 // description.add_options() | |
124 // (flag, po::value<string>()->default_value(defaultValue), help); | |
125 //} | |
126 | |
127 //inline void ProcessOptions | |
128 | |
129 } | |
130 |