pax_global_header 0000666 0000000 0000000 00000000064 14221064535 0014514 g ustar 00root root 0000000 0000000 52 comment=7fc425cc526d2520a8ddf458fc65015959503b5f
hcs-0.2.1/ 0000775 0000000 0000000 00000000000 14221064535 0012271 5 ustar 00root root 0000000 0000000 hcs-0.2.1/ISOdate-help.pd 0000664 0000000 0000000 00000001125 14221064535 0015033 0 ustar 00root root 0000000 0000000 #N canvas 0 31 393 252 10;
#X msg 139 82 bang;
#X symbolatom 138 156 0 0 0 0 - - -;
#X text 49 29 output the current date in ISO format;
#X obj 139 114 ISOdate;
#N canvas 280 175 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control;
#X text 12 45 DESCRIPTION output the current date in ISO format;
#X text 12 65 INLET_0 bang;
#X text 12 85 OUTLET_0 symbol;
#X restore 332 217 pd META;
#X connect 0 0 3 0;
#X connect 3 0 1 0;
hcs-0.2.1/ISOdate.pd 0000664 0000000 0000000 00000000704 14221064535 0014107 0 ustar 00root root 0000000 0000000 #N canvas 0 31 462 310 10;
#X obj 93 84 zexy/date -----------;
#X obj 93 31 inlet;
#X obj 93 58 bang;
#X obj 93 229 outlet;
#X obj 93 175 pack float symbol symbol;
#X obj 93 202 zexy/makesymbol %s-%s-%s;
#X obj 118 129 makefilename %02d;
#X obj 247 129 makefilename %02d;
#X connect 0 0 4 0;
#X connect 0 1 6 0;
#X connect 0 2 7 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 6 0 4 1;
#X connect 7 0 4 2;
hcs-0.2.1/ISOtime-help.pd 0000664 0000000 0000000 00000001125 14221064535 0015054 0 ustar 00root root 0000000 0000000 #N canvas 0 31 362 237 10;
#X msg 139 82 bang;
#X symbolatom 138 156 0 0 0 0 - - -;
#X obj 139 114 ISOtime;
#X text 49 29 output the current time in ISO format;
#N canvas 280 175 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control;
#X text 12 45 DESCRIPTION output the current time in ISO format;
#X text 12 65 INLET_0 bang;
#X text 12 85 OUTLET_0 symbol;
#X restore 302 212 pd META;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
hcs-0.2.1/ISOtime.pd 0000664 0000000 0000000 00000001740 14221064535 0014131 0 ustar 00root root 0000000 0000000 #N canvas 0 31 470 318 10;
#X obj 93 31 inlet;
#X obj 93 58 bang;
#X obj 93 229 outlet;
#N canvas 0 22 462 312 addzero 0;
#X obj 186 38 inlet;
#X obj 191 255 outlet;
#X obj 188 102 moses 10;
#X obj 244 187 zexy/makesymbol %s;
#X obj 65 187 zexy/makesymbol 0%s;
#X connect 0 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X restore 136 135 pd addzero;
#N canvas 0 22 462 312 addzero 0;
#X obj 186 38 inlet;
#X obj 191 255 outlet;
#X obj 188 102 moses 10;
#X obj 244 187 zexy/makesymbol %s;
#X obj 65 187 zexy/makesymbol 0%s;
#X connect 0 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X restore 216 135 pd addzero;
#X obj 93 84 zexy/time -----------;
#X obj 93 175 pack float symbol symbol;
#X obj 93 202 zexy/makesymbol %s:%s:%s;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 3 0 6 1;
#X connect 4 0 6 2;
#X connect 5 0 6 0;
#X connect 5 1 3 0;
#X connect 5 2 4 0;
#X connect 6 0 7 0;
#X connect 7 0 2 0;
hcs-0.2.1/LICENSE.txt 0000664 0000000 0000000 00000104513 14221064535 0014120 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
hcs-0.2.1/Makefile 0000664 0000000 0000000 00000003526 14221064535 0013737 0 ustar 00root root 0000000 0000000 # Makefile to build class 'helloworld' for Pure Data.
# Needs Makefile.pdlibbuilder as helper makefile for platform-dependent build
# settings and rules.
# library name
lib.name = hcs
# input source file (class name == source file basename)
class.sources = \
canvas_name.c \
ce_path.c \
classpath.c \
colorpanel.c \
cursor.c \
folder_list.c \
group.c \
helppath.c \
passwd.c \
screensize.c \
setenv.c \
split_path.c \
sql_query.c \
stat.c \
sys_gui.c \
uname.c \
unsetenv.c \
version.c \
window_name.c \
$(empty)
# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
# be included automatically
abstractions = \
ISOdate.pd \
ISOtime.pd \
ascii2int.pd \
autoscale.pd \
blocksize_in_ms.pd \
debounce.pd \
debug.pd \
embed.pd \
file_type.pd \
float2ascii.pd \
get-audio-dialog.pd \
get-midi-dialog.pd \
gid2group_name.pd \
group_name2gid.pd \
hostname.pd \
make-audio-dialog.pd \
mouse_region.pd \
noquit.pd \
pi.pd \
pointer_position.pd \
pwm.pd \
pwm~.pd \
split_my_msgs.pd \
square~.pd \
tcl_version.pd \
tkconsole.pd \
tremolo~.pd \
uid2username.pd \
username2uid.pd \
$(empty)
# standard supplementary files
datafiles = $(lib.name)-meta.pd README.txt LICENSE.txt
# example patches and related files, in the 'examples' subfolder
datadirs = examples
# some Tcl/Tk files
datafiles += colorpanel.tcl cursor.tcl
# For objects that only build on certain platforms, add those to class.sources
# line for the right platforms.
define forLinux
datafiles += README-ifeel.txt
class.sources += ifeel.c
endef
datafiles += \
$(class.sources:%.c=%-help.pd) \
$(empty)
datafiles += \
$(abstractions) \
$(abstractions:%.pd=%-help.pd) \
$(empty)
# include Makefile.pdlibbuilder from submodule directory 'pd-lib-builder'
PDLIBBUILDER_DIR=pd-lib-builder/
include $(PDLIBBUILDER_DIR)/Makefile.pdlibbuilder
hcs-0.2.1/README-ifeel.txt 0000664 0000000 0000000 00000000777 14221064535 0015064 0 ustar 00root root 0000000 0000000
You need the iFeel linux kernel module from
http://sourceforge.net/projects/tactile in order to use this external.
The iFeel mouse uses periodic pulses to create the various haptic
effects.
------------------------------------------------------------------------------
control type raw range pd range
------------------------------------------------------------------------------
strength of pulse 1-255 0 - 1
delay between pulses 1-255 0 - infinite milliseconds
number of pulses 1-255 0 - infinite
hcs-0.2.1/README.txt 0000664 0000000 0000000 00000003200 14221064535 0013762 0 ustar 00root root 0000000 0000000
The 'hcs' library is a random grabbag of objects that are experiments that
sometimes lead to full-fledged libraries.
====
TODO
====
- pddate compare object
- make ISOdate and ISOtime accept pddate format
- rename [folder_list] to [file/match] and make other file lib objects
- make [file/match] handle lists of patterns
- make [file/match] behave like [qlist]
- [cursor] object
- based on [MouseState] and/or [gcanvas]
- inlet to control the mouse cursor icon (pointer, X, text select, etc)
- mDNS objects!
- add pan objects to audio basics library
- create math library
- standard constants like Pi, etc.
- standard math functions
- create networking library
- socket objects
- multicast DNS objects
- create mapping library
- move [hid] toolkit objects into mapping lib
- sort thru Cyrille's ds_ objects
- objects for smoothing sensor data
- create i/o library
- add hid, comport, platform-specific hid, libusb, midi
- convert [hid] to libhid
- write [directinput]
- [serial]
- port numbering on darwin: number /dev/cu.* sequentially
- perhaps specific objects for sensorboxs like the arduino, multio, etc
- create standard gui objects lib (what's the name?)
- dsp
- pan
- amp
- create support lib for creating objects in Pd
- *_argument objects
- rename blocksize_in_ms to block_size_in_ms
- how about "foundation" or "class" or "support"
ifeel.c
------------------------------------------------------------------------
- make default device be /dev/input/ifeel0 when there are no arguments
- add abort command ( http://moore.cx/dan/out/ifeel/
http://inebriated-innovation.org/ifeel/ )
hcs-0.2.1/ascii2int-help.pd 0000664 0000000 0000000 00000002120 14221064535 0015424 0 ustar 00root root 0000000 0000000 #N canvas 0 26 462 276 10;
#X floatatom 253 143 5 0 0 0 - - -;
#X obj 241 191 ascii2int;
#X msg 305 168 bang;
#X msg 192 168 bang;
#X text 20 169 output current value -2;
#X text 343 168 <-- reset;
#X floatatom 241 220 0 0 0 0 - - -;
#X obj 241 117 int;
#X text 38 28 convert a stream of ASCII digits to a single int value
;
#X msg 242 63 49 52 57 32;
#X msg 138 63 53 56 49 50 1;
#X obj 241 240 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 241 95 zexy/drip 500;
#N canvas 404 246 494 344 META 0;
#X text 12 135 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 115 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control conversion abstraction;
#X text 12 45 DESCRIPTION convert a stream of ASCII digits to a single
int value;
#X text 12 75 INLET_0 float;
#X text 12 95 OUTLET_0 float;
#X restore 412 256 pd META;
#X connect 1 0 6 0;
#X connect 2 0 1 1;
#X connect 3 0 1 0;
#X connect 6 0 11 0;
#X connect 7 0 0 0;
#X connect 7 0 1 0;
#X connect 9 0 12 0;
#X connect 10 0 12 0;
#X connect 12 0 7 0;
hcs-0.2.1/ascii2int.pd 0000664 0000000 0000000 00000002312 14221064535 0014501 0 ustar 00root root 0000000 0000000 #N canvas 0 31 490 433 10;
#X obj 206 298 +;
#X obj 176 320 float;
#X obj 206 160 trigger float bang;
#X obj 222 259 float;
#X obj 222 278 * 10;
#X obj 303 286 float;
#X msg 179 220 0;
#X text 212 222 <-- reset for the next pot reading;
#X obj 68 57 moses 48;
#X obj 206 111 - 48;
#X obj 119 76 moses 58;
#X obj 106 140 bang;
#X obj 106 160 purepd/once;
#X obj 176 345 outlet;
#X obj 16 36 route bang float symbol;
#X obj 16 7 inlet;
#X obj 327 12 inlet;
#X text 286 12 reset;
#X obj 327 34 trigger bang bang;
#X obj 16 270 bang;
#X text 244 404 released under the GNU GPL;
#X text 27 390 (C) Copyright 2006 Hans-Christoph Steiner
;
#X text 25 366 TODO: make it support negative numbers;
#X connect 0 0 1 1;
#X connect 0 0 5 0;
#X connect 1 0 13 0;
#X connect 2 0 0 0;
#X connect 2 1 3 0;
#X connect 3 0 4 0;
#X connect 4 0 0 1;
#X connect 5 0 3 1;
#X connect 6 0 3 1;
#X connect 8 0 11 0;
#X connect 8 1 10 0;
#X connect 9 0 2 0;
#X connect 9 0 12 1;
#X connect 10 0 9 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 6 0;
#X connect 12 0 1 0;
#X connect 14 0 19 0;
#X connect 14 1 8 0;
#X connect 15 0 14 0;
#X connect 16 0 18 0;
#X connect 18 0 11 0;
#X connect 18 1 12 1;
#X connect 19 0 1 0;
hcs-0.2.1/autoscale-help.pd 0000664 0000000 0000000 00000004160 14221064535 0015525 0 ustar 00root root 0000000 0000000 #N canvas 0 26 462 532 10;
#X floatatom 26 88 5 0 0 0 - - -;
#X floatatom 26 152 0 0 0 0 - - -;
#X obj 68 270 autoscale;
#X obj 2 2 cnv 15 450 20 empty empty autoscale 2 11 1 18 -233017 -66577
0;
#X msg 418 3 pddp;
#X text 18 35 [autoscale] scales a stream of numbers based on an output
range set as arguments \, and an input range which is set dynamically.
;
#X text 13 193 If you use [autoscale] with no arguments \, then the
output range defaults to 0-127.;
#X floatatom 68 249 5 0 0 0 - - -;
#X obj 71 293 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X text 17 453 (C) Copyright 2004 Hans-Christoph Steiner
;
#X text 234 467 released under the GNU GPL;
#X floatatom 150 152 0 0 0 0 - - -;
#X floatatom 297 152 0 0 0 0 - - -;
#X obj 213 83 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X text 17 486 $Revision: 1.5 $$Date: 2006-03-17 04:50:03 $;
#X text 18 499 $Author: eighthave $;
#X text 25 336 The [reset( message resets the stored max and min to
zero.;
#X floatatom 46 360 5 0 0 0 - - -;
#X obj 71 413 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X msg 96 358 reset;
#X obj 26 122 autoscale 0 1;
#X obj 150 122 autoscale -0.01 0.01;
#X obj 297 122 autoscale -4095 4095;
#X obj 68 390 autoscale;
#N canvas 356 214 494 344 META 0;
#X text 12 235 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 215 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control conversion;
#X text 12 45 DESCRIPTION scale a stream of numbers based on an output
range set as arguments;
#X text 12 95 INLET_1 float;
#X text 12 75 INLET_0 float reset;
#X text 12 115 INLET_2 float;
#X text 12 135 INLET_3 float bang;
#X text 12 155 OUTLET_0 float;
#X text 12 175 OUTLET_1 float;
#X text 12 195 OUTLET_2 float;
#X restore 403 501 pd META;
#X floatatom 71 168 5 0 0 0 - - -;
#X connect 0 0 20 0;
#X connect 2 0 8 0;
#X connect 7 0 2 0;
#X connect 13 0 21 0;
#X connect 13 0 22 0;
#X connect 17 0 23 0;
#X connect 19 0 23 0;
#X connect 20 0 1 0;
#X connect 21 0 11 0;
#X connect 22 0 12 0;
#X connect 23 0 18 0;
hcs-0.2.1/autoscale.pd 0000664 0000000 0000000 00000004207 14221064535 0014601 0 ustar 00root root 0000000 0000000 #N canvas 0 31 773 542 10;
#X obj 45 30 inlet;
#X obj 175 453 outlet;
#X obj 235 268 f;
#X text 262 268 min;
#X text 360 269 max;
#X obj 454 167 f \$1;
#X obj 652 167 f \$2;
#X obj 235 245 moses 0;
#X obj 320 245 moses 0;
#X obj 175 102 trigger float float float bang bang;
#X obj 175 390 expr (($f1 - $f2) * (($f5 - $f4) / ($f3 - $f2))) + $f4
;
#X obj 326 205 oneshot;
#X obj 364 226 f;
#X obj 320 178 t f b f;
#X obj 241 205 oneshot;
#X obj 279 226 f;
#X obj 235 178 t f b f;
#X obj 384 269 + 1e-09;
#X obj 478 213 ==;
#X obj 478 233 sel 1;
#X obj 545 77 loadbang;
#X obj 478 299 print [autoscale];
#X floatatom 472 189 5 0 0 0 - - -;
#X obj 545 100 t b b;
#X obj 454 329 expr if ($f1 == $f2 \, 0 \, $f1) \; if ($f1 == $f2 \,
127 \, $f2);
#X msg 478 278 using default range (0-127);
#X obj 478 256 oneshot;
#X text 2 476 (C) Copyright 2004 Hans-Christoph Steiner
;
#X text 219 491 released under the GNU GPL;
#X text 417 475 $Revision: 1.5 $$Date: 2004-11-28 20:50:14 $;
#X text 417 488 $Author: eighthave $;
#X obj 45 62 route reset;
#X obj 45 81 bang;
#X msg 45 129 0;
#X msg 114 102 clear;
#X text 172 47 these [oneshot] bits are just here to get the max/min
tracking started;
#X text 8 3 [autoscale];
#X connect 0 0 31 0;
#X connect 2 0 7 1;
#X connect 2 0 10 1;
#X connect 5 0 18 0;
#X connect 5 0 22 0;
#X connect 5 0 24 0;
#X connect 6 0 18 1;
#X connect 6 0 24 1;
#X connect 7 0 2 0;
#X connect 8 1 17 0;
#X connect 9 0 10 0;
#X connect 9 1 16 0;
#X connect 9 2 13 0;
#X connect 9 3 5 0;
#X connect 9 4 6 0;
#X connect 10 0 1 0;
#X connect 11 0 12 0;
#X connect 12 0 8 1;
#X connect 13 0 8 0;
#X connect 13 1 11 0;
#X connect 13 2 12 1;
#X connect 14 0 15 0;
#X connect 15 0 7 1;
#X connect 16 0 7 0;
#X connect 16 1 14 0;
#X connect 16 2 15 1;
#X connect 17 0 8 1;
#X connect 17 0 10 2;
#X connect 18 0 19 0;
#X connect 19 0 26 0;
#X connect 20 0 23 0;
#X connect 23 0 5 0;
#X connect 23 1 6 0;
#X connect 24 0 10 3;
#X connect 24 1 10 4;
#X connect 25 0 21 0;
#X connect 26 0 25 0;
#X connect 31 0 32 0;
#X connect 31 1 9 0;
#X connect 32 0 33 0;
#X connect 32 0 34 0;
#X connect 33 0 2 0;
#X connect 33 0 12 0;
#X connect 34 0 14 0;
#X connect 34 0 11 0;
hcs-0.2.1/blocksize_in_ms-help.pd 0000664 0000000 0000000 00000001737 14221064535 0016726 0 ustar 00root root 0000000 0000000 #N canvas 0 26 474 344 10;
#X obj 5 2 cnv 15 450 20 empty empty blocksize_in_ms 2 11 1 18 -233017
-66577 0;
#X msg 422 3 pddp;
#X text 27 270 (C) Copyright 2004 Hans-Christoph Steiner
;
#X text 244 284 released under the GNU GPL;
#X obj 152 157 blocksize_in_ms;
#X msg 152 115 bang;
#X text 197 117 bang to recalculate;
#X floatatom 152 210 7 0 0 1 ms - -;
#X text 18 36 Output the current blocksize in ms rather than samples.
This is currently set at a fixed blocksize of 64 \, but it will change
dynamically in the future.;
#N canvas 484 26 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION output current blocksize in ms;
#X text 12 65 INLET_0 bang;
#X text 12 85 OUTLET_0 float;
#X text 12 5 KEYWORDS control conversion abstraction;
#X restore 412 310 pd META;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
hcs-0.2.1/blocksize_in_ms.pd 0000664 0000000 0000000 00000001024 14221064535 0015765 0 ustar 00root root 0000000 0000000 #N canvas 0 22 458 308 10;
#X obj 178 262 outlet;
#X obj 164 31 inlet;
#X obj 164 56 bang;
#X text 209 31 bang to recalculate;
#X obj 164 124 samplerate~;
#X obj 178 192 /;
#X msg 164 170 64;
#X obj 164 151 t b f;
#X text 30 170 default block size:;
#X text 8 25 [blocksize_in_ms];
#X obj 178 229 * 1000;
#X text 35 278 TODO: make blocksize read from actual Pd setting;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 4 0 7 0;
#X connect 5 0 10 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 7 1 5 1;
#X connect 10 0 0 0;
hcs-0.2.1/canvas_name-help.pd 0000664 0000000 0000000 00000016523 14221064535 0016026 0 ustar 00root root 0000000 0000000 #N canvas 178 98 493 398 10;
#X obj 136 290 sys_gui;
#X symbolatom 254 206 0 0 0 0 - - -;
#X obj 241 145 loadbang;
#X msg 136 260 \$2 configure -background \$1;
#X obj 136 231 pack symbol symbol;
#X obj 86 64 colorpanel;
#X obj 67 356 pddp/pddplink http://tcl.tk/man/tcl8.5/TkCmd/canvas.htm
;
#X text 34 330 for more options:;
#N canvas 685 90 416 325 generate 0;
#X obj 81 23 inlet;
#X obj 82 262 outlet;
#X obj 83 66 unpack float float float;
#X obj 83 90 * 255;
#X obj 83 113 int;
#X obj 83 136 makefilename %x;
#X obj 183 90 * 255;
#X obj 183 113 int;
#X obj 183 136 makefilename %x;
#X obj 283 90 * 255;
#X obj 283 113 int;
#X obj 283 136 makefilename %x;
#X obj 83 171 pack symbol symbol symbol;
#X obj 83 195 zexy/makesymbol #%s%s%s;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 0;
#X connect 2 2 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 12 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 12 1;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 11 0 12 2;
#X connect 12 0 13 0;
#X connect 13 0 1 0;
#X restore 86 85 pd generate web color;
#X obj 86 20 bng 35 250 50 0 empty empty empty 17 7 0 10 -204786 -1
-1;
#X symbolatom 106 113 10 0 0 0 - - -;
#X obj 198 293 print;
#X obj 241 182 canvas_name;
#X msg 138 143 grey;
#X msg 148 162 white;
#X msg 158 183 pink;
#X msg 162 205 black;
#N canvas 660 76 459 460 get 0;
#X symbolatom 42 225 0 0 0 0 - - -;
#X obj 42 204 canvas_name;
#X obj 42 181 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X symbolatom 126 225 0 0 0 0 - - -;
#X obj 126 181 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 0 22 450 300 subname 0;
#X obj 117 21 inlet;
#X obj 119 265 outlet;
#X obj 107 137 canvas_name;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 126 204 pd subname;
#X symbolatom 209 225 0 0 0 0 - - -;
#X obj 209 181 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X symbolatom 73 118 0 0 0 0 - - -;
#X obj 73 74 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X text 47 26 You can get the canvas name of other patches that this
one is embedded in by setting the argument to the level:;
#X obj 73 97 canvas_name 1;
#X text 78 137 ^-- this is the same as the top level of this help patch
;
#X symbolatom 299 225 0 0 0 0 - - -;
#X obj 299 181 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 43 268 some more examples:;
#X text 35 308 get the canvas name using a float message representing
depth;
#X obj 94 363 canvas_name;
#X symbolatom 93 389 10 0 0 0 - - -;
#X msg 78 335 0;
#X msg 108 335 1;
#N canvas 0 22 450 300 open 0;
#N canvas 511 55 450 300 open 0;
#X obj 131 37 inlet;
#X obj 129 109 outlet;
#N canvas 772 55 450 300 open 0;
#X obj 131 37 inlet;
#X obj 129 109 outlet;
#N canvas 0 22 450 300 open 0;
#X obj 141 47 inlet;
#X obj 139 119 outlet;
#X obj 143 84 canvas_name;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 128 76 pd open me;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 129 74 pd open me;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 138 87 pd open me;
#X obj 141 47 inlet;
#X obj 139 119 outlet;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X restore 260 382 pd open me;
#N canvas 496 269 450 300 get_parent 0;
#X obj 117 21 inlet;
#X obj 119 265 outlet;
#X obj 109 137 canvas_name 1;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 209 204 pd get_parent;
#N canvas 496 269 450 300 get_parent_of_parent 0;
#X obj 117 21 inlet;
#X obj 119 265 outlet;
#X obj 109 137 canvas_name 2;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 299 204 pd get_parent_of_parent;
#N canvas 169 157 481 329 get-from-parent 0;
#X symbolatom 114 120 0 0 0 0 - - -;
#X obj 101 96 canvas_name 1;
#X symbolatom 119 205 0 0 0 0 - - -;
#X obj 84 66 loadbang;
#X obj 106 181 canvas_name 0;
#X symbolatom 43 204 0 0 0 0 - - -;
#X obj 30 180 canvas_name;
#N canvas 0 22 450 300 add 0;
#X symbolatom 175 224 0 0 0 0 - - -;
#X obj 162 200 canvas_name 1;
#X symbolatom 264 224 0 0 0 0 - - -;
#X obj 251 200 canvas_name 2;
#X symbolatom 85 224 0 0 0 0 - - -;
#X obj 175 101 loadbang;
#X obj 72 200 canvas_name 0;
#X text 59 28 Now 0 is this subpatch \, 1 is the "pd get from parent"
subpatch that this subpatch is in \, and 2 is the "canvas_name-help.pd"
patch.;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X connect 5 0 1 0;
#X connect 5 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X restore 164 267 pd add another level;
#X text 31 14 Following the interface of [getdir] and others \, you
can get the canvas name from parent patches by using a float to represent
how many levels up you want to get:;
#X text 36 237 To see it in action with a 2nd level \, check this subpatch:
;
#X text 189 204 <-- these two are the same since Pd inits to 0;
#X text 187 119 <-- this gets the canvas name from the parent;
#X connect 1 0 0 0;
#X connect 3 0 1 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 4 0 2 0;
#X connect 6 0 5 0;
#X restore 183 267 pd get-from-parent;
#X symbolatom 260 406 10 0 0 0 - - -;
#X obj 260 338 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
#X floatatom 271 360 5 0 0 0 - - -;
#X msg 139 335 2;
#X text 121 429 .x0.c means a non-existent canvas;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 7 0 22 0;
#X connect 9 0 11 0;
#X connect 11 0 8 0;
#X connect 14 0 23 0;
#X connect 17 0 18 0;
#X connect 19 0 17 0;
#X connect 20 0 17 0;
#X connect 21 0 25 0;
#X connect 22 0 6 0;
#X connect 23 0 13 0;
#X connect 26 0 21 0;
#X connect 26 0 27 0;
#X connect 28 0 17 0;
#X restore 265 51 pd get from different levels;
#N canvas 196 75 460 490 get 0;
#X symbolatom 77 428 0 0 0 0 - - -;
#X symbolatom 72 176 0 0 0 0 - - -;
#X obj 72 132 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 220 77 namecanvas myname;
#X symbolatom 73 99 0 0 0 0 - - -;
#X obj 73 55 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 73 78 canvas_name myname;
#X text 53 14 You can also use the canvas receive symbol to get the
canvas_name:;
#X obj 77 407 canvas_name;
#X msg 129 376 pd-canvas_name-help.pd;
#X symbolatom 71 275 0 0 0 0 - - -;
#X obj 71 229 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 71 254 canvas_name pd-canvas_name-help.pd;
#X text 65 213 this help patch:;
#X text 49 302 or via the inlet:;
#N canvas 0 22 450 300 getmyname 0;
#X restore 250 155 pd getmyname;
#X obj 72 155 canvas_name pd-getmyname;
#X msg 79 351 myname;
#X msg 64 325 symbol this_does_not_exist;
#X msg 129 351 symbol pd-getmyname;
#X text 91 459 .x0.c means a non-existent canvas;
#X connect 2 0 16 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X connect 11 0 12 0;
#X connect 12 0 10 0;
#X connect 16 0 1 0;
#X connect 17 0 8 0;
#X connect 18 0 8 0;
#X connect 19 0 8 0;
#X restore 265 76 pd get by canvas receive symbol;
#N canvas 410 155 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION get canvas id;
#X text 12 65 INLET_0 bang;
#X text 12 85 OUTLET_0 symbol;
#X text 12 5 KEYWORDS control canvas_op;
#X restore 430 366 pd META;
#X connect 2 0 12 0;
#X connect 3 0 0 0;
#X connect 3 0 11 0;
#X connect 4 0 3 0;
#X connect 5 0 8 0;
#X connect 8 0 10 0;
#X connect 8 0 4 0;
#X connect 9 0 5 0;
#X connect 12 0 1 0;
#X connect 12 0 4 1;
#X connect 13 0 4 0;
#X connect 14 0 4 0;
#X connect 15 0 4 0;
#X connect 16 0 4 0;
hcs-0.2.1/canvas_name.c 0000664 0000000 0000000 00000005074 14221064535 0014716 0 ustar 00root root 0000000 0000000 #include
#include
#include
#include
#define DEBUG(x)
static t_class *canvas_name_class;
typedef struct _canvas_name
{
t_object x_obj;
t_canvas *x_canvas;
t_symbol *receive_name;
t_int depth;
} t_canvas_name;
static t_symbol* make_canvas_symbol(t_canvas* canvas)
{
char buf[MAXPDSTRING];
snprintf(buf, MAXPDSTRING, ".x%lx.c", (long unsigned int)canvas);
return gensym(buf);
}
static t_symbol* get_canvas_by_depth(t_canvas_name *x)
{
t_canvas *canvas = x->x_canvas;
int depth = x->depth;
if(depth<0)depth=0;
while(depth && canvas)
{
canvas = canvas->gl_owner;
depth--;
}
return make_canvas_symbol(canvas);
}
static t_symbol* get_canvas_by_name(t_canvas_name *x)
{
return make_canvas_symbol((t_canvas *)pd_findbyclass(x->receive_name, canvas_class));
}
static t_symbol* get_canvas_name(t_canvas_name *x)
{
if(x->receive_name == &s_)
return get_canvas_by_depth(x);
else
return get_canvas_by_name(x);
}
static void canvas_name_bang(t_canvas_name *x)
{
/* actually get the canvas name each time to make sure we get
* accurate info in case of changes. If we cache the result, a
* canvas could have been deleted or renamed. */
outlet_symbol(x->x_obj.ob_outlet, get_canvas_name(x));
}
static void canvas_name_anything(t_canvas_name *x, t_symbol *s, int argc, t_atom *argv)
{
t_symbol *first_symbol = atom_getsymbolarg(0,argc,argv);
x->depth = 0;
x->receive_name = &s_;
if(s == &s_float)
x->depth = (t_int) atom_getfloatarg(0,argc,argv);
else if (first_symbol == &s_)
x->receive_name = s;
else
x->receive_name = first_symbol;
canvas_name_bang(x);
}
static void *canvas_name_new(t_symbol *s, int argc, t_atom *argv)
{
t_canvas_name *x = (t_canvas_name *)pd_new(canvas_name_class);
t_glist* glist = (t_glist *)canvas_getcurrent();
x->x_canvas = (t_canvas *)glist_getcanvas(glist);
t_symbol *tmp = atom_getsymbolarg(0,argc,argv);
x->depth = 0;
x->receive_name = &s_;
if(tmp == &s_)
x->depth = (t_int) atom_getfloatarg(0,argc,argv);
else
x->receive_name = tmp;
outlet_new(&x->x_obj, &s_symbol);
return(x);
}
void canvas_name_setup(void)
{
canvas_name_class = class_new(gensym("canvas_name"),
(t_newmethod)canvas_name_new, NULL,
sizeof(t_canvas_name), 0, A_GIMME, 0);
class_addbang(canvas_name_class, (t_method)canvas_name_bang);
class_addanything(canvas_name_class, (t_method)canvas_name_anything);
}
hcs-0.2.1/ce_path-help.pd 0000664 0000000 0000000 00000002022 14221064535 0015143 0 ustar 00root root 0000000 0000000 #N canvas 0 26 423 338 10;
#X declare -lib cyclone -lib zexy;
#X msg 21 52 bang;
#X symbolatom 32 170 0 0 0 0 - - -;
#X obj 21 246 print;
#X text 80 75 start at the top of the list again;
#X msg 33 76 rewind;
#X obj 21 129 ce_path;
#X obj 61 150 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X text 81 148 done;
#X text 68 51 get next item in list of canvas-local paths;
#X text 29 269 Sending bangs to [ce_path] makes it output the loaded
paths one at a time.;
#N canvas 433 104 494 344 META 0;
#X text 12 145 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 125 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control canvas_op;
#X text 12 45 DESCRIPTION report canvas-local paths;
#X text 12 65 INLET_0 bang rewind;
#X text 12 85 OUTLET_0 symbol;
#X text 12 105 OUTLET_1 bang;
#X restore 372 316 pd META;
#X obj 223 15 import cyclone zexy;
#X connect 0 0 5 0;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
#X connect 5 0 2 0;
#X connect 5 1 6 0;
hcs-0.2.1/ce_path.c 0000664 0000000 0000000 00000006067 14221064535 0014051 0 ustar 00root root 0000000 0000000 /*
* This object allows you to see what is currently in the canvas-local path.
*/
#include
#include
#include
#include
#include
#include
/* WARNING: KLUDGE! */
/*
* this struct is not publicly defined (its in g_canvas.c) so I need to
* include this here. Its from Pd 0.41-test03 2006-11-19. */
struct _canvasenvironment
{
t_symbol *ce_dir; /* directory patch lives in */
int ce_argc; /* number of "$" arguments */
t_atom *ce_argv; /* array of "$" arguments */
int ce_dollarzero; /* value of "$0" */
t_namelist *ce_path; /* search path */
};
static char *version = "$Revision: 1.2 $";
#define DEBUG(x)
//#define DEBUG(x) x
/*------------------------------------------------------------------------------
* CLASS DEF
*/
t_class *ce_path_class;
typedef struct _ce_path
{
t_object x_obj;
t_canvas *x_canvas;
t_namelist *x_current;
t_outlet *x_data_outlet;
t_outlet *x_status_outlet;
} t_ce_path;
static void ce_path_output(t_ce_path* x)
{
DEBUG(post("ce_path_output"););
char buffer[FILENAME_MAX];
/* TODO: think about using x->x_current->nl_next so that if [ce_path] is at
* the end of its list, and another element gets added to the local
* namespace, [ce_path] will output the new element on the next bang. */
if(x->x_current)
{
strncpy(buffer, x->x_current->nl_string, FILENAME_MAX-1);
outlet_symbol( x->x_data_outlet, gensym(buffer));
x->x_current = x->x_current->nl_next;
}
else
outlet_bang(x->x_status_outlet);
}
static void ce_path_rewind(t_ce_path* x)
{
t_canvasenvironment *e = canvas_getenv(x->x_canvas);
x->x_current = e->ce_path;
}
static void *ce_path_new(t_floatarg f)
{
t_ce_path *x = (t_ce_path *)pd_new(ce_path_class);
t_glist *glist = (t_glist *)canvas_getcurrent();
t_canvas *canvas = (t_canvas *)glist_getcanvas(glist);
int depth = (int)f;
if(depth < 0) depth = 0;
while(depth && canvas) {
canvas = canvas->gl_owner;
depth--;
}
x->x_canvas = canvas;
ce_path_rewind(x);
x->x_data_outlet = outlet_new(&x->x_obj, &s_symbol);
x->x_status_outlet = outlet_new(&x->x_obj, 0);
return (x);
}
void ce_path_setup(void)
{
ce_path_class = class_new(gensym("ce_path"), (t_newmethod)ce_path_new,
NULL,
sizeof(t_ce_path),
CLASS_DEFAULT,
A_DEFFLOAT,
0);
/* add inlet atom methods */
class_addbang(ce_path_class, (t_method) ce_path_output);
/* add inlet selector methods */
class_addmethod(ce_path_class, (t_method) ce_path_rewind,
gensym("rewind"), 0);
logpost(NULL, 4, "[ce_path] %s", version);
logpost(NULL, 4, "\tcompiled on "__DATE__" at "__TIME__ " ");
logpost(NULL, 4, "\tcompiled against Pd version %d.%d.%d", PD_MAJOR_VERSION,
PD_MINOR_VERSION, PD_BUGFIX_VERSION);
}
hcs-0.2.1/classpath-help.pd 0000664 0000000 0000000 00000002005 14221064535 0015523 0 ustar 00root root 0000000 0000000 #N canvas 0 26 425 241 10;
#X obj 40 130 classpath;
#X msg 40 92 bang;
#X obj 65 180 print;
#X symbolatom 40 208 0 0 0 0 - - -;
#X obj 101 155 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 19 22 This object returns each path in the global classpath
one at a time with each bang. [reset( refreshs the classpath data and
starts again at the top of the list \, like [textfile] or [qlist]'s
[reset(.;
#X text 124 154 <-- banged when the end of the list is reached;
#X msg 82 92 rewind;
#N canvas 435 26 494 344 META 0;
#X text 12 145 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 125 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION report global class paths;
#X text 12 65 INLET_0 bang rewind;
#X text 12 85 OUTLET_0 symbol;
#X text 12 105 OUTLET_1 bang;
#X text 12 5 KEYWORDS control pd-op;
#X restore 376 221 pd META;
#X connect 0 0 2 0;
#X connect 0 0 3 0;
#X connect 0 1 4 0;
#X connect 1 0 0 0;
#X connect 7 0 0 0;
hcs-0.2.1/classpath.c 0000664 0000000 0000000 00000011153 14221064535 0014420 0 ustar 00root root 0000000 0000000 /* --------------------------------------------------------------------------*/
/* */
/* This object outputs the global search path for finding objects using a */
/* similar interface as [textfile] and [qlist]. */
/* */
/* Copyright (c) 2006 Hans-Christoph Steiner */
/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version 3 */
/* of the License, or (at your option) any later version. */
/* */
/* See file LICENSE for further information on licensing terms. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software Foundation, */
/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* */
/* --------------------------------------------------------------------------*/
#include
#include
#include
/*
#ifdef _WIN32
#define _WIN32_WINNT 0x0400
#include
#include
#else
#include
#endif
*/
static char *version = "$Revision: 1.3 $";
#define DEBUG(x)
//#define DEBUG(x) x
/*------------------------------------------------------------------------------
* CLASS DEF
*/
static t_class *classpath_class;
typedef struct _classpath {
t_object x_obj;
t_namelist *x_top;
t_namelist *x_current;
t_outlet *x_data_outlet;
t_outlet *x_status_outlet;
} t_classpath;
/*------------------------------------------------------------------------------
* IMPLEMENTATION
*/
static void classpath_output(t_classpath* x)
{
DEBUG(post("classpath_output"););
/* TODO: think about using x->x_current->nl_next so that if [classlist] is at
* the end of its list, and another element gets added to the global
* classpath, [classpath] will output the new element on the next bang. */
if(x->x_current)
{
outlet_symbol( x->x_data_outlet, gensym(x->x_current->nl_string) );
x->x_current = x->x_current->nl_next;
}
else
outlet_bang(x->x_status_outlet);
}
static void classpath_rewind(t_classpath* x)
{
DEBUG(post("classpath_output"););
char buffer[MAXPDSTRING];
strncpy(buffer, sys_libdir->s_name, MAXPDSTRING - 6);
strcat(buffer, "/extra");
x->x_top = namelist_append(NULL, buffer, 0);
x->x_top->nl_next = STUFF->st_searchpath;
x->x_current = x->x_top;
}
static void classpath_add(t_classpath* x, t_symbol *s)
{
DEBUG(post("classpath_add"););
}
static void *classpath_new()
{
DEBUG(post("classpath_new"););
t_classpath *x = (t_classpath *)pd_new(classpath_class);
x->x_data_outlet = outlet_new(&x->x_obj, &s_symbol);
x->x_status_outlet = outlet_new(&x->x_obj, 0);
classpath_rewind(x);
return (x);
}
void classpath_free()
{
// TODO: look into freeing the namelist
}
void classpath_setup(void)
{
DEBUG(post("classpath_setup"););
classpath_class = class_new(gensym("classpath"),
(t_newmethod)classpath_new,
0,
sizeof(t_classpath),
0,
0);
/* add inlet datatype methods */
class_addbang(classpath_class,(t_method) classpath_output);
/* add inlet message methods */
class_addmethod(classpath_class,(t_method) classpath_rewind,
gensym("rewind"), 0);
class_addmethod(classpath_class,(t_method) classpath_add,gensym("add"),
A_DEFSYMBOL, 0);
logpost(NULL, 4, "[classpath] %s",version);
logpost(NULL, 4, "\twritten by Hans-Christoph Steiner ");
logpost(NULL, 4, "\tcompiled on "__DATE__" at "__TIME__ " ");
logpost(NULL, 4, "\tcompiled against Pd version %d.%d.%d", PD_MAJOR_VERSION,
PD_MINOR_VERSION, PD_BUGFIX_VERSION);
}
hcs-0.2.1/colorpanel-help.pd 0000664 0000000 0000000 00000002317 14221064535 0015705 0 ustar 00root root 0000000 0000000 #N canvas 0 26 472 323 10;
#X obj 99 139 colorpanel;
#X msg 99 56 bang;
#X obj 112 198 pddp/print;
#X obj 98 226 unpack float float float;
#X obj 30 278 nbx 8 20 -1e+37 1e+37 0 0 empty empty red 0 28 0 14 -261234
-1 -1 0 256;
#X obj 150 278 nbx 8 20 -1e+37 1e+37 0 0 empty empty green 0 28 0 14
-204786 -1 -1 0 256;
#X obj 270 278 nbx 8 20 -1e+37 1e+37 0 0 empty empty blue 0 28 0 14
-203904 -1 -1 0 256;
#X text 35 16 pop up a color picker and output the red \, green \,
blue values as a list of three floats ranging from 0 to 1;
#X text 129 177 the list:;
#X text 202 78 or open the window with an initial color;
#X msg 108 78 symbol #beefee;
#X msg 160 107 0.5 0.5 0.5;
#N canvas 442 194 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control GUI;
#X text 12 45 DESCRIPTION graphical color chooser;
#X text 12 65 INLET_0 bang symbol list;
#X text 12 85 OUTLET_0 list;
#X restore 422 302 pd META;
#X connect 0 0 2 0;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 3 0 4 0;
#X connect 3 1 5 0;
#X connect 3 2 6 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
hcs-0.2.1/colorpanel.c 0000664 0000000 0000000 00000006173 14221064535 0014602 0 ustar 00root root 0000000 0000000 #include
#include
#include
#include
#include
static t_class *colorpanel_class;
typedef struct _colorpanel
{
t_object x_obj;
t_symbol *x_s;
char current_color[MAXPDSTRING];
} t_colorpanel;
static void colorpanel_bang(t_colorpanel *x)
{
sys_vgui("after idle [list after 100 ::hcs::colorpanel::open %s %s]\n",
x->x_s->s_name, x->current_color);
}
static void colorpanel_symbol(t_colorpanel *x, t_symbol *s)
{
strncpy(x->current_color, s->s_name, MAXPDSTRING);
colorpanel_bang(x);
}
static void colorpanel_list(t_colorpanel *x, t_symbol *s, int argc, t_atom *argv)
{
t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */
int i;
unsigned int tmp_int;
char color_buffer[3];
char color_string[MAXPDSTRING];
strncpy(color_string,"#",MAXPDSTRING);
if(argc > 3)
logpost(x, 2, "[colorpanel] warning more than three elements in list");
for(i=0; i<3; i++)
{
tmp_symbol = atom_getsymbolarg(i, argc, argv);
if(tmp_symbol == &s_)
{
tmp_int = (unsigned int)(atom_getfloatarg(i, argc , argv) * 255);
snprintf(color_buffer, 3, "%02x", (tmp_int > 255 ? 255 : tmp_int));
strncat(color_string, color_buffer, 3);
}
else
{
pd_error(x,"[colorpanel] symbols are not allowed in the color list");
return;
}
}
memcpy(x->current_color, color_string, 7);
colorpanel_bang(x);
}
static void colorpanel_callback(t_colorpanel *x, t_symbol *color)
{
t_atom output_atoms[3];
unsigned int red, green, blue;
if(color != &s_)
{
strncpy(x->current_color, color->s_name, MAXPDSTRING);
sscanf(x->current_color, "#%02x%02x%02x", &red, &green, &blue);
SETFLOAT(output_atoms, (t_float) red / 255);
SETFLOAT(output_atoms + 1, (t_float) green / 255);
SETFLOAT(output_atoms + 2, (t_float) blue / 255);
outlet_list(x->x_obj.ob_outlet, &s_list, 3, output_atoms);
}
}
static void colorpanel_free(t_colorpanel *x)
{
pd_unbind(&x->x_obj.ob_pd, x->x_s);
}
static void *colorpanel_new( void)
{
char buf[MAXPDSTRING];
t_colorpanel *x = (t_colorpanel *)pd_new(colorpanel_class);
sprintf(buf, "#%lx", (t_int)x);
x->x_s = gensym(buf);
pd_bind(&x->x_obj.ob_pd, x->x_s);
outlet_new(&x->x_obj, &s_list);
strcpy(x->current_color,"#ffffff");
return(x);
}
void colorpanel_setup(void)
{
colorpanel_class = class_new(gensym("colorpanel"),
(t_newmethod)colorpanel_new, (t_method)colorpanel_free,
sizeof(t_colorpanel), 0, 0);
if (!colorpanel_class)
return;
class_addbang(colorpanel_class, (t_method)colorpanel_bang);
class_addsymbol(colorpanel_class, (t_method)colorpanel_symbol);
class_addlist(colorpanel_class, (t_method)colorpanel_list);
class_addmethod(colorpanel_class, (t_method)colorpanel_callback,
gensym("callback"), A_DEFSYMBOL, 0);
sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
colorpanel_class->c_externdir->s_name,
colorpanel_class->c_name->s_name);
}
hcs-0.2.1/colorpanel.tcl 0000664 0000000 0000000 00000000304 14221064535 0015130 0 ustar 00root root 0000000 0000000
namespace eval ::hcs::colorpanel:: {
}
proc ::hcs::colorpanel::open {objectid initialcolor} {
set color [tk_chooseColor -initialcolor $initialcolor]
pdsend "$objectid callback $color"
}
hcs-0.2.1/cursor-help.pd 0000664 0000000 0000000 00000006323 14221064535 0015065 0 ustar 00root root 0000000 0000000 #N canvas 1 88 659 523 10;
#X obj 388 293 pddp/pddplink http://tcl.tk/man/tcl8.5/TkCmd/cursors.htm
;
#X text 273 276 Here's a complete list of the available cursors:;
#X msg 441 124 dot;
#X msg 518 124 gumby;
#X msg 561 124 gobbler;
#X msg 370 124 coffee_mug;
#X msg 471 124 pirate;
#X msg 42 44 runmode_nothing;
#N canvas 0 22 462 312 make 0;
#X obj 95 9 inlet;
#X obj 114 258 outlet;
#X obj 116 168 pack symbol symbol;
#X obj 221 147 symbol;
#X obj 94 51 symbol;
#X obj 227 16 inlet;
#X msg 116 192 set \$1 \$2;
#X obj 115 220 trigger bang anything;
#X connect 0 0 4 0;
#X connect 2 0 6 0;
#X connect 3 0 2 1;
#X connect 4 0 2 0;
#X connect 5 0 3 0;
#X connect 6 0 7 0;
#X connect 7 0 1 0;
#X connect 7 1 1 0;
#X restore 169 205 pd make message;
#X msg 59 63 runmode_clickme;
#X msg 75 82 runmode_thicken;
#X msg 92 101 runmode_addpoint;
#X msg 110 120 editmode_nothing;
#X obj 169 266 cursor;
#X text 342 238 <-- this is the actual message to send;
#X text 15 18 set your mouse cursors for this patch:;
#X text 279 309 Here are some pictures of the cursors:;
#X obj 387 325 pddp/pddplink http://www.lehigh.edu/~sol0/ptk/cursors.gif
;
#X msg 126 139 editmode_connect;
#X msg 143 158 editmode_disconnect;
#X msg 169 239 editmode_disconnect arrow;
#X text 290 55 first pick a cursor:;
#X text 189 80 <-- then choose your cursor mode;
#X obj 46 390 cursor;
#X msg 55 367 bang;
#X obj 46 448 route x y;
#X floatatom 33 472 5 0 0 0 x - -;
#X floatatom 71 472 5 0 0 1 y - -;
#X obj 46 342 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X floatatom 135 488 5 0 0 1 mousewheel - -;
#X obj 46 414 route motion mousewheel button;
#X text 65 339 turn on to get mouse motion and buttons;
#X obj 164 440 route 1 2 3;
#X obj 164 460 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 185 460 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 206 460 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 227 459 <-- mouse buttons;
#X text 86 366 or bang to get the current mouse position;
#N canvas 583 22 481 747 image 0;
#X obj 240 373 moonlib/image examples/cursor.gif 0;
#X restore 509 309 pd image of all cursors;
#X msg 328 124 clock;
#X msg 288 124 arrow;
#N canvas 413 246 494 344 META 0;
#X text 12 155 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 135 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION set mouse cursors for patch;
#X text 12 65 INLET_0 runmode_nothing runmod_clickme runmode_thicken
runmode_addpoint editmode_nothing editmode_connect editmode_disconnect
;
#X text 12 115 OUTLET_0;
#X text 12 5 KEYWORDS control canvas-op user_input;
#X restore 600 498 pd META;
#X connect 2 0 8 1;
#X connect 3 0 8 1;
#X connect 4 0 8 1;
#X connect 5 0 8 1;
#X connect 6 0 8 1;
#X connect 7 0 8 0;
#X connect 8 0 20 0;
#X connect 9 0 8 0;
#X connect 10 0 8 0;
#X connect 11 0 8 0;
#X connect 12 0 8 0;
#X connect 18 0 8 0;
#X connect 19 0 8 0;
#X connect 20 0 13 0;
#X connect 23 0 30 0;
#X connect 24 0 23 0;
#X connect 25 0 26 0;
#X connect 25 1 27 0;
#X connect 28 0 23 0;
#X connect 30 0 25 0;
#X connect 30 1 29 0;
#X connect 30 2 32 0;
#X connect 32 0 33 0;
#X connect 32 1 34 0;
#X connect 32 2 35 0;
#X connect 39 0 8 1;
#X connect 40 0 8 1;
hcs-0.2.1/cursor.c 0000664 0000000 0000000 00000013005 14221064535 0013751 0 ustar 00root root 0000000 0000000 /* TODO add reset method for cursor icons, this should probably be done in
pd.tk, or cursor reset method could be done in help patch */
#include
#include
#include
#include
#include
#include
#define POLLTIME 10
static t_symbol *button_symbol;
static t_symbol *mousewheel_symbol;
static t_symbol *motion_symbol;
static t_symbol *x_symbol;
static t_symbol *y_symbol;
static t_symbol *cursor_receive_symbol;
t_int cursor_instances_polling;
static t_class *cursor_class;
typedef struct _cursor
{
t_object x_obj;
t_int am_polling;
t_symbol *receive_symbol;
t_canvas *parent_canvas;
t_outlet *data_outlet;
// t_outlet *status_outlet; // not used (yet?)
} t_cursor;
static void cursor_setmethod(t_cursor *x, t_symbol *s, int argc, t_atom *argv)
{
sys_vgui("set ::cursor_%s \"%s\"\n", s->s_name, atom_getsymbol(argv)->s_name);
canvas_setcursor(x->parent_canvas, 0); /* hack to refresh the cursor */
}
static void cursor_bang(t_cursor *x)
{
sys_vgui("pdsend \"%s motion [winfo pointerxy .]\";\n",
x->receive_symbol->s_name);
}
static void cursor_float(t_cursor *x, t_float f)
{
/* "bind all only gives data when over windows, so its commented
* out. See the cursor_bang function to see the pointer x,y data getting */
if(f == 0) {
if (x->am_polling) {
x->am_polling = 0;
cursor_instances_polling--;
/* if no more objects are listening, stop sending the events */
if (cursor_instances_polling == 0)
sys_gui("::hcs::cursor::stoppolling \n");
pd_unbind(&x->x_obj.ob_pd, cursor_receive_symbol);
}
} else {
if ( ! x->am_polling) {
x->am_polling = 1;
pd_bind(&x->x_obj.ob_pd, cursor_receive_symbol);
cursor_instances_polling++;
/* if this is the first instance to start, set up Tcl binding and polling */
if (cursor_instances_polling == 1)
sys_gui("::hcs::cursor::startpolling\n");
}
}
}
static void cursor_button_callback(t_cursor *x, t_float button, t_float state)
{
t_atom output_atoms[2];
SETFLOAT(output_atoms, button);
SETFLOAT(output_atoms + 1, state);
outlet_anything(x->data_outlet, button_symbol, 2, output_atoms);
}
static void cursor_motion_callback(t_cursor *x, t_float x_position, t_float y_position)
{
t_atom output_atoms[2];
SETSYMBOL(output_atoms, x_symbol);
SETFLOAT(output_atoms + 1, x_position);
outlet_anything(x->data_outlet, motion_symbol, 2, output_atoms);
SETSYMBOL(output_atoms, y_symbol);
SETFLOAT(output_atoms + 1, y_position);
outlet_anything(x->data_outlet, motion_symbol, 2, output_atoms);
}
static void cursor_mousewheel_callback(t_cursor *x, t_float f)
{
t_atom output_atom;
SETFLOAT(&output_atom, f);
outlet_anything(x->data_outlet, mousewheel_symbol, 1, &output_atom);
}
static void cursor_free(t_cursor *x)
{
cursor_float(x, 0);
pd_unbind(&x->x_obj.ob_pd, x->receive_symbol);
}
static void *cursor_new(void)
{
char buf[MAXPDSTRING];
t_cursor *x = (t_cursor *)pd_new(cursor_class);
x->parent_canvas = canvas_getcurrent();
sprintf(buf, "#%lx", (t_int)x);
x->receive_symbol = gensym(buf);
pd_bind(&x->x_obj.ob_pd, x->receive_symbol);
x->data_outlet = outlet_new(&x->x_obj, 0);
//x->status_outlet = outlet_new(&x->x_obj, 0);
x->am_polling = 0;
return(x);
}
void cursor_setup(void)
{
cursor_class = class_new(gensym("cursor"),
(t_newmethod)cursor_new, (t_method)cursor_free,
sizeof(t_cursor), 0, 0);
if(!cursor_class)
return;
class_addbang(cursor_class, (t_method)cursor_bang);
class_addfloat(cursor_class, (t_method)cursor_float);
button_symbol = gensym("button");
mousewheel_symbol = gensym("mousewheel");
motion_symbol = gensym("motion");
x_symbol = gensym("x");
y_symbol = gensym("y");
//status_symbol = gensym("status");
cursor_receive_symbol = gensym("#hcs_cursor_class_receive");
class_addmethod(cursor_class, (t_method)cursor_button_callback,
button_symbol, A_DEFFLOAT, A_DEFFLOAT, 0);
class_addmethod(cursor_class, (t_method)cursor_motion_callback,
motion_symbol, A_DEFFLOAT, A_DEFFLOAT, 0);
class_addmethod(cursor_class, (t_method)cursor_mousewheel_callback,
mousewheel_symbol, A_DEFFLOAT, 0);
/* methods for setting the cursor icon */
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("runmode_nothing"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("runmode_clickme"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("runmode_thicken"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("runmode_addpoint"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("editmode_nothing"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("editmode_connect"), A_GIMME, 0);
class_addmethod(cursor_class, (t_method)cursor_setmethod,
gensym("editmode_disconnect"), A_GIMME, 0);
sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
cursor_class->c_externdir->s_name,
cursor_class->c_name->s_name);
sys_vgui("::hcs::cursor::setup %s\n", cursor_receive_symbol->s_name);
}
hcs-0.2.1/cursor.tcl 0000664 0000000 0000000 00000003775 14221064535 0014326 0 ustar 00root root 0000000 0000000
namespace eval ::hcs::cursor:: {
variable continue_pollmotion 0
variable last_x 0
variable last_y 0
variable receive_symbol
}
# idea from #tcl for a Tcl unbind
proc ::hcs::cursor::unbind {tag event script} {
set bind {}
foreach x [split [bind $tag $event] \"\n\"] {
if {$x != $script} {
lappend bind $x
}
}
bind $tag $event {}
foreach x $bind {bind $tag $event $x}
}
proc ::hcs::cursor::button {button state} {
variable receive_symbol
pdsend "$receive_symbol button $button $state"
}
proc ::hcs::cursor::mousewheel {delta} {
variable receive_symbol
pdsend "$receive_symbol mousewheel $delta"
}
proc ::hcs::cursor::motion {x y} {
variable last_x
variable last_y
variable receive_symbol
if { $x != $last_x || $y != $last_y} {
pdsend "$receive_symbol motion $x $y"
set last_x $x
set last_y $y
}
}
proc ::hcs::cursor::pollmotion {} {
variable continue_pollmotion
motion [winfo pointerx .] [winfo pointery .]
if {$continue_pollmotion != 0} {
after 10 ::hcs::cursor::pollmotion
}
}
proc ::hcs::cursor::startpolling {} {
variable continue_pollmotion 1
pollmotion
bind all {+::hcs::cursor::button %b 1}
bind all {+::hcs::cursor::button %b 0}
bind all {+::hcs::cursor::mousewheel %D}
}
proc ::hcs::cursor::stoppolling {} {
variable continue_pollmotion 0
unbind all {::hcs::cursor::button %b 1}
unbind all {::hcs::cursor::button %b 0}
unbind all {::hcs::cursor::mousewheel %D}
}
# in Pd 0.43, the internal proc changed from 'pd' to 'pdsend'
proc ::hcs::cursor::setup {symbol} {
variable receive_symbol $symbol
# check if we are Pd < 0.43, which has no 'pdsend', but a 'pd' coded in C
if {[llength [info procs "::pdsend"]] == 0} {
pdtk_post "creating 0.43+ 'pdsend' using legacy 'pd' proc"
proc ::pdsend {args} {pd "[join $args { }] ;"}
}
}
hcs-0.2.1/debounce-help.pd 0000664 0000000 0000000 00000003332 14221064535 0015331 0 ustar 00root root 0000000 0000000 #N canvas 0 26 470 540 10;
#X obj 2 2 cnv 15 450 20 empty empty debounce 2 11 1 18 -233017 -66577
0;
#X msg 418 3 pddp;
#X text 234 467 released under the GNU GPL;
#X text 17 486 $Revision: 1.2 $$Date: 2006-03-17 04:50:03 $;
#X text 18 499 $Author: eighthave $;
#X text 17 453 (C) Copyright 2005 Hans-Christoph Steiner
;
#X obj 122 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 123 102 t b b;
#X obj 123 142 delay;
#X obj 63 121 bang;
#X obj 122 202 tgl 35 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X floatatom 166 203 5 0 0 0 - - -;
#X obj 122 271 tgl 35 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 123 166 random 2;
#X msg 85 78 stop;
#X obj 244 211 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 240 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 26 387 Right now \, it handles "floats" and "bangs". Everything
else is converted to a "bang".;
#X obj 152 122 random 1000;
#X obj 237 247 debounce 900;
#X obj 122 246 debounce 900;
#N canvas 280 175 494 344 META 0;
#X text 12 125 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 105 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control filter;
#X text 12 45 DESCRIPTION debounce;
#X text 12 85 OUTLET_0 float bang;
#X text 12 65 INLET_0 anything;
#X restore 410 510 pd META;
#X obj 249 62 namecanvas f;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 1 18 0;
#X connect 8 0 9 0;
#X connect 8 0 13 0;
#X connect 8 0 15 0;
#X connect 9 0 7 0;
#X connect 10 0 20 0;
#X connect 13 0 10 0;
#X connect 13 0 11 0;
#X connect 14 0 8 0;
#X connect 15 0 19 0;
#X connect 18 0 8 1;
#X connect 19 0 16 0;
#X connect 20 0 12 0;
hcs-0.2.1/debounce.pd 0000664 0000000 0000000 00000001240 14221064535 0014377 0 ustar 00root root 0000000 0000000 #N canvas 0 31 478 432 10;
#X obj 38 43 inlet;
#X obj 252 108 f \$1;
#X obj 252 85 loadbang;
#X obj 226 33 inlet;
#X obj 251 132 select 0;
#X text 274 34 delay between state change;
#X obj 62 381 outlet;
#X obj 61 325 f;
#X text 298 152 set default;
#X obj 246 189 send \$0-delay;
#X obj 157 271 delay;
#X obj 187 248 receive \$0-delay;
#X text 80 31 float input;
#X text 120 378 debounced float output;
#X msg 250 152 10;
#X obj 100 103 change;
#X connect 0 0 7 1;
#X connect 0 0 15 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 9 0;
#X connect 4 0 14 0;
#X connect 4 1 9 0;
#X connect 7 0 6 0;
#X connect 10 0 7 0;
#X connect 11 0 10 1;
#X connect 14 0 9 0;
hcs-0.2.1/debug-help.pd 0000664 0000000 0000000 00000000744 14221064535 0014637 0 ustar 00root root 0000000 0000000 #N canvas 0 31 450 300 10;
#X obj 148 137 debug testing;
#X text 31 46 a simple object to control the flow of print messages
\, and label them.;
#N canvas 329 160 494 344 META 0;
#X text 12 105 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 85 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION debounce;
#X text 12 65 INLET_0 anything;
#X text 12 5 KEYWORDS control;
#X restore 388 268 pd META;
hcs-0.2.1/debug.pd 0000664 0000000 0000000 00000000542 14221064535 0013705 0 ustar 00root root 0000000 0000000 #N canvas 0 31 278 181 10;
#X obj 74 0 inlet;
#X obj 1 4 tgl 15 0 empty ATORAT_DEBUG empty 14 8 1 8 -261440 -1 -1
0 1;
#X obj 74 53 spigot;
#X obj 74 113 print \$1;
#X text 8 150 (C) Copyright 2004 Hans-Christoph Steiner;
#X text 112 166 released under the GNU GPL;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X coords 0 0 1 1 130 18 1;
hcs-0.2.1/embed-help.pd 0000664 0000000 0000000 00000001004 14221064535 0014613 0 ustar 00root root 0000000 0000000 #N canvas 0 31 450 300 10;
#X text 119 127 [embed];
#X text 55 50 This object is used for hiding the Pd window when making
an embedded app based on Pd.;
#N canvas 329 160 494 344 META 0;
#X text 12 95 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 75 AUTHOR Hans-Christoph Steiner;
#X text 12 45 DESCRIPTION hide the Pd window when making an embedded
app based on Pd.;
#X text 12 5 KEYWORDS control pd_op;
#X restore 392 269 pd META;
hcs-0.2.1/embed.pd 0000664 0000000 0000000 00000001021 14221064535 0013664 0 ustar 00root root 0000000 0000000 #N canvas 103 147 450 300 10;
#X msg 282 79 wm title .pdwindow "Error Log";
#X obj 69 37 trigger bang bang bang bang bang bang bang bang bang;
#X msg 182 84 wm withdraw .pdwindow;
#X msg 140 13 bang;
#X obj 170 245 hcs/sys_gui;
#X obj 35 75 hcs/window_name;
#X msg 35 98 wm iconify \$1;
#X msg 23 29 bang;
#X obj 70 12 loadbang;
#X connect 0 0 4 0;
#X connect 1 0 5 0;
#X connect 1 4 2 0;
#X connect 1 8 0 0;
#X connect 2 0 4 0;
#X connect 3 0 1 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
#X connect 8 0 1 0;
hcs-0.2.1/examples/ 0000775 0000000 0000000 00000000000 14221064535 0014107 5 ustar 00root root 0000000 0000000 hcs-0.2.1/examples/changing_the_colors.pd 0000664 0000000 0000000 00000004501 14221064535 0020433 0 ustar 00root root 0000000 0000000 #N canvas 231 465 735 462 10;
#X declare -path ..;
#X obj 133 416 hcs/sys_gui;
#X msg 39 15 set canvas_fill green;
#N canvas 0 22 492 479 default 0;
#X obj 84 23 inlet;
#X obj 74 366 outlet;
#X obj 83 80 bang;
#X msg 74 119 set canvas_fill "white" \, set text_color "#000" \, set
select_color "#00f" \, set dash_outline "#f00" \, set dash_fill "#f7f7f7"
\, set box_outline "#ccc" \, set graph_outline "#777" \, set atom_box_fill
"#eee" \, set msg_box_fill "#f8f8f6" \, set obj_box_fill "#f6f8f8"
\, set signal_cord_highlight "#58a" \, set signal_cord "#558" \, set
signal_nlet $signal_cord \, set msg_cord_highlight "#474" \, set msg_cord
"#565" \, set msg_nlet "white" \, set mixed_nlet "#88aaff";
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X restore 271 387 pd default color scheme;
#X msg 271 365 bang;
#X msg 47 35 set text_color grey50;
#X msg 67 76 set dash_color orange;
#X msg 57 55 set select_color magenta;
#X msg 79 95 set dash_fill green;
#X msg 87 115 set box_outline yellow;
#X msg 97 135 set graph_outline green;
#X msg 107 155 set atom_box_fill green;
#X text 268 47 changes don't always take effect immediately \, open
a new window to see the changes.;
#X msg 119 175 set msg_box_fill green;
#X msg 127 195 set obj_box_fill grey50;
#X msg 137 215 set signal_cord_highlight magenta;
#X msg 159 255 set signal_nlet green;
#X msg 167 275 set msg_cord_highlight yellow;
#X msg 177 295 set msg_cord green;
#X msg 187 315 set msg_cord_nlet green;
#X msg 197 335 set mixed_nlet green;
#X text 297 115 you can use X11 color names or web colors;
#X obj 325 144 pddp/pddplink http://en.wikipedia.org/wiki/X11_color_names
;
#X obj 326 164 pddp/pddplink http://en.wikipedia.org/wiki/Web_colors
;
#X obj 362 225 pddp/pddplink http://wiki.tcl.tk/1424;
#X text 352 185 more on using color with Tcl/Tk:;
#X obj 362 207 pddp/pddplink http://wiki.tcl.tk/3538 -text color values
available for syntactic use in Tcl scripts;
#X msg 147 236 set signal_cord #ffbb00;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X connect 9 0 0 0;
#X connect 10 0 0 0;
#X connect 12 0 0 0;
#X connect 13 0 0 0;
#X connect 14 0 0 0;
#X connect 15 0 0 0;
#X connect 16 0 0 0;
#X connect 17 0 0 0;
#X connect 18 0 0 0;
#X connect 19 0 0 0;
#X connect 26 0 0 0;
hcs-0.2.1/examples/cursor.gif 0000664 0000000 0000000 00000026705 14221064535 0016125 0 ustar 00root root 0000000 0000000 GIF87aØäñ ÿÿÿÙÙÙ , Øä þŒ©Ëí£œ´Ú‹³Þ¼û†"”扦êʶîÇ®!×öçs ÷þЂĢ5<*—º$ó ÝE§T$¯Š:³\ã¶þ}ÃdܸŒŽÓlÖº
?½ãñ9½m¿§óú2¿öØ%8˜UhX…˜8µÈåøÈ)©DYéu…‰v$ð¹ò)P§
×É$º:Ê–
uŠZ¶šR+;x‹7» öª*JšÆzBŒ«g||ÇìÊ7
ÚêÌfœ¼»ÌL÷¼ý‹]ÍÜ,M~ǽN;->®þÝE^®ÜǾGߦÏÉ_ïš9pºæ{×ÎÂ}ŒwhÑ$ž“ǰºþy
øKˆ,â¿^#!b´H¦ÙÇŒ
½<é`kY¢)·%I,êvÚè‰ãšÀ’7Ãå„ç“Ф0–Ú¨Y3æ°•™*•iõˆÓ"Kt%³•k¥°YS-++Ú g×
QëÖGÛµsÑÖ-{7k^«{™öMú×gàƒIîuxSbL‹ÇÂÛ„ßÑ“©TÎ!è²Í†¶Nã,©qhɞʀ®‘¹´àÇA=Òe
ùÆ›Ó.h+±Ýô1îP€aSn¡Ò«ðÏ8?»ÖâHpãïb'$Ùè)]Ò'/7Qûóã¶œo§È9su¯Å‹¼>Ü<öõ¶„{¤ê&ùfî(¶ºŸÝ¨{iÈþëíÏŸß~®íÄl§ßt €
˜]}Þ7àƒRÌg!~żw ƒ~8a…v(CXJ¸¡…õQ¨b\°hŠžÈiªÇ!{GÁˆ¢ŽéåÄヱØBj7jG^Š;’Hß4†ØdnOl·"qD’ç{ÈçC-1®¸!F×\0Ôyg™="¹^šÄ…ɤ
â•)MqV²àåšI¶‰çtð Ú#22h"…ZC9Ûu-ú¤D&i‹Šyè ™²iê1B¨¢ŽJj©¦žŠjªª®Êj«®¾
k¬²ÎJk¢6: —¸©ë®€öê«YÀ›±E|Zþ•±c*ËÖ°Ê"ë³b8k,´IkµÄZ«¶%j,·Hy+¸¾Š¹?™»+º6©‹»¸*&‡á¤]½KÜ«ïU‰üyˆ¼:T*U5Zö»¯À›!\ã¿OªpT]?ƒ1Îé™nJ=R¬HÆ/Øcϸ/øp&SieÇ'£œò²îDkÉ_%rmßyš³ÄÇ“èšÇ‹º˜v»a¹#¶»b½3ö;£µ¿ànÝÃÿzü…É#¿<óÍû¼œÁ3n³/°å×§Î2o)Nù½Tš}‰(Ç¿Œ¡ñF(Ýœ/¥Œo~æÀmÌü᫦ÂBÛK¾Æ¬_¾)ýO.ïÓÙ,óìy—±ÓLª„3×áKÝDö¤3Á½ÇljQ˜Aòí‰C•)S¾î×7µEèË
XؾûeiI&T!}ÈÁbpl% ”ˆô$©â‡?Ôœ9Kcvr˜¸¤&1YMlÚj›Üì¦7¿ ÎpŠsœä,§9ωÎWaÚÌ%¡Üi(xvFžg[gñ
fÍ{F°ö¤'§ü)LjêÓ‚ý,(?šO€*.¡e(BþªÐdAcžÙ¨§Ýd·6¤Åsk%HGû·Ñs„È7G5Œf´zÌ|—Á>ª˜V¯e$¨F¤Ù:É4¦ÿ$x´qÒÙ$¨Óœ¨LWÖS·!’¨üêQgš8‰òt§3Rž˜
Ì‹ÒÍe´ˆÓJ5šÔ”’‘ø,Ý3÷i±'rµl*ýêóWØYFC¤œêžÊÖ×¹QVë^§@Kšº”hx]Þ½™Ç¿†n¤m¨Ç~ª&¬roªauÍì½ÃZG°iIÍúµÓO³—•l±<[Øä
´’a™\‡·ÚÎ:´—U,êb+ÄÙ6ö¡ÃÄíùxûËTد‚·¡#†þËÇßÈV9á*æúòÆÜÚÄÓ
Úq][Óôý”˜Ò³Ù ×€žì. ¯;ËòR§åj#GUV¹‡µtj–b¥58GvƒÐ„µ`ØHWªÕ>—\Z%ÙËI’¿7Œ#|›CpÀV«£»È;–1ˆúHÚpÆ
5ŽuÃ4
‚Ø{ZÕd8Mu„Ù97î(ÃV$£÷´˜_úŒ…¿H£—Æ8†P‰ÁØ_w‰Ç8”e-cøàèîˆHN.*·hÜ.±”®$î™49_Û¸À\¶¡•;èÀ(G
Ág¾{éf_sÌ©D3aQ6˱½¥§i·þ ¢~ê¬Èd¡³®ü¹©†ÎkuÛg>7”®´¥/éLkzӜÉ)éÌF³ÏómÀ+êP—zÔ¢…-«_[;S‡LÕÍ“5tQ½jZöն圽[HOZ×,•óyU·‘V'&k}leµæÜÖLÁumvÙô¨ìk/šÑÐÞ*ZÁJKc[wq¡Øö ,ÌÆDÓiÛÙ¤’ümgÓÜîDwY%Ál:g¶ik“Mï±{²øN!¬aÁ2=û¬ ìõ[Ÿ]ìr³›_sKòÂ+‡]kÏ•%Ó8`?í[wûг&lÃ=ë]‚\Ü4]í-m2å° j²Óí5þX<1"+ε
D˜—œ¤O±YõKê½ÆËÕh\….ò‰}ÎÈfö`ýóSŸß;âà©PÀ'ÂôxÓ–åJÆÚË«ýóØ‘Œ_':Ä/úöœë|â½CnÚ«÷Z«\¯4G¸tÎ×¼ïºê¡<0jkxxý:§ÃƵމ=Z^÷r‹‡„ä%›—û¾òΔßÝçªÝGo\½›w|0?_>õ›ñ~'.c#ºÀžˆ…z^Ã7G]9Öd]ÏcH‹_8Ñ<įJB®æÖ¹ŠC;ë;?óE.8æKn±ß8cÞ$Vú{Vºz²Hfê›÷‹^¾£ô$•YÐÿ½r™Gè|>þ_Ü{¹ï•¶|êdÖ9ßü>°c_^¹oÿ·fûehâ=
¢EB–sÉ•IÔÖt'ln4•w~œ—r’@h,gˆ{˜kíôi#H‚%h‚'ˆ‚)¨‚+È‚
€·%yW÷x¦§Z1ˆz0ø‚¾fƒ[—j4y9Hy;(v=‚3X„ƒçƒ®„†Ó”„€uD«/EU>%xr÷Yò6bwmWhvSÇN#ç…×Da—$5†Šâu5v`†JåW\¨†iX>Ì'‡ëPxI‡uoTtô’Zs8Vúvx7'ˆ—Xz(sw¸Qh†¶_„¨ˆG TämÛ…†U(wfbuWþl˜xç†üÂqž(z؆thI‘µ‰ShrløˆšHrÏ—‰Èg‰Vuµ¨SRÕURDwá†íæS|¨‹TèŠ/sG…È6‹ñt船ˆˆ]h‡ŸH.<'$Å'ƒî†‰]uˆÈ¨x»´FÖȃ8ŒÓFve‚U|½ø^Åh…Ùˆ„GXƒK˜ŒBȉDl÷hŠù(ø¸§‰R)îè}‰ôÓ¨Pœ±=” eè5ŽPEÒè-ƒöŒ'·ˆì¸‹7yuJÇr
¦~f%ûÕ^·qbæ'%€ØLëe€~Â5v3è1a‰)uÇAÌH€ª÷}~;™}NrE R“Åå“Aþ^tH"5‹”>V†x”€6–!=I;ÿÖ!·hy`Ö‘µw“@BW1æ^[Bnd²ØpPÆEÁ÷bö‘¿7”ViG8yA¡ ‚C‰È1å±çEEg¥’Ôt' ãö¨`Iãa9J°ä—•È+ñðImÇö¨˜Ù‰¿Hu—iR´è„ðøƒOˆƒ"Ø‚§‰š©©š«Éšéš*(Ý›êÒ„+é™Fx›ï˜›ñHš:8›ù›I¥ØÅ©™ÇyŽ»9𢩄½9ˆÇÝ…B‘€x„mÑI’å1„Sj÷2V]õ¸™¿¸)’‰‹
¡ŽØøáé þ|Šò‹9i }QY¼·'ÜÙrŸ‰žéÙmö©|–Ÿözb( Ä— C4e
ÉRúŠóIŸÁè Ø‰ŸYsŠl)—Z‘z^£¡)ÅŸbé9j3çžk¶Ÿ`(aé¡÷‰Š
¢7˜¡u2£÷Y¢&ŠŽøqˆ·¢¼÷Ÿäéty†=ê£xSœ©ŒãŽþ¡KÁ)‰œù†‰(ZzÌ©¤ì™¥Vz¥Í©¥¥¦¾éœL8œ¬ˆ›™™œjª|kâ¢ÀT*f©“‡¤Ì¸#:~¸÷¥÷wµ×¥é]
6ê§äe§ic~(•¢Ø§
©®—¤MS§ý—!*þ”j©2–2wÁ—hÆfFÚŸsJ
覦tHé¸3ÃW€ªŠyÚž2 —¨e©ú˜Z%W´©šÇªP¸Dlthª“fÙ"Ì!FA ¬º7§Õ”Q%EÑ÷HbpW)!;Ò>Ûç–æX‘DFD…º{OñÒ'’WfF¦/ãåATƈк®f3êzKìú¬‚ãWyÚ©Ló©0J‰ÚõÕ’¯zg›š«ï× ýò
ÁQ°¥”^‹Ù¾7ªµê€
›]n¦#Iz½Ê¦º¹Ky¦â·¦ê¹ž¾H ÜynC
ijœ!+j¯é²/³1+³3K³5Ke:R*-µylÊ ¦>»¥@þ+¦BK¦c„:Ë,<›|È©²L˱+Û´,+µQKµ±—‡Z}”¸£€SQ9jµ1*‰Ù‡*§µ 9¡èµú¶Ï¯þÚŒêF`:‹º§l²µmC¢>©CÖžXk i˶6'·?Š‘wºcñ·¶a;aƒëL~ø
«˜Ú¸(K¤l¥B;·wgò¸æ…«’;´
:¥q·UY:…ë·Û’¹@깊º;D4¶/a¶ˆq3™¸5Wº€ U.)ªYyn‹–]È`¹»>¤h¨J¯†K]î'º®K·¾:幊Cø ú5²„½2
¸À¹¤^’½º½m:¾²I²„*¬·[¾þ4:©EK´G»¤Óë´¼i´fŠ´Ïò±)û´ó»œïk¿ŠK§Ù5¼Ä+¿©ç;âȤæ^5z¶YÀ“»¨Ì«•´»Ê3–,©Ü¨ë›µl¼Rfe–)¤®
“t"q]ö»B%v„’·Ê•šSìЯÕX¹;“Û¯ Ù~l7®fÔfLf›a[ªJÙÃ5¼Eà—ÂË ÄÚ”?™c¶K]óZD-f®.Ö³SŠ—_âÄmÛÀì‹Å„TÃ¥q—ÄÆKœ-Çg°8°_`^ÅÄ£{•e\qT±AŒ¥–šf˜'2:”’&ü˜ kÀÂ㤴´Ê½¸ã¥ùC¹YŒ \¥P{¼x‘þ¿G*ÉôQ6«É›ÌÉìÉŸÊr¿ÕRÉo;µû{ʘ¼±ª|Éý»Ê®ÜÊ?ûʲËA;˶\ËŸ›Ëî{˺̿Ëɦ¼{aÕ›¼Ï©µL§ñ©Á<™HêÁÖ+¢¤äÌ€v»‘û¼º;u