end of life
Stefan Schuermans

Stefan Schuermans commited on 2017-05-20 17:20:47
Showing 24 changed files, with 3 additions and 2678 deletions.

... ...
@@ -1,3 +0,0 @@
1
-JFlexiPix.jar
2
-JFlexiPix.keystore
3
-
... ...
@@ -1,674 +0,0 @@
1
-                    GNU GENERAL PUBLIC LICENSE
2
-                       Version 3, 29 June 2007
3
-
4
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
- Everyone is permitted to copy and distribute verbatim copies
6
- of this license document, but changing it is not allowed.
7
-
8
-                            Preamble
9
-
10
-  The GNU General Public License is a free, copyleft license for
11
-software and other kinds of works.
12
-
13
-  The licenses for most software and other practical works are designed
14
-to take away your freedom to share and change the works.  By contrast,
15
-the GNU General Public License is intended to guarantee your freedom to
16
-share and change all versions of a program--to make sure it remains free
17
-software for all its users.  We, the Free Software Foundation, use the
18
-GNU General Public License for most of our software; it applies also to
19
-any other work released this way by its authors.  You can apply it to
20
-your programs, too.
21
-
22
-  When we speak of free software, we are referring to freedom, not
23
-price.  Our General Public Licenses are designed to make sure that you
24
-have the freedom to distribute copies of free software (and charge for
25
-them if you wish), that you receive source code or can get it if you
26
-want it, that you can change the software or use pieces of it in new
27
-free programs, and that you know you can do these things.
28
-
29
-  To protect your rights, we need to prevent others from denying you
30
-these rights or asking you to surrender the rights.  Therefore, you have
31
-certain responsibilities if you distribute copies of the software, or if
32
-you modify it: responsibilities to respect the freedom of others.
33
-
34
-  For example, if you distribute copies of such a program, whether
35
-gratis or for a fee, you must pass on to the recipients the same
36
-freedoms that you received.  You must make sure that they, too, receive
37
-or can get the source code.  And you must show them these terms so they
38
-know their rights.
39
-
40
-  Developers that use the GNU GPL protect your rights with two steps:
41
-(1) assert copyright on the software, and (2) offer you this License
42
-giving you legal permission to copy, distribute and/or modify it.
43
-
44
-  For the developers' and authors' protection, the GPL clearly explains
45
-that there is no warranty for this free software.  For both users' and
46
-authors' sake, the GPL requires that modified versions be marked as
47
-changed, so that their problems will not be attributed erroneously to
48
-authors of previous versions.
49
-
50
-  Some devices are designed to deny users access to install or run
51
-modified versions of the software inside them, although the manufacturer
52
-can do so.  This is fundamentally incompatible with the aim of
53
-protecting users' freedom to change the software.  The systematic
54
-pattern of such abuse occurs in the area of products for individuals to
55
-use, which is precisely where it is most unacceptable.  Therefore, we
56
-have designed this version of the GPL to prohibit the practice for those
57
-products.  If such problems arise substantially in other domains, we
58
-stand ready to extend this provision to those domains in future versions
59
-of the GPL, as needed to protect the freedom of users.
60
-
61
-  Finally, every program is threatened constantly by software patents.
62
-States should not allow patents to restrict development and use of
63
-software on general-purpose computers, but in those that do, we wish to
64
-avoid the special danger that patents applied to a free program could
65
-make it effectively proprietary.  To prevent this, the GPL assures that
66
-patents cannot be used to render the program non-free.
67
-
68
-  The precise terms and conditions for copying, distribution and
69
-modification follow.
70
-
71
-                       TERMS AND CONDITIONS
72
-
73
-  0. Definitions.
74
-
75
-  "This License" refers to version 3 of the GNU General Public License.
76
-
77
-  "Copyright" also means copyright-like laws that apply to other kinds of
78
-works, such as semiconductor masks.
79
-
80
-  "The Program" refers to any copyrightable work licensed under this
81
-License.  Each licensee is addressed as "you".  "Licensees" and
82
-"recipients" may be individuals or organizations.
83
-
84
-  To "modify" a work means to copy from or adapt all or part of the work
85
-in a fashion requiring copyright permission, other than the making of an
86
-exact copy.  The resulting work is called a "modified version" of the
87
-earlier work or a work "based on" the earlier work.
88
-
89
-  A "covered work" means either the unmodified Program or a work based
90
-on the Program.
91
-
92
-  To "propagate" a work means to do anything with it that, without
93
-permission, would make you directly or secondarily liable for
94
-infringement under applicable copyright law, except executing it on a
95
-computer or modifying a private copy.  Propagation includes copying,
96
-distribution (with or without modification), making available to the
97
-public, and in some countries other activities as well.
98
-
99
-  To "convey" a work means any kind of propagation that enables other
100
-parties to make or receive copies.  Mere interaction with a user through
101
-a computer network, with no transfer of a copy, is not conveying.
102
-
103
-  An interactive user interface displays "Appropriate Legal Notices"
104
-to the extent that it includes a convenient and prominently visible
105
-feature that (1) displays an appropriate copyright notice, and (2)
106
-tells the user that there is no warranty for the work (except to the
107
-extent that warranties are provided), that licensees may convey the
108
-work under this License, and how to view a copy of this License.  If
109
-the interface presents a list of user commands or options, such as a
110
-menu, a prominent item in the list meets this criterion.
111
-
112
-  1. Source Code.
113
-
114
-  The "source code" for a work means the preferred form of the work
115
-for making modifications to it.  "Object code" means any non-source
116
-form of a work.
117
-
118
-  A "Standard Interface" means an interface that either is an official
119
-standard defined by a recognized standards body, or, in the case of
120
-interfaces specified for a particular programming language, one that
121
-is widely used among developers working in that language.
122
-
123
-  The "System Libraries" of an executable work include anything, other
124
-than the work as a whole, that (a) is included in the normal form of
125
-packaging a Major Component, but which is not part of that Major
126
-Component, and (b) serves only to enable use of the work with that
127
-Major Component, or to implement a Standard Interface for which an
128
-implementation is available to the public in source code form.  A
129
-"Major Component", in this context, means a major essential component
130
-(kernel, window system, and so on) of the specific operating system
131
-(if any) on which the executable work runs, or a compiler used to
132
-produce the work, or an object code interpreter used to run it.
133
-
134
-  The "Corresponding Source" for a work in object code form means all
135
-the source code needed to generate, install, and (for an executable
136
-work) run the object code and to modify the work, including scripts to
137
-control those activities.  However, it does not include the work's
138
-System Libraries, or general-purpose tools or generally available free
139
-programs which are used unmodified in performing those activities but
140
-which are not part of the work.  For example, Corresponding Source
141
-includes interface definition files associated with source files for
142
-the work, and the source code for shared libraries and dynamically
143
-linked subprograms that the work is specifically designed to require,
144
-such as by intimate data communication or control flow between those
145
-subprograms and other parts of the work.
146
-
147
-  The Corresponding Source need not include anything that users
148
-can regenerate automatically from other parts of the Corresponding
149
-Source.
150
-
151
-  The Corresponding Source for a work in source code form is that
152
-same work.
153
-
154
-  2. Basic Permissions.
155
-
156
-  All rights granted under this License are granted for the term of
157
-copyright on the Program, and are irrevocable provided the stated
158
-conditions are met.  This License explicitly affirms your unlimited
159
-permission to run the unmodified Program.  The output from running a
160
-covered work is covered by this License only if the output, given its
161
-content, constitutes a covered work.  This License acknowledges your
162
-rights of fair use or other equivalent, as provided by copyright law.
163
-
164
-  You may make, run and propagate covered works that you do not
165
-convey, without conditions so long as your license otherwise remains
166
-in force.  You may convey covered works to others for the sole purpose
167
-of having them make modifications exclusively for you, or provide you
168
-with facilities for running those works, provided that you comply with
169
-the terms of this License in conveying all material for which you do
170
-not control copyright.  Those thus making or running the covered works
171
-for you must do so exclusively on your behalf, under your direction
172
-and control, on terms that prohibit them from making any copies of
173
-your copyrighted material outside their relationship with you.
174
-
175
-  Conveying under any other circumstances is permitted solely under
176
-the conditions stated below.  Sublicensing is not allowed; section 10
177
-makes it unnecessary.
178
-
179
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
-
181
-  No covered work shall be deemed part of an effective technological
182
-measure under any applicable law fulfilling obligations under article
183
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
-similar laws prohibiting or restricting circumvention of such
185
-measures.
186
-
187
-  When you convey a covered work, you waive any legal power to forbid
188
-circumvention of technological measures to the extent such circumvention
189
-is effected by exercising rights under this License with respect to
190
-the covered work, and you disclaim any intention to limit operation or
191
-modification of the work as a means of enforcing, against the work's
192
-users, your or third parties' legal rights to forbid circumvention of
193
-technological measures.
194
-
195
-  4. Conveying Verbatim Copies.
196
-
197
-  You may convey verbatim copies of the Program's source code as you
198
-receive it, in any medium, provided that you conspicuously and
199
-appropriately publish on each copy an appropriate copyright notice;
200
-keep intact all notices stating that this License and any
201
-non-permissive terms added in accord with section 7 apply to the code;
202
-keep intact all notices of the absence of any warranty; and give all
203
-recipients a copy of this License along with the Program.
204
-
205
-  You may charge any price or no price for each copy that you convey,
206
-and you may offer support or warranty protection for a fee.
207
-
208
-  5. Conveying Modified Source Versions.
209
-
210
-  You may convey a work based on the Program, or the modifications to
211
-produce it from the Program, in the form of source code under the
212
-terms of section 4, provided that you also meet all of these conditions:
213
-
214
-    a) The work must carry prominent notices stating that you modified
215
-    it, and giving a relevant date.
216
-
217
-    b) The work must carry prominent notices stating that it is
218
-    released under this License and any conditions added under section
219
-    7.  This requirement modifies the requirement in section 4 to
220
-    "keep intact all notices".
221
-
222
-    c) You must license the entire work, as a whole, under this
223
-    License to anyone who comes into possession of a copy.  This
224
-    License will therefore apply, along with any applicable section 7
225
-    additional terms, to the whole of the work, and all its parts,
226
-    regardless of how they are packaged.  This License gives no
227
-    permission to license the work in any other way, but it does not
228
-    invalidate such permission if you have separately received it.
229
-
230
-    d) If the work has interactive user interfaces, each must display
231
-    Appropriate Legal Notices; however, if the Program has interactive
232
-    interfaces that do not display Appropriate Legal Notices, your
233
-    work need not make them do so.
234
-
235
-  A compilation of a covered work with other separate and independent
236
-works, which are not by their nature extensions of the covered work,
237
-and which are not combined with it such as to form a larger program,
238
-in or on a volume of a storage or distribution medium, is called an
239
-"aggregate" if the compilation and its resulting copyright are not
240
-used to limit the access or legal rights of the compilation's users
241
-beyond what the individual works permit.  Inclusion of a covered work
242
-in an aggregate does not cause this License to apply to the other
243
-parts of the aggregate.
244
-
245
-  6. Conveying Non-Source Forms.
246
-
247
-  You may convey a covered work in object code form under the terms
248
-of sections 4 and 5, provided that you also convey the
249
-machine-readable Corresponding Source under the terms of this License,
250
-in one of these ways:
251
-
252
-    a) Convey the object code in, or embodied in, a physical product
253
-    (including a physical distribution medium), accompanied by the
254
-    Corresponding Source fixed on a durable physical medium
255
-    customarily used for software interchange.
256
-
257
-    b) Convey the object code in, or embodied in, a physical product
258
-    (including a physical distribution medium), accompanied by a
259
-    written offer, valid for at least three years and valid for as
260
-    long as you offer spare parts or customer support for that product
261
-    model, to give anyone who possesses the object code either (1) a
262
-    copy of the Corresponding Source for all the software in the
263
-    product that is covered by this License, on a durable physical
264
-    medium customarily used for software interchange, for a price no
265
-    more than your reasonable cost of physically performing this
266
-    conveying of source, or (2) access to copy the
267
-    Corresponding Source from a network server at no charge.
268
-
269
-    c) Convey individual copies of the object code with a copy of the
270
-    written offer to provide the Corresponding Source.  This
271
-    alternative is allowed only occasionally and noncommercially, and
272
-    only if you received the object code with such an offer, in accord
273
-    with subsection 6b.
274
-
275
-    d) Convey the object code by offering access from a designated
276
-    place (gratis or for a charge), and offer equivalent access to the
277
-    Corresponding Source in the same way through the same place at no
278
-    further charge.  You need not require recipients to copy the
279
-    Corresponding Source along with the object code.  If the place to
280
-    copy the object code is a network server, the Corresponding Source
281
-    may be on a different server (operated by you or a third party)
282
-    that supports equivalent copying facilities, provided you maintain
283
-    clear directions next to the object code saying where to find the
284
-    Corresponding Source.  Regardless of what server hosts the
285
-    Corresponding Source, you remain obligated to ensure that it is
286
-    available for as long as needed to satisfy these requirements.
287
-
288
-    e) Convey the object code using peer-to-peer transmission, provided
289
-    you inform other peers where the object code and Corresponding
290
-    Source of the work are being offered to the general public at no
291
-    charge under subsection 6d.
292
-
293
-  A separable portion of the object code, whose source code is excluded
294
-from the Corresponding Source as a System Library, need not be
295
-included in conveying the object code work.
296
-
297
-  A "User Product" is either (1) a "consumer product", which means any
298
-tangible personal property which is normally used for personal, family,
299
-or household purposes, or (2) anything designed or sold for incorporation
300
-into a dwelling.  In determining whether a product is a consumer product,
301
-doubtful cases shall be resolved in favor of coverage.  For a particular
302
-product received by a particular user, "normally used" refers to a
303
-typical or common use of that class of product, regardless of the status
304
-of the particular user or of the way in which the particular user
305
-actually uses, or expects or is expected to use, the product.  A product
306
-is a consumer product regardless of whether the product has substantial
307
-commercial, industrial or non-consumer uses, unless such uses represent
308
-the only significant mode of use of the product.
309
-
310
-  "Installation Information" for a User Product means any methods,
311
-procedures, authorization keys, or other information required to install
312
-and execute modified versions of a covered work in that User Product from
313
-a modified version of its Corresponding Source.  The information must
314
-suffice to ensure that the continued functioning of the modified object
315
-code is in no case prevented or interfered with solely because
316
-modification has been made.
317
-
318
-  If you convey an object code work under this section in, or with, or
319
-specifically for use in, a User Product, and the conveying occurs as
320
-part of a transaction in which the right of possession and use of the
321
-User Product is transferred to the recipient in perpetuity or for a
322
-fixed term (regardless of how the transaction is characterized), the
323
-Corresponding Source conveyed under this section must be accompanied
324
-by the Installation Information.  But this requirement does not apply
325
-if neither you nor any third party retains the ability to install
326
-modified object code on the User Product (for example, the work has
327
-been installed in ROM).
328
-
329
-  The requirement to provide Installation Information does not include a
330
-requirement to continue to provide support service, warranty, or updates
331
-for a work that has been modified or installed by the recipient, or for
332
-the User Product in which it has been modified or installed.  Access to a
333
-network may be denied when the modification itself materially and
334
-adversely affects the operation of the network or violates the rules and
335
-protocols for communication across the network.
336
-
337
-  Corresponding Source conveyed, and Installation Information provided,
338
-in accord with this section must be in a format that is publicly
339
-documented (and with an implementation available to the public in
340
-source code form), and must require no special password or key for
341
-unpacking, reading or copying.
342
-
343
-  7. Additional Terms.
344
-
345
-  "Additional permissions" are terms that supplement the terms of this
346
-License by making exceptions from one or more of its conditions.
347
-Additional permissions that are applicable to the entire Program shall
348
-be treated as though they were included in this License, to the extent
349
-that they are valid under applicable law.  If additional permissions
350
-apply only to part of the Program, that part may be used separately
351
-under those permissions, but the entire Program remains governed by
352
-this License without regard to the additional permissions.
353
-
354
-  When you convey a copy of a covered work, you may at your option
355
-remove any additional permissions from that copy, or from any part of
356
-it.  (Additional permissions may be written to require their own
357
-removal in certain cases when you modify the work.)  You may place
358
-additional permissions on material, added by you to a covered work,
359
-for which you have or can give appropriate copyright permission.
360
-
361
-  Notwithstanding any other provision of this License, for material you
362
-add to a covered work, you may (if authorized by the copyright holders of
363
-that material) supplement the terms of this License with terms:
364
-
365
-    a) Disclaiming warranty or limiting liability differently from the
366
-    terms of sections 15 and 16 of this License; or
367
-
368
-    b) Requiring preservation of specified reasonable legal notices or
369
-    author attributions in that material or in the Appropriate Legal
370
-    Notices displayed by works containing it; or
371
-
372
-    c) Prohibiting misrepresentation of the origin of that material, or
373
-    requiring that modified versions of such material be marked in
374
-    reasonable ways as different from the original version; or
375
-
376
-    d) Limiting the use for publicity purposes of names of licensors or
377
-    authors of the material; or
378
-
379
-    e) Declining to grant rights under trademark law for use of some
380
-    trade names, trademarks, or service marks; or
381
-
382
-    f) Requiring indemnification of licensors and authors of that
383
-    material by anyone who conveys the material (or modified versions of
384
-    it) with contractual assumptions of liability to the recipient, for
385
-    any liability that these contractual assumptions directly impose on
386
-    those licensors and authors.
387
-
388
-  All other non-permissive additional terms are considered "further
389
-restrictions" within the meaning of section 10.  If the Program as you
390
-received it, or any part of it, contains a notice stating that it is
391
-governed by this License along with a term that is a further
392
-restriction, you may remove that term.  If a license document contains
393
-a further restriction but permits relicensing or conveying under this
394
-License, you may add to a covered work material governed by the terms
395
-of that license document, provided that the further restriction does
396
-not survive such relicensing or conveying.
397
-
398
-  If you add terms to a covered work in accord with this section, you
399
-must place, in the relevant source files, a statement of the
400
-additional terms that apply to those files, or a notice indicating
401
-where to find the applicable terms.
402
-
403
-  Additional terms, permissive or non-permissive, may be stated in the
404
-form of a separately written license, or stated as exceptions;
405
-the above requirements apply either way.
406
-
407
-  8. Termination.
408
-
409
-  You may not propagate or modify a covered work except as expressly
410
-provided under this License.  Any attempt otherwise to propagate or
411
-modify it is void, and will automatically terminate your rights under
412
-this License (including any patent licenses granted under the third
413
-paragraph of section 11).
414
-
415
-  However, if you cease all violation of this License, then your
416
-license from a particular copyright holder is reinstated (a)
417
-provisionally, unless and until the copyright holder explicitly and
418
-finally terminates your license, and (b) permanently, if the copyright
419
-holder fails to notify you of the violation by some reasonable means
420
-prior to 60 days after the cessation.
421
-
422
-  Moreover, your license from a particular copyright holder is
423
-reinstated permanently if the copyright holder notifies you of the
424
-violation by some reasonable means, this is the first time you have
425
-received notice of violation of this License (for any work) from that
426
-copyright holder, and you cure the violation prior to 30 days after
427
-your receipt of the notice.
428
-
429
-  Termination of your rights under this section does not terminate the
430
-licenses of parties who have received copies or rights from you under
431
-this License.  If your rights have been terminated and not permanently
432
-reinstated, you do not qualify to receive new licenses for the same
433
-material under section 10.
434
-
435
-  9. Acceptance Not Required for Having Copies.
436
-
437
-  You are not required to accept this License in order to receive or
438
-run a copy of the Program.  Ancillary propagation of a covered work
439
-occurring solely as a consequence of using peer-to-peer transmission
440
-to receive a copy likewise does not require acceptance.  However,
441
-nothing other than this License grants you permission to propagate or
442
-modify any covered work.  These actions infringe copyright if you do
443
-not accept this License.  Therefore, by modifying or propagating a
444
-covered work, you indicate your acceptance of this License to do so.
445
-
446
-  10. Automatic Licensing of Downstream Recipients.
447
-
448
-  Each time you convey a covered work, the recipient automatically
449
-receives a license from the original licensors, to run, modify and
450
-propagate that work, subject to this License.  You are not responsible
451
-for enforcing compliance by third parties with this License.
452
-
453
-  An "entity transaction" is a transaction transferring control of an
454
-organization, or substantially all assets of one, or subdividing an
455
-organization, or merging organizations.  If propagation of a covered
456
-work results from an entity transaction, each party to that
457
-transaction who receives a copy of the work also receives whatever
458
-licenses to the work the party's predecessor in interest had or could
459
-give under the previous paragraph, plus a right to possession of the
460
-Corresponding Source of the work from the predecessor in interest, if
461
-the predecessor has it or can get it with reasonable efforts.
462
-
463
-  You may not impose any further restrictions on the exercise of the
464
-rights granted or affirmed under this License.  For example, you may
465
-not impose a license fee, royalty, or other charge for exercise of
466
-rights granted under this License, and you may not initiate litigation
467
-(including a cross-claim or counterclaim in a lawsuit) alleging that
468
-any patent claim is infringed by making, using, selling, offering for
469
-sale, or importing the Program or any portion of it.
470
-
471
-  11. Patents.
472
-
473
-  A "contributor" is a copyright holder who authorizes use under this
474
-License of the Program or a work on which the Program is based.  The
475
-work thus licensed is called the contributor's "contributor version".
476
-
477
-  A contributor's "essential patent claims" are all patent claims
478
-owned or controlled by the contributor, whether already acquired or
479
-hereafter acquired, that would be infringed by some manner, permitted
480
-by this License, of making, using, or selling its contributor version,
481
-but do not include claims that would be infringed only as a
482
-consequence of further modification of the contributor version.  For
483
-purposes of this definition, "control" includes the right to grant
484
-patent sublicenses in a manner consistent with the requirements of
485
-this License.
486
-
487
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
488
-patent license under the contributor's essential patent claims, to
489
-make, use, sell, offer for sale, import and otherwise run, modify and
490
-propagate the contents of its contributor version.
491
-
492
-  In the following three paragraphs, a "patent license" is any express
493
-agreement or commitment, however denominated, not to enforce a patent
494
-(such as an express permission to practice a patent or covenant not to
495
-sue for patent infringement).  To "grant" such a patent license to a
496
-party means to make such an agreement or commitment not to enforce a
497
-patent against the party.
498
-
499
-  If you convey a covered work, knowingly relying on a patent license,
500
-and the Corresponding Source of the work is not available for anyone
501
-to copy, free of charge and under the terms of this License, through a
502
-publicly available network server or other readily accessible means,
503
-then you must either (1) cause the Corresponding Source to be so
504
-available, or (2) arrange to deprive yourself of the benefit of the
505
-patent license for this particular work, or (3) arrange, in a manner
506
-consistent with the requirements of this License, to extend the patent
507
-license to downstream recipients.  "Knowingly relying" means you have
508
-actual knowledge that, but for the patent license, your conveying the
509
-covered work in a country, or your recipient's use of the covered work
510
-in a country, would infringe one or more identifiable patents in that
511
-country that you have reason to believe are valid.
512
-
513
-  If, pursuant to or in connection with a single transaction or
514
-arrangement, you convey, or propagate by procuring conveyance of, a
515
-covered work, and grant a patent license to some of the parties
516
-receiving the covered work authorizing them to use, propagate, modify
517
-or convey a specific copy of the covered work, then the patent license
518
-you grant is automatically extended to all recipients of the covered
519
-work and works based on it.
520
-
521
-  A patent license is "discriminatory" if it does not include within
522
-the scope of its coverage, prohibits the exercise of, or is
523
-conditioned on the non-exercise of one or more of the rights that are
524
-specifically granted under this License.  You may not convey a covered
525
-work if you are a party to an arrangement with a third party that is
526
-in the business of distributing software, under which you make payment
527
-to the third party based on the extent of your activity of conveying
528
-the work, and under which the third party grants, to any of the
529
-parties who would receive the covered work from you, a discriminatory
530
-patent license (a) in connection with copies of the covered work
531
-conveyed by you (or copies made from those copies), or (b) primarily
532
-for and in connection with specific products or compilations that
533
-contain the covered work, unless you entered into that arrangement,
534
-or that patent license was granted, prior to 28 March 2007.
535
-
536
-  Nothing in this License shall be construed as excluding or limiting
537
-any implied license or other defenses to infringement that may
538
-otherwise be available to you under applicable patent law.
539
-
540
-  12. No Surrender of Others' Freedom.
541
-
542
-  If conditions are imposed on you (whether by court order, agreement or
543
-otherwise) that contradict the conditions of this License, they do not
544
-excuse you from the conditions of this License.  If you cannot convey a
545
-covered work so as to satisfy simultaneously your obligations under this
546
-License and any other pertinent obligations, then as a consequence you may
547
-not convey it at all.  For example, if you agree to terms that obligate you
548
-to collect a royalty for further conveying from those to whom you convey
549
-the Program, the only way you could satisfy both those terms and this
550
-License would be to refrain entirely from conveying the Program.
551
-
552
-  13. Use with the GNU Affero General Public License.
553
-
554
-  Notwithstanding any other provision of this License, you have
555
-permission to link or combine any covered work with a work licensed
556
-under version 3 of the GNU Affero General Public License into a single
557
-combined work, and to convey the resulting work.  The terms of this
558
-License will continue to apply to the part which is the covered work,
559
-but the special requirements of the GNU Affero General Public License,
560
-section 13, concerning interaction through a network will apply to the
561
-combination as such.
562
-
563
-  14. Revised Versions of this License.
564
-
565
-  The Free Software Foundation may publish revised and/or new versions of
566
-the GNU General Public License from time to time.  Such new versions will
567
-be similar in spirit to the present version, but may differ in detail to
568
-address new problems or concerns.
569
-
570
-  Each version is given a distinguishing version number.  If the
571
-Program specifies that a certain numbered version of the GNU General
572
-Public License "or any later version" applies to it, you have the
573
-option of following the terms and conditions either of that numbered
574
-version or of any later version published by the Free Software
575
-Foundation.  If the Program does not specify a version number of the
576
-GNU General Public License, you may choose any version ever published
577
-by the Free Software Foundation.
578
-
579
-  If the Program specifies that a proxy can decide which future
580
-versions of the GNU General Public License can be used, that proxy's
581
-public statement of acceptance of a version permanently authorizes you
582
-to choose that version for the Program.
583
-
584
-  Later license versions may give you additional or different
585
-permissions.  However, no additional obligations are imposed on any
586
-author or copyright holder as a result of your choosing to follow a
587
-later version.
588
-
589
-  15. Disclaimer of Warranty.
590
-
591
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
-
600
-  16. Limitation of Liability.
601
-
602
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
-SUCH DAMAGES.
611
-
612
-  17. Interpretation of Sections 15 and 16.
613
-
614
-  If the disclaimer of warranty and limitation of liability provided
615
-above cannot be given local legal effect according to their terms,
616
-reviewing courts shall apply local law that most closely approximates
617
-an absolute waiver of all civil liability in connection with the
618
-Program, unless a warranty or assumption of liability accompanies a
619
-copy of the Program in return for a fee.
620
-
621
-                     END OF TERMS AND CONDITIONS
622
-
623
-            How to Apply These Terms to Your New Programs
624
-
625
-  If you develop a new program, and you want it to be of the greatest
626
-possible use to the public, the best way to achieve this is to make it
627
-free software which everyone can redistribute and change under these terms.
628
-
629
-  To do so, attach the following notices to the program.  It is safest
630
-to attach them to the start of each source file to most effectively
631
-state the exclusion of warranty; and each file should have at least
632
-the "copyright" line and a pointer to where the full notice is found.
633
-
634
-    <one line to give the program's name and a brief idea of what it does.>
635
-    Copyright (C) <year>  <name of author>
636
-
637
-    This program is free software: you can redistribute it and/or modify
638
-    it under the terms of the GNU General Public License as published by
639
-    the Free Software Foundation, version 3 of the License.
640
-   
641
-
642
-    This program is distributed in the hope that it will be useful,
643
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
644
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
645
-    GNU General Public License for more details.
646
-
647
-    You should have received a copy of the GNU General Public License
648
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
649
-
650
-Also add information on how to contact you by electronic and paper mail.
651
-
652
-  If the program does terminal interaction, make it output a short
653
-notice like this when it starts in an interactive mode:
654
-
655
-    <program>  Copyright (C) <year>  <name of author>
656
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657
-    This is free software, and you are welcome to redistribute it
658
-    under certain conditions; type `show c' for details.
659
-
660
-The hypothetical commands `show w' and `show c' should show the appropriate
661
-parts of the General Public License.  Of course, your program's commands
662
-might be different; for a GUI interface, you would use an "about box".
663
-
664
-  You should also get your employer (if you work as a programmer) or school,
665
-if any, to sign a "copyright disclaimer" for the program, if necessary.
666
-For more information on this, and how to apply and follow the GNU GPL, see
667
-<http://www.gnu.org/licenses/>.
668
-
669
-  The GNU General Public License does not permit incorporating your program
670
-into proprietary programs.  If your program is a subroutine library, you
671
-may consider it more useful to permit linking proprietary applications with
672
-the library.  If this is what you want to do, use the GNU Lesser General
673
-Public License instead of this License.  But first, please read
674
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
... ...
@@ -1,165 +0,0 @@
1
-                   GNU LESSER GENERAL PUBLIC LICENSE
2
-                       Version 3, 29 June 2007
3
-
4
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
- Everyone is permitted to copy and distribute verbatim copies
6
- of this license document, but changing it is not allowed.
7
-
8
-
9
-  This version of the GNU Lesser General Public License incorporates
10
-the terms and conditions of version 3 of the GNU General Public
11
-License, supplemented by the additional permissions listed below.
12
-
13
-  0. Additional Definitions.
14
-
15
-  As used herein, "this License" refers to version 3 of the GNU Lesser
16
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
17
-General Public License.
18
-
19
-  "The Library" refers to a covered work governed by this License,
20
-other than an Application or a Combined Work as defined below.
21
-
22
-  An "Application" is any work that makes use of an interface provided
23
-by the Library, but which is not otherwise based on the Library.
24
-Defining a subclass of a class defined by the Library is deemed a mode
25
-of using an interface provided by the Library.
26
-
27
-  A "Combined Work" is a work produced by combining or linking an
28
-Application with the Library.  The particular version of the Library
29
-with which the Combined Work was made is also called the "Linked
30
-Version".
31
-
32
-  The "Minimal Corresponding Source" for a Combined Work means the
33
-Corresponding Source for the Combined Work, excluding any source code
34
-for portions of the Combined Work that, considered in isolation, are
35
-based on the Application, and not on the Linked Version.
36
-
37
-  The "Corresponding Application Code" for a Combined Work means the
38
-object code and/or source code for the Application, including any data
39
-and utility programs needed for reproducing the Combined Work from the
40
-Application, but excluding the System Libraries of the Combined Work.
41
-
42
-  1. Exception to Section 3 of the GNU GPL.
43
-
44
-  You may convey a covered work under sections 3 and 4 of this License
45
-without being bound by section 3 of the GNU GPL.
46
-
47
-  2. Conveying Modified Versions.
48
-
49
-  If you modify a copy of the Library, and, in your modifications, a
50
-facility refers to a function or data to be supplied by an Application
51
-that uses the facility (other than as an argument passed when the
52
-facility is invoked), then you may convey a copy of the modified
53
-version:
54
-
55
-   a) under this License, provided that you make a good faith effort to
56
-   ensure that, in the event an Application does not supply the
57
-   function or data, the facility still operates, and performs
58
-   whatever part of its purpose remains meaningful, or
59
-
60
-   b) under the GNU GPL, with none of the additional permissions of
61
-   this License applicable to that copy.
62
-
63
-  3. Object Code Incorporating Material from Library Header Files.
64
-
65
-  The object code form of an Application may incorporate material from
66
-a header file that is part of the Library.  You may convey such object
67
-code under terms of your choice, provided that, if the incorporated
68
-material is not limited to numerical parameters, data structure
69
-layouts and accessors, or small macros, inline functions and templates
70
-(ten or fewer lines in length), you do both of the following:
71
-
72
-   a) Give prominent notice with each copy of the object code that the
73
-   Library is used in it and that the Library and its use are
74
-   covered by this License.
75
-
76
-   b) Accompany the object code with a copy of the GNU GPL and this license
77
-   document.
78
-
79
-  4. Combined Works.
80
-
81
-  You may convey a Combined Work under terms of your choice that,
82
-taken together, effectively do not restrict modification of the
83
-portions of the Library contained in the Combined Work and reverse
84
-engineering for debugging such modifications, if you also do each of
85
-the following:
86
-
87
-   a) Give prominent notice with each copy of the Combined Work that
88
-   the Library is used in it and that the Library and its use are
89
-   covered by this License.
90
-
91
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
92
-   document.
93
-
94
-   c) For a Combined Work that displays copyright notices during
95
-   execution, include the copyright notice for the Library among
96
-   these notices, as well as a reference directing the user to the
97
-   copies of the GNU GPL and this license document.
98
-
99
-   d) Do one of the following:
100
-
101
-       0) Convey the Minimal Corresponding Source under the terms of this
102
-       License, and the Corresponding Application Code in a form
103
-       suitable for, and under terms that permit, the user to
104
-       recombine or relink the Application with a modified version of
105
-       the Linked Version to produce a modified Combined Work, in the
106
-       manner specified by section 6 of the GNU GPL for conveying
107
-       Corresponding Source.
108
-
109
-       1) Use a suitable shared library mechanism for linking with the
110
-       Library.  A suitable mechanism is one that (a) uses at run time
111
-       a copy of the Library already present on the user's computer
112
-       system, and (b) will operate properly with a modified version
113
-       of the Library that is interface-compatible with the Linked
114
-       Version.
115
-
116
-   e) Provide Installation Information, but only if you would otherwise
117
-   be required to provide such information under section 6 of the
118
-   GNU GPL, and only to the extent that such information is
119
-   necessary to install and execute a modified version of the
120
-   Combined Work produced by recombining or relinking the
121
-   Application with a modified version of the Linked Version. (If
122
-   you use option 4d0, the Installation Information must accompany
123
-   the Minimal Corresponding Source and Corresponding Application
124
-   Code. If you use option 4d1, you must provide the Installation
125
-   Information in the manner specified by section 6 of the GNU GPL
126
-   for conveying Corresponding Source.)
127
-
128
-  5. Combined Libraries.
129
-
130
-  You may place library facilities that are a work based on the
131
-Library side by side in a single library together with other library
132
-facilities that are not Applications and are not covered by this
133
-License, and convey such a combined library under terms of your
134
-choice, if you do both of the following:
135
-
136
-   a) Accompany the combined library with a copy of the same work based
137
-   on the Library, uncombined with any other library facilities,
138
-   conveyed under the terms of this License.
139
-
140
-   b) Give prominent notice with the combined library that part of it
141
-   is a work based on the Library, and explaining where to find the
142
-   accompanying uncombined form of the same work.
143
-
144
-  6. Revised Versions of the GNU Lesser General Public License.
145
-
146
-  The Free Software Foundation may publish revised and/or new versions
147
-of the GNU Lesser General Public License from time to time. Such new
148
-versions will be similar in spirit to the present version, but may
149
-differ in detail to address new problems or concerns.
150
-
151
-  Each version is given a distinguishing version number. If the
152
-Library as you received it specifies that a certain numbered version
153
-of the GNU Lesser General Public License "or any later version"
154
-applies to it, you have the option of following the terms and
155
-conditions either of that published version or of any later version
156
-published by the Free Software Foundation. If the Library as you
157
-received it does not specify a version number of the GNU Lesser
158
-General Public License, you may choose any version of the GNU Lesser
159
-General Public License ever published by the Free Software Foundation.
160
-
161
-  If the Library as you received it specifies that a proxy can decide
162
-whether future versions of the GNU Lesser General Public License shall
163
-apply, that proxy's public statement of acceptance of any version is
164
-permanent authorization for you to choose that version for the
165
-Library.
... ...
@@ -1,83 +0,0 @@
1
-# JFlexiPix - Java implementation of FlexiPix output library
2
-#
3
-# Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
-#
5
-# This program is free software: you can redistribute it and/or modify
6
-# it under the terms of the GNU General Public License as published by
7
-# the Free Software Foundation, version 3 of the License.
8
-#
9
-#
10
-# This program is distributed in the hope that it will be useful,
11
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
-# GNU General Public License for more details.
14
-#
15
-# You should have received a copy of the GNU Lesser General Public License
16
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
17
-# BlinkenLightsInteractiveMovieProgram
18
-# Copyright (C) 2004-2011: Stefan Schuermans <stefan@schuermans.info>
19
-# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
20
-# a blinkenarea.org project
21
-
22
-VERSION_MAJOR=0
23
-VERSION_MINOR=1
24
-VERSION_REVISION=1
25
-
26
-JAVAC=javac
27
-JAR=jar
28
-KEYTOOL=keytool
29
-JARSIGNER=jarsigner
30
-KEYPASS=JFlexiPix
31
-JAVA=java
32
-PKG_PATH=org/blinkenarea/JFlexiPix
33
-PKG_PATH_EX=$(PKG_PATH)/examples
34
-
35
-CLASSES=AddrParser Config Constants Display Distri \
36
-        Mapping MessageIf MsgType Pixel PixelParser Version
37
-CLASSES_EX=Blink Fade Msg
38
-CLASS_FILES=$(addprefix $(PKG_PATH)/,$(addsuffix .class,$(CLASSES)))
39
-CLASS_FILES_EX=$(addprefix $(PKG_PATH_EX)/,$(addsuffix .class,$(CLASSES_EX)))
40
-CONFIG_EX=$(PKG_PATH_EX)/config/single8x8.flp
41
-
42
-CLASSPATH=.
43
-
44
-.PHONY: all clean jar blink fade
45
-.SUFFIXES:
46
-.SECONDARY:
47
-
48
-all: jar $(CLASS_FILES_EX)
49
-
50
-clean:
51
-	rm -f $(PKG_PATH)/Version.java
52
-	rm -f $(CLASS_FILES)
53
-	rm -f JFlexiPix.jar
54
-	rm -f $(CLASS_FILES_EX)
55
-
56
-jar: JFlexiPix.jar
57
-
58
-blink: $(PKG_PATH_EX)/Blink.class
59
-	$(JAVA) -classpath . $(subst /,.,$(basename $<)) $(CONFIG_EX)
60
-
61
-fade: $(PKG_PATH_EX)/Fade.class
62
-	$(JAVA) -classpath . $(subst /,.,$(basename $<)) $(CONFIG_EX)
63
-
64
-$(CLASS_FILES_EX): $(CLASS_FILES)
65
-
66
-$(PKG_PATH)/Version.java: Makefile
67
-	echo "package org.blinkenarea.JFlexiPix;" >$@
68
-	echo "public class Version {" >>$@
69
-	echo "  public static int Major = $(VERSION_MAJOR);" >>$@
70
-	echo "  public static int Minor = $(VERSION_MINOR);" >>$@
71
-	echo "  public static int Revision = $(VERSION_REVISION);" >>$@
72
-	echo "}" >>$@
73
-
74
-%.class: %.java
75
-	$(JAVAC) -classpath $(CLASSPATH) $<
76
-
77
-JFlexiPix.keystore:
78
-	$(KEYTOOL) -genkey -alias JFlexiPix -dname CN=JFlexiPix,O=blinkenarea,C=org -keypass $(KEYPASS) -keystore $@ -storepass $(KEYPASS) -validity 3652
79
-
80
-JFlexiPix.jar: JFlexiPix.keystore $(CLASS_FILES)
81
-	$(JAR) cf $@ $(CLASS_FILES)
82
-	$(JARSIGNER) -keystore $< -storepass $(KEYPASS) $@ JFlexiPix
83
-
... ...
@@ -1,25 +1,6 @@
1
-JFlexiPix - Java implementation of FlexiPix output library
1
+JFlexiPix has been renamed to JEtherPix
2 2
 
3
-FlexPix is a large scale display architecure that is driven using UDP/IP.
4
-It consists of single pixels that are connected to chains. A number of those
5
-pixel chains is then connected to a so called distributor module that
6
-receives data over ethernet and distributes it to the pixel chains.
3
+clone URL: http://git.blinkenarea.org/projects/JEtherPix
7 4
 
8
-The protocol used on UDP is MCUF (microcontroller unit frame, see
9
-http://wiki.blinkenarea.org/index.php/MicroControllerUnitFrame). However,
10
-as FlexiPix displays can have more than 65536 pixels, multiple MCUF packets
11
-are sent for one frame - a single MCUF frame to every distributor.
12
-The coordinates of the pixels in the MCUF packets do not correspond to pixel
13
-locations, but to pixel addresses. The y coordinate is the number of the
14
-output of the distributor and the x coordinate is the number of the pixel
15
-in the chain. The number of channels is always 3 (RGB) and the maximum value
16
-is always 255 (8 bit per channel).
17
-
18
-This library can be used to send the required UDP packets to the FlexiPix
19
-display to make it show images and/or videos.
20
-As the libarary has to know how the pixels are wired and where there are
21
-located (i.e. which pixel in the source image they represent), a rather
22
-complex config file is needed. Examples of config files can be found in
23
-"org/blinkenarea/JFlexiPix/examples/config" and example code showing how
24
-to use the library is located in "org/blinkenarea/JFlexiPix/examples".
5
+URL to web interface: http://git.blinkenarea.org/index.php?p=JEtherPix
25 6
 
... ...
@@ -1 +0,0 @@
1
-http://git.blinkenarea.org/projects/JFlexiPix
... ...
@@ -1 +0,0 @@
1
-http://git.blinkenarea.org/index.php?p=JFlexiPix
... ...
@@ -1,2 +0,0 @@
1
-*.class
2
-Version.java
... ...
@@ -1,65 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-import java.net.*;
22
-import java.util.regex.*;
23
-
24
-/// parser for a socket address
25
-class AddrParser
26
-{
27
-  /**
28
-   * @brief parse address
29
-   * @param[in] text address in text form ("host:port")
30
-   * @return address or null
31
-   */
32
-  static InetSocketAddress parseAddr(String text)
33
-  {
34
-    Pattern pattern;
35
-    Matcher matcher;
36
-    String strHost, strPort;
37
-    InetAddress host;
38
-    int port;
39
-
40
-    // split text into host and port
41
-    pattern = Pattern.compile("^([-.a-zA-Z0-9_]+):([0-9]+)$");
42
-    matcher = pattern.matcher(text);
43
-    if (!matcher.find())
44
-      return null;
45
-    strHost = matcher.group(1);
46
-    strPort = matcher.group(2);
47
-
48
-    // parse host
49
-    try {
50
-      host = InetAddress.getByName(strHost);
51
-    } catch (UnknownHostException e) {
52
-      return null;
53
-    }
54
-
55
-    // parse port
56
-    try {
57
-      port = Integer.parseInt(strPort);
58
-    } catch (NumberFormatException e) {
59
-      return null;
60
-    }
61
-
62
-    return new InetSocketAddress(host, port);
63
-  }
64
-}
65
-
... ...
@@ -1,535 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-import java.io.*;
22
-import java.net.*;
23
-import java.util.*;
24
-import java.util.regex.*;
25
-
26
-/// configuration parser
27
-class Config
28
-{
29
-  /**
30
-   * @brief constructor
31
-   * @param[in] display display to configure
32
-   * @param[in] messageIf message interface to report messages to or null
33
-   */
34
-  Config(Display display, MessageIf messageIf)
35
-  {
36
-    // save constructor parameters
37
-    m_display   = display;
38
-    m_messageIf = messageIf;
39
-
40
-    // compile regular expression patterns
41
-
42
-    // empty lines: "   # comment"
43
-    m_patternEmpty = Pattern.compile("^" + "\\s*" + "(?:#.*)?" + "$");
44
-
45
-    // extract setting and value from "   setting   =   value   # comment"
46
-    m_patternLine = Pattern.compile("^" +
47
-                                    "\\s*" +
48
-                                    "([^\\s=#](?:[^=#]*[^\\s=#])?)" +
49
-                                    "\\s*=\\s*" +
50
-                                    "([^\\s=#](?:[^=#]*[^\\s=#])?)" +
51
-                                    "\\s*" + 
52
-                                    "(?:#.*)?" +
53
-                                    "$");
54
-  }
55
-
56
-  /**
57
-   * @brief process distributor from config file
58
-   *
59
-   * @param[in] settingPart2 second half of setting to process
60
-   * @param[in] value value of setting
61
-   */
62
-  void procDistri(String settingPart2, String value)
63
-    throws Exception
64
-  {
65
-    int dist, out, pix;
66
-    Pixel px;
67
-
68
-    // get distributor number
69
-    try {
70
-      dist = Integer.parseInt(settingPart2);
71
-    } catch (NumberFormatException e) {
72
-      dist = Constants.distriMaxCnt; // force error in next line
73
-    }
74
-    if (dist >= Constants.distriMaxCnt)
75
-      errorExc("invalid distributor number \"" + settingPart2 + "\"" +
76
-               String.format(" in line %d of config file", m_lineNo));
77
-
78
-    // get number of outputs and pixels
79
-    px = PixelParser.parsePixel(value); // abuse for "outputs,pixels"
80
-    if (px == null)
81
-      errorExc("invalid distributor size \"" + value + "\"" +
82
-               String.format(" in line %d of config file", m_lineNo));
83
-    out = px.m_x;
84
-    if (out >= Constants.outputMaxCnt)
85
-      errorExc(String.format("invalid number of outputs \"%d\"" +
86
-                             " in line %d of config file", out, m_lineNo));
87
-    pix = px.m_y;
88
-    if (pix >= Constants.pixelMaxCnt)
89
-      errorExc(String.format("invalid number of pixels \"%d\"" +
90
-                             " in line %d of config file", pix, m_lineNo));
91
-
92
-    // check if distributor is already present
93
-    if (m_display.m_distris[dist] != null)
94
-      errorExc(String.format("duplicate definition of distributor \"%d\"" +
95
-                             " in line %d of config file", dist, m_lineNo));
96
-
97
-    // create new distributor
98
-    m_display.m_distris[dist] = new Distri(dist, out, pix);
99
-
100
-    // count distributors
101
-    m_display.m_distriCnt++;
102
-  }
103
-
104
-  /**
105
-   * @brief process distributor address from config file
106
-   *
107
-   * @param[in] settingPart2 second half of setting to process
108
-   * @param[in] value value of setting
109
-   */
110
-  void procDistriAddr(String settingPart2, String value)
111
-    throws Exception
112
-  {
113
-    int dist;
114
-    Distri distri;
115
-    InetSocketAddress addr;
116
-
117
-    // get distributor number
118
-    try {
119
-      dist = Integer.parseInt(settingPart2);
120
-    } catch (NumberFormatException e) {
121
-      dist = Constants.distriMaxCnt; // force error in next line
122
-    }
123
-    if (dist >= Constants.distriMaxCnt)
124
-      errorExc(String.format("invalid distributor number \"%d\"" +
125
-                             " in line %d of config file", dist, m_lineNo));
126
-
127
-    // get distributor
128
-    distri = m_display.m_distris[dist];
129
-    if (distri == null)
130
-      errorExc(String.format("no distributor with number \"%d\"" +
131
-                             " in line %d of config file", dist, m_lineNo));
132
-
133
-    // get address
134
-    addr = AddrParser.parseAddr(value);
135
-    if (addr == null) {
136
-      errorExc("invalid addess \"" + value +
137
-               "\" for distributor with number \"%u\"" +
138
-               String.format(" in line %d of config file", m_lineNo));
139
-    }
140
-    distri.m_addr = addr;
141
-  }
142
-
143
-  /**
144
-   * @brief process mapping from config file
145
-   *
146
-   * @param[in] settingPart2 second half of setting to process
147
-   * @param[in] value value of setting
148
-   */
149
-  void procMapping(String settingPart2, String value)
150
-    throws Exception
151
-  {
152
-    Pattern pattern;
153
-    Matcher matcher;
154
-    String strDistri, strChannel, strBase, strFactor, strGamma;
155
-    int dist;
156
-    Distri distri;
157
-    Mapping mapping = null;
158
-    double base = 0.0, factor = 1.0, gamma = 1.0;
159
-
160
-    // split setting part 2 into distributor and channel
161
-    pattern = Pattern.compile("^([0-9]+) +([a-z]+)$");
162
-    matcher = pattern.matcher(settingPart2);
163
-    if (!matcher.find())
164
-      errorExc("invalid mapping specifier \"" + settingPart2 + "\"" +
165
-               String.format(" in line %d of config file", m_lineNo));
166
-    strDistri  = matcher.group(1);
167
-    strChannel = matcher.group(2);
168
-
169
-    // get distributor number
170
-    try {
171
-      dist = Integer.parseInt(strDistri);
172
-    } catch (NumberFormatException e) {
173
-      dist = Constants.distriMaxCnt; // force error in next line
174
-    }
175
-    if (dist >= Constants.distriMaxCnt)
176
-      errorExc("invalid distributor number \"" + strDistri + "\"" +
177
-               String.format(" in line %d of config file", m_lineNo));
178
-
179
-    // get distributor
180
-    distri = m_display.m_distris[dist];
181
-    if (distri == null)
182
-      errorExc(String.format("no distributor with number \"%d\"" +
183
-                             " in line %d of config file", dist, m_lineNo));
184
-
185
-    // get channel
186
-    if (strChannel.equals("red"))
187
-      mapping = distri.m_mapRed;
188
-    else if (strChannel.equals("green"))
189
-      mapping = distri.m_mapGreen;
190
-    else if (strChannel.equals("blue"))
191
-      mapping = distri.m_mapBlue;
192
-    else
193
-      errorExc("invalid channel \"" + strChannel + "\"" +
194
-               String.format(" in line %d of config file", m_lineNo));
195
-
196
-    // split mapping parameters
197
-    pattern = Pattern.compile("^([-+.eE0-9]+) +([-+.eE0-9]+) +([-+.eE0-9]+)$");
198
-    matcher = pattern.matcher(value);
199
-    if (!matcher.find())
200
-      errorExc("invalid mapping parameters \"" + value + "\"" +
201
-               String.format(" in line %d of config file", m_lineNo));
202
-    strBase   = matcher.group(1);
203
-    strFactor = matcher.group(2);
204
-    strGamma  = matcher.group(3);
205
-
206
-    // parse mapping parameters
207
-    try {
208
-      base   = Double.parseDouble(strBase);
209
-      factor = Double.parseDouble(strFactor);
210
-      gamma  = Double.parseDouble(strGamma);
211
-    } catch (NumberFormatException e) {
212
-      errorExc("invalid mapping parameters \"" + value + "\"" +
213
-               String.format(" in line %d of config file", m_lineNo), e);
214
-    }
215
-    if (gamma <= 0.0)
216
-      errorExc(String.format("invalid gamma value \"%f\"" +
217
-                             " in line %d of config file", gamma, m_lineNo));
218
-
219
-    // update mapping parameters
220
-    mapping.set(base, factor, gamma);
221
-  }
222
-
223
-  /**
224
-   * @brief process pixel from config file
225
-   *
226
-   * @param[in] txtPixel text of pixel to process
227
-   * @param[in] distri distributor
228
-   * @param[in] dist number of distributor
229
-   * @param[in] out number of output
230
-   * @param[in] pix number of pixel
231
-   * @param return if parsing was successful
232
-   */
233
-  boolean procPixel(String txtPixel, Distri distri, int dist, int out, int pix)
234
-  {
235
-    Pixel pixel;
236
-    int idx;
237
-
238
-    // get coordinates of pixel
239
-    pixel = PixelParser.parsePixel(txtPixel);
240
-    if (pixel == null) {
241
-      error("invalid pixel \"" + txtPixel + "\"" +
242
-            String.format(" in line %d of config file", m_lineNo));
243
-      return false;
244
-    }
245
-
246
-    // check pixel number
247
-    if (pix >= Constants.pixelMaxCnt || pix >= distri.m_pixelCnt) {
248
-      error(String.format("too many pixels (more than %d)" +
249
-                          " in line %d of config file",
250
-                          distri.m_pixelCnt, m_lineNo));
251
-      return false;
252
-    }
253
-
254
-    // check that pixel is not yet set
255
-    idx = out * distri.m_pixelCnt + pix;
256
-    if (distri.m_pixels[idx] != null) {
257
-      error(String.format("pixel %d of output %d of distributor %d" +
258
-                          " already set to pixel %d,%d" +
259
-                          " in line %d of config file",
260
-                          pix, out, dist, distri.m_pixels[idx].m_x,
261
-                          distri.m_pixels[idx].m_y, m_lineNo));
262
-      return false;
263
-    }
264
-
265
-    // create pixel
266
-    distri.m_pixels[idx] = pixel;
267
-
268
-    // count pixels in total
269
-    m_display.m_pixelCnt++;
270
-
271
-    return true;
272
-  }
273
-
274
-  /**
275
-   * @brief process output from config file
276
-   *
277
-   * @param[in] settingPart2 second half of setting to process
278
-   * @param[in] value value of setting
279
-   */
280
-  void procOutput(String settingPart2, String value)
281
-    throws Exception
282
-  {
283
-    Pixel px;
284
-    int dist, out, pix;
285
-    Distri distri;
286
-    String [] pixels;
287
-    boolean err;
288
-
289
-    // get number of distributor and output
290
-    px = PixelParser.parsePixel(settingPart2); // abuse for "dist,out"
291
-    if (px == null)
292
-      errorExc("invalid output specifier \"" + settingPart2 + "\"" +
293
-               String.format(" in line %d of config file", m_lineNo));
294
-    dist = px.m_x;
295
-    if (dist >= Constants.distriMaxCnt)
296
-      errorExc(String.format("invalid distributor number \"%d\"" +
297
-                             " in line %d of config file", dist, m_lineNo));
298
-    out = px.m_y;
299
-    if (out >= Constants.outputMaxCnt)
300
-      errorExc(String.format("invalid output number \"%d\"" +
301
-                             " in line %d of config file", out, m_lineNo));
302
-
303
-    // get distributor
304
-    distri = m_display.m_distris[dist];
305
-    if (distri == null)
306
-      errorExc(String.format("no distributor with number \"%d\"" +
307
-                             " in line %d of config file", dist, m_lineNo));
308
-
309
-    // check output number
310
-    if (out >= distri.m_outputCnt)
311
-      errorExc(String.format("no output with output number \"%d\"" +
312
-                             " in line %d of config file", out, m_lineNo));
313
-
314
-    // count outputs
315
-    m_display.m_outputCnt++;
316
-
317
-    // process pixels
318
-    pixels = value.split("\\s+");
319
-    err = false;
320
-    for (pix = 0; pix < pixels.length; ++pix)
321
-      if (!procPixel(pixels[pix], distri, dist, out, pix))
322
-        err = true;
323
-    if (err)
324
-      errorExc(String.format("invalid pixels in line %d of config file",
325
-                             m_lineNo));
326
-  }
327
-
328
-  /**
329
-   * @brief process setting from config file
330
-   *
331
-   * @param[in] setting setting to process
332
-   * @param[in] value value of setting
333
-   */
334
-  void procSetting(String setting, String value)
335
-    throws Exception
336
-  {
337
-    InetSocketAddress addr;
338
-    Pixel pix;
339
-
340
-    // replace all whitespace in setting with spaces
341
-    setting = setting.replace('\t', ' ').replace('\r', ' ')
342
-                     .replace('\n', ' ').replace('\f', ' ');
343
-
344
-    // bind address of UDP output
345
-    if (setting.equals("bindAddr")) {
346
-      addr = AddrParser.parseAddr(value);
347
-      if (addr == null) {
348
-        errorExc("invalid addess \"" + value + "\" for \"" + setting +
349
-                 String.format(" in line %d of config file", m_lineNo));
350
-      }
351
-      info("bind address: " + addr.toString());
352
-      m_display.m_bindAddr = addr;
353
-      return;
354
-    }
355
-
356
-    // size of display
357
-    if (setting.equals("size")) {
358
-      pix = PixelParser.parsePixel(value);
359
-      if (pix == null || pix.m_x <= 0 || pix.m_y <= 0) {
360
-        errorExc("invalid value \"" + value + "\" for \"" + setting +
361
-                 String.format(" in line %d of config file", m_lineNo));
362
-      }
363
-      m_display.m_size = pix;
364
-      return;
365
-    }
366
-
367
-    // distributor
368
-    if (setting.startsWith("distributor ")) {
369
-      procDistri(setting.substring(12), value);
370
-      return;
371
-    }
372
-
373
-    // distributor address
374
-    if (setting.startsWith("distributorAddr ")) {
375
-      procDistriAddr(setting.substring(16), value);
376
-      return;
377
-    }
378
-
379
-    // mapping
380
-    if (setting.startsWith("mapping ")) {
381
-      procMapping(setting.substring(8), value);
382
-      return;
383
-    }
384
-
385
-    // distributor
386
-    if (setting.startsWith("output ")) {
387
-      procOutput(setting.substring(7), value);
388
-      return;
389
-    }
390
-
391
-    // unknown setting
392
-    warning("unknown setting \"" + setting + "\"" +
393
-            String.format(" in line %d of config file", m_lineNo) +
394
-            ", ignored");
395
-  }
396
-
397
-  /**
398
-   * @brief process line from config file
399
-   *
400
-   * @param[in] line line to process
401
-   */
402
-  void procLine(String line)
403
-    throws Exception
404
-  {
405
-    Matcher matcher;
406
-    String setting, value;
407
-
408
-    // ignore empty lines: "   # comment"
409
-    matcher = m_patternEmpty.matcher(line);
410
-    if (matcher.find())
411
-      return;
412
-
413
-    // extract setting and value from "   setting   =   value   # comment"
414
-    matcher = m_patternLine.matcher(line);
415
-    if (!matcher.find()) {
416
-      // line cannot be parsed
417
-      if (m_messageIf != null)
418
-        m_messageIf.message(MsgType.Warn,
419
-                            String.format("invalid line %d in config file," +
420
-                                          " ignored", m_lineNo));
421
-      return;
422
-    }
423
-    setting = matcher.group(1);
424
-    value   = matcher.group(2);
425
-
426
-    // process setting
427
-    procSetting(setting, value);
428
-  }
429
-
430
-  /**
431
-   * @brief process config file
432
-   *
433
-   * @param[in] configFileName name of config file to read
434
-   */
435
-  void procFile(String configFileName)
436
-    throws Exception
437
-  {
438
-    FileReader fr = null;
439
-    BufferedReader br = null;
440
-    String line;
441
-
442
-    // check file name
443
-    if (configFileName.length() == 0)
444
-      errorExc("no config file specified");
445
-
446
-    info("using config file \"" + configFileName + "\"");
447
-
448
-    // open file
449
-    try {
450
-      fr = new FileReader(configFileName);
451
-      br = new BufferedReader(fr);
452
-    } catch (FileNotFoundException e) {
453
-      errorExc("cannot open config file \"" + configFileName +
454
-               "\" for reading", e);
455
-    }
456
-
457
-    // read lines and process them
458
-    m_lineNo = 1;
459
-    while ((line = br.readLine()) != null) {
460
-      procLine(line);
461
-      ++m_lineNo;
462
-    }
463
-
464
-    // close file
465
-    br.close();
466
-    fr.close();
467
-
468
-    info(String.format("%dx%d input format, ", m_display.m_size.m_x,
469
-                                               m_display.m_size.m_y) +
470
-         String.format("%d distributors, ",    m_display.m_distriCnt ) +
471
-         String.format("%d outputs, ",         m_display.m_outputCnt ) +
472
-         String.format("%d pixels",            m_display.m_pixelCnt));
473
-  }
474
-
475
-  /**
476
-   * @brief report error message
477
-   * @param[in] txt error text
478
-   */
479
-  private void error(String txt)
480
-  {
481
-    if (m_messageIf != null)
482
-      m_messageIf.message(MsgType.Err, txt + "\n");
483
-  }
484
-
485
-  /**
486
-   * @brief report error message and throw exception
487
-   * @param[in] txt error text
488
-   */
489
-  private void errorExc(String txt)
490
-    throws Exception
491
-  {
492
-    error(txt);
493
-    throw new Exception(txt);
494
-  }
495
-
496
-  /**
497
-   * @brief report error message and throw exception
498
-   * @param[in] txt error text
499
-   * @param[in] e reason for error
500
-   */
501
-  private void errorExc(String txt, Exception e)
502
-    throws Exception
503
-  {
504
-    error(txt + ": " + e.getMessage());
505
-    throw new Exception(txt, e);
506
-  }
507
-
508
-  /**
509
-   * @brief report warning message
510
-   * @param[in] txt warning text
511
-   */
512
-  private void warning(String txt)
513
-  {
514
-    if (m_messageIf != null)
515
-      m_messageIf.message(MsgType.Warn, txt + "\n");
516
-  }
517
-
518
-  /**
519
-   * @brief report information message
520
-   * @param[in] txt information text
521
-   */
522
-  private void info(String txt)
523
-  {
524
-    if (m_messageIf != null)
525
-      m_messageIf.message(MsgType.Info, txt + "\n");
526
-  }
527
-
528
-  Display   m_display;      ///< display to configure
529
-  MessageIf m_messageIf;    ///< message interface to report messages to or null
530
-  int       m_lineNo;       ///< current line in config file
531
-
532
-  Pattern   m_patternEmpty; ///< empty lines
533
-  Pattern   m_patternLine;  ///< setting lines
534
-}
535
-
... ...
@@ -1,61 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-/// package global constants
22
-class Constants
23
-{
24
-  // FlexiPix hardware constants
25
-  static int distriMaxCnt = 4096; /**< maximum number of distributors
26
-                                   *   that can be in the system,
27
-                                   *   number of distributor addresses
28
-                                   *   available */
29
-  static int outputMaxCnt =  128; /**< maximum number of outputs per
30
-                                   *   distributor */
31
-  static int pixelMaxCnt  =  128; /**< maximum number of pixels that can
32
-                                   *   be connected to an output of a
33
-                                   *   distributor */
34
-
35
-  // MCUF constants
36
-  static byte [] mcufHdr    = {  ///< data of MCUF header
37
-    (byte)0x23, (byte)0x54, (byte)0x26, (byte)0x66,
38
-    (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
39
-    (byte)0x00, (byte)0x03, (byte)0x00, (byte)0xFF
40
-  };
41
-  static int mcufOfsOutputs = 5; /**< offset of output count in MCUF data */
42
-  static int mcufOfsPixels  = 7; /**< offset of pixel count in MCUF data */
43
-
44
-  // fixed settings constants
45
-  static int destIpBase   = 0x0A465000; /**< base IP address of distributors,
46
-                                         *   i.e. IP address of distributor 0,
47
-                                         *   10.70.80.0 */
48
-  static int destIpStep   = 0x00000001; /**< IP adress step of distributors,
49
-                                         *   i.e. increment of IP address for
50
-                                         *   every distributor address,
51
-                                         *   0.0.0.1 */
52
-  static int destPort     = 2323;       /**< UDP port the distributors
53
-                                         *   listen on */
54
-
55
-  // default settings constants
56
-  static byte [] bindIp   = {           /**< default IP to bind to */
57
-    (byte)0, (byte)0, (byte)0, (byte)0
58
-  };
59
-  static int     bindPort = 0;          /**< default port to bind to */
60
-}
61
-
... ...
@@ -1,194 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-import java.net.*;
22
-
23
-/// FlexiPix display
24
-public class Display
25
-{
26
-  /**
27
-   * @brief constructor
28
-   * @param[in] configFile name of config file to read
29
-   * @param[in] messageIf message interface to report messages to or null
30
-   */
31
-  public Display(String configFile, MessageIf messageIf)
32
-    throws Exception
33
-  {
34
-    Config config;
35
-
36
-    // set default bind address
37
-    try {
38
-      InetAddress ip = InetAddress.getByAddress(Constants.bindIp);
39
-      m_bindAddr = new InetSocketAddress(ip, Constants.bindPort);
40
-    } catch (java.net.UnknownHostException e) {
41
-      String txt = "internal error: bad default bind address";
42
-      if (messageIf != null)
43
-        messageIf.message(MsgType.Err, txt + "\n");
44
-      throw new Exception(txt, e);
45
-    }
46
-
47
-    // allocate pixel object to store size
48
-    m_size = new Pixel();
49
-
50
-    // allocate distributor array
51
-    m_distris = new Distri [Constants.distriMaxCnt];
52
-
53
-    // no pixels yet
54
-    m_distriCnt = 0;
55
-    m_outputCnt = 0;
56
-    m_pixelCnt  = 0;
57
-
58
-    // parse config file
59
-    config = new Config(this, messageIf);
60
-    try {
61
-      config.procFile(configFile);
62
-    } catch (Exception e) {
63
-      String txt = "reading config file failed\n";
64
-      if (messageIf != null)
65
-        messageIf.message(MsgType.Err, txt + "\n");
66
-      throw new Exception(txt, e);
67
-    }
68
-    config = null;
69
-
70
-    // create socket and bind it
71
-    try {
72
-      m_sock = new DatagramSocket(m_bindAddr);
73
-    } catch (SocketException e) {
74
-      String txt = "creating and binding socket failed\n";
75
-      if (messageIf != null)
76
-        messageIf.message(MsgType.Err, txt + "\n");
77
-      throw new Exception(txt, e);
78
-    }
79
-
80
-    // clear display
81
-    dataClear();
82
-  }
83
-
84
-  /// get width of display
85
-  public int getWidth()
86
-  {
87
-    return m_size.m_x;
88
-  }
89
-
90
-  /// get height of display
91
-  public int getHeight()
92
-  {
93
-    return m_size.m_y;
94
-  }
95
-
96
-  /// clear image data to output
97
-  public void dataClear()
98
-  {
99
-    byte [] black = {(byte)0, (byte)0, (byte)0};
100
-    data(black, 0, 0, 0, 0, 0, m_size.m_x, m_size.m_y);
101
-  }
102
-
103
-  /**
104
-   * @brief set image data to output
105
-   * @param[in] data rectangular section of image data,
106
-   *                 pixels need to be in R8G8B8 format
107
-   * @param[in] strideX stride between two pixels in X direction
108
-   * @param[in] strideY stride between two pixels in Y direction
109
-   * @param[in] base array index of top-left pixel
110
-   * @param[in] x X coordinate of left side of rectangular area
111
-   * @param[in] y Y coordinate of top side of rectangular area
112
-   * @param[in] width with of rectangular area
113
-   * @param[in] height height of rectangular area
114
-   */
115
-  public void data(byte [] data, int strideX, int strideY, int base,
116
-                   int x, int y, int width, int height)
117
-  {
118
-    int dist, out, pix, i, c;
119
-    Distri distri;
120
-    int dest, src;
121
-    Pixel pixel;
122
-    int rx, ry;
123
-
124
-    // set data for all distributors
125
-    for (dist = 0; dist < Constants.distriMaxCnt; ++dist) {
126
-      distri = m_distris[dist];
127
-      if (distri != null) {
128
-
129
-        /* set index to start of RGB data for pixels in message buffer
130
-           (header is already set up and stays the same) */
131
-        dest = Constants.mcufHdr.length;
132
-
133
-        // get RGB data of pixels for every output
134
-        for (out = 0, i = 0; out < distri.m_outputCnt; ++out) {
135
-          for (pix = 0; pix < distri.m_pixelCnt; ++pix, ++i) {
136
-            pixel = distri.m_pixels[i];
137
-            if (pixel != null) {
138
-
139
-              // get pixel coordinates relative to rectangular area of image
140
-              rx = pixel.m_x - x;
141
-              ry = pixel.m_y - y;
142
-              // check if pixel is within rectangular area of image
143
-              if (rx >= 0 && rx < width && ry >= 0 && ry < height) {
144
-                // get pixel data and map it
145
-                src = rx * strideX + ry * strideY + base;
146
-                distri.m_msgBuf[dest+0] = distri.m_mapRed.m_table[data[src+0] & 0xFF];
147
-                distri.m_msgBuf[dest+1] = distri.m_mapGreen.m_table[data[src+1] & 0xFF];
148
-                distri.m_msgBuf[dest+2] = distri.m_mapBlue.m_table[data[src+2] & 0xFF];
149
-              }
150
-
151
-            } // if pixel
152
-            dest += 3;
153
-          } // for pix
154
-        } // for out
155
-
156
-      } // if distri
157
-    } // for distri
158
-  }
159
-
160
-  /// send image data to distributors
161
-  public void send()
162
-  {
163
-    int dist;
164
-    Distri distri;
165
-
166
-    // send data to all distributors
167
-    for (dist = 0; dist < Constants.distriMaxCnt; ++dist) {
168
-      distri = m_distris[dist];
169
-      if (distri != null) {
170
-
171
-        if (distri.m_addr != null) {
172
-          try {
173
-            // send message as UDP packet
174
-            DatagramPacket pack = new DatagramPacket(distri.m_msgBuf,
175
-                                                     distri.m_msgBuf.length,
176
-                                                     distri.m_addr);
177
-            m_sock.send(pack);
178
-          } catch (java.io.IOException e) {
179
-          }
180
-        }
181
-
182
-      } // if distri
183
-    } // for distri
184
-  }
185
-
186
-  InetSocketAddress m_bindAddr;  ///< local network address to bind to
187
-  Pixel             m_size;      ///< size of display
188
-  Distri []         m_distris;   ///< information about distributors
189
-  int               m_distriCnt; ///< total number of distributors
190
-  int               m_outputCnt; ///< total number of outputs
191
-  long              m_pixelCnt;  ///< total number of pixels
192
-  DatagramSocket    m_sock;      ///< socket to send UDP packets
193
-}
194
-
... ...
@@ -1,87 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-import java.net.*;
22
-import java.util.Arrays;
23
-
24
-/// FlexiPix distributor
25
-class Distri
26
-{
27
-  /**
28
-   * @brief constructor
29
-   * @param[in] distri number of this distributor
30
-   * @param[in] outputCnt number of outputs
31
-   * @param[in] pixelCnt number pixels connected to every output
32
-   */
33
-  Distri(int distri, int outputCnt, int pixelCnt)
34
-  {
35
-    // save constructor parameters
36
-    m_distri    = distri;
37
-    m_outputCnt = outputCnt;
38
-    m_pixelCnt  = pixelCnt;
39
-
40
-    // initialize address to default
41
-    try {
42
-      int intIp = Constants.destIpBase +
43
-                  m_distri * Constants.destIpStep;
44
-      byte [] byteIp = {
45
-        (byte)(intIp >> 24),
46
-        (byte)(intIp >> 16),
47
-        (byte)(intIp >>  8),
48
-        (byte)intIp
49
-      };
50
-      m_addr = new InetSocketAddress(InetAddress.getByAddress(byteIp),
51
-                                     Constants.destPort);
52
-    } catch (java.net.UnknownHostException e) {
53
-      m_addr = null;
54
-    } catch (java.io.IOException e) {
55
-      m_addr = null;
56
-    }
57
-
58
-    // allocate default mappings
59
-    m_mapRed   = new Mapping();
60
-    m_mapGreen = new Mapping();
61
-    m_mapBlue  = new Mapping();
62
-
63
-    // allocate pixel array (no pixels configured yet)
64
-    m_pixels = new Pixel [m_outputCnt * m_pixelCnt];
65
-
66
-    // allocate and initialize message buffer
67
-    m_msgBuf = Arrays.copyOf(Constants.mcufHdr,
68
-                             Constants.mcufHdr.length +
69
-                             m_outputCnt * m_pixelCnt * 3);
70
-    m_msgBuf[Constants.mcufOfsOutputs] = (byte)m_outputCnt;
71
-    m_msgBuf[Constants.mcufOfsPixels]  = (byte)m_pixelCnt;
72
-  }
73
-
74
-  int               m_distri;    ///< number of this distributor
75
-  int               m_outputCnt; ///< number of outputs
76
-  int               m_pixelCnt;  ///< number pixels connected to every output
77
-  InetSocketAddress m_addr;      ///< network address of distributor
78
-  Mapping           m_mapRed;    ///< mapping information for red channel
79
-  Mapping           m_mapGreen;  ///< mapping information for Green channel
80
-  Mapping           m_mapBlue;   ///< mapping information for blue channel
81
-  Pixel []          m_pixels;    /**< information about pixels of this
82
-                                      distributor,
83
-                                      index = output * m_pixelCnt + pixel */
84
-  byte []           m_msgBuf;    /**< buffer for current message to send to
85
-                                      distributor */
86
-}
87
-
... ...
@@ -1,75 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-/**
22
- * FlexiPix mapping information
23
- *
24
- * values of channels are mapped according to following formula:
25
- * <display value> := <base> + <factor> * <original value> ^ (1 / <gamma>)
26
- */
27
-class Mapping
28
-{
29
-  /// constructor
30
-  Mapping()
31
-  {
32
-    // default mapping information
33
-    set(0.0, 1.0, 1.0);
34
-  }
35
-
36
-  /**
37
-   * @brief set mapping information
38
-   * @param[in] base base constant for brightness correction
39
-   * @param[in] factor factor for contrast modification
40
-   * @param[in] gamma gamma correction factor, must be > 0.0
41
-   */
42
-  void set(double base, double factor, double gamma)
43
-  {
44
-    double gamma_1;
45
-    int v;
46
-
47
-    // save mapping parameters
48
-    m_base   = base;
49
-    m_factor = factor;
50
-    m_gamma  = gamma;
51
-
52
-    // allocate mapping table
53
-    m_table = new byte [256];
54
-
55
-    // fill mapping table
56
-    gamma_1 = 1.0 / m_gamma;
57
-    for (v = 0; v < 256; ++v) {
58
-      double val = m_base + m_factor * Math.pow((double)v / 255.0, gamma_1);
59
-      if (val < 0.0)
60
-        m_table[v] = (byte)0;
61
-      else if (val > 1.0)
62
-        m_table[v] = (byte)255;
63
-      else
64
-        m_table[v] = (byte)(val * 255.0 + 0.5);
65
-    }
66
-  }
67
-
68
-  double  m_base;   ///< base constant for brightness correction
69
-  double  m_factor; ///< factor for contrast modification
70
-  double  m_gamma;  ///< gamma correction factor, must be > 0.0
71
-  byte [] m_table;  /**< precalculated mapping table,
72
-                     *   index: source image value
73
-                     *   value: display value */
74
-}
75
-
... ...
@@ -1,31 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-/// message callback interface
22
-public interface MessageIf
23
-{
24
-  /**
25
-   * @brief message callback
26
-   * @param[in] type message type
27
-   * @param[in] txt message text
28
-   */
29
-  public void message(MsgType type, String txt);
30
-}
31
-
... ...
@@ -1,23 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-/// message type
22
-public enum MsgType { Err, Warn, Info }
23
-
... ...
@@ -1,35 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-/// FlexiPix pixel
22
-class Pixel
23
-{
24
-  /// constructor
25
-  Pixel()
26
-  {
27
-    // coordinates are unknown yet
28
-    m_x = -1;
29
-    m_y = -1;
30
-  }
31
-
32
-  int m_x; ///< x ccordinate of this pixel (-1 if unknown yet)
33
-  int m_y; ///< y ccordinate of this pixel (-1 if unknown yet)
34
-}
35
-
... ...
@@ -1,58 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix;
20
-
21
-import java.util.regex.*;
22
-
23
-/// parser for a pixel ("x,y") - also abused for similar things
24
-class PixelParser
25
-{
26
-  /**
27
-   * @brief parse pixel - or similar thing
28
-   * @param[in] text pixel coordinates in text form ("x,y")
29
-   * @return pixel or null
30
-   */
31
-  static Pixel parsePixel(String text)
32
-  {
33
-    Pattern pattern;
34
-    Matcher matcher;
35
-    String strX, strY;
36
-    Pixel pixel;
37
-
38
-    // split text at comma
39
-    pattern = Pattern.compile("^([0-9]+),([0-9]+)$");
40
-    matcher = pattern.matcher(text);
41
-    if (!matcher.find())
42
-      return null;
43
-    strX = matcher.group(1);
44
-    strY = matcher.group(2);
45
-
46
-    // parse numbers
47
-    pixel = new Pixel();
48
-    try {
49
-      pixel.m_x = Integer.parseInt(strX);
50
-      pixel.m_y = Integer.parseInt(strY);
51
-    } catch (NumberFormatException e) {
52
-      return null;
53
-    }
54
-
55
-    return pixel;
56
-  }
57
-}
58
-
... ...
@@ -1,84 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix.examples;
20
-
21
-import org.blinkenarea.JFlexiPix.*;
22
-
23
-public class Blink
24
-{
25
-  // entry point
26
-  public static void main(String [] args)
27
-  {
28
-    String config;
29
-    Display display;
30
-    int width, height, i;
31
-    byte [] white = {(byte)255, (byte)255, (byte)255};
32
-
33
-    // check usage
34
-    if (args.length < 1) {
35
-      System.out.println("usage: java Blink <config.flp>");
36
-      return;
37
-    }
38
-    config = args[0];
39
-
40
-    /* create a display, take configuration from a file,
41
-       deliver messages to message method of new Msg object */
42
-    try {
43
-      display = new Display(config, new Msg());
44
-    } catch (Exception e) {
45
-      System.out.println("could not create display\n");
46
-      e.printStackTrace();
47
-      return;
48
-    }
49
-
50
-    // get size and show it
51
-    width  = display.getWidth();
52
-    height = display.getHeight();
53
-    System.out.println("display size:");
54
-    System.out.println(String.format("  width:  %5d", width ));
55
-    System.out.println(String.format("  height: %5d", height));
56
-
57
-    // blink display
58
-    System.out.println("blink");
59
-    for (i = 0; i < 5; ++i) {
60
-
61
-      System.out.println("on");
62
-      display.data(white, 0, 0, 0, 0, 0, width, height);
63
-      display.send();
64
-      try {
65
-        Thread.sleep(500);
66
-      } catch (InterruptedException e) {
67
-      }
68
-
69
-      System.out.println("off");
70
-      display.dataClear();
71
-      display.send();
72
-      try {
73
-        Thread.sleep(500);
74
-      } catch (InterruptedException e) {
75
-      }
76
-
77
-    }
78
-    System.out.println("done");
79
-
80
-    // free display
81
-    display = null;
82
-  }
83
-}
84
-
... ...
@@ -1,83 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix.examples;
20
-
21
-import org.blinkenarea.JFlexiPix.*;
22
-
23
-public class Fade
24
-{
25
-  // entry point
26
-  public static void main(String [] args)
27
-  {
28
-    String config;
29
-    Display display;
30
-    int width, height, i, x, y;
31
-    byte [] image;
32
-
33
-    // check usage
34
-    if (args.length < 1) {
35
-      System.out.println("usage: java Fade <config.flp>");
36
-      return;
37
-    }
38
-    config = args[0];
39
-
40
-    /* create a display, take configuration from a file,
41
-       deliver messages to message method of new Msg object */
42
-    try {
43
-      display = new Display(config, new Msg());
44
-    } catch (Exception e) {
45
-      System.out.println("could not create display\n");
46
-      e.printStackTrace();
47
-      return;
48
-    }
49
-
50
-    // get size and show it
51
-    width  = display.getWidth();
52
-    height = display.getHeight();
53
-    System.out.println("display size:");
54
-    System.out.println(String.format("  width:  %5d", width ));
55
-    System.out.println(String.format("  height: %5d", height));
56
-
57
-    /* create an image with a nice fade:
58
-       black to red from left to right,
59
-       black to green from top to bottom */
60
-    image = new byte [height * width * 3];
61
-    i = 0;
62
-    for (y = 0; y < height; ++y) {
63
-      for (x = 0; x < width; ++x) {
64
-        image[i++] = (byte)(255.0*x/(width -1)+0.5); // red
65
-        image[i++] = (byte)(255.0*y/(height-1)+0.5); // green
66
-        image[i++] = (byte)0;                        // no blue
67
-      }
68
-    }
69
-
70
-    // output image
71
-    display.data(image,
72
-                 3,              // consecutive pixels are 3 bytes apart
73
-                 width * 3,      // consecutive lines are width * 3 bytes apart
74
-                 0,              // top-left pixel is at array index 0
75
-                 0, 0,           // top-left pixel is 0,0
76
-                 width, height); // image size is width,height
77
-    display.send();
78
-
79
-    // free display
80
-    display = null;
81
-  }
82
-}
83
-
... ...
@@ -1,43 +0,0 @@
1
-/* JFlexiPix - Java implementation of FlexiPix output library
2
- *
3
- * Copyright 2010-2011 Stefan Schuermans <stefan schuermans info>
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, version 3 of the License.
8
- *
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
-package org.blinkenarea.JFlexiPix.examples;
20
-
21
-import org.blinkenarea.JFlexiPix.*;
22
-
23
-public class Msg implements MessageIf
24
-{
25
-  /// constructor
26
-  public Msg()
27
-  {
28
-  }
29
-
30
-  /**
31
-   * @brief message callback
32
-   * @param[in] type message type
33
-   * @param[in] txt message text
34
-   */
35
-  public void message(MsgType type, String txt)
36
-  {
37
-    if (type == MsgType.Err)  System.out.print("error: ");
38
-    if (type == MsgType.Warn) System.out.print("warning: ");
39
-    if (type == MsgType.Info) System.out.print("info: ");
40
-    System.out.print(txt);
41
-  }
42
-}
43
-
... ...
@@ -1,325 +0,0 @@
1
-# FlexiPix configuration file
2
-
3
-# the address to bind the local socket to
4
-#  - the FlexiPix network 10.70.80.0/16 must be reachable from this address
5
-bindAddr = 0.0.0.0:0
6
-
7
-# the size of the display
8
-#  - <width>,<height> in pixels
9
-size = 195,32
10
-
11
-# this line adds a new distributor
12
-#  - the general format is: distributor <distributor number> = <number of outputs>,<number of pixel per output>
13
-distributor 0 = 6,64
14
-distributor 1 = 6,64
15
-distributor 2 = 6,64
16
-distributor 3 = 6,64
17
-distributor 4 = 24,16
18
-distributor 5 = 24,16
19
-distributor 6 = 24,16
20
-distributor 7 = 24,16
21
-distributor 8 = 24,16
22
-distributor 9 = 24,16
23
-distributor 10 = 24,16
24
-distributor 11 = 24,16
25
-distributor 12 = 6,64
26
-distributor 13 = 6,64
27
-distributor 14 = 6,64
28
-distributor 15 = 6,64
29
-
30
-# those lines introduce a mapping between the channel values in the video and the values transmitted to the display
31
-#  - mapping is done per distributor and applies to all pixels connected to it
32
-#  - the general format is: mapping <distributor number> (red|green|blue) = <base> <factor> <gamma>
33
-#  - the mapping formula is: <display value> := <base> + <factor> * <original value> ^ (1 / <gamma>)
34
-mapping 0 red = 0.005 0.99 1.0
35
-mapping 0 green = 0.005 0.99 1.0
36
-mapping 0 blue = 0.005 0.99 1.0
37
-mapping 1 red = 0.005 0.99 1.0
38
-mapping 1 green = 0.005 0.99 1.0
39
-mapping 1 blue = 0.005 0.99 1.0
40
-mapping 2 red = 0.005 0.99 1.0
41
-mapping 2 green = 0.005 0.99 1.0
42
-mapping 2 blue = 0.005 0.99 1.0
43
-mapping 3 red = 0.005 0.99 1.0
44
-mapping 3 green = 0.005 0.99 1.0
45
-mapping 3 blue = 0.005 0.99 1.0
46
-mapping 4 red = 0.005 0.99 1.0
47
-mapping 4 green = 0.005 0.99 1.0
48
-mapping 4 blue = 0.005 0.99 1.0
49
-mapping 5 red = 0.005 0.99 1.0
50
-mapping 5 green = 0.005 0.99 1.0
51
-mapping 5 blue = 0.005 0.99 1.0
52
-mapping 6 red = 0.005 0.99 1.0
53
-mapping 6 green = 0.005 0.99 1.0
54
-mapping 6 blue = 0.005 0.99 1.0
55
-mapping 7 red = 0.005 0.99 1.0
56
-mapping 7 green = 0.005 0.99 1.0
57
-mapping 7 blue = 0.005 0.99 1.0
58
-mapping 8 red = 0.005 0.99 1.0
59
-mapping 8 green = 0.005 0.99 1.0
60
-mapping 8 blue = 0.005 0.99 1.0
61
-mapping 9 red = 0.005 0.99 1.0
62
-mapping 9 green = 0.005 0.99 1.0
63
-mapping 9 blue = 0.005 0.99 1.0
64
-mapping 10 red = 0.005 0.99 1.0
65
-mapping 10 green = 0.005 0.99 1.0
66
-mapping 10 blue = 0.005 0.99 1.0
67
-mapping 11 red = 0.005 0.99 1.0
68
-mapping 11 green = 0.005 0.99 1.0
69
-mapping 11 blue = 0.005 0.99 1.0
70
-mapping 12 red = 0.005 0.99 1.0
71
-mapping 12 green = 0.005 0.99 1.0
72
-mapping 12 blue = 0.005 0.99 1.0
73
-mapping 13 red = 0.005 0.99 1.0
74
-mapping 13 green = 0.005 0.99 1.0
75
-mapping 13 blue = 0.005 0.99 1.0
76
-mapping 14 red = 0.005 0.99 1.0
77
-mapping 14 green = 0.005 0.99 1.0
78
-mapping 14 blue = 0.005 0.99 1.0
79
-mapping 15 red = 0.005 0.99 1.0
80
-mapping 15 green = 0.005 0.99 1.0
81
-mapping 15 blue = 0.005 0.99 1.0
82
-
83
-# these lines specify the logical positions of the pixels at an output in movie coordinates
84
-#  - the general format is: output <distributor number>,<output number> = <pixel x>,<pixel y> ...
85
-#  - the order of the pixels is the order they are connected in the chain
86
-output 0,0 = 0,31 0,30 0,29 0,28 0,27 0,26 0,25 0,24 0,23 0,22 0,21 0,20 0,19 0,18 0,17 0,16 0,15 0,14 0,13 0,12 0,11 0,10 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0,0 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9 1,10 1,11 1,12 1,13 1,14 1,15 1,16 1,17 1,18 1,19 1,20 1,21 1,22 1,23 1,24 1,25 1,26 1,27 1,28 1,29 1,30 1,31
87
-output 0,1 = 2,31 2,30 2,29 2,28 2,27 2,26 2,25 2,24 2,23 2,22 2,21 2,20 2,19 2,18 2,17 2,16 2,15 2,14 2,13 2,12 2,11 2,10 2,9 2,8 2,7 2,6 2,5 2,4 2,3 2,2 2,1 2,0 3,0 3,1 3,2 3,3 3,4 3,5 3,6 3,7 3,8 3,9 3,10 3,11 3,12 3,13 3,14 3,15 3,16 3,17 3,18 3,19 3,20 3,21 3,22 3,23 3,24 3,25 3,26 3,27 3,28 3,29 3,30 3,31
88
-output 0,2 = 4,31 4,30 4,29 4,28 4,27 4,26 4,25 4,24 4,23 4,22 4,21 4,20 4,19 4,18 4,17 4,16 4,15 4,14 4,13 4,12 4,11 4,10 4,9 4,8 4,7 4,6 4,5 4,4 4,3 4,2 4,1 4,0 5,0 5,1 5,2 5,3 5,4 5,5 5,6 5,7 5,8 5,9 5,10 5,11 5,12 5,13 5,14 5,15 5,16 5,17 5,18 5,19 5,20 5,21 5,22 5,23 5,24 5,25 5,26 5,27 5,28 5,29 5,30 5,31
89
-output 0,3 = 6,31 6,30 6,29 6,28 6,27 6,26 6,25 6,24 6,23 6,22 6,21 6,20 6,19 6,18 6,17 6,16 6,15 6,14 6,13 6,12 6,11 6,10 6,9 6,8 6,7 6,6 6,5 6,4 6,3 6,2 6,1 6,0 7,0 7,1 7,2 7,3 7,4 7,5 7,6 7,7 7,8 7,9 7,10 7,11 7,12 7,13 7,14 7,15 7,16 7,17 7,18 7,19 7,20 7,21 7,22 7,23 7,24 7,25 7,26 7,27 7,28 7,29 7,30 7,31
90
-output 0,4 = 8,31 8,30 8,29 8,28 8,27 8,26 8,25 8,24 8,23 8,22 8,21 8,20 8,19 8,18 8,17 8,16 8,15 8,14 8,13 8,12 8,11 8,10 8,9 8,8 8,7 8,6 8,5 8,4 8,3 8,2 8,1 8,0 9,0 9,1 9,2 9,3 9,4 9,5 9,6 9,7 9,8 9,9 9,10 9,11 9,12 9,13 9,14 9,15 9,16 9,17 9,18 9,19 9,20 9,21 9,22 9,23 9,24 9,25 9,26 9,27 9,28 9,29 9,30 9,31
91
-output 0,5 = 10,31 10,30 10,29 10,28 10,27 10,26 10,25 10,24 10,23 10,22 10,21 10,20 10,19 10,18 10,17 10,16 10,15 10,14 10,13 10,12 10,11 10,10 10,9 10,8 10,7 10,6 10,5 10,4 10,3 10,2 10,1 10,0 11,0 11,1 11,2 11,3 11,4 11,5 11,6 11,7 11,8 11,9 11,10 11,11 11,12 11,13 11,14 11,15 11,16 11,17 11,18 11,19 11,20 11,21 11,22 11,23 11,24 11,25 11,26 11,27 11,28 11,29 11,30 11,31
92
-output 1,0 = 12,31 12,30 12,29 12,28 12,27 12,26 12,25 12,24 12,23 12,22 12,21 12,20 12,19 12,18 12,17 12,16 12,15 12,14 12,13 12,12 12,11 12,10 12,9 12,8 12,7 12,6 12,5 12,4 12,3 12,2 12,1 12,0 13,0 13,1 13,2 13,3 13,4 13,5 13,6 13,7 13,8 13,9 13,10 13,11 13,12 13,13 13,14 13,15 13,16 13,17 13,18 13,19 13,20 13,21 13,22 13,23 13,24 13,25 13,26 13,27 13,28 13,29 13,30 13,31
93
-output 1,1 = 14,31 14,30 14,29 14,28 14,27 14,26 14,25 14,24 14,23 14,22 14,21 14,20 14,19 14,18 14,17 14,16 14,15 14,14 14,13 14,12 14,11 14,10 14,9 14,8 14,7 14,6 14,5 14,4 14,3 14,2 14,1 14,0 15,0 15,1 15,2 15,3 15,4 15,5 15,6 15,7 15,8 15,9 15,10 15,11 15,12 15,13 15,14 15,15 15,16 15,17 15,18 15,19 15,20 15,21 15,22 15,23 15,24 15,25 15,26 15,27 15,28 15,29 15,30 15,31
94
-output 1,2 = 16,31 16,30 16,29 16,28 16,27 16,26 16,25 16,24 16,23 16,22 16,21 16,20 16,19 16,18 16,17 16,16 16,15 16,14 16,13 16,12 16,11 16,10 16,9 16,8 16,7 16,6 16,5 16,4 16,3 16,2 16,1 16,0 17,0 17,1 17,2 17,3 17,4 17,5 17,6 17,7 17,8 17,9 17,10 17,11 17,12 17,13 17,14 17,15 17,16 17,17 17,18 17,19 17,20 17,21 17,22 17,23 17,24 17,25 17,26 17,27 17,28 17,29 17,30 17,31
95
-output 1,3 = 18,31 18,30 18,29 18,28 18,27 18,26 18,25 18,24 18,23 18,22 18,21 18,20 18,19 18,18 18,17 18,16 18,15 18,14 18,13 18,12 18,11 18,10 18,9 18,8 18,7 18,6 18,5 18,4 18,3 18,2 18,1 18,0 19,0 19,1 19,2 19,3 19,4 19,5 19,6 19,7 19,8 19,9 19,10 19,11 19,12 19,13 19,14 19,15 19,16 19,17 19,18 19,19 19,20 19,21 19,22 19,23 19,24 19,25 19,26 19,27 19,28 19,29 19,30 19,31
96
-output 1,4 = 20,31 20,30 20,29 20,28 20,27 20,26 20,25 20,24 20,23 20,22 20,21 20,20 20,19 20,18 20,17 20,16 20,15 20,14 20,13 20,12 20,11 20,10 20,9 20,8 20,7 20,6 20,5 20,4 20,3 20,2 20,1 20,0 21,0 21,1 21,2 21,3 21,4 21,5 21,6 21,7 21,8 21,9 21,10 21,11 21,12 21,13 21,14 21,15 21,16 21,17 21,18 21,19 21,20 21,21 21,22 21,23 21,24 21,25 21,26 21,27 21,28 21,29 21,30 21,31
97
-output 1,5 = 22,31 22,30 22,29 22,28 22,27 22,26 22,25 22,24 22,23 22,22 22,21 22,20 22,19 22,18 22,17 22,16 22,15 22,14 22,13 22,12 22,11 22,10 22,9 22,8 22,7 22,6 22,5 22,4 22,3 22,2 22,1 22,0 23,0 23,1 23,2 23,3 23,4 23,5 23,6 23,7 23,8 23,9 23,10 23,11 23,12 23,13 23,14 23,15 23,16 23,17 23,18 23,19 23,20 23,21 23,22 23,23 23,24 23,25 23,26 23,27 23,28 23,29 23,30 23,31
98
-output 2,0 = 24,31 24,30 24,29 24,28 24,27 24,26 24,25 24,24 24,23 24,22 24,21 24,20 24,19 24,18 24,17 24,16 24,15 24,14 24,13 24,12 24,11 24,10 24,9 24,8 24,7 24,6 24,5 24,4 24,3 24,2 24,1 24,0 25,0 25,1 25,2 25,3 25,4 25,5 25,6 25,7 25,8 25,9 25,10 25,11 25,12 25,13 25,14 25,15 25,16 25,17 25,18 25,19 25,20 25,21 25,22 25,23 25,24 25,25 25,26 25,27 25,28 25,29 25,30 25,31
99
-output 2,1 = 26,31 26,30 26,29 26,28 26,27 26,26 26,25 26,24 26,23 26,22 26,21 26,20 26,19 26,18 26,17 26,16 26,15 26,14 26,13 26,12 26,11 26,10 26,9 26,8 26,7 26,6 26,5 26,4 26,3 26,2 26,1 26,0 27,0 27,1 27,2 27,3 27,4 27,5 27,6 27,7 27,8 27,9 27,10 27,11 27,12 27,13 27,14 27,15 27,16 27,17 27,18 27,19 27,20 27,21 27,22 27,23 27,24 27,25 27,26 27,27 27,28 27,29 27,30 27,31
100
-output 2,2 = 28,31 28,30 28,29 28,28 28,27 28,26 28,25 28,24 28,23 28,22 28,21 28,20 28,19 28,18 28,17 28,16 28,15 28,14 28,13 28,12 28,11 28,10 28,9 28,8 28,7 28,6 28,5 28,4 28,3 28,2 28,1 28,0 29,0 29,1 29,2 29,3 29,4 29,5 29,6 29,7 29,8 29,9 29,10 29,11 29,12 29,13 29,14 29,15 29,16 29,17 29,18 29,19 29,20 29,21 29,22 29,23 29,24 29,25 29,26 29,27 29,28 29,29 29,30 29,31
101
-output 2,3 = 30,31 30,30 30,29 30,28 30,27 30,26 30,25 30,24 30,23 30,22 30,21 30,20 30,19 30,18 30,17 30,16 30,15 30,14 30,13 30,12 30,11 30,10 30,9 30,8 30,7 30,6 30,5 30,4 30,3 30,2 30,1 30,0 31,0 31,1 31,2 31,3 31,4 31,5 31,6 31,7 31,8 31,9 31,10 31,11 31,12 31,13 31,14 31,15 31,16 31,17 31,18 31,19 31,20 31,21 31,22 31,23 31,24 31,25 31,26 31,27 31,28 31,29 31,30 31,31
102
-output 2,4 = 32,31 32,30 32,29 32,28 32,27 32,26 32,25 32,24 32,23 32,22 32,21 32,20 32,19 32,18 32,17 32,16 32,15 32,14 32,13 32,12 32,11 32,10 32,9 32,8 32,7 32,6 32,5 32,4 32,3 32,2 32,1 32,0 33,0 33,1 33,2 33,3 33,4 33,5 33,6 33,7 33,8 33,9 33,10 33,11 33,12 33,13 33,14 33,15 33,16 33,17 33,18 33,19 33,20 33,21 33,22 33,23 33,24 33,25 33,26 33,27 33,28 33,29 33,30 33,31
103
-output 2,5 = 34,31 34,30 34,29 34,28 34,27 34,26 34,25 34,24 34,23 34,22 34,21 34,20 34,19 34,18 34,17 34,16 34,15 34,14 34,13 34,12 34,11 34,10 34,9 34,8 34,7 34,6 34,5 34,4 34,3 34,2 34,1 34,0 35,0 35,1 35,2 35,3 35,4 35,5 35,6 35,7 35,8 35,9 35,10 35,11 35,12 35,13 35,14 35,15 35,16 35,17 35,18 35,19 35,20 35,21 35,22 35,23 35,24 35,25 35,26 35,27 35,28 35,29 35,30 35,31
104
-output 3,0 = 36,31 36,30 36,29 36,28 36,27 36,26 36,25 36,24 36,23 36,22 36,21 36,20 36,19 36,18 36,17 36,16 36,15 36,14 36,13 36,12 36,11 36,10 36,9 36,8 36,7 36,6 36,5 36,4 36,3 36,2 36,1 36,0 37,0 37,1 37,2 37,3 37,4 37,5 37,6 37,7 37,8 37,9 37,10 37,11 37,12 37,13 37,14 37,15 37,16 37,17 37,18 37,19 37,20 37,21 37,22 37,23 37,24 37,25 37,26 37,27 37,28 37,29 37,30 37,31
105
-output 3,1 = 38,31 38,30 38,29 38,28 38,27 38,26 38,25 38,24 38,23 38,22 38,21 38,20 38,19 38,18 38,17 38,16 38,15 38,14 38,13 38,12 38,11 38,10 38,9 38,8 38,7 38,6 38,5 38,4 38,3 38,2 38,1 38,0 39,0 39,1 39,2 39,3 39,4 39,5 39,6 39,7 39,8 39,9 39,10 39,11 39,12 39,13 39,14 39,15 39,16 39,17 39,18 39,19 39,20 39,21 39,22 39,23 39,24 39,25 39,26 39,27 39,28 39,29 39,30 39,31
106
-output 3,2 = 40,31 40,30 40,29 40,28 40,27 40,26 40,25 40,24 40,23 40,22 40,21 40,20 40,19 40,18 40,17 40,16 40,15 40,14 40,13 40,12 40,11 40,10 40,9 40,8 40,7 40,6 40,5 40,4 40,3 40,2 40,1 40,0 41,0 41,1 41,2 41,3 41,4 41,5 41,6 41,7 41,8 41,9 41,10 41,11 41,12 41,13 41,14 41,15 41,16 41,17 41,18 41,19 41,20 41,21 41,22 41,23 41,24 41,25 41,26 41,27 41,28 41,29 41,30 41,31
107
-output 3,3 = 42,31 42,30 42,29 42,28 42,27 42,26 42,25 42,24 42,23 42,22 42,21 42,20 42,19 42,18 42,17 42,16 42,15 42,14 42,13 42,12 42,11 42,10 42,9 42,8 42,7 42,6 42,5 42,4 42,3 42,2 42,1 42,0 43,0 43,1 43,2 43,3 43,4 43,5 43,6 43,7 43,8 43,9 43,10 43,11 43,12 43,13 43,14 43,15 43,16 43,17 43,18 43,19 43,20 43,21 43,22 43,23 43,24 43,25 43,26 43,27 43,28 43,29 43,30 43,31
108
-output 3,4 = 44,31 44,30 44,29 44,28 44,27 44,26 44,25 44,24 44,23 44,22 44,21 44,20 44,19 44,18 44,17 44,16 44,15 44,14 44,13 44,12 44,11 44,10 44,9 44,8 44,7 44,6 44,5 44,4 44,3 44,2 44,1 44,0 45,0 45,1 45,2 45,3 45,4 45,5 45,6 45,7 45,8 45,9 45,10 45,11 45,12 45,13 45,14 45,15 45,16 45,17 45,18 45,19 45,20 45,21 45,22 45,23 45,24 45,25 45,26 45,27 45,28 45,29 45,30 45,31
109
-output 3,5 = 46,31 46,30 46,29 46,28 46,27 46,26 46,25 46,24 46,23 46,22 46,21 46,20 46,19 46,18 46,17 46,16 46,15 46,14 46,13 46,12 46,11 46,10 46,9 46,8 46,7 46,6 46,5 46,4 46,3 46,2 46,1 46,0 47,0 47,1 47,2 47,3 47,4 47,5 47,6 47,7 47,8 47,9 47,10 47,11 47,12 47,13 47,14 47,15 47,16 47,17 47,18 47,19 47,20 47,21 47,22 47,23 47,24 47,25 47,26 47,27 47,28 47,29 47,30 47,31
110
-output 4,0 = 72,31 72,30 72,29 72,28 72,27 72,26 72,25 72,24 72,23 72,22 72,21 72,20 72,19 72,18 72,17 72,16
111
-output 4,1 = 71,31 71,30 71,29 71,28 71,27 71,26 71,25 71,24 71,23 71,22 71,21 71,20 71,19 71,18 71,17 71,16
112
-output 4,2 = 70,31 70,30 70,29 70,28 70,27 70,26 70,25 70,24 70,23 70,22 70,21 70,20 70,19 70,18 70,17 70,16
113
-output 4,3 = 69,31 69,30 69,29 69,28 69,27 69,26 69,25 69,24 69,23 69,22 69,21 69,20 69,19 69,18 69,17 69,16
114
-output 4,4 = 68,31 68,30 68,29 68,28 68,27 68,26 68,25 68,24 68,23 68,22 68,21 68,20 68,19 68,18 68,17 68,16
115
-output 4,5 = 67,31 67,30 67,29 67,28 67,27 67,26 67,25 67,24 67,23 67,22 67,21 67,20 67,19 67,18 67,17 67,16
116
-output 4,6 = 66,31 66,30 66,29 66,28 66,27 66,26 66,25 66,24 66,23 66,22 66,21 66,20 66,19 66,18 66,17 66,16
117
-output 4,7 = 65,31 65,30 65,29 65,28 65,27 65,26 65,25 65,24 65,23 65,22 65,21 65,20 65,19 65,18 65,17 65,16
118
-output 4,8 = 64,31 64,30 64,29 64,28 64,27 64,26 64,25 64,24 64,23 64,22 64,21 64,20 64,19 64,18 64,17 64,16
119
-output 4,9 = 63,31 63,30 63,29 63,28 63,27 63,26 63,25 63,24 63,23 63,22 63,21 63,20 63,19 63,18 63,17 63,16
120
-output 4,10 = 62,31 62,30 62,29 62,28 62,27 62,26 62,25 62,24 62,23 62,22 62,21 62,20 62,19 62,18 62,17 62,16
121
-output 4,11 = 61,31 61,30 61,29 61,28 61,27 61,26 61,25 61,24 61,23 61,22 61,21 61,20 61,19 61,18 61,17 61,16
122
-output 4,12 = 60,31 60,30 60,29 60,28 60,27 60,26 60,25 60,24 60,23 60,22 60,21 60,20 60,19 60,18 60,17 60,16
123
-output 4,13 = 59,31 59,30 59,29 59,28 59,27 59,26 59,25 59,24 59,23 59,22 59,21 59,20 59,19 59,18 59,17 59,16
124
-output 4,14 = 58,31 58,30 58,29 58,28 58,27 58,26 58,25 58,24 58,23 58,22 58,21 58,20 58,19 58,18 58,17 58,16
125
-output 4,15 = 57,31 57,30 57,29 57,28 57,27 57,26 57,25 57,24 57,23 57,22 57,21 57,20 57,19 57,18 57,17 57,16
126
-output 4,16 = 56,31 56,30 56,29 56,28 56,27 56,26 56,25 56,24 56,23 56,22 56,21 56,20 56,19 56,18 56,17 56,16
127
-output 4,17 = 55,31 55,30 55,29 55,28 55,27 55,26 55,25 55,24 55,23 55,22 55,21 55,20 55,19 55,18 55,17 55,16
128
-output 4,18 = 54,31 54,30 54,29 54,28 54,27 54,26 54,25 54,24 54,23 54,22 54,21 54,20 54,19 54,18 54,17 54,16
129
-output 4,19 = 53,31 53,30 53,29 53,28 53,27 53,26 53,25 53,24 53,23 53,22 53,21 53,20 53,19 53,18 53,17 53,16
130
-output 4,20 = 52,31 52,30 52,29 52,28 52,27 52,26 52,25 52,24 52,23 52,22 52,21 52,20 52,19 52,18 52,17 52,16
131
-output 4,21 = 51,31 51,30 51,29 51,28 51,27 51,26 51,25 51,24 51,23 51,22 51,21 51,20 51,19 51,18 51,17 51,16
132
-output 4,22 = 50,31 50,30 50,29 50,28 50,27 50,26 50,25 50,24 50,23 50,22 50,21 50,20 50,19 50,18 50,17 50,16
133
-output 4,23 = 49,31 49,30 49,29 49,28 49,27 49,26 49,25 49,24 49,23 49,22 49,21 49,20 49,19 49,18 49,17 49,16
134
-output 5,0 = 72,0 72,1 72,2 72,3 72,4 72,5 72,6 72,7 72,8 72,9 72,10 72,11 72,12 72,13 72,14 72,15
135
-output 5,1 = 71,0 71,1 71,2 71,3 71,4 71,5 71,6 71,7 71,8 71,9 71,10 71,11 71,12 71,13 71,14 71,15
136
-output 5,2 = 70,0 70,1 70,2 70,3 70,4 70,5 70,6 70,7 70,8 70,9 70,10 70,11 70,12 70,13 70,14 70,15
137
-output 5,3 = 69,0 69,1 69,2 69,3 69,4 69,5 69,6 69,7 69,8 69,9 69,10 69,11 69,12 69,13 69,14 69,15
138
-output 5,4 = 68,0 68,1 68,2 68,3 68,4 68,5 68,6 68,7 68,8 68,9 68,10 68,11 68,12 68,13 68,14 68,15
139
-output 5,5 = 67,0 67,1 67,2 67,3 67,4 67,5 67,6 67,7 67,8 67,9 67,10 67,11 67,12 67,13 67,14 67,15
140
-output 5,6 = 66,0 66,1 66,2 66,3 66,4 66,5 66,6 66,7 66,8 66,9 66,10 66,11 66,12 66,13 66,14 66,15
141
-output 5,7 = 65,0 65,1 65,2 65,3 65,4 65,5 65,6 65,7 65,8 65,9 65,10 65,11 65,12 65,13 65,14 65,15
142
-output 5,8 = 64,0 64,1 64,2 64,3 64,4 64,5 64,6 64,7 64,8 64,9 64,10 64,11 64,12 64,13 64,14 64,15
143
-output 5,9 = 63,0 63,1 63,2 63,3 63,4 63,5 63,6 63,7 63,8 63,9 63,10 63,11 63,12 63,13 63,14 63,15
144
-output 5,10 = 62,0 62,1 62,2 62,3 62,4 62,5 62,6 62,7 62,8 62,9 62,10 62,11 62,12 62,13 62,14 62,15
145
-output 5,11 = 61,0 61,1 61,2 61,3 61,4 61,5 61,6 61,7 61,8 61,9 61,10 61,11 61,12 61,13 61,14 61,15
146
-output 5,12 = 60,0 60,1 60,2 60,3 60,4 60,5 60,6 60,7 60,8 60,9 60,10 60,11 60,12 60,13 60,14 60,15
147
-output 5,13 = 59,0 59,1 59,2 59,3 59,4 59,5 59,6 59,7 59,8 59,9 59,10 59,11 59,12 59,13 59,14 59,15
148
-output 5,14 = 58,0 58,1 58,2 58,3 58,4 58,5 58,6 58,7 58,8 58,9 58,10 58,11 58,12 58,13 58,14 58,15
149
-output 5,15 = 57,0 57,1 57,2 57,3 57,4 57,5 57,6 57,7 57,8 57,9 57,10 57,11 57,12 57,13 57,14 57,15
150
-output 5,16 = 56,0 56,1 56,2 56,3 56,4 56,5 56,6 56,7 56,8 56,9 56,10 56,11 56,12 56,13 56,14 56,15
151
-output 5,17 = 55,0 55,1 55,2 55,3 55,4 55,5 55,6 55,7 55,8 55,9 55,10 55,11 55,12 55,13 55,14 55,15
152
-output 5,18 = 54,0 54,1 54,2 54,3 54,4 54,5 54,6 54,7 54,8 54,9 54,10 54,11 54,12 54,13 54,14 54,15
153
-output 5,19 = 53,0 53,1 53,2 53,3 53,4 53,5 53,6 53,7 53,8 53,9 53,10 53,11 53,12 53,13 53,14 53,15
154
-output 5,20 = 52,0 52,1 52,2 52,3 52,4 52,5 52,6 52,7 52,8 52,9 52,10 52,11 52,12 52,13 52,14 52,15
155
-output 5,21 = 51,0 51,1 51,2 51,3 51,4 51,5 51,6 51,7 51,8 51,9 51,10 51,11 51,12 51,13 51,14 51,15
156
-output 5,22 = 50,0 50,1 50,2 50,3 50,4 50,5 50,6 50,7 50,8 50,9 50,10 50,11 50,12 50,13 50,14 50,15
157
-output 5,23 = 49,0 49,1 49,2 49,3 49,4 49,5 49,6 49,7 49,8 49,9 49,10 49,11 49,12 49,13 49,14 49,15
158
-output 6,0 = 96,31 96,30 96,29 96,28 96,27 96,26 96,25 96,24 96,23 96,22 96,21 96,20 96,19 96,18 96,17 96,16
159
-output 6,1 = 95,31 95,30 95,29 95,28 95,27 95,26 95,25 95,24 95,23 95,22 95,21 95,20 95,19 95,18 95,17 95,16
160
-output 6,2 = 94,31 94,30 94,29 94,28 94,27 94,26 94,25 94,24 94,23 94,22 94,21 94,20 94,19 94,18 94,17 94,16
161
-output 6,3 = 93,31 93,30 93,29 93,28 93,27 93,26 93,25 93,24 93,23 93,22 93,21 93,20 93,19 93,18 93,17 93,16
162
-output 6,4 = 92,31 92,30 92,29 92,28 92,27 92,26 92,25 92,24 92,23 92,22 92,21 92,20 92,19 92,18 92,17 92,16
163
-output 6,5 = 91,31 91,30 91,29 91,28 91,27 91,26 91,25 91,24 91,23 91,22 91,21 91,20 91,19 91,18 91,17 91,16
164
-output 6,6 = 90,31 90,30 90,29 90,28 90,27 90,26 90,25 90,24 90,23 90,22 90,21 90,20 90,19 90,18 90,17 90,16
165
-output 6,7 = 89,31 89,30 89,29 89,28 89,27 89,26 89,25 89,24 89,23 89,22 89,21 89,20 89,19 89,18 89,17 89,16
166
-output 6,8 = 88,31 88,30 88,29 88,28 88,27 88,26 88,25 88,24 88,23 88,22 88,21 88,20 88,19 88,18 88,17 88,16
167
-output 6,9 = 87,31 87,30 87,29 87,28 87,27 87,26 87,25 87,24 87,23 87,22 87,21 87,20 87,19 87,18 87,17 87,16
168
-output 6,10 = 86,31 86,30 86,29 86,28 86,27 86,26 86,25 86,24 86,23 86,22 86,21 86,20 86,19 86,18 86,17 86,16
169
-output 6,11 = 85,31 85,30 85,29 85,28 85,27 85,26 85,25 85,24 85,23 85,22 85,21 85,20 85,19 85,18 85,17 85,16
170
-output 6,12 = 84,31 84,30 84,29 84,28 84,27 84,26 84,25 84,24 84,23 84,22 84,21 84,20 84,19 84,18 84,17 84,16
171
-output 6,13 = 83,31 83,30 83,29 83,28 83,27 83,26 83,25 83,24 83,23 83,22 83,21 83,20 83,19 83,18 83,17 83,16
172
-output 6,14 = 82,31 82,30 82,29 82,28 82,27 82,26 82,25 82,24 82,23 82,22 82,21 82,20 82,19 82,18 82,17 82,16
173
-output 6,15 = 81,31 81,30 81,29 81,28 81,27 81,26 81,25 81,24 81,23 81,22 81,21 81,20 81,19 81,18 81,17 81,16
174
-output 6,16 = 80,31 80,30 80,29 80,28 80,27 80,26 80,25 80,24 80,23 80,22 80,21 80,20 80,19 80,18 80,17 80,16
175
-output 6,17 = 79,31 79,30 79,29 79,28 79,27 79,26 79,25 79,24 79,23 79,22 79,21 79,20 79,19 79,18 79,17 79,16
176
-output 6,18 = 78,31 78,30 78,29 78,28 78,27 78,26 78,25 78,24 78,23 78,22 78,21 78,20 78,19 78,18 78,17 78,16
177
-output 6,19 = 77,31 77,30 77,29 77,28 77,27 77,26 77,25 77,24 77,23 77,22 77,21 77,20 77,19 77,18 77,17 77,16
178
-output 6,20 = 76,31 76,30 76,29 76,28 76,27 76,26 76,25 76,24 76,23 76,22 76,21 76,20 76,19 76,18 76,17 76,16
179
-output 6,21 = 75,31 75,30 75,29 75,28 75,27 75,26 75,25 75,24 75,23 75,22 75,21 75,20 75,19 75,18 75,17 75,16
180
-output 6,22 = 74,31 74,30 74,29 74,28 74,27 74,26 74,25 74,24 74,23 74,22 74,21 74,20 74,19 74,18 74,17 74,16
181
-output 6,23 = 73,31 73,30 73,29 73,28 73,27 73,26 73,25 73,24 73,23 73,22 73,21 73,20 73,19 73,18 73,17 73,16
182
-output 7,0 = 96,0 96,1 96,2 96,3 96,4 96,5 96,6 96,7 96,8 96,9 96,10 96,11 96,12 96,13 96,14 96,15
183
-output 7,1 = 95,0 95,1 95,2 95,3 95,4 95,5 95,6 95,7 95,8 95,9 95,10 95,11 95,12 95,13 95,14 95,15
184
-output 7,2 = 94,0 94,1 94,2 94,3 94,4 94,5 94,6 94,7 94,8 94,9 94,10 94,11 94,12 94,13 94,14 94,15
185
-output 7,3 = 93,0 93,1 93,2 93,3 93,4 93,5 93,6 93,7 93,8 93,9 93,10 93,11 93,12 93,13 93,14 93,15
186
-output 7,4 = 92,0 92,1 92,2 92,3 92,4 92,5 92,6 92,7 92,8 92,9 92,10 92,11 92,12 92,13 92,14 92,15
187
-output 7,5 = 91,0 91,1 91,2 91,3 91,4 91,5 91,6 91,7 91,8 91,9 91,10 91,11 91,12 91,13 91,14 91,15
188
-output 7,6 = 90,0 90,1 90,2 90,3 90,4 90,5 90,6 90,7 90,8 90,9 90,10 90,11 90,12 90,13 90,14 90,15
189
-output 7,7 = 89,0 89,1 89,2 89,3 89,4 89,5 89,6 89,7 89,8 89,9 89,10 89,11 89,12 89,13 89,14 89,15
190
-output 7,8 = 88,0 88,1 88,2 88,3 88,4 88,5 88,6 88,7 88,8 88,9 88,10 88,11 88,12 88,13 88,14 88,15
191
-output 7,9 = 87,0 87,1 87,2 87,3 87,4 87,5 87,6 87,7 87,8 87,9 87,10 87,11 87,12 87,13 87,14 87,15
192
-output 7,10 = 86,0 86,1 86,2 86,3 86,4 86,5 86,6 86,7 86,8 86,9 86,10 86,11 86,12 86,13 86,14 86,15
193
-output 7,11 = 85,0 85,1 85,2 85,3 85,4 85,5 85,6 85,7 85,8 85,9 85,10 85,11 85,12 85,13 85,14 85,15
194
-output 7,12 = 84,0 84,1 84,2 84,3 84,4 84,5 84,6 84,7 84,8 84,9 84,10 84,11 84,12 84,13 84,14 84,15
195
-output 7,13 = 83,0 83,1 83,2 83,3 83,4 83,5 83,6 83,7 83,8 83,9 83,10 83,11 83,12 83,13 83,14 83,15
196
-output 7,14 = 82,0 82,1 82,2 82,3 82,4 82,5 82,6 82,7 82,8 82,9 82,10 82,11 82,12 82,13 82,14 82,15
197
-output 7,15 = 81,0 81,1 81,2 81,3 81,4 81,5 81,6 81,7 81,8 81,9 81,10 81,11 81,12 81,13 81,14 81,15
198
-output 7,16 = 80,0 80,1 80,2 80,3 80,4 80,5 80,6 80,7 80,8 80,9 80,10 80,11 80,12 80,13 80,14 80,15
199
-output 7,17 = 79,0 79,1 79,2 79,3 79,4 79,5 79,6 79,7 79,8 79,9 79,10 79,11 79,12 79,13 79,14 79,15
200
-output 7,18 = 78,0 78,1 78,2 78,3 78,4 78,5 78,6 78,7 78,8 78,9 78,10 78,11 78,12 78,13 78,14 78,15
201
-output 7,19 = 77,0 77,1 77,2 77,3 77,4 77,5 77,6 77,7 77,8 77,9 77,10 77,11 77,12 77,13 77,14 77,15
202
-output 7,20 = 76,0 76,1 76,2 76,3 76,4 76,5 76,6 76,7 76,8 76,9 76,10 76,11 76,12 76,13 76,14 76,15
203
-output 7,21 = 75,0 75,1 75,2 75,3 75,4 75,5 75,6 75,7 75,8 75,9 75,10 75,11 75,12 75,13 75,14 75,15
204
-output 7,22 = 74,0 74,1 74,2 74,3 74,4 74,5 74,6 74,7 74,8 74,9 74,10 74,11 74,12 74,13 74,14 74,15
205
-output 7,23 = 73,0 73,1 73,2 73,3 73,4 73,5 73,6 73,7 73,8 73,9 73,10 73,11 73,12 73,13 73,14 73,15
206
-output 8,0 = 98,31 98,30 98,29 98,28 98,27 98,26 98,25 98,24 98,23 98,22 98,21 98,20 98,19 98,18 98,17 98,16
207
-output 8,1 = 99,31 99,30 99,29 99,28 99,27 99,26 99,25 99,24 99,23 99,22 99,21 99,20 99,19 99,18 99,17 99,16
208
-output 8,2 = 100,31 100,30 100,29 100,28 100,27 100,26 100,25 100,24 100,23 100,22 100,21 100,20 100,19 100,18 100,17 100,16
209
-output 8,3 = 101,31 101,30 101,29 101,28 101,27 101,26 101,25 101,24 101,23 101,22 101,21 101,20 101,19 101,18 101,17 101,16
210
-output 8,4 = 102,31 102,30 102,29 102,28 102,27 102,26 102,25 102,24 102,23 102,22 102,21 102,20 102,19 102,18 102,17 102,16
211
-output 8,5 = 103,31 103,30 103,29 103,28 103,27 103,26 103,25 103,24 103,23 103,22 103,21 103,20 103,19 103,18 103,17 103,16
212
-output 8,6 = 104,31 104,30 104,29 104,28 104,27 104,26 104,25 104,24 104,23 104,22 104,21 104,20 104,19 104,18 104,17 104,16
213
-output 8,7 = 105,31 105,30 105,29 105,28 105,27 105,26 105,25 105,24 105,23 105,22 105,21 105,20 105,19 105,18 105,17 105,16
214
-output 8,8 = 106,31 106,30 106,29 106,28 106,27 106,26 106,25 106,24 106,23 106,22 106,21 106,20 106,19 106,18 106,17 106,16
215
-output 8,9 = 107,31 107,30 107,29 107,28 107,27 107,26 107,25 107,24 107,23 107,22 107,21 107,20 107,19 107,18 107,17 107,16
216
-output 8,10 = 108,31 108,30 108,29 108,28 108,27 108,26 108,25 108,24 108,23 108,22 108,21 108,20 108,19 108,18 108,17 108,16
217
-output 8,11 = 109,31 109,30 109,29 109,28 109,27 109,26 109,25 109,24 109,23 109,22 109,21 109,20 109,19 109,18 109,17 109,16
218
-output 8,12 = 110,31 110,30 110,29 110,28 110,27 110,26 110,25 110,24 110,23 110,22 110,21 110,20 110,19 110,18 110,17 110,16
219
-output 8,13 = 111,31 111,30 111,29 111,28 111,27 111,26 111,25 111,24 111,23 111,22 111,21 111,20 111,19 111,18 111,17 111,16
220
-output 8,14 = 112,31 112,30 112,29 112,28 112,27 112,26 112,25 112,24 112,23 112,22 112,21 112,20 112,19 112,18 112,17 112,16
221
-output 8,15 = 113,31 113,30 113,29 113,28 113,27 113,26 113,25 113,24 113,23 113,22 113,21 113,20 113,19 113,18 113,17 113,16
222
-output 8,16 = 114,31 114,30 114,29 114,28 114,27 114,26 114,25 114,24 114,23 114,22 114,21 114,20 114,19 114,18 114,17 114,16
223
-output 8,17 = 115,31 115,30 115,29 115,28 115,27 115,26 115,25 115,24 115,23 115,22 115,21 115,20 115,19 115,18 115,17 115,16
224
-output 8,18 = 116,31 116,30 116,29 116,28 116,27 116,26 116,25 116,24 116,23 116,22 116,21 116,20 116,19 116,18 116,17 116,16
225
-output 8,19 = 117,31 117,30 117,29 117,28 117,27 117,26 117,25 117,24 117,23 117,22 117,21 117,20 117,19 117,18 117,17 117,16
226
-output 8,20 = 118,31 118,30 118,29 118,28 118,27 118,26 118,25 118,24 118,23 118,22 118,21 118,20 118,19 118,18 118,17 118,16
227
-output 8,21 = 119,31 119,30 119,29 119,28 119,27 119,26 119,25 119,24 119,23 119,22 119,21 119,20 119,19 119,18 119,17 119,16
228
-output 8,22 = 120,31 120,30 120,29 120,28 120,27 120,26 120,25 120,24 120,23 120,22 120,21 120,20 120,19 120,18 120,17 120,16
229
-output 8,23 = 121,31 121,30 121,29 121,28 121,27 121,26 121,25 121,24 121,23 121,22 121,21 121,20 121,19 121,18 121,17 121,16
230
-output 9,0 = 98,0 98,1 98,2 98,3 98,4 98,5 98,6 98,7 98,8 98,9 98,10 98,11 98,12 98,13 98,14 98,15
231
-output 9,1 = 99,0 99,1 99,2 99,3 99,4 99,5 99,6 99,7 99,8 99,9 99,10 99,11 99,12 99,13 99,14 99,15
232
-output 9,2 = 100,0 100,1 100,2 100,3 100,4 100,5 100,6 100,7 100,8 100,9 100,10 100,11 100,12 100,13 100,14 100,15
233
-output 9,3 = 101,0 101,1 101,2 101,3 101,4 101,5 101,6 101,7 101,8 101,9 101,10 101,11 101,12 101,13 101,14 101,15
234
-output 9,4 = 102,0 102,1 102,2 102,3 102,4 102,5 102,6 102,7 102,8 102,9 102,10 102,11 102,12 102,13 102,14 102,15
235
-output 9,5 = 103,0 103,1 103,2 103,3 103,4 103,5 103,6 103,7 103,8 103,9 103,10 103,11 103,12 103,13 103,14 103,15
236
-output 9,6 = 104,0 104,1 104,2 104,3 104,4 104,5 104,6 104,7 104,8 104,9 104,10 104,11 104,12 104,13 104,14 104,15
237
-output 9,7 = 105,0 105,1 105,2 105,3 105,4 105,5 105,6 105,7 105,8 105,9 105,10 105,11 105,12 105,13 105,14 105,15
238
-output 9,8 = 106,0 106,1 106,2 106,3 106,4 106,5 106,6 106,7 106,8 106,9 106,10 106,11 106,12 106,13 106,14 106,15
239
-output 9,9 = 107,0 107,1 107,2 107,3 107,4 107,5 107,6 107,7 107,8 107,9 107,10 107,11 107,12 107,13 107,14 107,15
240
-output 9,10 = 108,0 108,1 108,2 108,3 108,4 108,5 108,6 108,7 108,8 108,9 108,10 108,11 108,12 108,13 108,14 108,15
241
-output 9,11 = 109,0 109,1 109,2 109,3 109,4 109,5 109,6 109,7 109,8 109,9 109,10 109,11 109,12 109,13 109,14 109,15
242
-output 9,12 = 110,0 110,1 110,2 110,3 110,4 110,5 110,6 110,7 110,8 110,9 110,10 110,11 110,12 110,13 110,14 110,15
243
-output 9,13 = 111,0 111,1 111,2 111,3 111,4 111,5 111,6 111,7 111,8 111,9 111,10 111,11 111,12 111,13 111,14 111,15
244
-output 9,14 = 112,0 112,1 112,2 112,3 112,4 112,5 112,6 112,7 112,8 112,9 112,10 112,11 112,12 112,13 112,14 112,15
245
-output 9,15 = 113,0 113,1 113,2 113,3 113,4 113,5 113,6 113,7 113,8 113,9 113,10 113,11 113,12 113,13 113,14 113,15
246
-output 9,16 = 114,0 114,1 114,2 114,3 114,4 114,5 114,6 114,7 114,8 114,9 114,10 114,11 114,12 114,13 114,14 114,15
247
-output 9,17 = 115,0 115,1 115,2 115,3 115,4 115,5 115,6 115,7 115,8 115,9 115,10 115,11 115,12 115,13 115,14 115,15
248
-output 9,18 = 116,0 116,1 116,2 116,3 116,4 116,5 116,6 116,7 116,8 116,9 116,10 116,11 116,12 116,13 116,14 116,15
249
-output 9,19 = 117,0 117,1 117,2 117,3 117,4 117,5 117,6 117,7 117,8 117,9 117,10 117,11 117,12 117,13 117,14 117,15
250
-output 9,20 = 118,0 118,1 118,2 118,3 118,4 118,5 118,6 118,7 118,8 118,9 118,10 118,11 118,12 118,13 118,14 118,15
251
-output 9,21 = 119,0 119,1 119,2 119,3 119,4 119,5 119,6 119,7 119,8 119,9 119,10 119,11 119,12 119,13 119,14 119,15
252
-output 9,22 = 120,0 120,1 120,2 120,3 120,4 120,5 120,6 120,7 120,8 120,9 120,10 120,11 120,12 120,13 120,14 120,15
253
-output 9,23 = 121,0 121,1 121,2 121,3 121,4 121,5 121,6 121,7 121,8 121,9 121,10 121,11 121,12 121,13 121,14 121,15
254
-output 10,0 = 122,31 122,30 122,29 122,28 122,27 122,26 122,25 122,24 122,23 122,22 122,21 122,20 122,19 122,18 122,17 122,16
255
-output 10,1 = 123,31 123,30 123,29 123,28 123,27 123,26 123,25 123,24 123,23 123,22 123,21 123,20 123,19 123,18 123,17 123,16
256
-output 10,2 = 124,31 124,30 124,29 124,28 124,27 124,26 124,25 124,24 124,23 124,22 124,21 124,20 124,19 124,18 124,17 124,16
257
-output 10,3 = 125,31 125,30 125,29 125,28 125,27 125,26 125,25 125,24 125,23 125,22 125,21 125,20 125,19 125,18 125,17 125,16
258
-output 10,4 = 126,31 126,30 126,29 126,28 126,27 126,26 126,25 126,24 126,23 126,22 126,21 126,20 126,19 126,18 126,17 126,16
259
-output 10,5 = 127,31 127,30 127,29 127,28 127,27 127,26 127,25 127,24 127,23 127,22 127,21 127,20 127,19 127,18 127,17 127,16
260
-output 10,6 = 128,31 128,30 128,29 128,28 128,27 128,26 128,25 128,24 128,23 128,22 128,21 128,20 128,19 128,18 128,17 128,16
261
-output 10,7 = 129,31 129,30 129,29 129,28 129,27 129,26 129,25 129,24 129,23 129,22 129,21 129,20 129,19 129,18 129,17 129,16
262
-output 10,8 = 130,31 130,30 130,29 130,28 130,27 130,26 130,25 130,24 130,23 130,22 130,21 130,20 130,19 130,18 130,17 130,16
263
-output 10,9 = 131,31 131,30 131,29 131,28 131,27 131,26 131,25 131,24 131,23 131,22 131,21 131,20 131,19 131,18 131,17 131,16
264
-output 10,10 = 132,31 132,30 132,29 132,28 132,27 132,26 132,25 132,24 132,23 132,22 132,21 132,20 132,19 132,18 132,17 132,16
265
-output 10,11 = 133,31 133,30 133,29 133,28 133,27 133,26 133,25 133,24 133,23 133,22 133,21 133,20 133,19 133,18 133,17 133,16
266
-output 10,12 = 134,31 134,30 134,29 134,28 134,27 134,26 134,25 134,24 134,23 134,22 134,21 134,20 134,19 134,18 134,17 134,16
267
-output 10,13 = 135,31 135,30 135,29 135,28 135,27 135,26 135,25 135,24 135,23 135,22 135,21 135,20 135,19 135,18 135,17 135,16
268
-output 10,14 = 136,31 136,30 136,29 136,28 136,27 136,26 136,25 136,24 136,23 136,22 136,21 136,20 136,19 136,18 136,17 136,16
269
-output 10,15 = 137,31 137,30 137,29 137,28 137,27 137,26 137,25 137,24 137,23 137,22 137,21 137,20 137,19 137,18 137,17 137,16
270
-output 10,16 = 138,31 138,30 138,29 138,28 138,27 138,26 138,25 138,24 138,23 138,22 138,21 138,20 138,19 138,18 138,17 138,16
271
-output 10,17 = 139,31 139,30 139,29 139,28 139,27 139,26 139,25 139,24 139,23 139,22 139,21 139,20 139,19 139,18 139,17 139,16
272
-output 10,18 = 140,31 140,30 140,29 140,28 140,27 140,26 140,25 140,24 140,23 140,22 140,21 140,20 140,19 140,18 140,17 140,16
273
-output 10,19 = 141,31 141,30 141,29 141,28 141,27 141,26 141,25 141,24 141,23 141,22 141,21 141,20 141,19 141,18 141,17 141,16
274
-output 10,20 = 142,31 142,30 142,29 142,28 142,27 142,26 142,25 142,24 142,23 142,22 142,21 142,20 142,19 142,18 142,17 142,16
275
-output 10,21 = 143,31 143,30 143,29 143,28 143,27 143,26 143,25 143,24 143,23 143,22 143,21 143,20 143,19 143,18 143,17 143,16
276
-output 10,22 = 144,31 144,30 144,29 144,28 144,27 144,26 144,25 144,24 144,23 144,22 144,21 144,20 144,19 144,18 144,17 144,16
277
-output 10,23 = 145,31 145,30 145,29 145,28 145,27 145,26 145,25 145,24 145,23 145,22 145,21 145,20 145,19 145,18 145,17 145,16
278
-output 11,0 = 122,0 122,1 122,2 122,3 122,4 122,5 122,6 122,7 122,8 122,9 122,10 122,11 122,12 122,13 122,14 122,15
279
-output 11,1 = 123,0 123,1 123,2 123,3 123,4 123,5 123,6 123,7 123,8 123,9 123,10 123,11 123,12 123,13 123,14 123,15
280
-output 11,2 = 124,0 124,1 124,2 124,3 124,4 124,5 124,6 124,7 124,8 124,9 124,10 124,11 124,12 124,13 124,14 124,15
281
-output 11,3 = 125,0 125,1 125,2 125,3 125,4 125,5 125,6 125,7 125,8 125,9 125,10 125,11 125,12 125,13 125,14 125,15
282
-output 11,4 = 126,0 126,1 126,2 126,3 126,4 126,5 126,6 126,7 126,8 126,9 126,10 126,11 126,12 126,13 126,14 126,15
283
-output 11,5 = 127,0 127,1 127,2 127,3 127,4 127,5 127,6 127,7 127,8 127,9 127,10 127,11 127,12 127,13 127,14 127,15
284
-output 11,6 = 128,0 128,1 128,2 128,3 128,4 128,5 128,6 128,7 128,8 128,9 128,10 128,11 128,12 128,13 128,14 128,15
285
-output 11,7 = 129,0 129,1 129,2 129,3 129,4 129,5 129,6 129,7 129,8 129,9 129,10 129,11 129,12 129,13 129,14 129,15
286
-output 11,8 = 130,0 130,1 130,2 130,3 130,4 130,5 130,6 130,7 130,8 130,9 130,10 130,11 130,12 130,13 130,14 130,15
287
-output 11,9 = 131,0 131,1 131,2 131,3 131,4 131,5 131,6 131,7 131,8 131,9 131,10 131,11 131,12 131,13 131,14 131,15
288
-output 11,10 = 132,0 132,1 132,2 132,3 132,4 132,5 132,6 132,7 132,8 132,9 132,10 132,11 132,12 132,13 132,14 132,15
289
-output 11,11 = 133,0 133,1 133,2 133,3 133,4 133,5 133,6 133,7 133,8 133,9 133,10 133,11 133,12 133,13 133,14 133,15
290
-output 11,12 = 134,0 134,1 134,2 134,3 134,4 134,5 134,6 134,7 134,8 134,9 134,10 134,11 134,12 134,13 134,14 134,15
291
-output 11,13 = 135,0 135,1 135,2 135,3 135,4 135,5 135,6 135,7 135,8 135,9 135,10 135,11 135,12 135,13 135,14 135,15
292
-output 11,14 = 136,0 136,1 136,2 136,3 136,4 136,5 136,6 136,7 136,8 136,9 136,10 136,11 136,12 136,13 136,14 136,15
293
-output 11,15 = 137,0 137,1 137,2 137,3 137,4 137,5 137,6 137,7 137,8 137,9 137,10 137,11 137,12 137,13 137,14 137,15
294
-output 11,16 = 138,0 138,1 138,2 138,3 138,4 138,5 138,6 138,7 138,8 138,9 138,10 138,11 138,12 138,13 138,14 138,15
295
-output 11,17 = 139,0 139,1 139,2 139,3 139,4 139,5 139,6 139,7 139,8 139,9 139,10 139,11 139,12 139,13 139,14 139,15
296
-output 11,18 = 140,0 140,1 140,2 140,3 140,4 140,5 140,6 140,7 140,8 140,9 140,10 140,11 140,12 140,13 140,14 140,15
297
-output 11,19 = 141,0 141,1 141,2 141,3 141,4 141,5 141,6 141,7 141,8 141,9 141,10 141,11 141,12 141,13 141,14 141,15
298
-output 11,20 = 142,0 142,1 142,2 142,3 142,4 142,5 142,6 142,7 142,8 142,9 142,10 142,11 142,12 142,13 142,14 142,15
299
-output 11,21 = 143,0 143,1 143,2 143,3 143,4 143,5 143,6 143,7 143,8 143,9 143,10 143,11 143,12 143,13 143,14 143,15
300
-output 11,22 = 144,0 144,1 144,2 144,3 144,4 144,5 144,6 144,7 144,8 144,9 144,10 144,11 144,12 144,13 144,14 144,15
301
-output 11,23 = 145,0 145,1 145,2 145,3 145,4 145,5 145,6 145,7 145,8 145,9 145,10 145,11 145,12 145,13 145,14 145,15
302
-output 12,0 = 157,31 157,30 157,29 157,28 157,27 157,26 157,25 157,24 157,23 157,22 157,21 157,20 157,19 157,18 157,17 157,16 157,15 157,14 157,13 157,12 157,11 157,10 157,9 157,8 157,7 157,6 157,5 157,4 157,3 157,2 157,1 157,0 158,0 158,1 158,2 158,3 158,4 158,5 158,6 158,7 158,8 158,9 158,10 158,11 158,12 158,13 158,14 158,15 158,16 158,17 158,18 158,19 158,20 158,21 158,22 158,23 158,24 158,25 158,26 158,27 158,28 158,29 158,30 158,31
303
-output 12,1 = 155,31 155,30 155,29 155,28 155,27 155,26 155,25 155,24 155,23 155,22 155,21 155,20 155,19 155,18 155,17 155,16 155,15 155,14 155,13 155,12 155,11 155,10 155,9 155,8 155,7 155,6 155,5 155,4 155,3 155,2 155,1 155,0 156,0 156,1 156,2 156,3 156,4 156,5 156,6 156,7 156,8 156,9 156,10 156,11 156,12 156,13 156,14 156,15 156,16 156,17 156,18 156,19 156,20 156,21 156,22 156,23 156,24 156,25 156,26 156,27 156,28 156,29 156,30 156,31
304
-output 12,2 = 153,31 153,30 153,29 153,28 153,27 153,26 153,25 153,24 153,23 153,22 153,21 153,20 153,19 153,18 153,17 153,16 153,15 153,14 153,13 153,12 153,11 153,10 153,9 153,8 153,7 153,6 153,5 153,4 153,3 153,2 153,1 153,0 154,0 154,1 154,2 154,3 154,4 154,5 154,6 154,7 154,8 154,9 154,10 154,11 154,12 154,13 154,14 154,15 154,16 154,17 154,18 154,19 154,20 154,21 154,22 154,23 154,24 154,25 154,26 154,27 154,28 154,29 154,30 154,31
305
-output 12,3 = 151,31 151,30 151,29 151,28 151,27 151,26 151,25 151,24 151,23 151,22 151,21 151,20 151,19 151,18 151,17 151,16 151,15 151,14 151,13 151,12 151,11 151,10 151,9 151,8 151,7 151,6 151,5 151,4 151,3 151,2 151,1 151,0 152,0 152,1 152,2 152,3 152,4 152,5 152,6 152,7 152,8 152,9 152,10 152,11 152,12 152,13 152,14 152,15 152,16 152,17 152,18 152,19 152,20 152,21 152,22 152,23 152,24 152,25 152,26 152,27 152,28 152,29 152,30 152,31
306
-output 12,4 = 149,31 149,30 149,29 149,28 149,27 149,26 149,25 149,24 149,23 149,22 149,21 149,20 149,19 149,18 149,17 149,16 149,15 149,14 149,13 149,12 149,11 149,10 149,9 149,8 149,7 149,6 149,5 149,4 149,3 149,2 149,1 149,0 150,0 150,1 150,2 150,3 150,4 150,5 150,6 150,7 150,8 150,9 150,10 150,11 150,12 150,13 150,14 150,15 150,16 150,17 150,18 150,19 150,20 150,21 150,22 150,23 150,24 150,25 150,26 150,27 150,28 150,29 150,30 150,31
307
-output 12,5 = 147,31 147,30 147,29 147,28 147,27 147,26 147,25 147,24 147,23 147,22 147,21 147,20 147,19 147,18 147,17 147,16 147,15 147,14 147,13 147,12 147,11 147,10 147,9 147,8 147,7 147,6 147,5 147,4 147,3 147,2 147,1 147,0 148,0 148,1 148,2 148,3 148,4 148,5 148,6 148,7 148,8 148,9 148,10 148,11 148,12 148,13 148,14 148,15 148,16 148,17 148,18 148,19 148,20 148,21 148,22 148,23 148,24 148,25 148,26 148,27 148,28 148,29 148,30 148,31
308
-output 13,0 = 169,31 169,30 169,29 169,28 169,27 169,26 169,25 169,24 169,23 169,22 169,21 169,20 169,19 169,18 169,17 169,16 169,15 169,14 169,13 169,12 169,11 169,10 169,9 169,8 169,7 169,6 169,5 169,4 169,3 169,2 169,1 169,0 170,0 170,1 170,2 170,3 170,4 170,5 170,6 170,7 170,8 170,9 170,10 170,11 170,12 170,13 170,14 170,15 170,16 170,17 170,18 170,19 170,20 170,21 170,22 170,23 170,24 170,25 170,26 170,27 170,28 170,29 170,30 170,31
309
-output 13,1 = 167,31 167,30 167,29 167,28 167,27 167,26 167,25 167,24 167,23 167,22 167,21 167,20 167,19 167,18 167,17 167,16 167,15 167,14 167,13 167,12 167,11 167,10 167,9 167,8 167,7 167,6 167,5 167,4 167,3 167,2 167,1 167,0 168,0 168,1 168,2 168,3 168,4 168,5 168,6 168,7 168,8 168,9 168,10 168,11 168,12 168,13 168,14 168,15 168,16 168,17 168,18 168,19 168,20 168,21 168,22 168,23 168,24 168,25 168,26 168,27 168,28 168,29 168,30 168,31
310
-output 13,2 = 165,31 165,30 165,29 165,28 165,27 165,26 165,25 165,24 165,23 165,22 165,21 165,20 165,19 165,18 165,17 165,16 165,15 165,14 165,13 165,12 165,11 165,10 165,9 165,8 165,7 165,6 165,5 165,4 165,3 165,2 165,1 165,0 166,0 166,1 166,2 166,3 166,4 166,5 166,6 166,7 166,8 166,9 166,10 166,11 166,12 166,13 166,14 166,15 166,16 166,17 166,18 166,19 166,20 166,21 166,22 166,23 166,24 166,25 166,26 166,27 166,28 166,29 166,30 166,31
311
-output 13,3 = 163,31 163,30 163,29 163,28 163,27 163,26 163,25 163,24 163,23 163,22 163,21 163,20 163,19 163,18 163,17 163,16 163,15 163,14 163,13 163,12 163,11 163,10 163,9 163,8 163,7 163,6 163,5 163,4 163,3 163,2 163,1 163,0 164,0 164,1 164,2 164,3 164,4 164,5 164,6 164,7 164,8 164,9 164,10 164,11 164,12 164,13 164,14 164,15 164,16 164,17 164,18 164,19 164,20 164,21 164,22 164,23 164,24 164,25 164,26 164,27 164,28 164,29 164,30 164,31
312
-output 13,4 = 161,31 161,30 161,29 161,28 161,27 161,26 161,25 161,24 161,23 161,22 161,21 161,20 161,19 161,18 161,17 161,16 161,15 161,14 161,13 161,12 161,11 161,10 161,9 161,8 161,7 161,6 161,5 161,4 161,3 161,2 161,1 161,0 162,0 162,1 162,2 162,3 162,4 162,5 162,6 162,7 162,8 162,9 162,10 162,11 162,12 162,13 162,14 162,15 162,16 162,17 162,18 162,19 162,20 162,21 162,22 162,23 162,24 162,25 162,26 162,27 162,28 162,29 162,30 162,31
313
-output 13,5 = 159,31 159,30 159,29 159,28 159,27 159,26 159,25 159,24 159,23 159,22 159,21 159,20 159,19 159,18 159,17 159,16 159,15 159,14 159,13 159,12 159,11 159,10 159,9 159,8 159,7 159,6 159,5 159,4 159,3 159,2 159,1 159,0 160,0 160,1 160,2 160,3 160,4 160,5 160,6 160,7 160,8 160,9 160,10 160,11 160,12 160,13 160,14 160,15 160,16 160,17 160,18 160,19 160,20 160,21 160,22 160,23 160,24 160,25 160,26 160,27 160,28 160,29 160,30 160,31
314
-output 14,0 = 181,31 181,30 181,29 181,28 181,27 181,26 181,25 181,24 181,23 181,22 181,21 181,20 181,19 181,18 181,17 181,16 181,15 181,14 181,13 181,12 181,11 181,10 181,9 181,8 181,7 181,6 181,5 181,4 181,3 181,2 181,1 181,0 182,0 182,1 182,2 182,3 182,4 182,5 182,6 182,7 182,8 182,9 182,10 182,11 182,12 182,13 182,14 182,15 182,16 182,17 182,18 182,19 182,20 182,21 182,22 182,23 182,24 182,25 182,26 182,27 182,28 182,29 182,30 182,31
315
-output 14,1 = 179,31 179,30 179,29 179,28 179,27 179,26 179,25 179,24 179,23 179,22 179,21 179,20 179,19 179,18 179,17 179,16 179,15 179,14 179,13 179,12 179,11 179,10 179,9 179,8 179,7 179,6 179,5 179,4 179,3 179,2 179,1 179,0 180,0 180,1 180,2 180,3 180,4 180,5 180,6 180,7 180,8 180,9 180,10 180,11 180,12 180,13 180,14 180,15 180,16 180,17 180,18 180,19 180,20 180,21 180,22 180,23 180,24 180,25 180,26 180,27 180,28 180,29 180,30 180,31
316
-output 14,2 = 177,31 177,30 177,29 177,28 177,27 177,26 177,25 177,24 177,23 177,22 177,21 177,20 177,19 177,18 177,17 177,16 177,15 177,14 177,13 177,12 177,11 177,10 177,9 177,8 177,7 177,6 177,5 177,4 177,3 177,2 177,1 177,0 178,0 178,1 178,2 178,3 178,4 178,5 178,6 178,7 178,8 178,9 178,10 178,11 178,12 178,13 178,14 178,15 178,16 178,17 178,18 178,19 178,20 178,21 178,22 178,23 178,24 178,25 178,26 178,27 178,28 178,29 178,30 178,31
317
-output 14,3 = 175,31 175,30 175,29 175,28 175,27 175,26 175,25 175,24 175,23 175,22 175,21 175,20 175,19 175,18 175,17 175,16 175,15 175,14 175,13 175,12 175,11 175,10 175,9 175,8 175,7 175,6 175,5 175,4 175,3 175,2 175,1 175,0 176,0 176,1 176,2 176,3 176,4 176,5 176,6 176,7 176,8 176,9 176,10 176,11 176,12 176,13 176,14 176,15 176,16 176,17 176,18 176,19 176,20 176,21 176,22 176,23 176,24 176,25 176,26 176,27 176,28 176,29 176,30 176,31
318
-output 14,4 = 173,31 173,30 173,29 173,28 173,27 173,26 173,25 173,24 173,23 173,22 173,21 173,20 173,19 173,18 173,17 173,16 173,15 173,14 173,13 173,12 173,11 173,10 173,9 173,8 173,7 173,6 173,5 173,4 173,3 173,2 173,1 173,0 174,0 174,1 174,2 174,3 174,4 174,5 174,6 174,7 174,8 174,9 174,10 174,11 174,12 174,13 174,14 174,15 174,16 174,17 174,18 174,19 174,20 174,21 174,22 174,23 174,24 174,25 174,26 174,27 174,28 174,29 174,30 174,31
319
-output 14,5 = 171,31 171,30 171,29 171,28 171,27 171,26 171,25 171,24 171,23 171,22 171,21 171,20 171,19 171,18 171,17 171,16 171,15 171,14 171,13 171,12 171,11 171,10 171,9 171,8 171,7 171,6 171,5 171,4 171,3 171,2 171,1 171,0 172,0 172,1 172,2 172,3 172,4 172,5 172,6 172,7 172,8 172,9 172,10 172,11 172,12 172,13 172,14 172,15 172,16 172,17 172,18 172,19 172,20 172,21 172,22 172,23 172,24 172,25 172,26 172,27 172,28 172,29 172,30 172,31
320
-output 15,0 = 193,31 193,30 193,29 193,28 193,27 193,26 193,25 193,24 193,23 193,22 193,21 193,20 193,19 193,18 193,17 193,16 193,15 193,14 193,13 193,12 193,11 193,10 193,9 193,8 193,7 193,6 193,5 193,4 193,3 193,2 193,1 193,0 194,0 194,1 194,2 194,3 194,4 194,5 194,6 194,7 194,8 194,9 194,10 194,11 194,12 194,13 194,14 194,15 194,16 194,17 194,18 194,19 194,20 194,21 194,22 194,23 194,24 194,25 194,26 194,27 194,28 194,29 194,30 194,31
321
-output 15,1 = 191,31 191,30 191,29 191,28 191,27 191,26 191,25 191,24 191,23 191,22 191,21 191,20 191,19 191,18 191,17 191,16 191,15 191,14 191,13 191,12 191,11 191,10 191,9 191,8 191,7 191,6 191,5 191,4 191,3 191,2 191,1 191,0 192,0 192,1 192,2 192,3 192,4 192,5 192,6 192,7 192,8 192,9 192,10 192,11 192,12 192,13 192,14 192,15 192,16 192,17 192,18 192,19 192,20 192,21 192,22 192,23 192,24 192,25 192,26 192,27 192,28 192,29 192,30 192,31
322
-output 15,2 = 189,31 189,30 189,29 189,28 189,27 189,26 189,25 189,24 189,23 189,22 189,21 189,20 189,19 189,18 189,17 189,16 189,15 189,14 189,13 189,12 189,11 189,10 189,9 189,8 189,7 189,6 189,5 189,4 189,3 189,2 189,1 189,0 190,0 190,1 190,2 190,3 190,4 190,5 190,6 190,7 190,8 190,9 190,10 190,11 190,12 190,13 190,14 190,15 190,16 190,17 190,18 190,19 190,20 190,21 190,22 190,23 190,24 190,25 190,26 190,27 190,28 190,29 190,30 190,31
323
-output 15,3 = 187,31 187,30 187,29 187,28 187,27 187,26 187,25 187,24 187,23 187,22 187,21 187,20 187,19 187,18 187,17 187,16 187,15 187,14 187,13 187,12 187,11 187,10 187,9 187,8 187,7 187,6 187,5 187,4 187,3 187,2 187,1 187,0 188,0 188,1 188,2 188,3 188,4 188,5 188,6 188,7 188,8 188,9 188,10 188,11 188,12 188,13 188,14 188,15 188,16 188,17 188,18 188,19 188,20 188,21 188,22 188,23 188,24 188,25 188,26 188,27 188,28 188,29 188,30 188,31
324
-output 15,4 = 185,31 185,30 185,29 185,28 185,27 185,26 185,25 185,24 185,23 185,22 185,21 185,20 185,19 185,18 185,17 185,16 185,15 185,14 185,13 185,12 185,11 185,10 185,9 185,8 185,7 185,6 185,5 185,4 185,3 185,2 185,1 185,0 186,0 186,1 186,2 186,3 186,4 186,5 186,6 186,7 186,8 186,9 186,10 186,11 186,12 186,13 186,14 186,15 186,16 186,17 186,18 186,19 186,20 186,21 186,22 186,23 186,24 186,25 186,26 186,27 186,28 186,29 186,30 186,31
325
-output 15,5 = 183,31 183,30 183,29 183,28 183,27 183,26 183,25 183,24 183,23 183,22 183,21 183,20 183,19 183,18 183,17 183,16 183,15 183,14 183,13 183,12 183,11 183,10 183,9 183,8 183,7 183,6 183,5 183,4 183,3 183,2 183,1 183,0 184,0 184,1 184,2 184,3 184,4 184,5 184,6 184,7 184,8 184,9 184,10 184,11 184,12 184,13 184,14 184,15 184,16 184,17 184,18 184,19 184,20 184,21 184,22 184,23 184,24 184,25 184,26 184,27 184,28 184,29 184,30 184,31
... ...
@@ -1,27 +0,0 @@
1
-# FlexiPix configuration file
2
-
3
-# the address to bind the local socket to
4
-#  - the FlexiPix network 10.70.80.0/16 must be reachable from this address
5
-bindAddr = 0.0.0.0:0
6
-
7
-# the size of the display
8
-#  - <width>,<height> in pixels
9
-size = 8,8
10
-
11
-# this line adds a new distributor
12
-#  - the general format is: distributor <distributor number> = <number of outputs>,<number of pixel per output>
13
-distributor 0 = 6,64
14
-
15
-# those lines introduce a mapping between the channel values in the video and the values transmitted to the display
16
-#  - mapping is done per distributor and applies to all pixels connected to it
17
-#  - the general format is: mapping <distributor number> (red|green|blue) = <base> <factor> <gamma>
18
-#  - the mapping formula is: <display value> := <base> + <factor> * <original value> ^ (1 / <gamma>)
19
-mapping 0 red = 0.0 1.0 1.0
20
-mapping 0 green = 0.0 1.0 1.0
21
-mapping 0 blue = 0.0 1.0 1.0
22
-
23
-# these lines specify the logical positions of the pixels at an output in movie coordinates
24
-#  - the general format is: output <distributor number>,<output number> = <pixel x>,<pixel y> ...
25
-#  - the order of the pixels is the order they are connected in the chain
26
-output 0,0 = 0,0 1,0 2,0 3,0 4,0 5,0 6,0 7,0 7,1 6,1 5,1 4,1 3,1 2,1 1,1 0,1 0,2 1,2 2,2 3,2 4,2 5,2 6,2 7,2 7,3 6,3 5,3 4,3 3,3 2,3 1,3 0,3 0,4 1,4 2,4 3,4 4,4 5,4 6,4 7,4 7,5 6,5 5,5 4,5 3,5 2,5 1,5 0,5 0,6 1,6 2,6 3,6 4,6 5,6 6,6 7,6 7,7 6,7 5,7 4,7 3,7 2,7 1,7 0,7
27
-
28 0