Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

Replacing Processing's text files with Arduino's (e.g. todo.txt)

  • Loading branch information...
commit 24b5abc79d3c5a8feb77a3d2240a52cb3e9a4128 1 parent 73d7333
@damellis damellis authored
Showing with 1,011 additions and 7,905 deletions.
  1. +0 −8 build/macosx/
  2. +0 −5,649 done.txt
  3. +0 −212 future.txt
  4. +442 −193 license.txt
  5. +0 −606 misc.txt
  6. +348 −0 readme.txt
  7. +221 −1,237 todo.txt
8 build/macosx/
@@ -44,14 +44,6 @@ else
echo Extracting avr tools...
unzip -q -d "$RESOURCES/hardware" dist/
- cp -rX ../../net "$LIBRARIES"
- cp -rX ../../opengl "$LIBRARIES"
- cp -rX ../../serial "$LIBRARIES"
- cp -rX ../../video "$LIBRARIES"
- cp -rX ../../pdf "$LIBRARIES"
- cp -rX ../../dxf "$LIBRARIES"
5,649 done.txt
0 additions, 5,649 deletions not shown
212 future.txt
@@ -1,212 +0,0 @@
-future things that we'd like to do but may never get to
-_ quality of compiler errors + multiple errors
-X additional class files.. .java or .pde
-X find/replace
-_ documenting how the environment works / is set up
-X find/replace
-X println speed improvements
-_ 'debug' that shows a variable (rather than many many println)
-X tabs for multiple files
-2 _ setting breakpoints / stepping through
-2 _ useful as understanding for how program works
-2 _ tracing like director
-2 _ tracing variables
-2 _ bspace object
-b X 7 day search on discourse board
-2 _ colorMode(CMYK)
-2 _ just does 1-r/1-g/1-b inside
-2 _
-2 _;action=display;num=1082055374;start=0
-CORE / Fonts
-2 _ textTracking()
-2 _ sbit font support
-2 _ both reading and building sbit fonts
-CORE / PGraphics3
- 2 _ picking
- 2 _ what is the API for picking?
- 2 _ ability to write data other than image into the buffer
- 2 _ user can introduce new kinds of buffers at will (!)
- 2 _ lists of names of objects, or the 'line number' buffer
- 2 _ but how to determine *where* on object the hit occurs
- 2 _ materials and shading
- 2 _ nicer/simpler api for moving the camera around
-2 _ cartesian/polar conversion
-2 _;action=display;num=1053354853
-2 _ thread includes code for the 2D case
-2 _ alter strokeWidth in LINE_STRIP
-2 _;action=display;num=1053795842;start=0
-2 _ keypressed is not persistent
-2 _ key repeat in os vs. how java handles it
-2 _ search java faq for info about getting around it
-2 _ drawMode() for MULTIPLY and ADD
-2 _;action=display;num=1051208333
-2 _ better api for fonts
-2 _ try with 1.4 frame buffer stuff to see if it's faster
-2 _ write shearing function
-2 _ optimize rotation functions
-2 _ update/noUpdate() could also be done to force explicit updates only
-2 _ for ui-type applications that don't need to continually redraw
-2 _ instead use void update() as a function like loop and draw
-2 _ third mode for interactive apps that have to be queried
-2 _ shouldn't do so much work (redrawing in loop) if waiting for input
-2 _ mode for when no full animation taking place
-2 _ otherwise machine is continually maxed out while app is running
-2 _ way to screen grab at higher resolution
-2 _ method for rendering at higher res and then scaling down
-2 _ (even if this causes signficant performance hit)
-2 _ look at GLUT for other needed shapes
-2 _ export to static flash-based graphics
-2 _ build in second matrix type: 2d affine
-2 _ write code for reading uncompressed b/w tiff images
-2 _ incorporate for fixed width fonts
-2 _ fast(er?) version of bagel that just uses java graphics
-2 _ but leaves out many features
-2 _ setting a fill color when drawing an image should affect the image
-2 _ or maybe image.setColor or setTone to mix a specific color in
-PDE / see you next year
-not necessary for 1.0 release
-2 _ better api for plugins
-2 _ jedit guide might be useful:
-2 _ comments -> embedding in applet text? (ala javadoc)
-2 _;action=display;num=1076967353
-2 _ would this help casey with the examples?
-2 _ type-ahead/teaching functions
-2 _ very useful for learning to program
-2 _ editor features asked for on the bboard
-2 _ line numbers like bbedit
-2 _ command to comment-out the current selection
-2 _ split screen
-2 _ collapsable functions, or quick access to functions
-2 _;action=display;num=1051301511
-2 _ make console like director messagewindow..
-2 _ ability to type commands and try functions
-2 _ menu option to change username/login
-2 _ if new user, offer to rename 'default' if it contains things
-2 _ user name is changed by clicking and typing
-2 _ after user hits 'enter', checks to see if user exists
-2 _ if not, pops up message asking if they want to change
-2 _ message goes in same spot as error/status label (turns yellow?)
-2 _ if user says 'no', then
-2 _ method of collapsing history for useful versions
-2 _ archive associated files as well.. data/etc
-2 _ see about setting up simple bug tracker/feature system
-2 _ // We can use sourceforge for bug tracking... (reas)
-2 _ queue for people reporting things externally
-2 _ bugzilla but simpler
-2 _ would also be nice for people to be able to vote on features
-2 _ run java code besides processing applets
-2 _ if not processing applet, look for a main(), no main give an error
-2 _ dbn2p5 converter.. ooh!
-2 _ tweak updater a little bit so it's more likely to work
-2 _ use numbered versioning?
-2 _ give updater feedback (progress dialog, error msg)
-2 _ error messages with link to what's wrong
-2 _ lots of ui ideas from adrien in the bbedit
-2 _ some ui stuff from fdb
-2 _ rename the button options to verbs
-2 _;action=display;num=1032909986
-PDE / science fiction
-features we love, but probably won't be implemented 2048
-2 _ code as columns (screen is wide, code is not)
-3 _ toggle for showing a function name each time its hit
-3 _ toggle for showing line numbers within a function
-3 _ i'm here messages, tie in with breakpoints for debugger
-3 _ lightweight debugger, doesn't slow down, runs in back
-3 _ toggle to show attr/value for some var in simple way
-3 _ comments as debugging descriptors, output to console, shown in context
-3 _ comments as naming for shapes drawn after it,
-3 _ or some other model of naming based on inserted text with "" or // or #
-3 _ could fit nicely with printf-style statements and comments
-3 _ comments would contain descriptions //!blah for printing and formatting
-3 _ sketchbook - doodling/scribbling area..
-3 _ since wacom tablet easily accessible
-3 _ look into maxx programming
-3 _ single or multi-file cvs, not based on directories
-3 _ i.e. i want for a project
-3 _ version # stored in .java file
-3 _ if a new version is available, asks 'do you want to update?'
-3 _ multi-file: quicksort + sortable
-3 _ check out interface builder for interesting tidbits
-3 _ write converter for java bagel -> cpp version
-3 _ include #ifdefs for c stuff
-PDE / Pre-preprocessor & Compiler
-Currently using Oro for search and replace preprocessor,
-but Dan Mosedale is moving us to ANTLR
-2 _ for int i for 0 to b.length
-2 _ for i from 0 upto b.length
-2 _ actionscript has nice hastables.. as does perl/python
-2 _ would be nice to get better implementation in there
-2 _ additional data conversions to avoid this syntax:
-2 _ Integer.toString(), Integer.parseInt()
-2 _ works like class casting: int(23.4) same as ((int) 23.4)
-2 _ String(1234) -> translates to String.valueOf(1234);
-2 _ works for all data types that support valueOf
-2 _ i.e. valueOf(Object) returns null or Object.toString()
-2 _ int("1234") -> Integer.parseInt("1234")
-2 _ float("1234.35") -> (new Float("1234.35").floatValue())
-2 _;action=display;num=1060940705
-2 _ (blah, blah, blah) = split(blah, "\t")
-2 _ 'like php's "explode" function'
-2 _
-2 _ example 2 is the more interesting one...
-2 _ list($user, $pass, $uid, $gid, $gecos..) = explode(":", $data);
-2 _ also see the inverse of that:
-2 _
-2 _ foreach implementation, ala java 1.5 spec
-2 _
-2 _ for (String s : c) { ... }
-2 _ or example for sum of int array:
-2 _ int sum = 0; for (int e : a) { sum += e; }
-2 _ for (int i = 0; i < 10; i++) -> for (int i < 10) (?)
-2 _ what's a better method for this?
-2 _ check through all the examples to look for other themes
-2 _ contextual syntax highlighting based on grammar
-2 _ everything that's in java.lang plus more is too much for keywords
-2 _;action=display;num=1045665326
635 license.txt
@@ -1,7 +1,11 @@
-this file includes licensing information for parts of processing.
+this file includes licensing information for parts of arduino.
-the gnu general public license covers the main body of the processing code
-(in general, all the stuff inside the 'app' subfolder).
+first, the gnu general public license, which covers the main body
+of the processing/arduino code (in general, all the stuff inside the 'app'
+and 'core' subfolders).
+next, the gnu lesser general public license that covers the arduino core
+and libraries.
-the original document can be found at:
-IBM Public License Version 1.0
+ Version 2.1, February 1999
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
-"Contribution" means:
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
-a) in the case of International Business Machines Corporation ("IBM"),
-the Original Program, and
+ Preamble
-b) in the case of each Contributor,
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+ When we speak of free software, we are referring to freedom of use,
+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 this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
-i) changes to the Program, and
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
-ii) additions to the Program;
-where such changes and/or additions to the Program originate from and
-are distributed by that particular Contributor. A Contribution
-'originates' from a Contributor if it was added to the Program by such
-Contributor itself or anyone acting on such Contributor's
-behalf. Contributions do not include additions to the Program which:
-(i) are separate modules of software distributed in conjunction with
-the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
-"Contributor" means IBM and any other entity that distributes the
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
-"Licensed Patents " mean patent claims licensable by a Contributor
-which are necessarily infringed by the use or sale of its Contribution
-alone or when combined with the Program.
+ a) The modified work must itself be a software library.
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
-"Original Program" means the original version of the software
-accompanying this Agreement as released by IBM, including source code,
-object code and documentation, if any.
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
-"Program" means the Original Program and Contributions.
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
-"Recipient" means anyone who receives the Program under this
-Agreement, including all Contributors.
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
-a) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free copyright
-license to reproduce, prepare derivative works of, publicly display,
-publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and
-object code form.
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
-b) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free patent
-license under Licensed Patents to make, use, sell, offer to sell,
-import and otherwise transfer the Contribution of such Contributor, if
-any, in source code and object code form. This patent license shall
-apply to the combination of the Contribution and the Program if, at
-the time the Contribution is added by the Contributor, such addition
-of the Contribution causes such combination to be covered by the
-Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
-c) Recipient understands that although each Contributor grants the
-licenses to its Contributions set forth herein, no assurances are
-provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow
-Recipient to distribute the Program, it is Recipient's responsibility
-to acquire that license before distributing the Program.
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
-d) Each Contributor represents that to its knowledge it has sufficient
-copyright rights in its Contribution, if any, to grant the copyright
-license set forth in this Agreement.
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
-A Contributor may choose to distribute the Program in object code form
-under its own license agreement, provided that:
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
-a) it complies with the terms and conditions of this Agreement; and
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
-b) its license agreement:
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser 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 Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
-i) effectively disclaims on behalf of all Contributors all warranties
-and conditions, express and implied, including warranties or
-conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;
-ii) effectively excludes on behalf of all Contributors all liability
-for damages, including direct, indirect, special, incidental and
-consequential damages, such as lost profits;
-iii) states that any provisions which differ from this Agreement are
-offered by that Contributor alone and not by any other party; and
-iv) states that source code for the Program is available from such
-Contributor, and informs licensees how to obtain it in a reasonable
-manner on or through a medium customarily used for software exchange.
-When the Program is made available in source code form:
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the
-Each Contributor must include the following in a conspicuous location
-in the Program:
-Copyright 2003, International Business Machines Corporation and
-others. All Rights Reserved.
-In addition, each Contributor must identify itself as the originator
-of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a
-commercial product offering should do so in a manner which does not
-create potential liability for other Contributors. Therefore, if a
-Contributor includes the Program in a commercial product offering,
-such Contributor ("Commercial Contributor") hereby agrees to defend
-and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising
-from claims, lawsuits and other legal actions brought by a third party
-against the Indemnified Contributor to the extent caused by the acts
-or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property
-infringement. In order to qualify, an Indemnified Contributor must: a)
-promptly notify the Commercial Contributor in writing of such claim,
-and b) allow the Commercial Contributor to control, and cooperate with
-the Commercial Contributor in, the defense and any related settlement
-negotiations. The Indemnified Contributor may participate in any such
-claim at its own expense.
-For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement, including but not limited to
-the risks and costs of program errors, compliance with applicable
-laws, damage to or loss of data, programs or equipment, and
-unavailability or interruption of operations.
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further
-action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and
-If Recipient institutes patent litigation against a Contributor with
-respect to a patent applicable to software (including a cross-claim or
-counterclaim in a lawsuit), then any patent licenses granted by that
-Contributor to such Recipient under this Agreement shall terminate as
-of the date such litigation is filed. In addition, If Recipient
-institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program
-itself (excluding combinations of the Program with other software or
606 misc.txt
@@ -1,606 +0,0 @@
-casey -- this is a bunch of crap that i've scribbled down as i've
-thought of it.. maybe they should be moved to your list or removed if
-they're not useful?
-_ mention connection to java and docs on getting started in java
-_ make clear that setup is just for setup
-_ but should also in the future allow to create static image
-_ notes on debugging
-_ run with java -Xint blahblah (turns off jit)
- // I don't know where this should live, on BBS? What do you think
-_ p5 faq items: re midi support, msgs w/ adam hoyle in mail folder
-_ also 'why p5' message from amit pitaru on 12/15/02
-_ and p5 versus flash stuff
-_ lists the main arguments, could be a useful document
-_ list of reserved keywords
-_ make note of functions/variables used by ProcessingApplet
-_ using them in your app will break things (i.e. init())
-_ explain using inner classes and using non-public classes
-_ start 'errors' section
-_ NullPointerException inside setup usually means no size()
-_ ability to write functions and inner classes
-_ mention ability to use import statements in java mode
-_ ability to do real (but not public) classes in same document
-_ check to see if get/set functions in applet actually work
-_ fix documentation appropriately
-_ image formats supported (gif and jpeg)
-_ if image doesn't load, just prints an error on console
-_ notes about running on win98 and that stupid startup exception
-_ make note in documentation about convex polygons
-DOCS / technotes
-_ using runtime.exec to run .ai files
-_ code to automatically open generated .ai files (exec(
-_ debugging serial code
-_ hyperterminal - watching for binary garbage vs ascii text
-_ first debug (maybe even using ascii) and watch in hyperterminal
-_ or ship pooterm along with processing
-_ flicker - often ascii instead of binary
-_ timing of sleep, size of message, timing of write
-_ starting processing first, then stamp
-_ using objectXYZ() and screenXYZ()
-_ using curves
-_ making things faster
-_ memory running out, using ms and mx
-_ noBackground() if you're covering everything
-_ converting to/from ascii/decimal/hex/binary
-_ fixed width font format as technote and how to use
-Adding to the API for advanced users, supporting concise coding
-foreach String line (lines)
-foreach (String line = lines)
-foreach (String line, lines)
-foreach (String line) of lines
-..would translate to..
-for (int i = 0; i < lines.length; i++) {
- String line = lines[i];
-for (int i = 0..10) or for (int i, 0..10)
-foreach (int i) of 0..10
-for (int i = start..stop)
-..translating to..
-for (int i = 0; i < 10; i++)
-for (int i = start; i < stop; i++)
-emit(arrayImageX) or printvar? or vprint?
-..would translate to..
-println("arrayImageX = " + arrayImageX);
-emit(arrayImageX, arrayImageY)
-..would translate to..
-println("arrayImageX, arrayImageY = " + arrayImageX + ", " + arrayImageY)
-Scribblings for future API...
-BXSocket, BXServerSocket
- BXNetwork
-> - playback of samples :
-> - methods: startSound (loop_num, start_ms, end_ms) , stopSound(),
-> volume() , pan()
-> - properties: duration
-> - formats: wav ( mp3 would be nice for compression )
-> - events: onSoundEnd(), onSoundLoop()
-> - synthesis (generating waves, filtering waves) would be wonderful to have
-> as well, but i think that samples should come first.
-BXSound, BXSampler or BXAudio
- play aiff or mp3 sound with a single command
- play buffer of samples with a single command
- full class allows play/pause/more advanced loading
-BXMovieInput/Output or BXVideo or BXQuickTimeOutput/Input
- BXMovie and BXCamera?
-BXImageIO, BXTiffImage
-BXDataFile (csv or tab separated data)
- BXDataMatrix
-BXDatabase, BXDatabaseCache (keeps queries to fill out table)
-opt-in/opt-out #ifdef setup
-rather than forcing people to use to compile. could pick
-features that are opt-out, like net, that would have comments:
-//#ifdef NET
-meaning that it would normally get compiled without any trouble
-or similarly, could have other sections commented out that are opt-in,
-that use #ifdefs to be enabled.`
-Things that break often/things to test
-_ handling of key events (both as applet and in application)
-_ per-vertex coloring for different kinds of shapes
-_ that each shape type works as expected
-_ what if one short or one too many vertices?
-_ transforms are affecting geometry
-_ i.e. are line and point working in 3D?
-_ why did i think that z was backwards from gl?
-biggest problems from french workshop
-_ syntax more difficult than expected: semicolons and braces
-_ part is translation issue--wasn't a quick fix
-_ curly braces weren't on the keyboard
-_ encouraging people to indent their code for clarity
-_ slow to understand 'blocks'
-_ translation issue but could be aided by visual cues in editor
-_ might be better to use braces on separate lines to reinforce
-_ couldn't enforce people working on specific exercises
-_ too many cubes.. people playing with 3d before understanding it
-_ would be nice to have examples for all concepts on site
-_ or in a small printed book that serves as a reference
-_ courseware not complete--difficult to collect assignments
-teaching 3D
-_ expectation for 3D objects is that they begin in the center
-_ rather than a translate(W/2, H/2) then draw rotating cube
-_ make processing useful/usable
-_ start working on writing pdf files
-_ loading images/files from same dir as .pde file
-_ option to use jikes
-_ use external editor or write a usable one
-_ write simple class for lcd panel
-_ build adapter to plug directly into db9 serial port
-_ figure out characters used on screen by default (check web)
-_ make unicode converter from unicode char -> lcd screen bytes
-_ hook up lcd screen to power/serial port to test
-_ code to reprogram lcd screen
-_ look through rabbit api
-_ look into integration of cmd line compiler
-_ check out flash for its text editor
-_ write function to swap different names for Proce55ing
-_ use for window title
-_ simple app that does swapping of letters as an animation
-also an interesting possibility (for tech-minded only)
- use terminal emulator, and run iostream from process
- use pooterm stuff for the emulation window
- key commands would conflict
- but could use emacs under osx, linux
- use nano (maybe emacs?) under windows
- and nothing for macos9
-where to install jikes, jre, others?
-jre may need to be back in cvs, but annoying for dist
-because of all the CVS directories that it makes
-cvs co processing
-cd processing
-cvs update -P
-# optional, if you're only doing java dev
-rm -rf web
-need to have rt.jar from jdk 1.1 and comm.jar in the CLASSPATH
-to build bagel.. just gotta be that way, it's too messy otherwise
-need cygwin: zip, unzip, perl
-little guys: rm, cp, mv, tcsh
-build jikes for cygwin, use version 1.14, later than that has bugs
-./configure, make, make install
-add $cygwin/usr/local/bin to path
-dist directories contain only the files specific to that platform
-(those are the ones checked into cvs)
- when is run:
- 1) a copy of the dist dir is created, renamed 'processing-nnnn'
- 2) the remaining files are added (buttons.gif,
- 3) files are lf converted (i.e. notes.txt)
-comm.jar now needs to be in CLASSPATH for build environment
-macos may be superior platform for building
- retain unix file permissions for linux
- resource fork goodness for the mac
-for jgl version of bagel, jgl.jar needs to be in classpath
-The C Language version of the Bagel Graphics Library
-bagel engine: memoryimagesource, opengl, illustrator, postscript, pdf
-bagel to run on j2me / phones
-output to multiple languages: java -> c++ conversion
-cbagel engine: memory array, opengl bindings
-_ modify cbagel for opie
-_ would be interesting to build pre-processor for java p5
-_ but that converts into cpp version of bagel apps.. mmm
-_ update cbagel to current bagel status
-_ get gcc tied into processing
-_ java disassembly inside p5
-_ and assmebling it back again
-_ color() has a different meaning
-_ formerly a normalized 0..1 float to a packed rgb int
-_ now it's a color according to current standards
-_ float_color is a private version of the previous color()
-_ curve was broken (cvertexIndex being reset)
-_ curve() now doubles start/end points to be more logical
-_ (fits all four points by drawing six points)
-_ try screengrab using malloc and/or gobs of extra memory
-_ debug the version inside bagel b/c it's simpler
-_ bagel needs to be able to resize itself
-_ also to address screen as if it's another size
-_ is that simply a matter of changing the viewport?
-_ letterboxing as appropriate
-_ build windows app for testing bagel c++ ... -lgdi32 for cygwin
-_ updates from p5 api changes
-_ triangle() 6 parameters
-_ quad() 8 parameters
-_ rect/rectMode again
-_ new color solution
-_ color() -> uses colorMode
-_ red/green/blue() hue/saturation/value() functions
-_ getPixel/setPixel
-_ swap in 'color' as an int
-_ color c = #67aa78
-_ keyDown(), mouseDown(), lastMouseX, lastMouseY
-_ degrees(), radians()
-_ fill, background, stroke all with int version for packed rgb
-_ why won't glut shut up about modifiers?
-_ add millis() to bappletgl that returns glut millis
-_ BGL_PATH should turn paths into os9 ready paths for os9
-_ or whatever else for the other platforms
-_ macos9: font = loadFont(":fonts:Univers55.vlw");
-_ or could use a "File" style object
-_ or do all path conversions internally:
-_ loadFont, loadImage.. already do gz decoding
-_ makingmovie/screengrab should be moved into bapplet,
-_ along with the stuff for making an ai screen grab
-_ mouseX/lastMouseX should be handled automatically
-_ mousePressed() function may not need vars passed in
-_ or maybe the only vars are alt/left-right/ctrl/shift
-_ maybe mouseevent is passed in, but not used in the
-_ function unless people want advanced features
-_ mouseX/mouseY/lastMouseX/lastMouseY all set by parent class
-_ lastKey and lastKeyCode -- not as useful as the mouse stuff
-// File
-Save as
-Export Web
-Export Application
-// Edit
-Select All
-// Control
-Step Forward (farway future)
-Step Backward (faraway future)
-// Sketch
-Clear History
-// Environment
-Serial Port
-Use External Editor
-jdk 1.3 packages
-jdk 1.4 packages
348 readme.txt
@@ -0,0 +1,348 @@
+Arduino is an open-source physical computing platform based on a simple i/o
+board and a development environment that implements the Processing/Wiring
+language. Arduino can be used to develop stand-alone interactive objects or
+can be connected to software on your computer (e.g. Flash, Processing, MaxMSP).
+The boards can be assembled by hand or purchased preassembled; the open-source
+IDE can be downloaded for free.
+For more information, see the website at:
+or the forums at:
+To report a bug or a make a suggestions, go to:
+Detailed instructions are in reference/Guide_Windows.html and
+reference/Guide_MacOSX.html. For Linux, see the Arduino playground:
+If you are using a USB Arduino, you will need to install the drivers for the
+FTDI chip on the board. These can be found in the drivers/ directory.
+* On Windows, plug in the Arduino board and point the Windows Add Hardware
+ wizard to the drivers/FTDI USB Drivers sub-directory of the Arduino
+ application directory.
+* On the Mac, mount the FTDIUSBSerialDriver_v2_1_9.dmg (on PPC Macs) or the
+ FTDIUSBSerialDriver_v2_2_9_Intel.dmg (on Intel Macs) disk image and run the
+ included FTDIUSBSerialDriver.pkg. You will need to restart your computer.
+* On Linux, drivers are included in kernel versions 2.4.20 or greater.
+Arduino is an open source project, supported by many.
+The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe,
+Gianluca Martino, and David A. Mellis.
+Nicholas Zambetti has contributed from the beginning.
+Yaniv Steiner and Giorgio Olivero have been supporting the project and are
+working at using it with the Instant Soup platform.
+Arduino uses the GNU avr-gcc toolchain, avrdude, avr-libc, and code from
+Processing and Wiring.
+0016 - 2009.05.30
+[documentation / examples]
+* New communication examples (w/ corresponding Processing and Max/MSP code) by
+ Tom Igoe.
+[core / libraries]
+* Adding support for the Arduino Pro and Pro Mini 3.3V / 8 MHz w/ ATmega328.
+* Adding support for the LilyPad Arduino w/ ATmega328.
+* Adding write(str) and write(buf, size) methods to Print, Serial, and the
+ Ethernet library Client and Server classes. This allows for more efficient
+ (fewer packet) Ethernet communication. (Thanks to mikalhart.)
+* Improvements to the way the Ethernet library Client class connects and
+ disconnects. Should reduce or eliminate failed connections and long
+ timeouts. (Thanks to Bruce Luckcuck.)
+* Optimizing the timer0 overflow interrupt handler (used for millis() and
+ micros()). Thanks to westfw and mikalhart.
+* Fixing bug that limited the bit() macro to 15 bits. Thanks to Paul Badger.
+* Adding ARDUINO version constant (thanks to prodding from mikalhart).
+* Ordering the items in the Tools > Board menu.
+* Adding "Copy as HTML" command to the Tools menu.
+* Eliminating (maybe) the occasional "Couldn't determine program size" errors.
+ Thanks to the Clever Monkey.
+* Moving selection of Linux look-and-feel into the arduino script so it can
+ be changed by users. Thanks to Eberhard Fahle.
+* Adding automatic dependency generation to the Makefile. (Lars Immisch)
+0015 - 2009.03.26
+[core / libraries]
+* Adding support for the Arduino Mega (ATmega1280).
+* Reinstating use of core.a library in the build process, slightly shrinking
+ compiled sketch sizes. (Thanks to William Westfield.)
+* Fixing bug in copy for forum (thanks to eried).
+0014 - 2009.03.07
+[core / libraries]
+* Fixing bug that prevented multiple outgoing Client connections with the
+ ethernet library.
+* Clarifying ATmega168 vs. ATmega328 in the Tools > Boards menu.
+* Updating the Mac OS X AVR tools to AVR MacPack 20081213. This includes
+ avr-gcc 4.3.2, which should fix problems with functions called from
+ within interrupts.
+0013 - 2009.02.06
+[documentation / examples]
+* Adding examples for Parallax Ping Sensor and Memsic 2125 accelerometer.
+[core / libraries]
+* Adding support for the ATmega328. The upload speed is 57600 baud, so you
+ may need to edit boards.txt or reburn your bootloader if you bought an
+ ATmega328 w/ bootloader from adafruit or other supplier.
+* Adding support for printing floats to Print class (meaning that it works
+ in the Serial, Ethernet, and LiquidCrystal classes too). Includes two
+ decimal places.
+* Added word, word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(),
+ lowByte(), and highByte(); see reference for details.
+* Working around problem that caused PWM output on pins 5 and 6 to never go
+ to 0 (causing, for example, an LED to continue to glow faintly).
+* Removing cast macros, since function-style casts are a feature of C++. This
+ should fix contributed libraries that broke in Arduino 0012.
+* Modifying pulseIn() to wait for a transition to start timing (i.e. ignoring
+ any pulse that had already started when the function was called).
+* Fixing bug in random() that limited the ranges of values generated. Thanks
+ to Mikal Hart.
+* Modifying delay() to pause for at least the given number of milliseconds.
+* Fixing bug in Ethernet library that interfered with use of pins 8 and 9.
+* Originating each outgoing network connection from a different port (in the
+ Client class of the Ethernet library). Thanks to Paul and joquer.
+* Updating ATmega168 bootloader to work with standard distributions of avrdude
+ (responding to signature requests made with the universal SPI command) and
+ correctly store EEPROM data. Thanks to ladyada.
+* Omitting unused functions from compiled sketches, reducing their size.
+* Changing compilation process to allow for use of EEMEM directive (although
+ not yet uploading EEPROM data).
+0012 - 2008.09.18
+* Added Arduino Nano to the boards menu.
+* Arduino Pro or Pro Mini (8 MHz) to the boards menu.
+* Added Firmata library by Hans Steiner and others. This provides a standard
+ protocol for communicating with software on the computer.
+* Added an Ethernet library for use with the Arduino Ethernet Shield.
+* Added a Servo library based on the work of Jim Studt.
+* Added a LiquidCrystal library based on the work in the playground. It
+ supports both 4- and 8-bit modes.
+* Improved millis(): it now overflows after 49 days instead of 9 hours, but
+ now uses slightly more processing power.
+* Fixed reversing direction bug in Stepper library. (Thanks to Wayne Holder.)
+* Moved insertion of #include <WProgram.h> to after any comments and #include
+ statements in the main sketch file. This means that an #include <stdlib.h>
+ now works.
+* Upgraded to newer versions of avr-gcc (4.3.0) and avr-libc (1.6). This
+ provides support for newer Atmel chips, but may increase the size
+ of sketches.
+* Allowing per-board specification of the upload.using preference, allowing
+ upload via bootloader to some boards and via a programmer to others.
+* Added return values to some functions in the Wire library to allow for
+ better error handling.
+* Fixed random() to work with long values.
+* Creation of an abstract Print base-class to allow Serial, SoftwareSerial,
+ and LiquidCrystal to share code for print() and println().
+* Incorporated ladyada's watchdog timer mods to the bootloader source, but
+ only compiling them in for the Pro and Pro Mini (because they are included
+ in the bootloader being burned on the boards by SparkFun).
+0011 - 2008.03.28
+* Fixed Find in Reference.
+* Added map() function for mapping values from one range to another.
+* Added analogReference() function.
+* Added interrupts() and noInterrupts() functions.
+* Added degrees() and radians() functions.
+* Added timeout parameter (in microseconds) to pulseIn(); default is 1 second.
+* Support for uploading sketch using a programmer.
+* Improved detection of functions that need prototyping.
+* Placing function prototypes after #include's and #define's.
+* No longer moving #include statements to the top of the sketch.
+* Can now drag .pde files onto the Arduino dock icon on Mac OS X.
+ Thanks to Peter Sgouros.
+* New script for downloading the reference from Tom Pollard. Thanks Tom!
+* Miscellaneous Mac OS X and other patches from Wim Lewis. Thanks Wim!
+* Updated Mac OS X FTDI drivers.
+0010 - 2007.10.11
+* Support for the LilyPad Arduino.
+* Vista support.
+* Mac OS X universal distribution.
+* Printing!
+* Copy for discourse.
+* New Board menu replaces the Microcontroller menu.
+* New Burn Bootloader menu offers a choice of programmers.
+* New and improved keyboard shortcuts.
+* Fixed some find/replace bugs.
+* Better auto-format.
+* Improved error messages when uploading.
+* Support for COM10 and higher on Windows.
+* Fixed automatic refresh of the Serial Port menu under Windows.
+* Quaqua look-and-feel on Mac OS X.
+* Reorganization of the Arduino application directory.
+0009 - 2007.08.06
+* Added support for the Arduino Diecimila.
+* Switched to using avrdude (instead of uisp) for uploading sketches.
+* Added the ability to burn NG and Diecimila bootlaoders (with an AVRISPmkII).
+* Fixed a bug in SoftwareSerial (a hardware serial function was being called
+ instead of the software serial equivalent). Thanks to brianbr for the
+ report and fix.
+0008 - 2007.06.09
+* Updated examples (in distribution and on the website).
+* Added an EEPROM library (see reference for details).
+* Added a Stepper motor library (see reference).
+* Patched to reduce binary sketch sizes by building the Arduino core as
+ a library (.a) file - now only the needed parts of the core are linked into
+ a sketch. Originally written by Nicolas Roland, revised by Don Cross.
+* Fixed bug in Serial.available(). Report and fix by Don Cross.
+* Now recompiling libraries when switching microcontrollers. Report by
+ Julian Bleecker; fix by Nicholas Zambetti.
+* Cleaned up core functions: moved pin definitions into program space to save
+ RAM, and other minor improvements. Contributed by Jim Studt.
+* Lots of reference additions and fixes from Paul Badger.
+* Changed default microcontroller to ATmega168 from ATmega8.
+* Removed the delay from analogRead().
+* Activating TWI/I2C pullup resistors on the ATmega168 (in addition to the
+ ATmega8).
+0007 - 2006.12.25
+* Smaller core (about 3.5 KB instead of 4.5 KB).
+* Added a SoftwareSerial library (thanks to Antonio, Heather Dewey-Hagborg, and
+ bigengineer for their help).
+* Implemented a Serial.flush() routine; see reference for details.
+* Digital pins 0 and 1 can be used for i/o until a call to Serial.begin().
+* Replaced avr-lib's uart routines with custom code for handling serial
+ communication and modified C++ serial commands to call the C serial commands;
+ the code may behave slightly differently in border cases (e.g. non-standard
+ speeds, or on overflow).
+* Added attachInterrupt() and detachInterrupt() functions for handling of
+ external interrupts on pins 2 and 3.
+* Implemented shiftOut() routine; see reference for details.
+* Defining binary constants: e.g. B1010 is 6.
+* Mac versions no longer require running of the macosx_setup.command script.
+* Windows version comes with the FTDI USB drivers already unzipped.
+* New Linux binary distribution (still requires some programs to be
+ pre-installed).
+0006 - 2006.10.21
+* Mac version no longer requires Java 1.5, meaning it should run on 10.3.9.
+* Added support for analog inputs 6 and 7 and pwm on pins 5 and 6 on the
+ on the ATmega168 used in the Arduino Mini (extra analog inputs not available
+ in DIP ATmega168s).
+* You now select the baud rate for the serial monitor from within the editor
+ status bar when the serial monitor is running instead of from the Tools menu.
+* Pressing enter within the serial monitor edit box no longer appends a newline
+ to the message sent to the board.
+* Included the Wire (TWI) library from Wiring.
+* Updated the reference.
+0005 - 2006.09.26
+* Applied patch from Hans Steiner to improve Linux support by searching for avr
+ tools in the user's path instead of expecting them at a fixed location.
+* Added an upload.verbose preference for help in debugging.
+* ATmega168 support!
+* New Wiring-compatible randomSeed(), random(max) and random(min, max) functions
+ (except operating on longs instead of floats).
+* Fixed bug that sometimes caused uploading of old versions of a sketch.
+* Serial monitor nows include an interface to send messages to the Arduino
+ board. Pressing return appends a newline, pushing the send button doesn't.
+* Now displaying "burning bootloader..." and "compiling..." status messages.
+0004 - 2006.04.26
+* Main sketch is now compiled as C++ (instead of C).
+* Updated avr toolchain.
+* printInteger(), printHex(), etc. now handle longs.
+* millis() fixed (now overflows after days, not minutes)
+* Fixed path to java in Windows run.bat.
+* Added Matrix and Sprite libraries (written with Nicholas Zambetti).
+* PWM now working on pin 11 (in addition to pins 9 and 10).
+* Slowed PWM frequency (on all three PWM pins) to 1KHz.
+* Now give an error if compiled sketch is too big.
+* Fixed abs(), min(), max(), and constrain() macros.
+* Added menu items to the IDE to burn bootloader.
+* Now display binary sketch size on upload, and give error if too big.
+* Added C++ serial library.
+* Resynced with Processing/Wiring IDE code (improved auto-format, faster logging
+ to serial monitor console, other bug fixes)
+* New library system.
+* Updated to latest version of the RXTX serial library; Mac users will need to
+ rerun macosx_setup.command.
+0003 - 2006.01.16
+API Changes
+* Reversed the analog input pins to correspond to newer boards. This means
+ a call, for example, to analogRead(0) must be changed to analogRead(5) in
+ order to read the same physical pin.
+* Added a printNewline() function (which sends '\n' = ASCII 10).
+New Stuff
+* Reference is included (features native to C not yet documented).
+* Serial monitor added (click the toolbar button to turn it on or off). Baud
+ rate is controlled by the Serial Monitor Baud Rate Menu, defaults to 9600.
+ Icon and implementation from Wiring.
+* Serial port menu now automatically refreshes when opened.
+* New blue color scheme and icons courtesy of Noah Shibley (colors are hardcoded
+ into the source to ensure consistency with image files).
+* Keyspan and FTDI USB drivers included with Mac and Windows distributions.
+Bug Fixes
+* millis() now updates every millisecond instead of every second.
+* Bootloader included with Windows distribution (it was already in the Mac
+ dist).
+* Updated icon of the Windows executable.
+* Now flushing the serial port before uploading (should fix some errors).
+* Improved accuracy of the delayMicroseconds() function.
+* Upload rate no longer selectable from a menu within the IDE. Instead, edit
+ the serial.download_rate item in the preferences.txt file.
+* Created Xcode project for building Arduino on the Mac (doesn't yet regenerate
+ the grammar files or package the distribution); active target should be "App".
+* Removed unused or unimplemented items from menus.
+0002 - 2005.10.05
+* New build process no longer uses makefiles; now controlled by preferences.txt.
+* core/ replaced with targets/; can now link against Wiring libraries.
+* Replaced print() with printString, printInteger, printHex, printByte, etc.
+* Added menu for selecting serial port speed.
+* Updated icon.
+* Bootloader shrunk to less than 1 KB; fuses updated accordingly.
+* Added serialRead(), serialAvailable(), and delayMicroseconds().
+0001 - 2005.08.25
+* This is the first released of the unified IDE + language library
+ it's a terrible hack... but it works. at the moment it's in alpha stage
+ but it can be used to work.
+* The processing preprocessor is included but not used.
1,458 todo.txt
@@ -1,1251 +1,235 @@
-0165 pde (1.0.3)
-X no changes in this release
+0016 arduino
-_ add option to use full screen exclusive mode on present inside pde?
-_ override default setting of macosx (yes) and linux/win (no)
-_ linux present mode isn't working properly
-_ make better version of the windows launcher for debugging
+Move library examples from the library folders into the example folder.
-_ update to java 6u12
+Don't explicitly add the built-in or user library examples to the examples menu. Instead, the built-in library examples will be in the examples folder, and the user-library examples will appear in the sketchbook menu.
-X try adding a space to the name of the help menu for beachball problems
-_ this works, might be useful to make the switch
-_ disable sketchbook and examples menus on os x?
+Add library keyword highlighting.
-_ after deleting a tab code still get's preprocessed, pde file is not forgotten
+Test the (Revise the disk image and include the drivers.)
-_ proper libraries warning dialog
-_ check if libraries folder does not exist
-_ check to see if other libraries are installed
-_ warn user about moving libraries and restarting
+Copy over Arduino todo.txt
-E2 _ Default wildcard imports are causing naming conflicts
-E2 _
+Add readme (at least to the source tree, even if it doesn't make sense in a distribution of a single .app file)
-_ fix isManagingFocus error inside JEditTextArea
+Update reference.
-_ windows exported exe problems (pcho)
-_ lib folder goes missing, give an error
-_ also any .jar files that are missing, give an error
-_ showing more debug messages (command line?)
+Remove the Processing libraries.
-_ can't rename a .pde file as a .java file
-_ shift-tab with no selection should go back two spaces
+Test bootloader burning w/ an AVRISP and a parallel programmer.
-_ add general outline of 1.5 and 2.0 releases to the faq
-_ video is on its way out, no good/simple solution for fixing now
-_ andreas' library will do good things eventually
+Add the Serial monitor.
-_ move library examples to the examples menu
-_ do this once the library documentation has been fixed up
+Change the colors.
-_ need to do a better job of error handling inside main()
-4 _ mangled menu text with java 6u10
-4 _ need to try adding the d3d flag to the .exe
-4 _
-[ needs verification ]
-_ export and export to application fail with umlauts in folder name
-_ stop button needs to update itself and work properly [1.0]
-_ also editor buttons to light up and clear properly
-_ need someone to go out and test all scenarios of this
-[ known bugs ]
-_ command line support is currently broken
-_ some fixes can be found in the bug report
-_ video library threading problems with other libraries
-_ using Capture.list() before size() sometimes works
-_ also placing OpenGL inside the extensions directory
-_ serial.available() broken with video
-_ first few frames of OpenGL sketches on Windows run slowly
-_ Slow response or spinning wheel from the menu bar on Mac OS X
-_ sometimes not launching
-_ this seems to be a threading problem, like an NPE on load/open
-_ probaby related to the other load/save sync errors
-_ significant point() and set() slowdown on OS X
-with casey
-_ specifically add "eclipse" to integration description
-_ link books and sample chapters from the "getting started" portion of the faq
-_ keep in a zip file? (5000 files @ 30 MB instead of 15 MB zip)
-_ mark examples as untitled (rather than read-only)
-_ maybe even pull these directly from the zip file?
-_ load examples from zip files
-_ disallow add file to sketch, export, export application
-_ pretty much anything inside the sketch?
-_ but don't do this with untitled, cuz it kinda stinks
-_ this is too weird--just put examples into individual zip files
-_ mark example files as untitled
-_ though will that require the sketch to be saved before export?
-_ find in reference issues
-_ if() and for() don't work, they look for for_.html instead of for.html
-_ XMLElement is not linked for find in ref
-_ the ? operator is not in find in ref (no ref page either?)
-_ update keywords generator script on the site
-_ perhaps move this closer to the dev process?
-_ move reference folder around so that it matches site organization
-_ otherwise several links break on the main faq page
-_ discuss i18n issues and proper system (?)
-_ look through 404 issues on the site
-_ TRIANGLE_STRIP not highlighted for "find in reference"
-_ nor is it listed on the reference page
-_ so students can't find the ref for it
-_ needs to link TRIANGLE_STRIP to the beginShape() reference
-libraries and classpaths [1.0]
-_ versioning info
-_ java.ext.dirs for /System/Library/Java/Extensions
-_ can set java.ext.dirs to something else
-_ on osx, just ignore anything in /Library/Java/Extensions (but not others)?
-_ native lib stuff, use native.txt in lib folder, then:
-_ String osName = System.getProperty("");
-_ String osArch = System.getProperty("os.arch");
-X update to jogl 1.1.1
-X do this with enhanced library/platform support
-X see how platform is determined by jogl / use for lib import
-_ add control for dependencies (i.e. svg needs xml), needed for export
-_ add "pretty menu name" to the export.txt file
-_ move export.txt to xml? (nah, it's only flat information)
-_ need better platform designation setup for libs
-_ library installation should use the sketchbook folder, not the p5 folder
-_ actually enforce this, give users a warning about other libs
-_ need to deal with classpath conflicts
-_ avoid garbage that people have installed on their machines
-_ antlr.jar in the classpath will cause trouble..
-_ jogl jar files, or jogl install will cause trouble
-_ /System/Library/Java/Extensions or /Library/Java/Extensions
-_ the /System one contains qtjava
-_ the /Library one is empty (by default), maybe skip it?
-_ when a conflicting library is found, need to report it
-_ altho prolly only when it's actually different (md5hash it?)
-_ this seems to be causing a lot of trouble with recent releases
-_ (opengl changes and whatnot)
-_ jar files like the bad aiexport plugin will cause serious problems
-_ need to ignore processing.core classes showing up in other jar files
-_ tougher than it looks, because it all depends on what java wants to use
-_ i.e. even if not specified, the stuff will be in the classpath
-_ need to make classpath code be less promiscuous
-_ the order of adding libraries to classpath should be opposite
-_ the important local libraries should be first in cp, user contrib later
-_ java.extension.dirs has the library/extn stuff
-_ can probably set this blank
-_ the jar from which a class file has been loaded
-_ getClass().getProtectionDomain().getCodeSource().getLocation().getFile()
-_ example from jsyn
-JSyn Installer build 011
-java.vm.version = 1.5.0_07-87
-java.library.path = .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
-java.ext.dirs = /Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext
-Installing Native library JSynV142
- to: /Users/fry/Library/Java/Extensions/libJSynV142.jnilib
-Native component JSynV142 downloaded successfully.
-Installing JAR file JSynClasses.jar
- to: /Users/fry/Library/Java/Extensions/JSynClasses.jar
-JAR file JSynClasses.jar downloaded successfully.
-Note: you must restart your browser before running any JSyn Applets!
-Installation completed.
-_ set DYLD_LIBRARY_PATH to include .dylib and other framework stuff
-_ java.library.path will only handle .jnilib stuff
-_ need better error messages for broken api / library troubles
-_ e.g. ocd is broken in 0125 because of method signature changes
-_ could have library developers update compatability note
-_ so they would need to test library and say "compatible with 0110"
-_ before it would automatically update or show as an update
-_ tools -> get library
-_ library url: [ ]
-_ this would grab something.version, and
-_ maybe something.xml that would include a bunch of background
-_ tools -> update libraries
-_ this would check the something.version to see if it's newer
-_ document how to add libraries: put in sketchbook (not libraries folder)
-_ library/download.url and library/home.url
-_ if there's a reference subfolder, add that to the help menu
-o and enable it for "find in reference"
-X nice idea but too error-prone
-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-DOC / Bugzilla
-_ add bug voting to the bugs db before 1.0 release?
-_ remove LATER, REMIND, WORKSFORME as categories; add VERIFY
-_ set default reported bug priority to 4 or 5
-_ * disable changes to a bug (except by admin) after closed *
-_ fix "reply" garbage added
-_ fix "back to bug# 778"
-_ remove patch designation
-_ make severity a radio button (people aren't using it)
-_ change to just ( ) Problem ( ) Feature Request (remove 'severity')
-_ remove 'platform' dropdown
-_ specify some versions? also add back a "target version" for fix?
-_ explanation of P1 through P5
-_ goes to bugs page
-_ longer description of "i found a bug"
-_ what was the unfinished bullet item?
-_ also something i forgot to add to the opengl faq stuff
-_ move the bugs section of the troubleshooting page to
-_ search for ALL in the bugs db turns up:
-_ add note to bugs db asking to please use archive sketch and attach
-_ make a web page that describes how to use the bugs db
-_ don't change the bug subject/summary text
-_ don't mess with priorities (i will)
-_ need to change what people can edit in the bug report
-_ do something about the bug summary field to not make it editable
-_ maybe just move it away from its current location?
-_ call it "bug title" instead of "summary"?
-_ layout problems with attachments page
-_ layout problems with logout page
-_ bug duplicate text field doesn't retain focus
-_ finish putting all the bugs into bugzilla
-_ add a notation to the bugs site re: reading the faq and searching first
-X move p5 site bug reporting to bugzilla
-_ do the same for suggestions
-_ and detail the suggestions policy on the dev site: diy
-_ post a page explaining the bug reporting system
-_ arrays (frequent questions)
-_ using arraylist (avoid vector)
-_ cannot use generics
-_ using mod to avoid shifting an array
-_ append is slow, arraycopy is fast
-_ whether arraycopy works to copy array to itself
-_ using expand and arrays to move quickly
-DOC / Write Me
-_ PDE locks up during setup() (since no window shown)
-_ maybe better to do an example of running code on another thread
-_ when it's done as a script
-_ stop() to shut down a sketch (but not quit/close window)
-_ MIN_FLOAT, MAX_FLOAT, also the difference from the Java functions
-_ also MIN_INT and MAX_INT, even though those are more similar
-_ update the reference to cover parseXxxx() stuff
-_ also add notes about parseInt/Float(blah, otherwise)
-_ also parseInt and parseFloat, how they can return another number or NaN
-_ should the default be NaN or 0?
-_ get/set are faster way draw screen space images, but no tint, no translations
-_ make sure the docs include "beginShape() cannot be nested"
-_ also add error messages to the renderers
-_ also note that ellipse() et al use beginShape()
-_ and that java2d should complain if people try it
-_ method to go from function name to the included examples where used?
-_ encourage use of set() instead of point() in the drawing api
-_ moviemaker video sizes / usability
-_ other projects on which p5 is built
-_ no longer oro matcher and jikes
-_ add: quaqua, jna, registry stuff, .. ?
-_ quicktime likes to crash (not just on windows)
-_ noLoop() isn't the same as "finished", though it's sometimes used that way
-_ to finish, use exit() (though that will make the window close)
-_ add this to ref once halt() is finished
-_ errors in pdf/index.html examples
-_ probably remove these, move the useful ones to the examples folder
-_ that way people will read the reference
-_ i can't fix these:
-An unexpected error has been detected by HotSpot Virtual Machine:
-all i can do is find things that might trigger them, but it's more likely
-than not to be a java problem, and not something that can be fixed
-_ notes about getting best results from text in each renderer
-_ add to mac reference for present mode
-_ can make full screen work via Info.plist key
-_ add to troubleshooting
-_ problem with big floats:
-_ problem with small floats:
-_ fix syntax highlighting of focusGained and others
-_ verify (and document) public access members of PApplet
-_ some docs missing (therefore not syntax highlighting)
-_ constants that are not highlighting (WINDOWS the only one?)
-_ consoleXxxx and untitledXxxx folders in /tmp
-_ console may be useful for debugging
-_ untitled folders are stored in temp folder
-_ switching into present mode in info.plist
- <key>LSUIPresentationMode</key>
- <integer>4</integer>
-_ PApplet.this doesn't work
-_ doesn't work in javac either--needs to be ClassName.this
-_ sketchname.this also doesn't work, because Temporary_NNNN used for name
-_ but since it's another tab/class, will run externally
-_ so should make the external version use the actual sketch name not temp
-_ can't use PApplet.this, doesn't seem to like that
-_ instead, must pass variable to inner class
-_ errors with serial and libraries
-Exception in thread "Thread-2" java.lang.NoClassDefFoundError:
- at processing.serial.Serial.<init>(
-generally, that error means that something is missing from the
-CLASSPATH. the NoClassDefError gives erroneous feedback about *what*
-class is actually missing, as of java 1.3+ (yay!)
-so perhaps conflicting versions of a library in the sketchbook (solve
-this by setting to an empty sketchbook temporarily) or files might be
-installed in the CLASSPATH variable or something conflicting in
-DOC / Text
-_ how to use textMode(SHAPE) with opengl
-_ things will be extremely slow (fix later)
-_ things will also be very ugly on-screen
-_ text being nicer in java2d
-_ use createFont() to load the font or use a font from your machine
-_ note that createFont() is no good for applets/export to web
-_ textMode(SCREEN) for P2D and P3D for nice fast text in screen space
-_ currently slow in JAVA2D and OPENGL, but this will improve
-_ what is the vlw font file format?
-_ shapes from 3D type
-_ the way to do it (will improve later) is to use some undocumented features
-_ 1) you have to use the OPENGL renderer
-_ 2) use textMode(SHAPE);
-_ 3) use createFont() (which you already are)
-_ this will convert all the shape data from the fonts for writing.
-_ it will be *extremely* slow, which is part of why it's not documented yet.
-_ but it will work with beginRaw().
-DOC / Discourse Board
-_ auto-close threads when not posted to for 30(?) days
-_ add basic guidelines for posting to the board
-_ 0. be polite. going on about how much something "sucks" or is "stupid" will make you look like an eight-year-old.
-_ 1. don't double (or triple) post
-_ 2. if you're having trouble, first see the troubleshooting page
-_ 3. if you have a bug, first search the bugs database
-_ 4. first check the FAQ
-_ 5. use the search bar at the top of every page
-_ 6. read revisions.txt
-_ someone wrote up an initial version of this
-_ how to put [code] around blocks of code
-_ also mention contributed plugin for formatting
-_ also the reference page on the bb commands
-_ i don't answer to instant messages
-_ i don't answer email
-_ use the bugs db instead of the bugs board
-_ use the search box (not the forum search)
-_ read the faq, read the faq
-_ read the reference.. right-click on a word and choose "find in ref"
-_ non-processing posts will be deleted (not a java discussion board)
-_ no duplicate posts - find an area and post to
-_ explanation of what the areas are
-_ be sure to look at the reference, especially the extended reference
-_ questions like 'how do i do x' are often solved by looking at the api
-_ for instance, to get the framerate, use framerate()
-DOC / Other
-_ why adding .0001 to a float doesn't work
-_ and how they're imprecise in general (use nf)
-_ why strong typing? (link also to language thing on main page)
-_ we cannot commit to any sort of timeframe on releases
-_ under the hood - basic
-_ it's all java
-_ don't use awt
-_ most things are imported by default
-_ under the hood - complex
-_ how to get started with coding
-_ everything subclasses PApplet
-_ if you need a particular name, add it with "extends PApplet"
-_ all code from tabs is joined to one sketch
-_ if you want it separate, then you have to make .java files
-_ in doing so, you'll lose access to 'g'
-_ add main() to your app to make it run on its own
-_ preproc stuff.. have to make setup() into public void setup()
-_ (same for key events and all that)
-_ performance
-_ video stinks.. java2d stinks.. macs stink
-_ note in the 'drawing in 2d' section of faq
-_ fastest machine possible
-_ turn off hyperthreading in the bios
-_ nice gfx card only helps opengl
-_ dual processor not particularly useful, unless you make more threads
-_ but making more threads is often more work than is useful
-_ is there a way to do xxx?
-_ advanced users who are outgrowing the basic reference:
-_ be sure to check the "complete" reference
-_ change bugs.html to issues.html
-_ and add a redirect in httpd.conf
-_ need to document how subclass of pgraphics works
-_ what are the necessary bits that need to be subclassed
-_ simple handling of colors, what fields are available
-_ how to get the matrices
-_ simple endshape handler
-DOC / Site
-_ also mention in keyPressed docs that ASCII key codes will not be coded
-_ it's just how java is (maybe this is already in there?)
-_ add note about adding libraries to the sketchbook to the reference
-_ add note in environment reference about how to add something to the sketch
-_ (code, .java files, etc)
-_ make sure that psound has been removed (from docs, ref, mentions)
-_ make source link on p5 site go direct to the source
-_ or at least explain how to navigate
-_ post releases on sourceforge so that international mirrors are better?
-_ start creating source tarball for each release?
-_ roll over the discourse board for 1.0?
-_ board stuff
-_ only allow moderators to delete posts
-_ set "no smileys" as the default (better for posting code)
-_ add stuff about the history into the people section
-_ descended from dbn, but not dbn, etc..
-_ remove the 'search' item from yabb.cgi
-DOC / Examples
-_ add to key reference a pointer to an example that tracks all keys
-_ write simple example that tracks all keys
-_ making things fast with pixel operations
-_ write a threading example
-_ show an example of how to handle callback into the app
-X or handle this some more intelligent way, super.stop() is needed.
-X registerDispose() does the trick
-_ scripts: how to make a long setup() sleep so that things don't lock way up
-_ write an example that uses HashMap (or Hashtable)
-_ write an example that uses ArrayList properly
-_ get xml library example in there
-_ simple method for having a clickable region or sprite with rollover
-DOC / Hacks
-_ clipboard implementation example
-_ JAI handles setting image size for png (check javax.imageio?)
-_ PNGEncodeParam png = PNGEncodeParam.getDefaultEncodeParam(bufImage);
-_ png.setPhysicalDimension(round(dpi*39.370079), round(dpi*39.370079), 1);
-_ JAI.create("filestore", bufImage, filename+".png", "PNG");
-_ also an example of setting the jpeg compression (included in bug report)
-_ write a timer class/example library
-_ post to web example
-_ particularly for uploading image data
-_ along with php script to handle receive
-_ this is in hacks, but
-_ how do i add gui to a sketch?
-_ don't use awt components
-_ how to use swing and embed components inside p5
-_ explain how to integrate code with swing
-_ use a separate environment, call init(), use noLoop(), redraw()
-_ use JPopupMenu.setDefaultLightWeightPopupEnabled(false); for zorder
-_ write documentation on general use of processing.core
-_ note that applet is itself a Component
-_ eclipse
-_ document how to properly integrate with eclipse
-_ add runtime args to opengl library so that it sets path properly
-_ add explanation for using subclipse to get p5
-_ make a src folder, data folder location
-_ export to eclipse
-_ how to do this with subclipse instructions?
-PDE - Processing Development Environment
-PDE / Warnings
-_ proper dialog support
-_ two-tiered dialogs for everything - use big font/little font style throughout
-_ option to suppress warning dialogs
-_ starting with the one about modifying the sketch name for spaces
-_ the first time someone hides a tab, put up a msg explaining what it does
-_ "don't warn me about this anymore"
-_ add "don't warn me about this" for sketch renaming
-_ make sure renamed version doesn't exist already
-_ prompt user before nuking applet or application folders
-_ along with a "don't ask me later"
-_ include a note that 'applet' folder will get emptied/rewritten
-_ or rename the old applet folder to something else? (too messy)
-PDE / Compiler & Preprocessor
-_ add local variables to PdeRecognizer
-_ remove static methods in PdePreprocessor, instead pull things from recog
-_ need better error messages in general
-_ some means to link out to further documentation (e.g. AIOOBE, NPE)
-_ add support for multiple errors from the compiler
-_ actual error may be 4th of 5
-_ maybe a dropdown list thing, with the first just shown?
-_ with additional .pde files, don't allow static mode in front tab
-_ don't allow "for (blah; blah; blah) ;"
-_ or if (blah blah blah) ;
-_ it's never useful. students can use { } if they want an empty block
-_ Update ANTLR grammar to support 1.5 syntax
-_ preproc cant handle labels to break/continue nested loops
-_ imports inside comments are being included
-_ toInt() needs to go away in time for the book.. fix parser bugs
-_ using a processing keyword as a variable name gives unhelpful error message
-_ casting problems in the parser
-_ straighten out int() -> toInt() conversions
-_ float u = float(x)/width; works.
-_ float u = (float(x)/width); doesn't work: "unexpected token: float".
-_ float u = (x/float(width)); works!
-_ return (int(5.5)) causes an error
-_ random, single slash in the code doesn't throw an error
-_ (just gets removed by the preprocessor)
-_ allow doubles in preproc
-_ (for casting, etc) particularly for Math.cos() et al
-_ don't allow goofy case versions of reserved words
-_ keypressed should maybe throw an error
-_ missing brackets, unmatched brackets
-_ "unexpected token void" -> "You're mixing dynamic and static mode"
-_ expecting RPAREN messages are ugly
-_ not enough args for triangle (or args in general)
-_ throws out bizarre message
-_ if 'void' left out before loop or setup, cryptic message about
-_ 'constructor loop must be named Temporary_23498_2343'
-_ add a better handler for this specific thing?
-_ using a keyword as a variable name gives unhelpful error message
-_ unspecified return type creates compile error
-_ or maybe not? followup said maybe not
-_ Blah.class will confuse the preproc
-_ non-matching curly brackets sometimes don't cause an error
-_ syntax highlighting error with // and /*
-_ "missing a /* from the end of a comment" message
-_ enter a bug for this, it's bound to be found
-_ "multipart/*" produces the error
-_ even though things are inside a quoted txt block
-_ copy running code from /tmp/buildXXxxx on crash of p5
-_ should probably make a way to save/recover code
-_ make the buildXxxx folders relate to time/date?
-_ NullPointerException on unterminated comment at end of code
-_ and OutOfMemoryError and weird lockup
-_ also OutOfMemoryError if a quote is not terminated
-_ preprocessor error if last line of code is a comment with no CR after it,
-_ an OutOfMemoryError wants to happen,
-_ but right now there's a hack to add a CR in PdePreprocessor
-_ Parsing error when using char literals
-_ Improve detection and handling of missing semicolons
-PDE / Editor
-_ improve update check message "a new release (1.0.1) is available"
-_ be more descriptive, use a second line in latest.txt
-_ maybe just include the full text of the update message there?
-_ go through other sketch-opening menus to check for disappearing sketches
-_ deal with isManagingFocus() warning in the editor src
-_ should really be doing the 'right' thing with sketch file handling
-_ create temporary file when saving
-_ once done writing, use remove the original and rename the old
-_ some basic stuff like this..
-_ when disk is full, Processing zeroes files when it tries to save changes
-_ sketch marked as modified too aggressively
-_ Closing the last window doesn't cause PDE to save its position/contents/etc
-_ (when the pref for close last window = quit is set)
-_ not remembering window size/placement preferences
-_ saved window positions.. if displays has changed, becomes a problem
-_ record the display that it was on?
-_ GraphicsDevice gd = frame.getGraphicsConfiguration().getDevice();
-_ make sure that the application is within the bounds of the current display?
-_ (from 0, 0 to width, height)
-_ messy since some displays have negative coords
-_ [LaunchRunner Error][]) threw an exception
-_ file-save stops running sketch
-_ strange NullPointerException problem prevents launch
-_ some kind of NPE in handleOpenInternal and friends
-_ appears to be a synchronization problem with the loading
-_ when opening from double-click on the mac, doesn't replace untitled
-_ or in general, issues between opening new window and another launching
-_ probably need to synchronize the file open methods inside Base
-_ (could in fact cause nastiness with editors[] access)
-_ editors opening up at the same time on load?
-_ either synchronize the open (at a minimum)
-_ or wait for mac handlers to register an open event
-_ can also cause problems with opening multiple copies of same sketch
-_ after fixing name of sketch, ensure sketch of that name does not exist
-_ do quick fix for tab bar
-_ don't show tabs when there are too many
-_ maybe move the list of files to the top?
-_ or indicate which are visible somehow
-_ slightly longer.. rearrange?
-_ or just show tabs in (alpha?) order based on what's most recently used
-_ have some indicator that shows the tabs when they've disappeared
-_ or little mini tabs that expand/contract?
-_ and a way to control who's expanded and not
-_ add auto-save to the editor
-_ dragging title bar while sketch running causes strange selection behavior
-_ shortcuts not working after rename? (osx only?)
-_ convert tabs to spaces when pasting text
-_ add "recent files" list to open menu?
-_ unchecking 'use external editor' sketch should not set modified
-_ dangerous if a version that hasn't been re-loaded has possibility
-_ to overwrite. i.e. make a change and save in external editor,
-_ don't actually
-_ when running with external editor, hide the editor text area
-_ horizontal scroller gets weird sometimes
-_ lock the minimum size for the main processing editor frame
-_ if it's made too small, stuff from the bottom disappears
-_ add mnemonics for menus (alt-f to open 'file')
-_ option to just print all code in project
-_ option to export all the code as colored html
-_ "page setup" sucks in java
-_ rename/saveas doesn't properly have its focus set
-_ under windows, immediately typing after rename doesn't select
-_ the whole thing is selected, but not directly editable
-_ dim edit menus as appropriate during selection/no selection/etc
-_ Ctrl-Z will undo, but not scroll to where the undo happens.
-_ so user thinks nothing is happening and overundo.
-_ undo has become sluggish
-_ fonts smaller than 10 cause problems in the editor
-_ generally causes trouble on osx
-_ on windows and linux, changing the size throws things off
-_ code coloring is imperfect because it's not based on a parser
-_ i.e. mousePressed() is red but mouseMoved() is brown
-_ clicking i-- ) between -- and ) will select "-- )"
-_ in eclipse, it looks to see which is closest and selects that
-_ need to check behavior for word and bbedit
-_ implement emacs keybindings (list is at the bug report)
-_ implement better method of showing curly brace closure
-_ sketches should only write to the console of their editor window
-PDE / Editor Buttons
-_ run button not properly unhighlighting
-_ does it unhighlight after compile or runtime errors?
-_ also when using draw() instead of loop()
-_ applet needs to notify runner that it has terminated
-_ check 'finished' via objectreference?
-_ make the run button highlight immediately
-_ or maybe show an animation for starting up
-_ rather than post-compile
-_ if export fails (compile error) need to un-highlight the export button
-_ when holding down shift, show the alternate behavior for EditorHeader
-PDE / Editor Header
-2 _ make some fancy extendo things because the tabs get too big
-2 _ either condense or popdown menu thingy
-2 _
-5 _ key command for prev/next tab works, but not menu
-5 _ menu options are actually disabled because of inconsistency
-5 _
-PDE / Editor Status
-_ error messages run off the edge and go invisible
-_ move all prompts to modal dialog showError/Message/Warning/Prompt
-_ nicely design dialog boxes to go with visual of p5
-_ maybe something that shows stack trace?
-_ with an 'email this' button? (include source code too?)
-_ also need a "prompt" dialog for asking filenames, etc
-_ implement and remove PdeEditorStatus stuff
-PDE / Export
-1 _ replace applet.html and applet-opengl.html
-1 _
-1 _ update applet.html to point at java 6u10 with the new auto-update stuff
-1 _ also update applet on the home page to do the same
-4 _ failed export still copies random files
-4 _ Failed compile on Export or Export to Application
-4 _ still creates folder and leaves mess behind
-4 _
-_ when exporting to application (or applet) don't copy .java files from folder
-_ (they'll be copied as source files later)
-_ make .java files and friends go to correct locations on export (app)
-_ warn on export when people call their sketches things like Server
-_ warn if someone extends PApplet but mis-names the sketch
-_ or don't allow it to be exported
-_ add bug reference to the faq once added to the db
-X or at least add a note about this to the faq
-_ show error when no main() is included but class extends PApplet
-_ error can happen or be checked
-_ errors during export don't show up properly (no red status bar)
-_ need to decide how to handle "stop" button in present mode
-_ when running externally, people need to write their own stop function
-_ just get export to application working so this can be supported
-_ for now, they're stuck w/ running in the env and getting the ugliness
-_ make export put a timestamp in the html code (hidden or visible)
-_ exporting application copies .java files
-_ .java files are copied to the root folder as well as the source folder
-_ javadoc comment in a static mode app doesn't get moved to the top
-PDE / Find & Replace
-_ all around very ugly, fix it up
-_ several tweaks
-_ only enable "find next" in menu after a find has happened
-_ allowing to find & replace over multiple tabs
-PDE / History
-_ implement new version of history
-_ make history folder, and a zip (not gz) file for each entry
-_ history causing trouble - super slow with a huge sketch
-_ could instead be gzipped and appended to history.dat
-_ along with another file that is actually a table of offsets
-_ no need to make the thing a gzip stream
-_ checkbox on menu for 'record history' ?
-_ history converter option?
-_ only first 20 entries visible?
-_ shortcut to walk through history, ala photoshop (ctrl-alt-z)
-_ zlib file becoming corrupt (not flushed after close?)
-_ make hooks to history api so others can write tools around it
-PDE / Preferences
-_ prefs window doesn't swap ok/cancel properly for mac vs. windows/linux
-_ don't bother having a "cancel" for the prefs window
-_ rewrite preferences window to use proper layout?
-_ is there already a bug for this?
-_ make prefs dialog modal?
-_ prefs window not visible on windows taskbar
-_ split Preferences and PreferencesFrame?
-_ preferences window has been hit with the ugly stick
-_ redo panel to use proper Box layout etc
-_ also needs to look good across all platforms
-_ make available the background colors for present mode, stop button color
-_ isolate color cho