瀏覽代碼

Deleted junk

Dalton Nell 9 年之前
父節點
當前提交
a4a45a823e
共有 2 個文件被更改,包括 0 次插入319 次删除
  1. 0
    276
      options.cpp
  2. 0
    43
      options.hpp

+ 0
- 276
options.cpp 查看文件

@@ -1,276 +0,0 @@
1
-#include "options.hpp"
2
-
3
-slop::Options* options = new slop::Options();
4
-
5
-slop::Options::Options() {
6
-    m_version = "v2.1.4";
7
-    m_highlight = false;
8
-    m_borderSize = 5;
9
-    m_padding = 0;
10
-    m_xdisplay = ":0";
11
-    m_tolerance = 2;
12
-    m_red = 0.5;
13
-    m_green = 0.5;
14
-    m_blue = 0.5;
15
-    m_alpha = 1;
16
-    m_gracetime = 0.4;
17
-    m_keyboard = true;
18
-    m_decorations = true;
19
-    m_minimumsize = 0;
20
-    m_maxsize = 0;
21
-}
22
-
23
-void slop::Options::printHelp() {
24
-    printf( "Usage: slop [options]\n" );
25
-    printf( "Print user selected region to stdout. Pressing keys or right-clicking cancels selection.\n" );
26
-    printf( "\n" );
27
-    printf( "Options\n" );
28
-    printf( "    -h, --help                     Show this message.\n" );
29
-    printf( "    -nkb, --nokeyboard             Disables the ability to cancel selections with the keyboard.\n" );
30
-    printf( "    -b=INT, --bordersize=INT       Set selection rectangle border size.\n" );
31
-    printf( "    -p=INT, --padding=INT          Set padding size for selection.\n" );
32
-    printf( "    -t=INT, --tolerance=INT        How far in pixels the mouse can move after clicking and still be detected\n" );
33
-    printf( "                                   as a normal click. Setting to zero will disable window selections.\n" );
34
-    printf( "    -x=STRING, --xdisplay=STRING   Set x display (STRING must be hostname:number.screen_number format)\n" );
35
-    printf( "    -c=COLOR, --color=COLOR        Set selection rectangle color, COLOR is in format FLOAT,FLOAT,FLOAT,FLOAT.\n" );
36
-    printf( "                                   takes RGBA or RGB.\n" );
37
-    printf( "    -g=FLOAT, --gracetime=FLOAT    Set the amount of time before slop will check for keyboard cancellations\n" );
38
-    printf( "                                   in seconds.\n" );
39
-    printf( "    -nd, --nodecorations           Attempts to remove decorations from window selections.\n" );
40
-    printf( "    -min=INT, --minimumsize=INT    Sets the minimum output of width or height values, useful to avoid outputting 0\n" );
41
-    printf( "                                   widths or heights.\n" );
42
-    printf( "    -max=INT, --maximumsize=INT    Sets the maximum output of width or height values.\n" );
43
-    printf( "    -hi, --highlight               Instead of outlining the selection, slop highlights it. Only useful when\n" );
44
-    printf( "                                   used with a --color with an alpha under 1.\n" );
45
-    printf( "    -v, --version                  prints version.\n" );
46
-    printf( "\n" );
47
-    printf( "Examples\n" );
48
-    printf( "    $ # Gray, thick, transparent border for maximum visiblity.\n" );
49
-    printf( "    $ slop -b=20 -c=0.5,0.5,0.5,0.8\n" );
50
-    printf( "\n" );
51
-    printf( "    $ # Remove window decorations.\n" );
52
-    printf( "    $ slop -nd\n" );
53
-    printf( "\n" );
54
-    printf( "    $ # Disable window selections. Useful for selecting individual pixels.\n" );
55
-    printf( "    $ slop -t=0\n" );
56
-    printf( "\n" );
57
-    printf( "    $ # Classic Windows XP selection.\n" );
58
-    printf( "    $ slop -hi -c=0.3,0.4,0.6,0.4\n" );
59
-}
60
-
61
-int slop::Options::parseOptions( int argc, char** argv ) {
62
-    // Simple command parsing. Just uses sscanf to read each argument.
63
-    // It looks complicated because you have to have spaces for delimiters for sscanf.
64
-    for ( int i=0; i<argc; i++ ) {
65
-        std::string arg = argv[i];
66
-        if ( matches( arg, "-b=", "--bordersize=" ) ) {
67
-            int err = parseInt( arg, &m_borderSize );
68
-            if ( err ) {
69
-                return 1;
70
-            }
71
-            if ( m_borderSize < 0 ) {
72
-                m_borderSize = 0;
73
-            }
74
-        } else if ( matches( arg, "-min=", "--minimumsize=" ) ) {
75
-            int err = parseInt( arg, &m_minimumsize );
76
-            if ( err ) {
77
-                return 1;
78
-            }
79
-        } else if ( matches( arg, "-max=", "--maximumsize=" ) ) {
80
-            int err = parseInt( arg, &m_maximumsize );
81
-            if ( err ) {
82
-                return 1;
83
-            }
84
-        } else if ( matches( arg, "-p=", "--padding=" ) ) {
85
-            int err = parseInt( arg, &m_padding );
86
-            if ( err ) {
87
-                return 1;
88
-            }
89
-        } else if ( matches( arg, "-c=", "--color=" ) ) {
90
-            int err = parseColor( arg, &m_red, &m_green, &m_blue, &m_alpha );
91
-            if ( err ) {
92
-                return 1;
93
-            }
94
-        } else if ( matches( arg, "-t=", "--tolerance=" ) ) {
95
-            int err = parseInt( arg, &m_tolerance );
96
-            if ( err ) {
97
-                return 1;
98
-            }
99
-            if ( m_tolerance < 0 ) {
100
-                m_tolerance = 0;
101
-            }
102
-        } else if ( matches( arg, "-g=", "--gracetime=" ) ) {
103
-            int err = parseFloat( arg, &m_gracetime );
104
-            if ( err ) {
105
-                return 1;
106
-            }
107
-            if ( m_gracetime < 0 ) {
108
-                m_gracetime = 0;
109
-            }
110
-        } else if ( matches( arg, "-x=", "--xdisplay=" ) ) {
111
-            int err = parseString( arg, &m_xdisplay );
112
-            if ( err ) {
113
-                return 1;
114
-            }
115
-        } else if ( matches( arg, "-nkb", "--nokeyboard" ) ) {
116
-            m_keyboard = false;
117
-        } else if ( matches( arg, "-nd", "--nodecorations" ) ) {
118
-            m_decorations = false;
119
-        } else if ( matches( arg, "-hi", "--highlight" ) ) {
120
-            m_highlight = true;
121
-        } else if ( matches( arg, "-h", "--help" ) ) {
122
-            printHelp();
123
-            return 2;
124
-        } else if ( matches( arg, "-v", "--version" ) ) {
125
-            printf( "slop %s\n", m_version.c_str() );
126
-            return 2;
127
-        } else {
128
-            if ( i == 0 ) {
129
-                continue;
130
-            }
131
-            fprintf( stderr, "Error: Unknown argument %s\n", argv[i] );
132
-            fprintf( stderr, "Try -h or --help for help.\n" );
133
-            return 1;
134
-        }
135
-    }
136
-    if ( m_minimumsize > m_maximumsize && m_maximumsize > 0 ) {
137
-        fprintf( stderr, "Error: minimumsize is greater than maximumsize.\n" );
138
-        return 1;
139
-    }
140
-    return 0;
141
-}
142
-
143
-int slop::Options::parseInt( std::string arg, int* returnInt ) {
144
-    std::string copy = arg;
145
-    int find = copy.find( "=" );
146
-    if ( find != copy.npos ) {
147
-        copy.at( find ) = ' ';
148
-    }
149
-    // Just in case we error out, grab the actual argument name into x.
150
-    char* x = new char[ arg.size() ];
151
-    int num = sscanf( copy.c_str(), "%s %i", x, returnInt );
152
-    if ( num != 2 ) {
153
-        fprintf( stderr, "Error parsing command arguments near %s\n", arg.c_str() );
154
-        fprintf( stderr, "Usage: %s=INT\n", x );
155
-        fprintf( stderr, "Example: %s=10 or %s=-12\n", x, x );
156
-        fprintf( stderr, "Try -h or --help for help.\n" );
157
-        delete[] x;
158
-        return 1;
159
-    }
160
-    delete[] x;
161
-    return 0;
162
-}
163
-
164
-int slop::Options::parseFloat( std::string arg, float* returnFloat ) {
165
-    std::string copy = arg;
166
-    int find = copy.find( "=" );
167
-    if ( find != copy.npos ) {
168
-        copy.at( find ) = ' ';
169
-    }
170
-    // Just in case we error out, grab the actual argument name into x.
171
-    char* x = new char[ arg.size() ];
172
-    int num = sscanf( copy.c_str(), "%s %f", x, returnFloat );
173
-    if ( num != 2 ) {
174
-        fprintf( stderr, "Error parsing command arguments near %s\n", arg.c_str() );
175
-        fprintf( stderr, "Usage: %s=FLOAT\n", x );
176
-        fprintf( stderr, "Example: %s=3.14 or %s=-99\n", x, x );
177
-        fprintf( stderr, "Try -h or --help for help.\n" );
178
-        delete[] x;
179
-        return 1;
180
-    }
181
-    delete[] x;
182
-    return 0;
183
-}
184
-
185
-bool slop::Options::matches( std::string arg, std::string shorthand, std::string longhand ) {
186
-    if ( arg.substr( 0, shorthand.size() ) == shorthand ) {
187
-        if ( arg == shorthand || shorthand[shorthand.length()-1] == '=' ) {
188
-            return true;
189
-        }
190
-    }
191
-    if ( longhand.size() && arg.substr( 0, longhand.size() ) == longhand ) {
192
-        if ( arg == longhand || longhand[longhand.length()-1] == '=' ) {
193
-            return true;
194
-        }
195
-    }
196
-    return false;
197
-}
198
-
199
-int slop::Options::parseString( std::string arg, std::string* returnString ) {
200
-    std::string copy = arg;
201
-    int find = copy.find( "=" );
202
-    if ( find != copy.npos ) {
203
-        copy.at( find ) = ' ';
204
-    }
205
-    // Just in case we error out, grab the actual argument name into x.
206
-    char* x = new char[ arg.size() ];
207
-    char* y = new char[ arg.size() ];
208
-    int num = sscanf( copy.c_str(), "%s %s", x, y );
209
-    if ( num != 2 ) {
210
-        fprintf( stderr, "Error parsing command arguments near %s\n", arg.c_str() );
211
-        fprintf( stderr, "Usage: %s=STRING\n", x );
212
-        fprintf( stderr, "Example: %s=:0 or %s=hostname:0.1\n", x, x );
213
-        fprintf( stderr, "Try -h or --help for help.\n" );
214
-        delete[] x;
215
-        delete[] y;
216
-        return 1;
217
-    }
218
-    *returnString = y;
219
-    delete[] x;
220
-    delete[] y;
221
-    return 0;
222
-}
223
-
224
-int slop::Options::parseColor( std::string arg, float* r, float* g, float* b, float* a ) {
225
-    std::string copy = arg;
226
-    int find = copy.find( "=" );
227
-    while( find != copy.npos ) {
228
-        copy.at( find ) = ' ';
229
-        find = copy.find( "," );
230
-    }
231
-
232
-    // Just in case we error out, grab the actual argument name into x.
233
-    char* x = new char[ arg.size() ];
234
-    // Just in case we didn't include an alpha value
235
-    *a = 1;
236
-    int num = sscanf( copy.c_str(), "%s %f %f %f %f", x, r, g, b, a );
237
-    if ( num != 4 && num != 5 ) {
238
-        fprintf( stderr, "Error parsing command arguments near %s\n", arg.c_str() );
239
-        fprintf( stderr, "Usage: %s=COLOR\n", x );
240
-        fprintf( stderr, "Example: %s=0,0,0 or %s=0.7,0.2,1,0.5 or %s=1,1,1,0.8\n", x, x, x );
241
-        fprintf( stderr, "Try -h or --help for help.\n" );
242
-        delete[] x;
243
-        return 1;
244
-    }
245
-    delete[] x;
246
-    return 0;
247
-}
248
-
249
-int slop::Options::parseGeometry( std::string arg, int* x, int* y, int* w, int* h ) {
250
-    std::string copy = arg;
251
-    // Replace the first =, all x's and +'s with spaces.
252
-    int find = copy.find( "=" );
253
-    while( find != copy.npos ) {
254
-        copy.at( find ) = ' ';
255
-        find = copy.find( "x" );
256
-    }
257
-    find = copy.find( "+" );
258
-    while( find != copy.npos ) {
259
-        copy.at( find ) = ' ';
260
-        find = copy.find( "+" );
261
-    }
262
-
263
-    // Just in case we error out, grab the actual argument name into x.
264
-    char* foo = new char[ arg.size() ];
265
-    int num = sscanf( copy.c_str(), "%s %d %d %d %d", foo, w, h, x, y );
266
-    if ( num != 5 ) {
267
-        fprintf( stderr, "Error parsing command arguments near %s\n", arg.c_str() );
268
-        fprintf( stderr, "Usage: %s=GEOMETRY\n", foo );
269
-        fprintf( stderr, "Example: %s=1920x1080+0+0 or %s=256x256+100+-200\n", foo, foo );
270
-        fprintf( stderr, "Try -h or --help for help.\n" );
271
-        delete[] foo;
272
-        return 1;
273
-    }
274
-    delete[] foo;
275
-    return 0;
276
-}

+ 0
- 43
options.hpp 查看文件

@@ -1,43 +0,0 @@
1
-#ifndef IS_OPTIONS_H_
2
-
3
-#include <string>
4
-#include <cstdio>
5
-
6
-namespace slop {
7
-
8
-class Options {
9
-public:
10
-                Options();
11
-    int         parseOptions( int argc, char** argv );
12
-    void        printHelp();
13
-
14
-    std::string m_version;
15
-    int         m_borderSize;
16
-    int         m_padding;
17
-    int         m_tolerance;
18
-    int         m_minimumsize;
19
-    int         m_maximumsize;
20
-    int         m_maxsize;
21
-    float       m_red;
22
-    float       m_green;
23
-    float       m_blue;
24
-    float       m_alpha;
25
-    std::string m_xdisplay;
26
-    float       m_gracetime;
27
-    bool        m_keyboard;
28
-    bool        m_decorations;
29
-    bool        m_highlight;
30
-private:
31
-    int         parseInt( std::string arg, int* returnInt );
32
-    int         parseFloat( std::string arg, float* returnFloat );
33
-    int         parseString( std::string arg, std::string* returnString );
34
-    int         parseGeometry( std::string arg, int* x, int* y, int* w, int* h );
35
-    int         parseColor( std::string arg, float* r, float* g, float* b, float* a );
36
-    bool        matches( std::string arg, std::string shorthand, std::string longhand );
37
-};
38
-
39
-}
40
-
41
-extern slop::Options* options;
42
-
43
-#endif // IS_OPTIONS_H_