You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2011/09/29 09:44:26 UTC
svn commit: r1177194 [2/2] - in /incubator/celix/trunk: ./ examples/
examples/echo_service/client/
examples/osgi-in-action/chapter01-greeting-example/client/
examples/osgi-in-action/chapter01-greeting-example/client/MANIFEST/
examples/osgi-in-action/ch...
Added: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c?rev=1177194&view=auto
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c (added)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c Thu Sep 29 07:44:24 2011
@@ -0,0 +1,76 @@
+/*
+ * simple_shape.c
+ *
+ * Created on: Aug 22, 2011
+ * Author: operator
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include "bundle_context.h"
+#include "bundle.h"
+#include "hash_map.h"
+#include "simple_shape.h"
+#include "square_shape.h"
+#define SQUARE_FILE "square.png"
+
+void squareShape_draw(SIMPLE_SHAPE shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
+
+SIMPLE_SHAPE squareShape_create(BUNDLE_CONTEXT context) {
+ BUNDLE bundle;
+ apr_pool_t *pool;
+ SIMPLE_SHAPE shape = (SIMPLE_SHAPE) malloc(sizeof(*shape));
+ bundleContext_getBundle(context, &bundle);
+ bundleContext_getMemoryPool(context, &pool);
+ shape->icon_path = NULL;
+ celix_status_t status = bundle_getEntry(bundle, SQUARE_FILE, pool, &shape->icon_path);
+ shape->simpleShape_draw = squareShape_draw;
+ if (status == CELIX_SUCCESS) {
+ // no error
+ } else {
+ printf("Could not find resource %s\n", SQUARE_FILE);
+ }
+ return shape;
+}
+
+void squareShape_draw(SIMPLE_SHAPE shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y){
+ GdkRectangle update_rect;
+ GdkPixbuf *curr_pix_buf;
+ GError *gerror = NULL;
+ gsize rd = 0, wr = 0;
+ if (shape->icon_path == NULL){
+ printf("no icon path\n");
+ } else {
+ gchar *gfn = g_locale_to_utf8(shape->icon_path, strlen(shape->icon_path), &rd, &wr, &gerror);
+ curr_pix_buf = gdk_pixbuf_new_from_file(gfn, &gerror);
+ if(!curr_pix_buf) {
+ g_printerr("error message: %s\n", (gchar *) gerror->message);
+ }
+ update_rect.x = x - 5;
+ update_rect.y = y - 5;
+ update_rect.width = gdk_pixbuf_get_width(curr_pix_buf);
+ update_rect.height = gdk_pixbuf_get_height(curr_pix_buf);
+ gdk_pixbuf_render_to_drawable(
+ curr_pix_buf,
+ pixMap,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ 0, 0,
+ update_rect.x, update_rect.y,
+ update_rect.width,
+ update_rect.height,
+ GDK_RGB_DITHER_NONE,
+ 0, 0);
+ gtk_widget_queue_draw_area (widget,
+ update_rect.x, update_rect.y,
+ update_rect.width, update_rect.height);
+ }
+}
+
+
+
Copied: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt (from r1177180, incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/CMakeLists.txt)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt?p2=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt&p1=incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/CMakeLists.txt&r1=1177180&r2=1177194&rev=1177194&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/CMakeLists.txt (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt Thu Sep 29 07:44:24 2011
@@ -14,10 +14,31 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+cmake_minimum_required(VERSION 2.8)
+INCLUDE(FindPkgConfig)
+cmake_policy(SET CMP0014 NEW)
+pkg_search_module (GLIB REQUIRED glib-2.0)
+pkg_search_module (GTHR REQUIRED gthread-2.0)
+pkg_search_module (GTK REQUIRED gtk+-2.0)
+include_directories(
+ private/include
+ public/include
+ ../simple/public/include
+)
+include_directories(${GTK_INCLUDE_DIRS})
+include_directories(${GLIB_INCLUDE_DIRS})
+include_directories(${GTHR_INCLUDE_DIRS})
-add_library(chapter04-correct-listener SHARED private/src/activator)
+link_directories(${GTK_LIBRARY_DIRS})
+link_directories(${GLIB_LIBRARY_DIRS})
+link_directories(${GTHR_LIBRARY_DIRS})
+
+add_library(triangle SHARED
+ private/src/activator
+ private/src/triangle_shape
+ )
include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
include_directories("${PROJECT_SOURCE_DIR}/log_service/public/include")
-target_link_libraries(chapter04-correct-listener framework)
+target_link_libraries(triangle framework ${GLIB_LIBRARIES} ${GTK_LIBRARIES} ${GTHR_LIBRARIES})
-bundle(chapter04-correct-listener)
+bundle(triangle FILES private/src/triangle.png)
Added: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF?rev=1177194&view=auto
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF Thu Sep 29 07:44:24 2011
@@ -0,0 +1,7 @@
+Bundle-SymbolicName: triangle
+Bundle-Version: 1.0.0
+library: triangle
+Export-Service: simple_shape
+Import-Service: simple_shape
+
+
Added: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h?rev=1177194&view=auto
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h (added)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h Thu Sep 29 07:44:24 2011
@@ -0,0 +1,13 @@
+/*
+ * default_shape.h
+ *
+ * Created on: Aug 22, 2011
+ * Author: operator
+ */
+
+#ifndef TRIANGLE_SHAPE_H_
+#define TRIANGLE_SHAPE_H_
+
+extern SIMPLE_SHAPE triangleShape_create(BUNDLE_CONTEXT ctx);
+
+#endif /* TRIANGLE_SHAPE_H_ */
Copied: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c (from r1177180, incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/private/src/activator.c)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c?p2=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c&p1=incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/private/src/activator.c&r1=1177180&r2=1177194&rev=1177194&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c Thu Sep 29 07:44:24 2011
@@ -20,12 +20,15 @@
#include <stdlib.h>
#include <stdio.h>
#include <apr_general.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
#include "bundle_activator.h"
#include "bundle_context.h"
-#include "greeting_impl.h"
-#include "greeting_service.h"
-#include "service_registration.h"
+#include "simple_shape.h"
+#include "triangle_shape.h"
+#include "simple_shape.h"
struct greetingActivator {
SERVICE_REGISTRATION reg;
@@ -44,31 +47,25 @@ celix_status_t bundleActivator_create(BU
activator->reg = NULL;
activator->pool = pool;
}
+ printf("Triangle created %d\n", status);
return status;
}
-celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT ctx) {
struct greetingActivator * act = (struct greetingActivator *) userData;
celix_status_t status = CELIX_SUCCESS;
- GREETING_SERVICE es = apr_palloc(act->pool, sizeof(*es));
- es->instance = apr_palloc(act->pool, sizeof(*es->instance));
- es->instance->name = GREETING_SERVICE_NAME;
- es->greeting_sayHello = greeting_sayHello;
-
- status = bundleContext_registerService(context, GREETING_SERVICE_NAME, es, NULL, &act->reg);
+ SIMPLE_SHAPE es = triangleShape_create(ctx);
+ PROPERTIES props = properties_create();
+ properties_set(props, "name", "triangle");
+ status = bundleContext_registerService(ctx, SIMPLE_SHAPE_SERVICE_NAME, es, props, &act->reg);
+ printf("Triangle activated %d\n", status);
return status;
}
celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
- celix_status_t status = CELIX_SUCCESS;
- struct greetingActivator * act = (struct greetingActivator *) userData;
- serviceRegistration_unregister(act->reg);
- act->reg = NULL;
return CELIX_SUCCESS;
}
celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
- struct greetingActivator * act = (struct greetingActivator *) userData;
- act->reg = NULL;
return CELIX_SUCCESS;
}
Added: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png?rev=1177194&view=auto
==============================================================================
Files incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png (added) and incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png Thu Sep 29 07:44:24 2011 differ
Added: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c?rev=1177194&view=auto
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c (added)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c Thu Sep 29 07:44:24 2011
@@ -0,0 +1,76 @@
+/*
+ * simple_shape.c
+ *
+ * Created on: Aug 22, 2011
+ * Author: operator
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include "bundle_context.h"
+#include "bundle.h"
+#include "hash_map.h"
+#include "simple_shape.h"
+#include "triangle_shape.h"
+#define TRIANGLE_FILE "triangle.png"
+
+void triangleShape_draw(SIMPLE_SHAPE shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
+
+SIMPLE_SHAPE triangleShape_create(BUNDLE_CONTEXT context) {
+ BUNDLE bundle;
+ apr_pool_t *pool;
+ SIMPLE_SHAPE shape = (SIMPLE_SHAPE) malloc(sizeof(*shape));
+ bundleContext_getBundle(context, &bundle);
+ bundleContext_getMemoryPool(context, &pool);
+ shape->icon_path = NULL;
+ celix_status_t status = bundle_getEntry(bundle, TRIANGLE_FILE, pool, &shape->icon_path);
+ shape->simpleShape_draw = triangleShape_draw;
+ if (status == CELIX_SUCCESS){
+ // no error
+ } else {
+ printf("Could not find resource %s\n", TRIANGLE_FILE);
+ }
+ return shape;
+}
+
+void triangleShape_draw(SIMPLE_SHAPE shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y){
+ GdkRectangle update_rect;
+ GdkPixbuf *curr_pix_buf;
+ GError *gerror = NULL;
+ gsize rd = 0, wr = 0;
+ if (shape->icon_path == NULL) {
+ printf("error message: icon path unknown\n");
+ } else {
+ gchar *gfn = g_locale_to_utf8(shape->icon_path, strlen(shape->icon_path), &rd, &wr, &gerror);
+ curr_pix_buf = gdk_pixbuf_new_from_file(gfn, &gerror);
+ if(!curr_pix_buf) {
+ g_printerr("error message: %s\n", (gchar *) gerror->message);
+ }
+ update_rect.x = x - 5;
+ update_rect.y = y - 5;
+ update_rect.width = gdk_pixbuf_get_width(curr_pix_buf);
+ update_rect.height = gdk_pixbuf_get_height(curr_pix_buf);
+ gdk_pixbuf_render_to_drawable(
+ curr_pix_buf,
+ pixMap,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ 0, 0,
+ update_rect.x, update_rect.y,
+ update_rect.width,
+ update_rect.height,
+ GDK_RGB_DITHER_NONE,
+ 0, 0);
+ gtk_widget_queue_draw_area (widget,
+ update_rect.x, update_rect.y,
+ update_rect.width, update_rect.height);
+ }
+}
+
+
+