From 9c27d097a7bceb2b11f439bcfff2c0634b7801be Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 13 Oct 2015 15:49:01 -0700 Subject: [PATCH 001/772] Tests for new Serial reference --- content/api_en/LIB_serial/Serial_bufferUntil.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/content/api_en/LIB_serial/Serial_bufferUntil.xml b/content/api_en/LIB_serial/Serial_bufferUntil.xml index d26ff0c4b..e190976a4 100755 --- a/content/api_en/LIB_serial/Serial_bufferUntil.xml +++ b/content/api_en/LIB_serial/Serial_bufferUntil.xml @@ -12,20 +12,14 @@ serialEvent(). ]]> From 1775e032808596542465177f63a80e44687b87e2 Mon Sep 17 00:00:00 2001 From: gohai Date: Wed, 14 Oct 2015 15:07:41 +0200 Subject: [PATCH 002/772] Initial reference for I/O library This is just the existing descriptions from the source files. Code examples and more thoughtful wording to come. --- content/api_en/LIB_io/GPIO.xml | 23 ++++++++++ .../api_en/LIB_io/GPIO_attachInterrupt.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_delay.xml | 41 ++++++++++++++++++ .../api_en/LIB_io/GPIO_delayMicroseconds.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_digitalRead.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_digitalWrite.xml | 41 ++++++++++++++++++ .../api_en/LIB_io/GPIO_disableInterrupt.xml | 41 ++++++++++++++++++ .../api_en/LIB_io/GPIO_enableInterrupt.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_interrupts.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_noInterrupts.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_pinMode.xml | 41 ++++++++++++++++++ .../api_en/LIB_io/GPIO_releaseInterrupt.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/GPIO_releasePin.xml | 41 ++++++++++++++++++ .../api_en/LIB_io/GPIO_waitForInterrupt.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/I2C.xml | 23 ++++++++++ .../api_en/LIB_io/I2C_beginTransmission.xml | 42 +++++++++++++++++++ content/api_en/LIB_io/I2C_close.xml | 39 +++++++++++++++++ content/api_en/LIB_io/I2C_endTransmission.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/I2C_list.xml | 39 +++++++++++++++++ content/api_en/LIB_io/I2C_read.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/I2C_write.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/LED.xml | 23 ++++++++++ content/api_en/LIB_io/LED_close.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/LED_list.xml | 39 +++++++++++++++++ content/api_en/LIB_io/LED_setBrightness.xml | 39 +++++++++++++++++ content/api_en/LIB_io/PWM.xml | 23 ++++++++++ content/api_en/LIB_io/PWM_clear.xml | 39 +++++++++++++++++ content/api_en/LIB_io/PWM_close.xml | 41 ++++++++++++++++++ content/api_en/LIB_io/PWM_list.xml | 39 +++++++++++++++++ content/api_en/LIB_io/PWM_set.xml | 39 +++++++++++++++++ content/api_en/LIB_io/RPI.xml | 23 ++++++++++ content/api_en/LIB_io/SPI.xml | 23 ++++++++++ content/api_en/LIB_io/SPI_close.xml | 39 +++++++++++++++++ content/api_en/LIB_io/SPI_list.xml | 39 +++++++++++++++++ content/api_en/LIB_io/SPI_settings.xml | 39 +++++++++++++++++ content/api_en/LIB_io/SPI_transfer.xml | 41 ++++++++++++++++++ 36 files changed, 1349 insertions(+) create mode 100755 content/api_en/LIB_io/GPIO.xml create mode 100644 content/api_en/LIB_io/GPIO_attachInterrupt.xml create mode 100755 content/api_en/LIB_io/GPIO_delay.xml create mode 100755 content/api_en/LIB_io/GPIO_delayMicroseconds.xml create mode 100755 content/api_en/LIB_io/GPIO_digitalRead.xml create mode 100755 content/api_en/LIB_io/GPIO_digitalWrite.xml create mode 100755 content/api_en/LIB_io/GPIO_disableInterrupt.xml create mode 100755 content/api_en/LIB_io/GPIO_enableInterrupt.xml create mode 100755 content/api_en/LIB_io/GPIO_interrupts.xml create mode 100755 content/api_en/LIB_io/GPIO_noInterrupts.xml create mode 100755 content/api_en/LIB_io/GPIO_pinMode.xml create mode 100755 content/api_en/LIB_io/GPIO_releaseInterrupt.xml create mode 100755 content/api_en/LIB_io/GPIO_releasePin.xml create mode 100755 content/api_en/LIB_io/GPIO_waitForInterrupt.xml create mode 100755 content/api_en/LIB_io/I2C.xml create mode 100755 content/api_en/LIB_io/I2C_beginTransmission.xml create mode 100755 content/api_en/LIB_io/I2C_close.xml create mode 100755 content/api_en/LIB_io/I2C_endTransmission.xml create mode 100755 content/api_en/LIB_io/I2C_list.xml create mode 100755 content/api_en/LIB_io/I2C_read.xml create mode 100755 content/api_en/LIB_io/I2C_write.xml create mode 100755 content/api_en/LIB_io/LED.xml create mode 100755 content/api_en/LIB_io/LED_close.xml create mode 100755 content/api_en/LIB_io/LED_list.xml create mode 100755 content/api_en/LIB_io/LED_setBrightness.xml create mode 100755 content/api_en/LIB_io/PWM.xml create mode 100755 content/api_en/LIB_io/PWM_clear.xml create mode 100755 content/api_en/LIB_io/PWM_close.xml create mode 100755 content/api_en/LIB_io/PWM_list.xml create mode 100755 content/api_en/LIB_io/PWM_set.xml create mode 100755 content/api_en/LIB_io/RPI.xml create mode 100755 content/api_en/LIB_io/SPI.xml create mode 100755 content/api_en/LIB_io/SPI_close.xml create mode 100755 content/api_en/LIB_io/SPI_list.xml create mode 100755 content/api_en/LIB_io/SPI_settings.xml create mode 100755 content/api_en/LIB_io/SPI_transfer.xml diff --git a/content/api_en/LIB_io/GPIO.xml b/content/api_en/LIB_io/GPIO.xml new file mode 100755 index 000000000..1c91ce11b --- /dev/null +++ b/content/api_en/LIB_io/GPIO.xml @@ -0,0 +1,23 @@ + + + +GPIO + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/GPIO_attachInterrupt.xml b/content/api_en/LIB_io/GPIO_attachInterrupt.xml new file mode 100644 index 000000000..d97f0d0f7 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_attachInterrupt.xml @@ -0,0 +1,41 @@ + + + +attachInterrupt() + +I/O + + + +Web & Application + + + + + + + +
+Don't use enableInterrupt() and waitForInterrupt() in combination with this function, as they are orthogonal. The sketch method provided must accept a single integer (int) parameter, which is the number of the GPIO pin that the interrupt occured on. +]]>
+ + +GPIO.attachInterrupt() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_delay.xml b/content/api_en/LIB_io/GPIO_delay.xml new file mode 100755 index 000000000..2fabd808b --- /dev/null +++ b/content/api_en/LIB_io/GPIO_delay.xml @@ -0,0 +1,41 @@ + + + +delay() + +I/O + + + +Web & Application + + + + + + + +
+Calling this function will have an influence on the framerate the sketch is going to achieve. +]]>
+ + +GPIO.delay() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_delayMicroseconds.xml b/content/api_en/LIB_io/GPIO_delayMicroseconds.xml new file mode 100755 index 000000000..59c05ba90 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_delayMicroseconds.xml @@ -0,0 +1,41 @@ + + + +delayMicroseconds() + +I/O + + + +Web & Application + + + + + + + +
+Note: Both the operating system, as well as Processing, are not what is called "hard real-time" systems. In other words: there are many factors, outside of the control of the programmer, which can influence the execution of the program in minute ways. Those are generally not an issue, or even noticeable using a desktop operating system, but they can be a factor, when the timing of a particular sequence of events is critical. For example, one might to wait a very specific number amount of time after receiving an interrupt before changing the state of an output pin. When programming with micro-controllers, as found on the Arduino Uno, there very little between your code and the actual hardware, and multiple executions of the same sketch will probably match each other almost to the very tick of a clock (which happens at the speed of 16 MHz). Systems running full-fledged desktop operating systems, such as Linux, are generally multi-tasking, which means that the operating system allocates small slices of time to the many different processes that run concurrently. The effect of this is often offset by the sheer clock speeds that such computers run. But regardless: if you require your sketch to adhere to a very specific timing, you might be disappointed. +]]>
+ + +GPIO.delayMicroseconds() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_digitalRead.xml b/content/api_en/LIB_io/GPIO_digitalRead.xml new file mode 100755 index 000000000..5527cceea --- /dev/null +++ b/content/api_en/LIB_io/GPIO_digitalRead.xml @@ -0,0 +1,41 @@ + + + +digitalRead() + +I/O + + + +Web & Application + + + + + + + +
+You need to set the pin to INPUT by calling pinMode before calling this function. +]]>
+ + +GPIO.digitalRead() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_digitalWrite.xml b/content/api_en/LIB_io/GPIO_digitalWrite.xml new file mode 100755 index 000000000..cb1935313 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_digitalWrite.xml @@ -0,0 +1,41 @@ + + + +digitalWrite() + +I/O + + + +Web & Application + + + + + + + +
+You need set the pin to OUTPUT by calling pinMode before calling this function. It is not possible to enable or disable internal pull-up resistors for inputs using this function, which is something that's supported on Arduino. +]]>
+ + +GPIO.digitalWrite() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_disableInterrupt.xml b/content/api_en/LIB_io/GPIO_disableInterrupt.xml new file mode 100755 index 000000000..5764a95d7 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_disableInterrupt.xml @@ -0,0 +1,41 @@ + + + +disableInterrupt() + +I/O + + + +Web & Application + + + + + + + +
+Use this function only in combination with enableInterrupt() and waitForInterrupt(). This should not be called when attachInterrupt() is being used. +]]>
+ + +GPIO.disableInterrupt() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_enableInterrupt.xml b/content/api_en/LIB_io/GPIO_enableInterrupt.xml new file mode 100755 index 000000000..24d6c8ad5 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_enableInterrupt.xml @@ -0,0 +1,41 @@ + + + +enableInterrupt() + +I/O + + + +Web & Application + + + + + + + +
+Use this function only when calling waitForInterrupt(). This should not be called when attachInterrupt() is being used. +]]>
+ + +GPIO.enableInterrupt() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_interrupts.xml b/content/api_en/LIB_io/GPIO_interrupts.xml new file mode 100755 index 000000000..924dd481d --- /dev/null +++ b/content/api_en/LIB_io/GPIO_interrupts.xml @@ -0,0 +1,41 @@ + + + +interrupts() + +I/O + + + +Web & Application + + + + + + + +
+You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task. This is only relevant when using attachInterrupt(), not for waitForInterrupt(). By default, interrupts are enabled. +]]>
+ + +GPIO.interrupts() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_noInterrupts.xml b/content/api_en/LIB_io/GPIO_noInterrupts.xml new file mode 100755 index 000000000..79dbe5f42 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_noInterrupts.xml @@ -0,0 +1,41 @@ + + + +noInterrupts() + +I/O + + + +Web & Application + + + + + + + +
+You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task. This is only relevant when using attachInterrupt(), not for waitForInterrupt(). By default, interrupts are enabled. +]]>
+ + +GPIO.noInterrupts() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_pinMode.xml b/content/api_en/LIB_io/GPIO_pinMode.xml new file mode 100755 index 000000000..822b6c0c1 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_pinMode.xml @@ -0,0 +1,41 @@ + + + +pinMode() + +I/O + + + +Web & Application + + + + + + + +
+While pins are implicitly set to input by default on Arduino, it is necessary to call this function for any pin you want to access later, including input pins. +]]>
+ + +GPIO.pinMode() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_releaseInterrupt.xml b/content/api_en/LIB_io/GPIO_releaseInterrupt.xml new file mode 100755 index 000000000..71c62d4be --- /dev/null +++ b/content/api_en/LIB_io/GPIO_releaseInterrupt.xml @@ -0,0 +1,41 @@ + + + +releaseInterrupt() + +I/O + + + +Web & Application + + + + + + + +
+Use this function only in combination with attachInterrupt(). This should not be called when enableInterrupt() and waitForInterrupt() are being used. +]]>
+ + +GPIO.releaseInterrupt() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_releasePin.xml b/content/api_en/LIB_io/GPIO_releasePin.xml new file mode 100755 index 000000000..3e3bd3e68 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_releasePin.xml @@ -0,0 +1,41 @@ + + + +releasePin() + +I/O + + + +Web & Application + + + + + + + +
+Without calling this function the pin will remain in the current state even after the sketch has been closed. +]]>
+ + +GPIO.releasePin() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/GPIO_waitForInterrupt.xml b/content/api_en/LIB_io/GPIO_waitForInterrupt.xml new file mode 100755 index 000000000..089ea0f71 --- /dev/null +++ b/content/api_en/LIB_io/GPIO_waitForInterrupt.xml @@ -0,0 +1,41 @@ + + + +waitForInterrupt() + +I/O + + + +Web & Application + + + + + + + +
+Make sure to setup the interrupt with enableInterrupt() before calling this function. A timeout value of -1 waits indefinitely. +]]>
+ + +GPIO.waitForInterrupt() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/I2C.xml b/content/api_en/LIB_io/I2C.xml new file mode 100755 index 000000000..1296c31a3 --- /dev/null +++ b/content/api_en/LIB_io/I2C.xml @@ -0,0 +1,23 @@ + + + +I2C + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/I2C_beginTransmission.xml b/content/api_en/LIB_io/I2C_beginTransmission.xml new file mode 100755 index 000000000..0d021a5b8 --- /dev/null +++ b/content/api_en/LIB_io/I2C_beginTransmission.xml @@ -0,0 +1,42 @@ + + + +beginTransmission() + +I/O + + + +Web & Application + + + + + + + +
+I2C addresses consist of 7 bits plus one bit that indicates whether the device is being read from or written to. Some datasheets list the address in an 8 bit form (7 address bits + R/W bit), while others provide the address in a 7 bit form, with the address in the lower 7 bits. This function expects the address in the lower 7 bits, the same way as in Arduino's Wire library, and as shown in the output of the i2cdetect tool.
+If the address provided in a datasheet is greater than 127 (hex 0x7f) or there are separate addresses for read and write operations listed, which vary exactly by one, then you want to shift the this number by one bit to the right before passing it as an argument to this function. +]]>
+ + +i2c.beginTransmission() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/I2C_close.xml b/content/api_en/LIB_io/I2C_close.xml new file mode 100755 index 000000000..978ac4aae --- /dev/null +++ b/content/api_en/LIB_io/I2C_close.xml @@ -0,0 +1,39 @@ + + + +close() + +I/O + + + +Web & Application + + + + + + + + + +i2c.close() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/I2C_endTransmission.xml b/content/api_en/LIB_io/I2C_endTransmission.xml new file mode 100755 index 000000000..f72be0430 --- /dev/null +++ b/content/api_en/LIB_io/I2C_endTransmission.xml @@ -0,0 +1,41 @@ + + + +endTransmission() + +I/O + + + +Web & Application + + + + + + + +
+This executes any queued writes. +]]>
+ + +i2c.endTransmission() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/I2C_list.xml b/content/api_en/LIB_io/I2C_list.xml new file mode 100755 index 000000000..601685930 --- /dev/null +++ b/content/api_en/LIB_io/I2C_list.xml @@ -0,0 +1,39 @@ + + + +list() + +I/O + + + +Web & Application + + + + + + + + + +I2C.list() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/I2C_read.xml b/content/api_en/LIB_io/I2C_read.xml new file mode 100755 index 000000000..6828a6765 --- /dev/null +++ b/content/api_en/LIB_io/I2C_read.xml @@ -0,0 +1,41 @@ + + + +read() + +I/O + + + +Web & Application + + + + + + + +
+You must call beginTransmission() before calling this function. This function also ends the current transmisison and sends any data that was queued using write() before. +]]>
+ + +i2c.read() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/I2C_write.xml b/content/api_en/LIB_io/I2C_write.xml new file mode 100755 index 000000000..b2f1ccdc4 --- /dev/null +++ b/content/api_en/LIB_io/I2C_write.xml @@ -0,0 +1,41 @@ + + + +write() + +I/O + + + +Web & Application + + + + + + + +
+You must call beginTransmission() before calling this function. The actual writing takes part when read() or endTransmission() is being called. +]]>
+ + +i2c.write() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/LED.xml b/content/api_en/LIB_io/LED.xml new file mode 100755 index 000000000..9e56c1bca --- /dev/null +++ b/content/api_en/LIB_io/LED.xml @@ -0,0 +1,23 @@ + + + +LED + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/LED_close.xml b/content/api_en/LIB_io/LED_close.xml new file mode 100755 index 000000000..8411a8132 --- /dev/null +++ b/content/api_en/LIB_io/LED_close.xml @@ -0,0 +1,41 @@ + + + +close() + +I/O + + + +Web & Application + + + + + + + +
+Without calling this function the LED will remain in the current state even after the sketch has been closed. +]]>
+ + +led.close() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/LED_list.xml b/content/api_en/LIB_io/LED_list.xml new file mode 100755 index 000000000..abb26cca6 --- /dev/null +++ b/content/api_en/LIB_io/LED_list.xml @@ -0,0 +1,39 @@ + + + +list() + +I/O + + + +Web & Application + + + + + + + + + +LED.list() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/LED_setBrightness.xml b/content/api_en/LIB_io/LED_setBrightness.xml new file mode 100755 index 000000000..450894b43 --- /dev/null +++ b/content/api_en/LIB_io/LED_setBrightness.xml @@ -0,0 +1,39 @@ + + + +setBrightness() + +I/O + + + +Web & Application + + + + + + + + + +led.setBrightness() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/PWM.xml b/content/api_en/LIB_io/PWM.xml new file mode 100755 index 000000000..d072a8cf0 --- /dev/null +++ b/content/api_en/LIB_io/PWM.xml @@ -0,0 +1,23 @@ + + + +PWM + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/PWM_clear.xml b/content/api_en/LIB_io/PWM_clear.xml new file mode 100755 index 000000000..84eb4dd01 --- /dev/null +++ b/content/api_en/LIB_io/PWM_clear.xml @@ -0,0 +1,39 @@ + + + +clear() + +I/O + + + +Web & Application + + + + + + + + + +pwm.clear() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/PWM_close.xml b/content/api_en/LIB_io/PWM_close.xml new file mode 100755 index 000000000..42f021b80 --- /dev/null +++ b/content/api_en/LIB_io/PWM_close.xml @@ -0,0 +1,41 @@ + + + +close() + +I/O + + + +Web & Application + + + + + + + +
+Without calling this function the channel will remain in the current state even after the sketch has been closed. +]]>
+ + +pwm.close() + + + + + + + + +1.0 + +Method + +Library + +
diff --git a/content/api_en/LIB_io/PWM_list.xml b/content/api_en/LIB_io/PWM_list.xml new file mode 100755 index 000000000..001725808 --- /dev/null +++ b/content/api_en/LIB_io/PWM_list.xml @@ -0,0 +1,39 @@ + + + +list() + +I/O + + + +Web & Application + + + + + + + + + +PWM.list() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/PWM_set.xml b/content/api_en/LIB_io/PWM_set.xml new file mode 100755 index 000000000..5437657b2 --- /dev/null +++ b/content/api_en/LIB_io/PWM_set.xml @@ -0,0 +1,39 @@ + + + +set() + +I/O + + + +Web & Application + + + + + + + + + +pwm.set() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/RPI.xml b/content/api_en/LIB_io/RPI.xml new file mode 100755 index 000000000..44a213b1f --- /dev/null +++ b/content/api_en/LIB_io/RPI.xml @@ -0,0 +1,23 @@ + + + +RPI + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/SPI.xml b/content/api_en/LIB_io/SPI.xml new file mode 100755 index 000000000..16907f58b --- /dev/null +++ b/content/api_en/LIB_io/SPI.xml @@ -0,0 +1,23 @@ + + + +SPI + +I/O + + + +Application + + + + + + + + + diff --git a/content/api_en/LIB_io/SPI_close.xml b/content/api_en/LIB_io/SPI_close.xml new file mode 100755 index 000000000..b9875e2cc --- /dev/null +++ b/content/api_en/LIB_io/SPI_close.xml @@ -0,0 +1,39 @@ + + + +close() + +I/O + + + +Web & Application + + + + + + + + + +spi.close() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/SPI_list.xml b/content/api_en/LIB_io/SPI_list.xml new file mode 100755 index 000000000..d04777db1 --- /dev/null +++ b/content/api_en/LIB_io/SPI_list.xml @@ -0,0 +1,39 @@ + + + +list() + +I/O + + + +Web & Application + + + + + + + + + +SPI.list() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/SPI_settings.xml b/content/api_en/LIB_io/SPI_settings.xml new file mode 100755 index 000000000..8ce11bfb1 --- /dev/null +++ b/content/api_en/LIB_io/SPI_settings.xml @@ -0,0 +1,39 @@ + + + +settings() + +I/O + + + +Web & Application + + + + + + + + + +spi.settings() + + + + + + + + +1.0 + +Method + +Library + + diff --git a/content/api_en/LIB_io/SPI_transfer.xml b/content/api_en/LIB_io/SPI_transfer.xml new file mode 100755 index 000000000..2db9eca81 --- /dev/null +++ b/content/api_en/LIB_io/SPI_transfer.xml @@ -0,0 +1,41 @@ + + + +transfer() + +I/O + + + +Web & Application + + + + + + + +
+With SPI, data is simultaneously being exchanged between the master device and the slave device. For every byte that is being sent out, there's also one byte being read in. +]]>
+ + +spi.transfer() + + + + + + + + +1.0 + +Method + +Library + +
From 7d653aefe2cd5dbba7d8a4992f29e9720d0c0583 Mon Sep 17 00:00:00 2001 From: gohai Date: Wed, 14 Oct 2015 20:05:57 +0200 Subject: [PATCH 003/772] Add Hardware I/O library to processingrefBuild.sh --- java_generate/ReferenceGenerator/processingrefBuild.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/java_generate/ReferenceGenerator/processingrefBuild.sh b/java_generate/ReferenceGenerator/processingrefBuild.sh index befd9cad2..8a02f0367 100755 --- a/java_generate/ReferenceGenerator/processingrefBuild.sh +++ b/java_generate/ReferenceGenerator/processingrefBuild.sh @@ -36,6 +36,7 @@ javadoc -doclet ProcessingWeblet \ $PROCESSING_SRC_PATH/processing/data/*.java \ $PROCESSING_SRC_PATH/processing/event/*.java \ $PROCESSING_SRC_PATH/processing/opengl/*.java \ + $PROCESSING_LIB_PATH/io/src/processing/io/*.java \ $PROCESSING_LIB_PATH/net/src/processing/net/*.java \ $PROCESSING_LIB_PATH/serial/src/processing/serial/*.java \ $PROCESSING_LIB_PATH/../../../processing-video/src/processing/video/*.java \ From ada0654227b063580d444dd1b404085d94c32af8 Mon Sep 17 00:00:00 2001 From: gohai Date: Wed, 14 Oct 2015 22:06:01 +0200 Subject: [PATCH 004/772] I/O: Add a test description for the GPIO class --- content/api_en/LIB_io/GPIO.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/LIB_io/GPIO.xml b/content/api_en/LIB_io/GPIO.xml index 1c91ce11b..035c8b7bd 100755 --- a/content/api_en/LIB_io/GPIO.xml +++ b/content/api_en/LIB_io/GPIO.xml @@ -17,7 +17,7 @@
From de6b290faf0cd4c17ded176c90f2e5ea1aa40b57 Mon Sep 17 00:00:00 2001 From: codeanticode Date: Wed, 14 Oct 2015 17:45:10 -0400 Subject: [PATCH 005/772] added MeshTweening example, showing use of attrib*() --- .../Graphics/MeshTweening/MeshTweening.pde | 46 +++++++++++++++++++ .../Graphics/MeshTweening/data/frag.glsl | 5 ++ .../Graphics/MeshTweening/data/vert.glsl | 14 ++++++ 3 files changed, 65 insertions(+) create mode 100644 content/examples/Demos/Graphics/MeshTweening/MeshTweening.pde create mode 100644 content/examples/Demos/Graphics/MeshTweening/data/frag.glsl create mode 100644 content/examples/Demos/Graphics/MeshTweening/data/vert.glsl diff --git a/content/examples/Demos/Graphics/MeshTweening/MeshTweening.pde b/content/examples/Demos/Graphics/MeshTweening/MeshTweening.pde new file mode 100644 index 000000000..4d157f795 --- /dev/null +++ b/content/examples/Demos/Graphics/MeshTweening/MeshTweening.pde @@ -0,0 +1,46 @@ +// Use of custom vertex attributes. +// Inspired by +// http://pyopengl.sourceforge.net/context/tutorials/shader_4.html + +PShader sh; + +void setup() { + size(640, 360, P3D); + sh = loadShader("frag.glsl", "vert.glsl"); + shader(sh); + noStroke(); +} + +void draw() { + background(255); + + sh.set("tween", map(mouseX, 0, width, 0, 1)); + + translate(width/2, height/2, 0); + rotateX(frameCount * 0.01); + rotateY(frameCount * 0.01); + + fill(150); + beginShape(QUADS); + float d = 10; + for (int x = -500; x < 500; x += d) { + for (int y = -500; y < 500; y += d) { + fill(255 * noise(x, y)); + attribPosition("tweened", x, y, 100 * noise(x, y)); + vertex(x, y, 0); + + fill(255 * noise(x + d, y)); + attribPosition("tweened", x + d, y, 100 * noise(x + d, y)); + vertex(x + d, y, 0); + + fill(255 * noise(x + d, y + d)); + attribPosition("tweened", x + d, y + d, 100 * noise(x + d, y + d)); + vertex(x + d, y + d, 0); + + fill(255 * noise(x, y + d)); + attribPosition("tweened", x, y + d, 100 * noise(x, y + d)); + vertex(x, y + d, 0); + } + } + endShape(); +} \ No newline at end of file diff --git a/content/examples/Demos/Graphics/MeshTweening/data/frag.glsl b/content/examples/Demos/Graphics/MeshTweening/data/frag.glsl new file mode 100644 index 000000000..3585015a2 --- /dev/null +++ b/content/examples/Demos/Graphics/MeshTweening/data/frag.glsl @@ -0,0 +1,5 @@ +varying vec4 vertColor; + +void main() { + gl_FragColor = vertColor; +} \ No newline at end of file diff --git a/content/examples/Demos/Graphics/MeshTweening/data/vert.glsl b/content/examples/Demos/Graphics/MeshTweening/data/vert.glsl new file mode 100644 index 000000000..387da67bc --- /dev/null +++ b/content/examples/Demos/Graphics/MeshTweening/data/vert.glsl @@ -0,0 +1,14 @@ +uniform mat4 transformMatrix; +uniform float tween; + +attribute vec4 position; +attribute vec4 tweened; +attribute vec4 color; + +varying vec4 vertColor; + +void main() { + gl_Position = transformMatrix * ((1- tween) * position + tween * tweened); + + vertColor = color; +} \ No newline at end of file From d77c4204487f691a14e33fcdf3d90986277c54b0 Mon Sep 17 00:00:00 2001 From: gohai Date: Wed, 14 Oct 2015 23:55:16 +0200 Subject: [PATCH 006/772] I/O: Add to generate/libraries{,_local}.php --- generate/libraries.php | 2 +- generate/libraries_local.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/libraries.php b/generate/libraries.php index 8f4afcce2..ee8bc5652 100755 --- a/generate/libraries.php +++ b/generate/libraries.php @@ -19,7 +19,7 @@ //`cd $path && /usr/bin/git pull https://github.com/processing/processing-docs/`; -$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound'); +$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io'); $lib_dir = REFERENCEDIR.'libraries/'; // Create Index diff --git a/generate/libraries_local.php b/generate/libraries_local.php index 76a64fb9a..7c946d94f 100755 --- a/generate/libraries_local.php +++ b/generate/libraries_local.php @@ -8,7 +8,7 @@ $benchmark_start = microtime_float(); -$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound'); +$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io'); $lib_dir = DISTDIR.'libraries'; From 12a20c9b2ce638d901d3671fea88de55ac201237 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 14 Oct 2015 21:18:42 -0400 Subject: [PATCH 007/772] Added dawesome toolkit library to contributions. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index c2c1eca1f..779c08d78 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,6 +1,6 @@ # Next ID: 167 # Increment after assigning ID to new contribution -# Skipped IDs: 080 084 085 086 +# Skipped IDs: 084 085 086 [Library : 3D] 001 \ http://otrolado.info/proscene.txt @@ -156,6 +156,7 @@ 047 \ http://transmote.com/nest/download/Nest.txt 068 \ http://phi.lho.free.fr/programming/Processing/P8gGraphicsSVG/P8gGraphicsSVG.txt 069 \ https://raw.githubusercontent.com/nok/onedollar-unistroke-recognizer/master/download/OneDollarUnistrokeRecognizer.txt +080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt 082 \ http://www.multiply.org/processing/TimedEvents.txt 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt From a7843ea79ae2b52cdbf35416f6bc001114a28359 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 14 Oct 2015 21:19:06 -0400 Subject: [PATCH 008/772] Removed Sprites, Steganos, QScript, and Jasmine from quarantine. --- contrib_generate/broken.conf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/contrib_generate/broken.conf b/contrib_generate/broken.conf index 2dc295b79..0964b4475 100644 --- a/contrib_generate/broken.conf +++ b/contrib_generate/broken.conf @@ -14,7 +14,6 @@ 050 052 057 -062 068 070 083 @@ -37,12 +36,9 @@ 126 129 130 -131 132 136 141 142 144 -146 -156 -157 \ No newline at end of file +146 \ No newline at end of file From e176299e5aba3217ba44ed3c7d51a35f1bf8f394 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 14 Oct 2015 22:40:30 -0400 Subject: [PATCH 009/772] Disabled Dawesome Toolkit until I figure out why it's not installing. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 779c08d78..aed79565a 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -156,7 +156,7 @@ 047 \ http://transmote.com/nest/download/Nest.txt 068 \ http://phi.lho.free.fr/programming/Processing/P8gGraphicsSVG/P8gGraphicsSVG.txt 069 \ https://raw.githubusercontent.com/nok/onedollar-unistroke-recognizer/master/download/OneDollarUnistrokeRecognizer.txt -080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt +# 080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt 082 \ http://www.multiply.org/processing/TimedEvents.txt 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt From 195a9389459be00843e88cbdb3909d96e8459503 Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 15 Oct 2015 13:10:38 +0200 Subject: [PATCH 010/772] I/O: Remove GPIO.delay(), GPIO.delayMicroseconds() --- content/api_en/LIB_io/GPIO_delay.xml | 41 ------------------- .../api_en/LIB_io/GPIO_delayMicroseconds.xml | 41 ------------------- 2 files changed, 82 deletions(-) delete mode 100755 content/api_en/LIB_io/GPIO_delay.xml delete mode 100755 content/api_en/LIB_io/GPIO_delayMicroseconds.xml diff --git a/content/api_en/LIB_io/GPIO_delay.xml b/content/api_en/LIB_io/GPIO_delay.xml deleted file mode 100755 index 2fabd808b..000000000 --- a/content/api_en/LIB_io/GPIO_delay.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - -delay() - -I/O - - - -Web & Application - - - - - - - -
-Calling this function will have an influence on the framerate the sketch is going to achieve. -]]>
- - -GPIO.delay() - - - - - - - - -1.0 - -Method - -Library - -
diff --git a/content/api_en/LIB_io/GPIO_delayMicroseconds.xml b/content/api_en/LIB_io/GPIO_delayMicroseconds.xml deleted file mode 100755 index 59c05ba90..000000000 --- a/content/api_en/LIB_io/GPIO_delayMicroseconds.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - -delayMicroseconds() - -I/O - - - -Web & Application - - - - - - - -
-Note: Both the operating system, as well as Processing, are not what is called "hard real-time" systems. In other words: there are many factors, outside of the control of the programmer, which can influence the execution of the program in minute ways. Those are generally not an issue, or even noticeable using a desktop operating system, but they can be a factor, when the timing of a particular sequence of events is critical. For example, one might to wait a very specific number amount of time after receiving an interrupt before changing the state of an output pin. When programming with micro-controllers, as found on the Arduino Uno, there very little between your code and the actual hardware, and multiple executions of the same sketch will probably match each other almost to the very tick of a clock (which happens at the speed of 16 MHz). Systems running full-fledged desktop operating systems, such as Linux, are generally multi-tasking, which means that the operating system allocates small slices of time to the many different processes that run concurrently. The effect of this is often offset by the sheer clock speeds that such computers run. But regardless: if you require your sketch to adhere to a very specific timing, you might be disappointed. -]]>
- - -GPIO.delayMicroseconds() - - - - - - - - -1.0 - -Method - -Library - -
From 9e4343110a226f7beb347ed73c180eea01af8561 Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 15 Oct 2015 13:11:47 +0200 Subject: [PATCH 011/772] I/O: Rename LED.setBrightness() to LED.brightness() --- .../LIB_io/{LED_setBrightness.xml => LED_brightness.xml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename content/api_en/LIB_io/{LED_setBrightness.xml => LED_brightness.xml} (89%) diff --git a/content/api_en/LIB_io/LED_setBrightness.xml b/content/api_en/LIB_io/LED_brightness.xml similarity index 89% rename from content/api_en/LIB_io/LED_setBrightness.xml rename to content/api_en/LIB_io/LED_brightness.xml index 450894b43..ffc512e28 100755 --- a/content/api_en/LIB_io/LED_setBrightness.xml +++ b/content/api_en/LIB_io/LED_brightness.xml @@ -1,7 +1,7 @@ -setBrightness() +brightness() I/O @@ -21,7 +21,7 @@ Sets the brightness ]]> -led.setBrightness() +led.brightness() From cf9acfc9a134bf49bf49ce9bb2413b9de0840956 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Thu, 15 Oct 2015 10:10:28 -0400 Subject: [PATCH 012/772] Re-enabled Dawesome Toolkit. Added 3.0 version of GameControlPlus. --- contrib_generate/skipped.conf | 3 ++- contrib_generate/sources.conf | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib_generate/skipped.conf b/contrib_generate/skipped.conf index c84f3ebdb..679b5c009 100644 --- a/contrib_generate/skipped.conf +++ b/contrib_generate/skipped.conf @@ -2,4 +2,5 @@ 039 041 050 -051 \ No newline at end of file +051 +143 \ No newline at end of file diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index aed79565a..124aeb9f8 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 167 +# Next ID: 168 # Increment after assigning ID to new contribution # Skipped IDs: 084 085 086 @@ -103,6 +103,7 @@ 136 \ http://www.extrapixel.ch/processing/gifAnimation/gifAnimation.txt 139 \ http://erniejunior.github.io/VSync-for-Processing/download/VSync.txt 143 \ http://www.lagers.org.uk/processing/gamecontrol/GameControlPlus.txt +167 \ http://www.lagers.org.uk/processing3/gamecontrol/GameControlPlus.txt [Library : Language] 063 \ http://www.rednoise.org/rita/RiTa.txt @@ -156,7 +157,7 @@ 047 \ http://transmote.com/nest/download/Nest.txt 068 \ http://phi.lho.free.fr/programming/Processing/P8gGraphicsSVG/P8gGraphicsSVG.txt 069 \ https://raw.githubusercontent.com/nok/onedollar-unistroke-recognizer/master/download/OneDollarUnistrokeRecognizer.txt -# 080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt +080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt 082 \ http://www.multiply.org/processing/TimedEvents.txt 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt From 48de6ed6698fa0ac68de1cfb68316e4157645ec3 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Thu, 15 Oct 2015 10:25:17 -0400 Subject: [PATCH 013/772] Added OOSCI library. --- contrib_generate/sources.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 124aeb9f8..0688b81f5 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,6 +1,6 @@ # Next ID: 168 # Increment after assigning ID to new contribution -# Skipped IDs: 084 085 086 +# Skipped IDs: 085 086 [Library : 3D] 001 \ http://otrolado.info/proscene.txt @@ -44,6 +44,7 @@ #404# 065 \ http://blog.stainpixels.com/public/share.txt 072 \ http://sojamo.de/libraries/oscp5/oscP5.txt 073 \ http://ubaa.net/shared/processing/udp/udp.txt +084 \ http://iddi.github.io/oocsi-processing/oocsi.txt 089 \ https://raw.githubusercontent.com/nok/soundcloud-processing/master/download/SoundCloud.txt #404# 103 \ http://hamzeen.github.io/ShortMessage/ShortMessage.txt 110 \ https://raw.github.com/fjenett/xlsreader-library-processing/latest/release/XlsReader.txt @@ -95,6 +96,7 @@ 039 \ http://interfaze.info/libraries/tablet/download/v2/Tablet.txt 060 \ https://dl.dropbox.com/u/87680069/gamepad.txt 067 \ http://www.graffitiresearchlab.de/wp-content/uploads/proJMS.txt +084 \ http://iddi.github.io/oocsi-processing/oocsi.txt 091 \ http://n-e-r-v-o-u-s.com/tools/obj/OBJExport.txt 097 \ http://pif.github.com/android-select-file/download/SelectFile.txt 098 \ http://vialab.science.uoit.ca/smt/dl/SMT.txt @@ -159,6 +161,7 @@ 069 \ https://raw.githubusercontent.com/nok/onedollar-unistroke-recognizer/master/download/OneDollarUnistrokeRecognizer.txt 080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt 082 \ http://www.multiply.org/processing/TimedEvents.txt +084 \ http://iddi.github.io/oocsi-processing/oocsi.txt 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt 140 \ https://raw.github.com/dhchoi/processing-countdowntimer/master/release/CountdownTimer.txt From beb80e1eeec4e9d6368dd4a76bd91b418e8b765e Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 15 Oct 2015 18:16:26 +0200 Subject: [PATCH 014/772] I/O: Add index.html --- content/api_en/LIB_io/index.html | 99 ++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 content/api_en/LIB_io/index.html diff --git a/content/api_en/LIB_io/index.html b/content/api_en/LIB_io/index.html new file mode 100755 index 000000000..3ad816dd3 --- /dev/null +++ b/content/api_en/LIB_io/index.html @@ -0,0 +1,99 @@ + +

Hardware I/O

+ +
+ +

+ The Hardware I/O library allows to access the computer's hardware periperals, such as digital + inputs and outputs, serial busses, and the like, in a fashion similar to the Arduino plaform. + This library is only available for embedded Linux boards with the necessary kernel drivers, + such as the Raspberry Pi. +

+

+ The source code is available on the processing GitHub repository. Please report bugs here. +

+ +
+ +
+

+

GPIO
+

+ The GPIO class reads and writes from General Purpose I/O pins.
+
+ pinMode()
+ digitalRead()
+ digitalWrite()
+ attachInterrupt()
+ noInterrupts()
+ interrupts()
+ releaseInterrupt()
+ waitForInterrupt()
+ releasePin()
+
+

+ +
I2C
+

+ The I2C class communicates with peripherals over I2C interfaces.
+
+ I2C
+ list()
+ beginTransmission()
+ read()
+ write()
+ endTransmission()
+ close()
+
+

+ +
LED
+

+ The LED class controls the computer's build-in lights.
+
+ LED
+ list()
+ brightness()
+ close()
+
+

+ +

+
+ +
+

+ +

PWM
+

+ The PWM class controls hardware Pulse-width modulation channels, if supported by your platform.
+
+ PWM
+ list()
+ set()
+ clear()
+ close()
+
+

+ +
RPI
+

+ The RPI class is a helper for use with the Raspberry Pi.
+
+ RPI
+
+

+ +
SPI
+

+ The SPI class communicates with attached devices over SPI interfaces.
+
+ SPI
+ list()
+ settings()
+ transfer()
+ close()
+
+

+

+
From aab54b5ee635a2a1dfa8052253e0c2305ca1f356 Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 15 Oct 2015 22:20:49 +0200 Subject: [PATCH 015/772] I/O: Add Hardware I/O to libraries/index.html --- content/api_en/libraries/index.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/api_en/libraries/index.html b/content/api_en/libraries/index.html index c33c26703..11cc19e54 100644 --- a/content/api_en/libraries/index.html +++ b/content/api_en/libraries/index.html @@ -37,7 +37,12 @@
Video
Sound

Playback audio files, audio input, synthesize sound, and effects.

- + +
  • +
    Hardware I/O
    +

    Access peripherals on the Raspberry Pi and other Linux-based computers

    +
  • +

    Contributions

    From 0f5a36872521e31e60edadf8b07024d53af80c2d Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 15 Oct 2015 22:51:19 +0200 Subject: [PATCH 016/772] I/O: First reference draft Still missing: PWM, RPI. --- .../api_en/LIB_io/GPIO_attachInterrupt.xml | 33 ++++++++++++++- content/api_en/LIB_io/GPIO_digitalRead.xml | 27 +++++++++++- content/api_en/LIB_io/GPIO_digitalWrite.xml | 30 +++++++++++++- content/api_en/LIB_io/GPIO_interrupts.xml | 27 +++++++++++- content/api_en/LIB_io/GPIO_noInterrupts.xml | 29 ++++++++++++- content/api_en/LIB_io/GPIO_pinMode.xml | 28 ++++++++++++- .../api_en/LIB_io/GPIO_releaseInterrupt.xml | 22 ++++++++-- content/api_en/LIB_io/GPIO_releasePin.xml | 28 +++++++++++++ .../api_en/LIB_io/GPIO_waitForInterrupt.xml | 24 ++++++++++- content/api_en/LIB_io/I2C.xml | 39 +++++++++++++++++- .../api_en/LIB_io/I2C_beginTransmission.xml | 22 +++++++++- content/api_en/LIB_io/I2C_close.xml | 24 ++++++++++- content/api_en/LIB_io/I2C_endTransmission.xml | 23 ++++++++++- content/api_en/LIB_io/I2C_list.xml | 8 +++- content/api_en/LIB_io/I2C_read.xml | 27 +++++++++++- content/api_en/LIB_io/I2C_write.xml | 19 +++++++++ content/api_en/LIB_io/LED.xml | 29 ++++++++++++- content/api_en/LIB_io/LED_brightness.xml | 18 ++++++++ content/api_en/LIB_io/LED_close.xml | 24 +++++++++++ content/api_en/LIB_io/LED_list.xml | 6 +++ content/api_en/LIB_io/PWM_list.xml | 6 +++ content/api_en/LIB_io/SPI.xml | 41 ++++++++++++++++++- content/api_en/LIB_io/SPI_close.xml | 27 +++++++++++- content/api_en/LIB_io/SPI_list.xml | 6 +++ content/api_en/LIB_io/SPI_settings.xml | 24 ++++++++++- content/api_en/LIB_io/SPI_transfer.xml | 20 +++++++++ content/api_en/LIB_io/index.html | 4 +- 27 files changed, 587 insertions(+), 28 deletions(-) diff --git a/content/api_en/LIB_io/GPIO_attachInterrupt.xml b/content/api_en/LIB_io/GPIO_attachInterrupt.xml index d97f0d0f7..6f76f82e2 100644 --- a/content/api_en/LIB_io/GPIO_attachInterrupt.xml +++ b/content/api_en/LIB_io/GPIO_attachInterrupt.xml @@ -12,14 +12,43 @@ +Calls a function when the value of an input pin changes
    +
    +The sketch method provided must accept a single integer (int) parameter, which is the +number of the GPIO pin that the interrupt occured on. As this method might be called +at any time, including when drawing to the display window isn't permitted, it is best +to only set simple variables that are being responded to in the next draw() call, as +shown above. Calling functions of the Hardware I/O library at this point is certainly +possible.

    -Don't use enableInterrupt() and waitForInterrupt() in combination with this function, as they are orthogonal. The sketch method provided must accept a single integer (int) parameter, which is the number of the GPIO pin that the interrupt occured on. +The mode parameter determines when the function will be called: GPIO.FALLING occurs when the level changes from high to low, GPIO.RISING when the level changes from low +to high, and GPIO.CHANGE when either occurs. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_digitalRead.xml b/content/api_en/LIB_io/GPIO_digitalRead.xml index 5527cceea..72f5799a1 100755 --- a/content/api_en/LIB_io/GPIO_digitalRead.xml +++ b/content/api_en/LIB_io/GPIO_digitalRead.xml @@ -12,14 +12,37 @@ +Returns the value of an input pin, which is either GPIO.HIGH (1) or GPIO.LOW (0)

    -You need to set the pin to INPUT by calling pinMode before calling this function. +You need to set the pin to input by calling pinMode() before calling this function. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_digitalWrite.xml b/content/api_en/LIB_io/GPIO_digitalWrite.xml index cb1935313..49b79b384 100755 --- a/content/api_en/LIB_io/GPIO_digitalWrite.xml +++ b/content/api_en/LIB_io/GPIO_digitalWrite.xml @@ -12,14 +12,40 @@ +Sets an output pin to be either high or low

    -You need set the pin to OUTPUT by calling pinMode before calling this function. It is not possible to enable or disable internal pull-up resistors for inputs using this function, which is something that's supported on Arduino. +You need set the pin to output by calling pinMode() before calling this function. Unlike on Arduino, it is not possible to set a input pin's internal pull-up resistor using this function. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_interrupts.xml b/content/api_en/LIB_io/GPIO_interrupts.xml index 924dd481d..352c5f5ca 100755 --- a/content/api_en/LIB_io/GPIO_interrupts.xml +++ b/content/api_en/LIB_io/GPIO_interrupts.xml @@ -12,6 +12,31 @@ @@ -19,7 +44,7 @@
    -You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task. This is only relevant when using attachInterrupt(), not for waitForInterrupt(). By default, interrupts are enabled. +You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task. By default, interrupts are enabled. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_noInterrupts.xml b/content/api_en/LIB_io/GPIO_noInterrupts.xml index 79dbe5f42..31bb5a57c 100755 --- a/content/api_en/LIB_io/GPIO_noInterrupts.xml +++ b/content/api_en/LIB_io/GPIO_noInterrupts.xml @@ -12,6 +12,31 @@ @@ -19,7 +44,9 @@
    -You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task. This is only relevant when using attachInterrupt(), not for waitForInterrupt(). By default, interrupts are enabled. +You can use noInterrupts() and interrupts() in tandem to make sure no interrupts are occuring while your sketch is doing a particular task.
    +
    +While a method associated with a pin's interrupt is being executed, interrupts from the same pin are automatically prevented from occurring. Interrupts from other pins can still happen, however. If you also want to prevent those, put noInterrupts() at the beginning of your callback function and interrupts() at its end. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_pinMode.xml b/content/api_en/LIB_io/GPIO_pinMode.xml index 822b6c0c1..9bf715e70 100755 --- a/content/api_en/LIB_io/GPIO_pinMode.xml +++ b/content/api_en/LIB_io/GPIO_pinMode.xml @@ -12,14 +12,38 @@ +Configures a pin to act either as input or output

    -While pins are implicitly set to input by default on Arduino, it is necessary to call this function for any pin you want to access later, including input pins. +Unlike on Arduino, where pins are implicitly set to inputs by default, it is necessary +to call this function for any pin you want to access, including input pins. ]]>
    diff --git a/content/api_en/LIB_io/GPIO_releaseInterrupt.xml b/content/api_en/LIB_io/GPIO_releaseInterrupt.xml index 71c62d4be..7a616e485 100755 --- a/content/api_en/LIB_io/GPIO_releaseInterrupt.xml +++ b/content/api_en/LIB_io/GPIO_releaseInterrupt.xml @@ -12,14 +12,30 @@ -
    -Use this function only in combination with attachInterrupt(). This should not be called when enableInterrupt() and waitForInterrupt() are being used. +Stops listening for interrupts on an input pin ]]>
    diff --git a/content/api_en/LIB_io/GPIO_releasePin.xml b/content/api_en/LIB_io/GPIO_releasePin.xml index 3e3bd3e68..44bebf1d7 100755 --- a/content/api_en/LIB_io/GPIO_releasePin.xml +++ b/content/api_en/LIB_io/GPIO_releasePin.xml @@ -12,6 +12,34 @@ diff --git a/content/api_en/LIB_io/GPIO_waitForInterrupt.xml b/content/api_en/LIB_io/GPIO_waitForInterrupt.xml index 089ea0f71..d0a250c83 100755 --- a/content/api_en/LIB_io/GPIO_waitForInterrupt.xml +++ b/content/api_en/LIB_io/GPIO_waitForInterrupt.xml @@ -12,14 +12,34 @@ +Waits for the value of an input pin to change

    -Make sure to setup the interrupt with enableInterrupt() before calling this function. A timeout value of -1 waits indefinitely. +The mode parameter determines when the function will will return: GPIO.FALLING occurs when the level changes from high to low, GPIO.RISING when the level changes from low +to high, and GPIO.CHANGE when either occurs.
    +
    +This function returns true if the change, false if the timeout occured. ]]>
    diff --git a/content/api_en/LIB_io/I2C.xml b/content/api_en/LIB_io/I2C.xml index 1296c31a3..75190f74a 100755 --- a/content/api_en/LIB_io/I2C.xml +++ b/content/api_en/LIB_io/I2C.xml @@ -12,12 +12,49 @@ > 8); + i2c.write(val & 255); + i2c.endTransmission(); +} ]]> +
    +I2C is a serial bus, commonly used to attach peripheral ICs (integrated circuits) +to processors and microcontrollers. It uses two pins, SDA (for data) and SDL (for +the clock signal). Multiple "slave" devices can be connected to the same bus, as +long as they are responding to different addresses (see below).
    +
    +The I2C "master" device initiates a transmission, which includes sending the +address of the desired "slave" device. I2C addresses consist of 7 bits plus one +bit that indicates whether the device is being read from or written to. Some +datasheets list the address in an 8 bit form (7 address bits + R/W bit), while +others provide the address in a 7 bit form, with the address in the lower 7 bits.
    +
    +This library expects addresses in their 7 bit form, similar to Arduino's Wire +library, and what is being output by the i2cdetect utility on Linux. If the +address provided in a datasheet is greater than 127 (hex 0x7f) or there are +separate addresses for read and write operations listed, which vary exactly by +one, then you want to shift the this number by one bit to the right before passing +it as an argument to beginTransmission(). ]]>
    diff --git a/content/api_en/LIB_io/I2C_beginTransmission.xml b/content/api_en/LIB_io/I2C_beginTransmission.xml index 0d021a5b8..55a6ce909 100755 --- a/content/api_en/LIB_io/I2C_beginTransmission.xml +++ b/content/api_en/LIB_io/I2C_beginTransmission.xml @@ -12,6 +12,25 @@ > 8); + dac.write(val & 255); + dac.endTransmission(); +} ]]> @@ -19,8 +38,7 @@
    -I2C addresses consist of 7 bits plus one bit that indicates whether the device is being read from or written to. Some datasheets list the address in an 8 bit form (7 address bits + R/W bit), while others provide the address in a 7 bit form, with the address in the lower 7 bits. This function expects the address in the lower 7 bits, the same way as in Arduino's Wire library, and as shown in the output of the i2cdetect tool.
    -If the address provided in a datasheet is greater than 127 (hex 0x7f) or there are separate addresses for read and write operations listed, which vary exactly by one, then you want to shift the this number by one bit to the right before passing it as an argument to this function. +This function expects the address in the lower 7 bits, the same way as in Arduino's Wire library, and as shown in the output of the i2cdetect tool. If the address provided in a datasheet is greater than 127 (hex 0x7f) or there are separate addresses for read and write operations listed, which vary exactly by one, then you want to shift the this number by one bit to the right before passing it as an argument to this function. ]]>
    diff --git a/content/api_en/LIB_io/I2C_close.xml b/content/api_en/LIB_io/I2C_close.xml index 978ac4aae..43db9573d 100755 --- a/content/api_en/LIB_io/I2C_close.xml +++ b/content/api_en/LIB_io/I2C_close.xml @@ -12,12 +12,34 @@ > 8); + i2c.write(val & 255); + i2c.endTransmission(); + // and close interface again + i2c.close(); +} ]]> +
    +It is normally not necessary to explicitly close I2C interfaces, as they +are closed automatically by the operating system when the sketch exits.
    +
    +Note: It is possible to have two or more object using the same interface at +a time. ]]>
    diff --git a/content/api_en/LIB_io/I2C_endTransmission.xml b/content/api_en/LIB_io/I2C_endTransmission.xml index f72be0430..83402ff1f 100755 --- a/content/api_en/LIB_io/I2C_endTransmission.xml +++ b/content/api_en/LIB_io/I2C_endTransmission.xml @@ -12,6 +12,25 @@ > 8); + dac.write(val & 255); + dac.endTransmission(); +} ]]> @@ -19,7 +38,9 @@
    -This executes any queued writes. +This executes any queued writes. Read() +implicitly ends the current transmission as well, hence calling +endTransmission() afterwards is not necessary. ]]>
    diff --git a/content/api_en/LIB_io/I2C_list.xml b/content/api_en/LIB_io/I2C_list.xml index 601685930..89a1f03f5 100755 --- a/content/api_en/LIB_io/I2C_list.xml +++ b/content/api_en/LIB_io/I2C_list.xml @@ -12,12 +12,18 @@ diff --git a/content/api_en/LIB_io/I2C_read.xml b/content/api_en/LIB_io/I2C_read.xml index 6828a6765..fee60f84d 100755 --- a/content/api_en/LIB_io/I2C_read.xml +++ b/content/api_en/LIB_io/I2C_read.xml @@ -12,6 +12,28 @@ @@ -19,7 +41,10 @@
    -You must call beginTransmission() before calling this function. This function also ends the current transmisison and sends any data that was queued using write() before. +You must call beginTransmission() before calling this function. +This function also ends the current transmisison and sends any data +that was queued using write() before. It is not necessary to call +endTransmission() after read(). ]]>
    diff --git a/content/api_en/LIB_io/I2C_write.xml b/content/api_en/LIB_io/I2C_write.xml index b2f1ccdc4..6866e1952 100755 --- a/content/api_en/LIB_io/I2C_write.xml +++ b/content/api_en/LIB_io/I2C_write.xml @@ -12,6 +12,25 @@ > 8); + dac.write(val & 255); + dac.endTransmission(); +} ]]> diff --git a/content/api_en/LIB_io/LED.xml b/content/api_en/LIB_io/LED.xml index 9e56c1bca..286d1c56b 100755 --- a/content/api_en/LIB_io/LED.xml +++ b/content/api_en/LIB_io/LED.xml @@ -12,12 +12,39 @@ +
    +This class can control your computer's build-in LEDs, such as the ones +commonly used to indicate the power status and disk activity.
    +
    +Your operating system might not be set up to allow regular users to do +this kind of modification. If this is the case you should install a +so-called udev rule that relaxes the permissions for the files +in /sys/class/leds. You can also try running Processing as root user +using "sudo", but this is generally not recommended. ]]>
    diff --git a/content/api_en/LIB_io/LED_brightness.xml b/content/api_en/LIB_io/LED_brightness.xml index ffc512e28..c6d5f675d 100755 --- a/content/api_en/LIB_io/LED_brightness.xml +++ b/content/api_en/LIB_io/LED_brightness.xml @@ -12,6 +12,24 @@ diff --git a/content/api_en/LIB_io/LED_close.xml b/content/api_en/LIB_io/LED_close.xml index 8411a8132..3b6d993a4 100755 --- a/content/api_en/LIB_io/LED_close.xml +++ b/content/api_en/LIB_io/LED_close.xml @@ -12,6 +12,30 @@ diff --git a/content/api_en/LIB_io/LED_list.xml b/content/api_en/LIB_io/LED_list.xml index abb26cca6..ff97fdd79 100755 --- a/content/api_en/LIB_io/LED_list.xml +++ b/content/api_en/LIB_io/LED_list.xml @@ -12,6 +12,12 @@ diff --git a/content/api_en/LIB_io/PWM_list.xml b/content/api_en/LIB_io/PWM_list.xml index 001725808..7e8fd2ce0 100755 --- a/content/api_en/LIB_io/PWM_list.xml +++ b/content/api_en/LIB_io/PWM_list.xml @@ -12,6 +12,12 @@ diff --git a/content/api_en/LIB_io/SPI.xml b/content/api_en/LIB_io/SPI.xml index 16907f58b..c9ff863fd 100755 --- a/content/api_en/LIB_io/SPI.xml +++ b/content/api_en/LIB_io/SPI.xml @@ -12,12 +12,51 @@ > 3); + // val is between 0 and 1023 + println(val); +} ]]> +
    +Serial Peripheral Interface (SPI) is a serial bus, commonly used to communicate +with sensors and memory devices. It uses four pins: MOSI (Master Out Slave In), +MISO (Master In Slave Out), and SCLK (clock signal) - those three are shared +among all devices on the bus - as well as one or more SS (Slave Select) pins, +that are used for the master to signal to the slave device that it is the +desired respondent for the transmission.
    +
    +The "master" device initiates a transfer by pulling the SS pin of the "slave" +low, and begins outputting a clock signal. In SPI, both the "master" as well as +the "slave" device output data at the same time. It is hence not possible to +read data without also writing some (even if it means outputting zeros or other +dummy data).
    +
    +There are multiple possible configuration settings for SPI, see +settings() for details.
    +
    +This library supports multiple SPI objects making use of the same SPI +interface. ]]>
    diff --git a/content/api_en/LIB_io/SPI_close.xml b/content/api_en/LIB_io/SPI_close.xml index b9875e2cc..e66756e3e 100755 --- a/content/api_en/LIB_io/SPI_close.xml +++ b/content/api_en/LIB_io/SPI_close.xml @@ -12,12 +12,37 @@ > 3); + // val is between 0 and 1023 + println(val); + // and close interface again + adc.close(); +} ]]> +
    +It is normally not necessary to explicitly close SPI interfaces, as they +are closed automatically by the operating system when the sketch exits.
    +
    +Note: It is possible to have two or more object using the same interface at +a time. ]]>
    diff --git a/content/api_en/LIB_io/SPI_list.xml b/content/api_en/LIB_io/SPI_list.xml index d04777db1..e6acf17f0 100755 --- a/content/api_en/LIB_io/SPI_list.xml +++ b/content/api_en/LIB_io/SPI_list.xml @@ -12,6 +12,12 @@ diff --git a/content/api_en/LIB_io/SPI_settings.xml b/content/api_en/LIB_io/SPI_settings.xml index 8ce11bfb1..7b434a094 100755 --- a/content/api_en/LIB_io/SPI_settings.xml +++ b/content/api_en/LIB_io/SPI_settings.xml @@ -12,12 +12,34 @@ > 3); + // val is between 0 and 1023 + println(val); +} ]]> +
    +The default setting is: 500000, SPI.MSBFIRST, SPI.MODE0 ]]>
    diff --git a/content/api_en/LIB_io/SPI_transfer.xml b/content/api_en/LIB_io/SPI_transfer.xml index 2db9eca81..7ffe20daf 100755 --- a/content/api_en/LIB_io/SPI_transfer.xml +++ b/content/api_en/LIB_io/SPI_transfer.xml @@ -12,6 +12,26 @@ > 3); + // val is between 0 and 1023 + println(val); +} ]]> diff --git a/content/api_en/LIB_io/index.html b/content/api_en/LIB_io/index.html index 3ad816dd3..783092014 100755 --- a/content/api_en/LIB_io/index.html +++ b/content/api_en/LIB_io/index.html @@ -22,8 +22,8 @@
    GPIO
    The GPIO class reads and writes from General Purpose I/O pins.

    pinMode()
    - digitalRead()
    digitalWrite()
    + digitalRead()
    attachInterrupt()
    noInterrupts()
    interrupts()
    @@ -40,8 +40,8 @@
    I2C
    I2C
    list()
    beginTransmission()
    - read()
    write()
    + read()
    endTransmission()
    close()

    From bd1b7b2820335c8a4dc1d34d1c1bd0823058b378 Mon Sep 17 00:00:00 2001 From: Lesmana Zimmer Date: Sat, 17 Oct 2015 22:15:33 +0200 Subject: [PATCH 017/772] add missing code for ring and spot class --- content/static/tutorials/arrays/index.html | 59 +++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/content/static/tutorials/arrays/index.html b/content/static/tutorials/arrays/index.html index 534be7d26..d380160dc 100644 --- a/content/static/tutorials/arrays/index.html +++ b/content/static/tutorials/arrays/index.html @@ -724,7 +724,38 @@

    Array of Objects

    currentRing = 0; } } -//Insert Ring Class +class Ring { + float x, y; // X-coordinate, y-coordinate + float diameter; // Diameter of the ring + boolean on = false; // Turns the display on and off + + void start(float xpos, float ypos) { + x = xpos; + y = ypos; + + diameter = 1; + on = true; + } + + void grow() { + if (on == true) { + diameter += 0.5; + if (diameter > 400) { + on = false; + diameter = 1; + } + } + } + + void display() { + if (on == true) { + noFill(); + strokeWeight(4); + stroke(204, 153); + ellipse(x, y, diameter, diameter); + } + } +} @@ -772,7 +803,31 @@

    Array of Objects

    spots[i].display(); // Display each object } } -// Insert Spot class +class Spot { + float x, y; // X-coordinate, y-coordinate + float diameter; // Diameter of the circle + float speed; // Distance moved each frame + int direction = 1; // Direction of motion (1 is down, -1 is up) + + // Constructor + Spot(float xpos, float ypos, float dia, float sp) { + x = xpos; + y = ypos; + diameter = dia; + speed = sp; + } + + void move() { + y += (speed * direction); + if ((y > (height - diameter/2)) || (y < diameter/2)) { + direction *= -1; + } + } + + void display() { + ellipse(x, y, diameter, diameter); + } +} From f0b62cdb74acf3276428181415ba9d9508f77951 Mon Sep 17 00:00:00 2001 From: clayheaton Date: Sat, 17 Oct 2015 16:59:34 -0400 Subject: [PATCH 018/772] Typo fix on coordinate system tutorial... x and y axes text on 'Eighth Grade' SVG were swapped. --- content/static/tutorials/drawing/imgs/drawing-03.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg index 55a6fec35..cf20e2076 100644 --- a/content/static/tutorials/drawing/imgs/drawing-03.svg +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -19,8 +19,8 @@ - x - y + y + x From 8b279dbcecb2b25d4e0348fa521f3cf39b693831 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 18 Oct 2015 16:09:35 -0400 Subject: [PATCH 019/772] Enabled/Added G4PTool contributions. --- contrib_generate/broken.conf | 3 +-- contrib_generate/sources.conf | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib_generate/broken.conf b/contrib_generate/broken.conf index 0964b4475..ba2c0c328 100644 --- a/contrib_generate/broken.conf +++ b/contrib_generate/broken.conf @@ -12,11 +12,10 @@ 047 049 050 -052 -057 068 070 083 +085 087 089 096 diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 0688b81f5..301a6f795 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,6 +1,6 @@ # Next ID: 168 # Increment after assigning ID to new contribution -# Skipped IDs: 085 086 +# Skipped IDs: 086 [Library : 3D] 001 \ http://otrolado.info/proscene.txt @@ -200,7 +200,8 @@ 020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt 049 \ http://thomasdiewald.com/processing/tools/TabManager/download/TabManager.txt 052 \ http://www.lagers.org.uk/processing/guibuilder/G4PTool.txt -057 \ http://dl.dropbox.com/u/69944346/SketchOutline/SketchOutline.txt +057 \ http://www.lagers.org.uk/processing3/guibuilder/G4PTool.txt +085 \ http://dl.dropbox.com/u/69944346/SketchOutline/SketchOutline.txt 096 \ http://www.lagers.org.uk/processing/appletmaker/AppletMaker.txt 099 \ http://poifox.com/templater/download/Templater.txt 100 \ http://poifox.com/bootstrap/download/Bootstrap.txt From 1c1c135e81fbe3fb431997ecc597337bf0ff7931 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 18 Oct 2015 18:01:54 -0400 Subject: [PATCH 020/772] Added G4P Tool for 2.0 to skipped list. --- contrib_generate/skipped.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib_generate/skipped.conf b/contrib_generate/skipped.conf index 679b5c009..386563632 100644 --- a/contrib_generate/skipped.conf +++ b/contrib_generate/skipped.conf @@ -3,4 +3,5 @@ 041 050 051 +052 143 \ No newline at end of file From bb7053d6a72bf70e139132848dd900f6606cc3f1 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 18 Oct 2015 18:02:04 -0400 Subject: [PATCH 021/772] Added a trace when skipping an ID. --- contrib_generate/build_listing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib_generate/build_listing.py b/contrib_generate/build_listing.py index 090ba776d..f3509c067 100755 --- a/contrib_generate/build_listing.py +++ b/contrib_generate/build_listing.py @@ -199,6 +199,7 @@ def missing_key(exports): software_type, contrib_id, prop_url = contrib if (contrib_id in skipped_ids): + print "Skipping " + contrib_id continue download_url = prop_url[:prop_url.rfind('.')] + '.zip' From b4a5e369b45f8f766eb2927a3e3c473d2e03a2c4 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 18 Oct 2015 18:02:17 -0400 Subject: [PATCH 022/772] Added spacebrew library. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 301a6f795..f0fbad2e7 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,6 +1,5 @@ # Next ID: 168 # Increment after assigning ID to new contribution -# Skipped IDs: 086 [Library : 3D] 001 \ http://otrolado.info/proscene.txt @@ -162,6 +161,7 @@ 080 \ http://cloud.brendandawes.com/dawesometoolkit/dawesometoolkit.txt 082 \ http://www.multiply.org/processing/TimedEvents.txt 084 \ http://iddi.github.io/oocsi-processing/oocsi.txt +086 \ http://spacebrew.github.io/spacebrewP5/download/spacebrew.txt 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt 140 \ https://raw.github.com/dhchoi/processing-countdowntimer/master/release/CountdownTimer.txt From 7797b46f1c61e356023c3b854e17c3ec8da231ee Mon Sep 17 00:00:00 2001 From: REAS Date: Wed, 21 Oct 2015 13:08:43 -0700 Subject: [PATCH 023/772] Add Processing subreddit to cover --- templates/template.cover.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/template.cover.html b/templates/template.cover.html index 45e52eec4..84ce4be2c 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -99,6 +99,7 @@

    T-shirts!

    » CreativeApplications.Net
    » For Your Processing
    + » Processing Subreddit
    » OpenProcessing
    » Vimeo
    From df5085234b2f8ef832f34935e6016477d66ca3a4 Mon Sep 17 00:00:00 2001 From: REAS Date: Wed, 21 Oct 2015 13:53:49 -0700 Subject: [PATCH 024/772] Add Javadoc links to GitHub pages --- java_generate/templates/class.template.html | 2 +- java_generate/templates/generic.template.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 9d6f086f8..4114c96b1 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -54,7 +54,7 @@

    -

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    +

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index d32425990..cf92ec10c 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -52,7 +52,7 @@
    -

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    +

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    From 7bc0eb1e6c94cacaa6def63ebdf9f92bfdf44eb1 Mon Sep 17 00:00:00 2001 From: REAS Date: Wed, 21 Oct 2015 14:40:17 -0700 Subject: [PATCH 025/772] Add Javadoc links for Core and Libraries to GitHub pages --- java_generate/templates/class.template.html | 2 +- java_generate/templates/generic.template.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 4114c96b1..01a820da0 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -54,7 +54,7 @@
    -

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    +

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Core Javadoc and Libraries Javadoc.

    Class

    diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index cf92ec10c..b7f192640 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -52,7 +52,7 @@
    -

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Javadoc.

    +

    This reference is for Processing 3.0+. If you have a previous version, use the reference included with your software in the Help menu. If you see any errors or have suggestions, please let us know. If you prefer a more technical reference, visit the Processing Core Javadoc and Libraries Javadoc.

    From 9885b5d1459e00e3be1e83bcd2ef7e7553642fbe Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 22 Oct 2015 13:49:13 -0700 Subject: [PATCH 026/772] Remove 'http' from Google Search links in templates and on Download page --- download/index.php | 2 +- templates/foundation-template.html | 2 +- templates/foundation-template.local.html | 2 +- templates/foundation-template.translation.html | 2 +- templates/template.local.html | 2 +- templates/template.translation.html | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/download/index.php b/download/index.php index f2225c6fd..7a84b8df2 100755 --- a/download/index.php +++ b/download/index.php @@ -85,7 +85,7 @@
    header - +

    diff --git a/templates/foundation-template.local.html b/templates/foundation-template.local.html index d4726b39c..5a5f3167e 100644 --- a/templates/foundation-template.local.html +++ b/templates/foundation-template.local.html @@ -25,7 +25,7 @@

    diff --git a/templates/template.html b/templates/template.html index 9cfa45b25..91400ed36 100755 --- a/templates/template.html +++ b/templates/template.html @@ -28,7 +28,7 @@
  • Processing.py
  • From f037222d887cc161922d5f7d485abbbe17c8093e Mon Sep 17 00:00:00 2001 From: codeanticode Date: Thu, 22 Oct 2015 21:37:31 -0400 Subject: [PATCH 029/772] commented out dispose() in LowLevelGLVboInterleaved and LowLevelGLVboSeparate examples --- .../LowLevelGLVboInterleaved.pde | 17 +++++++------- .../LowLevelGLVboSeparate.pde | 23 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/content/examples/Demos/Graphics/LowLevelGLVboInterleaved/LowLevelGLVboInterleaved.pde b/content/examples/Demos/Graphics/LowLevelGLVboInterleaved/LowLevelGLVboInterleaved.pde index 024dd4c60..78800d5ad 100644 --- a/content/examples/Demos/Graphics/LowLevelGLVboInterleaved/LowLevelGLVboInterleaved.pde +++ b/content/examples/Demos/Graphics/LowLevelGLVboInterleaved/LowLevelGLVboInterleaved.pde @@ -104,16 +104,17 @@ public void draw() { endPGL(); } -public void dispose() { - PGL pgl = beginPGL(); +// Triggers a crash when closing the output window using the close button +//public void dispose() { +// PGL pgl = beginPGL(); - IntBuffer intBuffer = IntBuffer.allocate(1); - intBuffer.put(attribVboId); - intBuffer.rewind(); - pgl.deleteBuffers(1, intBuffer); +// IntBuffer intBuffer = IntBuffer.allocate(1); +// intBuffer.put(attribVboId); +// intBuffer.rewind(); +// pgl.deleteBuffers(1, intBuffer); - endPGL(); -} +// endPGL(); +//} void updateGeometry() { // Vertex 1 diff --git a/content/examples/Demos/Graphics/LowLevelGLVboSeparate/LowLevelGLVboSeparate.pde b/content/examples/Demos/Graphics/LowLevelGLVboSeparate/LowLevelGLVboSeparate.pde index 54ae60375..2caf653e6 100644 --- a/content/examples/Demos/Graphics/LowLevelGLVboSeparate/LowLevelGLVboSeparate.pde +++ b/content/examples/Demos/Graphics/LowLevelGLVboSeparate/LowLevelGLVboSeparate.pde @@ -127,17 +127,18 @@ public void draw() { endPGL(); } -public void dispose() { - PGL pgl = beginPGL(); - - IntBuffer intBuffer = IntBuffer.allocate(2); - intBuffer.put(vertexVboId); - intBuffer.put(colorVboId); - intBuffer.rewind(); - pgl.deleteBuffers(2, intBuffer); - - endPGL(); -} +// Triggers a crash when closing the output window using the close button +//public void dispose() { +// PGL pgl = beginPGL(); + +// IntBuffer intBuffer = IntBuffer.allocate(2); +// intBuffer.put(vertexVboId); +// intBuffer.put(colorVboId); +// intBuffer.rewind(); +// pgl.deleteBuffers(2, intBuffer); + +// endPGL(); +//} void updateGeometry() { // Vertex 1 From 1153864b7de7d891bdb5d4ab5817e3c3be743a57 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Fri, 23 Oct 2015 19:29:11 -0400 Subject: [PATCH 030/772] adding 3.0.1 release --- download/_downloads.php | 29 +++++++++++++++++++---------- download/latest.txt | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/download/_downloads.php b/download/_downloads.php index d01f1f410..d86a03733 100644 --- a/download/_downloads.php +++ b/download/_downloads.php @@ -13,14 +13,14 @@
    - 3.0 - (30 September 2015, 3p ET) + 3.0.1 + (23 October 2015) content diff --git a/templates/template.examples-topics.html b/templates/template.examples-topics.html deleted file mode 100644 index 8f4b71314..000000000 --- a/templates/template.examples-topics.html +++ /dev/null @@ -1,7 +0,0 @@ -

    Topic Examples. Short programs related to animation, drawing, interaction, motion, simulation, and more...

    - -

    - These examples are running online through Processing.js using HTML5 Canvas and WebGL for rendering. There are many more examples included with the Processing application; please look there if you don't find what you're looking for here. -

    - -content \ No newline at end of file From 7c61335801d5513e4a70336e4865feac1c885e61 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 10:53:03 -0800 Subject: [PATCH 051/772] Updated processing.js mentions to p5 --- templates/template.examples-main.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/template.examples-main.html b/templates/template.examples-main.html index 430686080..c20a3da2a 100644 --- a/templates/template.examples-main.html +++ b/templates/template.examples-main.html @@ -1,7 +1,7 @@

    Examples. Short, prototypical programs exploring the basics of programming with Processing.

    - These examples are running online through Processing.js using HTML5 Canvas and WebGL for rendering. There are many more examples included with the Processing application; please look there if you don't find what you're looking for here. + These examples are running online through p5.js using HTML5 Canvas and WebGL for rendering. There are many more examples included with the Processing application; please look there if you don't find what you're looking for here.

    content \ No newline at end of file From 19ebcee90a3aeea572337a0dc4388bf8fe01fa7d Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 10:53:31 -0800 Subject: [PATCH 052/772] Pointed generator to new example template file name --- generate/examples.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate/examples.php b/generate/examples.php index ef17898a3..83788ebd9 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -55,7 +55,7 @@ } //Create Examples page $page = new Page('Examples', 'Examples', "", "../../"); -$page->subtemplate('template.examples-main.html'); +$page->subtemplate('template.examples.html'); //Create Basics html $html = "Basic Examples. Programs about form, data, images, color, typography, and more...


    "; $html .= "
      \n"; From c6cd3a0b0f37e1c52c41fe3e4d06dbbfec268a48 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 10:55:52 -0800 Subject: [PATCH 053/772] Renamed example template file --- templates/{template.examples-main.html => template.examples.html} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{template.examples-main.html => template.examples.html} (100%) diff --git a/templates/template.examples-main.html b/templates/template.examples.html similarity index 100% rename from templates/template.examples-main.html rename to templates/template.examples.html From a6bffb6b0894f32e80eb57ebbda2cf666ebabfbd Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 13:31:06 -0800 Subject: [PATCH 054/772] Modified Example class to use p5 --- generate/lib/Example.class.php | 41 +++++++++------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/generate/lib/Example.class.php b/generate/lib/Example.class.php index bf201aad6..80d149696 100644 --- a/generate/lib/Example.class.php +++ b/generate/lib/Example.class.php @@ -88,44 +88,23 @@ function display() { $html = "\n
      "; // BEGIN example div - // This code is the from the Processing.js export from Processing 200 - /** -
      - - -

      Your browser does not support the canvas tag.

      - -
      - -
      - */ - - // This code is my attempt to generalize the code from Processing 200 - /** - $html .= '
      '; - $html .= '
      "; + + //Script tag for example + $html .= ''; + $html .= ''; - + //Description $html .= "\n

      "; $html .= nl2br($this->doc); #$html .= $this->doc; $html .= "

      \n"; + //Raw code from Processing (not p5) version $html .= "\n
      \n";
             	$html .= $this->code;
             	$html .= "
      \n\n"; From 946e8adeab54e380f808c4e70823f93ffe661b5e Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 13:33:33 -0800 Subject: [PATCH 055/772] Modified examples generator script to use p5 --- generate/examples.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate/examples.php b/generate/examples.php index 83788ebd9..8d198db0b 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -3,7 +3,7 @@ require('lib/Example.class.php'); $benchmark_start = microtime_float(); $local = false; -define('EXAMPLESOURCEDIR', '../content/examples/'); +define('EXAMPLESOURCEDIR', '../content/examples_p5/'); $path = BASEDIR; $where = EXAMPLESOURCEDIR; $there = CONTENTDIR; From e951cbef3b9bcc8a1d79616352bf7d0fedd1f66c Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 13:34:53 -0800 Subject: [PATCH 056/772] Removed processing.js from sitewide template --- templates/template.html | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/template.html b/templates/template.html index 91400ed36..f9199eaeb 100755 --- a/templates/template.html +++ b/templates/template.html @@ -66,7 +66,6 @@
      - - + content From e6a6131a4a134ce03223435d97efd31727135bb6 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 13:50:15 -0800 Subject: [PATCH 061/772] OK, trying to fix those paths --- templates/template.example.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/template.example.html b/templates/template.example.html index 68598ec99..d045acdb7 100644 --- a/templates/template.example.html +++ b/templates/template.example.html @@ -3,7 +3,7 @@

      This example is for Processing 3+. If you have a previous version, use the examples included with your software. If you see any errors or have suggestions, please let us know.

      - - + + content From 4f6545b43731626343314e0ba5b0189ac8687d30 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 20 Nov 2015 16:45:53 -0800 Subject: [PATCH 062/772] Test using p5 dir as source --- generate/examples.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/generate/examples.php b/generate/examples.php index 8d198db0b..d66515b19 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -4,6 +4,7 @@ $benchmark_start = microtime_float(); $local = false; define('EXAMPLESOURCEDIR', '../content/examples_p5/'); +//define('EXAMPLESOURCEJSDIR', '../content/examples_p5/'); $path = BASEDIR; $where = EXAMPLESOURCEDIR; $there = CONTENTDIR; @@ -19,6 +20,9 @@ $catTopics = get_examples_list('examples_topics.xml'); $dirTopics = EXAMPLESOURCEDIR .'Topics/'; // $break_after = array('GUI', 'Textures'); + + + //Create Basics files $count = 0; foreach ($catBasics as $cat => $array) { @@ -36,6 +40,9 @@ } } } + + + //Create Topics files $count = 0; foreach ($catTopics as $cat => $array) { @@ -53,9 +60,13 @@ } } } + + + //Create Examples page $page = new Page('Examples', 'Examples', "", "../../"); $page->subtemplate('template.examples.html'); + //Create Basics html $html = "Basic Examples. Programs about form, data, images, color, typography, and more...


      "; $html .= "
        \n"; @@ -68,6 +79,7 @@ $html .= '
      '; } $html .= "
    "; + //Create Topics html $html .= "Topic Examples. Programs about to animation, interaction, motion, simulation, and more...


    "; $html .= "
      \n"; From 0ebb0a44836ba30845876d90051377936f040698 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 22 Nov 2015 08:34:38 -0800 Subject: [PATCH 063/772] Revised all p5 examples to load in container div --- content/examples_p5/Basics/Arrays/Array/Array.js | 3 ++- content/examples_p5/Basics/Arrays/Array2D/Array2D.js | 3 ++- .../Basics/Arrays/ArrayObjects/ArrayObjects.js | 3 ++- .../examples_p5/Basics/Color/Brightness/Brightness.js | 3 ++- .../Basics/Color/ColorVariables/ColorVariables.js | 3 ++- content/examples_p5/Basics/Color/Hue/Hue.js | 3 ++- .../Basics/Color/LinearGradient/LinearGradient.js | 3 ++- .../Basics/Color/RadialGradient/RadialGradient.js | 3 ++- .../examples_p5/Basics/Color/Relativity/Relativity.js | 3 ++- .../examples_p5/Basics/Color/Saturation/Saturation.js | 3 ++- .../Basics/Color/WaveGradient/WaveGradient.js | 3 ++- .../Basics/Control/Conditionals1/Conditionals1.js | 3 ++- .../Basics/Control/Conditionals2/Conditionals2.js | 3 ++- .../Control/EmbeddedIteration/EmbeddedIteration.js | 3 ++- .../examples_p5/Basics/Control/Iteration/Iteration.js | 3 ++- .../Basics/Control/LogicalOperators/LogicalOperators.js | 3 ++- .../Basics/Data/CharactersStrings/CharactersStrings.js | 3 ++- .../Basics/Data/DatatypeConversion/DatatypeConversion.js | 3 ++- .../Basics/Data/IntegersFloats/IntegersFloats.js | 3 ++- content/examples_p5/Basics/Data/TrueFalse/TrueFalse.js | 3 ++- .../Basics/Data/VariableScope/VariableScope.js | 3 ++- content/examples_p5/Basics/Data/Variables/Variables.js | 3 ++- content/examples_p5/Basics/Form/Bezier/Bezier.js | 3 ++- content/examples_p5/Basics/Form/PieChart/PieChart.js | 3 ++- .../examples_p5/Basics/Form/PointsLines/PointsLines.js | 3 ++- .../Basics/Form/RegularPolygon/RegularPolygon.js | 3 ++- .../Basics/Form/ShapePrimitives/ShapePrimitives.js | 3 ++- content/examples_p5/Basics/Form/Star/Star.js | 3 ++- .../Basics/Form/TriangleStrip/TriangleStrip.js | 3 ++- content/examples_p5/Basics/Image/Alphamask/Alphamask.js | 3 ++- .../Basics/Image/BackgroundImage/BackgroundImage.js | 3 ++- .../examples_p5/Basics/Image/CreateImage/CreateImage.js | 3 ++- .../Basics/Image/LoadDisplayImage/LoadDisplayImage.js | 3 ++- .../examples_p5/Basics/Image/Pointillism/Pointillism.js | 3 ++- .../Basics/Image/RequestImage/RequestImage.js | 3 ++- .../Basics/Image/Transparency/Transparency.js | 3 ++- content/examples_p5/Basics/Input/Clock/Clock.js | 3 ++- content/examples_p5/Basics/Input/Constrain/Constrain.js | 3 ++- content/examples_p5/Basics/Input/Easing/Easing.js | 3 ++- content/examples_p5/Basics/Input/Keyboard/Keyboard.js | 3 ++- .../Basics/Input/KeyboardFunctions/KeyboardFunctions.js | 3 ++- .../Basics/Input/Milliseconds/Milliseconds.js | 3 ++- content/examples_p5/Basics/Input/Mouse1D/Mouse1D.js | 3 ++- content/examples_p5/Basics/Input/Mouse2D/Mouse2D.js | 3 ++- .../Basics/Input/MouseFunctions/MouseFunctions.js | 3 ++- .../examples_p5/Basics/Input/MousePress/MousePress.js | 3 ++- .../Basics/Input/MouseSignals/MouseSignals.js | 3 ++- .../Basics/Input/StoringInput/StoringInput.js | 3 ++- .../examples_p5/Basics/Math/AdditiveWave/AdditiveWave.js | 3 ++- content/examples_p5/Basics/Math/Arctangent/Arctangent.js | 3 ++- content/examples_p5/Basics/Math/Distance1D/Distance1D.js | 3 ++- content/examples_p5/Basics/Math/Distance2D/Distance2D.js | 3 ++- .../examples_p5/Basics/Math/DoubleRandom/DoubleRandom.js | 3 ++- .../Basics/Math/Graphing2DEquation/Graphing2DEquation.js | 3 ++- .../Basics/Math/IncrementDecrement/IncrementDecrement.js | 3 ++- .../examples_p5/Basics/Math/Interpolate/Interpolate.js | 3 ++- content/examples_p5/Basics/Math/Noise1D/Noise1D.js | 3 ++- content/examples_p5/Basics/Math/Noise2D/Noise2D.js | 3 ++- content/examples_p5/Basics/Math/Noise3D/Noise3D.js | 3 ++- content/examples_p5/Basics/Math/NoiseWave/NoiseWave.js | 3 ++- .../Basics/Math/OperatorPrecedence/OperatorPrecedence.js | 3 ++- .../Basics/Math/PolarToCartesian/PolarToCartesian.js | 3 ++- content/examples_p5/Basics/Math/Random/Random.js | 3 ++- .../Basics/Math/RandomGaussian/RandomGaussian.js | 3 ++- content/examples_p5/Basics/Math/Sine/Sine.js | 3 ++- content/examples_p5/Basics/Math/SineCosine/SineCosine.js | 3 ++- content/examples_p5/Basics/Math/SineWave/SineWave.js | 3 ++- .../Basics/Objects/CompositeObjects/CompositeObjects.js | 3 ++- .../Basics/Objects/Inheritance/Inheritance.js | 3 ++- .../Objects/MultipleConstructors/MultipleConstructors.js | 3 ++- content/examples_p5/Basics/Objects/Objects/Objects.js | 3 ++- .../Basics/Structure/Coordinates/Coordinates.js | 3 ++- .../Basics/Structure/CreateGraphics/CreateGraphics.js | 3 ++- .../examples_p5/Basics/Structure/Functions/Functions.js | 3 ++- content/examples_p5/Basics/Structure/Loop/Loop.js | 3 ++- content/examples_p5/Basics/Structure/NoLoop/NoLoop.js | 3 ++- .../examples_p5/Basics/Structure/Recursion/Recursion.js | 3 ++- content/examples_p5/Basics/Structure/Redraw/Redraw.js | 3 ++- .../examples_p5/Basics/Structure/SetupDraw/SetupDraw.js | 3 ++- .../Structure/StatementsComments/StatementsComments.js | 3 ++- .../Basics/Structure/WidthHeight/WidthHeight.js | 3 ++- content/examples_p5/Basics/Transform/Arm/Arm.js | 3 ++- content/examples_p5/Basics/Transform/Rotate/Rotate.js | 3 ++- content/examples_p5/Basics/Transform/Scale/Scale.js | 3 ++- .../examples_p5/Basics/Transform/Translate/Translate.js | 3 ++- content/examples_p5/Basics/Typography/Letters/Letters.js | 3 ++- content/examples_p5/Basics/Typography/Words/Words.js | 3 ++- .../Basics/Web/EmbeddedLinks/EmbeddedLinks.js | 3 ++- .../Basics/Web/LoadingImages/LoadingImages.js | 3 ++- .../Advanced Data/ArrayListClass/ArrayListClass.js | 3 ++- .../Advanced Data/IntListLottery/IntListLottery.js | 3 ++- .../Topics/Advanced Data/LoadSaveJSON/LoadSaveJSON.js | 3 ++- .../Topics/Advanced Data/LoadSaveTable/LoadSaveTable.js | 3 ++- .../Topics/Advanced Data/LoadSaveXML/LoadSaveXML.js | 3 ++- .../Topics/Animation/AnimatedSprite/AnimatedSprite.js | 3 ++- .../Topics/Animation/Sequential/Sequential.js | 3 ++- .../Topics/Cellular Automata/GameOfLife/GameOfLife.js | 3 ++- .../Topics/Cellular Automata/Spore1/Spore1.js | 3 ++- .../Topics/Cellular Automata/Wolfram/Wolfram.js | 3 ++- .../Topics/Drawing/ContinuousLines/ContinuousLines.js | 3 ++- content/examples_p5/Topics/Drawing/Pattern/Pattern.js | 3 ++- content/examples_p5/Topics/Drawing/Pulses/Pulses.js | 3 ++- .../Topics/Fractals and L-Systems/Koch/Koch.js | 3 ++- .../Fractals and L-Systems/Mandelbrot/Mandelbrot.js | 3 ++- .../PenroseSnowflake/PenroseSnowflake.js | 3 ++- .../Fractals and L-Systems/PenroseTile/PenroseTile.js | 3 ++- .../Topics/Fractals and L-Systems/Pentigree/Pentigree.js | 3 ++- .../Topics/Fractals and L-Systems/Tree/Tree.js | 3 ++- content/examples_p5/Topics/GUI/Button/Button.js | 3 ++- content/examples_p5/Topics/GUI/Handles/Handles.js | 3 ++- content/examples_p5/Topics/GUI/Rollover/Rollover.js | 3 ++- content/examples_p5/Topics/GUI/Scrollbar/Scrollbar.js | 3 ++- content/examples_p5/Topics/Image Processing/Blur/Blur.js | 3 ++- .../Topics/Image Processing/Brightness/Brightness.js | 3 ++- .../Topics/Image Processing/Convolution/Convolution.js | 3 ++- .../Image Processing/EdgeDetection/EdgeDetection.js | 3 ++- .../Topics/Image Processing/LinearImage/LinearImage.js | 3 ++- .../Topics/Image Processing/PixelArray/PixelArray.js | 3 ++- .../examples_p5/Topics/Interaction/Follow1/Follow1.js | 3 ++- .../examples_p5/Topics/Interaction/Follow2/Follow2.js | 3 ++- .../examples_p5/Topics/Interaction/Follow3/Follow3.js | 3 ++- content/examples_p5/Topics/Interaction/Reach1/Reach1.js | 3 ++- content/examples_p5/Topics/Interaction/Reach2/Reach2.js | 3 ++- content/examples_p5/Topics/Interaction/Reach3/Reach3.js | 3 ++- content/examples_p5/Topics/Interaction/Tickle/Tickle.js | 3 ++- content/examples_p5/Topics/Motion/Bounce/Bounce.js | 3 ++- .../Topics/Motion/BouncyBubbles/BouncyBubbles.js | 3 ++- content/examples_p5/Topics/Motion/Brownian/Brownian.js | 3 ++- .../Topics/Motion/CircleCollision/CircleCollision.js | 3 ++- content/examples_p5/Topics/Motion/Linear/Linear.js | 3 ++- content/examples_p5/Topics/Motion/Morph/Morph.js | 3 ++- .../Topics/Motion/MovingOnCurves/MovingOnCurves.js | 3 ++- .../examples_p5/Topics/Motion/Reflection1/Reflection1.js | 3 ++- .../examples_p5/Topics/Motion/Reflection2/Reflection2.js | 3 ++- content/examples_p5/Topics/Simulate/Chain/Chain.js | 3 ++- content/examples_p5/Topics/Simulate/Flocking/Flocking.js | 3 ++- .../Simulate/ForcesWithVectors/ForcesWithVectors.js | 3 ++- .../MultipleParticleSystems/MultipleParticleSystems.js | 3 ++- .../SimpleParticleSystem/SimpleParticleSystem.js | 3 ++- .../Simulate/SmokeParticleSystem/SmokeParticleSystem.js | 3 ++- content/examples_p5/Topics/Simulate/Spring/Spring.js | 3 ++- content/examples_p5/Topics/Simulate/Springs/Springs.js | 3 ++- .../AccelerationWithVectors/AccelerationWithVectors.js | 3 ++- .../Topics/Vectors/BouncingBall/BouncingBall.js | 3 ++- .../examples_p5/Topics/Vectors/VectorMath/VectorMath.js | 3 ++- content/examples_p5/testing.html | 9 ++++----- generate/lib/Example.class.php | 2 +- 147 files changed, 295 insertions(+), 151 deletions(-) diff --git a/content/examples_p5/Basics/Arrays/Array/Array.js b/content/examples_p5/Basics/Arrays/Array/Array.js index 95312e602..fbfd82061 100644 --- a/content/examples_p5/Basics/Arrays/Array/Array.js +++ b/content/examples_p5/Basics/Arrays/Array/Array.js @@ -13,7 +13,8 @@ var coswave; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); coswave = []; for (var i = 0; i < width; i++) { var amount = map(i, 0, width, 0, PI); diff --git a/content/examples_p5/Basics/Arrays/Array2D/Array2D.js b/content/examples_p5/Basics/Arrays/Array2D/Array2D.js index 9fb5e5fd5..4bebca12b 100644 --- a/content/examples_p5/Basics/Arrays/Array2D/Array2D.js +++ b/content/examples_p5/Basics/Arrays/Array2D/Array2D.js @@ -12,7 +12,8 @@ var maxDistance; var spacer; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); maxDistance = dist(width/2, height/2, width, height); distances = []; for (var x = 0; x < width; x++) { diff --git a/content/examples_p5/Basics/Arrays/ArrayObjects/ArrayObjects.js b/content/examples_p5/Basics/Arrays/ArrayObjects/ArrayObjects.js index be3abe64a..e52eddfaa 100644 --- a/content/examples_p5/Basics/Arrays/ArrayObjects/ArrayObjects.js +++ b/content/examples_p5/Basics/Arrays/ArrayObjects/ArrayObjects.js @@ -9,7 +9,8 @@ var count; var mods; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); var wideCount = width / unit; var highCount = height / unit; diff --git a/content/examples_p5/Basics/Color/Brightness/Brightness.js b/content/examples_p5/Basics/Color/Brightness/Brightness.js index 1854d360e..62b6f20a5 100644 --- a/content/examples_p5/Basics/Color/Brightness/Brightness.js +++ b/content/examples_p5/Basics/Color/Brightness/Brightness.js @@ -10,7 +10,8 @@ var barWidth = 20; var lastBar = -1; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); colorMode(HSB, width, 100, width); noStroke(); background(0); diff --git a/content/examples_p5/Basics/Color/ColorVariables/ColorVariables.js b/content/examples_p5/Basics/Color/ColorVariables/ColorVariables.js index 651173f86..0f98f0e55 100644 --- a/content/examples_p5/Basics/Color/ColorVariables/ColorVariables.js +++ b/content/examples_p5/Basics/Color/ColorVariables/ColorVariables.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); background(51, 0, 0); diff --git a/content/examples_p5/Basics/Color/Hue/Hue.js b/content/examples_p5/Basics/Color/Hue/Hue.js index 6769bd6d6..c186668e4 100644 --- a/content/examples_p5/Basics/Color/Hue/Hue.js +++ b/content/examples_p5/Basics/Color/Hue/Hue.js @@ -11,7 +11,8 @@ var lastBar = -1; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); colorMode(HSB, height, height, height); noStroke(); background(0); diff --git a/content/examples_p5/Basics/Color/LinearGradient/LinearGradient.js b/content/examples_p5/Basics/Color/LinearGradient/LinearGradient.js index 313beb0e3..8ee5b9f92 100644 --- a/content/examples_p5/Basics/Color/LinearGradient/LinearGradient.js +++ b/content/examples_p5/Basics/Color/LinearGradient/LinearGradient.js @@ -11,7 +11,8 @@ var X_AXIS = 2; var b1, b2, c1, c2; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Define colors b1 = color(255); diff --git a/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js b/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js index 1e1b74e82..f571de60b 100644 --- a/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js +++ b/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js @@ -8,7 +8,8 @@ var dim; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); dim = width/2; background(0); colorMode(HSB, 360, 100, 100); diff --git a/content/examples_p5/Basics/Color/Relativity/Relativity.js b/content/examples_p5/Basics/Color/Relativity/Relativity.js index 1e1c5e49b..a58c003c7 100644 --- a/content/examples_p5/Basics/Color/Relativity/Relativity.js +++ b/content/examples_p5/Basics/Color/Relativity/Relativity.js @@ -9,7 +9,8 @@ var a, b, c, d, e; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); a = color(165, 167, 20); b = color(77, 86, 59); diff --git a/content/examples_p5/Basics/Color/Saturation/Saturation.js b/content/examples_p5/Basics/Color/Saturation/Saturation.js index 2385e116c..2092d18f6 100644 --- a/content/examples_p5/Basics/Color/Saturation/Saturation.js +++ b/content/examples_p5/Basics/Color/Saturation/Saturation.js @@ -12,7 +12,8 @@ var lastBar = -1; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); colorMode(HSB, width, height, 100); noStroke(); } diff --git a/content/examples_p5/Basics/Color/WaveGradient/WaveGradient.js b/content/examples_p5/Basics/Color/WaveGradient/WaveGradient.js index 51b8164cc..faa060f3d 100644 --- a/content/examples_p5/Basics/Color/WaveGradient/WaveGradient.js +++ b/content/examples_p5/Basics/Color/WaveGradient/WaveGradient.js @@ -14,7 +14,8 @@ var c; function setup() { devicePixelScaling(false); - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(200); noLoop(); } diff --git a/content/examples_p5/Basics/Control/Conditionals1/Conditionals1.js b/content/examples_p5/Basics/Control/Conditionals1/Conditionals1.js index f4e37425d..69bbd33cc 100644 --- a/content/examples_p5/Basics/Control/Conditionals1/Conditionals1.js +++ b/content/examples_p5/Basics/Control/Conditionals1/Conditionals1.js @@ -11,7 +11,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); for(var i = 10; i < width; i += 10) { diff --git a/content/examples_p5/Basics/Control/Conditionals2/Conditionals2.js b/content/examples_p5/Basics/Control/Conditionals2/Conditionals2.js index 41d88e2d7..1dd2374a4 100644 --- a/content/examples_p5/Basics/Control/Conditionals2/Conditionals2.js +++ b/content/examples_p5/Basics/Control/Conditionals2/Conditionals2.js @@ -9,7 +9,8 @@ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); for(var i = 2; i < width-2; i += 2) { diff --git a/content/examples_p5/Basics/Control/EmbeddedIteration/EmbeddedIteration.js b/content/examples_p5/Basics/Control/EmbeddedIteration/EmbeddedIteration.js index ca962f9b2..4e927be27 100644 --- a/content/examples_p5/Basics/Control/EmbeddedIteration/EmbeddedIteration.js +++ b/content/examples_p5/Basics/Control/EmbeddedIteration/EmbeddedIteration.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); noStroke(); diff --git a/content/examples_p5/Basics/Control/Iteration/Iteration.js b/content/examples_p5/Basics/Control/Iteration/Iteration.js index f3839d3e4..12d092873 100644 --- a/content/examples_p5/Basics/Control/Iteration/Iteration.js +++ b/content/examples_p5/Basics/Control/Iteration/Iteration.js @@ -8,7 +8,8 @@ function setup() { var y; var num = 14; - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(102); noStroke(); diff --git a/content/examples_p5/Basics/Control/LogicalOperators/LogicalOperators.js b/content/examples_p5/Basics/Control/LogicalOperators/LogicalOperators.js index edac7ae4e..e0c2ba445 100644 --- a/content/examples_p5/Basics/Control/LogicalOperators/LogicalOperators.js +++ b/content/examples_p5/Basics/Control/LogicalOperators/LogicalOperators.js @@ -8,7 +8,8 @@ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(126); var test = false; diff --git a/content/examples_p5/Basics/Data/CharactersStrings/CharactersStrings.js b/content/examples_p5/Basics/Data/CharactersStrings/CharactersStrings.js index c3026ec1a..8bb2e7bc3 100644 --- a/content/examples_p5/Basics/Data/CharactersStrings/CharactersStrings.js +++ b/content/examples_p5/Basics/Data/CharactersStrings/CharactersStrings.js @@ -23,7 +23,8 @@ var letter = ''; var words = "Begin..."; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Create the font textFont("Georgia", 36); } diff --git a/content/examples_p5/Basics/Data/DatatypeConversion/DatatypeConversion.js b/content/examples_p5/Basics/Data/DatatypeConversion/DatatypeConversion.js index aa532a234..66af616b2 100644 --- a/content/examples_p5/Basics/Data/DatatypeConversion/DatatypeConversion.js +++ b/content/examples_p5/Basics/Data/DatatypeConversion/DatatypeConversion.js @@ -11,7 +11,8 @@ /* @pjs font="Georgia.ttf"; */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); noStroke(); diff --git a/content/examples_p5/Basics/Data/IntegersFloats/IntegersFloats.js b/content/examples_p5/Basics/Data/IntegersFloats/IntegersFloats.js index 2cabdd7ae..9fa5fdd64 100644 --- a/content/examples_p5/Basics/Data/IntegersFloats/IntegersFloats.js +++ b/content/examples_p5/Basics/Data/IntegersFloats/IntegersFloats.js @@ -12,7 +12,8 @@ var a = 0; // Create a variable "a" of the datatype "int" var b = 0.0; // Create a variable "b" of the datatype "float" function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); frameRate(30); } diff --git a/content/examples_p5/Basics/Data/TrueFalse/TrueFalse.js b/content/examples_p5/Basics/Data/TrueFalse/TrueFalse.js index 5c8733e16..9d7f72cae 100644 --- a/content/examples_p5/Basics/Data/TrueFalse/TrueFalse.js +++ b/content/examples_p5/Basics/Data/TrueFalse/TrueFalse.js @@ -11,7 +11,8 @@ function setup() { var b = false; - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); stroke(255); diff --git a/content/examples_p5/Basics/Data/VariableScope/VariableScope.js b/content/examples_p5/Basics/Data/VariableScope/VariableScope.js index 60a662e39..e0e048de7 100644 --- a/content/examples_p5/Basics/Data/VariableScope/VariableScope.js +++ b/content/examples_p5/Basics/Data/VariableScope/VariableScope.js @@ -15,7 +15,8 @@ var a = 80; // Create a global variable "a" function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); stroke(255); noLoop(); diff --git a/content/examples_p5/Basics/Data/Variables/Variables.js b/content/examples_p5/Basics/Data/Variables/Variables.js index 16005bfed..a28c7b8b7 100644 --- a/content/examples_p5/Basics/Data/Variables/Variables.js +++ b/content/examples_p5/Basics/Data/Variables/Variables.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); stroke(153); strokeWeight(4); diff --git a/content/examples_p5/Basics/Form/Bezier/Bezier.js b/content/examples_p5/Basics/Form/Bezier/Bezier.js index 3fba06273..f1825839e 100644 --- a/content/examples_p5/Basics/Form/Bezier/Bezier.js +++ b/content/examples_p5/Basics/Form/Bezier/Bezier.js @@ -8,7 +8,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); noFill(); } diff --git a/content/examples_p5/Basics/Form/PieChart/PieChart.js b/content/examples_p5/Basics/Form/PieChart/PieChart.js index 3a38ef975..e4212fa7e 100644 --- a/content/examples_p5/Basics/Form/PieChart/PieChart.js +++ b/content/examples_p5/Basics/Form/PieChart/PieChart.js @@ -8,7 +8,8 @@ var angles = [ 30, 10, 45, 35, 60, 38, 75, 67 ]; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); noLoop(); // Run once and stop } diff --git a/content/examples_p5/Basics/Form/PointsLines/PointsLines.js b/content/examples_p5/Basics/Form/PointsLines/PointsLines.js index 0d1faa1ab..ddef81e95 100644 --- a/content/examples_p5/Basics/Form/PointsLines/PointsLines.js +++ b/content/examples_p5/Basics/Form/PointsLines/PointsLines.js @@ -13,7 +13,8 @@ function setup() { var p3 = p2+d; var p4 = p3+d; - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noSmooth(); background(0); translate(140, 0); diff --git a/content/examples_p5/Basics/Form/RegularPolygon/RegularPolygon.js b/content/examples_p5/Basics/Form/RegularPolygon/RegularPolygon.js index 703f08d25..527d3b465 100644 --- a/content/examples_p5/Basics/Form/RegularPolygon/RegularPolygon.js +++ b/content/examples_p5/Basics/Form/RegularPolygon/RegularPolygon.js @@ -9,7 +9,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Form/ShapePrimitives/ShapePrimitives.js b/content/examples_p5/Basics/Form/ShapePrimitives/ShapePrimitives.js index cd7918e2c..4a087a8aa 100644 --- a/content/examples_p5/Basics/Form/ShapePrimitives/ShapePrimitives.js +++ b/content/examples_p5/Basics/Form/ShapePrimitives/ShapePrimitives.js @@ -9,7 +9,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); noStroke(); diff --git a/content/examples_p5/Basics/Form/Star/Star.js b/content/examples_p5/Basics/Form/Star/Star.js index 91da2c7c2..6fa7a43b2 100644 --- a/content/examples_p5/Basics/Form/Star/Star.js +++ b/content/examples_p5/Basics/Form/Star/Star.js @@ -7,7 +7,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Form/TriangleStrip/TriangleStrip.js b/content/examples_p5/Basics/Form/TriangleStrip/TriangleStrip.js index 915ea3c5d..9b5183e04 100644 --- a/content/examples_p5/Basics/Form/TriangleStrip/TriangleStrip.js +++ b/content/examples_p5/Basics/Form/TriangleStrip/TriangleStrip.js @@ -13,7 +13,8 @@ var outsideRadius = 150; var insideRadius = 100; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(204); x = width/2; y = height/2; diff --git a/content/examples_p5/Basics/Image/Alphamask/Alphamask.js b/content/examples_p5/Basics/Image/Alphamask/Alphamask.js index fe4827eba..95e7cd8f8 100644 --- a/content/examples_p5/Basics/Image/Alphamask/Alphamask.js +++ b/content/examples_p5/Basics/Image/Alphamask/Alphamask.js @@ -18,7 +18,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Temporary fix until https://github.com/lmccart/p5.js/pull/533 imgMask.loadPixels(); for (var i = 0; i < imgMask.pixels.length; i+=4) { diff --git a/content/examples_p5/Basics/Image/BackgroundImage/BackgroundImage.js b/content/examples_p5/Basics/Image/BackgroundImage/BackgroundImage.js index 6813c9081..cbe6ca44c 100644 --- a/content/examples_p5/Basics/Image/BackgroundImage/BackgroundImage.js +++ b/content/examples_p5/Basics/Image/BackgroundImage/BackgroundImage.js @@ -20,7 +20,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Image/CreateImage/CreateImage.js b/content/examples_p5/Basics/Image/CreateImage/CreateImage.js index 1cef69c08..6e895bbd3 100644 --- a/content/examples_p5/Basics/Image/CreateImage/CreateImage.js +++ b/content/examples_p5/Basics/Image/CreateImage/CreateImage.js @@ -8,7 +8,8 @@ var img; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); img = createImage(230, 230); img.loadPixels(); for(var i = 0; i < img.pixels.length; i+=4) { diff --git a/content/examples_p5/Basics/Image/LoadDisplayImage/LoadDisplayImage.js b/content/examples_p5/Basics/Image/LoadDisplayImage/LoadDisplayImage.js index dda8c7198..8c038b9f3 100644 --- a/content/examples_p5/Basics/Image/LoadDisplayImage/LoadDisplayImage.js +++ b/content/examples_p5/Basics/Image/LoadDisplayImage/LoadDisplayImage.js @@ -17,7 +17,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Image/Pointillism/Pointillism.js b/content/examples_p5/Basics/Image/Pointillism/Pointillism.js index e1c685c40..3c6ad8dfe 100644 --- a/content/examples_p5/Basics/Image/Pointillism/Pointillism.js +++ b/content/examples_p5/Basics/Image/Pointillism/Pointillism.js @@ -19,7 +19,8 @@ function preload() { function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); smallPoint = 4; largePoint = 40; imageMode(CENTER); diff --git a/content/examples_p5/Basics/Image/RequestImage/RequestImage.js b/content/examples_p5/Basics/Image/RequestImage/RequestImage.js index c6b1744d6..9103fc6cc 100644 --- a/content/examples_p5/Basics/Image/RequestImage/RequestImage.js +++ b/content/examples_p5/Basics/Image/RequestImage/RequestImage.js @@ -22,7 +22,8 @@ var loadStates = new Array(imgCount); var loaderX, loaderY, theta; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); imgW = width/imgCount; // Load images asynchronously diff --git a/content/examples_p5/Basics/Image/Transparency/Transparency.js b/content/examples_p5/Basics/Image/Transparency/Transparency.js index 94756edbc..bbeb3a31b 100644 --- a/content/examples_p5/Basics/Image/Transparency/Transparency.js +++ b/content/examples_p5/Basics/Image/Transparency/Transparency.js @@ -18,7 +18,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Input/Clock/Clock.js b/content/examples_p5/Basics/Input/Clock/Clock.js index a376aa804..44bbe70c9 100644 --- a/content/examples_p5/Basics/Input/Clock/Clock.js +++ b/content/examples_p5/Basics/Input/Clock/Clock.js @@ -13,7 +13,8 @@ var hoursRadius; var clockDiameter; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); var radius = min(width, height) / 2; diff --git a/content/examples_p5/Basics/Input/Constrain/Constrain.js b/content/examples_p5/Basics/Input/Constrain/Constrain.js index f61431bb3..d88c52cb5 100644 --- a/content/examples_p5/Basics/Input/Constrain/Constrain.js +++ b/content/examples_p5/Basics/Input/Constrain/Constrain.js @@ -13,7 +13,8 @@ var edge = 100; var inner = edge + radius; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); ellipseMode(RADIUS); rectMode(CORNERS); diff --git a/content/examples_p5/Basics/Input/Easing/Easing.js b/content/examples_p5/Basics/Input/Easing/Easing.js index e14f81e75..d98f300b7 100644 --- a/content/examples_p5/Basics/Input/Easing/Easing.js +++ b/content/examples_p5/Basics/Input/Easing/Easing.js @@ -14,7 +14,8 @@ var y = 0; var easing = 0.05; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); } diff --git a/content/examples_p5/Basics/Input/Keyboard/Keyboard.js b/content/examples_p5/Basics/Input/Keyboard/Keyboard.js index d5054ab83..2911eb2e0 100644 --- a/content/examples_p5/Basics/Input/Keyboard/Keyboard.js +++ b/content/examples_p5/Basics/Input/Keyboard/Keyboard.js @@ -9,7 +9,8 @@ var rectWidth; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); background(0); rectWidth = width/4; diff --git a/content/examples_p5/Basics/Input/KeyboardFunctions/KeyboardFunctions.js b/content/examples_p5/Basics/Input/KeyboardFunctions/KeyboardFunctions.js index 7c10ebcde..27a88b505 100644 --- a/content/examples_p5/Basics/Input/KeyboardFunctions/KeyboardFunctions.js +++ b/content/examples_p5/Basics/Input/KeyboardFunctions/KeyboardFunctions.js @@ -29,7 +29,8 @@ // function setup() // { -// createCanvas(640, 360); +// var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // noStroke(); // //colorMode(HSB, numChars); // background(numChars/2); diff --git a/content/examples_p5/Basics/Input/Milliseconds/Milliseconds.js b/content/examples_p5/Basics/Input/Milliseconds/Milliseconds.js index 2e6fe7fae..7bfcd27cf 100644 --- a/content/examples_p5/Basics/Input/Milliseconds/Milliseconds.js +++ b/content/examples_p5/Basics/Input/Milliseconds/Milliseconds.js @@ -10,7 +10,8 @@ var scale; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); scale = width/20; } diff --git a/content/examples_p5/Basics/Input/Mouse1D/Mouse1D.js b/content/examples_p5/Basics/Input/Mouse1D/Mouse1D.js index 3c30d2b37..20b77f39a 100644 --- a/content/examples_p5/Basics/Input/Mouse1D/Mouse1D.js +++ b/content/examples_p5/Basics/Input/Mouse1D/Mouse1D.js @@ -7,7 +7,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); colorMode(RGB, height, height, height); rectMode(CENTER); diff --git a/content/examples_p5/Basics/Input/Mouse2D/Mouse2D.js b/content/examples_p5/Basics/Input/Mouse2D/Mouse2D.js index b8e2f1a34..ebb9b64a1 100644 --- a/content/examples_p5/Basics/Input/Mouse2D/Mouse2D.js +++ b/content/examples_p5/Basics/Input/Mouse2D/Mouse2D.js @@ -6,7 +6,8 @@ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); rectMode(CENTER); } diff --git a/content/examples_p5/Basics/Input/MouseFunctions/MouseFunctions.js b/content/examples_p5/Basics/Input/MouseFunctions/MouseFunctions.js index e1160a0d4..f65d563ac 100644 --- a/content/examples_p5/Basics/Input/MouseFunctions/MouseFunctions.js +++ b/content/examples_p5/Basics/Input/MouseFunctions/MouseFunctions.js @@ -14,7 +14,8 @@ var yOffset = 0.0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); bx = width/2.0; by = height/2.0; rectMode(RADIUS); diff --git a/content/examples_p5/Basics/Input/MousePress/MousePress.js b/content/examples_p5/Basics/Input/MousePress/MousePress.js index 0898b0b31..961c3f57a 100644 --- a/content/examples_p5/Basics/Input/MousePress/MousePress.js +++ b/content/examples_p5/Basics/Input/MousePress/MousePress.js @@ -7,7 +7,8 @@ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noSmooth(); fill(126); background(102); diff --git a/content/examples_p5/Basics/Input/MouseSignals/MouseSignals.js b/content/examples_p5/Basics/Input/MouseSignals/MouseSignals.js index 8225af9e6..b8f7941ee 100644 --- a/content/examples_p5/Basics/Input/MouseSignals/MouseSignals.js +++ b/content/examples_p5/Basics/Input/MouseSignals/MouseSignals.js @@ -13,7 +13,8 @@ var bvals; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noSmooth(); xvals = []; yvals = []; diff --git a/content/examples_p5/Basics/Input/StoringInput/StoringInput.js b/content/examples_p5/Basics/Input/StoringInput/StoringInput.js index a4d3cf32a..381c10e42 100644 --- a/content/examples_p5/Basics/Input/StoringInput/StoringInput.js +++ b/content/examples_p5/Basics/Input/StoringInput/StoringInput.js @@ -16,7 +16,8 @@ // var my = []; // function setup() { -// createCanvas(640, 360); +// var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // noStroke(); // fill(255, 153); // for (var i = 0; i < num; i++) { diff --git a/content/examples_p5/Basics/Math/AdditiveWave/AdditiveWave.js b/content/examples_p5/Basics/Math/AdditiveWave/AdditiveWave.js index 23a0c1edd..ea9929487 100644 --- a/content/examples_p5/Basics/Math/AdditiveWave/AdditiveWave.js +++ b/content/examples_p5/Basics/Math/AdditiveWave/AdditiveWave.js @@ -15,7 +15,8 @@ var dx = new Array(maxwaves); // Value for incrementing X, to be calcul var yvalues; // Using an array to store height values for the wave (not entirely necessary) function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); frameRate(30); colorMode(RGB, 255, 255, 255, 100); w = width + 16; diff --git a/content/examples_p5/Basics/Math/Arctangent/Arctangent.js b/content/examples_p5/Basics/Math/Arctangent/Arctangent.js index 0ded9ab5f..eb894f696 100644 --- a/content/examples_p5/Basics/Math/Arctangent/Arctangent.js +++ b/content/examples_p5/Basics/Math/Arctangent/Arctangent.js @@ -9,7 +9,8 @@ var e1, e2, e3; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); e1 = new Eye( 250, 16, 120); e2 = new Eye( 164, 185, 80); diff --git a/content/examples_p5/Basics/Math/Distance1D/Distance1D.js b/content/examples_p5/Basics/Math/Distance1D/Distance1D.js index db1fd1bc1..66ad63d79 100644 --- a/content/examples_p5/Basics/Math/Distance1D/Distance1D.js +++ b/content/examples_p5/Basics/Math/Distance1D/Distance1D.js @@ -14,7 +14,8 @@ var thick = 36; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); xpos1 = width/2; xpos2 = width/2; diff --git a/content/examples_p5/Basics/Math/Distance2D/Distance2D.js b/content/examples_p5/Basics/Math/Distance2D/Distance2D.js index dbac44629..c938d10f2 100644 --- a/content/examples_p5/Basics/Math/Distance2D/Distance2D.js +++ b/content/examples_p5/Basics/Math/Distance2D/Distance2D.js @@ -9,7 +9,8 @@ var max_distance; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); max_distance = dist(0, 0, width, height); } diff --git a/content/examples_p5/Basics/Math/DoubleRandom/DoubleRandom.js b/content/examples_p5/Basics/Math/DoubleRandom/DoubleRandom.js index dbe972fd9..e464a8058 100644 --- a/content/examples_p5/Basics/Math/DoubleRandom/DoubleRandom.js +++ b/content/examples_p5/Basics/Math/DoubleRandom/DoubleRandom.js @@ -10,7 +10,8 @@ var totalPts = 300; var steps = totalPts + 1; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); frameRate(1); } diff --git a/content/examples_p5/Basics/Math/Graphing2DEquation/Graphing2DEquation.js b/content/examples_p5/Basics/Math/Graphing2DEquation/Graphing2DEquation.js index 37eb9003f..51cf721f7 100644 --- a/content/examples_p5/Basics/Math/Graphing2DEquation/Graphing2DEquation.js +++ b/content/examples_p5/Basics/Math/Graphing2DEquation/Graphing2DEquation.js @@ -8,7 +8,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Temporary-ish fix for retina machines devicePixelScaling(false); diff --git a/content/examples_p5/Basics/Math/IncrementDecrement/IncrementDecrement.js b/content/examples_p5/Basics/Math/IncrementDecrement/IncrementDecrement.js index cf8875eaa..919b37652 100644 --- a/content/examples_p5/Basics/Math/IncrementDecrement/IncrementDecrement.js +++ b/content/examples_p5/Basics/Math/IncrementDecrement/IncrementDecrement.js @@ -10,7 +10,8 @@ var b; var direction; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); colorMode(RGB, width); a = 0; b = width; diff --git a/content/examples_p5/Basics/Math/Interpolate/Interpolate.js b/content/examples_p5/Basics/Math/Interpolate/Interpolate.js index 5647310ed..c22ba6124 100644 --- a/content/examples_p5/Basics/Math/Interpolate/Interpolate.js +++ b/content/examples_p5/Basics/Math/Interpolate/Interpolate.js @@ -13,7 +13,8 @@ var x = 0; var y = 0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); } diff --git a/content/examples_p5/Basics/Math/Noise1D/Noise1D.js b/content/examples_p5/Basics/Math/Noise1D/Noise1D.js index cabef2e07..cc2551163 100644 --- a/content/examples_p5/Basics/Math/Noise1D/Noise1D.js +++ b/content/examples_p5/Basics/Math/Noise1D/Noise1D.js @@ -8,7 +8,8 @@ var xoff = 0.0; var xincrement = 0.01; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); noStroke(); } diff --git a/content/examples_p5/Basics/Math/Noise2D/Noise2D.js b/content/examples_p5/Basics/Math/Noise2D/Noise2D.js index a3c4b0421..0bf18c081 100644 --- a/content/examples_p5/Basics/Math/Noise2D/Noise2D.js +++ b/content/examples_p5/Basics/Math/Noise2D/Noise2D.js @@ -8,7 +8,8 @@ var increment = 0.02; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); } diff --git a/content/examples_p5/Basics/Math/Noise3D/Noise3D.js b/content/examples_p5/Basics/Math/Noise3D/Noise3D.js index 33cb663a5..d45c65998 100644 --- a/content/examples_p5/Basics/Math/Noise3D/Noise3D.js +++ b/content/examples_p5/Basics/Math/Noise3D/Noise3D.js @@ -12,7 +12,8 @@ var zoff = 0.0; var zincrement = 0.02; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); frameRate(30); devicePixelScaling(false); } diff --git a/content/examples_p5/Basics/Math/NoiseWave/NoiseWave.js b/content/examples_p5/Basics/Math/NoiseWave/NoiseWave.js index 4712c371f..78e8193ee 100644 --- a/content/examples_p5/Basics/Math/NoiseWave/NoiseWave.js +++ b/content/examples_p5/Basics/Math/NoiseWave/NoiseWave.js @@ -8,7 +8,8 @@ var yoff = 0.0; // 2nd dimension of perlin noise function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Math/OperatorPrecedence/OperatorPrecedence.js b/content/examples_p5/Basics/Math/OperatorPrecedence/OperatorPrecedence.js index 739580658..70e73136c 100644 --- a/content/examples_p5/Basics/Math/OperatorPrecedence/OperatorPrecedence.js +++ b/content/examples_p5/Basics/Math/OperatorPrecedence/OperatorPrecedence.js @@ -24,7 +24,8 @@ // Assignment: = += -= *= /= %= function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(51); noFill(); stroke(51); diff --git a/content/examples_p5/Basics/Math/PolarToCartesian/PolarToCartesian.js b/content/examples_p5/Basics/Math/PolarToCartesian/PolarToCartesian.js index e792658e0..0ac885128 100644 --- a/content/examples_p5/Basics/Math/PolarToCartesian/PolarToCartesian.js +++ b/content/examples_p5/Basics/Math/PolarToCartesian/PolarToCartesian.js @@ -15,7 +15,8 @@ var theta_vel; var theta_acc; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Initialize all values r = height * 0.45; diff --git a/content/examples_p5/Basics/Math/Random/Random.js b/content/examples_p5/Basics/Math/Random/Random.js index 95dcc07a4..aa48d8dac 100644 --- a/content/examples_p5/Basics/Math/Random/Random.js +++ b/content/examples_p5/Basics/Math/Random/Random.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); strokeWeight(20); frameRate(2); diff --git a/content/examples_p5/Basics/Math/RandomGaussian/RandomGaussian.js b/content/examples_p5/Basics/Math/RandomGaussian/RandomGaussian.js index 4d8ce9a0f..5219905d1 100644 --- a/content/examples_p5/Basics/Math/RandomGaussian/RandomGaussian.js +++ b/content/examples_p5/Basics/Math/RandomGaussian/RandomGaussian.js @@ -5,7 +5,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); } diff --git a/content/examples_p5/Basics/Math/Sine/Sine.js b/content/examples_p5/Basics/Math/Sine/Sine.js index 4a92fbf12..10a5571ad 100644 --- a/content/examples_p5/Basics/Math/Sine/Sine.js +++ b/content/examples_p5/Basics/Math/Sine/Sine.js @@ -8,7 +8,8 @@ var diameter; var angle = 0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); diameter = height - 10; noStroke(); noStroke(); diff --git a/content/examples_p5/Basics/Math/SineCosine/SineCosine.js b/content/examples_p5/Basics/Math/SineCosine/SineCosine.js index c9ab737db..75b5daf25 100644 --- a/content/examples_p5/Basics/Math/SineCosine/SineCosine.js +++ b/content/examples_p5/Basics/Math/SineCosine/SineCosine.js @@ -12,7 +12,8 @@ var angle1, angle2 = 0; var scalar = 70; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); rectMode(CENTER); } diff --git a/content/examples_p5/Basics/Math/SineWave/SineWave.js b/content/examples_p5/Basics/Math/SineWave/SineWave.js index 21d24ffe0..615671ac2 100644 --- a/content/examples_p5/Basics/Math/SineWave/SineWave.js +++ b/content/examples_p5/Basics/Math/SineWave/SineWave.js @@ -15,7 +15,8 @@ var dx; // Value for incrementing X, a function of period and xspacing var yvalues; // Using an array to store height values for the wave function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); w = width+16; dx = (TWO_PI / period) * xspacing; yvalues = new Array(w/xspacing); diff --git a/content/examples_p5/Basics/Objects/CompositeObjects/CompositeObjects.js b/content/examples_p5/Basics/Objects/CompositeObjects/CompositeObjects.js index 9d1fde15c..7972ddba5 100644 --- a/content/examples_p5/Basics/Objects/CompositeObjects/CompositeObjects.js +++ b/content/examples_p5/Basics/Objects/CompositeObjects/CompositeObjects.js @@ -9,7 +9,8 @@ var er1, er2; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); er1 = new EggRing(width*0.45, height*0.5, 0.1, 120); er2 = new EggRing(width*0.65, height*0.8, 0.05, 180); } diff --git a/content/examples_p5/Basics/Objects/Inheritance/Inheritance.js b/content/examples_p5/Basics/Objects/Inheritance/Inheritance.js index 325dd5353..5369cc568 100644 --- a/content/examples_p5/Basics/Objects/Inheritance/Inheritance.js +++ b/content/examples_p5/Basics/Objects/Inheritance/Inheritance.js @@ -11,7 +11,8 @@ var spots; var arm; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); arm = new SpinArm(width/2, height/2, 0.01); spots = new SpinSpots(width/2, height/2, -0.02, 90.0); } diff --git a/content/examples_p5/Basics/Objects/MultipleConstructors/MultipleConstructors.js b/content/examples_p5/Basics/Objects/MultipleConstructors/MultipleConstructors.js index 441ea3c57..67e1376b3 100644 --- a/content/examples_p5/Basics/Objects/MultipleConstructors/MultipleConstructors.js +++ b/content/examples_p5/Basics/Objects/MultipleConstructors/MultipleConstructors.js @@ -10,7 +10,8 @@ var sp1, sp2; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(204); noLoop(); // Run the constructor without parameters diff --git a/content/examples_p5/Basics/Objects/Objects/Objects.js b/content/examples_p5/Basics/Objects/Objects/Objects.js index f42a6b3d2..3f7b44230 100644 --- a/content/examples_p5/Basics/Objects/Objects/Objects.js +++ b/content/examples_p5/Basics/Objects/Objects/Objects.js @@ -10,7 +10,8 @@ var r1, r2, r3, r4; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); fill(255, 204); noStroke(); r1 = new MRect(1, 134.0, 0.532, 0.1*height, 10.0, 60.0); diff --git a/content/examples_p5/Basics/Structure/Coordinates/Coordinates.js b/content/examples_p5/Basics/Structure/Coordinates/Coordinates.js index ac7c8f38b..df63ac1ee 100644 --- a/content/examples_p5/Basics/Structure/Coordinates/Coordinates.js +++ b/content/examples_p5/Basics/Structure/Coordinates/Coordinates.js @@ -11,7 +11,8 @@ function setup() { // Sets the screen to be 640 pixels wide and 360 pixels high - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Set the background to black and turn off the fill color background(0); diff --git a/content/examples_p5/Basics/Structure/CreateGraphics/CreateGraphics.js b/content/examples_p5/Basics/Structure/CreateGraphics/CreateGraphics.js index 082ce641e..5679911e5 100644 --- a/content/examples_p5/Basics/Structure/CreateGraphics/CreateGraphics.js +++ b/content/examples_p5/Basics/Structure/CreateGraphics/CreateGraphics.js @@ -11,7 +11,8 @@ var pg; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); pg = createGraphics(400, 200); } diff --git a/content/examples_p5/Basics/Structure/Functions/Functions.js b/content/examples_p5/Basics/Structure/Functions/Functions.js index 84d6e442b..af4ccecb9 100644 --- a/content/examples_p5/Basics/Structure/Functions/Functions.js +++ b/content/examples_p5/Basics/Structure/Functions/Functions.js @@ -7,7 +7,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(51); noStroke(); noLoop(); diff --git a/content/examples_p5/Basics/Structure/Loop/Loop.js b/content/examples_p5/Basics/Structure/Loop/Loop.js index 02e5de039..f7a0e1f57 100644 --- a/content/examples_p5/Basics/Structure/Loop/Loop.js +++ b/content/examples_p5/Basics/Structure/Loop/Loop.js @@ -13,7 +13,8 @@ var y = 100; // The statements in the setup() function // run once when the program begins function setup() { - createCanvas(640, 360); // Size should be the first statement + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Size should be the first statement stroke(255); // Set stroke color to white noLoop(); diff --git a/content/examples_p5/Basics/Structure/NoLoop/NoLoop.js b/content/examples_p5/Basics/Structure/NoLoop/NoLoop.js index 3d5066e34..e9cd77425 100644 --- a/content/examples_p5/Basics/Structure/NoLoop/NoLoop.js +++ b/content/examples_p5/Basics/Structure/NoLoop/NoLoop.js @@ -12,7 +12,8 @@ var y; // execute once when the program begins function setup() { - createCanvas(640, 360); // Size should be the first statement + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Size should be the first statement stroke(255); // Set line drawing color to white noLoop(); diff --git a/content/examples_p5/Basics/Structure/Recursion/Recursion.js b/content/examples_p5/Basics/Structure/Recursion/Recursion.js index 6e75a587f..71da4ffd2 100644 --- a/content/examples_p5/Basics/Structure/Recursion/Recursion.js +++ b/content/examples_p5/Basics/Structure/Recursion/Recursion.js @@ -7,7 +7,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); noLoop(); } diff --git a/content/examples_p5/Basics/Structure/Redraw/Redraw.js b/content/examples_p5/Basics/Structure/Redraw/Redraw.js index 1aa19659d..270b1b779 100644 --- a/content/examples_p5/Basics/Structure/Redraw/Redraw.js +++ b/content/examples_p5/Basics/Structure/Redraw/Redraw.js @@ -11,7 +11,8 @@ var y; // The statements in the setup() function // execute once when the program begins function setup() { - createCanvas(640, 360); // Size should be the first statement + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Size should be the first statement stroke(255); // Set line drawing color to white noLoop(); y = height * 0.5; diff --git a/content/examples_p5/Basics/Structure/SetupDraw/SetupDraw.js b/content/examples_p5/Basics/Structure/SetupDraw/SetupDraw.js index 6f88abe64..0029f7328 100644 --- a/content/examples_p5/Basics/Structure/SetupDraw/SetupDraw.js +++ b/content/examples_p5/Basics/Structure/SetupDraw/SetupDraw.js @@ -10,7 +10,8 @@ var y = 100; // The statements in the setup() function // execute once when the program begins function setup() { - createCanvas(640, 360); // Size must be the first statement + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Size must be the first statement stroke(255); // Set line drawing color to white frameRate(30); } diff --git a/content/examples_p5/Basics/Structure/StatementsComments/StatementsComments.js b/content/examples_p5/Basics/Structure/StatementsComments/StatementsComments.js index 0edf1a531..4e712d219 100644 --- a/content/examples_p5/Basics/Structure/StatementsComments/StatementsComments.js +++ b/content/examples_p5/Basics/Structure/StatementsComments/StatementsComments.js @@ -14,7 +14,8 @@ function setup() { // Each function statement has zero or more parameters. // Parameters are data passed into the function // and are used as values for telling the computer what to do. - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // The background function is a statement that tells the computer // which color (or gray value) to make the background of the display window diff --git a/content/examples_p5/Basics/Structure/WidthHeight/WidthHeight.js b/content/examples_p5/Basics/Structure/WidthHeight/WidthHeight.js index 9509f75ad..dcc87fd68 100644 --- a/content/examples_p5/Basics/Structure/WidthHeight/WidthHeight.js +++ b/content/examples_p5/Basics/Structure/WidthHeight/WidthHeight.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Transform/Arm/Arm.js b/content/examples_p5/Basics/Transform/Arm/Arm.js index 2f4dc0597..f4d11d86c 100644 --- a/content/examples_p5/Basics/Transform/Arm/Arm.js +++ b/content/examples_p5/Basics/Transform/Arm/Arm.js @@ -13,7 +13,8 @@ var angle2 = 0.0; var segLength = 100; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(30); stroke(255, 160); diff --git a/content/examples_p5/Basics/Transform/Rotate/Rotate.js b/content/examples_p5/Basics/Transform/Rotate/Rotate.js index 93580ab98..2ee5468cd 100644 --- a/content/examples_p5/Basics/Transform/Rotate/Rotate.js +++ b/content/examples_p5/Basics/Transform/Rotate/Rotate.js @@ -13,7 +13,8 @@ var angle = 0; var jitter = 0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); fill(255); rectMode(CENTER); diff --git a/content/examples_p5/Basics/Transform/Scale/Scale.js b/content/examples_p5/Basics/Transform/Scale/Scale.js index 5e73ec89d..b2e6f3e04 100644 --- a/content/examples_p5/Basics/Transform/Scale/Scale.js +++ b/content/examples_p5/Basics/Transform/Scale/Scale.js @@ -12,7 +12,8 @@ var a = 0.0; var s = 0.0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); rectMode(CENTER); frameRate(30); diff --git a/content/examples_p5/Basics/Transform/Translate/Translate.js b/content/examples_p5/Basics/Transform/Translate/Translate.js index dd175d691..cbff7d9dc 100644 --- a/content/examples_p5/Basics/Transform/Translate/Translate.js +++ b/content/examples_p5/Basics/Transform/Translate/Translate.js @@ -11,7 +11,8 @@ var x = 0; var dim = 80.0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); } diff --git a/content/examples_p5/Basics/Typography/Letters/Letters.js b/content/examples_p5/Basics/Typography/Letters/Letters.js index 281b7f814..a92f8de92 100644 --- a/content/examples_p5/Basics/Typography/Letters/Letters.js +++ b/content/examples_p5/Basics/Typography/Letters/Letters.js @@ -8,7 +8,8 @@ var f; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(0); // Create the font diff --git a/content/examples_p5/Basics/Typography/Words/Words.js b/content/examples_p5/Basics/Typography/Words/Words.js index fa3b78d54..b27f6d15a 100644 --- a/content/examples_p5/Basics/Typography/Words/Words.js +++ b/content/examples_p5/Basics/Typography/Words/Words.js @@ -9,7 +9,8 @@ var f; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Create the font //printArray(PFont.list()); diff --git a/content/examples_p5/Basics/Web/EmbeddedLinks/EmbeddedLinks.js b/content/examples_p5/Basics/Web/EmbeddedLinks/EmbeddedLinks.js index a774b2066..14fbe8bda 100644 --- a/content/examples_p5/Basics/Web/EmbeddedLinks/EmbeddedLinks.js +++ b/content/examples_p5/Basics/Web/EmbeddedLinks/EmbeddedLinks.js @@ -9,7 +9,8 @@ var overLeftButton = false; var overRightButton = false; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Basics/Web/LoadingImages/LoadingImages.js b/content/examples_p5/Basics/Web/LoadingImages/LoadingImages.js index 08eddd304..4c20624d5 100644 --- a/content/examples_p5/Basics/Web/LoadingImages/LoadingImages.js +++ b/content/examples_p5/Basics/Web/LoadingImages/LoadingImages.js @@ -10,7 +10,8 @@ var img; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); img = createImg("http://processing.org/img/processing-web.png"); img.hide(); // This needs to be resolved: https://github.com/processing/p5.js/issues/561 diff --git a/content/examples_p5/Topics/Advanced Data/ArrayListClass/ArrayListClass.js b/content/examples_p5/Topics/Advanced Data/ArrayListClass/ArrayListClass.js index 7d6a4eca2..84aa7ffab 100644 --- a/content/examples_p5/Topics/Advanced Data/ArrayListClass/ArrayListClass.js +++ b/content/examples_p5/Topics/Advanced Data/ArrayListClass/ArrayListClass.js @@ -13,7 +13,8 @@ var balls = []; var ballWidth = 48; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); // Start by adding one element diff --git a/content/examples_p5/Topics/Advanced Data/IntListLottery/IntListLottery.js b/content/examples_p5/Topics/Advanced Data/IntListLottery/IntListLottery.js index c28886033..a15a56bdb 100644 --- a/content/examples_p5/Topics/Advanced Data/IntListLottery/IntListLottery.js +++ b/content/examples_p5/Topics/Advanced Data/IntListLottery/IntListLottery.js @@ -19,7 +19,8 @@ var results; var ticket; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); frameRate(30); // Create empy lists lottery = new p5.NumberList(); diff --git a/content/examples_p5/Topics/Advanced Data/LoadSaveJSON/LoadSaveJSON.js b/content/examples_p5/Topics/Advanced Data/LoadSaveJSON/LoadSaveJSON.js index 8a67b10da..c7c399ab9 100644 --- a/content/examples_p5/Topics/Advanced Data/LoadSaveJSON/LoadSaveJSON.js +++ b/content/examples_p5/Topics/Advanced Data/LoadSaveJSON/LoadSaveJSON.js @@ -40,7 +40,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); loadData(); } diff --git a/content/examples_p5/Topics/Advanced Data/LoadSaveTable/LoadSaveTable.js b/content/examples_p5/Topics/Advanced Data/LoadSaveTable/LoadSaveTable.js index 34fdc66b7..5fb1e560d 100644 --- a/content/examples_p5/Topics/Advanced Data/LoadSaveTable/LoadSaveTable.js +++ b/content/examples_p5/Topics/Advanced Data/LoadSaveTable/LoadSaveTable.js @@ -29,7 +29,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); loadData(); } diff --git a/content/examples_p5/Topics/Advanced Data/LoadSaveXML/LoadSaveXML.js b/content/examples_p5/Topics/Advanced Data/LoadSaveXML/LoadSaveXML.js index dcf37b970..90cba56b4 100644 --- a/content/examples_p5/Topics/Advanced Data/LoadSaveXML/LoadSaveXML.js +++ b/content/examples_p5/Topics/Advanced Data/LoadSaveXML/LoadSaveXML.js @@ -35,7 +35,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); loadData(); loadXML("data/data.xml",test); } diff --git a/content/examples_p5/Topics/Animation/AnimatedSprite/AnimatedSprite.js b/content/examples_p5/Topics/Animation/AnimatedSprite/AnimatedSprite.js index 6cafaea72..39029a78b 100644 --- a/content/examples_p5/Topics/Animation/AnimatedSprite/AnimatedSprite.js +++ b/content/examples_p5/Topics/Animation/AnimatedSprite/AnimatedSprite.js @@ -21,7 +21,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(255, 204, 0); frameRate(24); ypos = height * 0.25; diff --git a/content/examples_p5/Topics/Animation/Sequential/Sequential.js b/content/examples_p5/Topics/Animation/Sequential/Sequential.js index 3dab0f938..4dbd8af13 100644 --- a/content/examples_p5/Topics/Animation/Sequential/Sequential.js +++ b/content/examples_p5/Topics/Animation/Sequential/Sequential.js @@ -41,7 +41,8 @@ function preload() { //} } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); frameRate(24); diff --git a/content/examples_p5/Topics/Cellular Automata/GameOfLife/GameOfLife.js b/content/examples_p5/Topics/Cellular Automata/GameOfLife/GameOfLife.js index 1c95d681e..447dc007c 100644 --- a/content/examples_p5/Topics/Cellular Automata/GameOfLife/GameOfLife.js +++ b/content/examples_p5/Topics/Cellular Automata/GameOfLife/GameOfLife.js @@ -41,7 +41,8 @@ function make2DArray(cols,rows) { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); alive = color(0, 200, 0); dead = color(0); // Instantiate arrays diff --git a/content/examples_p5/Topics/Cellular Automata/Spore1/Spore1.js b/content/examples_p5/Topics/Cellular Automata/Spore1/Spore1.js index e42289ca2..977fe1ac9 100644 --- a/content/examples_p5/Topics/Cellular Automata/Spore1/Spore1.js +++ b/content/examples_p5/Topics/Cellular Automata/Spore1/Spore1.js @@ -20,7 +20,8 @@ var spore_color; var runs_per_loop = 100; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); frameRate(24); reset(); diff --git a/content/examples_p5/Topics/Cellular Automata/Wolfram/Wolfram.js b/content/examples_p5/Topics/Cellular Automata/Wolfram/Wolfram.js index d15307dba..df2ab6a8d 100644 --- a/content/examples_p5/Topics/Cellular Automata/Wolfram/Wolfram.js +++ b/content/examples_p5/Topics/Cellular Automata/Wolfram/Wolfram.js @@ -10,7 +10,8 @@ var ca; // An instance object to describe the Wolfram basic Cellular Automata function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); var ruleset = [0,1,0,1,1,0,1,0]; // An initial rule system ca = new CA(ruleset); // Initialize CA background(0); diff --git a/content/examples_p5/Topics/Drawing/ContinuousLines/ContinuousLines.js b/content/examples_p5/Topics/Drawing/ContinuousLines/ContinuousLines.js index effe41453..d694044a0 100644 --- a/content/examples_p5/Topics/Drawing/ContinuousLines/ContinuousLines.js +++ b/content/examples_p5/Topics/Drawing/ContinuousLines/ContinuousLines.js @@ -5,7 +5,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(102); } diff --git a/content/examples_p5/Topics/Drawing/Pattern/Pattern.js b/content/examples_p5/Topics/Drawing/Pattern/Pattern.js index 065cc2f72..f1a406267 100644 --- a/content/examples_p5/Topics/Drawing/Pattern/Pattern.js +++ b/content/examples_p5/Topics/Drawing/Pattern/Pattern.js @@ -6,7 +6,8 @@ */ function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(102); } diff --git a/content/examples_p5/Topics/Drawing/Pulses/Pulses.js b/content/examples_p5/Topics/Drawing/Pulses/Pulses.js index 5e0550b3a..5e51b5cec 100644 --- a/content/examples_p5/Topics/Drawing/Pulses/Pulses.js +++ b/content/examples_p5/Topics/Drawing/Pulses/Pulses.js @@ -9,7 +9,8 @@ var angle = 0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); background(102); noStroke(); fill(0, 102); diff --git a/content/examples_p5/Topics/Fractals and L-Systems/Koch/Koch.js b/content/examples_p5/Topics/Fractals and L-Systems/Koch/Koch.js index a464508ee..6a0ca82cf 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/Koch/Koch.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/Koch/Koch.js @@ -10,7 +10,8 @@ var k; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); frameRate(1); // Animate slowly k = new KochFractal(); } diff --git a/content/examples_p5/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.js b/content/examples_p5/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.js index 9c828a671..d8e22fc7c 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.js @@ -6,7 +6,8 @@ */ function setup() { -createCanvas(640, 360); +var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); noLoop(); background(255); diff --git a/content/examples_p5/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.js b/content/examples_p5/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.js index f6d9e4cda..e74bc95bc 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.js @@ -8,7 +8,8 @@ var ps; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); noFill(); ps = new PenroseSnowflakeLSystem(); diff --git a/content/examples_p5/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.js b/content/examples_p5/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.js index f0f6aefd8..f4aea6657 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.js @@ -8,7 +8,8 @@ var ds; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); ds = new PenroseLSystem(); ds.simulate(4); } diff --git a/content/examples_p5/Topics/Fractals and L-Systems/Pentigree/Pentigree.js b/content/examples_p5/Topics/Fractals and L-Systems/Pentigree/Pentigree.js index 669e0f53c..8248a161e 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/Pentigree/Pentigree.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/Pentigree/Pentigree.js @@ -9,7 +9,8 @@ var ps; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); ps = new PentigreeLSystem(); ps.simulate(3); } diff --git a/content/examples_p5/Topics/Fractals and L-Systems/Tree/Tree.js b/content/examples_p5/Topics/Fractals and L-Systems/Tree/Tree.js index be0922ccf..605874239 100644 --- a/content/examples_p5/Topics/Fractals and L-Systems/Tree/Tree.js +++ b/content/examples_p5/Topics/Fractals and L-Systems/Tree/Tree.js @@ -11,7 +11,8 @@ var theta; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Topics/GUI/Button/Button.js b/content/examples_p5/Topics/GUI/Button/Button.js index 310cfc9d5..d6618a054 100644 --- a/content/examples_p5/Topics/GUI/Button/Button.js +++ b/content/examples_p5/Topics/GUI/Button/Button.js @@ -17,7 +17,8 @@ var rectOver = false; var circleOver = false; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); rectColor = color(0); rectHighlight = color(51); circleColor = color(255); diff --git a/content/examples_p5/Topics/GUI/Handles/Handles.js b/content/examples_p5/Topics/GUI/Handles/Handles.js index 8cd6592e9..c13b7d9cf 100644 --- a/content/examples_p5/Topics/GUI/Handles/Handles.js +++ b/content/examples_p5/Topics/GUI/Handles/Handles.js @@ -7,7 +7,8 @@ var handles; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); var num = height/15; handles = []; var hsize = 10; diff --git a/content/examples_p5/Topics/GUI/Rollover/Rollover.js b/content/examples_p5/Topics/GUI/Rollover/Rollover.js index c1b620baf..c42e5bbee 100644 --- a/content/examples_p5/Topics/GUI/Rollover/Rollover.js +++ b/content/examples_p5/Topics/GUI/Rollover/Rollover.js @@ -19,7 +19,8 @@ var rectOver = false; var circleOver = false; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); rectColor = color(0); circleColor = color(255); baseColor = color(102); diff --git a/content/examples_p5/Topics/GUI/Scrollbar/Scrollbar.js b/content/examples_p5/Topics/GUI/Scrollbar/Scrollbar.js index f70278e10..1789d26aa 100644 --- a/content/examples_p5/Topics/GUI/Scrollbar/Scrollbar.js +++ b/content/examples_p5/Topics/GUI/Scrollbar/Scrollbar.js @@ -19,7 +19,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); hs1 = new HScrollbar(0, height/2-8, width, 16, 16); diff --git a/content/examples_p5/Topics/Image Processing/Blur/Blur.js b/content/examples_p5/Topics/Image Processing/Blur/Blur.js index 2449ac79b..073a69da7 100644 --- a/content/examples_p5/Topics/Image Processing/Blur/Blur.js +++ b/content/examples_p5/Topics/Image Processing/Blur/Blur.js @@ -20,7 +20,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); noLoop(); } diff --git a/content/examples_p5/Topics/Image Processing/Brightness/Brightness.js b/content/examples_p5/Topics/Image Processing/Brightness/Brightness.js index ac7ef600f..47c36a01b 100644 --- a/content/examples_p5/Topics/Image Processing/Brightness/Brightness.js +++ b/content/examples_p5/Topics/Image Processing/Brightness/Brightness.js @@ -16,7 +16,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); frameRate(30); img.loadPixels(); diff --git a/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js b/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js index 3641b643e..c0df645a3 100644 --- a/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js +++ b/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js @@ -24,7 +24,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); } diff --git a/content/examples_p5/Topics/Image Processing/EdgeDetection/EdgeDetection.js b/content/examples_p5/Topics/Image Processing/EdgeDetection/EdgeDetection.js index 05c0adbb1..023f04e83 100644 --- a/content/examples_p5/Topics/Image Processing/EdgeDetection/EdgeDetection.js +++ b/content/examples_p5/Topics/Image Processing/EdgeDetection/EdgeDetection.js @@ -21,7 +21,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); devicePixelScaling(false); noLoop(); } diff --git a/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js b/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js index 347c406b6..1390bcc29 100644 --- a/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js +++ b/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js @@ -20,7 +20,8 @@ // } // function setup() { -// createCanvas(640, 360); +// var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // stroke(255); // img.loadPixels(); // loadPixels(); diff --git a/content/examples_p5/Topics/Image Processing/PixelArray/PixelArray.js b/content/examples_p5/Topics/Image Processing/PixelArray/PixelArray.js index c1071a796..5fe3e8b0d 100644 --- a/content/examples_p5/Topics/Image Processing/PixelArray/PixelArray.js +++ b/content/examples_p5/Topics/Image Processing/PixelArray/PixelArray.js @@ -19,7 +19,8 @@ function preload() { } function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noFill(); stroke(255); frameRate(30); diff --git a/content/examples_p5/Topics/Interaction/Follow1/Follow1.js b/content/examples_p5/Topics/Interaction/Follow1/Follow1.js index dade515f9..450c68317 100644 --- a/content/examples_p5/Topics/Interaction/Follow1/Follow1.js +++ b/content/examples_p5/Topics/Interaction/Follow1/Follow1.js @@ -11,7 +11,8 @@ var angle1 = 0.0; var segLength = 50; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(20.0); stroke(255, 100); } diff --git a/content/examples_p5/Topics/Interaction/Follow2/Follow2.js b/content/examples_p5/Topics/Interaction/Follow2/Follow2.js index 443dbd5a9..239489e3d 100644 --- a/content/examples_p5/Topics/Interaction/Follow2/Follow2.js +++ b/content/examples_p5/Topics/Interaction/Follow2/Follow2.js @@ -12,7 +12,8 @@ var y = [0,0]; var segLength = 50; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(20.0); stroke(255, 100); } diff --git a/content/examples_p5/Topics/Interaction/Follow3/Follow3.js b/content/examples_p5/Topics/Interaction/Follow3/Follow3.js index c7de627fc..c1a40d068 100644 --- a/content/examples_p5/Topics/Interaction/Follow3/Follow3.js +++ b/content/examples_p5/Topics/Interaction/Follow3/Follow3.js @@ -12,7 +12,8 @@ var y = new Array(20); var segLength = 18; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(9); stroke(255, 100); for (var i = 0; i < x.length; i++) { diff --git a/content/examples_p5/Topics/Interaction/Reach1/Reach1.js b/content/examples_p5/Topics/Interaction/Reach1/Reach1.js index 943da8172..73c600dad 100644 --- a/content/examples_p5/Topics/Interaction/Reach1/Reach1.js +++ b/content/examples_p5/Topics/Interaction/Reach1/Reach1.js @@ -11,7 +11,8 @@ var segLength = 80; var x, y, x2, y2; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(20.0); stroke(255, 100); diff --git a/content/examples_p5/Topics/Interaction/Reach2/Reach2.js b/content/examples_p5/Topics/Interaction/Reach2/Reach2.js index 57fcb81e9..301e06c68 100644 --- a/content/examples_p5/Topics/Interaction/Reach2/Reach2.js +++ b/content/examples_p5/Topics/Interaction/Reach2/Reach2.js @@ -14,7 +14,8 @@ var segLength = 26; var targetX, targetY = 0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(20.0); stroke(255, 100); for (var i = 0 ; i < x.length; i++) { diff --git a/content/examples_p5/Topics/Interaction/Reach3/Reach3.js b/content/examples_p5/Topics/Interaction/Reach3/Reach3.js index 32e847685..735caed22 100644 --- a/content/examples_p5/Topics/Interaction/Reach3/Reach3.js +++ b/content/examples_p5/Topics/Interaction/Reach3/Reach3.js @@ -19,7 +19,8 @@ var ballXDirection = 1; var ballYDirection = -1; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); strokeWeight(20.0); stroke(255, 100); noFill(); diff --git a/content/examples_p5/Topics/Interaction/Tickle/Tickle.js b/content/examples_p5/Topics/Interaction/Tickle/Tickle.js index 3dd928322..77b95d46c 100644 --- a/content/examples_p5/Topics/Interaction/Tickle/Tickle.js +++ b/content/examples_p5/Topics/Interaction/Tickle/Tickle.js @@ -13,7 +13,8 @@ var x, y; // X and Y coordinates of text var hr, vr; // horizontal and vertical radius of the text function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Create the font textFont("Georgia"); diff --git a/content/examples_p5/Topics/Motion/Bounce/Bounce.js b/content/examples_p5/Topics/Motion/Bounce/Bounce.js index 5f1e8b4cf..a656a8d0b 100644 --- a/content/examples_p5/Topics/Motion/Bounce/Bounce.js +++ b/content/examples_p5/Topics/Motion/Bounce/Bounce.js @@ -16,7 +16,8 @@ var ydirection = 1; // Top to Bottom function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); frameRate(30); ellipseMode(RADIUS); diff --git a/content/examples_p5/Topics/Motion/BouncyBubbles/BouncyBubbles.js b/content/examples_p5/Topics/Motion/BouncyBubbles/BouncyBubbles.js index 2145a4563..62c702178 100644 --- a/content/examples_p5/Topics/Motion/BouncyBubbles/BouncyBubbles.js +++ b/content/examples_p5/Topics/Motion/BouncyBubbles/BouncyBubbles.js @@ -13,7 +13,8 @@ var friction = -0.9; var balls = []; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); for (var i = 0; i < numBalls; i++) { balls[i] = new Ball(random(width), random(height), random(30, 70), i, balls); } diff --git a/content/examples_p5/Topics/Motion/Brownian/Brownian.js b/content/examples_p5/Topics/Motion/Brownian/Brownian.js index 42ff4ab66..a461b7178 100644 --- a/content/examples_p5/Topics/Motion/Brownian/Brownian.js +++ b/content/examples_p5/Topics/Motion/Brownian/Brownian.js @@ -13,7 +13,8 @@ var ay = []; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); for(var i = 0; i < num; i++) { ax[i] = width/2; ay[i] = height/2; diff --git a/content/examples_p5/Topics/Motion/CircleCollision/CircleCollision.js b/content/examples_p5/Topics/Motion/CircleCollision/CircleCollision.js index 36d92636d..d07cfa5e7 100644 --- a/content/examples_p5/Topics/Motion/CircleCollision/CircleCollision.js +++ b/content/examples_p5/Topics/Motion/CircleCollision/CircleCollision.js @@ -8,7 +8,8 @@ var balls; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); balls = [ new Ball(100, 400, 20), new Ball(700, 400, 80) diff --git a/content/examples_p5/Topics/Motion/Linear/Linear.js b/content/examples_p5/Topics/Motion/Linear/Linear.js index 3d1b2514e..ae97843ed 100644 --- a/content/examples_p5/Topics/Motion/Linear/Linear.js +++ b/content/examples_p5/Topics/Motion/Linear/Linear.js @@ -10,7 +10,8 @@ var a; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); stroke(255); a = height/2; } diff --git a/content/examples_p5/Topics/Motion/Morph/Morph.js b/content/examples_p5/Topics/Motion/Morph/Morph.js index 427d5a498..bcac639ae 100644 --- a/content/examples_p5/Topics/Motion/Morph/Morph.js +++ b/content/examples_p5/Topics/Motion/Morph/Morph.js @@ -19,7 +19,8 @@ var morph = []; var state = false; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Create a circle using vectors pointing from center for (var angle = 0; angle < 360; angle += 9) { diff --git a/content/examples_p5/Topics/Motion/MovingOnCurves/MovingOnCurves.js b/content/examples_p5/Topics/Motion/MovingOnCurves/MovingOnCurves.js index 1413b75e3..9ffe264aa 100644 --- a/content/examples_p5/Topics/Motion/MovingOnCurves/MovingOnCurves.js +++ b/content/examples_p5/Topics/Motion/MovingOnCurves/MovingOnCurves.js @@ -18,7 +18,8 @@ var step = 0.01; // Size of each step along the path var pct = 0.0; // Percentage traveled (0.0 to 1.0) function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); distX = endX - beginX; distY = endY - beginY; diff --git a/content/examples_p5/Topics/Motion/Reflection1/Reflection1.js b/content/examples_p5/Topics/Motion/Reflection1/Reflection1.js index 4cb1cad69..01a58738a 100644 --- a/content/examples_p5/Topics/Motion/Reflection1/Reflection1.js +++ b/content/examples_p5/Topics/Motion/Reflection1/Reflection1.js @@ -24,7 +24,8 @@ var r = 6; var speed = 3.5; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); fill(128); base1 = createVector(0, height-150); diff --git a/content/examples_p5/Topics/Motion/Reflection2/Reflection2.js b/content/examples_p5/Topics/Motion/Reflection2/Reflection2.js index 2caba5a6d..47a9d3895 100644 --- a/content/examples_p5/Topics/Motion/Reflection2/Reflection2.js +++ b/content/examples_p5/Topics/Motion/Reflection2/Reflection2.js @@ -14,7 +14,8 @@ var segments = 40; var ground = new Array(segments); function setup(){ - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); gravity = createVector(0,0.05); // An orb object that will fall and bounce around orb = new Orb(50, 50, 3); diff --git a/content/examples_p5/Topics/Simulate/Chain/Chain.js b/content/examples_p5/Topics/Simulate/Chain/Chain.js index afd037d2a..5d5a198e1 100644 --- a/content/examples_p5/Topics/Simulate/Chain/Chain.js +++ b/content/examples_p5/Topics/Simulate/Chain/Chain.js @@ -13,7 +13,8 @@ var gravity = 9.0; var mass = 2.0; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); fill(255, 126); // Inputs: x, y, mass, gravity s1 = new Spring2D(0.0, width/2, mass, gravity); diff --git a/content/examples_p5/Topics/Simulate/Flocking/Flocking.js b/content/examples_p5/Topics/Simulate/Flocking/Flocking.js index a589f0098..9a70b09ff 100644 --- a/content/examples_p5/Topics/Simulate/Flocking/Flocking.js +++ b/content/examples_p5/Topics/Simulate/Flocking/Flocking.js @@ -12,7 +12,8 @@ var flock; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); flock = new Flock(); // Add an initial set of boids into the system for (var i = 0; i < 150; i++) { diff --git a/content/examples_p5/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.js b/content/examples_p5/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.js index 814aeab0e..7c22979b0 100644 --- a/content/examples_p5/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.js +++ b/content/examples_p5/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.js @@ -19,7 +19,8 @@ var movers = []; var liquid; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); reset(); // Create liquid object liquid = new Liquid(0, height/2, width, height/2, 0.1); diff --git a/content/examples_p5/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.js b/content/examples_p5/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.js index 57e6e6a2d..fc2efb41a 100644 --- a/content/examples_p5/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.js +++ b/content/examples_p5/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.js @@ -13,7 +13,8 @@ var systems = []; function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.js b/content/examples_p5/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.js index 47dba8e79..33a55c22f 100644 --- a/content/examples_p5/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.js +++ b/content/examples_p5/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.js @@ -11,7 +11,8 @@ var ps; function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); ps = new ParticleSystem(createVector(width/2,50)); } diff --git a/content/examples_p5/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.js b/content/examples_p5/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.js index d040a166a..10efb549d 100644 --- a/content/examples_p5/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.js +++ b/content/examples_p5/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.js @@ -17,7 +17,8 @@ function preload() { } function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); ps = new ParticleSystem(0,createVector(width/2,height-60),img); } diff --git a/content/examples_p5/Topics/Simulate/Spring/Spring.js b/content/examples_p5/Topics/Simulate/Spring/Spring.js index 3f79913a6..b728d1a1c 100644 --- a/content/examples_p5/Topics/Simulate/Spring/Spring.js +++ b/content/examples_p5/Topics/Simulate/Spring/Spring.js @@ -27,7 +27,8 @@ var f = 0; // Force function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); rectMode(CORNERS); noStroke(); left = width/2 - 100; diff --git a/content/examples_p5/Topics/Simulate/Springs/Springs.js b/content/examples_p5/Topics/Simulate/Springs/Springs.js index 277291981..fec66c4cf 100644 --- a/content/examples_p5/Topics/Simulate/Springs/Springs.js +++ b/content/examples_p5/Topics/Simulate/Springs/Springs.js @@ -11,7 +11,8 @@ var num = 3; var springs = []; function setup() { - createCanvas(640, 360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); noStroke(); springs[0] = new Spring(240, 260, 40, 0.98, 8.0, 0.1, springs, 0); springs[1] = new Spring(320, 210, 120, 0.95, 9.0, 0.1, springs, 1); diff --git a/content/examples_p5/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.js b/content/examples_p5/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.js index 24eaaaf02..9269c6b21 100644 --- a/content/examples_p5/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.js +++ b/content/examples_p5/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.js @@ -14,7 +14,8 @@ var mover; function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); mover = new Mover(); } diff --git a/content/examples_p5/Topics/Vectors/BouncingBall/BouncingBall.js b/content/examples_p5/Topics/Vectors/BouncingBall/BouncingBall.js index 74c5ce11f..d1dff80e6 100644 --- a/content/examples_p5/Topics/Vectors/BouncingBall/BouncingBall.js +++ b/content/examples_p5/Topics/Vectors/BouncingBall/BouncingBall.js @@ -12,7 +12,8 @@ var velocity; // Velocity of shape var gravity; // Gravity acts at the shape's acceleration function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); position = createVector(100,100); velocity = createVector(1.5,2.1); gravity = createVector(0,0.2); diff --git a/content/examples_p5/Topics/Vectors/VectorMath/VectorMath.js b/content/examples_p5/Topics/Vectors/VectorMath/VectorMath.js index 460224193..869c0d35c 100644 --- a/content/examples_p5/Topics/Vectors/VectorMath/VectorMath.js +++ b/content/examples_p5/Topics/Vectors/VectorMath/VectorMath.js @@ -7,7 +7,8 @@ */ function setup() { - createCanvas(640,360); + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); } function draw() { diff --git a/content/examples_p5/testing.html b/content/examples_p5/testing.html index 65a1d1b52..72c0c2c73 100644 --- a/content/examples_p5/testing.html +++ b/content/examples_p5/testing.html @@ -2,24 +2,23 @@ - + -
      +
      diff --git a/generate/lib/Example.class.php b/generate/lib/Example.class.php index 80d149696..36ab2e3c8 100644 --- a/generate/lib/Example.class.php +++ b/generate/lib/Example.class.php @@ -91,7 +91,7 @@ function display() // Insert the p5 version of the example into the page //Container for example - $html = "\n
      "; + $html = "\n
      "; //Script tag for example $html .= ''; //Description @@ -106,7 +134,7 @@ function display() //Raw code from Processing (not p5) version $html .= "\n
      \n";
      -      	$html .= $this->code;
      +      	$html .= $this->pde_code;
             	$html .= "
      \n\n"; $html .= "\n
    \n"; // END example div From a8fa38cdcf13c37c0973bb24f83a7eaccdff4949 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sat, 28 Nov 2015 14:04:04 -0500 Subject: [PATCH 065/772] Disabled Path Finder until links are fixed. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 3468f53ad..fabbbbed0 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -121,7 +121,7 @@ 156 \ http://www.lagers.org.uk/processing/jasmine/Jasmine.txt [Library : Other] -093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt +# 093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt 157 \ http://www.lagers.org.uk/processing/steganos/Steganos.txt [Library : Simulation] From 7056b0c8525359578d109cacc880c9e3c305ca59 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 14:38:45 -0800 Subject: [PATCH 066/772] More p5 testing --- generate/examples.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/examples.php b/generate/examples.php index 129ce4bcb..5a625d879 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -3,7 +3,7 @@ require('lib/Example.class.php'); $benchmark_start = microtime_float(); $local = false; -define('EXAMPLESOURCEDIR', '../content/examples_p5/'); +define('EXAMPLESOURCEDIR', '../content/examples/'); define('EXAMPLESOURCEJSDIR', '../content/examples_p5/'); $path = BASEDIR; $where = EXAMPLESOURCEDIR; @@ -114,7 +114,7 @@ function get_examples_list($exstr){ if ($c->childCount > 0) { foreach ($c->childNodes as $s) { - if ($s->nodeType == 1) { + if ($s->nodeType == 1 && $s->hasAttribute("p5")) { $my_cats[$name][$s->getAttribute('file')] = trim($s->firstChild->nodeValue); } } From 539e31ea60d58d399af790a795558452e8428e58 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 14:40:16 -0800 Subject: [PATCH 067/772] More p5 testing --- generate/examples.php | 1 + 1 file changed, 1 insertion(+) diff --git a/generate/examples.php b/generate/examples.php index 5a625d879..0ae8d73d1 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -114,6 +114,7 @@ function get_examples_list($exstr){ if ($c->childCount > 0) { foreach ($c->childNodes as $s) { + echo $s->hasAttribute("p5"); if ($s->nodeType == 1 && $s->hasAttribute("p5")) { $my_cats[$name][$s->getAttribute('file')] = trim($s->firstChild->nodeValue); } From a4daba2ebfead2e4ab6dfe49ec9138590be0b128 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 14:48:44 -0800 Subject: [PATCH 068/772] More p5 testing --- generate/examples.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/examples.php b/generate/examples.php index 0ae8d73d1..9f1d3c10f 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -114,13 +114,13 @@ function get_examples_list($exstr){ if ($c->childCount > 0) { foreach ($c->childNodes as $s) { - echo $s->hasAttribute("p5"); - if ($s->nodeType == 1 && $s->hasAttribute("p5")) { + if ($s->nodeType == 1 && $s->hasAttribute('p5')) { $my_cats[$name][$s->getAttribute('file')] = trim($s->firstChild->nodeValue); } } } } + echo $my_cats; return $my_cats; } function removesymbols($str){ From b60a23a044916d741da6e19db03c1332d4da4eb8 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 14:52:12 -0800 Subject: [PATCH 069/772] More p5 testing --- generate/examples.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/examples.php b/generate/examples.php index 9f1d3c10f..ec463fdb0 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -114,13 +114,13 @@ function get_examples_list($exstr){ if ($c->childCount > 0) { foreach ($c->childNodes as $s) { - if ($s->nodeType == 1 && $s->hasAttribute('p5')) { + echo ($s->hasAttribute("p5")) ; + if ($s->nodeType == 1 && $s->hasAttribute("p5")) { $my_cats[$name][$s->getAttribute('file')] = trim($s->firstChild->nodeValue); } } } } - echo $my_cats; return $my_cats; } function removesymbols($str){ From 3d81b8dc387b702969b982b6544dcc29188b9542 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 19:47:04 -0800 Subject: [PATCH 070/772] Re-added processing.js for now --- javascript/processing.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 javascript/processing.js diff --git a/javascript/processing.js b/javascript/processing.js new file mode 100644 index 000000000..0d586ccd7 --- /dev/null +++ b/javascript/processing.js @@ -0,0 +1,13 @@ +/*** + + P R O C E S S I N G . J S - 1.4.1 + a port of the Processing visualization language + + Processing.js is licensed under the MIT License, see LICENSE. + For a list of copyright holders, please refer to AUTHORS. + + http://processingjs.org + +***/ + +(function(D,d,q,t){var G=function(){};var s=function(){if("console" in D){return function(N){D.console.log("Processing.js: "+N)}}return G}();var w=function(N){var O=new XMLHttpRequest;O.open("GET",N,false);if(O.overrideMimeType){O.overrideMimeType("text/plain")}O.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");O.send(null);if(O.status!==200&&O.status!==0){throw"XMLHttpRequest failed, status code "+O.status}return O.responseText};var n="document" in this&&!("fake" in this.document);d.head=d.head||d.getElementsByTagName("head")[0];function C(N,O){if(N in D){return D[N]}if(typeof D[O]==="function"){return D[O]}return function(Q){if(Q instanceof Array){return Q}if(typeof Q==="number"){var P=[];P.length=Q;return P}}}if(d.documentMode>=9&&!d.doctype){throw"The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: "}var e=C("Float32Array","WebGLFloatArray"),K=C("Int32Array","WebGLIntArray"),y=C("Uint16Array","WebGLUnsignedShortArray"),b=C("Uint8Array","WebGLUnsignedByteArray");var B={X:0,Y:1,Z:2,R:3,G:4,B:5,A:6,U:7,V:8,NX:9,NY:10,NZ:11,EDGE:12,SR:13,SG:14,SB:15,SA:16,SW:17,TX:18,TY:19,TZ:20,VX:21,VY:22,VZ:23,VW:24,AR:25,AG:26,AB:27,DR:3,DG:4,DB:5,DA:6,SPR:28,SPG:29,SPB:30,SHINE:31,ER:32,EG:33,EB:34,BEEN_LIT:35,VERTEX_FIELD_COUNT:36,P2D:1,JAVA2D:1,WEBGL:2,P3D:2,OPENGL:2,PDF:0,DXF:0,OTHER:0,WINDOWS:1,MAXOSX:2,LINUX:3,EPSILON:0.0001,MAX_FLOAT:3.4028235e+38,MIN_FLOAT:-3.4028235e+38,MAX_INT:2147483647,MIN_INT:-2147483648,PI:q.PI,TWO_PI:2*q.PI,HALF_PI:q.PI/2,THIRD_PI:q.PI/3,QUARTER_PI:q.PI/4,DEG_TO_RAD:q.PI/180,RAD_TO_DEG:180/q.PI,WHITESPACE:" \t\n\r\u000c\u00a0",RGB:1,ARGB:2,HSB:3,ALPHA:4,CMYK:5,TIFF:0,TARGA:1,JPEG:2,GIF:3,BLUR:11,GRAY:12,INVERT:13,OPAQUE:14,POSTERIZE:15,THRESHOLD:16,ERODE:17,DILATE:18,REPLACE:0,BLEND:1<<0,ADD:1<<1,SUBTRACT:1<<2,LIGHTEST:1<<3,DARKEST:1<<4,DIFFERENCE:1<<5,EXCLUSION:1<<6,MULTIPLY:1<<7,SCREEN:1<<8,OVERLAY:1<<9,HARD_LIGHT:1<<10,SOFT_LIGHT:1<<11,DODGE:1<<12,BURN:1<<13,ALPHA_MASK:4278190080,RED_MASK:16711680,GREEN_MASK:65280,BLUE_MASK:255,CUSTOM:0,ORTHOGRAPHIC:2,PERSPECTIVE:3,POINT:2,POINTS:2,LINE:4,LINES:4,TRIANGLE:8,TRIANGLES:9,TRIANGLE_STRIP:10,TRIANGLE_FAN:11,QUAD:16,QUADS:16,QUAD_STRIP:17,POLYGON:20,PATH:21,RECT:30,ELLIPSE:31,ARC:32,SPHERE:40,BOX:41,GROUP:0,PRIMITIVE:1,GEOMETRY:3,VERTEX:0,BEZIER_VERTEX:1,CURVE_VERTEX:2,BREAK:3,CLOSESHAPE:4,OPEN:1,CLOSE:2,CORNER:0,CORNERS:1,RADIUS:2,CENTER_RADIUS:2,CENTER:3,DIAMETER:3,CENTER_DIAMETER:3,BASELINE:0,TOP:101,BOTTOM:102,NORMAL:1,NORMALIZED:1,IMAGE:2,MODEL:4,SHAPE:5,SQUARE:"butt",ROUND:"round",PROJECT:"square",MITER:"miter",BEVEL:"bevel",AMBIENT:0,DIRECTIONAL:1,SPOT:3,BACKSPACE:8,TAB:9,ENTER:10,RETURN:13,ESC:27,DELETE:127,CODED:65535,SHIFT:16,CONTROL:17,ALT:18,CAPSLK:20,PGUP:33,PGDN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLK:144,META:157,INSERT:155,ARROW:"default",CROSS:"crosshair",HAND:"pointer",MOVE:"move",TEXT:"text",WAIT:"wait",NOCURSOR:"url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto",DISABLE_OPENGL_2X_SMOOTH:1,ENABLE_OPENGL_2X_SMOOTH:-1,ENABLE_OPENGL_4X_SMOOTH:2,ENABLE_NATIVE_FONTS:3,DISABLE_DEPTH_TEST:4,ENABLE_DEPTH_TEST:-4,ENABLE_DEPTH_SORT:5,DISABLE_DEPTH_SORT:-5,DISABLE_OPENGL_ERROR_REPORT:6,ENABLE_OPENGL_ERROR_REPORT:-6,ENABLE_ACCURATE_TEXTURES:7,DISABLE_ACCURATE_TEXTURES:-7,HINT_COUNT:10,SINCOS_LENGTH:720,PRECISIONB:15,PRECISIONF:1<<15,PREC_MAXVAL:(1<<15)-1,PREC_ALPHA_SHIFT:24-15,PREC_RED_SHIFT:16-15,NORMAL_MODE_AUTO:0,NORMAL_MODE_SHAPE:1,NORMAL_MODE_VERTEX:2,MAX_LIGHTS:8};function h(P){if(typeof P==="string"){var O=0;for(var N=0;N0?P:0}}this.get=function(R){return Q[R]};this.contains=function(R){return this.indexOf(R)>-1};this.indexOf=function(T){for(var S=0,R=Q.length;S=0;--R){if(r(S,Q[R])){return R}}return -1};this.add=function(){if(arguments.length===1){Q.push(arguments[0])}else{if(arguments.length===2){var R=arguments[0];if(typeof R==="number"){if(R>=0&&R<=Q.length){Q.splice(R,0,arguments[1])}else{throw R+" is not a valid index"}}else{throw typeof R+" is not a number"}}else{throw"Please use the proper number of parameters."}}};this.addAll=function(S,R){var T;if(typeof S==="number"){if(S<0||S>Q.length){throw"Index out of bounds for addAll: "+S+" greater or equal than "+Q.length}T=new o(R);while(T.hasNext()){Q.splice(S++,0,T.next())}}else{T=new o(S);while(T.hasNext()){Q.push(T.next())}}};this.set=function(){if(arguments.length===2){var R=arguments[0];if(typeof R==="number"){if(R>=0&&R-1){Q.splice(R,1);return true}return false};this.removeAll=function(V){var S,R,U,T=new N;T.addAll(this);this.clear();for(S=0,R=0;S0?arguments[0]:16;var X=arguments.length>1?arguments[1]:0.75;var Q=[];Q.length=W;var S=0;var O=this;function U(Z){var Y=h(Z)%Q.length;return Y<0?Q.length+Y:Y}function R(){if(S<=X*Q.length){return}var ab=[];for(var aa=0;aa=Q.length){ab=true}else{if(Q[Y]===t||ac>=Q[Y].length){ac=-1;++Y}else{return}}}}this.hasNext=function(){return !ab};this.next=function(){aa=ad(Q[Y][ac]);Z();return aa};this.remove=function(){if(aa!==t){ae(aa);--ac;Z()}};Z()}function V(Y,Z,aa){this.clear=function(){O.clear()};this.contains=function(ab){return Z(ab)};this.containsAll=function(ac){var ab=ac.iterator();while(ab.hasNext()){if(!this.contains(ab.next())){return false}}return true};this.isEmpty=function(){return O.isEmpty()};this.iterator=function(){return new P(Y,aa)};this.remove=function(ab){if(this.contains(ab)){aa(ab);return true}return false};this.removeAll=function(ae){var ab=ae.iterator();var ad=false;while(ab.hasNext()){var ac=ab.next();if(this.contains(ac)){aa(ac);ad=true}}return true};this.retainAll=function(af){var ad=this.iterator();var ac=[];while(ad.hasNext()){var ae=ad.next();if(!af.contains(ae)){ac.push(ae)}}for(var ab=0;ab0};this.size=function(){return O.size()};this.toArray=function(){var ab=[];var ac=this.iterator();while(ac.hasNext()){ab.push(ac.next())}return ab}}function T(Y){this._isIn=function(Z){return Z===O&&Y.removed===t};this.equals=function(Z){return r(Y.key,Z.getKey())};this.getKey=function(){return Y.key};this.getValue=function(){return Y.value};this.hashCode=function(Z){return h(Y.key)};this.setValue=function(aa){var Z=Y.value;Y.value=aa;return Z}}this.clear=function(){S=0;Q=[];Q.length=W};this.clone=function(){var Y=new N;Y.putAll(this);return Y};this.containsKey=function(aa){var Y=U(aa);var ab=Q[Y];if(ab===t){return false}for(var Z=0;Z1){ac.splice(Z,1)}else{Q[Y]=t}return ab}}return null};this.removeByValue=function(aa){var ac,Z,Y,ab;for(ac in Q){if(Q.hasOwnProperty(ac)){for(Z=0,Y=Q[ac].length;Z0){this.div(Q)}},limit:function(Q){if(this.mag()>Q){this.normalize();this.mult(Q)}},heading2D:function(){return -q.atan2(-this.y,this.x)},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};function O(Q){return function(T,S){var R=T.get();R[Q](S);return R}}for(var P in N.prototype){if(N.prototype.hasOwnProperty(P)&&!N.hasOwnProperty(P)){N[P]=O(P)}}return N}();function M(){}M.prototype=B;var g=new M;g.ArrayList=f;g.HashMap=x;g.PVector=A;g.ObjectIterator=o;g.PConstants=B;g.defineProperty=function(O,N,P){if("defineProperty" in Object){Object.defineProperty(O,N,P)}else{if(P.hasOwnProperty("get")){O.__defineGetter__(N,P.get)}if(P.hasOwnProperty("set")){O.__defineSetter__(N,P.set)}}};function m(O,N,R){if(!O.hasOwnProperty(N)||typeof O[N]!=="function"){O[N]=R;return}var Q=O[N];if("$overloads" in Q){Q.$defaultOverload=R;return}if(!("$overloads" in R)&&Q.length===R.length){return}var T,P;if("$overloads" in R){T=R.$overloads.slice(0);T[Q.length]=Q;P=R.$defaultOverload}else{T=[];T[R.length]=R;T[Q.length]=Q;P=Q}var S=function(){var U=S.$overloads[arguments.length]||("$methodArgsIndex" in S&&arguments.length>S.$methodArgsIndex?S.$overloads[S.$methodArgsIndex]:null)||S.$defaultOverload;return U.apply(this,arguments)};S.$overloads=T;if("$methodArgsIndex" in R){S.$methodArgsIndex=R.$methodArgsIndex}S.$defaultOverload=P;S.name=N;O[N]=S}function i(Q,P){function R(S){g.defineProperty(Q,S,{get:function(){return P[S]},set:function(T){P[S]=T},enumerable:true})}var O=[];for(var N in P){if(typeof P[N]==="function"){m(Q,N,P[N])}else{if(N.charAt(0)!=="$"&&!(N in Q)){O.push(N)}}}while(O.length>0){R(O.shift())}Q.$super=P}g.extendClassChain=function(O){var P=[O];for(var N=O.$upcast;N;N=N.$upcast){i(N,O);P.push(N);O=N}while(P.length>0){P.pop().$self=O}};g.extendStaticMembers=function(N,O){i(N,O)};g.extendInterfaceMembers=function(N,O){i(N,O)};g.addMethod=function(Q,P,S,R){var N=Q[P];if(N||R){var O=S.length;if("$overloads" in N){N.$overloads[O]=S}else{var T=function(){var V=T.$overloads[arguments.length]||("$methodArgsIndex" in T&&arguments.length>T.$methodArgsIndex?T.$overloads[T.$methodArgsIndex]:null)||T.$defaultOverload;return V.apply(this,arguments)};var U=[];if(N){U[N.length]=N}U[O]=S;T.$overloads=U;T.$defaultOverload=N||S;if(R){T.$methodArgsIndex=O}T.name=P;Q[P]=T}}else{Q[P]=S}};function l(N){if(typeof N!=="string"){return false}return["byte","int","char","color","float","long","double"].indexOf(N)!==-1}g.createJavaArray=function(S,T){var O=null,P=null;if(typeof S==="string"){if(S==="boolean"){P=false}else{if(l(S)){P=0}}}if(typeof T[0]==="number"){var N=0|T[0];if(T.length<=1){O=[];O.length=N;for(var R=0;R"+ac;d.body.appendChild(T);var U=N.width,ab=N.height,V=ab/2;Y.fillStyle="white";Y.fillRect(0,0,U,ab);Y.fillStyle="black";Y.fillText(ac,0,V);var P=Y.getImageData(0,0,U,ab).data;var Z=0,S=U*4,aa=P.length;while(++Z0&&P[Z]===255){G()}var ad=q.round(Z/S);X.ascent=ae*(V-R);X.descent=ae*(ad-V);if(d.defaultView.getComputedStyle){var O=d.defaultView.getComputedStyle(T,null).getPropertyValue("height");O=ae*O.replace("px","");if(O>=X.size*2){X.leading=q.round(O/2)}}d.body.removeChild(T);if(X.caching){return Y}}function H(N,O){if(N===t){N=""}this.name=N;if(O===t){O=0}this.size=O;this.glyph=false;this.ascent=0;this.descent=0;this.leading=1.2*O;var R=N.indexOf(" Italic Bold");if(R!==-1){N=N.substring(0,R)}this.style="normal";var Q=N.indexOf(" Italic");if(Q!==-1){N=N.substring(0,Q);this.style="italic"}this.weight="normal";var P=N.indexOf(" Bold");if(P!==-1){N=N.substring(0,P);this.weight="bold"}this.family="sans-serif";if(N!==t){switch(N){case"sans-serif":case"serif":case"monospace":case"fantasy":case"cursive":this.family=N;break;default:this.family='"'+N+'", sans-serif';break}}this.context2d=p(this);this.css=this.getCSSDefinition();if(this.context2d){this.context2d.font=this.css}}H.prototype.caching=true;H.prototype.getCSSDefinition=function(P,N){if(P===t){P=this.size+"px"}if(N===t){N=this.leading+"px"}var O=[this.style,"normal",this.weight,P+"/"+N,this.family];return O.join(" ")};H.prototype.measureTextWidth=function(N){return this.context2d.measureText(N).width};H.prototype.measureTextWidthFallback=function(P){var O=d.createElement("canvas"),N=O.getContext("2d");N.font=this.css;return N.measureText(P).width};H.PFontCache={length:0};H.get=function(Q,R){R=(R*10+0.5|0)/10;var O=H.PFontCache,N=Q+"/"+R;if(!O[N]){O[N]=new H(Q,R);O.length++;if(O.length===50){H.prototype.measureTextWidth=H.prototype.measureTextWidthFallback;H.prototype.caching=false;var P;for(P in O){if(P!=="length"){O[P].context2d=null}}return new H(Q,R)}if(O.length===400){H.PFontCache={};H.get=H.getFallback;return new H(Q,R)}}return O[N]};H.getFallback=function(N,O){return new H(N,O)};H.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};H.preloading={template:{},initialized:false,initialize:function(){var P=function(){var R="#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#";var Q=function(S){return"AAAAAAAA".substr(~~S?7-S:6)};return R.replace(/[#237]/g,Q)};var N=d.createElement("style");N.setAttribute("type","text/css");N.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+P()+"')\n format('truetype');\n}";d.head.appendChild(N);var O=d.createElement("span");O.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';O.innerHTML="AAAAAAAA";d.body.appendChild(O);this.template=O;this.initialized=true},getElementWidth:function(N){return d.defaultView.getComputedStyle(N,"").getPropertyValue("width")},timeAttempted:0,pending:function(R){if(!this.initialized){this.initialize()}var P,N,Q=this.getElementWidth(this.template);for(var O=0;O cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP ) ); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector ) ); if( nDotVP != 0.0 ) { powerFactor = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0 ); vec3 finalDiffuse = vec3( 0.0 ); vec3 finalSpecular = vec3( 0.0 ); vec4 col = uColor; if ( uColor[0] == -1.0 ){ col = aColor; } vec3 norm = normalize(vec3( uNormalTransform * vec4( aNormal, 0.0 ) )); vec4 ecPos4 = uView * uModel * vec4(aVertex, 1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( uLightCount == 0 ) { vFrontColor = col + vec4(uMaterialSpecular, 1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= uLightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( uUsingMat == false ) { vFrontColor = vec4( vec3( col ) * finalAmbient + vec3( col ) * finalDiffuse + vec3( col ) * finalSpecular, col[3] ); } else{ vFrontColor = vec4( uMaterialEmissive + (vec3(col) * uMaterialAmbient * finalAmbient ) + (vec3(col) * finalDiffuse) + (uMaterialSpecular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = uProjection * uView * uModel * vec4( aVertex, 1.0 );}";var aF="#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform sampler2D uSampler;uniform bool uUsingTexture;varying vec2 vTexture;void main(void){ if( uUsingTexture ){ gl_FragColor = vec4(texture2D(uSampler, vTexture.xy)) * vFrontColor; } else{ gl_FragColor = vFrontColor; }}";function d2(ec,eb,ee,ed){var ea=dC.locations[ec];if(ea===t){ea=d8.getUniformLocation(eb,ee);dC.locations[ec]=ea}if(ea!==null){if(ed.length===4){d8.uniform4fv(ea,ed)}else{if(ed.length===3){d8.uniform3fv(ea,ed)}else{if(ed.length===2){d8.uniform2fv(ea,ed)}else{d8.uniform1f(ea,ed)}}}}}function dZ(ec,eb,ee,ed){var ea=dC.locations[ec];if(ea===t){ea=d8.getUniformLocation(eb,ee);dC.locations[ec]=ea}if(ea!==null){if(ed.length===4){d8.uniform4iv(ea,ed)}else{if(ed.length===3){d8.uniform3iv(ea,ed)}else{if(ed.length===2){d8.uniform2iv(ea,ed)}else{d8.uniform1i(ea,ed)}}}}}function a9(ee,ec,ef,ed,eb){var ea=dC.locations[ee];if(ea===t){ea=d8.getUniformLocation(ec,ef);dC.locations[ee]=ea}if(ea!==-1){if(eb.length===16){d8.uniformMatrix4fv(ea,ed,eb)}else{if(eb.length===9){d8.uniformMatrix3fv(ea,ed,eb)}else{d8.uniformMatrix2fv(ea,ed,eb)}}}}function dc(ee,ec,ef,eb,ed){var ea=dC.attributes[ee];if(ea===t){ea=d8.getAttribLocation(ec,ef);dC.attributes[ee]=ea}if(ea!==-1){d8.bindBuffer(d8.ARRAY_BUFFER,ed);d8.vertexAttribPointer(ea,eb,d8.FLOAT,false,0,0);d8.enableVertexAttribArray(ea)}}function cg(ec,eb,ed){var ea=dC.attributes[ec];if(ea===t){ea=d8.getAttribLocation(eb,ed);dC.attributes[ec]=ea}if(ea!==-1){d8.disableVertexAttribArray(ea)}}var bF=function(ec,ee,eb){var ef=ec.createShader(ec.VERTEX_SHADER);ec.shaderSource(ef,ee);ec.compileShader(ef);if(!ec.getShaderParameter(ef,ec.COMPILE_STATUS)){throw ec.getShaderInfoLog(ef)}var ed=ec.createShader(ec.FRAGMENT_SHADER);ec.shaderSource(ed,eb);ec.compileShader(ed);if(!ec.getShaderParameter(ed,ec.COMPILE_STATUS)){throw ec.getShaderInfoLog(ed)}var ea=ec.createProgram();ec.attachShader(ea,ef);ec.attachShader(ea,ed);ec.linkProgram(ea);if(!ec.getProgramParameter(ea,ec.LINK_STATUS)){throw"Error linking shaders."}return ea};var aZ=function(ea,ee,eb,ed,ec){return{x:ea,y:ee,w:eb,h:ed}};var bk=aZ;var b1=function(ea,ee,eb,ed,ec){return{x:ea,y:ee,w:ec?eb:eb-ea,h:ec?ed:ed-ee}};var aN=function(ea,ee,eb,ed,ec){return{x:ea-eb/2,y:ee-ed/2,w:eb,h:ed}};var ds=function(){};var bR=function(){};var bB=function(){};var ca=function(){};bR.prototype=new ds;bR.prototype.constructor=bR;bB.prototype=new ds;bB.prototype.constructor=bB;ca.prototype=new ds;ca.prototype.constructor=ca;ds.prototype.a3DOnlyFunction=G;var cl={};var bP=cW.Character=function(ea){if(typeof ea==="string"&&ea.length===1){this.code=ea.charCodeAt(0)}else{if(typeof ea==="number"){this.code=ea}else{if(ea instanceof bP){this.code=ea}else{this.code=NaN}}}return cl[this.code]===t?cl[this.code]=this:cl[this.code]};bP.prototype.toString=function(){return String.fromCharCode(this.code)};bP.prototype.valueOf=function(){return this.code};var O=cW.PShape=function(ea){this.family=ea||0;this.visible=true;this.style=true;this.children=[];this.nameTable=[];this.params=[];this.name="";this.image=null;this.matrix=null;this.kind=null;this.close=null;this.width=null;this.height=null;this.parent=null};O.prototype={isVisible:function(){return this.visible},setVisible:function(ea){this.visible=ea},disableStyle:function(){this.style=false;for(var eb=0,ea=this.children.length;eb0){for(eb=0,ea=this.nameTable.length;eb, it's <"+this.element.getName()+">"}}else{if(arguments.length===2){if(typeof arguments[1]==="string"){if(arguments[1].indexOf(".svg")>-1){this.element=new cW.XMLElement(cW,arguments[1]);this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=4278190080;this.strokeWeight=1;this.strokeCap="butt";this.strokeJoin="miter";this.strokeGradient="";this.strokeGradientPaint="";this.strokeName="";this.strokeOpacity=1;this.fill=true;this.fillColor=4278190080;this.fillGradient=null;this.fillGradientPaint=null;this.fillOpacity=1}}else{if(arguments[0]){this.element=arguments[1];this.vertexCodes=arguments[0].vertexCodes.slice();this.vertices=arguments[0].vertices.slice();this.stroke=arguments[0].stroke;this.strokeColor=arguments[0].strokeColor;this.strokeWeight=arguments[0].strokeWeight;this.strokeCap=arguments[0].strokeCap;this.strokeJoin=arguments[0].strokeJoin;this.strokeGradient=arguments[0].strokeGradient;this.strokeGradientPaint=arguments[0].strokeGradientPaint;this.strokeName=arguments[0].strokeName;this.fill=arguments[0].fill;this.fillColor=arguments[0].fillColor;this.fillGradient=arguments[0].fillGradient;this.fillGradientPaint=arguments[0].fillGradientPaint;this.fillName=arguments[0].fillName;this.strokeOpacity=arguments[0].strokeOpacity;this.fillOpacity=arguments[0].fillOpacity;this.opacity=arguments[0].opacity}}}}this.name=this.element.getStringAttribute("id");var ea=this.element.getStringAttribute("display","inline");this.visible=ea!=="none";var ef=this.element.getAttribute("transform");if(ef){this.matrix=this.parseMatrix(ef)}var ec=this.element.getStringAttribute("viewBox");if(ec!==null){var ee=ec.split(" ");this.width=ee[2];this.height=ee[3]}var eb=this.element.getStringAttribute("width");var ed=this.element.getStringAttribute("height");if(eb!==null){this.width=this.parseUnitSize(eb);this.height=this.parseUnitSize(ed)}else{if(this.width===0||this.height===0){this.width=1;this.height=1;throw"The width and/or height is not readable in the tag of this file."}}this.parseColors(this.element);this.parseChildren(this.element)};cr.prototype=new O;cr.prototype.parseMatrix=function(){function ea(ec){var eb=[];ec.replace(/\((.*?)\)/,function(){return function(ed,ee){eb=ee.replace(/,+/g," ").split(/\s+/)}}());return eb}return function(ei){this.checkMatrix(2);var eb=[];ei.replace(/\s*(\w+)\((.*?)\)/g,function(el){eb.push(cW.trim(el))});if(eb.length===0){return null}for(var eg=0,ee=eb.length;eg=65&&et<=90||et>=97&&et<=122){eu=ex;ex++;if(ex=65&&et<=90||et>=97&&et<=100||et>=102&&et<=122)&&ew===false){if(et===32){if(er!==""){ev.push(parseFloat(er));er=""}ex++}else{if(et===45){if(ey[ex-1].valueOf()===101){er+=ey[ex].toString();ex++}else{if(er!==""){ev.push(parseFloat(er))}er=ey[ex].toString();ex++}}else{er+=ey[ex].toString();ex++}}if(ex===ey.length){ew=true}else{et=ey[ex].valueOf()}}}if(er!==""){ev.push(parseFloat(er));er=""}ee=ey[eu];et=ee.valueOf();if(et===77){if(ev.length>=2&&ev.length%2===0){ed=ev[0];ec=ev[1];this.parsePathMoveto(ed,ec);if(ev.length>2){for(eu=2,es=ev.length;eu=2&&ev.length%2===0){ed+=ev[0];ec+=ev[1];this.parsePathMoveto(ed,ec);if(ev.length>2){for(eu=2,es=ev.length;eu=2&&ev.length%2===0){for(eu=0,es=ev.length;eu=2&&ev.length%2===0){for(eu=0,es=ev.length;eu=6&&ev.length%6===0){for(eu=0,es=ev.length;eu=6&&ev.length%6===0){for(eu=0,es=ev.length;eu=4&&ev.length%4===0){for(eu=0,es=ev.length;eu=4&&ev.length%4===0){for(eu=0,es=ev.length;eu=4&&ev.length%4===0){for(eu=0,es=ev.length;eu=4&&ev.length%4===0){for(eu=0,es=ev.length;eu=2&&ev.length%2===0){for(eu=0,es=ev.length;eu=2&&ev.length%2===0){for(eu=0,es=ev.length;eu0){this.parsePathCode(1);this.parsePathVertex(ec+(ea-ec)*2/3,ee+(ef-ee)*2/3);this.parsePathVertex(eb+(ea-eb)*2/3,ed+(ef-ed)*2/3);this.parsePathVertex(eb,ed)}else{throw"Path must start with M/m"}};cr.prototype.parsePathCurveto=function(ed,ef,eb,ee,ea,ec){if(this.vertices.length>0){this.parsePathCode(1);this.parsePathVertex(ed,ef);this.parsePathVertex(eb,ee);this.parsePathVertex(ea,ec)}else{throw"Path must start with M/m"}};cr.prototype.parsePathLineto=function(eb,ea){if(this.vertices.length>0){this.parsePathCode(0);this.parsePathVertex(eb,ea);this.vertices[this.vertices.length-1]["moveTo"]=false}else{throw"Path must start with M/m"}};cr.prototype.parsePathMoveto=function(eb,ea){if(this.vertices.length>0){this.parsePathCode(3)}this.parsePathCode(0);this.parsePathVertex(eb,ea);this.vertices[this.vertices.length-1]["moveTo"]=true};cr.prototype.parsePathVertex=function(ea,ec){var eb=[];eb[0]=ea;eb[1]=ec;this.vertices.push(eb)};cr.prototype.parsePathCode=function(ea){this.vertexCodes.push(ea)};cr.prototype.parsePoly=function(ee){this.family=21;this.close=ee;var eb=cW.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(eb!==null){var ea=eb.split(" ");if(ea.length%2===0){for(var ed=0,ec=ea.length;ed"}};cr.prototype.parseEllipse=function(ec){this.kind=31;this.family=1;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var eb,ea;if(ec){eb=ea=this.element.getFloatAttribute("r");if(eb<0){throw"svg error: negative radius found while parsing "}}else{eb=this.element.getFloatAttribute("rx");ea=this.element.getFloatAttribute("ry");if(eb<0||ea<0){throw"svg error: negative x-axis radius or y-axis radius found while parsing "}}this.params[0]-=eb;this.params[1]-=ea;this.params[2]=eb*2;this.params[3]=ea*2};cr.prototype.parseLine=function(){this.kind=4;this.family=1;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=this.element.getFloatAttribute("y1");this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};cr.prototype.parseColors=function(ec){if(ec.hasAttribute("opacity")){this.setOpacity(ec.getAttribute("opacity"))}if(ec.hasAttribute("stroke")){this.setStroke(ec.getAttribute("stroke"))}if(ec.hasAttribute("stroke-width")){this.setStrokeWeight(ec.getAttribute("stroke-width"))}if(ec.hasAttribute("stroke-linejoin")){this.setStrokeJoin(ec.getAttribute("stroke-linejoin"))}if(ec.hasAttribute("stroke-linecap")){this.setStrokeCap(ec.getStringAttribute("stroke-linecap"))}if(ec.hasAttribute("fill")){this.setFill(ec.getStringAttribute("fill"))}if(ec.hasAttribute("style")){var ef=ec.getStringAttribute("style");var ed=ef.toString().split(";");for(var eb=0,ea=ed.length;eb=1&&arguments[0]!==null){if(ec.isVisible()){cW.pushMatrix();if(S===3){if(arguments.length===5){cW.translate(eb-ed/2,ee-ea/2);cW.scale(ed/ec.getWidth(),ea/ec.getHeight())}else{if(arguments.length===3){cW.translate(eb-ec.getWidth()/2,-ec.getHeight()/2)}else{cW.translate(-ec.getWidth()/2,-ec.getHeight()/2)}}}else{if(S===0){if(arguments.length===5){cW.translate(eb,ee);cW.scale(ed/ec.getWidth(),ea/ec.getHeight())}else{if(arguments.length===3){cW.translate(eb,ee)}}}else{if(S===1){if(arguments.length===5){ed-=eb;ea-=ee;cW.translate(eb,ee);cW.scale(ed/ec.getWidth(),ea/ec.getHeight())}else{if(arguments.length===3){cW.translate(eb,ee)}}}}}ec.draw(cW);if(arguments.length===1&&S===3||arguments.length>1){cW.popMatrix()}}}};cW.shapeMode=function(ea){S=ea};cW.loadShape=function(ea){if(arguments.length===1){if(ea.indexOf(".svg")>-1){return new cr(null,ea)}}return null};var cT=function(ee,ed,ea,eb,ec){this.fullName=ee||"";this.name=ed||"";this.namespace=ea||"";this.value=eb;this.type=ec};cT.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(ea){this.value=ea}};var b9=cW.XMLElement=function(ea,ec,ed,eb){this.attributes=[];this.children=[];this.fullName=null;this.name=null;this.namespace="";this.content=null;this.parent=null;this.lineNr="";this.systemID="";this.type="ELEMENT";if(ea){if(typeof ea==="string"){if(ec===t&&ea.indexOf("<")>-1){this.parse(ea)}else{this.fullName=ea;this.namespace=ec;this.systemId=ed;this.lineNr=eb}}else{this.parse(ec)}}};b9.prototype={parse:function(ea){var ec;try{var ee=ea.substring(ea.length-4);if(ee===".xml"||ee===".svg"){ea=w(ea)}ec=(new DOMParser).parseFromString(ea,"text/xml");var eb=ec.documentElement;if(eb){this.parseChildrenRecursive(null,eb)}else{throw"Error loading document"}return this}catch(ed){throw ed}},parseChildrenRecursive:function(ei,eg){var ef,eb,eh,ee,ed,ea;if(!ei){this.fullName=eg.localName;this.name=eg.nodeName;ef=this}else{ef=new b9(eg.nodeName);ef.parent=ei}if(eg.nodeType===3&&eg.textContent!==""){return this.createPCDataElement(eg.textContent)}if(eg.nodeType===4){return this.createCDataElement(eg.textContent)}if(eg.attributes){for(ee=0,ed=eg.attributes.length;ee":">","'":"'",'"':"""},ea;for(ea in eb){if(!Object.hasOwnProperty(eb,ea)){ec=ec.replace(new RegExp(ea,"g"),eb[ea])}}ed.cdata=ec;return ed},hasAttribute:function(){if(arguments.length===1){return this.getAttribute(arguments[0])!==null}if(arguments.length===2){return this.getAttribute(arguments[0],arguments[1])!==null}},equals:function(ef){if(!(ef instanceof b9)){return false}var ec,eb;if(this.fullName!==ef.fullName){return false}if(this.attributes.length!==ef.getAttributeCount()){return false}if(this.attributes.length!==ef.attributes.length){return false}var ej,eh,ea,eg,ei;for(ec=0,eb=this.attributes.length;ec0){var ee,ed;for(ec=0,eb=this.children.length;ec0},addChild:function(ea){if(ea!==null){ea.parent=this;this.children.push(ea)}},insertChild:function(ec,ea){if(ec){if(ec.getLocalName()===null&&!this.hasChildren()){var eb=this.children[this.children.length-1];if(eb.getLocalName()===null){eb.setContent(eb.getContent()+ec.getContent());return}}ec.parent=this;this.children.splice(ea,0,ec)}},getChild:function(eb){if(typeof eb==="number"){return this.children[eb]}if(eb.indexOf("/")!==-1){return this.getChildRecursive(eb.split("/"),0)}var ea,ee;for(var ed=0,ec=this.getChildCount();edea){this.children.splice(ea,1)}},findAttribute:function(eb,ed){this.namespace=ed||"";for(var ec=0,ea=this.attributes.length;ec0){F.debug("Tried to set content for XMLElement with children")}this.content=ea},setName:function(){if(arguments.length===1){this.name=arguments[0];this.fullName=arguments[0];this.namespace=null}else{var ea=arguments[0].indexOf(":");if(arguments[1]===null||ea<0){this.name=arguments[0]}else{this.name=arguments[0].substring(ea+1)}this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if(this.type==="TEXT"){return this.content}if(this.type==="CDATA"){return this.cdata}var ec=this.fullName;var ed="<"+ec;var eb,ee;for(eb=0;eb"}else{ed+=">"+this.content+""}}else{ed+=">";for(ee=0;ee"}return ed}};b9.parse=function(eb){var ea=new b9;ea.parse(eb);return ea};var dg=cW.XML=cW.XMLElement;cW.loadXML=function(ea){return new dg(cW,ea)};var cm=function(ed){var ea=0;for(var eb=0;eb-2147483648){var eb=this.elements[0];var eg=this.elements[1];var ee=this.elements[2];var ed=this.elements[3];var ec=this.elements[4];var ea=this.elements[5];this.elements[0]=ec/ef;this.elements[3]=-ed/ef;this.elements[1]=-eg/ef;this.elements[4]=eb/ef;this.elements[2]=(eg*ea-ec*ee)/ef;this.elements[5]=(ed*ee-eb*ea)/ef;return true}return false},scale:function(eb,ea){if(eb&&!ea){ea=eb}if(eb&&ea){this.elements[0]*=eb;this.elements[1]*=ea;this.elements[3]*=eb;this.elements[4]*=ea}},invScale:function(eb,ea){if(eb&&!ea){ea=eb}this.scale(1/eb,1/ea)},apply:function(){var ec;if(arguments.length===1&&arguments[0] instanceof aX){ec=arguments[0].array()}else{if(arguments.length===6){ec=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ec=arguments[0]}}}var ea=[0,0,this.elements[2],0,0,this.elements[5]];var ed=0;for(var ee=0;ee<2;ee++){for(var eb=0;eb<3;eb++,ed++){ea[ed]+=this.elements[ee*3+0]*ec[eb+0]+this.elements[ee*3+1]*ec[eb+3]}}this.elements=ea.slice()},preApply:function(){var eb;if(arguments.length===1&&arguments[0] instanceof aX){eb=arguments[0].array()}else{if(arguments.length===6){eb=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){eb=arguments[0]}}}var ea=[0,0,eb[2],0,0,eb[5]];ea[2]=eb[2]+this.elements[2]*eb[0]+this.elements[5]*eb[1];ea[5]=eb[5]+this.elements[2]*eb[3]+this.elements[5]*eb[4];ea[0]=this.elements[0]*eb[0]+this.elements[3]*eb[1];ea[3]=this.elements[0]*eb[3]+this.elements[3]*eb[4];ea[1]=this.elements[1]*eb[0]+this.elements[4]*eb[1];ea[4]=this.elements[1]*eb[3]+this.elements[4]*eb[4];this.elements=ea.slice()},rotate:function(ec){var ee=q.cos(ec);var ea=q.sin(ec);var ed=this.elements[0];var eb=this.elements[1];this.elements[0]=ee*ed+ea*eb;this.elements[1]=-ea*ed+ee*eb;ed=this.elements[3];eb=this.elements[4];this.elements[3]=ee*ed+ea*eb;this.elements[4]=-ea*ed+ee*eb},rotateZ:function(ea){this.rotate(ea)},invRotateZ:function(ea){this.rotateZ(ea-q.PI)},print:function(){var eb=cm(this.elements);var ea=""+cW.nfs(this.elements[0],eb,4)+" "+cW.nfs(this.elements[1],eb,4)+" "+cW.nfs(this.elements[2],eb,4)+"\n"+cW.nfs(this.elements[3],eb,4)+" "+cW.nfs(this.elements[4],eb,4)+" "+cW.nfs(this.elements[5],eb,4)+"\n\n";cW.println(ea)}};var aP=cW.PMatrix3D=function(){this.reset()};aP.prototype={set:function(){if(arguments.length===16){this.elements=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof aP){this.elements=arguments[0].array()}else{if(arguments.length===1&&arguments[0] instanceof Array){this.elements=arguments[0].slice()}}}},get:function(){var ea=new aP;ea.set(this.elements);return ea},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function aE(){return this.elements.slice()},translate:function(eb,ea,ec){if(ec===t){ec=0}this.elements[3]+=eb*this.elements[0]+ea*this.elements[1]+ec*this.elements[2];this.elements[7]+=eb*this.elements[4]+ea*this.elements[5]+ec*this.elements[6];this.elements[11]+=eb*this.elements[8]+ea*this.elements[9]+ec*this.elements[10];this.elements[15]+=eb*this.elements[12]+ea*this.elements[13]+ec*this.elements[14]},transpose:function(){var ea=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=ea;ea=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=ea;ea=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=ea;ea=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=ea;ea=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=ea;ea=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=ea},mult:function(ec,ed){var ea,ef,ee,eb;if(ec instanceof A){ea=ec.x;ef=ec.y;ee=ec.z;eb=1;if(!ed){ed=new A}}else{if(ec instanceof Array){ea=ec[0];ef=ec[1];ee=ec[2];eb=ec[3]||1;if(!ed||ed.length!==3&&ed.length!==4){ed=[0,0,0]}}}if(ed instanceof Array){if(ed.length===3){ed[0]=this.elements[0]*ea+this.elements[1]*ef+this.elements[2]*ee+this.elements[3];ed[1]=this.elements[4]*ea+this.elements[5]*ef+this.elements[6]*ee+this.elements[7];ed[2]=this.elements[8]*ea+this.elements[9]*ef+this.elements[10]*ee+this.elements[11]}else{if(ed.length===4){ed[0]=this.elements[0]*ea+this.elements[1]*ef+this.elements[2]*ee+this.elements[3]*eb;ed[1]=this.elements[4]*ea+this.elements[5]*ef+this.elements[6]*ee+this.elements[7]*eb;ed[2]=this.elements[8]*ea+this.elements[9]*ef+this.elements[10]*ee+this.elements[11]*eb;ed[3]=this.elements[12]*ea+this.elements[13]*ef+this.elements[14]*ee+this.elements[15]*eb}}}if(ed instanceof A){ed.x=this.elements[0]*ea+this.elements[1]*ef+this.elements[2]*ee+this.elements[3];ed.y=this.elements[4]*ea+this.elements[5]*ef+this.elements[6]*ee+this.elements[7];ed.z=this.elements[8]*ea+this.elements[9]*ef+this.elements[10]*ee+this.elements[11]}return ed},preApply:function(){var ec;if(arguments.length===1&&arguments[0] instanceof aP){ec=arguments[0].array()}else{if(arguments.length===16){ec=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ec=arguments[0]}}}var ea=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var ed=0;for(var ee=0;ee<4;ee++){for(var eb=0;eb<4;eb++,ed++){ea[ed]+=this.elements[eb+0]*ec[ee*4+0]+this.elements[eb+4]*ec[ee*4+1]+this.elements[eb+8]*ec[ee*4+2]+this.elements[eb+12]*ec[ee*4+3]}}this.elements=ea.slice()},apply:function(){var ec;if(arguments.length===1&&arguments[0] instanceof aP){ec=arguments[0].array()}else{if(arguments.length===16){ec=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ec=arguments[0]}}}var ea=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var ed=0;for(var ee=0;ee<4;ee++){for(var eb=0;eb<4;eb++,ed++){ea[ed]+=this.elements[ee*4+0]*ec[eb+0]+this.elements[ee*4+1]*ec[eb+4]+this.elements[ee*4+2]*ec[eb+8]+this.elements[ee*4+3]*ec[eb+12]}}this.elements=ea.slice()},rotate:function(ee,ea,eg,ed){if(!eg){this.rotateZ(ee)}else{var ef=cW.cos(ee);var ec=cW.sin(ee);var eb=1-ef;this.apply(eb*ea*ea+ef,eb*ea*eg-ec*ed,eb*ea*ed+ec*eg,0,eb*ea*eg+ec*ed,eb*eg*eg+ef,eb*eg*ed-ec*ea,0,eb*ea*ed-ec*eg,eb*eg*ed+ec*ea,eb*ed*ed+ef,0,0,0,0,1)}},invApply:function(){if(ab===t){ab=new aP}var ea=arguments;ab.set(ea[0],ea[1],ea[2],ea[3],ea[4],ea[5],ea[6],ea[7],ea[8],ea[9],ea[10],ea[11],ea[12],ea[13],ea[14],ea[15]);if(!ab.invert()){return false}this.preApply(ab);return true},rotateX:function(eb){var ec=cW.cos(eb);var ea=cW.sin(eb);this.apply([1,0,0,0,0,ec,-ea,0,0,ea,ec,0,0,0,0,1])},rotateY:function(eb){var ec=cW.cos(eb);var ea=cW.sin(eb);this.apply([ec,0,ea,0,0,1,0,0,-ea,0,ec,0,0,0,0,1])},rotateZ:function(eb){var ec=q.cos(eb);var ea=q.sin(eb);this.apply([ec,-ea,0,0,ea,ec,0,0,0,0,1,0,0,0,0,1])},scale:function(ec,eb,ea){if(ec&&!eb&&!ea){eb=ea=ec}else{if(ec&&eb&&!ea){ea=1}}if(ec&&eb&&ea){this.elements[0]*=ec;this.elements[1]*=eb;this.elements[2]*=ea;this.elements[4]*=ec;this.elements[5]*=eb;this.elements[6]*=ea;this.elements[8]*=ec;this.elements[9]*=eb;this.elements[10]*=ea;this.elements[12]*=ec;this.elements[13]*=eb;this.elements[14]*=ea}},skewX:function(eb){var ea=q.tan(eb);this.apply(1,ea,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(eb){var ea=q.tan(eb);this.apply(1,0,0,0,ea,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(eb){var ea=q.tan(eb);this.apply(1,ea,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(eb){var ea=q.tan(eb);this.apply(1,0,0,0,ea,1,0,0,0,0,1,0,0,0,0,1)},multX:function(ea,ed,ec,eb){if(!ec){return this.elements[0]*ea+this.elements[1]*ed+this.elements[3]}if(!eb){return this.elements[0]*ea+this.elements[1]*ed+this.elements[2]*ec+this.elements[3]}return this.elements[0]*ea+this.elements[1]*ed+this.elements[2]*ec+this.elements[3]*eb},multY:function(ea,ed,ec,eb){if(!ec){return this.elements[4]*ea+this.elements[5]*ed+this.elements[7]}if(!eb){return this.elements[4]*ea+this.elements[5]*ed+this.elements[6]*ec+this.elements[7]}return this.elements[4]*ea+this.elements[5]*ed+this.elements[6]*ec+this.elements[7]*eb},multZ:function(ea,ed,ec,eb){if(!eb){return this.elements[8]*ea+this.elements[9]*ed+this.elements[10]*ec+this.elements[11]}return this.elements[8]*ea+this.elements[9]*ed+this.elements[10]*ec+this.elements[11]*eb},multW:function(ea,ed,ec,eb){if(!eb){return this.elements[12]*ea+this.elements[13]*ed+this.elements[14]*ec+this.elements[15]}return this.elements[12]*ea+this.elements[13]*ed+this.elements[14]*ec+this.elements[15]*eb},invert:function(){var ej=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4];var ei=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4];var eh=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4];var eg=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5];var ef=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5];var ee=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6];var ed=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12];var ec=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12];var eb=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12];var eo=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13];var em=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13];var el=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14];var en=ej*el-ei*em+eh*eo+eg*eb-ef*ec+ee*ed;if(q.abs(en)<=1e-9){return false}var ek=[];ek[0]=+this.elements[5]*el-this.elements[6]*em+this.elements[7]*eo;ek[4]=-this.elements[4]*el+this.elements[6]*eb-this.elements[7]*ec;ek[8]=+this.elements[4]*em-this.elements[5]*eb+this.elements[7]*ed;ek[12]=-this.elements[4]*eo+this.elements[5]*ec-this.elements[6]*ed;ek[1]=-this.elements[1]*el+this.elements[2]*em-this.elements[3]*eo;ek[5]=+this.elements[0]*el-this.elements[2]*eb+this.elements[3]*ec;ek[9]=-this.elements[0]*em+this.elements[1]*eb-this.elements[3]*ed;ek[13]=+this.elements[0]*eo-this.elements[1]*ec+this.elements[2]*ed;ek[2]=+this.elements[13]*ee-this.elements[14]*ef+this.elements[15]*eg;ek[6]=-this.elements[12]*ee+this.elements[14]*eh-this.elements[15]*ei;ek[10]=+this.elements[12]*ef-this.elements[13]*eh+this.elements[15]*ej;ek[14]=-this.elements[12]*eg+this.elements[13]*ei-this.elements[14]*ej;ek[3]=-this.elements[9]*ee+this.elements[10]*ef-this.elements[11]*eg;ek[7]=+this.elements[8]*ee-this.elements[10]*eh+this.elements[11]*ei;ek[11]=-this.elements[8]*ef+this.elements[9]*eh-this.elements[11]*ej;ek[15]=+this.elements[8]*eg-this.elements[9]*ei+this.elements[10]*ej;var ea=1/en;ek[0]*=ea;ek[1]*=ea;ek[2]*=ea;ek[3]*=ea;ek[4]*=ea;ek[5]*=ea;ek[6]*=ea;ek[7]*=ea;ek[8]*=ea;ek[9]*=ea;ek[10]*=ea;ek[11]*=ea;ek[12]*=ea;ek[13]*=ea;ek[14]*=ea;ek[15]*=ea;this.elements=ek.slice();return true},toString:function(){var eb="";for(var ea=0;ea<15;ea++){eb+=this.elements[ea]+", "}eb+=this.elements[15];return eb},print:function(){var eb=cm(this.elements);var ea=""+cW.nfs(this.elements[0],eb,4)+" "+cW.nfs(this.elements[1],eb,4)+" "+cW.nfs(this.elements[2],eb,4)+" "+cW.nfs(this.elements[3],eb,4)+"\n"+cW.nfs(this.elements[4],eb,4)+" "+cW.nfs(this.elements[5],eb,4)+" "+cW.nfs(this.elements[6],eb,4)+" "+cW.nfs(this.elements[7],eb,4)+"\n"+cW.nfs(this.elements[8],eb,4)+" "+cW.nfs(this.elements[9],eb,4)+" "+cW.nfs(this.elements[10],eb,4)+" "+cW.nfs(this.elements[11],eb,4)+"\n"+cW.nfs(this.elements[12],eb,4)+" "+cW.nfs(this.elements[13],eb,4)+" "+cW.nfs(this.elements[14],eb,4)+" "+cW.nfs(this.elements[15],eb,4)+"\n\n";cW.println(ea)},invTranslate:function(eb,ea,ec){this.preApply(1,0,0,-eb,0,1,0,-ea,0,0,1,-ec,0,0,0,1)},invRotateX:function(eb){var ec=q.cos(-eb);var ea=q.sin(-eb);this.preApply([1,0,0,0,0,ec,-ea,0,0,ea,ec,0,0,0,0,1])},invRotateY:function(eb){var ec=q.cos(-eb);var ea=q.sin(-eb);this.preApply([ec,0,ea,0,0,1,0,0,-ea,0,ec,0,0,0,0,1])},invRotateZ:function(eb){var ec=q.cos(-eb);var ea=q.sin(-eb);this.preApply([ec,-ea,0,0,ea,ec,0,0,0,0,1,0,0,0,0,1])},invScale:function(ea,ec,eb){this.preApply([1/ea,0,0,0,0,1/ec,0,0,0,0,1/eb,0,0,0,0,1])}};var V=cW.PMatrixStack=function(){this.matrixStack=[]};V.prototype.load=function(){var ea=dY.$newPMatrix();if(arguments.length===1){ea.set(arguments[0])}else{ea.set(arguments)}this.matrixStack.push(ea)};bR.prototype.$newPMatrix=function(){return new aX};bB.prototype.$newPMatrix=function(){return new aP};V.prototype.push=function(){this.matrixStack.push(this.peek())};V.prototype.pop=function(){return this.matrixStack.pop()};V.prototype.peek=function(){var ea=dY.$newPMatrix();ea.set(this.matrixStack[this.matrixStack.length-1]);return ea};V.prototype.mult=function(ea){this.matrixStack[this.matrixStack.length-1].apply(ea)};cW.split=function(eb,ea){return eb.split(ea)};cW.splitTokens=function(eg,ef){if(ef===t){return eg.split(/\s+/g)}var ed=ef.split(/()/g),eb="",ea=eg.length,ec,eh,ee=[];for(ec=0;ec-1){if(eb!==""){ee.push(eb)}eb=""}else{eb+=eh}}if(eb!==""){ee.push(eb)}return ee};cW.append=function(eb,ea){eb[eb.length]=ea;return eb};cW.concat=function(eb,ea){return eb.concat(ea)};cW.sort=function(ef,ed){var eb=[];if(ef.length>0){var ee=ed>0?ed:ef.length;for(var ec=0;ec0){for(var ea=eb.length;ea>8)};cW.peg=function(ea){return ea<0?0:ea>255?255:ea};cW.modes=function(){var ef=4278190080,ec=16711680,eb=65280,ee=255,ed=q.min,ea=q.max;function eg(el,eo,ek,et,ev,eu,em,eq,ep,ei,ej){var es=ed(((el&4278190080)>>>24)+eo,255)<<24;var eh=ek+((ep-ek)*eo>>8);eh=(eh<0?0:eh>255?255:eh)<<16;var en=et+((ei-et)*eo>>8);en=(en<0?0:en>255?255:en)<<8;var er=ev+((ej-ev)*eo>>8);er=er<0?0:er>255?255:er;return es|eh|en|er}return{replace:function(ei,eh){return eh},blend:function(ej,ei){var el=(ei&ef)>>>24,eh=ej&ec,en=ej&eb,ep=ej&ee,eo=ei&ec,ek=ei&eb,em=eiⅇreturn ed(((ej&ef)>>>24)+el,255)<<24|eh+((eo-eh)*el>>8)&ec|en+((ek-en)*el>>8)&eb|ep+((em-ep)*el>>8)&ee},add:function(ei,eh){var ej=(eh&ef)>>>24;return ed(((ei&ef)>>>24)+ej,255)<<24|ed((ei&ec)+((eh&ec)>>8)*ej,ec)&ec|ed((ei&eb)+((eh&eb)>>8)*ej,eb)&eb|ed((ei&ee)+((eh&ee)*ej>>8),ee)},subtract:function(ei,eh){var ej=(eh&ef)>>>24;return ed(((ei&ef)>>>24)+ej,255)<<24|ea((ei&ec)-((eh&ec)>>8)*ej,eb)&ec|ea((ei&eb)-((eh&eb)>>8)*ej,ee)&eb|ea((ei&ee)-((eh&ee)*ej>>8),0)},lightest:function(ei,eh){var ej=(eh&ef)>>>24;return ed(((ei&ef)>>>24)+ej,255)<<24|ea(ei&ec,((eh&ec)>>8)*ej)&ec|ea(ei&eb,((eh&eb)>>8)*ej)&eb|ea(ei&ee,(eh&ee)*ej>>8)},darkest:function(ej,ei){var el=(ei&ef)>>>24,eh=ej&ec,en=ej&eb,ep=ej&ee,eo=ed(ej&ec,((ei&ec)>>8)*el),ek=ed(ej&eb,((ei&eb)>>8)*el),em=ed(ej&ee,(ei&ee)*el>>8);return ed(((ej&ef)>>>24)+el,255)<<24|eh+((eo-eh)*el>>8)&ec|en+((ek-en)*el>>8)&eb|ep+((em-ep)*el>>8)&ee},difference:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=ej>er?ej-er:er-ej,eh=eq>em?eq-em:em-eq,ei=es>ep?es-ep:ep-es;return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},exclusion:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=ej+er-(ej*er>>7),eh=eq+em-(eq*em>>7),ei=es+ep-(es*ep>>7);return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},multiply:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=ej*er>>8,eh=eq*em>>8,ei=es*ep>>8;return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},screen:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=255-((255-ej)*(255-er)>>8),eh=255-((255-eq)*(255-em)>>8),ei=255-((255-es)*(255-ep)>>8);return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},hard_light:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=er<128?ej*er>>7:255-((255-ej)*(255-er)>>7),eh=em<128?eq*em>>7:255-((255-eq)*(255-em)>>7),ei=ep<128?es*ep>>7:255-((255-es)*(255-ep)>>7);return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},soft_light:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=(ej*er>>7)+(ej*ej>>8)-(ej*ej*er>>15),eh=(eq*em>>7)+(eq*eq>>8)-(eq*eq*em>>15),ei=(es*ep>>7)+(es*es>>8)-(es*es*ep>>15);return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},overlay:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ek&ee,eo=ej<128?ej*er>>7:255-((255-ej)*(255-er)>>7),eh=eq<128?eq*em>>7:255-((255-eq)*(255-em)>>7),ei=es<128?es*ep>>7:255-((255-es)*(255-ep)>>7);return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},dodge:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ekⅇvar eo=255;if(er!==255){eo=(ej<<8)/(255-er);eo=eo<0?0:eo>255?255:eo}var eh=255;if(em!==255){eh=(eq<<8)/(255-em);eh=eh<0?0:eh>255?255:eh}var ei=255;if(ep!==255){ei=(es<<8)/(255-ep);ei=ei<0?0:ei>255?255:ei}return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)},burn:function(el,ek){var en=(ek&ef)>>>24,ej=(el&ec)>>16,eq=(el&eb)>>8,es=el&ee,er=(ek&ec)>>16,em=(ek&eb)>>8,ep=ekⅇvar eo=0;if(er!==0){eo=(255-ej<<8)/er;eo=255-(eo<0?0:eo>255?255:eo)}var eh=0;if(em!==0){eh=(255-eq<<8)/em;eh=255-(eh<0?0:eh>255?255:eh)}var ei=0;if(ep!==0){ei=(255-es<<8)/ep;ei=255-(ei<0?0:ei>255?255:ei)}return eg(el,en,ej,eq,es,er,em,ep,eo,eh,ei)}}}();function dH(ef,ee,ec,eb){var ea,ed,eh,ei;if(cY===3){var eg=cW.color.toRGB(ef,ee,ec);ea=eg[0];ed=eg[1];eh=eg[2]}else{ea=q.round(255*(ef/bJ));ed=q.round(255*(ee/bI));eh=q.round(255*(ec/bG))}ei=q.round(255*(eb/bU));ea=ea<0?0:ea;ed=ed<0?0:ed;eh=eh<0?0:eh;ei=ei<0?0:ei;ea=ea>255?255:ea;ed=ed>255?255:ed;eh=eh>255?255:eh;ei=ei>255?255:ei;return ei<<24&4278190080|ea<<16&16711680|ed<<8&65280|eh&255}function dK(ea,ec){var eb;if(ea&4278190080){eb=q.round(255*(ec/bU));eb=eb>255?255:eb;eb=eb<0?0:eb;return ea-(ea&4278190080)+(eb<<24&4278190080)}if(cY===1){return dH(ea,ea,ea,ec)}if(cY===3){return dH(0,0,ea/bJ*bG,ec)}}function dM(ea){if(ea<=bJ&&ea>=0){if(cY===1){return dH(ea,ea,ea,bU)}if(cY===3){return dH(0,0,ea/bJ*bG,bU)}}if(ea){if(ea>2147483647){ea-=4294967296}return ea}}cW.color=function(ea,ed,ec,eb){if(ea!==t&&ed!==t&&ec!==t&&eb!==t){return dH(ea,ed,ec,eb)}if(ea!==t&&ed!==t&&ec!==t){return dH(ea,ed,ec,bU)}if(ea!==t&&ed!==t){return dK(ea,ed)}if(typeof ea==="number"){return dM(ea)}return dH(bJ,bI,bG,bU)};cW.color.toString=function(ea){return"rgba("+((ea>>16)&255)+","+((ea>>8)&255)+","+(ea&255)+","+((ea>>24)&255)/255+")"};cW.color.toInt=function(ed,ec,ea,eb){return eb<<24&4278190080|ed<<16&16711680|ec<<8&65280|ea&255};cW.color.toArray=function(ea){return[(ea>>16)&255,(ea>>8)&255,ea&255,(ea>>24)&255]};cW.color.toGLArray=function(ea){return[((ea&16711680)>>>16)/255,((ea>>8)&255)/255,(ea&255)/255,((ea>>24)&255)/255]};cW.color.toRGB=function(ec,ei,ef){ec=ec>bJ?bJ:ec;ei=ei>bI?bI:ei;ef=ef>bG?bG:ef;ec=ec/bJ*360;ei=ei/bI*100;ef=ef/bG*100;var eh=q.round(ef/100*255);if(ei===0){return[eh,eh,eh]}var ed=ec%360;var ee=ed%60;var eb=q.round(ef*(100-ei)/10000*255);var ea=q.round(ef*(6000-ei*ee)/600000*255);var eg=q.round(ef*(6000-ei*(60-ee))/600000*255);switch(q.floor(ed/60)){case 0:return[eh,eg,eb];case 1:return[ea,eh,eb];case 2:return[eb,eh,eg];case 3:return[eb,ea,eh];case 4:return[eg,eb,eh];case 5:return[eh,eb,ea]}};function aS(eh){var eg,ef,eb;eg=((eh>>16)&255)/255;ef=((eh>>8)&255)/255;eb=(eh&255)/255;var ea=cW.max(cW.max(eg,ef),eb),ed=cW.min(cW.min(eg,ef),eb),ec,ee;if(ed===ea){return[0,0,ea*bG]}ee=(ea-ed)/ea;if(eg===ea){ec=(ef-eb)/(ea-ed)}else{if(ef===ea){ec=2+(eb-eg)/(ea-ed)}else{ec=4+(eg-ef)/(ea-ed)}}ec/=6;if(ec<0){ec+=1}else{if(ec>1){ec-=1}}return[ec*bJ,ee*bI,ea*bG]}cW.brightness=function(ea){return aS(ea)[2]};cW.saturation=function(ea){return aS(ea)[1]};cW.hue=function(ea){return aS(ea)[0]};cW.red=function(ea){return((ea>>16)&255)/255*bJ};cW.green=function(ea){return((ea&65280)>>>8)/255*bI};cW.blue=function(ea){return(ea&255)/255*bG};cW.alpha=function(ea){return((ea>>24)&255)/255*bU};cW.lerpColor=function(em,el,ef){var ek,eq,er,es,eo,ea,eg,eu,en,ev,ee,et;var ei,eh,eb,ep,ej;var ed=cW.color(em);var ec=cW.color(el);if(cY===3){ei=aS(ed);eu=((ed>>24)&255)/bU;eh=aS(ec);et=((ec&4278190080)>>>24)/bU;ep=cW.lerp(ei[0],eh[0],ef);ej=cW.lerp(ei[1],eh[1],ef);er=cW.lerp(ei[2],eh[2],ef);eb=cW.color.toRGB(ep,ej,er);es=cW.lerp(eu,et,ef)*bU;return es<<24&4278190080|(eb[0]&255)<<16|(eb[1]&255)<<8|eb[2]&255}eo=(ed>>16)&255;ea=(ed>>8)&255;eg=ed&255;eu=((ed>>24)&255)/bU;en=(ec&16711680)>>>16;ev=(ec>>8)&255;ee=ec&255;et=((ec>>24)&255)/bU;ek=cW.lerp(eo,en,ef)|0;eq=cW.lerp(ea,ev,ef)|0;er=cW.lerp(eg,ee,ef)|0;es=cW.lerp(eu,et,ef)*bU;return es<<24&4278190080|ek<<16&16711680|eq<<8&65280|er&255};cW.colorMode=function(){cY=arguments[0];if(arguments.length>1){bJ=arguments[1];bI=arguments[2]||arguments[1];bG=arguments[3]||arguments[1];bU=arguments[4]||arguments[1]}};cW.blendColor=function(eb,ea,ec){if(ec===0){return cW.modes.replace(eb,ea)}else{if(ec===1){return cW.modes.blend(eb,ea)}else{if(ec===2){return cW.modes.add(eb,ea)}else{if(ec===4){return cW.modes.subtract(eb,ea)}else{if(ec===8){return cW.modes.lightest(eb,ea)}else{if(ec===16){return cW.modes.darkest(eb,ea)}else{if(ec===32){return cW.modes.difference(eb,ea)}else{if(ec===64){return cW.modes.exclusion(eb,ea)}else{if(ec===128){return cW.modes.multiply(eb,ea)}else{if(ec===256){return cW.modes.screen(eb,ea)}else{if(ec===1024){return cW.modes.hard_light(eb,ea)}else{if(ec===2048){return cW.modes.soft_light(eb,ea)}else{if(ec===512){return cW.modes.overlay(eb,ea)}else{if(ec===4096){return cW.modes.dodge(eb,ea)}else{if(ec===8192){return cW.modes.burn(eb,ea)}}}}}}}}}}}}}}}};function aD(){d8.save()}function cP(){d8.restore();b3=true;aq=true}cW.printMatrix=function(){dJ.print()};bR.prototype.translate=function(ea,eb){dJ.translate(ea,eb);aT.invTranslate(ea,eb);d8.translate(ea,eb)};bB.prototype.translate=function(ea,ec,eb){dJ.translate(ea,ec,eb);aT.invTranslate(ea,ec,eb)};bR.prototype.scale=function(ea,eb){dJ.scale(ea,eb);aT.invScale(ea,eb);d8.scale(ea,eb||ea)};bB.prototype.scale=function(ea,ec,eb){dJ.scale(ea,ec,eb);aT.invScale(ea,ec,eb)};bR.prototype.transform=function(eb){var ea=eb.array();d8.transform(ea[0],ea[3],ea[1],ea[4],ea[2],ea[5])};bB.prototype.transformm=function(ea){throw"p.transform is currently not supported in 3D mode"};bR.prototype.pushMatrix=function(){am.load(dJ);da.load(aT);aD()};bB.prototype.pushMatrix=function(){am.load(dJ);da.load(aT)};bR.prototype.popMatrix=function(){dJ.set(am.pop());aT.set(da.pop());cP()};bB.prototype.popMatrix=function(){dJ.set(am.pop());aT.set(da.pop())};bR.prototype.resetMatrix=function(){dJ.reset();aT.reset();d8.setTransform(1,0,0,1,0,0)};bB.prototype.resetMatrix=function(){dJ.reset();aT.reset()};ds.prototype.applyMatrix=function(){var ea=arguments;dJ.apply(ea[0],ea[1],ea[2],ea[3],ea[4],ea[5],ea[6],ea[7],ea[8],ea[9],ea[10],ea[11],ea[12],ea[13],ea[14],ea[15]);aT.invApply(ea[0],ea[1],ea[2],ea[3],ea[4],ea[5],ea[6],ea[7],ea[8],ea[9],ea[10],ea[11],ea[12],ea[13],ea[14],ea[15])};bR.prototype.applyMatrix=function(){var ea=arguments;for(var eb=ea.length;eb<16;eb++){ea[eb]=0}ea[10]=ea[15]=1;ds.prototype.applyMatrix.apply(this,ea)};cW.rotateX=function(ea){dJ.rotateX(ea);aT.invRotateX(ea)};bR.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead."};bB.prototype.rotateZ=function(ea){dJ.rotateZ(ea);aT.invRotateZ(ea)};cW.rotateY=function(ea){dJ.rotateY(ea);aT.invRotateY(ea)};bR.prototype.rotate=function(ea){dJ.rotateZ(ea);aT.invRotateZ(ea);d8.rotate(ea)};bB.prototype.rotate=function(ea){cW.rotateZ(ea)};bR.prototype.shearX=function(ea){dJ.shearX(ea);d8.transform(1,0,ea,1,0,0)};bB.prototype.shearX=function(ea){dJ.shearX(ea)};bR.prototype.shearY=function(ea){dJ.shearY(ea);d8.transform(1,ea,0,1,0,0)};bB.prototype.shearY=function(ea){dJ.shearY(ea)};cW.pushStyle=function(){aD();cW.pushMatrix();var ea={doFill:aH,currentFillColor:a1,doStroke:ce,currentStrokeColor:cv,curTint:bf,curRectMode:bK,curColorMode:cY,colorModeX:bJ,colorModeZ:bG,colorModeY:bI,colorModeA:bU,curTextFont:W,horizontalTextAlignment:N,verticalTextAlignment:c1,textMode:cI,curFontName:Y,curTextSize:d0,curTextAscent:a3,curTextDescent:dA,curTextLeading:d7};bm.push(ea)};cW.popStyle=function(){var ea=bm.pop();if(ea){cP();cW.popMatrix();aH=ea.doFill;a1=ea.currentFillColor;ce=ea.doStroke;cv=ea.currentStrokeColor;bf=ea.curTint;bK=ea.curRectMode;cY=ea.curColorMode;bJ=ea.colorModeX;bG=ea.colorModeZ;bI=ea.colorModeY;bU=ea.colorModeA;W=ea.curTextFont;Y=ea.curFontName;d0=ea.curTextSize;N=ea.horizontalTextAlignment;c1=ea.verticalTextAlignment;cI=ea.textMode;a3=ea.curTextAscent;dA=ea.curTextDescent;d7=ea.curTextLeading}else{throw"Too many popStyle() without enough pushStyle()"}};cW.year=function(){return(new Date).getFullYear()};cW.month=function(){return(new Date).getMonth()+1};cW.day=function(){return(new Date).getDate()};cW.hour=function(){return(new Date).getHours()};cW.minute=function(){return(new Date).getMinutes()};cW.second=function(){return(new Date).getSeconds()};cW.millis=function(){return Date.now()-dq};function ct(){var ea=(Date.now()-dt)/1000;P++;var eb=P/ea;if(ea>0.5){dt=Date.now();P=0;cW.__frameRate=eb}cW.frameCount++}bR.prototype.redraw=function(){ct();d8.lineWidth=dW;var ea=cW.pmouseX,eb=cW.pmouseY;cW.pmouseX=dN;cW.pmouseY=d5;aD();cW.draw();cP();dN=cW.mouseX;d5=cW.mouseY;cW.pmouseX=ea;cW.pmouseY=eb};bB.prototype.redraw=function(){ct();var ea=cW.pmouseX,eb=cW.pmouseY;cW.pmouseX=dN;cW.pmouseY=d5;d8.clear(d8.DEPTH_BUFFER_BIT);dC={attributes:{},locations:{}};cW.noLights();cW.lightFalloff(1,0,0);cW.shininess(1);cW.ambient(255,255,255);cW.specular(0,0,0);cW.emissive(0,0,0);cW.camera();cW.draw();dN=cW.mouseX;d5=cW.mouseY;cW.pmouseX=ea;cW.pmouseY=eb};cW.noLoop=function(){aC=false;ax=false;clearInterval(b4);cQ.onPause()};cW.loop=function(){if(ax){return}dt=Date.now();P=0;b4=D.setInterval(function(){try{cQ.onFrameStart();cW.redraw();cQ.onFrameEnd()}catch(ea){D.clearInterval(b4);throw ea}},az);aC=true;ax=true;cQ.onLoop()};cW.frameRate=function(ea){dU=ea;az=1000/dU;if(aC){cW.noLoop();cW.loop()}};var au=[];function bO(ec,eb,ea){if(ec.addEventListener){ec.addEventListener(eb,ea,false)}else{ec.attachEvent("on"+eb,ea)}au.push({elem:ec,type:eb,fn:ea})}function de(ea){var ed=ea.elem,ec=ea.type,eb=ea.fn;if(ed.removeEventListener){ed.removeEventListener(ec,eb,false)}else{if(ed.detachEvent){ed.detachEvent("on"+ec,eb)}}}cW.exit=function(){D.clearInterval(b4);L(cW.externals.canvas.id);delete ae.onmousedown;for(var eb in F.lib){if(F.lib.hasOwnProperty(eb)){if(F.lib[eb].hasOwnProperty("detach")){F.lib[eb].detach(cW)}}}var ea=au.length;while(ea--){de(au[ea])}cQ.onExit()};cW.cursor=function(){if(arguments.length>1||arguments.length===1&&arguments[0] instanceof cW.PImage){var ed=arguments[0],ea,ef;if(arguments.length>=3){ea=arguments[1];ef=arguments[2];if(ea<0||ef<0||ef>=ed.height||ea>=ed.width){throw"x and y must be non-negative and less than the dimensions of the image"}}else{ea=ed.width>>>1;ef=ed.height>>>1}var eb=ed.toDataURL();var ec='url("'+eb+'") '+ea+" "+ef+", default";Z=ae.style.cursor=ec}else{if(arguments.length===1){var ee=arguments[0];Z=ae.style.cursor=ee}else{Z=ae.style.cursor=ck}}};cW.noCursor=function(){Z=ae.style.cursor=B.NOCURSOR};cW.link=function(ea,eb){if(eb!==t){D.open(ea,eb)}else{D.location=ea}};cW.beginDraw=G;cW.endDraw=G;bR.prototype.toImageData=function(ea,ed,eb,ec){ea=ea!==t?ea:0;ed=ed!==t?ed:0;eb=eb!==t?eb:cW.width;ec=ec!==t?ec:cW.height;return d8.getImageData(ea,ed,eb,ec)};bB.prototype.toImageData=function(ei,eh,ej,ee){ei=ei!==t?ei:0;eh=eh!==t?eh:0;ej=ej!==t?ej:cW.width;ee=ee!==t?ee:cW.height;var eg=d.createElement("canvas"),ek=eg.getContext("2d"),ed=ek.createImageData(ej,ee),eb=new b(ej*ee*4);d8.readPixels(ei,eh,ej,ee,d8.RGBA,d8.UNSIGNED_BYTE,eb);for(var ec=0,ef=eb.length,ea=ed.data;ec0){ed=ec}else{if(eb instanceof bP){ed=16;eb|=0}else{ed=32;while(ed>1&&!(eb>>>ed-1&1)){ed--}}}var ea="";while(ed>0){ea+=eb>>>--ed&1?"1":"0"}return ea};cW.unbinary=function(eb){var ed=eb.length-1,ec=1,ea=0;while(ed>=0){var ee=eb[ed--];if(ee!=="0"&&ee!=="1"){throw"the value passed into unbinary was not an 8 bit binary number"}if(ee==="1"){ea+=ec}ec<<=1}return ea};function cX(em,ek,ee,ep,eg,en){var ec=em<0?ee:ek;var eb=eg===0;var el=eg===t||eg<0?0:eg;var ej=q.abs(em);if(eb){el=1;ej*=10;while(q.abs(q.round(ej)-ej)>0.000001&&el<7){++el;ej*=10}}else{if(el!==0){ej*=q.pow(10,el)}}var ed,ei=ej*2;if(q.floor(ej)===ej){ed=ej}else{if(q.floor(ei)===ei){var ea=q.floor(ej);ed=ea+ea%2}else{ed=q.round(ej)}}var ef="";var eo=ep+el;while(eo>0||ed>0){eo--;ef=""+ed%10+ef;ed=q.floor(ed/10)}if(en!==t){var eh=ef.length-3-el;while(eh>0){ef=ef.substring(0,eh)+en+ef.substring(eh);eh-=3}}if(el>0){return ec+ef.substring(0,ef.length-el)+"."+ef.substring(ef.length-el,ef.length)}return ec+ef}function ao(eg,ef,ea,ei,eb,eh){if(eg instanceof Array){var ed=[];for(var ec=0,ee=eg.length;ec=eb){ea=ea.substring(ea.length-eb,ea.length)}return ea};cW.hex=function(eb,ea){if(arguments.length===1){if(eb instanceof bP){ea=4}else{ea=8}}return aM(eb,ea)};function dF(ea){var eb=parseInt("0x"+ea,16);if(eb>2147483647){eb-=4294967296}return eb}cW.unhex=function(ec){if(ec instanceof Array){var ea=[];for(var eb=0;eb0?ed:null};cW.__contains=function(eb,ea){if(typeof eb!=="string"){return eb.contains.apply(eb,bc(arguments))}return eb!==null&&ea!==null&&typeof ea==="string"&&eb.indexOf(ea)>-1};cW.__replaceAll=function(ea,ec,eb){if(typeof ea!=="string"){return ea.replaceAll.apply(ea,bc(arguments))}return ea.replace(new RegExp(ec,"g"),eb)};cW.__replaceFirst=function(ea,ec,eb){if(typeof ea!=="string"){return ea.replaceFirst.apply(ea,bc(arguments))}return ea.replace(new RegExp(ec,""),eb)};cW.__replace=function(ed,ef,ee){if(typeof ed!=="string"){return ed.replace.apply(ed,bc(arguments))}if(ef instanceof RegExp){return ed.replace(ef,ee)}if(typeof ef!=="string"){ef=ef.toString()}if(ef===""){return ed}var ec=ed.indexOf(ef);if(ec<0){return ed}var eb=0,ea="";do{ea+=ed.substring(eb,ec)+ee;eb=ec+ef.length}while((ec=ed.indexOf(ef,eb))>=0);return ea+ed.substring(eb)};cW.__equals=function(eb,ea){if(eb.equals instanceof Function){return eb.equals.apply(eb,bc(arguments))}return eb.valueOf()===ea.valueOf()};cW.__equalsIgnoreCase=function(eb,ea){if(typeof eb!=="string"){return eb.equalsIgnoreCase.apply(eb,bc(arguments))}return eb.toLowerCase()===ea.toLowerCase()};cW.__toCharArray=function(ec){if(typeof ec!=="string"){return ec.toCharArray.apply(ec,bc(arguments))}var ed=[];for(var eb=0,ea=ec.length;ebea.length){return false}return ec===""||ec===ea?true:ea.indexOf(ec)===eb};cW.__endsWith=function(eb,ec){if(typeof eb!=="string"){return eb.endsWith.apply(eb,bc(arguments))}var ea=ec?ec.length:0;return ec===""||ec===eb?true:eb.indexOf(ec)===eb.length-ea};cW.__hashCode=function(ea){if(ea.hashCode instanceof Function){return ea.hashCode.apply(ea,bc(arguments))}return h(ea)};cW.__printStackTrace=function(ea){cW.println("Exception: "+ea.toString())};var d9=[];cW.println=function(ea){var eb=d9.length;if(eb){F.logger.log(d9.join(""));d9.length=0}if(arguments.length===0&&eb===0){F.logger.log("")}else{if(arguments.length!==0){F.logger.log(ea)}}};cW.print=function(ea){d9.push(ea)};cW.str=function(ec){if(ec instanceof Array){var ea=[];for(var eb=0;eb0){var ea=ed.shift();if(ea===eb){return true}if(ea.$interfaces){ed=ed.concat(ea.$interfaces)}}return false}while(ee.hasOwnProperty("$base")){ee=ee.$base;if(ee===eb){return true}}return false};cW.abs=q.abs;cW.ceil=q.ceil;cW.constrain=function(eb,ec,ea){return eb>ea?ea:eb0)){throw"Non-empty array is expected"}var ea=eb[0],ed=eb.length;for(var ec=1;ec0)){throw"Non-empty array is expected"}var ec=ea[0],ed=ea.length;for(var eb=1;ebea[eb]){ec=ea[eb]}}return ec};cW.norm=function(eb,ea,ec){return(eb-ea)/(ec-ea)};cW.pow=q.pow;cW.round=q.round;cW.sq=function(ea){return ea*ea};cW.sqrt=q.sqrt;cW.acos=q.acos;cW.asin=q.asin;cW.atan=q.atan;cW.atan2=q.atan2;cW.cos=q.cos;cW.degrees=function(ea){return ea*180/q.PI};cW.radians=function(ea){return ea/180*q.PI};cW.sin=q.sin;cW.tan=q.tan;var bY=q.random;cW.random=function(){if(arguments.length===0){return bY()}if(arguments.length===1){return bY()*arguments[0]}var eb=arguments[0],ea=arguments[1];return bY()*(ea-eb)+eb};function co(ec,eb){var ee=ec||362436069,ea=eb||521288629;var ed=function(){ee=36969*(ee&65535)+(ee>>>16)&4294967295;ea=18000*(ea&65535)+(ea>>>16)&4294967295;return((ee&65535)<<16|ea&65535)&4294967295};this.nextDouble=function(){var ef=ed()/4294967296;return ef<0?1+ef:ef};this.nextInt=ed}co.createRandomized=function(){var ea=new Date;return new co(ea/60000&4294967295,ea&4294967295)};cW.randomSeed=function(ea){bY=(new co(ea)).nextDouble};cW.Random=function(ea){var ed=false,eb,ec;this.nextGaussian=function(){if(ed){ed=false;return eb}var eh,ef,ee;do{eh=2*ec()-1;ef=2*ec()-1;ee=eh*eh+ef*ef}while(ee>=1||ee===0);var eg=q.sqrt(-2*q.log(ee)/ee);eb=ef*eg;ed=true;return eh*eg};ec=ea===t?q.random:(new co(ea)).nextDouble};function dz(eh){var eb=eh!==t?new co(eh):co.createRandomized();var eg,ee;var ed=new b(512);for(eg=0;eg<256;++eg){ed[eg]=eg}for(eg=0;eg<256;++eg){var ej=ed[ee=eb.nextInt()&255];ed[ee]=ed[eg];ed[eg]=ej}for(eg=0;eg<256;++eg){ed[eg+256]=ed[eg]}function ea(en,ek,eq,ep){var eo=en&15;var em=eo<8?ek:eq,el=eo<4?eq:eo===12||eo===14?ek:ep;return((eo&1)===0?em:-em)+((eo&2)===0?el:-el)}function ef(em,ek,en){var el=(em&1)===0?ek:en;return(em&2)===0?-el:el}function ei(el,ek){return(el&1)===0?-ek:ek}function ec(em,el,ek){return el+em*(ek-el)}this.noise3d=function(ew,ev,eu){var en=q.floor(ew)&255,el=q.floor(ev)&255,ek=q.floor(eu)&255;ew-=q.floor(ew);ev-=q.floor(ev);eu-=q.floor(eu);var er=(3-2*ew)*ew*ew,eq=(3-2*ev)*ev*ev,ep=(3-2*eu)*eu*eu;var ey=ed[en]+el,et=ed[ey]+ek,es=ed[ey+1]+ek,ex=ed[en+1]+el,eo=ed[ex]+ek,em=ed[ex+1]+ek;return ec(ep,ec(eq,ec(er,ea(ed[et],ew,ev,eu),ea(ed[eo],ew-1,ev,eu)),ec(er,ea(ed[es],ew,ev-1,eu),ea(ed[em],ew-1,ev-1,eu))),ec(eq,ec(er,ea(ed[et+1],ew,ev,eu-1),ea(ed[eo+1],ew-1,ev,eu-1)),ec(er,ea(ed[es+1],ew,ev-1,eu-1),ea(ed[em+1],ew-1,ev-1,eu-1))))};this.noise2d=function(ek,er){var eq=q.floor(ek)&255,eo=q.floor(er)&255;ek-=q.floor(ek);er-=q.floor(er);var em=(3-2*ek)*ek*ek,el=(3-2*er)*er*er;var ep=ed[eq]+eo,en=ed[eq+1]+eo;return ec(el,ec(em,ef(ed[ep],ek,er),ef(ed[en],ek-1,er)),ec(em,ef(ed[ep+1],ek,er-1),ef(ed[en+1],ek-1,er-1)))};this.noise1d=function(ek){var em=q.floor(ek)&255;ek-=q.floor(ek);var el=(3-2*ek)*ek*ek;return ec(el,ei(ed[em],ek),ei(ed[em+1],ek-1))}}var bW={generator:t,octaves:4,fallout:0.5,seed:t};cW.noise=function(ea,eh,eg){if(bW.generator===t){bW.generator=new dz(bW.seed)}var ef=bW.generator;var ee=1,eb=1,ed=0;for(var ec=0;ec0){ae.style.removeProperty("width");ae.style.removeProperty("height")}ae.width=cW.width=eb||100;ae.height=cW.height=ee||100;for(var ef in ec){if(ec.hasOwnProperty(ef)){d8[ef]=ec[ef]}}cW.textFont(W);cW.background();bZ=q.max(1000,eb*ee*0.05);cW.externals.context=d8;for(var ea=0;ea<720;ea++){ah[ea]=cW.sin(ea*(q.PI/180)*0.5);bl[ea]=cW.cos(ea*(q.PI/180)*0.5)}};bR.prototype.size=function(ea,ec,eb){if(d8===t){d8=ae.getContext("2d");am=new V;da=new V;dJ=new aX;aT=new aX}ds.prototype.size.apply(this,arguments)};bB.prototype.size=function(){var eb=false;return function ea(ed,ef,ee){if(eb){throw"Multiple calls to size() for 3D renders are not allowed."}eb=true;function eg(ei){var el=["experimental-webgl","webgl","webkit-3d"],ek;for(var ej=0,eh=el.length;ej>16)&255)/255,((eb>>8)&255)/255,(eb&255)/255];d8.useProgram(dx);d2("uLights.color.3d."+dL,dx,"uLights"+dL+".color",ec);d2("uLights.position.3d."+dL,dx,"uLights"+dL+".position",eg.array());dZ("uLights.type.3d."+dL,dx,"uLights"+dL+".type",0);dZ("uLightCount3d",dx,"uLightCount",++dL)};bR.prototype.directionalLight=ds.prototype.a3DOnlyFunction;bB.prototype.directionalLight=function(ea,eg,ei,eh,ef,ee){if(dL===8){throw"can only create "+8+" lights"}d8.useProgram(dx);var ej=new aP;ej.scale(1,-1,1);ej.apply(dJ.array());ej=ej.array();var ec=[ej[0]*eh+ej[4]*ef+ej[8]*ee,ej[1]*eh+ej[5]*ef+ej[9]*ee,ej[2]*eh+ej[6]*ef+ej[10]*ee];var eb=dH(ea,eg,ei,0);var ed=[((eb>>16)&255)/255,((eb>>8)&255)/255,(eb&255)/255];d2("uLights.color.3d."+dL,dx,"uLights"+dL+".color",ed);d2("uLights.position.3d."+dL,dx,"uLights"+dL+".position",ec);dZ("uLights.type.3d."+dL,dx,"uLights"+dL+".type",1);dZ("uLightCount3d",dx,"uLightCount",++dL)};bR.prototype.lightFalloff=ds.prototype.a3DOnlyFunction;bB.prototype.lightFalloff=function(eb,ea,ec){d8.useProgram(dx);d2("uFalloff3d",dx,"uFalloff",[eb,ea,ec])};bR.prototype.lightSpecular=ds.prototype.a3DOnlyFunction;bB.prototype.lightSpecular=function(ee,ed,ea){var eb=dH(ee,ed,ea,0);var ec=[((eb>>16)&255)/255,((eb>>8)&255)/255,(eb&255)/255];d8.useProgram(dx);d2("uSpecular3d",dx,"uSpecular",ec)};cW.lights=function(){cW.ambientLight(128,128,128);cW.directionalLight(128,128,128,0,0,-1);cW.lightFalloff(1,0,0);cW.lightSpecular(0,0,0)};bR.prototype.pointLight=ds.prototype.a3DOnlyFunction;bB.prototype.pointLight=function(ea,ed,ei,ej,ef,ee){if(dL===8){throw"can only create "+8+" lights"}var eg=new A(ej,ef,ee);var eh=new aP;eh.scale(1,-1,1);eh.apply(dJ.array());eh.mult(eg,eg);var eb=dH(ea,ed,ei,0);var ec=[((eb>>16)&255)/255,((eb>>8)&255)/255,(eb&255)/255];d8.useProgram(dx);d2("uLights.color.3d."+dL,dx,"uLights"+dL+".color",ec);d2("uLights.position.3d."+dL,dx,"uLights"+dL+".position",eg.array());dZ("uLights.type.3d."+dL,dx,"uLights"+dL+".type",2);dZ("uLightCount3d",dx,"uLightCount",++dL)};bR.prototype.noLights=ds.prototype.a3DOnlyFunction;bB.prototype.noLights=function(){dL=0;d8.useProgram(dx);dZ("uLightCount3d",dx,"uLightCount",dL)};bR.prototype.spotLight=ds.prototype.a3DOnlyFunction;bB.prototype.spotLight=function(ea,ei,en,eo,em,ek,ej,eh,ef,ee,eg){if(dL===8){throw"can only create "+8+" lights"}d8.useProgram(dx);var el=new A(eo,em,ek);var ep=new aP;ep.scale(1,-1,1);ep.apply(dJ.array());ep.mult(el,el);ep=ep.array();var ec=[ep[0]*ej+ep[4]*eh+ep[8]*ef,ep[1]*ej+ep[5]*eh+ep[9]*ef,ep[2]*ej+ep[6]*eh+ep[10]*ef];var eb=dH(ea,ei,en,0);var ed=[((eb>>16)&255)/255,((eb>>8)&255)/255,(eb&255)/255];d2("uLights.color.3d."+dL,dx,"uLights"+dL+".color",ed);d2("uLights.position.3d."+dL,dx,"uLights"+dL+".position",el.array());d2("uLights.direction.3d."+dL,dx,"uLights"+dL+".direction",ec);d2("uLights.concentration.3d."+dL,dx,"uLights"+dL+".concentration",eg);d2("uLights.angle.3d."+dL,dx,"uLights"+dL+".angle",ee);dZ("uLights.type.3d."+dL,dx,"uLights"+dL+".type",3);dZ("uLightCount3d",dx,"uLightCount",++dL)};bR.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode"};bB.prototype.beginCamera=function(){if(ap){throw"You cannot call beginCamera() again before calling endCamera()"}ap=true;dJ=ch;aT=bV};bR.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode"};bB.prototype.endCamera=function(){if(!ap){throw"You cannot call endCamera() before calling beginCamera()"}dJ.set(bV);aT.set(ch);ap=false};cW.camera=function(el,ek,ei,eg,ee,ed,et,er,ep){if(el===t){dl=cW.width/2;dj=cW.height/2;di=dj/q.tan(cK/2);el=dl;ek=dj;ei=di;eg=dl;ee=dj;ed=0;et=0;er=1;ep=0}var ef=new A(el-eg,ek-ee,ei-ed);var eh=new A(et,er,ep);ef.normalize();var ej=A.cross(eh,ef);eh=A.cross(ef,ej);ej.normalize();eh.normalize();var eu=ej.x,es=ej.y,eq=ej.z;var ec=eh.x,eb=eh.y,ea=eh.z;var eo=ef.x,en=ef.y,em=ef.z;bV.set(eu,es,eq,0,ec,eb,ea,0,eo,en,em,0,0,0,0,1);bV.translate(-el,-ek,-ei);ch.reset();ch.invApply(eu,es,eq,0,ec,eb,ea,0,eo,en,em,0,0,0,0,1);ch.translate(el,ek,ei);dJ.set(bV);aT.set(ch)};cW.perspective=function(ee,ec,ef,eb){if(arguments.length===0){dj=ae.height/2;di=dj/q.tan(cK/2);a0=di/10;av=di*10;b5=cW.width/cW.height;ee=cK;ec=b5;ef=a0;eb=av}var eg,ea,eh,ed;eg=ef*q.tan(ee/2);ea=-eg;eh=eg*ec;ed=ea*ec;cW.frustum(ed,eh,ea,eg,ef,eb)};bR.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode"};bB.prototype.frustum=function(eg,ec,eb,ef,ee,ea){ci=true;db=new aP;db.set(2*ee/(ec-eg),0,(ec+eg)/(ec-eg),0,0,2*ee/(ef-eb),(ef+eb)/(ef-eb),0,0,0,-(ea+ee)/(ea-ee),-(2*ea*ee)/(ea-ee),0,0,-1,0);var ed=new aP;ed.set(db);ed.transpose();d8.useProgram(dQ);a9("projection2d",dQ,"uProjection",false,ed.array());d8.useProgram(dx);a9("projection3d",dx,"uProjection",false,ed.array());d8.useProgram(bT);a9("uProjectionUS",bT,"uProjection",false,ed.array())};cW.ortho=function(eb,em,ea,ek,eh,eg){if(arguments.length===0){eb=0;em=cW.width;ea=0;ek=cW.height;eh=-10;eg=10}var el=2/(em-eb);var ej=2/(ek-ea);var ei=-2/(eg-eh);var ef=-(em+eb)/(em-eb);var ee=-(ek+ea)/(ek-ea);var ed=-(eg+eh)/(eg-eh);db=new aP;db.set(el,0,0,ef,0,ej,0,ee,0,0,ei,ed,0,0,0,1);var ec=new aP;ec.set(db);ec.transpose();d8.useProgram(dQ);a9("projection2d",dQ,"uProjection",false,ec.array());d8.useProgram(dx);a9("projection3d",dx,"uProjection",false,ec.array());d8.useProgram(bT);a9("uProjectionUS",bT,"uProjection",false,ec.array());ci=false};cW.printProjection=function(){db.print()};cW.printCamera=function(){bV.print()};bR.prototype.box=ds.prototype.a3DOnlyFunction;bB.prototype.box=function(ec,ef,eh){if(!ef||!eh){ef=eh=ec}var ee=new aP;ee.scale(ec,ef,eh);var eb=new aP;eb.scale(1,-1,1);eb.apply(dJ.array());eb.transpose();if(aH){d8.useProgram(dx);a9("model3d",dx,"uModel",false,ee.array());a9("view3d",dx,"uView",false,eb.array());d8.enable(d8.POLYGON_OFFSET_FILL);d8.polygonOffset(1,1);d2("color3d",dx,"uColor",bo);if(dL>0){var ed=new aP;ed.set(eb);var ea=new aP;ea.set(ee);ed.mult(ea);var eg=new aP;eg.set(ed);eg.invert();eg.transpose();a9("uNormalTransform3d",dx,"uNormalTransform",false,eg.array());dc("aNormal3d",dx,"aNormal",3,cJ)}else{cg("aNormal3d",dx,"aNormal")}dc("aVertex3d",dx,"aVertex",3,bh);cg("aColor3d",dx,"aColor");cg("aTexture3d",dx,"aTexture");d8.drawArrays(d8.TRIANGLES,0,dh.length/3);d8.disable(d8.POLYGON_OFFSET_FILL)}if(dW>0&&ce){d8.useProgram(dQ);a9("uModel2d",dQ,"uModel",false,ee.array());a9("uView2d",dQ,"uView",false,eb.array());d2("uColor2d",dQ,"uColor",c0);dZ("uIsDrawingText2d",dQ,"uIsDrawingText",false);dc("vertex2d",dQ,"aVertex",3,dk);cg("aTextureCoord2d",dQ,"aTextureCoord");d8.drawArrays(d8.LINES,0,bH.length/3)}};var cD=function(){var eb;cF=[];for(eb=0;eb0){var ec=new aP;ec.set(eb);var ea=new aP;ea.set(ed);ec.mult(ea);var ef=new aP;ef.set(ec);ef.invert();ef.transpose();a9("uNormalTransform3d",dx,"uNormalTransform",false,ef.array());dc("aNormal3d",dx,"aNormal",3,bg)}else{cg("aNormal3d",dx,"aNormal")}d8.useProgram(dx);cg("aTexture3d",dx,"aTexture");a9("uModel3d",dx,"uModel",false,ed.array());a9("uView3d",dx,"uView",false,eb.array());dc("aVertex3d",dx,"aVertex",3,bg);cg("aColor3d",dx,"aColor");d8.enable(d8.POLYGON_OFFSET_FILL);d8.polygonOffset(1,1);d2("uColor3d",dx,"uColor",bo);d8.drawArrays(d8.TRIANGLE_STRIP,0,cF.length/3);d8.disable(d8.POLYGON_OFFSET_FILL)}if(dW>0&&ce){d8.useProgram(dQ);a9("uModel2d",dQ,"uModel",false,ed.array());a9("uView2d",dQ,"uView",false,eb.array());dc("aVertex2d",dQ,"aVertex",3,bg);cg("aTextureCoord2d",dQ,"aTextureCoord");d2("uColor2d",dQ,"uColor",c0);dZ("uIsDrawingText",dQ,"uIsDrawingText",false);d8.drawArrays(d8.LINE_STRIP,0,cF.length/3)}};cW.modelX=function(eg,ef,ee){var ei=dJ.array();var ek=ch.array();var ea=ei[0]*eg+ei[1]*ef+ei[2]*ee+ei[3];var ej=ei[4]*eg+ei[5]*ef+ei[6]*ee+ei[7];var eh=ei[8]*eg+ei[9]*ef+ei[10]*ee+ei[11];var eb=ei[12]*eg+ei[13]*ef+ei[14]*ee+ei[15];var ec=ek[0]*ea+ek[1]*ej+ek[2]*eh+ek[3]*eb;var ed=ek[12]*ea+ek[13]*ej+ek[14]*eh+ek[15]*eb;return ed!==0?ec/ed:ec};cW.modelY=function(eg,ef,ee){var ei=dJ.array();var ek=ch.array();var ea=ei[0]*eg+ei[1]*ef+ei[2]*ee+ei[3];var ej=ei[4]*eg+ei[5]*ef+ei[6]*ee+ei[7];var eh=ei[8]*eg+ei[9]*ef+ei[10]*ee+ei[11];var eb=ei[12]*eg+ei[13]*ef+ei[14]*ee+ei[15];var ec=ek[4]*ea+ek[5]*ej+ek[6]*eh+ek[7]*eb;var ed=ek[12]*ea+ek[13]*ej+ek[14]*eh+ek[15]*eb;return ed!==0?ec/ed:ec};cW.modelZ=function(eg,ef,ee){var ei=dJ.array();var ek=ch.array();var ea=ei[0]*eg+ei[1]*ef+ei[2]*ee+ei[3];var ej=ei[4]*eg+ei[5]*ef+ei[6]*ee+ei[7];var eh=ei[8]*eg+ei[9]*ef+ei[10]*ee+ei[11];var ec=ei[12]*eg+ei[13]*ef+ei[14]*ee+ei[15];var eb=ek[8]*ea+ek[9]*ej+ek[10]*eh+ek[11]*ec;var ed=ek[12]*ea+ek[13]*ej+ek[14]*eh+ek[15]*ec;return ed!==0?eb/ed:eb};bR.prototype.ambient=ds.prototype.a3DOnlyFunction;bB.prototype.ambient=function(ed,ec,eb){d8.useProgram(dx);dZ("uUsingMat3d",dx,"uUsingMat",true);var ea=cW.color(ed,ec,eb);d2("uMaterialAmbient3d",dx,"uMaterialAmbient",cW.color.toGLArray(ea).slice(0,3))};bR.prototype.emissive=ds.prototype.a3DOnlyFunction;bB.prototype.emissive=function(ed,ec,eb){d8.useProgram(dx);dZ("uUsingMat3d",dx,"uUsingMat",true);var ea=cW.color(ed,ec,eb);d2("uMaterialEmissive3d",dx,"uMaterialEmissive",cW.color.toGLArray(ea).slice(0,3))};bR.prototype.shininess=ds.prototype.a3DOnlyFunction;bB.prototype.shininess=function(ea){d8.useProgram(dx);dZ("uUsingMat3d",dx,"uUsingMat",true);d2("uShininess3d",dx,"uShininess",ea)};bR.prototype.specular=ds.prototype.a3DOnlyFunction;bB.prototype.specular=function(ed,ec,eb){d8.useProgram(dx);dZ("uUsingMat3d",dx,"uUsingMat",true);var ea=cW.color(ed,ec,eb);d2("uMaterialSpecular3d",dx,"uMaterialSpecular",cW.color.toGLArray(ea).slice(0,3))};cW.screenX=function(eh,eg,ef){var ej=dJ.array();if(ej.length===16){var ea=ej[0]*eh+ej[1]*eg+ej[2]*ef+ej[3];var ek=ej[4]*eh+ej[5]*eg+ej[6]*ef+ej[7];var ei=ej[8]*eh+ej[9]*eg+ej[10]*ef+ej[11];var eb=ej[12]*eh+ej[13]*eg+ej[14]*ef+ej[15];var ee=db.array();var ec=ee[0]*ea+ee[1]*ek+ee[2]*ei+ee[3]*eb;var ed=ee[12]*ea+ee[13]*ek+ee[14]*ei+ee[15]*eb;if(ed!==0){ec/=ed}return cW.width*(1+ec)/2}return dJ.multX(eh,eg)};cW.screenY=function aA(eh,eg,ef){var ej=dJ.array();if(ej.length===16){var ea=ej[0]*eh+ej[1]*eg+ej[2]*ef+ej[3];var ek=ej[4]*eh+ej[5]*eg+ej[6]*ef+ej[7];var ei=ej[8]*eh+ej[9]*eg+ej[10]*ef+ej[11];var eb=ej[12]*eh+ej[13]*eg+ej[14]*ef+ej[15];var ee=db.array();var ec=ee[4]*ea+ee[5]*ek+ee[6]*ei+ee[7]*eb;var ed=ee[12]*ea+ee[13]*ek+ee[14]*ei+ee[15]*eb;if(ed!==0){ec/=ed}return cW.height*(1+ec)/2}return dJ.multY(eh,eg)};cW.screenZ=function ay(eh,eg,ef){var ej=dJ.array();if(ej.length!==16){return 0}var ee=db.array();var ea=ej[0]*eh+ej[1]*eg+ej[2]*ef+ej[3];var ek=ej[4]*eh+ej[5]*eg+ej[6]*ef+ej[7];var ei=ej[8]*eh+ej[9]*eg+ej[10]*ef+ej[11];var ec=ej[12]*eh+ej[13]*eg+ej[14]*ef+ej[15];var eb=ee[8]*ea+ee[9]*ek+ee[10]*ei+ee[11]*ec;var ed=ee[12]*ea+ee[13]*ek+ee[14]*ei+ee[15]*ec;if(ed!==0){eb/=ed}return(eb+1)/2};ds.prototype.fill=function(){var ea=cW.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(ea===a1&&aH){return}aH=true;a1=ea};bR.prototype.fill=function(){ds.prototype.fill.apply(this,arguments);aq=true};bB.prototype.fill=function(){ds.prototype.fill.apply(this,arguments);bo=cW.color.toGLArray(a1)};function bn(){if(aH){if(aq){d8.fillStyle=cW.color.toString(a1);aq=false}d8.fill()}}cW.noFill=function(){aH=false};ds.prototype.stroke=function(){var ea=cW.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(ea===cv&&ce){return}ce=true;cv=ea};bR.prototype.stroke=function(){ds.prototype.stroke.apply(this,arguments);b3=true};bB.prototype.stroke=function(){ds.prototype.stroke.apply(this,arguments);c0=cW.color.toGLArray(cv)};function dd(){if(ce){if(b3){d8.strokeStyle=cW.color.toString(cv);b3=false}d8.stroke()}}cW.noStroke=function(){ce=false};ds.prototype.strokeWeight=function(ea){dW=ea};bR.prototype.strokeWeight=function(ea){ds.prototype.strokeWeight.apply(this,arguments);d8.lineWidth=ea};bB.prototype.strokeWeight=function(ea){ds.prototype.strokeWeight.apply(this,arguments);d8.useProgram(dQ);d2("pointSize2d",dQ,"uPointSize",ea);d8.useProgram(bT);d2("pointSizeUnlitShape",bT,"uPointSize",ea);d8.lineWidth(ea)};cW.strokeCap=function(ea){dY.$ensureContext().lineCap=ea};cW.strokeJoin=function(ea){dY.$ensureContext().lineJoin=ea};bR.prototype.smooth=function(){dO=true;var ea=ae.style;ea.setProperty("image-rendering","optimizeQuality","important");ea.setProperty("-ms-interpolation-mode","bicubic","important");if(d8.hasOwnProperty("mozImageSmoothingEnabled")){d8.mozImageSmoothingEnabled=true}};bB.prototype.smooth=function(){dO=true};bR.prototype.noSmooth=function(){dO=false;var ea=ae.style;ea.setProperty("image-rendering","optimizeSpeed","important");ea.setProperty("image-rendering","-moz-crisp-edges","important");ea.setProperty("image-rendering","-webkit-optimize-contrast","important");ea.setProperty("image-rendering","optimize-contrast","important");ea.setProperty("-ms-interpolation-mode","nearest-neighbor","important");if(d8.hasOwnProperty("mozImageSmoothingEnabled")){d8.mozImageSmoothingEnabled=false}};bB.prototype.noSmooth=function(){dO=false};bR.prototype.point=function(ea,eb){if(!ce){return}ea=q.round(ea);eb=q.round(eb);d8.fillStyle=cW.color.toString(cv);aq=true;if(dW>1){d8.beginPath();d8.arc(ea,eb,dW/2,0,6.283185307179586,false);d8.fill()}else{d8.fillRect(ea,eb,1,1)}};bB.prototype.point=function(ea,ee,ed){var ec=new aP;ec.translate(ea,ee,ed||0);ec.transpose();var eb=new aP;eb.scale(1,-1,1);eb.apply(dJ.array());eb.transpose();d8.useProgram(dQ);a9("uModel2d",dQ,"uModel",false,ec.array());a9("uView2d",dQ,"uView",false,eb.array());if(dW>0&&ce){d2("uColor2d",dQ,"uColor",c0);dZ("uIsDrawingText2d",dQ,"uIsDrawingText",false);dZ("uSmooth2d",dQ,"uSmooth",dO);dc("aVertex2d",dQ,"aVertex",3,aw);cg("aTextureCoord2d",dQ,"aTextureCoord");d8.drawArrays(d8.POINTS,0,1)}};cW.beginShape=function(ea){dR=ea;d6=[];bb=[]};bR.prototype.vertex=function(eb,ed,ea){var ec=[];if(du){du=false}ec.isVert=true;ec[0]=eb;ec[1]=ed;ec[2]=0;ec[3]=0;ec[4]=0;ec[5]=a1;ec[6]=cv;bb.push(ec);if(ea){bb[bb.length-1]["moveTo"]=ea}};bB.prototype.vertex=function(ea,ef,ee,ed,ec){var eb=[];if(du){du=false}eb.isVert=true;if(ec===t&&dT){ec=ed;ed=ee;ee=0}if(ed!==t&&ec!==t){if(d4===2){ed/=cs.width;ec/=cs.height}ed=ed>1?1:ed;ed=ed<0?0:ed;ec=ec>1?1:ec;ec=ec<0?0:ec}eb[0]=ea;eb[1]=ef;eb[2]=ee||0;eb[3]=ed||0;eb[4]=ec||0;eb[5]=bo[0];eb[6]=bo[1];eb[7]=bo[2];eb[8]=bo[3];eb[9]=c0[0];eb[10]=c0[1];eb[11]=c0[2];eb[12]=c0[3];eb[13]=a8;eb[14]=a7;eb[15]=a6;bb.push(eb)};var d1=function(ec,eb){var ea=new aP;ea.scale(1,-1,1);ea.apply(dJ.array());ea.transpose();d8.useProgram(bT);a9("uViewUS",bT,"uView",false,ea.array());dZ("uSmoothUS",bT,"uSmooth",dO);dc("aVertexUS",bT,"aVertex",3,aw);d8.bufferData(d8.ARRAY_BUFFER,new e(ec),d8.STREAM_DRAW);dc("aColorUS",bT,"aColor",4,aG);d8.bufferData(d8.ARRAY_BUFFER,new e(eb),d8.STREAM_DRAW);d8.drawArrays(d8.POINTS,0,ec.length/3)};var bj=function(ee,ed,ec){var eb;if(ed==="LINES"){eb=d8.LINES}else{if(ed==="LINE_LOOP"){eb=d8.LINE_LOOP}else{eb=d8.LINE_STRIP}}var ea=new aP;ea.scale(1,-1,1);ea.apply(dJ.array());ea.transpose();d8.useProgram(bT);a9("uViewUS",bT,"uView",false,ea.array());dc("aVertexUS",bT,"aVertex",3,b8);d8.bufferData(d8.ARRAY_BUFFER,new e(ee),d8.STREAM_DRAW);dc("aColorUS",bT,"aColor",4,bC);d8.bufferData(d8.ARRAY_BUFFER,new e(ec),d8.STREAM_DRAW);d8.drawArrays(eb,0,ee.length/3)};var dm=function(ef,ee,ed,ec){var eb;if(ee==="TRIANGLES"){eb=d8.TRIANGLES}else{if(ee==="TRIANGLE_FAN"){eb=d8.TRIANGLE_FAN}else{eb=d8.TRIANGLE_STRIP}}var ea=new aP;ea.scale(1,-1,1);ea.apply(dJ.array());ea.transpose();d8.useProgram(dx);a9("model3d",dx,"uModel",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);a9("view3d",dx,"uView",false,ea.array());d8.enable(d8.POLYGON_OFFSET_FILL);d8.polygonOffset(1,1);d2("color3d",dx,"uColor",[-1,0,0,0]);dc("vertex3d",dx,"aVertex",3,at);d8.bufferData(d8.ARRAY_BUFFER,new e(ef),d8.STREAM_DRAW);if(dT&&bf!==null){bw(ed)}dc("aColor3d",dx,"aColor",4,aG);d8.bufferData(d8.ARRAY_BUFFER,new e(ed),d8.STREAM_DRAW);cg("aNormal3d",dx,"aNormal");if(dT){dZ("uUsingTexture3d",dx,"uUsingTexture",dT);dc("aTexture3d",dx,"aTexture",2,af);d8.bufferData(d8.ARRAY_BUFFER,new e(ec),d8.STREAM_DRAW)}d8.drawArrays(eb,0,ef.length/3);d8.disable(d8.POLYGON_OFFSET_FILL)};function cS(){bn();dd();d8.closePath()}bR.prototype.endShape=function(eh){if(bb.length===0){return}var ed=eh===2;if(ed){bb.push(bb[0])}var ec=[];var ea=[];var ej=[];var em=[];var ef=[];var ei;du=true;var eg,ee,eb;var el=bb.length;for(eg=0;eg3){var ek=[],en=1-aJ;d8.beginPath();d8.moveTo(bb[1][0],bb[1][1]);for(eg=1;eg+22){d8.beginPath();d8.moveTo(bb[0][0],bb[0][1]);d8.lineTo(bb[1][0],bb[1][1]);d8.lineTo(bb[2][0],bb[2][1]);if(aH){cW.fill(bb[2][5]);bn()}if(ce){cW.stroke(bb[2][6]);dd()}d8.closePath();for(eg=3;eg3){for(eg=0;eg+12){for(eg=0;eg+22){for(eg=0;eg+22){for(eg=0;eg<3;eg++){ei=bb[eg];for(ee=0;ee<3;ee++){ec.push(ei[ee])}}for(eg=0;eg<3;eg++){ei=bb[eg];for(ee=9;ee<13;ee++){em.push(ei[ee])}}if(ce){bj(ec,"LINE_LOOP",em)}for(eg=2;eg+13){for(eg=0;eg<2;eg++){ei=bb[eg];for(ee=0;ee<3;ee++){ec.push(ei[ee])}}for(eg=0;eg<2;eg++){ei=bb[eg];for(ee=9;ee<13;ee++){em.push(ei[ee])}}bj(ec,"LINE_STRIP",em);if(el>4&&el%2>0){ek=ea.splice(ea.length-3);bb.pop()}for(eg=0;eg+33){ar(cb[c2-4][0],cb[c2-4][1],cb[c2-4][2],cb[c2-3][0],cb[c2-3][1],cb[c2-3][2],cb[c2-2][0],cb[c2-2][1],cb[c2-2][2],cb[c2-1][0],cb[c2-1][1],cb[c2-1][2])}};bR.prototype.curve=function(ef,eh,ed,eg,eb,ee,ea,ec){cW.beginShape();cW.curveVertex(ef,eh);cW.curveVertex(ed,eg);cW.curveVertex(eb,ee);cW.curveVertex(ea,ec);cW.endShape()};bB.prototype.curve=function(ec,ek,eg,eb,ej,ef,ea,ei,ee,el,eh,ed){if(ed!==t){cW.beginShape();cW.curveVertex(ec,ek,eg);cW.curveVertex(eb,ej,ef);cW.curveVertex(ea,ei,ee);cW.curveVertex(el,eh,ed);cW.endShape();return}cW.beginShape();cW.curveVertex(ec,ek);cW.curveVertex(eg,eb);cW.curveVertex(ej,ef);cW.curveVertex(ea,ei);cW.endShape()};cW.curveTightness=function(ea){aJ=ea};cW.curveDetail=function(ea){Q=ea;dr()};cW.rectMode=function(ea){bK=ea};cW.imageMode=function(ea){switch(ea){case 0:bk=aZ;break;case 1:bk=b1;break;case 3:bk=aN;break;default:throw"Invalid imageMode"}};cW.ellipseMode=function(ea){cN=ea};cW.arc=function(em,ek,ed,eo,ec,el){if(ed<=0||el6.283185307179586){ec=0;el=6.283185307179586}var en=ed/2,ep=eo/2,eh=em+en,ef=ek+ep,eb=0|0.5+ec*cW.RAD_TO_DEG*2,ej=0|0.5+el*cW.RAD_TO_DEG*2,ei,eg;if(aH){var ee=ce;ce=false;cW.beginShape();cW.vertex(eh,ef);for(ei=eb;ei<=ej;ei++){eg=ei%720;cW.vertex(eh+bl[eg]*en,ef+ah[eg]*ep)}cW.endShape(2);ce=ee}if(ce){var ea=aH;aH=false;cW.beginShape();for(ei=eb;ei<=ej;ei++){eg=ei%720;cW.vertex(eh+bl[eg]*en,ef+ah[eg]*ep)}cW.endShape();aH=ea}};bR.prototype.line=function(eb,ei,ea,eg){if(!ce){return}eb=q.round(eb);ea=q.round(ea);ei=q.round(ei);eg=q.round(eg);if(eb===ea&&ei===eg){cW.point(eb,ei);return}var ec=t,ej=t,ef=true,eh=dJ.array(),ed=[1,0,0,0,1,0];for(var ee=0;ee<6&&ef;ee++){ef=eh[ee]===ed[ee]}if(ef){if(eb===ea){if(ei>eg){ec=ei;ei=eg;eg=ec}eg++;if(dW%2===1){d8.translate(0.5,0)}}else{if(ei===eg){if(eb>ea){ec=eb;eb=ea;ea=ec}ea++;if(dW%2===1){d8.translate(0,0.5)}}}if(dW===1){ej=d8.lineCap;d8.lineCap="butt"}}d8.beginPath();d8.moveTo(eb||0,ei||0);d8.lineTo(ea||0,eg||0);dd();if(ef){if(eb===ea&&dW%2===1){d8.translate(-0.5,0)}else{if(ei===eg&&dW%2===1){d8.translate(0,-0.5)}}if(dW===1){d8.lineCap=ej}}};bB.prototype.line=function(ec,ef,eh,eb,ed,eg){if(ed===t||eg===t){eg=0;ed=eb;eb=eh;eh=0}if(ec===eb&&ef===ed&&eh===eg){cW.point(ec,ef,eh);return}var ee=[ec,ef,eh,eb,ed,eg];var ea=new aP;ea.scale(1,-1,1);ea.apply(dJ.array());ea.transpose();if(dW>0&&ce){d8.useProgram(dQ);a9("uModel2d",dQ,"uModel",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);a9("uView2d",dQ,"uView",false,ea.array());d2("uColor2d",dQ,"uColor",c0);dZ("uIsDrawingText",dQ,"uIsDrawingText",false);dc("aVertex2d",dQ,"aVertex",3,b8);cg("aTextureCoord2d",dQ,"aTextureCoord");d8.bufferData(d8.ARRAY_BUFFER,new e(ee),d8.STREAM_DRAW);d8.drawArrays(d8.LINES,0,2)}};bR.prototype.bezier=function(){if(arguments.length!==8){throw"You must use 8 parameters for bezier() in 2D mode"}cW.beginShape();cW.vertex(arguments[0],arguments[1]);cW.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);cW.endShape()};bB.prototype.bezier=function(){if(arguments.length!==12){throw"You must use 12 parameters for bezier() in 3D mode"}cW.beginShape();cW.vertex(arguments[0],arguments[1],arguments[2]);cW.bezierVertex(arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);cW.endShape()};cW.bezierDetail=function(ea){cy=ea};cW.bezierPoint=function(eb,ea,ee,ed,ec){return(1-ec)*(1-ec)*(1-ec)*eb+3*(1-ec)*(1-ec)*ec*ea+3*(1-ec)*ec*ec*ee+ec*ec*ec*ed};cW.bezierTangent=function(eb,ea,ee,ed,ec){return 3*ec*ec*(-eb+3*ea-3*ee+ed)+6*ec*(eb-2*ea+ee)+3*(-eb+ea)};cW.curvePoint=function(eb,ea,ee,ed,ec){return 0.5*(2*ea+(-eb+ee)*ec+(2*eb-5*ea+4*ee-ed)*ec*ec+(-eb+3*ea-3*ee+ed)*ec*ec*ec)};cW.curveTangent=function(eb,ea,ee,ed,ec){return 0.5*(-eb+ee+2*(2*eb-5*ea+4*ee-ed)*ec+3*(-eb+3*ea-3*ee+ed)*ec*ec)};cW.triangle=function(ed,ef,eb,ee,ea,ec){cW.beginShape(9);cW.vertex(ed,ef,0);cW.vertex(eb,ee,0);cW.vertex(ea,ec,0);cW.endShape()};cW.quad=function(ef,eh,ed,eg,eb,ee,ea,ec){cW.beginShape(16);cW.vertex(ef,eh,0);cW.vertex(ed,eg,0);cW.vertex(eb,ee,0);cW.vertex(ea,ec,0);cW.endShape()};var bN=function(eg,ef,ea,eh,ej,ee,ei,eb){if(eb===t){ee=ej;ei=ej;eb=ej}var ec=ea/2,ed=eh/2;if(ej>ec||ej>ed){ej=q.min(ec,ed)}if(ee>ec||ee>ed){ee=q.min(ec,ed)}if(ei>ec||ei>ed){ei=q.min(ec,ed)}if(eb>ec||eb>ed){eb=q.min(ec,ed)}if(!aH||ce){d8.translate(0.5,0.5)}d8.beginPath();d8.moveTo(eg+ej,ef);d8.lineTo(eg+ea-ee,ef);d8.quadraticCurveTo(eg+ea,ef,eg+ea,ef+ee);d8.lineTo(eg+ea,ef+eh-ei);d8.quadraticCurveTo(eg+ea,ef+eh,eg+ea-ei,ef+eh);d8.lineTo(eg+eb,ef+eh);d8.quadraticCurveTo(eg,ef+eh,eg,ef+eh-eb);d8.lineTo(eg,ef+ej);d8.quadraticCurveTo(eg,ef,eg+ej,ef);if(!aH||ce){d8.translate(-0.5,-0.5)}bn();dd()};bR.prototype.rect=function(eb,eh,ee,ea,ec,ef,ed,eg){if(!ee&&!ea){return}if(bK===1){ee-=eb;ea-=eh}else{if(bK===2){ee*=2;ea*=2;eb-=ee/2;eh-=ea/2}else{if(bK===3){eb-=ee/2;eh-=ea/2}}}eb=q.round(eb);eh=q.round(eh);ee=q.round(ee);ea=q.round(ea);if(ec!==t){bN(eb,eh,ee,ea,ec,ef,ed,eg);return}if(ce&&dW%2===1){d8.translate(0.5,0.5)}d8.beginPath();d8.rect(eb,eh,ee,ea);bn();dd();if(ce&&dW%2===1){d8.translate(-0.5,-0.5)}};bB.prototype.rect=function(ei,eh,ea,ek,em,ef,el,eb){if(em!==t){throw"rect() with rounded corners is not supported in 3D mode"}if(bK===1){ea-=ei;ek-=eh}else{if(bK===2){ea*=2;ek*=2;ei-=ea/2;eh-=ek/2}else{if(bK===3){ei-=ea/2;eh-=ek/2}}}var ee=new aP;ee.translate(ei,eh,0);ee.scale(ea,ek,1);ee.transpose();var eg=new aP;eg.scale(1,-1,1);eg.apply(dJ.array());eg.transpose();if(dW>0&&ce){d8.useProgram(dQ);a9("uModel2d",dQ,"uModel",false,ee.array());a9("uView2d",dQ,"uView",false,eg.array());d2("uColor2d",dQ,"uColor",c0);dZ("uIsDrawingText2d",dQ,"uIsDrawingText",false);dc("aVertex2d",dQ,"aVertex",3,aB);cg("aTextureCoord2d",dQ,"aTextureCoord");d8.drawArrays(d8.LINE_LOOP,0,ak.length/3)}if(aH){d8.useProgram(dx);a9("uModel3d",dx,"uModel",false,ee.array());a9("uView3d",dx,"uView",false,eg.array());d8.enable(d8.POLYGON_OFFSET_FILL);d8.polygonOffset(1,1);d2("color3d",dx,"uColor",bo);if(dL>0){var ej=new aP;ej.set(eg);var ec=new aP;ec.set(ee);ej.mult(ec);var ed=new aP;ed.set(ej);ed.invert();ed.transpose();a9("uNormalTransform3d",dx,"uNormalTransform",false,ed.array());dc("aNormal3d",dx,"aNormal",3,b2)}else{cg("normal3d",dx,"aNormal")}dc("vertex3d",dx,"aVertex",3,aB);d8.drawArrays(d8.TRIANGLE_FAN,0,ak.length/3);d8.disable(d8.POLYGON_OFFSET_FILL)}};bR.prototype.ellipse=function(eg,ef,eb,ei){eg=eg||0;ef=ef||0;if(eb<=0&&ei<=0){return}if(cN===2){eb*=2;ei*=2}else{if(cN===1){eb=eb-eg;ei=ei-ef;eg+=eb/2;ef+=ei/2}else{if(cN===0){eg+=eb/2;ef+=ei/2}}}if(eb===ei){d8.beginPath();d8.arc(eg,ef,eb/2,0,6.283185307179586,false);bn();dd()}else{var eh=eb/2,ee=ei/2,ea=0.5522847498307933,ed=ea*eh,ec=ea*ee;cW.beginShape();cW.vertex(eg+eh,ef);cW.bezierVertex(eg+eh,ef-ec,eg+ed,ef-ee,eg,ef-ee);cW.bezierVertex(eg-ed,ef-ee,eg-eh,ef-ec,eg-eh,ef);cW.bezierVertex(eg-eh,ef+ec,eg-ed,ef+ee,eg,ef+ee);cW.bezierVertex(eg+ed,ef+ee,eg+eh,ef+ec,eg+eh,ef);cW.endShape()}};bB.prototype.ellipse=function(en,em,ec,ep){en=en||0;em=em||0;if(ec<=0&&ep<=0){return}if(cN===2){ec*=2;ep*=2}else{if(cN===1){ec=ec-en;ep=ep-em;en+=ec/2;em+=ep/2}else{if(cN===0){en+=ec/2;em+=ep/2}}}var eo=ec/2,ej=ep/2,ea=0.5522847498307933,ee=ea*eo,ed=ea*ej;cW.beginShape();cW.vertex(en+eo,em);cW.bezierVertex(en+eo,em-ed,0,en+ee,em-ej,0,en,em-ej,0);cW.bezierVertex(en-ee,em-ej,0,en-eo,em-ed,0,en-eo,em,0);cW.bezierVertex(en-eo,em+ed,0,en-ee,em+ej,0,en,em+ej,0);cW.bezierVertex(en+ee,em+ej,0,en+eo,em+ed,0,en+eo,em,0);cW.endShape();if(aH){var ef=0,ek=0,eh,eg;for(eh=0;eh>16)&255;ed[ee+1]=(ef>>8)&255;ed[ee+2]=ef&255;ed[ee+3]=(ef>>24)&255;eb.__isDirty=true}}(ea),toArray:function(eb){return function(){var ec=[],ef=eb.imageData.data,ee=eb.width*eb.height;if(eb.isRemote){throw"Image is loaded remotely. Cannot get pixels."}for(var ed=0,eg=0;ed>16)&255;ef[eg+1]=(eh>>8)&255;ef[eg+2]=eh&255;ef[eg+3]=(eh>>24)&255}eb.__isDirty=true}}(ea)}}var cG=function(ed,eg,ee){this.__isDirty=false;if(ed instanceof HTMLImageElement){this.fromHTMLImageData(ed)}else{if(eg||ee){this.width=ed||1;this.height=eg||1;var eb=this.sourceImg=d.createElement("canvas");eb.width=this.width;eb.height=this.height;var eh=this.imageData=eb.getContext("2d").createImageData(this.width,this.height);this.format=ee===2||ee===4?ee:1;if(this.format===1){for(var ec=3,ef=this.imageData.data,ea=ef.length;ec=cW.width||ea<0||ed<0||ed>=cW.height){return 0}if(dV){var ec=((0|ea)+cW.width*(0|ed))*4;eb=cW.imageData.data;return(eb[ec+3]&255)<<24|(eb[ec]&255)<<16|(eb[ec+1]&255)<<8|eb[ec+2]&255}eb=cW.toImageData(0|ea,0|ed,1,1).data;return(eb[3]&255)<<24|(eb[0]&255)<<16|(eb[1]&255)<<8|eb[2]&255}function c8(ea,ee,eb){if(eb.isRemote){throw"Image is loaded remotely. Cannot get x,y."}var ed=ee*eb.width*4+ea*4,ec=eb.imageData.data;return(ec[ed+3]&255)<<24|(ec[ed]&255)<<16|(ec[ed+1]&255)<<8|ec[ed+2]&255}function c6(ea,ee,eb,ec){var ed=new cG(eb,ec,2);ed.fromImageData(cW.toImageData(ea,ee,eb,ec));return ed}function c5(ef,ee,eg,el,er){if(er.isRemote){throw"Image is loaded remotely. Cannot get x,y,w,h."}var ep=new cG(eg,el,2),ec=ep.imageData.data,ed=er.width,em=er.height,eo=er.imageData.data;var ea=q.max(0,-ee),eb=q.max(0,-ef),eh=q.min(el,em-ee),ei=q.min(eg,ed-ef);for(var ek=ea;ek=0&&ec>=0&&ecbZ){T()}}}function bv(ea,eg,ed,eb){if(eb.isRemote){throw"Image is loaded remotely. Cannot set x,y."}var ef=cW.color.toArray(ed);var ee=eg*eb.width*4+ea*4;var ec=eb.imageData.data;ec[ee]=ef[0];ec[ee+1]=ef[1];ec[ee+2]=ef[2];ec[ee+3]=ef[3]}cW.set=function(ea,ef,ed,ec){var eb,ee;if(arguments.length===3){if(typeof ed==="number"){bx(ea,ef,ed)}else{if(ed instanceof cG||ed.__isPImage){cW.image(ed,ea,ef)}}}else{if(arguments.length===4){bv(ea,ef,ed,ec)}}};cW.imageData={};cW.pixels={getLength:function(){return cW.imageData.data.length?cW.imageData.data.length/4:0},getPixel:function(ea){var ec=ea*4,eb=cW.imageData.data;return eb[ec+3]<<24&4278190080|eb[ec+0]<<16&16711680|eb[ec+1]<<8&65280|eb[ec+2]&255},setPixel:function(ea,ed){var ec=ea*4,eb=cW.imageData.data;eb[ec+0]=(ed&16711680)>>>16;eb[ec+1]=(ed&65280)>>>8;eb[ec+2]=ed&255;eb[ec+3]=(ed&4278190080)>>>24},toArray:function(){var ea=[],ec=cW.imageData.width*cW.imageData.height,ed=cW.imageData.data;for(var eb=0,ee=0;eb0){bE(ed,ec,eb,ea)}var ee=cW.color.toGLArray(a4);d8.clearColor(ee[0],ee[1],ee[2],ee[3]);d8.clear(d8.COLOR_BUFFER_BIT|d8.DEPTH_BUFFER_BIT)};bR.prototype.image=function(ed,ei,eg,ej,ee){ei=q.round(ei);eg=q.round(eg);if(ed.width>0){var ek=ej||ed.width;var eh=ee||ed.height;var ea=bk(ei||0,eg||0,ej||ed.width,ee||ed.height,arguments.length<4);var ef=!!ed.sourceImg&&bf===null;if(ef){var eb=ed.sourceImg;if(ed.__isDirty){ed.updatePixels()}d8.drawImage(eb,0,0,eb.width,eb.height,ea.x,ea.y,ea.w,ea.h)}else{var ec=ed.toImageData();if(bf!==null){bf(ec);ed.__isDirty=true}d8.drawImage(by(ec).canvas,0,0,ed.width,ed.height,ea.x,ea.y,ea.w,ea.h)}}};bB.prototype.image=function(ec,ea,ee,eb,ed){if(ec.width>0){ea=q.round(ea);ee=q.round(ee);eb=eb||ec.width;ed=ed||ec.height;cW.beginShape(cW.QUADS);cW.texture(ec);cW.vertex(ea,ee,0,0,0);cW.vertex(ea,ee+ed,0,0,ed);cW.vertex(ea+eb,ee+ed,0,eb,ed);cW.vertex(ea+eb,ee,0,eb,0);cW.endShape()}};cW.tint=function(ed,ec,ea,ei){var ef=cW.color(ed,ec,ea,ei);var eb=cW.red(ef)/bJ;var ee=cW.green(ef)/bI;var eg=cW.blue(ef)/bG;var eh=cW.alpha(ef)/bU;bf=function(em){var el=em.data,ek=4*em.width*em.height;for(var ej=0;ej=ea){break}ep=0}for(ex=ep;ex=ea){break}ee=(ev+eB)*4;es=eg[ex];er+=es*ed[ee+3];ef+=es*ed[ee];el+=es*ed[ee+1];eq+=es*ed[ee+2];ec+=es;ev++}en=eB+ek;eC[en]=er/ec;eu[en]=ef/ec;eD[en]=el/ec;eh[en]=eq/ec}eB+=ea}eB=0;ez=-em;ey=ez*ea;for(ej=0;ej=eb){break}ep=0;en=ez;ev=ek+ey}for(ex=ep;ex=eb){break}es=eg[ex];er+=es*eC[ev];ef+=es*eu[ev];el+=es*eD[ev];eq+=es*eh[ev];ec+=es;en++;ev+=ea}ee=(ek+eB)*4;ed[ee]=ef/ec;ed[ee+1]=el/ec;ed[ee+2]=eq/ec;ed[ee+3]=er/ec}eB+=ea;ey+=ea;ez++}};var cf=function(er,el){var eh=0;var ev=el.pixels.getLength();var em=new K(ev);var ep,eb,ek,ej,ed;var eq,ee,eg,ei,ec,en,eu,ea,es,ef,et,eo;if(!er){while(eh=eb){eq=eh}if(eg<0){eg=0}if(ei>=ev){ei=eh}eu=el.pixels.getPixel(eg);en=el.pixels.getPixel(ee);ea=el.pixels.getPixel(ei);ec=el.pixels.getPixel(eq);ed=77*(ek>>16&255)+151*(ek>>8&255)+28*(ek&255);ef=77*(en>>16&255)+151*(en>>8&255)+28*(en&255);es=77*(ec>>16&255)+151*(ec>>8&255)+28*(ec&255);et=77*(eu>>16&255)+151*(eu>>8&255)+28*(eu&255);eo=77*(ea>>16&255)+151*(ea>>8&255)+28*(ea&255);if(ef>ed){ej=en;ed=ef}if(es>ed){ej=ec;ed=es}if(et>ed){ej=eu;ed=et}if(eo>ed){ej=ea;ed=eo}em[eh++]=ej}}}else{while(eh=eb){eq=eh}if(eg<0){eg=0}if(ei>=ev){ei=eh}eu=el.pixels.getPixel(eg);en=el.pixels.getPixel(ee);ea=el.pixels.getPixel(ei);ec=el.pixels.getPixel(eq);ed=77*(ek>>16&255)+151*(ek>>8&255)+28*(ek&255);ef=77*(en>>16&255)+151*(en>>8&255)+28*(en&255);es=77*(ec>>16&255)+151*(ec>>8&255)+28*(ec&255);et=77*(eu>>16&255)+151*(eu>>8&255)+28*(eu&255);eo=77*(ea>>16&255)+151*(ea>>8&255)+28*(ea&255);if(ef>16&255)+151*(ef>>8&255)+28*(ef&255)>>8;ek.pixels.setPixel(ej,ef&4278190080|eb<<16|eb<<8|eb)}}break;case 13:for(ej=0;ej255){throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)"}var ei=ep-1;for(ej=0;ej>16&255;var en=ek.pixels.getPixel(ej)>>8&255;var ec=ek.pixels.getPixel(ej)&255;ea=(ea*ep>>8)*255/ei;en=(en*ep>>8)*255/ei;ec=(ec*ep>>8)*255/ei;ek.pixels.setPixel(ej,4278190080&ek.pixels.getPixel(ej)|ea<<16|en<<8|ec)}break;case 14:for(ej=0;ej1){throw"Level must be between 0 and 1 for filter(THRESHOLD, level)"}var ee=cW.floor(eg*255);for(ej=0;ej>16,cW.max((ek.pixels.getPixel(ej)&65280)>>8,ek.pixels.getPixel(ej)&255));ek.pixels.setPixel(ej,ek.pixels.getPixel(ej)&4278190080|(eoel){ea=el}}else{var ek=el+ec-en;if(ea>ek){ea=ek}}if(egee){eh=ee}}else{var ed=ee+ej-eg;if(eh>ed){eh=ed}}return !(ea<=0||eh<=0)};var dS={};dS[1]=cW.modes.blend;dS[2]=cW.modes.add;dS[4]=cW.modes.subtract;dS[8]=cW.modes.lightest;dS[16]=cW.modes.darkest;dS[0]=cW.modes.replace;dS[32]=cW.modes.difference;dS[64]=cW.modes.exclusion;dS[128]=cW.modes.multiply;dS[256]=cW.modes.screen;dS[512]=cW.modes.overlay;dS[1024]=cW.modes.hard_light;dS[2048]=cW.modes.soft_light;dS[4096]=cW.modes.dodge;dS[8192]=cW.modes.burn;cW.blit_resize=function(en,ez,et,ey,es,eE,ej,er,ex,eo,ew,em,ep){var eC,eB;if(ez<0){ez=0}if(et<0){et=0}if(ey>=en.width){ey=en.width-1}if(es>=en.height){es=en.height-1}var eI=ey-ez;var eN=es-et;var ea=ew-ex;var ek=em-eo;if(ea<=0||ek<=0||eI<=0||eN<=0||ex>=ej||eo>=er||ez>=en.width||et>=en.height){return}var eh=q.floor(eI/ea*32768);var ee=q.floor(eN/ek*32768);var eG=cW.shared;eG.srcXOffset=q.floor(ex<0?-ex*eh:ez*32768);eG.srcYOffset=q.floor(eo<0?-eo*ee:et*32768);if(ex<0){ea+=ex;ex=0}if(eo<0){ek+=eo;eo=0}ea=q.min(ea,ej-ex);ek=q.min(ek,er-eo);var eu=eo*ej+ex;var eQ;eG.srcBuffer=en.imageData.data;eG.iw=en.width;eG.iw1=en.width-1;eG.ih1=en.height-1;var ev=cW.filter_bilinear,eK=cW.filter_new_scanline,ei=dS[ep],eH,eM,eF,eJ,ec,ed,eb=4278190080,eL=16711680,eA=65280,eg=255,eP=32767,eD=15,el=1,eq=9,ef=eG.srcBuffer,eO=q.min;for(eB=0;eB>eD)*eG.iw;eG.v2=eO((eG.srcYOffset>>eD)+1,eG.ih1)*eG.iw;for(eC=0;eC>eD;eG.ll=eG.ifU*eG.fracV>>eD;eG.ur=eG.fracU*eG.ifV>>eD;eG.lr=eG.fracU*eG.fracV>>eD;eG.u1=eG.sX>>eD;eG.u2=eO(eG.u1+1,eG.iw1);eF=(eG.v1+eG.u1)*4;eJ=(eG.v1+eG.u2)*4;ec=(eG.v2+eG.u1)*4;ed=(eG.v2+eG.u2)*4;eG.cUL=ef[eF+3]<<24&eb|ef[eF]<<16&eL|ef[eF+1]<<8&eA|ef[eF+2]⪚eG.cUR=ef[eJ+3]<<24&eb|ef[eJ]<<16&eL|ef[eJ+1]<<8&eA|ef[eJ+2]⪚eG.cLL=ef[ec+3]<<24&eb|ef[ec]<<16&eL|ef[ec+1]<<8&eA|ef[ec+2]⪚eG.cLR=ef[ed+3]<<24&eb|ef[ed]<<16&eL|ef[ed+1]<<8&eA|ef[ed+2]⪚eG.r=eG.ul*((eG.cUL&eL)>>16)+eG.ll*((eG.cLL&eL)>>16)+eG.ur*((eG.cUR&eL)>>16)+eG.lr*((eG.cLR&eL)>>16)<>>eD&eA;eG.b=eG.ul*(eG.cUL&eg)+eG.ll*(eG.cLL&eg)+eG.ur*(eG.cUR&eg)+eG.lr*(eG.cLR&eg)>>>eD;eG.a=eG.ul*((eG.cUL&eb)>>>24)+eG.ll*((eG.cLL&eb)>>>24)+eG.ur*((eG.cUR&eb)>>>24)+eG.lr*((eG.cLR&eb)>>>24)<>>16;eE[eM+1]=(eH&eA)>>>8;eE[eM+2]=eH⪚eE[eM+3]=(eH&eb)>>>24;eG.sX+=eh}eu+=ej;eG.srcYOffset+=ee}};cW.loadFont=function(eb,ec){if(eb===t){throw"font name required in loadFont."}if(eb.indexOf(".svg")===-1){if(ec===t){ec=W.size}return H.get(eb,ec)}var ea=cW.loadGlyphs(eb);return{name:eb,css:"12px sans-serif",glyph:true,units_per_em:ea.units_per_em,horiz_adv_x:1/ea.units_per_em*ea.horiz_adv_x,ascent:ea.ascent,descent:ea.descent,width:function(eh){var ef=0;var ed=eh.length;for(var ee=0;ee":return ea.greater;case"?":return ea.question;case"@":return ea.at;case"[":return ea.bracketleft;case"\\":return ea.backslash;case"]":return ea.bracketright;case"^":return ea.asciicircum;case"`":return ea.grave;case"{":return ea.braceleft;case"|":return ea.bar;case"}":return ea.braceright;case"~":return ea.asciitilde;default:return ea[eb]}}catch(ec){F.debug(ec)}};bR.prototype.text$line=function(ei,el,ek,ej,ef){var eh=0,eg=0;if(!W.glyph){if(ei&&"fillText" in d8){if(aq){d8.fillStyle=cW.color.toString(a1);aq=false}if(ef===39||ef===3){eh=W.measureTextWidth(ei);if(ef===39){eg=-eh}else{eg=-eh/2}}d8.fillText(ei,el+eg,ek)}}else{var ea=cW.glyphTable[Y];aD();d8.translate(el,ek+d0);if(ef===39||ef===3){eh=ea.width(ei);if(ef===39){eg=-eh}else{eg=-eh/2}}var em=ea.units_per_em,ee=1/em*d0;d8.scale(ee,ee);for(var eb=0,ec=ei.length;eben){return}var em=-1;var ee=0;var ea=0;var eg=[];for(var ef=0,es=eq.length;ef0){em=ef}else{return}}if(eh==="\n"){eg.push({text:eq.substring(ee,ef),width:ea});ee=ef+1}else{eg.push({text:eq.substring(ee,em+1),width:ea});ee=em+1}ea=0;ef=ee-1}}if(eeen-dA){break}ed=eg[ec];dY.text$line(ed.text,el+eu,ek+ei+et,ej,N)}}cW.text=function(){if(cI===5){return}if(arguments.length===3){bi(bu(arguments[0]),arguments[1],arguments[2],0)}else{if(arguments.length===4){bi(bu(arguments[0]),arguments[1],arguments[2],arguments[3])}else{if(arguments.length===5){bd(bu(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0)}else{if(arguments.length===6){bd(bu(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])}}}}};cW.textMode=function(ea){cI=ea};cW.loadGlyphs=function(eg){var ei,eh,ee,ec,ep,eo,en,eq,ek,er,el,em="[0-9\\-]+",ej;var ef=function(ex,ew){var eu=0,et=[],es,ev=new RegExp(ex,"g");es=et[eu]=ev.exec(ew);while(es){eu++;es=et[eu]=ev.exec(ew)}return et};var eb=function(ex){var ey=ef("[A-Za-z][0-9\\- ]+|Z",ex);var ew=function(){aD();return dY.$ensureContext()};var eu=function(){bn();dd();cP()};ej="return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";ei=0;eh=0;ee=0;ec=0;ep=0;eo=0;ex=0;eq=0;ek="";er=ey.length-1;for(var et=0;et([=]?)/g,aa)}while(Z);var bk=aE(aA);var al;var aJ={},a9,az=0;function bc(br,bq){var bs=bk.length;bk.push(br);return'"'+bq+bs+'"'}function a7(){return"class"+ ++az}function bl(br,bs,bq){br.classId=bs;br.scopeId=bq;aJ[bs]=br}var V,S,ap,aV,bi,aZ;var O=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)(class|interface)\s+([A-Za-z_$][\w$]*\b)(\s+extends\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?(\s+implements\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?\s*("A\d+")/g;var bb=/\b((?:(?:public|private|final|protected|static|abstract|synchronized)\s+)*)((?!(?:else|new|return|throw|function|public|private|protected)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+"|;)/g;var aM=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:else|new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*(?:"C\d+"\s*)*([=,]|$)/;var bm=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+")/g;var W=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*/;var au=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;function ae(br){var bq=br;bq=bq.replace(O,function(bs){return bc(bs,"E")});bq=bq.replace(bb,function(bs){return bc(bs,"D")});bq=bq.replace(au,function(bs){return bc(bs,"H")});return bq}function bd(bs,br){var bq=bs.replace(bm,function(bx,bu,bv,by,bw,bt){if(bv!==br){return bx}return bc(bx,"G")});return bq}function aH(bq){this.name=bq}aH.prototype.toString=function(){return this.name};function ao(br,bq){this.params=br;this.methodArgsParam=bq}ao.prototype.getNames=function(){var bs=[];for(var br=0,bq=this.params.length;br=0){bu=new aH(bv[1]);break}bq.push(new aH(bv[1]))}}return new ao(bq,bu)}function aq(bu){var bt=bu;bt=bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"C\d+")+\s*("A\d+")/g,function(bw,bv,bx){return bx});bt=bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"B\d+")\s*("A\d+")/g,function(bw,bv,bx){return bc(bw,"F")});bt=bt.replace(au,function(bv){return bc(bv,"H")});bt=bt.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*("C\d+"(?:\s*"C\d+")*)/g,function(bA,bz,bx){var bw=bx.replace(/"C(\d+)"/g,function(bC,bB){return bk[bB]}).replace(/\[\s*\]/g,"[null]").replace(/\s*\]\s*\[\s*/g,", ");var by="{"+bw.substring(1,bw.length-1)+"}";var bv="('"+bz+"', "+bc(by,"A")+")";return"$p.createJavaArray"+bc(bv,"B")});bt=bt.replace(/(\.\s*length)\s*"B\d+"/g,"$1");bt=bt.replace(/#([0-9A-Fa-f]{6})\b/g,function(bv,bw){return"0xFF"+bw});bt=bt.replace(/"B(\d+)"(\s*(?:[\w$']|"B))/g,function(by,bw,bx){var bz=bk[bw];if(!/^\(\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\s*(?:"C\d+"\s*)*\)$/.test(bz)){return by}if(/^\(\s*int\s*\)$/.test(bz)){return"(int)"+bx}var bv=bz.split(/"C(\d+)"/g);if(bv.length>1){if(!/^\[\s*\]$/.test(bk[bv[1]])){return by}}return""+bx});bt=bt.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(bw,bv){var bx=aP(bv);return bx.untrim("__int_cast("+bx.middle+")")});bt=bt.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");bt=bt.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(bx,bw,bv){if(bw===bv){return bx}return bv===""?"0"+bw:bw});bt=bt.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");bt=bt.replace(/([^\s])%([^=\s])/g,"$1 % $2");bt=bt.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");bt=bt.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(bw,bv){return"parse"+bv.substring(0,1).toUpperCase()+bv.substring(1)+'"B'});bt=bt.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(bw,bA,bv,bz,by,bB){if(bv){var bx=bk[bz];if(by){return"pixels.setPixel"+bc("("+bx.substring(1,bx.length-1)+","+bB+")","B")}return"pixels.getPixel"+bc("("+bx.substring(1,bx.length-1)+")","B")}if(bA){return"pixels.getLength"+bc("()","B")}if(by){return"pixels.set"+bc("("+bB+")","B")}return"pixels.toArray"+bc("()","B")});var bs;function br(bw,bv,bA,by){var bx=bk[by];bs=true;var bz=aP(bx.substring(1,bx.length-1));return"__"+bA+(bz.middle===""?bc("("+bv.replace(/\.\s*$/,"")+")","B"):bc("("+bv.replace(/\.\s*$/,"")+","+bz.middle+")","B"))}do{bs=false;bt=bt.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt|matches)\s*"B(\d+)"/g,br)}while(bs);function bq(bx,bv,bw){bs=true;return"__instanceof"+bc("("+bv+", "+bw+")","B")}do{bs=false;bt=bt.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g,bq)}while(bs);bt=bt.replace(/\bthis(\s*"B\d+")/g,"$$constr$1");return bt}function aC(br,bq){this.baseInterfaceName=br;this.body=bq;bq.owner=this}aC.prototype.toString=function(){return"new ("+this.body+")"};function ai(bs){var br=(new RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/)).exec(bs);var bv=a9,bu=a7();a9=bu;var bq=br[1]+"$"+bu;var bt=new aC(bq,V(bk[br[2]],bq,"","implements "+br[1]));bl(bt,bu,bv);a9=bv;return bt}function af(br,bs,bq){this.name=br;this.params=bs;this.body=bq}af.prototype.toString=function(){var bs=al;var bt=av({"this":null},this.params.getNames());al=function(bu){return bt.hasOwnProperty(bu.name)?bu.name:bs(bu)};var br="function";if(this.name){br+=" "+this.name}var bq=this.params.prependMethodArgs(this.body.toString());br+=this.params+" "+bq;al=bs;return br};function aK(br){var bq=(new RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/)).exec(br);return new af(bq[1]!=="function"?bq[1]:null,aD(bk[bq[2]]),ap(bk[bq[3]]))}function ad(bq){this.members=bq}ad.prototype.toString=function(){var bs=al;al=function(bu){return bu.name==="this"?"this":bs(bu)};var bq="";for(var bt=0,br=this.members.length;bt=0){bq=bq.substring(0,bq.indexOf("="))}return"("+bq+" in "+this.container+")"};function aY(br,bq){this.initStatement=br;this.container=bq}aY.iteratorId=0;aY.prototype.toString=function(){var bu=this.initStatement.toString();var br="$it"+aY.iteratorId++;var bt=bu.replace(/^\s*var\s*/,"").split("=")[0];var bs="var "+br+" = new $p.ObjectIterator("+this.container+"), "+bt+" = void(0)";var bq=br+".hasNext() && (("+bt+" = "+br+".next()) || true)";return"("+bs+"; "+bq+";)"};function Y(br){var bq;if(/\bin\b/.test(br)){bq=br.substring(1,br.length-1).split(/\bin\b/g);return new aS(bn(a6(bq[0])),aZ(bq[1]))}if(br.indexOf(":")>=0&&br.indexOf(";")<0){bq=br.substring(1,br.length-1).split(":");return new aY(bn(a6(bq[0])),aZ(bq[1]))}bq=br.substring(1,br.length-1).split(";");return new a1(bn(a6(bq[0])),aZ(bq[1]),aZ(bq[2]))}function a2(bq){bq.sort(function(bs,br){return br.weight-bs.weight})}function ab(bs,bq,br){this.name=bs;this.body=bq;this.isStatic=br;bq.owner=this}ab.prototype.toString=function(){return""+this.body};function an(bs,bq,br){this.name=bs;this.body=bq;this.isStatic=br;bq.owner=this}an.prototype.toString=function(){return""+this.body};function T(bs){var br=O.exec(bs);O.lastIndex=0;var bt=br[1].indexOf("static")>=0;var bq=bk[aQ(br[6])],bv;var bw=a9,bu=a7();a9=bu;if(br[2]==="interface"){bv=new ab(br[3],S(bq,br[3],br[4]),bt)}else{bv=new an(br[3],V(bq,br[3],br[4],br[5]),bt)}bl(bv,bu,bw);a9=bw;return bv}function ac(bs,bt,bq,br){this.name=bs;this.params=bt;this.body=bq;this.isStatic=br}ac.prototype.toString=function(){var bt=av({},this.params.getNames());var bs=al;al=function(bu){return bt.hasOwnProperty(bu.name)?bu.name:bs(bu)};var br=this.params.prependMethodArgs(this.body.toString());var bq="function "+this.methodId+this.params+" "+br+"\n";al=bs;return bq};function P(bt){var br=bb.exec(bt);bb.lastIndex=0;var bs=br[1].indexOf("static")>=0;var bq=br[6]!==";"?bk[aQ(br[6])]:"{}";return new ac(br[3],aD(bk[aQ(br[4])]),ap(bq),bs)}function am(bs,br,bq){this.definitions=bs;this.fieldType=br;this.isStatic=bq}am.prototype.getNames=function(){var bs=[];for(var br=0,bq=this.definitions.length;br=0;var bt=bv.substring(bu[0].length).split(/,\s*/g);var br=aT(bu[2]);for(var bs=0;bs0){bx+=this.functions.join("\n")+"\n"}a2(this.innerClasses);for(bM=0,bK=this.innerClasses.length;bM0){bx+=this.cstrs.join("\n")+"\n"}bx+="function $constr() {\n";var bQ=[];for(bM=0,bK=this.cstrs.length;bM=":"===")+" "+bO+") { $constr_"+bO+".apply("+bG+", arguments); }")}if(bQ.length>0){bx+=bQ.join(" else ")+" else "}bx+="$superCstr();\n}\n";bx+="$constr.apply(null, arguments);\n";al=bR;return"(function() {\nfunction "+bs+"() {\n"+bx+"}\n"+bH+bz+"return "+bs+";\n})()"};V=function(bz,br,bq,bC){var bE=bz.substring(1,bz.length-1);bE=ae(bE);bE=bd(bE,br);var bs=[],bt=[],bD=[],bw=[];bE=bE.replace(/"([DEGH])(\d+)"/g,function(bH,bG,bF){if(bG==="D"){bs.push(bF)}else{if(bG==="E"){bt.push(bF)}else{if(bG==="H"){bw.push(bF)}else{bD.push(bF)}}}return""});var by=bE.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var bx,bv;var bu;if(bq!==t){bx=bq.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1")}if(bC!==t){bv=bC.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g)}for(bu=0;bu0){for(bv=0,bt=bw.length;bv0){by.interfaces=bC}}}}}function a8(bq){var bv=[],bs={};var br,by,bw;for(br in aJ){if(aJ.hasOwnProperty(br)){bw=aJ[br];if(!bw.inScope&&!bw.derived){bv.push(br);bw.weight=0}else{var bx=[];if(bw.inScope){for(by in bw.inScope){if(bw.inScope.hasOwnProperty(by)){bx.push(bw.inScope[by])}}}if(bw.derived){bx=bx.concat(bw.derived)}bs[br]=bx}}}function bz(bB,bD){var bA=bs[bB];if(!bA){return false}var bC=bA.indexOf(bD);if(bC<0){return false}bA.splice(bC,1);if(bA.length>0){return false}delete bs[bB];return true}while(bv.length>0){br=bv.shift();bw=aJ[br];if(bw.scopeId&&bz(bw.scopeId,bw)){bv.push(bw.scopeId);aJ[bw.scopeId].weight=bw.weight+1}if(bw.base&&bz(bw.base.classId,bw)){bv.push(bw.base.classId);bw.base.weight=bw.weight+1}if(bw.interfaces){var bu,bt;for(bu=0,bt=bw.interfaces.length;buaG){aF=aG-aH}}aB.height=aF/aG*100+"%";ap()},az=[aj(ao,"mousemove",function(aF){if(aD){aA(ad.innerHeight-aF.clientY);au.scrollTop=aq}}),aj(ao,"mouseup",function(){if(aD){aD=aq=N}}),aj(aC,"dblclick",function(aF){aF.preventDefault();if(av){aA(av);av=N}else{av=ar.clientHeight;aB.height="0px"}}),aj(aC,"mousedown",function(aF){aF.preventDefault();aD=S;aq=au.scrollTop}),aj(aC,"contextmenu",function(){aD=N}),aj(at,"click",function(){aw()})];aw=function(){var aF=az.length;while(aF--){V.apply(T,az[aF])}al.removeChild(ar);U.paddingBottom=ax;aa(au);aa(ar);T[P]=X};W(ar,ab,au,ae,aC,ai,at,an);at[ag]="Close Log";ak(at,Z("\u2716"));aC[ag]="Double-click to toggle log minimization";al.insertBefore(ar,al.firstChild);T[P]=function(aH){if(ay===O){au.removeChild(au.firstChild)}else{ay++}var aG=ak(au,ah(am)),aF=ak(aG,ah(am));aG[ag]=(new Date).toLocaleTimeString();W(aG,Y,aF,af);ak(aF,Z(aH));au.scrollTop=au.scrollHeight};T[P](aE);ap()}})()}else{if(typeof print===R){T[P]=print}}}return T}();F.logger=j;F.version="1.4.1";F.lib={};F.registerLibrary=function(N,O){F.lib[N]=O;if(O.hasOwnProperty("init")){O.init(g)}};F.instances=k;F.getInstanceById=function(N){return k[J[N]]};F.Sketch=function(N){this.attachFunction=N;this.options={pauseOnBlur:false,globalKeyEvents:false};this.onLoad=G;this.onSetup=G;this.onPause=G;this.onLoop=G;this.onFrameStart=G;this.onFrameEnd=G;this.onExit=G;this.params={};this.imageCache={pending:0,images:{},operaCache:{},add:function(P,O){if(this.images[P]){return}if(!n){this.images[P]=null}if(!O){O=new Image;O.onload=function(R){return function(){R.pending--}}(this);this.pending++;O.src=P}this.images[P]=O;if(D.opera){var Q=d.createElement("div");Q.appendChild(O);Q.style.position="absolute";Q.style.opacity=0;Q.style.width="1px";Q.style.height="1px";if(!this.operaCache[P]){d.body.appendChild(Q);this.operaCache[P]=Q}}}};this.sourceCode=undefined;this.attach=function(P){if(typeof this.attachFunction==="function"){this.attachFunction(P)}else{if(this.sourceCode){var O=(new Function("return ("+this.sourceCode+");"))();O(P);this.attachFunction=O}else{throw"Unable to attach sketch to the processing instance"}}};this.toString=function(){var O;var P="((function(Sketch) {\n";P+="var sketch = new Sketch(\n"+this.sourceCode+");\n";for(O in this.options){if(this.options.hasOwnProperty(O)){var Q=this.options[O];P+="sketch.options."+O+" = "+(typeof Q==="string"?'"'+Q+'"':""+Q)+";\n"}}for(O in this.imageCache){if(this.options.hasOwnProperty(O)){P+='sketch.imageCache.add("'+O+'");\n'}}P+="return sketch;\n})(Processing.Sketch))";return P}};var v=function(Q,N){var O=[],U=[],V=N.length,S=0;function T(W,Y){var X=new XMLHttpRequest;X.onreadystatechange=function(){if(X.readyState===4){var Z;if(X.status!==200&&X.status!==0){Z="Invalid XHR status "+X.status}else{if(X.responseText===""){if("withCredentials" in new XMLHttpRequest&&(new XMLHttpRequest).withCredentials===false&&D.location.protocol==="file:"){Z="XMLHttpRequest failure, possibly due to a same-origin policy violation. You can try loading this page in another browser, or load it from http://localhost using a local webserver. See the Processing.js README for a more detailed explanation of this problem and solutions."}else{Z="File is empty."}}}Y(X.responseText,Z)}};X.open("GET",W,true);if(X.overrideMimeType){X.overrideMimeType("application/json")}X.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");X.send(null)}function P(X,W){function Z(ac,aa){O[X]=ac;++S;if(aa){U.push(W+" ==> "+aa)}if(S===V){if(U.length===0){try{return new F(Q,O.join("\n"))}catch(ab){throw"Processing.js: Unable to execute pjs sketch: "+ab}}else{throw"Processing.js: Unable to load pjs sketch files: "+U.join("\n")}}}if(W.charAt(0)==="#"){var Y=d.getElementById(W.substring(1));if(Y){Z(Y.text||Y.textContent)}else{Z("","Unable to load pjs sketch: element with id '"+W.substring(1)+"' was not found")}return}T(W,Z)}for(var R=0;R=0;ac--){Q.push(ab[ac])}for(ac=0,aa=Q.length;ac0){for(var N=k.length-1;N>=0;N--){if(k[N]){k[N].exit()}}}I()};F.loadSketchFromSources=v;F.disableInit=function(){if(n){d.removeEventListener("DOMContentLoaded",I,false)}};if(n){D.Processing=F;d.addEventListener("DOMContentLoaded",I,false)}else{this.Processing=F}})(window,window.document,Math); From 57e01f5545e01c25021fe1b235f625293b310934 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 20:15:51 -0800 Subject: [PATCH 071/772] p5 testing --- generate/examples.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/generate/examples.php b/generate/examples.php index ec463fdb0..6d2374a63 100644 --- a/generate/examples.php +++ b/generate/examples.php @@ -114,8 +114,7 @@ function get_examples_list($exstr){ if ($c->childCount > 0) { foreach ($c->childNodes as $s) { - echo ($s->hasAttribute("p5")) ; - if ($s->nodeType == 1 && $s->hasAttribute("p5")) { + if ($s->nodeType == 1 && $s->hasAttribute("p5")) { //SM hasAttribute seems to have no effect here $my_cats[$name][$s->getAttribute('file')] = trim($s->firstChild->nodeValue); } } From 9a479da169f337183a7d14fb22f51d90db2fcd8b Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 28 Nov 2015 20:16:08 -0800 Subject: [PATCH 072/772] Added new p5 flag to examples XML files --- content/examples_basics.xml | 174 +++++++++++++++++++----------------- content/examples_topics.xml | 106 ++++++++++++++-------- 2 files changed, 163 insertions(+), 117 deletions(-) diff --git a/content/examples_basics.xml b/content/examples_basics.xml index 0aceb341f..b49c92c6c 100644 --- a/content/examples_basics.xml +++ b/content/examples_basics.xml @@ -1,53 +1,55 @@ - Statements and Comments - Coordinates - Width and Height - Setup and Draw - No Loop - Loop - Redraw - Functions - Recursion - CreateGraphics + Statements and Comments + Coordinates + Width and Height + Setup and Draw + No Loop + Loop + Redraw + Functions + Recursion + CreateGraphics - Points and Lines - Shape Primitives - Pie Chart - Regular Polygon - Star - Triangle Strip - Bezier + Points and Lines + Shape Primitives + Pie Chart + Regular Polygon + Star + Triangle Strip + Bezier 3D Primitives - Variables - Integers and Floats - True/False - Characters and Strings - Variable Scope + Variables + Integers and Floats + True/False + Characters and Strings + Variable Scope + Datatype Conversion - Array - Array 2D - Array Objects + Array + Array 2D + Array Objects - Iteration - Embedded Iteration - Conditionals 1 - Conditionals 2 - Logical Operators + Iteration + Embedded Iteration + Conditionals 1 + Conditionals 2 + Logical Operators - Load and Display Image - Background Image - Transparency - Alphamask - CreateImage - Pointillism + Load and Display Image + Background Image + Transparency + Alphamask + CreateImage + Pointillism + Request Image Load and Display SVG @@ -56,62 +58,74 @@ Get Child - Hue - Saturation - Brightness - Color Variables - Relativity - Linear Gradient - Radial Gradient - Wave Gradient + Hue + Saturation + Brightness + Color Variables + Relativity + Linear Gradient + Radial Gradient + Wave Gradient - Increment/Decrement - Operator Precedence - Distance 1D - Distance 2D + Increment/Decrement + Operator Precedence + Distance 1D + Distance 2D Map - Sine - Sine and Cosine - Sine Wave - Additive Wave - Polar to Cartesian - Arctangent - Graphing 2D Equation - Random - Double Random - Noise 1D - NoiseWave + Sine + Sine and Cosine + Sine Wave + Additive Wave + Polar to Cartesian + Arctangent + Graphing 2D Equation + Interpolate + Random + Double Random + Random Gaussian + Noise 1D + Noise 2D + Noise 3D + NoiseWave - Mouse 1D - Mouse 2D - MousePress - Mouse Signals - Easing - Constrain - Storing Input - Mouse Functions - Keyboard - Keyboard Functions - Milliseconds - Clock + Mouse 1D + Mouse 2D + MousePress + Mouse Signals + Easing + Constrain + Storing Input + Mouse Functions + Keyboard + Keyboard Functions + Milliseconds + Clock - Translate - Scale - Rotate + Translate + Scale + Rotate RotateXY RotatePushPop - Arm + Arm - Objects - Multiple Constructors - Composite Objects - Inheritance + Objects + Multiple Constructors + Composite Objects + Inheritance - + + Letters + Words + + + Embedded Links + Loading Images + + On/Off Directional Spot diff --git a/content/examples_topics.xml b/content/examples_topics.xml index cc8c0f974..19c748d30 100755 --- a/content/examples_topics.xml +++ b/content/examples_topics.xml @@ -9,44 +9,65 @@ Icosahedra - Continuous Lines - Pattern - Pulses + Continuous Lines + Pattern + Pulses - Sequential - Animated Sprite + Sequential + Animated Sprite - Rollover - Button - Handles - Scrollbar + Rollover + Button + Handles + Scrollbar - Linear - Bounce - Bouncy Bubbles - Moving On Curves - Brownian + Linear + Bounce + Bouncy Bubbles + Moving On Curves + Brownian + Circle Collision + Morph + Reflection 1 + Reflection 2 - Tickle - Follow 1 - Follow 2 - Follow 3 - Reach 1 - Reach 2 - Reach 3 + Tickle + Follow 1 + Follow 2 + Follow 3 + Reach 1 + Reach 2 + Reach 3 - Pixel Array - Brightness - Blur - Edge Detection + Pixel Array + Brightness + Blur + Edge Detection + Convolution + Histogram + Linear Image Zoom Explode + + Array List Class + Int List Lottery + Load Save JSON + Load Save Table + Load Save XML + XML Yahoo Weather + + + Load File 1 + Load File 2 + Save File 1 + Save One Frame + Texture Quad Texture Triangle @@ -54,22 +75,33 @@ Texture Cube - Spring - Springs - Chain + Spring + Springs + Chain Soft Body - Flocking - Simple Particle System - Multiple Particle Systems + Flocking + Simple Particle System + Multiple Particle Systems + Forces With Vectors + Smoke Particle System + + + Bouncing Ball + Vector Math + Acceleration With Vectors - Mandelbrot - Tree + Mandelbrot + Tree + Koch + Penrose Snowflake + Penrose Tile + Pentigree - - Wolframs's 1D CA - Conway's Game of Life - Spore 1 + + Wolframs's 1D CA + Conway's Game of Life + Spore 1 Spore 2 From 718d25a25eebb8483e65aa058f54f2f7b2b47871 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 29 Nov 2015 11:35:05 -0500 Subject: [PATCH 073/772] Added SimpleTouch for rPi. Re-enabled PathFinder. --- contrib_generate/sources.conf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index fabbbbed0..28c92170e 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 171 +# Next ID: 172 # Increment after assigning ID to new contribution [Library : 3D] @@ -106,6 +106,7 @@ 143 \ http://www.lagers.org.uk/processing/gamecontrol/GameControlPlus.txt 167 \ http://www.lagers.org.uk/processing3/gamecontrol/GameControlPlus.txt 168 \ http://transfluxus.github.io/SimpleHTTPServer/download/SimpleHTTPServer.txt +171 \ http://sukzessiv.net/~gohai/p5-arm/processing-simpletouch.txt [Library : Language] 063 \ http://www.rednoise.org/rita/RiTa.txt @@ -121,7 +122,7 @@ 156 \ http://www.lagers.org.uk/processing/jasmine/Jasmine.txt [Library : Other] -# 093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt +093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt 157 \ http://www.lagers.org.uk/processing/steganos/Steganos.txt [Library : Simulation] From 9ebf38a0c90193c9aac7f602af15ef94198da22e Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 8 Dec 2015 16:37:32 -0800 Subject: [PATCH 074/772] Changes to attempt to get p5.js examples work online --- generate/lib/Example.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/generate/lib/Example.class.php b/generate/lib/Example.class.php index f3e94cf45..9569e7963 100644 --- a/generate/lib/Example.class.php +++ b/generate/lib/Example.class.php @@ -9,6 +9,7 @@ class Example var $applet; var $data_dir; var $doc; + var $pde_code; // CR -- I think SM left this out, needed based on his name changes var $p5_code; var $code_display; var $sub; From b08dbe48a9152d38c6af494773ce174a624c0e59 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 8 Dec 2015 16:57:07 -0800 Subject: [PATCH 075/772] Changes to attempt to get p5.js examples work online --- generate/lib/Example.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generate/lib/Example.class.php b/generate/lib/Example.class.php index 9569e7963..93ae4eb0f 100644 --- a/generate/lib/Example.class.php +++ b/generate/lib/Example.class.php @@ -120,7 +120,8 @@ function display() // Insert the p5 version of the example into the page //Container for example - $html = "\n
    "; + $html .= "\n
    "; + //$html = "\n
    "; // CR -- Change 8 Dec 2015 //Script tag for example $html .= ' - - + + + - + - + - + - + - + - + - + - + - + + +
    From 4b8ccab8c8eb1b2ec5a3e47ef9580ad6ab9effed Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 12:02:23 -0500 Subject: [PATCH 147/772] working on convolution example --- .../Topics/Image Processing/Convolution/Convolution.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js b/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js index 96a2ce29d..0c96bfe3b 100644 --- a/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js +++ b/content/examples_p5/Topics/Image Processing/Convolution/Convolution.js @@ -20,7 +20,7 @@ var matrix = [ [ -1, -1, -1 ] , function preload() { - img = loadImage("data/moon-wide.jpg"); + img = loadImage("moon-wide.jpg"); } function setup() { From 965be948890d3e6f682222cf655bd625517fa978 Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 12:14:24 -0500 Subject: [PATCH 148/772] getting more examples to work #154 --- .../Image Processing/Histogram/Histogram.js | 2 + .../LinearImage/LinearImage.js | 2 +- .../{CrazyParticle.js => ParticleCrazy.js} | 0 content/examples_p5/testing.html | 152 +++++++++++++++++- 4 files changed, 153 insertions(+), 3 deletions(-) rename content/examples_p5/Topics/Simulate/MultipleParticleSystems/{CrazyParticle.js => ParticleCrazy.js} (100%) diff --git a/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js b/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js index 4e3fd174b..b35c0d5cf 100644 --- a/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js +++ b/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js @@ -23,6 +23,8 @@ function preload() { } function setup() { + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); // Load an image from the data directory // Load a different image by modifying the comments image(img, 0, 0); diff --git a/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js b/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js index 0cdfff9d1..6fc66f0f8 100644 --- a/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js +++ b/content/examples_p5/Topics/Image Processing/LinearImage/LinearImage.js @@ -46,7 +46,7 @@ function draw() { else { var signalOffset = int(signal)*img.width; for (var y = 0; y < img.height; y++) { - //arrayCopy(img.pixels, signalOffset, pixels, y*width, img.width); + arrayCopy(img.pixels, signalOffset, pixels, y*width, img.width); } updatePixels(); } diff --git a/content/examples_p5/Topics/Simulate/MultipleParticleSystems/CrazyParticle.js b/content/examples_p5/Topics/Simulate/MultipleParticleSystems/ParticleCrazy.js similarity index 100% rename from content/examples_p5/Topics/Simulate/MultipleParticleSystems/CrazyParticle.js rename to content/examples_p5/Topics/Simulate/MultipleParticleSystems/ParticleCrazy.js diff --git a/content/examples_p5/testing.html b/content/examples_p5/testing.html index 8e3e79caa..14810ba47 100644 --- a/content/examples_p5/testing.html +++ b/content/examples_p5/testing.html @@ -2,7 +2,10 @@ - + From d07d35349c79ad9a8fb8901220418abc127f3374 Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 12:19:50 -0500 Subject: [PATCH 149/772] histogram example working now --- .../Image Processing/Histogram/Histogram.js | 19 ++++++++++++------- .../Image Processing/Histogram/testing.html | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js b/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js index b35c0d5cf..be7cf9eb9 100644 --- a/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js +++ b/content/examples_p5/Topics/Image Processing/Histogram/Histogram.js @@ -29,16 +29,21 @@ function setup() { // Load a different image by modifying the comments image(img, 0, 0); var hist = []; - loadPixels(); + for (var i = 0; i < 256; i++) { + hist[i] = 0; + } + img.loadPixels(); // Calculate the histogram for (var i = 0; i < img.width; i++) { for (var j = 0; j < img.height; j++) { - var c = get(i,j); - var col = color(c[0],c[1],c[2]) - println(c,col); - var bright = brightness(col); - //hist[bright]++; - break; + var index = (i + j * img.width) * 4; + var r = img.pixels[index]; + var g = img.pixels[index+1]; + var b = img.pixels[index+2]; + //println(c,col); + var bright = floor((r+g+b)/3); + hist[bright]++; + //break; } } diff --git a/content/examples_p5/Topics/Image Processing/Histogram/testing.html b/content/examples_p5/Topics/Image Processing/Histogram/testing.html index 97bd3fa19..a73776eba 100644 --- a/content/examples_p5/Topics/Image Processing/Histogram/testing.html +++ b/content/examples_p5/Topics/Image Processing/Histogram/testing.html @@ -1,7 +1,7 @@ - - + + From e01750090304ec24f7b146b1fa250efd67bb31d6 Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 12:48:27 -0500 Subject: [PATCH 150/772] remove wavegradient example --- content/examples_basics.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples_basics.xml b/content/examples_basics.xml index b49c92c6c..8cd51923b 100644 --- a/content/examples_basics.xml +++ b/content/examples_basics.xml @@ -65,7 +65,7 @@ Relativity Linear Gradient Radial Gradient - Wave Gradient + Wave Gradient Increment/Decrement From 758e12672d91f8325886f032feb58b25dff51ab2 Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 12:51:08 -0500 Subject: [PATCH 151/772] adding map() example #154 --- content/examples_basics.xml | 2 +- content/examples_p5/Basics/Math/Map/Map.js | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 content/examples_p5/Basics/Math/Map/Map.js diff --git a/content/examples_basics.xml b/content/examples_basics.xml index 8cd51923b..402334c7c 100644 --- a/content/examples_basics.xml +++ b/content/examples_basics.xml @@ -72,7 +72,7 @@ Operator Precedence Distance 1D Distance 2D - Map + Map Sine Sine and Cosine Sine Wave diff --git a/content/examples_p5/Basics/Math/Map/Map.js b/content/examples_p5/Basics/Math/Map/Map.js new file mode 100644 index 000000000..7cad09d3c --- /dev/null +++ b/content/examples_p5/Basics/Math/Map/Map.js @@ -0,0 +1,25 @@ +/** + * Map. + * + * Use the map() function to take any number and scale it to a new number + * that is more useful for the project that you are working on. For example, use the + * numbers from the mouse position to control the size or color of a shape. + * In this example, the mouse’s x-coordinate (numbers between 0 and 360) are scaled to + * new numbers to define the color and size of a circle. + */ + +function setup() { + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); + noStroke(); +} + +function draw() { + background(0); + // Scale the mouseX value from 0 to 640 to a range between 0 and 175 + var c = map(mouseX, 0, width, 0, 175); + // Scale the mouseX value from 0 to 640 to a range between 40 and 300 + var d = map(mouseX, 0, width, 40, 300); + fill(255, c, 0); + ellipse(width/2, height/2, d, d); +} From ddfbacf28c94a3530728404c8ea289dad99786c0 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 24 Feb 2016 13:54:04 -0800 Subject: [PATCH 152/772] Updated Examples index page header to reflect WebGL is no longer used --- templates/template.examples.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/template.examples.html b/templates/template.examples.html index c20a3da2a..5973e8366 100644 --- a/templates/template.examples.html +++ b/templates/template.examples.html @@ -1,7 +1,7 @@

    Examples. Short, prototypical programs exploring the basics of programming with Processing.

    - These examples are running online through p5.js using HTML5 Canvas and WebGL for rendering. There are many more examples included with the Processing application; please look there if you don't find what you're looking for here. + These examples are running online through p5.js using HTML Canvas for rendering. There are many more examples included with the Processing application; please look there if you don't find what you're looking for here.

    content \ No newline at end of file From e251f5babe141199deb631e9d646cdafd171de5a Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Wed, 24 Feb 2016 21:31:18 -0500 Subject: [PATCH 153/772] fix noise3D #154 --- content/examples_p5/Basics/Math/Noise3D/Noise3D.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples_p5/Basics/Math/Noise3D/Noise3D.js b/content/examples_p5/Basics/Math/Noise3D/Noise3D.js index d45c65998..51e26c03d 100644 --- a/content/examples_p5/Basics/Math/Noise3D/Noise3D.js +++ b/content/examples_p5/Basics/Math/Noise3D/Noise3D.js @@ -15,7 +15,7 @@ function setup() { var canvas = createCanvas(640, 360); canvas.parent("p5container"); frameRate(30); - devicePixelScaling(false); + pixelDensity(1); } function draw() { From 47b58da6fe3599718767698282e4986a123be39f Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 25 Feb 2016 05:33:54 -0800 Subject: [PATCH 154/772] Added 'Data-driven Graphic Design' to Books page --- content/static/books.html | 78 +++++++++++++----- .../books/data-driven-graphic-design.jpg | Bin 0 -> 26453 bytes 2 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 img/learning/books/data-driven-graphic-design.jpg diff --git a/content/static/books.html b/content/static/books.html index 0fe961c54..c7e9cdcd6 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -150,7 +150,7 @@

    Books. Processing books cove alt="The SparkFun Guide to Processing"/>

    - - - + + - + + + + @@ -300,21 +304,53 @@

    Books. Processing books cove

    - - - + + + - + + + - + + + + + + + + + + + + + + + + @@ -431,6 +467,7 @@

    Books. Processing books cove

    From 83f78a028d559ad5cf8c9dbcd3fa2a4fe207c892 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 25 Feb 2016 05:49:43 -0800 Subject: [PATCH 156/772] Fixes #394, adds 'Programming for Artists' to the Books page --- content/static/books.html | 30 ++++++++++++++++++ .../books/programming-for-artists.jpg | Bin 0 -> 25715 bytes 2 files changed, 30 insertions(+) create mode 100644 img/learning/books/programming-for-artists.jpg diff --git a/content/static/books.html b/content/static/books.html index cb7a0a754..a61087fb5 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -560,6 +560,36 @@

    Books. Processing books cove
    There's additional information on the publisher's website. + + + +

    + + + + + + + + + + + + diff --git a/img/learning/books/programming-for-artists.jpg b/img/learning/books/programming-for-artists.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dce698ddf0204bcfaff2583118d2146e256fe876 GIT binary patch literal 25715 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 X=L6-W^6xeR_ok@tKKVp Date: Thu, 25 Feb 2016 05:51:17 -0800 Subject: [PATCH 157/772] Metadata fixes for Books page --- content/static/books.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index a61087fb5..29487bf92 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -327,7 +327,7 @@

    Books. Processing books cove

    - -
    Class

    The SparkFun Guide to Processing
    Derek Runberg.
    - 2015, No Starch Press. 232 pages.
    + 2015, No Starch Press. 232 pages. Paperback.
    » Order from Amazon.com
    The publisher writes, "The SparkFun Guide to Processing teaches you to craft your own digital artwork and even combine it with hardware—no prior programming experience required. Over the course of the book, you’ll learn the basics by drawing simple shapes, move on to photo editing and video manipulation, and ultimately affect the physical world by using Processing with an Arduino."
    @@ -274,10 +274,12 @@

    Books. Processing books cove

    Generative ArtGenerative Art
    +
    + Generative Art + + Generative Art
    Matt Pearson.
    Published March 2011, Manning Publications. 300 pages. Paperback.
    » Order from Amazon.com @@ -290,8 +292,10 @@

    Books. Processing books cove
  • Featuring the work of Robert Hodgin, Jared Tarbell, Aaron Koblin, Casey Reas and many more of the finest contemporary generative artists.
  • 32-page full-color section
  • Foreword by Marius Watz
  • -

    Algorithms for Visual Design Using the Processing LanguageAlgorithms for Visual Design Using the Processing Language
    - Kostas Terzidis.
    - Published May 2009, Wiley. 384 Pages. Hardcover.
    - » Order from Amazon.com -
    - The Wiley website says, "this book offers a series of generic procedures that can function as building blocks and encourages you to then use those building blocks to experiment, explore, and channel your thoughts, ideas, and principles into potential solutions. The book covers such topics as structured shapes, solid geometry, networking and databases, physical computing, image processing, graphic user interfaces, and more."
    + Algorithms for Visual Design Using the Processing Language + + Algorithms for Visual Design Using the Processing Language
    + Kostas Terzidis.
    + Published May 2009, Wiley. 384 Pages. Hardcover.
    + » Order from Amazon.com +
    + The Wiley website says, "this book offers a series of generic procedures that can function as building blocks and encourages you to then use those building blocks to experiment, explore, and channel your thoughts, ideas, and principles into potential solutions. The book covers such topics as structured shapes, solid geometry, networking and databases, physical computing, image processing, graphic user interfaces, and more." +

     

     

    + Data-driven Graphic Design: Creative Coding for Visual Communication + + Data-driven Graphic Design: Creative Coding for Visual Communication
    + Andrew Richardson.
    + Published January 2016, Bloomsbury. 224 Pages. Paperback.
    + » Order from Amazon.com +
    + The book description reads, "Data-driven Graphic Design introduces the creative potential of computational data and how it can be used to inform and create everything from typography, print and moving graphics to interactive design and physical installations. Using code as a creative environment allows designers to step outside the boundaries of commercial software tools, and create a set of unique, digitally informed pieces of work. The use of code offers a new way of thinking about and creating design for the digital environment.
    +
    + Each chapter begins with an 'Input' section, outlining key concepts and techniques. This is followed by an 'Output' section exploring a range of innovative projects through case studies and interviews with the artists and designers who created them. These provide an inspirational, real-world context for every technique. Finally each chapter concludes with 'Code & Technologies', guiding you through the process of experimenting with each technique yourself (with sample projects and code examples using the popular 'Processing' language supplied online to get you started)." +

     

     

    Making Things Talk: Using Sensors, Networks, and Arduino to see, hear, and feel your worldEinführung ins Programmieren mit Processing
    Matthias Wolf.
    Published August 2013. 178 pages. PDF, Paperback.
    + Text in German.
    » Order Print/EBook from lulu.com

    Die eigenständige Programmiersprache Processing basiert auf Java und ähnelt diesem sehr, verbirgt aber gleichzeitig viel von dessen Komplexität. Dadurch ist Processing für den Programmieranfänger ideal geeignet, um sich Konzepte des Programmierens zu erschließen und bewahrt gleichzeitig die Möglichkeit eines späteren Umstiegs. Dennoch ist die Sprache keineswegs nur für triviale Anfängeraufgaben geeignet: speziell im Bereich der graphischen Datenverarbeitung spielt Processing seine Stärken aus.

    @@ -472,6 +509,7 @@

    Books. Processing books cove Processing - eine Einführung in die Programmierung
    Andres Wanner (Chapters by Hans Peter Wyss, Roland Broennimann and Roman Schnyder).
    Version 1.1, Published May 2010, Lulu Press. 83 pages. Softcover.
    + Text in German.
    Order from lulu.com
    Book website

    @@ -518,7 +556,7 @@

    Books. Processing books cove

    Built with Processing
    Published March 2007, BNN. 232 pages. Softcover.
    - Text in Japanese
    + Text in Japanese.

    Note from Casey: "I received a copy of this book from the authors on a recent trip to Japan. It's a beautifully produced full-color book with sections introducing Processing, featuring work created with Processing (many are from the Exhibition section of the Processing website), and introducing programming through progressively complicated examples. The majority of the book is an introduction to programming. There are many good examples and the code is color-coded like in the Processing Environment. This book is less comprehensive than the Greenberg and Reas/Fry books, but it appears to be a good, brief introduction."

    @@ -537,8 +575,8 @@

    Books. Processing books cove
    - 10 PRINT CHR$(205.5+RND(1)); : GOTO 10By Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, Noah Vawter. Examples use Processing to explore a modern interpretation of a 1982 Commodore 64 program.
    - + 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
    By Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, Noah Vawter. Examples use Processing to explore a modern interpretation of a 1982 Commodore 64 program.
    +
    Make: Getting Started with Arduino
    By Massimo Banzi. Examples use Processing to communicate with an Arduino board.
    diff --git a/img/learning/books/data-driven-graphic-design.jpg b/img/learning/books/data-driven-graphic-design.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d04fcb2cd73857d5ef376de7fc5ecb1a4d61e22d GIT binary patch literal 26453 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 Date: Thu, 25 Feb 2016 05:36:55 -0800 Subject: [PATCH 155/772] Books page text edit --- content/static/books.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index c7e9cdcd6..cb7a0a754 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -336,9 +336,7 @@

    Books. Processing books cove Published January 2016, Bloomsbury. 224 Pages. Paperback.
    » Order from Amazon.com
    - The book description reads, "Data-driven Graphic Design introduces the creative potential of computational data and how it can be used to inform and create everything from typography, print and moving graphics to interactive design and physical installations. Using code as a creative environment allows designers to step outside the boundaries of commercial software tools, and create a set of unique, digitally informed pieces of work. The use of code offers a new way of thinking about and creating design for the digital environment.
    -
    - Each chapter begins with an 'Input' section, outlining key concepts and techniques. This is followed by an 'Output' section exploring a range of innovative projects through case studies and interviews with the artists and designers who created them. These provide an inspirational, real-world context for every technique. Finally each chapter concludes with 'Code & Technologies', guiding you through the process of experimenting with each technique yourself (with sample projects and code examples using the popular 'Processing' language supplied online to get you started)." + The book description reads, "Data-driven Graphic Design introduces the creative potential of computational data and how it can be used to inform and create everything from typography, print and moving graphics to interactive design and physical installations. Using code as a creative environment allows designers to step outside the boundaries of commercial software tools, and create a set of unique, digitally informed pieces of work. The use of code offers a new way of thinking about and creating design for the digital environment."

     

     

    + Programming for Artists + + Programming for Artists
    + Pavel A. Orlov.
    + Published 2015. 248 Pages. PDF.
    + Text in Russian.
    + » Download the book +
    + The author's website reads, "Летом 2015 года мне удалось подготовить к выходу в свет новую книгу, посвященную программированию для художников и дизайнеров. Книга рассматривает среду Processing как одну из самых простых и доступных в освоении. Я акцентировал внимание на том, что каждый человек, знакомый с азами математики, может научиться использовать программирование для своих творческих задач. Конечно, я говорю про активных дизайнеров, которые не боятся использовать и изучать новые для себя инструменты.
    +
    + Часто я слышу вопросы: “Зачем художнику нужно программировать? Почему нельзя просто взять и нарисовать от руки? А что, фотошоп отменили? Неужели у художников есть математическая логика?” Мне эти вопросы кажутся замечательными и напоминают художника в момент появления фотографии, когда художники спорили с фотографами примерно теми же словами, разве что слова фотошоп еще не было. И сейчас у нас развивается искусство фотографии бурным потоком. Более развернутый ответ вы можете найти во вступительной статье.
    +
    + Итак, представляю вашему вниманию книгу “Программирование для дизайнеров”. Книга вышла на русском языке при поддержке Европейского Союза, организации Темпус по проекту 544083 “Enhancement of Russian creative education: new Master program in Digital Arts in line with EU standards [ENMDA]”. Ее можно найти в библиотеках страны и несколько копий будет находиться в библиотеке политехнического университета. Выражаю благодарность кафедре инженерной графики и дизайна за помощь в издании, некоторые страницы печатного издания цветные, что приятно." +

     

     

    + Data-driven Graphic Design: Creative Coding for Visual Communication @@ -570,8 +570,8 @@

    Books. Processing books cove

    - Programming for Artists + + Programming for Artists Programming for Artists
    From 6ee64a1e979abbfd62ab75d64d668cdb28e82347 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 25 Feb 2016 05:56:26 -0800 Subject: [PATCH 158/772] Book cover format fix --- content/static/books.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/books.html b/content/static/books.html index 29487bf92..baf2041a2 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -571,7 +571,7 @@

    Books. Processing books cove

    - Programming for Artists + Programming for Artists Programming for Artists
    From 81973f00f21c081feb3be95c546f4aeb7caa43ba Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Fri, 26 Feb 2016 10:58:09 -0500 Subject: [PATCH 159/772] fixing amazon associates links for learning processing 2 --- content/static/books.html | 2 +- content/static/shop/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index baf2041a2..42f6c9b65 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -62,7 +62,7 @@

    Books. Processing books cove

    Learning Processing, Second Edition: A Beginner's Guide to Programming Images, Animation, and Interaction
    Daniel Shiffman.
    Published August 2015, Morgan Kaufmann. 564 pages. Paperback.
    - » Order from Amazon.com + » Order from Amazon.com
    The second edition of Learning Processing has been updated for compatibility with Processing 3 and includes several new chapters of content including video, sound, data visualization, and networking. For more, visit the Learning Processing website.

    diff --git a/content/static/shop/index.html b/content/static/shop/index.html index 64177106e..bcfd0ba95 100644 --- a/content/static/shop/index.html +++ b/content/static/shop/index.html @@ -114,7 +114,7 @@

    If you're interested in buying a book about Processing, Learning Processing, Second Edition: A Beginner's Guide to Programming Images, Animation, and Interaction
    Daniel Shiffman
    » More info
    - » Order from Amazon.com + » Order from Amazon.com

    From 2bbc5231b3df7e23a1be61a942b3f2589de1037c Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Fri, 26 Feb 2016 11:07:20 -0500 Subject: [PATCH 160/772] adding learningprocessing.com links back in #319 --- content/static/tutorials/anatomy/index.html | 2 +- content/static/tutorials/color/index.html | 4 ++-- content/static/tutorials/eclipse/index.html | 2 +- content/static/tutorials/objects/index.html | 2 +- content/static/tutorials/pixels/index.html | 20 ++++++++++---------- content/static/tutorials/text/index.html | 12 ++++++------ 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/content/static/tutorials/anatomy/index.html b/content/static/tutorials/anatomy/index.html index 39423e74e..6fe27c928 100644 --- a/content/static/tutorials/anatomy/index.html +++ b/content/static/tutorials/anatomy/index.html @@ -61,7 +61,7 @@

    Step 2: Some basic trigonometry

    So, if you have a line of length r starting at (0,0) at an angle theta (θ), what are its coordinates in terms of x and y? If you know a little bit of trigonometry, the answer is that the endpoint of the line is at (r cos θ, r sin θ). If you don’t know trigonometry, take a look at this tutorial (a general and very light introduction to - trigonometry), this tutorial (oriented towards Processing), and this example from chapter 13 of Learning Processing. In the following diagram, angles are drawn clockwise, which is how they are measured in Processing. + trigonometry), this tutorial (oriented towards Processing), and this example from chapter 13 of Learning Processing. In the following diagram, angles are drawn clockwise, which is how they are measured in Processing.

    Diagram of angle showing relationship of cosine and sine diff --git a/content/static/tutorials/color/index.html b/content/static/tutorials/color/index.html index 9828644ef..01ea93fcc 100644 --- a/content/static/tutorials/color/index.html +++ b/content/static/tutorials/color/index.html @@ -66,7 +66,7 @@

    RGB Color

    - + Example: RGB color
     background(255);  
    @@ -109,7 +109,7 @@ 

    Color Transparency

    - + Example: Alpha transparency
     size(200,200);
    diff --git a/content/static/tutorials/eclipse/index.html b/content/static/tutorials/eclipse/index.html
    index 9df2c9ff9..d8a3ee026 100644
    --- a/content/static/tutorials/eclipse/index.html
    +++ b/content/static/tutorials/eclipse/index.html
    @@ -100,7 +100,7 @@ 

    Step 5. Run!

    Processing in Eclipse with Multiple Classes

    -

    Take a look at this example Processing sketch. The example is object-oriented and contains a class called "Stripe." In Processing, all classes are treated as "inner classes," meaning they are not individual entities unto themselves, but rather are classes inside of the larger PApplet. This is why you can do anything you can do in a PApplet inside of the Stripe class. You can draw onto the window calling rect() and access the PApplet variables such as width and height. To get this example working in Eclipse, it's perfectly reasonable to just copy it in as is and include the Stripe class code below setup() and draw() inside the parent PApplet class. However, the inner class methodology can quickly become unwieldy in the case of larger applications with lots and lots of classes. +

    Take a look at this example Processing sketch. The example is object-oriented and contains a class called "Stripe." In Processing, all classes are treated as "inner classes," meaning they are not individual entities unto themselves, but rather are classes inside of the larger PApplet. This is why you can do anything you can do in a PApplet inside of the Stripe class. You can draw onto the window calling rect() and access the PApplet variables such as width and height. To get this example working in Eclipse, it's perfectly reasonable to just copy it in as is and include the Stripe class code below setup() and draw() inside the parent PApplet class. However, the inner class methodology can quickly become unwieldy in the case of larger applications with lots and lots of classes.

    And so we find ourselves in need of a means for creating separate Java classes in Eclipse that we can use in conjunction with a Processing-based application.

    diff --git a/content/static/tutorials/objects/index.html b/content/static/tutorials/objects/index.html index e0aa31496..5af664db5 100644 --- a/content/static/tutorials/objects/index.html +++ b/content/static/tutorials/objects/index.html @@ -327,7 +327,7 @@

    Constructor Arguments



    -
    +// Example: Two Car objects
     Car myCar1;
     Car myCar2; // Two objects!
     
    diff --git a/content/static/tutorials/pixels/index.html b/content/static/tutorials/pixels/index.html
    index 114693e0d..126d87c9d 100644
    --- a/content/static/tutorials/pixels/index.html
    +++ b/content/static/tutorials/pixels/index.html
    @@ -202,7 +202,7 @@ 

    Pixels, pixels, and more pixels

    Take the following simple example. This program sets each pixel in a window to a random grayscale value. The pixels array is just like an other array, the only difference is that we don't have to declare it since it is a Processing built-in variable.

    - +Example: Setting Pixels
     size(200, 200);
    @@ -256,7 +256,7 @@ 

    Pixels, pixels, and more pixels

    Let's look at how it is done.

    - +Example: Setting Pixels according to their 2D location
     size(200, 200);
    @@ -305,7 +305,7 @@ 

    Intro To Image Processing

    Access to these fields allows us to loop through all the pixels of an image and display them onscreen.

    - +Example: Displaying the pixels of an image
     PImage img;
    @@ -361,7 +361,7 @@ 

    Our second image filter, making our own "tint"

    Just a few paragraphs ago, we were enjoying a relaxing coding session, colorizing images and adding alpha transparency with the friendly tint() method. For basic filtering, this method did the trick. The pixel by pixel method, however, will allow us to develop custom algorithms for mathematically altering the colors of an image. Consider brightness—brighter colors have higher values for their red, green, and blue components. It follows naturally that we can alter the brightness of an image by increasing or decreasing the color components of each pixel. In the next example, we dynamically increase or decrease those values based on the mouse's horizontal location. (Note, the next two examples include only the image processing loop itself, the rest of the code is assumed.)

    - +Example: Adjusting image brightness
     for (int x = 0; x < img.width; x++) {
    @@ -394,7 +394,7 @@ 

    Our second image filter, making our own "tint"

    - +Example: Adjusting image brightness based on pixel location
     for (int x = 0; x < img.width; x++) {
    @@ -438,7 +438,7 @@ 

    Writing to another PImage object's pixels

    - +Example: Brightness Threshold
     PImage source;       // Source image
    @@ -538,7 +538,7 @@ 

    Level II: Pixel Group Processing

    - +Example: Pixel neighbor differences (edges)
     // Since we are looking at left neighbors
    @@ -600,7 +600,7 @@ 

    Level II: Pixel Group Processing

    - +Example: Sharpen with Convolution
     PImage img;
    @@ -695,7 +695,7 @@ 

    Visualizing the Image

    - +Example: "Pointillism"
     PImage img;
    @@ -739,7 +739,7 @@ 

    Visualizing the Image

    - +Example: 2D image mapped to 3D
     PImage img;       // The source image
    diff --git a/content/static/tutorials/text/index.html b/content/static/tutorials/text/index.html
    index a0415456f..fa9b928fd 100644
    --- a/content/static/tutorials/text/index.html
    +++ b/content/static/tutorials/text/index.html
    @@ -246,7 +246,7 @@ 

    Animating Text

    - +Example Text Align
     PFont f;
    @@ -325,7 +325,7 @@ 

    Animating Text

    Here's the full example that displays a different headline each time the previous headline leaves the screen. The headlines are stored in a String array.

    -
    +Example Scrolling Headlines
     // An array of news headlines
     
     String[] headlines = {
    @@ -374,7 +374,7 @@ 

    Rotating text

    Translation and rotation can also be applied to text. For example, to rotate text around its center, translate to an origin point and use textAlign(CENTER) before displaying the text.

    -
    +Example: Rotating Text
     PFont f;
     String message = "this text is spinning";
     float theta;
    @@ -496,7 +496,7 @@ 

    Displaying text character by character

    -
    +Example Text breaking up
     PFont f;
     String message = "click mouse to shake it up";
     // An array of Letter objects
    @@ -575,7 +575,7 @@ 

    Displaying text character by character

    - +Example Boxes along a curve
     PFont f;
    @@ -635,7 +635,7 @@ 

    Displaying text character by character

    -
    +Example Characters along a curve
     // The message to be displayed
     String message = "text along a curve";
     
    
    From c28a7ffcfc54228025e18c80f416f92340e9232e Mon Sep 17 00:00:00 2001
    From: Scott Murray 
    Date: Wed, 2 Mar 2016 05:58:26 -0800
    Subject: [PATCH 161/772] Fixed #398, as well as cleaning up some related bits
     in the IntDict examples
    
    ---
     content/api_en/IntDict.xml                   | 6 +++---
     content/api_en/IntDict_add.xml               | 8 ++++----
     content/api_en/IntDict_clear.xml             | 6 +++---
     content/api_en/IntDict_div.xml               | 8 ++++----
     content/api_en/IntDict_get.xml               | 6 +++---
     content/api_en/IntDict_hasKey.xml            | 6 +++---
     content/api_en/IntDict_increment.xml         | 6 +++---
     content/api_en/IntDict_keyArray.xml          | 6 +++---
     content/api_en/IntDict_keys.xml              | 6 +++---
     content/api_en/IntDict_mult.xml              | 8 ++++----
     content/api_en/IntDict_remove.xml            | 6 +++---
     content/api_en/IntDict_set.xml               | 6 +++---
     content/api_en/IntDict_size.xml              | 6 +++---
     content/api_en/IntDict_sortKeys.xml          | 6 +++---
     content/api_en/IntDict_sortKeysReverse.xml   | 6 +++---
     content/api_en/IntDict_sortValues.xml        | 6 +++---
     content/api_en/IntDict_sortValuesReverse.xml | 6 +++---
     content/api_en/IntDict_sub.xml               | 8 ++++----
     content/api_en/IntDict_valueArray.xml        | 6 +++---
     content/api_en/IntDict_values.xml            | 6 +++---
     20 files changed, 64 insertions(+), 64 deletions(-)
    
    diff --git a/content/api_en/IntDict.xml b/content/api_en/IntDict.xml
    index 5e4942895..6754d239c 100644
    --- a/content/api_en/IntDict.xml
    +++ b/content/api_en/IntDict.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       noLoop();
       fill(0);
    diff --git a/content/api_en/IntDict_add.xml b/content/api_en/IntDict_add.xml
    index ed55603fc..957008dc4 100755
    --- a/content/api_en/IntDict_add.xml
    +++ b/content/api_en/IntDict_add.xml
    @@ -17,11 +17,11 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // There are 84 cds
    -  inventory.add("cds", 20);
    +  inventory.add("cd", 20);
       println(inventory);  // There are 104 cds
     }
     
    diff --git a/content/api_en/IntDict_clear.xml b/content/api_en/IntDict_clear.xml
    index a1bb4ffbf..64bab3194 100755
    --- a/content/api_en/IntDict_clear.xml
    +++ b/content/api_en/IntDict_clear.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.clear();
       println(inventory);
    diff --git a/content/api_en/IntDict_div.xml b/content/api_en/IntDict_div.xml
    index d9512a15d..6547e706d 100755
    --- a/content/api_en/IntDict_div.xml
    +++ b/content/api_en/IntDict_div.xml
    @@ -17,11 +17,11 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // There are 84 cds
    -  inventory.div("cds", 2);
    +  inventory.div("cd", 2);
       println(inventory);  // There are 42 cds
     }
     
    diff --git a/content/api_en/IntDict_get.xml b/content/api_en/IntDict_get.xml
    index 83690ac3a..0f8219442 100755
    --- a/content/api_en/IntDict_get.xml
    +++ b/content/api_en/IntDict_get.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       noLoop();
       fill(0);
    diff --git a/content/api_en/IntDict_hasKey.xml b/content/api_en/IntDict_hasKey.xml
    index 08f3e5a23..baa643c45 100755
    --- a/content/api_en/IntDict_hasKey.xml
    +++ b/content/api_en/IntDict_hasKey.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       if (inventory.hasKey("records") == true) {
         println("Yes, we have records."); 
    diff --git a/content/api_en/IntDict_increment.xml b/content/api_en/IntDict_increment.xml
    index 73281b1e5..037d777fa 100755
    --- a/content/api_en/IntDict_increment.xml
    +++ b/content/api_en/IntDict_increment.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // There are 15 tapes
       inventory.increment("tapes");
       println(inventory);  // There are now 16 tapes
    diff --git a/content/api_en/IntDict_keyArray.xml b/content/api_en/IntDict_keyArray.xml
    index cbb2b40a1..c873798a2 100755
    --- a/content/api_en/IntDict_keyArray.xml
    +++ b/content/api_en/IntDict_keyArray.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory); 
       String[] theKeys = inventory.keyArray();
       println(theKeys);
    diff --git a/content/api_en/IntDict_keys.xml b/content/api_en/IntDict_keys.xml
    index 276530151..4289fd36d 100755
    --- a/content/api_en/IntDict_keys.xml
    +++ b/content/api_en/IntDict_keys.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory); 
       for (String k : inventory.keys()) {
         println(k);
    diff --git a/content/api_en/IntDict_mult.xml b/content/api_en/IntDict_mult.xml
    index dbef3f741..8958e2c7a 100755
    --- a/content/api_en/IntDict_mult.xml
    +++ b/content/api_en/IntDict_mult.xml
    @@ -17,11 +17,11 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // There are 84 cds
    -  inventory.mult("cds", 2);
    +  inventory.mult("cd", 2);
       println(inventory);  // There are 168 cds
     }
     
    diff --git a/content/api_en/IntDict_remove.xml b/content/api_en/IntDict_remove.xml
    index 28797c083..11aba2cad 100755
    --- a/content/api_en/IntDict_remove.xml
    +++ b/content/api_en/IntDict_remove.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // Full inventory
       inventory.remove("tapes");
       println(inventory);  // Tapes are removed from list
    diff --git a/content/api_en/IntDict_set.xml b/content/api_en/IntDict_set.xml
    index 5fb16c82d..f35de32f4 100755
    --- a/content/api_en/IntDict_set.xml
    +++ b/content/api_en/IntDict_set.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.set("records", 90);  // Fewer records
       inventory.set("mp3s", 2054);   // Add MP3s
    diff --git a/content/api_en/IntDict_size.xml b/content/api_en/IntDict_size.xml
    index 737f73f62..aae149256 100755
    --- a/content/api_en/IntDict_size.xml
    +++ b/content/api_en/IntDict_size.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       int s = inventory.size();
       println(s);
    diff --git a/content/api_en/IntDict_sortKeys.xml b/content/api_en/IntDict_sortKeys.xml
    index 55bd28e1b..1401ed584 100755
    --- a/content/api_en/IntDict_sortKeys.xml
    +++ b/content/api_en/IntDict_sortKeys.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.sortKeys();
       println(inventory);
    diff --git a/content/api_en/IntDict_sortKeysReverse.xml b/content/api_en/IntDict_sortKeysReverse.xml
    index e3bdd6c67..7f0a4236f 100755
    --- a/content/api_en/IntDict_sortKeysReverse.xml
    +++ b/content/api_en/IntDict_sortKeysReverse.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.sortKeysReverse();
       println(inventory);
    diff --git a/content/api_en/IntDict_sortValues.xml b/content/api_en/IntDict_sortValues.xml
    index 1c692684a..ce792724a 100755
    --- a/content/api_en/IntDict_sortValues.xml
    +++ b/content/api_en/IntDict_sortValues.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.sortValues();
       println(inventory);
    diff --git a/content/api_en/IntDict_sortValuesReverse.xml b/content/api_en/IntDict_sortValuesReverse.xml
    index baafe091c..1e22ebaf7 100755
    --- a/content/api_en/IntDict_sortValuesReverse.xml
    +++ b/content/api_en/IntDict_sortValuesReverse.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       inventory.sortValuesReverse();
       println(inventory);
    diff --git a/content/api_en/IntDict_sub.xml b/content/api_en/IntDict_sub.xml
    index e1ecd80c2..231c78678 100755
    --- a/content/api_en/IntDict_sub.xml
    +++ b/content/api_en/IntDict_sub.xml
    @@ -17,11 +17,11 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);  // There are 84 cds
    -  inventory.sub("cds", 20);
    +  inventory.sub("cd", 20);
       println(inventory);  // There are 64 cds
     }
     
    diff --git a/content/api_en/IntDict_valueArray.xml b/content/api_en/IntDict_valueArray.xml
    index 0d93df3c8..1a1502dd0 100755
    --- a/content/api_en/IntDict_valueArray.xml
    +++ b/content/api_en/IntDict_valueArray.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory);
       int[] amounts = inventory.valueArray();
       println(amounts);
    diff --git a/content/api_en/IntDict_values.xml b/content/api_en/IntDict_values.xml
    index 74af5c944..0a94d1e3f 100755
    --- a/content/api_en/IntDict_values.xml
    +++ b/content/api_en/IntDict_values.xml
    @@ -17,9 +17,9 @@ IntDict inventory;
     void setup() {
       size(200, 200);
       inventory = new IntDict();
    -  inventory.set("cd",84);
    -  inventory.set("tapes",15);
    -  inventory.set("records",102);
    +  inventory.set("cd", 84);
    +  inventory.set("tapes", 15);
    +  inventory.set("records", 102);
       println(inventory); 
       for (int i : inventory.values()) {
         println(i);
    
    From 4b4c694ca53537a5333738e9d07dc0c806a3f12c Mon Sep 17 00:00:00 2001
    From: Filip Visnjic 
    Date: Wed, 9 Mar 2016 10:22:04 +0000
    Subject: [PATCH 162/772] ex update
    
    ---
     content/curated.xml                    |   9 +++++++++
     content/curated_images/possible.jpg    | Bin 0 -> 20409 bytes
     content/curated_images/possible@2x.jpg | Bin 0 -> 66909 bytes
     3 files changed, 9 insertions(+)
     create mode 100644 content/curated_images/possible.jpg
     create mode 100644 content/curated_images/possible@2x.jpg
    
    diff --git a/content/curated.xml b/content/curated.xml
    index 4e9dc2898..08fbce7de 100755
    --- a/content/curated.xml
    +++ b/content/curated.xml
    @@ -1,6 +1,15 @@
     
     
     
    +	
    +		images/possible.jpg
    +		  
    +			  Possible, Plausible, Potential is a set of three series of isometric drawings generated by code and printed with colored markers on a plotter machine. In these drawings, Miguel explores a bridge between the iterative aspect of algorithms and the utopian aspect of modern architecture. Each drawing is a unique variation of the same set of rules and carefully placed random decisions.
    +		  
    +		  http://superficie.ink/
    +		 Miguel Nóbrega
    +	 		
    +
     	
     		images/stewart.jpg
     		  
    diff --git a/content/curated_images/possible.jpg b/content/curated_images/possible.jpg
    new file mode 100644
    index 0000000000000000000000000000000000000000..fe89a9c80f91371bcea507d6690a83a33ca08d23
    GIT binary patch
    literal 20409
    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%0AD-MU
    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
    Date: Mon, 14 Mar 2016 16:03:38 -0400
    Subject: [PATCH 163/772] Added AndroidCapture library. Updated URL for
     SimpleTouch library.
    
    ---
     contrib_generate/sources.conf | 5 +++--
     1 file changed, 3 insertions(+), 2 deletions(-)
    
    diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf
    index 71389c15a..25f83674b 100644
    --- a/contrib_generate/sources.conf
    +++ b/contrib_generate/sources.conf
    @@ -1,4 +1,4 @@
    -# Next ID: 183
    +# Next ID: 184
     # Increment after assigning ID to new contribution
     
     [Library : 3D]
    @@ -58,6 +58,7 @@
     137 \ http://shiffman.net/p5/libraries/httprequests_processing/httprequests_processing.txt
     144 \ http://unfoldingmaps.org/Unfolding.txt
     175 \ https://github.com/alexandrainst/processing_websockets/releases/download/latest/webSockets.txt
    +183 \ https://github.com/onlylemi/processing-android-capture/releases/download/latest/AndroidCaptureForProcessing.txt
     
     [Library : Fabrication]
     # 078 \ http://s373.net/code/marchingcubes/download/marchingcubes.txt
    @@ -113,7 +114,7 @@
     143 \ http://www.lagers.org.uk/processing/gamecontrol/GameControlPlus.txt
     167 \ http://www.lagers.org.uk/processing3/gamecontrol/GameControlPlus.txt
     168 \ http://transfluxus.github.io/SimpleHTTPServer/download/SimpleHTTPServer.txt
    -171 \ http://sukzessiv.net/~gohai/p5-arm/processing-simpletouch.txt
    +171 \ https://github.com/gohai/processing-simpletouch/releases/download/latest/processing-simpletouch.txt
     172 \ http://transfluxus.github.io/drop/download/Drop.txt
     173 \ https://github.com/256dpi/processing-mqtt/releases/download/latest/mqtt.txt
     175 \ https://github.com/alexandrainst/processing_websockets/releases/download/latest/webSockets.txt
    
    From 160071e9f544dadcc4e70f47301441053f412fc4 Mon Sep 17 00:00:00 2001
    From: Elie Zananiri 
    Date: Tue, 15 Mar 2016 09:21:24 -0400
    Subject: [PATCH 164/772] Added GLVideo Library.
    
    ---
     contrib_generate/sources.conf | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf
    index 25f83674b..0fb58a015 100644
    --- a/contrib_generate/sources.conf
    +++ b/contrib_generate/sources.conf
    @@ -1,4 +1,4 @@
    -# Next ID: 184
    +# Next ID: 185
     # Increment after assigning ID to new contribution
     
     [Library : 3D]
    @@ -209,6 +209,7 @@
     149 \ http://www.magicandlove.com/software/Kinect4WinSDK.txt
     161 \ http://codigogenerativo.com/KinectPV2.txt
     176 \ http://www.stefanobaldan.com/projects/ipcapture/download/IPCapture.txt
    +184 \ https://github.com/gohai/processing-glvideo/releases/download/latest/processing-glvideo.txt
     
     [Examples : Books]
     154 \ http://shiffman.net/p5/examples/natureofcode.txt
    
    From c80444caf3eed630e95f1372a3e1c4ce537bb7cf Mon Sep 17 00:00:00 2001
    From: Scott Murray 
    Date: Wed, 16 Mar 2016 07:32:57 -0700
    Subject: [PATCH 165/772] To Table reference page, added link to Javadoc for
     detailed docs, re: #402
    
    ---
     content/api_en/Table.xml | 5 ++++-
     1 file changed, 4 insertions(+), 1 deletion(-)
    
    diff --git a/content/api_en/Table.xml b/content/api_en/Table.xml
    index dd0071150..3fc39cb84 100755
    --- a/content/api_en/Table.xml
    +++ b/content/api_en/Table.xml
    @@ -37,7 +37,10 @@ void setup() {
     
     
     Table objects store data with multiple rows and columns, much like in a traditional spreadsheet.  Tables can be generated from scratch, dynamically, or using data from an existing file.  Tables can also be output and saved to disk, as in the example above.
    +Table objects store data with multiple rows and columns, much like in a traditional spreadsheet.  Tables can be generated from scratch, dynamically, or using data from an existing file.  Tables can also be output and saved to disk, as in the example above.
    +
    +Additional Table methods are documented in the Processing Data Javadoc. + ]]>
    From 1025db0c91a21b057a79de4d87e5a237874e462b Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 16 Mar 2016 07:38:36 -0700 Subject: [PATCH 166/772] Updated links to new Javadoc location --- content/api_en/PShape.xml | 2 +- content/api_en/translation/translation.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/api_en/PShape.xml b/content/api_en/PShape.xml index e98472031..5626a04da 100644 --- a/content/api_en/PShape.xml +++ b/content/api_en/PShape.xml @@ -47,7 +47,7 @@ void draw() { loadShape() or created with the createShape(). The shape() function is used to draw the shape to the display window. Processing can currently load and display SVG (Scalable Vector Graphics) and OBJ shapes. OBJ files can only be opened using the P3D renderer. The loadShape() function supports SVG files created with Inkscape and Adobe Illustrator. It is not a full SVG implementation, but offers some straightforward support for handling vector data.

    -The PShape object contains a group of methods that can operate on the shape data. Some of the methods are listed below, but the full list used for creating and modifying shapes is available here in the Processing Javadoc.
    +The PShape object contains a group of methods that can operate on the shape data. Some of the methods are listed below, but the full list used for creating and modifying shapes is available here in the Processing Javadoc.

    To create a new shape, use the createShape() function. Do not use the syntax new PShape(). ]]> diff --git a/content/api_en/translation/translation.xml b/content/api_en/translation/translation.xml index 1ca2b6fd5..7c8e29525 100755 --- a/content/api_en/translation/translation.xml +++ b/content/api_en/translation/translation.xml @@ -127,7 +127,7 @@ Reference for Processing version 1.5. If you have a previous version, use the reference included with your software. If you see any errors or have suggestions, please let us know. - If you prefer a more technical reference, visit the Processing Javadoc. + If you prefer a more technical reference, visit the Processing Javadoc. From 87adfc7c80cb8ffba0306b11025b82e30588fd58 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 17 Mar 2016 10:07:39 -0700 Subject: [PATCH 167/772] New wording for revisions.txt --- download/_downloads.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/download/_downloads.php b/download/_downloads.php index 11166e0d6..92c036b09 100644 --- a/download/_downloads.php +++ b/download/_downloads.php @@ -253,7 +253,7 @@ Mac OS X -

    Earlier releases have been removed because we can only support the current versions of the software. To update old code, read the changes page. Per-release changes can be found in revisions.txt. If you have problems with the current release, please file a bug so that we can fix it. Older releases can also be built from the source. Read More about the releases and their numbering. To use Android Mode, Processing 3.0 beta or later is required.

    +

    Earlier releases have been removed because we can only support the current versions of the software. To update old code, read the changes page. Changes for each release can be found in revisions.txt. If you have problems with the current release, please file a bug so that we can fix it. Older releases can also be built from the source. Read More about the releases and their numbering. To use Android Mode, Processing 3.0 beta or later is required.

    From 3708be262b80d210597dceeb933feb46fac54e71 Mon Sep 17 00:00:00 2001 From: codeanticode Date: Fri, 18 Mar 2016 09:40:14 -0400 Subject: [PATCH 168/772] added InfiniteTiles example in the shaders topic --- .../Shaders/InfiniteTiles/InfiniteTiles.pde | 26 ++++++++++++++++++ .../Shaders/InfiniteTiles/data/penrose.jpg | Bin 0 -> 89708 bytes .../Shaders/InfiniteTiles/data/scroller.glsl | 17 ++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 content/examples/Topics/Shaders/InfiniteTiles/InfiniteTiles.pde create mode 100644 content/examples/Topics/Shaders/InfiniteTiles/data/penrose.jpg create mode 100644 content/examples/Topics/Shaders/InfiniteTiles/data/scroller.glsl diff --git a/content/examples/Topics/Shaders/InfiniteTiles/InfiniteTiles.pde b/content/examples/Topics/Shaders/InfiniteTiles/InfiniteTiles.pde new file mode 100644 index 000000000..ae0af484f --- /dev/null +++ b/content/examples/Topics/Shaders/InfiniteTiles/InfiniteTiles.pde @@ -0,0 +1,26 @@ +//------------------------------------------------------------- +// Display endless moving background using a tile texture. +// Contributed by martiSteiger +//------------------------------------------------------------- + +PImage tileTexture; +PShader tileShader; + +void setup() { + size(640, 480, P2D); + textureWrap(REPEAT); + tileTexture = loadImage("penrose.jpg"); + loadTileShader(); +} + +void loadTileShader() { + tileShader = loadShader("scroller.glsl"); + tileShader.set("resolution", float(width), float(height)); + tileShader.set("tileImage", tileTexture); +} + +void draw() { + tileShader.set("time", millis() / 1000.0); + shader(tileShader); + rect(0, 0, width, height); +} \ No newline at end of file diff --git a/content/examples/Topics/Shaders/InfiniteTiles/data/penrose.jpg b/content/examples/Topics/Shaders/InfiniteTiles/data/penrose.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94e10607fc46cd326721844bbd620de0316553c7 GIT binary patch literal 89708 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 literal 0 HcmV?d00001 diff --git a/content/examples/Topics/Shaders/InfiniteTiles/data/scroller.glsl b/content/examples/Topics/Shaders/InfiniteTiles/data/scroller.glsl new file mode 100644 index 000000000..0717bea3c --- /dev/null +++ b/content/examples/Topics/Shaders/InfiniteTiles/data/scroller.glsl @@ -0,0 +1,17 @@ +//--------------------------------------------------------- +// Display endless moving background using a tile texture. +// Contributed by martiSteiger +//--------------------------------------------------------- + +uniform float time; +uniform vec2 resolution; +uniform sampler2D tileImage; + +#define TILES_COUNT_X 4.0 + +void main() { + vec2 pos = gl_FragCoord.xy - vec2(4.0 * time); + vec2 p = (resolution - TILES_COUNT_X * pos) / resolution.x; + vec3 col = texture2D (tileImage, p).xyz; + gl_FragColor = vec4 (col, 1.0); +} \ No newline at end of file From e48d113a6d3f2c33f68310aa723daa58abc558ea Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 20 Mar 2016 11:38:19 -0700 Subject: [PATCH 169/772] Fixed #404, corrects p5 version of Sine Cosine example --- content/examples_p5/Basics/Math/SineCosine/SineCosine.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/examples_p5/Basics/Math/SineCosine/SineCosine.js b/content/examples_p5/Basics/Math/SineCosine/SineCosine.js index 75b5daf25..661741773 100644 --- a/content/examples_p5/Basics/Math/SineCosine/SineCosine.js +++ b/content/examples_p5/Basics/Math/SineCosine/SineCosine.js @@ -7,8 +7,9 @@ * returned. These values are then scaled to produce larger movements. */ -var x1, x2, y1, y2 = 0; -var angle1, angle2 = 0; +var x1, x2, y1, y2; +var angle1 = 0; +var angle2 = 0; var scalar = 70; function setup() { From ee2776cb1a520e69305409426d977580a4fdaf6c Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:06:23 -0700 Subject: [PATCH 170/772] Fixed svg/type issues for drawing tutorial Converted type to outlines for drawing tutorial svgs, enlarged, + fixed spacing issues --- .../tutorials/drawing/imgs/drawing-01.svg | 200 +- .../tutorials/drawing/imgs/drawing-02.svg | 152 +- .../tutorials/drawing/imgs/drawing-03.svg | 292 ++- .../tutorials/drawing/imgs/drawing-04.svg | 110 +- .../tutorials/drawing/imgs/drawing-05.svg | 217 +- .../tutorials/drawing/imgs/drawing-06.svg | 332 ++- .../tutorials/drawing/imgs/drawing-07.svg | 353 ++- .../tutorials/drawing/imgs/drawing-08.svg | 1874 +++------------- .../tutorials/drawing/imgs/drawing-09.svg | 1895 +++------------- .../tutorials/drawing/imgs/drawing-10.svg | 1933 +++-------------- .../tutorials/drawing/imgs/drawing-11.svg | 1926 +++------------- .../tutorials/drawing/imgs/drawing-12.svg | 1924 +++------------- content/static/tutorials/drawing/index.html | 73 + 13 files changed, 3000 insertions(+), 8281 deletions(-) diff --git a/content/static/tutorials/drawing/imgs/drawing-01.svg b/content/static/tutorials/drawing/imgs/drawing-01.svg index 21f5e8796..313ca4927 100644 --- a/content/static/tutorials/drawing/imgs/drawing-01.svg +++ b/content/static/tutorials/drawing/imgs/drawing-01.svg @@ -2,63 +2,147 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - - - - - - - - - - - -x -y -0 - -1 - -2 - -3 - -4 - - 5 - - 6 - - -6 -5 -4 -3 -2 -1 -0 - - - - - - - - - - - - - - - - - - - -B ( 4 , 5 ) -A ( 1 , 0 ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index 53c5804ec..27ac069ba 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -2,34 +2,134 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - - - - - - - - line (1,0,4,5); + + + + + + + + + line (1,0,4,5); - Draw a line from ( 1 , 0 ) to ( 4 , 5 ). - - - - verb - - - - - object - - - object - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg index cf20e2076..e9c110c9a 100644 --- a/content/static/tutorials/drawing/imgs/drawing-03.svg +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -2,11 +2,138 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - + + +<<<<<<< HEAD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +======= @@ -40,61 +167,112 @@ 1 -1 -2 +>>>>>>> FETCH_HEAD - - - - - - - - - - - - - x - y - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/drawing-04.svg index e8e78fca4..3179193b5 100644 --- a/content/static/tutorials/drawing/imgs/drawing-04.svg +++ b/content/static/tutorials/drawing/imgs/drawing-04.svg @@ -2,21 +2,97 @@ - - - - -Point - - - Line - - - Rectangle - - - - - Ellipse + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-05.svg b/content/static/tutorials/drawing/imgs/drawing-05.svg index 76a79bf47..dd3a82205 100644 --- a/content/static/tutorials/drawing/imgs/drawing-05.svg +++ b/content/static/tutorials/drawing/imgs/drawing-05.svg @@ -2,63 +2,164 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - - - - - - - - - - - -x -y -0 - -1 - -2 - -3 - -4 - -5 - -6 - -0 -1 -2 -3 -4 -5 -6 - - - - - - - - - - - - - - - - - - -point ( x , y ) ; -Example: -A ( 4 , 5 ) ; -A ( 4 , 5 ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Example: + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-06.svg b/content/static/tutorials/drawing/imgs/drawing-06.svg index 6c0dbeefa..c747dc589 100644 --- a/content/static/tutorials/drawing/imgs/drawing-06.svg +++ b/content/static/tutorials/drawing/imgs/drawing-06.svg @@ -2,70 +2,272 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - - - - - - - - - - - -x -y -0 - -1 - -2 - -3 - -4 - -5 - -6 - - -0 -1 -2 -3 -4 -5 -6 - - - - - - - - - - - - - - - - - - -line ( x1 , y1 , x2 , y2 ) ; - - Point A Point B -A ( 1 , 2 ) -B ( 5 , 2 ) - - - -Example: -line ( 1 , 2 , 5 , 2 ) ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-07.svg b/content/static/tutorials/drawing/imgs/drawing-07.svg index 8f112e8ab..6c0a99324 100644 --- a/content/static/tutorials/drawing/imgs/drawing-07.svg +++ b/content/static/tutorials/drawing/imgs/drawing-07.svg @@ -2,77 +2,286 @@ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> - - - - - - - - - - - - -x -y -0 - -1 - -2 - -3 - -4 - -5 - -6 - -0 -1 -2 -3 -4 -5 -6 - - - - - - - - - - - - - - - - - - - - - - - - - - -rect( x , y , width , height ) ; -( 1 , 2 ) - - - - -Example: -rect ( 1 , 2 , 4 , 3 ) ; -width -height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-08.svg b/content/static/tutorials/drawing/imgs/drawing-08.svg index c921208ee..f6b9defe9 100644 --- a/content/static/tutorials/drawing/imgs/drawing-08.svg +++ b/content/static/tutorials/drawing/imgs/drawing-08.svg @@ -1,1583 +1,297 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - x - y - 0 1 2 3 4 5 6 - - 0123456 - - - - - - - - - - - - - - - - - - - rectMode ( CENTER ) ;rect( x , y , width , height ) ; - ( 3 , 2 ) - - - - - Example: rectMode ( CENTER ) ; rect ( 3 , 2 , 4 , 2 ) ; - - - - - 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 -VXJqrDj2hJPXbbgiet7d9Zf91v1vevOb3/T6V7/inv133hBesWHdyScc21hjxbGr1p59qbppz+xv -/uF7//JjD3784w9+7K8++EdvfOVL7r5JXXr22lUNNVYcu/rU84a3vXD6Nx/4s0987svf+Na//uu/ -fOMrX/j0xz741le95AXbhs87dXWqBsJvIDdWX/6WP/3kP33rke/96PEf//jxH/3g0X/7+sOf+NO3 -vLx6I9mQqgH4nLqBjhx89bv+z8Pf+u6P/vMnTz8Dn6d/+tQTP/jONx/+23e9+uAI3XBqjNWKlSes -PY+MTPzOBx766iM/fPKnh5/9mf48e/iZnz75w0e++tAHfmdihJy39gQ3VyuPP/ns4RsP/s6HPvPN -x55AcEdnWOenTzz2zc986HcO3jh89snHrXADWHfptuqrP/CZb33/yWdicFPn2Wee/P63PvOBV1e3 -XbrODmPl8UMb1Atf/q6Hvvn9pxrhdY2nvv/Nh971a3eJ89Ycv8J0cMYVN73kLX/71ceefKYRXFd5 -5snHvvKx35+8/rLTV+EoVhy/5jx192986PP/8cQzz+ZumWefeeI//vH9r7iTrj8JR7Fy1Wkbr6+/ -5ePf/OFPM/g4rH7yg6999I37ry2tBZwAozOHb3vZez/3yH/mImSQeuLfPv1H99y0CXCCCiet57/4 -Wx/+0vd+ko8QVjj81He/8MFXPH/zc048dsWK404+Nxy9/6Pf+NHTzTqAUfz0B1/5q1ffzdefhBXW -nHf1vjc9+K3Hm2IEXTz9o2987PWj4bmwdlBhw3P3v/nj//rj+So88/i/PPimfVvOW2MrHPjdT7So -8ON//fib9z93QzsVPvG7B46gQusxpFA6bwvM0r/MO0upQeM6vP5j865Dalpxpe9+9V995fs/bbrS -sHDfjxfu2BOfU7795R/4wnefPNyUlg4/+d0vfODlt5eRNIBaT7/sprl3fOrbP26K08+e/vG3P/WO -uZtwQ+B+WHvBNdX7P/Ll7z3VpAugve99+SP3V6+5AMkbyfXsYPevvuvT33786dwN8bNnn378259+ -16/uDs4+CTf1CthBl2zdf/9ffvE7/5m75Z595j+/88W/vH//1ktO01v0GJjY9cGuex948GuPZZiG -YRuPfe3BB+7dFay3fAb42Kmlq+9+5bs/9c3v5bKZ733zU+9+5d1Xl051nGzFcSeesWnHvld/4NPf -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 -kg5OnPP65IJq5btSzEaHkQfKQuZC4ZCDVcvlcOLCGFTGA9Ska8bJoLMw4g4VuQzN3+Yh6rXw0k77 -jtlafv+ZGCY61BLPZX2VHvU4q7SplKvdSWy/XEHwqdgA7Wy5Qv+9MCVsSRNFCyPk7hX5k19kkt3q -KWE2liTZ7fFl0BC6r0QJYMlo7m0gyTrjMuz8jr5i3tn+9BXFFQfFCpjzSWHQ4KM51HJ8KGbYDVQz -7Hak8qDFx9euZFBhhp2tPPZ+K2VjOVSS3RoBQjCoOAHsYAtZ94oZdoEfWORypZB35lDJsDMVRl7J -oOJ6fNV4Q2HQ4KPFX6e+lJLdhmrl4sxBtQy7YvPxVWHQcMnyvHgaKQ3aUq3HV6++KA+az3cL4l01 -09cVsJ+YTLyTM+GTtKMhdt6SzGE6esS+nNGMjnYAYtHtMc8LT7DqgV+qinJHODLiNKcWc89H2+q8 -9h8ANeAQnxFResObdNSxSui4qlm56JfASqK0LhPXndqTk40nVYy5urqSnJz2K397wy2V5MQCka4j -p1opTzecxJeeacZcqdRFw2TuEVeO61Ot+3ZbETlRV8JjMFqHuTK1cqs3Upe9cVplUhq1BvRMCUV2 -WbeXBVOqTEk+lPIKetlq3Zd/HuwK6eW+2XRyM+Q02Ltl08lp21zNlLtl08k5vJQ8vddn0wmWxrmc -VW+evCqbTi4AhD6vvGc23dleFQc7PXfdXJZNd53X+tJsOjlLTYDJd8qmc8nk0tG0f89sOo17FO+U -TSdnNytmcF+dTSc3L3SacNdsunPFcFqE58j3zaaTj7a9dzad3O7K2vs3ZdPJ5dKp1ku6KptOLpeO -qy14t2w6uf0Tx5DcI5tOLpdOXlO6JZtOris6v/Ke2XQaJ7x3yqaTy6W7GWJaOuFFENOfTacDYnfI -pmOJRphLx0mxu2XTyWnokkp5d8imk+uAP+G9VzadXC6dQpzSDdl0crlf8tbrLdl0crl0SnVFr8+m -k9shuVjr27Lp5HLpNOzKK7Lp5IAhc/J+YzadaEHSO+0vyaaTTEnbAJTJSJUk79ipvbTw7sfhW0PF -kKSHKUWn2/PGSxiOcuIT4hb6tQu99erkFB692oX+enVy4RPSenwa9er0wklS2VYuDlYnnDQVC8k9 -JCql3OQq0V4+JSaC6CK8VJ6SkvQ5zxTWgpOWBiA3pXMOg0reKYdSXDal2VE3h2kpWUQyJ8/rilgk -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 -P0t8vn34B5/AT1zyVKq6WxP+B3ON1jI= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(3,2) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-09.svg b/content/static/tutorials/drawing/imgs/drawing-09.svg index edb4a155b..07f865a8c 100644 --- a/content/static/tutorials/drawing/imgs/drawing-09.svg +++ b/content/static/tutorials/drawing/imgs/drawing-09.svg @@ -1,1596 +1,305 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - x - y - 0 1 2 3 4 5 6 - - - 0123456 - - - - - - - - - - - - - - - - - - - rectMode ( CORNERS ) ;rect( x1 , y1 , x2 , y2 ) ; - ( 1 , 1 ) - ( 5 , 3 ) - - - - - Example: rectMode ( CORNERS ) ; rect ( 1 , 1 , 5 , 3 ) ; - - - - - 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 -a+WKc4q19QxmuNY3tdy/tXLCIVHcdjqKg1rqs58pzy/iNLyZSpbjU7OvPGjh6a0kN6jBjAAsKF4o -HrQpwSpgTWZ49Imh86hiO0Ymcy1junr0v9f1tbM3UDsuN4GqB2WiFhjHcLJ4Wom3TugnVhRHot1O -tqKBUFt1Su+Xa1i2Z4VNqlQx0wqFEXtIlLN//rSqmOmt8qUeiGk4I7VJM7RKb2WWt/w1oVUCOFmx -ADStSEh1OIlCqxQPBHVkpekPrdLKStOK0dRPT1s50rwgtid/bpRWaKdkWcBJ6Y0S1prScK98Y9uZ -WXeqUVrn8AsbpyUzpTQ9G6mdI74hxLOViKuBa3cLH/NnQVwz5QIfrI5b43TXfipcc24tkjCfhavd -y2Bp79f7xz4L5/u1ZPxjAOdXH1mLPMvydxDpywLUfwmt4l4JswBvdGUjpGS1OC3dJblZpXpMbcU5 -s6P7+p/WabUuCTOmTreyka9xBov9/EXVK4HPcwTAS8golZNEPTcPCX0q9M0QggCCktTPf0V2m4re -pueOCKz5Mny8JpEMP0eW3D92TVqUQHkT1bCT8cYqZ7fNFO850KWN45MSyfvLyuoh7+i0JJT3V6Ry -RmT1buGdkLpTAXvus4gBxfQqd6ZZQUvfvFAGRE/5bP3sRcqeD14KMXF9n6sgppkYdA7ENIv86F+k -XwViknRhqX7I8sslFfUMV2UB6s0BRFx5cRYgPwf1rCzDVVmAF/uTz8oC1JsDqFyBXU8WoLrlqxQN -dW4WoByG5HIAhZEq52YB6oWnYK88OwtQbw6gmo2snQWozxxVPn1TzwJkZiNZlUh74oryYTT2HyzK -p0zJqllbZxblU7QsblqUT8sLpztxWLUoH3fK8x8tyieykf9DRfn0eOGuL8qnlTNym6J8aBeDk/qP -FuVTvm9cDU51/7uS7tzVdzfUZXX99N0NdW1dPyaT62Z3Q8nX9VN3OStlPZ9b1092aTe4G0pY10/d -K6RyN9RZdf3Uq/pdfTcUU9dP3V2mI79SV10/XZHDV9f1Eyjskqp+TBWzWzh0Var6nZXJpVLXT93n -IM3kukkiUlJY1e/y+pXCun4X+i3PrOsnT59sVT/t6gz66vpdFaGqu66fVn7ljYp/qFb1E1Ly5XX9 -1Kv6yeljl9T1Oy8r7dK6fuJoJ2FVPzU/v47yAFxdv+uioPXW9VNPk7xNzjsqWqeSgHtWPb6LS9mK -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 -G/Avvx//wW/gJzZ5IlHbq3P/A2K8z5o= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-10.svg b/content/static/tutorials/drawing/imgs/drawing-10.svg index 0b8f506f8..5cfcd3368 100644 --- a/content/static/tutorials/drawing/imgs/drawing-10.svg +++ b/content/static/tutorials/drawing/imgs/drawing-10.svg @@ -1,1584 +1,355 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - x - y - 0 1 2 3 4 5 6 - - 0123456 - - - - - - - - - - - - - - - - - - - ellipseMode ( CENTER ) ;ellipse ( x , y , width , height ) ; - ( 3 , 3 ) - Example: ellipseMode ( CENTER ) ; ellipse ( 3 , 3 , 4 , 6 ) ; - - - - - - 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 -wxWh0Bn/o4iCqssFZrWjBFP+RZh7KMIEuCEjOmG5VnAjIhUq5RGmHo+yGTWTuUAoJj6HTpIPB2Ry -fxBSxmcHEnp/UOZBIl0QmiEZGF7m0JpXhWWZUR6nvtMWRiLPX6Px4RL9qTJjYZzFj8fVCC0Dr/U6 -O8v0mAPRiDfaGY1AiKhMJXDK4ICpfGNrgeUaUBmY0aHMFGRgMrOYQab1Woz2Z4YlpRPggorOwAoP -8jMseRgsMnDm7wJqvAzY4mnxp1+wEQTipo2l0zNfnVoavvam3Xe+4AV3/sJN11514WnJ79aW5M47 -xqbue9mv/drL7psau2OnuGAornjV1jsO3Ps/7v+9t7397W/9vdf9P/ceeP5/vdJVX7Np+wvrL7// -be/507/8yEc+/Kd/8tb7f23yBds3rTHfnnv1HROveOM7//Sjn/z7z3727z/5Nx965xtePv786Fz9 -5UlX7Kzc95oHPvSxT33+n7/0pS9+7qGPfvCB376vsvMKPRenk5H9L3vD//rfn/iHf/7qN77+1S9+ -9uN/8cdveNn+EaJHdnowUv3V1//xX3z8s1/8yte/9pV/+syDf/7O1/9q1X570qbrfmnut/7wfR/5 -5Gcf/uIXH/7sJ//6vW/5zblfum6TmeVz1K79/+21b3vvh//2kw899Mm//d/v+cPf/pX9u+Q5dkSX -XP0L++971Zvf8Z4P/fmff+g9b3/Tb9wztuvqi9e4AV8gbrp74ld+/bVv/v3ff/Prfv3QwRfdwM+P -J+uY0y6JbrpztD5336G5+ugdN6hLUhMNmF941bU37br99l03bLnqwuwqHXPMugsuufTSS85f12Kl -i356SnJ2lfRpJ/NUlBK4UXPHG86JZlfFnGw5cEvmZtu4p6OONuyuo642INQOOts27plsIg3dK7Eg -g7beWNo6N1svmZ1Ye2nieVW3U8bqe6t7cL/cunemOn1PdWzP86qH9hggmxp6c2MPDb+bRkrm/fP6 -9ETiHVUiTRPzgLSGIEFLEEZaglB6eXrQN07OzFYmR6t7kHftuXEHcIypJgMejgRsbYGvc5ks2b6D -q+GHsfpEaaaaYD9u1EfaziI14+bvSNtxk3yk7WRWAsnvuvuqo3PYanpdEhycAPhkfRJTRs73jtPC -8pO3eFjJH2PgK0hJ5ts8jXhU5jz9GE5Z0QQrkGhcNAIBu5BUlDRToomXfJBPBmHy3ROQSmGcAzZi -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 -n8NhJtdFEpHS0qp+p9evlNb1O9FveWRdP2X65Kr66VdnMFbX76wIVcN1/fTyKy9U/EOzqp+Ukk+v -66dd1U9JHzulrt9xWWmn1vWTRztJq/pp+fkNlAfg6/qdFwVttK6fdprkZXLecdE6jQTco+rxnVzK -VlaP72wOVK7qp3hidUJdP+0wN4W6CSfV9dO21PBpwgXq+mlbWJjGLlDXj0elYlU/xXU5oa4fD0Wx -qp+aH0Yz4HpyWNdPWx1UzUo7sq6f2kEBU9XPiG5pKO9Bs6qfYd7Xqet3TD2+8/MelKv6nVaP79gr -BdTq8Z2f9yCu6qd0xndKXT/Vsyt8wsmfvZ5Z109j4sCE0nrip9f1M5qVdl5dP0n+1kFVP105ZrCu -34na+JF1/VQIja3qd4l6fJqX6RxTj+/Mmz34enzns+FhVT+eCaWZKafX9dO2EjRu1Dmqrp+2Qa10 -w+Epdf2U8rcENUfNej22rp+2mmMyoui49ev6Gbq16ey6flw6onJVvxPq8Z0gNxXr8Z2QP6vQC2HM -Fjumrp/MnS1LhjdZVZ1aAoOcnQwvPk04p66ftl+LuYXm/Lp+kvSxg6p+ol3srLp+2mY7vy5n1vXT -Ntt5rjyzrp8EYwdV/U61K+V1/fTsShXBdWRdP/0szkvkPPGKoWJVPyZS5YSr3g6oRKuqH7JfLlHX -TzshVl0fO66un2ZCLMLYpRzIGlX9jtdhlOv6aR8uqNwOdHRdP0X+5Kv6GYi3NFTXT5si+Bt0jd6V -0gj6DjaHRlAjq5ur96p3iak9cBOb+WWuXc0zTHngvYiSlRIX5S4tqQ/LJmF7x0Ls8MKCWdjFmDQB -LgUqKnZ3S21RlBFmdrw492av337rCzRiN1yTxnazobY5s+t7c+/3WuO2wNNtKBcKu7c/Vf9qPzBZ -7ZVJNObKvNw8X5urO6c5Rz/4r/vv4fhN+8lStM6W7YZ98rP2htuNv4/IbNz4zs4+737qk3Ysdvda -+Xtsk+v6V/vnfjrvlv23+8ePstPx8VFwO3/7od/mouVOfJmsa/dzdrexth32zSZwY75eTVZ+K3Hz -k3A+N0aP7pj71pH+u1k0iLF1WdxsMvGW2fVWvjVT+ebcnRgFswRNZNIE3XmiibJldUeUm3c/m800 -493sf9L2rd1zNzRZ0dTNTCpgIv1Xcqeidy9oScw47Y0oPUY+NtvvmoXwNyeKsp1dFw== - - - nF2a3u6Kz3SuQadyqZFQAhJn2IV+nPb834MysuZksP3TvfnbZJfhO/PTXd2tPtP9p+/GZbP2WjfR -xDxvbbXLNftnu5oC3o/ZbsNuPjkUlum15I00bL9AFm56e01XvebN9M2PEjgfYGtpbqTcVBCzz6d1 -LvGsImUCSJPZK/PC5IT9R4yJTMQet62oYOkp//eY9e9cRXcsOPTnS1QlC7/d1rJf3c5drhL+vHPH -QqkMHbt5GBfeapYKnim6F67vLjGMja91S5efHOiExeEueqx72lGpVsnSezxZmA78JFqcZWk0+4sR -/t7MS31Uxh7CP/jzoj3+BkVEeNG7sGGmVrNApnvtw4c1wq2zFjs2hgh/KOjEXwFj2RV8jbvxV2Dn -hz/4mvUyX9+2Ew/+FLhJJj/pD+dLnfh6z35nEw3zBkZdFw0TZaYQy0/+kUs0A0/BOuQfeMQPuuSY -f+ATP/hOffEPCAkU7031h3t058RzJcuN6wH/m1vUT/ndN+IfeMUP1nEC/eZnt4TQHYESlhZkJdzA -Wc+hO4rpe/hu5fu+dzONhmsS3dNx7+UFzg2QigNVh7n3MU1G4QKFvhL40nhyVGnir2yno+cXkj3l -Ifx92u2/bc8C8Lzjwc8pZzjOI6bjY6AQzpsoQc3b1pIn5nzPJojHGzFBgshkBCq2MJWsV1byQ4/+ -c3pU6I/gIiFxj6Tfsk26u4lNON0N3uUib2MHw03O57aZpd/+C5VbrBrbXP3p6VMgL8q5H8+4iT+J -SIUqVlI+vC5PDH1TxecqyRB+cdQMsZ/mXYr9tH95x8xOlZyDD/YT9R1CHYSYDj6es0i3fPbhHBXq -Yw6mO3oXuPJj/8D2/ens8dT2TInG85kY//IPgu7SY6+C5jIUzeXzyVxAciWBrip+yM99365ca/TV -KNar5rY4a4DgrnQs8F46m8j1x4njfMC6r044oG9+hs9tVDeIxxqwJV5C7KfiYIrbYYy9BdiWj4uc -fDzNQueNLs6vR7mHzqu9NPRmn9CemkTSxM8YNv7dOkyXqNuo6vbNeOBtoi0/HXr8E1QQmW8Klx1O -h62FPWwjk17RMt6XCm/lh178rblyYLmZd843qM5wuJIvEb5O4rmxBFusPH/svYI0NQ/dh1cX2PHU -SVcuis+onRxjt1bsNHozN7Om+d77lvDPrn3+6XXLBhrOYkcQDt8WkyaaS8hnh0Z9L/b2YGmJK5UK -0pKEzSANfVc8/MK/whuPSKRUcHRoFoW6+LA3Cwkh5PCr+OU3UfCu3QqhsPoPjIRN79J/ctGKZYhM -qjK/dUlE03WgjchjxWQtfM5yYyr/3M2wO0i6QRChYR0tRJ0Uy8P8Xxho47uJJB8A6K/w5oEm/ppj -NbhywcP8hlKl4GuVaYJ2sV7/Nz+/XtJkxUuTqAtx35XMA5Jt9y6Zhc2olaKE9dRaCKtDF82nysLe -exAJCez1duufpht50hPbBciKL1ACfXucY4Ow2cq2QR6zssMoC1ErkxFYJtg1a+VgkvfDyNR4kUd1 -8RzIPcVAFr24au4MCOlAzhWoEl+OAYXm0mV3g1S/fSAy8VdPxkrUWrQXr/4uxFjd6soWikqxBep3 -/p8vdzyQjwZyxNejOU8VF4E663FiJgmrJrNkJNGDzkQMWCCVIz3x32DAZg7U/dNyocDaJYbwFAVW -cNrQp4Ra3IUIT79DyllZ58nhN0woQ9lIAE/GAranUfoIPMWdDJbqcfJV2UYWE8PdqA3EUE1Tzkw2 -QtR2DwnS43ipsS5ZY5ME7cKVo+yIHOTTVJtkGnSBRRXhOEOWyYc0EMhTQnuSJuVp4kOKwzN/NN1G -SG7YcF8dMucIFq3uVLs0RtYrthhSI4llhfXWZJ1xvODmVKEzDApIxb+hK0FuuQ4+rfIO9sPWH5gU -0T3MBdtYtmeqJiI//Js51Uf6w8MOGVpdyQUXyPgK9lu4C7aD0IqWdxCovjAdoHtIqG2b6YIz+5hd -HBYsskSWjJ1yLvIRpCI7QOB+E0jeO9nfBn8u9rfZtRsF8Id4sT2W3nUDPXLmR5wUbAxX9sk1wOYF -sku8eFc5LJrObeTMjSvFbZu/tuMd2V/X/F038+4dGug1etSX3vzh4NaFKT5/x92z8k1IyBBnsiPM -BvvPgm0n1FrnPIpM9i0zoWzArXajDpMSejhuWYF7D080P66XTWCI+QXfPQPIEg8vvuWGh7vgTE90 -Cw1ndTrRvT0xC2uTAkYOYqm5UWPJz40bgeUWAm91ygvBFIfQXAjZMmAbWTRXO1OcnOmC+r7nu3gT -dzFq3qqtJDKu0i7xxLkbdaRdaBCDnal9evQYRHlJdvHSnjQNrAkpoZLxKhiZBuNYOuziTUb7YpRz -7RiMvcpbinCr1aMwe4LOh5v8TT+ym6oc6AZd9TEamaRDIDmiUmwPeVBL6a1N7lvG9BZuoOJbygaP -1NhWQfSVCSXg1+VtF6+JcJzpNhoiKA7p2w7p2w7W5c7jKd8nq6Kvkr6d0nedOAxBRGNO9toO/quk -bydjGQtfJaCcMlCg9RXqwldUZ4SbF/rBJZ2VixkZdupMfid+RiWXePh+zN5a7NnsjXqfze6Rr2L2 -NJ0erGAi5+xYsJIqPlYBRVuLoJRKOpuYvZN6y+x5fO+YPbe9ihmkhM18U4zeo69Ns4eiWwhU0+wM -VAJm97Mji55WvNNhdmqyhu/yzU7ctgwtI8RNYOSOhXp/6LndfJ1bRczmzVMNvkYG7EBvew2z52+N -xu29N7u+Vy13LEju3LHA30LyKbjnPiWuYS6ibgu5a7QRRniXrXRWYj+p2Duqa02ZRPbUge0wnHuY -SBVkBbILhg2IYNslJQbqAMfB4pQfcICPTwbxzxpxYFkzQAfXNcxIbt6B48T94KVFDiE/6GO0i3E8 -5HsvG5Eyle5PNoKTGs1l8Bc1jCLsPBD8dpiZ061nBxKUFKvahT527ID7TR97kog0+Gi4m4oXcl1b -Ysm5W9prrHGF5sOxDezhZ4fEBcPYtpwL5uDg4p5zwZTnKOomLD5HVrC6/zA8NGSeS25tzBGchyyk -mQXDTimwh/0I0QFBBcZHQphdD2ulHa6gW+wDYKfhhL6zIpcl76N0gwSZ5OGNz6g7HXbWovexaNlk -pXP3hRfsLQE5nqpsNunUsJhxtzvFjGP8THw+LbxE9dW9E3lSuOj0gvJNj5wnhQ9B5zWliyy3bElI -z7qQEfuT0RoFBc2MdBVenpGv6Fl459Brwnio1ypP8cSFutUYbHkdT8npgIuCQVOP+iSumtqCMyAw -+lt9EZVw/IB9RggFFTunJ0uNIbCDXrKUM2sGZqf8MarofQfDnGy4OSjtNdrefdIe7zGVSMA/RrF3 -G89F9qhIYe+L/7YTTBD1hL2Fk3HRNRpEIFeKFRlVhXOyXBNf3XE6YNtsnlgZsZsGicmummPcgfnn -QIW1XjFrJt4WHzXB44+w6GPNi96MdQEzfDD4exK7Ox+8SXykwIQAiAe3BHgtMoKzObZhqugzlwAn -LwQyEHv4/h9ydBPxI69nHEjp3okOANzuTCJhRX5nAm1qHnRh0RawnQvhB8jzGEIOITcirxA88AeQ -n8mB90p3DChruAZ+agVwOjE2fMjy94IkK1kiCMu0DTBfh9+/JG4He+71NeX0jr1s7sXO0UcWbYJ0 -z+gcWe6C1mxLlpr+n69gGvn5v1NR0vNjzlHFRaaKknHBtk8SWerTFcPHcoVA5vGuLnfQlP+8JaJO -DnD6bhS9UQjk7ipNRC9xENbZDAzu28/eRCEmL4YEWitEQCRDfMBIDmmcgEO1Ce9nQokTHp9gQSIb -2fHQZw42JtuZXUwxoYpLRDGMK07soBKFKWDyiVX6ewaAfzp8IQRKBSgqtCoIYe54uvXlCeRu3z94 -gfvAPrAkQWR+ReiA7WMbRtTtBii9HBf/94juUxKzSj8GA0h5OOz4vcwmijdMzjPXQ0iISxmSZh0K -THjBxhqwjhalQN6/yZCeP28RrX5jUAKKcQfYaWA/VG+Gimx4NvwfTYL1rShnNRwB4mtzxGe9CQlf -TVbRD6gUH/81iAU3vB2LItIlCK5kWP/gELg58fEaQJNRT/jDP6CSnFd0i2YSJ/EHcp/1IuV8IGgU -1h5EFAq/3SVB/aQ8AeqjetNAnJoC1lzkYM1Xd4wLDfbK50N+uQPaH65RNsfXezZGegrrAvvO9TBC -1OMvNMCrVFnlld8XuNUI42MkmL15jx3SMnVeRuzoLEnOEcE/hAQPszvhwz/pXsJcaFl6LQcFjtDm -B5PVAEcw8p7pUeGBgjONOQ/odh7WZhvd2ZmsZuura4E/4+N5a/CueK9xFHuo4XBbnt/GHKayKuLt -klXKmhMX44G/AYZsu7CGy/TDerpTLhDMA6QQ3Xl4syDOfpJoXILDWlAShBEeeEcvooWxtp1YjvEA -kMuAO5XoERb+HfnNzsJZN+OjFB0Itq77ggYnSBW0+mHKw1Dj2Oaxi1mOskWB23o0UP8aOMeVbPqn -5YccOg94Z8cAm7rybi/ZTmEu1OeqDOvS28p3WspVz6F4S6eULj0SqlSWXnjhhQ2YiR7sS2Xfg8R8 -ZFIdHYz+Z8800vgEhV1pUB0EyR/5tVfSSmoHwtjc4g/kNs9N2PSuqQOROdtHkLTco2NnsEtm05Dk -6z7KxWq+bhXOH0JAJakc1i7e/YD0MIicfpfG0YrE1625QDlfwlXGBc4IKfkyxWjYoJs5dN4cRocn -aaLWb+RQjdAY9ZmMlQEU0eCioUAZWbDHt6GgU6aFIens43c2n0jWGBAKvK/90LLAnuADe9jnNHt+ -fmsSy3joB6va/pHYf6UniYzvO53uvoEhbI/7p7IOQMKIXgw/jVnzOfw84T51RvnP2+ciHbPs2txv -9k6uEi6V8s55h6Zj5tKnAEASWnQrzkvSMXHPNnC5SBW5iduabMUe1f+avY/dO5ykiquHavEYO9GG -ZIFyJk6OkJg4FUFYuVh/svRIOy8Oh+SkNzMraaC4fPcR21Uh2W3zEuOMEfAgDzPClkG68uOiIEji -4+dMnw3CkdkYVXsCbTcu2bkX6PyaJ4RsFJOSLEVCVirHEvmHx1usdsgemKxYuQWSzDlFIhUpmIJI -PUpbVdJVhb3S47uAtlp4SYKU+y3IBC9DyY/YSgrkftZpwM5PjLG74A/FmE+VrDdATIZdMJpuskGJ -yloj0B9kOdXCsLAJH7DeJAhfb/3Q1csOK6c4RlGknr7gaz1Ir5UoErVZo8RI2JKZoKni/TYLgjkE -5qF3XERbZxj+lGpIMIOBtDGPsAaHxP8raIyZPDn8Md/h42fQk4veX5r0OGhXwHZXv/X/rKxxFFyU -BKVzm0Xi/47dbkKkg6F4YAandIXw2SPJr5CX9Nh/nAL7CHoydigIlrjPTnq6LyUmNkKHNg7u7LJT -ju9FSazDHGW4q5vtwGGEqtkujVNSN9xnUTQ8mnL67CEFs53Wtm6Q/cIQS5GQ2C9Fkg== - - - JSX2K4FCKdAev9zjKAIUeBTk1ACvGRGVDywL6gaFP+E3fNioN05jYL8EgKgCyTKisUQg50reUZ+B -UgR+C1T901CzhJSNDzUaiwEU96xQQGYfqBh3b02gsXgBzToJOHnPkKOHJHfKfgEa0zMlVEJSUx/3 -VsL7kyA+H3sfwOHeT/yVzEd+B/A1MMRfYV0sS/sIfoiN/yNGBRc/pm1UcNTokew+TF6Z4f2atV8M -xDsds187ZPaZNOoGUL01v9mLHNpgZ2NApfoOBlTpNYfjV13caMDOYZqU407Uyy1i9giSm34UfRXC -Qh17FMWWFZvoauyUwKgKZTr2lAAbSLredBlZCGcWB4RxQbLgvNZHK3JHkQUbdaNEGBckC2bfVySM -C5KF6WKHR1pkwcTAHycvjicLnJlypLw4niwYfjlOXhxPFlhPPlJeHE8WjNZ3IZNLlSwMnb6dTRaw -I+vKizX/9NRzTWZdhKMuURA+jKwPq0H/uFCyFI4JZcPoxTF62Ah9XIpHAxojhxZyjehgbrJih4JC -oJtgIHJqgviuCZn5GOC4EgMVJwtxtpjYTGM+STiHo2Qh7U3pfE30SQG8yao6gAuCx3NRHsAFwcv8 -lobmLwZvzMCVauOsieuWmbjU59MTKKr9lwJK/YgTtd04RxWzripvO8SUbFZkzN6J7unljxsVzyFR -XmTFfaCyxh0BQWVVMRVwikzUDZa4yLkns7Wn+wrqLMals9kWJx4sCmdJP5R/aikAdm7XSYlx3V6j -m6RfsC3KmwXoHCOWDdhK+TIyC6Jg4Npp4uvxpoYOLuLksNFIUi7zUypgM4er6OaWdCFJOb3BZ84w -+B2CmZnCR3QV5EcEk9pFgGVxdx9DB313sEKDEkp5yBB1xwBZp78FNhJbxSxAvgtdw0DD9GRc5Xqr -plCd4dPjQtKrd/whm+oRG4aC0mVgb8NrwCa3IA/8wYsh7xFA8XK+l/BKMjayfC3BNvxOwVra64eh -3knkEnCjJqkXtZVEXmQyGrA9PcVh/Z5rePUfcMZNmKjHtwUwvems9loev5L4NIFbS/asRZcDD1aS -wjkcHdWVZGjsuLUkmLp2R6wkr/OLB58CeN0CCkcPKfJnvjfeq/InWOcuxJ+uBl7TgHXsraC5mAPI -a+8q+6etZpq5u4Q7fZQtPIjMVgMYknqPo5j0KrLTm+iufVhTsgv2vKOH/Rkd2ZEfOk04/xA8CnTQ -23lUD2vQaQLT48FN0lRxfFMWRXmf4RVCljhn4KMTK+c5hzmKQO0ZV5mv/MWGTUgWwuUq+qeeYA75 -ESPSRY7BfrZFC9FISYImJLvdZEjHQfNEt5vC4v2lyHKBTlGfd28oscKJhLALtoch7VZay+NXUhwP -w61lGug3+OrQPXg7WEkQKXnFlZTS2NEePti+XQZW0mTVWMvyvY0cfr+nYCGCwYNjub0lIjl4k4lM -J4W8g7D5le5isC4gNOvoRgv0nEQyq5dAK00zIlORP11EGQmFMjnKVKOB3GcpH8gTlh5s2rMQ5bzp -IbJopvnA1gWrJ5968CY7QgUty4kiEFIymcvvyDpS1+lAnl4vd7hi6MRVOG8V6WPyE9ez3f4CUBSp -Iom0YnjsJlGqyXnsi/zOIU9vDR0FJKUrHUExHWmUT+RFXb3KhDWOuQJOHlVvSoI6BaMI5oD668iT -n6lKlKmKQ0gZBEr22yVO84hL7DRPBx2cH0biBG1K9VY7OrgIoJyuBFFrvtq1OLWn5Iu3IUmE7k9G -SVCXEb2q7GqyniJ6gV2JWh+wqHiKvrdEZeyKVl+8jChT7yYr6DhIWy2TnvdIhPj6sCMNp5pg7iFR -Ztckcns7MijBOIbZlSpmfmEuKJQtgjzmwLBktSAw7AXZlYntcQIBvaeYFTpFU3J6Qc0LRlFum0OJ -cU1GWPdsxmUjVA3KC13GfV9nqI9x7E7GuMiupDxISH8XQNtxq6m+TrTIcbB5Pt8SLFlwii+MoZei -Phb2suqaiuP6ThTCAMBMozWNqa4p0sY1VtUP8qkJuCtHnCeKY7w4SI4drKrjfHE8mcVRSmTlTqL1 -8aoTVXzJxDS0p0BAoj09lQrwRqCBQuhCZMW7zitpTwhjHInAXJuM/sRoT8P1SxqQHq4jAglSH5VF -7kTtiT+z0NGEnSQY190UXiH96GV5RCjOFZ2DAhaKAGJ6w8cL2qyCxWqy/udsVmHDRNoFq/rCkrz3 -irBhEneHa565QwG0WQ1xHIgx2hM6v08CWWRg+x7X70HFL1Po7HURqANhvFOX0YkVQnxd+OT9Bbbb -ctx1/KoipyrBZP3WBj9P/4vWawTw7QBr43sbUJDJFRSd7lMVzKSnuxZrVOVGI4aj1H5pxHdoLYNJ -VZ0KEwjlfDAXeY0qgeQ0rH7jm4TVr6hrVDgj1ZBOpadRtT45jep36ZJpVEy+mI71Q3oKvzlQE75T -OEqYdb9quRBlDkSJd1TuQqT38zNzExT9lkwct6rh44mCyPxO4yAV+ZqXCw9x5ClKMOVfpYyL9DGG -dUuMJoUoOSRl3QBoeJEoCmZJnqhHMbFw2nuui3KZYyXmJoNT9CiPD2HMZc9CFyn3OXuu9o4Lq3/q -nrvLgubyErhTclZQxbGXEnZcRGNy4Vp/kLiOKkUwlMcZxJUJoOlmjncdKTIujOHplvdcJUAHG+MI -VUcXBcUnxZ6r852JMt/FUfEilvn85QX+vL/Cn8Hb/9fcta+lsWvxJ+Adpq1aEBiSzB0VQblZURHv -tooIlFoVFfHsvf/Zz37WymTuA6LS8532Kx1mFiuZJOua5Bf46F3Cx6ANH7+vJi4PmbKie04Tvrjm -3PUuYladgy7KT191Puuac2e/2Iyrzu19vd5egRnXnNtZa2fVOUdKfMOqc2/NOZay7J8BTK2som+F -ax6JxbOjoPvBUyqxysp9902rzmddc46lvH/V+QyBFG9KscPu3YnK5h1ITvOyHK8Aviv2zhqeUey9 -wA3LvxXHdslxqw1fqubTF+HJZISdEVttMriwrM7KrQXq22/jrOnd62dBD5xWaFfO6qHn/CkEMQ0Q -+9GFFfu0RjeL7Gr3MPYpjNl8Ht6l8mlVm/DrYh53qhlxO4FsQLxJH9yUCTQicHN4ru+qCWNsE5t6 -GW2AYWB4sY2ZOwgaLzuofy+3OeqNHV4gfI0XfwaBcTB6K64oSzfdVfRqG8AZYzHUfWgNWwVaOzot -zymrEFSZYm1PaP197Or77LDZilvg/r/Zwe3gToHLFl1/kgpo/qmoY5FVKWIW2nTApxD6ZUlLT1zY -4GHaR6a537WvV31y9mL5N+DyebHXtuCmC7fmY3ADbkdZ2l2tgV/eww24SyrP9qA+KMZtwA3Nicdv -wY0+eOMG3P+HPP9JkvRvj8KrwIWnW+vKQXc31IoMVQ84QZV1DWV/9+cx7mqqsXa3ihhTg41o4tAs -gKrrgL89Ps2BRcpW0N0togVRlNJqvYYz5juYNtQxTg2nDT+Y5399g010Z4ot4v1v++8U8YkCDj7/ -/ER8ooD75/c/LOITBdzOwb5ZxI1RnIhPFHA7C+eI+LjwFBTxaYBjb9hjzzXMvER8ooCLs57nI+JT -d9jVDr+y9v36Xvym5NqVHopog624huJaVEo3hyYY926LO060u3+E+2m6NZbS7zcRHcjbQ2e7nVtr -NNN41sRvCsUyzvTrysbSXUMpje6O8Xwf0ByrX1HEj6oz2HC+nn8eIo5F2biNMcDCvrjy49DCZBKw -MH+X4pyghScCC2NWYW7QwhOBhROLc4QWTk8CFsaRPDdo4YnAwpgdnRu08ERgYdCW84MW9mezAsDC -icU5QgunJwELO/vE5wItPBFY2C+VH4YW9qxGCFg44QFefhxaOD0JWDix+E5oYXQdtICpfsP+/QzP -iXJNhVaFCE11UumI3H+nLdvJYpQhnArIiAkALArcsxxm9NM8ke4mpbLidDm4uynjWSinYsDWtlMi -KNaqufjzM7Qtgmdl7BP7RCvnWCuegbbVey+ZzHPti/5YIc9fI+nXyYUi15FJoTwLWzkXuzeg0R43 -Sfnb6gNmt/eoO/Yvo+vGBWwx6DGfF3bJAS1BhXFtAtorJ7SXcVxH/OA+NGrvGVi0fLwFMEWzuOwc -Svf8byFhmAaVNclUFfwv13q564/2RjeDm6GUSawkcqUtSo+GvYfqqN8/7P89Lj90X+77w7GUl3Kl -g82tLVMr97sPvb7EcyDaleFqwax4EXfJ8QRHlY/BjfJPq3Zb/9Ja65R/krNC2N1NKfU1PBKihTvB -C7ernxb7dBt3lB/g16oNWeml3SILsrmntPyl3B9tvFTSO42TkNw5iF6Vp/J5VauDpqpr+cXyevrX -942rXXZgbBfXM/C168GyLPO5brKdR2dk12IsVUT0kZv9mt9593nCLv51nCc8EWJb393sfS7mxqvf -irnn3krV+nLbrJwUlUsOsR0A2A7vvE7S9K2B6wNza2eXjgrYGbpjou1qqitMQclCKm2ArLORsEnj -pJz2waMhloS4okmurvi0BkfhNrhEYEps65HLpe064MYLLpDOD6s5V2D99jzz9VfbNfQp/wNr3PFw -/7b9Rj3TSLtGfdtv1DOXhqset3NB4fOclhCiNu7W3l0OeFy1o6Trr+z6/ZXaQHXN8q5sT/DUF4q2 -3cBNrWjFd220Fx+itt8Xuh6ksW33BRZ4d8HIC20KKswW9m52DWFt93PCk1jfwmbbF2zB6+VsFczF -f+GBG09o2po2lVVtVK5DX8Og17vyZku0GPzw2SFwzqur/hVic+C431jzNIM2bi70axfn5gCk8uBl -4aZy3muiv3ZIvfHLLl4ui0IJn10qzvA6VP1ew7rhDpWTrHAd9jdReZ7knGF/gicjFK4vUnhNHTt2 -wlOoD3iluFeqzaKyco+Hm5wLju0u7/hz15k8J+4V9fc+Tte4hvlc8bsT5dsF4Rrd/tacdznX3+76 -ucjVrtPmd9UufDZJWUrtYaNewMfZCU5rXVD3ivnpdgYq3lODCDCiPvvVq+OzzXLaTFWrlZ1jx00Y -32ukf53XeUjiekXnsyLL8ykT9zzfWc91Ac/E0ZuP6/yQgvJLp7kXd66L/0wcsYtq5iTo8RMObBnb -OMljVjtF4c5w86wC15b2vvvl0tpjSFse2E4bTmU+OdFmMYvnQKXwqKhz0AfHQh33m4aYbP15lP8e -e7Q3RGU/or3PY0zQsLkY5ZqO0apZW6HahxQM1nKOv1KVXftxgRC8d+g94kECoWgskDWShatWK6a9 -PYIi4KxVsxhNE+Ez1Rquz7RLhPLUG798MZ0XjWVnOJ/Kf6JV5LhH5k3O88kFd67QnnPM/U67oOuk -/1nLhUDX+ZyjA7o+SkdR29cPfAy2fmRkzkCMZA6DXThqL1emgK6z5y9+0PUoajuprO55DPZD2MWc -xUuARX2p7t/ipx54awFB6WV2GUI1Q8dn6gjyWZDdezn3HvRL5uAJXYORk/+0My0BbA== - - - LBe3/MoBHV9j3AHhD5LXC60fMPbVmg0MHjxLzEUj5/jfnwRqvQB6FnjkZ5PxyHnEgP3y/Lnay6UF -Grn+ZaF1zy69TvRAqTnYNPeUYuGml30vxAHN41HUEcAtUG8PxturHMdkKzzNAvKOSaZ3IoHbGWN5 -Qr15oaIjEIj9YkJHFF/iX8jpBhvre1pH4DHmH0GWxzOT8V2m1eLVOvx4mqEONjr6JBbt0Qdf4/rZ -PRnhva/xa0JvQB0CY//HxBYLDESgbE8YsGGOffd4AP/pBVCKe36BQ/nwaSLH2QR39Nkt6t4v+6S+ -c9b1U5798I5U8HUJqV7UW04Sv26fxuNbh8V14LKVMz5l2j0TI8jGp+zGmerg/boQ4+kAwLge0m24 -ZsfkgutF2D772Vm4/2Hnfb6unWnOIUbtjO1dZB1n0/EVhCdRd90OrDfapP7z7XIw6cFzIBnxdVOW -RTXFz2y3A/xkdDyU9ePHDScxoSY9s+3lMXgWw3sQSmV4D7xkv+cB2KVc+D3vQoP4nANf8bV8yl4+ -4ysZfAGv7fwlg0PgPeDYLEcj2y8QQAN7CBekpe1zoHK1I8bDcYirx5Zg0dxMI0lGrLhrbmUds/yy -LOxesyFzEr6GBOWl2SKocKlInjRPbbYQg4CetOOpBTnlJGq3eGwLpWzSFSfuEMDh9rxJ/zL1c/OX -Xt3buDO/mAEMENfdsJmFTzb2/JWzVm46xzh+icVpHI+Ix9GFNr/a/GVsP5YOS0Oe8LPYxvflS5GD -7Z66Qcqh4gVcOPPl9e91wxssHXCHZTDg1y07oYAgSCn7qvP5mM8mZLwkIJ834stsYCCtbvEr0bHX -A03Ii8ho3B7JuNqGuqAYWRenJAsit7kmanPb8fLJ1/6ztG4HqhtNeSfKXPM9QdW6kyY6z5ZzndWl -/GD49ai6WlF/B3ZN8HVDwSShk0J0JyNX/WNx/D3Hwx6+0rXE3xqnhr+l7StfvccDhd9zVoj5a6Of -39fvyj8Xnw+Lq+unqrNA+AJxLPaTItN7s7jkw2fYcDDaXRD0ucU0vF8iUc28Y5pEbFQz75iG53Ij -Uc28YxooJSaqmRLTlP4tJFZAx25R2q4Me/7ka2JxEe4c9Mcvj0igtTf6g5tho/NPf5Sgkv2XwF/8 -NCyJMlNimgZfNLzbuE4kOa1EU1JjmCBSCWLrdq40GpdvuuObh2Fn9I+Ux1unO42jrbKUl+wftOEH -K1ISqkTaQA2PUpj2bUM128gG/p3+hRf9xAv+9wgfrQSRdamWIKJOQPIPfPkGF78lKivSX5Iq7Ujf -L4jUw9+3EqYmKyo1VJOoummoiqSYiqxa1LQUQyOEUOk+oWhMtjwiLUrTiNJQqsmmoIHnkXJeex5T -xnMMF53IqmpauqlYmkbVuNpGaBqJgygnRjSZKvDdYLquQwfGcIrQxHNSLVl33iyOi/95PAdLlRnW -WCNUU1UWyyVME8tJUUzZUjSVKKapa7oZ25thGuSkEFNWGGHUotBmMV1+HyEJ9ehBgumKbOgK0wmD -JtNix1aEJsqFWjKdOvruozQRLvBM1qCyjGnQAIzFcYnQRLkwS7awtoquE5PpsVzCNBEuRwlLSqak -0xN7xgeVDWgAIuVw3gfnf0DO+bfOfX9r2Ov/Dd91KXcwfhj943xnUg5/VxqObzp3N53nm+GAzyGB -SkKlALLdg9+8tRRt1lLeXYL6zhKoreD2QMFp0iDBmA6DWNUZZZSYBgWhMmwh16llGHxMREkUWbMU -1e0rxhTZpBYDCtMyGUomaApdBzFQDJVYTMJxZekg7FQxjTiCLgw9XabEoCZVTVVXrTgmIHAmNUyq -wZggLKYiUYrg22AxYRIN9DlR4QUpIQrFYsIV0VRZVaAGQE4VZkXfJkwAxUSaJMIk0qyRirzWN93E -zzeMGOWdI4Z4IwaamRHLJCa0uU4sCYykAeYAzDSD1oLm4ndA8KllquCpw8vAHYtQXSXM0qAhFN01 -qB1hZ+fKtJTg1jlh6rJKTGqqhk4ptWIVjGHIoNs1olqGrltmjEK8S2zEcAI1r0PPCrMU5eJ/HsuB -mxxBMakuEZp4TmACDYuiBKgW/InlFKaJ5wQmGUfn1DqFaWI5Uc0CNW1LZRyXwPN4DiCB7JW6RGiQ -E5pksL+WMF+2odQZmnVDM1Da72NoLCZDnShYKxWMlsI5xXqWySyVNYPA6EyhLI1QYpIbG6UuOLit -h3EHaX2+pUIM2VC5n+MZ3HBtIjR/qjboICheSbFtE6X5Y7WhpmyqRHM8rNjaRGj+VG3QYYm4RqHa -RGn+WG0Y+JEqm9o2UZo/VRtwhQ2vIMWIq02U5k/VhghFb4eLYEMYRBJe0Rr4o4SCugsoVzDXpsqo -QwOG1NLDip6Cyxro3TCbyW+g4LgAP2S2zn21LjH1VUBlUsfznVdFdAN5Ku4IUqEQ6MVAwxkM62b4 -aMCLUd2KRHmoPH4I2pr5SKiCsZ7XP4GaQE0puARTajqfWszubLH/SZhB/3iYQT4WZvwB/45Bg4Uj -ZpEJYKYOg4/oalxQbYCOslQIywkxTNATTAcCS1HiQ93pgXAXRj46McSR0VBwGg1dw6VHKCKv0I0J -kiGo0GBwE1C9KrNAA4ZrEfFgXw/6IVYJt0SEJpLECFfk1Q7pJp4TjQ0771cZ9nhiLptNLC42O4P+ -4ahzc9cfJQbPnf/0pc5wiJLXf4Qn0mDUf4bx15eefz38hXfgJw754mJlr5r4L5WR4ic= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-11.svg b/content/static/tutorials/drawing/imgs/drawing-11.svg index 83c1fcbec..de0a120cc 100644 --- a/content/static/tutorials/drawing/imgs/drawing-11.svg +++ b/content/static/tutorials/drawing/imgs/drawing-11.svg @@ -1,1587 +1,345 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - x - y - 0 1 2 3 4 5 6 - - 0123456 - - - - - - - - - - - - - - - - - - - ellipseMode ( CORNER ) ;ellipse ( x , y , width , height ) ; - ( 1 , 1 ) - Example: ellipseMode ( CORNER ) ; ellipse ( 1 , 1 , 3 , 5 ) ; - - - - - - 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 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-12.svg b/content/static/tutorials/drawing/imgs/drawing-12.svg index e355c6648..757c3f04a 100644 --- a/content/static/tutorials/drawing/imgs/drawing-12.svg +++ b/content/static/tutorials/drawing/imgs/drawing-12.svg @@ -1,1593 +1,337 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - x - y - 0 1 2 3 4 5 6 - - - 0123456 - - - - - - - - - - - - - - - - - - - ellipseMode ( CORNERS ) ;ellipse ( x1 , y1 , x2 , y2 ) ; - ( 1 , 1 ) - ( 4 , 5 ) - Example: ellipseMode ( CORNERS ) ; ellipse ( 1 , 1 , 4 , 5 ) ; - - - - - - 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 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index 812e212f3..c0b4cef64 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -22,6 +22,75 @@

    Daniel Shiffman

     line(1,0,4,5);
     
    +<<<<<<< Updated upstream +======= +<<<<<<< HEAD +
    +Even without having studied the syntax of writing code, the above statement should make a fair amount of sense. We are providing a command (which we will refer to as a "function") for the machine to follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn, from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a period. +

    + + +

    +The key here is to realize that the computer screen is nothing more than a fancier piece of graph paper. Each pixel of the screen is a coordinate - two numbers, an "x" (horizontal) and a "y" (vertical) - that determines the location of a point in space. And it is our job to specify what shapes and colors should appear at these pixel coordinates. +

    +Nevertheless, there is a catch here. The graph paper from eighth grade ("Cartesian coordinate system") placed (0,0) in the center with the y-axis pointing up and the x-axis pointing to the right (in the positive direction, negative down and to the left). The coordinate system for pixels in a computer window, however, is reversed along the y-axis. (0,0) can be found at the top left with the positive direction to the right horizontally and down vertically. +

    + + +

    +

    Simple Shapes

    +

    Even without having studied the syntax of writing code, the above statement should make a fair amount of sense. We are providing a command (which we will refer to as a "function") for the machine to follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn, from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a period. @@ -115,6 +184,10 @@

    Simple Shapes

    +<<<<<<< Updated upstream +======= +>>>>>>> FETCH_HEAD +>>>>>>> Stashed changes
     size(200,200);
     rectMode(CENTER);
    
    From 55cbf714d396d8993de8c17705996c719026d24d Mon Sep 17 00:00:00 2001
    From: philiptr 
    Date: Tue, 22 Mar 2016 11:21:03 -0700
    Subject: [PATCH 171/772] Fixed typo on drawing tutorial svg
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    Changed “eight grade” to “eighth grade”
    ---
     .../tutorials/drawing/imgs/drawing-01.svg     | 207 ++++---
     .../tutorials/drawing/imgs/drawing-03.svg     | 507 ++++++++----------
     2 files changed, 340 insertions(+), 374 deletions(-)
    
    diff --git a/content/static/tutorials/drawing/imgs/drawing-01.svg b/content/static/tutorials/drawing/imgs/drawing-01.svg
    index 313ca4927..fb0b3bb08 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-01.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-01.svg
    @@ -4,145 +4,144 @@
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    - 
    + 
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg
    index e9c110c9a..4a3938ff8 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-03.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg
    @@ -3,277 +3,244 @@
     
     
    -
    -	
    -	
    -	
    -<<<<<<< HEAD
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -	
    -	
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -	
    -	
    -		
    -		
    -	
    -	 
    -	
    -		
    -		
    -	
    -	 
    -	
    -		
    -		
    -	
    -	 
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -		
    -	
    -	
    -		
    -		
    -	
    -=======
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -	
    -	y
    -	x
    -	
    -	
    -	
    -	
    -	
    -	
    -	Eight Grade
    -	Computer
    -	-2 
    -	 
    -	  -1 
    -	 
    -	  0       1 
    -	 
    -	   2
    -	2
    -	1
    -	-1
    -	-2
    ->>>>>>> FETCH_HEAD
    -	
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -		
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +
    +
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    +
    +	
    +
    +
    +	
    +
    +
    +
    +
    +
    +
    +
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +
    +	
    +	
    +
    + 
    +
    +	
    +	
    +
    + 
    +
    +	
    +	
    +
    + 
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +	
    +
    +
    +	
    +	
    +
    + 
    + 
    + 
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
     
     
    
    From 2e73d8ee278530682b4f97dc5f564b72fae31195 Mon Sep 17 00:00:00 2001
    From: philiptr 
    Date: Tue, 22 Mar 2016 11:24:07 -0700
    Subject: [PATCH 172/772] Fix size issues w tutorial svgs
    
    Fixing weird resizing issues with drawing tutorial svgs
    ---
     .../{drawing-01.svg => A94665D2BBAE05CF._t_}  |   0
     .../{drawing-03.svg => A94665E8842F2489._t_}  |   0
     .../tutorials/drawing/imgs/drawing-02.svg     | 222 ++++----
     .../tutorials/drawing/imgs/drawing-04.svg     | 163 +++---
     .../tutorials/drawing/imgs/drawing-05.svg     | 275 +++++-----
     .../tutorials/drawing/imgs/drawing-06.svg     | 443 ++++++++--------
     .../tutorials/drawing/imgs/drawing-07.svg     | 473 +++++++++---------
     content/static/tutorials/drawing/index.html   |   3 -
     8 files changed, 791 insertions(+), 788 deletions(-)
     rename content/static/tutorials/drawing/imgs/{drawing-01.svg => A94665D2BBAE05CF._t_} (100%)
     rename content/static/tutorials/drawing/imgs/{drawing-03.svg => A94665E8842F2489._t_} (100%)
    
    diff --git a/content/static/tutorials/drawing/imgs/drawing-01.svg b/content/static/tutorials/drawing/imgs/A94665D2BBAE05CF._t_
    similarity index 100%
    rename from content/static/tutorials/drawing/imgs/drawing-01.svg
    rename to content/static/tutorials/drawing/imgs/A94665D2BBAE05CF._t_
    diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_
    similarity index 100%
    rename from content/static/tutorials/drawing/imgs/drawing-03.svg
    rename to content/static/tutorials/drawing/imgs/A94665E8842F2489._t_
    diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg
    index 27ac069ba..1f3f1d879 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-02.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg
    @@ -16,120 +16,126 @@
     
     
     	
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    -		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
    +		
     	
     	
    -		
    -		
    -		
    -		
    +		
    +		
    +		
    +		
     	
     	
    -		
    -		
    -		
    -		
    -		
    -		
    +		
    +		
    +		
    +		
    +		
    +		
     	
     	
    -		
    -		
    -		
    -		
    -		
    -		
    +		
    +		
    +		
    +		
    +		
    +		
     	
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/drawing-04.svg
    index 3179193b5..b2f3c88a1 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-04.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-04.svg
    @@ -3,96 +3,91 @@
     
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
    - 
    - 
    + 
    + 
     
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
     
    - 
    - 
    + 
    + 
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    - 
    - 
    - 
    -  
    + 
    + 
    + 
    +  
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/imgs/drawing-05.svg b/content/static/tutorials/drawing/imgs/drawing-05.svg
    index dd3a82205..0f55e2269 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-05.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-05.svg
    @@ -4,162 +4,163 @@
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    +
     
    -	
    -
    -
    -	
    -
    -
    -	
    -
    -
    -	
    -
    -
    -	
    -
    -
    -	
    -
    -
    -	
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -
    -Example:  
    -
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -
    -
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +	
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +Example:  
    +
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/imgs/drawing-06.svg b/content/static/tutorials/drawing/imgs/drawing-06.svg
    index c747dc589..b60a7c33e 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-06.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-06.svg
    @@ -4,270 +4,271 @@
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    - 
    + 
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/imgs/drawing-07.svg b/content/static/tutorials/drawing/imgs/drawing-07.svg
    index 6c0a99324..8b0ab6460 100644
    --- a/content/static/tutorials/drawing/imgs/drawing-07.svg
    +++ b/content/static/tutorials/drawing/imgs/drawing-07.svg
    @@ -4,284 +4,287 @@
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    +
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html
    index c0b4cef64..914a43fe7 100644
    --- a/content/static/tutorials/drawing/index.html
    +++ b/content/static/tutorials/drawing/index.html
    @@ -22,9 +22,6 @@ 

    Daniel Shiffman

     line(1,0,4,5);
     
    -<<<<<<< Updated upstream -======= -<<<<<<< HEAD
    Even without having studied the syntax of writing code, the above statement should make a fair amount of sense. We are providing a command (which we will refer to as a "function") for the machine to follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn, from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a period.

    From dd654c0f4a027de1e5298fe3c4413832fcbc73a7 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:24:35 -0700 Subject: [PATCH 173/772] More size fixes Further size fixes to drawing tutorial svgs --- .../tutorials/drawing/imgs/drawing-01.svg | 147 +++++++++++ .../tutorials/drawing/imgs/drawing-03.svg | 247 ++++++++++++++++++ 2 files changed, 394 insertions(+) create mode 100644 content/static/tutorials/drawing/imgs/drawing-01.svg create mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/drawing-01.svg b/content/static/tutorials/drawing/imgs/drawing-01.svg new file mode 100644 index 000000000..bd50213f1 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-01.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg new file mode 100644 index 000000000..adf44d524 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6f7ee688cd20156f024e398a16ee0af27958c2a9 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:35:01 -0700 Subject: [PATCH 174/772] Fixing sizing issues with tutorial svgs More drawing tutorial fixes and spacing changes --- .../drawing/imgs/A94665E8842F2489._t_ | 407 ++++++++-------- .../drawing/imgs/A9466614153161FD._t_ | 290 ++++++++++++ .../tutorials/drawing/imgs/drawing-03.svg | 247 ---------- .../tutorials/drawing/imgs/drawing-04.svg | 165 +++---- .../tutorials/drawing/imgs/drawing-07.svg | 444 +++++++++--------- content/static/tutorials/drawing/index.html | 7 +- 6 files changed, 806 insertions(+), 754 deletions(-) create mode 100644 content/static/tutorials/drawing/imgs/A9466614153161FD._t_ delete mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ index 4a3938ff8..adf44d524 100644 --- a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ +++ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ @@ -3,244 +3,245 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ b/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ new file mode 100644 index 000000000..8b0ab6460 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg deleted file mode 100644 index adf44d524..000000000 --- a/content/static/tutorials/drawing/imgs/drawing-03.svg +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/drawing-04.svg index b2f3c88a1..68ad7098b 100644 --- a/content/static/tutorials/drawing/imgs/drawing-04.svg +++ b/content/static/tutorials/drawing/imgs/drawing-04.svg @@ -3,91 +3,98 @@ - - - - + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - - - - - - - - + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-07.svg b/content/static/tutorials/drawing/imgs/drawing-07.svg index 8b0ab6460..0e8d62c2b 100644 --- a/content/static/tutorials/drawing/imgs/drawing-07.svg +++ b/content/static/tutorials/drawing/imgs/drawing-07.svg @@ -4,287 +4,289 @@ - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + C415.4,96.2,412.1,99.7,407.2,99.7z M407.4,86.8c-3,0-4.7,2.6-4.7,4.7c0,3,1.7,5.6,4.9,5.6c2.8,0,4.7-2.2,4.7-5.2 + C412.1,88.7,410.4,86.8,407.4,86.8z"/> - + - + - + - + - + c4.9,0,7.3,2.4,7.3,5.8c0,2.8-1.7,4.9-4.3,5.6l0,0c3,0.4,5.2,2.8,5.2,5.8C-71.4,376-75.5,379.4-81.5,379.4z"/> - + - + - + C-70.5,588.1-73.7,591.4-78.5,591.4z M-78.5,578.5c-3,0-4.7,2.6-4.7,4.7c0,3,1.7,5.6,4.9,5.6c2.8,0,4.7-2.2,4.7-5.2 + S-75.4,578.5-78.5,578.5z"/> - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - - + + + - + - - - + c4.1,0,5.4,2.6,5.4,5.8v10.1c0.9,0,2.1,0.2,3,0.4v1.9h-6V371.9z"/> + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + - - - + C92.1,686.3,88.7,689.8,83,689.8z M84.8,674.1c-3.2,0-4.9,3.7-4.9,6.9v5.8c0.9,0.4,2.1,0.4,3.2,0.4c3.4,0,5.6-2.1,5.6-7.1 + C88.7,676.4,87.4,674.1,84.8,674.1z"/> + + + - - - - - - - - - - - - + + + + + + + + + + + - - + c4.9,0,7.3,2.4,7.3,5.8c0,2.8-1.7,4.9-4.3,5.6l0,0c3,0.4,5.2,2.8,5.2,5.8C386.7,689.6,382.4,693,376.4,693z"/> + + - - - - - + C166.4,541.6,165.7,541.8,164.9,541.8z"/> + + + + - - - - + + + - - + C424,422.1,420.3,425.1,414.7,425.1z M417.1,415.8l-3.4-0.2c-0.4,0-0.7,0-1.1,0c-1.3,0.9-2.2,2.2-2.2,3.5c0,2.1,2.1,3.4,4.9,3.4 + c3.5,0,5.6-1.7,5.6-3.9C420.9,417.1,419.7,415.9,417.1,415.8z M415.3,400.3c-2.6,0-4.3,1.7-4.3,3.9c0,2.4,1.5,3.9,4.1,3.9 + s4.1-1.5,4.1-3.9C419.2,401.8,417.7,400.3,415.3,400.3z"/> + + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index 914a43fe7..57f3fe17c 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -22,7 +22,6 @@

    Daniel Shiffman

     line(1,0,4,5);
     
    -
    Even without having studied the syntax of writing code, the above statement should make a fair amount of sense. We are providing a command (which we will refer to as a "function") for the machine to follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn, from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a period.

    @@ -47,17 +46,17 @@

    Simple Shapes

    A point() is the easiest of the shapes and a good place to start. To draw a point, we only need an x and y coordinate.

    - +

    A line() isn't terribly difficult either and simply requires two points: (x1,y1) and (x2,y2):

    - +

    Once we arrive at drawing a rect(), things become a bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner of the rectangle, as well as its width and height.

    - +

    A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for the rectangle itself. Note that Processing is case-sensitive.

    From 0c617173eb088045e8dc9f946c212f35982c3988 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:39:57 -0700 Subject: [PATCH 175/772] Further svg spacing fixes Aligning diagrams and resizing text --- .../{drawing-04.svg => A94665F3686FB3E6._t_} | 0 .../tutorials/drawing/imgs/drawing-02.svg | 236 +++++++++-------- .../tutorials/drawing/imgs/drawing-03.svg | 249 ++++++++++++++++++ content/static/tutorials/drawing/index.html | 2 +- 4 files changed, 372 insertions(+), 115 deletions(-) rename content/static/tutorials/drawing/imgs/{drawing-04.svg => A94665F3686FB3E6._t_} (100%) create mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ similarity index 100% rename from content/static/tutorials/drawing/imgs/drawing-04.svg rename to content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index 1f3f1d879..2341add1a 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -16,126 +16,134 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg new file mode 100644 index 000000000..e67d9bd1c --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index 57f3fe17c..a008bf984 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -56,7 +56,7 @@

    Simple Shapes

    Once we arrive at drawing a rect(), things become a bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner of the rectangle, as well as its width and height.

    - +

    A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for the rectangle itself. Note that Processing is case-sensitive.

    From 310e2bd09dd955f7bee5b1da56fa94db31cc0d61 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:43:44 -0700 Subject: [PATCH 176/772] Resizing tutorial images Resizing svgs for drawing tutorial --- .../drawing/imgs/A94665E8842F2489._t_ | 404 ++++++++--------- .../drawing/imgs/A9466614153161FD._t_ | 290 ------------ .../tutorials/drawing/imgs/drawing-02.svg | 246 ++++++----- .../tutorials/drawing/imgs/drawing-03.svg | 249 ----------- .../{A94665F3686FB3E6._t_ => drawing-04.svg} | 0 .../tutorials/drawing/imgs/drawing-07.svg | 416 +++++++++--------- 6 files changed, 535 insertions(+), 1070 deletions(-) delete mode 100644 content/static/tutorials/drawing/imgs/A9466614153161FD._t_ delete mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg rename content/static/tutorials/drawing/imgs/{A94665F3686FB3E6._t_ => drawing-04.svg} (100%) diff --git a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ index adf44d524..e67d9bd1c 100644 --- a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ +++ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ @@ -3,245 +3,247 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ b/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ deleted file mode 100644 index 8b0ab6460..000000000 --- a/content/static/tutorials/drawing/imgs/A9466614153161FD._t_ +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index 2341add1a..f817a4e11 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -16,134 +16,136 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg deleted file mode 100644 index e67d9bd1c..000000000 --- a/content/static/tutorials/drawing/imgs/drawing-03.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ b/content/static/tutorials/drawing/imgs/drawing-04.svg similarity index 100% rename from content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ rename to content/static/tutorials/drawing/imgs/drawing-04.svg diff --git a/content/static/tutorials/drawing/imgs/drawing-07.svg b/content/static/tutorials/drawing/imgs/drawing-07.svg index 0e8d62c2b..fe9206917 100644 --- a/content/static/tutorials/drawing/imgs/drawing-07.svg +++ b/content/static/tutorials/drawing/imgs/drawing-07.svg @@ -4,289 +4,289 @@ - - - - - - - - - - - + + + + + + + + + + + - - + c0.4-1.3,0.9-3.2,1.7-5.2l2.4-6.9c-0.9,0-1.7-0.2-2.2-0.4v-2h8v1.9C-128.7,166.8-129.5,167-130.4,167z"/> - + - + - - + - + - + - + C415.4,128.2,412.1,131.7,407.2,131.7z M407.4,118.8c-3,0-4.7,2.6-4.7,4.7c0,3,1.7,5.6,4.9,5.6c2.8,0,4.7-2.2,4.7-5.2 + C412.1,120.7,410.4,118.8,407.4,118.8z"/> - + - + - + - - + c4.9,0,7.3,2.4,7.3,5.8c0,2.8-1.7,4.9-4.3,5.6l0,0c3,0.4,5.2,2.8,5.2,5.8C-71.4,408-75.5,411.4-81.5,411.4z"/> - + - + - + C-70.5,620.1-73.7,623.4-78.5,623.4z M-78.5,610.5c-3,0-4.7,2.6-4.7,4.7c0,3,1.7,5.6,4.9,5.6c2.8,0,4.7-2.2,4.7-5.2 + S-75.4,610.5-78.5,610.5z"/> - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - + + + - - + - - + + - - + + - - + + - - + + - - - + + + - + - - - + c4.1,0,5.4,2.6,5.4,5.8v10.1c0.9,0,2.1,0.2,3,0.4v1.9h-6V403.9z"/> + + + - - - - + + + - + - - - - + + + + - - - + + - - + - - - + C92.1,718.3,88.7,721.8,83,721.8z M84.8,706.1c-3.2,0-4.9,3.7-4.9,6.9v5.8c0.9,0.4,2.1,0.4,3.2,0.4c3.4,0,5.6-2.1,5.6-7.1 + C88.7,708.4,87.4,706.1,84.8,706.1z"/> + + + - - - + + - - - - - + + + + - - - - + + + - - + c4.9,0,7.3,2.4,7.3,5.8c0,2.8-1.7,4.9-4.3,5.6l0,0c3,0.4,5.2,2.8,5.2,5.8C386.7,721.6,382.4,725,376.4,725z"/> + + - - - + + - - + + + c4.1,0,5.4,2.6,5.4,5.8V587c0.9,0,2.1,0.2,3,0.4v1.9L226.7,589.3L226.7,589.3z"/> - - - - + + + - - + C424,454.1,420.3,457.1,414.7,457.1z M417.1,447.8l-3.4-0.2c-0.4,0-0.7,0-1.1,0c-1.3,0.9-2.2,2.2-2.2,3.5c0,2.1,2.1,3.4,4.9,3.4 + c3.5,0,5.6-1.7,5.6-3.9C420.9,449.1,419.7,447.9,417.1,447.8z M415.3,432.3c-2.6,0-4.3,1.7-4.3,3.9c0,2.4,1.5,3.9,4.1,3.9 + s4.1-1.5,4.1-3.9C419.2,433.8,417.7,432.3,415.3,432.3z"/> + + From bf2090d302ea2473a062573fb82cdbbcdbc40a05 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:46:53 -0700 Subject: [PATCH 177/772] Index changes for drawing tutorial Removing unnecessary spaces from drawing tutorial --- .../drawing/imgs/A94665F3686FB3E6._t_ | 100 +++++++ .../tutorials/drawing/imgs/drawing-03.svg | 252 ++++++++++++++++++ content/static/tutorials/drawing/index.html | 1 - 3 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ create mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ b/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ new file mode 100644 index 000000000..a470196a3 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg new file mode 100644 index 000000000..42d822483 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index a008bf984..a06617776 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -40,7 +40,6 @@

    Simple Shapes



    -

    For each shape, we will ask ourselves what information is required to specify the location and size (and later color) of that shape and learn how Processing expects to receive that information. In each of the diagrams below, we'll assume a window with a width of 10 pixels and height of 10 pixels. This isn't particularly realistic since when you really start coding you will most likely work with much larger windows (10x10 pixels is barely a few millimeters of screen space.) Nevertheless for demonstration purposes, it is nice to work with smaller numbers in order to present the pixels as they might appear on graph paper (for now) to better illustrate the inner workings of each line of code.

    A point() is the easiest of the shapes and a good place to start. To draw a point, we only need an x and y coordinate. From cadcbf2716da8e94bb3c7979686cd0feb2601545 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:52:44 -0700 Subject: [PATCH 178/772] Further drawing tutorial fixes Aligning coordinate diagrams --- .../drawing/imgs/A94665E8842F2489._t_ | 413 +++++++++--------- .../drawing/imgs/A94665F3686FB3E6._t_ | 100 ----- .../tutorials/drawing/imgs/drawing-02.svg | 245 ++++++----- .../tutorials/drawing/imgs/drawing-03.svg | 252 ----------- .../tutorials/drawing/imgs/drawing-04.svg | 151 +++---- content/static/tutorials/drawing/index.html | 4 +- 6 files changed, 408 insertions(+), 757 deletions(-) delete mode 100644 content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ delete mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ index e67d9bd1c..42d822483 100644 --- a/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ +++ b/content/static/tutorials/drawing/imgs/A94665E8842F2489._t_ @@ -3,247 +3,250 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ b/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ deleted file mode 100644 index a470196a3..000000000 --- a/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index f817a4e11..fed384e19 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -16,136 +16,135 @@ - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg deleted file mode 100644 index 42d822483..000000000 --- a/content/static/tutorials/drawing/imgs/drawing-03.svg +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/drawing-04.svg index 68ad7098b..011a3cd80 100644 --- a/content/static/tutorials/drawing/imgs/drawing-04.svg +++ b/content/static/tutorials/drawing/imgs/drawing-04.svg @@ -3,98 +3,99 @@ - - - - + + + + - - - - + + + - + c1.4-3.4,4.6-5.7,8.9-5.7c5.7,0,7.4,3.4,7.4,8v14c1.4,0,2.9,0.3,4.3,0.6v2.6h-8.9v0.2H-393.2z"/> + - - + + - - - + + - + c1.4-3.4,4.6-5.7,8.9-5.7c5.7,0,7.4,3.4,7.4,8v14c1.4,0,2.9,0.3,4.3,0.6v2.6h-8.9L-113.5,723.3L-113.5,723.3z"/> + - - + + - - - + + - - + + - + - + - - + C372.6,732,367.6,736.1,359.5,736.1z M363,723.3l-4.9-0.3c-0.6,0-1.1,0-1.4,0c-2,1.4-3.2,3.2-3.2,4.9c0,2.9,2.9,4.9,6.9,4.9 + c5.2,0,8-2.3,8-5.4C368.1,725,366.7,723.3,363,723.3z M360.4,701.3c-3.7,0-6,2.3-6,5.7s2,5.4,5.7,5.4c3.4,0,5.7-2,5.7-5.4 + C365.8,703.5,363.8,701.3,360.4,701.3z"/> + + - - - - + + + + - - - - - + + + + - + - + c-3.4,0-5.2,1.4-5.2,3.7c0,5.7,12.6,2.6,12.6,10.9C870,720.4,865.9,723.9,859.4,723.9z"/> + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index a06617776..6a9ee2086 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -55,10 +55,10 @@

    Simple Shapes

    Once we arrive at drawing a rect(), things become a bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner of the rectangle, as well as its width and height.

    - +

    A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for the rectangle itself. Note that Processing is case-sensitive. -

    +


    From aeec99214249ba893f6bef509eeafc5167bbea44 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 11:53:08 -0700 Subject: [PATCH 179/772] Fixing pesky fg. 3 size issue Resize fg. 3 in drawing tutorial --- .../tutorials/drawing/imgs/drawing-03.svg | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 content/static/tutorials/drawing/imgs/drawing-03.svg diff --git a/content/static/tutorials/drawing/imgs/drawing-03.svg b/content/static/tutorials/drawing/imgs/drawing-03.svg new file mode 100644 index 000000000..9b611b711 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-03.svg @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 1f707d4cd5ba8bbc17a49c7e285b4bc7c692e5d0 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 12:02:09 -0700 Subject: [PATCH 180/772] Getting rid of extra text Deleting extra text in drawing tutorial --- .../{drawing-04.svg => A94665F3686FB3E6._t_} | 0 .../tutorials/drawing/imgs/drawing-02.svg | 208 +++++++++--------- content/static/tutorials/drawing/index.html | 100 +-------- 3 files changed, 105 insertions(+), 203 deletions(-) rename content/static/tutorials/drawing/imgs/{drawing-04.svg => A94665F3686FB3E6._t_} (100%) diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ similarity index 100% rename from content/static/tutorials/drawing/imgs/drawing-04.svg rename to content/static/tutorials/drawing/imgs/A94665F3686FB3E6._t_ diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index fed384e19..914fa8f46 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -16,135 +16,135 @@ - - + - - + - - - - + + + + - - + + - + - - + + - - - - - - - - - + + + + + + + + + - - - - + + + + - - + - - + - - - - + + + - + - + l2.4,11.4C523.5,711,514.6,712.7,504.8,712.7z"/> + - - - - + + + - - + l2.4,11.4C1379.1,711,1370.2,712.7,1361,712.7z"/> + - - - + + + diff --git a/content/static/tutorials/drawing/index.html b/content/static/tutorials/drawing/index.html index 6a9ee2086..547195f58 100644 --- a/content/static/tutorials/drawing/index.html +++ b/content/static/tutorials/drawing/index.html @@ -84,105 +84,6 @@

    Simple Shapes





    -======= ->>>>>>> Stashed changes - -

    - Even without having studied the syntax of writing code, the above statement should make a fair amount of sense. We are providing a command (which we will refer to as a "function") for the machine to follow entitled "line." In addition, we are specifying some arguments for how that line should be drawn, from point A (1,0) to point B (4,5). If you think of that line of code as a sentence, the function is a verb and the arguments are the objects of the sentence. The code sentence also ends with a semicolon instead of a period. -

    - - - - -

    - The key here is to realize that the computer screen is nothing more than a fancier piece of graph paper. Each pixel of the screen is a coordinate - two numbers, an "x" (horizontal) and a "y" (vertical) - that determines the location of a point in space. And it is our job to specify what shapes and colors should appear at these pixel coordinates. -

    - -

    - Nevertheless, there is a catch here. The graph paper from eighth grade ("Cartesian coordinate system") placed (0,0) in the center with the y-axis pointing up and the x-axis pointing to the right (in the positive direction, negative down and to the left). The coordinate system for pixels in a computer window, however, is reversed along the y-axis. (0,0) can be found at the top left with the positive direction to the right horizontally and down vertically. -

    - - - - - - -

    Simple Shapes

    - -

    - The vast majority of the programming examples you'll see with Processing are visual in nature. These examples, at their core, involve drawing shapes and setting pixels. Let's begin by looking at four primitive shapes. - - - - -

    - For each shape, we will ask ourselves what information is required to specify the location and size (and later color) of that shape and learn how Processing expects to receive that information. In each of the diagrams below, we'll assume a window with a width of 10 pixels and height of 10 pixels. This isn't particularly realistic since when you really start coding you will most likely work with much larger windows (10x10 pixels is barely a few millimeters of screen space.) Nevertheless for demonstration purposes, it is nice to work with smaller numbers in order to present the pixels as they might appear on graph paper (for now) to better illustrate the inner workings of each line of code. -

    - -

    - A point() is the easiest of the shapes and a good place to start. To draw a point, we only need an x and y coordinate. -

    - - - - -

    - A line() isn't terribly difficult either and simply requires two points: (x1,y1) and (x2,y2): -

    - - - - - -

    - Once we arrive at drawing a rect(), things become a bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner of the rectangle, as well as its width and height. -

    - - - - - - -

    - A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for the rectangle itself. Note that Processing is case-sensitive. -

    - - - - - - -

    - Finally, we can also draw a rectangle with two points (the top left corner and the bottom right corner). The mode here is "CORNERS". -

    - - - - - -

    - Once we have become comfortable with the concept of drawing a rectangle, an ellipse() is a snap. In fact, it is identical to rect() with the difference being that an ellipse is drawn where the bounding box of the rectangle would be. The default mode for ellipse() is "CENTER", rather than "CORNER." -

    - - - - - -

    - It is important to acknowledge that these ellipses do not look particularly circular. Processing has a built-in methodology for selecting which pixels should be used to create a circular shape. Zoomed in like this, we get a bunch of squares in a circle-like pattern, but zoomed out on a computer screen, we get a nice round ellipse. Processing also gives us the power to develop our own algorithms for coloring in individual pixels (in fact, we can already imagine how we might do this using "point" over and over again), but for now, we are content with allowing the "ellipse" statement to do the hard work. (For more about pixels, start with: the pixels reference page, though be warned this is a great deal more advanced than this tutorial.) -

    - -

    - Now let's look at what some code with shapes in more realistic setting, with window dimensions of 200 by 200. Note the use of the size() function to specify the width and height of the window. -

    - - - - -<<<<<<< Updated upstream -======= ->>>>>>> FETCH_HEAD ->>>>>>> Stashed changes
     size(200,200);
     rectMode(CENTER);
    @@ -194,6 +95,7 @@ 

    Simple Shapes

    line(110,150,120,160);
    + From 6418d7951e508f02d8d8819eb84e9a212b7e6677 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 12:02:28 -0700 Subject: [PATCH 181/772] Fixing fg. 4 Resizing fg 04 in drawing tutorial --- .../tutorials/drawing/imgs/drawing-04.svg | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 content/static/tutorials/drawing/imgs/drawing-04.svg diff --git a/content/static/tutorials/drawing/imgs/drawing-04.svg b/content/static/tutorials/drawing/imgs/drawing-04.svg new file mode 100644 index 000000000..a819634e0 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/drawing-04.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From be8b6baa67ae6f9a57ef705746ff89be11982cdf Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 12:07:31 -0700 Subject: [PATCH 182/772] Final image fixes for drawing tutorial Last arrangement and size fixes for drawing tutorial --- .../drawing/imgs/A94665DD9FEE952C._t_ | 150 ++++++++++++ .../tutorials/drawing/imgs/drawing-02.svg | 225 +++++++++--------- 2 files changed, 262 insertions(+), 113 deletions(-) create mode 100644 content/static/tutorials/drawing/imgs/A94665DD9FEE952C._t_ diff --git a/content/static/tutorials/drawing/imgs/A94665DD9FEE952C._t_ b/content/static/tutorials/drawing/imgs/A94665DD9FEE952C._t_ new file mode 100644 index 000000000..914fa8f46 --- /dev/null +++ b/content/static/tutorials/drawing/imgs/A94665DD9FEE952C._t_ @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + line (1,0,4,5); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/drawing/imgs/drawing-02.svg b/content/static/tutorials/drawing/imgs/drawing-02.svg index 914fa8f46..beb9935ab 100644 --- a/content/static/tutorials/drawing/imgs/drawing-02.svg +++ b/content/static/tutorials/drawing/imgs/drawing-02.svg @@ -16,135 +16,134 @@ - - - - + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + + - - - - + + + - - - - + C-763.4,634.6-766.8,635.3-770.3,635.8z"/> + + + - - - - + + + - + - + l2.4,11.4C865.8,698.9,856.8,700.6,847.1,700.6z"/> + - - - - - + + + + - + l2.4,11.4C1721.4,698.9,1712.5,700.6,1703.2,700.6z"/> + - - - + + + From edd7e26a249415a0f5a0152728b90499fdba3f46 Mon Sep 17 00:00:00 2001 From: philiptr Date: Tue, 22 Mar 2016 12:52:59 -0700 Subject: [PATCH 183/772] Typesetting all Vector tutorial images --- content/static/tutorials/pvector/imgs/add.svg | 104 ++- .../tutorials/pvector/imgs/definition.svg | 239 +++++- content/static/tutorials/pvector/imgs/div.svg | 103 ++- .../tutorials/pvector/imgs/howtogetthere.svg | 280 ++++++- content/static/tutorials/pvector/imgs/mag.svg | 100 ++- .../pvector/imgs/mouseaccelerate1.svg | 282 ++++++- .../pvector/imgs/mouseaccelerate2.svg | 137 ++- .../static/tutorials/pvector/imgs/mult.svg | 106 ++- .../tutorials/pvector/imgs/normalize1.svg | 388 ++++++++- .../tutorials/pvector/imgs/normalize2.svg | 225 ++++- .../tutorials/pvector/imgs/pythagorean.svg | 61 +- .../static/tutorials/pvector/imgs/steps.svg | 779 ++++++++++++++++-- content/static/tutorials/pvector/imgs/sub.svg | 117 ++- content/static/tutorials/pvector/imgs/v.svg | 70 +- content/static/tutorials/pvector/index.html | 2 +- 15 files changed, 2631 insertions(+), 362 deletions(-) diff --git a/content/static/tutorials/pvector/imgs/add.svg b/content/static/tutorials/pvector/imgs/add.svg index ce3a5376e..5b8f98abe 100644 --- a/content/static/tutorials/pvector/imgs/add.svg +++ b/content/static/tutorials/pvector/imgs/add.svg @@ -1,38 +1,74 @@ - + - - -u - - -6 - - - -v - - -8 - - - - -w - - - -w - - -u - - -v - - -= -+ + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + += ++ diff --git a/content/static/tutorials/pvector/imgs/definition.svg b/content/static/tutorials/pvector/imgs/definition.svg index 6a67730d8..fcb0f6e60 100644 --- a/content/static/tutorials/pvector/imgs/definition.svg +++ b/content/static/tutorials/pvector/imgs/definition.svg @@ -1,15 +1,232 @@ - + - - - - -Point B -Point A -A Vector (drawn as an arrow) -represents the difference -beteen points A and B. + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/div.svg b/content/static/tutorials/pvector/imgs/div.svg index 18f2a74e6..886641301 100644 --- a/content/static/tutorials/pvector/imgs/div.svg +++ b/content/static/tutorials/pvector/imgs/div.svg @@ -1,37 +1,74 @@ - + - -u --4 --2 - - -8 -4 - - -w - - -u - - -2 -= -/ - - - - - - - -w - - - - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + += +/ + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/howtogetthere.svg b/content/static/tutorials/pvector/imgs/howtogetthere.svg index a17c8393e..0e0fb971f 100644 --- a/content/static/tutorials/pvector/imgs/howtogetthere.svg +++ b/content/static/tutorials/pvector/imgs/howtogetthere.svg @@ -1,22 +1,266 @@ - + - - -New -Location -Original -Location -A Vector telling us -how to get there! - - - -Vertical -Steps -Horizontal -Steps - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/mag.svg b/content/static/tutorials/pvector/imgs/mag.svg index adff47405..ab1ad96df 100644 --- a/content/static/tutorials/pvector/imgs/mag.svg +++ b/content/static/tutorials/pvector/imgs/mag.svg @@ -1,21 +1,87 @@ - + -3 -4 - - - - -v - - - - -How long is the vector? - - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg b/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg index 15ca363b6..155b84c25 100644 --- a/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg +++ b/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg @@ -1,17 +1,273 @@ - + - - - - -mouse -location -mover -object -This is what we want -our acceleration vector -to look like (only not this big). + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg b/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg index 45ab52b6d..0895a37ab 100644 --- a/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg +++ b/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg @@ -1,15 +1,130 @@ - + - - - - -(mouseX,mouseY) -(x,y) -dy = mouseY-y -dx = mouseX-x - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/mult.svg b/content/static/tutorials/pvector/imgs/mult.svg index a98190c81..481846a8d 100644 --- a/content/static/tutorials/pvector/imgs/mult.svg +++ b/content/static/tutorials/pvector/imgs/mult.svg @@ -2,38 +2,76 @@ - -u --3 - - -7 - - -w - - -w - - -u - - -3 -= -* - - - --9 -21 - - - - - - - - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + += +* + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/normalize1.svg b/content/static/tutorials/pvector/imgs/normalize1.svg index 586c3c115..c8baba9d1 100644 --- a/content/static/tutorials/pvector/imgs/normalize1.svg +++ b/content/static/tutorials/pvector/imgs/normalize1.svg @@ -1,34 +1,362 @@ - + - - -This vector -has a length of 10. -v - - -This vector -points in the same -direction and now -has a length of 1. -(unit vector) -v - - - - - -10 - - - -1 -Process of -Normalization - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/normalize2.svg b/content/static/tutorials/pvector/imgs/normalize2.svg index 906959ff3..218617c68 100644 --- a/content/static/tutorials/pvector/imgs/normalize2.svg +++ b/content/static/tutorials/pvector/imgs/normalize2.svg @@ -1,31 +1,202 @@ - + -3 -4 - 5 (magnitude) - - - - - - - -3 / 5 -4 / 5 - 5 / 5 = 1 - - - - - - - -Normalization -(Divide by magnitude.) - - - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/pythagorean.svg b/content/static/tutorials/pvector/imgs/pythagorean.svg index 14f7f3ab8..0be4361f7 100644 --- a/content/static/tutorials/pvector/imgs/pythagorean.svg +++ b/content/static/tutorials/pvector/imgs/pythagorean.svg @@ -1,17 +1,52 @@ - + -b -a -a -2 - + b -2 - = c -2 - - -c + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/steps.svg b/content/static/tutorials/pvector/imgs/steps.svg index b954d79af..a5433fe27 100644 --- a/content/static/tutorials/pvector/imgs/steps.svg +++ b/content/static/tutorials/pvector/imgs/steps.svg @@ -1,61 +1,726 @@ - + - - -3 Steps -East -15 Steps -West - - - - - - - - - -N -W -E -S - - - -5 Steps -North -3 Steps -North - - - -2 Steps -East -1 Step -South - - - - - - - -(3,5) - --> Walk three steps East, - - turn and walk five steps North. -(2,-1) - --> Walk two steps East, - -turn and walk one step South. -(-15,3) - --> Walk fifteen steps West, - -turn and walk three steps North. -(3,5) -(2,-1) -(-15,3) + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/imgs/sub.svg b/content/static/tutorials/pvector/imgs/sub.svg index 02072d88c..ec4aa0af3 100644 --- a/content/static/tutorials/pvector/imgs/sub.svg +++ b/content/static/tutorials/pvector/imgs/sub.svg @@ -1,43 +1,82 @@ - + - -u - - -2 - - --v - - -+v - - --2 - - - - - -w - - - -w - - -u - - -v - - -= -- - - - + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + += +- + + + diff --git a/content/static/tutorials/pvector/imgs/v.svg b/content/static/tutorials/pvector/imgs/v.svg index 98e0e22a8..ec57421c4 100644 --- a/content/static/tutorials/pvector/imgs/v.svg +++ b/content/static/tutorials/pvector/imgs/v.svg @@ -1,28 +1,50 @@ - + - - -u - - - -2 - - - -v - - -5 - - - - - -4 - -3 + viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/tutorials/pvector/index.html b/content/static/tutorials/pvector/index.html index 1003a7846..99b9d6c7a 100644 --- a/content/static/tutorials/pvector/index.html +++ b/content/static/tutorials/pvector/index.html @@ -426,7 +426,7 @@

    Vectors: More Algebra

    PVector u = new PVector(-3,7); u.mult(3); // This PVector is now three times the size and is equal to (-9,21).

    - +
    Example: Vector multiplication

    +The vast majority of the programming examples you'll see with Processing are visual in nature. These examples, at their core, involve drawing shapes and setting pixels. Let's begin by looking at four primitive shapes. +

    + + +

    +For each shape, we will ask ourselves what information is required to specify the location and size (and later color) of that shape and learn how Processing expects to receive that information. In each of the diagrams below, we'll assume a window with a width of 10 pixels and height of 10 pixels. This isn't particularly realistic since when you really start coding you will most likely work with much larger windows (10x10 pixels is barely a few millimeters of screen space.) Nevertheless for demonstration purposes, it is nice to work with smaller numbers in order to present the pixels as they might appear on graph paper (for now) to better illustrate the inner workings of each line of code. +

    + A
    point() is the easiest of the shapes and a good place to start. To draw a point, we only need an x and y coordinate. +

    + + +

    +A line() isn't terribly difficult either and simply requires two points: (x1,y1) and (x2,y2): +

    + + +

    +Once we arrive at drawing a rect(), things become a bit more complicated. In Processing, a rectangle is specified by the coordinate for the top left corner of the rectangle, as well as its width and height. +

    + + +

    +A second way to draw a rectangle involves specifying the centerpoint, along with width and height. If we prefer this method, we first indicate that we want to use the "CENTER" mode before the instruction for the rectangle itself. Note that Processing is case-sensitive. +

    + + +

    +Finally, we can also draw a rectangle with two points (the top left corner and the bottom right corner). The mode here is "CORNERS". +

    + + +

    +Once we have become comfortable with the concept of drawing a rectangle, an ellipse() is a snap. In fact, it is identical to rect() with the difference being that an ellipse is drawn where the bounding box of the rectangle would be. The default mode for ellipse() is "CENTER", rather than "CORNER." +

    + +

    + +

    + +

    + + +It is important to acknowledge that these ellipses do not look particularly circular. Processing has a built-in methodology for selecting which pixels should be used to create a circular shape. Zoomed in like this, we get a bunch of squares in a circle-like pattern, but zoomed out on a computer screen, we get a nice round ellipse. Processing also gives us the power to develop our own algorithms for coloring in individual pixels (in fact, we can already imagine how we might do this using +"point" over and over again), but for now, we are content with allowing the "ellipse" statement to do the hard work. (For more about pixels, start with: the pixels reference page, though be warned this is a great deal more advanced than this tutorial.) +

    +Now let's look at what some code with shapes in more realistic setting, with window dimensions of 200 by 200. Note the use of the size() function to specify the width and height of the window. +

    + +

    +======= +>>>>>>> Stashed changes

    
    From 44b83e8326e40d2402afb0493ed9ac946b44204e Mon Sep 17 00:00:00 2001
    From: Elie Zananiri 
    Date: Tue, 22 Mar 2016 16:21:13 -0400
    Subject: [PATCH 184/772] Added Ptmx library. Re-enabled IgnoCodeLib.
    
    ---
     contrib_generate/broken.conf  | 1 -
     contrib_generate/sources.conf | 3 ++-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/contrib_generate/broken.conf b/contrib_generate/broken.conf
    index 0f1c25733..5ea5e8d87 100644
    --- a/contrib_generate/broken.conf
    +++ b/contrib_generate/broken.conf
    @@ -22,7 +22,6 @@
     098
     099
     100
    -105
     108
     109
     110
    diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf
    index 0fb58a015..ef319bab0 100644
    --- a/contrib_generate/sources.conf
    +++ b/contrib_generate/sources.conf
    @@ -1,4 +1,4 @@
    -# Next ID: 185
    +# Next ID: 186
     # Increment after assigning ID to new contribution
     
     [Library : 3D]
    @@ -138,6 +138,7 @@
     [Library : Other]
     093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt
     157 \ http://www.lagers.org.uk/processing/steganos/Steganos.txt
    +185 \ http://softlab.pt/ptmx/ptmx.txt
     
     [Library : Simulation]
     018 \ http://www.ricardmarxer.com/fisica/download/fisica.txt
    
    From 967dbeebafc8466ffb22a77a1fa6e251fccb54bd Mon Sep 17 00:00:00 2001
    From: philiptr 
    Date: Tue, 22 Mar 2016 13:29:11 -0700
    Subject: [PATCH 185/772] testing svg size fixing
    
    ---
     content/static/tutorials/pvector/imgs/add.svg | 106 +++++++++---------
     content/static/tutorials/pvector/index.html   |   4 +-
     2 files changed, 55 insertions(+), 55 deletions(-)
    
    diff --git a/content/static/tutorials/pvector/imgs/add.svg b/content/static/tutorials/pvector/imgs/add.svg
    index 5b8f98abe..0a398a332 100644
    --- a/content/static/tutorials/pvector/imgs/add.svg
    +++ b/content/static/tutorials/pvector/imgs/add.svg
    @@ -2,73 +2,73 @@
     
     
     
    -
    -
    +	 viewBox="0 296 612 200" enable-background="new 0 296 612 200" xml:space="preserve">
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    -	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    -=
    -+
    +
    +
    +=
    ++
     
    diff --git a/content/static/tutorials/pvector/index.html b/content/static/tutorials/pvector/index.html
    index 99b9d6c7a..aee9290d8 100644
    --- a/content/static/tutorials/pvector/index.html
    +++ b/content/static/tutorials/pvector/index.html
    @@ -410,7 +410,7 @@ 

    Vectors: More Algebra



    w = (-9, 21)

    - +

    The function inside the PVector class therefore is written as:
     
    @@ -426,7 +426,7 @@ 

    Vectors: More Algebra

    PVector u = new PVector(-3,7); u.mult(3); // This PVector is now three times the size and is equal to (-9,21).

    - +
    Example: Vector multiplication
    
    From b8da75532774a8bc595f93a36ea18185f88d9d05 Mon Sep 17 00:00:00 2001
    From: philiptr 
    Date: Tue, 22 Mar 2016 13:47:37 -0700
    Subject: [PATCH 186/772] Fixing svgs in pvector tutorial
    
    ---
     .../tutorials/pvector/imgs/definition.svg     |  405 +++---
     content/static/tutorials/pvector/imgs/div.svg |  104 +-
     .../tutorials/pvector/imgs/howtogetthere.svg  |  488 +++----
     content/static/tutorials/pvector/imgs/mag.svg |  139 +-
     .../pvector/imgs/mouseaccelerate1.svg         |  460 ++++---
     .../pvector/imgs/mouseaccelerate2.svg         |  198 +--
     .../static/tutorials/pvector/imgs/mult.svg    |  102 +-
     .../tutorials/pvector/imgs/normalize1.svg     |  591 ++++----
     .../tutorials/pvector/imgs/normalize2.svg     |  335 +++--
     .../tutorials/pvector/imgs/pythagorean.svg    |   56 +-
     .../static/tutorials/pvector/imgs/steps.svg   | 1198 +++++++++--------
     content/static/tutorials/pvector/imgs/sub.svg |  116 +-
     content/static/tutorials/pvector/imgs/v.svg   |   63 +-
     content/static/tutorials/pvector/index.html   |    2 +-
     14 files changed, 2130 insertions(+), 2127 deletions(-)
    
    diff --git a/content/static/tutorials/pvector/imgs/definition.svg b/content/static/tutorials/pvector/imgs/definition.svg
    index fcb0f6e60..408fe7e92 100644
    --- a/content/static/tutorials/pvector/imgs/definition.svg
    +++ b/content/static/tutorials/pvector/imgs/definition.svg
    @@ -2,231 +2,232 @@
     
     
     
    -
    -
    -
    -
    +	 viewBox="-16.5 246 645 300" enable-background="new -16.5 246 645 300" xml:space="preserve">
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C463.7,404.4,462.5,404.4,461.6,404.4z M461.5,400.4c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L461.5,400.4L461.5,400.4z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    +		C465.8,427.3,464.8,427.6,463.8,427.6z"/>
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C416,450.4,414.8,450.4,413.9,450.4z M413.8,446.4c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L413.8,446.4L413.8,446.4z"/>
    +	
    +	
    +	
    +	
     
     
    diff --git a/content/static/tutorials/pvector/imgs/div.svg b/content/static/tutorials/pvector/imgs/div.svg
    index 886641301..dcca3cb7a 100644
    --- a/content/static/tutorials/pvector/imgs/div.svg
    +++ b/content/static/tutorials/pvector/imgs/div.svg
    @@ -2,73 +2,75 @@
     
     
     
    -
    +	 viewBox="-16.5 314.5 645 163" enable-background="new -16.5 314.5 645 163" xml:space="preserve">
    +
     
    -	
    +	
     
     
    -	
    -	
    +	
    +	
     
     
    -	
    -	
    +	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -=
    -/
    -
    -
    -
    -
    -
    -
    -
    +=
    +/
    +
    +
    +
    +
    +
    +
    +
     
    -	
    +	
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/howtogetthere.svg b/content/static/tutorials/pvector/imgs/howtogetthere.svg
    index 0e0fb971f..3832d1762 100644
    --- a/content/static/tutorials/pvector/imgs/howtogetthere.svg
    +++ b/content/static/tutorials/pvector/imgs/howtogetthere.svg
    @@ -2,265 +2,271 @@
     
     
     
    -
    -
    +	 viewBox="-16.5 286 645 220" enable-background="new -16.5 286 645 220" xml:space="preserve">
    +
    +
     
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
    -
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/mag.svg b/content/static/tutorials/pvector/imgs/mag.svg
    index ab1ad96df..21dc49665 100644
    --- a/content/static/tutorials/pvector/imgs/mag.svg
    +++ b/content/static/tutorials/pvector/imgs/mag.svg
    @@ -2,86 +2,85 @@
     
     
     
    +	 viewBox="-16.5 314.5 645 163" enable-background="new -16.5 314.5 645 163" xml:space="preserve">
     
    -	
    +		c0.9-0.4,1.8-0.6,3-0.6c2.3,0,3.5,1.1,3.5,2.8c0,1.3-0.8,2.3-2.1,2.7l0,0c1.4,0.2,2.5,1.4,2.5,2.8
    +		C189.6,394.9,187.6,396.5,184.7,396.5z"/>
     
     
    -	
    +	
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    -	
    +	
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +		C359.2,368.7,357.4,370.1,354.7,370.1z M355.9,365.7l-1.7-0.1c-0.2,0-0.4,0-0.5,0c-0.7,0.5-1.1,1-1.1,1.7c0,1,1,1.6,2.3,1.6
    +		c1.7,0,2.7-0.8,2.7-1.8C357.7,366.2,357.1,365.7,355.9,365.7z M354.9,358.2c-1.3,0-2,0.8-2,1.9c0,1.2,0.7,1.9,2,1.9
    +		c1.2,0,2-0.7,2-1.9S356.2,358.2,354.9,358.2z"/>
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    +
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg b/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg
    index 155b84c25..bc42489e4 100644
    --- a/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg
    +++ b/content/static/tutorials/pvector/imgs/mouseaccelerate1.svg
    @@ -2,272 +2,266 @@
     
     
     
    -
    -
    -
    -
    +	 viewBox="-16.5 296 645 200" enable-background="new -16.5 296 645 200" xml:space="preserve">
    +
    +
    +
    +
     
    -	
    -	
    -	
    +	
    +	
    -	
    +	
    -	
    +		c-1.2,0-1.7,0.5-1.7,1.3c0,1.9,4.3,0.9,4.3,3.7C386.7,312.7,385.3,313.9,383,313.9z"/>
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C368.7,334.4,367.5,334.5,366.6,334.4z M366.5,330.5c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L366.5,330.5L366.5,330.5z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +		c0.3-0.8,1.3-1.9,2.9-1.9c1.6,0,2.5,0.9,2.5,2.8v4.8c0.5,0,1,0.1,1.4,0.2v0.9L133.8,462L133.8,462z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    +		C162.2,482.6,161.2,482.8,160.2,482.8z"/>
    +	
     
     
    -	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +		c0.5-1.2,1.5-1.9,3-1.9c1.9,0,2.6,1.2,2.6,2.7v4.8c0.5,0,1,0.1,1.4,0.2v0.9h-2.8V414.2z"/>
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +		C412,437,411.1,437.3,410.1,437.3z"/>
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +		C478.3,463,476.5,464.5,473.8,464.5z M475,460l-1.7-0.1c-0.2,0-0.4,0-0.5,0c-0.7,0.5-1.1,1-1.1,1.7c0,1,1,1.6,2.3,1.6
    +		c1.7,0,2.7-0.8,2.7-1.8C476.8,460.6,476.2,460.1,475,460z M474,452.5c-1.3,0-2,0.8-2,1.9c0,1.2,0.7,1.9,2,1.9c1.2,0,2-0.7,2-1.9
    +		C476,453.3,475.3,452.5,474,452.5z"/>
    +	
    +	
     
     
    diff --git a/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg b/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg
    index 0895a37ab..6fd4dda8c 100644
    --- a/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg
    +++ b/content/static/tutorials/pvector/imgs/mouseaccelerate2.svg
    @@ -2,129 +2,129 @@
     
     
     
    -
    -
    -
    -
    +	 viewBox="-16.5 299.5 645 193" enable-background="new -16.5 299.5 645 193" xml:space="preserve">
    +
    +
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +		v7.3c0.4,0.1,1,0.1,1.4,0.2v0.9C405.7,337.1,404.5,337.1,403.6,337.1z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +		v7.3c0.4,0.1,1,0.1,1.4,0.2v0.9C466.3,405.9,465.1,406.1,464.2,405.9z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +		v0.9c-0.4,0.1-0.8,0.2-1.2,0.2l-3.1,4.5l3.5,4.9c0.4,0,0.8,0.1,1.2,0.2v0.9L299.9,468.1L299.9,468.1z"/>
    +	
    +	
     
    -
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/mult.svg b/content/static/tutorials/pvector/imgs/mult.svg
    index 481846a8d..0a631c266 100644
    --- a/content/static/tutorials/pvector/imgs/mult.svg
    +++ b/content/static/tutorials/pvector/imgs/mult.svg
    @@ -2,76 +2,76 @@
     
     
     
    -
    +	 viewBox="-16.5 221 645 350" enable-background="new -16.5 221 645 350" xml:space="preserve">
    +
     
    -	
    +		c0.8-0.1,2-0.2,2.9-0.1v7.3c0.4,0.1,1,0.1,1.4,0.2v0.9C99.7,326.6,98.6,326.6,97.6,326.6z"/>
     
     
    -	
    -	
    +	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +		c0.8-0.1,2-0.2,2.9-0.1v7.3c0.4,0.1,1,0.1,1.4,0.2v0.9C551.1,394.5,549.9,394.5,549,394.5z"/>
     
    -
    -
    +
    +
     
    -	
    +		c-0.4,0-0.8,0.1-1.1,0.2c0,0.4-0.1,0.9-0.2,1.4h-0.9v-2.4c0.7-0.3,1.5-0.5,2.5-0.5C590.2,385.4,591.2,386.6,591.2,388.2z"/>
     
    -=
    -*
    -
    -
    -
    +=
    +*
    +
    +
    +
     
    -	
    -	
    +	
    +	
     
     
    -	
    -	
    +	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/normalize1.svg b/content/static/tutorials/pvector/imgs/normalize1.svg
    index c8baba9d1..0713c19ec 100644
    --- a/content/static/tutorials/pvector/imgs/normalize1.svg
    +++ b/content/static/tutorials/pvector/imgs/normalize1.svg
    @@ -2,361 +2,360 @@
     
     
     
    -
    -
    +	 viewBox="-16.5 271.5 645 249" enable-background="new -16.5 271.5 645 249" xml:space="preserve">
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +		c0.5-1.2,1.5-1.9,3-1.9c1.9,0,2.6,1.2,2.6,2.7v4.8c0.5,0,1,0.1,1.4,0.2v0.9H123V327.1z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    -	
    +		C504.4,304,503.5,304.3,502.4,304.3z"/>
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    +		c0.3-0.8,1.3-1.9,2.9-1.9c1.6,0,2.5,0.9,2.5,2.8v4.8c0.5,0,1,0.1,1.4,0.2v0.9L574.5,327.1L574.5,327.1z"/>
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    +		C545.5,350,544.3,350.1,543.4,350z M543.4,342.8c-0.5-0.1-1-0.2-1.5-0.2c-1.6,0-2.7,1-2.7,3.4c0,1.8,0.6,2.9,1.9,2.9
    +		c1.5,0,2.3-1.8,2.3-3.3V342.8z"/>
    +	
    +	
    +	
     
     
    -	
    -	
    +	
    -	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +		c0.5-1.2,1.5-1.9,3-1.9c1.9,0,2.6,1.2,2.6,2.7v4.8c0.5,0,1,0.1,1.4,0.2v0.9h-2.8V373z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +		C509.5,395.8,508.5,396.1,507.5,396.1z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    +	
     
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
     
    -	
    -	
    +	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +		c-1.2,0-1.7,0.5-1.7,1.3c0,1.9,4.3,0.9,4.3,3.7C320,485.8,318.6,487,316.3,487z"/>
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C334.9,509.8,333.7,509.8,332.8,509.8z M332.7,505.8c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L332.7,505.8L332.7,505.8z"/>
    +	
    +	
    +	
    +	
     
    -
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/normalize2.svg b/content/static/tutorials/pvector/imgs/normalize2.svg
    index 218617c68..c6a924fee 100644
    --- a/content/static/tutorials/pvector/imgs/normalize2.svg
    +++ b/content/static/tutorials/pvector/imgs/normalize2.svg
    @@ -2,201 +2,196 @@
     
     
     
    +	 viewBox="-16.5 320.5 645 151" enable-background="new -16.5 320.5 645 151" xml:space="preserve">
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +		C158.3,379.8,156.4,381.2,153.7,381.2z M154.9,376.8l-1.7-0.1c-0.2,0-0.4,0-0.5,0c-0.7,0.5-1.1,1-1.1,1.7c0,1,1,1.6,2.3,1.6
    +		c1.7,0,2.7-0.8,2.7-1.8C156.7,377.4,156.1,376.9,154.9,376.8z M154,369.2c-1.3,0-2,0.8-2,1.9c0,1.2,0.7,1.9,2,1.9
    +		c1.2,0,2-0.7,2-1.9C155.9,370.1,155.2,369.2,154,369.2z"/>
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    -	
    +		c0.9-0.4,1.8-0.6,3-0.6c2.3,0,3.5,1.1,3.5,2.8c0,1.3-0.8,2.3-2.1,2.7l0,0c1.4,0.2,2.5,1.4,2.5,2.8C467,392.2,465,393.8,462.1,393.8
    +		z"/>
    +	
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C346.6,393.6,345.4,393.7,344.5,393.6z M344.4,389.7c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L344.4,389.7L344.4,389.7z"/>
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +		C349.9,417.2,348.1,418.7,345.4,418.7z M346.6,414.2l-1.7-0.1c-0.2,0-0.4,0-0.5,0c-0.7,0.5-1.1,1-1.1,1.7c0,1,1,1.6,2.3,1.6
    +		c1.7,0,2.7-0.8,2.7-1.8C348.3,414.8,347.8,414.2,346.6,414.2z M345.6,406.7c-1.3,0-2,0.8-2,1.9c0,1.2,0.7,1.9,2,1.9
    +		c1.2,0,2-0.7,2-1.9C347.6,407.5,346.9,406.7,345.6,406.7z"/>
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
     
    -
    -
    -
    +
    +
    +
     
    diff --git a/content/static/tutorials/pvector/imgs/pythagorean.svg b/content/static/tutorials/pvector/imgs/pythagorean.svg
    index 0be4361f7..58d3a0057 100644
    --- a/content/static/tutorials/pvector/imgs/pythagorean.svg
    +++ b/content/static/tutorials/pvector/imgs/pythagorean.svg
    @@ -2,51 +2,51 @@
     
     
     
    +	 viewBox="-16.5 314.5 645 163" enable-background="new -16.5 314.5 645 163" xml:space="preserve">
     
    -	
    +	
     
     
    -	
    +		c0.4,0.1,1,0.1,1.4,0.2v0.9C241,453,239.8,453,238.9,453z M238.8,449c-2.7,0-3.6,0.7-3.6,1.6c0,0.7,0.5,1.3,1.3,1.3
    +		c1.4,0,2.3-1.4,2.3-2.7L238.8,449L238.8,449z"/>
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    -	
    +	
    +	
     
     
    -	
    +	
     
     
    -	
    -	
    +	
    +	
     
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
     
    diff --git a/content/static/tutorials/pvector/imgs/steps.svg b/content/static/tutorials/pvector/imgs/steps.svg
    index a5433fe27..f9d92c388 100644
    --- a/content/static/tutorials/pvector/imgs/steps.svg
    +++ b/content/static/tutorials/pvector/imgs/steps.svg
    @@ -2,725 +2,729 @@
     
     
     
    -
    -
    +	 viewBox="-16.5 46 645 700" enable-background="new -16.5 46 645 700" xml:space="preserve">
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C228.5,273.9,227.7,274.6,226.3,274.6z"/>
     
     
    -	
    -	
    +	
    -	
    +	
    -	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C219.2,285.8,218.4,286.5,217.1,286.5z"/>
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C378.3,683.2,377.5,683.9,376.2,683.9z"/>
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C369.6,695.2,368.8,695.9,367.5,695.9z"/>
    +	
     
    -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
    -	
    +		c-0.3,0-0.5-0.1-0.8-0.1v-0.5h2.4v0.5C470.9,115.8,470.6,115.9,470.4,115.9z"/>
     
     
    -	
    +	
     
     
    -	
    +	
     
     
    -	
    +		c-0.9,0-1.4,0.4-1.4,1.1c0,1.5,3.1,0.9,3.1,3C469.8,193.9,468.8,194.7,467.3,194.7z"/>
     
    -
    -
    -
    +
    +
    +
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    +	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C277,241.1,276.2,241.8,274.9,241.8z"/>
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +		c0.3-0.7,0.9-1.1,1.7-1.1c1.1,0,1.5,0.7,1.5,1.6v2.8c0.3,0,0.6,0.1,0.8,0.1v0.5L273.9,253.7L273.9,253.7z"/>
     
     
    -	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C209.5,633,208.7,633.7,207.4,633.7z"/>
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +		c0.3-0.7,0.9-1.1,1.7-1.1c1.1,0,1.5,0.7,1.5,1.6v2.8c0.3,0,0.6,0.1,0.8,0.1v0.5L206.5,650.7L206.5,650.7z"/>
     
    -
    -
    -
    +
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C215.1,410,214.3,410.7,213,410.7z"/>
     
     
    -	
    -	
    +	
    -	
    +	
    -	
    +		c-0.7,0-1,0.3-1,0.7c0,1.1,2.5,0.5,2.5,2.1C205.7,421.9,204.9,422.6,203.6,422.6z"/>
    +	
     
     
    -	
    -	
    +	
    -	
    -	
    -	
    +		c-0.9,0-1.4,0.4-1.4,1.1c0,1.5,3.1,0.9,3.1,3C232.9,434,231.9,434.9,230.4,434.9z"/>
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    +		c0.3-0.7,0.9-1.1,1.7-1.1c1.1,0,1.5,0.7,1.5,1.6v2.8c0.3,0,0.6,0.1,0.8,0.1v0.5L247.3,446.8L247.3,446.8z"/>
     
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
     
    -	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    +		c-0.9,0-1.3,0.4-1.3,0.9c0,1.4,3.2,0.6,3.2,2.8C295.2,123.3,294.2,124.2,292.5,124.2z"/>
    +	
    +	
     
    -   
    +   
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    +		c-0.3,0-0.7-0.1-1-0.2v-0.7h3v0.7C329.3,133.3,329,133.4,328.7,133.4z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    +		C260.5,350.9,259.3,352.2,257.2,352.2z M257.9,346.6c-1.2,0-1.7,1.3-1.7,2.5v2.1c0.3,0.1,0.7,0.2,1.1,0.2c1.2,0,2-0.7,2-2.6
    +		C259.3,347.4,258.9,346.6,257.9,346.6z"/>
    +	
    +	
    +	
    +	
    +	
    +	
     
    -   
    +   
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    +		c-1.1,0-1.7,0.6-1.7,1.4c0,1.9,4,1.2,4,3.9C319.1,368.2,317.9,369.3,315.9,369.3z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    -	
    -	
    +		c-0.9,0-1.3,0.4-1.3,0.9c0,1.4,3.2,0.6,3.2,2.8C281.1,536.6,280.1,537.5,278.4,537.5z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
    -	
    +	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    +		c-0.3,0-0.7-0.1-1-0.2v-0.7h3v0.7C337,546.6,336.7,546.7,336.4,546.7z"/>
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    +	
    -	
    -	
    -	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
     
     
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    -	
    +	
     
     
    diff --git a/content/static/tutorials/pvector/imgs/sub.svg b/content/static/tutorials/pvector/imgs/sub.svg
    index ec4aa0af3..4462f9bfe 100644
    --- a/content/static/tutorials/pvector/imgs/sub.svg
    +++ b/content/static/tutorials/pvector/imgs/sub.svg
    @@ -2,81 +2,83 @@
     
     
     
    -
    +	 viewBox="-16.5 295 645 202" enable-background="new -16.5 295 645 202" xml:space="preserve">
    +
     
    -	
    +		c0.8-0.1,2-0.2,2.9-0.1v7.3c0.4,0.1,1,0.1,1.4,0.2v0.9C96.7,433.1,95.5,433.1,94.5,433.1z"/>
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    -	
    +	
    +	
     
    -
    -
    +
    +
     
    -	
    -	
    +	
    +	
     
    -
    -
    +
    +
     
    -	
    -	
    +	
    +	
     
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
     
    -	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    -=
    --
    -
    -
    +
    +
    +=
    +-
    +
    +
     
     
    diff --git a/content/static/tutorials/pvector/imgs/v.svg b/content/static/tutorials/pvector/imgs/v.svg
    index ec57421c4..34f82eac4 100644
    --- a/content/static/tutorials/pvector/imgs/v.svg
    +++ b/content/static/tutorials/pvector/imgs/v.svg
    @@ -2,49 +2,50 @@
     
     
     
    -
    -
    +	 viewBox="-16.5 321 645 150" enable-background="new -16.5 321 645 150" xml:space="preserve">
    +
    +
     
    -	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
    -
    -
    -
    +
    +
    +
     
    -	
    +	
     
    -
    -
    +
    +
     
    -	
    +	
     
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
     
    -	
    +	
     
    -
    +
     
    -	
    +		C442.3,341,440.3,342.6,437.4,342.6z"/>
     
     
    diff --git a/content/static/tutorials/pvector/index.html b/content/static/tutorials/pvector/index.html
    index aee9290d8..81039248b 100644
    --- a/content/static/tutorials/pvector/index.html
    +++ b/content/static/tutorials/pvector/index.html
    @@ -410,7 +410,7 @@ 

    Vectors: More Algebra



    w = (-9, 21)

    - +

    The function inside the PVector class therefore is written as:
     
    
    From 4ad6d1299e3357d4475d73daeed6d6fdc6e29de7 Mon Sep 17 00:00:00 2001
    From: philiptr 
    Date: Tue, 22 Mar 2016 14:53:23 -0700
    Subject: [PATCH 187/772] Replacing color tutorial jpg with svgs
    
    ---
     .../static/tutorials/color/imgs/grayscale.svg | 24 +++++++++++++++++++
     content/static/tutorials/color/imgs/order.svg | 20 ++++++++++++++++
     content/static/tutorials/color/index.html     |  4 ++--
     3 files changed, 46 insertions(+), 2 deletions(-)
     create mode 100644 content/static/tutorials/color/imgs/grayscale.svg
     create mode 100644 content/static/tutorials/color/imgs/order.svg
    
    diff --git a/content/static/tutorials/color/imgs/grayscale.svg b/content/static/tutorials/color/imgs/grayscale.svg
    new file mode 100644
    index 000000000..ece2648ff
    --- /dev/null
    +++ b/content/static/tutorials/color/imgs/grayscale.svg
    @@ -0,0 +1,24 @@
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +0
    +
    +50
    +
    +87
    +
    +167
    +
    +209
    +
    +255
    +
    diff --git a/content/static/tutorials/color/imgs/order.svg b/content/static/tutorials/color/imgs/order.svg
    new file mode 100644
    index 000000000..38176b1bb
    --- /dev/null
    +++ b/content/static/tutorials/color/imgs/order.svg
    @@ -0,0 +1,20 @@
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +background(150); stroke(0); line(0,0,100,100); stroke(255); noFill(); rect(25,25,50,50); 
    +
    +
    +
    +
    +
    +
    +
    diff --git a/content/static/tutorials/color/index.html b/content/static/tutorials/color/index.html
    index 01ea93fcc..c609f8d15 100644
    --- a/content/static/tutorials/color/index.html
    +++ b/content/static/tutorials/color/index.html
    @@ -13,7 +13,7 @@ 

    Daniel Shiffman

    In the digital world, when we want to talk about a color, precision is required. Saying "Hey, can you make that circle bluish-green?" will not do. Color, rather, is defined as a range of numbers. Let's start with the simplest case: black & white or grayscale. 0 means black, 255 means white. In between, every other number—50, 87, 162, 209, and so on—is a shade of gray ranging from black to white.

    - +

    Does 0-255 seem arbitrary to you?
    @@ -40,7 +40,7 @@

    Daniel Shiffman

    In addition, if we draw two shapes, Processing will always use the most recently specified stroke and fill, reading the code from top to bottom.

    - + From 7b05c1e3adbb9396915aac7403203fb40d6f2978 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Thu, 31 Mar 2016 09:45:12 -0400 Subject: [PATCH 188/772] Added VideoExport and Spout libraries. Fixed link for AULib library. Enabled bRigid library. --- contrib_generate/broken.conf | 1 - contrib_generate/sources.conf | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/contrib_generate/broken.conf b/contrib_generate/broken.conf index 5ea5e8d87..7d1890530 100644 --- a/contrib_generate/broken.conf +++ b/contrib_generate/broken.conf @@ -22,7 +22,6 @@ 098 099 100 -108 109 110 111 diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index ef319bab0..dce7713c5 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 186 +# Next ID: 188 # Increment after assigning ID to new contribution [Library : 3D] @@ -121,6 +121,7 @@ 177 \ https://github.com/keshrath/Console/releases/download/latest/Console.txt 178 \ https://github.com/keshrath/ImageLoader/releases/download/latest/ImageLoader.txt 179 \ https://github.com/keshrath/MuKCast/releases/download/latest/MuKCast.txt +187 \ http://funprogramming.org/VideoExport-for-Processing/download/VideoExport.txt [Library : Language] 063 \ http://www.rednoise.org/rita/RiTa.txt @@ -184,7 +185,7 @@ 094 \ https://dl.dropbox.com/u/87680069/executor.txt 129 \ https://github.com/onar3d/processing-mother/releases/download/latest/Mother.txt 140 \ https://raw.github.com/dhchoi/processing-countdowntimer/master/release/CountdownTimer.txt -152 \ http://www.imaginary-institute.com/resources/AULibrary/AULib.txt +152 \ https://imaginary-institute.com/resources/AULibrary/AULib.txt 158 \ http://josephtaylor.github.io/ColorScheme/ColorScheme.txt 159 \ http://josephtaylor.github.io/sketch-mapper/SketchMapper.txt 180 \ http://interfascia.berg.industries/download/interfascia.txt @@ -211,6 +212,7 @@ 161 \ http://codigogenerativo.com/KinectPV2.txt 176 \ http://www.stefanobaldan.com/projects/ipcapture/download/IPCapture.txt 184 \ https://github.com/gohai/processing-glvideo/releases/download/latest/processing-glvideo.txt +186 \ https://github.com/leadedge/SpoutProcessing/releases/download/latest/spout.txt [Examples : Books] 154 \ http://shiffman.net/p5/examples/natureofcode.txt From 959d298cb620cd670cb5be5bea7feab25452a8c0 Mon Sep 17 00:00:00 2001 From: colinmorris Date: Sun, 10 Apr 2016 12:52:11 -0700 Subject: [PATCH 189/772] Changes to the reference docs for pixels[] and some related functions --- content/api_en/PImage_loadPixels.xml | 2 +- content/api_en/PImage_pixels.xml | 4 +++- content/api_en/loadPixels.xml | 4 ++-- content/api_en/pixels.xml | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/content/api_en/PImage_loadPixels.xml b/content/api_en/PImage_loadPixels.xml index 5e84cfc90..23c5f9730 100644 --- a/content/api_en/PImage_loadPixels.xml +++ b/content/api_en/PImage_loadPixels.xml @@ -35,7 +35,7 @@ void draw() { pixels[] array. This function must always be called before reading from or writing to pixels[].

    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. +Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must have previously called loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. ]]>
    diff --git a/content/api_en/PImage_pixels.xml b/content/api_en/PImage_pixels.xml index 1ec84949f..68203cae0 100755 --- a/content/api_en/PImage_pixels.xml +++ b/content/api_en/PImage_pixels.xml @@ -31,7 +31,9 @@ void draw() { index value defines the position of a value within the array. For example, the statement color b = img.pixels[230] will set the variable b equal to the value at that location in the array. Before accessing this array, the data must loaded with the loadPixels() method. After the array data has been modified, the updatePixels() method must be run to update the changes. Without loadPixels(), running the code may (or will in future releases) result in a NullPointerException. +Array containing the values for all the pixels in the image. These values are of the color datatype. This array is the size of the image, meaning if the image is 100 x 100 pixels, there will be 10000 values and if the window is 200 x 300 pixels, there will be 60000 values.
    +
    +Before accessing this array, the data must loaded with the loadPixels() method. Failure to do so may result in a NullPointerException. After the array data has been modified, the updatePixels() method must be run to update the content of the display window. ]]>
    diff --git a/content/api_en/loadPixels.xml b/content/api_en/loadPixels.xml index a4b7603d4..60e106578 100755 --- a/content/api_en/loadPixels.xml +++ b/content/api_en/loadPixels.xml @@ -24,9 +24,9 @@ updatePixels(); pixels[] array. This function must always be called before reading from or writing to pixels[].
    +Loads a snapshot of the current display window into the pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again.

    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. +Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must have previously called loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. ]]>
    diff --git a/content/api_en/pixels.xml b/content/api_en/pixels.xml index 5a5607c69..b7ac0be33 100755 --- a/content/api_en/pixels.xml +++ b/content/api_en/pixels.xml @@ -21,9 +21,9 @@ updatePixels(); index value defines the position of a value within the array. For example, the statement color b = pixels[230] will set the variable b to be equal to the value at that location in the array.
    +Array containing the values for all the pixels in the display window. These values are of the color datatype. This array is the size of the display window. For example, if the image is 100x100 pixels, there will be 10000 values and if the window is 200x300 pixels, there will be 60000 values.

    -Before accessing this array, the data must loaded with the loadPixels() function. After the array data has been modified, the updatePixels() function must be run to update the changes. Without loadPixels(), running the code may (or will in future releases) result in a NullPointerException. +Before accessing this array, the data must loaded with the loadPixels() function. Failure to do so may result in a NullPointerException. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again. After pixels has been modified, the updatePixels() function must be run to update the content of the display window. ]]>
    From 2087345b97d7d4986686ea0636f12922c4ff5694 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 15 Apr 2016 07:30:41 -0700 Subject: [PATCH 190/772] Added new Italian book --- content/static/books.html | 22 ++++++++++++++++++ .../books/il-codice-dei-cibernetici-sm.jpg | Bin 0 -> 12129 bytes .../books/il-codice-dei-cibernetici.jpg | Bin 0 -> 25713 bytes 3 files changed, 22 insertions(+) create mode 100644 img/learning/books/il-codice-dei-cibernetici-sm.jpg create mode 100644 img/learning/books/il-codice-dei-cibernetici.jpg diff --git a/content/static/books.html b/content/static/books.html index 42f6c9b65..3b9041013 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -548,6 +548,28 @@

    Books. Processing books cove + + Il Codice dei Cibernetici: Introduzione alla Computer Art con Processing + + Il Codice dei Cibernetici: Introduzione alla Computer Art con Processing
    + Antonio Rollo
    + Published December 2015, Oistros Edizioni. 320 pages. Softcover.
    + Text in Italian.
    +
    + During the 50‘s ”era of cybernetics“, computer entered into the history of art simultaneously in different parts of the world. Art and science were in great turmoil. Science, with its theories and experiments, was approaching artificially mimicking both natural phenomena, such as light and sound, and the human phenomena of language and communication. Art, with its aesthetic and exhibitions, had transcended the boundaries of the avant-garde. Now, with the computer, it was confronting a reality that challenged ”the where“ and ”the how“ of doing art and the very meaning of ”masterpiece“. Antonio Rollo takes us on a tour of these seminal works from his unique perspective of the artist, through the code! +
    +
    + There's additional information on the publisher's website. + + + + +

     

    +

     

    + + + Built with Processing diff --git a/img/learning/books/il-codice-dei-cibernetici-sm.jpg b/img/learning/books/il-codice-dei-cibernetici-sm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c1033a165f1ee0a5b6058b6f71a0ff1e76520ae GIT binary patch literal 12129 zcmeHsc|25a`~N*N_NB3ADnc8IP_zjVpU7H~EtIm8 zeG5g3WXUq~J)=)PJTc|{QLWyd7U%wxzBZ7_kC^mxvn$R_tX)2*IEafbjwPO$>k=jDHKCgh~HN1BYmo0CWW? z=p@0EH!%-{6Qc2e4*G_qfQQgYJFw76`@Q*Xh$Xt=P&S@KGST0Y=!-Hstd5elLSyg* z+Q4q0tf-`}t*E4}q>NHh(^gj2R#F0h?i$_J3IGx3A&atL0MT2qLA|sA&}9*as+>|UlNRQ{umP8my9P8P&A2XH(~%;R}`B0 z=aPJUt*o{L|4Z$Cd}!<3r1mG91VYUJ&Q|_MLVR%whj9MH01^gg5{M&^#eT74FQ=*^r3tcyFAp zsQ)3eeJBePBXuP$b#*yqd8OY8jfmbvk`)mP(f!m*+lYiilX1q-sVhp$5jjOAIVI&I zv}~j0h%A(Rii(>i(6)j?7mFsN|0OXkHGe1GluINXArifHMgNyH|5H2>i+2zC--OfB zYtxnHcz-gH6!K@n9LD+miM;Ws&2ZKBC%Th^&?KCp2jsN>U=2UHf;@3hp8p$5{3OHw zSAq1C7mcB1rLHJu)AU$T1!(08v>g4Zgu*}T_m`i4g^wW=!Zhvu|I~RO+G9(5Jz8AT zV$)Q~SW!t!NqL{CmX?Vc6xXW8#>N`PDvDa_rbdRwsz2xS#{ZiArx1mIKilRyf7@Gr zF+&>`4Q}mxdZ@pTzb){$1^%|c-xm1W0)JcJ|33@-)jQz`P{R}ibw+?X3$Ql73Vf7` zydu!tXJJK0YY_q1BLH&(2!07O0jQOP1GoTO4=~XRF{nCM7J%ymRwXrM#m$mbQE`(` zVv~=fuA1^m>4&!)oex5x?n{I|b&Smcs)$`}4q2O8958`8T>#k358w$zI0pbe1Tu+M zB0D%bp%~vm6EOn@0CkmUjK8ndVbdctnNazRqSeux^0zKa-J6Xo=#VqFL7}#W|1-de z@gmYnFFaQT(!~qCL1>$i*5blJqxOadL9>OaS=JCOy{h?l(jW$lk zVLTzM2w^tTkwZoh)`8vwuzCE3-G0MlTrjjw0E~#fAy8-INk&OycB7!4R1;;63-ZR1 z$#OPO-;5?Sn0FdVaC~5gkA6{C#{MMu6aTs};LAQ?o zm0*kV{|w#<`;dyvZn9RAZn9FMx#dhhAIYP;&nq#Q!zpZ_D~^9eWPp z+;Jov)Qq6)peVx=JRo-yu=vfF4tT;pbfLdV_%GRhlR$$%;~E0o4=8}gRUUA(@BqYY zGoa&U1qhdP=niblZwHv|04?+Eg{OYTJ%pkAo7aE1z^_6-;r@6J6m8h(&=C|SfD}l> zP)^V;^ne8*0T0*(gn$^3268|dXn?)I0GNRNz#1F@j^H@J08iipNFWG=fwLeA#DQzz z21o@N-~q@1`JfP#g6E(byaI1PE9e6KU<6En888Qyz#8;sjuFNV>Ml(mH|;L3i|~623v(A z;B0UnxFB2-t^n7B8^SH&N8rcc9&kVSDfoH#75Gi~J$N3x1YQk)1Mh;5z-Qo#2!LQk z@FGMIatKX?5yBebgm6cY5T_Bbh$O^4L_VSd(SYbcj37QEe$X+{anqsbWx2_c&r;7az_P%~$|}mL#cIonXFbDull2eQM%Gc* zA8cG~GHga{E^Gm8SJ<-HUb6MFEwHn*OR^iVJF%15udwH^*Rl_>uWaMqCcn*M8+Kd7 zwzO>}+uFB%K{6vHkcP6Lz2UY1I=-oBaNe+qlaUWlbchC)0)$V z^AhJH&L+-}T#Q_jTqaytuJc^?xoWw_xe?rA+(z6O?sMD^xa+wmco=x3cr18M^2G5x z=6T06x1DRd>UO*B!Q0cezt}#)i{O>ywcz#Uy~<`9nkXV+KlC+nMmMoS0D790{Lh6)MuGD}uyR^QvpY%QH&fN^VHFtaM zzP-Cu1}>u}<0+FS(;^F(RhPxf-j;3KL%&CB4`I)}Jw0-4a)xq&a=CJ&^1Si~x~{D>Nuj6x9^H6(1<}D{(39SBg}sQ2M4Uql{5bQ|?q@S20zIP$^THSCv)8 zsiv#GSL0T*Qj1orQQJ`0P$#M9tAElE*EpeZOQT1VN7F|0l4he8z1BXh2(9N@KeW}g z$=Ze5U-!!G_1gPr??)Xe9h}YsopD`JU9|39-4Q*M-U+=sdL#NG`e^-o`eO!S23UiK z22+N+4Nn^88GhNPxR122c;B*-wo$mzOJjtwnQ^S~I}CG+8%572ImSRif3vL5YKe zgQeEM+QK@~deBD7#?R)NErYF%ZJO=mA*DlMhZ+uZA9g+b=84OBcCJQvCN6l$*3s7Jd+0?s3%6Tta~LB`GG+#AfW40Wgww?(;HKPl z-4onDdgyv2dVKQK_e}Eqj5ork;^$AApUgP9>}Bnh)&s<-e^iv zP0C1SNe)OJxq0AbS&DedwUqT#&(yB8eQ5=^1a8ILTE30F-JWico}VF@5tp%g2Y=`N zU9-C-_ayHn-DkKTcz^PN-Ghcq&CHyKd=KLuZe$U%MzRlO*X3yBA8<6`c z&n2(*vGL=we7XF)1-u1ue}F#%{+NDp;z@U*WnoQ`W>NlAiKn-Uxr<{*=P)-hPnxHGyR@)tA?v&9_nJkU#i1pirM2bQm0c^@ zKQw1oXlEF8KI=s4-QM3f8}xNXslqJBKe zXXEcOiS2t*z5P(zoVbb`DUz9mcgN0Md=ipU(z|6;)zmdKwX}_lO-#+qE%qNia@5Wq zDsM1YoV$l7{-i%SATTI66HhUcZr)d^08W-u(xe53{m!9u*cnEiNf7 zE3c@jt*d|4(Af04y`!_MyXSpx-{{!*hl$ClkDsRJzb$-UTv}fFu}aem`fKf{T3ed^ zlU|S!U~oD*1RWzyFBm+CrZ^`Zy@(P6m!T~q+K*dQ`79I9zWBROs+q-94$Wlml?eo?KzN}i7Ah^J0Tt*^eY-zJrUGa%8E3&LoX&=P8x5{wM$9{NnPoUn*FLIyVlxG9sTl_d?>m-W#cPF^W=f*Lve}$Xo_z zPJGzomA;WL{nt!MuwlozY7b8}-r{frX9I=w8m-YMq1AjFnR#R7NnSS}r@CBs6dbe% zPjs#!scn>zO7`{86^r?`TGp}Q3qoq`I)^h~*#@u%<9I9H#rV!V`>yjc~Y;5>~E%K340 z{;S1&bdAEr)Qo8No`7(SNqOg zZH_rxh)Q1`KdcdcEVeMP%Oz`We5rZkp&sjyVeY!hO8vZ8Z4RqRmGzT(_1s6EhsCmk zxmXpr2K$5ER{Q3U{6H?L@I2V*>V5N?)K@8T#^N`j)c#dURjzQEexcO*jvC81FJxhYC|YxFm?_ zfmanp-9u(xKJKjMsi8erG&(T1^0+?f;|kA(nlpRJIfUnAh`-KwrYUHkgiTuVx|t`R zJ~`!eMMOK)QycNz4_omsFUD1!~JD!Q5ON~mwXCp6`baNm3SP{E3 zpD=74&bq-n={XX;Y$f(I#9PmFC*nr;B73O$lZtM&;iyzxdPex8lUa48!gEjZi;+dW zUQQC}aem==kIZ1w*tcn~;i7ux(hFir_582%#Jv?6#f0l-oLRpqoEB_&_@Kj3cj9y9 z?sd{t#&TjC_DBvHFctvfb8`a$wLZ@+BbtQ|f+waZpSbxmOSC$#cZ=)Hr>WR8lOHt2! z5La~y()2pM6(JPti6R;CdSY`Q0u!EPmsn^JERajm{-|q~yFv(*VcA6AM-ItN?6SgD zuTOaw^PP60<@RF1#o*)vL7Woh>7GM-(o6;w-P>X1NQ$foq=uv4? zClG1)sdl?mznE?|EU0Szd*WRDtB7P(a6W-#A=Q~+vHnBz4jt`znhEXoT^kLhE0PLt zjw_aQd~X~{w&@JeHFY3w?6qvmbNYI?qT*Rus$Fcu!H(Gv3j~71i6?j5HLKYNCU106 z0hC!^BfsfyqXIADRqdd9{kZsoa~@@`Q5i^b!HV%ZTl=1p!js+073({+r!M8oRXWPa zhk50^?%{xT%@=V8qgpi`b?O{@Xc^ruSP=oaVA7X&0mOxGMwc6GTe-oVl?G+ng zIwmZ!#JuGV>te2*+jNgnwT|EYu>0f)PsQVX&+?K=R&y@y8e_wqsYX9Gyf|umOI>N` zo@ioqLfJd?)>4Q>B!eB8msOx*&mlDnMK`Ry??z^ zfboq}=?3vf%<>GR#luu8xIcS)wldQLpWUavc5GjFAEm3owB$wP-fSks*_#iAr?NzF zsaua}1hsqBlEQLyEpTN4G79%;3Cimsx{f<50dqm4W|tNfqWeZ#1Dr8qEti}!E(i?` z+jQ%MW=~g~zFFZKoqRmjA9v@|!m<7)9$S|oYt_Pyq~S;EgD+ecH}q@0Jc`@jucs#3 zZ^Hz!0m;%@20A~-2$s5OmJ9pbwPxsxrq=R z@Z#BEe}5eRvmIhmmYtvPJ}FLDWO2(SmCRQD{&Seo z?QcijD>6o-&q$PetWDx|c0VXeZrR)PVR5oNbAErnOJ?DBXnCJjPa_vL81*yF>u3ez zgaJKNS+48v2h<)Y+#^%N6gxlbdr`sFO4%oKlSTfcRopXrY%8&S#Yyqup$|V*%{_U( zeKfb$$1l|X;ov75{ua*KkO?Ea+S7#n^_hDIjRMWEvssH2tkh#Dds^4ObsUlw_ryfo z+G`Hdr$@^tt3JD$T%7+fw(rE1gY9ht92UKk_Z98s3S4KtP^x&S06DWdeX1dnAQ<4~ z*=c-PpybI;pASbOo9~4L@^UoC-(yCXmWLcadX!W3kM$~#v^S(r-PpN_om3 zc#xo? z)ydh=Uwh@8>AViWZWTHbNzYPEF6m7MnD^xtEK+c;A7~q5R!i2MFzG)Mo#uH{eAs*& z6RZVJo7|CX7f(2*R`7WCgS1|c?8CxWV`20Rn)d}JAIYyW&w4-`M^AER)y~fs5}79W zDfM1_h4FPyob{KE=VhI{{^C+z9p>vo)69VzG{PV2P-RDI5}yN~XSQ#onX8m%wKdzX z`n(H#!j>uSu-X6n8r?Jm%VRcopiJBBdy=mMJ1D$^L7W!KM2>!=&cMrVd3{yW-Dr zdI|0AoE?j`j5GMbr{~b9WpsZb3NkK&sGEKb(Zv*-y6=S)oM4Ke{S|@VBlnG-GZyLSKm3^*|C{KmDgYM zt4U6d5)}#V3pjzw*@119(aA=)R;0!8mFOcn%~`b;lbtd z%%={`bCwwLosfHjHm|E>8}F-S$PF)UL>xQilx#_RX0I!)!q#{w&8O;@E{q{BRmzu? z7tMKGh<q%u}I&A!JyqNF4-tCpDNTH0(2?{ij-eD|IZA6F)~e^ve-ff6k^?`6^% zX8Cxy!3!_4c6hK~v|*QTL3mh^%Oh{P!d_?5oW5=DC(g;$+ayKz>ObjO=ZYKiXb|+b zp1)eRvDX&br=JcsWgj~}UGms#49V&2(zI<2x$Tp^Oc6rvMnzpuqD-yu%?ab1E>l{s z^oXmJitCBVR>nq13RqU$YvlHtx94?u`_>98Tgi^-zMUAz z%uM%q^G22zljw4}TzzOV#?fKs6Wd>19+KMrxf1zNNU2jTl>eBRap&SOX>oBQca1L#8!4lkb;9T%E0`tlgF6uhFA@2PEnA%C4U zvoF}o=)&yx2&Cs*y_kFWw*5f|PAlI(OJ}w& zeYG|Kh&#X+2m-`6im&3YHg~hzMNm5^vte2z`iK?Xz+mg@O5VA~S1NZs`HtUwPX+l& zfqyhX&xOTLudM@Xn!E#2#6P54d`OSro;d_RT{Sg;Tv(-T^i!KV$>yFCEznxt_wv+6S z_E<6$Nat@aPH|rDQArW0sH`i=!zQV}WGg@KYorFq!pP?${v#2{lIVbZVUDJaoSbRd zY{4D-TT?Kdk`{KYy`MOZyhKW5%x;;bsr!q#H=zWpH{Y84{zd@~b%@=YuUP)^O~aoq G==~pavGybY literal 0 HcmV?d00001 diff --git a/img/learning/books/il-codice-dei-cibernetici.jpg b/img/learning/books/il-codice-dei-cibernetici.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72594045002e8b46044971289b2e5e8c4ec1dd77 GIT binary patch literal 25713 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 N&>P0EnV|al_CFpv#ESp` literal 0 HcmV?d00001 From a9299137012b0b91fc1db39983af7ea55038f25c Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 15 Apr 2016 07:34:05 -0700 Subject: [PATCH 191/772] Fixed Italian book cover style --- content/static/books.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/books.html b/content/static/books.html index 3b9041013..115053597 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -550,7 +550,7 @@

    Books. Processing books cove Il Codice dei Cibernetici: Introduzione alla Computer Art con Processing + alt="Il Codice dei Cibernetici: Introduzione alla Computer Art con Processing" style="border: 1px solid #ccc;"/> Il Codice dei Cibernetici: Introduzione alla Computer Art con Processing
    Antonio Rollo
    From dcb6186b551851a7100bc03e51322716bac64068 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Thu, 28 Apr 2016 11:30:29 -0400 Subject: [PATCH 192/772] Added GaussSense and HPGLGraphics libraries. --- contrib_generate/sources.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index dce7713c5..acbe57edd 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 188 +# Next ID: 190 # Increment after assigning ID to new contribution [Library : 3D] @@ -94,6 +94,8 @@ 145 \ http://www.heroicrobotics.com/software/PixelPusher.txt 155 \ https://raw.githubusercontent.com/nok/myo-processing/master/download/MyoForProcessing.txt 164 \ http://jorgecardoso.eu/processing/eyetribeprocessing/download/EyeTribeProcessing.txt +188 \ http://developers.gausstoys.com/processing/GaussSense.txt +189 \ http://ciaron.net/hpglgraphics/download/hpglgraphics.txt [Library : I/O] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From 84453d5c6f2cc9bfd3b03b52a72f9ba71d3773cf Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 2 May 2016 10:40:07 -0400 Subject: [PATCH 193/772] Added Hardware library and UploadToPi tool. --- contrib_generate/sources.conf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index acbe57edd..1836d0f15 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 190 +# Next ID: 192 # Increment after assigning ID to new contribution [Library : 3D] @@ -96,6 +96,7 @@ 164 \ http://jorgecardoso.eu/processing/eyetribeprocessing/download/EyeTribeProcessing.txt 188 \ http://developers.gausstoys.com/processing/GaussSense.txt 189 \ http://ciaron.net/hpglgraphics/download/hpglgraphics.txt +190 \ https://github.com/gohai/processing/releases/download/latest/io.txt [Library : I/O] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt @@ -237,6 +238,7 @@ 160 \ https://github.com/joelmoniz/Git-Manager/releases/download/latest/GitManager.txt 181 \ https://github.com/joelmoniz/Shape-Sketch/releases/download/latest/ShapeSketch.txt 182 \ https://github.com/rzats/font-highlighting-editor/releases/download/latest/FontHighlightingEditor.txt +191 \ https://github.com/gohai/processing-uploadtopi/releases/download/latest/UploadToPiTool.txt [Mode : ] 070 \ http://bezier.de/processing/modes/CoffeeScriptMode.txt @@ -246,4 +248,4 @@ # 124 \ http://download.processing.org/pdeX.txt 142 \ http://py.processing.org/PythonMode.txt 162 \ https://github.com/joelmoniz/REPLmode/releases/download/latest/REPLMode.txt -169 \ http://py.processing.org/3/PythonMode.txt \ No newline at end of file +169 \ http://py.processing.org/3/PythonMode.txt From 69fcbc307a8dff592d176ec8c2f99873d1622874 Mon Sep 17 00:00:00 2001 From: REAS Date: Wed, 4 May 2016 23:34:12 -0700 Subject: [PATCH 194/772] Misc. Docs update for Reference and Tutorials --- content/api_en/hint.xml | 3 +++ content/api_en/include/ArrayList.xml | 2 +- content/static/tutorials/sound/index.html | 4 ---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/content/api_en/hint.xml b/content/api_en/hint.xml index 5a9f2dac9..7068ab8c8 100644 --- a/content/api_en/hint.xml +++ b/content/api_en/hint.xml @@ -20,6 +20,9 @@ Fixes a problem with shapes that have a stroke and are rendered using small step
    Hints for use with P2D and P3D:

    +DISABLE_ASYNC_SAVEFRAME
    +save() and saveFrame() will not use separate threads for saving and will block until the image is written to the drive. This was the default behavior in 3.0b7 and before. To enable, call hint(ENABLE_ASYNC_SAVEFRAME). +

    DISABLE_OPENGL_ERRORS
    Speeds up the P3D renderer setting by not checking for errors while running.

    diff --git a/content/api_en/include/ArrayList.xml b/content/api_en/include/ArrayList.xml index ea63b6262..1cf04f77d 100644 --- a/content/api_en/include/ArrayList.xml +++ b/content/api_en/include/ArrayList.xml @@ -50,7 +50,7 @@ println(particles.size()); // Now one less! // then you cannot use the enhanced loop syntax. // In addition, when deleting in order to hit all elements, // you should loop through it backwards, as shown here: -for (int i = particles.size - 1; i >= 0; i--) { +for (int i = particles.size() - 1; i >= 0; i--) { Particle part = particles.get(i); if (part.finished()) { particles.remove(i); diff --git a/content/static/tutorials/sound/index.html b/content/static/tutorials/sound/index.html index 4fecd9535..4c270ea5a 100644 --- a/content/static/tutorials/sound/index.html +++ b/content/static/tutorials/sound/index.html @@ -80,10 +80,6 @@

    Sound and musical informatics

    This representation of sound, as a discrete “frame” of frequencies and amplitudes independent of time, is more akin to the way in which we perceive our sonic environment than the raw pressure wave of the time domain. Jean-Baptiste-Joseph Fourier, a nineteenth-century French mathematician, developed the equations that allow us to translate a sound pressure wave (no matter how complex) into its constituent frequencies and amplitudes. This Fourier transform is an important tool in working with sound in the computer.

    -

    - This representation of sound, as a discrete “frame” of frequencies and amplitudes independent of time, is more akin to the way in which we perceive our sonic environment than the raw pressure wave of the time domain. Jean-Baptiste-Joseph Fourier, a nineteenth-century French mathematician, developed the equations that allow us to translate a sound pressure wave (no matter how complex) into its constituent frequencies and amplitudes. This Fourier transform is an important tool in working with sound in the computer. -

    -

    Our auditory system takes these streams of frequency and amplitude information from our two ears and uses them to construct an auditory “scene,” akin to the visual scene derived from the light reaching our retinas.6 Our brain analyzes the acoustic information based on a number of parameters such as onset time, stereo correlation, harmonic ratio, and complexity to parse out a number of acoustic sources that are then placed in a three-dimensional image representing what we hear. Many of the parameters that psychoacousticians believe we use to comprehend our sonic environment are similar to the grouping principles defined in Gestalt psychology.

    From 8aa47fd62d6c1a299a888b737e6b5e281944fd2e Mon Sep 17 00:00:00 2001 From: Filip Visnjic Date: Thu, 5 May 2016 09:40:46 +0100 Subject: [PATCH 195/772] exhibition update --- content/curated.xml | 9 +++++++++ content/curated_images/autoorchestra.jpg | Bin 0 -> 5833 bytes content/curated_images/autoorchestra@2x.jpg | Bin 0 -> 13909 bytes 3 files changed, 9 insertions(+) create mode 100644 content/curated_images/autoorchestra.jpg create mode 100644 content/curated_images/autoorchestra@2x.jpg diff --git a/content/curated.xml b/content/curated.xml index 08fbce7de..e1c60caa2 100755 --- a/content/curated.xml +++ b/content/curated.xml @@ -1,6 +1,15 @@ + + images/autoorchestra.jpg + + The Automatic Orchestra is an audio installation exploring algorithmic composition and networked music. The perpetual interaction among the devices and the interpretation of encoded musical messages blurs the distinctiveness between structured composition and performative improvisation. + + http://digitalmedia-bremen.de/en/project/automatic-orchestra/ + Digital Media Bremen + + images/possible.jpg diff --git a/content/curated_images/autoorchestra.jpg b/content/curated_images/autoorchestra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d09ca9bb3119dc0ed0a2972712c31c92aabe44e GIT binary patch literal 5833 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 Date: Fri, 6 May 2016 12:24:09 -0400 Subject: [PATCH 196/772] fixes flocking wraparound issue #422 --- content/examples_p5/Topics/Simulate/Flocking/Boid.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/examples_p5/Topics/Simulate/Flocking/Boid.js b/content/examples_p5/Topics/Simulate/Flocking/Boid.js index 3987f804c..b4814cd23 100644 --- a/content/examples_p5/Topics/Simulate/Flocking/Boid.js +++ b/content/examples_p5/Topics/Simulate/Flocking/Boid.js @@ -84,8 +84,8 @@ function Boid(x,y) { this.borders = function() { if (this.position.x < -this.r) this.position.x = width +this.r; if (this.position.y < -this.r) this.position.y = height+this.r; - if (this.position.x > width +this.r) location.x = -this.r; - if (this.position.y > height+this.r) location.y = -this.r; + if (this.position.x > width +this.r) this.position.x = -this.r; + if (this.position.y > height+this.r) this.position.y = -this.r; } // Separation From d443da6c978378a877e2dc4cfb15bb282b256f98 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sun, 8 May 2016 21:03:45 -0400 Subject: [PATCH 197/772] adding 3.1 --- .gitignore | 1 + download/_downloads.php | 31 +++++++++++++++++++++---------- download/latest.txt | 2 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b006f9e2d..367672981 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ exhibition/ about/ contrib_generate/contribs.txt # File now built on the server side; don't need to track here contrib_generate/contributions.txt # File now built on the server side; don't need to track here +*~ diff --git a/download/_downloads.php b/download/_downloads.php index 92c036b09..c885383eb 100644 --- a/download/_downloads.php +++ b/download/_downloads.php @@ -13,15 +13,15 @@
    - 3.0.2 - (13 February 2016) + 3.1 + (8 May 2016)
    - 3.1 - (8 May 2016) + 3.1.1 + (16 May 2016) -
    @@ -55,6 +44,17 @@

    Stable Releases

    That's all there is to it! The same process works for all the mouse, keyboard, and other event based functions.

    Note, however, that these functions are inherited from PApplet, thus you will only be able to use them in your client class, and not in any other object classes.

    +

    Exporting in Eclipse

    +

    You can export a project from eclipse the same way you export any project in Eclipse. For more information, visit Eclipse's documentation. How to export a runnable .jar in Eclipse.

    This tutorial is for Processing version 3.0+. If you see any errors or have comments, please let us know. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

    From f09bda22e6f0d316a4e5d3b47ed26a15501c19a8 Mon Sep 17 00:00:00 2001 From: Quin Kennedy Date: Sun, 29 Apr 2018 10:51:31 -0700 Subject: [PATCH 469/772] Including SVG renderer in documentation --- content/api_en/createGraphics.xml | 4 ++-- content/api_en/size.xml | 2 ++ content/static/tutorials/p3d/index.html | 2 +- templates/template.cover.html | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/content/api_en/createGraphics.xml b/content/api_en/createGraphics.xml index 9cd5a982b..c817adad6 100755 --- a/content/api_en/createGraphics.xml +++ b/content/api_en/createGraphics.xml @@ -30,9 +30,9 @@ void draw() { PGraphics
    object. Use this class if you need to draw into an off-screen graphics buffer. The first two parameters define the width and height in pixels. The third, optional parameter specifies the renderer. It can be defined as P2D, P3D, or PDF. If the third parameter isn't used, the default renderer is set. The PDF renderer requires the filename parameter.
    +Creates and returns a new PGraphics object. Use this class if you need to draw into an off-screen graphics buffer. The first two parameters define the width and height in pixels. The third, optional parameter specifies the renderer. It can be defined as P2D, P3D, PDF, or SVG. If the third parameter isn't used, the default renderer is set. The PDF and SVG renderers require the filename parameter.

    -It's important to consider the renderer used with createGraphics() in relation to the main renderer specified in size(). For example, it's only possible to use P2D or P3D with createGraphics() when one of them is defined in size(). Unlike Processing 1.0, P2D and P3D use OpenGL for drawing, and when using an OpenGL renderer it's necessary for the main drawing surface to be OpenGL-based. If P2D or P3D are used as the renderer in size(), then any of the options can be used with createGraphics(). If the default renderer is used in size(), then only the default or PDF can be used with createGraphics().
    +It's important to consider the renderer used with createGraphics() in relation to the main renderer specified in size(). For example, it's only possible to use P2D or P3D with createGraphics() when one of them is defined in size(). Unlike Processing 1.0, P2D and P3D use OpenGL for drawing, and when using an OpenGL renderer it's necessary for the main drawing surface to be OpenGL-based. If P2D or P3D are used as the renderer in size(), then any of the options can be used with createGraphics(). If the default renderer is used in size(), then only the default, PDF, or SVG can be used with createGraphics().

    It's important to call any drawing functions between beginDraw() and endDraw() statements. This is also true for any functions that affect drawing, such as smooth() or colorMode().

    diff --git a/content/api_en/size.xml b/content/api_en/size.xml index 50ddae1f3..1f1a2b87e 100755 --- a/content/api_en/size.xml +++ b/content/api_en/size.xml @@ -73,6 +73,8 @@ The renderer parameter selects which rendering engine to use. For example
    PDF: The PDF renderer draws 2D graphics directly to an Acrobat PDF file. This produces excellent results when you need vector shapes for high-resolution output or printing. You must first use Import Library → PDF to make use of the library. More information can be found in the PDF library reference.

    +SVG: The SVG renderer draws 2D graphics directly to an SVG file. This is great for importing into other vector programs or using for digital fabrication. You must first use Import Library → SVG Export to make use of the library.
    +
    As of Processing 3.0, to use variables as the parameters to size() function, place the size() function within the settings() function (instead of setup()). There is more information about this on the settings() reference page.

    ]]> diff --git a/content/static/tutorials/p3d/index.html b/content/static/tutorials/p3d/index.html index 586b55d24..22bfd8eb1 100644 --- a/content/static/tutorials/p3d/index.html +++ b/content/static/tutorials/p3d/index.html @@ -10,7 +10,7 @@

    P3D

    Daniel Shiffman

    - There are four render modes: the default renderer, P2D, P3D, and PDF. To use a non-default renderer, you can specify via the size() function. + There are five render modes: the default renderer, P2D, P3D, PDF, and SVG. To use a non-default renderer, you can specify via the size() function.

    diff --git a/templates/template.cover.html b/templates/template.cover.html
    index 31fb8b668..14c2cf8ab 100755
    --- a/templates/template.cover.html
    +++ b/templates/template.cover.html
    @@ -15,7 +15,7 @@
             
                 
    • » Free to download and open source
    • -
    • » Interactive programs with 2D, 3D or PDF output
    • +
    • » Interactive programs with 2D, 3D, PDF, or SVG output
    • » OpenGL integration for accelerated 2D and 3D
    • » For GNU/Linux, Mac OS X, Windows, Android, and ARM
    • » Over 100 libraries extend the core software
    • From d33e7a11a7246771634e7d1bfb5077f0de07cd24 Mon Sep 17 00:00:00 2001 From: Quin Kennedy Date: Sun, 29 Apr 2018 23:07:35 -0700 Subject: [PATCH 470/772] Added library page for SVG modeled after PDF page. --- content/api_en/LIB_svg/index.html | 167 ++++++++++++++++++++++++++++ content/api_en/libraries/index.html | 7 +- generate/libraries.php | 4 +- generate/libraries_local.php | 2 +- 4 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 content/api_en/LIB_svg/index.html diff --git a/content/api_en/LIB_svg/index.html b/content/api_en/LIB_svg/index.html new file mode 100644 index 000000000..24737df1d --- /dev/null +++ b/content/api_en/LIB_svg/index.html @@ -0,0 +1,167 @@ + +

      SVG Export

      + +
      +

      The SVG library makes it possible to write SVG files directly from Processing. These vector graphics files can be scaled to any size and output at very high resolutions. The SVG library can flatten 3D data into a 2D vector file, but to export 3D data, use the DXF library. The source code is available on the Processing GitHub repository. Please report bugs here.
      +
      + This library can be used with the core Processing function size(), or createGraphics(). See the examples below for different techniques.

      +
      + +
      +

      +SVG Export (No Screen Display)
      +
      +This example draws a single frame to a SVG file and quits. (Note that no display window will open; this helps when you're trying to create massive SVG images that are far larger than the screen size.)

      + +
      import processing.svg.*;
      +
      +void setup() {
      +  size(400, 400, SVG, "filename.svg");
      +}
      +
      +void draw() {
      +  // Draw something good here
      +  line(0, 0, width/2, height);
      +
      +  // Exit the program
      +  println("Finished.");
      +  exit();
      +}
      + + +

      SVG Export (With Screen Display)
      +
      +To draw to the screen while also saving an SVG beginRecord() +and endRecord() functions. Unlike the PDF renderer, the SVG renderer will only save the final frame of a sequence. This is slower, but is useful when you need to +see what you're working on as it saves.

      + +
      import processing.svg.*;
      +
      +void setup() {
      +  size(400, 400);
      +  noLoop();
      +  beginRecord(SVG, "filename.svg");
      +}
      +
      +void draw() {
      +  // Draw something good here
      +  line(0, 0, width/2, height);
      +
      +  endRecord();
      +}
      + + +

      Single Frame from an Animation (With Screen Display)
      +It's also possible to save one frame from a program with moving elements. +Create a boolean variable to turn the SVG recording process on and off

      + +
      import processing.svg.*;
      +
      +boolean record;
      +
      +void setup() {
      +  size(400, 400);
      +}
      +
      +void draw() {
      +  if (record) {
      +    // Note that #### will be replaced with the frame number. Fancy!
      +    beginRecord(SVG, "frame-####.svg");
      +  }
      +
      +  // Draw something good here
      +  background(255);
      +  line(mouseX, mouseY, width/2, height/2);
      +
      +  if (record) {
      +    endRecord();
      +	record = false;
      +  }
      +}
      +
      +// Use a keypress so thousands of files aren't created
      +void mousePressed() {
      +  record = true;
      +}
      + + +

      SVG Files from 3D Geometry (With Screen Display)
      +
      +To create vectors from 3D data, use the beginRaw() and endRaw() commands. +These commands will grab the shape data just before it is rendered to the screen. +At this stage, your entire scene is nothing but a long list of lines and triangles. +This means that a shape created with sphere() method will be made up of hundreds of +triangles, rather than a single object.

      + +

      When using beginRaw() and endRaw(), it's possible to write to either a 2D or 3D renderer. +For instance, beginRaw() with the SVG library will write the geometry as flattened triangles +and lines.

      + +
      import processing.svg.*;
      +
      +boolean record;
      +
      +void setup() {
      +  size(500, 500, P3D);
      +}
      +
      +void draw() {
      +  if (record) {
      +    beginRaw(SVG, "output.svg");
      +  }
      +
      +  // Do all your drawing here
      +  background(204);
      +  translate(width/2, height/2, -200);
      +  rotateZ(0.2);
      +  rotateY(mouseX/500.0);
      +  box(200);
      +
      +  if (record) {
      +    endRaw();
      +    record = false;
      +  }
      +}
      +
      +// Hit 'r' to record a single frame
      +void keyPressed() {
      +  if (key == 'r') {
      +    record = true;
      +  }
      +}
      +
      + +

      Using createGraphics() to Create an SVG File
      +
      +To write a SVG file using only the createGraphics() command, rather than as +part of a sketch, it's necessary to call dispose() on the PGraphicsSVG object. +This is the same as calling exit(), but it won't quit the sketch.

      + +
      import processing.svg.*;
      +
      +PGraphics svg = createGraphics(300, 300, SVG, "output.svg");
      +svg.beginDraw();
      +svg.background(128, 0, 0);
      +svg.line(50, 50, 250, 250);
      +svg.dispose();
      +svg.endDraw();
      + + +

      +Additional notes for the SVG renderer: + +

        + +
      • If you want 3D data, use the DXF recording library instead. + +
      • Using hint(ENABLE_DEPTH_SORT) can improve the appearance of 3D geometry drawn to 2D file formats. + +
      • Many methods, particularly pixel-based methods, don't make sense for SVG renderers. This includes: loadPixels, updatePixels, get, set, mask, filter, copy, blend, save, and image + +
      • Again, exit() is really important when using SVG with size(). + +
      + +

      + +
      diff --git a/content/api_en/libraries/index.html b/content/api_en/libraries/index.html index 11cc19e54..e507a7c8b 100644 --- a/content/api_en/libraries/index.html +++ b/content/api_en/libraries/index.html @@ -16,7 +16,12 @@
      PDF Export
      Network

      Send and receive data over the Internet through simple clients and servers.

      - + +
    • +
      SVG Export
      +

      Create SVG files.

      +
    • +
    • Serial

      Send data between Processing and external hardware through serial communication (RS-232).

      diff --git a/generate/libraries.php b/generate/libraries.php index ee8bc5652..d34c53ba2 100755 --- a/generate/libraries.php +++ b/generate/libraries.php @@ -19,7 +19,7 @@ //`cd $path && /usr/bin/git pull https://github.com/processing/processing-docs/`; -$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io'); +$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io', 'svg'); $lib_dir = REFERENCEDIR.'libraries/'; // Create Index @@ -47,7 +47,7 @@ // template and copy index $index = CONTENTDIR.$source.'/index.html'; - if($lib == 'pdf' || $lib == 'dxf') { + if($lib == 'pdf' || $lib == 'dxf' || $lib == 'svg') { //$page = new Page(strtoupper($lib) . ' \\ Libraries', 'Libraries', 'Library-index'); $page = new Page(strtoupper($lib) . ' \\ Libraries', 'Libraries'); } else { diff --git a/generate/libraries_local.php b/generate/libraries_local.php index 7c946d94f..ddaeaff96 100755 --- a/generate/libraries_local.php +++ b/generate/libraries_local.php @@ -8,7 +8,7 @@ $benchmark_start = microtime_float(); -$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io'); +$libraries = array('net', 'serial', 'video', 'dxf', 'pdf', 'sound', 'io', 'svg'); $lib_dir = DISTDIR.'libraries'; From 86ec0e172c8b6738c0e719b8e13b1af266e6d1ab Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 10 May 2018 11:48:02 -0700 Subject: [PATCH 471/772] Add Pi to ribbon This change was modelled after 99fc2d2e41fa7318b1b25cea8bdb99b4e44b60d9 --- java_generate/templates/class.template.html | 1 + java_generate/templates/generic.template.html | 1 + java_generate/templates/index.alphabetical.template.html | 1 + java_generate/templates/index.template.html | 1 + java_generate/templates/library.index.template.html | 1 + templates/template.html | 1 + 6 files changed, 6 insertions(+) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 9eb14a107..3d715adf9 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -29,6 +29,7 @@
    • p5.js
    • Processing.py
    • Processing for Android
    • +
    • Processing for Pi
    • Processing Foundation
    • diff --git a/java_generate/templates/index.alphabetical.template.html b/java_generate/templates/index.alphabetical.template.html index de55a4f4f..a716f1117 100644 --- a/java_generate/templates/index.alphabetical.template.html +++ b/java_generate/templates/index.alphabetical.template.html @@ -28,6 +28,7 @@
    • p5.js
    • Processing.py
    • Processing for Android
    • +
    • Processing for Pi
    • Processing Foundation
    • From 982acb26453b2afe81b0e80faedc0156d80e7d3c Mon Sep 17 00:00:00 2001 From: gohai Date: Thu, 10 May 2018 12:06:27 -0700 Subject: [PATCH 472/772] Add a link to Pi on the download page --- content/static/download.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index 8360246ea..c627db526 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -16,7 +16,8 @@

      Download Processing. Process Windows 32-bit
    • Linux 64-bit
      Linux 32-bit
      - Linux ARMv6hf
    • + Linux ARM
      + (running on Pi?)
    • Mac OS X
    From 26b4698ddd1cdc689e6334da7c5f172a9d4d2f8a Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 17 Jun 2018 17:42:28 -0400 Subject: [PATCH 473/772] Updated URL for Android SelectFile library. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 2c4eb035a..8402f899f 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -130,7 +130,7 @@ 067 \ http://www.graffitiresearchlab.de/wp-content/uploads/proJMS.txt 084 \ http://iddi.github.io/oocsi-processing/oocsi.txt 091 \ http://n-e-r-v-o-u-s.com/tools/obj/OBJExport.txt -097 \ http://pif.github.com/android-select-file/download/SelectFile.txt +097 \ https://andrusiv.com/android-select-file/download/SelectFile.txt 098 \ http://vialab.science.uoit.ca/smt/dl/SMT.txt 105 \ http://paulhertz.net/ignocodelib/download/IgnoCodeLib.txt 121 \ https://github.com/codeanticode/tablet/releases/download/latest/Tablet.txt From af7d4facb84c9845d528fa9714b831caab5726bd Mon Sep 17 00:00:00 2001 From: gohai Date: Sun, 17 Jun 2018 22:21:16 -0700 Subject: [PATCH 474/772] IO: Document Raspbian-only method for setting pull{up,down} resistors Please merge when https://github.com/processing/processing/pull/5548 gets merged --- content/api_en/LIB_io/GPIO_pinMode.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/content/api_en/LIB_io/GPIO_pinMode.xml b/content/api_en/LIB_io/GPIO_pinMode.xml index bbc5de5d0..528db725f 100755 --- a/content/api_en/LIB_io/GPIO_pinMode.xml +++ b/content/api_en/LIB_io/GPIO_pinMode.xml @@ -38,10 +38,14 @@ void draw() { +Configures a pin to act either as input (INPUT), or input with internal pull-up resistor (INPUT_PULLUP), or input with internal pull-down resistor (INPUT_PULLDOWN) or output (OUTPUT)

    Unlike on Arduino, where pins are implicitly set to inputs by default, it is necessary -to call this function for any pin you want to access, including input pins. +to call this function for any pin you want to access, including input pins.
    +
    +Pull-up and pull-down resistors are very useful when connecting buttons and switches, since they will force the value of the pin in a specified electrical state when no electrical connection is made, and the pin would otherwise be left "floating".
    +
    +The ability to set (and clear) pull-up and pull-down resistors is currently limited to the Raspberry Pi running the Raspbian distribution. On other systems, a warning will be shown. ]]>
    From 1fd4d0176f69bb0e256318afee8ddf88a6a579dd Mon Sep 17 00:00:00 2001 From: Daniel Shiffman Date: Tue, 19 Jun 2018 20:17:18 -0400 Subject: [PATCH 475/772] incorrect index for finding substring #664 Thanks to @Jose-Amaya for the catch! --- content/static/tutorials/data/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/tutorials/data/index.html b/content/static/tutorials/data/index.html index d45a525a6..40e99a6f9 100644 --- a/content/static/tutorials/data/index.html +++ b/content/static/tutorials/data/index.html @@ -493,7 +493,7 @@

    Data that is not in a Standardized Format

    In code, this looks like:

    -int start      = stuff.indexOf("apples:" ) + 8;  // STEP 1 
    +int start      = stuff.indexOf("apples:" ) + 7;  // STEP 1 
     // The index where a string ends can be found by 
     // searching for that string and adding its length (here, 8).
     int end        = stuff.indexOf(".", start);      // STEP 2
    
    From 39a3a680a0941736935eb40114ffe16927548562 Mon Sep 17 00:00:00 2001
    From: Elie Zananiri 
    Date: Wed, 20 Jun 2018 08:50:56 -0400
    Subject: [PATCH 476/772] Added GettingStarted Tool to sources.
    
    ---
     contrib_generate/sources.conf | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf
    index 8402f899f..4a8afa5d7 100644
    --- a/contrib_generate/sources.conf
    +++ b/contrib_generate/sources.conf
    @@ -1,4 +1,4 @@
    -# Next ID: 233
    +# Next ID: 234
     # Increment after assigning ID to new contribution
     
     [Library : 3D]
    @@ -294,6 +294,7 @@
     191 \ https://github.com/gohai/processing-uploadtopi/releases/download/latest/UploadToPiTool.txt
     221 \ http://jonathan.dahlberg.media/ecc/ecc.txt
     228 \ https://perceptualcolor.org/distribution/PerceptualColorPicker/download/PerceptualColorPicker.txt
    +233 \ https://github.com/jaewhyun/GettingStarted/releases/download/latest/GettingStarted.txt
     
     [Mode : ]
     070 \ http://bezier.de/processing/modes/CoffeeScriptMode.txt
    
    From fe4fe3d11382849ffca5727e7e50474b33299531 Mon Sep 17 00:00:00 2001
    From: gohai 
    Date: Sun, 1 Jul 2018 12:32:00 -0700
    Subject: [PATCH 477/772] IO: Clarify default period in PWM.set()
    
    ---
     content/api_en/LIB_io/PWM_set.xml | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    
    diff --git a/content/api_en/LIB_io/PWM_set.xml b/content/api_en/LIB_io/PWM_set.xml
    index 5437657b2..f21b3bfba 100755
    --- a/content/api_en/LIB_io/PWM_set.xml
    +++ b/content/api_en/LIB_io/PWM_set.xml
    @@ -17,7 +17,9 @@
     
     
     
    +
    +When no period is specified, a default 1 kHz (1000 Hz) is used. ]]>
    From 096be09dce5de624cae75fe01ebfd87b90eb64a3 Mon Sep 17 00:00:00 2001 From: gohai Date: Sun, 1 Jul 2018 12:32:23 -0700 Subject: [PATCH 478/772] Update download link for ARM --- content/static/download.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index c627db526..25d1722a9 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -16,7 +16,9 @@

    Download Processing. Process Windows 32-bit
  • Linux 64-bit
    Linux 32-bit
    - Linux ARM
    + + + Linux ARM
    (running on Pi?)
  • Mac OS X
  • From 2785a455e5f00fe745cf6ffc00f9b03c40b7da0b Mon Sep 17 00:00:00 2001 From: gohai Date: Sun, 1 Jul 2018 12:45:42 -0700 Subject: [PATCH 479/772] IO: Use INPUT_PULLUP for digitalRead(), pinMode() examples --- content/api_en/LIB_io/GPIO_digitalRead.xml | 17 +++++++++-------- content/api_en/LIB_io/GPIO_pinMode.xml | 17 +++++++++-------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/content/api_en/LIB_io/GPIO_digitalRead.xml b/content/api_en/LIB_io/GPIO_digitalRead.xml index 2efc9fbb1..4a8c8d36d 100755 --- a/content/api_en/LIB_io/GPIO_digitalRead.xml +++ b/content/api_en/LIB_io/GPIO_digitalRead.xml @@ -14,20 +14,21 @@ Date: Wed, 4 Jul 2018 10:49:03 +0200 Subject: [PATCH 480/772] Set sound library docs to be built from rewrite repository --- generate/reference.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/generate/reference.php b/generate/reference.php index b1a0aeeed..1f9f27b67 100644 --- a/generate/reference.php +++ b/generate/reference.php @@ -38,7 +38,9 @@ function out($output) { out("Pulling in latest changes from processing/processing-sound/..."); $soundRepoPath = "{$path}../processing-sound"; -$shell_output = shell_exec("cd $soundRepoPath && /usr/bin/git pull https://github.com/processing/processing-sound/ 2>&1"); +//$shell_output = shell_exec("cd $soundRepoPath && /usr/bin/git pull https://github.com/processing/processing-sound/ 2>&1"); +// clone new processing-sound library from work-in-progress repository instead +$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/kevinstadler/processing-sound.git . 2>&1"); out($shell_output); out("---------------"); @@ -84,4 +86,4 @@ function out($output) { $execution_time = round($benchmark_end - $benchmark_start, 4); out("Generated files in $execution_time seconds."); -?> \ No newline at end of file +?> From 7f0917425b83ee3c98cd823bf1d7df746c57ff14 Mon Sep 17 00:00:00 2001 From: gohai Date: Wed, 4 Jul 2018 08:54:30 -0700 Subject: [PATCH 481/772] Revert to the previous processing-sound for the time being --- generate/reference.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate/reference.php b/generate/reference.php index 1f9f27b67..5e2a7532c 100644 --- a/generate/reference.php +++ b/generate/reference.php @@ -40,7 +40,7 @@ function out($output) { $soundRepoPath = "{$path}../processing-sound"; //$shell_output = shell_exec("cd $soundRepoPath && /usr/bin/git pull https://github.com/processing/processing-sound/ 2>&1"); // clone new processing-sound library from work-in-progress repository instead -$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/kevinstadler/processing-sound.git . 2>&1"); +$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/processing/processing-sound.git . 2>&1"); out($shell_output); out("---------------"); From 885cae5590d9a5ff224cf14cd3033134c946f821 Mon Sep 17 00:00:00 2001 From: gohai Date: Sun, 22 Jul 2018 10:14:14 -0700 Subject: [PATCH 482/772] Update ARM point-release download link --- content/static/download.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index 25d1722a9..fdead2017 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -18,7 +18,7 @@

    Download Processing. Process Linux 32-bit
    - Linux ARM
    + Linux ARM
    (running on Pi?)
  • Mac OS X
  • From 5979a1c62b2181cc385313a249134b41f13a6c05 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Thu, 26 Jul 2018 18:39:57 -0400 Subject: [PATCH 483/772] adding 3.4 --- content/static/download.html | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index fdead2017..75fa68a49 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -9,18 +9,16 @@

    Download Processing. Process
    - 3.3.7 + 3.4 (13 March 2018)
    @@ -41,6 +39,16 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.4 + (26 July 2018) + Win 32 + Win 64 + Linux 32 + Linux 64 + Linux ARMv6hf + Mac OS X +
  • 3.3.7 (13 March 2018) @@ -51,6 +59,7 @@

    Stable Releases

    Linux ARMv6hf Mac OS X
  • +
    3.4 - (13 March 2018) + (26 July 2018)
    • Windows 64-bit
      Windows 32-bit
    • From 907f7732d86d5e450e926c6d4f241118a7c8db5b Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Fri, 27 Jul 2018 09:53:35 -0400 Subject: [PATCH 485/772] Updated Python Mode URL. --- contrib_generate/sources.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 4a8afa5d7..0cf9cd732 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -302,8 +302,8 @@ 101 \ https://github.com/processing/processing-android/releases/download/latest/AndroidMode.txt # 122 \ http://galsasson.com/tweakmode/tweakmode.txt # 124 \ http://download.processing.org/pdeX.txt -142 \ http://py.processing.org/PythonMode.txt +# 142 \ http://py.processing.org/PythonMode.txt 162 \ https://github.com/joelmoniz/REPLmode/releases/download/latest/REPLMode.txt -169 \ http://py.processing.org/3/PythonMode.txt +169 \ https://py.processing.org/3/PythonMode.txt 199 \ https://github.com/fathominfo/processing-p5js-mode/releases/download/latest/p5jsMode.txt 220 \ http://gaocegege.com/Processing.R/RLangMode.txt From 8d25b045fc95dd84f494bd0a19a1374e8adf6bc8 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Fri, 27 Jul 2018 09:56:27 -0400 Subject: [PATCH 486/772] Fixed date in 3.4 version link. --- content/static/download.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index 75fa68a49..ed0664dc1 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -10,7 +10,7 @@

      Download Processing. Process
      3.4 - (13 March 2018) + (26 July 2018)
      • Windows 64-bit
        Windows 32-bit
      • From 07e99f57ab02f2c243ed4fd16cc131e0dd79d9b2 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 10:31:09 +0200 Subject: [PATCH 487/772] Move sampleRate doc from SoundFile to AudioSample --- ...oundFile_sampleRate.xml => AudioSample_sampleRate.xml} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename content/api_en/LIB_sound/{SoundFile_sampleRate.xml => AudioSample_sampleRate.xml} (78%) diff --git a/content/api_en/LIB_sound/SoundFile_sampleRate.xml b/content/api_en/LIB_sound/AudioSample_sampleRate.xml similarity index 78% rename from content/api_en/LIB_sound/SoundFile_sampleRate.xml rename to content/api_en/LIB_sound/AudioSample_sampleRate.xml index 38e25aff2..f9b8b163e 100755 --- a/content/api_en/LIB_sound/SoundFile_sampleRate.xml +++ b/content/api_en/LIB_sound/AudioSample_sampleRate.xml @@ -13,15 +13,15 @@ From 46829af1728980ea9799736b7420502cda8d8122 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 10:40:02 +0200 Subject: [PATCH 488/772] Update SoundFile XML documentation (refs kevinstadler/processing-sound#8) --- content/api_en/LIB_sound/SoundFile.xml | 5 +++-- content/api_en/LIB_sound/SoundFile_add.xml | 6 +++--- content/api_en/LIB_sound/SoundFile_amp.xml | 2 +- .../api_en/LIB_sound/SoundFile_channels.xml | 4 ++-- content/api_en/LIB_sound/SoundFile_cue.xml | 4 ++-- .../api_en/LIB_sound/SoundFile_duration.xml | 4 ++-- content/api_en/LIB_sound/SoundFile_frames.xml | 6 +++--- content/api_en/LIB_sound/SoundFile_jump.xml | 4 ++-- content/api_en/LIB_sound/SoundFile_loop.xml | 2 +- content/api_en/LIB_sound/SoundFile_pan.xml | 4 ++-- content/api_en/LIB_sound/SoundFile_play.xml | 2 +- content/api_en/LIB_sound/SoundFile_rate.xml | 3 +-- content/api_en/LIB_sound/SoundFile_set.xml | 15 +++++++-------- content/api_en/LIB_sound/SoundFile_stop.xml | 18 +++++++++--------- 14 files changed, 39 insertions(+), 40 deletions(-) diff --git a/content/api_en/LIB_sound/SoundFile.xml b/content/api_en/LIB_sound/SoundFile.xml index db860e881..d2f1b022f 100755 --- a/content/api_en/LIB_sound/SoundFile.xml +++ b/content/api_en/LIB_sound/SoundFile.xml @@ -32,6 +32,7 @@ void draw() { This is a Soundfile Player which allows to play back and manipulate soundfiles. Supported formats are: WAV, AIF/AIFF, MP3. +MP3 decoding can be very slow on ARM processors (Android/Raspberry Pi), we generally recommend you use lossless WAV or AIF files. ]]> @@ -76,10 +77,10 @@ This is a Soundfile Player which allows to play back and manipulate soundfiles. Change the amplitude/volume of the player - + pan() diff --git a/content/api_en/LIB_sound/SoundFile_add.xml b/content/api_en/LIB_sound/SoundFile_add.xml index 28df56508..2b92734e5 100755 --- a/content/api_en/LIB_sound/SoundFile_add.xml +++ b/content/api_en/LIB_sound/SoundFile_add.xml @@ -18,12 +18,12 @@ SoundFile file; void setup() { size(640, 360); background(255); - + // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); file.play(); file.add(0.1); -} +} void draw() { } @@ -32,7 +32,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_amp.xml b/content/api_en/LIB_sound/SoundFile_amp.xml index 8fed77f35..34002bbd2 100755 --- a/content/api_en/LIB_sound/SoundFile_amp.xml +++ b/content/api_en/LIB_sound/SoundFile_amp.xml @@ -21,8 +21,8 @@ void setup() { // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); - file.play(); file.amp(0.5); + file.play(); } void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_channels.xml b/content/api_en/LIB_sound/SoundFile_channels.xml index 2e371f9e2..999ca0916 100755 --- a/content/api_en/LIB_sound/SoundFile_channels.xml +++ b/content/api_en/LIB_sound/SoundFile_channels.xml @@ -18,11 +18,11 @@ SoundFile file; void setup() { size(640, 360); background(255); - + // Load a soundfile from the /data folder of the sketch and get the number of channels file = new SoundFile(this, "sample.mp3"); println(file.channels()); -} +} void draw() { } diff --git a/content/api_en/LIB_sound/SoundFile_cue.xml b/content/api_en/LIB_sound/SoundFile_cue.xml index 347d45dc4..b776d4657 100755 --- a/content/api_en/LIB_sound/SoundFile_cue.xml +++ b/content/api_en/LIB_sound/SoundFile_cue.xml @@ -21,7 +21,7 @@ void setup() { // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); - file.cue(15); + file.cue(3.5); file.play(); } @@ -32,7 +32,7 @@ void draw() { second parameter supports only integer values. +Cues the playhead to a fixed position in the soundfile. ]]> diff --git a/content/api_en/LIB_sound/SoundFile_duration.xml b/content/api_en/LIB_sound/SoundFile_duration.xml index ca9e0e073..1b0001e75 100755 --- a/content/api_en/LIB_sound/SoundFile_duration.xml +++ b/content/api_en/LIB_sound/SoundFile_duration.xml @@ -21,7 +21,7 @@ void setup() { // Load a soundfile from the data folder of the sketch and get the duration of the file file = new SoundFile(this, "sample.mp3"); - println("SFDuration= " + file.duration() + " seconds"); + println("Duration= " + file.duration() + " seconds"); } void draw() { @@ -31,7 +31,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_frames.xml b/content/api_en/LIB_sound/SoundFile_frames.xml index eb464331f..3cd815c88 100755 --- a/content/api_en/LIB_sound/SoundFile_frames.xml +++ b/content/api_en/LIB_sound/SoundFile_frames.xml @@ -18,10 +18,10 @@ SoundFile file; void setup() { size(640, 360); background(255); - + // Load a soundfile from the data folder of the sketch and get the number of frames file = new SoundFile(this, "sample.mp3"); - println("SFSamples= " + file.frames() + " samples"); + println("Frames= " + file.frames() + " frames"); } void draw() { @@ -31,7 +31,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_jump.xml b/content/api_en/LIB_sound/SoundFile_jump.xml index caa6a01a9..195148440 100755 --- a/content/api_en/LIB_sound/SoundFile_jump.xml +++ b/content/api_en/LIB_sound/SoundFile_jump.xml @@ -21,7 +21,7 @@ void setup() { // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); - file.jump(15.3); + file.jump(3.5); } void draw() { @@ -31,7 +31,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_loop.xml b/content/api_en/LIB_sound/SoundFile_loop.xml index d66e81a83..8f42ae4d9 100755 --- a/content/api_en/LIB_sound/SoundFile_loop.xml +++ b/content/api_en/LIB_sound/SoundFile_loop.xml @@ -31,7 +31,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_pan.xml b/content/api_en/LIB_sound/SoundFile_pan.xml index 52fc29f6b..5ffd87f98 100755 --- a/content/api_en/LIB_sound/SoundFile_pan.xml +++ b/content/api_en/LIB_sound/SoundFile_pan.xml @@ -19,7 +19,7 @@ void setup() { size(640, 360); background(255); - // Load a soundfile from the data folder of the sketch and play it back + // Load a MONO soundfile from the data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); file.play(); } @@ -32,7 +32,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_play.xml b/content/api_en/LIB_sound/SoundFile_play.xml index 95f493497..f1dff831d 100755 --- a/content/api_en/LIB_sound/SoundFile_play.xml +++ b/content/api_en/LIB_sound/SoundFile_play.xml @@ -31,7 +31,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_rate.xml b/content/api_en/LIB_sound/SoundFile_rate.xml index 48ef77737..d986e0ca7 100755 --- a/content/api_en/LIB_sound/SoundFile_rate.xml +++ b/content/api_en/LIB_sound/SoundFile_rate.xml @@ -32,8 +32,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/SoundFile_set.xml b/content/api_en/LIB_sound/SoundFile_set.xml index e0b029462..b9f42ee74 100755 --- a/content/api_en/LIB_sound/SoundFile_set.xml +++ b/content/api_en/LIB_sound/SoundFile_set.xml @@ -19,27 +19,26 @@ void setup() { size(640, 360); background(255); - // Load a soundfile from the data folder of the sketch and get the number of channels + // Load a soundfile from the data folder of the sketch file = new SoundFile(this, "sample.mp3"); - println("SFSampleRate= " + file.sampleRate() + " Hz"); } void draw() { } void mousePressed() { - float rate=3; - float pos=0.5; - float amp=0.5; - float add=0; - file.set(rate, amp, add, pos); + float rate = 3; + float pos = 0.5; + float amp = 0.5; + float add = 0; + file.set(rate, pos, amp, add); } ]]> diff --git a/content/api_en/LIB_sound/SoundFile_stop.xml b/content/api_en/LIB_sound/SoundFile_stop.xml index d8648eda5..d4b3830e7 100755 --- a/content/api_en/LIB_sound/SoundFile_stop.xml +++ b/content/api_en/LIB_sound/SoundFile_stop.xml @@ -15,26 +15,26 @@ import processing.sound.*; SoundFile file; - void setup() { +void setup() { size(640, 360); background(255); - + // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); file.play(); - } +} - void(){ - } - - void mousePressed() { +void draw() { +} + +void mousePressed() { file.stop(); - } +} ]]> From cf356fee7bc956b87006116ca43d6a745fc984c7 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 12:41:37 +0200 Subject: [PATCH 489/772] Add minimal AudioSample.xml (refs kevinstadler/processing-sound#8) --- content/api_en/LIB_sound/AudioSample.xml | 56 ++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 content/api_en/LIB_sound/AudioSample.xml diff --git a/content/api_en/LIB_sound/AudioSample.xml b/content/api_en/LIB_sound/AudioSample.xml new file mode 100755 index 000000000..729c1f602 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample.xml @@ -0,0 +1,56 @@ + + +AudioSample + +Sound + +Audio Files + +Application + + + + + + + + + +pan() +Move the audiosample in a stereo panorama (only works for mono samples) + + +2.0 + +Object + +Library + + From 8ac00b71537d4e26e9f10ebbf3d2356c0381e742 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 12:42:23 +0200 Subject: [PATCH 490/772] Remove redundant specifications from TriOsc.xml for testing --- content/api_en/LIB_sound/TriOsc.xml | 56 ----------------------------- 1 file changed, 56 deletions(-) diff --git a/content/api_en/LIB_sound/TriOsc.xml b/content/api_en/LIB_sound/TriOsc.xml index 2ca49c832..9a0ded13b 100755 --- a/content/api_en/LIB_sound/TriOsc.xml +++ b/content/api_en/LIB_sound/TriOsc.xml @@ -32,62 +32,6 @@ void draw() { This is a simple Triangle Wave Oscillator ]]> - - - - - - - - -play() -Start the oscillator - - - -stop() -Stop the oscillator - - - -freq() -Change the frequency of the oscillator - - - -amp() -Change the amplitude/volume of the oscillator - - - -add() -Offset the output of the oscillator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -TriOsc(parent) - - - -parent -PApplet: typically use "this" - - - - - - - 1.0 Object From 5957af09d6254a433cbf99dd388d0b291dd0555b Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 12:56:33 +0200 Subject: [PATCH 491/772] Add Sound.xml for testing --- content/api_en/LIB_sound/AudioDevice.xml | 14 +------ content/api_en/LIB_sound/Sound.xml | 49 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 content/api_en/LIB_sound/Sound.xml diff --git a/content/api_en/LIB_sound/AudioDevice.xml b/content/api_en/LIB_sound/AudioDevice.xml index 5bb214dba..f32b4cbf0 100755 --- a/content/api_en/LIB_sound/AudioDevice.xml +++ b/content/api_en/LIB_sound/AudioDevice.xml @@ -29,16 +29,6 @@ void draw() { Audio Device allows for configuring the audio server. If you need a low latency server you can reduce the buffer size. Allowed values are power of 2. For changing the sample rate pass the appropriate value in the constructor. ]]> - - - - - - - - - - AudioDevice(parent, samplerate, buffersize) @@ -57,10 +47,8 @@ AudioDevice(parent, samplerate, buffersize) int: buffersize (i.e. 32/64/128 ..) - - - +Sound 1.0 diff --git a/content/api_en/LIB_sound/Sound.xml b/content/api_en/LIB_sound/Sound.xml new file mode 100644 index 000000000..859cae591 --- /dev/null +++ b/content/api_en/LIB_sound/Sound.xml @@ -0,0 +1,49 @@ + + +Sound + +Sound + +Configuration + +Application + + + + + + + + +AudioIn + + + \ No newline at end of file From 13b99201287b3c0abc73f11e1b8407f8dca376c7 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Tue, 7 Aug 2018 12:57:13 +0200 Subject: [PATCH 492/772] Add AudioSample/SoundFile crossreference --- content/api_en/LIB_sound/AudioSample.xml | 4 ++++ content/api_en/LIB_sound/SoundFile.xml | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/content/api_en/LIB_sound/AudioSample.xml b/content/api_en/LIB_sound/AudioSample.xml index 729c1f602..3c31a428d 100755 --- a/content/api_en/LIB_sound/AudioSample.xml +++ b/content/api_en/LIB_sound/AudioSample.xml @@ -47,6 +47,10 @@ This is just a placeholder to see which class descriptions are added by the refe Move the audiosample in a stereo panorama (only works for mono samples) + +SoundFile + + 2.0 Object diff --git a/content/api_en/LIB_sound/SoundFile.xml b/content/api_en/LIB_sound/SoundFile.xml index d2f1b022f..9b698dad8 100755 --- a/content/api_en/LIB_sound/SoundFile.xml +++ b/content/api_en/LIB_sound/SoundFile.xml @@ -9,7 +9,6 @@ Application - Date: Tue, 7 Aug 2018 15:22:28 -0300 Subject: [PATCH 493/772] Added ReferenceTool to contributions. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 0cf9cd732..2ff56edb5 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 234 +# Next ID: 235 # Increment after assigning ID to new contribution [Library : 3D] @@ -295,6 +295,7 @@ 221 \ http://jonathan.dahlberg.media/ecc/ecc.txt 228 \ https://perceptualcolor.org/distribution/PerceptualColorPicker/download/PerceptualColorPicker.txt 233 \ https://github.com/jaewhyun/GettingStarted/releases/download/latest/GettingStarted.txt +234 \ https://github.com/jaewhyun/ReferenceTool/releases/download/latest/ReferenceTool.txt [Mode : ] 070 \ http://bezier.de/processing/modes/CoffeeScriptMode.txt From bcdc17d369a8c348c7ba938fea3d84cdc82ad858 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 10 Aug 2018 18:32:44 +0200 Subject: [PATCH 494/772] Switch to new processing sound repository --- content/api_en/LIB_sound/SinOsc.xml | 2 +- generate/reference.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/api_en/LIB_sound/SinOsc.xml b/content/api_en/LIB_sound/SinOsc.xml index 1f6c8ad1e..3b9e8e4cc 100755 --- a/content/api_en/LIB_sound/SinOsc.xml +++ b/content/api_en/LIB_sound/SinOsc.xml @@ -9,7 +9,7 @@ Application - +sin_.png &1"); // clone new processing-sound library from work-in-progress repository instead -$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/processing/processing-sound.git . 2>&1"); +$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/kevinstadler/processing-sound.git . 2>&1"); out($shell_output); out("---------------"); From 29de1817bfb894f8d3940b0ea05765ab0712cff3 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 10 Aug 2018 19:30:20 +0200 Subject: [PATCH 495/772] Fix sine oscillator image path and Pulse oscillator description --- content/api_en/LIB_sound/Pulse.xml | 18 +----------------- content/api_en/LIB_sound/SinOsc.xml | 2 +- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/content/api_en/LIB_sound/Pulse.xml b/content/api_en/LIB_sound/Pulse.xml index 2bae58c81..3251181f1 100755 --- a/content/api_en/LIB_sound/Pulse.xml +++ b/content/api_en/LIB_sound/Pulse.xml @@ -32,9 +32,7 @@ void draw() { @@ -69,11 +67,6 @@ void draw() { Change the amplitude/volume of the oscillator - -add() -Offset the output of the oscillator by given value - - pan() Move the sound in a stereo panorama @@ -84,15 +77,6 @@ void draw() { Set multiple parameters at once - -Pulse(parent) - - - -parent -PApplet: typically use "this" - - diff --git a/content/api_en/LIB_sound/SinOsc.xml b/content/api_en/LIB_sound/SinOsc.xml index 3b9e8e4cc..6ee014047 100755 --- a/content/api_en/LIB_sound/SinOsc.xml +++ b/content/api_en/LIB_sound/SinOsc.xml @@ -9,7 +9,7 @@ Application -sin_.png +../../sin_.png Date: Fri, 10 Aug 2018 19:59:56 +0200 Subject: [PATCH 496/772] Add minimal AudioSample.read() XML --- content/api_en/LIB_sound/AudioSample_read.xml | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 content/api_en/LIB_sound/AudioSample_read.xml diff --git a/content/api_en/LIB_sound/AudioSample_read.xml b/content/api_en/LIB_sound/AudioSample_read.xml new file mode 100755 index 000000000..97e4c7f06 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_read.xml @@ -0,0 +1,41 @@ + + + +read() + +Sound Files + + + +Web & Application + + + + + + +write + +1.0 + +Method + +Library + + From 3f761cac4d405c97fdf2e679d07fc7fd705b8793 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 10 Aug 2018 20:01:41 +0200 Subject: [PATCH 497/772] Remove redundant content from Pulse.xml --- content/api_en/LIB_sound/Pulse.xml | 47 ------------------------------ 1 file changed, 47 deletions(-) diff --git a/content/api_en/LIB_sound/Pulse.xml b/content/api_en/LIB_sound/Pulse.xml index 3251181f1..3891ec5cd 100755 --- a/content/api_en/LIB_sound/Pulse.xml +++ b/content/api_en/LIB_sound/Pulse.xml @@ -35,53 +35,6 @@ void draw() { This is a simple Pulse Oscillator. You can control the width of the pulse using the width() function. A width of 0.5 makes this oscillator identical to a square wave. ]]> - - - - - - - - -play() -Start the oscillator - - - -stop() -Stop the oscillator - - - -freq() -Change the frequency of the oscillator - - - -width() -Change the pulse width of the oscillator - - - -amp() -Change the amplitude/volume of the oscillator - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - - - - - 1.0 Object From 15704e062f48787077baff490a26497e3609e113 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 10 Aug 2018 21:35:34 +0200 Subject: [PATCH 498/772] Add Sound library oscillator pictures --- content/api_en/LIB_sound/AudioDevice.xml | 2 +- content/api_en/LIB_sound/Pulse.xml | 2 +- content/api_en/LIB_sound/SawOsc.xml | 58 +---------------------- content/api_en/LIB_sound/SinOsc.xml | 58 +---------------------- content/api_en/LIB_sound/Sound.xml | 4 -- content/api_en/LIB_sound/SqrOsc.xml | 58 +---------------------- content/api_en/LIB_sound/TriOsc.xml | 2 +- content/api_media/LIB_sound/Pulse.png | Bin 0 -> 290 bytes content/api_media/LIB_sound/SawOsc.png | Bin 0 -> 449 bytes content/api_media/LIB_sound/SinOsc.png | Bin 0 -> 589 bytes content/api_media/LIB_sound/SqrOsc.png | Bin 0 -> 301 bytes content/api_media/LIB_sound/TriOsc.png | Bin 0 -> 439 bytes 12 files changed, 6 insertions(+), 178 deletions(-) create mode 100644 content/api_media/LIB_sound/Pulse.png create mode 100644 content/api_media/LIB_sound/SawOsc.png create mode 100644 content/api_media/LIB_sound/SinOsc.png create mode 100644 content/api_media/LIB_sound/SqrOsc.png create mode 100644 content/api_media/LIB_sound/TriOsc.png diff --git a/content/api_en/LIB_sound/AudioDevice.xml b/content/api_en/LIB_sound/AudioDevice.xml index f32b4cbf0..1172dc020 100755 --- a/content/api_en/LIB_sound/AudioDevice.xml +++ b/content/api_en/LIB_sound/AudioDevice.xml @@ -4,7 +4,7 @@ Sound -I/O +Configuration Application diff --git a/content/api_en/LIB_sound/Pulse.xml b/content/api_en/LIB_sound/Pulse.xml index 3891ec5cd..450f0e5f5 100755 --- a/content/api_en/LIB_sound/Pulse.xml +++ b/content/api_en/LIB_sound/Pulse.xml @@ -9,7 +9,7 @@ Application - +../../../images/LIB_sound/Pulse.png Application - +../../../images/LIB_sound/SawOsc.png - - - - - - - - -play() -Start the oscillator - - - -stop() -Stop the oscillator - - - -freq() -Change the frequency of the oscillator - - - -amp() -Change the amplitude/volume of the oscillator - - - -add() -Offset the output of the oscillator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -SqrOsc(parent) - - - -parent -PApplet: typically use "this" - - - - - - - 1.0 Object diff --git a/content/api_en/LIB_sound/SinOsc.xml b/content/api_en/LIB_sound/SinOsc.xml index 6ee014047..30f5cc13d 100755 --- a/content/api_en/LIB_sound/SinOsc.xml +++ b/content/api_en/LIB_sound/SinOsc.xml @@ -9,7 +9,7 @@ Application -../../sin_.png +../../../images/LIB_sound/SinOsc.png - - - - - - - - -play() -Start the oscillator - - - -stop() -Stop the oscillator - - - -freq() -Change the frequency of the oscillator - - - -amp() -Change the amplitude/volume of the oscillator - - - -add() -Offset the output of the oscillator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -SinOsc(parent) - - - -parent -PApplet: typically use "this" - - - - - - - 1.0 Object diff --git a/content/api_en/LIB_sound/Sound.xml b/content/api_en/LIB_sound/Sound.xml index 859cae591..26e8d1b0a 100644 --- a/content/api_en/LIB_sound/Sound.xml +++ b/content/api_en/LIB_sound/Sound.xml @@ -38,10 +38,6 @@ void draw() { ]]> - - AudioIn diff --git a/content/api_en/LIB_sound/SqrOsc.xml b/content/api_en/LIB_sound/SqrOsc.xml index d1d0c096f..5fe8f9244 100755 --- a/content/api_en/LIB_sound/SqrOsc.xml +++ b/content/api_en/LIB_sound/SqrOsc.xml @@ -9,7 +9,7 @@ Application - +../../../images/LIB_sound/SqrOsc.png - - - - - - - - -play() -Start the oscillator - - - -stop() -Stop the oscillator - - - -freq() -Change the frequency of the oscillator - - - -amp() -Change the amplitude/volume of the oscillator - - - -add() -Offset the output of the oscillator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -SqrOsc(parent) - - - -parent -PApplet: typically use "this" - - - - - - - 1.0 Object diff --git a/content/api_en/LIB_sound/TriOsc.xml b/content/api_en/LIB_sound/TriOsc.xml index 9a0ded13b..bb3ad11d4 100755 --- a/content/api_en/LIB_sound/TriOsc.xml +++ b/content/api_en/LIB_sound/TriOsc.xml @@ -9,7 +9,7 @@ Application - +../../../images/LIB_sound/TriOsc.png DcK^DdQ+0kYUjJbhi+A8~Mri>b+H+64oJ{5@S9Lo)8YJ#WZ&K!JzF@%I1v zk{2GLl8Rj_#8xQy(04caP!mH$G3qB z?-w%0xiEiZv*`H_FVdQ&MBb@04pq6Z~y=R literal 0 HcmV?d00001 diff --git a/content/api_media/LIB_sound/SawOsc.png b/content/api_media/LIB_sound/SawOsc.png new file mode 100644 index 0000000000000000000000000000000000000000..845db35d163005738d0485f078b593da375e07bd GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^DIm5Hz(xLLVTr}%=8mlKC#ivW0x)9qwsEF z;RJ;@3k#MIdFWCFY!=d`< z#D;G+oEhi8ewX_Ic5aKnqw^Jv%pcg+cr(>B0DY@k;u=wsl30>zm0Xkxq!^403@vmG zEOZSGLW~TpjEt;|Ewl}ctPBjSOrtKLXvob^$xN%nt-(9vQ65kOgQu&X%Q~loCIGNR BsJ8$B literal 0 HcmV?d00001 diff --git a/content/api_media/LIB_sound/SinOsc.png b/content/api_media/LIB_sound/SinOsc.png new file mode 100644 index 0000000000000000000000000000000000000000..f510c14ed181c4d57b1048f1945f50d9f03cb27a GIT binary patch literal 589 zcmeAS@N?(olHy`uVBq!ia0vp^DImL4#UEQKZi-5{3EG**V zYY7?N@C?X}}vOpYQh z7q1yTpHuwrzkZ0zk$^{!rb@5eeBs@3QI|P0{Z2yM|IbH_TVeLZQXjp3r;QCYepdoj zr|7Rwo#G-J?D+LpoU7|4!>v`1w`E<)ZtBZgR2seYf=G#v^xWUOn#*=9-nI8%?cMjK zhh>cqd`L7uqHrT{@y92L=92wQvc^Z>WZEA#xe{2cGw&Ps8Rxr`&W637ezHpR<)yZ> z8)|3f2)?}3clKNU;@TzN7JGX6Ud{Xyz1i>IZy@$hn)`3og1Nt5J)8T>&ei&>?DXFjT>_&eTPIsf^V;Q2lk%k7ds`qf4)nfvR`Y3r|?|D4NhWcSy75uZB~1a9uPWOmvr zAGeXyJQWyBswJ)wB`Jv|saDBFsX&Us$iUD-*T6#8&>+Of(8|cj%Gg5Nz{twLz{)i0 f5{ic0{FKbJO57T}GalsuH86O(`njxgN@xNAMbiav literal 0 HcmV?d00001 diff --git a/content/api_media/LIB_sound/SqrOsc.png b/content/api_media/LIB_sound/SqrOsc.png new file mode 100644 index 0000000000000000000000000000000000000000..1e6941c6ed87f24d4b68ac03b6d0119f1275ce69 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^DImDcK^DdQ+0kYUjJbhi+A8~Mri>b+H+64oJqC8z3Lo)8Yy=KVQpdjGtc;~nL zEwRH|i$sLdy*{1fmR$-|vtgUAuyNVf#4VRjAKra9akKT#KNadqFz{*NiKpjn^8P)j z-u)_j-X1+8{W72)`wh(J*qLMHm**}6@>EM)BT7;dOH!?pi&B9UgOP!ug|2~xuAxDQ wk)f55k(IH9wt@dvmw5WRvOnVB5*JgG&$J5$3f=H@aSX}0 z_jcMvzC#KEEC((z_(&GMVx%tWcd%QW~#4yYh;$cFCfw_nOE4c6S&4FIQ`N zx%z;`jAUEs)(>mWGz-kLT_%5MYxFm#AK(7^aop!r<9}$=y;O0{@>4o3Uu)*H7gQO} zz6lB*28JKZ?+RjBqnF;Da~8-`Epd$~Nl7e8wMs5Z1yT$~28I^81{S)81|dd Date: Fri, 10 Aug 2018 22:02:18 +0200 Subject: [PATCH 499/772] Improve Sound config documentation and fix Sound library image paths --- content/api_en/LIB_sound/Pulse.xml | 8 +-- content/api_en/LIB_sound/SawOsc.xml | 8 +-- content/api_en/LIB_sound/SinOsc.xml | 8 +-- content/api_en/LIB_sound/Sound.xml | 6 ++- content/api_en/LIB_sound/Sound_list.xml | 27 ++++++++++ content/api_en/LIB_sound/Sound_volume.xml | 46 ++++++++++++++++++ content/api_en/LIB_sound/SqrOsc.xml | 8 +-- content/api_en/LIB_sound/TriOsc.xml | 8 +-- .../Pulse.png => LIB_sound_Pulse.png} | Bin .../SawOsc.png => LIB_sound_SawOsc.png} | Bin .../SinOsc.png => LIB_sound_SinOsc.png} | Bin .../SqrOsc.png => LIB_sound_SqrOsc.png} | Bin .../TriOsc.png => LIB_sound_TriOsc.png} | Bin 13 files changed, 83 insertions(+), 36 deletions(-) create mode 100755 content/api_en/LIB_sound/Sound_list.xml create mode 100755 content/api_en/LIB_sound/Sound_volume.xml rename content/api_media/{LIB_sound/Pulse.png => LIB_sound_Pulse.png} (100%) rename content/api_media/{LIB_sound/SawOsc.png => LIB_sound_SawOsc.png} (100%) rename content/api_media/{LIB_sound/SinOsc.png => LIB_sound_SinOsc.png} (100%) rename content/api_media/{LIB_sound/SqrOsc.png => LIB_sound_SqrOsc.png} (100%) rename content/api_media/{LIB_sound/TriOsc.png => LIB_sound_TriOsc.png} (100%) diff --git a/content/api_en/LIB_sound/Pulse.xml b/content/api_en/LIB_sound/Pulse.xml index 450f0e5f5..e1b4402cd 100755 --- a/content/api_en/LIB_sound/Pulse.xml +++ b/content/api_en/LIB_sound/Pulse.xml @@ -9,7 +9,7 @@ Application -../../../images/LIB_sound/Pulse.png +../../../images/LIB_sound_Pulse.png -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/SawOsc.xml b/content/api_en/LIB_sound/SawOsc.xml index 336494ed9..979ca1bb5 100755 --- a/content/api_en/LIB_sound/SawOsc.xml +++ b/content/api_en/LIB_sound/SawOsc.xml @@ -9,7 +9,7 @@ Application -../../../images/LIB_sound/SawOsc.png +../../../images/LIB_sound_SawOsc.png -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/SinOsc.xml b/content/api_en/LIB_sound/SinOsc.xml index 30f5cc13d..abec47858 100755 --- a/content/api_en/LIB_sound/SinOsc.xml +++ b/content/api_en/LIB_sound/SinOsc.xml @@ -9,7 +9,7 @@ Application -../../../images/LIB_sound/SinOsc.png +../../../images/LIB_sound_SinOsc.png -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/Sound.xml b/content/api_en/LIB_sound/Sound.xml index 26e8d1b0a..4f17c0696 100644 --- a/content/api_en/LIB_sound/Sound.xml +++ b/content/api_en/LIB_sound/Sound.xml @@ -16,7 +16,7 @@ Sound s; void setup() { size(200, 200); - // Play to sine oscillators with slightly different frequencies for a nice "beat". + // Play two sine oscillators with slightly different frequencies for a nice "beat". SinOsc sin = new SinOsc(this); sin.play(200, 0.2); sin = new SinOsc(this); @@ -38,6 +38,10 @@ void draw() { ]]> + + AudioIn diff --git a/content/api_en/LIB_sound/Sound_list.xml b/content/api_en/LIB_sound/Sound_list.xml new file mode 100755 index 000000000..158f3b102 --- /dev/null +++ b/content/api_en/LIB_sound/Sound_list.xml @@ -0,0 +1,27 @@ + + + +Sound.list() + +Sound + +Configuration + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/Sound_volume.xml b/content/api_en/LIB_sound/Sound_volume.xml new file mode 100755 index 000000000..96d9e6700 --- /dev/null +++ b/content/api_en/LIB_sound/Sound_volume.xml @@ -0,0 +1,46 @@ + + + +volume() + +Sound + +Configuration + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/SqrOsc.xml b/content/api_en/LIB_sound/SqrOsc.xml index 5fe8f9244..f4ff7ec2f 100755 --- a/content/api_en/LIB_sound/SqrOsc.xml +++ b/content/api_en/LIB_sound/SqrOsc.xml @@ -9,7 +9,7 @@ Application -../../../images/LIB_sound/SqrOsc.png +../../../images/LIB_sound_SqrOsc.png -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/TriOsc.xml b/content/api_en/LIB_sound/TriOsc.xml index bb3ad11d4..d504de89a 100755 --- a/content/api_en/LIB_sound/TriOsc.xml +++ b/content/api_en/LIB_sound/TriOsc.xml @@ -9,7 +9,7 @@ Application -../../../images/LIB_sound/TriOsc.png +../../../images/LIB_sound_TriOsc.png -1.0 - -Object - -Library - diff --git a/content/api_media/LIB_sound/Pulse.png b/content/api_media/LIB_sound_Pulse.png similarity index 100% rename from content/api_media/LIB_sound/Pulse.png rename to content/api_media/LIB_sound_Pulse.png diff --git a/content/api_media/LIB_sound/SawOsc.png b/content/api_media/LIB_sound_SawOsc.png similarity index 100% rename from content/api_media/LIB_sound/SawOsc.png rename to content/api_media/LIB_sound_SawOsc.png diff --git a/content/api_media/LIB_sound/SinOsc.png b/content/api_media/LIB_sound_SinOsc.png similarity index 100% rename from content/api_media/LIB_sound/SinOsc.png rename to content/api_media/LIB_sound_SinOsc.png diff --git a/content/api_media/LIB_sound/SqrOsc.png b/content/api_media/LIB_sound_SqrOsc.png similarity index 100% rename from content/api_media/LIB_sound/SqrOsc.png rename to content/api_media/LIB_sound_SqrOsc.png diff --git a/content/api_media/LIB_sound/TriOsc.png b/content/api_media/LIB_sound_TriOsc.png similarity index 100% rename from content/api_media/LIB_sound/TriOsc.png rename to content/api_media/LIB_sound_TriOsc.png From de87a36aa0e5cc625cba66ea06fdcd56623727d8 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Sat, 11 Aug 2018 19:51:49 +0200 Subject: [PATCH 500/772] Tidy up Sound library Noise generator XMLs --- content/api_en/LIB_sound/BrownNoise.xml | 59 -------------------- content/api_en/LIB_sound/BrownNoise_add.xml | 15 ----- content/api_en/LIB_sound/BrownNoise_amp.xml | 20 ------- content/api_en/LIB_sound/BrownNoise_pan.xml | 15 ----- content/api_en/LIB_sound/BrownNoise_play.xml | 15 ----- content/api_en/LIB_sound/BrownNoise_set.xml | 15 ----- content/api_en/LIB_sound/BrownNoise_stop.xml | 15 ----- content/api_en/LIB_sound/PinkNoise.xml | 59 -------------------- content/api_en/LIB_sound/PinkNoise_add.xml | 15 ----- content/api_en/LIB_sound/PinkNoise_amp.xml | 20 ------- content/api_en/LIB_sound/PinkNoise_pan.xml | 15 ----- content/api_en/LIB_sound/PinkNoise_play.xml | 15 ----- content/api_en/LIB_sound/PinkNoise_set.xml | 15 ----- content/api_en/LIB_sound/PinkNoise_stop.xml | 15 ----- content/api_en/LIB_sound/WhiteNoise.xml | 59 -------------------- content/api_en/LIB_sound/WhiteNoise_add.xml | 15 ----- content/api_en/LIB_sound/WhiteNoise_amp.xml | 20 ------- content/api_en/LIB_sound/WhiteNoise_pan.xml | 15 ----- content/api_en/LIB_sound/WhiteNoise_play.xml | 15 ----- content/api_en/LIB_sound/WhiteNoise_set.xml | 15 ----- content/api_en/LIB_sound/WhiteNoise_stop.xml | 15 ----- 21 files changed, 462 deletions(-) diff --git a/content/api_en/LIB_sound/BrownNoise.xml b/content/api_en/LIB_sound/BrownNoise.xml index 72c8fe79b..f8b95cac7 100755 --- a/content/api_en/LIB_sound/BrownNoise.xml +++ b/content/api_en/LIB_sound/BrownNoise.xml @@ -29,66 +29,7 @@ void draw() { - - - - - - - - -play() -Start the generator - - - -stop() -Stop the generator - - - -amp() -Change the amplitude/volume of the generator - - - -add() -Offset the output of the generator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -BrownNoise(parent) - - - -parent -PApplet: typically use "this" - - - - - - - -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/BrownNoise_add.xml b/content/api_en/LIB_sound/BrownNoise_add.xml index ec5550347..d00869e8d 100755 --- a/content/api_en/LIB_sound/BrownNoise_add.xml +++ b/content/api_en/LIB_sound/BrownNoise_add.xml @@ -35,19 +35,4 @@ void draw() { The .add() method is useful for modulating other audio signals. ]]> - -noise.add(add) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/BrownNoise_amp.xml b/content/api_en/LIB_sound/BrownNoise_amp.xml index edb349c7d..4264c2f4b 100755 --- a/content/api_en/LIB_sound/BrownNoise_amp.xml +++ b/content/api_en/LIB_sound/BrownNoise_amp.xml @@ -35,24 +35,4 @@ void draw() { Changes the amplitude/volume of the noise generator. Allowed values are between 0.0 and 1.0. ]]> - -noise.amp(vol) - - - - - - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/BrownNoise_pan.xml b/content/api_en/LIB_sound/BrownNoise_pan.xml index 71043d021..6644626fd 100755 --- a/content/api_en/LIB_sound/BrownNoise_pan.xml +++ b/content/api_en/LIB_sound/BrownNoise_pan.xml @@ -36,19 +36,4 @@ void draw() { Pan the generator in a stereo panorama. -1.0 pans to the left channel and 1.0 to the right channel. ]]> - -noise.pan(pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/BrownNoise_play.xml b/content/api_en/LIB_sound/BrownNoise_play.xml index 9a1c30f40..915d8cfcb 100755 --- a/content/api_en/LIB_sound/BrownNoise_play.xml +++ b/content/api_en/LIB_sound/BrownNoise_play.xml @@ -34,19 +34,4 @@ void draw() { Starts the Brown Noise generator. ]]> - -noise.play() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/BrownNoise_set.xml b/content/api_en/LIB_sound/BrownNoise_set.xml index 1ace27281..a24a1c3ef 100755 --- a/content/api_en/LIB_sound/BrownNoise_set.xml +++ b/content/api_en/LIB_sound/BrownNoise_set.xml @@ -41,19 +41,4 @@ void mousePressed() { Sets amplitude, add and pan position with one method. ]]> - -noise.set(amp, add, pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/BrownNoise_stop.xml b/content/api_en/LIB_sound/BrownNoise_stop.xml index 849ca5f8d..6111b73ae 100755 --- a/content/api_en/LIB_sound/BrownNoise_stop.xml +++ b/content/api_en/LIB_sound/BrownNoise_stop.xml @@ -38,19 +38,4 @@ void mousePressed() { Stops the Brown Noise generator. ]]> - -noise.stop() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise.xml b/content/api_en/LIB_sound/PinkNoise.xml index 59f26ae9a..fd74f29e5 100755 --- a/content/api_en/LIB_sound/PinkNoise.xml +++ b/content/api_en/LIB_sound/PinkNoise.xml @@ -29,66 +29,7 @@ void draw() { - - - - - - - - -play() -Start the generator - - - -stop() -Stop the generator - - - -amp() -Change the amplitude/volume of the generator - - - -add() -Offset the output of the generator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -WhiteNoise(parent) - - - -parent -PApplet: typically use "this" - - - - - - - -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/PinkNoise_add.xml b/content/api_en/LIB_sound/PinkNoise_add.xml index 999b05183..28de64b97 100755 --- a/content/api_en/LIB_sound/PinkNoise_add.xml +++ b/content/api_en/LIB_sound/PinkNoise_add.xml @@ -35,19 +35,4 @@ void draw() { The .add() method is useful for modulating other audio signals. ]]> - -noise.add(add) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise_amp.xml b/content/api_en/LIB_sound/PinkNoise_amp.xml index 14e8a8745..67e87cc56 100755 --- a/content/api_en/LIB_sound/PinkNoise_amp.xml +++ b/content/api_en/LIB_sound/PinkNoise_amp.xml @@ -35,24 +35,4 @@ void draw() { Changes the amplitude/volume of the noise generator. Allowed values are between 0.0 and 1.0. ]]> - -noise.amp(vol) - - - - - - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise_pan.xml b/content/api_en/LIB_sound/PinkNoise_pan.xml index d786b649b..10bb0cf09 100755 --- a/content/api_en/LIB_sound/PinkNoise_pan.xml +++ b/content/api_en/LIB_sound/PinkNoise_pan.xml @@ -36,19 +36,4 @@ void draw() { Pan the generator in a stereo panorama. -1.0 pans to the left channel and 1.0 to the right channel. ]]> - -noise.pan(pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise_play.xml b/content/api_en/LIB_sound/PinkNoise_play.xml index 9cf795d7d..c40593f4d 100755 --- a/content/api_en/LIB_sound/PinkNoise_play.xml +++ b/content/api_en/LIB_sound/PinkNoise_play.xml @@ -34,19 +34,4 @@ void draw() { Starts the Pink Noise generator. ]]> - -noise.play() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise_set.xml b/content/api_en/LIB_sound/PinkNoise_set.xml index ff84919dc..9914d239f 100755 --- a/content/api_en/LIB_sound/PinkNoise_set.xml +++ b/content/api_en/LIB_sound/PinkNoise_set.xml @@ -41,19 +41,4 @@ void mousePressed() { Sets amplitude, add and pan position with one method. ]]> - -noise.set(amp, add, pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/PinkNoise_stop.xml b/content/api_en/LIB_sound/PinkNoise_stop.xml index 2e0db52be..f9bc7dca5 100755 --- a/content/api_en/LIB_sound/PinkNoise_stop.xml +++ b/content/api_en/LIB_sound/PinkNoise_stop.xml @@ -38,19 +38,4 @@ void mousePressed() { Stops the Pink Noise generator. ]]> - -noise.stop() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise.xml b/content/api_en/LIB_sound/WhiteNoise.xml index 0f67dfb46..ba8d252c2 100755 --- a/content/api_en/LIB_sound/WhiteNoise.xml +++ b/content/api_en/LIB_sound/WhiteNoise.xml @@ -29,66 +29,7 @@ void draw() { - - - - - - - - -play() -Start the generator - - - -stop() -Stop the generator - - - -amp() -Change the amplitude/volume of the generator - - - -add() -Offset the output of the generator by given value - - - -pan() -Move the sound in a stereo panorama - - - -set() -Set multiple parameters at once - - - -WhiteNoise(parent) - - - -parent -PApplet: typically use "this" - - - - - - - -1.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/WhiteNoise_add.xml b/content/api_en/LIB_sound/WhiteNoise_add.xml index 1876dc1ab..a6da5916b 100755 --- a/content/api_en/LIB_sound/WhiteNoise_add.xml +++ b/content/api_en/LIB_sound/WhiteNoise_add.xml @@ -34,19 +34,4 @@ void draw() { The .add() method is useful for modulating other audio signals. ]]> - -noise.add(add) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise_amp.xml b/content/api_en/LIB_sound/WhiteNoise_amp.xml index 98ea36777..83eef598a 100755 --- a/content/api_en/LIB_sound/WhiteNoise_amp.xml +++ b/content/api_en/LIB_sound/WhiteNoise_amp.xml @@ -35,24 +35,4 @@ void draw() { Changes the amplitude/volume of the noise generator. Allowed values are between 0.0 and 1.0. ]]> - -noise.amp(vol) - - - - - - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise_pan.xml b/content/api_en/LIB_sound/WhiteNoise_pan.xml index 3bcfab0ec..ffb68b7cf 100755 --- a/content/api_en/LIB_sound/WhiteNoise_pan.xml +++ b/content/api_en/LIB_sound/WhiteNoise_pan.xml @@ -36,19 +36,4 @@ void draw() { Pan the generator in a stereo panorama. -1.0 pans to the left channel and 1.0 to the right channel. ]]> - -noise.pan(pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise_play.xml b/content/api_en/LIB_sound/WhiteNoise_play.xml index c25d29486..9dd12d80d 100755 --- a/content/api_en/LIB_sound/WhiteNoise_play.xml +++ b/content/api_en/LIB_sound/WhiteNoise_play.xml @@ -34,19 +34,4 @@ void draw() { Starts the White Noise generator. ]]> - -noise.play() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise_set.xml b/content/api_en/LIB_sound/WhiteNoise_set.xml index a4d965129..6ecf74ca1 100755 --- a/content/api_en/LIB_sound/WhiteNoise_set.xml +++ b/content/api_en/LIB_sound/WhiteNoise_set.xml @@ -41,19 +41,4 @@ void mousePressed() { Sets amplitude, add and pan position with one method. ]]> - -noise.set(amp, add, pos) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/WhiteNoise_stop.xml b/content/api_en/LIB_sound/WhiteNoise_stop.xml index a5b932fd8..783fa8a36 100755 --- a/content/api_en/LIB_sound/WhiteNoise_stop.xml +++ b/content/api_en/LIB_sound/WhiteNoise_stop.xml @@ -38,19 +38,4 @@ void mousePressed() { Stops the White Noise generator. ]]> - -noise.stop() - - - - - - -1.0 - -Method - -Library - - From 9d237445d66873f8de0691ea6354e95369e8f564 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Sun, 12 Aug 2018 23:11:44 +0200 Subject: [PATCH 501/772] Update Sound library AudioSample docs --- .../api_en/LIB_sound/AudioSample_channels.xml | 40 ++++++++++++++++ .../api_en/LIB_sound/AudioSample_frames.xml | 36 ++++++++++++++ content/api_en/LIB_sound/AudioSample_read.xml | 37 ++++++++++----- .../LIB_sound/AudioSample_sampleRate.xml | 19 +------- .../api_en/LIB_sound/AudioSample_write.xml | 47 +++++++++++++++++++ .../api_en/LIB_sound/SoundFile_channels.xml | 17 +------ content/api_en/LIB_sound/SoundFile_frames.xml | 17 +------ 7 files changed, 153 insertions(+), 60 deletions(-) create mode 100755 content/api_en/LIB_sound/AudioSample_channels.xml create mode 100755 content/api_en/LIB_sound/AudioSample_frames.xml create mode 100755 content/api_en/LIB_sound/AudioSample_write.xml diff --git a/content/api_en/LIB_sound/AudioSample_channels.xml b/content/api_en/LIB_sound/AudioSample_channels.xml new file mode 100755 index 000000000..af430a14d --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_channels.xml @@ -0,0 +1,40 @@ + + + +channels() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_frames.xml b/content/api_en/LIB_sound/AudioSample_frames.xml new file mode 100755 index 000000000..c58a3c077 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_frames.xml @@ -0,0 +1,36 @@ + + + +frames() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_read.xml b/content/api_en/LIB_sound/AudioSample_read.xml index 97e4c7f06..b21fc039a 100755 --- a/content/api_en/LIB_sound/AudioSample_read.xml +++ b/content/api_en/LIB_sound/AudioSample_read.xml @@ -18,24 +18,39 @@ AudioSample sample; void setup() { size(640, 360); background(255); - - // Load a soundfile from the data folder of the sketch and get the sample rate + + // Create a new audiosample sample = new AudioSample(this, 100000, 22050); - println("SampleRate= " + sample.sampleRate() + " Hz"); + + // Read some data from it (the following calls are just for demonstration, + // a freshly initiated audiosample actually contains nothing but zeros) + + // Read the very first frame: + float frame = sample.read(0); + + // Read the entire sample + float[] sampleContent = new float[100000]; + sample.read(sampleContent); + + // Read only a part of the sample data + float[] subSample = new float[50000]; + // Read 500000 frames, starting at frame 30000 + sample.read(30000, subSample, 0, 50000); } void draw() { } - ]]> -write - -1.0 - -Method - -Library + + +AudioSample.frames() + diff --git a/content/api_en/LIB_sound/AudioSample_sampleRate.xml b/content/api_en/LIB_sound/AudioSample_sampleRate.xml index f9b8b163e..b67c1fb85 100755 --- a/content/api_en/LIB_sound/AudioSample_sampleRate.xml +++ b/content/api_en/LIB_sound/AudioSample_sampleRate.xml @@ -19,14 +19,14 @@ void setup() { size(640, 360); background(255); - // Load a soundfile from the data folder of the sketch and get the sample rate + // Create a new audiosample and read its sample rate sample = new AudioSample(this, 100000, 22050); + // This will just return what we set it to ourselves: 22050 println("SampleRate= " + sample.sampleRate() + " Hz"); } void draw() { } - ]]> @@ -34,19 +34,4 @@ void draw() { Returns the sample rate of the audiosample as an int ]]> - -file.sampleRate() - - -int - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/AudioSample_write.xml b/content/api_en/LIB_sound/AudioSample_write.xml new file mode 100755 index 000000000..201bc22fd --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_write.xml @@ -0,0 +1,47 @@ + + + +write() + +Sound Files + + + +Web & Application + + + + + + + + + +AudioSample.read + + diff --git a/content/api_en/LIB_sound/SoundFile_channels.xml b/content/api_en/LIB_sound/SoundFile_channels.xml index 999ca0916..ace503d83 100755 --- a/content/api_en/LIB_sound/SoundFile_channels.xml +++ b/content/api_en/LIB_sound/SoundFile_channels.xml @@ -31,22 +31,7 @@ void draw() { - -file.channels() - - -int - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_frames.xml b/content/api_en/LIB_sound/SoundFile_frames.xml index 3cd815c88..f4a66de1a 100755 --- a/content/api_en/LIB_sound/SoundFile_frames.xml +++ b/content/api_en/LIB_sound/SoundFile_frames.xml @@ -31,22 +31,7 @@ void draw() { - -file.frames() - - -int - - - -1.0 - -Method - -Library - - From eb468b3507f7ddbd37c74c179ae38c2781a12bfe Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Sun, 12 Aug 2018 23:38:49 +0200 Subject: [PATCH 502/772] Add Sound library docs --- content/api_en/LIB_sound/AudioSample.xml | 15 +-- .../api_en/LIB_sound/AudioSample_pause.xml | 51 +++++++++ content/api_en/LIB_sound/SoundFile.xml | 103 ------------------ 3 files changed, 54 insertions(+), 115 deletions(-) create mode 100755 content/api_en/LIB_sound/AudioSample_pause.xml diff --git a/content/api_en/LIB_sound/AudioSample.xml b/content/api_en/LIB_sound/AudioSample.xml index 3c31a428d..463238650 100755 --- a/content/api_en/LIB_sound/AudioSample.xml +++ b/content/api_en/LIB_sound/AudioSample.xml @@ -39,22 +39,13 @@ void draw() { +This class allows you low-level access to an audio buffer to create, access, manipulate and play back sound samples. - -pan() -Move the audiosample in a stereo panorama (only works for mono samples) - +If you want to pre-load your audio sample with an audio file from disk you can do so using the SoundFile subclass. +]]> SoundFile -2.0 - -Object - -Library - diff --git a/content/api_en/LIB_sound/AudioSample_pause.xml b/content/api_en/LIB_sound/AudioSample_pause.xml new file mode 100755 index 000000000..4ff5f59ca --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_pause.xml @@ -0,0 +1,51 @@ + + + +pause() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/SoundFile.xml b/content/api_en/LIB_sound/SoundFile.xml index 9b698dad8..c6eb0d03c 100755 --- a/content/api_en/LIB_sound/SoundFile.xml +++ b/content/api_en/LIB_sound/SoundFile.xml @@ -28,112 +28,9 @@ void draw() { - - - - - - - - -play() -Play the soundfile - - - -loop() -Loop the soundfile - - - -cue() -Set the starting position of the soundfile - - - -jump() -Jump to a specific position in the file while continuing to play - - - -stop() -Stop the soundfile - - - -rate() -Change the playback rate of the soundfile - - - -amp() -Change the amplitude/volume of the player - - - - - -pan() -Move the soundfile in a stereo panorama - - - -set() -Set multiple parameters at once - - - -duration() -Returns the duration of the soundfile - - - -sampleRate() -Returns the sample rate of the soundfile - - - -frames() -Returns the number of frames/samples of the soundfile - - - -channels() -Returns the number of channels of the soundfile - - - -SoundFile(parent, path) - - - -parent -PApplet: typically use "this" - - - -path -Full Path to file or filename for data path - - - - - - - -1.0 - -Object - -Library - From aab09e553830b561a7646b5895c767fe4891885d Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Mon, 13 Aug 2018 16:57:41 +0200 Subject: [PATCH 503/772] Update Sound lib AudioSample and SoundFile XML doc --- content/api_en/LIB_sound/AudioSample_cue.xml | 37 ++++++++++++++++ content/api_en/LIB_sound/AudioSample_jump.xml | 36 +++++++++++++++ .../api_en/LIB_sound/AudioSample_pause.xml | 4 +- content/api_en/LIB_sound/SoundFile_cue.xml | 18 +------- content/api_en/LIB_sound/SoundFile_jump.xml | 18 +------- content/api_en/LIB_sound/SoundFile_pause.xml | 44 +++++++++++++++++++ content/api_en/LIB_sound/SoundFile_play.xml | 18 +------- 7 files changed, 122 insertions(+), 53 deletions(-) create mode 100755 content/api_en/LIB_sound/AudioSample_cue.xml create mode 100755 content/api_en/LIB_sound/AudioSample_jump.xml create mode 100755 content/api_en/LIB_sound/SoundFile_pause.xml diff --git a/content/api_en/LIB_sound/AudioSample_cue.xml b/content/api_en/LIB_sound/AudioSample_cue.xml new file mode 100755 index 000000000..c4eae7ace --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_cue.xml @@ -0,0 +1,37 @@ + + + +cue() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_jump.xml b/content/api_en/LIB_sound/AudioSample_jump.xml new file mode 100755 index 000000000..290eb7cfd --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_jump.xml @@ -0,0 +1,36 @@ + + + +jump() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_pause.xml b/content/api_en/LIB_sound/AudioSample_pause.xml index 4ff5f59ca..67ece9ab7 100755 --- a/content/api_en/LIB_sound/AudioSample_pause.xml +++ b/content/api_en/LIB_sound/AudioSample_pause.xml @@ -28,7 +28,7 @@ void setup() { // Create the audiosample based on the data, set framerate to play 200 oscillations/second sample = new AudioSample(this, sinewave, 200 * resolution); - sample.loop(); + sample.play(); } void draw() { @@ -38,7 +38,7 @@ void mousePressed() { if (sample.isPlaying()) { sample.pause(); } else { - sample.loop(); + sample.play(); } } ]]> diff --git a/content/api_en/LIB_sound/SoundFile_cue.xml b/content/api_en/LIB_sound/SoundFile_cue.xml index b776d4657..bded003ce 100755 --- a/content/api_en/LIB_sound/SoundFile_cue.xml +++ b/content/api_en/LIB_sound/SoundFile_cue.xml @@ -27,27 +27,11 @@ void setup() { void draw() { } - ]]> - -file.cue(second) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_jump.xml b/content/api_en/LIB_sound/SoundFile_jump.xml index 195148440..23bb57fa1 100755 --- a/content/api_en/LIB_sound/SoundFile_jump.xml +++ b/content/api_en/LIB_sound/SoundFile_jump.xml @@ -26,27 +26,11 @@ void setup() { void draw() { } - ]]> - -file.jump(second) - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_pause.xml b/content/api_en/LIB_sound/SoundFile_pause.xml new file mode 100755 index 000000000..abfe629ae --- /dev/null +++ b/content/api_en/LIB_sound/SoundFile_pause.xml @@ -0,0 +1,44 @@ + + + +pause() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/SoundFile_play.xml b/content/api_en/LIB_sound/SoundFile_play.xml index f1dff831d..2a27f48f7 100755 --- a/content/api_en/LIB_sound/SoundFile_play.xml +++ b/content/api_en/LIB_sound/SoundFile_play.xml @@ -26,27 +26,11 @@ void setup() { void draw() { } - ]]> - -file.play() - - - - - - -1.0 - -Method - -Library - - From 9cc143c7ae5e6bbfae9c43dc0daa42cef11ad619 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Mon, 13 Aug 2018 17:25:43 +0200 Subject: [PATCH 504/772] Add new Sound lib methods --- .../api_en/LIB_sound/AudioSample_duration.xml | 38 +++++++++++++++ content/api_en/LIB_sound/AudioSample_pan.xml | 38 +++++++++++++++ content/api_en/LIB_sound/AudioSample_rate.xml | 47 +++++++++++++++++++ .../api_en/LIB_sound/AudioSample_resize.xml | 40 ++++++++++++++++ .../api_en/LIB_sound/SoundFile_duration.xml | 18 +------ content/api_en/LIB_sound/SoundFile_pan.xml | 17 +------ content/api_en/LIB_sound/SoundFile_rate.xml | 20 +------- 7 files changed, 167 insertions(+), 51 deletions(-) create mode 100755 content/api_en/LIB_sound/AudioSample_duration.xml create mode 100755 content/api_en/LIB_sound/AudioSample_pan.xml create mode 100755 content/api_en/LIB_sound/AudioSample_rate.xml create mode 100755 content/api_en/LIB_sound/AudioSample_resize.xml diff --git a/content/api_en/LIB_sound/AudioSample_duration.xml b/content/api_en/LIB_sound/AudioSample_duration.xml new file mode 100755 index 000000000..b083d3e47 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_duration.xml @@ -0,0 +1,38 @@ + + + +duration() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_pan.xml b/content/api_en/LIB_sound/AudioSample_pan.xml new file mode 100755 index 000000000..7b2b176db --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_pan.xml @@ -0,0 +1,38 @@ + + + +pan() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_rate.xml b/content/api_en/LIB_sound/AudioSample_rate.xml new file mode 100755 index 000000000..fbe8dc446 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_rate.xml @@ -0,0 +1,47 @@ + + + +rate() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_resize.xml b/content/api_en/LIB_sound/AudioSample_resize.xml new file mode 100755 index 000000000..d326abdc6 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_resize.xml @@ -0,0 +1,40 @@ + + + +resize() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/SoundFile_duration.xml b/content/api_en/LIB_sound/SoundFile_duration.xml index 1b0001e75..969d68a02 100755 --- a/content/api_en/LIB_sound/SoundFile_duration.xml +++ b/content/api_en/LIB_sound/SoundFile_duration.xml @@ -26,27 +26,11 @@ void setup() { void draw() { } - ]]> - -file.duration() - - -float - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_pan.xml b/content/api_en/LIB_sound/SoundFile_pan.xml index 5ffd87f98..44e6f2746 100755 --- a/content/api_en/LIB_sound/SoundFile_pan.xml +++ b/content/api_en/LIB_sound/SoundFile_pan.xml @@ -32,22 +32,7 @@ void draw() { - -file.pan() - - - - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_rate.xml b/content/api_en/LIB_sound/SoundFile_rate.xml index d986e0ca7..953ca579d 100755 --- a/content/api_en/LIB_sound/SoundFile_rate.xml +++ b/content/api_en/LIB_sound/SoundFile_rate.xml @@ -21,33 +21,17 @@ void setup() { // Load a soundfile from the data folder of the sketch and play it back double the speed file = new SoundFile(this, "sample.mp3"); - file.play(); + file.loop(); file.rate(2); } void draw() { } - ]]> - -file.rate() - - - - - - -1.0 - -Method - -Library - - From 2989a0e0f763d927f62922cd1e9d4b0ed0b9459e Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Mon, 13 Aug 2018 18:01:17 +0200 Subject: [PATCH 505/772] Add new Sound library configuration class XML --- content/api_en/LIB_sound/AudioSample_play.xml | 40 +++++++++++++++++++ .../api_en/LIB_sound/AudioSample_write.xml | 8 ++-- content/api_en/LIB_sound/FFT_analyze.xml | 24 +---------- content/api_en/LIB_sound/SoundFile_play.xml | 4 +- .../api_en/LIB_sound/Sound_inputDevice.xml | 33 +++++++++++++++ content/api_en/LIB_sound/Sound_list.xml | 1 + .../api_en/LIB_sound/Sound_outputDevice.xml | 33 +++++++++++++++ content/api_en/LIB_sound/Sound_sampleRate.xml | 31 ++++++++++++++ 8 files changed, 147 insertions(+), 27 deletions(-) create mode 100755 content/api_en/LIB_sound/AudioSample_play.xml create mode 100755 content/api_en/LIB_sound/Sound_inputDevice.xml create mode 100755 content/api_en/LIB_sound/Sound_outputDevice.xml create mode 100755 content/api_en/LIB_sound/Sound_sampleRate.xml diff --git a/content/api_en/LIB_sound/AudioSample_play.xml b/content/api_en/LIB_sound/AudioSample_play.xml new file mode 100755 index 000000000..d1584ae38 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_play.xml @@ -0,0 +1,40 @@ + + + +play() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_write.xml b/content/api_en/LIB_sound/AudioSample_write.xml index 201bc22fd..e8cfbeb4c 100755 --- a/content/api_en/LIB_sound/AudioSample_write.xml +++ b/content/api_en/LIB_sound/AudioSample_write.xml @@ -24,9 +24,11 @@ void setup() { // A freshly initiated audiosample contains nothing but zeros, so let's // write some data to it. - - // Write a random number to the first frame - sample.write(0, rand()); + for (int i = 0; i < sample.frames(); i++) { + // Random numbers will make it sound like white noise + sample.write(i, random(-100, 100)); + } + sample.play(); } void draw() { diff --git a/content/api_en/LIB_sound/FFT_analyze.xml b/content/api_en/LIB_sound/FFT_analyze.xml index 6c05e7396..4bd4c1bfa 100755 --- a/content/api_en/LIB_sound/FFT_analyze.xml +++ b/content/api_en/LIB_sound/FFT_analyze.xml @@ -41,34 +41,14 @@ void draw() { for(int i = 0; i < bands; i++){ // The result of the FFT is normalized // draw the line for frequency band i scaling it up by 5 to get more amplitude. - line( i, height, i, height - spectrum[i]*height*5 ); + line(i, height, i, height - spectrum[i]*height*5 ); } } ]]> - -amp.analyze() - - - - - - - -float - - - -1.0 - -Method - -Library - - diff --git a/content/api_en/LIB_sound/SoundFile_play.xml b/content/api_en/LIB_sound/SoundFile_play.xml index 2a27f48f7..f3bb129ef 100755 --- a/content/api_en/LIB_sound/SoundFile_play.xml +++ b/content/api_en/LIB_sound/SoundFile_play.xml @@ -22,7 +22,7 @@ void setup() { // Load a soundfile from the /data folder of the sketch and play it back file = new SoundFile(this, "sample.mp3"); file.play(); -} +} void draw() { } @@ -30,7 +30,7 @@ void draw() { diff --git a/content/api_en/LIB_sound/Sound_inputDevice.xml b/content/api_en/LIB_sound/Sound_inputDevice.xml new file mode 100755 index 000000000..e49c0535a --- /dev/null +++ b/content/api_en/LIB_sound/Sound_inputDevice.xml @@ -0,0 +1,33 @@ + + + +inputDevice() + +Sound + +Configuration + +Web & Application + + + + + + + + + +AudioIn + + + diff --git a/content/api_en/LIB_sound/Sound_list.xml b/content/api_en/LIB_sound/Sound_list.xml index 158f3b102..80644eb01 100755 --- a/content/api_en/LIB_sound/Sound_list.xml +++ b/content/api_en/LIB_sound/Sound_list.xml @@ -22,6 +22,7 @@ void setup() { diff --git a/content/api_en/LIB_sound/Sound_outputDevice.xml b/content/api_en/LIB_sound/Sound_outputDevice.xml new file mode 100755 index 000000000..3f26b40eb --- /dev/null +++ b/content/api_en/LIB_sound/Sound_outputDevice.xml @@ -0,0 +1,33 @@ + + + +outputDevice() + +Sound + +Configuration + +Web & Application + + + + + + + + + +AudioIn + + + diff --git a/content/api_en/LIB_sound/Sound_sampleRate.xml b/content/api_en/LIB_sound/Sound_sampleRate.xml new file mode 100755 index 000000000..0e37ce728 --- /dev/null +++ b/content/api_en/LIB_sound/Sound_sampleRate.xml @@ -0,0 +1,31 @@ + + +sampleRate() + +Sound + +Configuration + +Application + + + + + + + + + From a7410f6c539ef7bc08c6a2b86386e21a3fff0c86 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Tue, 14 Aug 2018 13:59:41 +0200 Subject: [PATCH 506/772] Fix links to processing wiki --- content/api_en/environment/index.html | 6 +++--- content/api_en/include/String.xml | 2 +- content/api_en/include/equality.xml | 2 +- content/examples/Topics/Advanced Data/Threads/Threads.pde | 1 - content/static/download.html | 6 +++--- content/static/tutorials/android/index.html | 2 +- content/static/tutorials/gettingstarted/index.html | 2 +- subscribe/index.php | 6 +++--- templates/template.cover.html | 2 +- templates/template.nav.php | 2 +- todo-web.txt | 2 +- 11 files changed, 16 insertions(+), 17 deletions(-) diff --git a/content/api_en/environment/index.html b/content/api_en/environment/index.html index 4d2e038d2..5d92731eb 100644 --- a/content/api_en/environment/index.html +++ b/content/api_en/environment/index.html @@ -531,8 +531,8 @@
        Android Mode

        Sketches written in this mode can be exported to run on Android phones and tablets. - This mode is documented on the - Processing for Android page of the Processing Wiki. To add this mode, click on + This mode is documented on the + Processing for Android page. To add this mode, click on the mode button in the upper-right corner of the PDE and select "Add Mode..."

        --> @@ -574,7 +574,7 @@

        - The Export information and + The Export information and Tips page on the Processing Wiki covers the details of exporting Applications from Java mode.

        diff --git a/content/api_en/include/String.xml b/content/api_en/include/String.xml index e4c4a9625..130d63116 100755 --- a/content/api_en/include/String.xml +++ b/content/api_en/include/String.xml @@ -46,7 +46,7 @@ println(quoted); // This one has "quotes" String includes methods for examining individual characters, comparing strings, searching strings, extracting parts of strings, and for converting an entire string uppercase and lowercase. Strings are always defined inside double quotes ("Abc"), and characters are always defined inside single quotes ('A').

        -To compare the contents of two Strings, use the equals() method, as in if (a.equals(b)), instead of if (a == b). A String is an Object, so comparing them with the == operator only compares whether both Strings are stored in the same memory location. Using the equals() method will ensure that the actual contents are compared. (The troubleshooting reference has a longer explanation.)
        +To compare the contents of two Strings, use the equals() method, as in if (a.equals(b)), instead of if (a == b). A String is an Object, so comparing them with the == operator only compares whether both Strings are stored in the same memory location. Using the equals() method will ensure that the actual contents are compared. (The troubleshooting reference has a longer explanation.)

        Because a String is defined between double quotation marks, to include such marks within the String itself you must use the \ (backslash) character. (See the third example above.) This is known as an escape sequence. Other escape sequences include \t for the tab character and \n for new line. Because backslash is the escape character, to include a single backslash within a String, you must use two consecutive backslashes, as in: \\

        diff --git a/content/api_en/include/equality.xml b/content/api_en/include/equality.xml index 4ddfbd69a..a8bbda074 100755 --- a/content/api_en/include/equality.xml +++ b/content/api_en/include/equality.xml @@ -22,7 +22,7 @@ if (a == b) {
        -Note that when comparing String objects, you must use the equals() method instead of == to compare their contents. See the reference for String or the troubleshooting note for more explanation. +Note that when comparing String objects, you must use the equals() method instead of == to compare their contents. See the reference for String or the troubleshooting note for more explanation. ]]>
        diff --git a/content/examples/Topics/Advanced Data/Threads/Threads.pde b/content/examples/Topics/Advanced Data/Threads/Threads.pde index f43bc3d2e..f7714a10e 100644 --- a/content/examples/Topics/Advanced Data/Threads/Threads.pde +++ b/content/examples/Topics/Advanced Data/Threads/Threads.pde @@ -9,7 +9,6 @@ * the code inside the function passed to thread() will operate * in the background. * - * For more about threads, see: http://wiki.processing.org/w/Threading */ // This sketch will load data from all of these URLs in a separate thread diff --git a/content/static/download.html b/content/static/download.html index ed0664dc1..3057816c4 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -27,8 +27,8 @@

        Download Processing. Process
        Read about the changes in 3.0. The list of revisions covers the differences between releases in detail. @@ -375,7 +375,7 @@

        Pre-Releases

        - Processing is Open Source Software. The PDE (Processing Development Environment) is released under the GNU GPL (General Public License). The export libraries (also known as 'core') are released under the GNU LGPL (Lesser General Public License). There's more information about Processing and Open Source in the FAQ and more information about the GNU GPL and GNU LGPL at opensource.org. Please support Processing! + Processing is Open Source Software. The PDE (Processing Development Environment) is released under the GNU GPL (General Public License). The export libraries (also known as 'core') are released under the GNU LGPL (Lesser General Public License). There's more information about Processing and Open Source in the FAQ and more information about the GNU GPL and GNU LGPL at opensource.org. Please support Processing!
        diff --git a/content/static/tutorials/android/index.html b/content/static/tutorials/android/index.html index f339fd9ba..75a355092 100644 --- a/content/static/tutorials/android/index.html +++ b/content/static/tutorials/android/index.html @@ -121,7 +121,7 @@

        Step Three: Running the App on a Device

        Some helpful tips when you’re working with Processing & Android:

        - I know I’ve said this before, but be patient. Canceling a process (ie. the emulator load or a device compile) can cause problems. If you do this inadvertently, you’re best off restarting Processing.

        -

        - Make sure to check out the Processing Android Wiki, where you’ll find some troubleshooting advice, and some tips on how to get your sketches working properly on your device.

        +

        - Make sure to check out the Processing Android Wiki, where you’ll find some troubleshooting advice, and some tips on how to get your sketches working properly on your device.

        This tutorial is for Processing version 2.0+. If you see any errors or have comments, please let us know. This tutorial is adapted from 'Processing & Android: Mobile App Development Made (Very) Easy' by Jer Thorp

        diff --git a/content/static/tutorials/gettingstarted/index.html b/content/static/tutorials/gettingstarted/index.html index 5def1e1a5..2ebe7335b 100644 --- a/content/static/tutorials/gettingstarted/index.html +++ b/content/static/tutorials/gettingstarted/index.html @@ -34,7 +34,7 @@

        Casey Reas and Ben Fry

        ./processing
      -

      With any luck, the main Processing window will now be visible. Everyone's setup is different, so if the program didn't start, or you're otherwise stuck, visit the troubleshooting page for possible solutions.

      +

      With any luck, the main Processing window will now be visible. Everyone's setup is different, so if the program didn't start, or you're otherwise stuck, visit the troubleshooting page for possible solutions.

      diff --git a/subscribe/index.php b/subscribe/index.php index 09b856f39..a684a7fc8 100755 --- a/subscribe/index.php +++ b/subscribe/index.php @@ -94,9 +94,9 @@ Shop

      »Forum
      »GitHub
      - »Issues
      - »Wiki
      - »FAQ
      + »Issues
      + »Wiki
      + »FAQ
      »Twitter
      »Facebook

      diff --git a/templates/template.cover.html b/templates/template.cover.html index 14c2cf8ab..4fb734230 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -124,7 +124,7 @@

      T-shirts!

      Processing on GitHub to read instructions for downloading the code, building from the source, - reporting and tracking bugs, and + reporting and tracking bugs, and creating libraries and tools.

      diff --git a/templates/template.nav.php b/templates/template.nav.php index 415d91811..878ce4580 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -33,7 +33,7 @@ 'People' => array('/people/', 2), 'Foundation' => array('/foundation/', 2), - 'FAQ' => array('http://wiki.processing.org/w/FAQ', 1), + 'FAQ' => array('https://github.com/processing/processing/wiki', 1), ); diff --git a/todo-web.txt b/todo-web.txt index ef1c459d5..9ce53ba0b 100644 --- a/todo-web.txt +++ b/todo-web.txt @@ -83,7 +83,7 @@ Shop > Twitter > Forum -> Wiki +> Wiki > Issues > GitHub From 99f5e3ae8944f904759bba782b1eb5a5efdd55d7 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Wed, 15 Aug 2018 14:24:59 +0200 Subject: [PATCH 507/772] Add new Sound library isPlaying methods --- .../LIB_sound/AudioSample_isPlaying.xml | 45 +++++++++++++++++++ .../api_en/LIB_sound/SoundFile_isPlaying.xml | 45 +++++++++++++++++++ .../api_en/LIB_sound/Sound_inputDevice.xml | 3 ++ 3 files changed, 93 insertions(+) create mode 100755 content/api_en/LIB_sound/AudioSample_isPlaying.xml create mode 100755 content/api_en/LIB_sound/SoundFile_isPlaying.xml diff --git a/content/api_en/LIB_sound/AudioSample_isPlaying.xml b/content/api_en/LIB_sound/AudioSample_isPlaying.xml new file mode 100755 index 000000000..9a7ab422b --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_isPlaying.xml @@ -0,0 +1,45 @@ + + + +isPlaying() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/SoundFile_isPlaying.xml b/content/api_en/LIB_sound/SoundFile_isPlaying.xml new file mode 100755 index 000000000..fb5ec3082 --- /dev/null +++ b/content/api_en/LIB_sound/SoundFile_isPlaying.xml @@ -0,0 +1,45 @@ + + + +isPlaying() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/Sound_inputDevice.xml b/content/api_en/LIB_sound/Sound_inputDevice.xml index e49c0535a..e09498aac 100755 --- a/content/api_en/LIB_sound/Sound_inputDevice.xml +++ b/content/api_en/LIB_sound/Sound_inputDevice.xml @@ -18,6 +18,9 @@ void setup() { // Create a Sound object and select the second sound device (device ids start at 0) for input Sound s = new Sound(this); s.inputDevice(1); + + // Now get the first audio input channel from that sound device (ids again start at 0) + AudioIn in = new AudioIn(this, 0); } ]]> From 8ef2d07fd22162f298b90d9837744ace9650adea Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Wed, 15 Aug 2018 18:20:18 +0200 Subject: [PATCH 508/772] Switch Sound library reference repository back to processing github --- generate/reference.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate/reference.php b/generate/reference.php index 1f9f27b67..5e2a7532c 100644 --- a/generate/reference.php +++ b/generate/reference.php @@ -40,7 +40,7 @@ function out($output) { $soundRepoPath = "{$path}../processing-sound"; //$shell_output = shell_exec("cd $soundRepoPath && /usr/bin/git pull https://github.com/processing/processing-sound/ 2>&1"); // clone new processing-sound library from work-in-progress repository instead -$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/kevinstadler/processing-sound.git . 2>&1"); +$shell_output = shell_exec("rm -rf $soundRepoPath && mkdir $soundRepoPath && cd $soundRepoPath && /usr/bin/git clone https://github.com/processing/processing-sound.git . 2>&1"); out($shell_output); out("---------------"); From 141a96bd1372fd1dddce8fbace6ebbeb83849266 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 17 Aug 2018 20:48:17 +0200 Subject: [PATCH 509/772] Update Sound library index.html with new classes --- content/api_en/LIB_sound/index.html | 146 ++++++++++++++-------------- 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/content/api_en/LIB_sound/index.html b/content/api_en/LIB_sound/index.html index 007b42f79..5bee0974e 100755 --- a/content/api_en/LIB_sound/index.html +++ b/content/api_en/LIB_sound/index.html @@ -1,71 +1,75 @@ - -

      Sound

      - -
      -

      - The new Sound library for Processing 3 provides a simple way to work with audio. It can play, analyze, and synthesize sound. The library comes with a collection of oscillators for basic wave forms, a variety of noise generators, and effects and filters to alter sound files and other generated sounds. The syntax is minimal to make it easy to patch one sound object into another. -

      -

      - The source code is available on the processing-sound GitHub repository. Please report bugs here. This library is only compatible with Processing 3.0+. -

      - -
      - -
      -

      - - I/O -

      - AudioDevice
      - AudioIn
      -

      - - Audio Files - -

      - SoundFile
      -

      - - Effects - -

      - LowPass
      - HighPass
      - BandPass
      - Delay
      - Reverb
      -

      - - Analysis -

      - Amplitude
      - FFT
      -

      - -

      -
      - -
      -

      - Noise -

      - WhiteNoise
      - PinkNoise
      - BrownNoise
      -

      - - Oscillators -

      - SinOsc
      - SawOsc
      - SqrOsc
      - TriOsc
      - Pulse
      -

      - - Envelopes -

      - Env
      -

      -

      -
      + +

      Sound

      + +
      +

      + The new Sound library for Processing 3 provides a simple way to work with audio. It can play, analyze, and synthesize sound. It provides a collection of oscillators for basic wave forms, a variety of noise generators, and effects and filters to play and alter sound files and other generated sounds. The syntax is minimal to make it easy to patch one sound object into another. The library also comes with example sketches covering many use cases to help you get started. +

      +

      + The source code is available on the processing-sound GitHub repository. Please report bugs here. This library is only compatible with Processing 3.0+. +

      + +
      + +
      +

      + + Configuration +

      + Sound
      +

      + + I/O +

      + AudioIn
      +

      + + Sampling +

      + SoundFile
      + AudioSample
      +

      + + Effects + +

      + LowPass
      + HighPass
      + BandPass
      + Delay
      + Reverb
      +

      + +

      +
      + +
      +

      + Noise +

      + WhiteNoise
      + PinkNoise
      + BrownNoise
      +

      + + Oscillators +

      + SinOsc
      + SawOsc
      + SqrOsc
      + TriOsc
      + Pulse
      +

      + + Envelopes +

      + Env
      +

      + + Analysis +

      + Amplitude
      + FFT
      +

      +

      +
      From 8d90c532141f235529f4defb53bfae3afe9d1972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphae=CC=88l=20de=20Courville?= Date: Wed, 29 Aug 2018 12:50:04 +0200 Subject: [PATCH 510/772] =?UTF-8?q?Updated=20the=20text=20for=20the=20get(?= =?UTF-8?q?)=20page=20to=20clarify=20what=20happens=20when=20calling=20get?= =?UTF-8?q?(x,=20y,=20w,=20h).=20as=20suggested=20in=20the=20forums=20?= =?UTF-8?q?=E2=9E=A1=EF=B8=8F=20https://discourse.processing.org/t/what-do?= =?UTF-8?q?es-get-return/3069?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/api_en/get.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/api_en/get.xml b/content/api_en/get.xml index c1307b3cd..89683590c 100755 --- a/content/api_en/get.xml +++ b/content/api_en/get.xml @@ -33,8 +33,10 @@ rect(25, 25, 50, 50); x and y parameters to get the value of one pixel. Get a section of the display window by specifying additional w and h parameters. When getting an image, the x and y parameters define the coordinates for the upper-left corner of the image, regardless of the current imageMode().

      -If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB format. -

      +If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB format.
      +
      +If a width and a height are specified, get(x, y, w, h) returns a PImage corresponding to the part of the original PImage where the top left pixel is at the (x, y) position with a width of w a height of h.
      +
      Getting the color of a single pixel with get(x, y) is easy, but not as fast as grabbing the data directly from pixels[]. The equivalent statement to get(x, y) using pixels[] is pixels[y*width+x]. See the reference for pixels[] for more information. ]]>
      From cd7f2bc8face79dcd636a932c9a9282351e5ebbd Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 18 Sep 2018 08:57:31 -0400 Subject: [PATCH 511/772] Rename libreTSPSWP Library to tramontanaCV. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 2ff56edb5..e19de577c 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -261,7 +261,7 @@ 186 \ https://github.com/leadedge/SpoutProcessing/releases/download/latest/spout.txt 201 \ https://github.com/diwi/PixelFlow/releases/download/latest/PixelFlow.txt 211 \ https://github.com/diwi/PS3Eye/releases/download/latest/PS3Eye.txt -222 \ https://pierdr.github.io/libreTSPSWP/download/libreTSPSWP.txt +222 \ https://pierdr.github.io/tramontanaCV/download/tramontanaCV.txt 223 \ https://github.com/nyatla/NyARToolkit-for-Processing/releases/download/latest/nyar4psg.txt 227 \ https://github.com/Milchreis/processing-imageprocessing/releases/download/latest/processing-imageprocessing.txt From 1b5277352ee97a7d01831812649c9fcce2de9a34 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 2 Oct 2018 14:01:14 -0700 Subject: [PATCH 512/772] Update for size() reference --- content/api_en/size.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/size.xml b/content/api_en/size.xml index 1f1a2b87e..bd6f4c1b0 100755 --- a/content/api_en/size.xml +++ b/content/api_en/size.xml @@ -51,7 +51,7 @@ box(35); setup() function, the size() function must be the first line of code inside setup().
      +Defines the dimension of the display window width and height in units of pixels. In a program that has the setup() function, the size() function must be the first line of code inside setup(), and the setup() function must appear in the code tab with the same name as your sketch folder.

      The built-in variables width and height are set by the parameters passed to this function. For example, running size(640, 480) will assign 640 to the width variable and 480 to the height variable. If size() is not used, the window will be given a default size of 100 x 100 pixels.

      From db03f79ee46609a5f797c3793efff183f37fac3e Mon Sep 17 00:00:00 2001 From: Rajduino Date: Fri, 5 Oct 2018 19:50:31 +0530 Subject: [PATCH 513/772] Rectifying graph for mouseX signal The mouseX signal is not properly drawn on the graph, xvals[i] is simply divided by 3 like in the case for mouseY, which is not the case, but instead, it should be mapped from "width" to "height/3" . Hence the line 49: point(i, map(xvals[i],0,width,0,height/3-1)); --- content/examples/Basics/Input/MouseSignals/MouseSignals.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples/Basics/Input/MouseSignals/MouseSignals.pde b/content/examples/Basics/Input/MouseSignals/MouseSignals.pde index c4776751d..b5110bf26 100644 --- a/content/examples/Basics/Input/MouseSignals/MouseSignals.pde +++ b/content/examples/Basics/Input/MouseSignals/MouseSignals.pde @@ -46,7 +46,7 @@ void draw() for(int i=1; i Date: Tue, 9 Oct 2018 14:51:37 -0700 Subject: [PATCH 514/772] Correction for Network tutorial --- content/static/tutorials/network/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/static/tutorials/network/index.html b/content/static/tutorials/network/index.html index 44bd18337..65a781bb9 100644 --- a/content/static/tutorials/network/index.html +++ b/content/static/tutorials/network/index.html @@ -88,7 +88,8 @@

      Example 1: Web client

        fill(200);   c = new Client(this, "www.ucla.edu", 80); // Connect to server on port 80   c.write("GET / HTTP/1.0\n"); // Use the HTTP "GET" command to ask for a webpage -  c.write("Host: my_domain_name.com\n\n"); // Be polite and say who we are + +  c.write("Host: www.ucla.edu\n\n"); // Tell the server for which domain you are making the requestvoid draw() { From 7b76925fa07d205f96890519ae74c79720a13366 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 9 Oct 2018 14:55:32 -0700 Subject: [PATCH 515/772] Correction for Network tutorial --- content/static/tutorials/network/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/content/static/tutorials/network/index.html b/content/static/tutorials/network/index.html index 65a781bb9..03bd0c8d7 100644 --- a/content/static/tutorials/network/index.html +++ b/content/static/tutorials/network/index.html @@ -88,7 +88,6 @@

      Example 1: Web client

        fill(200);   c = new Client(this, "www.ucla.edu", 80); // Connect to server on port 80   c.write("GET / HTTP/1.0\n"); // Use the HTTP "GET" command to ask for a webpage -   c.write("Host: www.ucla.edu\n\n"); // Tell the server for which domain you are making the request }  From 1b00fd0194087d195929aafbe37c50a011cd6b4a Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Sat, 13 Oct 2018 11:26:07 -0700 Subject: [PATCH 516/772] Add unbinary int signature --- content/api_en/unbinary.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/content/api_en/unbinary.xml b/content/api_en/unbinary.xml index dcab5cbf8..c4f3d0388 100755 --- a/content/api_en/unbinary.xml +++ b/content/api_en/unbinary.xml @@ -17,11 +17,20 @@ String s3 = "00000100"; println(unbinary(s1)); // Prints "16" println(unbinary(s2)); // Prints "8" println(unbinary(s3)); // Prints "4" + +int i1 = 10000; +int i2 = 1000; +int i3 = 100 +println(unbinary(i1)); // Prints "16" +println(unbinary(i2)); // Prints "8" +println(unbinary(i3)); // Prints "4" ]]> String
      representation of a binary number to its equivalent integer value. For example, unbinary("00001000") will return 8. + +Alternately, converts an int representation of a binary number to its equivalent integer value. For example, unbinary(1000) will return 8. ]]> From c030d2fe641b332954d943c789e663560ffbd21f Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Fri, 16 Nov 2018 14:08:18 -0500 Subject: [PATCH 517/772] Update Camera3D and ColorBlindness URLs to use https. --- contrib_generate/sources.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index e19de577c..530c97abb 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -18,7 +18,7 @@ 120 \ https://simple-openni.googlecode.com/svn/trunk/SimpleOpenNI-2.0/dist/all/SimpleOpenNI.txt 123 \ http://igeo.jp/igeo.txt 130 \ https://github.com/codeanticode/planetarium/releases/download/latest/planetarium.txt -174 \ http://ixora.io/downloads/camera3D/Camera3D.txt +174 \ https://ixora.io/downloads/camera3D/Camera3D.txt 195 \ http://culebra.technology/culebra.txt 196 \ https://github.com/jrc03c/queasycam/releases/download/latest/queasycam.txt 215 \ http://maxlfarrell.gitlab.io/extruder/extruder.txt @@ -228,7 +228,7 @@ 192 \ https://github.com/barelief/freeTransform-processing/releases/download/latest/FreeTransform.txt 193 \ http://shiffman.net/p5/libraries/processing3/mpe/mpe.txt 201 \ https://github.com/diwi/PixelFlow/releases/download/latest/PixelFlow.txt -202 \ http://ixora.io/downloads/colorblindness/ColorBlindness.txt +202 \ https://ixora.io/downloads/colorblindness/ColorBlindness.txt 207 \ https://github.com/Lord-of-the-Galaxy/Timing-Utilities/releases/download/latest/timing_utils.txt 210 \ http://cagewebdev.com/colorharmony/colorharmony.txt 212 \ https://github.com/cansik/processing-postfx/releases/download/latest/PostFX.txt From accce3e4bea943aa0174921662a7ee68c79c06b9 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Fri, 16 Nov 2018 14:42:34 -0500 Subject: [PATCH 518/772] Add Scratch library to contributions. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 530c97abb..272b19125 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 235 +# Next ID: 236 # Increment after assigning ID to new contribution [Library : 3D] @@ -235,6 +235,7 @@ 213 \ https://github.com/AlexPoupakis/mouse2DTransformations/releases/download/latest/Mouse2DTransformations.txt 217 \ https://pierdr.github.io/Tramontana-for-Processing/tramontana.txt 229 \ https://github.com/Shinhoo/Wooting-Keyboard-Library/releases/download/lastest/WootingKeyboard.txt +235 \ https://www.barkmin.eu/processing-library-scratch/download/scratch.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From 99396b290aa52fd0829ba37045e657390f4b71d6 Mon Sep 17 00:00:00 2001 From: Ed Griebel Date: Wed, 28 Nov 2018 12:20:52 -0500 Subject: [PATCH 519/772] Fix typo in a displayed comment --- .../examples_p5/Basics/Color/RadialGradient/RadialGradient.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js b/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js index f571de60b..f79678a9d 100644 --- a/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js +++ b/content/examples_p5/Basics/Color/RadialGradient/RadialGradient.js @@ -1,7 +1,7 @@ /** * Radial Gradient. * - * Draws are series of concentric circles to create a gradient + * Draws a series of concentric circles to create a gradient * from one color to another. */ From 8b7767e3e9b7c06aac9cf245692171b1f6272dc9 Mon Sep 17 00:00:00 2001 From: "Griebel Jr, Edward E" Date: Wed, 28 Nov 2018 12:50:16 -0500 Subject: [PATCH 520/772] Fix typo in a displayed comment --- content/examples/Basics/Color/RadialGradient/RadialGradient.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples/Basics/Color/RadialGradient/RadialGradient.pde b/content/examples/Basics/Color/RadialGradient/RadialGradient.pde index ed358a1e5..62df103d8 100644 --- a/content/examples/Basics/Color/RadialGradient/RadialGradient.pde +++ b/content/examples/Basics/Color/RadialGradient/RadialGradient.pde @@ -1,7 +1,7 @@ /** * Radial Gradient. * - * Draws are series of concentric circles to create a gradient + * Draws a series of concentric circles to create a gradient * from one color to another. */ From 677f211b05f6b8c59ca3b643f9c7fe8d0a1e08d2 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 21 Dec 2018 22:20:11 -0800 Subject: [PATCH 521/772] Updates to overview page, cover, navigation --- content/static/overview.html | 13 ++++--- templates/template.cover.html | 66 +---------------------------------- templates/template.nav.php | 4 +-- 3 files changed, 11 insertions(+), 72 deletions(-) diff --git a/content/static/overview.html b/content/static/overview.html index 13349191d..aa6831a91 100644 --- a/content/static/overview.html +++ b/content/static/overview.html @@ -6,15 +6,16 @@

      Overview. A short introducti

      - For the past fourteen years, Processing has promoted software literacy, particularly within the visual arts, and visual literacy within technology. Initially created to serve as a software sketchbook and to teach programming fundamentals within a visual context, Processing has also evolved into a development tool for professionals. The Processing software is free and open source, and runs on the Mac, Windows, and GNU/Linux platforms. + For the past sixteen years, Processing has promoted software literacy, particularly within the visual arts, and visual literacy within technology. Initially created to serve as a software sketchbook and to teach programming fundamentals within a visual context, Processing has also evolved into a development tool for professionals. The Processing software is free and open source, and runs on the Mac, Windows, and GNU/Linux platforms.

      Processing continues to be an alternative to proprietary software tools with restrictive and expensive licenses, making it accessible to schools and individual students. Its open source status encourages the community participation and collaboration that is vital to Processing’s growth. Contributors share programs, contribute code, and build libraries, tools, and modes to extend the possibilities of the software. The Processing community has written more than a hundred libraries to facilitate computer vision, data visualization, music composition, networking, 3D file exporting, and programming electronics.

      +

      Education

      @@ -27,7 +28,7 @@

      Education

      - The innovations in teaching through Processing have been adapted for the Khan Academy computer science tutorials, offered online for free. The tutorials begin with drawing, using most of the Processing functions for drawing. The Processing approach has also been applied to electronics through the Arduino and Wiring projects. Arduino uses a syntax inspired by that used with Processing, and continues to use a modified version of the Processing programming environment to make it easier for students to learn how to program robots and countless other electronics projects. + The innovations in teaching through Processing have been adapted for the Khan Academy computer science tutorials, offered online for free. The tutorials begin with drawing, using most of the Processing functions for drawing. The Processing approach has also been applied to electronics through the Arduino and Wiring projects. Arduino uses a syntax inspired by that used with Processing, and continues to use a modified version of the Processing programming environment to make it easier for students to learn how to program robots and countless other electronics projects.

      Culture

      @@ -45,21 +46,23 @@

      Research

      Foundation

      -The primary charge of the Foundation is to develop and distribute the Processing software. This includes the original Processing (Java), p5.js (Javascript), and Processing.py (Python). There is more information about the Foundation at http://foundation.processing.org/. +The primary charge of the Foundation is to develop and distribute the Processing software. This includes the original Processing (Java), p5.js (Javascript), and Processing.py (Python). There is more information about the Foundation at https://processingfoundation.org/.

      History

      - Processing was started by Ben Fry and Casey Reas in the spring of 2001, while both were graduate students at the MIT Media Lab within John Maeda's Aesthetics and Computation research group. Development continued in their free time while Casey pursued his artistic and teaching career and Ben pursued a Ph.D. and founded Fathom Information Design. Many of the ideas in Processing go back to Muriel Cooper's Visual Language Workshop, and it grew directly out of Maeda's Design By Numbers project, developed at the Media Lab and released in 1999. The Wiring and Arduino projects, in turn, grew out of Processing while Casey was teaching at the Interaction Design Institute Ivrea in Italy. Processing also prompted John Resig (jQuery) to build Processing.js, a JavaScript version that then inspired more related work such as the Khan Academy curriculum in computer science. Versions of Processing that use Python, Ruby, ActionScript, and Scala are also in development. Processing and its sister projects have inspired over twenty educational books. + Processing was started by Ben Fry and Casey Reas in the spring of 2001, while both were graduate students at the MIT Media Lab within John Maeda's Aesthetics and Computation research group. Development continued in their free time while Casey pursued his art and teaching career and Ben pursued a Ph.D. and founded Fathom Information Design. Many of the ideas in Processing go back to Muriel Cooper's Visual Language Workshop, and it grew directly out of Maeda's Design By Numbers project, developed at the Media Lab and released in 1999. The Wiring and Arduino projects, in turn, grew out of Processing while Casey was teaching at the Interaction Design Institute Ivrea in Italy.

      +

      For more information, please write to foundation@processing.org diff --git a/templates/template.cover.html b/templates/template.cover.html index 4fb734230..56d113e50 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -26,14 +26,6 @@

    -

    Books
    @@ -41,24 +33,7 @@ The 2nd edition of Getting Started with Processing is here and it's updated for Processing 3. It's now in full color and there's a new chapter on working with data. The 2nd edition of the Processing Handbook is here too. Every chapter has been revised, and new chapters introduce more ways to work with data and geometry. New “synthesis” chapters offer discussion and worked examples of such topics as sketching with code, modularity, and algorithms.

    Processing Books -

    - - - - - +

    @@ -76,38 +51,11 @@
    » Github
    - - - -

    Donate

    Please join us as a member of the Processing Foundation. We need your help!
    -
    -

    Exhibition

    - exhibition -
    - - -

    To see more of what people are doing with Processing, check out these sites:

    » CreativeApplications.Net
    @@ -115,7 +63,6 @@

    T-shirts!

    » For Your Processing
    » Processing Subreddit
    » Vimeo
    - » Studio Sketchpad

    @@ -136,17 +83,6 @@
    Partners
    » UCLA Design Media Arts

    - -

    Contact
    foundation@processing.org diff --git a/templates/template.nav.php b/templates/template.nav.php index 878ce4580..31e66eba1 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -70,13 +70,13 @@ function navigation($section = '') $html .= "\t\t\t\t\t" . l('Tutorials', $section == 'Tutorials') . "
    \n"; $html .= "\t\t\t\t\t" . l('Examples', $section == 'Examples') . "
    \n"; $html .= "\t\t\t\t\t" . l('Books', $section == 'Books') . "
    \n"; - $html .= "\t\t\t\t\t" . l('Handbook', $section == 'Handbook') . "

    \n"; + #$html .= "\t\t\t\t\t" . l('Handbook', $section == 'Handbook') . "

    \n"; $html .= "\t\t\t\t\t" . l('Overview', $section == 'Overview') . "
    \n"; $html .= "\t\t\t\t\t" . l('People', $section == 'People') . "

    \n"; # $html .= "\t\t\t\t\t" . l('Foundation', $section == 'Foundation') . "

    \n"; - $html .= "\t\t\t\t\t" . l('Shop', $section == 'Shop') . "

    \n"; + #$html .= "\t\t\t\t\t" . l('Shop', $section == 'Shop') . "

    \n"; $html .= "\t\t\t\t\t" . "»Forum
    \n"; $html .= "\t\t\t\t\t" . "»GitHub
    \n"; From 6584190aa3c412fc5c506e073c2635c036dd7d4d Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 21 Dec 2018 22:31:28 -0800 Subject: [PATCH 522/772] Updates to navigation, remove shop and handbook --- java_generate/templates/nav.web.template.html | 6 +++--- templates/template.nav.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java_generate/templates/nav.web.template.html b/java_generate/templates/nav.web.template.html index a557955b9..a754b73e7 100644 --- a/java_generate/templates/nav.web.template.html +++ b/java_generate/templates/nav.web.template.html @@ -14,15 +14,15 @@ Tutorials
    Examples
    Books
    - Handbook

    + Overview
    People

    - Shop

    + - »Forum
    + »Forum
    »GitHub
    »Issues
    »Wiki
    diff --git a/templates/template.nav.php b/templates/template.nav.php index 31e66eba1..4f5574369 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -69,7 +69,7 @@ function navigation($section = '') $html .= "\t\t\t\t\t" . l('Tutorials', $section == 'Tutorials') . "
    \n"; $html .= "\t\t\t\t\t" . l('Examples', $section == 'Examples') . "
    \n"; - $html .= "\t\t\t\t\t" . l('Books', $section == 'Books') . "
    \n"; + $html .= "\t\t\t\t\t" . l('Books', $section == 'Books') . "

    \n"; #$html .= "\t\t\t\t\t" . l('Handbook', $section == 'Handbook') . "

    \n"; $html .= "\t\t\t\t\t" . l('Overview', $section == 'Overview') . "
    \n"; @@ -78,7 +78,7 @@ function navigation($section = '') #$html .= "\t\t\t\t\t" . l('Shop', $section == 'Shop') . "

    \n"; - $html .= "\t\t\t\t\t" . "»Forum
    \n"; + $html .= "\t\t\t\t\t" . "»Forum
    \n"; $html .= "\t\t\t\t\t" . "»GitHub
    \n"; $html .= "\t\t\t\t\t" . "»Issues
    \n"; $html .= "\t\t\t\t\t" . "»Wiki
    \n"; From c07ae2e74e0ff214f59b091b2deaabb24aacb686 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 21 Dec 2018 22:37:29 -0800 Subject: [PATCH 523/772] Simple 'people' page update --- content/static/people.html | 44 +++++++++++--------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/content/static/people.html b/content/static/people.html index 9079900ab..e1453cceb 100755 --- a/content/static/people.html +++ b/content/static/people.html @@ -14,6 +14,7 @@

    People. Processing is a comm

    Senior Developers
    Andres Colubri (Boston), OpenGL / Video
    + Gottfried Haider (Los Angeles), Processing for Pi
    Florian Jenett (Frankfurt), Forum
    Elie Zananiri (Montreal), Contributed Libraries / Tools
    Scott Murray (San Francisco), Website / Reference / UI
    @@ -23,29 +24,15 @@

    People. Processing is a comm Developers
    Jakub Valtar (Brno), Processing Core
    Scott Garner (New York), Hello Processing Website
    - Gottfried Haider (Amsterdam), Serial Library Updates (64-bit)
    - Jamie Kosoy (San Francisco), Website
    - Manindra Moharana (San Diego), PDE / Core
    - James Grady (Boston), Visual Design

    -

    - Google Summer of Code 2015
    - Gottfried Haider, Raspberry Pi and armv7hf support
    - Joel Ruben Antony Moniz, Replacing JEditTextArea with RSyntaxTextArea and designing a new REPL Mode
    - Maya Man, Creativity in Code: Accounting for Diversity throughout Development
    - Nick Confrey, Making networking easier for Processing users
    - Thomas Sanchez Lengeling, Expanding Kinect v2 libraries in Processing
    - Umair Khan, Enhancements in Processing’s Android Mode
    -

    - -

    +

    Libraries, Tools
    @@ -60,24 +47,17 @@

    People. Processing is a comm into programming sound through his minim library.

    - - - -

    - Fellowship Alumni
    - Lauren McCarthy (New York), Spring/Summer/Fall 2013
    - Greg Borenstein (New York), Spring/Summer 2013
    - Wilm Thoben (Los Angeles), Fall 2013/Winter 2014
    -

    Developer Alumni
    + Jamie Kosoy (San Francisco), Website
    + Manindra Moharana (San Diego), PDE / Core
    + James Grady (Boston), Visual Design
    + Joel Ruben Antony Moniz, Replacing JEditTextArea with RSyntaxTextArea and designing a new REPL Mode (Google Summer of Code 2014)
    + Maya Man, Creativity in Code: Accounting for Diversity throughout Development (Google Summer of Code 2014)
    + Nick Confrey, Making networking easier for Processing users (Google Summer of Code 2014)
    + Thomas Sanchez Lengeling, Expanding Kinect v2 libraries in Processing (Google Summer of Code 2014)
    + Umair Khan, Enhancements in Processing’s Android Mode (Google Summer of Code 2014)
    Roland Elek, GStreamer 1.x Java Bindings (Google Summer of Code 2014)
    Chris Johnson-Roberson, Loom: An Audiovisual Pattern Language (Google Summer of Code 2014)
    Manindra Moharana, PDE X (Google Summer of Code 2014)
    @@ -96,7 +76,7 @@

    People. Processing is a comm Andreas Schlegel, Libraries (Winter 2008 - Summer 2011)
    Harshani Nawarathna, Processing Development Environment (Summer 2011)
    Cindy Chi, Reference Editing (Summer 2011)
    - Jonathan Feinberg, Parsing & Android Hacking (Spring 2011)
    + Jonathan Feinberg, Parsing & Android Hacking (Spring 2011)
    Chris Lonnen, Processing Development Environment (Summer 2011)
    Eric Jordan, Graphics Weapon (2007 - 2009)
    Tom Carden, Processing Hacks Director (Summer 2005 - Fall 2008)
    From 4a5f20ac85a8f58cba36a9843af2ffcacaae10b6 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 21 Dec 2018 22:41:05 -0800 Subject: [PATCH 524/772] Simple 'people' page update --- content/static/people.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/static/people.html b/content/static/people.html index e1453cceb..fb88b37c2 100755 --- a/content/static/people.html +++ b/content/static/people.html @@ -53,10 +53,10 @@

    People. Processing is a comm Jamie Kosoy (San Francisco), Website
    Manindra Moharana (San Diego), PDE / Core
    James Grady (Boston), Visual Design
    - Joel Ruben Antony Moniz, Replacing JEditTextArea with RSyntaxTextArea and designing a new REPL Mode (Google Summer of Code 2014)
    - Maya Man, Creativity in Code: Accounting for Diversity throughout Development (Google Summer of Code 2014)
    - Nick Confrey, Making networking easier for Processing users (Google Summer of Code 2014)
    - Thomas Sanchez Lengeling, Expanding Kinect v2 libraries in Processing (Google Summer of Code 2014)
    + Patrick Hebron, Video Library (Summer 2011)
    Peter Kalauskas, Library/Tool/Mode Install Utility (Summer, Fall 2011)
    Andreas Schlegel, Libraries (Winter 2008 - Summer 2011)
    From 1daec9065bd487db9711ebb03a84cc51232212f9 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Thu, 17 Jan 2019 19:14:24 -0800 Subject: [PATCH 525/772] fix typo in the message at top, remove some items that are not documented/supported --- generate/keywords_base.txt | 81 +++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/generate/keywords_base.txt b/generate/keywords_base.txt index a89afdf87..a88aa2737 100755 --- a/generate/keywords_base.txt +++ b/generate/keywords_base.txt @@ -1,17 +1,18 @@ -# THE TEXT BELOW IS HAND WRITTEN AND FOUND IN THE FILE "keywords_base.txt" -# IN THE PROCESSING-DOCS REPO. DON'T EDITS THE keywords.txt FILE DIRECTLY. +# THIS TEXT IS FROM keywords_base.txt IN THE PROCESSING-DOCS REPO: +# https://github.com/processing/processing-docs/blob/master/generate/keywords_base.txt +# MAKE CHANGES THERE: DO NOT EDIT THE keywords.txt FILE DIRECTLY. -# For an explanation of these tags, see Token.java +# For an explanation of these tags, see Token.java # trunk/processing/app/src/processing/app/syntax/Token.java ADD LITERAL2 blend_ -ALIGN_CENTER LITERAL2 -ALIGN_LEFT LITERAL2 -ALIGN_RIGHT LITERAL2 +ALIGN_CENTER LITERAL2 +ALIGN_LEFT LITERAL2 +ALIGN_RIGHT LITERAL2 ALPHA LITERAL2 ALPHA_MASK LITERAL2 ALT LITERAL2 -AMBIENT LITERAL2 +AMBIENT LITERAL2 ARC LITERAL2 createShape_ ARROW LITERAL2 cursor_ ARGB LITERAL2 @@ -24,7 +25,7 @@ BLUR LITERAL2 filter_ BOTTOM LITERAL2 textAlign_ BOX LITERAL2 createShape_ BURN LITERAL2 blend_ -CENTER LITERAL2 +CENTER LITERAL2 CHATTER LITERAL2 CHORD LITERAL2 arc_ CLAMP LITERAL2 @@ -88,7 +89,7 @@ GIF LITERAL2 GRAY LITERAL2 filter_ GREEN_MASK LITERAL2 GROUP LITERAL2 -HALF LITERAL2 +HALF LITERAL2 HALF_PI LITERAL2 HALF_PI HAND LITERAL2 cursor_ HARD_LIGHT LITERAL2 blend_ @@ -97,7 +98,7 @@ HSB LITERAL2 colorMode_ IMAGE LITERAL2 textureMode_ INVERT LITERAL2 filter_ JAVA2D LITERAL2 size_ -JPEG LITERAL2 +JPEG LITERAL2 LEFT LITERAL2 keyCode LIGHTEST LITERAL2 blend_ LINE LITERAL2 createShape_ @@ -105,18 +106,18 @@ LINES LITERAL2 beginShape_ LINUX LITERAL2 MACOSX LITERAL2 MAX_FLOAT LITERAL2 -MAX_INT LITERAL2 +MAX_INT LITERAL2 MIN_FLOAT LITERAL2 MIN_INT LITERAL2 MITER LITERAL2 stokeJoin_ MODEL LITERAL2 textMode_ MOVE LITERAL2 cursor_ MULTIPLY LITERAL2 blend_ -NORMAL LITERAL2 +NORMAL LITERAL2 NORMALIZED LITERAL2 textureMode_ NO_DEPTH_TEST LITERAL2 NTSC LITERAL2 -ONE LITERAL2 +ONE LITERAL2 OPAQUE LITERAL2 filter_ OPEN LITERAL2 ORTHOGRAPHIC LITERAL2 @@ -127,13 +128,13 @@ P2D LITERAL2 size_ P3D LITERAL2 size_ PERSPECTIVE LITERAL2 PI LITERAL2 PI -PIE LITERAL2 +PIE LITERAL2 PIXEL_CENTER LITERAL2 POINT LITERAL2 -POINTS LITERAL2 +POINTS LITERAL2 POSTERIZE LITERAL2 filter_ PRESS LITERAL2 -PROBLEM LITERAL2 +PROBLEM LITERAL2 PROJECT LITERAL2 strokeCap_ QUAD LITERAL2 createShape_ QUAD_STRIP LITERAL2 beginShape_ @@ -146,23 +147,23 @@ RECT LITERAL2 RED_MASK LITERAL2 RELEASE LITERAL2 REPEAT LITERAL2 -REPLACE LITERAL2 +REPLACE LITERAL2 RETURN LITERAL2 RGB LITERAL2 colorMode_ RIGHT LITERAL2 keyCode ROUND LITERAL2 strokeCap_ SCREEN LITERAL2 blend_ -SECAM LITERAL2 +SECAM LITERAL2 SHAPE LITERAL2 textMode_ SHIFT LITERAL2 -SPAN LITERAL2 fullScreen_ +SPAN LITERAL2 fullScreen_ SPECULAR LITERAL2 SPHERE LITERAL2 createShape_ SOFT_LIGHT LITERAL2 blend_ SQUARE LITERAL2 strokeCap_ SUBTRACT LITERAL2 blend_ SVG LITERAL2 -SVIDEO LITERAL2 +SVIDEO LITERAL2 TAB LITERAL2 keyCode TARGA LITERAL2 TAU LITERAL2 TAU @@ -181,17 +182,17 @@ TWO LITERAL2 TWO_PI LITERAL2 TWO_PI UP LITERAL2 keyCode WAIT LITERAL2 cursor_ -WHITESPACE LITERAL2 +WHITESPACE LITERAL2 # Java keywords (void, import, , etc.) - + abstract KEYWORD1 break KEYWORD1 break class KEYWORD1 class continue KEYWORD1 continue -default KEYWORD1 default -enum KEYWORD1 +default KEYWORD1 default +enum KEYWORD1 extends KEYWORD1 extends false KEYWORD1 false final KEYWORD1 final @@ -199,17 +200,17 @@ finally KEYWORD1 implements KEYWORD1 implements import KEYWORD1 import instanceof KEYWORD1 -interface KEYWORD1 +interface KEYWORD1 native KEYWORD1 new KEYWORD1 new null KEYWORD1 null -package KEYWORD1 +package KEYWORD1 private KEYWORD1 private -protected KEYWORD1 +protected KEYWORD1 public KEYWORD1 public static KEYWORD1 static -strictfp KEYWORD1 -throws KEYWORD1 +strictfp KEYWORD1 +throws KEYWORD1 transient KEYWORD1 true KEYWORD1 true void KEYWORD1 void @@ -220,7 +221,7 @@ volatile KEYWORD1 assert KEYWORD6 case KEYWORD6 case -return KEYWORD6 return +return KEYWORD6 return super KEYWORD6 super this KEYWORD6 this throw KEYWORD6 @@ -230,18 +231,17 @@ throw KEYWORD6 Array KEYWORD5 Array ArrayList KEYWORD5 ArrayList -Boolean KEYWORD5 -Byte KEYWORD5 +Boolean KEYWORD5 +Byte KEYWORD5 BufferedReader KEYWORD5 BufferedReader -Character KEYWORD5 +Character KEYWORD5 Class KEYWORD5 class -Double KEYWORD5 -Float KEYWORD5 -Integer KEYWORD5 +Float KEYWORD5 +Integer KEYWORD5 HashMap KEYWORD5 HashMap PrintWriter KEYWORD5 PrintWriter String KEYWORD5 String -StringBuffer KEYWORD5 +StringBuffer KEYWORD5 StringBuilder KEYWORD5 Thread KEYWORD5 boolean KEYWORD5 boolean @@ -252,7 +252,6 @@ double KEYWORD5 double float KEYWORD5 float int KEYWORD5 int long KEYWORD5 long -short KEYWORD5 # Flow structures @@ -386,7 +385,7 @@ pixelHeight KEYWORD4 pixelHeight # # THE TEXT BELOW IS AUTO-GENERATED # -# SO -# DON'T -# TOUCH +# SO +# DON'T +# TOUCH # IT From 3a87dbe0f9eab9438b128f9e971538163104a13b Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sun, 20 Jan 2019 16:44:54 -0500 Subject: [PATCH 526/772] add Processing 3.5 (no ARM yet) --- content/static/download.html | 219 +++++++++++++++++++---------------- download/latest.txt | 2 +- 2 files changed, 117 insertions(+), 104 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index 3057816c4..70fe05c16 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -9,16 +9,19 @@

    Download Processing. Process
    - 3.4 - (26 July 2018) + 3.5 + (20 January 2019)
    @@ -39,150 +42,160 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.5 + (20 January 2019) + Win 32 + Win 64 + Linux 32 + Linux 64 + + Mac OS X +
  • 3.4 (26 July 2018) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 Linux ARMv6hf Mac OS X -
  • + + @@ -190,19 +203,19 @@

    Stable Releases

    2.2.1 (19 May 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 1.5.1 (15 May 2011) Win (standard) - Win (no Java) - Linux x86 - Mac OS X + Win (no Java) + Linux x86 + Mac OS X
  • Earlier releases have been removed because we can only support the current versions of the software. To update old code, read the changes page. Changes for each release can be found in revisions.txt. If you have problems with the current release, please file a bug so that we can fix it. Older releases can also be built from the source. Read More about the releases and their numbering. To use Android Mode, Processing 3 or later is required.

    @@ -218,106 +231,106 @@

    Pre-Releases

    3.0a11 (16 July 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a10 (9 June 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a9 (19 May 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a8 (17 May 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a7 (26 April 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a6 (25 April 2015) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a5 (16 November 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a4 (12 September 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a3 (26 August 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a2 (31 July 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 3.0a1 (26 July 2014) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • --> @@ -326,19 +339,19 @@

    Pre-Releases

    2.1b1 (20 October 2013) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • 2.1b1 (20 October 2013) Win 32 - Win 64 - Linux 32 + Win 64 + Linux 32 Linux 64 - Mac OS X + Mac OS X
  • --> diff --git a/download/latest.txt b/download/latest.txt index 0137c2d4c..74c4dd010 100644 --- a/download/latest.txt +++ b/download/latest.txt @@ -1,2 +1,2 @@ -0264 +0266 From 944199023d3f5626496e9fcc113f74c0cb70f363 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Mon, 21 Jan 2019 09:43:31 -0500 Subject: [PATCH 527/772] adding 3.5.1 --- content/static/download.html | 30 +++++++++++++++++++++--------- download/latest.txt | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index 70fe05c16..b7188c109 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -9,19 +9,19 @@

    Download Processing. Process
    - 3.5 - (20 January 2019) + 3.5.1 + (21 January 2019)
    @@ -42,6 +42,17 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.5.1 + (21 January 2019) + Win 32 + Win 64 + Linux 32 + Linux 64 + + Mac OS X +
  • + + Linux ARMv6hf Mac OS X + -->
  • 3.4 (26 July 2018) diff --git a/download/latest.txt b/download/latest.txt index 74c4dd010..92c7b1ddd 100644 --- a/download/latest.txt +++ b/download/latest.txt @@ -1,2 +1,2 @@ -0266 +0267 From 20181935f12d43b6dfd29e5ef8c192bffc995adb Mon Sep 17 00:00:00 2001 From: gohai Date: Mon, 21 Jan 2019 16:15:10 -0800 Subject: [PATCH 528/772] Enable download link for 3.5.1 on ARM --- content/static/download.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index b7188c109..db929c128 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -16,10 +16,8 @@

    Download Processing. Process Windows 32-bit

  • Linux 64-bit
    Linux 32-bit
    -
  • Mac OS X
  • @@ -49,7 +47,7 @@

    Stable Releases

    Win 64 Linux 32 Linux 64 - + Linux ARMv6hf Mac OS X
    - 3.5.1 - (21 January 2019) + 3.5.2 + (22 January 2019)
    @@ -40,6 +40,17 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.5.2 + (22 January 2019) + Win 32 + Win 64 + Linux 32 + Linux 64 + Linux ARMv6hf + Mac OS X +
  • +
    - 3.5.2 - (22 January 2019) + 3.5.3 + (3 February 2019)
    @@ -40,6 +40,17 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.5.3 + (3 February 2019) + Win 32 + Win 64 + Linux 32 + Linux 64 + Linux ARMv6hf + Mac OS X +
  • + Electronics From 6975572a941e1814d437fd4b16043992d193e830 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 12:23:30 -0700 Subject: [PATCH 556/772] Small reference updates --- content/api_en/curvePoint.xml | 2 +- content/api_en/keyCode.xml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/content/api_en/curvePoint.xml b/content/api_en/curvePoint.xml index 8c9a6e011..c38a07c22 100755 --- a/content/api_en/curvePoint.xml +++ b/content/api_en/curvePoint.xml @@ -30,7 +30,7 @@ for (int i = 0; i <= steps; i++) { t for points a, b, c, d. The parameter t may range from 0 (the start of the curve) and 1 (the end of the curve). a and d are points on the curve, and b and c are the control points. This can be used once with the x coordinates and a second time with the y coordinates to get the location of a curve at t. +Evaluates the curve at point t for points a, b, c, d. The parameter t may range from 0 (the start of the curve) and 1 (the end of the curve). a and d are the control points, and b and c are points on the curve. As seen in the example above, this can be used once with the x coordinates and a second time with the y coordinates to get the location of a curve at t. ]]> diff --git a/content/api_en/keyCode.xml b/content/api_en/keyCode.xml index b11ea3ca0..f927a373c 100755 --- a/content/api_en/keyCode.xml +++ b/content/api_en/keyCode.xml @@ -42,6 +42,8 @@ The keys included in the ASCII specification (BACKSPACE, TAB, ENTER, RETURN, ESC For those familiar with Java, the values for UP and DOWN are simply shorter versions of Java's KeyEvent.VK_UP and KeyEvent.VK_DOWN. Other keyCode values can be found in the Java KeyEvent reference.

    There are issues with how keyCode behaves across different renderers and operating systems. Watch out for unexpected behavior as you switch renderers and operating systems and you are using keys are aren't mentioned in this reference entry. +

    +If you are using P2D or P3D as your renderer, use the NEWT KeyEvent constants. ]]> From c858fd72a94cbf99b214d12b55086f5d3e47d45f Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 15:31:24 -0700 Subject: [PATCH 557/772] Little updates for mouseWheel(), textAscent() and textDescent() --- content/api_en/mouseWheel.xml | 2 +- content/api_en/textAscent.xml | 2 +- content/api_en/textDescent.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/api_en/mouseWheel.xml b/content/api_en/mouseWheel.xml index 02c01cd7a..0a2344176 100755 --- a/content/api_en/mouseWheel.xml +++ b/content/api_en/mouseWheel.xml @@ -26,7 +26,7 @@ void mouseWheel(MouseEvent event) { mouseWheel() function returns positive values when the mouse wheel is rotated down (toward the user), and negative values for the other direction (up or away from the user). On OS X with "natural" scrolling enabled, the values are opposite. +The code within the mouseWheel() event function is run when the mouse wheel is moved. (Some mice don't have wheels and this function is only applicable with mice that have a wheel.) The getCount() function used within mouseWheel() returns positive values when the mouse wheel is rotated down (toward the user), and negative values for the other direction (up or away from the user). On OS X with "natural" scrolling enabled, the values are opposite.

    Mouse and keyboard events only work when a program has draw(). Without draw(), the code is only run once and then stops listening for events. ]]>
    diff --git a/content/api_en/textAscent.xml b/content/api_en/textAscent.xml index e028c6a16..47de3d52f 100755 --- a/content/api_en/textAscent.xml +++ b/content/api_en/textAscent.xml @@ -27,7 +27,7 @@ text("dp", 40, base); // Draw text on baseline textAscent() and textDescent() values will give you the total height of the line. +Returns ascent of the current font at its current size. This information is useful for determining the height of the font above the baseline. ]]> diff --git a/content/api_en/textDescent.xml b/content/api_en/textDescent.xml index f550f9d9d..92f81b1a5 100755 --- a/content/api_en/textDescent.xml +++ b/content/api_en/textDescent.xml @@ -27,7 +27,7 @@ text("dp", 40, base); // Draw text on baseline textAscent() and textDescent() values will give you the total height of the line. +Returns descent of the current font at its current size. This information is useful for determining the height of the font below the baseline. ]]> From 3f0af7118e5fd220be5c940791d7b1b8e52404a4 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 15:46:41 -0700 Subject: [PATCH 558/772] Clarification of 'clockwise' order for arc() values --- content/api_en/arc.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/api_en/arc.xml b/content/api_en/arc.xml index 742e7391f..071891848 100755 --- a/content/api_en/arc.xml +++ b/content/api_en/arc.xml @@ -37,10 +37,10 @@ arc(50, 50, 80, 80, 0, PI+QUARTER_PI, PIE); a, b, c, and d parameters. The origin of the arc's ellipse may be changed with the ellipseMode() function. Use the start and stop parameters to specify the angles (in radians) at which to draw the arc.
    -
    -There are three ways to draw an arc; the rendering technique used is defined by the optional seventh parameter. The three options, depicted in the above examples, are PIE, OPEN, and CHORD. The default mode is the OPEN stroke with a PIE fill.
    -
    +Draws an arc to the screen. Arcs are drawn along the outer edge of an ellipse defined by the a, b, c, and d parameters. The origin of the arc's ellipse may be changed with the ellipseMode() function. Use the start and stop parameters to specify the angles (in radians) at which to draw the arc. The start/stop values must be in clockwise order. +

    +There are three ways to draw an arc; the rendering technique used is defined by the optional seventh parameter. The three options, depicted in the above examples, are PIE, OPEN, and CHORD. The default mode is the OPEN stroke with a PIE fill. +

    In some cases, the arc() function isn't accurate enough for smooth drawing. For example, the shape may jitter on screen when rotating slowly. If you're having an issue with how arcs are rendered, you'll need to draw the arc yourself with beginShape()/endShape() or a PShape. ]]>
    From f696590614c2baa2647cd91fad891af899027e15 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 15:55:33 -0700 Subject: [PATCH 559/772] New example for .clear() --- content/api_en/clear.xml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/content/api_en/clear.xml b/content/api_en/clear.xml index d71f240d8..4db47b198 100644 --- a/content/api_en/clear.xml +++ b/content/api_en/clear.xml @@ -15,23 +15,25 @@ PGraphics pg; void setup() { size(200, 200); - pg = createGraphics(100, 100); + pg = createGraphics(width, height); } void draw() { background(204); - pg.beginDraw(); - pg.stroke(0, 102, 153); - pg.line(0, 0, mouseX, mouseY); - pg.endDraw(); - image(pg, 50, 50); -} - -// Click to clear the PGraphics object -void mousePressed() { - pg.beginDraw(); - pg.clear(); - pg.endDraw(); + + // Clear the PGraphics when the mouse is pressed + if (mousePressed == true) { + pg.beginDraw(); + pg.clear(); + pg.endDraw(); + } else { + pg.beginDraw(); + pg.stroke(0, 102, 153); + pg.line(width/2, height/2, mouseX, mouseY); + pg.endDraw(); + } + + image(pg, 0, 0); } ]]> From 84f19493f4c455ff54257d7a49c4191ee2b107b1 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 16:09:55 -0700 Subject: [PATCH 560/772] Update to MouseSignals example --- .../Input/MouseSignals/MouseSignals.pde | 24 +++++++++++-------- .../Basics/Input/MouseSignals/MouseSignals.js | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/content/examples/Basics/Input/MouseSignals/MouseSignals.pde b/content/examples/Basics/Input/MouseSignals/MouseSignals.pde index b5110bf26..32824354d 100644 --- a/content/examples/Basics/Input/MouseSignals/MouseSignals.pde +++ b/content/examples/Basics/Input/MouseSignals/MouseSignals.pde @@ -11,8 +11,7 @@ int[] xvals; int[] yvals; int[] bvals; -void setup() -{ +void setup() { size(640, 360); noSmooth(); xvals = new int[width]; @@ -22,11 +21,10 @@ void setup() int arrayindex = 0; -void draw() -{ +void draw() { background(102); - for(int i = 1; i < width; i++) { + for (int i = 1; i < width; i++) { xvals[i-1] = xvals[i]; yvals[i-1] = yvals[i]; bvals[i-1] = bvals[i]; @@ -34,22 +32,28 @@ void draw() // Add the new values to the end of the array xvals[width-1] = mouseX; yvals[width-1] = mouseY; - if(mousePressed) { + + if (mousePressed == true) { bvals[width-1] = 0; } else { - bvals[width-1] = 255; + bvals[width-1] = height/3; } fill(255); noStroke(); rect(0, height/3, width, height/3+1); - for(int i=1; i Date: Thu, 25 Jul 2019 16:36:52 -0700 Subject: [PATCH 561/772] Update to begin/endContour() for PShape sxample --- content/api_en/PShape_beginContour.xml | 8 ++++---- content/api_en/PShape_endContour.xml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/content/api_en/PShape_beginContour.xml b/content/api_en/PShape_beginContour.xml index fefc7d7d1..510cf16f1 100644 --- a/content/api_en/PShape_beginContour.xml +++ b/content/api_en/PShape_beginContour.xml @@ -14,12 +14,12 @@ PShape s; void setup() { - size(100, 100); + size(200, 200, P2D); // Make a shape s = createShape(); s.beginShape(); - s.noStroke(); + //s.noStroke(); // Exterior part of shape s.vertex(-50,-50); @@ -36,11 +36,11 @@ void setup() { s.endContour(); // Finish off shape - s.endShape(); + s.endShape(CLOSE); } void draw() { - background(52); + background(204); translate(width/2, height/2); s.rotate(0.01); shape(s); diff --git a/content/api_en/PShape_endContour.xml b/content/api_en/PShape_endContour.xml index b88cd4c3f..43119b0ea 100644 --- a/content/api_en/PShape_endContour.xml +++ b/content/api_en/PShape_endContour.xml @@ -14,12 +14,12 @@ PShape s; void setup() { - size(100, 100); + size(200, 200, P2D); // Make a shape s = createShape(); s.beginShape(); - s.noStroke(); + //s.noStroke(); // Exterior part of shape s.vertex(-50,-50); @@ -36,11 +36,11 @@ void setup() { s.endContour(); // Finish off shape - s.endShape(); + s.endShape(CLOSE); } void draw() { - background(52); + background(204); translate(width/2, height/2); s.rotate(0.01); shape(s); From 19122dac7d4467cfc31e0fdfc34b8650d3a726ff Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 19:06:06 -0700 Subject: [PATCH 562/772] Clarification for String reference --- content/api_en/include/String.xml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/content/api_en/include/String.xml b/content/api_en/include/String.xml index 130d63116..37de6b086 100755 --- a/content/api_en/include/String.xml +++ b/content/api_en/include/String.xml @@ -24,12 +24,9 @@ println(str2); // Prints "CCCP" to the console From 375bbd9dba17a1a68617c5d05e9f9df9df09193d Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 19:49:44 -0700 Subject: [PATCH 563/772] Clarification for .substring() --- content/api_en/include/String_substring.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/api_en/include/String_substring.xml b/content/api_en/include/String_substring.xml index 0514f23ae..40813a34c 100755 --- a/content/api_en/include/String_substring.xml +++ b/content/api_en/include/String_substring.xml @@ -16,8 +16,8 @@ String str1 = "CCCP"; String str2 = "Rabbit"; String ss1 = str1.substring(2); // Returns "CP" String ss2 = str2.substring(3); // Returns "bit" -String ss3 = str1.substring(0, 2); // Returns "CC" -println(ss1 + ":" + ss2 + ":" + ss3); // Prints "CP:bit:CC" +String ss3 = str2.substring(0, 2); // Returns "Ra" +println(ss1 + ":" + ss2 + ":" + ss3); // Prints "CP:bit:Ra" ]]> From d3bcd471146dd5c23b897bb5f4b042ec139b560a Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:02:19 -0700 Subject: [PATCH 564/772] Basic reference updates, including Variable Scope example --- content/api_en/StringList_hasValue.xml | 4 ++-- content/examples_basics.xml | 2 +- content/static/tutorials/video/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/api_en/StringList_hasValue.xml b/content/api_en/StringList_hasValue.xml index 764dfa9d9..c864feb07 100755 --- a/content/api_en/StringList_hasValue.xml +++ b/content/api_en/StringList_hasValue.xml @@ -21,8 +21,8 @@ void setup() { inventory.append("flour"); inventory.append("tea"); println(inventory); - if (inventory.hasValue("tea") == true) { - println("Yes, we have a tea"); + if (inventory.hasValue("tea")) { + println("Yes, we have tea"); } else { println("Sorry, no tea"); } diff --git a/content/examples_basics.xml b/content/examples_basics.xml index 402334c7c..42345b718 100644 --- a/content/examples_basics.xml +++ b/content/examples_basics.xml @@ -27,7 +27,7 @@ Integers and Floats True/False Characters and Strings - Variable Scope + Variable Scope Datatype Conversion diff --git a/content/static/tutorials/video/index.html b/content/static/tutorials/video/index.html index fda2a4e29..22ccf759b 100644 --- a/content/static/tutorials/video/index.html +++ b/content/static/tutorials/video/index.html @@ -300,7 +300,7 @@

    Recorded video

    }

    -Although Processing is by no means the most sophisticated environment for displaying and manipulating recorded video, there are some more advanced features available in the video library. There are function sfor obtaining the duration (length measured in seconds) of a video, for speeding it up and slowing it down, and for jumping to a specific point in the video (among others). If you find that performance is sluggish and the video playback is choppy, I would suggest trying the P2D or P3D renderers. +Although Processing is by no means the most sophisticated environment for displaying and manipulating recorded video, there are some more advanced features available in the video library. There are functions for obtaining the duration (length measured in seconds) of a video, for speeding it up and slowing it down, and for jumping to a specific point in the video (among others). If you find that performance is sluggish and the video playback is choppy, I would suggest trying the P2D or P3D renderers.

    Following is an example that makes use of jump() (jump to a specific point in the video) and duration() (returns the length of movie in seconds). In this example, if mouseX equals 0, the video jumps to the beginning. If mouseX equals width, it jumps to the end. Any other value is in between. The jump() function allows you to jump immediately to a point of time within the video. duration() returns the total length of the movie in seconds.
    From 23af8444b23e3edd9e02a5823ad488fdb51fd109 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:11:30 -0700 Subject: [PATCH 565/772] Update for equality operator reference --- content/api_en/include/equality.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/include/equality.xml b/content/api_en/include/equality.xml index a8bbda074..f4fb7b9eb 100755 --- a/content/api_en/include/equality.xml +++ b/content/api_en/include/equality.xml @@ -20,7 +20,7 @@ if (a == b) { +Determines if two values are equivalent. Please note the equality operator (==) is different from the assignment operator (=) and although they look similar, they have a different use. If you're comparing two variables, the quality operator (==) only works with primitive data types like int, float, and char and not with composite data types like Array, Table, and PVector

    Note that when comparing String objects, you must use the equals() method instead of == to compare their contents. See the reference for String or the troubleshooting note for more explanation. ]]>
    From ed6ad7fbce06b8fb0d5f2b842dcad6e2935e0d06 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:13:13 -0700 Subject: [PATCH 566/772] Update for equality operator reference --- content/api_en/include/equality.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/include/equality.xml b/content/api_en/include/equality.xml index f4fb7b9eb..bbb16aa3a 100755 --- a/content/api_en/include/equality.xml +++ b/content/api_en/include/equality.xml @@ -14,7 +14,7 @@ int a = 23; int b = 23; if (a == b) { - println("variables a and b are equal"); + println("the values of variables 'a' and 'b' are the same"); } ]]> From 09fd4f7dc2b683a50e905e49ee3bd93d772a3911 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:41:31 -0700 Subject: [PATCH 567/772] Figure update for Drawing tutorial --- .../tutorials/drawing/imgs/drawing-05.svg | 352 +++++++++--------- 1 file changed, 186 insertions(+), 166 deletions(-) diff --git a/content/static/tutorials/drawing/imgs/drawing-05.svg b/content/static/tutorials/drawing/imgs/drawing-05.svg index 0f55e2269..aae65a23c 100644 --- a/content/static/tutorials/drawing/imgs/drawing-05.svg +++ b/content/static/tutorials/drawing/imgs/drawing-05.svg @@ -1,166 +1,186 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Example: - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Example: + + + + + + + + + + + + + + + + + + + + + + From 9af76baa9bfc2bd1b8a842df27e16f3e6c211183 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:44:00 -0700 Subject: [PATCH 568/772] Figure update for Drawing tutorial, correction --- .../tutorials/drawing/imgs/drawing-05.svg | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/content/static/tutorials/drawing/imgs/drawing-05.svg b/content/static/tutorials/drawing/imgs/drawing-05.svg index aae65a23c..9a49a19e6 100644 --- a/content/static/tutorials/drawing/imgs/drawing-05.svg +++ b/content/static/tutorials/drawing/imgs/drawing-05.svg @@ -139,19 +139,19 @@ -Example: - -Example: + + - - - - + + + + - - - - + + + - + c4.5,0,6,2.8,6,6.4v11.2c1.2,0.1,2.4,0.3,3.3,0.5v2.2H727.3z"/> + From 5a18ef6476338b074cfe4786effa43f6dd9f4dc4 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 25 Jul 2019 20:45:26 -0700 Subject: [PATCH 569/772] Figure update for Drawing tutorial, correction 2 --- .../tutorials/drawing/imgs/drawing-05.svg | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/content/static/tutorials/drawing/imgs/drawing-05.svg b/content/static/tutorials/drawing/imgs/drawing-05.svg index 9a49a19e6..44653c110 100644 --- a/content/static/tutorials/drawing/imgs/drawing-05.svg +++ b/content/static/tutorials/drawing/imgs/drawing-05.svg @@ -8,8 +8,6 @@ .st2{fill:none;stroke:#000000;stroke-width:1.3;} .st3{fill:#FFFFFF;stroke:#000000;stroke-width:1.3;} .st4{fill:#808080;} - .st5{font-family:'TheSerif-HP5Plain';} - .st6{font-size:39.4px;} @@ -139,7 +137,33 @@ -Example: + + + + + + + + + + newSize parameter provides precise control over the increase in size. +Increases the size of a one-dimensional array. By default, this function doubles the size of the array, but the optional newSize parameter provides precise control over the increase in size.

    When using an array of objects, the data returned from the function must be cast to the object array's data type. For example: SomeClass[] items = (SomeClass[]) expand(originalArray) ]]>
    diff --git a/content/api_en/shorten.xml b/content/api_en/shorten.xml index 82961260a..41746c5ad 100755 --- a/content/api_en/shorten.xml +++ b/content/api_en/shorten.xml @@ -20,7 +20,7 @@ println(sa2); // 'sa2' now contains OH, NY
    When using an array of objects, the data returned from the function must be cast to the object array's data type. For example: SomeClass[] items = (SomeClass[]) shorten(originalArray) ]]>
    diff --git a/content/examples_topics.xml b/content/examples_topics.xml index b516a00ce..c46525d49 100755 --- a/content/examples_topics.xml +++ b/content/examples_topics.xml @@ -50,7 +50,7 @@ Edge Detection Convolution Histogram - Linear Image + Linear Image Zoom Explode From b31ca0169cb59d341f3046379587119edc8cf7ab Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 09:09:12 -0700 Subject: [PATCH 571/772] Spelling updates for blendMode() and blend() --- content/api_en/blend.xml | 6 +++--- content/api_en/blendMode.xml | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/content/api_en/blend.xml b/content/api_en/blend.xml index d10a95f76..59d8431c9 100755 --- a/content/api_en/blend.xml +++ b/content/api_en/blend.xml @@ -52,15 +52,15 @@ blend(img, 0, 0, 33, 100, 67, 0, 33, 100, LIGHTEST);
    -BLEND - linear interpolation of colours: C = A*factor + B
    +BLEND - linear interpolation of colors: C = A*factor + B

    ADD - additive blending with white clip: C = min(A*factor + B, 255)

    SUBTRACT - subtractive blending with black clip: C = max(B - A*factor, 0)

    -DARKEST - only the darkest colour succeeds: C = min(A*factor, B)
    +DARKEST - only the darkest color succeeds: C = min(A*factor, B)

    -LIGHTEST - only the lightest colour succeeds: C = max(A*factor, B)
    +LIGHTEST - only the lightest color succeeds: C = max(A*factor, B)

    DIFFERENCE - subtract colors from underlying image.

    diff --git a/content/api_en/blendMode.xml b/content/api_en/blendMode.xml index 26e3285a2..a3c309cb1 100755 --- a/content/api_en/blendMode.xml +++ b/content/api_en/blendMode.xml @@ -35,17 +35,17 @@ line(75, 25, 25, 75); +Blends the pixels in the display window according to a defined mode. There is a choice of the following modes to blend the source pixels (A) with the ones of pixels already in the display window (B). Each pixel's final color is the result of applying one of the blend modes with each channel of (A) and (B) independently. The red channel is compared with red, green with green, and blue with blue.

    -BLEND - linear interpolation of colours: C = A*factor + B. This is the default blending mode.
    +BLEND - linear interpolation of colors: C = A*factor + B. This is the default.

    ADD - additive blending with white clip: C = min(A*factor + B, 255)

    SUBTRACT - subtractive blending with black clip: C = max(B - A*factor, 0)

    -DARKEST - only the darkest colour succeeds: C = min(A*factor, B)
    +DARKEST - only the darkest color succeeds: C = min(A*factor, B)

    -LIGHTEST - only the lightest colour succeeds: C = max(A*factor, B)
    +LIGHTEST - only the lightest color succeeds: C = max(A*factor, B)

    DIFFERENCE - subtract colors from underlying image.

    From 52272278092eed2079388c3aa60bbc8f82abf1bd Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 09:12:51 -0700 Subject: [PATCH 572/772] Attribution error in Sound tutorial --- content/static/tutorials/sound/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/tutorials/sound/index.html b/content/static/tutorials/sound/index.html index 4c270ea5a..20b03bc75 100644 --- a/content/static/tutorials/sound/index.html +++ b/content/static/tutorials/sound/index.html @@ -203,7 +203,7 @@

    Tools for sound programming

    - Classic computer music “languages,” most of which are derived from Max Mathews’ MUSIC program, are still in wide use today. Some of these, such as CSound (developed by Barry Vercoe at MIT) have wide followings and are taught in computer music studios as standard tools for electroacoustic composition. The majority of these MUSIC-N programs use text files for input, though they are increasingly available with graphical editors for many tasks. Typically, two text files are used; the first contains a description of the sound to be generated using a specification language that defines one or more “instruments” made by combining simple unit generators. A second file contains the “score,” a list of instructions specifying which instrument in the first file plays what event, when, for how long, and with what variable parameters. Most of these programs go beyond simple task-based synthesis and audio processing to facilitate algorithmic composition, often by building on top of a standard programming language; F. Richard Moore’s CLM package, for example, is built on top of Common LISP. Some of these languages have been retrofitted in recent years to work in real time (as opposed to rendering a sound file to disk); Real-Time Cmix, for example, contains a C-style parser as well as support for connectivity from clients over network sockets and MIDI. + Classic computer music “languages,” most of which are derived from Max Mathews’ MUSIC program, are still in wide use today. Some of these, such as CSound (developed by Barry Vercoe at MIT) have wide followings and are taught in computer music studios as standard tools for electroacoustic composition. The majority of these MUSIC-N programs use text files for input, though they are increasingly available with graphical editors for many tasks. Typically, two text files are used; the first contains a description of the sound to be generated using a specification language that defines one or more “instruments” made by combining simple unit generators. A second file contains the “score,” a list of instructions specifying which instrument in the first file plays what event, when, for how long, and with what variable parameters. Most of these programs go beyond simple task-based synthesis and audio processing to facilitate algorithmic composition, often by building on top of a standard programming language; Bill Schottstaedt ’s CLM package, for example, is built on top of Common LISP. Some of these languages have been retrofitted in recent years to work in real time (as opposed to rendering a sound file to disk); Real-Time Cmix, for example, contains a C-style parser as well as support for connectivity from clients over network sockets and MIDI.

    From 7824d534a0979840d55dbc88acce4038bb1d1fa5 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 09:28:37 -0700 Subject: [PATCH 573/772] Changed comments for JSON examples to make it easier to cut and paste the data --- content/api_en/loadJSONArray.xml | 38 ++++++++++++++++--------------- content/api_en/loadJSONObject.xml | 14 +++++++----- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/content/api_en/loadJSONArray.xml b/content/api_en/loadJSONArray.xml index d7b7444ac..da22530e9 100755 --- a/content/api_en/loadJSONArray.xml +++ b/content/api_en/loadJSONArray.xml @@ -13,24 +13,26 @@ Date: Fri, 26 Jul 2019 09:56:26 -0700 Subject: [PATCH 574/772] New reference files for AudioSample amp() and loop() --- content/api_en/LIB_sound/AudioSample.xml | 4 +- content/api_en/LIB_sound/AudioSample_amp.xml | 42 +++++++++++++++++++ content/api_en/LIB_sound/AudioSample_loop.xml | 40 ++++++++++++++++++ 3 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 content/api_en/LIB_sound/AudioSample_amp.xml create mode 100644 content/api_en/LIB_sound/AudioSample_loop.xml diff --git a/content/api_en/LIB_sound/AudioSample.xml b/content/api_en/LIB_sound/AudioSample.xml index 463238650..053be266c 100755 --- a/content/api_en/LIB_sound/AudioSample.xml +++ b/content/api_en/LIB_sound/AudioSample.xml @@ -44,8 +44,6 @@ This class allows you low-level access to an audio buffer to create, access, man If you want to pre-load your audio sample with an audio file from disk you can do so using the SoundFile subclass. ]]> - -SoundFile - + diff --git a/content/api_en/LIB_sound/AudioSample_amp.xml b/content/api_en/LIB_sound/AudioSample_amp.xml new file mode 100644 index 000000000..7a1181b3e --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_amp.xml @@ -0,0 +1,42 @@ + + + +play() + +Sound Files + + + +Web & Application + + + + + + + + + diff --git a/content/api_en/LIB_sound/AudioSample_loop.xml b/content/api_en/LIB_sound/AudioSample_loop.xml new file mode 100644 index 000000000..d1584ae38 --- /dev/null +++ b/content/api_en/LIB_sound/AudioSample_loop.xml @@ -0,0 +1,40 @@ + + + +play() + +Sound Files + + + +Web & Application + + + + + + + + + From c55c345851a8eccfff35f7118e05a7b46c15fdb3 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 10:24:39 -0700 Subject: [PATCH 575/772] Clarification for how smooth() works with PGraphics --- content/api_en/LIB_sound/AudioSample_loop.xml | 4 +- content/api_en/createGraphics.xml | 4 +- content/api_en/smooth.xml | 37 ++++++++++++++++--- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/content/api_en/LIB_sound/AudioSample_loop.xml b/content/api_en/LIB_sound/AudioSample_loop.xml index d1584ae38..f95b7e484 100644 --- a/content/api_en/LIB_sound/AudioSample_loop.xml +++ b/content/api_en/LIB_sound/AudioSample_loop.xml @@ -1,7 +1,7 @@ -play() +loop() Sound Files @@ -25,7 +25,7 @@ void setup() { for (int i = 0; i < sample.frames(); i++) { sample.write(i, random(-100, 100)); } - sample.play(); + sample.loop(); } void draw() { diff --git a/content/api_en/createGraphics.xml b/content/api_en/createGraphics.xml index c817adad6..2eb84e5bc 100755 --- a/content/api_en/createGraphics.xml +++ b/content/api_en/createGraphics.xml @@ -34,9 +34,9 @@ Creates and returns a new PGraphics object. Use this class if you need to
    It's important to consider the renderer used with createGraphics() in relation to the main renderer specified in size(). For example, it's only possible to use P2D or P3D with createGraphics() when one of them is defined in size(). Unlike Processing 1.0, P2D and P3D use OpenGL for drawing, and when using an OpenGL renderer it's necessary for the main drawing surface to be OpenGL-based. If P2D or P3D are used as the renderer in size(), then any of the options can be used with createGraphics(). If the default renderer is used in size(), then only the default, PDF, or SVG can be used with createGraphics().

    -It's important to call any drawing functions between beginDraw() and endDraw() statements. This is also true for any functions that affect drawing, such as smooth() or colorMode().
    +It's important to run all drawing functions between the beginDraw() and endDraw(). As the exception to this rule, smooth() should be run on the PGraphics object before beginDraw(). See the reference for smooth() for more detail.

    -The createGraphics() function should almost never be used inside draw() because of the memory and time needed to set up the graphics. One-time or occasional use during draw() are acceptable, but code that calls createGraphics() at 60 frames per second will run out of memory or freeze your sketch.
    +The createGraphics() function should almost never be used inside draw() because of the memory and time needed to set up the graphics. One-time or occasional use during draw() might be acceptable, but code that calls createGraphics() at 60 frames per second might run out of memory or freeze your sketch.

    Unlike the main drawing surface which is completely opaque, surfaces created with createGraphics() can have transparency. This makes it possible to draw into a graphics and maintain the alpha channel. By using save() to write a PNG or TGA file, the transparency of the graphics object will be honored. ]]> diff --git a/content/api_en/smooth.xml b/content/api_en/smooth.xml index 0b5fd3b69..75a727274 100755 --- a/content/api_en/smooth.xml +++ b/content/api_en/smooth.xml @@ -43,14 +43,39 @@ void draw() { ]]>
    + + + + + smooth() only needs to be used when a program needs to set the smoothing in a different way. The level parameter increases the level of smoothness. This is the level of over sampling applied to the graphics buffer.
    -
    -With the P2D and P3D renderers, smooth(2) is the default, this is called "2x anti-aliasing." The code smooth(4) is used for 4x anti-aliasing and smooth(8) is specified for 8x anti-aliasing. The maximum anti-aliasing level is determined by the hardware of the machine that is running the software, so smooth(4) and smooth(8) will not work with every computer.
    -
    -The default renderer uses smooth(3) by default. This is bicubic smoothing. The other option for the default renderer is smooth(2), which is bilinear smoothing.
    -
    +Draws all geometry with smooth (anti-aliased) edges. This behavior is the default, so smooth() only needs to be used when a program needs to set the smoothing in a different way. The level parameter increases the amount of smoothness. This is the level of over sampling applied to the graphics buffer. +

    +With the P2D and P3D renderers, smooth(2) is the default, this is called "2x anti-aliasing." The code smooth(4) is used for 4x anti-aliasing and smooth(8) is specified for "8x anti-aliasing." The maximum anti-aliasing level is determined by the hardware of the machine that is running the software, so smooth(4) and smooth(8) will not work with every computer. +

    +The default renderer uses smooth(3) by default. This is bicubic smoothing. The other option for the default renderer is smooth(2), which is bilinear smoothing. +

    With Processing 3.0, smooth() is different than before. It was common to use smooth() and noSmooth() to turn on and off antialiasing within a sketch. Now, because of how the software has changed, smooth() can only be set once within a sketch. It can be used either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). The noSmooth() function also follows the same rules. +

    +When smooth() is used with a PGraphics object, it should be run right after the object is created withcreateGraphics(), as shown in the Reference in the third example. ]]>
    From bfaaf7c48f6dac49e11d3fc50f8ed7a8dd90ba99 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 10:41:17 -0700 Subject: [PATCH 576/772] Description for addChild() method of PShape --- content/api_en/PShape_addChild.xml | 16 ++++++++-------- content/api_en/smooth.xml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/api_en/PShape_addChild.xml b/content/api_en/PShape_addChild.xml index 3d69836a8..20d7fa700 100644 --- a/content/api_en/PShape_addChild.xml +++ b/content/api_en/PShape_addChild.xml @@ -11,13 +11,13 @@ path, rectangle, and circle are added to a parent PShape variable named house that is a GROUP. ]]> diff --git a/content/api_en/smooth.xml b/content/api_en/smooth.xml index 75a727274..c19f7a303 100755 --- a/content/api_en/smooth.xml +++ b/content/api_en/smooth.xml @@ -75,7 +75,7 @@ The default renderer uses smooth(3) by default. This is bicubic smoothing

    With Processing 3.0, smooth() is different than before. It was common to use smooth() and noSmooth() to turn on and off antialiasing within a sketch. Now, because of how the software has changed, smooth() can only be set once within a sketch. It can be used either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). The noSmooth() function also follows the same rules.

    -When smooth() is used with a PGraphics object, it should be run right after the object is created withcreateGraphics(), as shown in the Reference in the third example. +When smooth() is used with a PGraphics object, it should be run right after the object is created with createGraphics(), as shown in the Reference in the third example. ]]> From b6da05716c022c927651ff4f1892b696510e9510 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 10:52:03 -0700 Subject: [PATCH 577/772] attempt to link readLine() from BufferedReader reference --- content/api_en/PShape_addChild.xml | 2 +- content/api_en/include/BufferedReader.xml | 11 +++-------- content/api_en/include/String.xml | 3 --- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/content/api_en/PShape_addChild.xml b/content/api_en/PShape_addChild.xml index 20d7fa700..36dcc867a 100644 --- a/content/api_en/PShape_addChild.xml +++ b/content/api_en/PShape_addChild.xml @@ -44,7 +44,7 @@ void draw() { path, rectangle, and circle are added to a parent PShape variable named house that is a GROUP. +Adds a child PShape to a parent PShape that is defined as a GROUP. In the example, the three shapes path, rectangle, and circle are added to a parent PShape variable named house that is a GROUP. ]]> diff --git a/content/api_en/include/BufferedReader.xml b/content/api_en/include/BufferedReader.xml index 354daa453..88f4c9b95 100644 --- a/content/api_en/include/BufferedReader.xml +++ b/content/api_en/include/BufferedReader.xml @@ -45,18 +45,13 @@ A BufferedReader object is used to read files line-by-line as individual Starting with Processing release 0134, all files loaded and saved by the Processing API use UTF-8 encoding. In previous releases, the default encoding for your platform was used, which causes problems when files are moved to other platforms. ]]> + + readLine() returns a String that is the current line in the text file - - - - - - - @@ -67,7 +62,7 @@ catch 1.0 -Function +Object Core diff --git a/content/api_en/include/String.xml b/content/api_en/include/String.xml index 37de6b086..886c433b9 100755 --- a/content/api_en/include/String.xml +++ b/content/api_en/include/String.xml @@ -107,7 +107,6 @@ String(data, offset, length) int: number of characters - @@ -121,6 +120,4 @@ text() PDE - - From 7eaf481905a204becbbc1f131aed857fadbbc305 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 10:58:54 -0700 Subject: [PATCH 578/772] attempt to link readLine() from BufferedReader reference, 2 --- content/api_en/include/BufferedReader.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/content/api_en/include/BufferedReader.xml b/content/api_en/include/BufferedReader.xml index 88f4c9b95..c7ef0855d 100644 --- a/content/api_en/include/BufferedReader.xml +++ b/content/api_en/include/BufferedReader.xml @@ -52,6 +52,8 @@ Starting with Processing release 0134, all files loaded and saved by the Process returns a String that is the current line in the text file + + @@ -64,6 +66,7 @@ catch Object -Core +PDE + From 184485fae15e8dddbc4344296a2f687bdbaa76af Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 11:00:20 -0700 Subject: [PATCH 579/772] attempt to link readLine() from BufferedReader reference, 3 --- content/api_en/include/BufferedReader.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/include/BufferedReader.xml b/content/api_en/include/BufferedReader.xml index c7ef0855d..dd28dd56d 100644 --- a/content/api_en/include/BufferedReader.xml +++ b/content/api_en/include/BufferedReader.xml @@ -52,7 +52,7 @@ Starting with Processing release 0134, all files loaded and saved by the Process returns a String that is the current line in the text file - + From dd17995694731b0342a5ad3adfe09b0497e9f87d Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 11:01:08 -0700 Subject: [PATCH 580/772] attempt to link readLine() from BufferedReader reference, 4 --- content/api_en/include/BufferedReader.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/include/BufferedReader.xml b/content/api_en/include/BufferedReader.xml index dd28dd56d..c7ef0855d 100644 --- a/content/api_en/include/BufferedReader.xml +++ b/content/api_en/include/BufferedReader.xml @@ -52,7 +52,7 @@ Starting with Processing release 0134, all files loaded and saved by the Process returns a String that is the current line in the text file - + From 637ea2c3c158dcd8489ec51e2cfd7b509ce81b80 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 12:44:44 -0700 Subject: [PATCH 581/772] Slight changes to pixels[] reference descriptions --- content/api_en/PImage_pixels.xml | 2 +- content/api_en/loadPixels.xml | 2 +- content/api_en/pixels.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/api_en/PImage_pixels.xml b/content/api_en/PImage_pixels.xml index 68203cae0..1f2a363e2 100755 --- a/content/api_en/PImage_pixels.xml +++ b/content/api_en/PImage_pixels.xml @@ -31,7 +31,7 @@ void draw() { +The pixels[] array contains the values for all the pixels in the image. These values are of the color datatype. This array is the size of the image, meaning if the image is 100 x 100 pixels, there will be 10,000 values and if the window is 200 x 300 pixels, there will be 60,000 values.

    Before accessing this array, the data must loaded with the loadPixels() method. Failure to do so may result in a NullPointerException. After the array data has been modified, the updatePixels() method must be run to update the content of the display window. ]]>
    diff --git a/content/api_en/loadPixels.xml b/content/api_en/loadPixels.xml index 60e106578..b3f2a0751 100755 --- a/content/api_en/loadPixels.xml +++ b/content/api_en/loadPixels.xml @@ -24,7 +24,7 @@ updatePixels(); pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again.
    +Loads the pixel data of the current display window into the pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again.

    Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must have previously called loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. ]]>
    diff --git a/content/api_en/pixels.xml b/content/api_en/pixels.xml index b7ac0be33..b17fcc83c 100755 --- a/content/api_en/pixels.xml +++ b/content/api_en/pixels.xml @@ -21,7 +21,7 @@ updatePixels(); +The pixels[] array contains the values for all the pixels in the display window. These values are of the color datatype. This array is defined by the size of the display window. For example, if the window is 100 x 100 pixels, there will be 10,000 values and if the window is 200 x 300 pixels, there will be 60,000 values.

    Before accessing this array, the data must loaded with the loadPixels() function. Failure to do so may result in a NullPointerException. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again. After pixels has been modified, the updatePixels() function must be run to update the content of the display window. ]]>
    From 072b8e4ef8807b5e4dde2c57c4c9cbb7e85ce5c1 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 12:51:31 -0700 Subject: [PATCH 582/772] Slight changes to pixels[] reference descriptions --- content/api_en/PImage_loadPixels.xml | 2 -- content/api_en/PImage_updatePixels.xml | 4 ---- content/api_en/loadPixels.xml | 4 +--- content/api_en/updatePixels.xml | 4 ---- 4 files changed, 1 insertion(+), 13 deletions(-) diff --git a/content/api_en/PImage_loadPixels.xml b/content/api_en/PImage_loadPixels.xml index 23c5f9730..a9c353f84 100644 --- a/content/api_en/PImage_loadPixels.xml +++ b/content/api_en/PImage_loadPixels.xml @@ -34,8 +34,6 @@ void draw() { pixels[] array. This function must always be called before reading from or writing to pixels[]. -

    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must have previously called loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. ]]>
    diff --git a/content/api_en/PImage_updatePixels.xml b/content/api_en/PImage_updatePixels.xml index 7e713fffd..470c33d07 100644 --- a/content/api_en/PImage_updatePixels.xml +++ b/content/api_en/PImage_updatePixels.xml @@ -34,10 +34,6 @@ void draw() { pixels[] array. Use in conjunction with loadPixels(). If you're only reading pixels from the array, there's no need to call updatePixels(). -

    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. -

    -Currently, none of the renderers use the additional parameters to updatePixels(), however this may be implemented in the future. ]]>
    diff --git a/content/api_en/loadPixels.xml b/content/api_en/loadPixels.xml index b3f2a0751..d5c4b7c17 100755 --- a/content/api_en/loadPixels.xml +++ b/content/api_en/loadPixels.xml @@ -24,9 +24,7 @@ updatePixels(); pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again.
    -
    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must have previously called loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. +Loads the pixel data of the current display window into the pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again. ]]>
    diff --git a/content/api_en/updatePixels.xml b/content/api_en/updatePixels.xml index 200667c22..fb3ba9af1 100755 --- a/content/api_en/updatePixels.xml +++ b/content/api_en/updatePixels.xml @@ -24,10 +24,6 @@ updatePixels(); pixels[] array. Use in conjunction with loadPixels(). If you're only reading pixels from the array, there's no need to call updatePixels() — updating is only necessary to apply changes. -

    -Certain renderers may or may not seem to require loadPixels() or updatePixels(). However, the rule is that any time you want to manipulate the pixels[] array, you must first call loadPixels(), and after changes have been made, call updatePixels(). Even if the renderer may not seem to use this function in the current Processing release, this will always be subject to change. -

    -Currently, while none of the renderers use the additional parameters to updatePixels(), this may be implemented in the future. ]]>
    From dacf00f8ed16d0bffa466c6eb9bfa17c9e810c95 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 13:03:35 -0700 Subject: [PATCH 583/772] Move hint() to 'includes' folder, wasn't building where it was --- content/api_en/{ => include}/hint.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/api_en/{ => include}/hint.xml (100%) diff --git a/content/api_en/hint.xml b/content/api_en/include/hint.xml similarity index 100% rename from content/api_en/hint.xml rename to content/api_en/include/hint.xml From 70a06a742754d9a22a4619980f7c866ab8ddd71b Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 13:30:49 -0700 Subject: [PATCH 584/772] Further data for hint() reference --- content/api_en/include/hint.xml | 45 ++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/content/api_en/include/hint.xml b/content/api_en/include/hint.xml index 7068ab8c8..a48311069 100644 --- a/content/api_en/include/hint.xml +++ b/content/api_en/include/hint.xml @@ -6,7 +6,27 @@ - +function + + + + + hint() to allow people to tune the settings for their particular sketch. Implementing a hint() is a last resort that's used when a more elegant solution cannot be found. Some options might graduate to standard features instead of hints over time, or be added and removed between (major) releases. @@ -48,4 +68,27 @@ Forces the P3D renderer to draw each shape (including its strokes) separately, i Enables stroke geometry (lines and points) to be affected by the perspective, meaning that they will look smaller as they move away from the camera. ]]> + +hint(which) + + + + + + + +void + + +PGraphics +createGraphics() +size() + + +1.0 + +Function + +PDE + From 67b3b29f5007800b1d8246b4dba689b1c8f68b31 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 14:16:34 -0700 Subject: [PATCH 585/772] PSurface methods added to reference --- content/api_en/include/setLocation.xml | 60 +++++++++++++++++++++++++ content/api_en/include/setResizable.xml | 55 +++++++++++++++++++++++ content/api_en/include/setTitle.xml | 55 +++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 content/api_en/include/setLocation.xml create mode 100644 content/api_en/include/setResizable.xml create mode 100644 content/api_en/include/setTitle.xml diff --git a/content/api_en/include/setLocation.xml b/content/api_en/include/setLocation.xml new file mode 100644 index 000000000..f2a554c8d --- /dev/null +++ b/content/api_en/include/setLocation.xml @@ -0,0 +1,60 @@ + + +setLocation() + +Structure + + + +function + + + + + + +setLocation() function defines the position of the Processing sketch in relation to the upper-left corner of the computer screen. +

    +There are more features of PSurface in the Processing JavaDoc. +]]>
    + + +surface.setLocation(x, y) + + + + + + + + + + + + +void + + + + +3.0 + +Function + +PDE + +
    diff --git a/content/api_en/include/setResizable.xml b/content/api_en/include/setResizable.xml new file mode 100644 index 000000000..d133a108e --- /dev/null +++ b/content/api_en/include/setResizable.xml @@ -0,0 +1,55 @@ + + +setResizable() + +Structure + + + +function + + + + + + +surface.setResizable(true) is used within a sketch, the window can be resized while it's running. +

    +There are more features of PSurface in the Processing JavaDoc. +]]>
    + + +surface.setResizable(resizable) + + + + + + + +void + + + + +3.0 + +Function + +PDE + +
    diff --git a/content/api_en/include/setTitle.xml b/content/api_en/include/setTitle.xml new file mode 100644 index 000000000..ef7e9b05a --- /dev/null +++ b/content/api_en/include/setTitle.xml @@ -0,0 +1,55 @@ + + +setTitle() + +Structure + + + +function + + + + + + +
    +There are more features of PSurface in the Processing JavaDoc. +]]>
    + + +surface.setTitle(title) + + + + + + + +void + + + + +3.0 + +Function + +PDE + +
    From cdf89e7a3e7adcda261131ae2458fed3c283b422 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 14:21:51 -0700 Subject: [PATCH 586/772] Corrections to PSurface methods in reference --- content/api_en/include/setLocation.xml | 2 +- content/api_en/include/setResizable.xml | 2 +- content/api_en/include/setTitle.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/api_en/include/setLocation.xml b/content/api_en/include/setLocation.xml index f2a554c8d..c54f0ee04 100644 --- a/content/api_en/include/setLocation.xml +++ b/content/api_en/include/setLocation.xml @@ -29,7 +29,7 @@ void draw() { setLocation() function defines the position of the Processing sketch in relation to the upper-left corner of the computer screen.

    -There are more features of PSurface in the Processing JavaDoc. +There are more features of PSurface documented in the Processing JavaDoc. ]]>
    diff --git a/content/api_en/include/setResizable.xml b/content/api_en/include/setResizable.xml index d133a108e..3b4261790 100644 --- a/content/api_en/include/setResizable.xml +++ b/content/api_en/include/setResizable.xml @@ -29,7 +29,7 @@ void draw() { surface.setResizable(true) is used within a sketch, the window can be resized while it's running.

    -There are more features of PSurface in the Processing JavaDoc. +There are more features of PSurface documented in the Processing JavaDoc. ]]>
    diff --git a/content/api_en/include/setTitle.xml b/content/api_en/include/setTitle.xml index ef7e9b05a..1c18e6d22 100644 --- a/content/api_en/include/setTitle.xml +++ b/content/api_en/include/setTitle.xml @@ -27,9 +27,9 @@ void draw() { setTitle() function defines the title to appear at the top of the sketch window.

    -There are more features of PSurface in the Processing JavaDoc. +There are more features of PSurface documented in the Processing JavaDoc. ]]>
    From 6f213bc69d82a9d4a24bbe0a51af3d26fb561aad Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 14:55:16 -0700 Subject: [PATCH 587/772] Changes to Reference for pixel density clarification --- content/api_en/pixelDensity.xml | 5 +++-- content/api_en/pixelHeight.xml | 39 +++++++++++++++++++++++++++++---- content/api_en/pixelWidth.xml | 39 +++++++++++++++++++++++++++++---- content/api_en/pixels.xml | 4 ++-- 4 files changed, 75 insertions(+), 12 deletions(-) diff --git a/content/api_en/pixelDensity.xml b/content/api_en/pixelDensity.xml index 02d96afe8..35b15bac1 100755 --- a/content/api_en/pixelDensity.xml +++ b/content/api_en/pixelDensity.xml @@ -57,9 +57,10 @@ void draw() { size() in a program without a setup() and used within setup() when a program has one. The pixelDensity() should only be used with hardcoded numbers (in almost all cases this number will be 2) or in combination with displayDensity() as in the third example above. - +

    +When the pixel density is set to more than 1, it changes all of the pixel operations including the way get(), set(), blend(), copy(), and updatePixels() all work. See the reference for pixelWidth and pixelHeight for more information. +

    To use variables as the arguments to pixelDensity() function, place the pixelDensity() function within the settings() function. There is more information about this on the settings() reference page. - ]]>
    diff --git a/content/api_en/pixelHeight.xml b/content/api_en/pixelHeight.xml index 8be6e94d4..1a2e15e63 100755 --- a/content/api_en/pixelHeight.xml +++ b/content/api_en/pixelHeight.xml @@ -8,10 +8,41 @@ + + + + diff --git a/content/api_en/pixelWidth.xml b/content/api_en/pixelWidth.xml index 45ab35d9e..5f88fa136 100755 --- a/content/api_en/pixelWidth.xml +++ b/content/api_en/pixelWidth.xml @@ -8,10 +8,41 @@ + + + + diff --git a/content/api_en/pixels.xml b/content/api_en/pixels.xml index b17fcc83c..536f50338 100755 --- a/content/api_en/pixels.xml +++ b/content/api_en/pixels.xml @@ -21,8 +21,8 @@ updatePixels(); pixels[] array contains the values for all the pixels in the display window. These values are of the color datatype. This array is defined by the size of the display window. For example, if the window is 100 x 100 pixels, there will be 10,000 values and if the window is 200 x 300 pixels, there will be 60,000 values.
    -
    +The pixels[] array contains the values for all the pixels in the display window. These values are of the color datatype. This array is defined by the size of the display window. For example, if the window is 100 x 100 pixels, there will be 10,000 values and if the window is 200 x 300 pixels, there will be 60,000 values. When the pixel density is set to higher than 1 with the pixelDensity() function, these values will change. See the reference for pixelWidth or pixelHeight for more information. +

    Before accessing this array, the data must loaded with the loadPixels() function. Failure to do so may result in a NullPointerException. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again. After pixels has been modified, the updatePixels() function must be run to update the content of the display window. ]]>
    From 73cac46fbe211d7758eb8b4f2f96675c059115a3 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 14:58:20 -0700 Subject: [PATCH 588/772] Little glitch with get() reference, unclosed tag --- content/api_en/get.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/api_en/get.xml b/content/api_en/get.xml index 89683590c..be56dc889 100755 --- a/content/api_en/get.xml +++ b/content/api_en/get.xml @@ -31,12 +31,12 @@ rect(25, 25, 50, 50); x and y parameters to get the value of one pixel. Get a section of the display window by specifying additional w and h parameters. When getting an image, the x and y parameters define the coordinates for the upper-left corner of the image, regardless of the current imageMode().
    -
    -If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB format.
    -
    -If a width and a height are specified, get(x, y, w, h) returns a PImage corresponding to the part of the original PImage where the top left pixel is at the (x, y) position with a width of w a height of h.
    -
    +Reads the color of any pixel or grabs a section of an image. If no parameters are specified, the entire image is returned. Use the x and y parameters to get the value of one pixel. Get a section of the display window by specifying additional w and h parameters. When getting an image, the x and y parameters define the coordinates for the upper-left corner of the image, regardless of the current imageMode(). +

    +If the pixel requested is outside of the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB format. +

    +If a width and a height are specified, get(x, y, w, h) returns a PImage corresponding to the part of the original PImage where the top left pixel is at the (x, y) position with a width of w a height of h. +

    Getting the color of a single pixel with get(x, y) is easy, but not as fast as grabbing the data directly from pixels[]. The equivalent statement to get(x, y) using pixels[] is pixels[y*width+x]. See the reference for pixels[] for more information. ]]>
    From c7c7f040e54ce80c0353ada41dfaf3d7190f429b Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 16:00:39 -0700 Subject: [PATCH 589/772] Fix a link from the multiply reference page --- content/api_en/attrib.xml | 63 +++++++++++++++++++++++++++++ content/api_en/include/multiply.xml | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 content/api_en/attrib.xml diff --git a/content/api_en/attrib.xml b/content/api_en/attrib.xml new file mode 100644 index 000000000..3d21bc538 --- /dev/null +++ b/content/api_en/attrib.xml @@ -0,0 +1,63 @@ + + + +attrib() + +Rendering + + + + + + + + + + +attrib() function attaches custom values to each vertex in the scene. By default, Processing handles several per-vertex attributes: position, color, normal, texture coordinates, etc. These attributes are used by the renderer to determine how the geometry will look on the screen as result of applying the built-in shaders that compute texture, lighting, etc. However, if the coder sets a custom shader that does some additional rendering calculations, then she might need to pass additional information to the the shader in the form of custom attributes. These attributes can be of three types: position, normal, color, and other. The first three are meant to specify xyz coordinates, normal coordinates, and color components, respectively. The third type can be use to pass any kind of attribute value. +]]> + + diff --git a/content/api_en/include/multiply.xml b/content/api_en/include/multiply.xml index 20c71bb1f..7c2431aaa 100755 --- a/content/api_en/include/multiply.xml +++ b/content/api_en/include/multiply.xml @@ -37,7 +37,7 @@ Multiplies the values of the two parameters. Multiplication is equivalent to a s -+ (add) ++ (addition) / (divide) From 9437128705a3be532ec9b120813741dedb2541fa Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 16:03:23 -0700 Subject: [PATCH 590/772] Fix a link from the multiply reference page, 2 --- content/api_en/include/multiply.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/content/api_en/include/multiply.xml b/content/api_en/include/multiply.xml index 7c2431aaa..a125ad6fd 100755 --- a/content/api_en/include/multiply.xml +++ b/content/api_en/include/multiply.xml @@ -48,10 +48,4 @@ Multiplies the values of the two parameters. Multiplication is equivalent to a s PDE - - - - - - From b11b3a2ba4e435002995894f43aac2d8a77832ab Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 26 Jul 2019 16:10:49 -0700 Subject: [PATCH 591/772] Old CSS removal --- css/style.css | 184 +------------------------------------------------- 1 file changed, 2 insertions(+), 182 deletions(-) diff --git a/css/style.css b/css/style.css index f7b639c5a..1726c528c 100755 --- a/css/style.css +++ b/css/style.css @@ -7,12 +7,10 @@ Reworked by CR, 23 Sep 2011 Reworked by Jon Gacnik, 19 Feb 2013 Created: 2005.08.29 04:28PM -Last Modified: 2014.11.15 by Scott Murray +Last Modified: 2019.07.26 by Casey Reas to remove Foundation Site CSS "-f" */ - - @font-face { font-family: 'theSerifItalic'; src: url(fonts/TheSerif_B4_Italic.eot), @@ -54,7 +52,6 @@ Last Modified: 2014.11.15 by Scott Murray } - /* ================ GLOBAL ================== */ body { @@ -102,6 +99,7 @@ a.large-link:before { content: ''; } + /* ================ COVER SLIDESHOW ================== */ #slideshow { @@ -127,7 +125,6 @@ a.large-link:before { } - /* ================ LAYOUT ================== */ #container { @@ -137,7 +134,6 @@ a.large-link:before { } - /* ================ RIBBON ================== */ #ribbon { @@ -222,16 +218,6 @@ a.large-link:before { position: relative; } -#header-f { - width: 900px; - height: 106px; - margin-bottom: 30px; - overflow: hidden; - background: #0c2033 url(/images/processing-site.png) center center no-repeat; - background-size: 900px 106px; - position: relative; -} - #header .processing-logo { width: 206px; height: 38px; @@ -243,17 +229,6 @@ a.large-link:before { background-image: linear-gradient(transparent, transparent), url(../img/processing-logo.svg); } -#header-f .processing-logo { - width: 370px; - height: 38px; - margin: 20px 0 0 30px; - /* -- NEW FOUNDATION LOGO GOES HERE -- */ - background: transparent url(/images/processing-foundation-logo.svg) center center no-repeat; - background-image: -webkit-linear-gradient(transparent, transparent), url(/images/processing-foundation-logo.svg); - background-image: -moz-linear-gradient(transparent, transparent), url(/images/processing-foundation-logo.svg); - background-image: linear-gradient(transparent, transparent), url(/images/processing-foundation-logo.svg); -} - #header .processing-logo.no-cover:before { position: relative; top: 3px; @@ -262,14 +237,6 @@ a.large-link:before { content: '\2039'; } -#header-f .processing-logo.no-cover:before { - position: relative; - top: 3px; - left: -18px; - font-size: 24px; - content: '\2039'; -} - #Overview2 .processing-logo.no-cover:before { position: relative; top: 3px; @@ -284,23 +251,11 @@ a.large-link:before { color: white; } -#header-f a { - font-family: 'theSerif', 'Enriqueta', georgia, times, sans-serif; - text-decoration: none; - border: none; - color: white; -} - #header h1 { display: none; float: left; } -#header-f h1 { - display: none; - float: left; -} - #header form { position: absolute; top: 20px; @@ -309,14 +264,6 @@ a.large-link:before { color: #959595; } -#header-f form { - position: absolute; - top: 20px; - right: 5px; - width: 176px; - color: #959595; -} - #header form input { float: left; border: 1px solid #136796; @@ -328,29 +275,12 @@ a.large-link:before { color: #959595; } -#header-f form input { - float: left; - border: 1px solid #136796; - outline: none; - height: 18px; - background: #fff; - font-family: 'theSerif', 'Enriqueta', georgia, times, serif; - font-size: 1em; - color: #959595; -} - #header form input[type="text"]{ padding-left: 3px; width: 127px; border-right: none; } -#header-f form input[type="text"]{ - padding-left: 3px; - width: 127px; - border-right: none; -} - #header form input[type="submit"]{ height: 22px; width: 22px; @@ -362,21 +292,8 @@ a.large-link:before { cursor: pointer; } -#header-f form input[type="submit"]{ - height: 22px; - width: 22px; - border-left: none; - background: white url(/images/search-f.svg) center center no-repeat; - background-image: -webkit-linear-gradient(transparent, transparent), url(/images/search-f.svg); - background-image: -moz-linear-gradient(transparent, transparent), url(/images/search-f.svg); - background-image: linear-gradient(transparent, transparent), url(/images/search-f.svg); - cursor: pointer; -} - #header form p { margin: 0; } -#header-f form p { margin: 0; } - /* ================ NAVBAR ================== */ #navigation { @@ -428,27 +345,6 @@ a.large-link:before { padding-top: 10px; } -/* === FOUNDATION FOOTER === */ - -#footer-f { - clear: both; - padding: 100px 30px 20px 30px; - line-height: 23px; - color: #959595; -} -#footer-f a { - color: #959595; - border-bottom: 1px solid #CECECE; -} -#footer-f #copyright, -#footer-f #colophon { - -} -#footer-f #copyright { - border-top: 1px solid #A6BCCF; - padding-top: 10px; -} - /* ================ TYPOGRAPHY ================== */ h1, h2, h3, h4, h5, h6 @@ -1097,37 +993,6 @@ h2 { margin-bottom: 0; margin-top: 0;} #Tutorials .colthree { width: 224px; float: left; margin-right: 20px; } #Tutorials h2 { margin: 0 0 20px 0; font-size: 1em; } -/*#Tutorials p { - margin-top: 2.0em; - margin-bottom: 2.0em; - font-size : 1.0em; - font-weight : normal; - line-height : 2.0em; - }*/ - -/*#Tutorials h3 { - font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size : 1.3em; - font-weight : bold; - margin-bottom : 0.4em; - margin-top : 1.8em; -} - -#Tutorials h5 { - font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; - font-weight : bold; - font-size : 1.0em; - margin-bottom : 0.4em; - margin-top : 1.4em; -}*/ - -/*#Tutorials h1 { - font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size : 2.0em; - font-weight : normal; - font-style : normal; -}*/ - /*--------------------TUTORIAL HEADER SPACING------------------*/ .Tutorials { line-height: 0em; } @@ -1476,48 +1341,3 @@ div.examples-nav img { position: relative; top: 11px; } border: none; border-top: 1px solid #CBCBCB; } - -/**************************************************************** updates, courses, happenings ***/ -/* -#Courses .content, #Updates .content, #Happenings .content { - width: 595px; - } -#Updates h2 { margin-top: 0 0 20px 0; } - - -.course-desc p { margin: 0; } -.course-desc p.date { margin: 0; } -.course-desc h3 { margin: 0; font-size: 1em; font-weight: bold; line-height: 1em; } -.course-desc { margin-bottom: 2em; } -*/ - -/************************************************************** comparison ***/ -/* - -#Compare h1 { margin-top: 2em; } -#Compare h2 { margin-bottom: 0; } -#Compare .threecol { float: left; width: 210px; margin-right: 20px; } -#Compare .threecol p { margin-top: 0; } - - -#Compare .content { - margin-left : 55px; - margin-right : 0px; - position: relative; -} -*/ - -/************************************************************** troubleshooting ***/ -/* -#Troubleshooting h1 { margin-top: 2em; } -#Troubleshooting h5 a { float: left; margin-left: -30px; } -ul.nostyle { margin: 0; padding: 0; list-style: none outside; } -#Troubleshooting td { padding-bottom: 1em; } -*/ - -/************************************************************** FAQ ***/ - -/* -#FAQ h5 a { float: left; margin-left: -30px; } -*/ - From fd781a70b3d9872f1e9c9aff5dfda5e0ee37e29c Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 28 Jul 2019 09:34:48 -0400 Subject: [PATCH 592/772] Update a couple of links. --- contrib_generate/sources.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 718794334..40b3fe0fd 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -131,7 +131,7 @@ 016 \ http://www.silentlycrashing.net/ezgestures/files/ezgestures.txt 025 \ http://jorgecardoso.eu/processing/NXTComm/NXTComm.txt 026 \ http://jorgecardoso.eu/processing/MindSetProcessing/download/MindsetProcessing.txt -039 \ https://github.com/codeanticode/tablet/releases/tag/latestv2/Tablet.txt +039 \ https://github.com/codeanticode/tablet/releases/download/latestv2/Tablet.txt 060 \ https://dl.dropbox.com/u/87680069/gamepad.txt 067 \ http://www.graffitiresearchlab.de/wp-content/uploads/proJMS.txt 084 \ http://iddi.github.io/oocsi-processing/oocsi.txt @@ -248,7 +248,7 @@ [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt 088 \ https://raw.github.com/andreaskoller/Fontastic/master/download/Fontastic.txt -116 \ https://github.com/prisonerjohn/NextText/releases/download/latest/NextText.txt +# 116 \ https://github.com/prisonerjohn/NextText/releases/download/latest/NextText.txt [Library : Video & Vision] 150 \ https://github.com/processing/processing-video/releases/download/latest/video.txt From eecd4d2427060a8606fd8bc6465c6b13bdb698b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Vel=C3=A1zquez?= Date: Fri, 2 Aug 2019 02:53:00 +0000 Subject: [PATCH 593/772] Updated servo example graphic changed the I/O port of the example graphic to match the change in the code --- .../tutorials/electronics/imgs/fg39-16.svg | 5019 +++++++++++++---- 1 file changed, 3907 insertions(+), 1112 deletions(-) diff --git a/content/static/tutorials/electronics/imgs/fg39-16.svg b/content/static/tutorials/electronics/imgs/fg39-16.svg index 46abb2371..92324f100 100644 --- a/content/static/tutorials/electronics/imgs/fg39-16.svg +++ b/content/static/tutorials/electronics/imgs/fg39-16.svg @@ -1,1112 +1,3907 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +image/svg+xml \ No newline at end of file From d2139e54bef5f989bd5ae95c846aa6f54daf908d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Vel=C3=A1zquez?= Date: Fri, 2 Aug 2019 03:01:54 +0000 Subject: [PATCH 594/772] Fixed the the servo control example CHanged the servo control I/O pin on the Arduino sketch and added the option of changing the serial port on the Processing sketch --- content/static/tutorials/electronics/index.html | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/content/static/tutorials/electronics/index.html b/content/static/tutorials/electronics/index.html index 9777b0f8f..a36a9f284 100644 --- a/content/static/tutorials/electronics/index.html +++ b/content/static/tutorials/electronics/index.html @@ -635,9 +635,10 @@

    Code

     // Read data from the serial port and set the position of a servomotor 
     // according to the value
    +#include 
     
     Servo myservo;                   // Create servo object to control a servo
    -int servoPin = 4;                // Connect yellow servo wire to digital I/O pin 4 
    +int servoPin = 3;                // Connect yellow servo wire to digital I/O pin 3 (must be PWM) 
     int val = 0;                     // Data received from the serial port
     
     void setup() {
    @@ -672,7 +673,12 @@ 

    Code

    noStroke(); frameRate(10); // Open the port that the board is connected to and use the same speed (9600 bps) - port = new Serial(this, 9600); + port = new Serial(this, 9600); // Comment this line if it's not the correct port + // If the above does not work uncomment the lines below to choose the correct port + // List all the available serial ports, preceded by their index number: + //printArray(Serial.list()); + // Instead of 0 input the index number of the port you are using: + //port = new Serial(this, Serial.list()[0], 9600); } void draw() { @@ -918,4 +924,4 @@

    Resources

    - \ No newline at end of file + From 867a74b0f386a6a40bb46a547a49514c7c6c12f8 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 6 Aug 2019 07:58:18 -0400 Subject: [PATCH 595/772] Update R mode URL. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 40b3fe0fd..22fcb08f2 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -318,4 +318,4 @@ 162 \ https://github.com/joelmoniz/REPLmode/releases/download/latest/REPLMode.txt 169 \ https://py.processing.org/3/PythonMode.txt 199 \ https://github.com/fathominfo/processing-p5js-mode/releases/download/latest/p5jsMode.txt -220 \ http://gaocegege.com/Processing.R/RLangMode.txt +220 \ https://github.com/processing-r/Processing.R/releases/latest/download/RLangMode.txt From a4229884bb9461e242057b15965e70d6cc878a8e Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 7 Aug 2019 13:03:52 -0400 Subject: [PATCH 596/772] Update URL for sftp library. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 22fcb08f2..0e5c844e1 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -43,7 +43,7 @@ [Library : Data] 008 \ http://www.saint-clair.net/download/gml4u/GML4U.txt -011 \ http://www.shiffman.net/p5/libraries/sftp/sftp.txt +011 \ https://github.com/shiffman/SFTP-Processing/releases/download/latest/sftp.txt 012 \ http://www.shiffman.net/p5/libraries/qrcode/qrcodeprocessing.txt 040 \ http://r-s-g.org/carnivore/download/carnivore_p5lib.txt # 042 \ http://wyldco.com/romefeeder/download/romefeeder.txt From 43728959af23b689016367dc89bc9a2f2c769019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Vel=C3=A1zquez?= Date: Thu, 8 Aug 2019 02:12:18 +0000 Subject: [PATCH 597/772] fixed encoding of character on sketch 4A changed the "<" and ">" characters for their HTML entities --- content/static/tutorials/electronics/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/tutorials/electronics/index.html b/content/static/tutorials/electronics/index.html index a36a9f284..02b31bdcc 100644 --- a/content/static/tutorials/electronics/index.html +++ b/content/static/tutorials/electronics/index.html @@ -635,7 +635,7 @@

    Code

     // Read data from the serial port and set the position of a servomotor 
     // according to the value
    -#include 
    +#include <Servo.h>
     
     Servo myservo;                   // Create servo object to control a servo
     int servoPin = 3;                // Connect yellow servo wire to digital I/O pin 3 (must be PWM) 
    
    From b26cf5412162495b882d803274dc3f7380a3552c Mon Sep 17 00:00:00 2001
    From: Elie Zananiri 
    Date: Sun, 1 Sep 2019 09:54:14 -0400
    Subject: [PATCH 598/772] Add Coding Creative examples.
    
    ---
     contrib_generate/sources.conf | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf
    index 22fcb08f2..351c80329 100644
    --- a/contrib_generate/sources.conf
    +++ b/contrib_generate/sources.conf
    @@ -1,4 +1,4 @@
    -# Next ID: 243
    +# Next ID: 244
     # Increment after assigning ID to new contribution
     
     [Library : 3D]
    @@ -285,6 +285,7 @@
     [Examples : ]
     194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt
     226 \ https://github.com/Apress/processing-for-android/releases/download/latest/processing-for-android-examples.txt
    +243 \ http://coding-creative.dringtech.com/examples/coding-creative-examples.txt
     
     [Tool : ]
     020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt
    
    From 06c73398c5caf09731721847490acb15c3428972 Mon Sep 17 00:00:00 2001
    From: Jeremy Douglass 
    Date: Wed, 11 Sep 2019 12:12:32 -0700
    Subject: [PATCH 599/772] Update nf to show right-hand formatting examples
    
    closes #774
    ---
     content/api_en/nf.xml | 7 ++++++-
     1 file changed, 6 insertions(+), 1 deletion(-)
    
    diff --git a/content/api_en/nf.xml b/content/api_en/nf.xml
    index f1e6123dd..295db43ac 100755
    --- a/content/api_en/nf.xml
    +++ b/content/api_en/nf.xml
    @@ -26,11 +26,16 @@ String se = nf(e, 5, 3);
     println(se);  // Prints "00040.200"
     String sf = nf(f, 3, 5);
     println(sf);  // Prints "009.01200"
    +
    +String sf2 = nf(f, 0, 5);
    +println(sf2);  // Prints "9.01200"
    +String sf3 = nf(f, 0, 2);
    +println(sf3);  // Prints "9.01"
     ]]>
     
     
     digits, left, and right parameters should always be positive integers.

    As shown in the above example, nf() is used to add zeros to the left and/or right of a number. This is typically for aligning a list of numbers. To remove digits from a floating-point number, use the int(), ceil(), floor(), or round() functions. +Utility function for formatting numbers into strings. There are two versions: one for formatting floats, and one for formatting ints. The values for the digits and right parameters should always be positive integers. The left parameter should be positive or 0. If it is zero, only the right side is formatted.

    As shown in the above example, nf() is used to add zeros to the left and/or right of a number. This is typically for aligning a list of numbers. To remove digits from a floating-point number, use the int(), ceil(), floor(), or round() functions. ]]> From 284093c3490b3207d3673fd14e88d69b7b909930 Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Wed, 11 Sep 2019 12:15:24 -0700 Subject: [PATCH 600/772] Revert "Add unbinary int signature" This reverts commit 1b00fd0194087d195929aafbe37c50a011cd6b4a. --- content/api_en/unbinary.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/content/api_en/unbinary.xml b/content/api_en/unbinary.xml index c4f3d0388..dcab5cbf8 100755 --- a/content/api_en/unbinary.xml +++ b/content/api_en/unbinary.xml @@ -17,20 +17,11 @@ String s3 = "00000100"; println(unbinary(s1)); // Prints "16" println(unbinary(s2)); // Prints "8" println(unbinary(s3)); // Prints "4" - -int i1 = 10000; -int i2 = 1000; -int i3 = 100 -println(unbinary(i1)); // Prints "16" -println(unbinary(i2)); // Prints "8" -println(unbinary(i3)); // Prints "4" ]]> String representation of a binary number to its equivalent integer value. For example, unbinary("00001000") will return 8. - -Alternately, converts an int representation of a binary number to its equivalent integer value. For example, unbinary(1000) will return 8. ]]> From d84717592fd34bc05e9c00a21b6c7d2be84f840c Mon Sep 17 00:00:00 2001 From: bclausdorff Date: Thu, 12 Sep 2019 13:11:41 +0200 Subject: [PATCH 601/772] Brightness example: Fix maximum value for brightness --- content/examples/Basics/Color/Brightness/Brightness.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples/Basics/Color/Brightness/Brightness.pde b/content/examples/Basics/Color/Brightness/Brightness.pde index 261fdce38..7f0e4093a 100644 --- a/content/examples/Basics/Color/Brightness/Brightness.pde +++ b/content/examples/Basics/Color/Brightness/Brightness.pde @@ -11,7 +11,7 @@ int lastBar = -1; void setup() { size(640, 360); - colorMode(HSB, width, 100, width); + colorMode(HSB, width, 100, height); noStroke(); background(0); } From ad8419d66907f9cfddc21cc16962d921caf9849c Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 23 Sep 2019 22:58:33 -0400 Subject: [PATCH 602/772] Switch to https for coding-creative examples. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 62e869b79..f771009eb 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -285,7 +285,7 @@ [Examples : ] 194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt 226 \ https://github.com/Apress/processing-for-android/releases/download/latest/processing-for-android-examples.txt -243 \ http://coding-creative.dringtech.com/examples/coding-creative-examples.txt +243 \ https://coding-creative.dringtech.com/examples/coding-creative-examples.txt [Tool : ] 020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt From 45aae0ca056727f7fcebbfc39b5522fdcd6cc08b Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 23 Sep 2019 22:58:48 -0400 Subject: [PATCH 603/772] Add ewbIK library. --- contrib_generate/sources.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index f771009eb..b57dbcdd2 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 244 +# Next ID: 245 # Increment after assigning ID to new contribution [Library : 3D] @@ -22,6 +22,7 @@ 195 \ http://culebra.technology/culebra.txt 196 \ https://github.com/jrc03c/queasycam/releases/download/latest/queasycam.txt 215 \ http://maxlfarrell.gitlab.io/extruder/extruder.txt +244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt [Library : Animation] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt @@ -33,6 +34,7 @@ 095 \ https://dl.dropbox.com/u/87680069/frames.txt 219 \ https://teddavis.org/xyscope/download/XYscope.txt 231 \ http://objectstothinkwith.com/tracer/tracer.txt +244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt [Library : Compilation] 004 \ http://staff.city.ac.uk/~jwo/giCentre/utils/gicentreUtils.txt @@ -196,6 +198,7 @@ 195 \ http://culebra.technology/culebra.txt 201 \ https://github.com/diwi/PixelFlow/releases/download/latest/PixelFlow.txt 216 \ https://github.com/diwi/LiquidFunProcessing/releases/download/latest/LiquidFunProcessing.txt +244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt [Library : Sound] 153 \ https://github.com/processing/processing-sound/releases/download/latest/sound.txt From fc60c9470030d284d155d6713e6ff027e72bffd9 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 2 Oct 2019 20:12:52 -0400 Subject: [PATCH 604/772] Add nub library. --- contrib_generate/sources.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index b57dbcdd2..521d688e0 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 245 +# Next ID: 246 # Increment after assigning ID to new contribution [Library : 3D] @@ -23,6 +23,7 @@ 196 \ https://github.com/jrc03c/queasycam/releases/download/latest/queasycam.txt 215 \ http://maxlfarrell.gitlab.io/extruder/extruder.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt +245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt [Library : Animation] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt @@ -35,6 +36,7 @@ 219 \ https://teddavis.org/xyscope/download/XYscope.txt 231 \ http://objectstothinkwith.com/tracer/tracer.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt +245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt [Library : Compilation] 004 \ http://staff.city.ac.uk/~jwo/giCentre/utils/gicentreUtils.txt @@ -247,6 +249,7 @@ 229 \ https://github.com/Shinhoo/Wooting-Keyboard-Library/releases/download/lastest/WootingKeyboard.txt 235 \ https://www.barkmin.eu/processing-library-scratch/download/scratch.txt 240 \ https://commonpike.github.io/nl.kw.processing.portmods/dist/PortMods.txt +245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From f94e066c0693b9f18d2102ffc04e61331e6b324f Mon Sep 17 00:00:00 2001 From: Filip Visnjic Date: Fri, 4 Oct 2019 13:23:28 +0100 Subject: [PATCH 605/772] exh update --- content/curated.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/content/curated.xml b/content/curated.xml index 153c331a6..cfedf9e7d 100755 --- a/content/curated.xml +++ b/content/curated.xml @@ -1,6 +1,31 @@ + + images/pour.jpg + + ‘Pour Reception’ is a playful radio that uses machine learning and tangible computing to challenge our cultural understanding of what an interface is and can be. Two glasses of water are turned into a digital material for the user to explore and appropriate. + http://www.toreknudsen.dk/work/pour-reception/ + Tore Knudsen + + + + images/digits.jpg + + Gysin-Vanetti are an artist duo exploring images and patterns using the type geometries of multipurpose displays. Using only prevailing forms, Gysin-Vanetti build images, animations and generate patterns. + https://www.creativeapplications.net/processing/gysin-vanetti-o-is-not-a-letter-its-a-circle/ + Gysin&Vanetti + CreativeApplications.Net + + + + images/volume.jpg + + Created by NY based art and architecture collective Softlab, ‘Volume’ is an interactive cube of responsive mirrors that redirect light and sound to spatialize and reflect the excitement of surrounding festival goers. + http://softlabnyc.com/portfolio/volume/ + Softlab + + images/komorebi.jpg From cb7177fa2a371543367ac7614f56eddcaa0806d7 Mon Sep 17 00:00:00 2001 From: Filip Visnjic Date: Fri, 4 Oct 2019 13:29:32 +0100 Subject: [PATCH 606/772] exh update images --- content/curated_images/digits.jpg | Bin 0 -> 11868 bytes content/curated_images/digits@2x.jpg | Bin 0 -> 33497 bytes content/curated_images/pour.jpg | Bin 0 -> 11308 bytes content/curated_images/pour@2x.jpg | Bin 0 -> 33672 bytes content/curated_images/volume.jpg | Bin 0 -> 11820 bytes content/curated_images/volume@2x.jpg | Bin 0 -> 58679 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 content/curated_images/digits.jpg create mode 100644 content/curated_images/digits@2x.jpg create mode 100644 content/curated_images/pour.jpg create mode 100644 content/curated_images/pour@2x.jpg create mode 100644 content/curated_images/volume.jpg create mode 100644 content/curated_images/volume@2x.jpg diff --git a/content/curated_images/digits.jpg b/content/curated_images/digits.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce85f56583cb844ff4340518ced8b875c9a5fcd7 GIT binary patch literal 11868 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 literal 0 HcmV?d00001 diff --git a/content/curated_images/digits@2x.jpg b/content/curated_images/digits@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4210c3068574e3a297e5760919cd3575a5bdf59a GIT binary patch literal 33497 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 literal 0 HcmV?d00001 diff --git a/content/curated_images/volume.jpg b/content/curated_images/volume.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1233bc7419bfd2a14ac4b25b75b4326e8b9e57ca GIT binary patch literal 11820 zcmbVxWmKD8({8XLEpEkK0t5&y#Wg^XK%sb%0D&gB7b%6}?$F}i;t(8K+@InUFYZ>L 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 Qx7c+N7i_@% literal 0 HcmV?d00001 diff --git a/content/curated_images/volume@2x.jpg b/content/curated_images/volume@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddd5360940619f5550b7ce4d90f035d0f35beee0 GIT binary patch literal 58679 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 literal 0 HcmV?d00001 From dbeb8edd4a94cab93d1031053700c6dc497cd0d3 Mon Sep 17 00:00:00 2001 From: Filip Visnjic Date: Fri, 4 Oct 2019 13:35:48 +0100 Subject: [PATCH 607/772] small edit --- content/curated.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/content/curated.xml b/content/curated.xml index cfedf9e7d..87029364a 100755 --- a/content/curated.xml +++ b/content/curated.xml @@ -293,7 +293,6 @@ http://markmckeague.com/work/city-symphonies/ Mark McKeague - More on CreativeApplications.Net @@ -303,7 +302,6 @@ http://www.flickr.com/photos/kennethaleksander/sets/72157629659743887 Flick Page - CreativeApplications.Net @@ -322,7 +320,6 @@ http://www.the-product.org/soundmachines The Product - CreativeApplications.Net From b90917f1769a9ffa5e68fe1a1f5768eee3d59d85 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 7 Oct 2019 10:00:40 -0400 Subject: [PATCH 608/772] Add Nice Color Palettes library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 521d688e0..a58674ab9 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 246 +# Next ID: 247 # Increment after assigning ID to new contribution [Library : 3D] @@ -250,6 +250,7 @@ 235 \ https://www.barkmin.eu/processing-library-scratch/download/scratch.txt 240 \ https://commonpike.github.io/nl.kw.processing.portmods/dist/PortMods.txt 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt +246 \ https://github.com/federico-pepe/nice-color-palettes/releases/download/latest/NiceColorPalettes.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From d24e06d017965f4dd26f4160eb82a075551ae0ef Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 14 Oct 2019 15:08:59 -0400 Subject: [PATCH 609/772] Add Image Sequence Player library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index a58674ab9..9a990f426 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 247 +# Next ID: 248 # Increment after assigning ID to new contribution [Library : 3D] @@ -163,6 +163,7 @@ 229 \ https://github.com/Shinhoo/Wooting-Keyboard-Library/releases/download/lastest/WootingKeyboard.txt 232 \ https://github.com/haschdl/pLaunchController/releases/download/latest/pLaunchController.txt 239 \ http://skweezee.net/processing/download/SkweezeeForProcessing.txt +247 \ https://github.com/orgicus/image-sequence-player/releases/download/latest/ImageSequencePlayer.txt [Library : Language] 063 \ http://rednoise.org/rita/rita.txt From 0d71ab09f13095730a3111ae9b00945a96963b33 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Thu, 14 Nov 2019 22:01:05 -0500 Subject: [PATCH 610/772] Add RunwayML library. --- contrib_generate/sources.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 9a990f426..7b52ca617 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 248 +# Next ID: 249 # Increment after assigning ID to new contribution [Library : 3D] @@ -76,6 +76,7 @@ 229 \ https://github.com/Shinhoo/Wooting-Keyboard-Library/releases/download/lastest/WootingKeyboard.txt 230 \ https://github.com/cansik/artnet4j/releases/download/latest/artnet4j.txt 241 \ http://agathelenclen.fr/downloads/Squarify.txt +248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt [Library : Fabrication] # 078 \ http://s373.net/code/marchingcubes/download/marchingcubes.txt @@ -252,6 +253,7 @@ 240 \ https://commonpike.github.io/nl.kw.processing.portmods/dist/PortMods.txt 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt 246 \ https://github.com/federico-pepe/nice-color-palettes/releases/download/latest/NiceColorPalettes.txt +248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From 0f8f9eb39b30fb724bd6a47f3cf351761565df21 Mon Sep 17 00:00:00 2001 From: REAS Date: Sat, 16 Nov 2019 08:15:11 -0800 Subject: [PATCH 611/772] Update for Data tutorial --- content/static/tutorials/data/index.html | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/content/static/tutorials/data/index.html b/content/static/tutorials/data/index.html index 40e99a6f9..e69e99529 100644 --- a/content/static/tutorials/data/index.html +++ b/content/static/tutorials/data/index.html @@ -1404,6 +1404,34 @@

    Threads

    JSONObject json = loadJSONObject("http://time.jsontest.com/"); time = json.getString("time"); } + + +class Timer { + + int savedTime; + boolean running = false; + int totalTime; + + Timer(int tempTotalTime) { + totalTime = tempTotalTime; + } + + void start() { + running = true; + savedTime = millis(); + } + + boolean isFinished() { + int passedTime = millis() - savedTime; + if (running && passedTime > totalTime) { + running = false; + return true; + } else { + return false; + } + } + +}

    APIs

    From 9af62ed0c19ce8b2fa1d672a4e1e36c4a3f4f5fb Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 22 Nov 2019 12:02:02 -0800 Subject: [PATCH 612/772] Create README.md --- generate/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 generate/README.md diff --git a/generate/README.md b/generate/README.md new file mode 100644 index 000000000..aea00c156 --- /dev/null +++ b/generate/README.md @@ -0,0 +1 @@ +To come... From 9f1f7d9b0f450cb3be5b2f1e01830dc6f0ef893f Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 22 Nov 2019 12:16:38 -0800 Subject: [PATCH 613/772] Update README.md --- generate/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/generate/README.md b/generate/README.md index aea00c156..9f0c90609 100644 --- a/generate/README.md +++ b/generate/README.md @@ -1 +1,9 @@ -To come... +These are the scripts that generate most of the the processing.org website and Reference that's included with the Processing software. The language Reference scripts are in the ../java_generate/ folder and that's another thing... + +The generator scripts are written in PHP using an old version of DOMIT: https://sourceforge.net/projects/domit-xmlparser/ + +The files that are appened with "local" generate alternate versions of those pages for the Reference that comes included with the Processing software. + +This directory also contains the files to generate the "keywords.txt" file that controls the syntax highlighting for the Processing Development Environment (PDE). The Perl script "keywords_create.cgi" generates this file by combining "keywords_base.txt" with the Reference XML files. + +The data used to generate the site pages are in the ../content/ directory. From 83091507b74c51ff5510f7dfdc7e18fb756aacbd Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 22 Nov 2019 12:18:23 -0800 Subject: [PATCH 614/772] Update README.md --- generate/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/README.md b/generate/README.md index 9f0c90609..e38655a77 100644 --- a/generate/README.md +++ b/generate/README.md @@ -1,8 +1,8 @@ -These are the scripts that generate most of the the processing.org website and Reference that's included with the Processing software. The language Reference scripts are in the ../java_generate/ folder and that's another thing... +These are the scripts that generate most of the the processing.org website and Reference that's included with the Processing software. The language Reference scripts are in the ../java_generate/ directory and that's a whole other thing... The generator scripts are written in PHP using an old version of DOMIT: https://sourceforge.net/projects/domit-xmlparser/ -The files that are appened with "local" generate alternate versions of those pages for the Reference that comes included with the Processing software. +The files that are appended with "local" generate alternate versions of those pages for the Reference that comes included with the Processing software. This directory also contains the files to generate the "keywords.txt" file that controls the syntax highlighting for the Processing Development Environment (PDE). The Perl script "keywords_create.cgi" generates this file by combining "keywords_base.txt" with the Reference XML files. From a8c2aa3adbc48c72611e63e9c3895ff38e7745bc Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 14:44:52 -0800 Subject: [PATCH 615/772] Homepage update for PCD 2020 --- generate/index.php | 11 +++++++---- templates/template.cover.html | 33 +++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/generate/index.php b/generate/index.php index 62a281526..d907d26aa 100755 --- a/generate/index.php +++ b/generate/index.php @@ -23,6 +23,7 @@

    Hello, this is a notice!

    + @@ -99,10 +100,12 @@

    +

    Contributions diff --git a/templates/template.cover.html b/templates/template.cover.html index 56d113e50..ae6f9ef60 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,5 +1,14 @@

    +
    +

    + Processing Community Day 2020
    +
    + The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
    +
    +

    +
    +

    Welcome to Processing 3! Dan explains the new features and changes; the links Dan mentions are on the Vimeo page.

    @@ -9,7 +18,6 @@ Visit the Reference
    -

    Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping. @@ -30,13 +38,15 @@

    Books

    - The 2nd edition of Getting Started with Processing is here and it's updated for Processing 3. It's now in full color and there's a new chapter on working with data. The 2nd edition of the Processing Handbook is here too. Every chapter has been revised, and new chapters introduce more ways to work with data and geometry. New “synthesis” chapters offer discussion and worked examples of such topics as sketching with code, modularity, and algorithms.
    + The second edition of Getting Started with Processing is here and it's updated for Processing 3. It's now in full color and there's a new chapter on working with data. The Processing Handbook now has a second edition too. Every chapter has been revised, and new chapters introduce more ways to work with data and geometry. New “synthesis” chapters offer discussions and worked examples of topics such as sketching with code, modularity, and algorithms.

    Processing Books

    + +

    Donate

    - Please join us as a member of the Processing Foundation. We need your help! + Please support the Processing Foundation. We need your help!

    To see more of what people are doing with Processing, check out these sites:

    -

    » CreativeApplications.Net
    - » OpenProcessing
    - » For Your Processing
    - » Processing Subreddit
    - » Vimeo
    - » Studio Sketchpad
    +

    + » CreativeApplications.Net
    + » OpenProcessing
    + » For Your Processing
    + » Processing Subreddit
    + » Vimeo
    + » Studio Sketchpad

    @@ -78,7 +91,7 @@

    Donate

    Partners
    - » Fathom
    + » Fathom
    » NYU ITP
    » UCLA Design Media Arts

    From 97c2a785edc4b9b47521c5feb84b7fbb4a124bc8 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 14:48:18 -0800 Subject: [PATCH 616/772] Formatting update for homepage --- templates/template.cover.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index ae6f9ef60..132712dfe 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,6 +1,6 @@
    -
    +

    Processing Community Day 2020

    From f8f70458b072516eb88a205b3a286581bda74e0d Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 14:54:37 -0800 Subject: [PATCH 617/772] Formatting update for homepage --- templates/template.cover.html | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index 132712dfe..858ed3813 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,12 +1,10 @@

    -
    -

    - Processing Community Day 2020
    -
    - The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
    -
    -

    +
    + Processing Community Day 2020
    +
    + The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
    +
    From 499713d65eac3bbcad84a24286b07922b0353387 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:00:51 -0800 Subject: [PATCH 618/772] Formatting update for homepage --- templates/template.cover.html | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index 858ed3813..09e61f3d8 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,36 +1,38 @@
    - Processing Community Day 2020
    + PCD 2020

    The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!

    - -

    - Welcome to Processing 3! Dan explains the new features and changes; the links Dan mentions are on the Vimeo page.

    - - Download Processing
    - Browse Tutorials
    - Visit the Reference
    -

    Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.

      -
    • » Free to download and open source
    • -
    • » Interactive programs with 2D, 3D, PDF, or SVG output
    • -
    • » OpenGL integration for accelerated 2D and 3D
    • -
    • » For GNU/Linux, Mac OS X, Windows, Android, and ARM
    • -
    • » Over 100 libraries extend the core software
    • -
    • » Well documented, with many books available
    • +
    • » Free to download and open source
    • +
    • » Interactive programs with 2D, 3D, PDF, or SVG output
    • +
    • » OpenGL integration for accelerated 2D and 3D
    • +
    • » For GNU/Linux, Mac OS X, Windows, Android, and ARM
    • +
    • » Over 100 libraries extend the core software
    • +
    • » Well documented, with many books available

    + + +

    From 96d5e0a02f8ee76291535af5088ce9d86dbb279d Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:07:31 -0800 Subject: [PATCH 619/772] Formatting update for homepage --- templates/template.cover.html | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index 09e61f3d8..e8f0ed729 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,14 +1,24 @@

    - PCD 2020
    + PCD @ Worldwide 2020

    The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!

    +
    + Fellowships 2020
    +
    + The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
    +
    +
    +

    + Download Processing
    +
    + Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.

      @@ -79,8 +89,8 @@

      Donate

      » Studio Sketchpad

      -

      - To contribute to the development, please visit +

      + To contribute to Processing development, please visit Processing on GitHub to read instructions for downloading the code, building from the source, From 16d4f2a2e3dadafe4686afafffa81462fe6eac90 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:15:18 -0800 Subject: [PATCH 620/772] Formatting update for homepage --- templates/template.cover.html | 41 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index e8f0ed729..a5c5b94a2 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,36 +1,29 @@

      - PCD @ Worldwide 2020
      -
      + PCD @ Worldwide 2020
      The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!

      - Fellowships 2020
      -
      - The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
      + Fellowships 2020
      + The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!

      -

      - Download Processing
      + Download Processing
      + Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping. +

        +
      • » Free to download and open source
      • +
      • » Interactive programs with 2D, 3D, PDF, or SVG output
      • +
      • » OpenGL integration for accelerated 2D and 3D
      • +
      • » For GNU/Linux, Mac OS X, Windows, Android, and ARM
      • +
      • » Over 100 libraries extend the core software
      • +
      • » Well documented, with many books available
      • +

      - - Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping. - -
        -
      • » Free to download and open source
      • -
      • » Interactive programs with 2D, 3D, PDF, or SVG output
      • -
      • » OpenGL integration for accelerated 2D and 3D
      • -
      • » For GNU/Linux, Mac OS X, Windows, Android, and ARM
      • -
      • » Over 100 libraries extend the core software
      • -
      • » Well documented, with many books available
      • -
      -
      -

      @@ -78,9 +71,8 @@

      Donate

      Please support the Processing Foundation. We need your help!
      -

      To see more of what people are doing with Processing, check out these sites:

      - -

      +

      + To see more of what people are doing with Processing, check out these sites:
      » CreativeApplications.Net
      » OpenProcessing
      » For Your Processing
      @@ -96,11 +88,10 @@

      Donate

      building from the source, reporting and tracking bugs, and creating libraries and tools.

      -

      -

      Partners
      + Partners
      » Fathom
      » NYU ITP
      » UCLA Design Media Arts From 6fb0b3eea259dff2863cccbdeeefb426ad08864a Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:24:45 -0800 Subject: [PATCH 621/772] Formatting update for homepage --- templates/template.cover.html | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index a5c5b94a2..bc31a169c 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -2,18 +2,21 @@
      PCD @ Worldwide 2020
      - The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
      +
      + The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!

      Fellowships 2020
      - The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
      +
      + The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!

      - Download Processing
      + Download Processing
      +
      Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.
      • » Free to download and open source
      • @@ -81,7 +84,7 @@

        Donate

        » Studio Sketchpad

        -

        +

        To contribute to Processing development, please visit Processing on GitHub to read instructions for downloading the code, @@ -91,7 +94,7 @@

        Donate

        - Partners
        +

        Partners
        » Fathom
        » NYU ITP
        » UCLA Design Media Arts From bc9758a0ccbbe79fec8eecab9bafb9b6af2f3085 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:31:24 -0800 Subject: [PATCH 622/772] Formatting update for homepage --- templates/template.cover.html | 44 ++++++++++++++++------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index bc31a169c..2d7d3704f 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -1,22 +1,14 @@
        -
        - PCD @ Worldwide 2020
        -
        - The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
        -
        -
        + +

        + Welcome to Processing 3! Dan explains the new features and changes; the links Dan mentions are on the Vimeo page.

        -
        - Fellowships 2020
        -
        - The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
        -
        -
        + Download Processing
        + Browse Tutorials
        + Visit the Reference
        - Download Processing
        -
        Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.
        • » Free to download and open source
        • @@ -29,16 +21,6 @@
        - - -

        @@ -74,6 +56,20 @@

        Donate

        Please support the Processing Foundation. We need your help!
        +
        + PCD 2020
        +
        + The Processing Community Day (PCD) initiative is evolving. For 2020, we will offer a mentorship program for PCD Worldwide Organizers who are interested in learning from past community organizers and mentors. The goal is to help a diverse group of organizers launch a PCD in their local communities. Check out the PCD @ Worldwide site to learn more about starting or attending an event in 2020!
        +
        +
        + +
        + Fellowships
        +
        + The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
        +
        +
        +

        To see more of what people are doing with Processing, check out these sites:
        » CreativeApplications.Net
        From ff7acad842bb1166e5b8e3643885b55be544fda5 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:34:37 -0800 Subject: [PATCH 623/772] Formatting update for homepage --- templates/template.cover.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index 2d7d3704f..e7be17bbf 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -9,6 +9,7 @@ Visit the Reference

        +

        Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.

        • » Free to download and open source
        • @@ -18,11 +19,10 @@
        • » Over 100 libraries extend the core software
        • » Well documented, with many books available
        -
        +

        -

        Books

        @@ -64,10 +64,8 @@

        Donate

        - Fellowships
        -
        + Fellowships
        The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
        -

        From f4aa9f1fa42cdfd62c03c77565672bfa6e41549f Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:37:44 -0800 Subject: [PATCH 624/772] Formatting update for homepage --- templates/template.cover.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index e7be17bbf..c982bb10c 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -64,8 +64,9 @@

        Donate

        - Fellowships
        - The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019,11:59PM PST. Apply here!
        + Fellowships
        +
        + The Processing Foundation is currently accepting applications for the 2020 Fellowship Program. With this open call, the Processing Foundation celebrates its Fellowship Program’s fifth year of supporting members of our community in projects that converge and expand the fields of art, technology, education, and activism. The deadline is Thursday, December 19, 2019, 11:59PM PST. Apply here!

        From ab78f524c6c2bd3731f9f547b8fe44ffeec254c4 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 15:42:49 -0800 Subject: [PATCH 625/772] Update the People page --- content/static/people.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/static/people.html b/content/static/people.html index fb88b37c2..ddaa1f6c9 100755 --- a/content/static/people.html +++ b/content/static/people.html @@ -6,7 +6,7 @@

        People. Processing is a comm

        - Lead Developers
        + Project Leads
        Ben Fry and Casey Reas started Processing in Spring 2001 and continue to obsessively work on it. In 2012, they started the Processing Foundation along with Dan Shiffman, who formally joined as a third project lead.

        @@ -14,17 +14,12 @@

        People. Processing is a comm

        Senior Developers
        Andres Colubri (Boston), OpenGL / Video
        - Gottfried Haider (Los Angeles), Processing for Pi
        - Florian Jenett (Frankfurt), Forum
        Elie Zananiri (Montreal), Contributed Libraries / Tools
        - Scott Murray (San Francisco), Website / Reference / UI

        -

        + From e6aee06ea0e87e9f2fd95b0175d8dae14847757f Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 22 Nov 2019 19:38:36 -0800 Subject: [PATCH 630/772] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31485680e..bb8407cdb 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ If you have found an error in the Processing reference, examples, tutorials, or The [processing](https://github.com/processing/processing) repository contains the source code for Processing itself. (Please use that link to file issues regarding the Processing software.) -###How to build the Javadoc +### How to build the Javadoc In "build" in the Processing respository type "ant doc" From d7ed7a75d317968e9c30d0f52bd10a85d4ab084c Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 22 Nov 2019 20:25:05 -0800 Subject: [PATCH 631/772] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bb8407cdb..9d7851a31 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ If you have found an error in the Processing reference, examples, tutorials, or The [processing](https://github.com/processing/processing) repository contains the source code for Processing itself. (Please use that link to file issues regarding the Processing software.) ### How to build the Javadoc -In "build" in the Processing respository type "ant doc" + +1) In "build" in the "processing" repo, type "ant doc" +2) Copy the three generated folders to the "processing-javadocs" repo +3) Push changes From 5f08e9392a40fa078d483cdc3d9893135aa4e974 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 22 Nov 2019 20:51:36 -0800 Subject: [PATCH 632/772] CSS Updates for Environment and Tutorials --- css/style.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 2b67a77ea..a7cb371b2 100755 --- a/css/style.css +++ b/css/style.css @@ -1026,6 +1026,7 @@ h2 { margin-bottom: 0; margin-top: 0;} background-color: #eee; } +/* #Tutorials p.txt { margin-top: 0em; margin-bottom: 2em; @@ -1033,6 +1034,7 @@ h2 { margin-bottom: 0; margin-top: 0;} font-weight: normal; line-height: 200%; } +*/ /************************************************************** Books ***/ @@ -1173,7 +1175,7 @@ h2 { margin-bottom: 0; margin-top: 0;} #Environment h5 a { float: left; margin-left: -30px; } ul.nostyle { margin: 0; padding: 0; list-style: none outside; } #Environment td { padding-bottom: 1em; } -#Environment .content p, +/*#Environment .content p,*/ #Environment .content ul, #Environment .content table { width: 560px; From 712bf435df35724e965210cd81ce7e58675512ea Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Sat, 23 Nov 2019 18:02:02 -0800 Subject: [PATCH 633/772] Update README.md --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 9d7851a31..c0183179c 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,4 @@ If you have found an error in the Processing reference, examples, tutorials, or The [processing](https://github.com/processing/processing) repository contains the source code for Processing itself. (Please use that link to file issues regarding the Processing software.) -### How to build the Javadoc - -1) In "build" in the "processing" repo, type "ant doc" -2) Copy the three generated folders to the "processing-javadocs" repo -3) Push changes - From 09a74fc8afbaf096952cf7c025b5fc4714063804 Mon Sep 17 00:00:00 2001 From: REAS Date: Mon, 25 Nov 2019 12:36:17 -0800 Subject: [PATCH 634/772] Update to People page, add Sam --- content/static/people.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/static/people.html b/content/static/people.html index 6973a586e..d406b648c 100755 --- a/content/static/people.html +++ b/content/static/people.html @@ -12,9 +12,10 @@

        People. Processing is a comm

        - Senior Developers
        - Andres Colubri (Boston), OpenGL / Video
        - Elie Zananiri (Montreal), Contributed Libraries / Tools
        + Developers
        + Andres Colubri (Boston), OpenGL / Video
        + Elie Zananiri (New York), Contributed Libraries / Tools
        + Samuel Pottinger (San Francisco), Processing Core

        header
        From 4ce81aea30513ea35517f5101ba04d4d2172fb75 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:06:26 -0800 Subject: [PATCH 636/772] Donate banner for site header --- css/style.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/css/style.css b/css/style.css index fb9a8a2ec..7d4f85959 100755 --- a/css/style.css +++ b/css/style.css @@ -150,13 +150,13 @@ a.large-link:before { background: linear-gradient(to bottom, #1d517e, #d1f94e); } -#ribbon ul { +#ribbon #ribbon-announce ul { display: inline-block; margin: 0; padding: 0; } -#ribbon ul.left { +#ribbon #ribbon-announce ul.left { float: left; } @@ -168,7 +168,7 @@ a.large-link:before { float: right; } -#ribbon ul li { +#ribbon #ribbon-announce ul li { display: inline-block; margin: 0; padding: 6px 10px 5px 10px; @@ -177,7 +177,7 @@ a.large-link:before { background-color: rgba(0, 0, 0, 0.12); } -#ribbon ul.left li { +#ribbon #ribbon-announce ul.left li { float: left; border-right: 1px solid #1a1a1a; } @@ -198,16 +198,16 @@ a.large-link:before { font-weight: bold; } -#ribbon ul li a { +#ribbon #ribbon-announce ul li a { color: #b2b2b2; } -#ribbon ul li.highlight { +#ribbon #ribbon-announce ul li.highlight { background-color: black; border-right: none; } -#ribbon ul li.highlight a { +#ribbon #ribbon-announce ul li.highlight a { color: white; font-weight: bold; } From 307efd855c6621a5f8f7c858834d3f3c90a7c114 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:08:41 -0800 Subject: [PATCH 637/772] Donate banner for site header --- css/style.css | 52 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/css/style.css b/css/style.css index 7d4f85959..88ec582bd 100755 --- a/css/style.css +++ b/css/style.css @@ -150,13 +150,23 @@ a.large-link:before { background: linear-gradient(to bottom, #1d517e, #d1f94e); } -#ribbon #ribbon-announce ul { +#ribbon ul { display: inline-block; margin: 0; padding: 0; } -#ribbon #ribbon-announce ul.left { +#ribbon ul.left { + float: left; +} + +#ribbon-announce ul { + display: inline-block; + margin: 0; + padding: 0; +} + +#ribbon-announce ul.left { float: left; } @@ -168,7 +178,16 @@ a.large-link:before { float: right; } -#ribbon #ribbon-announce ul li { +#ribbon ul li { + display: inline-block; + margin: 0; + padding: 6px 10px 5px 10px; + list-style: none; + background-color: transparent; + background-color: rgba(0, 0, 0, 0.12); +} + +#ribbon-announce ul li { display: inline-block; margin: 0; padding: 6px 10px 5px 10px; @@ -177,7 +196,12 @@ a.large-link:before { background-color: rgba(0, 0, 0, 0.12); } -#ribbon #ribbon-announce ul.left li { +#ribbon ul.left li { + float: left; + border-right: 1px solid #1a1a1a; +} + +#ribbon-announce ul.left li { float: left; border-right: 1px solid #1a1a1a; } @@ -198,16 +222,30 @@ a.large-link:before { font-weight: bold; } -#ribbon #ribbon-announce ul li a { +#ribbon ul li a { + color: #b2b2b2; +} + +#ribbon ul li.highlight { + background-color: black; + border-right: none; +} + +#ribbon ul li.highlight a { + color: white; + font-weight: bold; +} + +#ribbon-announce ul li a { color: #b2b2b2; } -#ribbon #ribbon-announce ul li.highlight { +#ribbon-announce ul li.highlight { background-color: black; border-right: none; } -#ribbon #ribbon-announce ul li.highlight a { +#ribbon-announce ul li.highlight a { color: white; font-weight: bold; } From 05f2972b2a23962b39538a03d5f02db807ccd58c Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:12:08 -0800 Subject: [PATCH 638/772] Donate banner for site header --- css/style.css | 19 +++++++------------ templates/template.html | 2 +- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/css/style.css b/css/style.css index 88ec582bd..5b2ef205e 100755 --- a/css/style.css +++ b/css/style.css @@ -201,8 +201,8 @@ a.large-link:before { border-right: 1px solid #1a1a1a; } -#ribbon-announce ul.left li { - float: left; +#ribbon-announce ul.center li { + float: center; border-right: 1px solid #1a1a1a; } @@ -226,6 +226,11 @@ a.large-link:before { color: #b2b2b2; } +#ribbon-announce ul li a { + color: white; + font-weight: bold; +} + #ribbon ul li.highlight { background-color: black; border-right: none; @@ -240,16 +245,6 @@ a.large-link:before { color: #b2b2b2; } -#ribbon-announce ul li.highlight { - background-color: black; - border-right: none; -} - -#ribbon-announce ul li.highlight a { - color: white; - font-weight: bold; -} - /* ================ HEADER ================== */ diff --git a/templates/template.html b/templates/template.html index d21dd6ba6..fe99f4645 100755 --- a/templates/template.html +++ b/templates/template.html @@ -35,7 +35,7 @@

      -
        +
        From c4b8505a19bccaabc2809d6163dda661b27e56ed Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:17:36 -0800 Subject: [PATCH 639/772] Donate banner for site header --- css/style.css | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/css/style.css b/css/style.css index 5b2ef205e..387ba577f 100755 --- a/css/style.css +++ b/css/style.css @@ -166,8 +166,8 @@ a.large-link:before { padding: 0; } -#ribbon-announce ul.left { - float: left; +#ribbon-announce ul.center { + float: center; } #ribbon ul.right { @@ -203,7 +203,6 @@ a.large-link:before { #ribbon-announce ul.center li { float: center; - border-right: 1px solid #1a1a1a; } #ribbon ul.right li { @@ -241,10 +240,6 @@ a.large-link:before { font-weight: bold; } -#ribbon-announce ul li a { - color: #b2b2b2; -} - /* ================ HEADER ================== */ From a1487dd246a087a427440df1fe06f9e0fe74612e Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:22:54 -0800 Subject: [PATCH 640/772] Donate banner for site header --- css/style.css | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/css/style.css b/css/style.css index 387ba577f..4114631e4 100755 --- a/css/style.css +++ b/css/style.css @@ -143,13 +143,6 @@ a.large-link:before { background: linear-gradient(to bottom, #003b6e, #1d517e); } -#ribbon-announce { - width: 900px; - height: auto; - background-color: #d1f94e; - background: linear-gradient(to bottom, #1d517e, #d1f94e); -} - #ribbon ul { display: inline-block; margin: 0; @@ -160,16 +153,6 @@ a.large-link:before { float: left; } -#ribbon-announce ul { - display: inline-block; - margin: 0; - padding: 0; -} - -#ribbon-announce ul.center { - float: center; -} - #ribbon ul.right { float: right; } @@ -187,23 +170,12 @@ a.large-link:before { background-color: rgba(0, 0, 0, 0.12); } -#ribbon-announce ul li { - display: inline-block; - margin: 0; - padding: 6px 10px 5px 10px; - list-style: none; - background-color: transparent; - background-color: rgba(0, 0, 0, 0.12); -} - #ribbon ul.left li { float: left; border-right: 1px solid #1a1a1a; } -#ribbon-announce ul.center li { - float: center; -} + #ribbon ul.right li { float: right; @@ -225,11 +197,6 @@ a.large-link:before { color: #b2b2b2; } -#ribbon-announce ul li a { - color: white; - font-weight: bold; -} - #ribbon ul li.highlight { background-color: black; border-right: none; @@ -240,6 +207,39 @@ a.large-link:before { font-weight: bold; } +#ribbon-announce { + width: 900px; + height: auto; + background-color: #d1f94e; + background: linear-gradient(to bottom, #1d517e, #d1f94e); +} + +#ribbon-announce ul { + display: inline-block; + margin: 0; + padding: 0; +} + +#ribbon-announce ul.center { + float: center; +} + +#ribbon-announce ul li { + display: inline-block; + margin: 0; + padding: 6px 10px 5px 10px; + list-style: none; +} + +#ribbon-announce ul.center li { + float: center; +} + +#ribbon-announce ul li a { + color: white; + font-weight: bold; +} + /* ================ HEADER ================== */ From 6f556dceacaf870cf58ee3d5522fc158a3677a2a Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 18:24:19 -0800 Subject: [PATCH 641/772] Donate banner for site header --- css/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/css/style.css b/css/style.css index 4114631e4..3c32cf6e7 100755 --- a/css/style.css +++ b/css/style.css @@ -76,6 +76,7 @@ body { img { border: 0px solid #000000; } a { + cursor: pointer; text-decoration: none; font-weight: normal; color: #2c7bb5; From 96c9a76d591d9607f6cc290fb22df3944b790967 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 20:57:39 -0800 Subject: [PATCH 642/772] Update banner for site header --- css/style.css | 1 + templates/template.cover.html | 7 ++++++- templates/template.nav.php | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/css/style.css b/css/style.css index 3c32cf6e7..0000cc4b6 100755 --- a/css/style.css +++ b/css/style.css @@ -138,6 +138,7 @@ a.large-link:before { /* ================ RIBBON ================== */ #ribbon { + text-align: center; width: 900px; height: auto; background-color: #1d517e; diff --git a/templates/template.cover.html b/templates/template.cover.html index c982bb10c..da386fe1d 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -51,9 +51,14 @@
        » Github
        -
        + + +
        +

        Donate

        + #SupportPF2019 is a month-long online fundraising campaign to support and help sustain our software projects (Processing, p5.js, Processing.py, Processing for Pi, and Processing for Android), the Fellowship program, Processing Community Day, and our numerous education initiatives including our education portal. Please visit our Medium publication to learn more about this campaign.
        diff --git a/templates/template.nav.php b/templates/template.nav.php index 4f5574369..ba4dcd191 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -23,7 +23,8 @@ 'Environment' => array('/reference/environment/', 2), 'Download' => array('/download/', 1), - 'Donate' => array('/download/support.html', 1), + #'Donate' => array('/download/support.html', 1), + 'Donate' => array('https://donorbox.org/supportpf2019-fundraising-campaign', 1), 'Shop' => array('/shop/', 1), From 3a799ff2960491f9cc41a2b48ca2f36cbac3cb14 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 20:59:01 -0800 Subject: [PATCH 643/772] Update banner for site header --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 0000cc4b6..9fd2c7cdd 100755 --- a/css/style.css +++ b/css/style.css @@ -138,7 +138,6 @@ a.large-link:before { /* ================ RIBBON ================== */ #ribbon { - text-align: center; width: 900px; height: auto; background-color: #1d517e; @@ -210,6 +209,7 @@ a.large-link:before { } #ribbon-announce { + text-align: center; width: 900px; height: auto; background-color: #d1f94e; From 87208e3b5edca0d19ae3085eabd3cad0b352c606 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 21:03:11 -0800 Subject: [PATCH 644/772] Update banner for site header --- templates/template.cover.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index da386fe1d..1976a981e 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -58,7 +58,7 @@

        Donate

        Donate

        - #SupportPF2019 is a month-long online fundraising campaign to support and help sustain our software projects (Processing, p5.js, Processing.py, Processing for Pi, and Processing for Android), the Fellowship program, Processing Community Day, and our numerous education initiatives including our education portal. Please visit our Medium publication to learn more about this campaign. + #SupportPF is a month-long online fundraising campaign to support and help sustain our software projects (Processing, p5.js, Processing.py, Processing for Pi, and Processing for Android), the Fellowship program, Processing Community Day, and our numerous education initiatives including our education portal. Please visit our Medium publication to learn more about this campaign.
        From 8464e814beb968f3a2116f3273ca1c9a957b4ffb Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 3 Dec 2019 21:12:45 -0800 Subject: [PATCH 645/772] Reference page tempates for holiday giving --- java_generate/templates/class.template.html | 6 ++++++ java_generate/templates/generic.template.html | 6 ++++++ java_generate/templates/index.alphabetical.template.html | 6 ++++++ java_generate/templates/index.template.html | 6 ++++++ java_generate/templates/library.index.template.html | 6 ++++++ java_generate/templates/nav.web.template.html | 2 +- 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 3d715adf9..cf82291e0 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -36,6 +36,12 @@
      +
    + + + + From 52b601f018c304724e8dfa65279623759ce24f51 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 5 Dec 2019 13:15:21 -0800 Subject: [PATCH 647/772] Move header ribbon to bottom --- templates/template.html | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/templates/template.html b/templates/template.html index baa6c799c..fa336d617 100755 --- a/templates/template.html +++ b/templates/template.html @@ -56,20 +56,20 @@ © Info
    -
    +
    From fdae46dbdeb97ad3ba0c44e2c0cd0c0609501c6c Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 5 Dec 2019 13:16:29 -0800 Subject: [PATCH 648/772] Move header ribbon to bottom --- templates/template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/template.html b/templates/template.html index fa336d617..689b91897 100755 --- a/templates/template.html +++ b/templates/template.html @@ -23,7 +23,7 @@ From 0caf090f8b16325353bc5ab8a62630b67491fce5 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 5 Dec 2019 13:19:37 -0800 Subject: [PATCH 649/772] Move header ribbon to bottom for Reference --- java_generate/templates/class.template.html | 12 ++++++------ java_generate/templates/generic.template.html | 12 ++++++------ .../templates/index.alphabetical.template.html | 12 ++++++------ java_generate/templates/index.template.html | 12 ++++++------ java_generate/templates/library.index.template.html | 13 ++++++------- 5 files changed, 30 insertions(+), 31 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index cf82291e0..33fc6ed63 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -36,12 +36,6 @@
    -
    +
    diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index 409ecb8c4..a4328a0d9 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -37,12 +37,6 @@
    -
    +
    diff --git a/java_generate/templates/index.alphabetical.template.html b/java_generate/templates/index.alphabetical.template.html index 67b991854..f6a105a2a 100644 --- a/java_generate/templates/index.alphabetical.template.html +++ b/java_generate/templates/index.alphabetical.template.html @@ -35,12 +35,6 @@
    - + diff --git a/java_generate/templates/index.template.html b/java_generate/templates/index.template.html index 38823b4ac..192c6bc8a 100644 --- a/java_generate/templates/index.template.html +++ b/java_generate/templates/index.template.html @@ -34,12 +34,6 @@
    - + diff --git a/java_generate/templates/library.index.template.html b/java_generate/templates/library.index.template.html index eeec63b96..11a6537be 100644 --- a/java_generate/templates/library.index.template.html +++ b/java_generate/templates/library.index.template.html @@ -36,12 +36,6 @@
    - - + From 971a79c2f5d5e649e25f57e305b5644c3ed9ea50 Mon Sep 17 00:00:00 2001 From: REAS Date: Thu, 5 Dec 2019 13:23:21 -0800 Subject: [PATCH 650/772] Move header ribbon to bottom for Reference --- java_generate/templates/class.template.html | 26 ++++++++-------- java_generate/templates/generic.template.html | 31 +++++++++---------- .../index.alphabetical.template.html | 26 ++++++++-------- java_generate/templates/index.template.html | 26 ++++++++-------- .../templates/library.index.template.html | 29 ++++++++--------- 5 files changed, 69 insertions(+), 69 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 33fc6ed63..247aa1874 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -23,16 +23,9 @@ - -
    -
    - diff --git a/java_generate/templates/index.alphabetical.template.html b/java_generate/templates/index.alphabetical.template.html index f6a105a2a..a8760a637 100644 --- a/java_generate/templates/index.alphabetical.template.html +++ b/java_generate/templates/index.alphabetical.template.html @@ -22,16 +22,9 @@ - -
    -
    From 73b5ebfc0ccacaa97f1cacd3ae463d3e844609bf Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 6 Dec 2019 12:46:24 -0800 Subject: [PATCH 651/772] Move Donate ribbon below header --- templates/template.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/template.html b/templates/template.html index 689b91897..797b03d0e 100755 --- a/templates/template.html +++ b/templates/template.html @@ -21,12 +21,6 @@
    - + From 43cdc9464f5b787a44eba5847c73878d6d8c9150 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 6 Dec 2019 12:48:52 -0800 Subject: [PATCH 652/772] CSS adjustment for donate ribbon below header --- css/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 9fd2c7cdd..8c1005a91 100755 --- a/css/style.css +++ b/css/style.css @@ -214,6 +214,7 @@ a.large-link:before { height: auto; background-color: #d1f94e; background: linear-gradient(to bottom, #1d517e, #d1f94e); + margin-bottom: 0px; /* added when placed below the header */ } #ribbon-announce ul { @@ -248,7 +249,7 @@ a.large-link:before { #header { width: 900px; height: 106px; - margin-bottom: 30px; + margin-bottom: 0px; /* was 30px, but changed to 0 when ribbon placed below header */ overflow: hidden; background: #0c2033 url(../img/processing-web.png) center center no-repeat; background-position: bottom; From 8e87e2b24804613267ad704a69f017ae108b070a Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 6 Dec 2019 12:49:30 -0800 Subject: [PATCH 653/772] CSS adjustment for donate ribbon below header --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 8c1005a91..96d5d8e49 100755 --- a/css/style.css +++ b/css/style.css @@ -214,7 +214,7 @@ a.large-link:before { height: auto; background-color: #d1f94e; background: linear-gradient(to bottom, #1d517e, #d1f94e); - margin-bottom: 0px; /* added when placed below the header */ + margin-bottom: 30px; /* added when placed below the header */ } #ribbon-announce ul { From f87d5b18b1c78dd1301b468102b9c31dd7983e62 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 6 Dec 2019 12:53:06 -0800 Subject: [PATCH 654/772] Move Donate ribbon below header for Reference pages --- java_generate/templates/class.template.html | 12 ++++++------ java_generate/templates/generic.template.html | 12 ++++++------ .../templates/index.alphabetical.template.html | 12 ++++++------ java_generate/templates/index.template.html | 12 ++++++------ java_generate/templates/library.index.template.html | 12 ++++++------ 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 247aa1874..903e07337 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -23,12 +23,6 @@ - + diff --git a/java_generate/templates/index.template.html b/java_generate/templates/index.template.html index 47eda6268..e9215f46b 100644 --- a/java_generate/templates/index.template.html +++ b/java_generate/templates/index.template.html @@ -31,7 +31,7 @@
    diff --git a/java_generate/templates/library.index.template.html b/java_generate/templates/library.index.template.html index 8ad29c73d..2f15f76b9 100644 --- a/java_generate/templates/library.index.template.html +++ b/java_generate/templates/library.index.template.html @@ -33,7 +33,7 @@ From 5cdce6a12acb8b02de6b044450e15ffab6d1ca82 Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 6 Dec 2019 12:57:15 -0800 Subject: [PATCH 656/772] CSS change for reference to make the ref-notice more subtle --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 96d5d8e49..30628b06a 100755 --- a/css/style.css +++ b/css/style.css @@ -638,7 +638,7 @@ p.exhibition-nav { margin-top: 20px; margin-bottom: 10px; } margin-bottom: 20px; } -.ref-notice { margin: 0 0 2.5em 0; color: #FF3399; clear: both; margin-right: 40px;} +.ref-notice { margin: 0 0 2.5em 0; color: #666666; clear: both; margin-right: 40px;} .ref-item { margin-bottom: 60px; } .ref-item th { width: 100px; font-weight: bold; text-align: left; vertical-align: top; } From d8fbdf6e3a6c1d73dafdcc7b38d753c6a8d68f9f Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Fri, 13 Dec 2019 13:39:00 -0800 Subject: [PATCH 657/772] Add Rosetta Code example set --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 7b52ca617..6b485a4cc 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 249 +# Next ID: 250 # Increment after assigning ID to new contribution [Library : 3D] @@ -296,6 +296,7 @@ 194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt 226 \ https://github.com/Apress/processing-for-android/releases/download/latest/processing-for-android-examples.txt 243 \ https://coding-creative.dringtech.com/examples/coding-creative-examples.txt +249 \ https://github.com/jeremydouglass/processing_rosetta_examples/releases/latest/download/processing_rosetta_examples.txt [Tool : ] 020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt From 7b05c15ef5943e30146af7d445a2dad998185c7c Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 13 Dec 2019 21:24:19 -0800 Subject: [PATCH 658/772] Correction for Datatype Conversion example --- .../Basics/Data/DatatypeConversion/DatatypeConversion.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde b/content/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde index 1c2a398c9..ee7e74daf 100644 --- a/content/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde +++ b/content/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde @@ -16,7 +16,7 @@ textFont(createFont("SourceCodePro-Regular.ttf",24)); char c; // Chars are used for storing alphanumeric symbols float f; // Floats are decimal numbers int i; // Integers are values between 2,147,483,647 and -2147483648 -byte b; // Bytes are values between -128 and 128 +byte b; // Bytes are values between -128 and 127 c = 'A'; f = float(c); // Sets f = 65.0 From 673ef26f7210895081c06124ae2368b29783fc42 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 15 Dec 2019 08:26:05 -0500 Subject: [PATCH 659/772] Revert "Merge pull request #787 from jeremydouglass/patch-examples-rosetta-code" This reverts commit c8309ceca92227469c170b13884d911bc039babf, reversing changes made to 5cdce6a12acb8b02de6b044450e15ffab6d1ca82. --- contrib_generate/sources.conf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 6b485a4cc..7b52ca617 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 250 +# Next ID: 249 # Increment after assigning ID to new contribution [Library : 3D] @@ -296,7 +296,6 @@ 194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt 226 \ https://github.com/Apress/processing-for-android/releases/download/latest/processing-for-android-examples.txt 243 \ https://coding-creative.dringtech.com/examples/coding-creative-examples.txt -249 \ https://github.com/jeremydouglass/processing_rosetta_examples/releases/latest/download/processing_rosetta_examples.txt [Tool : ] 020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt From 76e49c2083722c43dea256c804ac50eacadab60d Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Sun, 15 Dec 2019 19:16:23 -0500 Subject: [PATCH 660/772] Adding Rosetta examples again, this time with new URL. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 7b52ca617..36caf8f44 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 249 +# Next ID: 250 # Increment after assigning ID to new contribution [Library : 3D] @@ -296,6 +296,7 @@ 194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt 226 \ https://github.com/Apress/processing-for-android/releases/download/latest/processing-for-android-examples.txt 243 \ https://coding-creative.dringtech.com/examples/coding-creative-examples.txt +249 \ https://github.com/jeremydouglass/rosetta_examples_p5/releases/latest/download/rosetta_examples_p5.txt [Tool : ] 020 \ https://dl.dropboxusercontent.com/u/69944346/ColorSelectorPlus/ColorSelectorPlusTool.txt From 681906f826ea6e1c9faf6fb7905ffc9a93bb60bb Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 30 Dec 2019 10:37:07 -0500 Subject: [PATCH 661/772] Better error message. --- contrib_generate/build_listing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/build_listing.py b/contrib_generate/build_listing.py index ee4dbd052..2c4a43b22 100755 --- a/contrib_generate/build_listing.py +++ b/contrib_generate/build_listing.py @@ -228,7 +228,7 @@ def missing_key(exports): key = missing_key(exports) if key: - print 'Error reading', prop_url + print 'Error missing key', prop_url print " No value for '%s'. Maybe it's a 404 page" % key continue # if no download is explicitly provided, use the default download url From 9087386eb057dcef942d266fdcc1edc31f328ba5 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 30 Dec 2019 10:38:49 -0500 Subject: [PATCH 662/772] Update Syphon URL. --- contrib_generate/sources.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 36caf8f44..3062896e8 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -264,7 +264,7 @@ 150 \ https://github.com/processing/processing-video/releases/download/latest/video.txt 013 \ http://shiffman.net/p5/libraries/openkinect_processing/openkinect_processing.txt 023 \ http://www.v3ga.net/processing/BlobDetection/blobDetection.txt -041 \ https://github.com/Syphon/Processing/releases/download/latestv2/Syphon.txt +041 \ https://github.com/Syphon/Processing/releases/latest/download/Syphon.txt # 059 \ http://thomasdiewald.at/processing/libraries/dLibs_freenect/download/dLibs_freenect.txt # 077 \ http://s373.net/code/flob/download/flob.txt # 081 \ http://ubaa.net/shared/processing/opencv/download/opencv.txt @@ -272,7 +272,7 @@ 132 \ https://github.com/atduskgreg/opencv-processing/releases/download/latest/opencv_processing.txt 134 \ http://decoder.x10host.com/blobscanner/blobscanner.txt 146 \ http://boofcv.org/processing/boofcv_processing.txt -148 \ https://github.com/Syphon/Processing/releases/download/latest/Syphon.txt +# 148 \ https://github.com/Syphon/Processing/releases/download/latest/Syphon.txt 149 \ http://www.magicandlove.com/software/Kinect4WinSDK.txt 161 \ http://codigogenerativo.com/KinectPV2.txt 176 \ http://www.stefanobaldan.com/projects/ipcapture/download/IPCapture.txt From 5101bee2c7d96db6374fd0d4d56fa05be09b8da0 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 30 Dec 2019 10:38:59 -0500 Subject: [PATCH 663/772] Add MatrixMath library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 3062896e8..73f4aaa16 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 250 +# Next ID: 251 # Increment after assigning ID to new contribution [Library : 3D] @@ -179,6 +179,7 @@ 131 \ http://www.lagers.org.uk/processing/qscript/QScript.txt 156 \ http://www.lagers.org.uk/processing/jasmine/Jasmine.txt 203 \ https://github.com/OliverColeman/hivis/releases/download/latest/HiVis.txt +251 \ https://github.com/pallav12/matrixMath-for-processing/releases/download/latest/MatrixMath.txt [Library : Other] 093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt From 579bc0f6eb81e10c0cecb55cd30255f683cb17fa Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 30 Dec 2019 10:52:07 -0500 Subject: [PATCH 664/772] Took Syphon off the skipped list. --- contrib_generate/skipped.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/contrib_generate/skipped.conf b/contrib_generate/skipped.conf index f4e2bf989..fb4891e7a 100644 --- a/contrib_generate/skipped.conf +++ b/contrib_generate/skipped.conf @@ -1,6 +1,5 @@ 007 039 -041 050 051 052 From 64cb0a251fb6f7bf57642e7abea4988bd1d03e33 Mon Sep 17 00:00:00 2001 From: REAS Date: Mon, 6 Jan 2020 13:40:30 -0800 Subject: [PATCH 665/772] Return to standard site 'ribbon' --- templates/template.cover.html | 12 ++++++------ templates/template.html | 29 +++++++++++++++-------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/templates/template.cover.html b/templates/template.cover.html index 1976a981e..4e776eb87 100755 --- a/templates/template.cover.html +++ b/templates/template.cover.html @@ -51,15 +51,15 @@
    » Github
    - +
    - From e81f2e1b542a9639bc90fd3dd507a364af2afb07 Mon Sep 17 00:00:00 2001 From: REAS Date: Mon, 6 Jan 2020 13:50:09 -0800 Subject: [PATCH 666/772] Return to standard site 'ribbon' --- templates/template.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/template.html b/templates/template.html index 42b85eb37..10a1d8545 100755 --- a/templates/template.html +++ b/templates/template.html @@ -43,6 +43,7 @@

    +
    + + - - - + diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index 19e3da621..59789a7f2 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -23,6 +23,19 @@ + - diff --git a/java_generate/templates/index.alphabetical.template.html b/java_generate/templates/index.alphabetical.template.html index 2f45ade33..46e234153 100644 --- a/java_generate/templates/index.alphabetical.template.html +++ b/java_generate/templates/index.alphabetical.template.html @@ -22,6 +22,19 @@ + - diff --git a/java_generate/templates/index.template.html b/java_generate/templates/index.template.html index e9215f46b..205ea1a28 100644 --- a/java_generate/templates/index.template.html +++ b/java_generate/templates/index.template.html @@ -21,6 +21,19 @@
    +
    - diff --git a/java_generate/templates/library.index.template.html b/java_generate/templates/library.index.template.html index 2f15f76b9..98c01d64e 100644 --- a/java_generate/templates/library.index.template.html +++ b/java_generate/templates/library.index.template.html @@ -23,6 +23,19 @@ + - @@ -77,20 +84,7 @@
    Events
    © Info - - + diff --git a/java_generate/templates/nav.web.template.html b/java_generate/templates/nav.web.template.html index 664b4eff1..a754b73e7 100644 --- a/java_generate/templates/nav.web.template.html +++ b/java_generate/templates/nav.web.template.html @@ -2,7 +2,7 @@ Cover

    Download
    - Donate

    + Donate

    Exhibition

    diff --git a/templates/template.html b/templates/template.html index 10a1d8545..334c27412 100755 --- a/templates/template.html +++ b/templates/template.html @@ -43,7 +43,7 @@

    -
    + -
    + diff --git a/java_generate/templates/index.template.html b/java_generate/templates/index.template.html index 205ea1a28..f78bdb5e9 100644 --- a/java_generate/templates/index.template.html +++ b/java_generate/templates/index.template.html @@ -42,12 +42,12 @@

    -
    + diff --git a/templates/template.nav.php b/templates/template.nav.php index a88f3997f..92ba0e37d 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -9,8 +9,6 @@ 'Learning' => array('/learning/', 1), 'Tutorials' => array('/tutorials/', 2), 'Examples' => array('/examples/', 2), - # '3D' => array('/learning/3d/', 2), - # 'Library' => array('/learning/library/', 2), 'Books' => array('/books/', 2), 'Handbook' => array('/handbook/', 2), @@ -24,7 +22,6 @@ 'Download' => array('/download/', 1), 'Donate' => array('/download/support.html', 1), - #'Donate' => array('https://donorbox.org/supportpf2019-fundraising-campaign', 1), 'Shop' => array('/shop/', 1), From 0aebb91747b510512f870e27de869b95d2d6560b Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Wed, 8 Jan 2020 15:19:37 -0800 Subject: [PATCH 670/772] Update all Oracle JavaSE reference links in documentation ...including: 1. broken links (e.g. ArrayList), 2. forwarded links that have been migrated from http to https, and 3. bumping up links pointing back at JavaSE 5/6/7 documentation when the underlying build is 8. Closes #788 --- content/api_en/arrayCopy.xml | 2 +- content/api_en/include/ArrayList.xml | 2 +- content/api_en/include/HashMap.xml | 2 +- content/api_en/include/String.xml | 2 +- content/api_en/include/class.xml | 2 +- content/api_en/include/float.xml | 2 +- content/api_en/keyCode.xml | 2 +- content/api_en/match.xml | 2 +- content/api_en/matchAll.xml | 2 +- .../Topics/Curves/ArcLengthParametrization/BezierCurve.pde | 2 +- content/static/tutorials/arraylist/index.html | 2 +- content/static/tutorials/data/index-old.html | 4 ++-- content/static/tutorials/data/index.html | 2 +- content/static/tutorials/text/index.html | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/content/api_en/arrayCopy.xml b/content/api_en/arrayCopy.xml index 1d0d41ef7..1b5165a10 100644 --- a/content/api_en/arrayCopy.xml +++ b/content/api_en/arrayCopy.xml @@ -41,7 +41,7 @@ Copies an array (or part of an array) to another array. The src array is
    The simplified version with only two arguments — arrayCopy(src, dst) — copies an entire array to another of the same size. It is equivalent to arrayCopy(src, 0, dst, 0, src.length).

    -Using this function is far more efficient for copying array data than iterating through a for() loop and copying each element individually. This function only copies references, which means that for most purposes it only copies one-dimensional arrays (a single set of brackets). If used with a two (or three or more) dimensional array, it will only copy the references at the first level, because a two dimensional array is simply an "array of arrays". This does not produce an error, however, because this is often the desired behavior. Internally, this function calls Java's System.arraycopy() method, so most things that apply there are inherited. +Using this function is far more efficient for copying array data than iterating through a for() loop and copying each element individually. This function only copies references, which means that for most purposes it only copies one-dimensional arrays (a single set of brackets). If used with a two (or three or more) dimensional array, it will only copy the references at the first level, because a two dimensional array is simply an "array of arrays". This does not produce an error, however, because this is often the desired behavior. Internally, this function calls Java's System.arraycopy() method, so most things that apply there are inherited. ]]> diff --git a/content/api_en/include/ArrayList.xml b/content/api_en/include/ArrayList.xml index 1cf04f77d..8feb4dc3a 100644 --- a/content/api_en/include/ArrayList.xml +++ b/content/api_en/include/ArrayList.xml @@ -64,7 +64,7 @@ An ArrayList stores a variable number of objects. This is similar to maki
    An ArrayList is a resizable-array implementation of the Java List interface. It has many methods used to control and search its contents. For example, the length of the ArrayList is returned by its size() method, which is an integer value for the total number of elements in the list. An element is added to an ArrayList with the add() method and is deleted with the remove() method. The get() method returns the element at the specified position in the list. (See the above example for context.)

    -For a list of the numerous ArrayList features, please read the Java reference description. +For a list of the numerous ArrayList features, please read the Java reference description. ]]> diff --git a/content/api_en/include/HashMap.xml b/content/api_en/include/HashMap.xml index 89cba966a..493e893de 100644 --- a/content/api_en/include/HashMap.xml +++ b/content/api_en/include/HashMap.xml @@ -39,7 +39,7 @@ println("Casey is " + val); HashMap stores a collection of objects, each referenced by a key. This is similar to an Array, only instead of accessing elements with a numeric index, a String is used. (If you are familiar with associative arrays from other languages, this is the same idea.) The above example covers basic use, but there's a more extensive example included with the Processing examples. In addition, for simple pairings of Strings and integers, Strings and floats, or Strings and Strings, you can now use the simpler IntDict, FloatDict, and StringDict classes.

    -For a list of the numerous HashMap features, please read the Java reference description. +For a list of the numerous HashMap features, please read the Java reference description. ]]>
    diff --git a/content/api_en/include/String.xml b/content/api_en/include/String.xml index 886c433b9..2febbe7de 100755 --- a/content/api_en/include/String.xml +++ b/content/api_en/include/String.xml @@ -47,7 +47,7 @@ To compare the contents of two Strings, use the equals() method, as in Because a String is defined between double quotation marks, to include such marks within the String itself you must use the \ (backslash) character. (See the third example above.) This is known as an escape sequence. Other escape sequences include \t for the tab character and \n for new line. Because backslash is the escape character, to include a single backslash within a String, you must use two consecutive backslashes, as in: \\

    -There are more string methods than those linked from this page. Additional documentation is located online in the official Java documentation. +There are more string methods than those linked from this page. Additional documentation is located online in the official Java documentation. ]]> diff --git a/content/api_en/include/class.xml b/content/api_en/include/class.xml index 45eedd292..5f1e84cab 100755 --- a/content/api_en/include/class.xml +++ b/content/api_en/include/class.xml @@ -46,7 +46,7 @@ class HLine { Object-Oriented Programming is hosted on the Oracle website. +Keyword used to indicate the declaration of a class. A class is a composite of fields (data) and methods (functions that are a part of the class) which may be instantiated as objects. The first letter of a class name is usually uppercase to separate it from other kinds of variables. A related tutorial on Object-Oriented Programming is hosted on the Oracle website. ]]> diff --git a/content/api_en/include/float.xml b/content/api_en/include/float.xml index 964d946e6..134cb33f4 100755 --- a/content/api_en/include/float.xml +++ b/content/api_en/include/float.xml @@ -41,7 +41,7 @@ Data type for floating-point numbers, e.g. numbers that have a decimal point.
    Floats are not precise, so adding small values (such as 0.0001) may not always increment precisely due to rounding errors. If you want to increment a value in small intervals, use an int, and divide by a float value before using it. (See the second example above.)

    -Floating-point numbers can be as large as 3.40282347E+38 and as low as -3.40282347E+38. They are stored as 32 bits (4 bytes) of information. The float data type is inherited from Java; you can read more about the technical details here and here.
    +Floating-point numbers can be as large as 3.40282347E+38 and as low as -3.40282347E+38. They are stored as 32 bits (4 bytes) of information. The float data type is inherited from Java; you can read more about the technical details here and here.

    Processing supports the double datatype from Java as well. However, none of the Processing functions use double values, which use more memory and are typically overkill for most work created in Processing. We do not plan to add support for double values, as doing so would require increasing the number of API functions significantly. ]]> diff --git a/content/api_en/keyCode.xml b/content/api_en/keyCode.xml index f927a373c..8a3cd3d2f 100755 --- a/content/api_en/keyCode.xml +++ b/content/api_en/keyCode.xml @@ -39,7 +39,7 @@ When checking for these keys, it can be useful to first check if the key is code

    The keys included in the ASCII specification (BACKSPACE, TAB, ENTER, RETURN, ESC, and DELETE) do not require checking to see if the key is coded; for those keys, you should simply use the key variable directly (and not keyCode). If you're making cross-platform projects, note that the ENTER key is commonly used on PCs and Unix, while the RETURN key is used on Macs. Make sure your program will work on all platforms by checking for both ENTER and RETURN.

    -For those familiar with Java, the values for UP and DOWN are simply shorter versions of Java's KeyEvent.VK_UP and KeyEvent.VK_DOWN. Other keyCode values can be found in the Java KeyEvent reference. +For those familiar with Java, the values for UP and DOWN are simply shorter versions of Java's KeyEvent.VK_UP and KeyEvent.VK_DOWN. Other keyCode values can be found in the Java KeyEvent reference.

    There are issues with how keyCode behaves across different renderers and operating systems. Watch out for unexpected behavior as you switch renderers and operating systems and you are using keys are aren't mentioned in this reference entry.

    diff --git a/content/api_en/match.xml b/content/api_en/match.xml index 1db3a9f3a..92d1b2fdf 100755 --- a/content/api_en/match.xml +++ b/content/api_en/match.xml @@ -51,7 +51,7 @@ To use the function, first check to see if the result is null. If the result is
    If there are groups (specified by sets of parentheses) in the regular expression, then the contents of each will be returned in the array. Element [0] of a regular expression match returns the entire matching string, and the match groups start at element [1] (the first group is [1], the second [2], and so on).

    -The syntax can be found in the reference for Java's Pattern class. For regular expression syntax, read the Java Tutorial on the topic. +The syntax can be found in the reference for Java's Pattern class. For regular expression syntax, read the Java Tutorial on the topic. ]]> diff --git a/content/api_en/matchAll.xml b/content/api_en/matchAll.xml index 56feb6b5b..4f0345fbe 100644 --- a/content/api_en/matchAll.xml +++ b/content/api_en/matchAll.xml @@ -33,7 +33,7 @@ To use the function, first check to see if the result is null. If the result is
    If there are groups (specified by sets of parentheses) in the regular expression, then the contents of each will be returned in the array. Assuming a loop with counter variable i, element [i][0] of a regular expression match returns the entire matching string, and the match groups start at element [i][1] (the first group is [i][1], the second [i][2], and so on).

    -The syntax can be found in the reference for Java's Pattern class. For regular expression syntax, read the Java Tutorial on the topic. +The syntax can be found in the reference for Java's Pattern class. For regular expression syntax, read the Java Tutorial on the topic. ]]> diff --git a/content/examples/Topics/Curves/ArcLengthParametrization/BezierCurve.pde b/content/examples/Topics/Curves/ArcLengthParametrization/BezierCurve.pde index 531ea367b..299ba8180 100644 --- a/content/examples/Topics/Curves/ArcLengthParametrization/BezierCurve.pde +++ b/content/examples/Topics/Curves/ArcLengthParametrization/BezierCurve.pde @@ -110,7 +110,7 @@ class BezierCurve { if (index < 0) { // if the index is negative, exact length is not in the table, // but it tells us where it should be in the table - // see http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(float[], float) + // see https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#binarySearch-float:A-float- // interpolate two surrounding indexes int nextIndex = -(index + 1); diff --git a/content/static/tutorials/arraylist/index.html b/content/static/tutorials/arraylist/index.html index 613ffee6a..5f24a6ad5 100644 --- a/content/static/tutorials/arraylist/index.html +++ b/content/static/tutorials/arraylist/index.html @@ -1,4 +1,4 @@ -In truth, we could use a simple array to manage our Particle objects. Some particle systems might have a fixed number of particles, and arrays are magnificently efficient in those instances. Processing also offers expand(), contract(), subset(), splice() and other methods for resizing arrays. However, for these examples, the Java class ArrayList (found in the java.util package: http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html) will prove to be the best solution.

Using an ArrayList is conceptually similar to a standard array, but the syntax is different. Here is some code (that assumes the existence of a generic Particle class) demonstrating identical results: first with an array, and second with an ArrayList. +In truth, we could use a simple array to manage our Particle objects. Some particle systems might have a fixed number of particles, and arrays are magnificently efficient in those instances. Processing also offers expand(), contract(), subset(), splice() and other methods for resizing arrays. However, for these examples, the Java class ArrayList (found in the java.util package: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) will prove to be the best solution.

Using an ArrayList is conceptually similar to a standard array, but the syntax is different. Here is some code (that assumes the existence of a generic Particle class) demonstrating identical results: first with an array, and second with an ArrayList. // THE STANDARD ARRAY WAY int total = 10; diff --git a/content/static/tutorials/data/index-old.html b/content/static/tutorials/data/index-old.html index 0df744e1b..6221a4a80 100644 --- a/content/static/tutorials/data/index-old.html +++ b/content/static/tutorials/data/index-old.html @@ -17,7 +17,7 @@

    Daniel Shiffman

    Manipulating Strings

    - In Strings and Drawing Text, we touched on a few of the basic functions available in the Java String class, such as charAt(), toUpperCase(), equals(), and length(). These functions are documented on the Processing reference page for Strings. Nevertheless, in order to perform some more advanced data parsing techniques, we'll need to explore some additional String manipulation functions documented in the Java API. + In Strings and Drawing Text, we touched on a few of the basic functions available in the Java String class, such as charAt(), toUpperCase(), equals(), and length(). These functions are documented on the Processing reference page for Strings. Nevertheless, in order to perform some more advanced data parsing techniques, we'll need to explore some additional String manipulation functions documented in the Java API.

    @@ -518,7 +518,7 @@

    Threads

    Two examples that follow this methodology can be found under Topics --> Advanced Data in the Processing examples.

    -

    While using the thread() function is a very simple way of getting an independent thread, it should be noted that it is somewhat limited. Being able to make a thread object is a great deal more powerful, and this can be done by extending the Java Thread class.

    +

    While using the thread() function is a very simple way of getting an independent thread, it should be noted that it is somewhat limited. Being able to make a thread object is a great deal more powerful, and this can be done by extending the Java Thread class.

    diff --git a/content/static/tutorials/data/index.html b/content/static/tutorials/data/index.html index e69e99529..ebafcce92 100644 --- a/content/static/tutorials/data/index.html +++ b/content/static/tutorials/data/index.html @@ -17,7 +17,7 @@

    Daniel Shiffman

    Manipulating Strings

    - In Strings and Drawing Text, we touched on a few of the basic functions available in the Java String, such as charAt(), toUpperCase(), equals(), and length(). These functions are documented on the Processing reference page for Strings. Nevertheless, in order to perform some more advanced data parsing techniques, we'll need to explore some additional String manipulation functions documented in the Java API. + In Strings and Drawing Text, we touched on a few of the basic functions available in the Java String, such as charAt(), toUpperCase(), equals(), and length(). These functions are documented on the Processing reference page for Strings. Nevertheless, in order to perform some more advanced data parsing techniques, we'll need to explore some additional String manipulation functions documented in the Java API.

    Let's take a closer look at the following two String functions: indexOf() and substring().

    indexOf() locates a sequence of characters within a string. It takes one argument — a search string — and returns a numeric value that corresponds to the first occurrence of the search string inside of the String object being searched.
    diff --git a/content/static/tutorials/text/index.html b/content/static/tutorials/text/index.html index fa9b928fd..4636aea5d 100644 --- a/content/static/tutorials/text/index.html +++ b/content/static/tutorials/text/index.html @@ -32,7 +32,7 @@

    Where do we find documentation for the String class?

    - This page only covers some of the available methods of the String class. The full documentation can be found on java's String page. + This page only covers some of the available methods of the String class. The full documentation can be found on java's String page.

    From 930ba3213d5723df644179f7d82582819b193bcd Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Wed, 8 Jan 2020 15:46:34 -0800 Subject: [PATCH 671/772] Document strokeCap setting for square points, invisible points problem closes #792 --- content/api_en/point.xml | 2 ++ content/api_en/strokeCap.xml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/api_en/point.xml b/content/api_en/point.xml index 141dc932f..ac8d5b36b 100755 --- a/content/api_en/point.xml +++ b/content/api_en/point.xml @@ -35,6 +35,8 @@ point(30, 75, -50); Draws a point, a coordinate in space at the dimension of one pixel. The first parameter is the horizontal value for the point, the second value is the vertical value for the point, and the optional third value is the depth value. Drawing this shape in 3D with the z parameter requires the P3D parameter in combination with size() as shown in the above example.

    Use stroke() to set the color of a point(). +

    +Point appears round with the default strokeCap(ROUND) and square with strokeCap(PROJECT). Points are invisible with strokeCap(SQUARE) (no cap). ]]> diff --git a/content/api_en/strokeCap.xml b/content/api_en/strokeCap.xml index f74330d4b..6308605ad 100755 --- a/content/api_en/strokeCap.xml +++ b/content/api_en/strokeCap.xml @@ -23,6 +23,8 @@ line(20, 70, 80, 70);
    +To make point() appear square, use strokeCap(PROJECT). Using strokeCap(SQUARE) (no cap) causes points to become invisible. ]]>
    From 6ee278e6aa0cafecaed9f3839d20105db1d761c0 Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 14 Jan 2020 10:28:08 -0800 Subject: [PATCH 672/772] Update for Handbook page, fix links --- content/static/handbook.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/static/handbook.html b/content/static/handbook.html index e1fbca351..27ef76ed6 100644 --- a/content/static/handbook.html +++ b/content/static/handbook.html @@ -6,13 +6,13 @@

    Processing: A Programming Handbook Published December 2014, The MIT Press.
    720 Pages. Hardcover.

    - » Order from MIT Press
    + » Order from MIT Press
    » Order from Amazon

    » Download Examples
    » Errata

    - If you are an educator, you can request a desk/exam copy from the MIT Press website. + If you are an educator, you can request a desk/exam copy from the MIT Press website.

    @@ -28,7 +28,7 @@

    Processing: A Programming Handbook

    - Interviews with SUE.C, Larry Cuba, Mark Hansen, Lynn Hershman Leeson, Jürg Lehni, LettError, Golan Levin and Zachary Lieberman, Benjamin Maus, Manfred Mohr, Ash Nehru, Josh On, Bob Sabiston, Jennifer Steinkamp, Jared Tarbell, Steph Thirion, and Robert Winter. + Interviews with SUE.C, Larry Cuba, Mark Hansen, Lynn Hershman Leeson, Jürg Lehni, LettError, Golan Levin and Zachary Lieberman, Benjamin Maus, Manfred Mohr, Ash Nehru, Josh On, Bob Sabiston, Jennifer Steinkamp, Jared Tarbell, Steph Thirion, and Robert Winter.

    From 723290241a1d18b7969d15d650993163bd3577ec Mon Sep 17 00:00:00 2001 From: REAS Date: Tue, 14 Jan 2020 10:32:56 -0800 Subject: [PATCH 673/772] Update for Handbook page, fix links --- content/static/books.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index ac1fc9d0e..e935e82db 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -12,13 +12,13 @@

    Books. Processing books cove Processing: A Programming Handbook for Visual Designers,
    Second Edition

    Casey Reas and Ben Fry.
    Published December 2014, The MIT Press. 720 pages. Hardcover.
    - » Order from MIT Press
    + » Order from MIT Press
    » Order from Amazon

    The second edition of the Handbook has been thoroughly updated, influenced by the seven years of Processing being taught in classrooms, computer labs, and studios since the first edition. Every chapter has been revised, and added chapters introduce new ways to work with data and geometry. New “synthesis” chapters offer discussion and worked examples of such topics as sketching with code, modularity, and algorithms. Interviews have been added that cover a wider range of projects and history. “Extension” chapters are now offered online so they can be updated to keep pace with technological developments in such fields as computer vision and electronics.

    - If you are an educator, you can request a desk/exam copy from the MIT Press website.
    + If you are an educator, you can request a desk/exam copy from the MIT Press website.
    From 3061c4b05ad38f3c9ca9bc7c131a5f31956d49ae Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Fri, 17 Jan 2020 12:38:57 -0500 Subject: [PATCH 674/772] add 3.5.4 --- content/static/download.html | 22 +++++++++++++++------- download/latest.txt | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index dfb66439e..64ee058f0 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -9,16 +9,18 @@

    Download Processing. Process
    - 3.5.3 - (3 February 2019) + 3.5.4 + (17 January 2019)
    @@ -40,6 +42,14 @@

    Download Processing. Process

    Stable Releases

    +
  • + 3.5.4 + (17 January 2019) + Win 32 + Win 64 + Linux 64 + Mac OS X +
  • 3.5.3 (3 February 2019) @@ -81,7 +91,6 @@

    Stable Releases

    Linux ARMv6hf Mac OS X
  • - -->
  • 3.4 (26 July 2018) @@ -92,7 +101,6 @@

    Stable Releases

    Linux ARMv6hf Mac OS X
  • -
    - 3.5.4 - (17 January 2019) + 3.5.3 + (3 February 2019)
      -
    • Windows 64-bit
      - Windows 32-bit
    • -
    • Linux 64-bit
      +
    • Windows 64-bit
      + Windows 32-bit
    • +
    • Linux 64-bit

      Stable Releases

      +
    • 3.5.3 (3 February 2019) From d55ac4ac87d6661dd555b213bdc93fa29138cf4b Mon Sep 17 00:00:00 2001 From: REAS Date: Fri, 17 Jan 2020 14:35:53 -0800 Subject: [PATCH 676/772] Adding 3.5.4 back to download page --- content/static/download.html | 52 +++++++++++++++++------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index 798f76f7c..b4f0cc394 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -9,19 +9,19 @@

      Download Processing. Process
      - 3.5.3 - (3 February 2019) + 3.5.4 + (17 January 2020)
      @@ -42,25 +42,23 @@

      Download Processing. Process

      Stable Releases

      -
    • 3.5.3 (3 February 2019) - Win 32 - Win 64 - Linux 32 - Linux 64 - Linux ARMv6hf - Mac OS X + Win 32 + Win 64 + Linux 32 + Linux 64 + Linux ARMv6hf + Mac OS X
    • -
    • Mac OS X
    • +
    • Mac OS X
    @@ -45,20 +45,20 @@

    Stable Releases

  • 3.5.4 (17 January 2020) - Win 32 - Win 64 - Linux 64 - Mac OS X + Win 32 + Win 64 + Linux 64 + Mac OS X
  • 3.5.3 (3 February 2019) - Win 32 - Win 64 - Linux 32 - Linux 64 - Linux ARMv6hf - Mac OS X + Win 32 + Win 64 + Linux 32 + Linux 64 + Linux ARMv6hf + Mac OS X
  • +
  • + 4.0 alpha 1 + (18 January 2020) + Win 64 + Linux 64 + Mac OS X +
  • + + -
  • Mac OS X
  • +
  • Mac OS X
  • @@ -45,10 +45,10 @@

    Stable Releases

  • 3.5.4 (17 January 2020) - Win 32 - Win 64 - Linux 64 - Mac OS X + Win 32 + Win 64 + Linux 64 + Mac OS X
  • 3.5.3 From a12008567966a2fb033d6a5e83f84d6c42bf1416 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 18 Jan 2020 22:34:55 -0500 Subject: [PATCH 680/772] link to changes.md instead of revisions.txt for 4.x --- content/static/download.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index 64e0b1a68..1d438718e 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -429,7 +429,7 @@

    Pre-Releases

  • --> -

    The revisions cover incremental changes between releases, and are especially important to read for pre-releases.

    +

    The changes document covers incremental updates between 4.x releases, and is especially important to read for pre-releases.

    From 3f2896a3336c094e87570acad72cb585f8d550a3 Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Wed, 29 Jan 2020 13:36:26 -0800 Subject: [PATCH 681/772] Document strokeWeight(1) causing invisible point() problem and workarounds --- content/api_en/point.xml | 2 ++ content/api_en/strokeWeight.xml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/api_en/point.xml b/content/api_en/point.xml index ac8d5b36b..8989051e9 100755 --- a/content/api_en/point.xml +++ b/content/api_en/point.xml @@ -37,6 +37,8 @@ Draws a point, a coordinate in space at the dimension of one pixel. The first pa Use stroke() to set the color of a point().

    Point appears round with the default strokeCap(ROUND) and square with strokeCap(PROJECT). Points are invisible with strokeCap(SQUARE) (no cap). +

    +Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel use set()
    or draw the point using either circle() or square(). ]]> diff --git a/content/api_en/strokeWeight.xml b/content/api_en/strokeWeight.xml index d614509e9..f5e36551b 100755 --- a/content/api_en/strokeWeight.xml +++ b/content/api_en/strokeWeight.xml @@ -22,6 +22,8 @@ line(20, 70, 80, 70);
    +Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel use set()
    or draw the point using either circle() or square(). ]]> From 16cee9b9928dd4c5fe7ddec0afa430ebd9631cbe Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Mon, 3 Feb 2020 10:09:16 -0800 Subject: [PATCH 682/772] doccomment drops outdated ref to index.html generation and adds line on how to do javadoc generation with third-party tools. closes #796 --- content/api_en/include/doccomment.xml | 4 +++- content/api_en/include/multilinecomment.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/content/api_en/include/doccomment.xml b/content/api_en/include/doccomment.xml index bb4331414..fa036a032 100755 --- a/content/api_en/include/doccomment.xml +++ b/content/api_en/include/doccomment.xml @@ -22,7 +22,9 @@ line(50, 0, 50, 100);
    +Doc comments may be converted into browseable documentation using external editors and tools such as the command line javadoc, doc generators such as Doxygen, or IDEs such as Eclipse, Netbeans, or IntelliJ IDEA. ]]>
    diff --git a/content/api_en/include/multilinecomment.xml b/content/api_en/include/multilinecomment.xml index bd88002cb..a1c9dd6a1 100755 --- a/content/api_en/include/multilinecomment.xml +++ b/content/api_en/include/multilinecomment.xml @@ -22,7 +22,7 @@ line(50, 0, 50, 100); From 9605d8d6afe7b3b37ae4c7cda0324a07b78fd1a2 Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Mon, 3 Feb 2020 16:17:55 -0800 Subject: [PATCH 683/772] grammar fix: use -> using --- content/api_en/point.xml | 2 +- content/api_en/strokeWeight.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/api_en/point.xml b/content/api_en/point.xml index 8989051e9..6034c7f82 100755 --- a/content/api_en/point.xml +++ b/content/api_en/point.xml @@ -38,7 +38,7 @@ Use stroke() to set the color of a point().

    Point appears round with the default strokeCap(ROUND) and square with strokeCap(PROJECT). Points are invisible with strokeCap(SQUARE) (no cap).

    -Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel use set()
    or draw the point using either circle() or square(). +Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel using set() or drawing the point using either circle() or square(). ]]> diff --git a/content/api_en/strokeWeight.xml b/content/api_en/strokeWeight.xml index f5e36551b..e954ffb95 100755 --- a/content/api_en/strokeWeight.xml +++ b/content/api_en/strokeWeight.xml @@ -23,7 +23,7 @@ line(20, 70, 80, 70);
    -Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel use set() or draw the point using either circle() or square(). +Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel using set() or drawing the point using either circle() or square(). ]]>
    From f862b82f97c08532ab755e6309eec429f572983c Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 4 Feb 2020 22:41:10 -0500 Subject: [PATCH 684/772] Add Lunar library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 73f4aaa16..da422361b 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 251 +# Next ID: 252 # Increment after assigning ID to new contribution [Library : 3D] @@ -24,6 +24,7 @@ 215 \ http://maxlfarrell.gitlab.io/extruder/extruder.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt +251 \ http://www.bdhont.net/lunar.txt [Library : Animation] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From 18b0d2de9ec5d9baa5145b7d3f86d88de64197c6 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 4 Feb 2020 22:58:43 -0500 Subject: [PATCH 685/772] Fix duplicate ID. --- contrib_generate/sources.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index da422361b..42fa077e5 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 252 +# Next ID: 253 # Increment after assigning ID to new contribution [Library : 3D] @@ -24,7 +24,7 @@ 215 \ http://maxlfarrell.gitlab.io/extruder/extruder.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt -251 \ http://www.bdhont.net/lunar.txt +252 \ http://www.bdhont.net/lunar.txt [Library : Animation] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From a64b988d951a1afd8ee28426b3ba0e12d070d4e9 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 10 Feb 2020 21:03:54 -0500 Subject: [PATCH 686/772] Add Green library. --- contrib_generate/sources.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 42fa077e5..47e008191 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 253 +# Next ID: 254 # Increment after assigning ID to new contribution [Library : 3D] @@ -38,6 +38,7 @@ 231 \ http://objectstothinkwith.com/tracer/tracer.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt +253 \ https://ztdp.ca/projects/school/Green/Green.txt [Library : Compilation] 004 \ http://staff.city.ac.uk/~jwo/giCentre/utils/gicentreUtils.txt @@ -186,6 +187,7 @@ 093 \ http://www.lagers.org.uk/processing/pathfinder/Path_Finder.txt 157 \ http://www.lagers.org.uk/processing/steganos/Steganos.txt 185 \ http://softlab.pt/ptmx/ptmx.txt +253 \ https://ztdp.ca/projects/school/Green/Green.txt [Library : Simulation] 018 \ http://www.ricardmarxer.com/fisica/download/fisica.txt From 1a638db31ce20c26fe04889379fada4b716551af Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Sun, 8 Mar 2020 10:26:22 -0700 Subject: [PATCH 687/772] RegularPolygon example -- fix comment Closes #802 --- content/examples/Basics/Form/RegularPolygon/RegularPolygon.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/examples/Basics/Form/RegularPolygon/RegularPolygon.pde b/content/examples/Basics/Form/RegularPolygon/RegularPolygon.pde index 09379230c..52d8f81af 100644 --- a/content/examples/Basics/Form/RegularPolygon/RegularPolygon.pde +++ b/content/examples/Basics/Form/RegularPolygon/RegularPolygon.pde @@ -24,7 +24,7 @@ void draw() { pushMatrix(); translate(width*0.5, height*0.5); rotate(frameCount / 50.0); - polygon(0, 0, 80, 20); // Icosahedron + polygon(0, 0, 80, 20); // Icosagon popMatrix(); pushMatrix(); From 868fa13a205e6c292a44364bfbd60cd84e1cbf13 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 31 Mar 2020 12:40:55 -0400 Subject: [PATCH 688/772] Update Ketai library URL. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 47e008191..61c739513 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -112,7 +112,7 @@ 024 \ https://github.com/firmata/processing/releases/download/latest/processing-arduino.txt 028 \ http://projects.formatlos.de/ambientlightsensor/download/AmbientLightSensor.txt # 064 \ http://www.muvium.com/frappuccino/frappuccino.txt -066 \ http://ketailibrary.org/ketai.txt +066 \ http://ketai.org/ketai.txt 071 \ http://motscousus.com/stuff/2011-01_dmxP512/dmxP512.txt 090 \ https://dl.dropbox.com/u/87680069/LeapMotion.txt # 102 \ http://s176381904.onlinehome.fr/processing/MoveLib/download/MoveLib.txt From bdd2a023a691cdd1b42b761d6a2816043281b0c7 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Fri, 17 Apr 2020 20:09:41 +0800 Subject: [PATCH 689/772] Add Sound library Waveform analyzer documentation Contributed by @mhamilt --- content/api_en/LIB_sound/Waveform.xml | 107 ++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 content/api_en/LIB_sound/Waveform.xml diff --git a/content/api_en/LIB_sound/Waveform.xml b/content/api_en/LIB_sound/Waveform.xml new file mode 100644 index 000000000..4251ddd60 --- /dev/null +++ b/content/api_en/LIB_sound/Waveform.xml @@ -0,0 +1,107 @@ + + + +Waveform + +Sound + +Analyzer + +Application + + + + + + + + + + + + + + + + +input() +Define the audio input for the analyzer + + + +analyze() +Gets the last nsamples captured from the connected input sound source, writes them + into this Waveform's `data` array, and returns it. + + + +stop() +Stop the analyzer + + + +data +`float[]` of length nsamples, with the sample amplitudes between `-1` and `1` + + + +Waveform(parent) + + + +parent +PApplet: typically use "this" + + + + + + + +Object + +Library + + From ba7c1a2423b5faae2802a1c1919bbc080506a1d7 Mon Sep 17 00:00:00 2001 From: John Belmonte Date: Fri, 1 May 2020 16:14:09 +0900 Subject: [PATCH 690/772] fix typo in noSmooth() docs --- content/api_en/noSmooth.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/noSmooth.xml b/content/api_en/noSmooth.xml index aa1ceec8d..9c98dc192 100755 --- a/content/api_en/noSmooth.xml +++ b/content/api_en/noSmooth.xml @@ -38,7 +38,7 @@ void draw() { smooth() is active by default, so it is necessary to call noSmooth() to disable smoothing of geometry, fonts, and images. Since the release of Processing 3.0, the noSmooth() function can only be run once for each sketch, either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). See the examples above for both scenarios. +Draws all geometry and fonts with jagged (aliased) edges and images with hard edges between the pixels when enlarged rather than interpoloating pixels. Note that smooth() is active by default, so it is necessary to call noSmooth() to disable smoothing of geometry, fonts, and images. Since the release of Processing 3.0, the noSmooth() function can only be run once for each sketch, either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). See the examples above for both scenarios. ]]> From a046076ceebacfec50aa330e12e25cbc6cb54c57 Mon Sep 17 00:00:00 2001 From: John Belmonte Date: Fri, 1 May 2020 16:27:34 +0900 Subject: [PATCH 691/772] fix "interpolating" typo in noSmooth docs --- content/api_en/noSmooth.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/noSmooth.xml b/content/api_en/noSmooth.xml index 9c98dc192..d40dd92e6 100755 --- a/content/api_en/noSmooth.xml +++ b/content/api_en/noSmooth.xml @@ -38,7 +38,7 @@ void draw() { smooth() is active by default, so it is necessary to call noSmooth() to disable smoothing of geometry, fonts, and images. Since the release of Processing 3.0, the noSmooth() function can only be run once for each sketch, either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). See the examples above for both scenarios. +Draws all geometry and fonts with jagged (aliased) edges and images with hard edges between the pixels when enlarged rather than interpolating pixels. Note that smooth() is active by default, so it is necessary to call noSmooth() to disable smoothing of geometry, fonts, and images. Since the release of Processing 3.0, the noSmooth() function can only be run once for each sketch, either at the top of a sketch without a setup(), or after the size() function when used in a sketch with setup(). See the examples above for both scenarios. ]]> From 744da894bbcb51d60ebbf760f70c1236324d0f4d Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Fri, 1 May 2020 10:34:36 -0400 Subject: [PATCH 692/772] Add ComposingForEveryone library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 61c739513..4626ac930 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 254 +# Next ID: 255 # Increment after assigning ID to new contribution [Library : 3D] @@ -219,6 +219,7 @@ 151 \ https://corajr.github.io/loom/download/loom.txt 170 \ https://github.com/shlomihod/cassette/releases/download/latest/cassette.txt 219 \ https://teddavis.org/xyscope/download/XYscope.txt +254 \ http://www.kramann.info/ComposingForEveryone.txt [Library : Utilities] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From 342775674a927b06400cc44dbd91de79240d45bc Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 12 May 2020 10:31:30 -0400 Subject: [PATCH 693/772] Add UiBooster and LiveBrush contributions. --- contrib_generate/sources.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 4626ac930..041930fcc 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 255 +# Next ID: 257 # Increment after assigning ID to new contribution [Library : 3D] @@ -106,6 +106,7 @@ 180 \ http://interfascia.berg.industries/download/interfascia.txt 224 \ https://github.com/BillKujawa/meter/releases/download/latest/meter.txt 237 \ http://gicentre.org/handy/handy.txt +256 \ https://github.com/Milchreis/uibooster-for-processing/releases/latest/download/UiBooster.txt [Library : Hardware] 015 \ http://www.shiffman.net/p5/libraries/sms/sms.txt @@ -259,6 +260,7 @@ 245 \ https://github.com/VisualComputing/nub/releases/download/latest/nub.txt 246 \ https://github.com/federico-pepe/nice-color-palettes/releases/download/latest/NiceColorPalettes.txt 248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt +255 \ https://bdhont.net/LiveBrush.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From d34c5b027ca8a9e189bba8ab04b2cf17d2b2f886 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 12 May 2020 11:18:00 -0400 Subject: [PATCH 694/772] Add InfinidecimalCanvas library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 041930fcc..a8e524c5d 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 257 +# Next ID: 258 # Increment after assigning ID to new contribution [Library : 3D] @@ -261,6 +261,7 @@ 246 \ https://github.com/federico-pepe/nice-color-palettes/releases/download/latest/NiceColorPalettes.txt 248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt 255 \ https://bdhont.net/LiveBrush.txt +257 \ https://rect.dev/processing/infinidecimal/GRInfinidecimalCanvas.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From 734ef2c3ed09bfef36c045ac97711f304694a53d Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 13 May 2020 09:14:12 -0400 Subject: [PATCH 695/772] Add Grab library. --- contrib_generate/sources.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index a8e524c5d..4159127d1 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 258 +# Next ID: 259 # Increment after assigning ID to new contribution [Library : 3D] @@ -168,6 +168,7 @@ 232 \ https://github.com/haschdl/pLaunchController/releases/download/latest/pLaunchController.txt 239 \ http://skweezee.net/processing/download/SkweezeeForProcessing.txt 247 \ https://github.com/orgicus/image-sequence-player/releases/download/latest/ImageSequencePlayer.txt +258 \ https://github.com/Transmedia-Gx/grab/releases/latest/download/Grab.txt [Library : Language] 063 \ http://rednoise.org/rita/rita.txt @@ -262,6 +263,7 @@ 248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt 255 \ https://bdhont.net/LiveBrush.txt 257 \ https://rect.dev/processing/infinidecimal/GRInfinidecimalCanvas.txt +258 \ https://github.com/Transmedia-Gx/grab/releases/latest/download/Grab.txt [Library : Typography] 038 \ http://www.ricardmarxer.com/geomerative/geomerative.txt From 1c0437f26e7994347f5464a92d32fcfc2468ac45 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 19 May 2020 09:58:30 -0400 Subject: [PATCH 696/772] Update GazeTrack URL. --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 4159127d1..e8ba0dba7 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -130,7 +130,7 @@ 218 \ https://github.com/cansik/sweep-processing/releases/download/latest/SweepProcessing.txt 219 \ https://teddavis.org/xyscope/download/XYscope.txt 224 \ https://github.com/BillKujawa/meter/releases/download/latest/meter.txt -225 \ http://hci.soc.napier.ac.uk/GazeTrack/GazeTrack.txt +225 \ http://web.tecnico.ulisboa.pt/augusto.esteves/GazeTrack/GazeTrack.txt 238 \ https://github.com/cansik/realsense-processing/releases/download/contributed/RealSenseProcessing.txt 239 \ http://skweezee.net/processing/download/SkweezeeForProcessing.txt From 67d6852577723a31bd358169172373291f8f05b5 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 19 May 2020 09:58:41 -0400 Subject: [PATCH 697/772] Add ShaderMode mode. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index e8ba0dba7..89f5bb071 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 259 +# Next ID: 260 # Increment after assigning ID to new contribution [Library : 3D] @@ -341,3 +341,4 @@ 169 \ https://py.processing.org/3/PythonMode.txt 199 \ https://github.com/fathominfo/processing-p5js-mode/releases/download/latest/p5jsMode.txt 220 \ https://github.com/processing-r/Processing.R/releases/latest/download/RLangMode.txt +250 \ https://github.com/Izza11/shader-mode/releases/download/latest/ShaderMode.txt From 5b74b1fd7512b11bee13ff78236495c1c2b88c0b Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 27 May 2020 20:39:35 -0400 Subject: [PATCH 698/772] Add procmod Library to list. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 89f5bb071..3e3d89eb8 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 260 +# Next ID: 261 # Increment after assigning ID to new contribution [Library : 3D] @@ -222,6 +222,7 @@ 170 \ https://github.com/shlomihod/cassette/releases/download/latest/cassette.txt 219 \ https://teddavis.org/xyscope/download/XYscope.txt 254 \ http://www.kramann.info/ComposingForEveryone.txt +260 \ https://github.com/sphaero/procmod/releases/latest/download/procmod.txt [Library : Utilities] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From e349efaa358e03cadb1a65f05b4d422533c8fe23 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 2 Jun 2020 10:23:54 -0400 Subject: [PATCH 699/772] Add teilchen Library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 3e3d89eb8..c2426e881 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 261 +# Next ID: 262 # Increment after assigning ID to new contribution [Library : 3D] @@ -209,6 +209,7 @@ 201 \ https://github.com/diwi/PixelFlow/releases/download/latest/PixelFlow.txt 216 \ https://github.com/diwi/LiquidFunProcessing/releases/download/latest/LiquidFunProcessing.txt 244 \ http://giftedapprentice.com/ewbIK/ewbIK.txt +261 \ https://github.com/dennisppaul/teilchen/releases/latest/download/teilchen.txt [Library : Sound] 153 \ https://github.com/processing/processing-sound/releases/download/latest/sound.txt From 9ddcc036f768f8ded949b8a183412711ea43270b Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 2 Jun 2020 12:08:24 -0700 Subject: [PATCH 700/772] Update textFont.xml --- content/api_en/textFont.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/textFont.xml b/content/api_en/textFont.xml index 30b9bb236..ebf06c7d6 100755 --- a/content/api_en/textFont.xml +++ b/content/api_en/textFont.xml @@ -14,7 +14,7 @@ PFont mono; // The font "andalemo.ttf" must be located in the // current sketch's "data" directory to load successfully -mono = loadFont("andalemo.ttf", 32); +mono = createFont("andalemo.ttf", 32); background(0); textFont(mono); text("word", 12, 60); From 615e7550c7b7fe1ee2a0c1962607d72e428c8b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?aar=C3=B3n=20montoya-moraga?= Date: Tue, 2 Jun 2020 17:00:28 -0400 Subject: [PATCH 701/772] fix typo in reference page of filter() fixes PR #814 --- content/api_en/PImage_filter.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/PImage_filter.xml b/content/api_en/PImage_filter.xml index 30df9a9da..f30582ad1 100755 --- a/content/api_en/PImage_filter.xml +++ b/content/api_en/PImage_filter.xml @@ -156,7 +156,7 @@ POSTERIZE
    Limits each channel of the image to the number of colors specified as the parameter. The parameter can be set to values between 2 and 255, but results are most noticeable in the lower ranges.

    BLUR
    -Executes a Guassian blur with the level parameter specifying the extent of the blurring. If no parameter is used, the blur is equivalent to Guassian blur of radius 1. Larger values increase the blur.
    +Executes a Gaussian blur with the level parameter specifying the extent of the blurring. If no parameter is used, the blur is equivalent to Gaussian blur of radius 1. Larger values increase the blur.

    ERODE
    Reduces the light areas. No parameter is used.
    From 77cdb242e03b70e78b3e31b829feb1644b4c29be Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 2 Jun 2020 18:03:30 -0700 Subject: [PATCH 702/772] Update intconvert.xml Add String to the list of data that int() can convert --- content/api_en/include/intconvert.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/include/intconvert.xml b/content/api_en/include/intconvert.xml index f14376165..56ba6ddb8 100755 --- a/content/api_en/include/intconvert.xml +++ b/content/api_en/include/intconvert.xml @@ -20,7 +20,7 @@ println(c + " : " + i); // Prints "E : 69" boolean
    , byte, char, color, float, int, or long) to its integer representation.
    +Converts any value of a primitive data type (boolean, byte, char, color, float, int, or long) or String to its integer representation.

    When an array of values is passed in, then an int array of the same length is returned. ]]> From 5bf93e09ed127f85e8981da947067de3c097a5cf Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 2 Jun 2020 19:40:15 -0700 Subject: [PATCH 703/772] Update clientEvent.xml Update example to draw in the draw() and not in clientEvent() --- content/api_en/LIB_net/clientEvent.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/content/api_en/LIB_net/clientEvent.xml b/content/api_en/LIB_net/clientEvent.xml index b71892510..d831f37a4 100755 --- a/content/api_en/LIB_net/clientEvent.xml +++ b/content/api_en/LIB_net/clientEvent.xml @@ -19,25 +19,27 @@ int dataIn; void setup() { size(200, 200); myClient = new Client(this, "127.0.0.1", 5204); + noLoop(); } -void draw() { } // Empty draw keeps the program running +void draw() { + background(dataIn); +} -// ClientEvent message is generated when the server -// sends data to an existing client. +// ClientEvent message is generated when the +// server sends data to an existing client. void clientEvent(Client someClient) { print("Server Says: "); - dataIn = myClient.read(); + dataIn = someClient.read(); println(dataIn); - background(dataIn); - + redraw(); } ]]> From b5c0a287f78ab028ff8c05fbeef59833a5e07b18 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 2 Jun 2020 19:41:03 -0700 Subject: [PATCH 704/772] Update equality.xml Small typo correction --- content/api_en/include/equality.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/api_en/include/equality.xml b/content/api_en/include/equality.xml index bbb16aa3a..a47eac505 100755 --- a/content/api_en/include/equality.xml +++ b/content/api_en/include/equality.xml @@ -20,9 +20,10 @@ if (a == b) { +Determines if two values are equivalent. Please note the equality operator (==) is different from the assignment operator (=) and although they look similar, they have a different use. If you're comparing two variables, the equality operator (==) only works with primitive data types like int, boolean, and char. It doesn't work with composite data types like Array, Table, and PVector.
    +
    +Note that when comparing String objects, you must use the equals() method instead of ==. See the reference for String or the troubleshooting note for more explanation.

    -Note that when comparing String objects, you must use the equals() method instead of == to compare their contents. See the reference for String or the troubleshooting note for more explanation. ]]>
    From e545d663762dfef1287a8c841660aa5a6943ba29 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 16:39:24 -0700 Subject: [PATCH 705/772] Update examples_topics.xml Removing "spring" examples from Simulate topic --- content/examples_topics.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/content/examples_topics.xml b/content/examples_topics.xml index c46525d49..35e20f85f 100755 --- a/content/examples_topics.xml +++ b/content/examples_topics.xml @@ -75,15 +75,12 @@ Texture Cube - Spring - Springs - Chain - Soft Body - Flocking Simple Particle System Multiple Particle Systems Forces With Vectors Smoke Particle System + Flocking + Soft Body Bouncing Ball From 58615bda06a739dac6dda1a9c4cf07c29ccaca2c Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 16:42:27 -0700 Subject: [PATCH 706/772] Removing Spring-related examples --- .../examples/Topics/Simulate/Chain/Chain.pde | 65 -------- .../Topics/Simulate/Spring/Spring.pde | 94 ----------- .../Topics/Simulate/Springs/Springs.pde | 151 ------------------ 3 files changed, 310 deletions(-) delete mode 100644 content/examples/Topics/Simulate/Chain/Chain.pde delete mode 100644 content/examples/Topics/Simulate/Spring/Spring.pde delete mode 100644 content/examples/Topics/Simulate/Springs/Springs.pde diff --git a/content/examples/Topics/Simulate/Chain/Chain.pde b/content/examples/Topics/Simulate/Chain/Chain.pde deleted file mode 100644 index 75b7ea36d..000000000 --- a/content/examples/Topics/Simulate/Chain/Chain.pde +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Chain. - * - * One mass is attached to the mouse position and the other - * is attached the position of the other mass. The gravity - * in the environment pulls down on both. - */ - - -Spring2D s1, s2; - -float gravity = 9.0; -float mass = 2.0; - -void setup() { - size(640, 360); - fill(255, 126); - // Inputs: x, y, mass, gravity - s1 = new Spring2D(0.0, width/2, mass, gravity); - s2 = new Spring2D(0.0, width/2, mass, gravity); -} - -void draw() { - background(0); - s1.update(mouseX, mouseY); - s1.display(mouseX, mouseY); - s2.update(s1.x, s1.y); - s2.display(s1.x, s1.y); -} - -class Spring2D { - float vx, vy; // The x- and y-axis velocities - float x, y; // The x- and y-coordinates - float gravity; - float mass; - float radius = 30; - float stiffness = 0.2; - float damping = 0.7; - - Spring2D(float xpos, float ypos, float m, float g) { - x = xpos; - y = ypos; - mass = m; - gravity = g; - } - - void update(float targetX, float targetY) { - float forceX = (targetX - x) * stiffness; - float ax = forceX / mass; - vx = damping * (vx + ax); - x += vx; - float forceY = (targetY - y) * stiffness; - forceY += gravity; - float ay = forceY / mass; - vy = damping * (vy + ay); - y += vy; - } - - void display(float nx, float ny) { - noStroke(); - ellipse(x, y, radius*2, radius*2); - stroke(255); - line(x, y, nx, ny); - } -} diff --git a/content/examples/Topics/Simulate/Spring/Spring.pde b/content/examples/Topics/Simulate/Spring/Spring.pde deleted file mode 100644 index 1e28a40b5..000000000 --- a/content/examples/Topics/Simulate/Spring/Spring.pde +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Spring. - * - * Click, drag, and release the horizontal bar to start the spring. - */ - -// Spring drawing constants for top bar -int springHeight = 32; // Height -int left; // Left position -int right; // Right position -int max = 200; // Maximum Y value -int min = 100; // Minimum Y value -boolean over = false; // If mouse over -boolean move = false; // If mouse down and over - -// Spring simulation constants -float M = 0.8; // Mass -float K = 0.2; // Spring constant -float D = 0.92; // Damping -float R = 150; // Rest position - -// Spring simulation variables -float ps = R; // Position -float vs = 0.0; // Velocity -float as = 0; // Acceleration -float f = 0; // Force - - -void setup() { - size(640, 360); - rectMode(CORNERS); - noStroke(); - left = width/2 - 100; - right = width/2 + 100; -} - -void draw() { - background(102); - updateSpring(); - drawSpring(); -} - -void drawSpring() { - - // Draw base - fill(0.2); - float baseWidth = 0.5 * ps + -8; - rect(width/2 - baseWidth, ps + springHeight, width/2 + baseWidth, height); - - // Set color and draw top bar - if(over || move) { - fill(255); - } else { - fill(204); - } - rect(left, ps, right, ps + springHeight); -} - - -void updateSpring() { - // Update the spring position - if(!move) { - f = -K * (ps - R); // f=-ky - as = f / M; // Set the acceleration, f=ma == a=f/m - vs = D * (vs + as); // Set the velocity - ps = ps + vs; // Updated position - } - if(abs(vs) < 0.1) { - vs = 0.0; - } - - // Test if mouse is over the top bar - if(mouseX > left && mouseX < right && mouseY > ps && mouseY < ps + springHeight) { - over = true; - } else { - over = false; - } - - // Set and constrain the position of top bar - if(move) { - ps = mouseY - springHeight/2; - ps = constrain(ps, min, max); - } -} - -void mousePressed() { - if(over) { - move = true; - } -} - -void mouseReleased() { - move = false; -} diff --git a/content/examples/Topics/Simulate/Springs/Springs.pde b/content/examples/Topics/Simulate/Springs/Springs.pde deleted file mode 100644 index 877e79e26..000000000 --- a/content/examples/Topics/Simulate/Springs/Springs.pde +++ /dev/null @@ -1,151 +0,0 @@ -/** - * Springs. - * - * Move the mouse over one of the circles and click to re-position. - * When you release the mouse, it will snap back into position. - * Each circle has a slightly different behavior. - */ - - -int num = 3; -Spring[] springs = new Spring[num]; - -void setup() { - size(640, 360); - noStroke(); - springs[0] = new Spring(240, 260, 40, 0.98, 8.0, 0.1, springs, 0); - springs[1] = new Spring(320, 210, 120, 0.95, 9.0, 0.1, springs, 1); - springs[2] = new Spring(180, 170, 200, 0.90, 9.9, 0.1, springs, 2); -} - -void draw() { - background(51); - - for (Spring spring : springs) { - spring.update(); - spring.display(); - } -} - -void mousePressed() { - for (Spring spring : springs) { - spring.pressed(); - } -} - -void mouseReleased() { - for (Spring spring : springs) { - spring.released(); - } -} - -class Spring { - // Screen values - float xpos, ypos; - float tempxpos, tempypos; - int size = 20; - boolean over = false; - boolean move = false; - - // Spring simulation constants - float mass; // Mass - float k = 0.2; // Spring constant - float damp; // Damping - float rest_posx; // Rest position X - float rest_posy; // Rest position Y - - // Spring simulation variables - //float pos = 20.0; // Position - float velx = 0.0; // X Velocity - float vely = 0.0; // Y Velocity - float accel = 0; // Acceleration - float force = 0; // Force - - Spring[] friends; - int me; - - // Constructor - Spring(float x, float y, int s, float d, float m, - float k_in, Spring[] others, int id) { - xpos = tempxpos = x; - ypos = tempypos = y; - rest_posx = x; - rest_posy = y; - size = s; - damp = d; - mass = m; - k = k_in; - friends = others; - me = id; - } - - void update() { - if (move) { - rest_posy = mouseY; - rest_posx = mouseX; - } - - force = -k * (tempypos - rest_posy); // f=-ky - accel = force / mass; // Set the acceleration, f=ma == a=f/m - vely = damp * (vely + accel); // Set the velocity - tempypos = tempypos + vely; // Updated position - - force = -k * (tempxpos - rest_posx); // f=-ky - accel = force / mass; // Set the acceleration, f=ma == a=f/m - velx = damp * (velx + accel); // Set the velocity - tempxpos = tempxpos + velx; // Updated position - - - if ((overEvent() || move) && !otherOver() ) { - over = true; - } else { - over = false; - } - } - - // Test to see if mouse is over this spring - boolean overEvent() { - float disX = tempxpos - mouseX; - float disY = tempypos - mouseY; - if (sqrt(sq(disX) + sq(disY)) < size/2 ) { - return true; - } else { - return false; - } - } - - // Make sure no other springs are active - boolean otherOver() { - for (int i=0; i Date: Wed, 3 Jun 2020 20:46:36 -0700 Subject: [PATCH 707/772] New example for rotating text --- .../Typography/TextRotation/TextRotation.pde | 57 +++++++++++++++ .../data/SourceCodePro-Regular.ttf | Bin 0 -> 120548 bytes content/examples_basics.xml | 1 + .../Typography/TextRotation/TextRotation.js | 65 ++++++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 content/examples/Basics/Typography/TextRotation/TextRotation.pde create mode 100644 content/examples/Basics/Typography/TextRotation/data/SourceCodePro-Regular.ttf create mode 100644 content/examples_p5/Basics/Typography/TextRotation/TextRotation.js diff --git a/content/examples/Basics/Typography/TextRotation/TextRotation.pde b/content/examples/Basics/Typography/TextRotation/TextRotation.pde new file mode 100644 index 000000000..b480c38d6 --- /dev/null +++ b/content/examples/Basics/Typography/TextRotation/TextRotation.pde @@ -0,0 +1,57 @@ +/** + * Text Rotation. + * + * Draws letters to the screen and rotates them at different angles. + */ + +PFont f; +float angleRotate = 0.0; + +void setup() { + size(640, 360); + background(0); + + pixelDensity(2); + + // Create the font from the .ttf file in the data folder + f = createFont("SourceCodePro-Regular.ttf", 18); + textFont(f); +} + +void draw() { + background(0); + + strokeWeight(1); + stroke(153); + + pushMatrix(); + float angle1 = radians(45); + translate(100, 180); + rotate(angle1); + text("45 DEGREES", 0, 0); + line(0, 0, 150, 0); + popMatrix(); + + pushMatrix(); + float angle2 = radians(270); + translate(200, 180); + rotate(angle2); + text("270 DEGREES", 0, 0); + line(0, 0, 150, 0); + popMatrix(); + + pushMatrix(); + translate(440, 180); + rotate(radians(angleRotate)); + text(int(angleRotate) % 360 + " DEGREES", 0, 0); + line(0, 0, 150, 0); + popMatrix(); + + angleRotate += 0.25; + + stroke(255, 0, 0); + strokeWeight(4); + point(100, 180); + point(200, 180); + point(440, 180); +} diff --git a/content/examples/Basics/Typography/TextRotation/data/SourceCodePro-Regular.ttf b/content/examples/Basics/Typography/TextRotation/data/SourceCodePro-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b2cff928e42a31496c603d02b4605978eba66e59 GIT binary patch literal 120548 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 Letters Words + Text Rotation Embedded Links diff --git a/content/examples_p5/Basics/Typography/TextRotation/TextRotation.js b/content/examples_p5/Basics/Typography/TextRotation/TextRotation.js new file mode 100644 index 000000000..85f54e5ed --- /dev/null +++ b/content/examples_p5/Basics/Typography/TextRotation/TextRotation.js @@ -0,0 +1,65 @@ +/** + * Text Rotation. + * + * Draws letters to the screen and rotates them at different angles. + */ + +var f; +var angleRotate = 0.0; + +function setup() { + var canvas = createCanvas(640, 360); + canvas.parent("p5container"); + background(0); + + // Create the font from the .ttf file in the data folder + textFont("Source Code Pro", 18); +} + +function draw() { + background(0); + + + push(); + var angle1 = radians(45); + translate(100, 180); + rotate(angle1); + noStroke(); + fill(255); + text("45 DEGREES", 0, 0); + strokeWeight(1); + stroke(153); + line(0, 0, 150, 0); + pop(); + + push(); + var angle2 = radians(270); + translate(200, 180); + rotate(angle2); + noStroke(); + fill(255); + text("270 DEGREES", 0, 0); + strokeWeight(1); + stroke(153); + line(0, 0, 150, 0); + pop(); + + push(); + translate(440, 180); + rotate(radians(angleRotate)); + noStroke(); + fill(255); + text(int(angleRotate) % 360 + " DEGREES", 0, 0); + strokeWeight(1); + stroke(153); + line(0, 0, 150, 0); + pop(); + + angleRotate += 0.25; + + stroke(255, 0, 0); + strokeWeight(4); + point(100, 180); + point(200, 180); + point(440, 180); +} \ No newline at end of file From 2a5abe4dbd216866ca5ad38f30f1e90b56dba5a5 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 20:48:59 -0700 Subject: [PATCH 708/772] Fix error in new Text Rotation example --- .../examples/Basics/Typography/TextRotation/TextRotation.pde | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/examples/Basics/Typography/TextRotation/TextRotation.pde b/content/examples/Basics/Typography/TextRotation/TextRotation.pde index b480c38d6..8ed649178 100644 --- a/content/examples/Basics/Typography/TextRotation/TextRotation.pde +++ b/content/examples/Basics/Typography/TextRotation/TextRotation.pde @@ -10,8 +10,6 @@ float angleRotate = 0.0; void setup() { size(640, 360); background(0); - - pixelDensity(2); // Create the font from the .ttf file in the data folder f = createFont("SourceCodePro-Regular.ttf", 18); From bd1f0ce225bca78cbba01fa42761c1949734f3f5 Mon Sep 17 00:00:00 2001 From: Jeremy Douglass Date: Wed, 3 Jun 2020 21:09:13 -0700 Subject: [PATCH 709/772] Sound Tutorial - ex3-6 link sketches w/required MP3s, closes #714 --- content/static/tutorials/sound/index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/content/static/tutorials/sound/index.html b/content/static/tutorials/sound/index.html index 20b03bc75..7f5b2ccd7 100644 --- a/content/static/tutorials/sound/index.html +++ b/content/static/tutorials/sound/index.html @@ -389,6 +389,9 @@

    Example 3, 4: Sample playback

     * different octaves. The sequencer triggers an event every 200-1000   * milliseconds randomly. Each time a sound is played a colored   * rect with a random color is displayed. + *  + Load this example with included MP3s from:  +   Examples > Libraries > Sound > Soundfile > Sampler   */ import processing.sound.*; @@ -484,6 +487,9 @@

    Example 3, 4: Sample playback

     * Five soundfiles are mapped to the numbers on the keyboard.   * Numbers 1-5 are played back an octave lower and numbers  * 6-0 an octave higher. + *  + Load this example with included MP3s from:  +   Examples > Libraries > Sound > Soundfile > Keyboard   */ import processing.sound.*; @@ -580,6 +586,9 @@

    Example 5, 6: Audio analysis

     * of sound. Change the variable bands to get more or less   * spectral bands to work with. The smooth_factor variable determines   * how much the signal will be smoothed on a scale form 0-1. + *  + Load this example with included MP3s from:  +   Examples > Libraries > Sound > Analysis > FFTSpectrum   */ import processing.sound.*; @@ -653,6 +662,9 @@

    Example 5, 6: Audio analysis

     * stream of sound. In this case a sample is analyzed. The smoothFactor  * variable determines how much the signal will be smoothed on a scale  * from 0 - 1. + *  + Load this example with included MP3s from:  +   Examples > Libraries > Sound > Analysis > PeakAmplitude   */ import processing.sound.*; From 58bcc561d9e32bce2e93f6598f669b4b6b8aaecc Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 21:37:47 -0700 Subject: [PATCH 710/772] Sound Tutorial code example update and cleanup --- content/static/tutorials/sound/index.html | 868 ++++++++++++---------- 1 file changed, 464 insertions(+), 404 deletions(-) diff --git a/content/static/tutorials/sound/index.html b/content/static/tutorials/sound/index.html index 7f5b2ccd7..e1fada6b0 100644 --- a/content/static/tutorials/sound/index.html +++ b/content/static/tutorials/sound/index.html @@ -233,140 +233,140 @@

    Example 1, 2: Synthesizer

    -/**
    - * Processing Sound Library, Example 1
    - * 
    - * Five sine waves are layered to construct a cluster of frequencies. 
    - * This method is called additive synthesis. Use the mouse position 
    - * inside the display window to detune the cluster.
    - */
    -
    -import processing.sound.*;
    -
    -SinOsc[] sineWaves; // Array of sines
    -float[] sineFreq; // Array of frequencies
    -int numSines = 5; // Number of oscillators to use
    -
    -void setup() {  
    -  size(640, 360);
    -  background(255);
    -
    -  sineWaves = new SinOsc[numSines]; // Initialize the oscillators
    -  sineFreq = new float[numSines]; // Initialize array for Frequencies
    -
    -  for (int i = 0; i < numSines; i++) {
    -    // Calculate the amplitude for each oscillator
    -    float sineVolume = (1.0 / numSines) / (i + 1);
    -    // Create the oscillators
    -    sineWaves[i] = new SinOsc(this);
    -    // Start Oscillators
    -    sineWaves[i].play();
    -    // Set the amplitudes for all oscillators
    -    sineWaves[i].amp(sineVolume);
    -  }
    +/**
    + * Processing Sound Library, Example 1
    + * 
    + * Five sine waves are layered to construct a cluster of frequencies. 
    + * This method is called additive synthesis. Use the mouse position 
    + * inside the display window to detune the cluster.
    + */
    +
    +import processing.sound.*;
    +
    +SinOsc[] sineWaves; // Array of sines
    +float[] sineFreq; // Array of frequencies
    +int numSines = 5; // Number of oscillators to use
    +
    +void setup() {  
    +  size(640, 360);
    +  background(255);
    +
    +  sineWaves = new SinOsc[numSines]; // Initialize the oscillators
    +  sineFreq = new float[numSines]; // Initialize array for Frequencies
    +
    +  for (int i = 0; i < numSines; i++) {
    +    // Calculate the amplitude for each oscillator
    +    float sineVolume = (1.0 / numSines) / (i + 1);
    +    // Create the oscillators
    +    sineWaves[i] = new SinOsc(this);
    +    // Start Oscillators
    +    sineWaves[i].play();
    +    // Set the amplitudes for all oscillators
    +    sineWaves[i].amp(sineVolume);
    +  }
     }
     
    -void draw() {
    -  //Map mouseY from 0 to 1
    -  float yoffset = map(mouseY, 0, height, 0, 1);
    -  //Map mouseY logarithmically to 150 - 1150 to create a base frequency range
    -  float frequency = pow(1000, yoffset) + 150;
    -  //Use mouseX mapped from -0.5 to 0.5 as a detune argument
    -  float detune = map(mouseX, 0, width, -0.5, 0.5);
    -
    -  for (int i = 0; i < numSines; i++) { 
    -    sineFreq[i] = frequency * (i + 1 * detune);
    -    // Set the frequencies for all oscillators
    -    sineWaves[i].freq(sineFreq[i]);
    -  }
    +void draw() {
    +  //Map mouseY from 0 to 1
    +  float yoffset = map(mouseY, 0, height, 0, 1);
    +  //Map mouseY logarithmically to 150 - 1150 to create a base frequency range
    +  float frequency = pow(1000, yoffset) + 150;
    +  //Use mouseX mapped from -0.5 to 0.5 as a detune argument
    +  float detune = map(mouseX, 0, width, -0.5, 0.5);
    +
    +  for (int i = 0; i < numSines; i++) { 
    +    sineFreq[i] = frequency * (i + 1 * detune);
    +    // Set the frequencies for all oscillators
    +    sineWaves[i].freq(sineFreq[i]);
    +  }
     }
     	

    -/**
    - * Processing Sound Library, Example 2
    - * 
    - * This sketch shows how to use envelopes and oscillators. 
    - * Envelopes describe to course of amplitude over time. 
    - * The Sound library provides an ASR envelope which stands for 
    - * attack, sustain, release. 
    - * 
    - *       .________
    - *      .          ---
    - *     .              --- 
    - *    .                  ---
    - *    A       S        R 
    - */
    -
    -import processing.sound.*;
    -
    -// Oscillator and envelope 
    -TriOsc triOsc;
    -Env env; 
    -
    -// Times and levels for the ASR envelope
    -float attackTime = 0.001;
    -float sustainTime = 0.004;
    -float sustainLevel = 0.2;
    -float releaseTime = 0.2;
    -
    -// This is an octave in MIDI notes.
    -int[] midiSequence = { 
    -  60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72
    -}; 
    -
    -// Set the duration between the notes
    -int duration = 200;
    -// Set the note trigger
    -int trigger = 0; 
    -
    -// An index to count up the notes
    -int note = 0; 
    -
    -void setup() {
    -  size(640, 360);
    -  background(255);
    -
    -  // Create triangle wave and envelope 
    -  triOsc = new TriOsc(this);
    -  env  = new Env(this);
    +/**
    + * Processing Sound Library, Example 2
    + * 
    + * This sketch shows how to use envelopes and oscillators. 
    + * Envelopes describe to course of amplitude over time. 
    + * The Sound library provides an ASR envelope which stands for 
    + * attack, sustain, release. 
    + * 
    + *       .________
    + *      .          ---
    + *     .              --- 
    + *    .                  ---
    + *    A       S        R 
    + */
    +
    +import processing.sound.*;
    +
    +TriOsc triOsc;
    +Env env; 
    +
    +// Times and levels for the ASR envelope
    +float attackTime = 0.001;
    +float sustainTime = 0.004;
    +float sustainLevel = 0.3;
    +float releaseTime = 0.2;
    +
    +// This is an octave in MIDI notes.
    +int[] midiSequence = { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 }; 
    +
    +// Play a new note every 200ms
    +int duration = 200;
    +
    +// This variable stores the point in time when the next note should be triggered
    +int trigger = millis(); 
    +
    +// An index to count up the notes
    +int note = 0; 
    +
    +void setup() {
    +  size(640, 360);
    +  background(255);
    +
    +  // Create triangle wave and start it
    +  triOsc = new TriOsc(this);
    +
    +  // Create the envelope 
    +  env = new Env(this);
     }
     
    -void draw() { 
    +void draw() { 
     
    -  // If value of trigger is equal to the computer clock and if not all 
    -  // notes have been played yet, the next note gets triggered.
    -  if ((millis() > trigger) && (note<midiSequence.length)) {
    +  // If the determined trigger moment in time matches up with the computer clock and
    +  // the sequence of notes hasn't been finished yet, the next note gets played.
    +  if ((millis() > trigger) && (note<midiSequence.length)) {
     
    -    // midiToFreq transforms the MIDI value into a frequency in Hz which we use 
    -    //to control the triangle oscillator with an amplitute of 0.8
    -    triOsc.play(midiToFreq(midiSequence[note]), 0.8);
    +    // midiToFreq transforms the MIDI value into a frequency in Hz which we use to
    +    // control the triangle oscillator with an amplitute of 0.5
    +    triOsc.play(midiToFreq(midiSequence[note]), 0.5);
     
    -    // The envelope gets triggered with the oscillator as input and the times and 
    -    // levels we defined earlier
    -    env.play(triOsc, attackTime, sustainTime, sustainLevel, releaseTime);
    +    // The envelope gets triggered with the oscillator as input and the times and
    +    // levels we defined earlier
    +    env.play(triOsc, attackTime, sustainTime, sustainLevel, releaseTime);
     
    -    // Create the new trigger according to predefined durations and speed
    -    trigger = millis() + duration;
    +    // Create the new trigger according to predefined duration
    +    trigger = millis() + duration;
     
    -    // Advance by one note in the midiSequence;
    -    note++; 
    +    // Advance by one note in the midiSequence;
    +    note++; 
     
    -    // Loop the sequence
    -    if (note == 12) {
    -      note = 0;
    -    }
    -  }
    -} 
    +    // Loop the sequence, notice the jitter
    +    if (note == 12) {
    +      note = 0;
    +    }
    +  }
    +} 
     
    -// This function calculates the respective frequency of a MIDI note
    -float midiToFreq(int note) {
    -  return (pow(2, ((note-69)/12.0)))*440;
    +// This helper function calculates the respective frequency of a MIDI note
    +float midiToFreq(int note) {
    +  return (pow(2, ((note-69)/12.0))) * 440;
     }
     
    -
    +

    @@ -380,100 +380,96 @@

    Example 3, 4: Sample playback

    -/**
    - * Processing Sound Library, Example 3
    - * 
    - * This example shows how to make a simple sampler and sequencer 
    - * with the Sound library. In this sketch, five different samples are 
    - * loaded and played back at different pitches, in this case five 
    - * different octaves. The sequencer triggers an event every 200-1000 
    - * milliseconds randomly. Each time a sound is played a colored 
    - * rect with a random color is displayed.
    - * 
    - Load this example with included MP3s from: 
    -   Examples > Libraries > Sound > Soundfile > Sampler 
    - */
    -
    -import processing.sound.*;
    -
    -SoundFile[] files;
    -
    -// Create an array of values which represent the octaves. 
    -// 1.0 is playback at normal speed, 0.5 is half and therefore 
    -// one octave down. 2.0 is double so one octave up.
    -float[] octave = { 
    -  0.25, 0.5, 1.0, 2.0, 4.0
    -};
    -
    -// The playSound array is defining how many samples will be 
    -// played at each trigger event
    -int[] playSound = { 
    -  1, 1, 1, 1, 1
    -};
    -
    -// The trigger is an integer number in milliseconds so we 
    -// can schedule new events in the draw loop
    -int trigger=0;
    -
    -// This array holds the pixel positions of the rectangles 
    -// that are drawn each event
    -int[] posx = {
    -  0, 128, 256, 384, 512
    -};
    -
    -
    -void setup() {
    -  size(640, 360);
    -  background(255);
    -
    -  // Create an array of 5 empty soundfiles
    -  files = new SoundFile[5];
    -
    -  // Load 5 soundfiles from a folder in a for loop. By naming 
    -  // the files 1., 2., 3., [...], n.aif it is easy to iterate 
    -  // through the folder and load all files in one line of code.
    -  for (int i = 0; i < files.length; i++) {
    -    files[i] = new SoundFile(this, (i+1) + ".aif");
    -  }
    +/**
    + * Processing Sound Library, Example 3
    + * 
    + * This example shows how to make a simple sampler and sequencer 
    + * with the Sound library. In this sketch, five different samples are 
    + * loaded and played back at different pitches, in this case five 
    + * different octaves. The sequencer triggers an event every 200-1000 
    + * milliseconds randomly. Each time a sound is played a colored 
    + * rect with a random color is displayed.
    + * 
    + * Load this example with included sound files from the Processing Editor: 
    + * Examples > Libraries > Sound > Soundfile > Sampler 
    + */
    +
    +import processing.sound.*;
    +
    +SoundFile[] file;
    +
    +// Define the number of samples 
    +int numsounds = 5;
    +
    +// Create an array of values which represent the octaves. 
    +// 1.0 is playback at normal speed, 0.5 is half and 
    +// therefore one octave down. 2.0 is double so one octave up.
    +float[] octave = {0.25, 0.5, 1.0, 2.0, 4.0};
    +
    +// The playSound array is defining how many samples will 
    +// be played at each trigger event
    +int[] playSound = {1, 1, 1, 1, 1};
    +
    +// The trigger is an integer number in milliseconds so we 
    +// can schedule new events in the draw loop
    +int trigger;
    +
    +// This array holds the pixel positions of the rectangles 
    +// which are drawn each event
    +int[] posx = {0, 128, 256, 384, 512};
    +
    +
    +void setup() {
    +  size(640, 360);
    +  background(255);
    +
    +  // Create an array of empty soundfiles
    +  file = new SoundFile[numsounds];
    +
    +  // Load 5 soundfiles from a folder in a for loop. 
    +  // By naming the files 1., 2., 3., n.aif it is easy to iterate
    +  // through the folder and load all files in one line of code.
    +  for (int i = 0; i < numsounds; i++) {
    +    file[i] = new SoundFile(this, (i+1) + ".aif");
    +  }
    +
    +  // Create a trigger which will be the basis for our random sequencer. 
    +  trigger = millis();
     }
     
    -void draw() {
    -
    -  // If the determined trigger moment in time matches up with 
    -  // the computer clock events get triggered.
    -  if (millis() > trigger) {
    -
    -    // Redraw the background every time to erase old rects
    -    background(255);
    -
    -    // By iterating through the playSound array we check for 
    -    // 1 or 0, 1 plays a sound and draws a rect, for 0 nothing happens
    -
    -    for (int i = 0; i < files.length; i++) {      
    -      // Check which indexes are 1 and 0.
    -      if (playSound[i] == 1) {
    -        float rate;
    -        // Choose a random color and get set to noStroke()
    -        fill(int(random(255)), int(random(255)), int(random(255)));
    -        noStroke();
    -        // Draw the rect in the positions we defined earlier in posx
    -        rect(posx[i], 50, 128, 260);
    -        // Choose a random index of the octave array
    -        rate = octave[int(random(0, 5))];
    -        // Play the soundfile from the array with the respective 
    -        // rate and loop set to false
    -        files[i].play(rate, 1.0);
    -      }
    -
    -      // Renew the indexes of playSound so that at the next event 
    -      // the order is different and randomized.
    -      playSound[i] = int(random(0, 2));
    -    }
    -
    -    // Create a new triggertime in the future, with a random offset 
    -    // between 200 and 1000 milliseconds
    -    trigger = millis() + int(random(200, 1000));
    -  }
    +void draw() {
    +
    +  // If the determined trigger moment in time matches up with the 
    +  // computer clock events get triggered.
    +  if (millis() > trigger) {
    +    // Redraw the background every time to erase old rects
    +    background(255);
    +
    +    // By iterating through the playSound array we check for 1 or 0, 
    +    // 1 plays a sound and draws a rect, for 0 nothing happens.
    +
    +    for (int i = 0; i < numsounds; i++) {      
    +      // Check which indexes are 1 and 0.
    +      if (playSound[i] == 1) {
    +        float rate;
    +        // Choose a random color and get set to noStroke()
    +        fill(int(random(255)), int(random(255)), int(random(255)));
    +        noStroke();
    +        // Draw the rect in the positions we defined earlier in posx
    +        rect(posx[i], 50, 128, 260);
    +        // Choose a random index of the octave array
    +        rate = octave[int(random(0, 5))];
    +        // Play the soundfile from the array with the respective rate and loop set to false
    +        file[i].play(rate, 1.0);
    +      }
    +
    +      // Renew the indexes of playSound so that at the next event the order is different and randomized.
    +      playSound[i] = int(random(0, 2));
    +    }
    +
    +    // Create a new triggertime in the future, with a random offset between 200 and 1000 milliseconds
    +    trigger = millis() + int(random(200, 1000));
    +  }
     }
     
     
    @@ -481,84 +477,150 @@

    Example 3, 4: Sample playback


    -/**
    - * Processing Sound Library, Example 4
    - * 
    - * Five soundfiles are mapped to the numbers on the keyboard. 
    - * Numbers 1-5 are played back an octave lower and numbers
    - * 6-0 an octave higher.
    - * 
    - Load this example with included MP3s from: 
    -   Examples > Libraries > Sound > Soundfile > Keyboard 
    - */
    -
    -import processing.sound.*;
    -
    -AudioDevice device;
    -SoundFile[] file;
    -
    -int red, green, blue;
    -
    -void setup() {
    -  size(640, 360);
    -  background(255);
    -
    -  // Create an AudioDevice with low buffer size 
    -  // and create an array containing 5 empty soundfiles
    -  device = new AudioDevice(this, 48000, 32);
    -  file = new SoundFile[5];
    -
    -  // Load 5 soundfiles from a folder in a for loop. 
    -  for (int i = 0; i < file.length; i++) {
    -    file[i] = new SoundFile(this, (i+1) + ".aif");
    -  }
    +/**
    + * Processing Sound Library, Example 4
    + * 
    + * This example shows how to make a simple keyboard-triggered sampler with the Sound
    + * library. In this sketch 5 different short samples are loaded and played back at
    + * different speeds, which also changes their perceived pitch by one or two octaves.
    + * 
    + * Load this example with included sound files from the Processing Editor:  
    + * Examples > Libraries > Sound > Soundfile > Keyboard 
    + */
    +
    +import processing.sound.*;
    +
    +SoundFile[] file;
    +
    +// Define the number of samples 
    +int numsounds = 5;
    +
    +// Define a variable to store the randomly generated background color in
    +int backgroundColor[] = {255, 255, 255};
    +
    +void setup() {
    +  size(640, 360);
    +
    +  // Create a Sound renderer and an array of empty soundfiles
    +  file = new SoundFile[numsounds];
    +
    +  // Load 5 soundfiles from a folder in a for loop. By naming
    +  // the files 1.aif, 2.aif, 3.aif, ..., n.aif it is easy to iterate
    +  // through the folder and load all files in one line of code.
    +  for (int i = 0; i < numsounds; i++) {
    +    file[i] = new SoundFile(this, (i+1) + ".aif");
    +  }
     }
     
    -void draw() {
    -  background(red, green, blue);
    +void draw() {
    +  background(backgroundColor[0], backgroundColor[1], backgroundColor[2]);
     }
     
    -void keyPressed() {
    -  // Set a random background color each time you hit then number keys
    -  red=int(random(255));
    -  green=int(random(255));
    -  blue=int(random(255));
    -
    -  // Assign a sound to each number on your keyboard. 1-5 play at
    -  // an octave below the original pitch of the file, 6-0 play at
    -  // an octave above.
    -  switch(key) {
    -  case '1':
    -    file[0].play(0.5, 1.0);
    -    break;
    -  case '2':
    -    file[1].play(0.5, 1.0);
    -    break;
    -  case '3':
    -    file[2].play(0.5, 1.0);
    -    break;
    -  case '4':
    -    file[3].play(0.5, 1.0);
    -    break;
    -  case '5':
    -    file[4].play(0.5, 1.0);
    -    break;
    -  case '6':
    -    file[0].play(2.0, 1.0);
    -    break;
    -  case '7':
    -    file[1].play(2.0, 1.0);
    -    break;
    -  case '8':
    -    file[2].play(2.0, 1.0);
    -    break;
    -  case '9':
    -    file[3].play(2.0, 1.0);
    -    break;
    -  case '0':
    -    file[4].play(2.0, 1.0);
    -    break;
    -  }
    +void keyPressed() {
    +  // We use a boolean helper variable to determine whether one of the branches
    +  // of the switch-statement was activated or not
    +  boolean validKey = true;
    +
    +  switch(key) {
    +  case 'a':
    +    file[0].play(0.5, 1.0);
    +    break;
    +
    +  case 's':
    +    file[1].play(0.5, 1.0);
    +    break;
    +
    +  case 'd':
    +    file[2].play(0.5, 1.0);
    +    break;
    +
    +  case 'f':
    +    file[3].play(0.5, 1.0);
    +    break;
    +
    +  case 'g':
    +    file[4].play(0.5, 1.0);
    +    break;
    +
    +  case 'h':
    +    file[0].play(1.0, 1.0);
    +    break;
    +
    +  case 'j':
    +    file[1].play(1.0, 1.0);
    +    break;
    +
    +  case 'k':
    +    file[2].play(1.0, 1.0);
    +    break;
    +
    +  case 'l':
    +    file[3].play(1.0, 1.0);
    +    break;
    +
    +  case ';':
    +    file[4].play(1.0, 1.0);
    +    break;
    +
    +  case '\'':
    +    file[0].play(2.0, 1.0);
    +    break;
    +
    +  case 'q':
    +    file[1].play(2.0, 1.0);
    +    break;
    +
    +  case 'w':
    +    file[2].play(2.0, 1.0);
    +    break;    
    +
    +  case 'e':
    +    file[3].play(2.0, 1.0);
    +    break;
    +
    +  case 'r':
    +    file[4].play(2.0, 1.0);
    +    break; 
    +
    +  case 't':
    +    file[0].play(3.0, 1.0);
    +    break;
    +
    +  case 'y':
    +    file[1].play(3.0, 1.0);
    +    break;
    +
    +  case 'u':
    +    file[2].play(3.0, 1.0);
    +    break;    
    +
    +  case 'i':
    +    file[3].play(3.0, 1.0);
    +    break;
    +
    +  case 'o':
    +    file[4].play(3.0, 1.0);
    +    break;
    +
    +  case 'p':
    +    file[0].play(4.0, 1.0);
    +    break;    
    +
    +  case '[':
    +    file[1].play(4.0, 1.0);
    +    break;
    +
    +    // no valid key was pressed, store that information
    +  default:
    +    validKey = false;
    +  }
    +
    +  // If a new sample playback was triggered, change the background color
    +  if (validKey) {
    +    for (int i = 0; i < 3; i++) {
    +      backgroundColor[i] = int(random(255));
    +    }
    +  }
     }
     
     
    @@ -579,75 +641,74 @@

    Example 5, 6: Audio analysis

    -/**
    - * Processing Sound Library, Example 5
    - * 
    - * This sketch shows how to use the FFT class to analyze a stream  
    - * of sound. Change the variable bands to get more or less 
    - * spectral bands to work with. The smooth_factor variable determines 
    - * how much the signal will be smoothed on a scale form 0-1.
    - * 
    - Load this example with included MP3s from: 
    -   Examples > Libraries > Sound > Analysis > FFTSpectrum 
    - */
    -
    -import processing.sound.*;
    -
    -// Declare the processing sound variables 
    -SoundFile sample;
    -FFT fft;
    -AudioDevice device;
    -
    -// Declare a scaling factor
    -int scale = 5;
    -
    -// Define how many FFT bands we want
    -int bands = 128;
    -
    -// declare a drawing variable for calculating rect width
    -float r_width;
    -
    -// Create a smoothing vector
    -float[] sum = new float[bands];
    -
    -// Create a smoothing factor
    -float smooth_factor = 0.2;
    -
    -void setup() {
    -  size(640, 360);
    -  background(255);
    -
    -  // If the Buffersize is larger than the FFT Size, the FFT will fail
    -  // so we set Buffersize equal to bands
    -  device = new AudioDevice(this, 44000, bands);
    -
    -  // Calculate the width of the rects depending on how many bands we have
    -  r_width = width/float(bands);
    -
    -  // Load and play a soundfile and loop it. This has to be called 
    -  // before the FFT is created.
    -  sample = new SoundFile(this, "beat.aiff");
    -  sample.loop();
    -
    -  // Create and patch the FFT analyzer
    -  fft = new FFT(this, bands);
    -  fft.input(sample);
    -}      
    -
    -void draw() {
    -  // Set background color, noStroke and fill color
    -  background(204);
    -  fill(0, 0, 255);
    -  noStroke();
    -
    -  fft.analyze();
    -  for (int i = 0; i < bands; i++) {
    -    // Smooth the FFT data by smoothing factor
    -    sum[i] += (fft.spectrum[i] - sum[i]) * smooth_factor;
    -
    -    // Draw the rects with a scale factor
    -    rect( i*r_width, height, r_width, -sum[i]*height*scale );
    -  }
    +/**
    + * Processing Sound Library, Example 5
    + * 
    + * This sketch shows how to use the FFT class to analyze a stream
    + * of sound. Change the number of bands to get more spectral bands
    + * (at the expense of more coarse-grained time resolution of the spectrum).
    + * 
    + * Load this example with included sound files from the Processing Editor: 
    + * Examples > Libraries > Sound > Analysis > FFTSpectrum 
    + */
    +
    +import processing.sound.*;
    +
    +// Declare the sound source and FFT analyzer variables
    +SoundFile sample;
    +FFT fft;
    +
    +// Define how many FFT bands to use (this needs to be a power of two)
    +int bands = 128;
    +
    +// Define a smoothing factor which determines how much the spectrums of consecutive
    +// points in time should be combined to create a smoother visualisation of the spectrum.
    +// A smoothing factor of 1.0 means no smoothing (only the data from the newest analysis
    +// is rendered), decrease the factor down towards 0.0 to have the visualisation update
    +// more slowly, which is easier on the eye.
    +float smoothingFactor = 0.2;
    +
    +// Create a vector to store the smoothed spectrum data in
    +float[] sum = new float[bands];
    +
    +// Variables for drawing the spectrum:
    +// Declare a scaling factor for adjusting the height of the rectangles
    +int scale = 5;
    +// Declare a drawing variable for calculating the width of the 
    +float barWidth;
    +
    +public void setup() {
    +  size(640, 360);
    +  background(255);
    +
    +  // Calculate the width of the rects depending on how many bands we have
    +  barWidth = width/float(bands);
    +
    +  // Load and play a soundfile and loop it.
    +  sample = new SoundFile(this, "beat.aiff");
    +  sample.loop();
    +
    +  // Create the FFT analyzer and connect the playing soundfile to it.
    +  fft = new FFT(this, bands);
    +  fft.input(sample);
    +}
    +
    +public void draw() {
    +  // Set background color, noStroke and fill color
    +  background(125, 255, 125);
    +  fill(255, 0, 150);
    +  noStroke();
    +
    +  // Perform the analysis
    +  fft.analyze();
    +
    +  for (int i = 0; i < bands; i++) {
    +    // Smooth the FFT spectrum data by smoothing factor
    +    sum[i] += (fft.spectrum[i] - sum[i]) * smoothingFactor;
    +
    +    // Draw the rectangles, adjust their height using the scale factor
    +    rect(i*barWidth, height, barWidth, -sum[i]*height*scale);
    +  }
     }
     
     
    @@ -655,60 +716,59 @@

    Example 5, 6: Audio analysis


    -/**
    - * Processing Sound Library, Example 6
    - * 
    - * This sketch shows how to use the Amplitude class to analyze a
    - * stream of sound. In this case a sample is analyzed. The smoothFactor
    - * variable determines how much the signal will be smoothed on a scale
    - * from 0 - 1.
    - * 
    - Load this example with included MP3s from: 
    -   Examples > Libraries > Sound > Analysis > PeakAmplitude 
    - */
    -
    -import processing.sound.*;
    -
    -// Declare the processing sound variables 
    -SoundFile sample;
    -Amplitude rms;
    -
    -// Declare a scaling factor
    -float scale = 5.0;
    -
    -// Declare a smooth factor
    -float smoothFactor = 0.25;
    -
    -// Used for smoothing
    -float sum;
    -
    -void setup() {
    -  size(640, 360);
    -
    -  //Load and play a soundfile and loop it
    -  sample = new SoundFile(this, "beat.aiff");
    -  sample.loop();
    -
    -  // Create and patch the rms tracker
    -  rms = new Amplitude(this);
    -  rms.input(sample);
    -}      
    -
    -void draw() {
    -  // Set background color, noStroke and fill color
    -  background(0, 0, 255);
    -  noStroke();
    -  fill(255, 0, 150);
    -
    -  // Smooth the rms data by smoothing factor
    -  sum += (rms.analyze() - sum) * smoothFactor;  
    -
    -  // rms.analyze() return a value between 0 and 1. It's
    -  // scaled to height/2 and then multiplied by a scale factor
    -  float rmsScaled = sum * (height/2) * scale;
    -
    -  // Draw an ellipse at a size based on the audio analysis
    -  ellipse(width/2, height/2, rmsScaled, rmsScaled);
    +/**
    + * Processing Sound Library, Example 6
    + * 
    + * This sketch shows how to use the Amplitude class to analyze the changing
    + * "loudness" of a stream of sound. In this case an audio sample is analyzed.
    + * 
    + * Load this example with included sound files from the Processing Editor: 
    + * Examples > Libraries > Sound > Analysis > PeakAmplitude 
    + */
    +
    +import processing.sound.*;
    +
    +// Declare the processing sound variables 
    +SoundFile sample;
    +Amplitude rms;
    +
    +// Declare a smooth factor to smooth out sudden changes in amplitude.
    +// With a smooth factor of 1, only the last measured amplitude is used for the
    +// visualisation, which can lead to very abrupt changes. As you decrease the
    +// smooth factor towards 0, the measured amplitudes are averaged across frames,
    +// leading to more pleasant gradual changes
    +float smoothingFactor = 0.25;
    +
    +// Used for storing the smoothed amplitude value
    +float sum;
    +
    +public void setup() {
    +  size(640, 360);
    +
    +  //Load and play a soundfile and loop it
    +  sample = new SoundFile(this, "beat.aiff");
    +  sample.loop();
    +
    +  // Create and patch the rms tracker
    +  rms = new Amplitude(this);
    +  rms.input(sample);
    +}      
    +
    +public void draw() {
    +  // Set background color, noStroke and fill color
    +  background(125, 255, 125);
    +  noStroke();
    +  fill(255, 0, 150);
    +
    +  // smooth the rms data by smoothing factor
    +  sum += (rms.analyze() - sum) * smoothingFactor;
    +
    +  // rms.analyze() return a value between 0 and 1. It's
    +  // scaled to height/2 and then multiplied by a fixed scale factor
    +  float rms_scaled = sum * (height/2) * 5;
    +
    +  // We draw a circle whose size is coupled to the audio analysis
    +  ellipse(width/2, height/2, rms_scaled, rms_scaled);
     }
     
     
    From 4618c60a0bb8140f56f0c28cfa76c72f8a5ddbe7 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 21:47:19 -0700 Subject: [PATCH 711/772] Removing Exhibition from site navigation --- templates/template.nav.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/template.nav.php b/templates/template.nav.php index 92ba0e37d..01dd329bd 100755 --- a/templates/template.nav.php +++ b/templates/template.nav.php @@ -8,9 +8,9 @@ 'Learning' => array('/learning/', 1), 'Tutorials' => array('/tutorials/', 2), - 'Examples' => array('/examples/', 2), - 'Books' => array('/books/', 2), - 'Handbook' => array('/handbook/', 2), + 'Examples' => array('/examples/', 2), + 'Books' => array('/books/', 2), + 'Handbook' => array('/handbook/', 2), 'Reference' => array('/reference/', 1), @@ -21,7 +21,7 @@ 'Environment' => array('/reference/environment/', 2), 'Download' => array('/download/', 1), - 'Donate' => array('/download/support.html', 1), + 'Donate' => array('/download/support.html', 1), 'Shop' => array('/shop/', 1), @@ -58,7 +58,7 @@ function navigation($section = '') $html .= "\t\t\t\t\t" . l('Download', $section == 'Download') . "
    \n"; $html .= "\t\t\t\t\t" . l('Donate', $section == 'Donate') . "

    \n"; - $html .= "\t\t\t\t\t" . l('Exhibition', $section == 'Exhibition') . "

    \n"; + #$html .= "\t\t\t\t\t" . l('Exhibition', $section == 'Exhibition') . "

    \n"; $html .= "\t\t\t\t\t" . l('Reference', $section == 'Reference') . "
    \n"; $html .= "\t\t\t\t\t" . l('Libraries', $section == 'Libraries') . "
    \n"; @@ -82,7 +82,7 @@ function navigation($section = '') $html .= "\t\t\t\t\t" . "»Wiki
    \n"; $html .= "\t\t\t\t\t" . "»FAQ
    \n"; $html .= "\t\t\t\t\t" . "»Twitter
    \n"; - $html .= "\t\t\t\t\t" . "»Facebook
    \n"; + #$html .= "\t\t\t\t\t" . "»Facebook
    \n"; $html .= "\t\t\t\t\t" . "»Medium
    \n"; $html .= "\t\t\t\t\n"; From 2b7c2e615069ff9100383aad62bdbc8691236bdd Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 21:52:21 -0700 Subject: [PATCH 712/772] Remove Exhibition from site navigation for the Reference --- java_generate/templates/nav.web.template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java_generate/templates/nav.web.template.html b/java_generate/templates/nav.web.template.html index a754b73e7..cbe313cb0 100644 --- a/java_generate/templates/nav.web.template.html +++ b/java_generate/templates/nav.web.template.html @@ -4,7 +4,7 @@ Download
    Donate

    - Exhibition

    + Reference
    Libraries
    From ad8713cc8ec2f0b4d493bf0ba4bf7b657aa6ac6d Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 21:53:50 -0700 Subject: [PATCH 713/772] Update nav.web.template.html --- java_generate/templates/nav.web.template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java_generate/templates/nav.web.template.html b/java_generate/templates/nav.web.template.html index cbe313cb0..3a6d60507 100644 --- a/java_generate/templates/nav.web.template.html +++ b/java_generate/templates/nav.web.template.html @@ -28,6 +28,6 @@ »Wiki
    »FAQ
    »Twitter
    - »Facebook
    + »Medium \ No newline at end of file From abc68760856dc32e5c480942b711f24385c6d9ab Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 22:04:41 -0700 Subject: [PATCH 714/772] Update Creative Commons license embed on reference pages --- java_generate/templates/class.template.html | 31 +------------------ java_generate/templates/generic.template.html | 31 +------------------ 2 files changed, 2 insertions(+), 60 deletions(-) diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 411377a94..908e61656 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -89,37 +89,8 @@ - diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index 4d31c053a..901972be3 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -88,37 +88,8 @@ - From 8f77bd6545c648f248209835ed6d99648c41d3e5 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 3 Jun 2020 22:18:07 -0700 Subject: [PATCH 715/772] Attempt to get Creative Commons image to load by adding to Processing site --- img/cc.png | Bin 0 -> 1672 bytes java_generate/templates/class.template.html | 2 +- java_generate/templates/generic.template.html | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 img/cc.png diff --git a/img/cc.png b/img/cc.png new file mode 100644 index 0000000000000000000000000000000000000000..4acf8c4ec36d493f16cdc812c3a318b96eaa9181 GIT binary patch literal 1672 zcmYk+X*Ane9|!Qi>FA=Q(P%AcC1aOXZKYKmq}KG5TFdC;p(Wbq85+h;D)xPus3o+h zQpX-iL=YrIRy0J@r)oTyXsMyp%vh&2fA8jdKKFj_@0|Pco}26L=B%Wkp#T7Y62`^B z6Kp?lA&wsbcki=%60nfLE}pIckf;j)Dd_;PdjR%F0EjUGfR!KsxJCj1Ra{9R*9pA) z?E|zc8UQFo_3l!(g=jP_# zNTpM6BoZlTa`H83VgfWJ7Eg&^NnX9093MY4CKijwC&tDOjgE;&M-PccUx`HHLg697 zsAyC$CJ>DA`J;TEh$j>Xcp@%W$QAJUT;a$FNWkF;I3s)xhd(^bA0Fbe*@sx{5f*D? zki{7s1Pu=i9O`GWSp7r&{X@)tc0ZHNWU~AESfJkCK~PW60E5xr-PhaO&7{-&y1M#k zUA;6~50%znFdG}hJE)z#M5)I6`Qt*x!8uC6Vwsv=dESC*GmmXgXVo{*jpONqoML}Kw_ zatm?`^74za^Ru(EGqN%=GBeUL(=t-i2&u^_DJhQ$csv20oPwYljf#%> zDJtS8Ttq~~qp+}t*wEm>dqF`#0sjv0_w{r4a0g@WU~gwg_*gj znW?FXiHWJvB_ksv6bfaCG6Z8_XaEMKuWz8Mr=z2zjX;7yz|X$UKp@trPc|qq5&lC>n^S%xO`shEc~)ee0H3jL{-Q(V8y4=t)So zU5-Xa*n%eBFT!P)(~uc5$T$>>ovJ!Ea%gb zlrX&kbu7~8>i1vS6U!QA^G?$3DNdw z-`qr3Fc`Lf0Y2tc#C)fyo%GoQ&CkZ2&tc{gDg{TU69jM?xjsaK_R$N8+~t!j0<5^w#> z#wB^TN}9~&koTIQoZ8hZTCiYovxD-dtDU)NL<5pAROTO7n4|Dk1(KAs4?hX3JUvqo zUa-8_9+=j$@q1tAh-w-3sPz1^YF}n4b>~-`2fpH7r#n#Mz1)j8yFOJ21>B0aKP#~Cwk)~uOBqcpqNS5X?`^8-6BOB6d}AHRdvMVClVY)(6! zx1x3iO=1eq@a(N4)u|GnHnn8dbm=8|vWms`@feka=GLWOHl89D0jsjo3%X05$+urT zVq8{ez%h2)-c3R*Ga3H~62Hu)dl5Evkj57p3Ou^)fGW*K=C)8+lcd4}_Z^ z1-qe{%;LNX_?bG=^2(>*P8GY}3MBn_Q;ngspo#P?`;O*s`O>&{nRGOQPhs^zOa-jclI>XiQ$xdOhGkANGqnUeS7LiWJ21v}pXJ9#tlJ zJnn5_2jiW`EC#=q5h_(*{ud#_(h^ZEl}*=GJqApY6UEc9DLA_S-2`+PA+9y_R<$w~ z-jpRZN}bw$^Czu@^C-^c0U0Od)lI7YFX>-J_D2>D_5&BpZ)3J`%*HUH+EZ8~_zwUW MM>mI#8$oG*16KD<`Tzg` literal 0 HcmV?d00001 diff --git a/java_generate/templates/class.template.html b/java_generate/templates/class.template.html index 908e61656..96634b4c1 100644 --- a/java_generate/templates/class.template.html +++ b/java_generate/templates/class.template.html @@ -89,7 +89,7 @@ diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index 901972be3..be8235926 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -88,7 +88,7 @@ From b7666866d9f8900a6020cf747cba01069e6acddd Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Thu, 4 Jun 2020 10:57:22 -0700 Subject: [PATCH 716/772] Updates to some of the oldest examples to fit with current style --- .../Structure/Coordinates/Coordinates.pde | 22 ++++++------- .../examples/Basics/Structure/Loop/Loop.pde | 20 ++++-------- .../Basics/Structure/NoLoop/NoLoop.pde | 32 +++++++------------ .../Basics/Structure/SetupDraw/SetupDraw.pde | 30 ++++++++--------- 4 files changed, 44 insertions(+), 60 deletions(-) diff --git a/content/examples/Basics/Structure/Coordinates/Coordinates.pde b/content/examples/Basics/Structure/Coordinates/Coordinates.pde index 222ab50d6..dce834d05 100644 --- a/content/examples/Basics/Structure/Coordinates/Coordinates.pde +++ b/content/examples/Basics/Structure/Coordinates/Coordinates.pde @@ -4,9 +4,9 @@ * All shapes drawn to the screen have a position that is * specified as a coordinate. All coordinates are measured * as the distance from the origin in units of pixels. - * The origin [0, 0] is the coordinate is in the upper left + * The origin (0, 0) is the coordinate is in the upper left * of the window and the coordinate in the lower right is - * [width-1, height-1]. + * (width-1, height-1). */ // Sets the screen to be 640 pixels wide and 360 pixels high @@ -16,11 +16,11 @@ size(640, 360); background(0); noFill(); -// The two parameters of the point() method each specify coordinates. -// The first parameter is the x-coordinate and the second is the Y +// The two parameters of the point() function define its location. +// The first parameter is the x-coordinate and the second is the y-coordinate stroke(255); -point(width * 0.5, height * 0.5); -point(width * 0.5, height * 0.25); +point(320, 180); +point(320, 90); // Coordinates are used for drawing all shapes, not just points. // Parameters for different functions are used for different purposes. @@ -28,10 +28,10 @@ point(width * 0.5, height * 0.25); // the coordinates of the first endpoint and the second two parameters // specify the second endpoint stroke(0, 153, 255); -line(0, height*0.33, width, height*0.33); +line(0, 120, 640, 120); -// By default, the first two parameters to rect() are the -// coordinates of the upper-left corner and the second pair -// is the width and height +// The first two parameters to rect() are the coordinates of the +// upper-left corner and the second pair is the width and height +// of the rectangle stroke(255, 153, 0); -rect(width*0.25, height*0.1, width * 0.5, height * 0.8); +rect(160, 36, 320, 288); diff --git a/content/examples/Basics/Structure/Loop/Loop.pde b/content/examples/Basics/Structure/Loop/Loop.pde index 1ad323f34..4c9ae5574 100644 --- a/content/examples/Basics/Structure/Loop/Loop.pde +++ b/content/examples/Basics/Structure/Loop/Loop.pde @@ -1,14 +1,13 @@ /** * Loop. * - * The loop() function causes draw() to execute - * continuously. If noLoop is called in setup() - * the draw() is only executed once. In this example - * click the mouse to execute loop(), which will - * cause the draw() the execute continuously. + * If noLoop() is run in setup(), the code in draw() + * is only run once. In this example, click the mouse + * to run the loop() function to cause the draw() the + * run continuously. */ -float y = 100; +float y = 180; // The statements in the setup() function // run once when the program begins @@ -16,18 +15,11 @@ void setup() { size(640, 360); // Size should be the first statement stroke(255); // Set stroke color to white noLoop(); - - y = height * 0.5; } -// The statements in draw() are run until the -// program is stopped. Each statement is run in -// sequence and after the last line is read, the first -// line is run again. void draw() { - background(0); // Set the background to black + background(0); // Set the background to black line(0, y, width, y); - y = y - 1; if (y < 0) { y = height; diff --git a/content/examples/Basics/Structure/NoLoop/NoLoop.pde b/content/examples/Basics/Structure/NoLoop/NoLoop.pde index 595de53ea..9fc29afcf 100644 --- a/content/examples/Basics/Structure/NoLoop/NoLoop.pde +++ b/content/examples/Basics/Structure/NoLoop/NoLoop.pde @@ -1,34 +1,26 @@ /** * No Loop. * - * The noLoop() function causes draw() to only - * execute once. Without calling noLoop(), the - * code inside draw() is run continually. + * The noLoop() function causes draw() to only run once. + * Without calling noLoop(), the code inside draw() is + * run continually. */ -float y; +float y = 180; -// The statements in the setup() function -// execute once when the program begins -void setup() -{ +// The statements in the setup() block +// run once when the program begins +void setup() { size(640, 360); // Size should be the first statement - stroke(255); // Set line drawing color to white + stroke(255); // Set line drawing color to white noLoop(); - - y = height * 0.5; } -// The statements in draw() are executed until the -// program is stopped. Each statement is executed in -// sequence and after the last line is read, the first -// line is executed again. -void draw() -{ +// In this example, the code in the draw() block +// runs only once because of the noLoop() in setup() +void draw() { background(0); // Set the background to black + line(0, y, width, y); y = y - 1; if (y < 0) { y = height; } - line(0, y, width, y); } - - diff --git a/content/examples/Basics/Structure/SetupDraw/SetupDraw.pde b/content/examples/Basics/Structure/SetupDraw/SetupDraw.pde index 5c46b53d3..53e73d576 100644 --- a/content/examples/Basics/Structure/SetupDraw/SetupDraw.pde +++ b/content/examples/Basics/Structure/SetupDraw/SetupDraw.pde @@ -2,28 +2,28 @@ * Setup and Draw. * * The code inside the draw() function runs continuously - * from top to bottom until the program is stopped. + * from top to bottom until the program is stopped. The + * code in setup() is run once when the program starts. */ -int y = 100; +int y = 180; -// The statements in the setup() function -// execute once when the program begins +// The statements in the setup() block run once +// when the program begins void setup() { size(640, 360); // Size must be the first statement - stroke(255); // Set line drawing color to white - frameRate(30); + stroke(255); // Set line drawing color to white } -// The statements in draw() are executed until the -// program is stopped. Each statement is executed in -// sequence and after the last line is read, the first -// line is executed again. + +// The statements in draw() are run until the program +// is stopped. Each statement is run in sequence from top +// to bottom and after the last line is read, the +// first line is run again. void draw() { - background(0); // Clear the screen with a black background + background(0); // Clear the screen with a black background + line(0, y, width, y); y = y - 1; if (y < 0) { - y = height; - } - line(0, y, width, y); + y = height; + } } - From dd55b55cad8b6f7e2f0bce2835badfc0ff21821c Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Sat, 6 Jun 2020 19:00:06 -0700 Subject: [PATCH 717/772] Reference category adjustment for textWidth() --- content/api_en/textWidth.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/textWidth.xml b/content/api_en/textWidth.xml index 7d5db2aea..cdbe3afe2 100755 --- a/content/api_en/textWidth.xml +++ b/content/api_en/textWidth.xml @@ -4,7 +4,7 @@ Typography -Attributes +Metric From f5f107710196fd357c119a6faa24bf2c11235262 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Sat, 6 Jun 2020 19:01:28 -0700 Subject: [PATCH 718/772] Update textWidth.xml --- content/api_en/textWidth.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/api_en/textWidth.xml b/content/api_en/textWidth.xml index cdbe3afe2..b2adacc25 100755 --- a/content/api_en/textWidth.xml +++ b/content/api_en/textWidth.xml @@ -4,7 +4,7 @@ Typography -Metric +Metrics From 652ebd111c773fd8613ff6bc28533cd7af5bc43b Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 12 Jun 2020 11:53:20 -0700 Subject: [PATCH 719/772] Add Sponsor button to repository --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..f8c6bc52b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: processing From b81bef5bf297a0a6ade0ae2e8521fbce12d5f2a2 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 12 Jun 2020 12:16:04 -0700 Subject: [PATCH 720/772] Add external sponsor link to Foundation --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index f8c6bc52b..2cf28e94b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ github: processing +custom: https://processingfoundation.org/support From 45c96dfc5abd7cc722e81da2f3b1ee5e29710931 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 12 Jun 2020 15:10:03 -0700 Subject: [PATCH 721/772] Update FUNDING.yml --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2cf28e94b..93c4b27b4 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ github: processing -custom: https://processingfoundation.org/support +custom: https://processingfoundation.org/ From b660f465551f035577a5d9d0e9597f9e1b8aa77d Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 15 Jun 2020 11:50:42 -0700 Subject: [PATCH 722/772] Add three new book to Books page --- content/static/books.html | 210 +++++++++++++++++++------------------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index e935e82db..80b69c929 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -3,7 +3,6 @@

    Books. Processing books cove

    - @@ -38,7 +37,8 @@

    Books. Processing books cove » Order Print/EBook from O'Reilly
    » Order from Amazon.com
    - This casual book is a concise introduction to Processing and interactive computer graphics. Written by the founders of Processing, it takes you through the learning process one step at a time to help you grasp core programming concepts. You'll learn how to sketch with code -- creating a program with a few lines of code, observing the result, and then adding to it. It was written to help reader: +
    + This casual book is a concise introduction to Processing and interactive computer graphics. Written by the founders of Processing, it takes you through the learning process one step at a time to help you grasp core programming concepts. You'll learn how to sketch with code -- creating a program with a few lines of code, observing the result, and then adding to it. It was written to help readers:
    • Quickly learn programming basics, from variables to objects
    • Understand the fundamentals of computer graphics
    • @@ -88,6 +88,7 @@

      Books. Processing books cove Published August 2015, Morgan Kaufmann. 564 pages. Paperback.
      » Order from Amazon.com
      +
      The second edition of Learning Processing has been updated for compatibility with Processing 3 and includes several new chapters of content including video, sound, data visualization, and networking. For more, visit the Learning Processing website.

      Dan Shiffman says, "This book tells a story. It's a story of liberation, of taking the first steps towards understanding the foundations of computing, writing your own code, and creating your own media without the bonds of existing software tools. This story is not reserved for computer scientists and engineers. This story is for you." @@ -97,7 +98,7 @@

      Books. Processing books cove

      If you are an educator, you can request a desk/exam copy from the Elsevier website.
      -

      +

    @@ -120,9 +121,43 @@

    Books. Processing books cove How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital worlds? This book focuses on a range of programming strategies and techniques behind computer simulations of natural systems, from elementary concepts in mathematics and physics to more advanced algorithms that enable sophisticated visual results. Readers will progress from building a basic physics engine to creating intelligent moving objects and complex systems, setting the foundation for further experiments in generative design. Subjects covered include forces, trigonometry, fractals, cellular automata, self-organization, and genetic algorithms. + +

    + + + - + + + + + + + + + + + + + + + + @@ -135,14 +170,13 @@

    Books. Processing books cove Ben Fry.
    Published December 2007, O'Reilly. 384 pages. Paperback.
    » Order from Amazon.com -
    +

    The O'Reilly website says, "How you can take advantage of data that you might otherwise never use? With the help of a powerful new programming environment [Processing], this book helps you represent data accurately on the Web and elsewhere, complete with user interaction, animation, and more. You'll learn basic visualization principles, how to choose the right kind of display for your purposes, and how to provide interactive features to design entire interfaces around large, complex data sets."

    Martin Wattenberg from the IBM Watson Research Center says, "This wonderfully detailed guide, by one of the masters of modern data graphics, tells you everything you need to know to code your own visualizations from scratch. Perhaps most valuable are the many examples where Fry demonstrates how to refine a bare-bones concept into a beautiful, effective finished piece. Read this book, and you'll never again be dependent on someone else's view of your data."
    -

    + -

    @@ -154,14 +188,14 @@

    Books. Processing books cove

    + @@ -176,7 +210,7 @@

    Books. Processing books cove Derek Runberg.
    2015, No Starch Press. 232 pages. Paperback.
    » Order from Amazon.com -
    +

    The publisher writes, "The SparkFun Guide to Processing teaches you to craft your own digital artwork and even combine it with hardware—no prior programming experience required. Over the course of the book, you’ll learn the basics by drawing simple shapes, move on to photo editing and video manipulation, and ultimately affect the physical world by using Processing with an Arduino."

    The publisher lists: @@ -187,7 +221,7 @@

    Books. Processing books cove
  • Fetch weather data from the Web and build a custom weather dashboard
  • Create visualizations that change based on sound, light, and temperature readings
  • -

    +

    @@ -197,14 +231,14 @@

    Books. Processing books cove

    + alt="Processing: An Introduction to Programming"/> + @@ -232,7 +266,7 @@

    Books. Processing books cove Published April 2013, friends of ED. 472 pages. Paperback.
    » Order Print from Apress
    » Order from Amazon.com -
    +

    The authors write, "If you’ve been curious about coding, but the thought of it also makes you nervous, this book is for you; if you consider yourself a creative person, maybe worried programming is too non-creative, this book is also for you; if you want to learn about the latest Processing 2.0 language release and also start making beautiful code art, this book is also definitely for you. Based on research funded by the National Science Foundation, this book brings together some of the most engaging and successful approaches from the digital arts and computer science classrooms:
    • Learn the latest features of Processing 2.0
    • Gain a solid understanding of coding concepts, such as design, analysis, and object-oriented programming
    • @@ -255,19 +289,17 @@

      Books. Processing books cove Andrew S. Glassner.
      Published August 2010, A K Peters. Paperback.
      » Order from Amazon.com -
      +

      The book description reads, "Learn how to create gorgeous and expressive imagery with the Processing programming language and environment... Walk with veteran author Andrew Glassner on a journey of shared discovery as he takes actual Processing projects from inspiration to reality. You'll closely follow every step he takes and see exactly how each project evolves, including big and small mistakes he's made along the way (and how to fix them!), and the times when he changed direction. Once you see the results, you'll understand why programming is such a powerful skill for self-expression."

      This book has a different perspective from the others because of Glassner's deep experience in computer graphics. His bio reads, "Dr. Andrew Glassner is a writer-director, and a consultant in story structure, interactive fiction, and computer graphics. He started working in 3D computer graphics in 1978, and has carried out research at the NYIT Computer Graphics Lab, Case Western Reserve University, the IBM TJ Watson Research Lab, the Delft University of Technology, Bell Communications Research, Xerox PARC, and Microsoft Research... He is also a well-known writer, and has published numerous technical papers and books on topics ranging from 3D modeling, rendering, and animation to digital sound synthesis. His book '3D Computer Graphics: A Handbook for Artists and Designers' has taught a generation of artists through two editions and three languages. Glassner created and edited the 'Graphics Gems' series and created and wrote several chapters in the book 'An Introduction to Ray Tracing'. He wrote the two-volume text 'Principles of Digital Image Synthesis'."

    - - - + - - - - - +

    + The O'Reilly website says, "Make cool stuff. If you're a designer or artist without a lot of programming experience, this book will teach you to work with 2D and 3D graphics, sound, physical interaction, and electronic circuitry to create all sorts of interesting and compelling experiences -- online and off. Programming Interactivity explains programming and electrical engineering basics, and introduces three freely available tools created specifically for artists and designers: Processing, Arduino, and OpenFrameworks." + + + @@ -335,7 +365,7 @@

    Books. Processing books cove Matt Pearson.
    Published March 2011, Manning Publications. 300 pages. Paperback.
    » Order from Amazon.com -
    +

    Matt provides a list of bullet points:
    • The complete guide to creating generative graphics for print, video and the web.
    • @@ -348,7 +378,6 @@

      Books. Processing books cove

    - @@ -365,19 +394,16 @@

    Books. Processing books cove Kostas Terzidis.
    Published May 2009, Wiley. 384 Pages. Hardcover.
    » Order from Amazon.com -
    +

    The Wiley website says, "this book offers a series of generic procedures that can function as building blocks and encourages you to then use those building blocks to experiment, explore, and channel your thoughts, ideas, and principles into potential solutions. The book covers such topics as structured shapes, solid geometry, networking and databases, physical computing, image processing, graphic user interfaces, and more."

    - - - - - - + - + @@ -441,12 +463,12 @@

    Books. Processing books cove Daniel Sauter.
    Published February 2013, The Pragmatic Programmers. ~300 pages. Paper and eBook.
    » Order from The Pragmatic Bookshelf
    -
    +

    The publisher writes, "Create mobile apps for Android phones and tablets faster and more easily than you ever imagined. Whether you’re a student, teacher, hobbyist, or experienced developer, Rapid Android Development puts the fast-growing market for Android phone and tablet applications within your reach. Without needing to master the complexities of Java, Eclipse, or the Android SDK, you’ll find yourself writing dazzling graphics displays and location-aware programs in no time. With more than 30 ready-to-run demos, applications, and games, you’ll find yourself diving deeper than you thought possible into the treasure trove of software and hardware packed into today’s Android devices." -

    + @@ -458,7 +480,7 @@

    Books. Processing books cove Jan Vantomme.
    Published September 2012, PACKT. 350 pages. Paperback and eBook.
    » Order from PACKT
    -
    +

    The publisher lists:
    • Explore the Processing language with a broad range of practical recipes for computational art and graphics
    • @@ -533,20 +555,40 @@

      Books. Processing books cove

    - + + + + + + + + + + + @@ -564,7 +606,7 @@

    Books. Processing books cove Text in German.

    The OReilly.de site writes, "Processing ist eine auf Grafik, Simulation und Animation spezialisierte objektorientierte Programmiersprache, die besonders für Menschen mit wenig Programmiererfahrung geeignet ist. Deshalb eignet sie sich vor allem für Künstler, Bastler und Programmiereinsteiger. Die aus Java abgeleitete Sprache wurde geschaffen, um schnell und effektiv mit relativ wenig Aufwand zu beeindruckenden Ergebnissen zu kommen. Processing führt den Leser zügig in die Programmieressentials ein und geht dann unmittelbar zur Programmierung grafisch anspruchsvoller Anwendungen über. Spielerisch wird dem Leser die 2D- und 3D-Programierung, Textrendering, die Bildbearbeitung und sogar die Videomanipulation nahe gebracht." -

    + @@ -636,7 +678,8 @@

    Books. Processing books cove During the 50‘s ”era of cybernetics“, computer entered into the history of art simultaneously in different parts of the world. Art and science were in great turmoil. Science, with its theories and experiments, was approaching artificially mimicking both natural phenomena, such as light and sound, and the human phenomena of language and communication. Art, with its aesthetic and exhibitions, had transcended the boundaries of the avant-garde. Now, with the computer, it was confronting a reality that challenged ”the where“ and ”the how“ of doing art and the very meaning of ”masterpiece“. Antonio Rollo takes us on a tour of these seminal works from his unique perspective of the artist, through the code!

    - There's additional information on the publisher's website. + There's additional information on the publisher's website. + @@ -656,7 +699,8 @@

    Books. Processing books cove
    Note from Casey: "I received a copy of this book from the authors on a recent trip to Japan. It's a beautifully produced full-color book with sections introducing Processing, featuring work created with Processing (many are from the Exhibition section of the Processing website), and introducing programming through progressively complicated examples. The majority of the book is an introduction to programming. There are many good examples and the code is color-coded like in the Processing Environment. This book is less comprehensive than the Greenberg and Reas/Fry books, but it appears to be a good, brief introduction."

    - There's additional information on the publisher's website. + There's additional information on the publisher's website. + @@ -686,49 +730,5 @@

    Books. Processing books cove - - -

    - - - - - - -
    Processing: A Programming Handbook for Visual Designers (Second Edition)

     

     

    Pro Processing for Images and Computer Vision with OpenCVPro Processing for Images and Computer Vision with OpenCV
    + Bryan WC Chung.
    + Published 2017, APress. Paperback, eBook.
    + » Order from APress +

    + The Publisher writes, "Pro Processing for Images and Computer Vision with OpenCV is a step-by-step training tool that guides you through a series of worked examples in linear order. Each chapter begins with a basic demonstration, including the code to recreate it on your own system. Then comes a creative challenge by which to engage and develop mastery of the chapter’s topic. The book also includes hints and tips relating to visual arts, interaction design, and industrial best practices. This book is intended for any developer of artistic and otherwise visual applications, such as in augmented reality and digital effects, with a need to manipulate images, and to recognize and manipulate objects within those images. The book is specifically targeted at those making use of the Processing language that is common in artistic fields, and to Java programmers because of Processing’s easy integration into the Java programming environment." +

     

     

    Programming 101: The How and Why of Programming Revealed Using the Processing Programming LanguageProgramming 101: The How and Why of Programming Revealed Using the Processing Programming Language
    + Jeanine Meyer.
    + Published 2018, APress. Paperback, eBook.
    + » Order from Apress +

    + The Publisher writes, "Understand the importance of programming, even if you’ve never programmed before! This book will teach you the basics of programming using the Processing programming language. You will create your own Processing sketches, using personal images, themes, or hobbies that you enjoy. The chapters in the book will demonstrate the process of programming, starting with formulating an idea, planning, building on past projects, and refining the work, similar to writing an essay or composing a song. This approach will guide you to make use of logic and mathematics to produce beautiful effects. The term for program in Processing is sketch, though the sketches featured in this book are far more than static drawings; they incorporate interaction, animation, video, audio, and accessing files on the local computer and on the Web. Technical features are introduced and explained in the context of complete examples: games (Snake, Hangman, jigsaw, slingshot), making a collage of family images and video clips, preparing directions for folding an origami model, rotating objects in 3D, and others." +

     

     

     

     

    Generative Design
    Hartmut Bohnacker, Benedikt Gross, Julia Laub, and Claudius Lazzeroni.
    August 2012, Princeton Architectural Press. 472 pages.
    - Originally published in German November 2009, Schmidt Hermann Verlag. 500 pages.
    + Originally published in German November 2009, Schmidt Hermann Verlag. 500 pages.
    » Order from Amazon.com -
    +

    This book is extraordinary; the design is clear and the production quality is fantastic. This is the design book about Processing that we've hoped for. Unlike most other Processing books, it doesn't discuss programming basics so it's free to start with exciting examples. The publisher promotes, "Generative design is a revolutionary new method of creating artwork, models, and animations from sets of rules, or algorithms. By using accessible programming languages such as Processing, artists and designers are producing extravagant, crystalline structures that can form the basis of anything from patterned textiles and typography to lighting, scientific diagrams, sculptures, films, and even fantastical buildings. Opening with a gallery of thirty-five illustrated case studies, Generative Design takes users through specific, practical instructions on how to create their own visual experiments by combining simple-to-use programming codes with basic design principles. A detailed handbook of advanced strategies provides visual artists with all the tools to achieve proficiency. Both a how-to manual and a showcase for recent work in this exciting new field, Generative Design is the definitive study and reference book that designers have been waiting for."

    More information about buying this book in German, as well as the complete source code for the examples, are at the book's website.

    -

    The SparkFun Guide to Processing Processing: An Introduction to Programming
    Jeffrey L. Nyhoff, Larry R. Nyhoff.
    Published May 2017, CRC Press. 544 pages. eBook, Paperback.
    » Order from CRC Press
    » Order from Amazon.com -
    +

    The publisher writes, "The book uses Processing’s capabilities for graphics and interactivity in order to create examples that are simple, illustrative, interesting, and fun. It is designed to appeal to a broad range of readers, including those who want to learn to program to create digital art, as well as those who seek to learn to program to process numerical information or data. It can be used by students and instructors in a first course on programming, as well as by anyone eager to teach them self to program."

    The publisher lists: @@ -215,7 +249,7 @@

    Books. Processing books cove
  • Covers all of the standard programming constructs
  • Presents the material in a fun, conversational, and approachable way
  • -

     

     

    Processing: Creative Coding and Computational Art (Foundation) Processing: Creative Coding and Computational Art (Foundation)
    @@ -279,11 +311,10 @@

    Books. Processing books cove
    The Friends of Ed website says, "This book is written especially for artists, designers, and other creative professionals and students exploring code art, graphics programming, and computational aesthetics. The book provides a solid and comprehensive foundation in programming, including object-oriented principles, and introduces you to the easy-to-grasp Processing language, so no previous coding experience is necessary. The book then goes through using Processing to code lines, curves, shapes, and motion, continuing to the point where you'll have mastered Processing and can really start to unleash your creativity with realistic physics, interactivity, and 3D! In the final chapter, you'll even learn how to extend your Processing skills by working directly with the powerful Java programming language, the language Processing itself is built with." (Quote from the Friends of Ed website)

    -

     

     

    + Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFrameworksProgramming Interactivity
    +
    Programming Interactivity
    Joshua Noble.
    Published January 2012, O'Reilly. 728 pages. Paperback.
    » Order from Amazon.com -
    - The O'Reilly website says, "Make cool stuff. If you're a designer or artist without a lot of programming experience, this book will teach you to work with 2D and 3D graphics, sound, physical interaction, and electronic circuitry to create all sorts of interesting and compelling experiences -- online and off. Programming Interactivity explains programming and electrical engineering basics, and introduces three freely available tools created specifically for artists and designers: Processing, Arduino, and OpenFrameworks."

     

     

     

     

    Data-driven Graphic Design: Creative Coding for Visual Communication @@ -387,20 +413,16 @@

    Books. Processing books cove Andrew Richardson.
    Published January 2016, Bloomsbury. 224 Pages. Paperback.
    » Order from Amazon.com -
    +

    The book description reads, "Data-driven Graphic Design introduces the creative potential of computational data and how it can be used to inform and create everything from typography, print and moving graphics to interactive design and physical installations. Using code as a creative environment allows designers to step outside the boundaries of commercial software tools, and create a set of unique, digitally informed pieces of work. The use of code offers a new way of thinking about and creating design for the digital environment."

     

     

     

     

     

    O Código Transcendente: Uma Introdução Prática à Programação e Arte GerativaO Código Transcendente: Uma Introdução Prática à Programação e Arte Gerativa
    + Mateus Berruezo.
    + Published December 2019. 270 pages. PDF, Web.
    + Text in Portuguese.
    + » Download
    + » Read online +
    +
    + Este livro é um guia de programação com enfoque prático considerando o contexto da arte gerativa e do pensamento computacional. Ele conta com explicações e exemplos visuais cuidadosamente projetados para serem de valor tanto para programadores quanto artistas. As aplicações e estudos de caso foram direcionados para a linguagem Processing cuja própria filosofia segue o princípio da exploração do artístico através do código. +

     

     

    Einführung ins Programmieren mit Processing Einführung ins Programmieren mit Processing
    - Matthias Wolf.
    - Published August 2013. 178 pages. PDF, Paperback.
    - Text in German.
    - » Order Print/EBook from lulu.com
    -
    -

    Die eigenständige Programmiersprache Processing basiert auf Java und ähnelt diesem sehr, verbirgt aber gleichzeitig viel von dessen Komplexität. Dadurch ist Processing für den Programmieranfänger ideal geeignet, um sich Konzepte des Programmierens zu erschließen und bewahrt gleichzeitig die Möglichkeit eines späteren Umstiegs. Dennoch ist die Sprache keineswegs nur für triviale Anfängeraufgaben geeignet: speziell im Bereich der graphischen Datenverarbeitung spielt Processing seine Stärken aus.

    -

    Dieses Buch richtet sich in erster Linie an den Einsteiger, den es an die Bewältigung auch komplexerer Aufgaben heranführt, wobei grundlegende Konzepte der imperativen und der objektorientierten Programmierung vorgestellt werden. Auch notwendige theoretische Hintergründe kommen dabei nicht zu kurz. Ausführlich kommentierter Beispielcode erschließt Konzepte und Sprache. Aber auch der routinierte Programmierer, der sich "nur" eine neue Sprache erschließen will, wird fündig!

    -

    Aus dem Inhalt: Datentypen — Variablen — Arrays (ein- und mehrdiomensional) — Flusssteuerung — Methoden — Objektorientiertes Programmieren — 2D-Graphik — 3D-Graphik — Dateizugriff — PDF — QuickTimeTM — Arduino®-Mikrocontroller — Alphabetischer Index + Matthias Wolf.
    + Published August 2013. 178 pages. PDF, Paperback.
    + Text in German.
    + » Order Print/EBook from lulu.com
    +
    +

    Die eigenständige Programmiersprache Processing basiert auf Java und ähnelt diesem sehr, verbirgt aber gleichzeitig viel von dessen Komplexität. Dadurch ist Processing für den Programmieranfänger ideal geeignet, um sich Konzepte des Programmierens zu erschließen und bewahrt gleichzeitig die Möglichkeit eines späteren Umstiegs. Dennoch ist die Sprache keineswegs nur für triviale Anfängeraufgaben geeignet: speziell im Bereich der graphischen Datenverarbeitung spielt Processing seine Stärken aus.

    +

    Dieses Buch richtet sich in erster Linie an den Einsteiger, den es an die Bewältigung auch komplexerer Aufgaben heranführt, wobei grundlegende Konzepte der imperativen und der objektorientierten Programmierung vorgestellt werden. Auch notwendige theoretische Hintergründe kommen dabei nicht zu kurz. Ausführlich kommentierter Beispielcode erschließt Konzepte und Sprache. Aber auch der routinierte Programmierer, der sich "nur" eine neue Sprache erschließen will, wird fündig!

    +

    Aus dem Inhalt: Datentypen — Variablen — Arrays (ein- und mehrdiomensional) — Flusssteuerung — Methoden — Objektorientiertes Programmieren — 2D-Graphik — 3D-Graphik — Dateizugriff — PDF — QuickTimeTM — Arduino®-Mikrocontroller — Alphabetischer Index

     

     

     

    - Processing is also discussed through examples and projects in the following books: - -
    - -
    - - 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
    By Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, Noah Vawter. Examples use Processing to explore a modern interpretation of a 1982 Commodore 64 program.
    - -
    - - Make: Getting Started with Arduino
    By Massimo Banzi. Examples use Processing to communicate with an Arduino board.
    - -
    - - Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and Processing
    By Robert Faludi. Network examples use Processing.
    - -
    - - Physical Computing: Sensing and Controlling the Physical World with Computers
    - By Dan O'Sullivan and Tom Igoe. Examples using Processing for RS-232 communication and - computer vision.
    - -
    - - Aesthetic Computing.
    - Edited by Paul Fishwick. Casey Reas and Ben Fry contributed a chapter entitled - "Processing Code: Programming within the Context of Visual Art and Design."
    - -
    - - Hacking Roomba: ExtremeTech
    By Tod E. Kurt. Processing is introduced and used to design an application to control a Roomba (a robot vacuum cleaner).
    - -
    - Analog In, Digital Out
    By Brendan Dawes. Numerous projects created with Processing are illustrated and discussed.

    From 8f7a93ebf6e0b9218b76549f74160ffbd4bdb1f8 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 15 Jun 2020 11:53:27 -0700 Subject: [PATCH 723/772] Add images for three new books --- img/learning/books/o-codigo.jpg | Bin 0 -> 35213 bytes img/learning/books/pro-processing.jpg | Bin 0 -> 50551 bytes img/learning/books/programming-101.jpg | Bin 0 -> 40748 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/learning/books/o-codigo.jpg create mode 100644 img/learning/books/pro-processing.jpg create mode 100644 img/learning/books/programming-101.jpg diff --git a/img/learning/books/o-codigo.jpg b/img/learning/books/o-codigo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e70fad0e9313e36541d9489dec2d02a59dd63d60 GIT binary patch literal 35213 zcmeEvc|6qJ_xO9P*^4Cm63M>rA<3R(4_U`xEHh#T5h^WD8)aWYkv++t5h`nl>|2&X zcCs^=`Mrl!&+~bn&*$^{eqX=8zP)>Szt27Q+FiE0swt| zKo9_c0{}UM9v}uG2>1_xumGgHFaS6}SbxB-kQ3i&h(H<%0DJ@7;GY*nau+@f!V$OO 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 ws&O975(a27Buf%;;)4N0YtT?Q2+n{ literal 0 HcmV?d00001 diff --git a/img/learning/books/pro-processing.jpg b/img/learning/books/pro-processing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25e7f6863d1b823ef02489bc88ece2329367922f GIT binary patch literal 50551 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
    )ftm>>@MSdAzKRK{j6`n!v1AO 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 literal 0 HcmV?d00001 diff --git a/img/learning/books/programming-101.jpg b/img/learning/books/programming-101.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3749c36a21a91c28425d10f5bdb38b9a1edf679d GIT binary patch literal 40748 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 AK>z>% literal 0 HcmV?d00001 From 2befa5461fef193cf52d53899d6d4e742a15b9ce Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 15 Jun 2020 11:59:19 -0700 Subject: [PATCH 724/772] Small adjustments to Books page typesetting --- content/static/books.html | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/static/books.html b/content/static/books.html index 80b69c929..0092977ae 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -37,7 +37,6 @@

    Books. Processing books cove » Order Print/EBook from O'Reilly
    » Order from Amazon.com
    -
    This casual book is a concise introduction to Processing and interactive computer graphics. Written by the founders of Processing, it takes you through the learning process one step at a time to help you grasp core programming concepts. You'll learn how to sketch with code -- creating a program with a few lines of code, observing the result, and then adding to it. It was written to help readers:
    • Quickly learn programming basics, from variables to objects
    • @@ -88,7 +87,6 @@

      Books. Processing books cove Published August 2015, Morgan Kaufmann. 564 pages. Paperback.
      » Order from Amazon.com
      -
      The second edition of Learning Processing has been updated for compatibility with Processing 3 and includes several new chapters of content including video, sound, data visualization, and networking. For more, visit the Learning Processing website.

      Dan Shiffman says, "This book tells a story. It's a story of liberation, of taking the first steps towards understanding the foundations of computing, writing your own code, and creating your own media without the bonds of existing software tools. This story is not reserved for computer scientists and engineers. This story is for you." @@ -170,7 +168,7 @@

      Books. Processing books cove Ben Fry.
      Published December 2007, O'Reilly. 384 pages. Paperback.
      » Order from Amazon.com -

      +
      The O'Reilly website says, "How you can take advantage of data that you might otherwise never use? With the help of a powerful new programming environment [Processing], this book helps you represent data accurately on the Web and elsewhere, complete with user interaction, animation, and more. You'll learn basic visualization principles, how to choose the right kind of display for your purposes, and how to provide interactive features to design entire interfaces around large, complex data sets."

      Martin Wattenberg from the IBM Watson Research Center says, "This wonderfully detailed guide, by one of the masters of modern data graphics, tells you everything you need to know to code your own visualizations from scratch. Perhaps most valuable are the many examples where Fry demonstrates how to refine a bare-bones concept into a beautiful, effective finished piece. Read this book, and you'll never again be dependent on someone else's view of your data."
      @@ -190,7 +188,7 @@

      Books. Processing books cove August 2012, Princeton Architectural Press. 472 pages.
      Originally published in German November 2009, Schmidt Hermann Verlag. 500 pages.
      » Order from Amazon.com -

      +
      This book is extraordinary; the design is clear and the production quality is fantastic. This is the design book about Processing that we've hoped for. Unlike most other Processing books, it doesn't discuss programming basics so it's free to start with exciting examples. The publisher promotes, "Generative design is a revolutionary new method of creating artwork, models, and animations from sets of rules, or algorithms. By using accessible programming languages such as Processing, artists and designers are producing extravagant, crystalline structures that can form the basis of anything from patterned textiles and typography to lighting, scientific diagrams, sculptures, films, and even fantastical buildings. Opening with a gallery of thirty-five illustrated case studies, Generative Design takes users through specific, practical instructions on how to create their own visual experiments by combining simple-to-use programming codes with basic design principles. A detailed handbook of advanced strategies provides visual artists with all the tools to achieve proficiency. Both a how-to manual and a showcase for recent work in this exciting new field, Generative Design is the definitive study and reference book that designers have been waiting for."

      More information about buying this book in German, as well as the complete source code for the examples, are at the book's website.
      @@ -210,7 +208,7 @@

      Books. Processing books cove Derek Runberg.
      2015, No Starch Press. 232 pages. Paperback.
      » Order from Amazon.com -

      +
      The publisher writes, "The SparkFun Guide to Processing teaches you to craft your own digital artwork and even combine it with hardware—no prior programming experience required. Over the course of the book, you’ll learn the basics by drawing simple shapes, move on to photo editing and video manipulation, and ultimately affect the physical world by using Processing with an Arduino."

      The publisher lists: @@ -266,7 +264,7 @@

      Books. Processing books cove Published April 2013, friends of ED. 472 pages. Paperback.
      » Order Print from Apress
      » Order from Amazon.com -

      +
      The authors write, "If you’ve been curious about coding, but the thought of it also makes you nervous, this book is for you; if you consider yourself a creative person, maybe worried programming is too non-creative, this book is also for you; if you want to learn about the latest Processing 2.0 language release and also start making beautiful code art, this book is also definitely for you. Based on research funded by the National Science Foundation, this book brings together some of the most engaging and successful approaches from the digital arts and computer science classrooms:
      • Learn the latest features of Processing 2.0
      • Gain a solid understanding of coding concepts, such as design, analysis, and object-oriented programming
      • @@ -289,7 +287,7 @@

        Books. Processing books cove Andrew S. Glassner.
        Published August 2010, A K Peters. Paperback.
        » Order from Amazon.com -

        +
        The book description reads, "Learn how to create gorgeous and expressive imagery with the Processing programming language and environment... Walk with veteran author Andrew Glassner on a journey of shared discovery as he takes actual Processing projects from inspiration to reality. You'll closely follow every step he takes and see exactly how each project evolves, including big and small mistakes he's made along the way (and how to fix them!), and the times when he changed direction. Once you see the results, you'll understand why programming is such a powerful skill for self-expression."

        This book has a different perspective from the others because of Glassner's deep experience in computer graphics. His bio reads, "Dr. Andrew Glassner is a writer-director, and a consultant in story structure, interactive fiction, and computer graphics. He started working in 3D computer graphics in 1978, and has carried out research at the NYIT Computer Graphics Lab, Case Western Reserve University, the IBM TJ Watson Research Lab, the Delft University of Technology, Bell Communications Research, Xerox PARC, and Microsoft Research... He is also a well-known writer, and has published numerous technical papers and books on topics ranging from 3D modeling, rendering, and animation to digital sound synthesis. His book '3D Computer Graphics: A Handbook for Artists and Designers' has taught a generation of artists through two editions and three languages. Glassner created and edited the 'Graphics Gems' series and created and wrote several chapters in the book 'An Introduction to Ray Tracing'. He wrote the two-volume text 'Principles of Digital Image Synthesis'." @@ -344,7 +342,7 @@

        Books. Processing books cove Joshua Noble.
        Published January 2012, O'Reilly. 728 pages. Paperback.
        » Order from Amazon.com -

        +
        The O'Reilly website says, "Make cool stuff. If you're a designer or artist without a lot of programming experience, this book will teach you to work with 2D and 3D graphics, sound, physical interaction, and electronic circuitry to create all sorts of interesting and compelling experiences -- online and off. Programming Interactivity explains programming and electrical engineering basics, and introduces three freely available tools created specifically for artists and designers: Processing, Arduino, and OpenFrameworks." @@ -365,7 +363,7 @@

        Books. Processing books cove Matt Pearson.
        Published March 2011, Manning Publications. 300 pages. Paperback.
        » Order from Amazon.com -

        +
        Matt provides a list of bullet points:
        • The complete guide to creating generative graphics for print, video and the web.
        • @@ -394,7 +392,7 @@

          Books. Processing books cove Kostas Terzidis.
          Published May 2009, Wiley. 384 Pages. Hardcover.
          » Order from Amazon.com -

          +
          The Wiley website says, "this book offers a series of generic procedures that can function as building blocks and encourages you to then use those building blocks to experiment, explore, and channel your thoughts, ideas, and principles into potential solutions. The book covers such topics as structured shapes, solid geometry, networking and databases, physical computing, image processing, graphic user interfaces, and more." @@ -463,7 +461,7 @@

          Books. Processing books cove Daniel Sauter.
          Published February 2013, The Pragmatic Programmers. ~300 pages. Paper and eBook.
          » Order from The Pragmatic Bookshelf
          -

          +
          The publisher writes, "Create mobile apps for Android phones and tablets faster and more easily than you ever imagined. Whether you’re a student, teacher, hobbyist, or experienced developer, Rapid Android Development puts the fast-growing market for Android phone and tablet applications within your reach. Without needing to master the complexities of Java, Eclipse, or the Android SDK, you’ll find yourself writing dazzling graphics displays and location-aware programs in no time. With more than 30 ready-to-run demos, applications, and games, you’ll find yourself diving deeper than you thought possible into the treasure trove of software and hardware packed into today’s Android devices." @@ -480,7 +478,7 @@

          Books. Processing books cove Jan Vantomme.
          Published September 2012, PACKT. 350 pages. Paperback and eBook.
          » Order from PACKT
          -

          +
          The publisher lists:
          • Explore the Processing language with a broad range of practical recipes for computational art and graphics
          • From de63238262575e926e9d09fb563681753a531be8 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 7 Jul 2020 12:50:20 -0700 Subject: [PATCH 725/772] Minor HTML corrections --- content/static/overview.html | 6 +----- content/static/support.html | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/content/static/overview.html b/content/static/overview.html index aa6831a91..d5d3d30ff 100644 --- a/content/static/overview.html +++ b/content/static/overview.html @@ -7,16 +7,12 @@

            Overview. A short introducti

            For the past sixteen years, Processing has promoted software literacy, particularly within the visual arts, and visual literacy within technology. Initially created to serve as a software sketchbook and to teach programming fundamentals within a visual context, Processing has also evolved into a development tool for professionals. The Processing software is free and open source, and runs on the Mac, Windows, and GNU/Linux platforms. +

            Processing continues to be an alternative to proprietary software tools with restrictive and expensive licenses, making it accessible to schools and individual students. Its open source status encourages the community participation and collaboration that is vital to Processing’s growth. Contributors share programs, contribute code, and build libraries, tools, and modes to extend the possibilities of the software. The Processing community has written more than a hundred libraries to facilitate computer vision, data visualization, music composition, networking, 3D file exporting, and programming electronics.

            - -

            Education

            diff --git a/content/static/support.html b/content/static/support.html index 91cb0754f..7de71d1d5 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -26,7 +26,7 @@

            Education Institution

          • Fellowships
          • Community Advocacy and Events
          -

          +

          If membership isn't your thing, but you want to help, we love donations! From 7c27e106cfc52b1dc63d6b2e44c6d0c48c2e8b7a Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 7 Jul 2020 12:52:18 -0700 Subject: [PATCH 726/772] Update books.html --- content/static/books.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/static/books.html b/content/static/books.html index 0092977ae..3b4a22d0e 100755 --- a/content/static/books.html +++ b/content/static/books.html @@ -563,7 +563,7 @@

          Books. Processing books cove Published December 2019. 270 pages. PDF, Web.
          Text in Portuguese.
          » Download
          - » Read online + » Read online

          Este livro é um guia de programação com enfoque prático considerando o contexto da arte gerativa e do pensamento computacional. Ele conta com explicações e exemplos visuais cuidadosamente projetados para serem de valor tanto para programadores quanto artistas. As aplicações e estudos de caso foram direcionados para a linguagem Processing cuja própria filosofia segue o princípio da exploração do artístico através do código. From 9dd9f6193039a5a4bc04edb26b402c70992e7d41 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 1 Sep 2020 19:03:27 -0400 Subject: [PATCH 727/772] Add Squelized library. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index c2426e881..50c300eab 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 262 +# Next ID: 263 # Increment after assigning ID to new contribution [Library : 3D] @@ -79,6 +79,7 @@ 230 \ https://github.com/cansik/artnet4j/releases/download/latest/artnet4j.txt 241 \ http://agathelenclen.fr/downloads/Squarify.txt 248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt +262 \ https://github.com/SamuelAl/SQuelized-for-Processing/releases/latest/download/SQuelized.zip [Library : Fabrication] # 078 \ http://s373.net/code/marchingcubes/download/marchingcubes.txt From 3a62e8484c813c209eb28c5782fa3d1398b0d24f Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Tue, 8 Sep 2020 09:02:25 -0400 Subject: [PATCH 728/772] Change extension for SQuelized contribution to TXT! Oops --- contrib_generate/sources.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 50c300eab..193b96c88 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -79,7 +79,7 @@ 230 \ https://github.com/cansik/artnet4j/releases/download/latest/artnet4j.txt 241 \ http://agathelenclen.fr/downloads/Squarify.txt 248 \ https://github.com/runwayml/processing-library/releases/download/latest/RunwayML.txt -262 \ https://github.com/SamuelAl/SQuelized-for-Processing/releases/latest/download/SQuelized.zip +262 \ https://github.com/SamuelAl/SQuelized-for-Processing/releases/latest/download/SQuelized.txt [Library : Fabrication] # 078 \ http://s373.net/code/marchingcubes/download/marchingcubes.txt From 5fb39318d2e57ad868a8faaf0c97bca42c10967f Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Thu, 24 Sep 2020 19:09:18 -0400 Subject: [PATCH 729/772] remove Thumbs.db files (Windows caches) --- exhibition/works/discom/Thumbs.db | Bin 17408 -> 0 bytes exhibition/works/superhero/img/Thumbs.db | Bin 42496 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 exhibition/works/discom/Thumbs.db delete mode 100755 exhibition/works/superhero/img/Thumbs.db diff --git a/exhibition/works/discom/Thumbs.db b/exhibition/works/discom/Thumbs.db deleted file mode 100644 index 93ae137dfc1f9bf4dad8a8bfd51ce394cf8ab32e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17408 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 Vf868$)cfD%eXIW8^#8sZ_#eETcWD3s diff --git a/exhibition/works/superhero/img/Thumbs.db b/exhibition/works/superhero/img/Thumbs.db deleted file mode 100755 index 9f2257887f6e0ad56dc7c12e00761f43fa0c79b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42496 zcmeF(bzB|EqA2P`AXtz0YQU%@Swq61BBr279el+jZ;_v#y zf$m%X2=^h7JD>vrxW2i$`K2cW0y_V1_&;b3T!DE-0~-(L*KK(h#JAfV2|xx=094=} zfDSwYFaS&d>;e!h02_D!-~x;QIe-rk0E7S$Kn#!oqyQOkyU$R7_#r?EPyy5c4L}R< z19SjAzyLr2CO{Zq1|9<}04u--umc% z?C*~JyW#Ht8`Hl%u9|NPPY`bR-Tx$j<%hdnl;76D-^uHCJGI^(%ply3dpj$)+vK(^ z|NZfQyI(f)VG|7{s^TL$0(e|7xdmJt-dLx2+a{qcWW#@vDWj3AmZOX@=k+gKh%^Wh{s!7DN;aB7z0EnTB8> zD1#zW^tK2Uf}Eb;{{6fTrOWu!{};|}Xz%wQ%ayD@MVGW}uVkX+J5zPWx!y4DmBjQw z6`(!%3=?qY?>2Ib2a7Ffbt~)ZA_s`AQj}`MYzgjoHlB5#yAP{!dJ(NJ%TZ3xduq0< z(W-x?aZbYO)N4wWDJb|}rT$>^zP8TJm%va3VqX{LdCUpOwHHHVX@>5st~pF=?#Gwc zN^jqIYzZ+Ib|7HqoxxXLogR}kZ@oey`+jHveegF}k!pYxkg);(slq2}F z0ehW3*i#L`-o^~}PK$r+rT@?VQw0i!+wpQhe0$zC0Djwl3?STpcmJuja*>6pcD}J; z=IAZ>VD4nPS!>!qA95WS*!-7p#L6V%?ETRl8;4-Uzm>bz(zg*C+D0nq%}R zK}MMlcQB0ilG{9Uf+ifBaCKaR4pyGk)&xz8lA*^2syU&G8h*%~Z4UTwv0+C}&p=3(7YP6Q$=1tZivhdVb=VxeW2JR})E#^5)D$C33Qs|@84{dTBT^F#V z*YEq4`TzJpK+t@Y`)Rb^yxYpc!iE1imDu`%{C8L*Wo+L=c(c1xEG(>ko8r$ahUz^? zp43%Xc(#R3Vli%Qg?D8*ze1~#P!^^RsDmf@#;1F)v$WN+PVIf4RFNO{KyhwgDD8{p z-gl%LYAg7NfSLW15oc z%BUH{@6O+hXMd?>`ZMIMN!ubD3C0J3NIruJ;+4(g9mEki2kCEwlsYz*ajLO7uOfp< zKRcY;E?`-EiZ68$>yL20&~{?@GTjr}CHRpPvl7GO9Cz5_Gyn+%_HIuYAVzQOF@!2>U_&yW{N>u z9i!3-9Bx^TZ{ML!!AZ@e2!%D+lX1bA3yke@G|iRUXls&}yoQ5c<%-_fh+5edfQG_u zAfXjrPpqEwwjPL|ge8VhfOM;#`@S_RXZ!X7bVWtvJ5U>Hm-ljZwo$=G`FGYtnwv?Z zvK{qEFWfbyF>*Xk>L#;hps!R>WeV;R3lAbVM6TEBqxo1oN~Pv)Kb_%3&T8w!QdNvo zLw(|xLf{a2r25@dGeZ-ff~+(5MDREVp_d=Zu!=~Esr18ZTW{W}+K=Yhj^WTTS?7GH zgV(5nO|8YwsT}TF75ROR^u_A(UN@8LQ4QtEHe`N{@v@f6Xm(Y5vR(n#U1h3zzNd`31YnWe?M9Gcq6l;0t_C64W!)BI- ztcGJHxvToXUmA>Z2;CFQ-Ws2f6G)?fAe#OwP zI1R14Xw*6}aNPt{+(*ly1H+!iO!FmVnfc35sS?v9HhQDb3w!P@IHgEv>WHV~srREV zV-^0TnytD0PBki};$BUUNrfj_+Z}lIqqGj&Yn`);aD#f#B`jNdvO`gxT-H0m8+78R zt1m6QnO2#n7{9yPF+S}g%@iI`j6*-b`@q-k7$A)MnG=<=YQ)MPWbFkwZS1 zHS%7+Q%~-MNa}B5cu3cE+W%^P6DGM-XW5lS&WpZ1vA!2dS87PpMO9PSYg}u1Tu7j>r#?HZ zFXbx3iXT{hq~y1@aY%gw(K>HxzW;{*UKRxbnfzW~?3LwqQ}F#la!f}PC0~QNvv}I` zVQtkB_2=TQ6A_I3CHLo^jBp7a?xpw?c`m?+ zSCv_m=1LGa^<5YbT`!g;ek6AI$X4YPHzdcJU9`H3Q3R>_YyS&ZH_ZyDD!l#PL%-cR zd2!qgqWEo(ju63Z45SsE#tNk9ymBc)H6gl7OMJa@yz@FSqRT>WrL$pmn>2GPHEJOj z@}6?eI%7*?l6%9bHxPy~7*pw&&p~tEtEQ5h;^v!ZcJSw)aX*^de)pNi?GyK7vzt}Y zS2i~{9xB8M$Fd>wt`qn2TQcv{doXf89Lp3#@)Dvx<&7QHz3&`GNI=;^5-_uhqk2AG zlmPXIUA^t&5_VF~x`?`g=x^#t!aQW}Y)vStF00UW&iR~o9+f;eo5@0G`tl9S_EC7p z#+(9q`W0P?K^}+1+r|0{@Qu~3r%Y7Qzk2Pzn&cPT zJScyZ!dPY*_F-o%x_b33n=4Y4JA>T4XVIL!Uc{8rF{=+LTvl*HvMs(0mS}BS9Lk*D zBWT{0>O3q~kQ-gAoA_}w*|BL_Ej2-w<#%OXlCvCP6hfsGsEFfr*DDxJ8i5|i7&#PI zGL1xi`o3uVz9gD43Q?facSv(aszM%Jq0NJ-dvkaqRgAB>$r>yATu)_*QiDu?y6~gX zDD4bg2i1^=5Q%OzVx_Ll(bS=+|0Ew8)?-@kyby}wxNvcvI&qD|A$Lgfc3Mg(s%T5a z;wX@H{@L^NZ2<}T43Gdrz^Eok9(_#iySUg_w8hquMqOGs-Jo3~6yi&r_NX ztiLtb_vxtOmt5)>wa~KQ=*^=xjA^-Jchp=oi05joS66+Zlc0JudLM-zo-}91yg8$q zN%Wl1Q`XGVl3u7j3Jp`|Ge3E@?fF$@k!8L`UamN!o^cekZz&4ey*KN$Uftk5qw9YI zQP6!sZ)9d*i0xY}p&q+Xy)Ewk{&l%{>ayw8wuGo~qqQxB(H63@rLd&C*SZ5|)5tJ4 zUvJj^MJ;j0ja%tF_DtPrf1%27+~#Bkz$N#QstPJygOjU_jx5GW1+_si8clHFerW=I*yc8zc5p^)>j^bfE|j zpH?Vhlt`j#3Wsd6s9dLcXICoSl?!=CL*`Os;+pw;qQcLeq#c=0R!VK3(Dn%FcEU31 z7t#t3xeG4jqOCyG&~en~oP6xS?Jwf@6x@nI8=C#wy%CD;2E4NHw((csr2O>g~B z2A0O)CXY&ZUAj_uA~=8^dmxj2u?5LkFhv!vizTK%>QeKn*N9Pi{Q5I58=1^0~&A> zd3*nd3t|Hh-`3aucK-+c`}GI)=X)LQ8*eJKi=fTpY9pO5*P+QqN2z5UEBR?8HDnD! z7?y*@muAJTVXCzw_2{NnjLyYIHRF$^FZiu_^Wl1=>WoQo&A3j zZtFi0Kn94w?L7RQyxhS+ZMT)4AaMQ?{o9}aPW|(3{V2x$UncqF-=6X>Bi=6mZJq6H zo$}vZ{va?c&#&u$*4!I1w)<+bXf?lb2y2W#`~lVM9fc*G_igbxZa~xi@+t8?1 z`bMU&8hj*M#P&gjK4^EgSt1Wg&=2C^y5KlHy>Fp3kQrxzIdB6}h9|igrw#qF&?1D+ z(S&Ahb7HZ#OEHp}EXgoJo_w8!$a7k#fIHRn+MCG2n_y_+$LPYWNVX(zq-vHB-<1@a z!=AYFIbLASnT0?u{k~jqtK&_Z1wn2o!33l(MzsO?M*F{d+6o&e38@yrlRcK zV|5z?(=D!vhl`Gi*zN{R-))93Ap6l-BOskoZYfc2{@<2;#SfMR)-H6;Y{b5dF>@S! zJI173UjA0uLxn1hI#;%>L)+%jds4GMA8eYdW3gGVMJC?fUSRc30w)Hy&TPC|;mzs$ z9fzd`j9$g+(NXm={;;qxwHdl_dTOZiU=c37C-vt94WiSwYr4iz!WhH5<7w0pALS)P zwEP;eHRKr4J(hiN^u^J-S^T#Zu_gL)s3?kr7f=`<#UnPrghC%@1etsgamq!ZdhtB^ zty<`2z3P&s5Z>n7DLozCnV(!J4mjg62r)eP+!Tu|dButCdU$0p>yPMhYwdGQv9|A7 z*FlJKT|%Nxk#1lJ7&wMgi@6YTvpy3YmC`VC}B zHRlSWk?jWZwd4k3EKa_kKYAUkPw2BaaRVvMyvEh?8QNZXd`SdON*q2d1q$b+o~AdD z0R8KZP@zALD|yLKegjFL=+Hmoyn*~Mzkvj*r5^E~_1-`bo30{o{y28jALnfNk26O1 zr;-2VY$^S5+`pKuf4NM5o-43S)i;p;T3;aR&fl%h+nFvF`rR5S+h5*2`_z;{ zku0}kP+em+QtqMZ>o6Oh@^Y{>tZq5sI?BUG;B3T+tHOVItx9HiM-6V!p3SX52!nYq z)bdCJ?9Cdy zfuJybddJzIqkR==>EE)k@dA@5JjoG~BCz$ZM-C0>&2| zNHl*jo1Mk8n7b4CdOZympYDKIWMyicH)!EJWFr~BOUD$uK22CfZ-L>;z-OG!lgkf^ zhOY(Mni^XU)4Juv!)tY+_e_3P23hrJiKU=MPJWj+FB~ngthKJo*Vfag9@kkY}{g^VvbAq8&k>S7)vHxvpVx}L`_pQ!YT=`HWnLJ-D|QQt@w%e-JJ2EWpm}0@Qhyy&}K3PmkGE&G#g5?9CN5@9(x(#j&dZ6DOP)I zYg!xDyIPNo^@w)BD%V$tsY%>7M)C&>w(l2z%-SLfY+cambwFQfb&mg}jK>vG#YHeh zu`(eTr{<-v5$M=Yt2o9?c0R8C!G?^uyn^j*X}wiVbw@W6SJ<5;1=>ih zTYA8DK89KBGMnp#r`CnUc=>f&k^*Dw9n$A1W9qCzAx?A@3F`}5ZjV37F4>tovy>mK z&JZJXs1w2`?GEx38~I>wDT;9RH zzh$DA#cJcn$ARtXlP#mYv9De|Ak;CzaH!*758X7Xs~IWsRI=f`>L1hcyknl79Q+}z zO(UWiV}+`EaHLkFc-OH&A4j|2$H56N6_P-2X1GqribrJ&U){CKepDO}txIN@XvaI$ zpPduWX?_%{Iq4RPCjMp?vdhL7ennTDKi3vN%uO96EFy6BzyFd^Z4=ydz;d>6-D-6M z$r%6FUqhpoA250|??0$P4Nx`ENJ4wJsN!?~qcP0IH@QoNsNhc9qDju3%(K_MYfjs<)8kkmLBrA?W9V4x@KzJ>7fTQvutPk6e%deb^u=CT)XX5K9 zEQ!t2#NjKWoR26E5kAN*TA_E?Z6?siv|8~|$&x5@nAzhi%A_i7K8q)|m?F|xj?UzJ zTkEfK9wlS)c}Bi#q!TBCa5iuZJ7>&YNoH8P#%S{aUdOU9&)2TOp^LMGk2s2O>*ATCSzlRG!zYo1U!mjToIJsot6d(SHj;Osez`D^kpUdpy=ci5L?f^Cj z$qqRSDf_nciKW~KS1h6lglAgNfY)q1_Q!Z)mdzuyE{H?9XS3sA5zcxfA~vE_*IUB_ zq&{AQ^U(xu0x3c&N|E3$a+b}2ZF%!WLkg4d5JYkc&(=?vML7FP!jN2e-@E)cilD{I zBAmiq90;l}H$+K?y!8{dKNoQnzXGlUDK z^eyX57ha6OPp&S~ zVG1L!M#jI{f5nN7aR)_8s=ay1Kh-w;R)0_p?#FKH4{||l0OH$wn&0XV?*2vn!O2o) z8@c_QUP*s7!|Z3JABeU{RWg6S=g;eR7IefeGmp!vY%V=3S;HNVPq$?_-l5m+yq}t> zx)#(X=-_p~IL;=LL7Y43{joE110iP$HzpPEIvwtz?QmrzLNTC(JAwSOo%hyZtlBLV9hgXDs_4Jb?s;z4s1{)QqCSl?{M_FD|^^HFx<(Ub*H8#(lr^-nB zf%WVU1OTsrK;X8$NHB=s03kpq5C((;5kMpm1-u2Kffyhbcn8D*@xXiF1Mm?@01|;D zAQ?yjQh_ue9moJOfh-^!_ypttxj-I}4-^1}KoL+3lmMTBQs4_v29yI8KqXKGR0B0Y zEl>y40}VhUaJ!7nApQ!p0Ifh9&<=C}oj@1R4fFuLKp)T#3;=_`5HJjk0HeSd@C_IT zCV)xcwl&5ya67$O5YGYgz{0QnmO#7=tN^RP8n6y*0N;U4U<=p=egHebF0cpe12EtK zI0TM>W8efh1m zrk;DoUcO|{c#SA-mPFkh2%12K6dePMb^5q0*{MrT;gi--rA$t@QR&9h3rscTeUB2x68-b;9R za;DLe1CEK|%(wm%3BJvpy^h{s$Kr5S|(%*CPSRB?Vm?JT4J8uV4ttY$?Ax zS>}F5w4>{L11|MKoY;z8O}{}S@SNQ>OP7ph68+ouUFsc=cms#YfH4m;dVI+cXLu*~ zuhM*aYad8XD8Li=Q0PAuX<+UC{eT7r1)BlFgz-yE3StBB9SZzb{{2<`>F%Y)B01JJ zm%|njQiPM7pvzZ0D|Tc!cmmyO=%@fuT@#TjQk#4K?0JyiitclTX7nW;isr#r&xxf+Xea7<)jV$<+<+pnA97~t!PmIjW>48Nut&I40 zIQ(rA*P|5{km&sahK~9@Zy*}}Go8-UPDcdsTe5YuloAOn`|{r>kuS#33wyYQS+W9> z=-cq-`6@?C(%Pz&b*Ff+IfjG%T_l<%=hLiSD7C-^Qj;vnQ&hs{DwDksX=-D3ySt)4 zh4VkCeR4dSav7dice|F~E05HhpH^`_QFnO+2NftP zo6RuPBh-xRI*Q9s>NQ}N#8EBFIIB47rCU({pnKJ*S|7uuivDUZM&-V(Foc<Hbfz4AJ?B&e?HgTC@T|R_R~6zI=@RQo~=_*iK#9|L6KFH z<@>dO+L!B*+LYb92U;o>sl85cG-{$xOXGPCLab(E-2FnkgC${G74J{t#!hV?$Bbkb zUTf!~FnqzL2`?RdCu_YLJBFt8TrB%+GSITdhB};iiYjQ$DEb|N1kN6n5Mz!TgS=GB zK7+Yq6Y>2b7pB$dz!_@W*+ONu0OXeBRkO8sdorlg#t4qG&Q@v}%$>f02! zc1LfbQKve-E0JT%&5f#`YQxlV`sO^&)PaOw4FY(C9`eJ7e!t}WwC(J29w_3jc4WQe&b1a2J1%_Z$+K^ zm;&$E1;RK1W$6;lcBpSEya@CfR0p8RJ8%X6}w z&Vpp)tCjI6^HQsBR&Dl~46N{L%}5N0$i#4YnkLJ!0<=7S!K3CPIz)W7Sm$uxUMuIQ4_c$rxI4gqj?lrSnRG#2H zIaS9GqbmKFh>UMef>G1GH(eb?<~pdfKR2Ihnl+_8J3ANrf*lW(8^5H6X73+%r0~Il z(sA3@Q*&Cg?s#q*S2+zL!QJEO9uN@TQ}HHqo#;$q88b}TQy5(uffID>wxWdhb(JvV zd9^Y@y8T?VVd8OSsP=jV`QfmUpa0PhSu!79=s0xTGV|9u+eZDf*F$FtD`H!CX;`Fv zL;=)h)YxKDm}CAvi>e2wZS4538#%gjXCSJ~MaPIwc_@+y;f|>N?XJJMbrkpJxTY+& zW!Klltf{eRLPH!v^+L~64M|mqv^2VM}s*7p{_h_zY48QX2oVLuD znZ7V;`-fdlR1{H0&|%6r+7OzE0EsO^4Hv}FpPkDQV}f*NgBF>YL6PKTlh{SWDbK2w z`TM+a4};sGA3T*{8H19N=r}@VpJ}u+>pvPFlf4jH}NDamRAIIj1X%(qM*^0c4U6>^A&oiFFCE%YHERARErRVqp>1#$$$tckqM;^ zqKRaEtq39WReG*6cK%CyTj)kqSmS-MmCXu5W*x~~;bL5M0=jhML7&z6A`7-A zmn6qakM$o|xbyo%^KKxXZU;lw1_BB>E8=dQZ8q4Odh}7P6Xyc6F8A4V^5BEi`gBguXir;I|*V9UW zei0)xj=DG?!}7tS@a9bXeFEV@<_#nz=GUa>&+9J`lLf}-Iyh+5ztv$5;;0YcYn_yR zl6A`6JQ*5%858T_!Dd=QJwUSigUvRd7sFk>|9uM8I7dx!$)0qZ8dp zhq}+*ExF%$HuWC6EhANp^|-M~kv)@hR(WNC(lIi%9otNbNS9C4o?H|hVVKbV)Hxv{ zLpRI7fO)Cwvcrd{1Ew319TjF+T^cTKk*n3|Mg-@Zeje^6;X|}`O=q!RRFu7yt4yuq z0S$=$Spu5W5e0`hdqSgHHz_WjR$VJSJ9s#lpuJhQc4?Vg2Q!aaY&mnHzOybT)(A5dqY4@W%K#PKQ)Yr934(bU2zj7}h0kHQ#0Ah|oG;_>r+#sHlCF zFGgZRPm3yrl*hn*j63Q{5wzYaJ$`)8@MT$C(EQAfGET%A^^!D6cuYW~y||MP+^dbM zvWW`h7|J#=8_a|m)zo$B2WKT4;x3J7Fcz5FYa6{;ZJl=Znb~Gym-mz@!l0eEP=vcr zfTujadOGoV72bqm-^nQp;w)9P0tML$0%$i<^{jz6@U=SngQtCIQrd9!+F_A_7O&tI7-T7HTY z?wN`6BNue|I&gUor^jLScvp*wZgU?Q@3@%AIHt{?kaZ9}ruhWUyr6bH;qkGR+WNN} z$S^;Tp^fGG23(R~~k)T#tktkV*+l zT)ya1wWK0UZ);bv&*+GsgiwjZQgunbj}kj&@xV$rw`q>Ayv93IGIg-SOgLp=o)X>Y zb3>jwe?=Z-UfAS&s^=YDC>h%}ETum5#Q;1O63SLSyXUg;{k+YMB4j!G{qRQ?pCj^- zx*~zo=Av>a!Ki)iB8ie-jb5GF_rfMD^S5VVB6TA<&f?Y2Q1J6vC<-ubo5@?gTuNq$ zEi>IYl&*Gu`iGSKttS?_8oibeADR$!{csOByN`~$>XIPY2GumFl*5;ebh$%2zD$=r z@oBdPY5yGcfN$sVGE-K}jAVv|(rg#P?Lw@F7RhwNHQzdM>}f$`d8SD`>7V9 zJfM0AD%1uwUK~X1UCOGwkZtTOn9{jCwbuBd3hq{WV-$q>c2}s{Kb{issBG5^nF@WU(@rng_(VWV?(@hiUFxb* ztWFB`c|qYPc>2O2pZWqCe8t2K->2|DM|U8crSBu){Uo)LFz ztCgECaevHdHYeCFJmY+s`CXuUx!!w2VT^No$*rh6F(Qn>Dp6v1!EaXqcS(Ktr8o5$ z_MY~8_SYJ%A5JbaH;-vUp`U_V=O0`!qD=?yiSAfB+2hW_%~&t8Pi%L-{9(A??Jsc}9Tp$u|0*FKIs`{vvWuGjapYXCmjRjV%>=6uh6(x2R zM5+V?pzO^P2`6#Oe5CB+MvT@rnI3OTH|$LiSC5F@S4KjQwN7QuC4N2ai?WLlZc7PM zA!Xx!%=@mE5Lchu+z!pVqq2or%uCcZ?#Yy6iFXL?Tpgr*OB)vSd^<82R_vm`FCSGh zGe8~CRTGUG_QqT7`Q%DExG2QmFB8EGO}`$dl&U|82%)~?Q0};T7@+rXafXx`6HD^y z%km3+xd(UJOajV{N!`Alt4F%xw|e9I+s{8t>>o33h=C`T+KyM7#(_Ki`IUPBZawtW zwP-oexh*tcSb|+&RC`)`nnKo0s>J8$klL7^TY02VxG+Z%dN*inH4vgY9s<{w)kzYtquhReE zSsAIGArID)ODS^k9&WXx>F=(2B@Sl{P2U4AMO`+DSP6u$RgvCuS-pYQz8~V zcB!TM(=k>h$Xl8G1s7zEvu1VRwT}Xg?R{694rfIz{aLdg>L*!=mMy%wgACW5B~^sb z+TyLc{9kUG{@YJz3M?nc3N*G!EI@gO^6goC83qxdZ_k&M+3SzR9vvx!l`!=n>%vEh zw5n`ceca|R;2C;69L`_V>=C)Xm}%D|to{5^I9a9Jl4U9V16l$7&fsPOG^*as(_x>I zRLw{t=Wgl@%rN^;#1zjwg~xqLY3kyOYzHSYr*L>#MkG= zg0MB%VDlR%%@Cp_JfByghOJC(guR%eGF(^3;G&WEn@^P|YxY(a#Cpg0qwkNtwCJDf zbqnZQO*4%IBge`RF6Yv|X6F}*QkRFidqKzgI}2zQ?s*X6I*oM$K6W~4Z?}vJsB*=B zyDsR8#g-#WJkmXRzU>`thT}_>X2>)=_Y8d<<;mJ^Pmbf{F?Vlipu{KVnL(|11h(o{ z;;IU@$5JHp?OA5Q{C9l}Cyy&$Yg{KT6v5U2pMOyd(n`>)6b?z@QAYaFm}X z$AXM7s`Vsy`RhY-(K6G}N*9y!q=apbK@5v&$sptXt9{qrl8rA+I~5hRz$qTx~y#<>matP-+4dIq5hRcL)-0x7fae zXjS0D05uqz5=BeK%V+tSLlEv_8S;Px+cf_tezp=(?`@IHn}6SmLdFu1n>PeheK+ovO980|GW z`Q>d(CUG#_kWE|a8Hdk4c+&X)+rj%|#RL&xO@X7&K+D^mW7!a^;9Sl(Dg3#Vf;o7a=t-Qiu>bka3DSO#}BK-CC(cKC9qGw>^;?NM=lhAjb`)n|@qq zKHvr-NrO8r{o*}6F-Pnts+o(Lk4QA~t^(dlgEhyT|KkJ>b)LL!wOai!$0ANA^SJqY z87GIj=>1d#eFpvx-HbTyw$P-p;{x5s?X_wNwdFE!XfwL z`aDyyLr?0@b?@uv;a1=IHe6}dxbT%ycS1@st(cgd9`Mh!R}8p42SxedLXTZU1Cr++ z!dA!f7W-8x=aE%*_CSVNqHAT%AcN1w$BUoxtW{~ds^*>wcFreaQcVF$)q)SJ!<(zp z5QBTF=?Eew_1|H2U<|9K!vxxArqC&`(Ipnof|l9u%=;3NGc2YVaT$6mN)qsis|B~6 z;@g;Tgq?8`2P_l6>AU9+G50L+_j@xJ_)~<$UaG7|AuN~hROHY!tJboOb`(%*W>yz7S|2ft}J_ydDKlhfMxS6&kUFGy# z`+U0nVY{7eqT$2`DI8rK!Z$EfxbW)lX(`9aR)rZemM-}2fxUyc?JZWpdWIBAj*2g+ z+UOA3RxTcmb=2yo@sU&rK?I%7g@*(Pe8bNPlD9WC=9AX+CpXoTi z+DWZLs{?2KiF?R4%+#_|i4m%xx7EUOR@Qx1?!RS#2bJlv%n+mRte z7MIGXW{s17)7+9ng+#qEHJy^4Cz3f>(4N2GcKTq;IUDUYWtNf-K~K(81H0_A@n` zX%X+(O}cfBenQzWOFPli4fjh7-kw$HQv%X1;v6gB&MCMXvS3V64!jDq`eh zF7EC9r}-iT=M%<=*~T>W*6%BS6#DwpC?j`{hpN?#empH7&u*&Mbhbr3vB7^^xB zE4I+ukT;tj)r!A{IrZZ-y(%Sa?{Dg#I1TH6Ji{nq=U{W_bhUgad(w-Qq%(6l=i^#G zEGHYmiJ@$%D%h8i@Sf-;N!ED2*GF+qW{xo)=^~X2wop3D2+lW5oOx8~jOCmi32k@@ zW6?wLT0|>yM)%}iN`04Q!dY?2DGTPpYwwg`uK5>Vld8jl6*B#1cVATmCx zKy!b)9V^A`xY+)BJUvR8)ZRS%!Zc{8$-J`VhR2nXi5{t>XBY&up_+Fu2b4%yQ7L)2Npp)&)~D~yXj)mPOQ*%jNRx!s zXeua*Y(X1pD*aE!wY77V&1sZlBq?{*o{!yk58bo2N^7WyAK$`BKvBtx?y8G>cZ>ku z##$j>yn*;?hLK~4#13M237x$BJAH019QYP7&+#ALK$^fC-7poOmgIe;t9x&6APbv5 zXZb=)@@MeZfn7d(M@^Tipn3JbNG0FT@r1j9h^`8qp6g#TfNPZBkNc<8sI%vdpbbH~ zJ^97e;~NOBIPE3<0>o#i2J`CrJ*bz<`lmTd{g1ML{KxFG|0(;X|0w&vSUSl+P93y1 z`{UC8DLwNVXU|vYyH4=+4Foi?YFE;##q{-LT1sqn%ltm1H5&(A_wQ>aOT(ij4}AGu z5N^LJ$Oe5qDpSPLUZo`A9y`R{S0l+Aw;=5dsb!w9o-08x;%-s5a-%t8AKVt4k=@zv ze&yr0=l6q%zdXNh0Hc>< z5yAUcs9?m~{or;R{GB|=z_KUZuCRXuA;_+$&5DZjg;UVtv!Cjl_JZh zFf<~ksNj-MW%GElxf#qOF^QFJtp1Yr4nvW=6NATPi>buguBq}Oc1-oWA87O@1qnaH z&Eh1jARTdj+vM$2ukkn2*c~f2GA#WmZi^ZtWk6u!L9~6;U-0I2tm^O9%msghNiDt7lOIEGv+o|rbK>|?wPSsJ{QQ~rUrz6lLmfH?K$86FtqFAJvIa8cOvI$7@I~9}5f7?CcPU(T|r3YpkOoY%o8I87RPUdY< zy@}jNb%)lC3NoIB$>3$|5|l9Zym`ybm&9Kpl zTJs@;5%nVEUQGyJhur|T){!=O2>zXed8lSl#XSo%7KUKP;f$7&>bG?tV(ZOFRsy%h zU7q+5TyhGIrS4$KmJ>da(8UVr=v%~=^k&`D6_09@dvvnyVMyAUXhRX?K!g`T%_z~| zNdlW7*dXNmrs*j%@|fAI5``yzUIeF~2=D3Jm?zdNDLmYr+}#;fOx_e{@;hRZMKjD2 zcJ!>U8_1nIg==&u*d1})CSE};E@_EA_pHIdqJ z@$iRv(b(9ltcu7@=0z6i9_e-Tq9e{vkBiW26;3{QzP~8efp`a%H_lnCg8OZY*P=HN zr{0L7BM#-n3(jp9$ZDhsspN`CQ<+|sEr!&($e1@r&~?B2Tr&^VME4y>X#M;c^cJsA6v}`url00A~>C(_>ko%uc@9yNy>>2!e&zxObFf%Z4lxW%iCNuSO^62t=4)FzR(p)p^1RJK0kMYmv5mz4utQQHkKO!|Xm0sp`T=$uA*`hi1 z1uQH~UaLHhIhdA4u&{f;Lw#2rAqG+EGOydsirSx}IwUFPPJzEPJhivVYJFvl2$9ay z0ckkZuhf1qLJSOQs!j~eY$?c80m@$r^3)W2Tq(kT>4fAFfKG8k*~KRGemBzD1kUt0 z!QBVmYcAFgdM6%w7`^UmBt_QeGZ;*xT7vTyn^s_HLU zf9;=<6Wel5JwfJK>-hMg2q7a%&ke-!Jj(iA$G$?4-kLSBc=;iY0cn!)5U7gJ#q{N; zw$21Ct6zIJOOwyd+`qTo6N$M@S8UgabtctC%JeAwxJAZRUV1N8e@Kn(l5W56If|9q z$yAjMC2>3?X@i^R1mqMQjVDRu|ecRY#S*mv#B z`8ha}460^2pDIR&C5!c?x$jB-xN0=PD9#u!qPa2|Dqe(b)w>!$FHz$}j_|NJT+Io$v!6hag`bBl2 zZX$-<*{nQ)+S!&iL(mH0xhCMr-{L6yv<9)^9Kfqhuf4IQFRZSYSyTDf zLDkRizlN$0J#?nl(|;uItyy{{u&FN`I2rBc`H|=6i_W9dY_B``M&fG+CL3#sGUz1+0f^<>8~H~G^cwCLAtnH3Ukh$ZQKcco+fN+cA>l1H&Yoh zfb{t!n->95&8K4ivcJweY0(4o<(~)0h%QGaGk#dta53W_(x@~VZk$7&mt}Pa=|h+G zp7+UOhRr+26@tyqEem2{zjZd^x`l>ny2Le7?hanN^8^N2D?DQD_8RTP9Mdk;gEd!cMz&Y*ql#UEO3_$!pX+QbD|NXi@Jd^qFt4aUcw@d#&)blT%()_mmB*FE_?fT>T zH`;&xw*GRr!K2TN`A!p*I&%_HgdqM#3_-)L4U%u9FZl8twI_f0SyuYBQAip0F0QPT zMB4Q$jT_gz7jKB{df+_7{Tc<$&6C8lHF|(2qdGd{A z540}5y{jd6YaadQ1B6Ce3X${*9Ct}C*2P6F4UA(MS44v5UiKM z`pOn`UZ>ov(Ile6Nl%a9f2VfmNfPtUMIy25#)je7zs>|Z@hSoar>0I63khSN5iRrY zX;Cpzb4Kz$I>cv0)_F{7(KNYmAJ^0_j|I6*pd8B0SV$uwZf4-Jr@(689M}RI|Emnl zi&8N+y=luPT3@;c%vyYIfl;uT^t2mYt$0bL++LH@0FMA#fDWJs7yu~12rvQ6z+->~Utuev-&a^M~v(YuNk8=6KFszyh0!=h7pl5J+49dRI%H*J9xU0Gs*vWAK3)8TT} z*W>P;7;V-!5p#im-C<4v4M*#<2loUA=L6z zAyB=_&^L_xQNjL#@Rtg)OGwmo@{R;649H^F!&{v{z_<$|m1`@is`pcr7mR%FVxUbW zJtVWbzc1<{=ptw?r`{HNcvg?$bbnu=NIY(yI-t&oPHY)H;kuw{EV%Z3%PPP=yV0%K za@+K69JeeVZn~}S*J~7IvhtM?;~g1qU!5S(>SKg)iYn~j7y8qEykGBc&l@+ti=SR9 zst|(6NApVPcrULGp=_6|oL*`7PS(DxQ$U|8Ltfi;3Mj;V;nK#~oH{1f;9U`o*8~ut zagQog-{ZKy92Ba`A!tGf!*5*Obht7OiWk?n{ z%;m}6c8+A@DVc8l!T2cKtU}K3a`i#zB7a(~^W{Bb7ugn#$C{-9^BYoi<;wauQkARo zUN!It*Mzp#+F#yVQ&nnFyYT2|3`}IX9MZAMFY3&JuwjO7FCIv0hfyuT#J~GoHM3aj$=!cbCH%DCVDoOX6;5i;yfax zx%dvbEW__~I-8%W2&!e{%4ZguA1wWx%~2foC7lYxb@mbzg0*r>pp>OrA=tM&*Lf(L zBkFdPGerAz_FzlJF^O5jQYM1WT>lkg*i!rLqEWpWJf%`23cj75w>O%yOosQQLvFjZ zeusE}M7+e`x{ng##y(G=Z1+iXTBWEN^Zm?@A|$!7x(3r!rtUU#L3lFR?Gv>fXRHvT(ru`qA|LL9>D~^eSc|e{KIv^MD|fYqlY%G&_Z{b&S&a6YvGO;_5+`rBYow z?>kYoAA_znsLyIIdf@xyJ=)wRD#7|3B6hb>SQlYopv<}J{XY9DV_aW;tC7T91q&tM$S#nNt9~_y8GTE1s@e(+qdh1E8X5DZOKg+G0#RP zG>wt(og}!1BAg_Ky|y8$^TolBx zkVQ1yO)J9Ld$E!4YS8;yw>`|x21#_ z`DSl6SC1D;&v%cZ4gK~xBWJ@Uyq5yWXM*<06m~)6jH*vA4?n=ZLqh2(_`AueC!wdrADnz1v9 z>}q;QztniJ>AYMS8Z5?D+>any1;n~vrV~;wOO@zh;}Xc}v^T0=x=|q%$OtFeo(8d! zeY=TRWC8gW7b!MED8GZB0lTALfsBU6PhkFMSsvzqIA{yaj z?oS_7xuf4|KW}XHp?qq%U&uXRsTbKYzg8^apl!R3b+?dL1(haAq(D^tlD|;8yp}(> zuL=V-?NiJwb69dq%<*dj^UW_I_X!Q!R$-bwJ6P?~^WBdQ3Z4)cK*`aI7Y-B)6?a}s zo(7d%+xy_GDQFGs_LShMV20GpO=xglq3a`6Rp@ByB#={Fn-nHF4D}zEJ*scIkl|ME zypH}J-hqU*5DLedgOBL&b%_O>+-E|Mg`Pc8>d*_UYDyjEgi-F^&TE;GRZ#m>LWCSI> zg%1!!A1DXPR_wOEXL)}QOQj?POGy2a8*|g)qf=U+Ar?vo}T zkXIQypoHCKcug69z@-=(x{Kn+B85S4*XQyS-?n8|G*evsteJJ=MQOZYyq5T`cS__z z3;x2J1f1d8^AH=pf(e;AqeXW14$auKx}b|>Gae^T#X%M4q`BKDW4DCQ1l@_x1V@R^ zALOmmYEP=uQk}k5{|?!bJVj}^tKU~Q4CP=lJpohCngNF=sSDv{1hpy=8q4(+?LTDzn9LZSaIcM;zvd5Bdp-aWr5Qjv(d``Mp zu)KydVOX2>S8Tq5qy>qhq9Q3% zQ)QhB1e4aB>wV9)*6)AK&ulZGEfoBKS&5856#|(WTu8#?a251?F>u}aR);y-g3D|K z2OHW(5Xqh=o)gPmOV2VpX-2bHYER~m*{h#857Iso-5jMs$--7$kt{A!RK&nSr3qKZ zldr0ew29IQFAWh{3t-%2eM5o{w`_>hOyFe&hv+&Rp6OJu4 zu>7ckLMxt6@Nw0o$f-VdV_n`(i;r;<$-tJrd@(KBGQwClkNE%lihEm#)^bOcWQ>YO^KS+#Au#k#Nyk$m_4Ky^zbQj zqHnH=if?wTh+8y8`sDpK#TSdjIw9Y1MtB8J2_enIr6Q2qwUX{*SxNtG8arf&#&<|{ zX6OJt(JEtjuYk_HwC>^7oRlm1{m~%m2K3XMNsrj}Hp$kH@chC%u>|q@z0m6{?OjIb z)JMc-2W$NS_4aepRG8UPLA|*G+J(XPf$PdJ#~MjN`mh`j#HNv28!8)osL#XtlREF+%AO-GJ57M4nE~fe+kHcI|0(-cMeZ z=}#i$B5K<+Sf9?rj6XikcMnyrC=Oc3c^V;@pEaw_MuU(mZ{1eMh&v)*6RHuaP$cJU zdsG%7Wk~uuM2!YwBO;(1aJ&JHlM>gQXUFRb&<`T>HM8NIi95CUBC%BLEtLag za7V&c6~~(yXrJAYtz0zR5gPjHl-EHSE#uI^)f$zZylPh)(`M(hv2eN z_dN0(Z(BMnG>1cXLNEzPWpPc7zU5UrhpFA4RWnSb$#wHkSxYi1D5zOKGWm7#fst3K z*KW&Z@^Q{XeYs=F8XDH#T;vjNPwcfguy`unj1Da^h$x@6*BetQu61}`AzGQ*`I(MJ z7y&{r31gdpo~dj4BXhecjkpId?=8zl$2~$;V`3BjG*RX}WbZ9i#NJ|@54 zN}*!KVbg?gHdUiYQKMU4E$|(p>)lOsPZws9ZAF%B5u5huabq2RpPj3+C6mBJY-SMe z1PfVd1fvbwDvD-d&_6lsZ!S;V<{wh7r2$mAzyr?`MELBt0pnyOdxhB`mrPwPWu*YOA zmN_*!%it9uagehd$7n>GQ&+|(3`y7atu6V5jxu*oW%m-=Ml?2tH+q7X{l zF4wUl*kduYA%wGY2}@D=5?Alfa+td`?kMA>C}4OSN}q5nSflg-4sALu_cCNKxumTb z&WYgWu=9e8L`(Uw$mlkaZ!`gX3qcIXAwK@ zsRsl*mHV@se6&<2IcXF71Nx)wbn?`m$muOnk%dl?oEf-ULwWOr@%ZbIV=2PU%i!xiOF?!hUcl%>pp*m%Onqz7 z&7{i{bHu;d6}i=~_TCjzZhPoN>HDvbmeV+d!9E3lP%QtL!Lxf;d?DB>FFoaY&4!wq zE2%QfTu0n|{#ke%$(#c8A(G>8dHE4fk?MG3*hF(GO$c{mUdXE(3?^||SAQdw$^PR} z7a{(cctoi@~Eo3|t{+n)4qacy)kEe>(3xuR48qjL$g z$rnc;G)6z~km;$H2HgDZ7o%-V;$WYACPkaWGhS~qxKiBjQ}F!7UvBz`H{HM62QmeQ z_dQx9zZlLXUj+Z_UA+38Jn+)_-LB3U^akXezgy)2#YJOY=pR;iKo_7Omwb}=!~O1G z?*f6vPptuA=#9KTImKNa4K$&@JL`d+e_8JN^H@F@Cu1<#UAQzUC2Q>>X9@;#HpKa^ zM&T7l(UZDk>nU>e_z~Rq_@tBHQwaBwPil#sm40*}8K5E=8C>_KD4)cz37uS6^W)IU z$hk44iUoATi%g=S_4xYtMKWL^wu6ML+3F43qV9Y1yus#pF4bi~m}4u_!Mo zhQ1jdc5C}lP@hUNe*K`6)Mcw0>+(?SuG$6kb^WG6@um5n3kH>}nX}`0V~_j?w$F3m znrMQ8`#rt?^&iTq)1LaaB>S`Uad$>qBj*|#V!n%HMALDa+edrEAwxW2wHEqx1WhQ_ z+HhW~RN7{7QY24htjU1(OQW(TpIhUzph!Q5$@_W(+>Nq1>MHPvty}6Qc|R44o{U} zNA#BmpTyY9>N=>Zyd)WNzAR}fj5|LN6iF-9*`qGi7{9&h1MYK8BvC_`U?&f%N?dUt0#m16p6c4=D zO+V~Xe7MzkTw)w!9q-RG{+a11seXUd69Gr0!4Z{tL1lX1Z!ZT}7I<;Z%eJA31&oK_R2ujj*=kc1KyH>bVpQQoU5;pi~j z*NO3rHXgc7L983FEfOAr@zutOLebRMr{#1)#F=htLJi8q{xHIvveL;QfUyc$jE|GQ zW7b(EEu&^v2&Q9iZJuRv&lAJk857nr)MZro7B{3rFqaOWRjx6cU6xp9M%FzBQkg`3|*|$L3_7vzIOMR1hk$r`1tc zXm_n#I}(Uso%43$k~5s|93C_`zZ_#9&^&4{-Iwv6Z9VE^drrK9G|CyCaDB$>f1-v4 za^$>H%}#5*BWG8!n*Vm{v_nz3RS$Y$3Im(q;Hi>G20Uu}oV{?WYo954-ZjTD@q>8+ zXXD1|jUa4$p{QPCAv)K34AWyKYQ&K~Wo$Ax;=?GJ@nfRk>V1Ab#F{~Yx zzW)EdgQtYKV|gi&_~yb9Op)~UsPlfVKe^*Tc{sfS!C1-96lRhHffiXYu-`drAOMh)`0yGx(ck*mnE$1>$Ko8bwx3;M`inssaoCHCySr_<-;B}#U3v_r0X!%_;v zZJmn+WY2eQ&35#IeNTTk$+J!9AgQSEOv#ef)3KWJoN=4+p`pi7@PH$*U9tY=^+}NjAwb*iS9mw&=Bz*HJs;e zSek^t?Z2yV4Fm5k1Sg2hRoml*{0Yy@{#VxdOPq5p*ZprBQi~IwJ$&_naOkf4x1M?! zYos|)q0e8k&QZ1;*9%>izL3?)?!dDa%*=;Uo|YO7zCOhox;1LNCrT!3Y|__u2_xaY zE#y=7uEIW5%mlNC>9qvcWs%Q zy`(V?Ypr?P%ATB!2Q$#!j~yQ$?GhWf9qfn`q$ezMHy4AanT@^qF@3a%9FQE8nc=7y5t_uiYTeFH=CjRMFwEsHtl7UjP$nh54WpwJuLR|75QB*YW@zICR#^a}ndpU{DyC7(Nw7J;%a6 z_eus%RfZrYvi4?<((5xAG$$Ce*>}jf2Hpx>bk>TmPwO`;MO)AX9~tn-`_)L1{}RWE z42$cByI+8E9gY+6dqYuOLCnpo!DYcaYw(~2nkjyx|}qFG;SBEKZ=Qx1LXdey(E z3wLmEL98B9@H;f552(0z!?YPfhE|7pc&ZJ82zZ{+5`3f*PZN2S_dqFKd31a&noW7^ zVVG)z7qvg~^_(qH&;ObLuV^AHj%!r75`1JB7>Dzp zZfU|{a~Ign#%WTl-LP^D8kFbUwS{Ctw=jA0veO0ol!ZP`_KI&Qu%mW}C~xK+2*pLE*G zh5FbaF$9|>{XyvUfW=Y`SB;&i#vV(qaB-|*u_bhN1Y^zERvGNaDs_~*(OI+nHE-8r zkQ{NnWaIWlaiLzX9=_!?U**7-d%DvTT4<4u5%(H*y(CPH0q-P~{Xf^A{-XcIy!w5E z2iW}EhYFbJC1rN^uy#H(Hpq(o@?|-%b zT+n~kZ~9xV|AGFm`n~?&=zk6LpZMGJFCa&Kt$~3CW0cGWTa|H$D>>-CS<=({u+mz>GI%zG1G$CJH*JbL(qtq-xOdhFrd|dUzb?j8oU@K1(ius%;M9zz3}My= z0=Y}#=Wh8Hk<^@M`gdWCUVA}ot5#A!7ff`&4KH2zzbI$=-I#dx(VQ4n7_({T5H z&Q+P*!clKk*)Jp7()01zOL7TVof~9kx$$=UW{IK6Ek8a!0ScEsrMw}Pf1Y(q72jHB zv?*%sT5I;@XYf?@r7n++UegUu9Jv0-$NKq%p!L=>CdC1cDJHp+Vr}tf77WgpmMaX#CblN z2SKSL&mOcuT+jEsp?KmXxH33n`z5WxLoyd^kq{5;*Gkbb(R+{QCt`00XmMo@rAdyp z4wM!1EIlMY#TN0dih=VMK&@K186~LoKI=|I*;qkZ@89&Ob+>swH{-v>O?u{AHNZ;q zDXhdl&_ba(;QEpb8|_s1l=Vhj+Z+h>nH`dgEt4iPoUqa|DbBs;D46^_v6qU~#DuNeGduV|VhXJgQDONsfMe*vA{j7o%}gFJ)X1OYd#eU(=b!j_+?dr{ zp4gZ`+0f7oH!PfhTZy;}C+EE359BRSB+)qyR#sk9Y97t;@EZ?j8`928nH1wTC9CN z0qd_lYod&*8^&KG$?QK@wh34t-?z^+)iCFmcpOs6OSBSt^!NQV-|`XO^0k}S*^`C& zPTi7a_XpL?ZCx$GAvDDM`=Qw#2SAW0`nNh6rqZ@favYlwx5kACryf$F%H?nvclX?r z&X3pj(L*E_1k6qs;>1cvcztiNG@x{`@Y4tFmTZI=WkyV>qu_J}K`7bdi3Qd< z%w-MMWbF;t_KAxkXM&Sva{pebPio1ew~IE;;EaRKQOH83Zv-w>>v}_rQPEF_c7Sy( z+^1^a#v!Es^Wnm%{E2EQC)%A@kFFr{p7_X8`%COXipGHNW8vLPV2KYh%X>ZU+r6nY z@tt?U`^MFK#~=A#ukvA=Lv%pCR~C?Y*y^{e*c_k=!c{#22Sc`B^1}X6PYYxp)&ZG@ zZGXxP%K|DRULEm!CfTbz<5!tv%^_ErWDS3+ebxRiZ%Mz^)&o7;fqFWiwgIrTGX@!w zb$%L=065~8MI^tC=%0`H=dm$?W3N_?{5TsU(1#AlzibBju>jxyIm0a*sD}Edx)$IJ zuCn18fYI6ho1G(f&92Zx6o_iWE*Nt7X5*P%cokWFLDE zd3Ntab};-zsnDq!(__AINIXw)ub$02rVEPzd-4C;}7%N&uyR zGC(yb1<(oT0(1ku0(tKP_Innf{{gtu%NyRRkwbD$}b+6wh7Q84xTh8T<)N z&r2dip8B=Qh~55oO=!bN$%R{{WeUlP)y0Y%bc$HnrqCRPh1}XEzhqFjm_aN$xYPBr z;WZsY3(-<AdFGT-#(v zH+g=tPie~#=DhatS`BUA3%vmWw?^SIb@BdK^n4MUyl`(lCL+US(kFR*e6$qz1K8J+ zgmfs!3uuj>`VOU3DTse&kH+BK$4pZoBg4fe7bQCAp=1l)Qo`lRdbHlFo|mEhz7v`F z#IKJb1Pcu%Bqe)nRa5Xxv_{KRMj_MJkX<~lPU2brD>i3E`By=>M7SB6ruih8;Q@wBBqDeO^rDdcdDQ?qd_;Ja@!Dr zmpLZG`|4xn-b%qy732v76h1SR$JYaTb_9qy97T>UB*%GWP8b-A~$Hq(Pwvu#CQaCpexVA~Bwg+S4vzuSs-ym2C@!ECQk zC~8X~G;)ZI>7=S5C0!9m-y%iA1 zEE-y!sqDY0*M}Z%J#R`PjQ9=_F9SNu?hqv9IFI95u@7Xq?5}=@pp2U07;m^2%=B2h+jvdi;S(=uf0phQlE^udETu^@ zaLDM&T{Tp=QdJx4C|+QdBZGB41X=Knt*D*CfZ~-;BlwTs;iM)fI#Sk6yVJo|87MgT zD)@vW`E0$i2X);jiEfwRZ5uXuL-lLQdBtmLd-lS|LprN5RGKrYh8aov&f6$oJgMtp z_`@THYVVZj7xJ44#$QH7acIqmMhWkK<-z6jAbogl8n%0}>8am;;QgW_N2~cp^2rJ* z8hM?M5oNG#5@Xf#ia zk33ZrxcS&Lza8-*e<#XR#N#5pgA;$Cj(b?}rTlK;gSsT<=kpm3xN5Ym!x*$VEl<_n zeM3p0AU#pS&QTrTpuCwL;zR%~d1Ge77}mG_ypp2r_9sEcr06f`-|z$d^%Px=%Ee|A zUNwcUO$QuEZZoF-araOgKQEMOP9I>VTmJr{pbz`~_2jVgg4zRm6rnMSvL<-k(X>V31j}*_DMvNk4V_$v_jO4e)H1y;~zy2>2+%@ky9uJMlGFBqo z6+lLB3~(rptYU-O^HZJj)|m$FGH-S7brXad(~YscUoucHa7m?@-Cygr@u2!tUH7q8 z15@CnnJM1e;$-(-Tkk%wDdqbPAr^R$ZOUe>cvN`jU4UNF+^yGw-nmO}ayNQB&X_%9Cx)Wt#KAAICtu3%EeR1 zPk>h_J9~9F`gFHtpy=U}4}}Cn<|{~obrNR)W8qg9rRNC;1u^_@2W8=Q{Y`y-o& zH7QgK93muS+)9qy1iX@blKTTrSsO3ud$|jdS`d%JTFvG{h~Isb4@!Y_!b4EE8Aob4 z3r0;f@dA2YylZhax5U+GVV|HfPkDn-C@6B+W33?=lApanP;p;l(3h22fnb>!i&j0y zz?Q+SdRkM9oBu0*> zHDSIDdTE)bFNXpCO7de^(D`V8E36{#GgFQ=F3|(`Etd4{%TMUFp_H zY8k&V+=ngbkWEfsK^L5!s^warRtm12*5LVg7~!+CrgiG=%5@lVU>Ku zd~~uOQHE`glc%FhEmKh68pP(eo)c>C0@E4MT&x zMLcALs=jHeX){I6Ef!TZM>G(z?Ctfs>*vCS1?H!?IM9?R`26hUu&8dz{Id(@|T(Hw5mn`kk}ZttOXF ze~b-}L1qsj48wAFby3Q6qu6;pO}G;lu}{5y@_LJu1>-RUX%Qi5r6Lo5O378z|Btz3 z?mm4n=(8_Ph&W-;OtAAPBsI$KM))r~2B4(93F89?Dp1fLP0Y^tZPh;E*55CuowiYR zt5Z#C%CZs^|hGH(x~0} z$Erq!d_vT_mO;#PgQfmkZme?|NHOwtZzTlUg@d1+=hbU{t(}Djw$!nef(#AxWjpnL zVFVhIr?+YMsV=!6@8w;1-rx6`XC;6)_G?IqCyg{-k~~zgXIy<9+2sQt!v2zfc)nU7 zG$65C5zP7+?%LwAwDn$=c{Z=#IRhGw>HW8a z56LXNZ+{xuoev0YQ_L@bCpTVV@`p-Qa%fCHNxmC#_u&{NWutOXsLq-ke0|7%<`!J* zb2j^$BQm(gj9kJMMJ1(KfJ@z-LX_wR%0m<#O)osT&o>_9GFhkjK9PHsVh3^fr)r`?$+CZ3 z2>$wpR9n3u8QDg8OF$xP{eE4prCxfANqMjGu4Z8eO+x>@48Q6|mmrY>u-?&tH!|x-X!ZZ;lk);VTi2&dGB> zA%GDIT>XF|?-vumZlD}1^#mq>GrxEMV$7WXtr+NE2#kic})^0-FL^${h-`19m)O=1P!d(S^p z_!Ss^hhW%gkZP0;;~pzkSC`H#UKHD#;iYsgH*3z=62s%DRHCIesml04er%E`9y7=rYJsG+3-u~3Bv2ol((HD( zv^FXzk}|Z?HRItxBd^3$1j4(Y91?Xw{1u$YD(}4PIf*d*Z{@(cD6OylN3k4;PzQ>E zlyNiu!aLvu=AfWC(mxq4{`ae={?#fn#yYu?VS{$!-!pIJGGAR&R?=riJ7~eeavslDQGWKu%~zfu z@w|Cumru}ILt}hwwH()kmypmyIzes1y{Ya|E}6H7t}Q%)qB5sd*{p8BK>3TIGIv*bY01O+a(3<%?<3JS z#uZQ$-ST0?B7u;@Y_r^alhdP&xTuX5GhI^=q|HFA0gDi<7V{5iy3XVqGGosbhYq(S zxEV(RMw^Gd(Z>kLv!=+%116MloA(~{N$FV9y=ihj^WsOiB`_jCN@ZR=$o|AEIj$a9o2iCFE{e^^9&xC zQ%)D$5wux@c?T<8b{@rxMqbi??T8Mr8LM88Wr&rTfF9@jhpJbbYNsoB7GGrb>3@g# z?-v`SC6rrKXGvx~FYmipXZ$!~kIF1SlW||;i(b+*?-#>Qtu02o+&T*+p1pYGns8&2 zd+HIoEb1CojLrL%cT`c_kz{J+oRl0J5ijtmC|0i5U^+hY9%#J(ICCvLKZ_G)Tf};5~JjC!<*l7bJ%Iyd}uLHWsLK7ys2}>U3LuZTam+g^?@t} z=lF;=Gh-iiCnxed2ug}yKIR$T7k{Qp)Id)UQ}86v(10_bF4dQ)EL2q}MKBxcclnva zmcvq-*bhjR_3{b}N9E^*a=wDb{!3IYcSwts zfmHkqql*c)9U9~9w)lj~FAFFkqw_WBQgEui0|flfQ7o2ju(ce)UfK_DC@gFi7=tJt z=mjvcHhb>K4>l2&<7EMSN9&l}Af(-i6BvdK3*5up);Qs=`h zmeDPPgdRxwr~7Aww1kO&mb!+67<5P$P&ilfp1F<vhBbRj0FX>!+ZLSCN?eN5daZpnnL7O(f!o8x}RM4>B>+r^!$9{u;;X816UtYo}5%{Bp(J2$81Fl@9$fV2yYO= z@Vxh0#0Zv0u?}Y{#pO7f?%sgbO-lSq8NUuv>H^6Y5Ybst~Lpt{BRAX#)NJf1&^&o+x-u(r1*$rJ;OSn85 zNUG=9mpeH%6#i7YQrK17Crjw!lA};reof{fR_*ha>7+b-3+7kP!w?Gbb{(_xeANQA z@fIN)E%?o*F*h~b^mj}qy2)VpuzhhF?TKrmkOaGq0vh#7?~Mg|AH`{-B_o(+oCqoM z=#9IG3t7_EBumYNTEqe*<@-=ZQB${m)KQ)Wxrg-R97Y9iw04C3+~lmuTgx&;9Jx%( z^y#9C)}pAw5C7ka(u%-G@Sm*+fiC=KAHz2Anf$X2;?-xYV*}*@%j545&rG1c%K2NB zzjz_u`^D~%a_{#ea{uiQa{lJ?_wRfC?+@%QCCZ;|8NGIXKChok17!c=Ob8sQe|{o< zJ*_`1A+dexAU)@SKMW&LKF>f5FGYVdj6|6I_6o?=sDHAA6#nBm`t?}_lDGCBzK_2= zC4W9d>n{TWeu#e=kmpaoT>LU1SwMtaHV#Pf1ZI3TX38&Hl<#VB=V%TS%r|YiL<9FB zS<&W%65jnPN~Z0Zu>q$B{#34tBX7=c&DEnzGmW!EB4rd8jD$;Z;vaP4K0HeMmkv08 zk6T~GhS2~&;?}khdk~Ahib4N9D$WC{UAgc5h$H{C?mtJLuVU_3nxP*(T*bt#Ks5QE zV&Yf#*FWkx{t|cA|79#!-~W9)S26J`CDxDe{PPk2JgTd6`9+k(z=oXc0+HF_oP{I-6Q& zUetw{i%T|3-R5AK#BiagI{Xg7s((~EvQ>Hw>0;2vsW zaY@f|X5=tznX;W|cG^xhy74o#hpil@$9=w{y$;`M^@ORjnesibG#6PxY!p9Q5FUoT z=T0E6C{Nk<)}eK^PTmmZpBvh7&=_Aq`1Z(U_uJw5S`SvCPx1B$AEnE!kx^_hnLirL0{+LLHbe=wU*`o~<==B#ookN2YoOfSetav$c@kP^ z@*KH Date: Thu, 24 Sep 2020 19:09:36 -0400 Subject: [PATCH 730/772] add "var" for Java 11 (https://github.com/processing/processing4/issues/114) --- generate/keywords_base.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/generate/keywords_base.txt b/generate/keywords_base.txt index a88aa2737..7757bb46f 100755 --- a/generate/keywords_base.txt +++ b/generate/keywords_base.txt @@ -252,6 +252,7 @@ double KEYWORD5 double float KEYWORD5 float int KEYWORD5 int long KEYWORD5 long +var KEYWORD5 # Flow structures From 447ab9cb4140bace81748357a453d0456e6f798c Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 9 Oct 2020 10:19:03 -0700 Subject: [PATCH 731/772] Update download.html Download for P4a2 --- content/static/download.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/content/static/download.html b/content/static/download.html index a684aaf5b..03f73d291 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -264,6 +264,16 @@

          Stable Releases

          Pre-Releases

            + +
          • + 4.0 alpha 2 + (15 September 2020) + Win 64 + Linux 64 + Mac OS X +
          • + + Please become a member today to help us continue to provide access to quality, free, open-source software. + ...

            -

            - If membership isn't your thing, but you want to help, we love donations! -

            - -

            - -

            -

            - -

            - -

            -

            - -

            - -

            -

            - -

            - -

            -

            -

            From 9e9777957ae5c5ef78468942b064f354582f1fa6 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 9 Oct 2020 11:01:15 -0700 Subject: [PATCH 735/772] Update support.html Improvements to the new Support page text --- content/static/support.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index b1ace80b0..670034980 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,12 +1,12 @@ -

            Processing is free, open-source software created by volunteers and through the support of the Processing Foundation. Your donation supports our worldwide community. We need your help!

            +

            Processing is free, open-source software created by volunteers and through the support of the non-profit Processing Foundation. Your donation supports our worldwide community.

            - ... + We believe software and the tools to create software should be accessible to everyone. The Processing Software has always been free and open-source and supported by its community. We're currently working on Processing 4 and we need your help! Donations of any amount help us to reach our goal of sharing and creating excellent software. We can't do this without your support.

            Your donation supports: @@ -27,8 +19,6 @@

            Education Institution

          -
          -

          The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus".

          diff --git a/css/style.css b/css/style.css index c392ef25a..65fd77ba4 100755 --- a/css/style.css +++ b/css/style.css @@ -1321,7 +1321,7 @@ div.examples-nav img { position: relative; top: 11px; } .donate-card h4 { line-height: 1.3; - margin: 0 0 0.5em 0; + margin: 0 0 0 0; color: #2c7bb5; } From 26d78a65ba3401bc138131efe399c064d60e928b Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 13 Oct 2020 20:39:26 -0700 Subject: [PATCH 737/772] Update support.html Embed the Donorbox on the page --- content/static/support.html | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index 9e2ef35e3..14b44d9be 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,6 +1,12 @@ -

          Processing is free, open-source software created by volunteers and through the support of the non-profit Processing Foundation. Your donation supports our worldwide community.

          + -

          +

          + We need your help! You can support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events. +

          + + + + -

          +

          The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus". -

          +

          From a34aaa238bf21ee17a7d95c279039f69c4b4bff6 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 13 Oct 2020 20:44:05 -0700 Subject: [PATCH 738/772] Update support.html --- content/static/support.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index 14b44d9be..b41d23d11 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,8 +1,8 @@ -

          +

          We need your help! You can support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events. -

          +

          @@ -24,7 +24,8 @@

          Donate

        • Community Advocacy and Events

        --> +

        -

        +

        The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus". -

        +

        From ffb9f4f2cc9129333f9927e9815e3fcd3e272054 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Tue, 13 Oct 2020 20:51:09 -0700 Subject: [PATCH 739/772] Update support.html --- content/static/support.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index b41d23d11..f54c48531 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -4,7 +4,9 @@

        We need your help! You can support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events.

        - +
        + +
        -

        - The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus". + The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus."

        From 1bc42a220dffeb14b029b992e0d684c579159868 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Wed, 14 Oct 2020 11:08:51 -0700 Subject: [PATCH 740/772] Update support.html --- content/static/support.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index f54c48531..57fbbf8c3 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,7 +1,7 @@

        - We need your help! You can support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events. + We need your help! You can support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events.

        @@ -28,5 +28,5 @@

        Donate

        -->

        - The Processing Foundation was founded in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus." + The Processing Foundation was established in 2012 after more than a decade of work with the Processing software. The Foundation’s mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities. Our goal is to empower people of all interests and backgrounds to learn how to program and make creative work with code, especially those who might not otherwise have access to these tools and resources. You can read more about the history of Processing in the short essay "A Modern Prometheus."

        From 22b02c6eaad232274de7a0fdd7b1a2dc4c6254f1 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 30 Nov 2020 09:18:09 -0500 Subject: [PATCH 741/772] Add Processing2JS tool to contributions. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 193b96c88..dcab8fff5 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 263 +# Next ID: 264 # Increment after assigning ID to new contribution [Library : 3D] @@ -332,6 +332,7 @@ 233 \ https://github.com/jaewhyun/GettingStarted/releases/download/latest/GettingStarted.txt 234 \ https://github.com/jaewhyun/ReferenceTool/releases/download/latest/ReferenceTool.txt 242 \ https://jwilder4690.github.io/tools/ArtStation/ArtStation.txt +263 \ http://jonathan.dahlberg.media/processing2js/Processing2JSTool.txt [Mode : ] 070 \ http://bezier.de/processing/modes/CoffeeScriptMode.txt From 4dfdd3543f123c18464f8b9128e47f6f547172c9 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 7 Dec 2020 11:38:13 -0800 Subject: [PATCH 742/772] Update support.html Changes for 2020 fundraiser --- content/static/support.html | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/content/static/support.html b/content/static/support.html index 57fbbf8c3..bddd83072 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,12 +1,30 @@ -

        + + +

        + SupportP5 is a month-long online fundraising campaign to support and help sustain our software projects, our Fellowship program, Processing Community Day, and our other education initiatives. This campaign ends at midnight on December 31st Pacific Standard Time. +

        + +

        + Visit our SupportP5 page to learn more about the donation rewards.

        +

        + If you would like to give without receiving a reward, please use the Custom Amount form field. These donations are 100% tax-deductible in the US to the extent provided by law. +

        + +
        + +
        + + +
        diff --git a/templates/template.html b/templates/template.html index 334c27412..f97acc24c 100755 --- a/templates/template.html +++ b/templates/template.html @@ -44,13 +44,12 @@ - + From 392ccc4e8b5ca1085db2a7e39fb7474f8b4522a5 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 7 Dec 2020 13:21:19 -0800 Subject: [PATCH 744/772] Update style.css --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index 65fd77ba4..a36d9542d 100755 --- a/css/style.css +++ b/css/style.css @@ -249,7 +249,7 @@ a.large-link:before { #header { width: 900px; height: 106px; - margin-bottom: 30px; /* was 30px, but changed to 0 when ribbon placed below header */ + margin-bottom: 0px; /* was 30px, but changed to 0 when ribbon placed below header */ overflow: hidden; background: #0c2033 url(../img/processing-web.png) center center no-repeat; background-position: bottom; From 797aee844714ff3ad894065916ff2f2ce5901e03 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Mon, 7 Dec 2020 13:25:18 -0800 Subject: [PATCH 745/772] More fundraiser 2020 updates/corrections --- java_generate/templates/generic.template.html | 6 +++--- java_generate/templates/index.template.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index be8235926..77ee55efe 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -44,12 +44,12 @@

        - + From da459f462e5b20ae7030fa4ec861f2130952db1c Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Wed, 16 Dec 2020 10:49:19 -0500 Subject: [PATCH 746/772] Add wellen Library to sources. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index dcab8fff5..1fd6d3a20 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 264 +# Next ID: 265 # Increment after assigning ID to new contribution [Library : 3D] @@ -225,6 +225,7 @@ 219 \ https://teddavis.org/xyscope/download/XYscope.txt 254 \ http://www.kramann.info/ComposingForEveryone.txt 260 \ https://github.com/sphaero/procmod/releases/latest/download/procmod.txt +264 \ https://github.com/dennisppaul/wellen/releases/latest/download/wellen.txt [Library : Utilities] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From ac7f2a500433402540d53ec3f3d45e1304f1e71e Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 28 Dec 2020 13:08:19 -0500 Subject: [PATCH 747/772] Add Coding Art book examples. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index 1fd6d3a20..28887005e 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 265 +# Next ID: 266 # Increment after assigning ID to new contribution [Library : 3D] @@ -305,6 +305,7 @@ 165 \ https://processing.org/handbook/handbook_2e.txt 166 \ https://processing.org/books/gswp_2e.txt 205 \ http://mad4j.github.io/book-mdpc/book-mdpc.txt +265 \ https://codingart-book.github.io/examples/CodingArtBookExamples.txt [Examples : ] 194 \ http://damellis.github.io/wovns-processing-examples/WOVNS.txt From b997006733b64104938b918bce04ea12e3a999fc Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 1 Jan 2021 00:26:30 -0800 Subject: [PATCH 748/772] Update support for end of 2020 fundraiser --- content/static/support.html | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/content/static/support.html b/content/static/support.html index bddd83072..2a8f77f05 100644 --- a/content/static/support.html +++ b/content/static/support.html @@ -1,30 +1,28 @@ - -

        - SupportP5 is a month-long online fundraising campaign to support and help sustain our software projects, our Fellowship program, Processing Community Day, and our other education initiatives. This campaign ends at midnight on December 31st Pacific Standard Time. + We need your help! Please support Processing by making a donation to the Processing Foundation. Your donation contributes to software development, education resources like code examples and tutorials, Fellowships, and community events.

        -

        + + + -

        + -
        + - -
        + From be144f54b8b12d36dd1b8e4950d61cad2e5a547e Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 1 Jan 2021 00:32:06 -0800 Subject: [PATCH 750/772] CSS adjust for ribbon removal --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index a36d9542d..65fd77ba4 100755 --- a/css/style.css +++ b/css/style.css @@ -249,7 +249,7 @@ a.large-link:before { #header { width: 900px; height: 106px; - margin-bottom: 0px; /* was 30px, but changed to 0 when ribbon placed below header */ + margin-bottom: 30px; /* was 30px, but changed to 0 when ribbon placed below header */ overflow: hidden; background: #0c2033 url(../img/processing-web.png) center center no-repeat; background-position: bottom; From 2ee5001399bb9674d2bd38e6db553b8d32d2ec02 Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 1 Jan 2021 00:35:03 -0800 Subject: [PATCH 751/772] Reference donate ribbon remove --- java_generate/templates/generic.template.html | 4 ++-- java_generate/templates/index.template.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java_generate/templates/generic.template.html b/java_generate/templates/generic.template.html index 77ee55efe..d8858a537 100644 --- a/java_generate/templates/generic.template.html +++ b/java_generate/templates/generic.template.html @@ -44,12 +44,12 @@

        -
        + -
        + From b8f6f412087f288549f9264214c9d59fb4382f8b Mon Sep 17 00:00:00 2001 From: Casey Reas Date: Fri, 1 Jan 2021 00:37:33 -0800 Subject: [PATCH 752/772] Update nav.web.template.html --- java_generate/templates/nav.web.template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java_generate/templates/nav.web.template.html b/java_generate/templates/nav.web.template.html index 3a6d60507..43f41939c 100644 --- a/java_generate/templates/nav.web.template.html +++ b/java_generate/templates/nav.web.template.html @@ -13,7 +13,7 @@ Tutorials
        Examples
        - Books
        + Books

        Overview
        From b7c4a5a5723b6a5e99b9255fbc1a8e00c5cb9b82 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sun, 17 Jan 2021 22:05:21 -0500 Subject: [PATCH 753/772] add 4.0a3 to the download page --- content/static/download.html | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/content/static/download.html b/content/static/download.html index ceaeea186..7b62c601e 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -263,14 +263,22 @@

        Stable Releases

        Pre-Releases

        The changes document covers incremental updates between 4.x releases, and is especially important to read for pre-releases.

        From 95deef51a6a12a9c1e928c2b608a84cac85e0fc9 Mon Sep 17 00:00:00 2001 From: Elie Zananiri Date: Mon, 21 Jun 2021 17:04:40 -0400 Subject: [PATCH 765/772] Add Pd4P3 contribution. --- contrib_generate/sources.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib_generate/sources.conf b/contrib_generate/sources.conf index aa5dd33b0..24dc54600 100644 --- a/contrib_generate/sources.conf +++ b/contrib_generate/sources.conf @@ -1,4 +1,4 @@ -# Next ID: 271 +# Next ID: 272 # Increment after assigning ID to new contribution [Library : 3D] @@ -231,6 +231,7 @@ 254 \ http://www.kramann.info/ComposingForEveryone.txt 260 \ https://github.com/sphaero/procmod/releases/latest/download/procmod.txt 264 \ https://github.com/dennisppaul/wellen/releases/latest/download/wellen.txt +271 \ https://www.robertesler.com/software/Pd4P3.txt [Library : Utilities] 001 \ https://github.com/remixlab/proscene/releases/download/latest/proscene.txt From f454a245eb0a3f59eae519257eb6ff7caaf0b30f Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Thu, 24 Jun 2021 17:52:32 -0400 Subject: [PATCH 766/772] updating the download page for 4.0a5 --- content/static/download.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/static/download.html b/content/static/download.html index d9b76b6ba..bd6d04d31 100644 --- a/content/static/download.html +++ b/content/static/download.html @@ -265,6 +265,14 @@

        Pre-Releases

        @@ -42,6 +42,13 @@

        Download Processing. Process

        Stable Releases

        +
      • + 4.0b1 + (9 August 2021) + Windows 64 + Linux 64 + macOS +
      • 3.5.4 (17 January 2020) @@ -273,6 +280,7 @@

        Pre-Releases

        Mac OS X
      • + + Processing Documentation ========== From 76be09a0f538ddad43cf758ba987b47a75d03ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20de=20Courville?= Date: Mon, 9 Jan 2023 14:12:50 +0100 Subject: [PATCH 772/772] Update README.md strikethrough readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b0e0bb8da..60a674da3 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@ Processing Documentation ========== -This is the official source code for the Processing reference, examples, tutorials, and [processing.org](http://processing.org) web site. +~~This is the official source code for the Processing reference, examples, tutorials, and [processing.org](http://processing.org) web site.~~ -If you have found an error in the Processing reference, examples, tutorials, or website you can file it here under the ["issues" tab](https://github.com/processing/processing-docs/issues). +~~If you have found an error in the Processing reference, examples, tutorials, or website you can file it here under the ["issues" tab](https://github.com/processing/processing-docs/issues).~~ -The [processing](https://github.com/processing/processing) repository contains the source code for Processing itself. (Please use that link to file issues regarding the Processing software.) +~~The [processing](https://github.com/processing/processing) repository contains the source code for Processing itself. (Please use that link to file issues regarding the Processing software.)~~