[PD-cvs] SF.net SVN: pure-data: [9569] trunk/externals

eighthave at users.sourceforge.net eighthave at users.sourceforge.net
Wed Mar 12 05:20:55 CET 2008


Revision: 9569
          http://pure-data.svn.sourceforge.net/pure-data/?rev=9569&view=rev
Author:   eighthave
Date:     2008-03-11 21:20:55 -0700 (Tue, 11 Mar 2008)

Log Message:
-----------
added first object for a new library to support Apple-specific hardware and software functions, like screen brightness

Added Paths:
-----------
    trunk/externals/apple/
    trunk/externals/apple/Makefile
    trunk/externals/apple/brightness-help.pd
    trunk/externals/apple/brightness.pd
    trunk/externals/apple/iodisplay-help.pd
    trunk/externals/apple/iodisplay.c
    trunk/externals/apple/iodisplay.libs

Added: trunk/externals/apple/Makefile
===================================================================
--- trunk/externals/apple/Makefile	                        (rev 0)
+++ trunk/externals/apple/Makefile	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1,17 @@
+TARGET := $(shell pwd | sed 's|.*/\(.*\)$$|\1|')
+EXTERNALS_ROOT := $(shell pwd | sed 's|^\(/.*externals\).*|\1|')
+
+default: 
+	make -C $(EXTERNALS_ROOT) $(TARGET)
+
+install:
+	make -C $(EXTERNALS_ROOT) $(TARGET)_install
+
+clean:
+	make -C $(EXTERNALS_ROOT) $(TARGET)_clean
+
+test_locations:
+	make -C $(EXTERNALS_ROOT) test_locations
+
+etags:
+	etags *.[ch] ~/code/pure-data/trunk/pd/src/*.[ch] /usr/include/*.h /usr/include/sys/*.h

Added: trunk/externals/apple/brightness-help.pd
===================================================================
--- trunk/externals/apple/brightness-help.pd	                        (rev 0)
+++ trunk/externals/apple/brightness-help.pd	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1,11 @@
+#N canvas 293 113 450 300 10;
+#X msg 127 72 bang;
+#X floatatom 127 186 5 0 0 0 - - -;
+#X obj 149 97 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 6800 1;
+#X floatatom 162 121 5 0 0 0 - - -;
+#X obj 127 155 brightness;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 4 0 1 0;

Added: trunk/externals/apple/brightness.pd
===================================================================
--- trunk/externals/apple/brightness.pd	                        (rev 0)
+++ trunk/externals/apple/brightness.pd	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1,11 @@
+#N canvas 0 22 454 304 10;
+#X obj 135 113 iodisplay brightness;
+#X obj 135 141 route brightness;
+#X obj 131 49 inlet;
+#X obj 135 184 outlet;
+#X obj 132 79 route float bang;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 0 0;

Added: trunk/externals/apple/iodisplay-help.pd
===================================================================
--- trunk/externals/apple/iodisplay-help.pd	                        (rev 0)
+++ trunk/externals/apple/iodisplay-help.pd	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1,13 @@
+#N canvas 293 113 462 312 10;
+#X msg 127 72 bang;
+#X obj 149 97 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 5800 1;
+#X floatatom 162 121 5 0 0 0 - - -;
+#X obj 127 155 iodisplay brightness;
+#X obj 132 191 route brightness;
+#X floatatom 131 225 5 0 0 0 - - -;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;

Added: trunk/externals/apple/iodisplay.c
===================================================================
--- trunk/externals/apple/iodisplay.c	                        (rev 0)
+++ trunk/externals/apple/iodisplay.c	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1,124 @@
+/* --------------------------------------------------------------------------*/
+/*                                                                           */
+/* control the iodisplay of the display on Apple Mac OS X                   */
+/* Written by Hans-Christoph Steiner <hans at at.or.at>                         */
+/*                                                                           */
+/* Copyright (c) 2008 Free Software Foundation                               */
+/*                                                                           */
+/* This program is free software; you can redistribute it and/or             */
+/* modify it under the terms of the GNU General Public License               */
+/* as published by the Free Software Foundation; either version 2            */
+/* of the License, or (at your option) any later version.                    */
+/*                                                                           */
+/* See file LICENSE for further informations on licensing terms.             */
+/*                                                                           */
+/* This program is distributed in the hope that it will be useful,           */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
+/* GNU General Public License for more details.                              */
+/*                                                                           */
+/* You should have received a copy of the GNU General Public License         */
+/* along with this program; if not, write to the Free Software Foundation,   */
+/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+/*                                                                           */
+/* --------------------------------------------------------------------------*/
+
+#include <IOKit/graphics/IOGraphicsLib.h>
+#include <ApplicationServices/ApplicationServices.h> 
+#include <m_pd.h>
+
+#define DEBUG(x)
+//#define DEBUG(x) x 
+
+/*------------------------------------------------------------------------------
+ *  CLASS DEF
+ */
+
+static t_class *iodisplay_class;
+
+typedef struct _iodisplay {
+    t_object            x_obj;
+    t_float             parameter_value;
+    io_service_t        io_service;
+    CGDirectDisplayID   target_display;
+    t_symbol*           parameter;
+} t_iodisplay;
+
+/*------------------------------------------------------------------------------
+ * IMPLEMENTATION                    
+ */
+
+static void iodisplay_output(t_iodisplay* x)
+{
+	DEBUG(post("iodisplay_output"););
+    CFStringRef cfs_parameter;
+    CGDisplayErr err;
+    t_atom output_atom;
+
+    cfs_parameter = CFStringCreateWithCString(kCFAllocatorDefault,
+                                              x->parameter->s_name, 
+                                              kCFStringEncodingASCII);
+     err = IODisplayGetFloatParameter(x->io_service, kNilOptions, 
+                                     cfs_parameter, &(x->parameter_value));
+	if (err != kIOReturnSuccess)	
+        pd_error(x,"[iodisplay]: couldn't get %s value", x->parameter->s_name);
+
+    SETFLOAT(&output_atom, x->parameter_value);
+    outlet_anything(x->x_obj.ob_outlet, x->parameter, 1, &output_atom);
+}
+
+
+static void iodisplay_float(t_iodisplay* x, t_float f)
+{
+	DEBUG(post("iodisplay_float"););
+    CFStringRef cfs_parameter;
+    CGDisplayErr err;  
+    
+	if (f < 0.) x->parameter_value = 0.;
+    else if (f > 1.) x->parameter_value = 1.;
+    else x->parameter_value = f;
+    
+    cfs_parameter = CFStringCreateWithCString(kCFAllocatorDefault,
+                                              x->parameter->s_name, 
+                                              kCFStringEncodingASCII);
+	err = IODisplaySetFloatParameter(x->io_service, kNilOptions, 
+                                     cfs_parameter, x->parameter_value);  
+	if (err != kIOReturnSuccess)
+        pd_error(x,"[iodisplay]: couldn't set %s", x->parameter->s_name);
+}
+
+
+static void iodisplay_free(t_iodisplay* x)
+{
+	DEBUG(post("iodisplay_free"););
+}
+
+
+static void *iodisplay_new(t_symbol *s) 
+{
+	DEBUG(post("iodisplay_new"););
+	t_iodisplay *x = (t_iodisplay *)pd_new(iodisplay_class);
+
+    x->target_display = CGMainDisplayID();
+    x->io_service = CGDisplayIOServicePort(x->target_display);
+    x->parameter = s;
+
+    symbolinlet_new(&x->x_obj, &x->parameter);
+	outlet_new(&x->x_obj, &s_anything);
+	
+	return (x);
+}
+
+void iodisplay_setup(void) 
+{
+	iodisplay_class = class_new(gensym("iodisplay"), 
+                              (t_newmethod)iodisplay_new,
+                              (t_method)iodisplay_free,
+                              sizeof(t_iodisplay), 
+                              CLASS_DEFAULT, 
+                              A_DEFSYMBOL, 0);
+
+	/* add inlet datatype methods */
+	class_addbang(iodisplay_class,(t_method) iodisplay_output);
+	class_addfloat(iodisplay_class,(t_method) iodisplay_float);
+}

Added: trunk/externals/apple/iodisplay.libs
===================================================================
--- trunk/externals/apple/iodisplay.libs	                        (rev 0)
+++ trunk/externals/apple/iodisplay.libs	2008-03-12 04:20:55 UTC (rev 9569)
@@ -0,0 +1 @@
+-framework IOKit


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list