Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
purr-data
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jonathan Wilkes
purr-data
Commits
04470268
Commit
04470268
authored
9 years ago
by
Jonathan Wilkes
Browse files
Options
Downloads
Patches
Plain Diff
add GUI messaging spec
parent
e14af2db
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+79
-5
79 additions, 5 deletions
README.md
with
79 additions
and
5 deletions
README.md
+
79
−
5
View file @
04470268
...
@@ -4,7 +4,13 @@ maintainer: Ivica Bukvic <ico@vt.edu>
...
@@ -4,7 +4,13 @@ maintainer: Ivica Bukvic <ico@vt.edu>
maintainer: Jonathan Wilkes
<jancsika@yahoo.com>
maintainer: Jonathan Wilkes
<jancsika@yahoo.com>
[
test link
](
#installation-guide
)
[
One Paragraph Overview
](
#one-paragraph-overview
)
[
Flavors of Pure Data
](
#flavors-of-pure-data
)
[
Three Paragraph Overview
](
#three-paragraph-overview
)
[
Goals
](
#goals
)
[
Installation Guide
](
#installation-guide
)
[
Contributor Guide
](
#contributor-guide
)
[
Core Pd Notes
](
#core-pd-notes
)
### One Paragraph Overview
### One Paragraph Overview
...
@@ -13,7 +19,7 @@ create software graphically by drawing diagrams instead of writing lines of
...
@@ -13,7 +19,7 @@ create software graphically by drawing diagrams instead of writing lines of
code. These diagram shows how data flows through the software, displaying on
code. These diagram shows how data flows through the software, displaying on
the screen what text-based languages require you to piece together in your mind.
the screen what text-based languages require you to piece together in your mind.
###
Distribution
s of Pure Data
###
Flavor
s of Pure Data
There are currently three main distributions of Pure Data:
There are currently three main distributions of Pure Data:
...
@@ -43,7 +49,7 @@ wearable technology, motor systems, lighting rigs, and other equipment. Pd is
...
@@ -43,7 +49,7 @@ wearable technology, motor systems, lighting rigs, and other equipment. Pd is
also suitable for learning basic multimedia processing and visual programming
also suitable for learning basic multimedia processing and visual programming
methods, as well as for realizing complex systems for large-scale projects.
methods, as well as for realizing complex systems for large-scale projects.
###
Pd-l2ork
Goals
### Goals
Pd-l2ork has the following goals:
Pd-l2ork has the following goals:
...
@@ -68,7 +74,7 @@ http://l2ork.music.vt.edu/main/?page_id=56
...
@@ -68,7 +74,7 @@ http://l2ork.music.vt.edu/main/?page_id=56
Then follow the steps outlined here:
Then follow the steps outlined here:
http://l2ork.music.vt.edu/main/?page_id=56#install-dev
http://l2ork.music.vt.edu/main/?page_id=56#install-dev
### Contributor
's
Guide
### Contributor Guide
Contributing is easy:
Contributing is easy:
...
@@ -117,7 +123,7 @@ Here are some of the current tasks:
...
@@ -117,7 +123,7 @@ Here are some of the current tasks:
recent link...):
recent link...):
http://sourceforge.net/p/pure-data/svn/HEAD/tree/tags/externals/pureunity/pureunity-0.0/
http://sourceforge.net/p/pure-data/svn/HEAD/tree/tags/externals/pureunity/pureunity-0.0/
###
Project "Underview" (Implementation and Code Style)
###
Core Pd Notes
The following is adapted from Pd Vanilla's original source notes. (Found
The following is adapted from Pd Vanilla's original source notes. (Found
in pd/src/CHANGELOG.txt for some reason...)
in pd/src/CHANGELOG.txt for some reason...)
...
@@ -262,3 +268,71 @@ z other
...
@@ -262,3 +268,71 @@ z other
PD-GUI:
PD-GUI:
t TK front end
t TK front end
### GUI Messaging Specification
#### GUI interface
Purpose: a set of functions to communicate with the gui without putting
language-specific strings (like tcl) into the C code. The new interface is a
step toward separating some (but not all) of the GUI logic out from the C code.
Of course the GUI can still be designed to parse and evaluate incoming messages
as commands. But the idiosyncracies of the GUI toolkit can be limited to
either the GUI code itself or to a small set of modular wrappers around
sys_vgui.
The public interface consists of the following:
```
c
gui_vmess
(
const
char
*
msg
,
const
char
*
format
,
...);
```
where const char
*
format consists of zero or more of the following:
*
f - floating point value (t_float)
*
i - integer (int)
*
s - c string (char
*
)
*
x - hexadecimal integer value, with a precision of at least six digits.
(hex value is preceded by an 'x', like "x123456"
For some of Pd's internals like array visualization, the message length may
vary. For these _special_ cases, the following functions allow the developer
to iteratively build up a message to send to the GUI.
```
gui_start_vmess(const char *msg, const char *format, ...); // send a message to the gui without terminating it
gui_start_array(); // start an array
gui_f(t_float float); // floating point array element (t_float)
gui_i(int int); // integer array element (int)
gui_s(const char *cstring); // c string array element
gui_end_array(); // end an array
gui_end_vmess(); // terminate the message
```
The above will send a well-formed message to the GUI, where the number of array
elements are limited by the amount of memory available to the GUI. Because of
the complexity of this approach, it may _only_ be used when it is necessary to
send a variable length message to the GUI. (Some of the current code may
violate this rule, but that can be viewed as a bug which needs to get fixed.)
The array element functions gui_f, gui_i, and gui_s may only be used inside an
array. Arrays may be nested, but this adds complexity and should be avoided if
possible.
#### Current Wrappers (private)
--------------------------
The public functions above should fit any sensible message format.
Unfortunately, Pd's message format (FUDI) is too simplistic to handle arbitrary
c-strings and arrays, so it cannot be used here. (But if it happens to improve
in the future it should be trivial to make a wrapper for the public interface
above.)
The current wrapper was made with the assumption that there is a Javascript
Engine at the other end of the message. Messages consist of a selector,
followed by whitespace, followed by a comman-delimited list of valid Javascript
primitives (numbers, strings, and arrays). For the arrays, Javascript's array
notation is used. This is a highly idiosyncratic, quick-and-dirty approach.
But the point is that the idiosyncracy exists in a single file of the source
code, and can be easily made more modular (or replaced entirely by something
else) without affecting _any_ of the rest of the C code.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment