From b7ef78844736699e9b96ecfb89853b0ceb6133f9 Mon Sep 17 00:00:00 2001 From: Prajwal Mohan Date: Fri, 27 Apr 2012 15:45:31 -0700 Subject: [PATCH 1/1] Initial Import --- README | 32 + arc-clock/Makefile | 17 + arc-clock/arc-clock.c | 189 +++ attic/aaina/AUTHORS | 1 + attic/aaina/ChangeLog | 713 ++++++++ attic/aaina/Makefile.am | 7 + attic/aaina/NEWS | 0 attic/aaina/README | 0 attic/aaina/TODO | 0 attic/aaina/autogen.sh | 3 + attic/aaina/configure.ac | 29 + attic/aaina/libaaina/Makefile.am | 28 + attic/aaina/libaaina/aaina-behave.c | 124 ++ attic/aaina/libaaina/aaina-behave.h | 74 + attic/aaina/libaaina/aaina-library.c | 375 +++++ attic/aaina/libaaina/aaina-library.h | 111 ++ attic/aaina/libaaina/aaina-photo.c | 803 +++++++++ attic/aaina/libaaina/aaina-photo.h | 117 ++ attic/aaina/libaaina/aaina-source.c | 49 + attic/aaina/libaaina/aaina-source.h | 81 + attic/aaina/libaaina/clutter-texture-label.c | 718 ++++++++ attic/aaina/libaaina/clutter-texture-label.h | 105 ++ attic/aaina/libaaina/eggsequence.c | 1709 ++++++++++++++++++++ attic/aaina/libaaina/eggsequence.h | 120 ++ attic/aaina/libnflick/Makefile.am | 75 + attic/aaina/libnflick/nflick-api-request-private.h | 58 + attic/aaina/libnflick/nflick-api-request.c | 396 +++++ attic/aaina/libnflick/nflick-api-request.h | 62 + .../aaina/libnflick/nflick-api-response-private.h | 58 + attic/aaina/libnflick/nflick-api-response.c | 337 ++++ attic/aaina/libnflick/nflick-api-response.h | 58 + attic/aaina/libnflick/nflick-auth-worker-private.h | 60 + attic/aaina/libnflick/nflick-auth-worker.c | 278 ++++ attic/aaina/libnflick/nflick-auth-worker.h | 50 + attic/aaina/libnflick/nflick-flickr.h | 73 + .../libnflick/nflick-get-sizes-response-private.h | 51 + attic/aaina/libnflick/nflick-get-sizes-response.c | 304 ++++ attic/aaina/libnflick/nflick-get-sizes-response.h | 55 + .../aaina/libnflick/nflick-gft-response-private.h | 62 + attic/aaina/libnflick/nflick-gft-response.c | 281 ++++ attic/aaina/libnflick/nflick-gft-response.h | 49 + .../aaina/libnflick/nflick-info-response-private.h | 66 + attic/aaina/libnflick/nflick-info-response.c | 272 ++++ attic/aaina/libnflick/nflick-info-response.h | 55 + attic/aaina/libnflick/nflick-info-worker-private.h | 63 + attic/aaina/libnflick/nflick-info-worker.c | 275 ++++ attic/aaina/libnflick/nflick-info-worker.h | 59 + .../libnflick/nflick-no-set-response-private.h | 51 + attic/aaina/libnflick/nflick-no-set-response.c | 199 +++ attic/aaina/libnflick/nflick-no-set-response.h | 52 + attic/aaina/libnflick/nflick-photo-data.c | 75 + attic/aaina/libnflick/nflick-photo-data.h | 44 + .../libnflick/nflick-photo-list-response-private.h | 51 + attic/aaina/libnflick/nflick-photo-list-response.c | 195 +++ attic/aaina/libnflick/nflick-photo-list-response.h | 52 + .../libnflick/nflick-photo-list-worker-private.h | 54 + attic/aaina/libnflick/nflick-photo-list-worker.c | 240 +++ attic/aaina/libnflick/nflick-photo-list-worker.h | 52 + .../nflick-photo-search-response-private.h | 51 + .../aaina/libnflick/nflick-photo-search-response.c | 207 +++ .../aaina/libnflick/nflick-photo-search-response.h | 51 + .../libnflick/nflick-photo-search-worker-private.h | 64 + attic/aaina/libnflick/nflick-photo-search-worker.c | 324 ++++ attic/aaina/libnflick/nflick-photo-search-worker.h | 62 + attic/aaina/libnflick/nflick-photo-set-private.h | 59 + attic/aaina/libnflick/nflick-photo-set.c | 242 +++ attic/aaina/libnflick/nflick-photo-set.h | 53 + .../aaina/libnflick/nflick-pixbuf-fetch-private.h | 37 + attic/aaina/libnflick/nflick-pixbuf-fetch.c | 172 ++ attic/aaina/libnflick/nflick-pixbuf-fetch.h | 40 + .../libnflick/nflick-set-list-response-private.h | 51 + attic/aaina/libnflick/nflick-set-list-response.c | 212 +++ attic/aaina/libnflick/nflick-set-list-response.h | 52 + .../libnflick/nflick-set-list-worker-private.h | 54 + attic/aaina/libnflick/nflick-set-list-worker.c | 362 +++++ attic/aaina/libnflick/nflick-set-list-worker.h | 55 + attic/aaina/libnflick/nflick-show-worker-private.h | 57 + attic/aaina/libnflick/nflick-show-worker.c | 264 +++ attic/aaina/libnflick/nflick-show-worker.h | 54 + attic/aaina/libnflick/nflick-types.h | 591 +++++++ attic/aaina/libnflick/nflick-worker-private.h | 74 + attic/aaina/libnflick/nflick-worker.c | 454 ++++++ attic/aaina/libnflick/nflick-worker.h | 70 + attic/aaina/libnflick/nflick.h | 34 + attic/aaina/sources/Makefile.am | 24 + attic/aaina/sources/aaina-source-directory.c | 100 ++ attic/aaina/sources/aaina-source-directory.h | 82 + attic/aaina/sources/aaina-source-flickr.c | 447 +++++ attic/aaina/sources/aaina-source-flickr.h | 85 + attic/aaina/src/Makefile.am | 20 + attic/aaina/src/aaina-slide-show.c | 507 ++++++ attic/aaina/src/aaina-slide-show.h | 91 ++ attic/aaina/src/main.c | 233 +++ attic/astro-desktop/AUTHORS | 1 + attic/astro-desktop/ChangeLog | 761 +++++++++ attic/astro-desktop/Makefile.am | 7 + attic/astro-desktop/NEWS | 0 attic/astro-desktop/README | 0 attic/astro-desktop/applets/Makefile.am | 11 + attic/astro-desktop/applets/cal.json | 32 + attic/astro-desktop/applets/cal.png | Bin 0 -> 2378 bytes attic/astro-desktop/applets/clock.json | 33 + attic/astro-desktop/applets/clock.png | Bin 0 -> 5876 bytes attic/astro-desktop/applets/clouds.png | Bin 0 -> 4358 bytes attic/astro-desktop/applets/mail.json | 31 + attic/astro-desktop/applets/mail.png | Bin 0 -> 3390 bytes attic/astro-desktop/applets/weather.json | 47 + attic/astro-desktop/applications/Makefile.am | 1 + .../applications/contacts/Makefile.am | 31 + .../applications/contacts/astro-contact-row.c | 371 +++++ .../applications/contacts/astro-contact-row.h | 82 + .../applications/contacts/astro-contacts-details.c | 145 ++ .../applications/contacts/astro-contacts-details.h | 81 + .../applications/contacts/astro-contacts-window.c | 591 +++++++ .../applications/contacts/astro-contacts-window.h | 85 + .../applications/contacts/astro-contacts.c | 152 ++ .../applications/contacts/astro-contacts.h | 77 + .../applications/contacts/astro-reflection.c | 258 +++ .../applications/contacts/astro-reflection.h | 79 + .../applications/contacts/astro-texture-group.c | 189 +++ .../applications/contacts/astro-texture-group.h | 82 + .../contacts/clutter-reflect-texture.c | 346 ++++ .../contacts/clutter-reflect-texture.h | 84 + attic/astro-desktop/applications/contacts/init.c | 26 + .../astro-desktop/applications/example/Makefile.am | 26 + .../applications/example/astro-example.c | 156 ++ .../applications/example/astro-example.h | 77 + attic/astro-desktop/applications/example/init.c | 25 + .../astro-desktop/applications/images/Makefile.am | 28 + .../applications/images/astro-images-window.c | 71 + .../applications/images/astro-images-window.h | 76 + .../applications/images/astro-images.c | 152 ++ .../applications/images/astro-images.h | 77 + .../applications/images/clutter-reflect-texture.c | 346 ++++ .../applications/images/clutter-reflect-texture.h | 84 + attic/astro-desktop/applications/images/init.c | 26 + attic/astro-desktop/applications/music/Makefile.am | 30 + .../applications/music/astro-music-window.c | 491 ++++++ .../applications/music/astro-music-window.h | 79 + .../astro-desktop/applications/music/astro-music.c | 152 ++ .../astro-desktop/applications/music/astro-music.h | 77 + .../applications/music/astro-reflection.c | 272 ++++ .../applications/music/astro-reflection.h | 79 + .../astro-desktop/applications/music/astro-songs.c | 280 ++++ .../astro-desktop/applications/music/astro-songs.h | 78 + .../applications/music/clutter-reflect-texture.c | 346 ++++ .../applications/music/clutter-reflect-texture.h | 84 + attic/astro-desktop/applications/music/init.c | 25 + attic/astro-desktop/autogen.sh | 3 + attic/astro-desktop/configure.ac | 37 + attic/astro-desktop/data/Makefile.am | 12 + .../data/albums/Amy_Winehouse_-_Back_To_Black.jpg | Bin 0 -> 16410 bytes .../data/albums/Jay_Z_-_American_Gangster.jpg | Bin 0 -> 19285 bytes .../data/albums/Kanye_West_-_Graduation.jpg | Bin 0 -> 91746 bytes .../data/albums/Lupe_Fiasco_-_Food_and_Liquor.jpg | Bin 0 -> 21734 bytes attic/astro-desktop/data/albums/Makefile.am | 10 + .../Red_Hot_Chilli_Peppers_-_Greatest_Hits.jpg | Bin 0 -> 59693 bytes .../data/albums/Santana_-_Ultimate_Santana.jpg | Bin 0 -> 94541 bytes .../data/albums/Timbaland_-_Shock_Value.jpg | Bin 0 -> 229321 bytes attic/astro-desktop/data/applet_bg.png | Bin 0 -> 714 bytes attic/astro-desktop/data/background.svg | Bin 0 -> 59181 bytes attic/astro-desktop/data/contact-bar.svg | 447 +++++ attic/astro-desktop/data/contact.png | Bin 0 -> 11748 bytes attic/astro-desktop/data/disc_bg.svg | 1028 ++++++++++++ attic/astro-desktop/data/face.png | Bin 0 -> 1862 bytes attic/astro-desktop/data/icons/Makefile.am | 11 + attic/astro-desktop/data/icons/bt.png | Bin 0 -> 400 bytes attic/astro-desktop/data/icons/close.png | Bin 0 -> 1467 bytes attic/astro-desktop/data/icons/contacts.png | Bin 0 -> 9708 bytes attic/astro-desktop/data/icons/exec.png | Bin 0 -> 8688 bytes attic/astro-desktop/data/icons/home.png | Bin 0 -> 3140 bytes attic/astro-desktop/data/icons/images.png | Bin 0 -> 8617 bytes attic/astro-desktop/data/icons/music.png | Bin 0 -> 7889 bytes attic/astro-desktop/data/icons/nm.png | Bin 0 -> 307 bytes attic/astro-desktop/data/info_bg.png | Bin 0 -> 744 bytes attic/astro-desktop/libastro-desktop/Makefile.am | 20 + .../libastro-desktop/astro-application.c | 198 +++ .../libastro-desktop/astro-application.h | 94 ++ .../astro-desktop/libastro-desktop/astro-behave.c | 89 + .../astro-desktop/libastro-desktop/astro-behave.h | 79 + .../astro-desktop/libastro-desktop/astro-defines.h | 40 + attic/astro-desktop/libastro-desktop/astro-utils.c | 14 + attic/astro-desktop/libastro-desktop/astro-utils.h | 34 + .../astro-desktop/libastro-desktop/astro-window.c | 154 ++ .../astro-desktop/libastro-desktop/astro-window.h | 79 + attic/astro-desktop/libastro-desktop/astro.h | 30 + .../astro-desktop/libastro-desktop/tidy-private.h | 40 + .../libastro-desktop/tidy-texture-frame.c | 378 +++++ .../libastro-desktop/tidy-texture-frame.h | 82 + attic/astro-desktop/src/Makefile.am | 35 + attic/astro-desktop/src/astro-appicon.c | 190 +++ attic/astro-desktop/src/astro-appicon.h | 82 + attic/astro-desktop/src/astro-applet-manager.c | 216 +++ attic/astro-desktop/src/astro-applet-manager.h | 75 + attic/astro-desktop/src/astro-applet.c | 116 ++ attic/astro-desktop/src/astro-applet.h | 79 + attic/astro-desktop/src/astro-appview.c | 357 ++++ attic/astro-desktop/src/astro-appview.h | 84 + attic/astro-desktop/src/astro-desktop.c | 316 ++++ attic/astro-desktop/src/astro-desktop.h | 75 + attic/astro-desktop/src/astro-example.c | 156 ++ attic/astro-desktop/src/astro-example.h | 77 + attic/astro-desktop/src/astro-panel.c | 222 +++ attic/astro-desktop/src/astro-panel.h | 83 + attic/astro-desktop/src/astro-systray.c | 131 ++ attic/astro-desktop/src/astro-systray.h | 76 + attic/astro-desktop/src/main.c | 110 ++ attic/fluttr/AUTHORS | 1 + attic/fluttr/COPYING | 340 ++++ attic/fluttr/ChangeLog | 740 +++++++++ attic/fluttr/INSTALL | 236 +++ attic/fluttr/Makefile.am | 7 + attic/fluttr/NEWS | 0 attic/fluttr/README | 69 + attic/fluttr/TODO | 1 + attic/fluttr/autogen.sh | 3 + attic/fluttr/config.guess | 1 + attic/fluttr/config.sub | 1 + attic/fluttr/configure.ac | 28 + attic/fluttr/data/Makefile.am | 12 + attic/fluttr/data/background.svg | 88 + attic/fluttr/data/message.svg | 158 ++ attic/fluttr/data/picture.svg | 950 +++++++++++ attic/fluttr/data/spinner.svg | 179 ++ attic/fluttr/libnflick/Makefile.am | 62 + .../fluttr/libnflick/nflick-api-request-private.h | 58 + attic/fluttr/libnflick/nflick-api-request.c | 396 +++++ attic/fluttr/libnflick/nflick-api-request.h | 62 + .../fluttr/libnflick/nflick-api-response-private.h | 58 + attic/fluttr/libnflick/nflick-api-response.c | 337 ++++ attic/fluttr/libnflick/nflick-api-response.h | 58 + .../fluttr/libnflick/nflick-auth-worker-private.h | 60 + attic/fluttr/libnflick/nflick-auth-worker.c | 278 ++++ attic/fluttr/libnflick/nflick-auth-worker.h | 50 + attic/fluttr/libnflick/nflick-flickr.h | 69 + .../libnflick/nflick-get-sizes-response-private.h | 51 + attic/fluttr/libnflick/nflick-get-sizes-response.c | 304 ++++ attic/fluttr/libnflick/nflick-get-sizes-response.h | 55 + .../fluttr/libnflick/nflick-gft-response-private.h | 62 + attic/fluttr/libnflick/nflick-gft-response.c | 281 ++++ attic/fluttr/libnflick/nflick-gft-response.h | 49 + .../libnflick/nflick-no-set-response-private.h | 51 + attic/fluttr/libnflick/nflick-no-set-response.c | 199 +++ attic/fluttr/libnflick/nflick-no-set-response.h | 52 + attic/fluttr/libnflick/nflick-photo-data.c | 75 + attic/fluttr/libnflick/nflick-photo-data.h | 44 + .../libnflick/nflick-photo-list-response-private.h | 51 + .../fluttr/libnflick/nflick-photo-list-response.c | 195 +++ .../fluttr/libnflick/nflick-photo-list-response.h | 52 + .../libnflick/nflick-photo-list-worker-private.h | 54 + attic/fluttr/libnflick/nflick-photo-list-worker.c | 240 +++ attic/fluttr/libnflick/nflick-photo-list-worker.h | 52 + attic/fluttr/libnflick/nflick-photo-set-private.h | 59 + attic/fluttr/libnflick/nflick-photo-set.c | 242 +++ attic/fluttr/libnflick/nflick-photo-set.h | 53 + .../fluttr/libnflick/nflick-pixbuf-fetch-private.h | 37 + attic/fluttr/libnflick/nflick-pixbuf-fetch.c | 172 ++ attic/fluttr/libnflick/nflick-pixbuf-fetch.h | 40 + .../libnflick/nflick-set-list-response-private.h | 51 + attic/fluttr/libnflick/nflick-set-list-response.c | 212 +++ attic/fluttr/libnflick/nflick-set-list-response.h | 52 + .../libnflick/nflick-set-list-worker-private.h | 54 + attic/fluttr/libnflick/nflick-set-list-worker.c | 362 +++++ attic/fluttr/libnflick/nflick-set-list-worker.h | 55 + .../fluttr/libnflick/nflick-show-worker-private.h | 57 + attic/fluttr/libnflick/nflick-show-worker.c | 264 +++ attic/fluttr/libnflick/nflick-show-worker.h | 54 + attic/fluttr/libnflick/nflick-types.h | 514 ++++++ attic/fluttr/libnflick/nflick-worker-private.h | 74 + attic/fluttr/libnflick/nflick-worker.c | 454 ++++++ attic/fluttr/libnflick/nflick-worker.h | 70 + attic/fluttr/libnflick/nflick.h | 32 + attic/fluttr/ltmain.sh | 1 + attic/fluttr/src/Makefile.am | 42 + attic/fluttr/src/eggsequence.c | 1709 ++++++++++++++++++++ attic/fluttr/src/eggsequence.h | 120 ++ attic/fluttr/src/fluttr-auth.c | 433 +++++ attic/fluttr/src/fluttr-auth.h | 73 + attic/fluttr/src/fluttr-behave.c | 124 ++ attic/fluttr/src/fluttr-behave.h | 74 + attic/fluttr/src/fluttr-library-row.c | 222 +++ attic/fluttr/src/fluttr-library-row.h | 69 + attic/fluttr/src/fluttr-library.c | 294 ++++ attic/fluttr/src/fluttr-library.h | 99 ++ attic/fluttr/src/fluttr-list-view.c | 526 ++++++ attic/fluttr/src/fluttr-list-view.h | 92 ++ attic/fluttr/src/fluttr-list.c | 622 +++++++ attic/fluttr/src/fluttr-list.h | 75 + attic/fluttr/src/fluttr-photo.c | 983 +++++++++++ attic/fluttr/src/fluttr-photo.h | 96 ++ attic/fluttr/src/fluttr-set-view.c | 281 ++++ attic/fluttr/src/fluttr-set-view.h | 94 ++ attic/fluttr/src/fluttr-set.c | 554 +++++++ attic/fluttr/src/fluttr-set.h | 106 ++ attic/fluttr/src/fluttr-settings.c | 197 +++ attic/fluttr/src/fluttr-settings.h | 69 + attic/fluttr/src/fluttr-spinner.c | 149 ++ attic/fluttr/src/fluttr-spinner.h | 68 + attic/fluttr/src/fluttr-viewer.c | 524 ++++++ attic/fluttr/src/fluttr-viewer.h | 80 + attic/fluttr/src/main.c | 695 ++++++++ attic/gcr/Makefile | 88 + attic/gcr/README | 28 + attic/gcr/custom-cursor.c | 392 +++++ attic/gcr/custom-cursor.h | 77 + attic/gcr/gcr.c | 206 +++ attic/gcr/gcr.h | 10 + attic/gcr/test.c | 27 + attic/mallums-magic-browser/Makefile | 86 + attic/mallums-magic-browser/README-mozilla | 16 + attic/mallums-magic-browser/assets/back.png | Bin 0 -> 2587 bytes attic/mallums-magic-browser/assets/bground.png | Bin 0 -> 6200 bytes .../mallums-magic-browser/assets/document-new.png | Bin 0 -> 1008 bytes attic/mallums-magic-browser/assets/forward.png | Bin 0 -> 2593 bytes attic/mallums-magic-browser/assets/go-next.png | Bin 0 -> 1849 bytes attic/mallums-magic-browser/assets/go-previous.png | Bin 0 -> 1841 bytes attic/mallums-magic-browser/assets/tabs.png | Bin 0 -> 4587 bytes attic/mallums-magic-browser/assets/toolbar-bg.png | Bin 0 -> 26595 bytes attic/mallums-magic-browser/popup-factory.c | 118 ++ attic/mallums-magic-browser/popup-factory.h | 31 + attic/mallums-magic-browser/scroll-frame.c | 362 +++++ attic/mallums-magic-browser/scroll-frame.h | 33 + attic/mallums-magic-browser/web-browser-mozilla.c | 952 +++++++++++ attic/mallums-magic-browser/web-browser-mozilla.h | 32 + attic/mallums-magic-browser/web-browser.c | 901 +++++++++++ attic/mallums-magic-browser/web-browser.h | 32 + attic/sqlite-model/Makefile | 13 + attic/sqlite-model/clutter-sqlite-model.c | 1110 +++++++++++++ attic/sqlite-model/clutter-sqlite-model.h | 97 ++ attic/sqlite-model/test-sqlite-model.c | 248 +++ attic/table/Makefile | 14 + attic/table/clutter-dominatrix.c | 1008 ++++++++++++ attic/table/clutter-dominatrix.h | 89 + attic/table/clutter-video-player.c | 374 +++++ attic/table/clutter-video-player.h | 81 + attic/table/hand0.png | Bin 0 -> 6451 bytes attic/table/hand1.png | Bin 0 -> 6605 bytes attic/table/hand2.png | Bin 0 -> 7130 bytes attic/table/hand3.png | Bin 0 -> 6719 bytes attic/table/hand4.png | Bin 0 -> 6737 bytes attic/table/hand5.png | Bin 0 -> 6691 bytes attic/table/hand6.png | Bin 0 -> 7115 bytes attic/table/hand7.png | Bin 0 -> 7101 bytes attic/table/hand8.png | Bin 0 -> 7009 bytes attic/table/pause_png.h | 431 +++++ attic/table/play_png.h | 540 +++++++ attic/table/table.c | 446 +++++ attic/widgets/Makefile | 14 + attic/widgets/clutter-reflect-texture.c | 340 ++++ attic/widgets/clutter-reflect-texture.h | 84 + attic/widgets/test.c | 45 + attic/woohaa/AUTHORS | 0 attic/woohaa/ChangeLog | 271 ++++ attic/woohaa/Makefile.am | 41 + attic/woohaa/NEWS | 0 attic/woohaa/README | 25 + attic/woohaa/autogen.sh | 3 + attic/woohaa/configure.ac | 43 + attic/woohaa/data/Makefile.am | 4 + attic/woohaa/data/arrow-down.svg | 63 + attic/woohaa/data/arrow-next.svg | 63 + attic/woohaa/data/arrow-prev.svg | 63 + attic/woohaa/data/arrow-up.svg | 63 + attic/woohaa/data/bg.png | Bin 0 -> 6154 bytes attic/woohaa/data/busy.png | Bin 0 -> 5716 bytes attic/woohaa/data/default-thumb.png | Bin 0 -> 1423 bytes attic/woohaa/data/header.svg | 101 ++ attic/woohaa/data/play.svg | 50 + attic/woohaa/data/selected.svg | 122 ++ attic/woohaa/data/spinner.svg | 74 + attic/woohaa/eggsequence.c | 1709 ++++++++++++++++++++ attic/woohaa/eggsequence.h | 120 ++ attic/woohaa/totem-resources.c | 121 ++ attic/woohaa/totem-resources.h | 33 + attic/woohaa/util.c | 76 + attic/woohaa/util.h | 51 + attic/woohaa/wh-busy.c | 443 +++++ attic/woohaa/wh-busy.h | 62 + attic/woohaa/wh-db.c | 648 ++++++++ attic/woohaa/wh-db.h | 54 + attic/woohaa/wh-screen-video.c | 706 ++++++++ attic/woohaa/wh-screen-video.h | 58 + attic/woohaa/wh-slider-menu.c | 518 ++++++ attic/woohaa/wh-slider-menu.h | 73 + attic/woohaa/wh-theme.c | 78 + attic/woohaa/wh-theme.h | 27 + attic/woohaa/wh-video-model-row.c | 468 ++++++ attic/woohaa/wh-video-model-row.h | 103 ++ attic/woohaa/wh-video-model.c | 298 ++++ attic/woohaa/wh-video-model.h | 91 ++ attic/woohaa/wh-video-row-renderer.c | 373 +++++ attic/woohaa/wh-video-row-renderer.h | 52 + attic/woohaa/wh-video-thumbnailer.c | 157 ++ attic/woohaa/wh-video-view.c | 543 +++++++ attic/woohaa/wh-video-view.h | 93 ++ attic/woohaa/woohaa.c | 782 +++++++++ attic/youhaa/AUTHORS | 0 attic/youhaa/ChangeLog | 106 ++ attic/youhaa/Makefile.am | 7 + attic/youhaa/NEWS | 0 attic/youhaa/README | 0 attic/youhaa/autogen.sh | 3 + attic/youhaa/configure.ac | 36 + attic/youhaa/data/Makefile.am | 6 + attic/youhaa/data/go-next.svg | 191 +++ attic/youhaa/data/go-previous.svg | 852 ++++++++++ attic/youhaa/libcurl.m4 | 236 +++ attic/youhaa/src/Makefile.am | 20 + attic/youhaa/src/glibcurl.c | 546 +++++++ attic/youhaa/src/glibcurl.h | 80 + attic/youhaa/src/yh-main.c | 377 +++++ attic/youhaa/src/yh-theme.c | 14 + attic/youhaa/src/yh-theme.h | 24 + attic/youhaa/src/yh-youtube-browser.c | 828 ++++++++++ attic/youhaa/src/yh-youtube-browser.h | 58 + attic/youhaa/src/yh-youtube.c | 826 ++++++++++ attic/youhaa/src/yh-youtube.h | 81 + circles/Makefile | 13 + circles/circles.c | 109 ++ courasel/Makefile | 14 + courasel/accessories-text-editor.png | Bin 0 -> 3953 bytes courasel/applications-games.png | Bin 0 -> 5529 bytes courasel/courasel.c | 309 ++++ courasel/dates.png | Bin 0 -> 4656 bytes courasel/im-client.png | Bin 0 -> 3934 bytes courasel/preferences-desktop-theme.png | Bin 0 -> 7306 bytes courasel/tasks.png | Bin 0 -> 5053 bytes courasel/utilities-terminal.png | Bin 0 -> 1971 bytes courasel/web-browser.png | Bin 0 -> 10151 bytes foofone/Makefile | 14 + foofone/button.png | Bin 0 -> 683 bytes foofone/call-background.png | Bin 0 -> 123785 bytes foofone/display.png | Bin 0 -> 734 bytes foofone/foofone.c | 446 +++++ gps-globe/.gitignore | 23 + gps-globe/AUTHORS | 0 gps-globe/COPYING | 674 ++++++++ gps-globe/ChangeLog | 0 gps-globe/INSTALL | 291 ++++ gps-globe/Makefile.am | 1 + gps-globe/NEWS | 0 gps-globe/README | 13 + gps-globe/autogen.sh | 14 + gps-globe/configure.ac | 20 + gps-globe/data/visible-earth.jpg | Bin 0 -> 67099 bytes gps-globe/src/Makefile.am | 54 + gps-globe/src/gpsg-enum-types.c.in | 41 + gps-globe/src/gpsg-enum-types.h.in | 26 + gps-globe/src/gpsg-main.c | 111 ++ gps-globe/src/gpsg-sphere-vertex-shader.glsl | 49 + gps-globe/src/gpsg-sphere-vertex-shader.h | 30 + gps-globe/src/gpsg-sphere.c | 940 +++++++++++ gps-globe/src/gpsg-sphere.h | 83 + nyancat/Makefile | 83 + nyancat/nyan.json | 1204 ++++++++++++++ nyancat/nyancat.c | 181 +++ nyancat/star.png | Bin 0 -> 1538 bytes object-store/Makefile | 36 + object-store/foo-object-store-test | Bin 0 -> 12855268 bytes object-store/foo-object-store.c | 749 +++++++++ object-store/foo-object-store.h | 75 + object-store/foo-test-object.c | 184 +++ object-store/foo-test-object.h | 76 + object-store/object-store-example.c | 230 +++ object-store/object-store-test.c | 364 +++++ odo/Makefile | 14 + odo/README | 8 + odo/grid.png | Bin 0 -> 839 bytes odo/neghand.png | Bin 0 -> 8315 bytes odo/odo-distort-funcs.c | 137 ++ odo/odo-distort-funcs.h | 41 + odo/odo-texture.c | 641 ++++++++ odo/odo-texture.h | 84 + odo/odo.c | 139 ++ odo/oh-logo.png | Bin 0 -> 11993 bytes odo/redhand.png | Bin 0 -> 8250 bytes opt/.gitignore | 17 + opt/AUTHORS | 0 opt/ChangeLog | 365 +++++ opt/Makefile.am | 24 + opt/NEWS | 0 opt/README | 6 + opt/autogen.sh | 3 + opt/bg.png | Bin 0 -> 122701 bytes opt/configure.ac | 24 + opt/demo.xml | 69 + opt/hirez/oh-present.xcf | Bin 0 -> 1474567 bytes opt/kitten.jpg | Bin 0 -> 3941 bytes opt/kitten2.jpg | Bin 0 -> 22802 bytes opt/opt-config.c | 759 +++++++++ opt/opt-menu.c | 496 ++++++ opt/opt-menu.h | 55 + opt/opt-show.c | 695 ++++++++ opt/opt-show.h | 83 + opt/opt-slide.c | 319 ++++ opt/opt-slide.h | 94 ++ opt/opt-transition.c | 459 ++++++ opt/opt-transition.h | 94 ++ opt/opt.c | 225 +++ opt/opt.doap | 41 + opt/opt.dtd | 36 + opt/opt.h | 22 + opt/powers.png | Bin 0 -> 29901 bytes opt/test.xml | 59 + packaging/clutter-toys.spec | 86 + patches/fix-colors.patch | 24 + patches/fix-image-path.patch | 56 + patches/map-escape-key-to-quit.patch | 142 ++ pong/Makefile | 15 + pong/pong-ball.png | Bin 0 -> 1089 bytes pong/pong-bat.png | Bin 0 -> 972 bytes pong/pong2.c | 412 +++++ ripples/Makefile | 13 + ripples/ripples.c | 131 ++ script-viewer/.gitignore | 2 + script-viewer/COPYING | 504 ++++++ script-viewer/ChangeLog | 48 + script-viewer/Makefile | 83 + script-viewer/README | 56 + script-viewer/alphas.json | 186 +++ script-viewer/behaviours.json | 140 ++ script-viewer/redhand.png | Bin 0 -> 8250 bytes script-viewer/script-viewer.c | 239 +++ script-viewer/test-script.json | 70 + script-viewer/text.json | 102 ++ 525 files changed, 79663 insertions(+) create mode 100644 README create mode 100644 arc-clock/Makefile create mode 100644 arc-clock/arc-clock.c create mode 100644 attic/aaina/AUTHORS create mode 100644 attic/aaina/ChangeLog create mode 100644 attic/aaina/Makefile.am create mode 100644 attic/aaina/NEWS create mode 100644 attic/aaina/README create mode 100644 attic/aaina/TODO create mode 100755 attic/aaina/autogen.sh create mode 100644 attic/aaina/configure.ac create mode 100644 attic/aaina/libaaina/Makefile.am create mode 100644 attic/aaina/libaaina/aaina-behave.c create mode 100644 attic/aaina/libaaina/aaina-behave.h create mode 100644 attic/aaina/libaaina/aaina-library.c create mode 100644 attic/aaina/libaaina/aaina-library.h create mode 100644 attic/aaina/libaaina/aaina-photo.c create mode 100644 attic/aaina/libaaina/aaina-photo.h create mode 100644 attic/aaina/libaaina/aaina-source.c create mode 100644 attic/aaina/libaaina/aaina-source.h create mode 100644 attic/aaina/libaaina/clutter-texture-label.c create mode 100644 attic/aaina/libaaina/clutter-texture-label.h create mode 100644 attic/aaina/libaaina/eggsequence.c create mode 100644 attic/aaina/libaaina/eggsequence.h create mode 100644 attic/aaina/libnflick/Makefile.am create mode 100644 attic/aaina/libnflick/nflick-api-request-private.h create mode 100644 attic/aaina/libnflick/nflick-api-request.c create mode 100644 attic/aaina/libnflick/nflick-api-request.h create mode 100644 attic/aaina/libnflick/nflick-api-response-private.h create mode 100644 attic/aaina/libnflick/nflick-api-response.c create mode 100644 attic/aaina/libnflick/nflick-api-response.h create mode 100644 attic/aaina/libnflick/nflick-auth-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-auth-worker.c create mode 100644 attic/aaina/libnflick/nflick-auth-worker.h create mode 100644 attic/aaina/libnflick/nflick-flickr.h create mode 100644 attic/aaina/libnflick/nflick-get-sizes-response-private.h create mode 100644 attic/aaina/libnflick/nflick-get-sizes-response.c create mode 100644 attic/aaina/libnflick/nflick-get-sizes-response.h create mode 100644 attic/aaina/libnflick/nflick-gft-response-private.h create mode 100644 attic/aaina/libnflick/nflick-gft-response.c create mode 100644 attic/aaina/libnflick/nflick-gft-response.h create mode 100644 attic/aaina/libnflick/nflick-info-response-private.h create mode 100644 attic/aaina/libnflick/nflick-info-response.c create mode 100644 attic/aaina/libnflick/nflick-info-response.h create mode 100644 attic/aaina/libnflick/nflick-info-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-info-worker.c create mode 100644 attic/aaina/libnflick/nflick-info-worker.h create mode 100644 attic/aaina/libnflick/nflick-no-set-response-private.h create mode 100644 attic/aaina/libnflick/nflick-no-set-response.c create mode 100644 attic/aaina/libnflick/nflick-no-set-response.h create mode 100644 attic/aaina/libnflick/nflick-photo-data.c create mode 100644 attic/aaina/libnflick/nflick-photo-data.h create mode 100644 attic/aaina/libnflick/nflick-photo-list-response-private.h create mode 100644 attic/aaina/libnflick/nflick-photo-list-response.c create mode 100644 attic/aaina/libnflick/nflick-photo-list-response.h create mode 100644 attic/aaina/libnflick/nflick-photo-list-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-photo-list-worker.c create mode 100644 attic/aaina/libnflick/nflick-photo-list-worker.h create mode 100644 attic/aaina/libnflick/nflick-photo-search-response-private.h create mode 100644 attic/aaina/libnflick/nflick-photo-search-response.c create mode 100644 attic/aaina/libnflick/nflick-photo-search-response.h create mode 100644 attic/aaina/libnflick/nflick-photo-search-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-photo-search-worker.c create mode 100644 attic/aaina/libnflick/nflick-photo-search-worker.h create mode 100644 attic/aaina/libnflick/nflick-photo-set-private.h create mode 100644 attic/aaina/libnflick/nflick-photo-set.c create mode 100644 attic/aaina/libnflick/nflick-photo-set.h create mode 100644 attic/aaina/libnflick/nflick-pixbuf-fetch-private.h create mode 100644 attic/aaina/libnflick/nflick-pixbuf-fetch.c create mode 100644 attic/aaina/libnflick/nflick-pixbuf-fetch.h create mode 100644 attic/aaina/libnflick/nflick-set-list-response-private.h create mode 100644 attic/aaina/libnflick/nflick-set-list-response.c create mode 100644 attic/aaina/libnflick/nflick-set-list-response.h create mode 100644 attic/aaina/libnflick/nflick-set-list-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-set-list-worker.c create mode 100644 attic/aaina/libnflick/nflick-set-list-worker.h create mode 100644 attic/aaina/libnflick/nflick-show-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-show-worker.c create mode 100644 attic/aaina/libnflick/nflick-show-worker.h create mode 100644 attic/aaina/libnflick/nflick-types.h create mode 100644 attic/aaina/libnflick/nflick-worker-private.h create mode 100644 attic/aaina/libnflick/nflick-worker.c create mode 100644 attic/aaina/libnflick/nflick-worker.h create mode 100644 attic/aaina/libnflick/nflick.h create mode 100644 attic/aaina/sources/Makefile.am create mode 100644 attic/aaina/sources/aaina-source-directory.c create mode 100644 attic/aaina/sources/aaina-source-directory.h create mode 100644 attic/aaina/sources/aaina-source-flickr.c create mode 100644 attic/aaina/sources/aaina-source-flickr.h create mode 100644 attic/aaina/src/Makefile.am create mode 100644 attic/aaina/src/aaina-slide-show.c create mode 100644 attic/aaina/src/aaina-slide-show.h create mode 100644 attic/aaina/src/main.c create mode 100644 attic/astro-desktop/AUTHORS create mode 100644 attic/astro-desktop/ChangeLog create mode 100644 attic/astro-desktop/Makefile.am create mode 100644 attic/astro-desktop/NEWS create mode 100644 attic/astro-desktop/README create mode 100644 attic/astro-desktop/applets/Makefile.am create mode 100644 attic/astro-desktop/applets/cal.json create mode 100644 attic/astro-desktop/applets/cal.png create mode 100644 attic/astro-desktop/applets/clock.json create mode 100644 attic/astro-desktop/applets/clock.png create mode 100644 attic/astro-desktop/applets/clouds.png create mode 100644 attic/astro-desktop/applets/mail.json create mode 100644 attic/astro-desktop/applets/mail.png create mode 100644 attic/astro-desktop/applets/weather.json create mode 100644 attic/astro-desktop/applications/Makefile.am create mode 100644 attic/astro-desktop/applications/contacts/Makefile.am create mode 100644 attic/astro-desktop/applications/contacts/astro-contact-row.c create mode 100644 attic/astro-desktop/applications/contacts/astro-contact-row.h create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts-details.c create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts-details.h create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts-window.c create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts-window.h create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts.c create mode 100644 attic/astro-desktop/applications/contacts/astro-contacts.h create mode 100644 attic/astro-desktop/applications/contacts/astro-reflection.c create mode 100644 attic/astro-desktop/applications/contacts/astro-reflection.h create mode 100644 attic/astro-desktop/applications/contacts/astro-texture-group.c create mode 100644 attic/astro-desktop/applications/contacts/astro-texture-group.h create mode 100644 attic/astro-desktop/applications/contacts/clutter-reflect-texture.c create mode 100644 attic/astro-desktop/applications/contacts/clutter-reflect-texture.h create mode 100644 attic/astro-desktop/applications/contacts/init.c create mode 100644 attic/astro-desktop/applications/example/Makefile.am create mode 100644 attic/astro-desktop/applications/example/astro-example.c create mode 100644 attic/astro-desktop/applications/example/astro-example.h create mode 100644 attic/astro-desktop/applications/example/init.c create mode 100644 attic/astro-desktop/applications/images/Makefile.am create mode 100644 attic/astro-desktop/applications/images/astro-images-window.c create mode 100644 attic/astro-desktop/applications/images/astro-images-window.h create mode 100644 attic/astro-desktop/applications/images/astro-images.c create mode 100644 attic/astro-desktop/applications/images/astro-images.h create mode 100644 attic/astro-desktop/applications/images/clutter-reflect-texture.c create mode 100644 attic/astro-desktop/applications/images/clutter-reflect-texture.h create mode 100644 attic/astro-desktop/applications/images/init.c create mode 100644 attic/astro-desktop/applications/music/Makefile.am create mode 100644 attic/astro-desktop/applications/music/astro-music-window.c create mode 100644 attic/astro-desktop/applications/music/astro-music-window.h create mode 100644 attic/astro-desktop/applications/music/astro-music.c create mode 100644 attic/astro-desktop/applications/music/astro-music.h create mode 100644 attic/astro-desktop/applications/music/astro-reflection.c create mode 100644 attic/astro-desktop/applications/music/astro-reflection.h create mode 100644 attic/astro-desktop/applications/music/astro-songs.c create mode 100644 attic/astro-desktop/applications/music/astro-songs.h create mode 100644 attic/astro-desktop/applications/music/clutter-reflect-texture.c create mode 100644 attic/astro-desktop/applications/music/clutter-reflect-texture.h create mode 100644 attic/astro-desktop/applications/music/init.c create mode 100755 attic/astro-desktop/autogen.sh create mode 100644 attic/astro-desktop/configure.ac create mode 100644 attic/astro-desktop/data/Makefile.am create mode 100644 attic/astro-desktop/data/albums/Amy_Winehouse_-_Back_To_Black.jpg create mode 100644 attic/astro-desktop/data/albums/Jay_Z_-_American_Gangster.jpg create mode 100644 attic/astro-desktop/data/albums/Kanye_West_-_Graduation.jpg create mode 100644 attic/astro-desktop/data/albums/Lupe_Fiasco_-_Food_and_Liquor.jpg create mode 100644 attic/astro-desktop/data/albums/Makefile.am create mode 100755 attic/astro-desktop/data/albums/Red_Hot_Chilli_Peppers_-_Greatest_Hits.jpg create mode 100644 attic/astro-desktop/data/albums/Santana_-_Ultimate_Santana.jpg create mode 100755 attic/astro-desktop/data/albums/Timbaland_-_Shock_Value.jpg create mode 100644 attic/astro-desktop/data/applet_bg.png create mode 100644 attic/astro-desktop/data/background.svg create mode 100644 attic/astro-desktop/data/contact-bar.svg create mode 100644 attic/astro-desktop/data/contact.png create mode 100644 attic/astro-desktop/data/disc_bg.svg create mode 100644 attic/astro-desktop/data/face.png create mode 100644 attic/astro-desktop/data/icons/Makefile.am create mode 100644 attic/astro-desktop/data/icons/bt.png create mode 100644 attic/astro-desktop/data/icons/close.png create mode 100644 attic/astro-desktop/data/icons/contacts.png create mode 100644 attic/astro-desktop/data/icons/exec.png create mode 100644 attic/astro-desktop/data/icons/home.png create mode 100644 attic/astro-desktop/data/icons/images.png create mode 100644 attic/astro-desktop/data/icons/music.png create mode 100644 attic/astro-desktop/data/icons/nm.png create mode 100644 attic/astro-desktop/data/info_bg.png create mode 100644 attic/astro-desktop/libastro-desktop/Makefile.am create mode 100644 attic/astro-desktop/libastro-desktop/astro-application.c create mode 100644 attic/astro-desktop/libastro-desktop/astro-application.h create mode 100644 attic/astro-desktop/libastro-desktop/astro-behave.c create mode 100644 attic/astro-desktop/libastro-desktop/astro-behave.h create mode 100644 attic/astro-desktop/libastro-desktop/astro-defines.h create mode 100644 attic/astro-desktop/libastro-desktop/astro-utils.c create mode 100644 attic/astro-desktop/libastro-desktop/astro-utils.h create mode 100644 attic/astro-desktop/libastro-desktop/astro-window.c create mode 100644 attic/astro-desktop/libastro-desktop/astro-window.h create mode 100644 attic/astro-desktop/libastro-desktop/astro.h create mode 100644 attic/astro-desktop/libastro-desktop/tidy-private.h create mode 100644 attic/astro-desktop/libastro-desktop/tidy-texture-frame.c create mode 100644 attic/astro-desktop/libastro-desktop/tidy-texture-frame.h create mode 100644 attic/astro-desktop/src/Makefile.am create mode 100644 attic/astro-desktop/src/astro-appicon.c create mode 100644 attic/astro-desktop/src/astro-appicon.h create mode 100644 attic/astro-desktop/src/astro-applet-manager.c create mode 100644 attic/astro-desktop/src/astro-applet-manager.h create mode 100644 attic/astro-desktop/src/astro-applet.c create mode 100644 attic/astro-desktop/src/astro-applet.h create mode 100644 attic/astro-desktop/src/astro-appview.c create mode 100644 attic/astro-desktop/src/astro-appview.h create mode 100644 attic/astro-desktop/src/astro-desktop.c create mode 100644 attic/astro-desktop/src/astro-desktop.h create mode 100644 attic/astro-desktop/src/astro-example.c create mode 100644 attic/astro-desktop/src/astro-example.h create mode 100644 attic/astro-desktop/src/astro-panel.c create mode 100644 attic/astro-desktop/src/astro-panel.h create mode 100644 attic/astro-desktop/src/astro-systray.c create mode 100644 attic/astro-desktop/src/astro-systray.h create mode 100644 attic/astro-desktop/src/main.c create mode 100644 attic/fluttr/AUTHORS create mode 100644 attic/fluttr/COPYING create mode 100644 attic/fluttr/ChangeLog create mode 100644 attic/fluttr/INSTALL create mode 100644 attic/fluttr/Makefile.am create mode 100644 attic/fluttr/NEWS create mode 100644 attic/fluttr/README create mode 100644 attic/fluttr/TODO create mode 100755 attic/fluttr/autogen.sh create mode 120000 attic/fluttr/config.guess create mode 120000 attic/fluttr/config.sub create mode 100644 attic/fluttr/configure.ac create mode 100644 attic/fluttr/data/Makefile.am create mode 100644 attic/fluttr/data/background.svg create mode 100644 attic/fluttr/data/message.svg create mode 100644 attic/fluttr/data/picture.svg create mode 100644 attic/fluttr/data/spinner.svg create mode 100644 attic/fluttr/libnflick/Makefile.am create mode 100644 attic/fluttr/libnflick/nflick-api-request-private.h create mode 100644 attic/fluttr/libnflick/nflick-api-request.c create mode 100644 attic/fluttr/libnflick/nflick-api-request.h create mode 100644 attic/fluttr/libnflick/nflick-api-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-api-response.c create mode 100644 attic/fluttr/libnflick/nflick-api-response.h create mode 100644 attic/fluttr/libnflick/nflick-auth-worker-private.h create mode 100644 attic/fluttr/libnflick/nflick-auth-worker.c create mode 100644 attic/fluttr/libnflick/nflick-auth-worker.h create mode 100644 attic/fluttr/libnflick/nflick-flickr.h create mode 100644 attic/fluttr/libnflick/nflick-get-sizes-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-get-sizes-response.c create mode 100644 attic/fluttr/libnflick/nflick-get-sizes-response.h create mode 100644 attic/fluttr/libnflick/nflick-gft-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-gft-response.c create mode 100644 attic/fluttr/libnflick/nflick-gft-response.h create mode 100644 attic/fluttr/libnflick/nflick-no-set-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-no-set-response.c create mode 100644 attic/fluttr/libnflick/nflick-no-set-response.h create mode 100644 attic/fluttr/libnflick/nflick-photo-data.c create mode 100644 attic/fluttr/libnflick/nflick-photo-data.h create mode 100644 attic/fluttr/libnflick/nflick-photo-list-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-photo-list-response.c create mode 100644 attic/fluttr/libnflick/nflick-photo-list-response.h create mode 100644 attic/fluttr/libnflick/nflick-photo-list-worker-private.h create mode 100644 attic/fluttr/libnflick/nflick-photo-list-worker.c create mode 100644 attic/fluttr/libnflick/nflick-photo-list-worker.h create mode 100644 attic/fluttr/libnflick/nflick-photo-set-private.h create mode 100644 attic/fluttr/libnflick/nflick-photo-set.c create mode 100644 attic/fluttr/libnflick/nflick-photo-set.h create mode 100644 attic/fluttr/libnflick/nflick-pixbuf-fetch-private.h create mode 100644 attic/fluttr/libnflick/nflick-pixbuf-fetch.c create mode 100644 attic/fluttr/libnflick/nflick-pixbuf-fetch.h create mode 100644 attic/fluttr/libnflick/nflick-set-list-response-private.h create mode 100644 attic/fluttr/libnflick/nflick-set-list-response.c create mode 100644 attic/fluttr/libnflick/nflick-set-list-response.h create mode 100644 attic/fluttr/libnflick/nflick-set-list-worker-private.h create mode 100644 attic/fluttr/libnflick/nflick-set-list-worker.c create mode 100644 attic/fluttr/libnflick/nflick-set-list-worker.h create mode 100644 attic/fluttr/libnflick/nflick-show-worker-private.h create mode 100644 attic/fluttr/libnflick/nflick-show-worker.c create mode 100644 attic/fluttr/libnflick/nflick-show-worker.h create mode 100644 attic/fluttr/libnflick/nflick-types.h create mode 100644 attic/fluttr/libnflick/nflick-worker-private.h create mode 100644 attic/fluttr/libnflick/nflick-worker.c create mode 100644 attic/fluttr/libnflick/nflick-worker.h create mode 100644 attic/fluttr/libnflick/nflick.h create mode 120000 attic/fluttr/ltmain.sh create mode 100644 attic/fluttr/src/Makefile.am create mode 100644 attic/fluttr/src/eggsequence.c create mode 100644 attic/fluttr/src/eggsequence.h create mode 100644 attic/fluttr/src/fluttr-auth.c create mode 100644 attic/fluttr/src/fluttr-auth.h create mode 100644 attic/fluttr/src/fluttr-behave.c create mode 100644 attic/fluttr/src/fluttr-behave.h create mode 100644 attic/fluttr/src/fluttr-library-row.c create mode 100644 attic/fluttr/src/fluttr-library-row.h create mode 100644 attic/fluttr/src/fluttr-library.c create mode 100644 attic/fluttr/src/fluttr-library.h create mode 100644 attic/fluttr/src/fluttr-list-view.c create mode 100644 attic/fluttr/src/fluttr-list-view.h create mode 100644 attic/fluttr/src/fluttr-list.c create mode 100644 attic/fluttr/src/fluttr-list.h create mode 100644 attic/fluttr/src/fluttr-photo.c create mode 100644 attic/fluttr/src/fluttr-photo.h create mode 100644 attic/fluttr/src/fluttr-set-view.c create mode 100644 attic/fluttr/src/fluttr-set-view.h create mode 100644 attic/fluttr/src/fluttr-set.c create mode 100644 attic/fluttr/src/fluttr-set.h create mode 100644 attic/fluttr/src/fluttr-settings.c create mode 100644 attic/fluttr/src/fluttr-settings.h create mode 100644 attic/fluttr/src/fluttr-spinner.c create mode 100644 attic/fluttr/src/fluttr-spinner.h create mode 100644 attic/fluttr/src/fluttr-viewer.c create mode 100644 attic/fluttr/src/fluttr-viewer.h create mode 100644 attic/fluttr/src/main.c create mode 100644 attic/gcr/Makefile create mode 100644 attic/gcr/README create mode 100644 attic/gcr/custom-cursor.c create mode 100644 attic/gcr/custom-cursor.h create mode 100644 attic/gcr/gcr.c create mode 100644 attic/gcr/gcr.h create mode 100644 attic/gcr/test.c create mode 100644 attic/mallums-magic-browser/Makefile create mode 100644 attic/mallums-magic-browser/README-mozilla create mode 100755 attic/mallums-magic-browser/assets/back.png create mode 100755 attic/mallums-magic-browser/assets/bground.png create mode 100644 attic/mallums-magic-browser/assets/document-new.png create mode 100755 attic/mallums-magic-browser/assets/forward.png create mode 100644 attic/mallums-magic-browser/assets/go-next.png create mode 100644 attic/mallums-magic-browser/assets/go-previous.png create mode 100755 attic/mallums-magic-browser/assets/tabs.png create mode 100644 attic/mallums-magic-browser/assets/toolbar-bg.png create mode 100644 attic/mallums-magic-browser/popup-factory.c create mode 100644 attic/mallums-magic-browser/popup-factory.h create mode 100644 attic/mallums-magic-browser/scroll-frame.c create mode 100644 attic/mallums-magic-browser/scroll-frame.h create mode 100644 attic/mallums-magic-browser/web-browser-mozilla.c create mode 100644 attic/mallums-magic-browser/web-browser-mozilla.h create mode 100644 attic/mallums-magic-browser/web-browser.c create mode 100644 attic/mallums-magic-browser/web-browser.h create mode 100644 attic/sqlite-model/Makefile create mode 100644 attic/sqlite-model/clutter-sqlite-model.c create mode 100644 attic/sqlite-model/clutter-sqlite-model.h create mode 100644 attic/sqlite-model/test-sqlite-model.c create mode 100644 attic/table/Makefile create mode 100644 attic/table/clutter-dominatrix.c create mode 100644 attic/table/clutter-dominatrix.h create mode 100644 attic/table/clutter-video-player.c create mode 100644 attic/table/clutter-video-player.h create mode 100644 attic/table/hand0.png create mode 100644 attic/table/hand1.png create mode 100644 attic/table/hand2.png create mode 100644 attic/table/hand3.png create mode 100644 attic/table/hand4.png create mode 100644 attic/table/hand5.png create mode 100644 attic/table/hand6.png create mode 100644 attic/table/hand7.png create mode 100644 attic/table/hand8.png create mode 100644 attic/table/pause_png.h create mode 100644 attic/table/play_png.h create mode 100644 attic/table/table.c create mode 100644 attic/widgets/Makefile create mode 100644 attic/widgets/clutter-reflect-texture.c create mode 100644 attic/widgets/clutter-reflect-texture.h create mode 100644 attic/widgets/test.c create mode 100644 attic/woohaa/AUTHORS create mode 100644 attic/woohaa/ChangeLog create mode 100644 attic/woohaa/Makefile.am create mode 100644 attic/woohaa/NEWS create mode 100644 attic/woohaa/README create mode 100755 attic/woohaa/autogen.sh create mode 100644 attic/woohaa/configure.ac create mode 100644 attic/woohaa/data/Makefile.am create mode 100644 attic/woohaa/data/arrow-down.svg create mode 100644 attic/woohaa/data/arrow-next.svg create mode 100644 attic/woohaa/data/arrow-prev.svg create mode 100644 attic/woohaa/data/arrow-up.svg create mode 100644 attic/woohaa/data/bg.png create mode 100644 attic/woohaa/data/busy.png create mode 100644 attic/woohaa/data/default-thumb.png create mode 100644 attic/woohaa/data/header.svg create mode 100644 attic/woohaa/data/play.svg create mode 100644 attic/woohaa/data/selected.svg create mode 100644 attic/woohaa/data/spinner.svg create mode 100644 attic/woohaa/eggsequence.c create mode 100644 attic/woohaa/eggsequence.h create mode 100644 attic/woohaa/totem-resources.c create mode 100644 attic/woohaa/totem-resources.h create mode 100644 attic/woohaa/util.c create mode 100644 attic/woohaa/util.h create mode 100644 attic/woohaa/wh-busy.c create mode 100644 attic/woohaa/wh-busy.h create mode 100644 attic/woohaa/wh-db.c create mode 100644 attic/woohaa/wh-db.h create mode 100644 attic/woohaa/wh-screen-video.c create mode 100644 attic/woohaa/wh-screen-video.h create mode 100644 attic/woohaa/wh-slider-menu.c create mode 100644 attic/woohaa/wh-slider-menu.h create mode 100644 attic/woohaa/wh-theme.c create mode 100644 attic/woohaa/wh-theme.h create mode 100644 attic/woohaa/wh-video-model-row.c create mode 100644 attic/woohaa/wh-video-model-row.h create mode 100644 attic/woohaa/wh-video-model.c create mode 100644 attic/woohaa/wh-video-model.h create mode 100644 attic/woohaa/wh-video-row-renderer.c create mode 100644 attic/woohaa/wh-video-row-renderer.h create mode 100644 attic/woohaa/wh-video-thumbnailer.c create mode 100644 attic/woohaa/wh-video-view.c create mode 100644 attic/woohaa/wh-video-view.h create mode 100644 attic/woohaa/woohaa.c create mode 100644 attic/youhaa/AUTHORS create mode 100644 attic/youhaa/ChangeLog create mode 100644 attic/youhaa/Makefile.am create mode 100644 attic/youhaa/NEWS create mode 100644 attic/youhaa/README create mode 100755 attic/youhaa/autogen.sh create mode 100644 attic/youhaa/configure.ac create mode 100644 attic/youhaa/data/Makefile.am create mode 100644 attic/youhaa/data/go-next.svg create mode 100644 attic/youhaa/data/go-previous.svg create mode 100644 attic/youhaa/libcurl.m4 create mode 100644 attic/youhaa/src/Makefile.am create mode 100644 attic/youhaa/src/glibcurl.c create mode 100644 attic/youhaa/src/glibcurl.h create mode 100644 attic/youhaa/src/yh-main.c create mode 100644 attic/youhaa/src/yh-theme.c create mode 100644 attic/youhaa/src/yh-theme.h create mode 100644 attic/youhaa/src/yh-youtube-browser.c create mode 100644 attic/youhaa/src/yh-youtube-browser.h create mode 100644 attic/youhaa/src/yh-youtube.c create mode 100644 attic/youhaa/src/yh-youtube.h create mode 100644 circles/Makefile create mode 100644 circles/circles.c create mode 100644 courasel/Makefile create mode 100644 courasel/accessories-text-editor.png create mode 100644 courasel/applications-games.png create mode 100644 courasel/courasel.c create mode 100644 courasel/dates.png create mode 100644 courasel/im-client.png create mode 100644 courasel/preferences-desktop-theme.png create mode 100644 courasel/tasks.png create mode 100644 courasel/utilities-terminal.png create mode 100644 courasel/web-browser.png create mode 100644 foofone/Makefile create mode 100644 foofone/button.png create mode 100644 foofone/call-background.png create mode 100644 foofone/display.png create mode 100644 foofone/foofone.c create mode 100644 gps-globe/.gitignore create mode 100644 gps-globe/AUTHORS create mode 100644 gps-globe/COPYING create mode 100644 gps-globe/ChangeLog create mode 100644 gps-globe/INSTALL create mode 100644 gps-globe/Makefile.am create mode 100644 gps-globe/NEWS create mode 100644 gps-globe/README create mode 100755 gps-globe/autogen.sh create mode 100644 gps-globe/configure.ac create mode 100644 gps-globe/data/visible-earth.jpg create mode 100644 gps-globe/src/Makefile.am create mode 100644 gps-globe/src/gpsg-enum-types.c.in create mode 100644 gps-globe/src/gpsg-enum-types.h.in create mode 100644 gps-globe/src/gpsg-main.c create mode 100644 gps-globe/src/gpsg-sphere-vertex-shader.glsl create mode 100644 gps-globe/src/gpsg-sphere-vertex-shader.h create mode 100644 gps-globe/src/gpsg-sphere.c create mode 100644 gps-globe/src/gpsg-sphere.h create mode 100644 nyancat/Makefile create mode 100644 nyancat/nyan.json create mode 100644 nyancat/nyancat.c create mode 100644 nyancat/star.png create mode 100644 object-store/Makefile create mode 100644 object-store/foo-object-store-test create mode 100644 object-store/foo-object-store.c create mode 100644 object-store/foo-object-store.h create mode 100644 object-store/foo-test-object.c create mode 100644 object-store/foo-test-object.h create mode 100644 object-store/object-store-example.c create mode 100644 object-store/object-store-test.c create mode 100644 odo/Makefile create mode 100644 odo/README create mode 100644 odo/grid.png create mode 100644 odo/neghand.png create mode 100644 odo/odo-distort-funcs.c create mode 100644 odo/odo-distort-funcs.h create mode 100644 odo/odo-texture.c create mode 100644 odo/odo-texture.h create mode 100644 odo/odo.c create mode 100644 odo/oh-logo.png create mode 100644 odo/redhand.png create mode 100644 opt/.gitignore create mode 100644 opt/AUTHORS create mode 100644 opt/ChangeLog create mode 100644 opt/Makefile.am create mode 100644 opt/NEWS create mode 100644 opt/README create mode 100755 opt/autogen.sh create mode 100644 opt/bg.png create mode 100644 opt/configure.ac create mode 100644 opt/demo.xml create mode 100644 opt/hirez/oh-present.xcf create mode 100644 opt/kitten.jpg create mode 100644 opt/kitten2.jpg create mode 100644 opt/opt-config.c create mode 100644 opt/opt-menu.c create mode 100644 opt/opt-menu.h create mode 100644 opt/opt-show.c create mode 100644 opt/opt-show.h create mode 100644 opt/opt-slide.c create mode 100644 opt/opt-slide.h create mode 100644 opt/opt-transition.c create mode 100644 opt/opt-transition.h create mode 100644 opt/opt.c create mode 100644 opt/opt.doap create mode 100644 opt/opt.dtd create mode 100644 opt/opt.h create mode 100644 opt/powers.png create mode 100644 opt/test.xml create mode 100644 packaging/clutter-toys.spec create mode 100644 patches/fix-colors.patch create mode 100644 patches/fix-image-path.patch create mode 100644 patches/map-escape-key-to-quit.patch create mode 100644 pong/Makefile create mode 100644 pong/pong-ball.png create mode 100644 pong/pong-bat.png create mode 100644 pong/pong2.c create mode 100644 ripples/Makefile create mode 100644 ripples/ripples.c create mode 100644 script-viewer/.gitignore create mode 100644 script-viewer/COPYING create mode 100644 script-viewer/ChangeLog create mode 100644 script-viewer/Makefile create mode 100644 script-viewer/README create mode 100644 script-viewer/alphas.json create mode 100644 script-viewer/behaviours.json create mode 100644 script-viewer/redhand.png create mode 100644 script-viewer/script-viewer.c create mode 100644 script-viewer/test-script.json create mode 100644 script-viewer/text.json diff --git a/README b/README new file mode 100644 index 0000000..d1dd823 --- /dev/null +++ b/README @@ -0,0 +1,32 @@ +The best way to find out about these toys is to try them out; they're +all small demos that have few/no dependencies beyond the clutter +libraries. The following is a summary of each; + +arc-clock - A small clock demo (using the cogl path API) +circles - A small spinning circles demo (using the cogl path API) +nyancat - A small nyancat made of clutter +courasel - A carousel-style menu demo +foofone - A mock-up mobile phone interface +gps-globe - The start of an app to draw a globe with your GPS pos +object-store - A ClutterModel subclass that proxies GObjects +opt - A slide-show application +odo - A mesh deformation demo set +pinpoint - A minimalistic presentation tool +pong - An unfinished pong game +ripples - A small 'ripples' effect demo (using the cogl vector-drawing + API) +script-viewer - A ClutterScript viewer + +Bitrotted toys that do not work with Clutter 1.x API yet have been placed in the attic/ + +aaina - A Flickr picture browser +astro-desktop - A mock-up desktop/palmtop application environment +fluttr - Another Flickr picture browser +gcr - A Gegl-based clutter video recorder +mallums-magic-browser - A webkit-clutter based web browser +sqlite-model - an sqlite-backed ClutterModel implementation +table - A multi-touch table style picture/video viewer (not actually + multi-touch) +widgets - A texture-reflecting actor demo +woohaa - A video browser/player +youhaa - A (currently broken) YouTube video browser diff --git a/arc-clock/Makefile b/arc-clock/Makefile new file mode 100644 index 0000000..620bbd9 --- /dev/null +++ b/arc-clock/Makefile @@ -0,0 +1,17 @@ +LIBS=`pkg-config --libs clutter-x11-1.0` +INCS=`pkg-config --cflags clutter-x11-1.0` + +QUIET_CC=@echo ' CC '$@; +QUIET_LD=@echo ' CCLD '$@; +QUIET_RM=@echo ' RM '$@; + +.c.o: + $(QUIET_CC)$(CC) -g -Wall --std=c99 $(CFLAGS) $(INCS) -c $*.c + +all: arc-clock + +arc-clock: arc-clock.o + $(QUIET_LD)$(CC) -g -Wall --std=c99 $(CFLAGS) -o $@ $< -lm $(LIBS) + +clean: + @rm -fr *.o arc-clock diff --git a/arc-clock/arc-clock.c b/arc-clock/arc-clock.c new file mode 100644 index 0000000..b455752 --- /dev/null +++ b/arc-clock/arc-clock.c @@ -0,0 +1,189 @@ +#include +#include +#include +#include + +#include +#include + +#define HAND_WIDTH 24 + +enum +{ + PM, + + SECONDS, + MINUTES, + HOURS, + + DAY, + MONTH, + + N_HANDS +}; + +static double slices[N_HANDS] = { 0.0, }; + +static ClutterActor *hands[N_HANDS] = { NULL, }; + +static const char *colors[N_HANDS] = { + "#4e9a06", + + "#edd400", + "#ce5c00", + "#cc0000", + + "#3465a4", + "#75507b" +}; + +static gboolean hide_date = FALSE; +static gboolean hide_seconds = FALSE; + +static void +hand_paint (ClutterActor *hand) +{ + guint hand_id; + + hand_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (hand), "hand-id")); + + double end_angle = slices[hand_id]; + + float radius = clutter_actor_get_width (hand) / 2.0 + 0.5; + + ClutterColor hand_color; + clutter_rectangle_get_color (CLUTTER_RECTANGLE (hand), &hand_color); + + CoglColor fill_color; + cogl_color_init_from_4ub (&fill_color, + hand_color.red, + hand_color.green, + hand_color.blue, + hand_color.alpha); + + cogl_set_source_color (&fill_color); + + cogl_path_move_to (radius, 0.0f); + cogl_path_arc (radius, radius, + radius, radius, + -90.0, + -90.0 + end_angle * 180.0 / G_PI); + cogl_path_arc (radius, radius, + radius - HAND_WIDTH, radius - HAND_WIDTH, + -90.0 + end_angle * 180.0 / G_PI, + -90.0); + cogl_path_close (); + cogl_path_fill (); + + g_signal_stop_emission_by_name (hand, "paint"); +} + +static void +on_stage_pre_paint (ClutterActor *actor) +{ + cogl_set_depth_test_enabled (TRUE); +} + +static void +on_stage_post_paint (ClutterActor *actor) +{ + cogl_set_depth_test_enabled (FALSE); +} + +static gboolean +update_slices (gpointer data G_GNUC_UNUSED) +{ + struct tm *now_tm; + time_t now; + + time (&now); + now_tm = localtime (&now); + + slices[SECONDS] = now_tm->tm_sec * G_PI / 30; + slices[MINUTES] = now_tm->tm_min * G_PI / 30; + slices[HOURS] = (now_tm->tm_hour >= 12 ? now_tm->tm_hour - 12 + : now_tm->tm_hour) * G_PI / 6; + slices[DAY] = now_tm->tm_mday * G_PI / 15; + slices[MONTH] = (now_tm->tm_mon + 1) * G_PI / 6; + + for (int i = SECONDS; i < N_HANDS; i++) + clutter_actor_queue_redraw (hands[i]); + + return TRUE; +} + +static GOptionEntry entries[] = { + { + "hide-seconds", 's', + 0, + G_OPTION_ARG_NONE, &hide_seconds, + "Hide the seconds hand", NULL + }, + { + "hide-date", 'd', + 0, + G_OPTION_ARG_NONE, &hide_date, + "Hide the date hands", NULL + }, + { NULL } +}; + +int +main (int argc, char *argv[]) +{ +#if !CLUTTER_CHECK_VERSION (1, 3, 6) +#error "You need Clutter >= 1.3.6 to compile arc-clock." +#endif + + clutter_x11_set_use_argb_visual (TRUE); + + GError *error = NULL; + clutter_init_with_args (&argc, &argv, + "Arc Clock", + entries, + NULL, + &error); + + ClutterActor *stage = clutter_stage_new (); + clutter_stage_set_title (CLUTTER_STAGE (stage), "Arc Clock"); + clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE); + clutter_stage_set_use_alpha (CLUTTER_STAGE (stage), TRUE); + clutter_actor_set_opacity (stage, 0); + + g_signal_connect (stage, "paint", G_CALLBACK (on_stage_pre_paint), NULL); + g_signal_connect_after (stage, "paint", G_CALLBACK (on_stage_post_paint), NULL); + g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); + + for (int i = SECONDS; i < N_HANDS; i++) + { + ClutterColor color; + + clutter_color_from_string (&color, colors[i]); + hands[i] = clutter_rectangle_new_with_color (&color); + clutter_actor_set_size (hands[i], (HAND_WIDTH * 3.0) * i, (HAND_WIDTH * 3.0) * i); + clutter_actor_add_constraint (hands[i], clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, 0.5)); + clutter_actor_add_constraint (hands[i], clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.5)); + g_signal_connect (hands[i], "paint", G_CALLBACK (hand_paint), NULL); + g_object_set_data (G_OBJECT (hands[i]), "hand-id", GUINT_TO_POINTER (i)); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), hands[i]); + } + + if (hide_seconds) + clutter_actor_hide (hands[SECONDS]); + + if (hide_date) + { + clutter_actor_hide (hands[DAY]); + clutter_actor_hide (hands[MONTH]); + } + + g_timeout_add_seconds ((hide_seconds ? 60 : 1), update_slices, NULL); + + update_slices (NULL); + + clutter_actor_show (stage); + + clutter_main (); + + return EXIT_SUCCESS; +} diff --git a/attic/aaina/AUTHORS b/attic/aaina/AUTHORS new file mode 100644 index 0000000..efdbb94 --- /dev/null +++ b/attic/aaina/AUTHORS @@ -0,0 +1 @@ +Neil J. Patel diff --git a/attic/aaina/ChangeLog b/attic/aaina/ChangeLog new file mode 100644 index 0000000..07e5bc5 --- /dev/null +++ b/attic/aaina/ChangeLog @@ -0,0 +1,713 @@ +2008-02-18 Chris Lord + + * configure.ac: + Bump clutter version to 0.6 + +2008-02-07 Chris Lord + + * configure.ac: + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf): + * libaaina/clutter-texture-label.c: + (clutter_texture_label_make_pixbuf): + * src/main.c: (main), (on_key_release_event), (spin_me): + Update to latest clutter 0.5 API + +2007-08-07 Neil J. Patel + + * configure.ac: + Bump to 0.4. + +2007-07-13 Neil J. Patel + + * src/aaina-slide-show.c: (on_photo_added): + * src/aaina-slide-show.h: + * src/main.c: (im_spinning_around), (main), (on_key_release_event), + (spin_me): + Move all photos to the slide show group. + Left right rotates stage. + Up starts the slide show spinning timeline. + The slide show will spin at every two minutes. + +2007-07-13 Neil J. Patel + + * src/main.c: (main): + Change spinning timeout to two minutes. + +2007-07-13 Neil J. Patel + + * src/main.c: (im_spinning_around), (main), (on_key_release_event), + (spin_me): + Added spinning of the stage via arrow keys, + Added a 1 minute timeout for spinning (needs work); + +2007-07-13 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_alpha_restore), + (aaina_photo_set_pixbuf), (aaina_photo_alpha_zoom), + (aaina_photo_init): + * src/main.c: (main): + Change the title and desc showing so they are inline on a black + background. + +2007-07-13 Neil J. Patel + + * sources/aaina-source-flickr.c: (on_info_thread_ok), + (on_pixbuf_thread_ok), (get_pixbuf): + Remove the printfs + +2007-07-13 Neil J. Patel + + * libaaina/clutter-texture-label.c: + (clutter_texture_label_make_pixbuf): + * sources/aaina-source-flickr.c: (on_info_thread_ok), + (on_pixbuf_thread_ok), (get_pixbuf): + * src/aaina-slide-show.c: (aaina_slide_show_move): + * src/main.c: (main): + Added some debugging printf's. + +2007-07-11 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_restore), + (aaina_photo_alpha_restore), (aaina_photo_set_pixbuf), + (aaina_photo_zoom), (aaina_photo_init): + Use clutter texture label. + Make the panels larger. + + * libaaina/clutter-texture-label.c: + (clutter_texture_label_make_pixbuf), (timeline_completed), + (clutter_texture_label_show), (clutter_texture_label_hide), + (clutter_texture_label_init): + Fix error on multiple show/hides. + +2007-07-11 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_init): + Change fonts. + Some spacing fixes. + +2007-07-11 Neil J. Patel + + * libaaina/Makefile.am: + * libaaina/aaina-photo.c: (aaina_photo_alpha_restore), + (aaina_photo_set_pixbuf), (aaina_photo_zoom), + (aaina_photo_alpha_zoom), (aaina_photo_init): + Added title and author display on zoom. + + * libaaina/clutter-texture-label.c: + (clutter_texture_label_make_pixbuf), (timeline_cb), + (clutter_texture_label_show), (clutter_texture_label_hide), + (clutter_texture_label_set_property), + (clutter_texture_label_get_property), + (clutter_texture_label_dispose), (clutter_texture_label_finalize), + (clutter_texture_label_class_init), (clutter_texture_label_init), + (clutter_texture_label_new_with_text), (clutter_texture_label_new), + (clutter_texture_label_get_text), (clutter_texture_label_set_text), + (clutter_texture_label_get_font_name), + (clutter_texture_label_set_font_name), + (clutter_texture_label_set_text_extents), + (clutter_texture_label_get_text_extents), + (clutter_texture_label_set_color), + (clutter_texture_label_get_color): + * libaaina/clutter-texture-label.h: + Imported Matthews crazy label for use with the zoomed photo. + + * src/main.c: (main): + Remove stray printf. + +2007-07-11 Neil J. Patel + + * src/main.c: (main), (on_key_release_event): + Quit gracefully when Esc is pressed. + +2007-07-11 Neil J. Patel + + * sources/aaina-source-flickr.c: (on_pixbuf_thread_ok), + (on_thread_ok): + Get rid of stray printfs. + +2007-07-11 Emmanuele Bassi + + * src/main.c: Use the G_OPTION_FILENAME type for the directory + command line parameter; also switch to arrays of filenames, to + allow multiple unparented directories on the comman line. + +2007-07-11 Neil J. Patel + + * libaaina/aaina-library.c: (aaina_library_init), + (aaina_library_get_pending), (aaina_library_set_pending), + (aaina_library_is_full), (aaina_library_set_max), + (aaina_library_photo_count), (aaina_library_append_photo), + (aaina_library_remove_photo): + * libaaina/aaina-library.h: + Added support for a max_photos property and a method to determine if there + are photos waiting to be added. + + * sources/aaina-source-flickr.c: (manage_queue), + (on_pixbuf_thread_ok), (get_photos): + Use new functions to determine whether it is okay to add photos. + + * src/aaina-slide-show.c: (aaina_slide_show_move): + Only delete a photo from the stream if there are photos waiting to be + input into the library. + +2007-07-10 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (update_rotation), (aaina_photo_set_property), + (aaina_photo_get_property), (aaina_photo_class_init): + Added rotation and description properties. + Honours rotation property on new pixbufs. + + * libnflick/nflick-info-response.c: (nflick_info_response_get): + * libnflick/nflick-info-response.h: + * libnflick/nflick-info-worker-private.h: + * libnflick/nflick-info-worker.c: (thread_func), + (nflick_info_worker_get): + * libnflick/nflick-info-worker.h: + * libnflick/nflick-types.h: + Added *_get functions to retrieve a photos rotation/authors real name and + description. + + * sources/aaina-source-flickr.c: (on_info_thread_ok): + Gets the rotation/real name/description info and updates the photo with it. + +2007-07-10 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_init): + Do clutter actor_show instead of clutter_actor_show_all. + + * src/aaina-slide-show.c: (restore_photo): + Check priv->zoomed is a AainaPhoto before making calls. + +2007-07-10 Neil J. Patel + + * libaaina/aaina-photo.c: + Remove the gl.h #include, which made its way back into the file. + +2007-07-10 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_set_property), (aaina_photo_get_property), + (aaina_photo_class_init): + Send a GError to clutter_texture_set_pixbuf. + Add an extra clutter_actor_show_all on texture. + + * sources/aaina-source-directory.c: (_load_photos): + Send an GError to gdk_pixbuf_new_from_file_at_scale. + +2007-07-10 Neil J. Patel + + * libaaina/aaina-library.c: (aaina_library_init), + (aaina_library_photo_count), (aaina_library_get_photo), + (aaina_library_append_photo), (aaina_library_remove_photo), + (aaina_library_foreach): + * libaaina/aaina-library.h: + Changed to use GList as a backend as we don't need the power of eggsequence. + + * libaaina/aaina-photo.c: (aaina_photo_restore), + (aaina_photo_alpha_restore), (aaina_photo_set_property), + (aaina_photo_get_property), (aaina_photo_class_init), + (aaina_photo_init): + Add the 'realname' and 'desc' properties. + Remove unused gl.h #include. + + * libnflick/Makefile.am: + * libnflick/nflick-info-response-private.h: + * libnflick/nflick-info-response.c: + (nflick_info_response_get_type), (nflick_info_response_class_init), + (nflick_info_response_init), (private_init), (private_dispose), + (nflick_info_response_dispose), (nflick_info_response_finalize), + (nflick_info_response_get), (all_fields_valid), (fill_blanks), + (parse_func), (nflick_info_response_get_property): + * libnflick/nflick-info-response.h: + * libnflick/nflick-info-worker-private.h: + * libnflick/nflick-info-worker.c: (nflick_info_worker_get_type), + (nflick_info_worker_class_init), (nflick_info_worker_init), + (private_init), (private_dispose), (nflick_info_worker_dispose), + (nflick_info_worker_finalize), (thread_func), + (nflick_info_worker_get), (nflick_info_worker_new), + (nflick_info_worker_get_property): + * libnflick/nflick-info-worker.h: + * libnflick/nflick-types.h: + Add a worker/response to get information about a photo. + + * sources/aaina-source-flickr.c: (on_info_thread_abort), + (on_info_thread_error), (on_info_thread_ok), (manage_queue), + (add_to_library), (on_pixbuf_thread_ok), (get_pixbuf), + (on_thread_ok), (get_photos), (aaina_source_flickr_init): + Limit the amount of photos added to the library to 100. + Wait until library is < 100 before adding anymore. + Make sure to unref workers, as they eat up memory. + + * src/aaina-slide-show.c: (on_photo_zoomed), (restore_photo), + (aaina_slide_show_move): + If a photo has been viewed, delete it. + +2007-07-08 Neil J. Patel + + * sources/aaina-source-flickr.c: (manage_queue), + (on_pixbuf_thread_abort), (on_pixbuf_thread_error), + (on_pixbuf_thread_ok): + Keep fecthing pixbufs even when there is an error or abort. + Check for new pics eevry 60 seconds. + +2007-07-08 Neil J. Patel + + * libnflick/nflick-show-worker.c: (thread_func): + Don't add the token as a parameter, as it isn't used for public photos. + + * sources/aaina-source-flickr.c: (on_pixbuf_thread_abort), + (on_pixbuf_thread_error), (on_pixbuf_thread_ok), (get_pixbuf), + (on_thread_ok), (aaina_source_flickr_init): + Added downloading support. + Upon download succeeding, it will add the photo to the library, and it'll + magically appear in the river. + Start aaina with -t tag to test it out. + +2007-07-07 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_property), + (aaina_photo_get_property), (aaina_photo_class_init): + Add an 'id' property. + + * libnflick/nflick-flickr.h: + Not sure why this is here, can't remember editing this :-/. Maybe its just + been a long day. + + * sources/aaina-source-flickr.c: (on_thread_ok), + (aaina_source_flickr_init): + Here's an idea, when inserting a string into a hash table, don't free + said string in the next few g_free calls, and then wonder why each call to + flickr is doubling the hash table size. + +2007-07-07 Neil J. Patel + + * libnflick/nflick-photo-search-worker.c: (thread_func): + Don't print a list of the photos it recieved, just store the list. + + * libnflick/nflick-types.h: + Fix typo in type decleration. + + * sources/aaina-source-flickr.c: (on_thread_ok), (get_photos), + (aaina_source_flickr_init): + Hashtable to store the photos. + 'take list' from the worker and chek if the photo is already in the list, + otherwise add it, + +2007-07-07 Neil J. Patel + + * sources/aaina-source-flickr.c: (on_thread_abort), + (on_thread_error), (on_thread_ok), (get_photos): + Fix stupid race condition because of wrong function signature. + Add data to the nflick worker callbacks. + +2007-07-07 Neil J. Patel + + * libnflick/nflick-photo-search-worker.c: (thread_func): + Use the passed-in value for the 'tags' attribute. + + * sources/aaina-source-flickr.c: (on_thread_abort), + (on_thread_error), (on_thread_ok), (get_photos), + (aaina_source_flickr_class_init), (aaina_source_flickr_init), + (aaina_source_flickr_new): + * sources/aaina-source-flickr.h: + Add a private instance. + Store the tags and library in the private instance for later use. + + * src/aaina-slide-show.c: (zoom_photo): + Don't go OTT when trying to find a photo, just return TRUE to the timeout, + and prevent a segfault. + +2007-07-07 Neil J. Patel + + * libnflick/Makefile.am: + * libnflick/nflick-flickr.h: + * libnflick/nflick-photo-search-response-private.h: + * libnflick/nflick-photo-search-response.c: + (nflick_photo_search_response_get_type), + (nflick_photo_search_response_class_init), + (nflick_photo_search_response_init), (private_init), + (private_dispose), (nflick_photo_search_response_take_list), + (nflick_photo_search_response_dispose), + (nflick_photo_search_response_finalize), (parse_func), + (nflick_photo_search_response_get_property): + * libnflick/nflick-photo-search-response.h: + * libnflick/nflick-photo-search-worker-private.h: + * libnflick/nflick-photo-search-worker.c: + (nflick_photo_search_worker_get_type), + (nflick_photo_search_worker_class_init), + (nflick_photo_search_worker_init), (private_init), + (private_dispose), (nflick_photo_search_worker_dispose), + (nflick_photo_search_worker_finalize), (thread_func), + (nflick_photo_search_worker_new), + (nflick_photo_search_worker_take_list), + (nflick_photo_search_worker_get_property): + * libnflick/nflick-photo-search-worker.h: + * libnflick/nflick-types.h: + * libnflick/nflick.h: + * sources/Makefile.am: + * sources/aaina-source-flickr.c: (aaina_source_flickr_class_init), + (aaina_source_flickr_init), (on_thread_abort), (on_thread_error), + (on_thread_ok), (get_photos), (aaina_source_flickr_new): + * sources/aaina-source-flickr.h: + * src/aaina-slide-show.c: + * src/main.c: (main): + Print a list of photos from flickr for a particular tag, then segfault :-) + +2007-07-06 Neil J. Patel + + * src/aaina-slide-show.c: (restore_photo), (aaina_slide_show_move): + Stopped photos being moved when they are zoomed. + +2007-07-05 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_get_dim), + (aaina_photo_set_dim), (aaina_photo_save), + (aaina_photo_alpha_restore), (aaina_photo_alpha_zoom): + * libaaina/aaina-photo.h: + Fade the dim to 0 when zooming. + Store the dim opacity, and the depth, restore both with un-zomming. + + * src/aaina-slide-show.c: (on_photo_added): + Update for new dim api. + +2007-07-05 Neil J. Patel + + * src/aaina-slide-show.c: (on_photo_added): + Tweaked the timelines to make the smaller photos move faster than the larger + ones. + +2007-07-05 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_dim), + (aaina_photo_set_pixbuf), (aaina_photo_init): + * libaaina/aaina-photo.h: + Added a 'dim' setting which, wait for it, dims the photo. No really, it + does. + + * src/aaina-slide-show.c: (on_photo_added): + Uses this 'dim' setting and sets small photos to be 'dimmer', so they appear + further away. + Each lane is sorted by size, and size deducts the photos z-order, so it + really does look like big photos are closer, small photos are further. + +2007-07-05 Neil J. Patel + + * src/aaina-slide-show.c: (on_photo_added): + Sort by depth using an algorithm a child could develop, yep its that bad, + but it is a start. + +2007-07-05 Neil J. Patel + + * src/aaina-slide-show.c: (on_photo_added): + Added z-order (not finished). + Increased number of lanes. + +2007-07-05 Emmanuele Bassi + + * src/main.c: Use clutter_init_with_args() to parse + the command line arguments and show the help. Show the + correct usage if no directory was specified. + +2007-07-01 Neil J. Patel + + * Makefile.am: + * configure.ac: + * libnflick/Makefile.am: + * libnflick/nflick-api-request-private.h: + * libnflick/nflick-api-request.c: + * libnflick/nflick-api-request.h: + * libnflick/nflick-api-response-private.h: + * libnflick/nflick-api-response.c: + * libnflick/nflick-api-response.h: + * libnflick/nflick-auth-worker-private.h: + * libnflick/nflick-auth-worker.c: + * libnflick/nflick-auth-worker.h: + * libnflick/nflick-flickr.h: + * libnflick/nflick-get-sizes-response-private.h: + * libnflick/nflick-get-sizes-response.c: + * libnflick/nflick-gft-response.c: + * libnflick/nflick-gft-response.h: + * libnflick/nflick-no-set-response-private.h: + * libnflick/nflick-no-set-response.c: + * libnflick/nflick-no-set-response.h: + * libnflick/nflick-photo-data.c: + * libnflick/nflick-photo-data.h: + * libnflick/nflick-photo-list-response-private.h: + * libnflick/nflick-photo-list-response.c: + * libnflick/nflick-photo-list-response.h: + * libnflick/nflick-photo-list-worker-private.h: + * libnflick/nflick-photo-list-worker.c: + * libnflick/nflick-photo-list-worker.h: + * libnflick/nflick-photo-set-private.h: + * libnflick/nflick-photo-set.c: + * libnflick/nflick-photo-set.h: + * libnflick/nflick-pixbuf-fetch-private.h: + * libnflick/nflick-pixbuf-fetch.c: + * libnflick/nflick-pixbuf-fetch.h: + * libnflick/nflick-set-list-response-private.h: + * libnflick/nflick-set-list-response.c: + * libnflick/nflick-set-list-response.h: + * libnflick/nflick-set-list-worker-private.h: + * libnflick/nflick-set-list-worker.c: + * libnflick/nflick-set-list-worker.h: + * libnflick/nflick-show-worker-private.h: + * libnflick/nflick-show-worker.c: + * libnflick/nflick-show-worker.h: + * libnflick/nflick-types.h: + * libnflick/nflick-worker-private.h: + * libnflick/nflick-worker.c: + * libnflick/nflick-worker.h: + * libnflick/nflick.h: + Import crazy flickr code. + +2007-07-01 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_set_property), (aaina_photo_init): + Added white border around photos. + Fixed some positioning errors. + + * sources/aaina-source-directory.c: (_load_photos): + Use the provided get/set mechanisms for pixbufs rather than g_object_set + +2007-07-01 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_init): + Init'd some private variables that I had skipped. + + * src/aaina-slide-show.c: (aaina_slide_show_move), + (on_photo_added), (aaina_slide_show_row_foreach), + (aaina_slide_show_init), (aaina_slide_show_get_default): + * src/aaina-slide-show.h: + Converted into a singleton to avoid passing around lots of pointers. + Implemented a 'never ending' stream i.e. photos which are not zoomed into, + and disappear off the end of the screen, are then moved to the end of the + stream so they get a second chance, the poor souls. + Moved all the photo adding code into a single function which is called + by the initial library-setting call, plus subsequent calls. + + * src/main.c: (main): + Updated to reflect the new aaina_slide_show_get_default () call. + +2007-07-01 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_save), + (aaina_photo_alpha_restore), (aaina_photo_alpha_zoom), + (aaina_photo_class_init), (aaina_photo_init): + * libaaina/aaina-photo.h: + Tweak the behaviours to be much smoother, especially in scaling. + + * src/aaina-slide-show.c: (zoom_photo): + Don't stop the timelines, as the whole display looks much better when the + timelines aren't frozen. + +2007-07-01 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_restore), + (aaina_photo_alpha_restore), (aaina_photo_init): + Added a behvaviour to restore the photo to its orignal state. + +2007-07-01 Neil J. Patel + + * libaaina/Makefile.am: + Remove versioning as this is a static library. + + * libaaina/aaina-photo.c: (aaina_photo_zoom), + (aaina_photo_alpha_zoom), (aaina_photo_init): + * libaaina/aaina-photo.h: + Add a zoom behaviour. + + * src/aaina-slide-show.c: (zoom_photo): + Adjust to use the new AainaPhoto zooming behaviour. + +2007-07-01 Neil J. Patel + + * src/aaina-slide-show.c: (restore_photo), (zoom_photo): + Comment your code so someone other than yourself has a chance of understanding + what you've written. + Flag the photo as 'viewed', so we don't zoom it again (when we implement + that feature). + Move some hardcoded ints into #defines. + +2007-07-01 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_save), + (aaina_photo_restore): + Saves the x, y and scale, and then restores the x, y and scale. + + * src/aaina-slide-show.c: (restore_photo), (zoom_photo), + (aaina_slide_show_set_library), (aaina_slide_show_class_init): + Implement the beginnings of the photo-zoom feature. Will pause the timelines + and zoom a randomly chosen picture for a few seconds. It will then restore the + slide show to the previous state, and start a new timeout at a random time + for the next zoom. + +2007-06-30 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_init): + Remove the wite frame for now, because it isn't working properly. + + * src/aaina-slide-show.c: (aaina_slide_show_move), + (aaina_slide_show_row_foreach), (aaina_slide_show_init), + (aaina_slide_show_new): + * src/aaina-slide-show.h: + Add all photos to the stage, instead of AainaSlideShow, as it is easier for + effects to work if they know positions are relative to the stage. + + Change the AainaSlideShow object to a standard GObject, instead of a + ClutterGroup, and this is no longer necessary. + + Convert the lanes to GLists containing pointers to the photos they manage, + rather than ClutterGroups (which adds another level to correct positioning + for effects). + + * src/main.c: (main): + Update to reflect the AainaSlideShow becoming its own object. + +2007-06-30 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_save), + (aaina_photo_get_viewed), (aaina_photo_set_viewed), + (aaina_photo_set_pixbuf), (aaina_photo_set_property), + (aaina_photo_get_property), (aaina_photo_class_init), + (aaina_photo_init): + * libaaina/aaina-photo.h: + Add a few more needed functions and properties. + + * src/aaina-slide-show.c: (aaina_slide_show_row_foreach): + Clean up code. + +2007-06-30 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf): + Keep all actors positions at 0, 0 + + * src/aaina-slide-show.c: (aaina_slide_show_row_foreach), + (aaina_slide_show_set_library): + Remove the randomising of the timelines, it doesn't work well enough for + proper use. + +2007-06-30 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_class_init), (aaina_photo_init): + Removed self-scaling, using clutter_actor_set_scale instead. + + * src/aaina-slide-show.c: (aaina_slide_show_move), + (aaina_slide_show_row_foreach), (on_photo_added), + (aaina_slide_show_set_library), (aaina_slide_show_init): + More tweaks regarding the spacing of pictures, plus added randomised + movement to each lane (so each lane has a different speed). + + * src/main.c: (main): + Fixed some spacing. + +2007-06-30 Neil J. Patel + + * src/aaina-slide-show.c: (aaina_slide_show_row_foreach), + (aaina_slide_show_set_library): + Bring all the positioning into one function, clean up the randomising. + +2007-06-29 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_get_scale), + (aaina_photo_init): + * libaaina/aaina-photo.h: + * src/aaina-slide-show.c: (_sort_lanes), + (aaina_slide_show_row_foreach), (aaina_slide_show_set_library), + (aaina_slide_show_init): + Randomise the photo arrangement, however keep them in 'lanes', which group + the photos horizontally, so we can now implement movement of those lanes at + different speeds, and different orders. + +2007-06-29 Neil J. Patel + + * src/aaina-slide-show.c: (aaina_slide_show_row_foreach), + (aaina_slide_show_set_library), (aaina_slide_show_init): + Switch to adding photos into 'lanes' depending on their y position on the + stage. + +2007-06-28 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_scale), + (aaina_photo_paint), (aaina_photo_class_init): + * libaaina/aaina-photo.h: + * src/aaina-slide-show.c: (aaina_slide_show_row_foreach): + Implement proper center-scaling for photos. + +2007-06-28 Neil J. Patel + + * libaaina/aaina-photo.c: (aaina_photo_set_pixbuf), + (aaina_photo_set_property), (aaina_photo_class_init), + (aaina_photo_init), (aaina_photo_new): + * libaaina/aaina-photo.h: + Fix setting of texture, plus add backgorund tetxure. + + * sources/aaina-source-directory.c: (_load_photos): + Load photos at half the stage dimensions. + + * src/aaina-slide-show.c: (aaina_slide_show_remove_rows), + (aaina_slide_show_row_foreach), (on_photo_added), + (aaina_slide_show_set_library), (aaina_slide_show_set_property): + Fix to actually add photos from the library, and to randomly position them. + + * src/main.c: (main): + Load the the directory source and show the stage at 1/4 size (to check the + randomness of the placement) + + +2007-06-27 Neil J. Patel + + * src/Makefile.am: + * src/main.c: (main): + Create something that resembles a main.c + +2007-06-27 Neil J. Patel + + * Makefile.am: + * configure.ac: + * libaaina/aaina-source.h: + Inheriting from the wrong object. + + * sources/Makefile.am: + * sources/aaina-source-directory.c: (_load_photos), + (aaina_source_directory_class_init), (aaina_source_directory_init), + (aaina_source_directory_new): + * sources/aaina-source-directory.h: + Added a sources directory. + Created a basic directory-based source. + + * src/aaina-slide-show.c: (aaina_slide_show_class_init): + Removed over-riding clutter_actor_paint (), but needed at the moment, + +2007-06-27 Neil J. Patel + + * libaaina/Makefile.am: + * libaaina/aaina-source.c: (aaina_source_class_init), + (aaina_source_init), (aaina_source_new): + * libaaina/aaina-source.h: + Added a source class, for different backends. + +2007-06-27 Neil J. Patel + + * AUTHORS: + * Makefile.am: + * autogen.sh: + * configure.ac: + * libaaina/Makefile.am: + * libaaina/aaina-behave.c: + * libaaina/aaina-behave.h: + * libaaina/aaina-library.c: + * libaaina/aaina-library.h: + * libaaina/aaina-photo.c: + * libaaina/aaina-photo.h: + * libaaina/eggsequence.c: + * libaaina/eggsequence.h: + * src/Makefile.am: + * src/aaina-slide-show.c: + * src/aaina-slide-show.h: + * src/main.c: + Initial import. diff --git a/attic/aaina/Makefile.am b/attic/aaina/Makefile.am new file mode 100644 index 0000000..c777c14 --- /dev/null +++ b/attic/aaina/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = libnflick libaaina sources src + +#MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/attic/aaina/NEWS b/attic/aaina/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/attic/aaina/README b/attic/aaina/README new file mode 100644 index 0000000..e69de29 diff --git a/attic/aaina/TODO b/attic/aaina/TODO new file mode 100644 index 0000000..e69de29 diff --git a/attic/aaina/autogen.sh b/attic/aaina/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/attic/aaina/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/attic/aaina/configure.ac b/attic/aaina/configure.ac new file mode 100644 index 0000000..6e18348 --- /dev/null +++ b/attic/aaina/configure.ac @@ -0,0 +1,29 @@ +AC_PREREQ(2.53) +AC_INIT(aaina, 0.1, []) +AM_INIT_AUTOMAKE() +AC_CONFIG_SRCDIR(src/main.c) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_STDC_HEADERS +AC_PROG_LIBTOOL + +PKG_CHECK_MODULES(DEPS, clutter-0.8 gdk-2.0 gtk+-2.0 neon >= 0.26 libxml-2.0) +AC_SUBST(DEPS_CFLAGS) +AC_SUBST(DEPS_LIBS) + +if test "x$GCC" = "xyes"; then + GCC_FLAGS="-g -Wall -Werror" +fi + +AC_SUBST(GCC_FLAGS) + +AC_OUTPUT([ +Makefile +libnflick/Makefile +libaaina/Makefile +sources/Makefile +src/Makefile +]) diff --git a/attic/aaina/libaaina/Makefile.am b/attic/aaina/libaaina/Makefile.am new file mode 100644 index 0000000..db9f285 --- /dev/null +++ b/attic/aaina/libaaina/Makefile.am @@ -0,0 +1,28 @@ +noinst_LTLIBRARIES = libaaina.la + +INCLUDES = \ + $(DEPS_CFLAGS) + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(GCC_CFLAGS) \ + -DDATADIR=\""$(datadir)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -Werror \ + $(NULL) + +libaaina_la_SOURCES = \ + aaina-behave.c \ + aaina-behave.h \ + aaina-library.c \ + aaina-library.h \ + aaina-photo.c \ + aaina-photo.h \ + aaina-source.c \ + aaina-source.h \ + clutter-texture-label.c \ + clutter-texture-label.h \ + eggsequence.c \ + eggsequence.h + +libaaina_la_LIBADD = $(DEPS_LIBS) +libaaina_la_LDFLAGS = diff --git a/attic/aaina/libaaina/aaina-behave.c b/attic/aaina/libaaina/aaina-behave.c new file mode 100644 index 0000000..24c5936 --- /dev/null +++ b/attic/aaina/libaaina/aaina-behave.c @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +/* This is a utility ClutterBehaviour-derived class, in which you can set the + alphanotify function. It is useful for situations where you do not need the + full capabilities of the ClutterBehvaiour class, you just want a function to + be called for each iteration along the timeline +*/ + +#include "aaina-behave.h" + +#include "math.h" + +G_DEFINE_TYPE (AainaBehave, aaina_behave, CLUTTER_TYPE_BEHAVIOUR); + +#define AAINA_BEHAVE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + AAINA_TYPE_BEHAVE, \ + AainaBehavePrivate)) + +struct _AainaBehavePrivate +{ + AainaBehaveAlphaFunc func; + gpointer data; +}; + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy) +{ + ClutterTimeline *timeline; + gint current_frame_num, n_frames; + gdouble x, sine; + + timeline = clutter_alpha_get_timeline (alpha); + + current_frame_num = clutter_timeline_get_current_frame (timeline); + n_frames = clutter_timeline_get_n_frames (timeline); + + x = (gdouble) (current_frame_num * 0.5f * M_PI) / n_frames ; + /* sine = (sin (x - (M_PI / 0.5f)) + 1.0f) * 0.5f; */ + + sine = (sin (x - (M_PI / 0.5f))) ; + + return (guint32)(sine * (gdouble) CLUTTER_ALPHA_MAX_ALPHA); +} + +guint32 +alpha_linear_inc_func (ClutterAlpha *alpha, + gpointer dummy) +{ + ClutterTimeline *timeline; + gint current_frame_num, n_frames; + gdouble x; + + timeline = clutter_alpha_get_timeline (alpha); + + current_frame_num = clutter_timeline_get_current_frame (timeline); + n_frames = clutter_timeline_get_n_frames (timeline); + + x = (gdouble) (current_frame_num) / n_frames ; + /* sine = (sin (x - (M_PI / 0.5f)) + 1.0f) * 0.5f; */ + + return (guint32)(x * (gdouble) CLUTTER_ALPHA_MAX_ALPHA); +} + +static void +aaina_behave_alpha_notify (ClutterBehaviour *behave, guint32 alpha_value) +{ + AainaBehave *aaina_behave = AAINA_BEHAVE(behave); + AainaBehavePrivate *priv; + + priv = AAINA_BEHAVE_GET_PRIVATE (aaina_behave); + + if (priv->func != NULL) { + priv->func (behave, alpha_value, priv->data); + } +} + +static void +aaina_behave_class_init (AainaBehaveClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterBehaviourClass *behave_class = CLUTTER_BEHAVIOUR_CLASS (klass); + + behave_class->alpha_notify = aaina_behave_alpha_notify; + + g_type_class_add_private (gobject_class, sizeof (AainaBehavePrivate)); +} + +static void +aaina_behave_init (AainaBehave *self) +{ + AainaBehavePrivate *priv; + + priv = AAINA_BEHAVE_GET_PRIVATE (self); + + priv->func = NULL; + priv->data = NULL; +} + +ClutterBehaviour* +aaina_behave_new (ClutterAlpha *alpha, + AainaBehaveAlphaFunc func, + gpointer data) +{ + AainaBehave *behave; + AainaBehavePrivate *priv; + + behave = g_object_new (AAINA_TYPE_BEHAVE, + "alpha", alpha, + NULL); + + priv = AAINA_BEHAVE_GET_PRIVATE (behave); + + priv->func = func; + priv->data = data; + + return CLUTTER_BEHAVIOUR(behave); +} diff --git a/attic/aaina/libaaina/aaina-behave.h b/attic/aaina/libaaina/aaina-behave.h new file mode 100644 index 0000000..dee6649 --- /dev/null +++ b/attic/aaina/libaaina/aaina-behave.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +/* This is a utility ClutterBehaviour-derived class, in which you can set the + alphanotify function. It is useful for situations where you do not need the + full capabilities of the ClutterBehvaiour class, you just want a function to + be called for each iteration along the timeline +*/ + +#ifndef _AAINA_BEHAVE_H_ +#define _AAINA_BEHAVE_H_ + +#include +#include + +#define AAINA_TYPE_BEHAVE (aaina_behave_get_type ()) + +#define AAINA_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),\ + AAINA_TYPE_BEHAVE, \ + AainaBehave)) + +#define AAINA_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_BEHAVE, \ + AainaBehaveClass)) + +#define CLUTTER_IS_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj),\ + AAINA_TYPE_BEHAVE)) + +#define CLUTTER_IS_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),\ + AAINA_TYPE_BEHAVE)) + +#define AAINA_BEHAVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_BEHAVE, \ + AainaBehaveClass)) + +typedef struct _AainaBehave AainaBehave; +typedef struct _AainaBehaveClass AainaBehaveClass; +typedef struct _AainaBehavePrivate AainaBehavePrivate; + +struct _AainaBehave +{ + ClutterBehaviour parent; +}; + +struct _AainaBehaveClass +{ + ClutterBehaviourClass parent_class; +}; + +typedef void (*AainaBehaveAlphaFunc) (ClutterBehaviour *behave, + guint32 alpha_value, + gpointer data); + +GType aaina_behave_get_type (void) G_GNUC_CONST; + +ClutterBehaviour* +aaina_behave_new (ClutterAlpha *alpha, + AainaBehaveAlphaFunc func, + gpointer data); + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy); + +guint32 +alpha_linear_inc_func (ClutterAlpha *alpha, + gpointer dummy); + +#endif /* _AAINA_BEHAVE_H_ */ + diff --git a/attic/aaina/libaaina/aaina-library.c b/attic/aaina/libaaina/aaina-library.c new file mode 100644 index 0000000..0b6aedf --- /dev/null +++ b/attic/aaina/libaaina/aaina-library.c @@ -0,0 +1,375 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ + +/* + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Matthew Allum + */ + +#include "aaina-library.h" +#include + +G_DEFINE_TYPE (AainaLibrary, aaina_library, G_TYPE_OBJECT); + +#define LIBRARY_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), AAINA_TYPE_LIBRARY, AainaLibraryPrivate)) + +typedef struct _AainaLibraryPrivate AainaLibraryPrivate; + +enum +{ + REORDERED, + PHOTO_CHANGED, + PHOTO_ADDED, + FILTER, + LAST_SIGNAL +}; + +static guint _library_signals[LAST_SIGNAL] = { 0 }; + +struct _AainaLibraryPrivate +{ + AainaFilterRowFunc filter; + gpointer filter_data; + AainaCompareRowFunc sort; + gpointer sort_data; + EggSequence *photos; + GList *list; + guint size; + guint max_photos; + gboolean pending; +}; + +static void +aaina_library_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +aaina_library_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +aaina_library_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (aaina_library_parent_class)->dispose) + G_OBJECT_CLASS (aaina_library_parent_class)->dispose (object); +} + +static void +aaina_library_finalize (GObject *object) +{ + G_OBJECT_CLASS (aaina_library_parent_class)->finalize (object); +} + +static void +aaina_library_class_init (AainaLibraryClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (AainaLibraryPrivate)); + + object_class->get_property = aaina_library_get_property; + object_class->set_property = aaina_library_set_property; + object_class->dispose = aaina_library_dispose; + object_class->finalize = aaina_library_finalize; + + _library_signals[REORDERED] = + g_signal_new ("photos-reordered", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (AainaLibraryClass, reordered), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _library_signals[FILTER] = + g_signal_new ("filter-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (AainaLibraryClass, filter_change), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _library_signals[PHOTO_CHANGED] = + g_signal_new ("photo-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (AainaLibraryClass, photo_change), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, AAINA_TYPE_PHOTO); + + _library_signals[PHOTO_ADDED] = + g_signal_new ("photo-added", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (AainaLibraryClass, photo_added), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, AAINA_TYPE_PHOTO); + +} + +static void +aaina_library_init (AainaLibrary *self) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(self); + + priv->photos = egg_sequence_new (NULL); + priv->list = NULL; + priv->size = 0; + priv->max_photos = 100; + priv->pending = FALSE; +} + +static gboolean +check_filter (AainaLibrary *library, EggSequenceIter *iter) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + gboolean res; + + if (priv->filter == NULL) + return TRUE; + + res = priv->filter(library, (AainaPhoto*)egg_sequence_get (iter), + priv->filter_data); + return res; +} + +gboolean +aaina_library_get_pending (AainaLibrary *library) +{ + AainaLibraryPrivate *priv; + + g_return_val_if_fail (AAINA_IS_LIBRARY (library), FALSE); + priv = LIBRARY_PRIVATE (library); + + return priv->pending; +} + +void +aaina_library_set_pending (AainaLibrary *library, gboolean pending) +{ + AainaLibraryPrivate *priv; + + g_return_if_fail (AAINA_IS_LIBRARY (library)); + priv = LIBRARY_PRIVATE (library); + + priv->pending = pending; +} + +gboolean +aaina_library_is_full (AainaLibrary *library) +{ + AainaLibraryPrivate *priv; + + g_return_val_if_fail (AAINA_IS_LIBRARY (library), FALSE); + priv = LIBRARY_PRIVATE (library); + + if (priv->size >= priv->max_photos) + { + return TRUE; + } + + return FALSE; +} + +void +aaina_library_set_max (AainaLibrary *library, gint max_photos) +{ + AainaLibraryPrivate *priv; + + g_return_if_fail (AAINA_IS_LIBRARY (library)); + priv = LIBRARY_PRIVATE (library); + + priv->max_photos = max_photos; +} + +guint +aaina_library_photo_count (AainaLibrary *library) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + gint n = 0; + + return priv->size; + return g_list_length (priv->list); + + if (priv->filter == NULL) + return egg_sequence_get_length (priv->photos); + + iter = egg_sequence_get_begin_iter (priv->photos); + + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) + n++; + iter = egg_sequence_iter_next (iter); + } + + return n; +} + +AainaPhoto* +aaina_library_get_photo (AainaLibrary *library, gint index) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + gint n = 0; + + return (AainaPhoto*)g_list_nth_data (priv->list, index); + + if (priv->filter == NULL) + return (AainaPhoto*)egg_sequence_get + (egg_sequence_get_iter_at_pos (priv->photos, index)); + + iter = egg_sequence_get_begin_iter (priv->photos); + + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) { + if (n == index) + return (AainaPhoto*)egg_sequence_get (iter); + n++; + } + iter = egg_sequence_iter_next (iter); + } + + return NULL; +} + +static void +on_photo_changed (GObject *obj, GParamSpec *arg1, + gpointer data) +{ + return; + AainaLibrary *library = AAINA_LIBRARY(data); + AainaLibraryPrivate *priv; + + priv = LIBRARY_PRIVATE(library); + + /* thumbnail changing does not effect ordering */ + if (!strcmp(g_param_spec_get_name(arg1), "thumbnail")) + return; + + if (priv->sort) { + egg_sequence_sort (priv->photos, + (GCompareDataFunc)priv->sort, priv->sort_data); + g_signal_emit (library, _library_signals[REORDERED], 0); + } + + g_signal_emit (library, _library_signals[PHOTO_CHANGED], 0, + AAINA_PHOTO(obj)); +} + +void +aaina_library_append_photo (AainaLibrary *library, AainaPhoto *photo) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + + g_signal_connect (photo, "notify", G_CALLBACK (on_photo_changed), library); + + /* + + if (priv->sort) + iter = egg_sequence_insert_sorted (priv->photos, (gpointer)photo, + (GCompareDataFunc)priv->sort, + priv->sort_data); + else + iter = egg_sequence_append (priv->photos, (gpointer)photo); + */ + priv->list = g_list_append (priv->list, photo); + priv->size++; + g_signal_emit (library, _library_signals[PHOTO_ADDED], 0, photo); +} + +void +aaina_library_remove_photo (AainaLibrary *library, const AainaPhoto *photo) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + + priv->list = g_list_remove (priv->list, (gconstpointer)photo); + priv->size--; +} + + +void +aaina_library_foreach (AainaLibrary *library, + AainaForeachRowFunc func, + gpointer data) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + GList *l; + + for (l = priv->list; l != NULL; l = l->next) + { + if (AAINA_IS_PHOTO (l->data)) + func (library, (AainaPhoto*)l->data, data ); + } + return; +/* + iter = egg_sequence_get_begin_iter (priv->photos); + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) + if (func (library, + (AainaPhoto*)egg_sequence_get (iter, data) == FALSE) + return; + + iter = egg_sequence_iter_next (iter); + } + */ +} + +void +aaina_library_set_sort_func (AainaLibrary *library, + AainaCompareRowFunc func, + gpointer userdata) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + + priv->sort = func; + priv->sort_data = userdata; + + if (func) { + egg_sequence_sort (priv->photos, (GCompareDataFunc)func, userdata); + g_signal_emit (library, _library_signals[REORDERED], 0); + } +} + +void +aaina_library_set_filter (AainaLibrary *library, + AainaFilterRowFunc filter, + gpointer data) +{ + AainaLibraryPrivate *priv = LIBRARY_PRIVATE(library); + AainaFilterRowFunc prev_filter; + + prev_filter = priv->filter; + + priv->filter = filter; + priv->filter_data = data; + + if (prev_filter != priv->filter) + g_signal_emit (library, _library_signals[FILTER], 0); +} + +AainaLibrary* +aaina_library_new () +{ + return g_object_new (AAINA_TYPE_LIBRARY, NULL); +} + diff --git a/attic/aaina/libaaina/aaina-library.h b/attic/aaina/libaaina/aaina-library.h new file mode 100644 index 0000000..725fd96 --- /dev/null +++ b/attic/aaina/libaaina/aaina-library.h @@ -0,0 +1,111 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ + +/* + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Matthew Allum + */ + +#ifndef _AAINA_LIBRARY +#define _AAINA_LIBRARY + +#include +#include "aaina-photo.h" +#include "eggsequence.h" + +G_BEGIN_DECLS + +#define AAINA_TYPE_LIBRARY aaina_library_get_type() + +#define AAINA_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_LIBRARY, \ + AainaLibrary)) + +#define AAINA_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_LIBRARY, \ + AainaLibraryClass)) + +#define AAINA_IS_LIBRARY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_LIBRARY)) + +#define AAINA_IS_LIBRARY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_LIBRARY)) + +#define AAINA_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_LIBRARY, \ + AainaLibraryClass)) + +typedef struct { + GObject parent; + +} AainaLibrary; + +typedef struct { + GObjectClass parent_class; + + void (*reordered) (AainaLibrary *library); + void (*filter_change) (AainaLibrary *library); + void (*photo_change) (AainaLibrary *library, AainaPhoto *photo); + void (*photo_added) (AainaLibrary *library, AainaPhoto *photo); + +} AainaLibraryClass; + +typedef gint (*AainaCompareRowFunc) (AainaPhoto *a, + AainaPhoto *b, + gpointer data); + +typedef gboolean (*AainaFilterRowFunc) (AainaLibrary *library, + AainaPhoto *photo, + gpointer data); + +typedef gboolean (*AainaForeachRowFunc) (AainaLibrary *library, + AainaPhoto *photo, + gpointer data); + +GType aaina_library_get_type (void); + +AainaLibrary* +aaina_library_new (); + +guint +aaina_library_photo_count (AainaLibrary *library); + +AainaPhoto* +aaina_library_get_photo (AainaLibrary *library, gint index); + +void +aaina_library_append_photo (AainaLibrary *library, AainaPhoto *photo); + +void +aaina_library_remove_photo (AainaLibrary *library, const AainaPhoto *photo); + +void +aaina_library_set_filter (AainaLibrary *library, + AainaFilterRowFunc filter, + gpointer data); + +void +aaina_library_set_sort_func (AainaLibrary *library, + AainaCompareRowFunc func, + gpointer userdata); + +void +aaina_library_foreach (AainaLibrary *library, + AainaForeachRowFunc func, + gpointer data); + +gboolean +aaina_library_get_pending (AainaLibrary *library); +void +aaina_library_set_pending (AainaLibrary *library, gboolean pending); + +gboolean +aaina_library_is_full (AainaLibrary *library); +void +aaina_library_set_max (AainaLibrary *library, gint max_photos); + +G_END_DECLS + +#endif diff --git a/attic/aaina/libaaina/aaina-photo.c b/attic/aaina/libaaina/aaina-photo.c new file mode 100644 index 0000000..664a4b8 --- /dev/null +++ b/attic/aaina/libaaina/aaina-photo.c @@ -0,0 +1,803 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "clutter-texture-label.h" + +#include "aaina-behave.h" + +#include "aaina-photo.h" + +G_DEFINE_TYPE (AainaPhoto, aaina_photo, CLUTTER_TYPE_GROUP); + +#define AAINA_PHOTO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + AAINA_TYPE_PHOTO, \ + AainaPhotoPrivate)) + +#define DIV 9 + +static GdkPixbuf *default_pic = NULL; + +struct _AainaPhotoPrivate +{ + GdkPixbuf *pixbuf; + gboolean visible; + + gchar *id; + gchar *title; + gchar *author; + gchar *date; + gint rotation; + gchar *desc; + + gboolean viewed; + + ClutterActor *dim; + ClutterActor *texture; + ClutterActor *bg; + + ClutterActor *title_bg; + ClutterActor *title_text; + + ClutterActor *desc_bg; + ClutterActor *desc_text; + + gdouble scale; + + /* Variables for aaina_photo_save/restore */ + gdouble save_scale; + gint save_x; + gint save_y; + guint8 save_dim; + gint save_depth; + + + ClutterTimeline *zoom_time; + ClutterTimeline *restore_time; + gint temp_x; + gint temp_y; +}; + +enum +{ + PROP_0, + PROP_PIXBUF, + PROP_ID, + PROP_TITLE, + PROP_DATE, + PROP_AUTHOR, + PROP_VIEWED, + PROP_ROTATION, + PROP_DESC +}; + +enum +{ + PHOTO_ZOOMED, + PHOTO_RESTORED, + + LAST_SIGNAL +}; + +static guint _photo_signals[LAST_SIGNAL] = { 0 }; + +guint8 +aaina_photo_get_dim (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + return clutter_actor_get_opacity (priv->dim); +} + +void +aaina_photo_set_dim (AainaPhoto *photo, guint8 dim_level) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + clutter_actor_set_opacity (priv->dim, dim_level); +} + +void +aaina_photo_save (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + /* Make the x value slightly more the the left as it is constantly moving */ + priv->save_x = clutter_actor_get_x (CLUTTER_ACTOR (photo)) - 150; + priv->save_y = clutter_actor_get_y (CLUTTER_ACTOR (photo)); + clutter_actor_get_scale (CLUTTER_ACTOR (photo), + &priv->save_scale, + &priv->save_scale); + priv->save_dim = clutter_actor_get_opacity (priv->dim); + priv->save_depth = clutter_actor_get_depth (CLUTTER_ACTOR (photo)); +} + +void +aaina_photo_restore (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + priv->temp_x = clutter_actor_get_x (CLUTTER_ACTOR (photo)); + priv->temp_y = clutter_actor_get_y (CLUTTER_ACTOR (photo)); + + clutter_actor_hide (priv->title_text); + clutter_actor_hide (priv->desc_text); + + clutter_timeline_start (priv->restore_time); +} + +static void +aaina_photo_alpha_restore (ClutterBehaviour *behave, + guint32 alpha_value, + AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + gfloat factor; + gdouble scale, new_scale; + gint x, y; + guint width, height; + gint new_x, new_y; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + x = priv->temp_x; //clutter_actor_get_x (CLUTTER_ACTOR (photo)); + y = priv->temp_y; //clutter_actor_get_y (CLUTTER_ACTOR (photo)); + clutter_actor_get_size (CLUTTER_ACTOR (priv->texture), &width, &height); + clutter_actor_get_scale (CLUTTER_ACTOR (photo), &scale, &scale); + + new_x = priv->save_x; + new_y = priv->save_y; + + if (x > new_x) + new_x = x - ((x - new_x) * factor); + else + new_x = x + ((new_x - x) * factor); + + if (y > new_y) + new_y = y - ((y - new_y) * factor); + else + new_y = y + ((new_y - y) * factor); + + //new_scale = scale - ((scale - priv->save_scale) * factor); + new_scale = 1.0 - ((1-priv->save_scale) * factor); + + clutter_actor_set_position (CLUTTER_ACTOR (photo), new_x, new_y); + clutter_actor_set_scale (CLUTTER_ACTOR (photo), new_scale, new_scale); + + clutter_actor_set_opacity (priv->dim, priv->save_dim *factor); + + /* This is the title y */ + //height += 20; + //new_y = ((height/DIV) - ((height/DIV) * factor)) * -1; + //g_object_set (priv->title_bg, "y", new_y, NULL); + //clutter_actor_set_position (priv->title_text, 20, new_y+5); + clutter_actor_set_opacity (priv->title_bg, 150 - (150*factor)); + + //new_y = (height) - ((height/DIV)*factor); + //g_object_set (priv->desc_bg, "y", new_y, NULL); + //clutter_actor_set_position (priv->desc_text, 20, new_y); + //clutter_actor_set_opacity (priv->desc_bg, 255 - (255 *factor)); + + if (factor == 1) + { + clutter_actor_set_opacity (priv->title_text, 0); + clutter_actor_set_opacity (priv->desc_text, 0); + } + + if (factor == 1) + { + clutter_actor_set_opacity (priv->dim, priv->save_dim); + clutter_actor_set_depth (CLUTTER_ACTOR (photo), priv->save_depth); + g_signal_emit (G_OBJECT (photo), _photo_signals[PHOTO_RESTORED], 0); + } + clutter_actor_queue_redraw (CLUTTER_ACTOR (photo)); +} +gdouble +aaina_photo_get_scale (AainaPhoto *photo) +{ + g_return_val_if_fail (AAINA_IS_PHOTO (photo), 1.0); + return photo->priv->scale; +} +void +aaina_photo_set_scale (AainaPhoto *photo, gdouble scale) +{ + g_return_if_fail (AAINA_IS_PHOTO (photo)); + photo->priv->scale = scale; + + clutter_actor_queue_redraw (CLUTTER_ACTOR (photo)); +} + +gboolean +aaina_photo_get_viewed (AainaPhoto *photo) +{ + g_return_val_if_fail (AAINA_IS_PHOTO (photo), TRUE); + + return photo->priv->viewed; +} + +void +aaina_photo_set_viewed (AainaPhoto *photo, gboolean viewed) +{ + g_return_if_fail (AAINA_IS_PHOTO (photo)); + + photo->priv->viewed = viewed; +} + +void +aaina_photo_set_pixbuf (AainaPhoto *photo, GdkPixbuf *pixbuf) +{ + AainaPhotoPrivate *priv; + gint width, height; + gint w, h; + GError *err = NULL; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + g_return_if_fail (GDK_IS_PIXBUF (pixbuf)); + priv = photo->priv; + + if (priv->rotation) + { + GdkPixbuf *old = pixbuf; + pixbuf = gdk_pixbuf_rotate_simple (old, 360-priv->rotation); + g_object_unref (G_OBJECT (old)); + } + + width = gdk_pixbuf_get_width (pixbuf); + height = gdk_pixbuf_get_height (pixbuf); + w = width + 20; + h = height + 20; + + /* Set up the title & desc */ + clutter_actor_set_size (priv->title_bg, width, height/4); + clutter_actor_set_position (priv->title_bg, + 10, + 10 + ( height- (height/4))); + + //clutter_actor_set_size (priv->title_text, w, h/2); + clutter_actor_set_position (priv->title_text, 20, (height-(height/4))+15); + clutter_actor_set_clip (priv->title_text, 0, 0, width, CLUTTER_STAGE_HEIGHT ()); + + //clutter_actor_set_size (priv->desc_bg, w, h/DIV); + //clutter_actor_set_position (priv->desc_bg, 0, (h - (h/9))+10); + + //clutter_actor_set_size (priv->desc_text, w, h/2); + clutter_actor_set_position (priv->desc_text, 20,(height-(height/4))+42); + + /* The 'dimming' back rectangle */ + clutter_actor_set_size (priv->dim, width+20, height+20); + clutter_actor_set_position (priv->dim, 0, 0); + + clutter_actor_set_size (priv->bg, width+20, height+20); + clutter_actor_set_position (priv->bg, 0, 0); + + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (priv->texture), + gdk_pixbuf_get_pixels (pixbuf), + gdk_pixbuf_get_has_alpha (pixbuf), + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf), + gdk_pixbuf_get_rowstride (pixbuf), + 4, 0, + &err); + + clutter_actor_set_size (priv->texture, width, height); + if (err) + g_warning ("%s\n", err->message); + + clutter_actor_set_position (priv->texture, 10, 10); + clutter_actor_show (priv->texture); +} + +static void +update_rotation (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + GdkPixbuf *old; + GdkPixbuf *new; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + old = clutter_texture_get_pixbuf (CLUTTER_TEXTURE (priv->texture)); + + if (!old) + { + g_print ("No pixbuf\n"); + return; + } + new = gdk_pixbuf_rotate_simple (old, priv->rotation); + + aaina_photo_set_pixbuf (photo, new); + + if (G_IS_OBJECT (old)) + g_object_unref (G_OBJECT (old)); +} + +void +aaina_photo_zoom (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + if (priv->title) + { + clutter_texture_label_set_text (CLUTTER_TEXTURE_LABEL (priv->title_text), + priv->title); + } + if (priv->author) + { + clutter_texture_label_set_text (CLUTTER_TEXTURE_LABEL (priv->desc_text), + priv->author); + } + clutter_actor_hide (priv->title_text); + clutter_actor_hide (priv->desc_text); + + clutter_timeline_start (priv->zoom_time); +} + +static void +aaina_photo_alpha_zoom (ClutterBehaviour *behave, + guint32 alpha_value, + AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + gfloat factor; + gdouble scale, new_scale; + gint x, y; + guint width, height; + gint new_x, new_y; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = photo->priv; + + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + x = clutter_actor_get_x (CLUTTER_ACTOR (photo)); + y = clutter_actor_get_y (CLUTTER_ACTOR (photo)); + clutter_actor_get_size (priv->texture, &width, &height); + clutter_actor_get_scale (CLUTTER_ACTOR (photo), &scale, &scale); + + new_x = CLUTTER_STAGE_WIDTH () / 4; + new_y = CLUTTER_STAGE_HEIGHT () /4; + + + if (x > new_x) + new_x = x - ((x - new_x) * factor); + else + new_x = x + ((new_x - x) * factor); + + if (y > new_y) + new_y = y - ((y - new_y) * factor); + else + new_y = y + ((new_y - y) * factor); + + new_scale = scale + ((1 - scale) * factor); + if (new_scale < scale) + new_scale = scale; + + clutter_actor_set_position (CLUTTER_ACTOR (photo), new_x, new_y); + clutter_actor_set_scale (CLUTTER_ACTOR (photo), new_scale, new_scale); + clutter_actor_set_opacity (priv->dim, + clutter_actor_get_opacity (priv->dim) + -(clutter_actor_get_opacity (priv->dim))*factor); + + /* This is the title y + height += 20; + new_y = (height/DIV) * factor * -1; + g_object_set (priv->title_bg, "y", new_y, NULL); + //g_object_set (priv->title_text, "y", (-1*(height/DIV))*factor, NULL); + clutter_actor_set_position (priv->title_text, 20, new_y+5); + */ + clutter_actor_set_opacity (priv->title_bg, 150*factor); + /* + new_y = (height- (height/DIV)) + ((height/DIV)*factor); + g_object_set (priv->desc_bg, "y", new_y, NULL); + g_object_set (priv->desc_text, "y", new_y, NULL); + clutter_actor_set_position (priv->desc_text, 20, new_y); + clutter_actor_set_opacity (priv->desc_bg, 255 *factor); + */ + if (factor == 1) + { + clutter_actor_set_opacity (priv->title_text, 255); + clutter_actor_set_opacity (priv->desc_text, 255); + clutter_actor_show (priv->title_text); + clutter_actor_show (priv->desc_text); + g_signal_emit (G_OBJECT (photo), _photo_signals[PHOTO_ZOOMED], 0); + } + clutter_actor_queue_redraw (CLUTTER_ACTOR (photo)); +} + +/* GObject stuff */ +/* +static void +aaina_photo_paint (ClutterActor *actor) +{ + AainaPhotoPrivate *priv; + + priv = AAINA_PHOTO (actor)->priv; + + glPushMatrix (); + + gfloat x, y; + guint width = CLUTTER_STAGE_WIDTH ()/2; + guint height = CLUTTER_STAGE_HEIGHT ()/2; + + clutter_actor_get_scale (actor, &priv->scale, &priv->scale); + + x = (priv->scale *width) - (width); + x /= 2; + x *= -1; + + y = (priv->scale *height) - (height); + y /= 2; + y *= -1; + + glTranslatef (x, y, 0); + glScalef (priv->scale, priv->scale, 1); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i priv; + + switch (prop_id) + { + case PROP_PIXBUF: + priv->pixbuf = g_value_get_object (value); + if (priv->pixbuf) + aaina_photo_set_pixbuf (AAINA_PHOTO (object), priv->pixbuf); + break; + + case PROP_ID: + if (priv->id) + g_free (priv->id); + priv->id = g_strdup (g_value_get_string (value)); + break; + case PROP_TITLE: + if (priv->title) + g_free (priv->title); + priv->title = g_strdup (g_value_get_string (value)); + break; + case PROP_AUTHOR: + if (priv->author) + g_free (priv->author); + priv->author = g_strdup (g_value_get_string (value)); + break; + case PROP_DATE: + if (priv->date) + g_free (priv->date); + priv->date = g_strdup (g_value_get_string (value)); + break; + case PROP_VIEWED: + priv->viewed = g_value_get_boolean (value); + break; + case PROP_ROTATION: + priv->rotation = g_value_get_int (value); + break; + case PROP_DESC: + priv->desc = g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +aaina_photo_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AainaPhotoPrivate *priv; + + g_return_if_fail (AAINA_IS_PHOTO (object)); + priv = AAINA_PHOTO (object)->priv; + + switch (prop_id) + { + case PROP_PIXBUF: + g_value_set_object (value, G_OBJECT (priv->pixbuf)); + break; + case PROP_ID: + g_value_set_string (value, priv->id); + break; + case PROP_TITLE: + g_value_set_string (value, priv->title); + break; + case PROP_AUTHOR: + g_value_set_string (value, priv->author); + break; + case PROP_DATE: + g_value_set_string (value, priv->date); + break; + case PROP_VIEWED: + g_value_set_boolean (value, priv->viewed); + break; + case PROP_ROTATION: + g_value_set_int (value, priv->rotation); + break; + case PROP_DESC: + g_value_set_string (value, priv->desc); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + static void +aaina_photo_dispose (GObject *object) +{ + G_OBJECT_CLASS (aaina_photo_parent_class)->dispose (object); +} + +static void +aaina_photo_finalize (GObject *object) +{ + G_OBJECT_CLASS (aaina_photo_parent_class)->finalize (object); +} + +static void +aaina_photo_class_init (AainaPhotoClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + //actor_class->paint = aaina_photo_paint; + + gobject_class->finalize = aaina_photo_finalize; + gobject_class->dispose = aaina_photo_dispose; + gobject_class->get_property = aaina_photo_get_property; + gobject_class->set_property = aaina_photo_set_property; + + g_type_class_add_private (gobject_class, sizeof (AainaPhotoPrivate)); + + g_object_class_install_property ( + gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "The pixbuf!", + "The GdkPixbuf to be shown", + GDK_TYPE_PIXBUF, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_ID, + g_param_spec_string ("id", + "The id", + "The id of the photo", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_TITLE, + g_param_spec_string ("title", + "The title", + "The title of the photo", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_DATE, + g_param_spec_string ("date", + "The date", + "The date the photo was taken", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + g_object_class_install_property ( + gobject_class, + PROP_AUTHOR, + g_param_spec_string ("author", + "The author", + "The athor of the photo", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_VIEWED, + g_param_spec_boolean ("viewed", + "If viewed", + "The photo has been view", + FALSE, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_ROTATION, + g_param_spec_int ("rotation", + "Rotation", + "The photos rotation", + 0, 360, 0, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_DESC, + g_param_spec_string ("desc", + "Description", + "The photos description", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + _photo_signals[PHOTO_ZOOMED] = + g_signal_new ("photo_zoomed", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AainaPhotoClass, photo_zoomed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _photo_signals[PHOTO_RESTORED] = + g_signal_new ("photo_restored", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AainaPhotoClass, photo_restored), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); +} + +static void +aaina_photo_init (AainaPhoto *photo) +{ + AainaPhotoPrivate *priv; + ClutterColor white = {0xff, 0xff, 0xff, 0xff}; + ClutterColor black = {0x00, 0x00, 0x00, 0x00}; + ClutterColor title = {0x00, 0x00, 0x00, 0xff}; + ClutterColor desc = {0xff, 0xff, 0xff, 0xdd}; + gint width, height; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + GdkPixbuf *pixbuf; + gchar *title_font; + gint font_size; + gchar *desc_font; + + g_return_if_fail (AAINA_IS_PHOTO (photo)); + priv = AAINA_PHOTO_GET_PRIVATE (photo); + + photo->priv = priv; + + priv->pixbuf = NULL; + priv->title = priv->author = priv->date = NULL; + priv->visible = TRUE; + + width = CLUTTER_STAGE_WIDTH ()/2; + height = CLUTTER_STAGE_HEIGHT ()/2; + + /* The font */ + font_size = height/12; + title_font = g_strdup_printf ("Coolvetica %d", font_size-4); + desc_font = g_strdup_printf ("Coolvetica %d", font_size-8); + + + priv->bg = clutter_rectangle_new_with_color (&white); + clutter_group_add (CLUTTER_GROUP (photo), priv->bg); + clutter_actor_show (priv->bg); + + priv->texture = clutter_texture_new (); + clutter_actor_set_size (priv->texture, width, height); + clutter_actor_set_position (priv->texture, 0, 0); + clutter_group_add (CLUTTER_GROUP (photo), priv->texture); + + priv->dim = clutter_rectangle_new_with_color (&black); + clutter_group_add (CLUTTER_GROUP (photo), priv->dim); + clutter_actor_show (priv->dim); + + clutter_actor_show (CLUTTER_ACTOR (photo)); + + /* Add the title and description actors */ + priv->title_bg = clutter_rectangle_new_with_color (&black); + clutter_actor_set_opacity (priv->title_bg, 0); + clutter_group_add (CLUTTER_GROUP (photo), priv->title_bg); + clutter_actor_show (priv->title_bg); + clutter_actor_set_opacity (priv->title_bg, 0); + + priv->title_text = clutter_texture_label_new_with_text (title_font, + "Title"); + clutter_texture_label_set_color (CLUTTER_TEXTURE_LABEL (priv->title_text), + &white); + clutter_actor_set_opacity (priv->title_text, 0); + /* + priv->title_text = clutter_label_new_full (title_font, " ", &title); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->title_text), FALSE); + */ + clutter_group_add (CLUTTER_GROUP (photo), priv->title_text); + + priv->desc_text = clutter_texture_label_new_with_text (desc_font, + "Desc"); + clutter_texture_label_set_color (CLUTTER_TEXTURE_LABEL (priv->desc_text), + &desc); + clutter_actor_set_opacity (priv->desc_text, 0); + /* + priv->desc_text = clutter_label_new_full (desc_font, " ", &desc); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->desc_text), FALSE); + clutter_label_set_alignment (CLUTTER_LABEL (priv->desc_text), + PANGO_ALIGN_CENTER); + */ + clutter_group_add (CLUTTER_GROUP (photo), priv->desc_text); + priv->zoom_time = clutter_timeline_new (60, 30); + alpha = clutter_alpha_new_full (priv->zoom_time, + alpha_sine_inc_func, + NULL, NULL); + behave = aaina_behave_new (alpha, + (AainaBehaveAlphaFunc)aaina_photo_alpha_zoom, + (gpointer)photo); + + priv->restore_time = clutter_timeline_new (120, 30); + alpha = clutter_alpha_new_full (priv->restore_time, + alpha_sine_inc_func, + NULL, NULL); + behave = aaina_behave_new (alpha, + (AainaBehaveAlphaFunc)aaina_photo_alpha_restore, + (gpointer)photo); +} + +ClutterActor* +aaina_photo_new (void) +{ + AainaPhoto *photo; + + photo = g_object_new (AAINA_TYPE_PHOTO, NULL); + + return CLUTTER_ACTOR (photo); +} + diff --git a/attic/aaina/libaaina/aaina-photo.h b/attic/aaina/libaaina/aaina-photo.h new file mode 100644 index 0000000..ec3d7db --- /dev/null +++ b/attic/aaina/libaaina/aaina-photo.h @@ -0,0 +1,117 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include +#include +#include + +#ifndef _HAVE_AAINA_PHOTO_H +#define _HAVE_AAINA_PHOTO_H + +G_BEGIN_DECLS + +#define AAINA_TYPE_PHOTO aaina_photo_get_type() + +#define AAINA_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_PHOTO, \ + AainaPhoto)) + +#define AAINA_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_PHOTO, \ + AainaPhotoClass)) + +#define AAINA_IS_PHOTO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_PHOTO)) + +#define AAINA_IS_PHOTO_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_PHOTO)) + +#define AAINA_PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_PHOTO, \ + AainaPhotoClass)) + +typedef struct _AainaPhoto AainaPhoto; +typedef struct _AainaPhotoClass AainaPhotoClass; +typedef struct _AainaPhotoPrivate AainaPhotoPrivate; + +struct _AainaPhoto +{ + ClutterGroup parent; + + /* private */ + AainaPhotoPrivate *priv; +}; + +struct _AainaPhotoClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*photo_zoomed) (AainaPhoto *photo); + void (*photo_restored) (AainaPhoto *photo); + + void (*_aaina_photo_1) (void); + void (*_aaina_photo_2) (void); + void (*_aaina_photo_3) (void); + void (*_aaina_photo_4) (void); +}; + +GType aaina_photo_get_type (void) G_GNUC_CONST; + +ClutterActor* +aaina_photo_new (void); + +void +aaina_photo_set_pixbuf (AainaPhoto *photo, GdkPixbuf *pixbuf); + +void +aaina_photo_save (AainaPhoto *photo); +void +aaina_photo_restore (AainaPhoto *photo); + +gdouble +aaina_photo_get_scale (AainaPhoto *photo); +void +aaina_photo_set_scale (AainaPhoto *photo, gdouble scale); + +gboolean +aaina_photo_get_viewed (AainaPhoto *photo); +void +aaina_photo_set_viewed (AainaPhoto *photo, gboolean viewed); + +void +aaina_photo_zoom (AainaPhoto *photo); + +void +aaina_photo_set_visible (AainaPhoto *photo, gboolean visible); + +guint8 +aaina_photo_get_dim (AainaPhoto *photo); +void +aaina_photo_set_dim (AainaPhoto *photo, guint8 dim_level); + +G_END_DECLS + +#endif diff --git a/attic/aaina/libaaina/aaina-source.c b/attic/aaina/libaaina/aaina-source.c new file mode 100644 index 0000000..e51f340 --- /dev/null +++ b/attic/aaina/libaaina/aaina-source.c @@ -0,0 +1,49 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "aaina-source.h" + +G_DEFINE_ABSTRACT_TYPE (AainaSource, aaina_source, G_TYPE_OBJECT); + +/* GObject stuff */ +static void +aaina_source_class_init (AainaSourceClass *klass) +{ + ; +} + + +static void +aaina_source_init (AainaSource *source) +{ + ; +} + +AainaSource* +aaina_source_new (AainaLibrary *library) +{ + AainaSource *source; + + source = g_object_new (AAINA_TYPE_SOURCE, NULL); + + return source; +} + diff --git a/attic/aaina/libaaina/aaina-source.h b/attic/aaina/libaaina/aaina-source.h new file mode 100644 index 0000000..707f4b3 --- /dev/null +++ b/attic/aaina/libaaina/aaina-source.h @@ -0,0 +1,81 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include + +#include "aaina-library.h" + +#ifndef _HAVE_AAINA_SOURCE_H +#define _HAVE_AAINA_SOURCE_H + +G_BEGIN_DECLS + +#define AAINA_TYPE_SOURCE aaina_source_get_type() + +#define AAINA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_SOURCE, \ + AainaSource)) + +#define AAINA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_SOURCE, \ + AainaSourceClass)) + +#define AAINA_IS_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_SOURCE)) + +#define AAINA_IS_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_SOURCE)) + +#define AAINA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_SOURCE, \ + AainaSourceClass)) + +typedef struct _AainaSource AainaSource; +typedef struct _AainaSourceClass AainaSourceClass; + +struct _AainaSource +{ + GObject parent; +}; + +struct _AainaSourceClass +{ + + GObjectClass parent_class; + + void (*_aaina_source_1) (void); + void (*_aaina_source_2) (void); + void (*_aaina_source_3) (void); + void (*_aaina_source_4) (void); +}; + +GType aaina_source_get_type (void) G_GNUC_CONST; + +AainaSource* +aaina_source_new (AainaLibrary *library); + +G_END_DECLS + +#endif diff --git a/attic/aaina/libaaina/clutter-texture-label.c b/attic/aaina/libaaina/clutter-texture-label.c new file mode 100644 index 0000000..4c90101 --- /dev/null +++ b/attic/aaina/libaaina/clutter-texture-label.c @@ -0,0 +1,718 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:clutter-label + * @short_description: Actor for displaying text + * + * #ClutterTextureLabel is a #ClutterTexture that displays text. + */ + +#include "clutter-texture-label.h" + +#include + +#define DEFAULT_FONT_NAME "Sans 10" + +G_DEFINE_TYPE (ClutterTextureLabel, clutter_texture_label, CLUTTER_TYPE_TEXTURE); + +enum +{ + PROP_0, + PROP_FONT_NAME, + PROP_TEXT, + PROP_COLOR +}; + +#define CLUTTER_TEXTURE_LABEL_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_TEXTURE_LABEL, ClutterTextureLabelPrivate)) + +struct _ClutterTextureLabelPrivate +{ + PangoLayout *layout; + PangoContext *context; + PangoFontDescription *desc; + + ClutterColor fgcol; + + gchar *text; + gchar *font_name; + + gint extents_width; + gint extents_height; + + gint detail; + gint detail_direction; + ClutterTimeline *timeline; + + gboolean visible; +}; + +static void +clutter_texture_label_make_pixbuf (ClutterTextureLabel *label) +{ + gint bx, by, w, h; + FT_Bitmap ft_bitmap; + guint8 const *ps; + guint8 *pd; + ClutterTextureLabelPrivate *priv; + ClutterTexture *texture; + GdkPixbuf *pixbuf; + + priv = label->priv; + + texture = CLUTTER_TEXTURE(label); + + if (priv->layout == NULL || priv->desc == NULL || priv->text == NULL) + { + //g_debug("*** FAIL: layout: %p , desc: %p, text %p ***", + // priv->layout, priv->desc, priv->text); + return; + } + + pango_layout_set_font_description (priv->layout, priv->desc); + pango_layout_set_text (priv->layout, priv->text, -1); + + if (priv->extents_width != 0) + { + pango_layout_set_width (priv->layout, PANGO_SCALE * priv->extents_width); + pango_layout_set_wrap (priv->layout, PANGO_WRAP_WORD); + } + + pango_layout_get_pixel_size (priv->layout, + &w, + &h); + + if (w == 0 || h == 0) + { + //g_debug("aborting w:%i , h:%i", w, h); + return; + } + + ft_bitmap.rows = h; + ft_bitmap.width = w; + ft_bitmap.pitch = (w+3) & ~3; + ft_bitmap.buffer = g_malloc0 (ft_bitmap.rows * ft_bitmap.pitch); + ft_bitmap.num_grays = 256; + ft_bitmap.pixel_mode = ft_pixel_mode_grays; + ft_bitmap.palette_mode = 0; + ft_bitmap.palette = NULL; + + pango_ft2_render_layout (&ft_bitmap, priv->layout, 0, 0); + + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, + TRUE, + 8, + ft_bitmap.width, + ft_bitmap.rows); + + for (by = 0; by < ft_bitmap.rows; by++) + { + guint8 alpha; + gint i = 0; + + pd = gdk_pixbuf_get_pixels (pixbuf) + + by * gdk_pixbuf_get_rowstride (pixbuf); + ps = ft_bitmap.buffer + by * ft_bitmap.pitch; + + alpha = *ps; + + for (bx = 0; bx < ft_bitmap.width; bx++) + { + *pd++ = priv->fgcol.red; + *pd++ = priv->fgcol.green; + *pd++ = priv->fgcol.blue; + //*pd++ = *ps++; + *pd++ = alpha; + ps++; + if (++i >= priv->detail) + { + i = 0; alpha = *ps; + } + } + } + + g_free (ft_bitmap.buffer); + + /* + g_debug("Calling set_pixbuf with text : '%s' , pixb %ix%i" + " rendered with color %i,%i,%i,%i", + priv->text, w, h, + priv->fgcol.red, + priv->fgcol.green, + priv->fgcol.blue, + priv->fgcol.alpha); + */ + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (label), + gdk_pixbuf_get_pixels (pixbuf), + gdk_pixbuf_get_has_alpha (pixbuf), + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf), + gdk_pixbuf_get_rowstride (pixbuf), + 4, 0, + NULL); + + + g_object_set (G_OBJECT (label), "sync-size", TRUE, NULL); + + /* Texture has the ref now */ + g_object_unref (pixbuf); +} + +static void +timeline_cb (ClutterTimeline *timeline, + gint frame_num, + ClutterTextureLabel *label) +{ + ClutterTextureLabelPrivate *priv; + + priv = label->priv; + + if (priv->detail_direction > 0) + priv->detail /= 2; + else + priv->detail *= 2; + + clutter_texture_label_make_pixbuf (label); +} + +static void +timeline_completed (ClutterTimeline *timeline, + ClutterActor *label) +{ + ClutterTextureLabelPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + priv = CLUTTER_TEXTURE_LABEL (label)->priv; + + if (!priv->visible) + { + CLUTTER_ACTOR_CLASS (clutter_texture_label_parent_class)->hide (label); + } +} + +static void +clutter_texture_label_show (ClutterActor *actor) +{ + ClutterTextureLabel *label; + ClutterTextureLabelPrivate *priv; + + label = CLUTTER_TEXTURE_LABEL(actor); + priv = label->priv; + + priv->detail = 512; + priv->detail_direction = 1; + priv->visible = TRUE; + + clutter_timeline_start (priv->timeline); + + CLUTTER_ACTOR_CLASS (clutter_texture_label_parent_class)->show (actor); +} + +static void +clutter_texture_label_hide (ClutterActor *actor) +{ + ClutterTextureLabel *label; + ClutterTextureLabelPrivate *priv; + + label = CLUTTER_TEXTURE_LABEL(actor); + priv = label->priv; + + priv->detail = 1; + priv->detail_direction = -1; + priv->visible = FALSE; + + clutter_timeline_rewind (priv->timeline); + clutter_timeline_start (priv->timeline); + + //CLUTTER_ACTOR_CLASS (clutter_texture_label_parent_class)->hide (actor); +} + +static void +clutter_texture_label_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterTextureLabel *label; + ClutterTextureLabelPrivate *priv; + + label = CLUTTER_TEXTURE_LABEL(object); + priv = label->priv; + + switch (prop_id) + { + case PROP_FONT_NAME: + clutter_texture_label_set_font_name (label, g_value_get_string (value)); + break; + case PROP_TEXT: + clutter_texture_label_set_text (label, g_value_get_string (value)); + break; + case PROP_COLOR: + clutter_texture_label_set_color (label, g_value_get_boxed (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_texture_label_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterTextureLabel *label; + ClutterTextureLabelPrivate *priv; + ClutterColor color; + + label = CLUTTER_TEXTURE_LABEL(object); + priv = label->priv; + + switch (prop_id) + { + case PROP_FONT_NAME: + g_value_set_string (value, priv->font_name); + break; + case PROP_TEXT: + g_value_set_string (value, priv->text); + break; + case PROP_COLOR: + clutter_texture_label_get_color (label, &color); + g_value_set_boxed (value, &color); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + +static void +clutter_texture_label_dispose (GObject *object) +{ + ClutterTextureLabel *self = CLUTTER_TEXTURE_LABEL(object); + ClutterTextureLabelPrivate *priv; + + priv = self->priv; + + if (priv->layout) + { + g_object_unref (priv->layout); + priv->layout = NULL; + } + + if (priv->desc) + { + pango_font_description_free (priv->desc); + priv->desc = NULL; + } + + g_free (priv->text); + priv->text = NULL; + + g_free (priv->font_name); + priv->font_name = NULL; + + if (priv->context) + { + g_object_unref (priv->context); + priv->context = NULL; + } + + G_OBJECT_CLASS (clutter_texture_label_parent_class)->dispose (object); +} + +static void +clutter_texture_label_finalize (GObject *object) +{ + G_OBJECT_CLASS (clutter_texture_label_parent_class)->finalize (object); +} + +static void +clutter_texture_label_class_init (ClutterTextureLabelClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class = CLUTTER_ACTOR_CLASS (clutter_texture_label_parent_class); + + actor_class->paint = parent_class->paint; + actor_class->realize = parent_class->realize; + actor_class->unrealize = parent_class->unrealize; + + actor_class->show = clutter_texture_label_show; + actor_class->hide = clutter_texture_label_hide; + + gobject_class->finalize = clutter_texture_label_finalize; + gobject_class->dispose = clutter_texture_label_dispose; + gobject_class->set_property = clutter_texture_label_set_property; + gobject_class->get_property = clutter_texture_label_get_property; + + g_object_class_install_property + (gobject_class, PROP_FONT_NAME, + g_param_spec_string ("font-name", + "Font Name", + "Pango font description", + NULL, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, PROP_TEXT, + g_param_spec_string ("text", + "Text", + "Text to render", + NULL, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, PROP_COLOR, + g_param_spec_boxed ("color", + "Font Colour", + "Font Colour", + CLUTTER_TYPE_COLOR, + G_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (ClutterTextureLabelPrivate)); +} + +static void +clutter_texture_label_init (ClutterTextureLabel *self) +{ + ClutterTextureLabelPrivate *priv; + PangoFT2FontMap *font_map; + + self->priv = priv = CLUTTER_TEXTURE_LABEL_GET_PRIVATE (self); + + priv->fgcol.red = 0; + priv->fgcol.green = 0; + priv->fgcol.blue = 0; + priv->fgcol.alpha = 255; + + priv->text = NULL; + priv->font_name = g_strdup (DEFAULT_FONT_NAME); + priv->desc = pango_font_description_from_string (priv->font_name); + + font_map = PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ()); + pango_ft2_font_map_set_resolution (font_map, 96.0, 96.0); + priv->context = pango_ft2_font_map_create_context (font_map); + + priv->layout = pango_layout_new (priv->context); + + /* See http://bugzilla.gnome.org/show_bug.cgi?id=143542 ?? + pango_ft2_font_map_substitute_changed (font_map); + g_object_unref (font_map); + */ + + priv->timeline = clutter_timeline_new (8, 20); + + g_signal_connect (priv->timeline, + "new-frame", + G_CALLBACK (timeline_cb), + self); + + g_signal_connect (priv->timeline, + "completed", + G_CALLBACK (timeline_completed), + self); + +#if 0 + g_signal_connect (self, + "show", + G_CALLBACK (show_handler), + NULL); + + g_signal_connect (self, + "hide", + G_CALLBACK (hide_handler), + NULL); +#endif + + priv->detail = 512; +} + +/** + * clutter_texture_label_new_with_text: + * @font_name: the name (and size) of the font to be used + * @text: the text to be displayed + * + * Creates a new #ClutterTextureLabel displaying @text using @font_name. + * + * Return value: a #ClutterTextureLabel + */ +ClutterActor* +clutter_texture_label_new_with_text (const gchar *font_name, + const gchar *text) +{ + ClutterActor *label; + + label = clutter_texture_label_new (); + clutter_texture_label_set_font_name (CLUTTER_TEXTURE_LABEL(label), font_name); + clutter_texture_label_set_text (CLUTTER_TEXTURE_LABEL(label), text); + + /* FIXME: Why does calling like; + * return g_object_new (CLUTTER_TYPE_TEXTURE_LABEL, + * "font-name", font_name, + * "text", text, + * NULL); + * mean text does not get rendered without color being set + * ( seems to need extra clutter_texture_label_make_pixbuf() call ) + */ + + return label; +} + +/** + * clutter_texture_label_new: + * + * Creates a new, empty #ClutterTextureLabel. + * + * Returns: the newly created #ClutterTextureLabel + */ +ClutterActor * +clutter_texture_label_new (void) +{ + return g_object_new (CLUTTER_TYPE_TEXTURE_LABEL, NULL); +} + +/** + * clutter_texture_label_get_text: + * @label: a #ClutterTextureLabel + * + * Retrieves the text displayed by @label + * + * Return value: the text of the label. The returned string is + * owned by #ClutterTextureLabel and should not be modified or freed. + */ +G_CONST_RETURN gchar * +clutter_texture_label_get_text (ClutterTextureLabel *label) +{ + g_return_val_if_fail (CLUTTER_IS_TEXTURE_LABEL (label), NULL); + + return label->priv->text; +} + +/** + * clutter_texture_label_set_text: + * @label: a #ClutterTextureLabel + * @text: the text to be displayed + * + * Sets @text as the text to be displayed by @label. + */ +void +clutter_texture_label_set_text (ClutterTextureLabel *label, + const gchar *text) +{ + ClutterTextureLabelPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + + priv = label->priv; + + g_free (priv->text); + priv->text = g_strdup (text); + + clutter_texture_label_make_pixbuf (label); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(label))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(label)); + + g_object_notify (G_OBJECT (label), "text"); +} + +/** + * clutter_texture_label_get_font_name: + * @label: a #ClutterTextureLabel + * + * Retrieves the font used by @label. + * + * Return value: a string containing the font name, in a format + * understandable by pango_font_description_from_string(). The + * string is owned by #ClutterTextureLabel and should not be modified + * or freed. + */ +G_CONST_RETURN gchar * +clutter_texture_label_get_font_name (ClutterTextureLabel *label) +{ + g_return_val_if_fail (CLUTTER_IS_TEXTURE_LABEL (label), NULL); + + return label->priv->font_name; +} + +/** + * clutter_texture_label_set_font_name: + * @label: a #ClutterTextureLabel + * @font_name: a font name and size, or %NULL for the default font + * + * Sets @font_name as the font used by @label. + * + * @font_name must be a string containing the font name and its + * size, similarly to what you would feed to the + * pango_font_description_from_string() function. + */ +void +clutter_texture_label_set_font_name (ClutterTextureLabel *label, + const gchar *font_name) +{ + ClutterTextureLabelPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + + if (!font_name || font_name[0] == '\0') + font_name = DEFAULT_FONT_NAME; + + priv = label->priv; + + if (priv->desc) + pango_font_description_free (priv->desc); + + g_free (priv->font_name); + priv->font_name = g_strdup (font_name); + + priv->desc = pango_font_description_from_string (priv->font_name); + if (!priv->desc) + { + g_warning ("Attempting to create a PangoFontDescription for " + "font name `%s', but failed.", + priv->font_name); + return; + } + + if (label->priv->text && label->priv->text[0] != '\0') + { + clutter_texture_label_make_pixbuf (label); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(label))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(label)); + } + + g_object_notify (G_OBJECT (label), "font-name"); +} + +/** + * clutter_texture_label_set_text_extents: + * @label: a #ClutterTextureLabel + * @width: the width of the text + * @height: the height of the text + * + * Sets the maximum extents of the label's text. + */ +void +clutter_texture_label_set_text_extents (ClutterTextureLabel *label, + gint width, + gint height) +{ + /* FIXME: height extents is broken.... + */ + + label->priv->extents_width = width; + label->priv->extents_height = height; + + clutter_texture_label_make_pixbuf (label); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(label))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(label)); +} + +/** + * clutter_texture_label_get_text_extents: + * @label: a #ClutterTextureLabel + * @width: return location for the width of the extents or %NULL + * @height: return location for the height of the extents or %NULL + * + * Gets the extents of the label. + */ +void +clutter_texture_label_get_text_extents (ClutterTextureLabel *label, + gint *width, + gint *height) +{ + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + + if (width) + *width = label->priv->extents_width; + + if (height) + *height = label->priv->extents_height; +} + +/** + * clutter_texture_label_set_color: + * @label: a #ClutterTextureLabel + * @color: a #ClutterColor + * + * Sets the color of @label. + */ +void +clutter_texture_label_set_color (ClutterTextureLabel *label, + const ClutterColor *color) +{ + ClutterActor *actor; + ClutterTextureLabelPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + g_return_if_fail (color != NULL); + + priv = label->priv; + priv->fgcol.red = color->red; + priv->fgcol.green = color->green; + priv->fgcol.blue = color->blue; + priv->fgcol.alpha = color->alpha; + + clutter_texture_label_make_pixbuf (label); + + actor = CLUTTER_ACTOR (label); + clutter_actor_set_opacity (actor, priv->fgcol.alpha); + + if (CLUTTER_ACTOR_IS_VISIBLE (actor)) + clutter_actor_queue_redraw (actor); + + g_object_notify (G_OBJECT (label), "color"); + +} + +/** + * clutter_texture_label_get_color: + * @label: a #ClutterTextureLabel + * @color: return location for a #ClutterColor + * + * Retrieves the color of @label. + */ +void +clutter_texture_label_get_color (ClutterTextureLabel *label, + ClutterColor *color) +{ + ClutterTextureLabelPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXTURE_LABEL (label)); + g_return_if_fail (color != NULL); + + priv = label->priv; + + color->red = priv->fgcol.red; + color->green = priv->fgcol.green; + color->blue = priv->fgcol.blue; + color->alpha = priv->fgcol.alpha; +} diff --git a/attic/aaina/libaaina/clutter-texture-label.h b/attic/aaina/libaaina/clutter-texture-label.h new file mode 100644 index 0000000..eada401 --- /dev/null +++ b/attic/aaina/libaaina/clutter-texture-label.h @@ -0,0 +1,105 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_TEXTURE_LABEL_H +#define _HAVE_CLUTTER_TEXTURE_LABEL_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_TEXTURE_LABEL clutter_texture_label_get_type() + +#define CLUTTER_TEXTURE_LABEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_TEXTURE_LABEL, ClutterTextureLabel)) + +#define CLUTTER_TEXTURE_LABEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_TEXTURE_LABEL, ClutterTextureLabelClass)) + +#define CLUTTER_IS_TEXTURE_LABEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_TEXTURE_LABEL)) + +#define CLUTTER_IS_TEXTURE_LABEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_TEXTURE_LABEL)) + +#define CLUTTER_TEXTURE_LABEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_TEXTURE_LABEL, ClutterTextureLabelClass)) + +typedef struct _ClutterTextureLabel ClutterTextureLabel; +typedef struct _ClutterTextureLabelClass ClutterTextureLabelClass; +typedef struct _ClutterTextureLabelPrivate ClutterTextureLabelPrivate; + +struct _ClutterTextureLabel +{ + ClutterTexture parent; + + /*< private >*/ + ClutterTextureLabelPrivate *priv; +}; + +struct _ClutterTextureLabelClass +{ + /*< private >*/ + ClutterTextureClass parent_class; + + void (*_clutter_texture_label_1) (void); + void (*_clutter_texture_label_2) (void); + void (*_clutter_texture_label_3) (void); + void (*_clutter_texture_label_4) (void); +}; + +GType clutter_texture_label_get_type (void) G_GNUC_CONST; + +ClutterActor * clutter_texture_label_new (void); +ClutterActor * clutter_texture_label_new_with_text (const gchar *font_name, + const gchar *text); + +void clutter_texture_label_set_text (ClutterTextureLabel *label, + const gchar *text); +G_CONST_RETURN gchar *clutter_texture_label_get_text (ClutterTextureLabel *label); +void clutter_texture_label_set_font_name (ClutterTextureLabel *label, + const gchar *font_name); +G_CONST_RETURN gchar *clutter_texture_label_get_font_name (ClutterTextureLabel *label); +void clutter_texture_label_set_color (ClutterTextureLabel *label, + const ClutterColor *color); +void clutter_texture_label_get_color (ClutterTextureLabel *label, + ClutterColor *color); +void clutter_texture_label_set_text_extents (ClutterTextureLabel *label, + gint width, + gint height); +void clutter_texture_label_get_text_extents (ClutterTextureLabel *label, + gint *width, + gint *height); + +G_END_DECLS + +#endif diff --git a/attic/aaina/libaaina/eggsequence.c b/attic/aaina/libaaina/eggsequence.c new file mode 100644 index 0000000..979a512 --- /dev/null +++ b/attic/aaina/libaaina/eggsequence.c @@ -0,0 +1,1709 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "eggsequence.h" + +typedef struct _EggSequenceNode EggSequenceNode; + +struct _EggSequence +{ + EggSequenceNode * end_node; + GDestroyNotify data_destroy_notify; + gboolean access_prohibited; +}; + +struct _EggSequenceNode +{ + gint n_nodes; + EggSequenceNode *parent; + EggSequenceNode *left; + EggSequenceNode *right; + gpointer data; /* For the end node, this field points + * to the sequence + */ +}; + +static EggSequenceNode *node_new (gpointer data); +static EggSequenceNode *node_get_first (EggSequenceNode *node); +static EggSequenceNode *node_get_last (EggSequenceNode *node); +static EggSequenceNode *node_get_prev (EggSequenceNode *node); +static EggSequenceNode *node_get_next (EggSequenceNode *node); +static gint node_get_pos (EggSequenceNode *node); +static EggSequenceNode *node_get_by_pos (EggSequenceNode *node, + gint pos); +static EggSequenceNode *node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp, + gpointer user_data); +static gint node_get_length (EggSequenceNode *node); +static void node_free (EggSequenceNode *node, + EggSequence *seq); +static void node_cut (EggSequenceNode *split); +static void node_insert_after (EggSequenceNode *node, + EggSequenceNode *second); +static void node_insert_before (EggSequenceNode *node, + EggSequenceNode *new); +static void node_unlink (EggSequenceNode *node); +static void node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +static EggSequence * +get_sequence (EggSequenceNode *node) +{ + return (EggSequence *)node_get_last (node)->data; +} + +static void +check_seq_access (EggSequence *seq) +{ + if (G_UNLIKELY (seq->access_prohibited)) + { + g_warning ("Accessing a sequence while it is " + "being sorted or searched is not allowed"); + } +} + +static void +check_iter_access (EggSequenceIter *iter) +{ + check_seq_access (get_sequence (iter)); +} + +static gboolean +is_end (EggSequenceIter *iter) +{ + EggSequence *seq = get_sequence (iter); + + return seq->end_node == iter; +} + +/* + * Public API + */ + +/** + * egg_sequence_new: + * @data_destroy: A #GDestroyNotify function, or %NULL + * + * Creates a new EggSequence. The @data_destroy function will be called + * on all items when the sequence is destroyed and on items that are + * removed from the sequence. + * + * Return value: A new #EggSequence + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_new (GDestroyNotify data_destroy) +{ + EggSequence *seq = g_new (EggSequence, 1); + seq->data_destroy_notify = data_destroy; + + seq->end_node = node_new (seq); + + seq->access_prohibited = FALSE; + + return seq; +} + +/** + * egg_sequence_free: + * @seq: a #EggSequence + * + * Frees the memory allocated for @seq. If @seq has a destroy notify + * function associated with it, that function is called on all items in + * @seq. + * + * Since: 2.14 + **/ +void +egg_sequence_free (EggSequence *seq) +{ + g_return_if_fail (seq != NULL); + + check_seq_access (seq); + + node_free (seq->end_node, seq); + + g_free (seq); +} + +/** + * egg_sequence_foreach_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * @func: a #GFunc + * @user_data: user data passed to @func + * + * Calls @func for each item in the range (@begin, @end) passing + * @user_data to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer user_data) +{ + EggSequence *seq; + EggSequenceIter *iter; + + g_return_if_fail (func != NULL); + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + seq = get_sequence (begin); + + seq->access_prohibited = TRUE; + + iter = begin; + while (iter != end) + { + EggSequenceIter *next = node_get_next (iter); + + func (iter->data, user_data); + + iter = next; + } + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_foreach: + * @seq: a #EggSequence + * @func: the function to call for each item in @seq + * @data: user data passed to @func + * + * Calls @func for each item in the sequence passing @user_data + * to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data) +{ + EggSequenceIter *begin, *end; + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + egg_sequence_foreach_range (begin, end, func, data); +} + +/** + * egg_sequence_range_get_midpoint: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Finds an iterator somewhere in the range (@begin, @end). This + * iterator will be close to the middle of the range, but is not + * guaranteed to be exactly in the middle. + * + * The @begin and @end iterators must both point to the same sequence and + * @begin must come before or be equal to @end in the sequence. + * + * Return value: A #EggSequenceIter which is close to the middle of + * the (@begin, @end) range. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_range_get_midpoint (EggSequenceIter *begin, + EggSequenceIter *end) +{ + int begin_pos, end_pos, mid_pos; + + g_return_val_if_fail (begin != NULL, NULL); + g_return_val_if_fail (end != NULL, NULL); + g_return_val_if_fail (get_sequence (begin) == get_sequence (end), NULL); + + begin_pos = node_get_pos (begin); + end_pos = node_get_pos (end); + + g_return_val_if_fail (end_pos >= begin_pos, NULL); + + mid_pos = begin_pos + (end_pos - begin_pos) / 2; + + return node_get_by_pos (begin, mid_pos); +} + +/** + * egg_sequence_iter_compare: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Returns a negative number if @a comes before @b, 0 if they are equal, + * and a positive number if @a comes after @b. + * + * The @a and @b iterators must point into the same sequence. + * + * Return value: A negative number if @a comes before @b, 0 if they are + * equal, and a positive number if @a comes after @b. + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter *b) +{ + gint a_pos, b_pos; + + g_return_val_if_fail (a != NULL, 0); + g_return_val_if_fail (b != NULL, 0); + g_return_val_if_fail (get_sequence (a) == get_sequence (b), 0); + + check_iter_access (a); + check_iter_access (b); + + a_pos = node_get_pos (a); + b_pos = node_get_pos (b); + + if (a_pos == b_pos) + return 0; + else if (a_pos > b_pos) + return 1; + else + return -1; +} + +/** + * egg_sequence_append: + * @seq: a #EggSequencePointer + * @data: the data for the new item + * + * Adds a new item to the end of @seq. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_append (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + node_insert_before (seq->end_node, node); + + return node; +} + +/** + * egg_sequence_prepend: + * @seq: a #EggSequence + * @data: the data for the new item + * + * Adds a new item to the front of @seq + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_prepend (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node, *first; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + first = node_get_first (seq->end_node); + + node_insert_before (first, node); + + return node; +} + +/** + * egg_sequence_insert_before: + * @iter: a #EggSequenceIter + * @data: the data for the new item + * + * Inserts a new item just before the item pointed to by @iter. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_before (EggSequenceIter *iter, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (iter != NULL, NULL); + + check_iter_access (iter); + + node = node_new (data); + + node_insert_before (iter, node); + + return node; +} + +/** + * egg_sequence_remove: + * @iter: a #EggSequenceIter + * + * Removes the item pointed to by @iter. It is an error to pass the + * end iterator to this function. + * + * If the sequnce has a data destroy function associated with it, this + * function is called on the data for the removed item. + * + * Since: 2.14 + **/ +void +egg_sequence_remove (EggSequenceIter *iter) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + seq = get_sequence (iter); + + node_unlink (iter); + node_free (iter, seq); +} + +/** + * egg_sequence_remove_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Removes all items in the (@begin, @end) range. + * + * If the sequence has a data destroy function associated with it, this + * function is called on the data for the removed items. + * + * Since: 2.14 + **/ +void +egg_sequence_remove_range (EggSequenceIter *begin, + EggSequenceIter *end) +{ + g_return_if_fail (get_sequence (begin) == get_sequence (end)); + + check_iter_access (begin); + check_iter_access (end); + + egg_sequence_move_range (NULL, begin, end); +} + +/** + * egg_sequence_move_range: + * @dest: a #EggSequenceIter + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Inserts the (@begin, @end) range at the destination pointed to by ptr. + * The @begin and @end iters must point into the same sequence. It is + * allowed for @dest to point to a different sequence than the one pointed + * into by @begin and @end. + * + * If @dest is NULL, the range indicated by @begin and @end is + * removed from the sequence. If @dest iter points to a place within + * the (@begin, @end) range, the range does not move. + * + * Since: 2.14 + **/ +void +egg_sequence_move_range (EggSequenceIter *dest, + EggSequenceIter *begin, + EggSequenceIter *end) +{ + EggSequence *src_seq; + EggSequenceNode *first; + + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + check_iter_access (begin); + check_iter_access (end); + if (dest) + check_iter_access (dest); + + src_seq = get_sequence (begin); + + g_return_if_fail (src_seq == get_sequence (end)); + + /* Dest points to begin or end? */ + if (dest == begin || dest == end) + return; + + /* begin comes after end? */ + if (egg_sequence_iter_compare (begin, end) >= 0) + return; + + /* dest points somewhere in the (begin, end) range? */ + if (dest && get_sequence (dest) == src_seq && + egg_sequence_iter_compare (dest, begin) > 0 && + egg_sequence_iter_compare (dest, end) < 0) + { + return; + } + + src_seq = get_sequence (begin); + + first = node_get_first (begin); + + node_cut (begin); + + node_cut (end); + + if (first != begin) + node_insert_after (node_get_last (first), end); + + if (dest) + node_insert_before (dest, begin); + else + node_free (begin, src_seq); +} + +typedef struct +{ + GCompareDataFunc cmp_func; + gpointer cmp_data; + EggSequenceNode *end_node; +} SortInfo; + +/* This function compares two iters using a normal compare + * function and user_data passed in in a SortInfo struct + */ +static gint +iter_compare (EggSequenceIter *node1, + EggSequenceIter *node2, + gpointer data) +{ + const SortInfo *info = data; + gint retval; + + if (node1 == info->end_node) + return 1; + + if (node2 == info->end_node) + return -1; + + retval = info->cmp_func (node1->data, node2->data, info->cmp_data); + + return retval; +} + +/** + * egg_sequence_sort: + * @seq: a #EggSequence + * @cmp_func: the #GCompareDataFunc used to sort @seq. This function is + * passed two items of @seq and should return 0 if they are equal, + * a negative value fi the first comes before the second, and a + * positive value if the second comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Sorts @seq using @cmp_func. + * + * Since: 2.14 + **/ +void +egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, seq->end_node }; + + check_seq_access (seq); + + egg_sequence_sort_iter (seq, iter_compare, &info); +} + +/** + * egg_sequence_insert_sorted: + * @seq: a #EggSequence + * @data: the data to insert + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Inserts @data into @queue using @func to determine the new position. + * @seq must already be sorted according to @cmp_func; otherwise the + * new position of is undefined. + * + * Return value: A #EggSequenceIter pointing to the new item. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + g_return_val_if_fail (cmp_func != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_insert_sorted_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_changed: + * @iter: A #EggSequenceIter + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Moves the data pointed to a new position as indicated by @cmp_func. This + * function should be called for items in a sequence already sorted according + * to @cmp_func whenever some aspect of an item changes so that @cmp_func + * may return different values for that item. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed (EggSequenceIter *iter, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_if_fail (!is_end (iter)); + + info.end_node = get_sequence (iter)->end_node; + check_iter_access (iter); + + egg_sequence_sort_changed_iter (iter, iter_compare, &info); +} + +/** + * egg_sequence_search: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Returns an iterator pointing to the position where @data would + * be inserted according to @cmp_func and @cmp_data. + * + * Return value: An #EggSequenceIter pointing to the position where @data + * would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_search_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_iter: + * @seq: a #EggSequence + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort(), but uses a #EggSequenceIterCompareFunc instead + * of a GCompareDataFunc as the compare function + * + * Since: 2.14 + **/ +void +egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequence *tmp; + EggSequenceNode *begin, *end; + + g_return_if_fail (seq != NULL); + g_return_if_fail (cmp_func != NULL); + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + tmp = egg_sequence_new (NULL); + + egg_sequence_move_range (egg_sequence_get_begin_iter (tmp), begin, end); + + tmp->access_prohibited = TRUE; + seq->access_prohibited = TRUE; + + while (egg_sequence_get_length (tmp) > 0) + { + EggSequenceNode *node = egg_sequence_get_begin_iter (tmp); + + node_unlink (node); + + node_insert_sorted (seq->end_node, node, seq->end_node, cmp_func, cmp_data); + } + + tmp->access_prohibited = FALSE; + seq->access_prohibited = FALSE; + + egg_sequence_free (tmp); +} + +/** + * egg_sequence_sort_changed_iter: + * @iter: a #EggSequenceIter + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort_changed(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed_iter (EggSequenceIter *iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequence *seq; + EggSequenceIter *next, *prev; + + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + /* If one of the neighbours is equal to iter, then + * don't move it. This ensures that sort_changed() is + * a stable operation. + */ + + next = node_get_next (iter); + prev = node_get_prev (iter); + + if (prev != iter && iter_cmp (prev, iter, cmp_data) == 0) + return; + + if (!is_end (next) && iter_cmp (next, iter, cmp_data) == 0) + return; + + seq = get_sequence (iter); + + seq->access_prohibited = TRUE; + + node_unlink (iter); + node_insert_sorted (seq->end_node, iter, seq->end_node, iter_cmp, cmp_data); + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_insert_sorted_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_insert_sorted(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequenceNode *new_node; + EggSequence *tmp_seq; + + check_seq_access (seq); + + /* Create a new temporary sequence and put the new node into + * that. The reason for this is that the user compare function + * will be called with the new node, and if it dereferences, + * "is_end" will be called on it. But that will crash if the + * node is not actually in a sequence. + * + * node_insert_sorted() makes sure the node is unlinked before + * is is inserted. + * + * The reason we need the "iter" versions at all is that that + * is the only kind of compare functions GtkTreeView can use. + */ + tmp_seq = egg_sequence_new (NULL); + new_node = egg_sequence_append (tmp_seq, data); + + node_insert_sorted (seq->end_node, new_node, + seq->end_node, iter_cmp, cmp_data); + + egg_sequence_free (tmp_seq); + + return new_node; +} + +/** + * egg_sequence_search_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_search(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the position in @seq + * where @data would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *node; + EggSequenceNode *dummy; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + seq->access_prohibited = TRUE; + + dummy = node_new (data); + + node = node_find_closest (seq->end_node, dummy, + seq->end_node, cmp_func, cmp_data); + + node_free (dummy, NULL); + + seq->access_prohibited = FALSE; + + return node; +} + +/** + * egg_sequence_iter_get_sequence: + * @iter: a #EggSequenceIter + * + * Returns the #EggSequence that @iter points into. + * + * Return value: The #EggSequence that @iter points into. + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_iter_get_sequence (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return get_sequence (iter); +} + +/** + * egg_sequence_get: + * @iter: a #EggSequenceIter + * + * Returns the data that @iter points to. + * + * Return value: The data that @iter points to + * + * Since: 2.14 + **/ +gpointer +egg_sequence_get (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + g_return_val_if_fail (!is_end (iter), NULL); + + return iter->data; +} + +/** + * egg_sequence_set: + * @iter: a #EggSequenceIter + * @data: new data for the item + * + * Changes the data for the item pointed to by @iter to be @data. If + * the sequence has a data destroy function associated with it, that + * function is called on the existing data that @iter pointed to. + * + * Since: 2.14 + **/ +void +egg_sequence_set (EggSequenceIter *iter, + gpointer data) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + seq = get_sequence (iter); + + /* If @data is identical to iter->data, it is destroyed + * here. This will work right in case of ref-counted objects. Also + * it is similar to what ghashtables do. + * + * For non-refcounted data it's a little less convenient, but + * code relying on self-setting not destroying would be + * pretty dubious anyway ... + */ + + if (seq->data_destroy_notify) + seq->data_destroy_notify (iter->data); + + iter->data = data; +} + +/** + * egg_sequence_get_length: + * @seq: a #EggSequence + * + * Returns the length of @seq + * + * Return value: The length of @seq + * + * Since: 2.14 + **/ +gint +egg_sequence_get_length (EggSequence *seq) +{ + return node_get_length (seq->end_node) - 1; +} + +/** + * egg_sequence_get_end_iter: + * @seq: a #EggSequence + * + * Returns the end iterator for @seg + * + * Return value: The end iterator for @seq + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_end_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + + g_assert (is_end (seq->end_node)); + + return seq->end_node; +} + +/** + * egg_sequence_get_begin_iter: + * @seq: a #EggSequence + * + * Returns the begin iterator for @seq. + * + * Return value: The begin iterator for @seq. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_begin_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + return node_get_first (seq->end_node); +} + +static int +clamp_position (EggSequence *seq, + int pos) +{ + gint len = egg_sequence_get_length (seq); + + if (pos > len || pos < 0) + pos = len; + + return pos; +} + +/* + * if pos > number of items or -1, will return end pointer + */ +/** + * egg_sequence_get_iter_at_pos: + * @seq: a #EggSequence + * @pos: a position in @seq, or -1 for the end. + * + * Returns the iterator as position @pos. If @pos is negative or larger + * than the number of items in @seq, the end iterator is returned. + * + * Return value: The #EggSequenceIter at position @pos + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos) +{ + g_return_val_if_fail (seq != NULL, NULL); + + pos = clamp_position (seq, pos); + + return node_get_by_pos (seq->end_node, pos); +} + +/** + * egg_sequence_move: + * @src: a #EggSequenceIter pointing to the item to move + * @dest: a #EggSequenceIter pointing to the position to which + * the item is moved. + * + * Move the item pointed to by @src to the position indicated by @dest. + * After calling this function @dest will point to the position immediately + * after @src. + * + * Since: 2.14 + **/ +void +egg_sequence_move (EggSequenceIter *src, + EggSequenceIter *dest) +{ + g_return_if_fail (src != NULL); + g_return_if_fail (dest != NULL); + g_return_if_fail (!is_end (src)); + + if (src == dest) + return; + + node_unlink (src); + node_insert_before (dest, src); +} + +/* EggSequenceIter */ + +/** + * egg_sequence_iter_is_end: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the end iterator + * + * Return value: Whether @iter is the end iterator. + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_end (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return is_end (iter); +} + +/** + * egg_sequence_iter_is_begin: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the begin iterator + * + * Return value: Whether @iter is the begin iterator + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_begin (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return (node_get_prev (iter) == iter); +} + +/** + * egg_sequence_iter_get_position: + * @iter: a #EggSequenceIter + * + * Returns the position of @iter + * + * Return value: The position of @iter + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_get_position (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, -1); + + return node_get_pos (iter); +} + +/** + * egg_sequence_iter_next: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the next position after @iter. If + * @iter is the end iterator, the end iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the next position after @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_next (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_next (iter); +} + +/** + * egg_sequence_iter_prev: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the previous position before @iter. If + * @iter is the begin iterator, the begin iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the previous position before + * @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_prev (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_prev (iter); +} + +/** + * egg_sequence_iter_move: + * @iter: a #EggSequenceIter + * @delta: A positive or negative number indicating how many positions away + * from @iter the returned #EggSequenceIter will be. + * + * Returns the #EggSequenceIter which is @delta positions away from @iter. + * If @iter is closer than -@delta positions to the beginning of the sequence, + * the begin iterator is returned. If @iter is closer than @delta positions + * to the end of the queue, the end iterator is returned. + * + * Return value: a #EggSequenceIter which is @delta positions away from @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_move (EggSequenceIter *iter, + gint delta) +{ + gint new_pos; + + g_return_val_if_fail (iter != NULL, NULL); + + new_pos = node_get_pos (iter) + delta; + + new_pos = clamp_position (get_sequence (iter), new_pos); + + return node_get_by_pos (iter, new_pos); +} + +/** + * egg_sequence_swap: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Swaps the items pointed to by @a and @b + * + * Since: 2.14 + **/ +void +egg_sequence_swap (EggSequenceIter *a, + EggSequenceIter *b) +{ + EggSequenceNode *leftmost, *rightmost, *rightmost_next; + int a_pos, b_pos; + + g_return_if_fail (!egg_sequence_iter_is_end (a)); + g_return_if_fail (!egg_sequence_iter_is_end (b)); + + if (a == b) + return; + + a_pos = egg_sequence_iter_get_position (a); + b_pos = egg_sequence_iter_get_position (b); + + if (a_pos > b_pos) + { + leftmost = b; + rightmost = a; + } + else + { + leftmost = a; + rightmost = b; + } + + rightmost_next = node_get_next (rightmost); + + /* Situation is now like this: + * + * ..., leftmost, ......., rightmost, rightmost_next, ... + * + */ + egg_sequence_move (rightmost, leftmost); + egg_sequence_move (leftmost, rightmost_next); +} + +/* + * Implementation of the node_* methods + */ +static void +node_update_fields (EggSequenceNode *node) +{ + g_assert (node != NULL); + + node->n_nodes = 1; + + if (node->left) + node->n_nodes += node->left->n_nodes; + + if (node->right) + node->n_nodes += node->right->n_nodes; +} + +#define NODE_LEFT_CHILD(n) (((n)->parent) && ((n)->parent->left) == (n)) +#define NODE_RIGHT_CHILD(n) (((n)->parent) && ((n)->parent->right) == (n)) + +static void +node_rotate (EggSequenceNode *node) +{ + EggSequenceNode *tmp, *old; + + g_assert (node->parent); + g_assert (node->parent != node); + + if (NODE_LEFT_CHILD (node)) + { + /* rotate right */ + tmp = node->right; + + node->right = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->left == node->right) + node->parent->left = node; + else + node->parent->right = node; + } + + g_assert (node->right); + + node->right->parent = node; + node->right->left = tmp; + + if (node->right->left) + node->right->left->parent = node->right; + + old = node->right; + } + else + { + /* rotate left */ + tmp = node->left; + + node->left = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->right == node->left) + node->parent->right = node; + else + node->parent->left = node; + } + + g_assert (node->left); + + node->left->parent = node; + node->left->right = tmp; + + if (node->left->right) + node->left->right->parent = node->left; + + old = node->left; + } + + node_update_fields (old); + node_update_fields (node); +} + +static EggSequenceNode * +splay (EggSequenceNode *node) +{ + while (node->parent) + { + if (!node->parent->parent) + { + /* zig */ + node_rotate (node); + } + else if ((NODE_LEFT_CHILD (node) && NODE_LEFT_CHILD (node->parent)) || + (NODE_RIGHT_CHILD (node) && NODE_RIGHT_CHILD (node->parent))) + { + /* zig-zig */ + node_rotate (node->parent); + node_rotate (node); + } + else + { + /* zig-zag */ + node_rotate (node); + node_rotate (node); + } + } + + return node; +} + +static EggSequenceNode * +node_new (gpointer data) +{ + EggSequenceNode *node = g_slice_new0 (EggSequenceNode); + + node->parent = NULL; + node->parent = NULL; + node->left = NULL; + node->right = NULL; + + node->data = data; + node->n_nodes = 1; + + return node; +} + +static EggSequenceNode * +find_min (EggSequenceNode *node) +{ + splay (node); + + while (node->left) + node = node->left; + + return node; +} + +static EggSequenceNode * +find_max (EggSequenceNode *node) +{ + splay (node); + + while (node->right) + node = node->right; + + return node; +} + +static EggSequenceNode * +node_get_first (EggSequenceNode *node) +{ + return splay (find_min (node)); +} + +static EggSequenceNode * +node_get_last (EggSequenceNode *node) +{ + return splay (find_max (node)); +} + +static gint +get_n_nodes (EggSequenceNode *node) +{ + if (node) + return node->n_nodes; + else + return 0; +} + +static EggSequenceNode * +node_get_by_pos (EggSequenceNode *node, + gint pos) +{ + gint i; + + g_assert (node != NULL); + + splay (node); + + while ((i = get_n_nodes (node->left)) != pos) + { + if (i < pos) + { + node = node->right; + pos -= (i + 1); + } + else + { + node = node->left; + g_assert (node->parent != NULL); + } + } + + return splay (node); +} + +static EggSequenceNode * +node_get_prev (EggSequenceNode *node) +{ + splay (node); + + if (node->left) + { + node = node->left; + while (node->right) + node = node->right; + } + + return splay (node); +} + +static EggSequenceNode * +node_get_next (EggSequenceNode *node) +{ + splay (node); + + if (node->right) + { + node = node->right; + while (node->left) + node = node->left; + } + + return splay (node); +} + +static gint +node_get_pos (EggSequenceNode *node) +{ + splay (node); + + return get_n_nodes (node->left); +} + +/* Return closest node _strictly_ bigger than @needle (does always exist because + * there is an end_node) + */ +static EggSequenceNode * +node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *best; + gint c; + + g_assert (haystack); + + haystack = splay (haystack); + + do + { + best = haystack; + + /* cmp_func can't be called with the end node (it may be user-supplied) */ + if (haystack == end) + c = 1; + else + c = cmp_func (haystack, needle, cmp_data); + + /* In the following we don't break even if c == 0. Instaed we go on searching + * along the 'bigger' nodes, so that we find the last one that is equal + * to the needle. + */ + if (c > 0) + haystack = haystack->left; + else + haystack = haystack->right; + } + while (haystack != NULL); + + /* If the best node is smaller or equal to the data, then move one step + * to the right to make sure the best one is strictly bigger than the data + */ + if (best != end && c <= 0) + best = node_get_next (best); + + return best; +} + +static void +node_free (EggSequenceNode *node, + EggSequence *seq) +{ + GQueue *stack = g_queue_new (); + + splay (node); + + g_queue_push_head (stack, node); + + while (!g_queue_is_empty (stack)) + { + node = g_queue_pop_head (stack); + + if (node) + { + g_queue_push_head (stack, node->right); + g_queue_push_head (stack, node->left); + + if (seq && seq->data_destroy_notify && node != seq->end_node) + seq->data_destroy_notify (node->data); + + g_slice_free (EggSequenceNode, node); + } + } + + g_queue_free (stack); +} + +/* Splits into two trees, left and right. + * @node will be part of the right tree + */ + +static void +node_cut (EggSequenceNode *node) +{ + splay (node); + + g_assert (node->parent == NULL); + + if (node->left) + node->left->parent = NULL; + + node->left = NULL; + node_update_fields (node); +} + +static void +node_insert_before (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_min (new)); + g_assert (new->left == NULL); + + if (node->left) + node->left->parent = new; + + new->left = node->left; + new->parent = node; + + node->left = new; + + node_update_fields (new); + node_update_fields (node); +} + +static void +node_insert_after (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_max (new)); + g_assert (new->right == NULL); + g_assert (node->parent == NULL); + + if (node->right) + node->right->parent = new; + + new->right = node->right; + new->parent = node; + + node->right = new; + + node_update_fields (new); + node_update_fields (node); +} + +static gint +node_get_length (EggSequenceNode *node) +{ + g_assert (node != NULL); + + splay (node); + return node->n_nodes; +} + +static void +node_unlink (EggSequenceNode *node) +{ + EggSequenceNode *right, *left; + + splay (node); + + left = node->left; + right = node->right; + + node->parent = node->left = node->right = NULL; + node_update_fields (node); + + if (right) + { + right->parent = NULL; + + right = node_get_first (right); + g_assert (right->left == NULL); + + right->left = left; + if (left) + { + left->parent = right; + node_update_fields (right); + } + } + else if (left) + { + left->parent = NULL; + } +} + +static void +node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *closest; + + closest = node_find_closest (node, new, end, cmp_func, cmp_data); + + node_unlink (new); + + node_insert_before (closest, new); +} + +static gint +node_calc_height (EggSequenceNode *node) +{ + gint left_height; + gint right_height; + + if (node) + { + left_height = 0; + right_height = 0; + + if (node->left) + left_height = node_calc_height (node->left); + + if (node->right) + right_height = node_calc_height (node->right); + + return MAX (left_height, right_height) + 1; + } + + return 0; +} + +/* Self test functions */ + +static void +check_node (EggSequenceNode *node) +{ + if (node) + { + g_assert (node->parent != node); + g_assert (node->n_nodes == + 1 + get_n_nodes (node->left) + get_n_nodes (node->right)); + check_node (node->left); + check_node (node->right); + } +} + +void +egg_sequence_self_test (EggSequence *seq) +{ + EggSequenceNode *node = splay (seq->end_node); + + check_node (node); +} diff --git a/attic/aaina/libaaina/eggsequence.h b/attic/aaina/libaaina/eggsequence.h new file mode 100644 index 0000000..107db47 --- /dev/null +++ b/attic/aaina/libaaina/eggsequence.h @@ -0,0 +1,120 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#ifndef __GSEQUENCE_H__ +#define __GSEQUENCE_H__ + +typedef struct _EggSequence EggSequence; +typedef struct _EggSequenceNode EggSequenceIter; + + + +typedef gint (* EggSequenceIterCompareFunc) (EggSequenceIter *a, + EggSequenceIter *b, + gpointer data); + +/* EggSequence */ +EggSequence * egg_sequence_new (GDestroyNotify data_destroy); +void egg_sequence_free (EggSequence *seq); +gint egg_sequence_get_length (EggSequence *seq); +void egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data); +void egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer data); +void egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* Getting iters */ +EggSequenceIter *egg_sequence_get_begin_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_end_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos); +EggSequenceIter *egg_sequence_append (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_prepend (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_insert_before (EggSequenceIter * iter, + gpointer data); +void egg_sequence_move (EggSequenceIter * src, + EggSequenceIter * dest); +void egg_sequence_swap (EggSequenceIter * a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +void egg_sequence_sort_changed (EggSequenceIter * iter, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_changed_iter (EggSequenceIter * iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); + +void egg_sequence_remove (EggSequenceIter * iter); +void egg_sequence_remove_range (EggSequenceIter * begin, + EggSequenceIter * end); +void egg_sequence_move_range (EggSequenceIter * iter, + EggSequenceIter * begin, + EggSequenceIter * end); +EggSequenceIter *egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* dereferencing */ +gpointer egg_sequence_get (EggSequenceIter * iter); +void egg_sequence_set (EggSequenceIter * iter, + gpointer data); + + +/* operations on EggSequenceIter * */ +gboolean egg_sequence_iter_is_begin (EggSequenceIter * iter); +gboolean egg_sequence_iter_is_end (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_next (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_prev (EggSequenceIter * iter); +gint egg_sequence_iter_get_position (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_move (EggSequenceIter * iter, + gint leap); +EggSequence * egg_sequence_iter_get_sequence (EggSequenceIter * iter); + + +/* search */ +gint egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_range_get_midpoint (EggSequenceIter * begin, + EggSequenceIter * end); + +#endif /* __GSEQUENCE_H__ */ diff --git a/attic/aaina/libnflick/Makefile.am b/attic/aaina/libnflick/Makefile.am new file mode 100644 index 0000000..344968d --- /dev/null +++ b/attic/aaina/libnflick/Makefile.am @@ -0,0 +1,75 @@ +noinst_LTLIBRARIES = libnflick.la + +INCLUDES = \ + $(DEPS_CFLAGS) + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(DEPS_CFLAGS) \ + -DDATADIR=\""$(datadir)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -Wall \ + $(NULL) + +libnflick_la_SOURCES = \ + nflick.h \ + nflick-api-request.c \ + nflick-api-request.h \ + nflick-api-request-private.h \ + nflick-api-response.c \ + nflick-api-response.h \ + nflick-api-response-private.h \ + nflick-auth-worker.c \ + nflick-auth-worker.h \ + nflick-auth-worker-private.h \ + nflick-flickr.h \ + nflick-get-sizes-response.c \ + nflick-get-sizes-response.h \ + nflick-get-sizes-response-private.h \ + nflick-gft-response.c \ + nflick-gft-response.h \ + nflick-gft-response-private.h \ + nflick-info-response.c \ + nflick-info-response.h \ + nflick-info-response-private.h \ + nflick-info-worker.c \ + nflick-info-worker.h \ + nflick-info-worker-private.h \ + nflick-no-set-response.c \ + nflick-no-set-response.h \ + nflick-no-set-response-private.h \ + nflick-photo-data.c \ + nflick-photo-data.h \ + nflick-photo-list-response.c \ + nflick-photo-list-response.h \ + nflick-photo-list-response-private.h \ + nflick-photo-list-worker.c \ + nflick-photo-list-worker.h \ + nflick-photo-list-worker-private.h \ + nflick-photo-search-worker.h \ + nflick-photo-search-worker.c \ + nflick-photo-search-worker-private.h \ + nflick-photo-search-response.c \ + nflick-photo-search-response.h \ + nflick-photo-search-response-private.h \ + nflick-photo-set.c \ + nflick-photo-set.h \ + nflick-photo-set-private.h \ + nflick-pixbuf-fetch.c \ + nflick-pixbuf-fetch.h \ + nflick-pixbuf-fetch-private.h \ + nflick-set-list-response.c \ + nflick-set-list-response.h \ + nflick-set-list-response-private.h \ + nflick-set-list-worker.c \ + nflick-set-list-worker.h \ + nflick-set-list-worker-private.h \ + nflick-show-worker.c \ + nflick-show-worker.h \ + nflick-show-worker-private.h \ + nflick-types.h \ + nflick-worker.c \ + nflick-worker.h \ + nflick-worker-private.h + +libnflick_la_LIBADD = $(DEPS_LIBS) +libnflick_la_LDFLAGS = diff --git a/attic/aaina/libnflick/nflick-api-request-private.h b/attic/aaina/libnflick/nflick-api-request-private.h new file mode 100644 index 0000000..99f84dd --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-request-private.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickApiRequestPrivate +{ + GHashTable *Hash; + gchar *Buffer; + gint32 BytesRead; +}; + +static void nflick_api_request_class_init (NFlickApiRequestClass *klass); + +static void nflick_api_request_init (NFlickApiRequest *self); + +static gboolean private_init (NFlickApiRequest *self, NFlickApiRequestPrivate *private); + +static void private_dispose (NFlickApiRequestPrivate *private); + +static void nflick_api_request_dispose (NFlickApiRequest *self); + +static void nflick_api_request_finalize (NFlickApiRequest *self); + +static gchar* get_path (NFlickApiRequest *self); + +static void foreach_composer_list (gchar *param, gchar *val, GList **list); + +static void foreach_composer_str (gchar *val, gchar **str); + +static gchar* get_path_sig (NFlickApiRequest *self); + +static void foreach_composer_list_sig (gchar *param, gchar *val, GList **list); + +static void foreach_composer_str_sig (gchar *val, gchar **str); + +static int block_reader (NFlickApiRequest *self, gchar *buffer, int len); + diff --git a/attic/aaina/libnflick/nflick-api-request.c b/attic/aaina/libnflick/nflick-api-request.c new file mode 100644 index 0000000..9986143 --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-request.c @@ -0,0 +1,396 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-api-request.h" +#include "nflick-api-request-private.h" + +GType nflick_api_request_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickApiRequestClass), + NULL, + NULL, + (GClassInitFunc) nflick_api_request_class_init, + NULL, + NULL, + sizeof (NFlickApiRequest), + 4, + (GInstanceInitFunc) nflick_api_request_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickApiRequest", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_api_request_class_init (NFlickApiRequestClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_api_request_dispose; + gobjectclass->finalize = (gpointer) nflick_api_request_finalize; + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_api_request_init (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + self->Private = NULL; + + NFlickApiRequestPrivate *priv = g_new0 (NFlickApiRequestPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickApiRequest *self, NFlickApiRequestPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + g_return_val_if_fail (private->Hash != NULL, FALSE); + + private->Buffer = NULL; + private->BytesRead = 0; + + return TRUE; +} + +static void private_dispose (NFlickApiRequestPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Hash != NULL) { + g_hash_table_destroy (private->Hash); + private->Hash = NULL; + } + + if (private->Buffer != NULL) { + g_free (private->Buffer); + private->Buffer = NULL; + } +} + +static void nflick_api_request_dispose (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_api_request_finalize (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +NFlickApiRequest* nflick_api_request_new (const gchar *method) +{ + g_return_val_if_fail (method != NULL, NULL); + + NFlickApiRequest *self = g_object_new (NFLICK_TYPE_API_REQUEST, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_METHOD, method); + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_KEY, NFLICK_FLICKR_API_KEY); + + return self; +} + +void nflick_api_request_add_parameter (NFlickApiRequest *self, + const gchar *param, const gchar *val) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + g_return_if_fail (param != NULL); + + g_hash_table_insert (self->Private->Hash, g_strdup (param), g_strdup (val)); +} + +static gchar* get_path (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + GList *list = NULL; + gchar *str = NULL; + g_hash_table_foreach (self->Private->Hash, (GHFunc) foreach_composer_list, &list); + g_list_foreach (list, (GFunc) foreach_composer_str, &str); + g_list_foreach (list, (GFunc) g_free, NULL); + + return str; +} + +static gchar* get_path_sig (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + GList *list = NULL; + gchar *str = g_strdup_printf ("%s", NFLICK_FLICKR_SHARED_SECRET); + g_hash_table_foreach (self->Private->Hash, (GHFunc) foreach_composer_list_sig, &list); + g_list_foreach (list, (GFunc) foreach_composer_str_sig, &str); + g_list_foreach (list, (GFunc) g_free, NULL); + + return str; +} + +static void foreach_composer_list (gchar *param, gchar *val, GList **list) +{ + /* Silently ignore empty vals */ + if (param == NULL || list == NULL) + return; + + gchar *str = g_strdup_printf ("%s=%s", param, val); + g_return_if_fail (str != NULL); + + *list = g_list_insert_sorted (*list, str, (GCompareFunc) strcmp); +} + +static void foreach_composer_str (gchar *val, gchar **str) +{ + /* Silently ignore empty vals */ + if (val == NULL) + return; + + gchar *old = *str; + + if (*str != NULL) { + *str = g_strdup_printf ("%s&%s", *str, val); + g_free (old); + } else + *str = g_strdup_printf ("%s", val); +} + +static void foreach_composer_list_sig (gchar *param, gchar *val, GList **list) +{ + /* Silently ignore empty vals */ + if (param == NULL || list == NULL) + return; + + gchar *str = g_strdup_printf ("%s%s", param, val); + g_return_if_fail (str != NULL); + + *list = g_list_insert_sorted (*list, str, (GCompareFunc) strcmp); +} + +static void foreach_composer_str_sig (gchar *val, gchar **str) +{ + /* Silently ignore empty vals */ + if (val == NULL) + return; + + gchar *old = *str; + + if (*str != NULL) { + *str = g_strdup_printf ("%s%s", *str, val); + g_free (old); + } else + *str = g_strdup_printf ("%s", val); +} + +gboolean nflick_api_request_sign (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + + gchar *path_sig = NULL; + gpointer ctx = NULL; + gpointer ctx_output = NULL; + gchar *ascii = NULL; + gboolean res = TRUE; + + path_sig = get_path_sig (self); + if (path_sig == NULL) + goto Failure; + + ctx = ne_md5_create_ctx (); + if (ctx == NULL) + goto Failure; + + ne_md5_process_bytes (path_sig, strlen (path_sig), ctx); + ctx_output = g_malloc (16); + if (ctx_output == NULL) + goto Failure; + + ne_md5_finish_ctx (ctx, ctx_output); + ascii = g_malloc (33); + if (ascii == NULL) + goto Failure; + + ne_md5_to_ascii (ctx_output, ascii); + if (ascii [32] != 0) + goto Failure; + + /* Now it's time to sign it... */ + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_SIGNATURE, ascii); + + goto Finish; + +Failure: + res = FALSE; + g_warning ("Failure during md5 computation/signing"); + +Finish: + if (path_sig != NULL) + g_free (path_sig); + if (ctx != NULL) + g_free (ctx); + if (ctx_output != NULL) + g_free (ctx_output); + if (ascii != NULL) + g_free (ascii); + + return res; +} + +static int block_reader (NFlickApiRequest *self, gchar *buffer, int len) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), -1); + + if (self->Private->Buffer == NULL) { + self->Private->Buffer = g_malloc (len + 1); + memcpy (self->Private->Buffer, buffer, len); + self->Private->Buffer [len] = 0; + self->Private->BytesRead = 0; + } else { + gchar *old_ptr = self->Private->Buffer; + self->Private->Buffer = g_malloc (self->Private->BytesRead + len + 1); + memcpy (self->Private->Buffer, old_ptr, self->Private->BytesRead); + memcpy (self->Private->Buffer + self->Private->BytesRead, buffer, len); + self->Private->Buffer [len + self->Private->BytesRead] = 0; + + g_free (old_ptr); + } + + self->Private->BytesRead += len; + return 0; +} + +gboolean nflick_api_request_exec (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + + gchar *path_str = NULL; /* The full path */ + gchar *uri_str = NULL; /* The actual uri to use */ + ne_uri *uri = NULL; /* Neon uri */ + ne_request *request = NULL; /* Http request */ + ne_session *session = NULL; /* Neon session */ + gboolean result = TRUE; /* result */ + + path_str = get_path (self); + if (path_str == NULL) { + result = FALSE; + goto Done; + } + + uri_str = g_strdup_printf ("%s?%s", NFLICK_FLICKR_REST_END_POINT, path_str); + if (uri_str == NULL) { + result = FALSE; + goto Done; + } + + uri = g_new0 (ne_uri, 1); + if (uri == NULL) { + result = FALSE; + goto Done; + } + + /* Fill-out the params */ + uri->scheme = "http"; + uri->port = ne_uri_defaultport (uri->scheme); + uri->host = NFLICK_FLICKR_HOST; + uri->path = uri_str; + + /* Create the session */ + session = ne_session_create (uri->scheme, uri->host, uri->port); + if (session == NULL) { + result = FALSE; + goto Done; + } + + /* Create the request */ + request = ne_request_create (session, "GET", uri->path); + if (request == NULL) { + result = FALSE; + goto Done; + } + + ne_add_response_body_reader (request, ne_accept_always, (gpointer) block_reader, self); + + result == (ne_request_dispatch (request) == NE_OK) ? TRUE : FALSE; + if (self->Private->Buffer == NULL) + result = FALSE; + +Done: + if (path_str != NULL) + g_free (path_str); + + if (uri_str != NULL) + g_free (uri_str); + + if (uri != NULL) + g_free (uri); + + if (session != NULL) + ne_session_destroy (session); + + if (request != NULL) + ne_request_destroy (request); + + return result; +} + +gchar* nflick_api_request_take_buffer (NFlickApiRequest *self) + +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + gchar *buf = self->Private->Buffer; + self->Private->Buffer = NULL; + + return buf; +} diff --git a/attic/aaina/libnflick/nflick-api-request.h b/attic/aaina/libnflick/nflick-api-request.h new file mode 100644 index 0000000..8853e46 --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-request.h @@ -0,0 +1,62 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAPIREQUEST_H__ +#define __NFLICKAPIREQUEST_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickApiRequest +{ + GObject Parent; + NFlickApiRequestPrivate *Private; +}; + +struct _NFlickApiRequestClass +{ + GObjectClass ParentClass; +}; + +GType nflick_api_request_get_type (void); + +NFlickApiRequest* nflick_api_request_new (const gchar *method); + +void nflick_api_request_add_parameter (NFlickApiRequest *self, + const gchar *param, const gchar *val); + +gboolean nflick_api_request_exec (NFlickApiRequest *self); + +gboolean nflick_api_request_sign (NFlickApiRequest *self); + +gchar* nflick_api_request_take_buffer (NFlickApiRequest *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-api-response-private.h b/attic/aaina/libnflick/nflick-api-response-private.h new file mode 100644 index 0000000..38bb074 --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-response-private.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickApiResponsePrivate +{ + gchar *Xml; + gchar *Error; + gboolean Success; + gboolean ParseError; +}; + +enum +{ + ARG_0, + ARG_ERROR, + ARG_PARSE_ERROR, + ARG_XML, + ARG_SUCCESS +}; + +static void nflick_api_response_class_init (NFlickApiResponseClass *klass); + +static void nflick_api_response_init (NFlickApiResponse *self); + +static gboolean private_init (NFlickApiResponse *self, NFlickApiResponsePrivate *private); + +static void private_dispose (NFlickApiResponsePrivate *private); + +static void nflick_api_response_dispose (NFlickApiResponse *self); + +static void nflick_api_response_finalize (NFlickApiResponse *self); + +static void nflick_api_response_get_property (NFlickApiResponse *self, guint propid, + GValue *value, GParamSpec *pspec); + + diff --git a/attic/aaina/libnflick/nflick-api-response.c b/attic/aaina/libnflick/nflick-api-response.c new file mode 100644 index 0000000..244cd81 --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-response.c @@ -0,0 +1,337 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-api-response.h" +#include "nflick-api-response-private.h" + +GType nflick_api_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickApiResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_api_response_class_init, + NULL, + NULL, + sizeof (NFlickApiResponse), + 4, + (GInstanceInitFunc) nflick_api_response_init, + }; + /* FIXME Make abstract type */ + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickApiResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_api_response_class_init (NFlickApiResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_api_response_dispose; + gobjectclass->finalize = (gpointer) nflick_api_response_finalize; + gobjectclass->get_property = (gpointer) nflick_api_response_get_property; + + g_object_class_install_property (gobjectclass, ARG_ERROR, + g_param_spec_string + ("error", "Error", "Message describing the error", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_SUCCESS, + g_param_spec_boolean + ("success", "Success", "If the response is succesfull", + TRUE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_PARSE_ERROR, + g_param_spec_boolean + ("parseerror", "ParseError", "If the error was an xml parsing error", + FALSE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_XML, + g_param_spec_string + ("xml", "Xml", "Xml message source", + NULL, G_PARAM_READABLE)); + + klass->ParseFunc = NULL; + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_api_response_init (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + self->Private = NULL; + + NFlickApiResponsePrivate *priv = g_new0 (NFlickApiResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickApiResponse *self, NFlickApiResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Error = NULL; + private->Xml = NULL; + private->Success = TRUE; + + return TRUE; +} + +NFlickApiResponse* nflick_api_response_new_from_request (GType type, NFlickApiRequest *request) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (request), NULL); + + NFlickApiResponse *self = NULL; + + gchar *buffer = nflick_api_request_take_buffer (request); + if (buffer == NULL) + goto Done; + + self = g_object_new (type, NULL); + if (self == NULL) + goto Done; + + if (self->Private == NULL) { + g_object_unref (self); + self = NULL; + goto Done; + } + + nflick_api_response_parse (self, buffer); + +Done: + if (buffer != NULL) + g_free (buffer); + + if (self != NULL) + return self; + else + g_return_val_if_reached (NULL); +} + +static void private_dispose (NFlickApiResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Error != NULL) { + g_free (private->Error); + private->Error = NULL; + } + + if (private->Xml != NULL) { + g_free (private->Xml); + private->Xml = NULL; + } +} + +static void nflick_api_response_dispose (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_api_response_finalize (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +void nflick_api_response_set_error (NFlickApiResponse *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private->Error != NULL) + g_free (self->Private->Error); + + self->Private->Error = (error != NULL) ? g_strdup (error) : NULL; +} + +void nflick_api_response_add_error (NFlickApiResponse *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private->Error == NULL) + nflick_api_response_set_error (self, error); + else if (error != NULL) { + gchar *sum = g_strdup_printf ("%s\n%s", self->Private->Error, error); + g_free (self->Private->Error); + self->Private->Error = sum; + } else + self->Private->Error = NULL; +} + +gboolean nflick_api_response_parse (NFlickApiResponse *self, const gchar *xml) +{ + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (self), FALSE); + g_return_val_if_fail (xml != NULL, FALSE); + g_return_val_if_fail (self->Private->Xml == NULL, FALSE); + g_return_val_if_fail (NFLICK_API_RESPONSE_GET_CLASS (self)->ParseFunc != NULL, FALSE); + + self->Private->Xml = g_strdup (xml); + + xmlDoc *doc = NULL; /* The xml tree element */ + xmlNode *root_element = NULL; /* Root element to start parsing */ + gboolean result = TRUE; /* If we were sucesfull */ + gboolean parse_error = FALSE; /* If the error was a parsing error */ + gchar *stat = NULL; /* Response stat */ + + /* Start here */ + doc = xmlReadMemory (xml, strlen (xml), NULL, NULL, 0); + if (doc == NULL) { + nflick_api_response_add_error (self, gettext ("Couldn't create the xml tree.")); + result = FALSE; + parse_error = TRUE; + goto Done; + } + + root_element = xmlDocGetRootElement(doc); + if (root_element == NULL) { + nflick_api_response_add_error (self, gettext ("Couldn't get xml root element.")); + result = FALSE; + parse_error = TRUE; + goto Done; + } + + if (root_element->type != XML_ELEMENT_NODE || + strcmp (root_element->name, "rsp") != 0) { + nflick_api_response_add_error (self, gettext ("Rsp xml root expected, but was not found.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + stat = xmlGetProp (root_element, "stat"); + if (stat == NULL) { + nflick_api_response_add_error (self, gettext ("Response has not stat property.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + if (strcmp (stat, "ok") == 0) + result = TRUE; + else if (strcmp (stat, "fail") == 0) + result = FALSE; + else { + nflick_api_response_add_error (self, gettext ("Unknown response.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + if (root_element->children == NULL) + goto Done; + + xmlNode *cur_node = NULL; + + /* Do the main parsing */ + for (cur_node = root_element->children; cur_node; cur_node = cur_node->next) { + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "err") == 0) { + gchar *err = xmlGetProp (cur_node, "msg"); + result = FALSE; + if (err != NULL) { + nflick_api_response_set_error (self, err); + g_free (err); + } + } + } + + if (result == FALSE) + goto Done; + + /* Forward to our parse func */ + NFLICK_API_RESPONSE_GET_CLASS (self)->ParseFunc (self, doc, root_element->children, &result, &parse_error); + +Done: + /* Free */ + if (doc != NULL) + xmlFreeDoc (doc); + + if (stat != NULL) + g_free (stat); + + if (result == FALSE && self->Private->Error == NULL) + nflick_api_response_set_error (self, gettext ("Failed to parse xml tree. Unknown error")); + + if (result == FALSE && parse_error == TRUE) + g_warning ("Failed to parse xml tree. Error: %s", self->Private->Error); + + self->Private->Success = result; + self->Private->ParseError = parse_error; + return result; +} + +static void nflick_api_response_get_property (NFlickApiResponse *self, guint propid, + GValue *value, GParamSpec *pspec) + +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_ERROR: + g_value_set_string (value, self->Private->Error); + break; + + case ARG_PARSE_ERROR: + g_value_set_boolean (value, self->Private->ParseError); + break; + + case ARG_SUCCESS: + g_value_set_boolean (value, self->Private->Success); + break; + + case ARG_XML: + g_value_set_string (value, self->Private->Xml); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-api-response.h b/attic/aaina/libnflick/nflick-api-response.h new file mode 100644 index 0000000..9778872 --- /dev/null +++ b/attic/aaina/libnflick/nflick-api-response.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAPIRESPONSE_H__ +#define __NFLICKAPIRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-api-request.h" + +struct _NFlickApiResponse +{ + GObject Parent; + NFlickApiResponsePrivate *Private; +}; + +struct _NFlickApiResponseClass +{ + GObjectClass ParentClass; + NFlickApiRequestParseFunc ParseFunc; +}; + +GType nflick_api_response_get_type (void); + +void nflick_api_response_set_error (NFlickApiResponse *self, const gchar *error); + +void nflick_api_response_add_error (NFlickApiResponse *self, const gchar *error); + +gboolean nflick_api_response_parse (NFlickApiResponse *self, const gchar *xml); + +NFlickApiResponse* nflick_api_response_new_from_request (GType type, NFlickApiRequest *request); + +#endif diff --git a/attic/aaina/libnflick/nflick-auth-worker-private.h b/attic/aaina/libnflick/nflick-auth-worker-private.h new file mode 100644 index 0000000..dfdbdac --- /dev/null +++ b/attic/aaina/libnflick/nflick-auth-worker-private.h @@ -0,0 +1,60 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickAuthWorkerPrivate +{ + gchar *MiniToken; + gchar *UserName; + gchar *FullName; + gchar *Token; + gchar *UserNsid; +}; + +enum +{ + ARG_0, + ARG_USER_NAME, + ARG_FULL_NAME, + ARG_TOKEN, + ARG_USER_NSID +}; + +static void nflick_auth_worker_class_init (NFlickAuthWorkerClass *klass); + +static void nflick_auth_worker_init (NFlickAuthWorker *self); + +static gboolean private_init (NFlickAuthWorker *self, NFlickAuthWorkerPrivate *private); + +static void private_dispose (NFlickAuthWorkerPrivate *private); + +static void nflick_auth_worker_dispose (NFlickAuthWorker *self); + +static void nflick_auth_worker_finalize (NFlickAuthWorker *self); + +static NFlickWorkerStatus thread_func (NFlickAuthWorker *self); + +static void nflick_auth_worker_get_property (NFlickAuthWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-auth-worker.c b/attic/aaina/libnflick/nflick-auth-worker.c new file mode 100644 index 0000000..c23d610 --- /dev/null +++ b/attic/aaina/libnflick/nflick-auth-worker.c @@ -0,0 +1,278 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-auth-worker.h" +#include "nflick-auth-worker-private.h" + +GType nflick_auth_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickAuthWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_auth_worker_class_init, + NULL, + NULL, + sizeof (NFlickAuthWorker), + 4, + (GInstanceInitFunc) nflick_auth_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickAuthWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_auth_worker_class_init (NFlickAuthWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_auth_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_auth_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_auth_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_TOKEN, + g_param_spec_string + ("token", "Token", "Unique flick full token", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NAME, + g_param_spec_string + ("username", "UserName", "Flickr user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_FULL_NAME, + g_param_spec_string + ("fullname", "FullName", "Flickr full user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NSID, + g_param_spec_string + ("usernsid", "UserNsid", "Unique nsid identyfying user in flickr", + NULL, G_PARAM_READABLE)); + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_auth_worker_init (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + self->Private = NULL; + + NFlickAuthWorkerPrivate *priv = g_new0 (NFlickAuthWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Authorizing token...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickAuthWorker *self, NFlickAuthWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_AUTH_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->MiniToken = NULL; + private->UserName = NULL; + private->FullName = NULL; + private->UserNsid = NULL; + private->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickAuthWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->MiniToken != NULL) { + g_free (private->MiniToken); + private->MiniToken = NULL; + } + + if (private->UserName != NULL) { + g_free (private->UserName); + private->UserName = NULL; + } + + if (private->FullName != NULL) { + g_free (private->FullName); + private->FullName = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->UserNsid != NULL) { + g_free (private->UserNsid); + private->UserNsid = NULL; + } +} + +static void nflick_auth_worker_dispose (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_auth_worker_finalize (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickAuthWorker *self) +{ + NFlickApiRequest *full_token_request = NULL; + NFlickApiResponse *full_token_response = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + + full_token_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_GET_FULL_TOKEN); + if (full_token_request == NULL) + goto Error; + + nflick_api_request_add_parameter (full_token_request, + NFLICK_FLICKR_API_PARAM_MINI_TOKEN, + self->Private->MiniToken); + + nflick_api_request_sign (full_token_request); + + if (nflick_api_request_exec (full_token_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + full_token_response = nflick_api_response_new_from_request (NFLICK_TYPE_GFT_RESPONSE, full_token_request); + if (full_token_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, full_token_response) == FALSE) + goto Error; + + /* Get out variables */ + g_object_get (G_OBJECT (full_token_response), + "username", &self->Private->UserName, + "fullname", &self->Private->FullName, + "usernsid", &self->Private->UserNsid, + "token", &self->Private->Token, NULL); + + if (self->Private->UserName == NULL || + self->Private->FullName == NULL || + self->Private->Token == NULL || + self->Private->UserNsid == NULL) + goto Error; + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (full_token_request != NULL) + g_object_unref (full_token_request); + + if (full_token_response != NULL) + g_object_unref (full_token_response); + + return status; +} + +NFlickAuthWorker* nflick_auth_worker_new (const gchar *minitoken) +{ + g_return_val_if_fail (minitoken != NULL, NULL); + + NFlickAuthWorker *self = g_object_new (NFLICK_TYPE_AUTH_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->MiniToken = g_strdup (minitoken); + + return self; +} + +static void nflick_auth_worker_get_property (NFlickAuthWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_USER_NAME: + g_value_set_string (value, self->Private->UserName); + break; + + case ARG_FULL_NAME: + g_value_set_string (value, self->Private->FullName); + break; + + case ARG_TOKEN: + g_value_set_string (value, self->Private->Token); + break; + + case ARG_USER_NSID: + g_value_set_string (value, self->Private->UserNsid); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-auth-worker.h b/attic/aaina/libnflick/nflick-auth-worker.h new file mode 100644 index 0000000..807e4ec --- /dev/null +++ b/attic/aaina/libnflick/nflick-auth-worker.h @@ -0,0 +1,50 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAUTHWORKER_H__ +#define __NFLICKAUTHWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-gft-response.h" +#include "nflick-types.h" + +struct _NFlickAuthWorker +{ + NFlickWorker Parent; + NFlickAuthWorkerPrivate *Private; +}; + +struct _NFlickAuthWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_auth_worker_get_type (void); + +NFlickAuthWorker* nflick_auth_worker_new (const gchar *minitoken); + +#endif diff --git a/attic/aaina/libnflick/nflick-flickr.h b/attic/aaina/libnflick/nflick-flickr.h new file mode 100644 index 0000000..67d88d1 --- /dev/null +++ b/attic/aaina/libnflick/nflick-flickr.h @@ -0,0 +1,73 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKFLICKR_H__ +#define __NFLICKFLICKR_H__ + +/* Some stock stuff obtained from flickr. That's public, really */ + +#define NFLICK_FLICKR_API_KEY "97f40c6445ca8243d52fff461308fb18" + +#define NFLICK_FLICKR_SHARED_SECRET "2d434592f898e1ab" + +#define NFLICK_FLICKR_HOST "www.flickr.com" + +#define NFLICK_FLICKR_REST_END_POINT "/services/rest/" + +/* Request parameters */ + +#define NFLICK_FLICKR_API_PARAM_KEY "api_key" + +#define NFLICK_FLICKR_API_PARAM_METHOD "method" + +#define NFLICK_FLICKR_API_PARAM_MINI_TOKEN "mini_token" + +#define NFLICK_FLICKR_API_PARAM_TOKEN "auth_token" + +#define NFLICK_FLICKR_API_PARAM_SIGNATURE "api_sig" + +#define NFLICK_FLICKR_API_PARAM_USER_ID "user_id" + +#define NFLICK_FLICKR_API_PARAM_PHOTOSET_ID "photoset_id" + +#define NFLICK_FLICKR_API_PARAM_PHOTO_ID "photo_id" + +#define NFLICK_FLICKR_API_PARAM_PER_PAGE "per_page" + +#define NFLICK_FLICKR_API_PARAM_TAGSS "tags" + +/* Possible methods */ + +#define NFLICK_FLICKR_API_METHOD_GET_FULL_TOKEN "flickr.auth.getFullToken" + +#define NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_LIST "flickr.photosets.getList" + +#define NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS "flickr.photosets.getPhotos" + +#define NFLICK_FLICKR_API_METHOD_PHOTOS_GET_SIZES "flickr.photos.getSizes" + +#define NFLICK_FLICKR_API_METHOD_PHOTOS_NOT_IN_SET "flickr.photos.getNotInSet" + +#define NFLICK_FLICKR_API_METHOD_SEARCH_PHOTOS "flickr.photos.search" + +#endif diff --git a/attic/aaina/libnflick/nflick-get-sizes-response-private.h b/attic/aaina/libnflick/nflick-get-sizes-response-private.h new file mode 100644 index 0000000..4853bd5 --- /dev/null +++ b/attic/aaina/libnflick/nflick-get-sizes-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickGetSizesResponsePrivate +{ + GList *SizesList; +}; + +struct _SizeData +{ + gchar *Uri; + gint32 Width; + gint32 Height; +} typedef SizeData; + +static void nflick_get_sizes_response_class_init (NFlickGetSizesResponseClass *klass); + +static void nflick_get_sizes_response_init (NFlickGetSizesResponse *self); + +static gboolean private_init (NFlickGetSizesResponse *self, NFlickGetSizesResponsePrivate *private); + +static void private_dispose (NFlickGetSizesResponsePrivate *private); + +static void nflick_get_sizes_response_dispose (NFlickGetSizesResponse *self); + +static void nflick_get_sizes_response_finalize (NFlickGetSizesResponse *self); + +static void parse_func (NFlickGetSizesResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + diff --git a/attic/aaina/libnflick/nflick-get-sizes-response.c b/attic/aaina/libnflick/nflick-get-sizes-response.c new file mode 100644 index 0000000..d7cf12a --- /dev/null +++ b/attic/aaina/libnflick/nflick-get-sizes-response.c @@ -0,0 +1,304 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-get-sizes-response.h" +#include "nflick-get-sizes-response-private.h" + +GType nflick_get_sizes_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickGetSizesResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_get_sizes_response_class_init, + NULL, + NULL, + sizeof (NFlickGetSizesResponse), + 4, + (GInstanceInitFunc) nflick_get_sizes_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickGetSizesResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_get_sizes_response_class_init (NFlickGetSizesResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_get_sizes_response_dispose; + gobjectclass->finalize = (gpointer) nflick_get_sizes_response_finalize; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_get_sizes_response_init (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + self->Private = NULL; + + NFlickGetSizesResponsePrivate *priv = g_new0 (NFlickGetSizesResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickGetSizesResponse *self, NFlickGetSizesResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->SizesList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickGetSizesResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->SizesList != NULL) { + + GList *iterator; + + for (iterator = private->SizesList; iterator; iterator = g_list_next (iterator)) { + SizeData *data = (SizeData *) iterator->data; + if (data != NULL) { + if (data->Uri != NULL) + g_free (data->Uri); + + g_free (data); + } + } + + g_list_free (private->SizesList); + private->SizesList = NULL; + } +} + +static void nflick_get_sizes_response_dispose (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_get_sizes_response_finalize (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickGetSizesResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "sizes") == 0) { + + xmlNode *sizes_node = NULL; + for (sizes_node = cur_node->children; sizes_node; sizes_node = sizes_node->next) { + + if (sizes_node->type == XML_ELEMENT_NODE && strcmp (sizes_node->name, "size") == 0) { + + gint32 width_val = -1; + gint32 height_val = -1; + gchar *width = xmlGetProp (sizes_node, "width"); + gchar *height = xmlGetProp (sizes_node, "height"); + gchar *source = xmlGetProp (sizes_node, "source"); + + if (width != NULL) + width_val = atoi (width); + + if (height != NULL) + height_val = atoi (height); + + if (width != NULL && height != NULL && source != NULL && + width_val > 0 && height_val > 0) { + SizeData *data = g_new0 (SizeData, 1); + data->Uri = g_strdup (source); + data->Width = width_val; + data->Height = height_val; + self->Private->SizesList = g_list_append (self->Private->SizesList, data); + } + + if (width != NULL) + g_free (width); + if (height != NULL) + g_free (height); + if (source != NULL) + g_free (source); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +/* FIXME: Make private */ +gint32 nflick_get_sizes_response_height_for (gint32 width, gint32 height, gint32 fit_width) +{ + g_return_val_if_fail (width > 0, -1); + g_return_val_if_fail (height > 0, -1); + g_return_val_if_fail (fit_width > 0, -1); + + gdouble aspect = (gdouble) height / (gdouble) width; + return aspect * (gdouble) fit_width; +} + +/* FIXME: Make private */ +gint32 nflick_get_sizes_response_width_for (gint32 width, gint32 height, gint32 fit_height) +{ + g_return_val_if_fail (width > 0, -1); + g_return_val_if_fail (height > 0, -1); + g_return_val_if_fail (fit_height > 0, -1); + + gdouble aspect = (gdouble) width / (gdouble) height; + return aspect * (gdouble) fit_height; +} + +gchar* nflick_get_sizes_response_find_match (NFlickGetSizesResponse *self, gint32 *width, gint32 *height, gboolean *rotated) +{ + g_return_val_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self), NULL); + g_return_val_if_fail (width != NULL, NULL); + g_return_val_if_fail (height != NULL, NULL); + g_return_val_if_fail (rotated != NULL, NULL); + g_return_val_if_fail (*width > 0, NULL); + g_return_val_if_fail (*height > 0, NULL); + + GList *iterator; + gchar *current_source = NULL; + gint32 current_distance = 10000; /* FIXME: Max int */ + gdouble out_aspect = (gdouble) *height / (gdouble) *width; + gint32 out_width = -1; + gint32 out_height = -1; + gboolean out_rotated = FALSE; + + for (iterator = self->Private->SizesList; iterator; iterator = g_list_next (iterator)) { + SizeData *data = (SizeData *) iterator->data; + g_assert (data != NULL); + + gdouble in_aspect = (gdouble) data->Height / (gdouble) data->Width; + + gint32 x_distance = 0; + gint32 y_distance = 0; + gint32 distance = 0; + + // FIXME: We should analyze the input width and height here! + if (in_aspect > 1.0) { + x_distance = abs (data->Width - *height); + y_distance = abs (data->Height - *width); + + if (data->Width < *height) + x_distance *= 2; + if (data->Height < *width) + y_distance *= 2; + + distance = x_distance + y_distance; + + if (distance < current_distance) { + current_distance = distance; + current_source = data->Uri; + out_rotated = TRUE; + + /* Now let's try doing the fitting */ + in_aspect = (gdouble) data->Width / (gdouble) data->Height; + if (in_aspect > out_aspect) { + out_width = *height; + out_height = nflick_get_sizes_response_height_for (data->Width, data->Height, out_width); + } else { + out_height = *width; + out_width= nflick_get_sizes_response_width_for (data->Width, data->Height, out_height); + } + } + } else { + x_distance = abs (data->Width - *width); + y_distance = abs (data->Height - *height); + + if (data->Width < *width) + x_distance *= 2; + if (data->Height < *height) + y_distance *= 2; + + distance = x_distance + y_distance; + + if (distance < current_distance) { + current_distance = distance; + current_source = data->Uri; + out_rotated = FALSE; + + /* Now let's try doing the fitting */ + if (in_aspect > out_aspect) { + out_height = *height; + out_width = nflick_get_sizes_response_width_for (data->Width, data->Height, out_height); + } else { + out_width = *width; + out_height = nflick_get_sizes_response_height_for (data->Width, data->Height, out_width); + } + } + + + } + } + + *width = out_width; + *height = out_height; + *rotated = out_rotated; + + if (current_source != NULL) + return g_strdup (current_source); + else + return NULL; +} diff --git a/attic/aaina/libnflick/nflick-get-sizes-response.h b/attic/aaina/libnflick/nflick-get-sizes-response.h new file mode 100644 index 0000000..bf2a304 --- /dev/null +++ b/attic/aaina/libnflick/nflick-get-sizes-response.h @@ -0,0 +1,55 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKGETSIZESRESPONSE_H__ +#define __NFLICKGETSIZESRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickGetSizesResponse +{ + NFlickApiResponse Parent; + NFlickGetSizesResponsePrivate *Private; +}; + +struct _NFlickGetSizesResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_get_sizes_response_get_type (void); + +gchar* nflick_get_sizes_response_find_match (NFlickGetSizesResponse *self, gint32 *width, gint32 *height, gboolean *rotated); + +gint32 nflick_get_sizes_response_height_for (gint32 width, gint32 height, gint32 fit_width); + +gint32 nflick_get_sizes_response_width_for (gint32 width, gint32 height, gint32 fit_height); + +#endif diff --git a/attic/aaina/libnflick/nflick-gft-response-private.h b/attic/aaina/libnflick/nflick-gft-response-private.h new file mode 100644 index 0000000..dd8a54d --- /dev/null +++ b/attic/aaina/libnflick/nflick-gft-response-private.h @@ -0,0 +1,62 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickGftResponsePrivate +{ + gchar *UserName; + gchar *UserNsid; + gchar *FullName; + gchar *Token; +}; + +enum +{ + ARG_0, + ARG_USER_NAME, + ARG_FULL_NAME, + ARG_TOKEN, + ARG_USER_NSID +}; + +static void nflick_gft_response_class_init (NFlickGftResponseClass *klass); + +static void nflick_gft_response_init (NFlickGftResponse *self); + +static gboolean private_init (NFlickGftResponse *self, NFlickGftResponsePrivate *private); + +static void private_dispose (NFlickGftResponsePrivate *private); + +static void nflick_gft_response_dispose (NFlickGftResponse *self); + +static void nflick_gft_response_finalize (NFlickGftResponse *self); + +static void parse_func (NFlickGftResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static gboolean all_fields_valid (NFlickGftResponse *self); + +static void fill_blanks (NFlickGftResponse *self); + +static void nflick_gft_response_get_property (NFlickGftResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-gft-response.c b/attic/aaina/libnflick/nflick-gft-response.c new file mode 100644 index 0000000..a38e04d --- /dev/null +++ b/attic/aaina/libnflick/nflick-gft-response.c @@ -0,0 +1,281 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-gft-response.h" +#include "nflick-gft-response-private.h" + +GType nflick_gft_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickGftResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_gft_response_class_init, + NULL, + NULL, + sizeof (NFlickGftResponse), + 4, + (GInstanceInitFunc) nflick_gft_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickGftResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_gft_response_class_init (NFlickGftResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_gft_response_dispose; + gobjectclass->finalize = (gpointer) nflick_gft_response_finalize; + gobjectclass->get_property = (gpointer) nflick_gft_response_get_property; + + g_object_class_install_property (gobjectclass, ARG_TOKEN, + g_param_spec_string + ("token", "Token", "Unique flick full token", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NAME, + g_param_spec_string + ("username", "UserName", "Flickr user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_FULL_NAME, + g_param_spec_string + ("fullname", "FullName", "Flickr full user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NSID, + g_param_spec_string + ("usernsid", "UserNsid", "Unique nsid identyfying user in flickr", + NULL, G_PARAM_READABLE)); + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_gft_response_init (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + self->Private = NULL; + + NFlickGftResponsePrivate *priv = g_new0 (NFlickGftResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickGftResponse *self, NFlickGftResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_GFT_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->UserName = NULL; + private->FullName = NULL; + private->Token = NULL; + private->UserNsid = NULL; + + return TRUE; +} + +static void private_dispose (NFlickGftResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->UserName != NULL) { + g_free (private->UserName); + private->UserName = NULL; + } + + if (private->FullName != NULL) { + g_free (private->FullName); + private->FullName = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->UserNsid != NULL) { + g_free (private->UserNsid); + private->UserNsid = NULL; + } +} + + +static void nflick_gft_response_dispose (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_gft_response_finalize (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static gboolean all_fields_valid (NFlickGftResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_GFT_RESPONSE (self), FALSE); + + if (self->Private->UserNsid != NULL && self->Private->Token != NULL) + return TRUE; + else + return FALSE; +} + +static void fill_blanks (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private->UserName == NULL) + self->Private->UserName = g_strdup (gettext ("anonymous")); + + if (self->Private->FullName == NULL) + self->Private->FullName = g_strdup (gettext ("Anonymous")); +} + +static void parse_func (NFlickGftResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "auth") == 0) { + + xmlNode *auth_node = NULL; + for (auth_node = cur_node->children; auth_node; auth_node = auth_node->next) { + + /* */ + if (auth_node->type == XML_ELEMENT_NODE && strcmp (auth_node->name, "user") == 0) { + + /* Nsid */ + gchar *nsid = xmlGetProp (auth_node, "nsid"); + if (nsid != NULL) { + if (self->Private->UserNsid != NULL) + g_free (self->Private->UserNsid); + self->Private->UserNsid = nsid; + } + + /* UserName */ + gchar *username = xmlGetProp (auth_node, "username"); + if (username != NULL) { + if (self->Private->UserName != NULL) + g_free (self->Private->UserName); + self->Private->UserName = username; + } + + /* FullName */ + gchar *fullname = xmlGetProp (auth_node, "fullname"); + if (fullname != NULL) { + if (self->Private->FullName != NULL) + g_free (self->Private->FullName); + self->Private->FullName = fullname; + } + } + + /* */ + if (auth_node->type == XML_ELEMENT_NODE && strcmp (auth_node->name, "token") == 0) { + char *token = xmlNodeListGetString (doc, auth_node->xmlChildrenNode, 1); + if (token != NULL) { + if (self->Private->Token != NULL) + g_free (self->Private->Token); + self->Private->Token = token; + } + } + } + } + } + + /* Finished */ + if (all_fields_valid (self) == TRUE) { + fill_blanks (self); + *result = TRUE; + *parse_error = FALSE; + } else { + *result = FALSE; + *parse_error = TRUE; + nflick_api_response_add_error ((NFlickApiResponse *) self, + gettext ("Some of the required info is missing from the response!")); + } +} + +static void nflick_gft_response_get_property (NFlickGftResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_USER_NAME: + g_value_set_string (value, self->Private->UserName); + break; + + case ARG_FULL_NAME: + g_value_set_string (value, self->Private->FullName); + break; + + case ARG_TOKEN: + g_value_set_string (value, self->Private->Token); + break; + + case ARG_USER_NSID: + g_value_set_string (value, self->Private->UserNsid); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-gft-response.h b/attic/aaina/libnflick/nflick-gft-response.h new file mode 100644 index 0000000..cd67b4a --- /dev/null +++ b/attic/aaina/libnflick/nflick-gft-response.h @@ -0,0 +1,49 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKGFTRESPONSE_H__ +#define __NFLICKGFTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickGftResponse +{ + NFlickApiResponse Parent; + NFlickGftResponsePrivate *Private; +}; + +struct _NFlickGftResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_gft_response_get_type (void); + +#endif diff --git a/attic/aaina/libnflick/nflick-info-response-private.h b/attic/aaina/libnflick/nflick-info-response-private.h new file mode 100644 index 0000000..f2c7fbf --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-response-private.h @@ -0,0 +1,66 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickInfoResponsePrivate +{ + gchar *UserName; + gchar *UserNsid; + gchar *FullName; + gchar *Token; + + gchar *rotation; + gchar *realname; + gchar *desc; +}; + +enum +{ + ARG_0, + ARG_USER_NAME, + ARG_FULL_NAME, + ARG_TOKEN, + ARG_USER_NSID +}; + +static void nflick_info_response_class_init (NFlickInfoResponseClass *klass); + +static void nflick_info_response_init (NFlickInfoResponse *self); + +static gboolean private_init (NFlickInfoResponse *self, NFlickInfoResponsePrivate *private); + +static void private_dispose (NFlickInfoResponsePrivate *private); + +static void nflick_info_response_dispose (NFlickInfoResponse *self); + +static void nflick_info_response_finalize (NFlickInfoResponse *self); + +static void parse_func (NFlickInfoResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static gboolean all_fields_valid (NFlickInfoResponse *self); + +static void fill_blanks (NFlickInfoResponse *self); + +static void nflick_info_response_get_property (NFlickInfoResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-info-response.c b/attic/aaina/libnflick/nflick-info-response.c new file mode 100644 index 0000000..dc94fa9 --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-response.c @@ -0,0 +1,272 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-info-response.h" +#include "nflick-info-response-private.h" + +GType +nflick_info_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickInfoResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_info_response_class_init, + NULL, + NULL, + sizeof (NFlickInfoResponse), + 4, + (GInstanceInitFunc) nflick_info_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickInfoResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void +nflick_info_response_class_init (NFlickInfoResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_info_response_dispose; + gobjectclass->finalize = (gpointer) nflick_info_response_finalize; + gobjectclass->get_property = (gpointer) nflick_info_response_get_property; + + g_object_class_install_property (gobjectclass, ARG_TOKEN, + g_param_spec_string + ("token", "Token", "Unique flick full token", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NAME, + g_param_spec_string + ("username", "UserName", "Flickr user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_FULL_NAME, + g_param_spec_string + ("fullname", "FullName", "Flickr full user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NSID, + g_param_spec_string + ("usernsid", "UserNsid", "Unique nsid identyfying user in flickr", + NULL, G_PARAM_READABLE)); + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void +nflick_info_response_init (NFlickInfoResponse *self) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + self->Private = NULL; + + NFlickInfoResponsePrivate *priv = g_new0 (NFlickInfoResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean +private_init (NFlickInfoResponse *self, NFlickInfoResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_INFO_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->UserName = NULL; + private->FullName = NULL; + private->Token = NULL; + private->UserNsid = NULL; + + return TRUE; +} + +static void +private_dispose (NFlickInfoResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->UserName != NULL) { + g_free (private->UserName); + private->UserName = NULL; + } + + if (private->FullName != NULL) { + g_free (private->FullName); + private->FullName = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->UserNsid != NULL) { + g_free (private->UserNsid); + private->UserNsid = NULL; + } +} + + +static void +nflick_info_response_dispose (NFlickInfoResponse *self) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void +nflick_info_response_finalize (NFlickInfoResponse *self) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +void +nflick_info_response_get (NFlickInfoResponse *self, + gchar **rotation, + gchar **realname, + gchar **desc) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + + *rotation = self->Private->rotation; + *realname = self->Private->realname; + *desc = self->Private->desc; +} + + +static gboolean +all_fields_valid (NFlickInfoResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_INFO_RESPONSE (self), FALSE); + + if (self->Private->UserNsid != NULL && self->Private->Token != NULL) + return TRUE; + else + return FALSE; +} + +static void +fill_blanks (NFlickInfoResponse *self) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + + if (self->Private->UserName == NULL) + self->Private->UserName = g_strdup (gettext ("anonymous")); + + if (self->Private->FullName == NULL) + self->Private->FullName = g_strdup (gettext ("Anonymous")); +} + +static void +parse_func (NFlickInfoResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE + && strcmp (cur_node->name, "photo") == 0) + { + xmlNode *auth_node = NULL; + self->Private->rotation = xmlGetProp (cur_node, "rotation"); + + for (auth_node = cur_node->children; auth_node; auth_node = auth_node->next) + { + if (auth_node->type == XML_ELEMENT_NODE + && strcmp (auth_node->name, "owner") == 0) + { + /* Nsid */ + self->Private->realname = xmlGetProp (auth_node, "realname"); + } + + /* */ + if (auth_node->type == XML_ELEMENT_NODE + && strcmp (auth_node->name, "description") == 0) + { + self->Private->desc=xmlNodeListGetString (doc, auth_node->xmlChildrenNode, 1); + } + } + } + } +} +static void +nflick_info_response_get_property (NFlickInfoResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_INFO_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_USER_NAME: + g_value_set_string (value, self->Private->UserName); + break; + + case ARG_FULL_NAME: + g_value_set_string (value, self->Private->FullName); + break; + + case ARG_TOKEN: + g_value_set_string (value, self->Private->Token); + break; + + case ARG_USER_NSID: + g_value_set_string (value, self->Private->UserNsid); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-info-response.h b/attic/aaina/libnflick/nflick-info-response.h new file mode 100644 index 0000000..5de6787 --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-response.h @@ -0,0 +1,55 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKINFORESPONSE_H__ +#define __NFLICKINFORESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickInfoResponse +{ + NFlickApiResponse Parent; + NFlickInfoResponsePrivate *Private; +}; + +struct _NFlickInfoResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_info_response_get_type (void); + +void +nflick_info_response_get (NFlickInfoResponse *self, + gchar **rotation, + gchar **realname, + gchar **desc); + +#endif diff --git a/attic/aaina/libnflick/nflick-info-worker-private.h b/attic/aaina/libnflick/nflick-info-worker-private.h new file mode 100644 index 0000000..104da49 --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-worker-private.h @@ -0,0 +1,63 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickInfoWorkerPrivate +{ + gchar *PhotoId; + gchar *Token; + gint32 Width; + gint32 Height; + GdkPixbuf *Pixbuf; + gchar *rotation; + gchar *realname; + gchar *desc; +}; + +enum +{ + ARG_0, + ARG_PIXBUF, + ARG_ROTATION, + ARG_REALNAME, + ARG_DESC +}; + +static void nflick_info_worker_class_init (NFlickInfoWorkerClass *klass); + +static void nflick_info_worker_init (NFlickInfoWorker *self); + +static gboolean private_init (NFlickInfoWorker *self, NFlickInfoWorkerPrivate *private); + +static void private_dispose (NFlickInfoWorkerPrivate *private); + +static void nflick_info_worker_dispose (NFlickInfoWorker *self); + +static void nflick_info_worker_finalize (NFlickInfoWorker *self); + +static NFlickWorkerStatus thread_func (NFlickInfoWorker *self); + +static void nflick_info_worker_get_property (NFlickInfoWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-info-worker.c b/attic/aaina/libnflick/nflick-info-worker.c new file mode 100644 index 0000000..9c211d2 --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-worker.c @@ -0,0 +1,275 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-info-worker.h" +#include "nflick-info-worker-private.h" + +GType +nflick_info_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickInfoWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_info_worker_class_init, + NULL, + NULL, + sizeof (NFlickInfoWorker), + 4, + (GInstanceInitFunc) nflick_info_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickInfoWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void +nflick_info_worker_class_init (NFlickInfoWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_info_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_info_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_info_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_PIXBUF, + g_param_spec_object + ("pixbuf", "Pixbuf", "Pixbuf", + GDK_TYPE_PIXBUF, G_PARAM_READABLE)); + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void +nflick_info_worker_init (NFlickInfoWorker *self) +{ + g_return_if_fail (NFLICK_IS_INFO_WORKER (self)); + + self->Private = NULL; + + NFlickInfoWorkerPrivate *priv = g_new0 (NFlickInfoWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, + gettext ("Loading photo...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean +private_init (NFlickInfoWorker *self, NFlickInfoWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_INFO_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoId = NULL; + private->Token = NULL; + + return TRUE; +} + +static void +private_dispose (NFlickInfoWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->PhotoId != NULL) { + g_free (private->PhotoId); + private->PhotoId = NULL; + } + + if (private->Pixbuf != NULL) { + g_object_unref (private->Pixbuf); + private->Pixbuf = NULL; + } +} + +static void +nflick_info_worker_dispose (NFlickInfoWorker *self) +{ + g_return_if_fail (NFLICK_IS_INFO_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void +nflick_info_worker_finalize (NFlickInfoWorker *self) +{ + g_return_if_fail (NFLICK_IS_INFO_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus +thread_func (NFlickInfoWorker *self) +{ + NFlickApiRequest *get_sizes_request = NULL; + NFlickApiResponse *get_sizes_response = NULL; + gchar *uri = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + gdouble vbox_aspect = (gdouble) self->Private->Width / (gdouble) self->Private->Height; + gdouble pixbuf_aspect = -1; + gint32 final_width = -1; + gint32 final_height = -1; + gboolean rotated = FALSE; + + get_sizes_request = nflick_api_request_new ("flickr.photos.getinfo"); + if (get_sizes_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_sizes_request, + NFLICK_FLICKR_API_PARAM_PHOTO_ID, + self->Private->PhotoId); + + nflick_api_request_sign (get_sizes_request); + if (nflick_api_request_exec (get_sizes_request) != TRUE) + { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + get_sizes_response = + nflick_api_response_new_from_request (NFLICK_TYPE_INFO_RESPONSE, + get_sizes_request); + + if (get_sizes_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, + get_sizes_response) == FALSE) + goto Error; + + nflick_info_response_get ((NFlickInfoResponse*)get_sizes_response, + &self->Private->rotation, + &self->Private->realname, + &self->Private->desc); + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (get_sizes_request != NULL) + g_object_unref (get_sizes_request); + + if (get_sizes_response != NULL) + g_object_unref (get_sizes_response); + + if (uri != NULL) + g_free (uri); + + return status; +} + +void +nflick_info_worker_get (NFlickInfoWorker *self, + gchar **rotation, + gchar **realname, + gchar **desc) +{ + g_return_if_fail (NFLICK_IS_INFO_WORKER (self)); + + *rotation = self->Private->rotation; + *realname = self->Private->realname; + *desc = self->Private->desc; +} + +NFlickInfoWorker* +nflick_info_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (photoid != NULL, NULL); + + NFlickInfoWorker *self = g_object_new (NFLICK_TYPE_INFO_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->PhotoId= g_strdup (photoid); + self->Private->Width = width; + self->Private->Height = height; + + return self; +} + +static void +nflick_info_worker_get_property (NFlickInfoWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_INFO_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_PIXBUF: + g_value_set_object (value, self->Private->Pixbuf); + break; + + case ARG_ROTATION: + + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + + } +} diff --git a/attic/aaina/libnflick/nflick-info-worker.h b/attic/aaina/libnflick/nflick-info-worker.h new file mode 100644 index 0000000..92ce505 --- /dev/null +++ b/attic/aaina/libnflick/nflick-info-worker.h @@ -0,0 +1,59 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKINFOWORKER_H__ +#define __NFLICKINFOWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-get-sizes-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-pixbuf-fetch.h" + +struct _NFlickInfoWorker +{ + NFlickWorker Parent; + NFlickInfoWorkerPrivate *Private; +}; + +struct _NFlickInfoWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_info_worker_get_type (void); + +NFlickInfoWorker* nflick_info_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token); + +void +nflick_info_worker_get (NFlickInfoWorker *self, + gchar **rotation, + gchar **realname, + gchar **desc); +#endif diff --git a/attic/aaina/libnflick/nflick-no-set-response-private.h b/attic/aaina/libnflick/nflick-no-set-response-private.h new file mode 100644 index 0000000..e71c6aa --- /dev/null +++ b/attic/aaina/libnflick/nflick-no-set-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickNoSetResponsePrivate +{ + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_no_set_response_class_init (NFlickNoSetResponseClass *klass); + +static void nflick_no_set_response_init (NFlickNoSetResponse *self); + +static gboolean private_init (NFlickNoSetResponse *self, NFlickNoSetResponsePrivate *private); + +static void private_dispose (NFlickNoSetResponsePrivate *private); + +static void nflick_no_set_response_dispose (NFlickNoSetResponse *self); + +static void nflick_no_set_response_finalize (NFlickNoSetResponse *self); + +static void parse_func (NFlickNoSetResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_no_set_response_get_property (NFlickNoSetResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-no-set-response.c b/attic/aaina/libnflick/nflick-no-set-response.c new file mode 100644 index 0000000..b215c4e --- /dev/null +++ b/attic/aaina/libnflick/nflick-no-set-response.c @@ -0,0 +1,199 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-no-set-response.h" +#include "nflick-no-set-response-private.h" + +GType nflick_no_set_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickNoSetResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_no_set_response_class_init, + NULL, + NULL, + sizeof (NFlickNoSetResponse), + 4, + (GInstanceInitFunc) nflick_no_set_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickNoSetResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_no_set_response_class_init (NFlickNoSetResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_no_set_response_dispose; + gobjectclass->finalize = (gpointer) nflick_no_set_response_finalize; + gobjectclass->get_property = (gpointer) nflick_no_set_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_no_set_response_init (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + self->Private = NULL; + + NFlickNoSetResponsePrivate *priv = g_new0 (NFlickNoSetResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickNoSetResponse *self, NFlickNoSetResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_NO_SET_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickNoSetResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_no_set_response_dispose (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_no_set_response_finalize (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickNoSetResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photos") == 0) { + + xmlNode *set_node = NULL; + for (set_node = cur_node->children; set_node; set_node = set_node->next) { + + if (set_node->type == XML_ELEMENT_NODE && strcmp (set_node->name, "photo") == 0) { + + gchar *id = xmlGetProp (set_node, "id"); + gchar *name = xmlGetProp (set_node, "title"); + + if (id != NULL && name != NULL) { + NFlickPhotoData *photo_data = nflick_photo_data_new (id, name); + + /* We prepend to add photos in reverse order. Flickr seems to return + * photos in oldest-to-newest order */ + + if (photo_data != NULL) + self->Private->PhotoDataList = g_list_prepend (self->Private->PhotoDataList, photo_data); + } + + if (id != NULL) + g_free (id); + if (name != NULL) + g_free (name); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_no_set_response_get_property (NFlickNoSetResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_no_set_response_take_list (NFlickNoSetResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_NO_SET_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} + + diff --git a/attic/aaina/libnflick/nflick-no-set-response.h b/attic/aaina/libnflick/nflick-no-set-response.h new file mode 100644 index 0000000..623c42f --- /dev/null +++ b/attic/aaina/libnflick/nflick-no-set-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKNOSETRESPONSE_H__ +#define __NFLICKNOSETRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickNoSetResponse +{ + NFlickApiResponse Parent; + NFlickNoSetResponsePrivate *Private; +}; + +struct _NFlickNoSetResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_no_set_response_get_type (void); + +GList* nflick_no_set_response_take_list (NFlickNoSetResponse *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-data.c b/attic/aaina/libnflick/nflick-photo-data.c new file mode 100644 index 0000000..9954732 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-data.c @@ -0,0 +1,75 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-data.h" + +GType nflick_photo_data_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + objecttype = g_boxed_type_register_static + ("NFlickPhotoData", + (GBoxedCopyFunc) nflick_photo_data_copy, + (GBoxedFreeFunc) nflick_photo_data_free); + } + + return objecttype; +} + +NFlickPhotoData* nflick_photo_data_copy (const NFlickPhotoData *self) +{ + g_return_val_if_fail (self != NULL, NULL); + + NFlickPhotoData *new = g_new (NFlickPhotoData, 1); + g_return_val_if_fail (new != NULL, NULL); + + new->Id = (self->Id != NULL) ? g_strdup (self->Id) : NULL; + new->Name = (self->Name != NULL) ? g_strdup (self->Name) : NULL; + + return new; +} + +void nflick_photo_data_free (NFlickPhotoData *self) +{ + if (self == NULL) + return; + else { + if (self->Id != NULL) + g_free (self->Id); + if (self->Name != NULL) + g_free (self->Name); + g_free (self); + } +} + +NFlickPhotoData* nflick_photo_data_new (const gchar *id, const gchar *name) +{ + NFlickPhotoData *self = g_new (NFlickPhotoData, 1); + g_return_val_if_fail (self != NULL, NULL); + + self->Id = (id != NULL) ? g_strdup (id) : NULL; + self->Name = (name != NULL) ? g_strdup (name) : NULL; + + return self; +} diff --git a/attic/aaina/libnflick/nflick-photo-data.h b/attic/aaina/libnflick/nflick-photo-data.h new file mode 100644 index 0000000..5a156d2 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-data.h @@ -0,0 +1,44 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTODATA_H__ +#define __NFLICKPHOTODATA_H__ + +#include +#include "nflick-types.h" + +struct _NFlickPhotoData +{ + gchar *Id; + gchar *Name; +}; + +GType nflick_photo_data_get_type (void); + +NFlickPhotoData* nflick_photo_data_copy (const NFlickPhotoData *self); + +void nflick_photo_data_free (NFlickPhotoData *self); + +NFlickPhotoData* nflick_photo_data_new (const gchar *id, const gchar *name); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-list-response-private.h b/attic/aaina/libnflick/nflick-photo-list-response-private.h new file mode 100644 index 0000000..c8920ab --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickPhotoListResponsePrivate +{ + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_photo_list_response_class_init (NFlickPhotoListResponseClass *klass); + +static void nflick_photo_list_response_init (NFlickPhotoListResponse *self); + +static gboolean private_init (NFlickPhotoListResponse *self, NFlickPhotoListResponsePrivate *private); + +static void private_dispose (NFlickPhotoListResponsePrivate *private); + +static void nflick_photo_list_response_dispose (NFlickPhotoListResponse *self); + +static void nflick_photo_list_response_finalize (NFlickPhotoListResponse *self); + +static void parse_func (NFlickPhotoListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_photo_list_response_get_property (NFlickPhotoListResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-photo-list-response.c b/attic/aaina/libnflick/nflick-photo-list-response.c new file mode 100644 index 0000000..0941181 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-response.c @@ -0,0 +1,195 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-list-response.h" +#include "nflick-photo-list-response-private.h" + +GType nflick_photo_list_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoListResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_list_response_class_init, + NULL, + NULL, + sizeof (NFlickPhotoListResponse), + 4, + (GInstanceInitFunc) nflick_photo_list_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickPhotoListResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_list_response_class_init (NFlickPhotoListResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_list_response_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_list_response_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_list_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_photo_list_response_init (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + self->Private = NULL; + + NFlickPhotoListResponsePrivate *priv = g_new0 (NFlickPhotoListResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoListResponse *self, NFlickPhotoListResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoListResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_list_response_dispose (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_list_response_finalize (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickPhotoListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photoset") == 0) { + + xmlNode *set_node = NULL; + for (set_node = cur_node->children; set_node; set_node = set_node->next) { + + if (set_node->type == XML_ELEMENT_NODE && strcmp (set_node->name, "photo") == 0) { + + gchar *id = xmlGetProp (set_node, "id"); + gchar *name = xmlGetProp (set_node, "title"); + + if (id != NULL && name != NULL) { + NFlickPhotoData *photo_data = nflick_photo_data_new (id, name); + if (photo_data != NULL) + self->Private->PhotoDataList = g_list_append (self->Private->PhotoDataList, photo_data); + } + + if (id != NULL) + g_free (id); + if (name != NULL) + g_free (name); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_photo_list_response_get_property (NFlickPhotoListResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_photo_list_response_take_list (NFlickPhotoListResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} + + diff --git a/attic/aaina/libnflick/nflick-photo-list-response.h b/attic/aaina/libnflick/nflick-photo-list-response.h new file mode 100644 index 0000000..2b6b3f7 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOLISTRESPONSE_H__ +#define __NFLICKPHOTOLISTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickPhotoListResponse +{ + NFlickApiResponse Parent; + NFlickPhotoListResponsePrivate *Private; +}; + +struct _NFlickPhotoListResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_photo_list_response_get_type (void); + +GList* nflick_photo_list_response_take_list (NFlickPhotoListResponse *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-list-worker-private.h b/attic/aaina/libnflick/nflick-photo-list-worker-private.h new file mode 100644 index 0000000..b2b84ab --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-worker-private.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickPhotoListWorkerPrivate +{ + gchar *Id; + gchar *Token; + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_photo_list_worker_class_init (NFlickPhotoListWorkerClass *klass); + +static void nflick_photo_list_worker_init (NFlickPhotoListWorker *self); + +static gboolean private_init (NFlickPhotoListWorker *self, NFlickPhotoListWorkerPrivate *private); + +static void private_dispose (NFlickPhotoListWorkerPrivate *private); + +static void nflick_photo_list_worker_dispose (NFlickPhotoListWorker *self); + +static void nflick_photo_list_worker_finalize (NFlickPhotoListWorker *self); + +static NFlickWorkerStatus thread_func (NFlickPhotoListWorker *self); + +static void nflick_photo_list_worker_get_property (NFlickPhotoListWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-photo-list-worker.c b/attic/aaina/libnflick/nflick-photo-list-worker.c new file mode 100644 index 0000000..9d75c17 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-worker.c @@ -0,0 +1,240 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-list-worker.h" +#include "nflick-photo-list-worker-private.h" + +GType nflick_photo_list_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoListWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_list_worker_class_init, + NULL, + NULL, + sizeof (NFlickPhotoListWorker), + 4, + (GInstanceInitFunc) nflick_photo_list_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickPhotoListWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_list_worker_class_init (NFlickPhotoListWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_list_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_list_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_list_worker_get_property; + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_photo_list_worker_init (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + self->Private = NULL; + + NFlickPhotoListWorkerPrivate *priv = g_new0 (NFlickPhotoListWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Loading photoset data...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoListWorker *self, NFlickPhotoListWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Id = NULL; + private->Token = NULL; + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoListWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Id != NULL) { + g_free (private->Id); + private->Id = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_list_worker_dispose (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_list_worker_finalize (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickPhotoListWorker *self) +{ + NFlickApiRequest *get_photolist_request = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + NFlickApiResponse *photo_list_response = NULL; + + get_photolist_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS); + if (get_photolist_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_photolist_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (get_photolist_request, + NFLICK_FLICKR_API_PARAM_PHOTOSET_ID, + self->Private->Id); + + nflick_api_request_sign (get_photolist_request); + if (nflick_api_request_exec (get_photolist_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + photo_list_response = nflick_api_response_new_from_request (NFLICK_TYPE_PHOTO_LIST_RESPONSE, get_photolist_request); + if (photo_list_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, photo_list_response) == FALSE) + goto Error; + + self->Private->PhotoDataList = nflick_photo_list_response_take_list ((NFlickPhotoListResponse *) photo_list_response); + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (get_photolist_request != NULL) + g_object_unref (get_photolist_request); + + if (photo_list_response != NULL) + g_object_unref (photo_list_response); + + return status; +} + +NFlickPhotoListWorker* nflick_photo_list_worker_new (const gchar *id, const gchar *token) +{ + g_return_val_if_fail (id != NULL, NULL); + + NFlickPhotoListWorker *self = g_object_new (NFLICK_TYPE_PHOTO_LIST_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Id = g_strdup (id); + self->Private->Token = g_strdup (token); + + return self; +} + +static void nflick_photo_list_worker_get_property (NFlickPhotoListWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_photo_list_worker_take_list (NFlickPhotoListWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} diff --git a/attic/aaina/libnflick/nflick-photo-list-worker.h b/attic/aaina/libnflick/nflick-photo-list-worker.h new file mode 100644 index 0000000..03de657 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-list-worker.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOLISTWORKER_H__ +#define __NFLICKPHOTOLISTWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-types.h" +#include "nflick-photo-list-response.h" + +struct _NFlickPhotoListWorker +{ + NFlickWorker Parent; + NFlickPhotoListWorkerPrivate *Private; +}; + +struct _NFlickPhotoListWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_photo_list_worker_get_type (void); + +NFlickPhotoListWorker* nflick_photo_list_worker_new (const gchar *id, const gchar *token); + +GList* nflick_photo_list_worker_take_list (NFlickPhotoListWorker *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-search-response-private.h b/attic/aaina/libnflick/nflick-photo-search-response-private.h new file mode 100644 index 0000000..64cd6bd --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickPhotoSearchResponsePrivate +{ + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void nflick_photo_search_response_class_init (NFlickPhotoSearchResponseClass *klass); + +static void nflick_photo_search_response_init (NFlickPhotoSearchResponse *self); + +static gboolean private_init (NFlickPhotoSearchResponse *self, NFlickPhotoSearchResponsePrivate *private); + +static void private_dispose (NFlickPhotoSearchResponsePrivate *private); + +static void nflick_photo_search_response_dispose (NFlickPhotoSearchResponse *self); + +static void nflick_photo_search_response_finalize (NFlickPhotoSearchResponse *self); + +static void parse_func (NFlickPhotoSearchResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_photo_search_response_get_property (NFlickPhotoSearchResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-photo-search-response.c b/attic/aaina/libnflick/nflick-photo-search-response.c new file mode 100644 index 0000000..130119a --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-response.c @@ -0,0 +1,207 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-search-response.h" +#include "nflick-photo-search-response-private.h" + + +GType nflick_photo_search_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoSearchResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_search_response_class_init, + NULL, + NULL, + sizeof (NFlickPhotoSearchResponse), + 4, + (GInstanceInitFunc) nflick_photo_search_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickPhotoSearchResponse", + &objectinfo, 0); + } + return objecttype; +} + + +static void nflick_photo_search_response_class_init (NFlickPhotoSearchResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_search_response_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_search_response_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_search_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_photo_search_response_init (NFlickPhotoSearchResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self)); + self->Private = NULL; + + NFlickPhotoSearchResponsePrivate *priv = g_new0 (NFlickPhotoSearchResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoSearchResponse *self, NFlickPhotoSearchResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoSets = NULL; + + return TRUE; +} + +static void +private_dispose (NFlickPhotoSearchResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + return; + + if (private->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = private->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (private->PhotoSets); + private->PhotoSets = NULL; + } +} + +GList* +nflick_photo_search_response_take_list (NFlickPhotoSearchResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void nflick_photo_search_response_dispose (NFlickPhotoSearchResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_search_response_finalize (NFlickPhotoSearchResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void +parse_func (NFlickPhotoSearchResponse *self, + xmlDoc *doc, + xmlNode *children, + gboolean *result, + gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) + { + + if (cur_node->type == XML_ELEMENT_NODE + && strcmp (cur_node->name, "photos") == 0) + { + + xmlNode *sets_node = NULL; + for (sets_node = cur_node->children; sets_node; + sets_node = sets_node->next) + { + + if (sets_node->type == XML_ELEMENT_NODE + && strcmp (sets_node->name, "photo") == 0) + { + + gchar *id = xmlGetProp (sets_node, "id"); + gchar *title = xmlGetProp (sets_node, "title"); + gchar *user = xmlGetProp (sets_node, "owner"); + + FlickrPhoto *photo = g_new0 (FlickrPhoto, 1); + photo->id = id; + photo->title = title; + photo->user = user; + + self->Private->PhotoSets = g_list_append (self->Private->PhotoSets, + photo); + } + } + } + } + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_photo_search_response_get_property (NFlickPhotoSearchResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-photo-search-response.h b/attic/aaina/libnflick/nflick-photo-search-response.h new file mode 100644 index 0000000..7a7227a --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-response.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOSEARCHRESPONSE_H__ +#define __NFLICKPHOTOSEARCHRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-set.h" +struct _NFlickPhotoSearchResponse +{ + NFlickApiResponse Parent; + NFlickPhotoSearchResponsePrivate *Private; +}; + +struct _NFlickPhotoSearchResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_photo_search_response_get_type (void); + +GList* nflick_photo_search_response_take_list (NFlickPhotoSearchResponse *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-search-worker-private.h b/attic/aaina/libnflick/nflick-photo-search-worker-private.h new file mode 100644 index 0000000..c07f371 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-worker-private.h @@ -0,0 +1,64 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorkerClass* ParentClass = NULL; + +struct _NFlickPhotoSearchWorkerPrivate +{ + gchar *UserNsid; + gchar *Token; + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void +nflick_photo_search_worker_class_init (NFlickPhotoSearchWorkerClass *klass); + +static void +nflick_photo_search_worker_init (NFlickPhotoSearchWorker *self); + +static gboolean +private_init (NFlickPhotoSearchWorker *self, + NFlickPhotoSearchWorkerPrivate *priv); + +static void +private_dispose (NFlickPhotoSearchWorkerPrivate *priv); + +static void +nflick_photo_search_worker_dispose (NFlickPhotoSearchWorker *self); + +static void +nflick_photo_search_worker_finalize (NFlickPhotoSearchWorker *self); + +static NFlickWorkerStatus +thread_func (NFlickPhotoSearchWorker *self); + +static void +nflick_photo_search_worker_get_property (NFlickPhotoSearchWorker *self, + guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-photo-search-worker.c b/attic/aaina/libnflick/nflick-photo-search-worker.c new file mode 100644 index 0000000..f21adbd --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-worker.c @@ -0,0 +1,324 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-search-worker.h" +#include "nflick-photo-search-response.h" + +static NFlickWorkerClass* ParentClass = NULL; + +struct _NFlickPhotoSearchWorkerPrivate +{ + gchar *UserNsid; + gchar *Token; + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void +nflick_photo_search_worker_class_init (NFlickPhotoSearchWorkerClass *klass); + +static void +nflick_photo_search_worker_init (NFlickPhotoSearchWorker *self); + +static gboolean +private_init (NFlickPhotoSearchWorker *self, + NFlickPhotoSearchWorkerPrivate *priv); + +static void +private_dispose (NFlickPhotoSearchWorkerPrivate *priv); + +static void +nflick_photo_search_worker_dispose (NFlickPhotoSearchWorker *self); + +static void +nflick_photo_search_worker_finalize (NFlickPhotoSearchWorker *self); + +static NFlickWorkerStatus +thread_func (NFlickPhotoSearchWorker *self); + +static void +nflick_photo_search_worker_get_property (NFlickPhotoSearchWorker *self, + guint propid, + GValue *value, GParamSpec *pspec); +GType +nflick_photo_search_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoSearchWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_search_worker_class_init, + NULL, + NULL, + sizeof (NFlickPhotoSearchWorker), + 4, + (GInstanceInitFunc) nflick_photo_search_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickPhotoSearchWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void +nflick_photo_search_worker_class_init (NFlickPhotoSearchWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_search_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_search_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_search_worker_get_property; + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void +nflick_photo_search_worker_init (NFlickPhotoSearchWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self)); + + self->Private = NULL; + + NFlickPhotoSearchWorkerPrivate *priv = g_new0 (NFlickPhotoSearchWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Parsing photosets...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean +private_init (NFlickPhotoSearchWorker *self, NFlickPhotoSearchWorkerPrivate *priv) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self), FALSE); + g_return_val_if_fail (priv != NULL, FALSE); + + priv->UserNsid = NULL; + priv->Token = NULL; + + return TRUE; +} + +static void +private_dispose (NFlickPhotoSearchWorkerPrivate *priv) +{ + g_return_if_fail (priv != NULL); + + if (priv->Token != NULL) { + g_free (priv->Token); + priv->Token = NULL; + } + + if (priv->UserNsid != NULL) { + g_free (priv->UserNsid); + priv->UserNsid = NULL; + } + + if (priv->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = priv->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (priv->PhotoSets); + priv->PhotoSets = NULL; + } +} + +static void +nflick_photo_search_worker_dispose (NFlickPhotoSearchWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void +nflick_photo_search_worker_finalize (NFlickPhotoSearchWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus +thread_func (NFlickPhotoSearchWorker *self) +{ + NFlickApiRequest *get_photosets_request = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + NFlickApiResponse *photo_search_response = NULL; + gchar *first_id = NULL; + NFlickPhotoSet *first_set = NULL; + NFlickApiRequest *first_photolist_request = NULL; + NFlickApiResponse *first_photo_list_response = NULL; + GList *first_list = NULL; + NFlickApiRequest *unsetted_request = NULL; + NFlickApiResponse *unsetted_response = NULL; + GList *unsetted_list = NULL; + NFlickPhotoSet *unsetted_set = NULL; + + get_photosets_request = nflick_api_request_new ("flickr.photos.search"); + if (get_photosets_request == NULL) + g_error ("request did not equal NULL, run for the hills\n"); + + nflick_api_request_add_parameter (get_photosets_request, + "tags", self->Private->UserNsid); + nflick_api_request_add_parameter (get_photosets_request, + "sort", "date-posted-desc"); + + nflick_api_request_sign (get_photosets_request); + if (nflick_api_request_exec (get_photosets_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + //gchar *buffer = nflick_api_request_take_buffer (get_photosets_request); + //g_print ("%s\n", buffer); + + photo_search_response = nflick_api_response_new_from_request ( + NFLICK_TYPE_PHOTO_SEARCH_RESPONSE, get_photosets_request); + if (photo_search_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, photo_search_response) == FALSE) + goto Error; + + self->Private->PhotoSets = nflick_photo_search_response_take_list ((NFlickPhotoSearchResponse *) photo_search_response); + /* + GList *l; + for (l = self->Private->PhotoSets; l != NULL; l = l->next) + { + FlickrPhoto *photo = (FlickrPhoto*)l->data; + g_print ("%s %s %s\n", photo->id, photo->title, photo->user); + } + */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + g_print ("Abort\n"); + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + g_print ("Error\n"); +Done: + if (get_photosets_request != NULL) + g_object_unref (get_photosets_request); + + if (photo_search_response != NULL) + g_object_unref (photo_search_response); + + if (first_photolist_request != NULL) + g_object_unref (first_photolist_request); + + if (unsetted_response != NULL) + g_object_unref (unsetted_response); + + if (unsetted_request != NULL) + g_object_unref (unsetted_request); + + if (first_photo_list_response != NULL) + g_object_unref (first_photo_list_response); + + if (first_id != NULL) + g_free (first_id); + + return status; +} + +NFlickPhotoSearchWorker* +nflick_photo_search_worker_new (const gchar *usernsid, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (usernsid != NULL, NULL); + + NFlickPhotoSearchWorker *self = g_object_new (NFLICK_TYPE_PHOTO_SEARCH_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->UserNsid = g_strdup (usernsid); + self->Private->PhotoSets = NULL; + + return self; +} + +GList* +nflick_photo_search_worker_take_list (NFlickPhotoSearchWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void +nflick_photo_search_worker_get_property (NFlickPhotoSearchWorker *self, + guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SEARCH_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-photo-search-worker.h b/attic/aaina/libnflick/nflick-photo-search-worker.h new file mode 100644 index 0000000..6d8764b --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-search-worker.h @@ -0,0 +1,62 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* Neil J. Patel */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSETLISTWORKER_H__ +#define __NFLICKSETLISTWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-no-set-response.h" + +typedef struct _NFlickPhotoSearchWorker NFlickPhotoSearchWorker; +typedef struct _NFlickPhotoSearchWorkerClass NFlickPhotoSearchWorkerClass; +typedef struct _NFlickPhotoSearchWorkerPrivate NFlickPhotoSearchWorkerPrivate; + +struct _NFlickPhotoSearchWorker +{ + NFlickWorker Parent; + NFlickPhotoSearchWorkerPrivate *Private; +}; + +struct _NFlickPhotoSearchWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_photo_search_worker_get_type (void); + +NFlickPhotoSearchWorker* +nflick_photo_search_worker_new (const gchar *usernsid, const gchar *token); + +GList* +nflick_photo_search_worker_take_list (NFlickPhotoSearchWorker *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-photo-set-private.h b/attic/aaina/libnflick/nflick-photo-set-private.h new file mode 100644 index 0000000..4c6e745 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-set-private.h @@ -0,0 +1,59 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickPhotoSetPrivate +{ + gchar *Name; + gint32 Count; + gchar *Id; + gboolean Fetched; + GList *PhotoDataList; +}; + +enum +{ + ARG_0, + ARG_COMBO_TEXT, + ARG_COUNT, + ARG_ID, + ARG_FETCHED, + ARG_LIST +}; + +static void nflick_photo_set_class_init (NFlickPhotoSetClass *klass); + +static void nflick_photo_set_init (NFlickPhotoSet *self); + +static gboolean private_init (NFlickPhotoSet *self, NFlickPhotoSetPrivate *private); + +static void private_dispose (NFlickPhotoSetPrivate *private); + +static void nflick_photo_set_dispose (NFlickPhotoSet *self); + +static void nflick_photo_set_finalize (NFlickPhotoSet *self); + +static void nflick_photo_set_get_property (NFlickPhotoSet *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-photo-set.c b/attic/aaina/libnflick/nflick-photo-set.c new file mode 100644 index 0000000..5bd4483 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-set.c @@ -0,0 +1,242 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-set.h" +#include "nflick-photo-set-private.h" + +GType nflick_photo_set_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoSetClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_set_class_init, + NULL, + NULL, + sizeof (NFlickPhotoSet), + 4, + (GInstanceInitFunc) nflick_photo_set_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickPhotoSet", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_set_class_init (NFlickPhotoSetClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_set_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_set_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_set_get_property; + + g_object_class_install_property (gobjectclass, ARG_COMBO_TEXT, + g_param_spec_string + ("combotext", "ComboText", "A text to put in combobox", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_ID, + g_param_spec_string + ("id", "Id", "Photoset id", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_COUNT, + g_param_spec_int + ("count", "Count", "Number of items", + -5000, 5000, 0, G_PARAM_READABLE)); + /* FIXME Use actual max/min vals for int */ + + g_object_class_install_property (gobjectclass, ARG_FETCHED, + g_param_spec_boolean + ("fetched", "Fetched", "If the photoset information was fetched", + FALSE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_LIST, + g_param_spec_pointer + ("list", "List", "A list of all the pointers", + G_PARAM_READABLE)); + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_photo_set_init (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + self->Private = NULL; + + NFlickPhotoSetPrivate *priv = g_new0 (NFlickPhotoSetPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoSet *self, NFlickPhotoSetPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SET (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Name = NULL; + private->Count = 0; + private->Id = NULL; + private->Fetched = FALSE; + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoSetPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Name != NULL) { + g_free (private->Name); + private->Name = NULL; + } + + if (private->Id != NULL) { + g_free (private->Id); + private->Id = NULL; + } + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_set_dispose (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_set_finalize (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +NFlickPhotoSet* nflick_photo_set_new_no_set (gint32 count) +{ + g_return_val_if_fail (count >= 0, NULL); + + return nflick_photo_set_new (gettext ("Photos without a set"), NULL, count); +} + +NFlickPhotoSet* nflick_photo_set_new (const gchar *name, const gchar *id, gint32 count) +{ + g_return_val_if_fail (name != NULL, NULL); + g_return_val_if_fail (count >= 0, NULL); + + NFlickPhotoSet *self = g_object_new (NFLICK_TYPE_PHOTO_SET, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Name = g_strdup (name); + + if (id != NULL) + self->Private->Id = g_strdup (id); + + self->Private->Count = count; + + return self; +} + +void nflick_photo_set_give_list (NFlickPhotoSet *self, GList *list) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + if (self->Private->Fetched != FALSE) + return; + + self->Private->PhotoDataList = list; + self->Private->Fetched = TRUE; + self->Private->Count = g_list_length (list); +} + +static void nflick_photo_set_get_property (NFlickPhotoSet *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_COMBO_TEXT: { + gchar *str = g_strdup_printf ("%s (%d)", self->Private->Name, self->Private->Count); + g_value_take_string (value, str); + } break; + + case ARG_COUNT: { + g_value_set_int (value, self->Private->Count); + } break; + + case ARG_ID: { + g_value_set_string (value, self->Private->Id); + } break; + + case ARG_FETCHED: { + g_value_set_boolean (value, self->Private->Fetched); + } break; + + case ARG_LIST: { + g_value_set_pointer (value, self->Private->PhotoDataList); + } break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-photo-set.h b/attic/aaina/libnflick/nflick-photo-set.h new file mode 100644 index 0000000..a322962 --- /dev/null +++ b/attic/aaina/libnflick/nflick-photo-set.h @@ -0,0 +1,53 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOSET_H__ +#define __NFLICKPHOTOSET_H__ + +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickPhotoSet +{ + GObject Parent; + NFlickPhotoSetPrivate *Private; +}; + +struct _NFlickPhotoSetClass +{ + GObjectClass ParentClass; +}; + +GType nflick_photo_set_get_type (void); + +NFlickPhotoSet* nflick_photo_set_new (const gchar *name, const gchar *id, gint32 count); + +void nflick_photo_set_give_list (NFlickPhotoSet *self, GList *list); + +NFlickPhotoSet* nflick_photo_set_new_no_set (gint32 count); + +#endif diff --git a/attic/aaina/libnflick/nflick-pixbuf-fetch-private.h b/attic/aaina/libnflick/nflick-pixbuf-fetch-private.h new file mode 100644 index 0000000..460b369 --- /dev/null +++ b/attic/aaina/libnflick/nflick-pixbuf-fetch-private.h @@ -0,0 +1,37 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +struct _PixbufFetchHelper +{ + gint32 Width; + gint32 Height; + GdkPixbufLoader *Loader; + FILE *CacheFile; +} typedef PixbufFetchHelper; + +static int block_reader (PixbufFetchHelper *helper, gchar *buffer, int len); + +static void on_size_prepared (GdkPixbufLoader *loader, gint width, gint height, PixbufFetchHelper *helper); + +static gchar* get_cache_file (const gchar *token); + diff --git a/attic/aaina/libnflick/nflick-pixbuf-fetch.c b/attic/aaina/libnflick/nflick-pixbuf-fetch.c new file mode 100644 index 0000000..8892907 --- /dev/null +++ b/attic/aaina/libnflick/nflick-pixbuf-fetch.c @@ -0,0 +1,172 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-pixbuf-fetch.h" +#include "nflick-pixbuf-fetch-private.h" + +GdkPixbuf* nflick_pixbuf_fetch_try_cache (const gchar *token) +{ + return NULL; +} + +GdkPixbuf* nflick_pixbuf_fetch (const gchar *url, gint32 width, gint32 height, const gchar *cache_token) +{ + g_return_val_if_fail (url != NULL, NULL); + + ne_uri *uri = NULL; /* Neon uri */ + ne_request *request = NULL; /* Http request */ + ne_session *session = NULL; /* Neon session */ + gboolean result = TRUE; + GdkPixbuf *pixbuf = NULL; + + /* Allocate new neon uri */ + uri = g_new0 (ne_uri, 1); + if (uri == NULL) { + result = FALSE; + goto Done; + } + + /* Parse the incoming url into valid neon uri */ + if (ne_uri_parse (url, uri) || uri->host == NULL || uri->path == NULL) { + result = FALSE; + goto Done; + } + + /* Set defaults. */ + if (uri->scheme == NULL) + uri->scheme = g_strdup ("http"); + if (uri->port == 0) + uri->port = ne_uri_defaultport (uri->scheme); + + /* Create the session */ + session = ne_session_create (uri->scheme, uri->host, uri->port); + if (session == NULL) { + result = FALSE; + goto Done; + } + + /* Create the request */ + request = ne_request_create (session, "GET", uri->path); + if (request == NULL) { + result = FALSE; + goto Done; + } + + /* Allocate our struct */ + PixbufFetchHelper *helper = g_new0 (PixbufFetchHelper, 1); + if (helper == NULL) { + result = FALSE; + goto Done; + } + + helper->Loader = gdk_pixbuf_loader_new (); + if (helper->Loader == NULL) { + result = FALSE; + goto Done; + } + + // Open the cache file if applies... + // FIXME: Move this shit as func param + + if (cache_token != NULL && 1) { + gchar *file_name = NULL; + file_name = get_cache_file (cache_token); + if (file_name != NULL) { + helper->CacheFile = fopen (file_name, "wb"); + g_free (file_name); + } + } + + g_signal_connect (G_OBJECT (helper->Loader), "size-prepared", (gpointer) on_size_prepared, helper); + + helper->Width = width; + helper->Height = height; + + ne_add_response_body_reader (request, ne_accept_always, (gpointer) block_reader, helper); + + result = (ne_request_dispatch (request) == NE_OK) ? TRUE : FALSE; + + if (helper->CacheFile != NULL) + fclose (helper->CacheFile); + gdk_pixbuf_loader_close (helper->Loader, NULL); + + if (result == TRUE) { + pixbuf = gdk_pixbuf_loader_get_pixbuf (helper->Loader); + if (pixbuf) + g_object_ref (pixbuf); + } else { + // FIXME: Remove the cached file + } + +Done: + if (uri != NULL) { + ne_uri_free (uri); + g_free (uri); + } + + if (session != NULL) + ne_session_destroy (session); + + if (request != NULL) + ne_request_destroy (request); + + if (helper != NULL) { + if (helper->Loader != NULL) + g_object_unref (helper->Loader); + g_free (helper); + } + + return pixbuf; +} + +static gchar* get_cache_file (const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + + return g_build_filename ("cache", token, NULL); +} + +static int block_reader (PixbufFetchHelper *helper, gchar *buffer, int len) +{ + g_return_val_if_fail (helper != NULL, -1); + g_return_val_if_fail (helper->Loader != NULL, -1); + + if (helper->CacheFile != NULL) + fwrite (buffer, 1, len, helper->CacheFile); + + gdk_pixbuf_loader_write (helper->Loader, buffer, len, NULL); + + return 0; +} + +static void on_size_prepared (GdkPixbufLoader *loader, gint width, gint height, PixbufFetchHelper *helper) +{ + g_return_if_fail (helper != NULL); + + if (helper->Width == 0 && helper->Height == 0) + return; + + if (width != helper->Width && height != helper->Height) + gdk_pixbuf_loader_set_size (loader, helper->Width, helper->Height); +} + diff --git a/attic/aaina/libnflick/nflick-pixbuf-fetch.h b/attic/aaina/libnflick/nflick-pixbuf-fetch.h new file mode 100644 index 0000000..8def879 --- /dev/null +++ b/attic/aaina/libnflick/nflick-pixbuf-fetch.h @@ -0,0 +1,40 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPIXBUFFETCH_H__ +#define __NFLICKPIXBUFFETCH_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +GdkPixbuf* nflick_pixbuf_fetch (const gchar *url, int width, int height, const gchar *token); + +GdkPixbuf* nflick_pixbuf_fetch_try_cache (const gchar *token); + +#endif diff --git a/attic/aaina/libnflick/nflick-set-list-response-private.h b/attic/aaina/libnflick/nflick-set-list-response-private.h new file mode 100644 index 0000000..0634c58 --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickSetListResponsePrivate +{ + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void nflick_set_list_response_class_init (NFlickSetListResponseClass *klass); + +static void nflick_set_list_response_init (NFlickSetListResponse *self); + +static gboolean private_init (NFlickSetListResponse *self, NFlickSetListResponsePrivate *private); + +static void private_dispose (NFlickSetListResponsePrivate *private); + +static void nflick_set_list_response_dispose (NFlickSetListResponse *self); + +static void nflick_set_list_response_finalize (NFlickSetListResponse *self); + +static void parse_func (NFlickSetListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_set_list_response_get_property (NFlickSetListResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/aaina/libnflick/nflick-set-list-response.c b/attic/aaina/libnflick/nflick-set-list-response.c new file mode 100644 index 0000000..abaa761 --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-response.c @@ -0,0 +1,212 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-set-list-response.h" +#include "nflick-set-list-response-private.h" + +GType nflick_set_list_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickSetListResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_set_list_response_class_init, + NULL, + NULL, + sizeof (NFlickSetListResponse), + 4, + (GInstanceInitFunc) nflick_set_list_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickSetListResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_set_list_response_class_init (NFlickSetListResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_set_list_response_dispose; + gobjectclass->finalize = (gpointer) nflick_set_list_response_finalize; + gobjectclass->get_property = (gpointer) nflick_set_list_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_set_list_response_init (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + self->Private = NULL; + + NFlickSetListResponsePrivate *priv = g_new0 (NFlickSetListResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickSetListResponse *self, NFlickSetListResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoSets = NULL; + + return TRUE; +} + +static void private_dispose (NFlickSetListResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = private->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (private->PhotoSets); + private->PhotoSets = NULL; + } +} + +GList* nflick_set_list_response_take_list (NFlickSetListResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void nflick_set_list_response_dispose (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_set_list_response_finalize (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickSetListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photosets") == 0) { + + xmlNode *sets_node = NULL; + for (sets_node = cur_node->children; sets_node; sets_node = sets_node->next) { + + if (sets_node->type == XML_ELEMENT_NODE && strcmp (sets_node->name, "photoset") == 0) { + + gchar *id = xmlGetProp (sets_node, "id"); + gchar *count = xmlGetProp (sets_node, "photos"); + gchar *title = NULL; + gint32 count_val = 0; + NFlickPhotoSet *photo_set = NULL; + + xmlNode *this_node = NULL; + for (this_node = sets_node->children; this_node; this_node = this_node->next) { + if (this_node->type == XML_ELEMENT_NODE && strcmp (this_node->name, "title") == 0) { + if (title != NULL) + g_free (title); + title = xmlNodeListGetString (doc, this_node->xmlChildrenNode, 1); + } + } + + count_val = atoi (count); + + if (count_val != 0 && + id != NULL && + title != NULL) + photo_set = nflick_photo_set_new (title, id, count_val); + + if (photo_set != NULL) + self->Private->PhotoSets = g_list_append (self->Private->PhotoSets, photo_set); + + /* Free */ + if (id != NULL) + g_free (id); + if (count != NULL) + g_free (count); + if (title != NULL) + g_free (title); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_set_list_response_get_property (NFlickSetListResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-set-list-response.h b/attic/aaina/libnflick/nflick-set-list-response.h new file mode 100644 index 0000000..6e0d45d --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSETLISTRESPONSE_H__ +#define __NFLICKSETLISTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-set.h" + +struct _NFlickSetListResponse +{ + NFlickApiResponse Parent; + NFlickSetListResponsePrivate *Private; +}; + +struct _NFlickSetListResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_set_list_response_get_type (void); + +GList* nflick_set_list_response_take_list (NFlickSetListResponse *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-set-list-worker-private.h b/attic/aaina/libnflick/nflick-set-list-worker-private.h new file mode 100644 index 0000000..7dc1742 --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-worker-private.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorkerClass* ParentClass = NULL; + +struct _NFlickSetListWorkerPrivate +{ + gchar *UserNsid; + gchar *Token; + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void nflick_set_list_worker_class_init (NFlickSetListWorkerClass *klass); + +static void nflick_set_list_worker_init (NFlickSetListWorker *self); + +static gboolean private_init (NFlickSetListWorker *self, NFlickSetListWorkerPrivate *priv); + +static void private_dispose (NFlickSetListWorkerPrivate *priv); + +static void nflick_set_list_worker_dispose (NFlickSetListWorker *self); + +static void nflick_set_list_worker_finalize (NFlickSetListWorker *self); + +static NFlickWorkerStatus thread_func (NFlickSetListWorker *self); + +static void nflick_set_list_worker_get_property (NFlickSetListWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-set-list-worker.c b/attic/aaina/libnflick/nflick-set-list-worker.c new file mode 100644 index 0000000..024ab1f --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-worker.c @@ -0,0 +1,362 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-set-list-worker.h" +#include "nflick-set-list-worker-private.h" + +GType nflick_set_list_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickSetListWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_set_list_worker_class_init, + NULL, + NULL, + sizeof (NFlickSetListWorker), + 4, + (GInstanceInitFunc) nflick_set_list_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickSetListWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_set_list_worker_class_init (NFlickSetListWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_set_list_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_set_list_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_set_list_worker_get_property; + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_set_list_worker_init (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + self->Private = NULL; + + NFlickSetListWorkerPrivate *priv = g_new0 (NFlickSetListWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Parsing photosets...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickSetListWorker *self, NFlickSetListWorkerPrivate *priv) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_WORKER (self), FALSE); + g_return_val_if_fail (priv != NULL, FALSE); + + priv->UserNsid = NULL; + priv->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickSetListWorkerPrivate *priv) +{ + g_return_if_fail (priv != NULL); + + if (priv->Token != NULL) { + g_free (priv->Token); + priv->Token = NULL; + } + + if (priv->UserNsid != NULL) { + g_free (priv->UserNsid); + priv->UserNsid = NULL; + } + + if (priv->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = priv->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (priv->PhotoSets); + priv->PhotoSets = NULL; + } +} + +static void nflick_set_list_worker_dispose (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_set_list_worker_finalize (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickSetListWorker *self) +{ + NFlickApiRequest *get_photosets_request = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + NFlickApiResponse *set_list_response = NULL; + gchar *first_id = NULL; + NFlickPhotoSet *first_set = NULL; /* Do not dispose, it's not reffed */ + NFlickApiRequest *first_photolist_request = NULL; + NFlickApiResponse *first_photo_list_response = NULL; + GList *first_list = NULL; + NFlickApiRequest *unsetted_request = NULL; + NFlickApiResponse *unsetted_response = NULL; + GList *unsetted_list = NULL; + NFlickPhotoSet *unsetted_set = NULL; /* Do not dispose, it's not reffed */ + + get_photosets_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_LIST); + if (get_photosets_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_photosets_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (get_photosets_request, + NFLICK_FLICKR_API_PARAM_USER_ID, + self->Private->UserNsid); + + nflick_api_request_sign (get_photosets_request); + if (nflick_api_request_exec (get_photosets_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + set_list_response = nflick_api_response_new_from_request (NFLICK_TYPE_SET_LIST_RESPONSE, get_photosets_request); + if (set_list_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, set_list_response) == FALSE) + goto Error; + + self->Private->PhotoSets = nflick_set_list_response_take_list ((NFlickSetListResponse *) set_list_response); + + /* Let's fetch information about the unsetted photos */ + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Parsing photos without set...")); + + unsetted_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOS_NOT_IN_SET); + if (unsetted_request == NULL) + goto Error; + + nflick_api_request_add_parameter (unsetted_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + /* We try to get 500 photos per page. 500 is a maximum value. + * FIXME: We should check if 500 is enough. Someone might have more than + * 500 photos */ + + nflick_api_request_add_parameter (unsetted_request, + NFLICK_FLICKR_API_PARAM_PER_PAGE, + "500"); + + nflick_api_request_sign (unsetted_request); + if (nflick_api_request_exec (unsetted_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + unsetted_response = nflick_api_response_new_from_request (NFLICK_TYPE_NO_SET_RESPONSE, unsetted_request); + if (unsetted_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, unsetted_response) == FALSE) + goto Error; + + unsetted_list = nflick_no_set_response_take_list ((NFlickNoSetResponse *) unsetted_response); + /* FIXME: Here we could expose the "count" property on the PhotoSetResponse and NoSetResponse */ + unsetted_set = nflick_photo_set_new_no_set (g_list_length (unsetted_list)); + nflick_photo_set_give_list (unsetted_set, unsetted_list); + + /* Append the set to our set list... */ + self->Private->PhotoSets = g_list_append (self->Private->PhotoSets, + unsetted_set); + + /* If the user has not sets, finish now */ + if (self->Private->PhotoSets->data == (gpointer) unsetted_set) { + goto Done; + } + /* Now let's try fetching the photos for first photo set */ + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Loading photoset data...")); + + GList *sets = self->Private->PhotoSets; + GList *set; + gint i = g_list_length (sets); + + for (set = sets; set != NULL; set = set->next) { + first_set = (NFlickPhotoSet*)set->data; + + g_object_get (G_OBJECT (first_set), "id", &first_id, NULL); + + first_photolist_request = nflick_api_request_new + (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS); + if (first_photolist_request == NULL) + goto Error; + + nflick_api_request_add_parameter (first_photolist_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (first_photolist_request, + NFLICK_FLICKR_API_PARAM_PHOTOSET_ID, + first_id); + + nflick_api_request_sign (first_photolist_request); + if (nflick_api_request_exec (first_photolist_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + g_warning ("Error : %s", first_id); + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + g_warning ("Abort : %s", first_id); + + first_photo_list_response = nflick_api_response_new_from_request + (NFLICK_TYPE_PHOTO_LIST_RESPONSE, first_photolist_request); + if (first_photo_list_response == NULL) + g_warning ("No photos : %s", first_id); + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, + first_photo_list_response) == FALSE) + ; + + first_list = nflick_photo_list_response_take_list + ((NFlickPhotoListResponse *) first_photo_list_response); + nflick_photo_set_give_list (first_set, first_list); + } + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + g_print ("Abort\n"); + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + g_print ("Error\n"); +Done: + if (get_photosets_request != NULL) + g_object_unref (get_photosets_request); + + if (set_list_response != NULL) + g_object_unref (set_list_response); + + if (first_photolist_request != NULL) + g_object_unref (first_photolist_request); + + if (unsetted_response != NULL) + g_object_unref (unsetted_response); + + if (unsetted_request != NULL) + g_object_unref (unsetted_request); + + if (first_photo_list_response != NULL) + g_object_unref (first_photo_list_response); + + if (first_id != NULL) + g_free (first_id); + + return status; +} + +NFlickSetListWorker* nflick_set_list_worker_new (const gchar *usernsid, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (usernsid != NULL, NULL); + + NFlickSetListWorker *self = g_object_new (NFLICK_TYPE_SET_LIST_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->UserNsid = g_strdup (usernsid); + self->Private->PhotoSets = NULL; + + return self; +} + +GList* nflick_set_list_worker_take_list (NFlickSetListWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_WORKER (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void nflick_set_list_worker_get_property (NFlickSetListWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-set-list-worker.h b/attic/aaina/libnflick/nflick-set-list-worker.h new file mode 100644 index 0000000..d7105c7 --- /dev/null +++ b/attic/aaina/libnflick/nflick-set-list-worker.h @@ -0,0 +1,55 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSETLISTWORKER_H__ +#define __NFLICKSETLISTWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-no-set-response.h" + +struct _NFlickSetListWorker +{ + NFlickWorker Parent; + NFlickSetListWorkerPrivate *Private; +}; + +struct _NFlickSetListWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_set_list_worker_get_type (void); + +NFlickSetListWorker* nflick_set_list_worker_new (const gchar *usernsid, const gchar *token); + +GList* nflick_set_list_worker_take_list (NFlickSetListWorker *self); + +#endif diff --git a/attic/aaina/libnflick/nflick-show-worker-private.h b/attic/aaina/libnflick/nflick-show-worker-private.h new file mode 100644 index 0000000..417fa75 --- /dev/null +++ b/attic/aaina/libnflick/nflick-show-worker-private.h @@ -0,0 +1,57 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickShowWorkerPrivate +{ + gchar *PhotoId; + gchar *Token; + gint32 Width; + gint32 Height; + GdkPixbuf *Pixbuf; +}; + +enum +{ + ARG_0, + ARG_PIXBUF, +}; + +static void nflick_show_worker_class_init (NFlickShowWorkerClass *klass); + +static void nflick_show_worker_init (NFlickShowWorker *self); + +static gboolean private_init (NFlickShowWorker *self, NFlickShowWorkerPrivate *private); + +static void private_dispose (NFlickShowWorkerPrivate *private); + +static void nflick_show_worker_dispose (NFlickShowWorker *self); + +static void nflick_show_worker_finalize (NFlickShowWorker *self); + +static NFlickWorkerStatus thread_func (NFlickShowWorker *self); + +static void nflick_show_worker_get_property (NFlickShowWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-show-worker.c b/attic/aaina/libnflick/nflick-show-worker.c new file mode 100644 index 0000000..e2ab692 --- /dev/null +++ b/attic/aaina/libnflick/nflick-show-worker.c @@ -0,0 +1,264 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-show-worker.h" +#include "nflick-show-worker-private.h" + +GType nflick_show_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickShowWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_show_worker_class_init, + NULL, + NULL, + sizeof (NFlickShowWorker), + 4, + (GInstanceInitFunc) nflick_show_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickShowWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_show_worker_class_init (NFlickShowWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_show_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_show_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_show_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_PIXBUF, + g_param_spec_object + ("pixbuf", "Pixbuf", "Pixbuf", + GDK_TYPE_PIXBUF, G_PARAM_READABLE)); + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_show_worker_init (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + self->Private = NULL; + + NFlickShowWorkerPrivate *priv = g_new0 (NFlickShowWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, + gettext ("Loading photo...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickShowWorker *self, NFlickShowWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_SHOW_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoId = NULL; + private->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickShowWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->PhotoId != NULL) { + g_free (private->PhotoId); + private->PhotoId = NULL; + } + + if (private->Pixbuf != NULL) { + g_object_unref (private->Pixbuf); + private->Pixbuf = NULL; + } +} + +static void nflick_show_worker_dispose (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_show_worker_finalize (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickShowWorker *self) +{ + NFlickApiRequest *get_sizes_request = NULL; + NFlickApiResponse *get_sizes_response = NULL; + gchar *uri = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + gdouble vbox_aspect = (gdouble) self->Private->Width / (gdouble) self->Private->Height; + gdouble pixbuf_aspect = -1; + gint32 final_width = -1; + gint32 final_height = -1; + gboolean rotated = FALSE; + + get_sizes_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOS_GET_SIZES); + if (get_sizes_request == NULL) + goto Error; + + /*nflick_api_request_add_parameter (get_sizes_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + */ + nflick_api_request_add_parameter (get_sizes_request, + NFLICK_FLICKR_API_PARAM_PHOTO_ID, + self->Private->PhotoId); + + nflick_api_request_sign (get_sizes_request); + if (nflick_api_request_exec (get_sizes_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + get_sizes_response = nflick_api_response_new_from_request (NFLICK_TYPE_GET_SIZES_RESPONSE, get_sizes_request); + if (get_sizes_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, get_sizes_response) == FALSE) + goto Error; + + final_width = self->Private->Width; + final_height = self->Private->Height; + + uri = nflick_get_sizes_response_find_match ((NFlickGetSizesResponse *) get_sizes_response, + &final_width, &final_height, &rotated); + + if (uri == NULL) + goto Error; + + self->Private->Pixbuf = nflick_pixbuf_fetch (uri, final_width, final_height, NULL); + if (self->Private->Pixbuf == NULL) + goto Error; + + if (rotated == TRUE) { + GdkPixbuf *pxbuf = gdk_pixbuf_rotate_simple (self->Private->Pixbuf, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE); + if (pxbuf != NULL) { + g_object_unref (self->Private->Pixbuf); + self->Private->Pixbuf = pxbuf; + } + } + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (get_sizes_request != NULL) + g_object_unref (get_sizes_request); + + if (get_sizes_response != NULL) + g_object_unref (get_sizes_response); + + if (uri != NULL) + g_free (uri); + + return status; +} + +NFlickShowWorker* nflick_show_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (photoid != NULL, NULL); + + NFlickShowWorker *self = g_object_new (NFLICK_TYPE_SHOW_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->PhotoId= g_strdup (photoid); + self->Private->Width = width; + self->Private->Height = height; + + return self; +} + +static void nflick_show_worker_get_property (NFlickShowWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_PIXBUF: + g_value_set_object (value, self->Private->Pixbuf); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + + } +} diff --git a/attic/aaina/libnflick/nflick-show-worker.h b/attic/aaina/libnflick/nflick-show-worker.h new file mode 100644 index 0000000..a17faf9 --- /dev/null +++ b/attic/aaina/libnflick/nflick-show-worker.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSHOWWORKER_H__ +#define __NFLICKSHOWWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-get-sizes-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-pixbuf-fetch.h" + +struct _NFlickShowWorker +{ + NFlickWorker Parent; + NFlickShowWorkerPrivate *Private; +}; + +struct _NFlickShowWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_show_worker_get_type (void); + +NFlickShowWorker* nflick_show_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token); + +#endif diff --git a/attic/aaina/libnflick/nflick-types.h b/attic/aaina/libnflick/nflick-types.h new file mode 100644 index 0000000..11566cd --- /dev/null +++ b/attic/aaina/libnflick/nflick-types.h @@ -0,0 +1,591 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKTYPES_H__ +#define __NFLICKTYPES_H__ + +#include +#include + +/* Window */ + +typedef struct _NFlickWindowClass NFlickWindowClass; + +typedef struct _NFlickWindow NFlickWindow; + +typedef struct _NFlickWindowPrivate NFlickWindowPrivate; + +#define NFLICK_TYPE_WINDOW (nflick_window_get_type ()) + +#define NFLICK_IS_WINDOW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WINDOW)) + +#define NFLICK_WINDOW(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WINDOW, NFlickWindow)) + +#define NFLICK_WINDOW_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WINDOW, NFlickWindowClass)) + +/* Wait dialog */ + +#define NFLICK_WAIT_DIALOG_RESPONSE_ABORTED 1000 + +#define NFLICK_WAIT_DIALOG_RESPONSE_ERROR 1001 + +#define NFLICK_WAIT_DIALOG_RESPONSE_OK 1002 + +typedef struct _NFlickWaitDialogClass NFlickWaitDialogClass; + +typedef struct _NFlickWaitDialog NFlickWaitDialog; + +typedef struct _NFlickWaitDialogPrivate NFlickWaitDialogPrivate; + +#define NFLICK_TYPE_WAIT_DIALOG (nflick_wait_dialog_get_type ()) + +#define NFLICK_IS_WAIT_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WAIT_DIALOG)) + +#define NFLICK_WAIT_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WAIT_DIALOG, NFlickWaitDialog)) + +#define NFLICK_WAIT_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WAIT_DIALOG, NFlickWaitDialogClass)) + +/* Token dialog */ + +typedef struct _NFlickTokenDialogClass NFlickTokenDialogClass; + +typedef struct _NFlickTokenDialog NFlickTokenDialog; + +typedef struct _NFlickTokenDialogPrivate NFlickTokenDialogPrivate; + +#define NFLICK_TYPE_TOKEN_DIALOG (nflick_token_dialog_get_type ()) + +#define NFLICK_IS_TOKEN_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_TOKEN_DIALOG)) + +#define NFLICK_TOKEN_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_TOKEN_DIALOG, NFlickTokenDialog)) + +#define NFLICK_TOKEN_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_TOKEN_DIALOG, NFlickTokenDialogClass)) + +/* Cache dialog */ + +typedef struct _NFlickCacheDialogClass NFlickCacheDialogClass; + +typedef struct _NFlickCacheDialog NFlickCacheDialog; + +typedef struct _NFlickCacheDialogPrivate NFlickCacheDialogPrivate; + +#define NFLICK_TYPE_CACHE_DIALOG (nflick_cache_dialog_get_type ()) + +#define NFLICK_IS_CACHE_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_CACHE_DIALOG)) + +#define NFLICK_CACHE_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_CACHE_DIALOG, NFlickCacheDialog)) + +#define NFLICK_CACHE_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_CACHE_DIALOG, NFlickCacheDialogClass)) + +/* Welcome VBox */ + +typedef struct _NFlickWelcomeVBoxClass NFlickWelcomeVBoxClass; + +typedef struct _NFlickWelcomeVBox NFlickWelcomeVBox; + +typedef struct _NFlickWelcomeVBoxPrivate NFlickWelcomeVBoxPrivate; + +#define NFLICK_TYPE_WELCOME_VBOX (nflick_welcome_vbox_get_type ()) + +#define NFLICK_IS_WELCOME_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WELCOME_VBOX)) + +#define NFLICK_WELCOME_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WELCOME_VBOX, NFlickWelcomeVBox) + +#define NFLICK_WELCOME_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WELCOME_VBOX, NFlickWelcomeVBoxClass)) + +/* Show VBox */ + +typedef struct _NFlickShowVBoxClass NFlickShowVBoxClass; + +typedef struct _NFlickShowVBox NFlickShowVBox; + +typedef struct _NFlickShowVBoxPrivate NFlickShowVBoxPrivate; + +#define NFLICK_TYPE_SHOW_VBOX (nflick_show_vbox_get_type ()) + +#define NFLICK_IS_SHOW_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SHOW_VBOX)) + +#define NFLICK_SHOW_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SHOW_VBOX, NFlickShowVBox) + +#define NFLICK_SHOW_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SHOW_VBOX, NFlickShowVBoxClass)) + +/* Worker */ + +typedef struct _NFlickWorkerClass NFlickWorkerClass; + +typedef struct _NFlickWorker NFlickWorker; + +typedef struct _NFlickWorkerPrivate NFlickWorkerPrivate; + +#define NFLICK_TYPE_WORKER (nflick_worker_get_type ()) + +#define NFLICK_IS_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WORKER)) + +#define NFLICK_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WORKER, NFlickWorker) + +#define NFLICK_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WORKER, NFlickWorkerClass)) + +enum +{ + NFLICK_WORKER_STATUS_IDLE, + NFLICK_WORKER_STATUS_OK, + NFLICK_WORKER_STATUS_ABORTED, + NFLICK_WORKER_STATUS_RUNNING, + NFLICK_WORKER_STATUS_ERROR + +} typedef NFlickWorkerStatus; + +typedef NFlickWorkerStatus (*NFlickWorkerThreadFunc) (NFlickWorker *self); + +typedef gboolean (*NFlickWorkerIdleFunc) (NFlickWorker *self); + +/* Api request */ + +typedef struct _NFlickApiRequestClass NFlickApiRequestClass; + +typedef struct _NFlickApiRequest NFlickApiRequest; + +typedef struct _NFlickApiRequestPrivate NFlickApiRequestPrivate; + +#define NFLICK_TYPE_API_REQUEST (nflick_api_request_get_type ()) + +#define NFLICK_IS_API_REQUEST(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_API_REQUEST)) + +#define NFLICK_API_REQUEST(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_API_REQUEST, NFlickApiRequest) + +#define NFLICK_API_REQUEST_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_API_REQUEST, NFlickApiRequestClass)) + +/* Api response */ + +typedef struct _NFlickApiResponseClass NFlickApiResponseClass; + +typedef struct _NFlickApiResponse NFlickApiResponse; + +typedef struct _NFlickApiResponsePrivate NFlickApiResponsePrivate; + +#define NFLICK_TYPE_API_RESPONSE (nflick_api_response_get_type ()) + +#define NFLICK_IS_API_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_API_RESPONSE)) + +#define NFLICK_API_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_API_RESPONSE, NFlickApiResponse) + +typedef void (*NFlickApiRequestParseFunc) \ + (NFlickApiResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +#define NFLICK_API_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_API_RESPONSE, NFlickApiResponseClass)) + +/* Gft response */ + +typedef struct _NFlickGftResponseClass NFlickGftResponseClass; + +typedef struct _NFlickGftResponse NFlickGftResponse; + +typedef struct _NFlickGftResponsePrivate NFlickGftResponsePrivate; + +#define NFLICK_TYPE_GFT_RESPONSE (nflick_gft_response_get_type ()) + +#define NFLICK_IS_GFT_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_GFT_RESPONSE)) + +#define NFLICK_GFT_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_GFT_RESPONSE, NFlickGftResponse) + +#define NFLICK_GFT_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_GFT_RESPONSE, NFlickGftResponseClass)) + + /* Info response */ + +typedef struct _NFlickInfoResponseClass NFlickInfoResponseClass; + +typedef struct _NFlickInfoResponse NFlickInfoResponse; + +typedef struct _NFlickInfoResponsePrivate NFlickInfoResponsePrivate; + +#define NFLICK_TYPE_INFO_RESPONSE (nflick_info_response_get_type ()) + +#define NFLICK_IS_INFO_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_INFO_RESPONSE)) + +#define NFLICK_INFO_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj),\ + NFLICK_TYPE_INFO_RESPONSE, NFlickInfoResponse) + +#define NFLICK_INFO_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_INFO_RESPONSE, NFlickInfoResponseClass)) + +/* Photo set */ + +typedef struct _NFlickPhotoSetClass NFlickPhotoSetClass; + +typedef struct _NFlickPhotoSet NFlickPhotoSet; + +typedef struct _NFlickPhotoSetPrivate NFlickPhotoSetPrivate; + +#define NFLICK_TYPE_PHOTO_SET (nflick_photo_set_get_type ()) + +#define NFLICK_IS_PHOTO_SET(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_SET)) + +#define NFLICK_PHOTO_SET(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_SET, NFlickPhotoSet) + +#define NFLICK_PHOTO_SET_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_SET, NFlickPhotoSetClass)) + +/* Thmb table */ + +typedef struct _NFlickThmbTableClass NFlickThmbTableClass; + +typedef struct _NFlickThmbTable NFlickThmbTable; + +typedef struct _NFlickThmbTablePrivate NFlickThmbTablePrivate; + +#define NFLICK_TYPE_THMB_TABLE (nflick_thmb_table_get_type ()) + +#define NFLICK_IS_THMB_TABLE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_THMB_TABLE)) + +#define NFLICK_THMB_TABLE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_THMB_TABLE, NFlickThmbTable) + +#define NFLICK_THMB_TABLE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_THMB_TABLE, NFlickThmbTableClass)) + +/* Thmb image */ + +typedef struct _NFlickThmbImageClass NFlickThmbImageClass; + +typedef struct _NFlickThmbImage NFlickThmbImage; + +typedef struct _NFlickThmbImagePrivate NFlickThmbImagePrivate; + +#define NFLICK_TYPE_THMB_IMAGE (nflick_thmb_image_get_type ()) + +#define NFLICK_IS_THMB_IMAGE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_THMB_IMAGE)) + +#define NFLICK_THMB_IMAGE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_THMB_IMAGE, NFlickThmbImage) + +#define NFLICK_THMB_IMAGE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_THMB_IMAGE, NFlickThmbImageClass)) + +/* Set list response */ + +typedef struct _NFlickSetListResponseClass NFlickSetListResponseClass; + +typedef struct _NFlickSetListResponse NFlickSetListResponse; + +typedef struct _NFlickSetListResponsePrivate NFlickSetListResponsePrivate; + +#define NFLICK_TYPE_SET_LIST_RESPONSE (nflick_set_list_response_get_type ()) + +#define NFLICK_IS_SET_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_LIST_RESPONSE)) + +#define NFLICK_SET_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_LIST_RESPONSE, NFlickSetListResponse) + +#define NFLICK_SET_LIST_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_LIST_RESPONSE, NFlickSetListResponseClass)) + + +/* Photo search response */ + +typedef struct _NFlickPhotoSearchResponseClass NFlickPhotoSearchResponseClass; + +typedef struct _NFlickPhotoSearchResponse NFlickPhotoSearchResponse; + +typedef struct _NFlickPhotoSearchResponsePrivate NFlickPhotoSearchResponsePrivate; + +#define NFLICK_TYPE_PHOTO_SEARCH_RESPONSE (nflick_photo_search_response_get_type ()) + +#define NFLICK_IS_PHOTO_SEARCH_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_SEARCH_RESPONSE)) + +#define NFLICK_PHOTO_SEARCH_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_SEARCH_RESPONSE, NFlickPhotoSearchResponse) + +#define NFLICK_PHOTO_SEARCH_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_SEARCH_RESPONSE, NFlickPhotoSearchResponseClass)) + +/* Photo list response */ + +typedef struct _NFlickPhotoListResponseClass NFlickPhotoListResponseClass; + +typedef struct _NFlickPhotoListResponse NFlickPhotoListResponse; + +typedef struct _NFlickPhotoListResponsePrivate NFlickPhotoListResponsePrivate; + +#define NFLICK_TYPE_PHOTO_LIST_RESPONSE (nflick_photo_list_response_get_type ()) + +#define NFLICK_IS_PHOTO_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE)) + +#define NFLICK_PHOTO_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE, NFlickPhotoListResponse) + +#define NFLICK_PHOTO_LIST_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE, NFlickPhotoListResponseClass)) + +/* No set response */ + +typedef struct _NFlickNoSetResponseClass NFlickNoSetResponseClass; + +typedef struct _NFlickNoSetResponse NFlickNoSetResponse; + +typedef struct _NFlickNoSetResponsePrivate NFlickNoSetResponsePrivate; + +#define NFLICK_TYPE_NO_SET_RESPONSE (nflick_no_set_response_get_type ()) + +#define NFLICK_IS_NO_SET_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_NO_SET_RESPONSE)) + +#define NFLICK_NO_SET_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_NO_SET_RESPONSE, NFlickNoSetResponse) + +#define NFLICK_NO_SET_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_NO_SET_RESPONSE, NFlickNoSetResponseClass)) + +/* GetSizes response */ + +typedef struct _NFlickGetSizesResponseClass NFlickGetSizesResponseClass; + +typedef struct _NFlickGetSizesResponse NFlickGetSizesResponse; + +typedef struct _NFlickGetSizesResponsePrivate NFlickGetSizesResponsePrivate; + +#define NFLICK_TYPE_GET_SIZES_RESPONSE (nflick_get_sizes_response_get_type ()) + +#define NFLICK_IS_GET_SIZES_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE)) + +#define NFLICK_GET_SIZES_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE, NFlickGetSizesResponse) + +#define NFLICK_GET_SIZES_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE, NFlickGetSizesResponseClass)) + +/* Auth worker */ + +typedef struct _NFlickAuthWorkerClass NFlickAuthWorkerClass; + +typedef struct _NFlickAuthWorker NFlickAuthWorker; + +typedef struct _NFlickAuthWorkerPrivate NFlickAuthWorkerPrivate; + +#define NFLICK_TYPE_AUTH_WORKER (nflick_auth_worker_get_type ()) + +#define NFLICK_IS_AUTH_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_AUTH_WORKER)) + +#define NFLICK_AUTH_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_AUTH_WORKER, NFlickAuthWorker) + +#define NFLICK_AUTH_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_AUTH_WORKER, NFlickAuthWorkerClass)) + +/* Show worker */ + +typedef struct _NFlickShowWorkerClass NFlickShowWorkerClass; + +typedef struct _NFlickShowWorker NFlickShowWorker; + +typedef struct _NFlickShowWorkerPrivate NFlickShowWorkerPrivate; + +#define NFLICK_TYPE_SHOW_WORKER (nflick_show_worker_get_type ()) + +#define NFLICK_IS_SHOW_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SHOW_WORKER)) + +#define NFLICK_SHOW_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SHOW_WORKER, NFlickShowWorker) + +#define NFLICK_SHOW_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SHOW_WORKER, NFlickShowWorkerClass)) + +/* Set worker */ + +typedef struct _NFlickSetListWorkerClass NFlickSetListWorkerClass; + +typedef struct _NFlickSetListWorker NFlickSetListWorker; + +typedef struct _NFlickSetListWorkerPrivate NFlickSetListWorkerPrivate; + +#define NFLICK_TYPE_SET_LIST_WORKER (nflick_set_list_worker_get_type ()) + +#define NFLICK_IS_SET_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_LIST_WORKER)) + +#define NFLICK_SET_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_LIST_WORKER, NFlickSetListWorker) + +#define NFLICK_SET_LIST_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_LIST_WORKER, NFlickSetListWorkerClass)) + + + /* Info worker */ + +typedef struct _NFlickInfoWorkerClass NFlickInfoWorkerClass; + +typedef struct _NFlickInfoWorker NFlickInfoWorker; + +typedef struct _NFlickInfoWorkerPrivate NFlickInfoWorkerPrivate; + +#define NFLICK_TYPE_INFO_WORKER (nflick_info_worker_get_type ()) + +#define NFLICK_IS_INFO_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_INFO_WORKER)) + +#define NFLICK_INFO_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_INFO_WORKER, NFlickInfoWorker) + +#define NFLICK_INFO_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_INFO_WORKER, NFlickInfoWorkerClass)) +/* Photo search worked */ +#define NFLICK_TYPE_PHOTO_SEARCH_WORKER (nflick_photo_search_worker_get_type ()) + +#define NFLICK_IS_PHOTO_SEARCH_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_SEARCH_WORKER)) + +#define NFLICK_PHOTO_SEARCH_WORKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + NFLICK_TYPE_PHOTO_SEARCH_WORKER, NFlickPhotoSearchWorker)) + +#define NFLICK_PHOTO_SEARCH_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_SEARCH_WORKER, NFlickPhotoSearchWorkerClass)) + +/* Photo list worker */ + +typedef struct _NFlickPhotoListWorkerClass NFlickPhotoListWorkerClass; + +typedef struct _NFlickPhotoListWorker NFlickPhotoListWorker; + +typedef struct _NFlickPhotoListWorkerPrivate NFlickPhotoListWorkerPrivate; + +#define NFLICK_TYPE_PHOTO_LIST_WORKER (nflick_photo_list_worker_get_type ()) + +#define NFLICK_IS_PHOTO_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER)) + +#define NFLICK_PHOTO_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER, NFlickPhotoListWorker) + +#define NFLICK_PHOTO_LIST_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER, NFlickPhotoListWorkerClass)) + +/* Photos vbox */ + +typedef struct _NFlickPhotosVBoxClass NFlickPhotosVBoxClass; + +typedef struct _NFlickPhotosVBox NFlickPhotosVBox; + +typedef struct _NFlickPhotosVBoxPrivate NFlickPhotosVBoxPrivate; + +#define NFLICK_TYPE_PHOTOS_VBOX (nflick_photos_vbox_get_type ()) + +#define NFLICK_IS_PHOTOS_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTOS_VBOX)) + +#define NFLICK_PHOTOS_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTOS_VBOX, NFlickPhotosVBox) + +#define NFLICK_PHOTOS_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTOS_VBOX, NFlickPhotosVBoxClass)) + +/* Set Combo */ + +typedef struct _NFlickSetComboClass NFlickSetComboClass; + +typedef struct _NFlickSetCombo NFlickSetCombo; + +typedef struct _NFlickSetComboPrivate NFlickSetComboPrivate; + +#define NFLICK_TYPE_SET_COMBO (nflick_set_combo_get_type ()) + +#define NFLICK_IS_SET_COMBO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_COMBO)) + +#define NFLICK_SET_COMBO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_COMBO, NFlickSetCombo) + +#define NFLICK_SET_COMBO_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_COMBO, NFlickSetComboClass)) + +/* Processor */ + +typedef void (*NFlickProcessorFreeFunc) (gpointer data); + +typedef gboolean (*NFlickProcessorJobFunc) (gpointer data, gchar **error); + +typedef gboolean (*NFlickProcessorErrorFunc) (gchar *msg); + +typedef gboolean (*NFlickProcessorDoneFunc) (gpointer data); + +typedef struct _NFlickProcessorResult NFlickProcessorResult; + +/* Model */ + +typedef struct _NFlickModel NFlickModel; + +/* Photo data */ + +typedef struct _NFlickPhotoData NFlickPhotoData; + +#define NFLICK_TYPE_PHOTO_DATA (nflick_photo_data_get_type ()) + +typedef struct { + gchar *id; + gchar *title; + gchar *user; +} FlickrPhoto; + +/* End */ + +#endif diff --git a/attic/aaina/libnflick/nflick-worker-private.h b/attic/aaina/libnflick/nflick-worker-private.h new file mode 100644 index 0000000..884f364 --- /dev/null +++ b/attic/aaina/libnflick/nflick-worker-private.h @@ -0,0 +1,74 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObject* ParentClass = NULL; + +struct _NFlickWorkerPrivate +{ + GThread *Thread; + gboolean Started; + GMutex *Mutex; + NFlickWorkerStatus Status; + gchar *Error; + gchar *Message; + + NFlickWorkerIdleFunc AbortedIdle; + NFlickWorkerIdleFunc OkIdle; + NFlickWorkerIdleFunc ErrorIdle; + NFlickWorkerIdleFunc MsgChangeIdle; + gpointer CustomData; + + gboolean AbortRequested; +}; + +enum +{ + ARG_0, + ARG_ERROR, + ARG_MESSAGE, + ARG_STATUS +}; + +#define WORKER_LOCK(obj) (g_mutex_lock (obj->Private->Mutex)) + +#define WORKER_UNLOCK(obj) (g_mutex_unlock (obj->Private->Mutex)) + +static void nflick_worker_class_init (NFlickWorkerClass *klass); + +static void nflick_worker_init (NFlickWorker *self); + +static gboolean private_init (NFlickWorker *self, NFlickWorkerPrivate *private); + +static void private_dispose (NFlickWorkerPrivate *private); + +static void nflick_worker_dispose (NFlickWorker *self); + +static void nflick_worker_finalize (NFlickWorker *self); + +static void thread_start (NFlickWorker *self); + +static void set_error_no_lock (NFlickWorker *self, const gchar *error); + +static void nflick_worker_get_property (NFlickWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/aaina/libnflick/nflick-worker.c b/attic/aaina/libnflick/nflick-worker.c new file mode 100644 index 0000000..b618a72 --- /dev/null +++ b/attic/aaina/libnflick/nflick-worker.c @@ -0,0 +1,454 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-worker.h" +#include "nflick-worker-private.h" + +GType nflick_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_worker_class_init, + NULL, + NULL, + sizeof (NFlickWorker), + 4, + (GInstanceInitFunc) nflick_worker_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_worker_class_init (NFlickWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_ERROR, + g_param_spec_string + ("error", "Error", "Message describing the error", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_STATUS, + g_param_spec_int + ("status", "Status", "Current worker status", + -5000, 5000, NFLICK_WORKER_STATUS_IDLE, G_PARAM_READABLE)); + /* FIXME Use actual max/min vals for int */ + + g_object_class_install_property (gobjectclass, ARG_MESSAGE, + g_param_spec_string + ("message", "Message", "Message describing the thread status", + NULL, G_PARAM_READABLE)); + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); + + klass->ThreadFunc = NULL; +} + +static void nflick_worker_init (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + self->Private = NULL; + + NFlickWorkerPrivate *priv = g_new0 (NFlickWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickWorker *self, NFlickWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Thread = NULL; + + private->Mutex = g_mutex_new (); + g_return_val_if_fail (private->Mutex != NULL, FALSE); + + private->Started = FALSE; + private->Status = NFLICK_WORKER_STATUS_IDLE; + private->Error = NULL; + private->AbortRequested = FALSE; + + /* Null the idle functions */ + private->OkIdle = NULL; + private->AbortedIdle = NULL; + private->MsgChangeIdle = NULL; + private->ErrorIdle = NULL; + private->CustomData = NULL; + + /* Initialize the message to a stubby one */ + private->Message = g_strdup (gettext ("Working...")); + + return TRUE; +} + +static void private_dispose (NFlickWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Thread != NULL) { + g_thread_join (private->Thread); + private->Thread = NULL; + } + + if (private->Mutex != NULL) { + g_mutex_free (private->Mutex); + private->Mutex = NULL; + } + + if (private->Error != NULL) { + g_free (private->Error); + private->Error = NULL; + } + + if (private->Message != NULL) { + g_free (private->Message); + private->Message = NULL; + } +} + +void nflick_worker_start (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + if (self->Private->Started == TRUE) { + g_warning ("Worker was already started"); + } else { + self->Private->Thread = g_thread_create ((GThreadFunc) thread_start, self, TRUE, NULL); + /* FIXME Check for NULL */ + } + + WORKER_UNLOCK (self); +} + +static void thread_start (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + + /* Get the class and call the proper function */ + NFlickWorkerClass *klass = (NFlickWorkerClass *) G_OBJECT_GET_CLASS (self); + g_assert (klass != NULL); + + if (klass->ThreadFunc == NULL) { + g_warning ("No thread func"); + set_error_no_lock (self, gettext ("Internal threading error, no thread function. " + "Please file a bug report.")); + self->Private->Status = NFLICK_WORKER_STATUS_ERROR; + + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + + WORKER_UNLOCK (self); + goto Done; + } + + self->Private->Status = NFLICK_WORKER_STATUS_RUNNING; + WORKER_UNLOCK (self); + + /* Here we're waiting, waiting, waiting... */ + NFlickWorkerStatus status = klass->ThreadFunc (self); + + WORKER_LOCK (self); + + /* Our last chance for an abort */ + if (self->Private->AbortRequested == TRUE) + status = NFLICK_WORKER_STATUS_ABORTED; + + self->Private->Status = status; + + switch (status) { + + case NFLICK_WORKER_STATUS_RUNNING: + case NFLICK_WORKER_STATUS_IDLE: + self->Private->Status = NFLICK_WORKER_STATUS_ERROR; + set_error_no_lock (self, gettext ("Internal threading error, thread in running after function done. " + "Please file a bug report.")); + /* Fire error func */ + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + break; + + case NFLICK_WORKER_STATUS_ERROR: + if (self->Private->Error == NULL) + set_error_no_lock (self, gettext ("Error in thread, but no error was set. " + "Please file a bug report.")); + /* Fire error func */ + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + break; + + case NFLICK_WORKER_STATUS_OK: + /* Fire ok func */ + if (self->Private->OkIdle != NULL) + /*g_idle_add ((GSourceFunc) self->Private->OkIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self);*/ + g_timeout_add_full (G_PRIORITY_HIGH_IDLE, + 1000, + (GSourceFunc) self->Private->OkIdle, + (self->Private->CustomData + != NULL) ? self->Private->CustomData + : self, + NULL); + + break; + + case NFLICK_WORKER_STATUS_ABORTED: + /* Fire aborted func */ + if (self->Private->AbortedIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->AbortedIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + break; + } + + WORKER_UNLOCK (self); + + Done: + return; +} + +static void set_error_no_lock (NFlickWorker *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private->Error != NULL) + g_free (self->Private->Error); + + self->Private->Error = g_strdup (error); +} + +void nflick_worker_set_message (NFlickWorker *self, const gchar *msg) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + if (self->Private->Message != NULL) + g_free (self->Private->Message); + + self->Private->Message = g_strdup (msg); + + /* Notify */ + if (self->Private->MsgChangeIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->MsgChangeIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + WORKER_UNLOCK (self); +} + +void nflick_worker_set_network_error (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + nflick_worker_set_error (self, gettext ("A network error occured while trying to connect to flickr. " + "Please check your connection settings.")); +} + +gboolean nflick_worker_parse_api_response (NFlickWorker *self, NFlickApiResponse *response) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (response), FALSE); + + gboolean success = FALSE; + + g_object_get (G_OBJECT (response), "success", &success, NULL); + + if (success == TRUE) + return TRUE; + else { + gboolean parse_error = FALSE; + gchar *error = NULL; + + g_object_get (G_OBJECT (response), "error", &error, "parseerror", &parse_error, NULL); + + if (parse_error == TRUE) { + gchar *e = g_strdup_printf ("%s\n\n%s", + gettext ("An error occurred while parsing the flickr api response. " + "Please file a bug report. Error details: "), error); + nflick_worker_set_error (self, e); + if (e != NULL) + g_free (e); + } else + nflick_worker_set_error (self, error); + + if (error != NULL) + g_free (error); + + return FALSE; + } +} + +void nflick_worker_set_error (NFlickWorker *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + g_return_if_fail (error != NULL); + + WORKER_LOCK (self); + set_error_no_lock (self, error); + WORKER_UNLOCK (self); +} + +void nflick_worker_set_custom_data (NFlickWorker *self, gpointer data) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->CustomData = data; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_aborted_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->AbortedIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_ok_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->OkIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_error_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->ErrorIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_request_abort (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->AbortRequested = TRUE; + WORKER_UNLOCK (self); +} + +gboolean nflick_worker_is_aborted (NFlickWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + + WORKER_LOCK (self); + gboolean ret = self->Private->AbortRequested; + WORKER_UNLOCK (self); + + return ret; +} + +void nflick_worker_set_msg_change_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->MsgChangeIdle = func; + WORKER_UNLOCK (self); +} + +static void nflick_worker_dispose (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_worker_finalize (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void nflick_worker_get_property (NFlickWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_ERROR: + WORKER_LOCK (self); + g_value_set_string (value, self->Private->Error); + WORKER_UNLOCK (self); + break; + + case ARG_STATUS: + WORKER_LOCK (self); + g_value_set_int (value, self->Private->Status); + WORKER_UNLOCK (self); + break; + + case ARG_MESSAGE: + WORKER_LOCK (self); + g_value_set_string (value, self->Private->Message); + WORKER_UNLOCK (self); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/aaina/libnflick/nflick-worker.h b/attic/aaina/libnflick/nflick-worker.h new file mode 100644 index 0000000..b1c1a4f --- /dev/null +++ b/attic/aaina/libnflick/nflick-worker.h @@ -0,0 +1,70 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKWORKER_H__ +#define __NFLICKWORKER_H__ + +#include +#include +#include "nflick-api-response.h" +#include "nflick-types.h" + +struct _NFlickWorker +{ + GObject Parent; + NFlickWorkerPrivate *Private; +}; + +struct _NFlickWorkerClass +{ + GObjectClass ParentClass; + NFlickWorkerThreadFunc ThreadFunc; +}; + +GType nflick_worker_get_type (void); + +void nflick_worker_start (NFlickWorker *self); + +void nflick_worker_set_error (NFlickWorker *self, const gchar *error); + +void nflick_worker_set_custom_data (NFlickWorker *self, gpointer data); + +void nflick_worker_set_aborted_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_ok_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_error_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_msg_change_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_message (NFlickWorker *self, const gchar *msg); + +void nflick_worker_request_abort (NFlickWorker *self); + +gboolean nflick_worker_is_aborted (NFlickWorker *self); + +void nflick_worker_set_network_error (NFlickWorker *self); + +gboolean nflick_worker_parse_api_response (NFlickWorker *self, NFlickApiResponse *response); + +#endif diff --git a/attic/aaina/libnflick/nflick.h b/attic/aaina/libnflick/nflick.h new file mode 100644 index 0000000..027ea59 --- /dev/null +++ b/attic/aaina/libnflick/nflick.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +/* A simple header file which includes all of the necessary nflick headers */ + +#ifndef NFLICK_H +#define NFLICK_H + +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-auth-worker.h" +#include "nflick-flickr.h" +#include "nflick-get-sizes-response.h" +#include "nflick-gft-response.h" +#include "nflick-no-set-response.h" +#include "nflick-photo-data.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-list-worker.h" +#include "nflick-photo-search-worker.h" +#include "nflick-photo-search-response.h" +#include "nflick-photo-set.h" +#include "nflick-pixbuf-fetch.h" +#include "nflick-set-list-response.h" +#include "nflick-set-list-worker.h" +#include "nflick-show-worker.h" +#include "nflick-types.h" +#include "nflick-worker.h" + + +#endif diff --git a/attic/aaina/sources/Makefile.am b/attic/aaina/sources/Makefile.am new file mode 100644 index 0000000..d6c2b13 --- /dev/null +++ b/attic/aaina/sources/Makefile.am @@ -0,0 +1,24 @@ +noinst_LTLIBRARIES = libsources.la + +INCLUDES = \ + $(DEPS_CFLAGS) + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(GCC_CFLAGS) \ + -DDATADIR=\""$(datadir)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -Werror \ + $(NULL) + +libsources_la_SOURCES = \ + aaina-source-directory.c \ + aaina-source-directory.h \ + aaina-source-flickr.c \ + aaina-source-flickr.h + +libsources_la_LIBADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libaaina/libaaina.la \ + $(top_builddir)/libnflick/libnflick.la + +libsources_la_LDFLAGS = -version-info 0:1:0 diff --git a/attic/aaina/sources/aaina-source-directory.c b/attic/aaina/sources/aaina-source-directory.c new file mode 100644 index 0000000..8a73039 --- /dev/null +++ b/attic/aaina/sources/aaina-source-directory.c @@ -0,0 +1,100 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "aaina-source-directory.h" + +G_DEFINE_TYPE (AainaSourceDirectory, aaina_source_directory, AAINA_TYPE_SOURCE); + +static void +_load_photos (AainaLibrary *library, const gchar *directory) +{ + GDir *dir; + const gchar *name; + + g_print ("Scanning : %s\n", directory); + + dir = g_dir_open (directory, 0, NULL); + while ((name = g_dir_read_name (dir))) + { + gchar *path = g_build_filename (directory, name, NULL); + + if (g_file_test (path, G_FILE_TEST_IS_DIR)) + { + _load_photos (library, path); + } + else + { + GdkPixbuf *pixbuf = NULL; + GError *err = NULL; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (path, + CLUTTER_STAGE_WIDTH ()/2, + CLUTTER_STAGE_HEIGHT ()/2, + TRUE, + &err); + if (pixbuf) + { + ClutterActor *photo = aaina_photo_new (); + //g_object_set (G_OBJECT (photo), "pixbuf", pixbuf, NULL); + aaina_photo_set_pixbuf (AAINA_PHOTO (photo), pixbuf); + aaina_library_append_photo (library, AAINA_PHOTO (photo)); + + } else if (err) + { + g_warning ("Error: %s\n", err->message); + } + else + ; + } + g_free (path); + } + g_dir_close (dir); +} + +/* GObject stuff */ +static void +aaina_source_directory_class_init (AainaSourceDirectoryClass *klass) +{ + ; +} + + +static void +aaina_source_directory_init (AainaSourceDirectory *source_directory) +{ + ; +} + +AainaSource* +aaina_source_directory_new (AainaLibrary *library, const gchar *dir) +{ + AainaSourceDirectory *source_directory; + + source_directory = g_object_new (AAINA_TYPE_SOURCE_DIRECTORY, + NULL); + + _load_photos (library, dir); + + return AAINA_SOURCE (source_directory); +} + diff --git a/attic/aaina/sources/aaina-source-directory.h b/attic/aaina/sources/aaina-source-directory.h new file mode 100644 index 0000000..fe19ed1 --- /dev/null +++ b/attic/aaina/sources/aaina-source-directory.h @@ -0,0 +1,82 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include + +#include +#include + +#ifndef _HAVE_AAINA_SOURCE_DIRECTORY_H +#define _HAVE_AAINA_SOURCE_DIRECTORY_H + +G_BEGIN_DECLS + +#define AAINA_TYPE_SOURCE_DIRECTORY aaina_source_directory_get_type() + +#define AAINA_SOURCE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_SOURCE_DIRECTORY, \ + AainaSourceDirectory)) + +#define AAINA_SOURCE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_SOURCE_DIRECTORY, \ + AainaSourceDirectoryClass)) + +#define AAINA_IS_SOURCE_DIRECTORY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_SOURCE_DIRECTORY)) + +#define AAINA_IS_SOURCE_DIRECTORY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_SOURCE_DIRECTORY)) + +#define AAINA_SOURCE_DIRECTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_SOURCE_DIRECTORY, \ + AainaSourceDirectoryClass)) + +typedef struct _AainaSourceDirectory AainaSourceDirectory; +typedef struct _AainaSourceDirectoryClass AainaSourceDirectoryClass; + +struct _AainaSourceDirectory +{ + AainaSource parent; +}; + +struct _AainaSourceDirectoryClass +{ + + AainaSourceClass parent_class; + + void (*_aaina_source_directory_1) (void); + void (*_aaina_source_directory_2) (void); + void (*_aaina_source_directory_3) (void); + void (*_aaina_source_directory_4) (void); +}; + +GType aaina_source_directory_get_type (void) G_GNUC_CONST; + +AainaSource* +aaina_source_directory_new (AainaLibrary *library, const gchar *directory); + +G_END_DECLS + +#endif diff --git a/attic/aaina/sources/aaina-source-flickr.c b/attic/aaina/sources/aaina-source-flickr.c new file mode 100644 index 0000000..2fec200 --- /dev/null +++ b/attic/aaina/sources/aaina-source-flickr.c @@ -0,0 +1,447 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include "aaina-source-flickr.h" + +G_DEFINE_TYPE (AainaSourceFlickr, aaina_source_flickr, AAINA_TYPE_SOURCE); + +#define AAINA_SOURCE_FLICKR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + AAINA_TYPE_SOURCE_FLICKR, \ + AainaSourceFlickrPrivate)) + +#define CHECK_TIMEOUT 60000 +#define MAX_PHOTOS 100 + +struct _AainaSourceFlickrPrivate +{ + AainaLibrary *library; + gchar *tags; + + /* table of already downloaded photos */ + GHashTable *table; + + /* Queue of photos to download */ + GQueue *queue; + gboolean running; + NFlickWorker *pix_worker; + + AainaPhoto *current; + + NFlickWorker *worker; + + /* Queue of photos to add to library */ + GQueue *add_queue; + gboolean add_running; +}; + +static GQuark worker_quark = 0; + +static gboolean get_photos (AainaSourceFlickr *source); +static gboolean get_pixbuf (AainaSourceFlickr *source); + + +static gboolean +on_info_thread_abort (AainaPhoto *photo) +{ + g_print ("abort\n"); + return FALSE; +} + +static gboolean +on_info_thread_error (AainaPhoto *photo) +{ + NFlickWorker *worker; + worker = (NFlickWorker*)g_object_get_qdata (G_OBJECT (photo), worker_quark); + gchar *error = NULL; + + g_object_get (G_OBJECT (worker), "error", &error, NULL); + if (error) + { + g_warning ("%s\n", error); + } + else + g_print ("error\n"); + g_object_unref (G_OBJECT (worker)); + + return FALSE; +} + +static gboolean +on_info_thread_ok (AainaPhoto *photo) +{ + NFlickWorker *worker; + gchar *rotation = NULL; + gint rot; + gchar *realname = NULL; + gchar *desc = NULL; + + worker = (NFlickWorker*)g_object_get_qdata (G_OBJECT (photo), worker_quark); + + nflick_info_worker_get ((NFlickInfoWorker*)worker, + &rotation, + &realname, + &desc); + /* find the rotation */ + rot = atoi (rotation); + + if (!realname) + g_object_get (G_OBJECT (photo), "author", &realname, NULL); + g_object_set (G_OBJECT (photo), + "rotation", rot, + "author", realname, + "desc", desc, + NULL); + + g_object_unref (G_OBJECT (worker)); + return FALSE; +} + +static void +manage_queue (AainaSourceFlickr *source) +{ + AainaSourceFlickrPrivate *priv; + + g_return_if_fail (AAINA_IS_SOURCE_FLICKR (source)); + priv = source->priv; + + /* Now we do the work for the next one */ + if (g_queue_get_length (priv->queue)) + { + priv->current = AAINA_PHOTO (g_queue_pop_head (priv->queue)); + g_timeout_add (100, (GSourceFunc)get_pixbuf, (gpointer)source); + + priv->running = TRUE; + aaina_library_set_pending (priv->library, TRUE); + } + else + { + priv->running = FALSE; + aaina_library_set_pending (priv->library, FALSE); + } + +} + +static gboolean +on_pixbuf_thread_abort (AainaSourceFlickr *source) +{ + g_print ("abort\n"); + manage_queue (source); + + return FALSE; +} + +static gboolean +on_pixbuf_thread_error (AainaSourceFlickr *source) +{ + AainaSourceFlickrPrivate *priv; + gchar *error = NULL; + + g_return_val_if_fail (AAINA_IS_SOURCE_FLICKR (source), FALSE); + priv = source->priv; + + g_object_get (G_OBJECT (priv->pix_worker), "error", &error, NULL); + if (error) + { + g_warning ("%s\n", error); + } + else + g_print ("error\n"); + + manage_queue (source); + return FALSE; +} + +static gboolean +add_to_library (AainaSourceFlickr *source) +{ + AainaSourceFlickrPrivate *priv; + AainaPhoto *photo = NULL; + + g_return_val_if_fail (AAINA_IS_SOURCE (source), FALSE); + priv = source->priv; + + if (aaina_library_is_full (priv->library)) + { + aaina_library_set_pending (priv->library, TRUE); + return TRUE; + } + photo = AAINA_PHOTO (g_queue_pop_head (priv->add_queue)); + + if (photo) + { + aaina_library_append_photo (priv->library, (gpointer)photo); + return TRUE; + } + else + { + aaina_library_set_pending (priv->library, FALSE); + priv->add_running = FALSE; + return FALSE; + } +} + +static gboolean +on_pixbuf_thread_ok (AainaSourceFlickr *source) +{ + + AainaSourceFlickrPrivate *priv; + GdkPixbuf *pixbuf; + + g_return_val_if_fail (AAINA_IS_SOURCE_FLICKR (source), FALSE); + priv = source->priv; + + g_object_get (G_OBJECT (priv->pix_worker), "pixbuf", &pixbuf, NULL); + + /* Set the current photo's pixbuf and add it to the library */ + if (pixbuf) + { + aaina_photo_set_pixbuf (priv->current, pixbuf); + + if (priv->add_running || aaina_library_is_full (priv->library)) + { + g_queue_push_tail (priv->add_queue, (gpointer)priv->current); + + if (!priv->add_running) + { + g_timeout_add (1000, (GSourceFunc)add_to_library, (gpointer)source); + priv->add_running = TRUE; + aaina_library_set_pending (priv->library, TRUE); + } + } + else + aaina_library_append_photo (priv->library, priv->current); + + priv->current = NULL; + } + + manage_queue (source); + + static gint i = 0; + i++; + return FALSE; +} + +static gboolean +get_pixbuf (AainaSourceFlickr *source) +{ + + AainaSourceFlickrPrivate *priv; + NFlickWorker *worker; + AainaPhoto *photo; + gchar *id; + + g_return_val_if_fail (AAINA_IS_SOURCE_FLICKR (source), FALSE); + priv = source->priv; + + if (priv->current == NULL) + return FALSE; + + photo = priv->current; + g_object_get (G_OBJECT (photo), "id", &id, NULL); + + worker = (NFlickWorker*)nflick_show_worker_new (id, + CLUTTER_STAGE_WIDTH ()/2, + CLUTTER_STAGE_HEIGHT ()/2, + " "); + if (G_IS_OBJECT (priv->pix_worker)) + g_object_unref (G_OBJECT (priv->pix_worker)); + priv->pix_worker = worker; + + nflick_worker_set_custom_data (worker, source); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc)on_pixbuf_thread_abort); + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc)on_pixbuf_thread_error); + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc)on_pixbuf_thread_ok); + + nflick_worker_start (worker); + + + worker = (NFlickWorker*)nflick_info_worker_new (id, 22, 22, " "); + nflick_worker_start (worker); + + priv->running = TRUE; + + nflick_worker_set_custom_data (worker, photo); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc)on_info_thread_abort); + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc)on_info_thread_error); + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc)on_info_thread_ok); + + g_object_set_qdata (G_OBJECT (photo), worker_quark, (gpointer)worker); + + + return FALSE; +} + + +static gboolean +on_thread_abort (AainaSourceFlickr *source) +{ + g_print ("abort\n"); + return FALSE; +} + +static gboolean +on_thread_error (AainaSourceFlickr *source) +{ + g_print ("error\n"); + return FALSE; +} + +static gboolean +on_thread_ok (AainaSourceFlickr *source) +{ + AainaSourceFlickrPrivate *priv; + GList *list = NULL, *l; + + g_return_val_if_fail (AAINA_IS_SOURCE_FLICKR (source), FALSE); + priv = source->priv; + + /* Grab the list of photos from the worker */ + list = nflick_photo_search_worker_take_list (NFLICK_PHOTO_SEARCH_WORKER + (priv->worker)); + for (l = list; l != NULL; l = l->next) + { + FlickrPhoto *photo = (FlickrPhoto*)l->data; + ClutterActor *aphoto = NULL; + gpointer res; + + if (!photo) + continue; + + /* If the photo is already present, return */ + if (g_hash_table_lookup (priv->table, photo->id) != NULL) + continue; + + /* Insert into the hash table */ + g_hash_table_insert (priv->table, + g_strdup (photo->id), + GINT_TO_POINTER (1)); + + /* Create a aaina photo objec, but don't add it to the library yet */ + aphoto = aaina_photo_new (); + g_object_set (G_OBJECT (aphoto), + "id", photo->id, + "title", photo->title, + "author", photo->user, + NULL); + + /* Add the photo to the download queue */ + g_queue_push_tail (priv->queue, (gpointer)aphoto); + + /* Free the the photo struct and its data */ + g_free (photo->id); + g_free (photo->title); + g_free (photo->user); + g_free (photo); + l->data = NULL; + } + + g_list_free (list); + + g_timeout_add (CHECK_TIMEOUT, (GSourceFunc)get_photos, (gpointer)source); + if (!priv->running) + { + priv->current = AAINA_PHOTO (g_queue_pop_head (priv->queue)); + g_timeout_add (200, (GSourceFunc)get_pixbuf, (gpointer)source); + } + return FALSE; +} + +static gboolean +get_photos (AainaSourceFlickr *source) +{ + NFlickWorker *worker; + NFlickWorkerStatus *status; + + worker = (NFlickWorker*)nflick_photo_search_worker_new (source->priv->tags, + " "); + if (G_IS_OBJECT (source->priv->worker)) + g_object_unref (G_OBJECT (source->priv->worker)); + + source->priv->worker = worker; + + nflick_worker_set_custom_data (worker, source); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc)on_thread_abort); + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc)on_thread_error); + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc)on_thread_ok); + + nflick_worker_start (worker); + + return FALSE; +} + +/* GObject stuff */ +static void +aaina_source_flickr_class_init (AainaSourceFlickrClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AainaSourceFlickrPrivate)); + +} + + +static void +aaina_source_flickr_init (AainaSourceFlickr *source_flickr) +{ + AainaSourceFlickrPrivate *priv; + + priv = source_flickr->priv = AAINA_SOURCE_FLICKR_GET_PRIVATE (source_flickr); + + priv->table = g_hash_table_new ((GHashFunc)g_str_hash, + (GEqualFunc)g_str_equal); + + priv->queue = g_queue_new (); + priv->running = FALSE; + + priv->add_queue = g_queue_new (); + priv->add_running = FALSE; + + worker_quark = g_quark_from_string ("aaina.flickr.worker"); +} + +AainaSource* +aaina_source_flickr_new (AainaLibrary *library, const gchar *tags) +{ + AainaSourceFlickr *source_flickr; + + source_flickr = g_object_new (AAINA_TYPE_SOURCE_FLICKR, + NULL); + + source_flickr->priv->tags = g_strdup (tags); + source_flickr->priv->library = library; + get_photos (source_flickr); + + return AAINA_SOURCE (source_flickr); +} + diff --git a/attic/aaina/sources/aaina-source-flickr.h b/attic/aaina/sources/aaina-source-flickr.h new file mode 100644 index 0000000..0821435 --- /dev/null +++ b/attic/aaina/sources/aaina-source-flickr.h @@ -0,0 +1,85 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include + +#include +#include + +#ifndef _HAVE_AAINA_SOURCE_FLICKR_H +#define _HAVE_AAINA_SOURCE_FLICKR_H + +G_BEGIN_DECLS + +#define AAINA_TYPE_SOURCE_FLICKR aaina_source_flickr_get_type() + +#define AAINA_SOURCE_FLICKR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_SOURCE_FLICKR, \ + AainaSourceFlickr)) + +#define AAINA_SOURCE_FLICKR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_SOURCE_FLICKR, \ + AainaSourceFlickrClass)) + +#define AAINA_IS_SOURCE_FLICKR(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_SOURCE_FLICKR)) + +#define AAINA_IS_SOURCE_FLICKR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_SOURCE_FLICKR)) + +#define AAINA_SOURCE_FLICKR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_SOURCE_FLICKR, \ + AainaSourceFlickrClass)) + +typedef struct _AainaSourceFlickr AainaSourceFlickr; +typedef struct _AainaSourceFlickrClass AainaSourceFlickrClass; +typedef struct _AainaSourceFlickrPrivate AainaSourceFlickrPrivate; + +struct _AainaSourceFlickr +{ + AainaSource parent; + + AainaSourceFlickrPrivate *priv; +}; + +struct _AainaSourceFlickrClass +{ + + AainaSourceClass parent_class; + + void (*_aaina_source_flickr_1) (void); + void (*_aaina_source_flickr_2) (void); + void (*_aaina_source_flickr_3) (void); + void (*_aaina_source_flickr_4) (void); +}; + +GType aaina_source_flickr_get_type (void) G_GNUC_CONST; + +AainaSource* +aaina_source_flickr_new (AainaLibrary *library, const gchar *tags); + +G_END_DECLS + +#endif diff --git a/attic/aaina/src/Makefile.am b/attic/aaina/src/Makefile.am new file mode 100644 index 0000000..f1e696d --- /dev/null +++ b/attic/aaina/src/Makefile.am @@ -0,0 +1,20 @@ +bin_PROGRAMS=aaina + +PKGDATADIR = $(datadir)/aaina +AM_CFLAGS = \ + $(DEPS_CFLAGS) \ + $(GCC_FLAGS) \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -D_GNU_SOURCE \ + -DPKGDATADIR=\"$(PKGDATADIR)\" + +aaina_LDADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libaaina/libaaina.la \ + $(top_builddir)/sources/libsources.la + +aaina_SOURCES = \ + aaina-slide-show.c \ + aaina-slide-show.h \ + main.c diff --git a/attic/aaina/src/aaina-slide-show.c b/attic/aaina/src/aaina-slide-show.c new file mode 100644 index 0000000..6a9f490 --- /dev/null +++ b/attic/aaina/src/aaina-slide-show.c @@ -0,0 +1,507 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "aaina-slide-show.h" + +G_DEFINE_TYPE (AainaSlideShow, aaina_slide_show, CLUTTER_TYPE_GROUP); + +#define AAINA_SLIDE_SHOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + AAINA_TYPE_SLIDE_SHOW, \ + AainaSlideShowPrivate)) + +#define VIEW_PHOTO_TIMEOUT 4000 +#define N_LANES 7 + +static gint lane_frames[N_LANES] = {60, 60, 60, 60, 60, 60, 60}; +static gint lane_speed[N_LANES] = {180, 150, 120, 90, 60, 30, 15}; + +struct _AainaSlideShowPrivate +{ + AainaLibrary *library; + gint count; + + GList *lanes[N_LANES]; + ClutterTimeline *timelines[N_LANES]; + gint lanesx[N_LANES]; + + /* Viewing single photo */ + AainaPhoto *zoomed; + +}; + +enum +{ + PROP_0, + + PROP_LIBRARY +}; + +static void on_photo_added (AainaLibrary *library, + AainaPhoto *photo, + AainaSlideShow *data); +static gboolean zoom_photo (AainaSlideShow *slide_show); + +static void +on_photo_zoomed (AainaPhoto *photo, AainaSlideShow *slide_show) +{ + AainaSlideShowPrivate *priv; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (slide_show)); + priv = slide_show->priv; + + priv->zoomed = NULL; +} + +static gboolean +restore_photo (AainaSlideShow *slide_show) +{ + AainaSlideShowPrivate *priv; + static GRand *rand = NULL; + gint i; + + g_return_val_if_fail (AAINA_IS_SLIDE_SHOW (slide_show), FALSE); + priv = slide_show->priv; + + if (rand == NULL) + rand = g_rand_new (); + + if (!AAINA_IS_PHOTO (priv->zoomed)) + return FALSE; + + aaina_photo_set_viewed (priv->zoomed, TRUE); + aaina_photo_restore (priv->zoomed); + + for (i = 0; i < N_LANES; i++) + clutter_timeline_start (priv->timelines[i]); + + g_signal_connect (G_OBJECT (priv->zoomed), "photo_restored", + G_CALLBACK (on_photo_zoomed), (gpointer)slide_show); + + g_timeout_add (g_rand_int_range (rand, 4000, 10000), + (GSourceFunc)zoom_photo, + (gpointer)slide_show); + return FALSE; +} +/* +static void +on_photo_zoomed (AainaPhoto *photo, AainaSlideShow *slide_show) +{ + AainaSlideShowPrivate *priv; + gint i; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (slide_show)); + priv = slide_show->priv; + + Pause all the timelines + for (i = 0; i < N_LANES; i++) + clutter_timeline_pause (priv->timelines[i]); +} +*/ +static gboolean +zoom_photo (AainaSlideShow *slide_show) +{ + AainaSlideShowPrivate *priv; + static GRand *rand = NULL; + GList *l, *photos = NULL; + gint lane, i; + gint stage_width = CLUTTER_STAGE_WIDTH (); + AainaPhoto *photo; + + g_return_val_if_fail (AAINA_IS_SLIDE_SHOW (slide_show), FALSE); + priv = slide_show->priv; + + if (rand == NULL) + rand = g_rand_new (); + + /* Get a random lane to choose the picture from */ + lane = g_rand_int_range (rand, 0, N_LANES); + + /* Create a list of possible photos to zoom (those which are 'visible' to the + * user) + */ + for (l = priv->lanes[lane]; l != NULL; l = l->next) + { + ClutterActor *actor = CLUTTER_ACTOR (l->data); + gint x; + guint w, h; + + if (!AAINA_IS_PHOTO (actor)) + continue; + + x = clutter_actor_get_x (actor); + clutter_actor_get_transformed_size (actor, &w, &h); + x += w; + + if (x > 0 && x < stage_width + && !aaina_photo_get_viewed (AAINA_PHOTO (actor))) + photos = g_list_append (photos, actor); + } + + /* This should work, right? */ + if (photos == NULL) + { + //zoom_photo (slide_show); + return TRUE; + } + + /* Choose a random photo in the list */ + i = g_rand_int_range (rand, 0, g_list_length (photos)); + photo = AAINA_PHOTO (g_list_nth_data (photos, i)); + + /* Connect to 'zoomed' signal, swhen the photo has finished, we stop the + * timelines + + g_signal_connect (G_OBJECT (photo), "photo_zoomed", + G_CALLBACK (on_photo_zoomed), (gpointer)slide_show); + */ + /* Save the photos current 'state' (x, y, and scale) */ + aaina_photo_save (photo); + + clutter_actor_raise_top (CLUTTER_ACTOR (photo)); + aaina_photo_zoom (photo); + + /* Keep a pointer to the photo, and finally add a timeout for when the + * slideshow should be restored. + */ + priv->zoomed = photo; + g_timeout_add (VIEW_PHOTO_TIMEOUT, + + (GSourceFunc)restore_photo, + (gpointer)slide_show); + + return FALSE; + +} + +static void +aaina_slide_show_move (ClutterBehaviour *behave, + guint32 alpha_value, + GList **lane) +{ + AainaSlideShow *slide_show = aaina_slide_show_get_default (); + AainaSlideShowPrivate *priv = slide_show->priv; + GList *l; + gint leftmost = 0 - (CLUTTER_STAGE_WIDTH () /4); + + for (l = *lane; l != NULL; l = l->next) + { + gint x; + guint width; + gboolean viewed; + + if (!AAINA_IS_PHOTO (l->data)) + continue; + + g_object_get (G_OBJECT (l->data), + "x", &x, + "width", &width, + "viewed", &viewed, + NULL); + if (l->data == priv->zoomed) + continue; + else if (viewed) + { + if (x < leftmost) + { + if (aaina_library_get_pending (priv->library) + && aaina_library_is_full (priv->library)) + { + aaina_library_remove_photo (priv->library, AAINA_PHOTO (l->data)); + clutter_actor_destroy (CLUTTER_ACTOR (l->data)); + l->data = NULL; + g_print ("Deleting\n"); + } + else + { + aaina_photo_set_viewed (AAINA_PHOTO (l->data), FALSE); + on_photo_added (NULL, l->data, slide_show); + l->data = NULL; + g_print ("Re-adding\n"); + } + } + else + g_object_set (G_OBJECT (l->data), "x", x - 1, NULL); + } + else + { + if (x > leftmost) + g_object_set (G_OBJECT (l->data), "x", x - 1, NULL); + else + { + on_photo_added (NULL, l->data, slide_show); + l->data = NULL; + } + } + } +} + +static void +aaina_slide_show_remove_rows (AainaSlideShow *slide_show) +{ + clutter_group_remove_all (CLUTTER_GROUP(slide_show)); +} + +static void +on_photo_added (AainaLibrary *library, + AainaPhoto *photo, + AainaSlideShow *data) +{ + AainaSlideShowPrivate *priv; + static GRand *rand = NULL; + gint count; + gint x, y, dim; + gdouble scale; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (data)); + priv = AAINA_SLIDE_SHOW (data)->priv; + + if (!rand) + rand = g_rand_new (); + + count = priv->count; + + /* We want the scale of the photos to be random 0.15, 0.35*/ + scale = (0.35 - 0.15)/N_LANES; + scale = g_rand_double_range (rand, + 0.15 + (scale * count), + 0.15 + (scale * (count+1))); + + /* We want 'random' spacing of the photos, but we don't want to overlap two + * photos from the same lane, hence we only randomise the gap between two + * photos. That also prevents photos from being too far apart + */ + x = g_rand_int_range (rand, 0, CLUTTER_STAGE_WIDTH ()/4); + x += priv->lanesx[count]; + + /* Set the new x value for the lane */ + priv->lanesx[count] = x + (CLUTTER_STAGE_WIDTH() * scale); + + /* Each lane has a set 'base y value, as calculated below, in addition to + * this, we add a random value between -30 and 30, which makes sure the photos + * look randomised. + */ + y = ((CLUTTER_STAGE_HEIGHT () / (N_LANES +2)) * count) + 30; + y = g_rand_int_range (rand, + 0, + CLUTTER_STAGE_HEIGHT ()-(CLUTTER_STAGE_HEIGHT()/5)); + + /* Use AainaPhoto's scale feature as it makes sure gravity is center */ + clutter_actor_set_scale (CLUTTER_ACTOR (photo), scale, scale); + clutter_actor_set_position (CLUTTER_ACTOR (photo), x, y); + clutter_actor_set_depth (CLUTTER_ACTOR (photo), count); + + dim = 255/N_LANES; + dim = dim * (N_LANES - (count+1)); + aaina_photo_set_dim (photo, dim); + + if (!clutter_actor_get_parent (CLUTTER_ACTOR (photo))) + clutter_group_add (CLUTTER_GROUP (data), + CLUTTER_ACTOR (photo)); + clutter_actor_show_all (CLUTTER_ACTOR (photo)); + + priv->lanes[count] = g_list_append (priv->lanes[count], (gpointer)photo); + + priv->count++; + if (priv->count == N_LANES) + priv->count = 0; +} + +static gboolean +aaina_slide_show_row_foreach (AainaLibrary *library, + AainaPhoto *photo, + gpointer data) +{ + on_photo_added (library, photo, AAINA_SLIDE_SHOW (data)); + return TRUE; +} + + +void +aaina_slide_show_set_library (AainaSlideShow *slide_show, + AainaLibrary *library) +{ + AainaSlideShowPrivate *priv; + gint i; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (slide_show)); + if (!AAINA_IS_LIBRARY (library)) + return; + priv = slide_show->priv; + + if (priv->library) + { + aaina_slide_show_remove_rows (slide_show); + g_object_unref (priv->library); + } + priv->library = library; + if (!library) + return; + g_signal_connect (G_OBJECT (priv->library), "photo-added", + G_CALLBACK (on_photo_added), slide_show); + + /* Sort each photo into a 'lane', and give it a 'randomised' x and y value */ + aaina_library_foreach (priv->library, + aaina_slide_show_row_foreach, + (gpointer)slide_show); + + /* Now all the photos have a lane and position, we start each lanes timeline, + * with randomised speed + */ + for (i = 0; i < N_LANES; i++) + { + + clutter_timeline_set_speed (priv->timelines[i], lane_speed[i]); + clutter_timeline_set_n_frames (priv->timelines[i], lane_frames[i]); + clutter_timeline_set_loop (priv->timelines[i], TRUE); + + if (!clutter_timeline_is_playing (priv->timelines[i])) + clutter_timeline_start (priv->timelines[i]); + } + + /* Finally, set the timeout for zooming the pictures */ + g_timeout_add (3000, (GSourceFunc)zoom_photo, (gpointer)slide_show); +} + + +/* GObject stuff */ + +static void +aaina_slide_show_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AainaSlideShowPrivate *priv; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (object)); + priv = AAINA_SLIDE_SHOW (object)->priv; + + switch (prop_id) + { + case PROP_LIBRARY: + aaina_slide_show_set_library (AAINA_SLIDE_SHOW (object), + AAINA_LIBRARY (g_value_get_object (value))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +aaina_slide_show_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AainaSlideShowPrivate *priv; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (object)); + priv = AAINA_SLIDE_SHOW (object)->priv; + + switch (prop_id) + { + case PROP_LIBRARY: + g_value_set_object (value, G_OBJECT (priv->library)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + static void +aaina_slide_show_dispose (GObject *object) +{ + G_OBJECT_CLASS (aaina_slide_show_parent_class)->dispose (object); +} + +static void +aaina_slide_show_finalize (GObject *object) +{ + G_OBJECT_CLASS (aaina_slide_show_parent_class)->finalize (object); +} + +static void +aaina_slide_show_class_init (AainaSlideShowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = aaina_slide_show_finalize; + gobject_class->dispose = aaina_slide_show_dispose; + gobject_class->get_property = aaina_slide_show_get_property; + gobject_class->set_property = aaina_slide_show_set_property; + + g_type_class_add_private (gobject_class, sizeof (AainaSlideShowPrivate)); + + g_object_class_install_property ( + gobject_class, + PROP_LIBRARY, + g_param_spec_object ("library", + "The Library", + "The AainaLibrary", + AAINA_TYPE_LIBRARY, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + +} + +static void +aaina_slide_show_init (AainaSlideShow *slide_show) +{ + AainaSlideShowPrivate *priv; + + g_return_if_fail (AAINA_IS_SLIDE_SHOW (slide_show)); + priv = AAINA_SLIDE_SHOW_GET_PRIVATE (slide_show); + + slide_show->priv = priv; + priv->count = 0; + + gint i; + for (i=0; i < N_LANES; i++) + { + ClutterAlpha *alpha; + ClutterBehaviour *behave; + + priv->lanes[i] = NULL; + + priv->timelines[i] = clutter_timeline_new (40, 120); + alpha = clutter_alpha_new_full (priv->timelines[i], + alpha_sine_inc_func, + NULL, NULL); + behave = aaina_behave_new (alpha, + (AainaBehaveAlphaFunc)aaina_slide_show_move, + (gpointer)&priv->lanes[i]); + priv->lanesx[i] = g_random_int_range (0, CLUTTER_STAGE_WIDTH () /2); + } +} + +AainaSlideShow* +aaina_slide_show_get_default (void) +{ + static AainaSlideShow *slide_show = NULL; + + if (!slide_show) + slide_show = g_object_new (AAINA_TYPE_SLIDE_SHOW, NULL); + + return slide_show; +} diff --git a/attic/aaina/src/aaina-slide-show.h b/attic/aaina/src/aaina-slide-show.h new file mode 100644 index 0000000..5fffe9f --- /dev/null +++ b/attic/aaina/src/aaina-slide-show.h @@ -0,0 +1,91 @@ +/* +* Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include +#include + +#include +#include + +#ifndef _HAVE_AAINA_SLIDE_SHOW_H +#define _HAVE_AAINA_SLIDE_SHOW_H + +G_BEGIN_DECLS + +#define AAINA_TYPE_SLIDE_SHOW aaina_slide_show_get_type() + +#define AAINA_SLIDE_SHOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + AAINA_TYPE_SLIDE_SHOW, \ + AainaSlideShow)) + +#define AAINA_SLIDE_SHOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + AAINA_TYPE_SLIDE_SHOW, \ + AainaSlideShowClass)) + +#define AAINA_IS_SLIDE_SHOW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + AAINA_TYPE_SLIDE_SHOW)) + +#define AAINA_IS_SLIDE_SHOW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + AAINA_TYPE_SLIDE_SHOW)) + +#define AAINA_SLIDE_SHOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + AAINA_TYPE_SLIDE_SHOW, \ + AainaSlideShowClass)) + +typedef struct _AainaSlideShow AainaSlideShow; +typedef struct _AainaSlideShowClass AainaSlideShowClass; +typedef struct _AainaSlideShowPrivate AainaSlideShowPrivate; + +struct _AainaSlideShow +{ + ClutterGroup parent; + + /* private */ + AainaSlideShowPrivate *priv; +}; + +struct _AainaSlideShowClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*_aaina_slide_show_1) (void); + void (*_aaina_slide_show_2) (void); + void (*_aaina_slide_show_3) (void); + void (*_aaina_slide_show_4) (void); +}; + +GType aaina_slide_show_get_type (void) G_GNUC_CONST; + +AainaSlideShow* +aaina_slide_show_get_default (void); + +void +aaina_slide_show_set_library (AainaSlideShow *slide_show, + AainaLibrary *library); + +G_END_DECLS + +#endif diff --git a/attic/aaina/src/main.c b/attic/aaina/src/main.c new file mode 100644 index 0000000..32ca421 --- /dev/null +++ b/attic/aaina/src/main.c @@ -0,0 +1,233 @@ +/* + * Authored By Neil Jagdish Patel + * + * Copyright (C) 2007 OpenedHand + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include +#include + +#include "aaina-slide-show.h" + +static AainaSlideShow *show = NULL; +static ClutterTimeline *timeline = NULL; + +/* Command line options */ +static gboolean fullscreen = FALSE; +static gchar **directories = NULL; +static gchar *flickr_tags = NULL; + +static GOptionEntry entries[] = +{ + { + "fullscreen", + 'f', 0, + G_OPTION_ARG_NONE, + &fullscreen, + "Launch Aaina in fullscreen mode", + NULL + }, + { + "directory", + 'd', 0, + G_OPTION_ARG_FILENAME_ARRAY, + &directories, + "The directory to load pictures from", + "PATH" + }, + { + "tag", + 't', 0, + G_OPTION_ARG_STRING, + &flickr_tags, + "A set of comma-separated tags to search flickr with", + "TAG" + }, + { + NULL + } +}; + +static void on_key_release_event (ClutterStage *stage, + ClutterEvent *event, + gpointer null); + +static void spin_me (ClutterBehaviour *behave, + guint32 alpha_value, + gpointer null); + +static gboolean +im_spinning_around (ClutterTimeline *time) +{ + if (!clutter_timeline_is_playing (timeline)) + clutter_timeline_start (timeline); + return TRUE; +} + +int +main (int argc, char **argv) +{ + AainaLibrary *library; + AainaSource *source; + ClutterActor *stage; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + ClutterColor black = { 0x00, 0x00, 0x00, 0xff }; + GError *error = NULL; + + g_thread_init (NULL); + + g_set_application_name ("Aaina Image Slideshow"); + clutter_init_with_args (&argc, &argv, + " - Aaina Image Slideshow", entries, + NULL, + &error); + if (error) + { + g_print ("Unable to run Aaina: %s", error->message); + g_error_free (error); + return EXIT_FAILURE; + } + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, 720, 480); + clutter_stage_hide_cursor (CLUTTER_STAGE (stage)); + + if (fullscreen) + clutter_stage_fullscreen (CLUTTER_STAGE (stage)); + + clutter_stage_set_color (CLUTTER_STAGE (stage), &black); + + /* Load the test source */ + library = aaina_library_new (); + + if (directories && directories[0]) + { + gint n_directories, i; + + n_directories = g_strv_length (directories); + for (i = 0; i < n_directories; i++) + source = aaina_source_directory_new (library, directories[i]); + } + else if (flickr_tags) + source = aaina_source_flickr_new (library, flickr_tags); + else + { + g_print ("Usage: aaina -d \n" + " aaina -t [,,....]\n"); + return EXIT_FAILURE; + } + + show = aaina_slide_show_get_default (); + clutter_group_add (CLUTTER_GROUP (stage), CLUTTER_ACTOR (show)); + clutter_actor_set_position (CLUTTER_ACTOR (show), 0, 0); + clutter_actor_set_size (CLUTTER_ACTOR (show), + CLUTTER_STAGE_WIDTH (), + CLUTTER_STAGE_HEIGHT ()) ; + clutter_actor_show_all (CLUTTER_ACTOR (show)); + g_object_set (G_OBJECT (show), "library", library, NULL); + + clutter_actor_show_all (stage); + + /*clutter_actor_set_scale (stage, 0.25, 0.25);*/ + + g_signal_connect (G_OBJECT (stage), "key-release-event", + G_CALLBACK (on_key_release_event), (gpointer)stage); + + + timeline = clutter_timeline_new (60, 30); + alpha = clutter_alpha_new_full (timeline, + alpha_sine_inc_func, + NULL, NULL); + behave = aaina_behave_new (alpha, + (AainaBehaveAlphaFunc)spin_me, + (gpointer)stage); + + clutter_actor_set_rotation (stage, CLUTTER_Y_AXIS, 0, + CLUTTER_STAGE_WIDTH ()/2, + 0, + CLUTTER_STAGE_HEIGHT ()); + + g_timeout_add (120000, (GSourceFunc)im_spinning_around, timeline); + clutter_main (); + + return EXIT_SUCCESS; +} + +static void +on_key_release_event (ClutterStage *stage, + ClutterEvent *event, + gpointer null) +{ + static gint i = 0; + + switch (clutter_key_event_symbol ((ClutterKeyEvent*)event)) + { + case CLUTTER_Escape: + clutter_main_quit (); + break; + case CLUTTER_Left: + i--; + if (i == 0) + i = 359; + clutter_actor_set_rotation (CLUTTER_ACTOR (stage), CLUTTER_Y_AXIS, i, + CLUTTER_STAGE_WIDTH ()/2, + 0, + CLUTTER_STAGE_HEIGHT ()); + break; + case CLUTTER_Right: + i++; + if (i == 360) + i = 0; + clutter_actor_set_rotation (CLUTTER_ACTOR (stage), CLUTTER_Y_AXIS, i, + CLUTTER_STAGE_WIDTH ()/2, + 0, + CLUTTER_STAGE_HEIGHT ()); + break; + case CLUTTER_Up: + if (!clutter_timeline_is_playing (timeline)) + clutter_timeline_start (timeline); + break; + default: + break; + } +} + + +static void +spin_me (ClutterBehaviour *behave, + guint32 alpha_value, + gpointer null) +{ + gfloat factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + clutter_actor_set_rotation (CLUTTER_ACTOR (show), CLUTTER_Y_AXIS, factor * 360, + CLUTTER_STAGE_WIDTH ()/2, 0, 0); +} diff --git a/attic/astro-desktop/AUTHORS b/attic/astro-desktop/AUTHORS new file mode 100644 index 0000000..8ec34a6 --- /dev/null +++ b/attic/astro-desktop/AUTHORS @@ -0,0 +1 @@ +Neil J. Patel diff --git a/attic/astro-desktop/ChangeLog b/attic/astro-desktop/ChangeLog new file mode 100644 index 0000000..9032ae9 --- /dev/null +++ b/attic/astro-desktop/ChangeLog @@ -0,0 +1,761 @@ +2008-02-29 Øyvind Kolås + + * src/main.c: (main): remove gdk_init() call. + +2008-02-29 Matthew Allum + + * applications/contacts/clutter-reflect-texture.c: + * applications/images/clutter-reflect-texture.c: + * applications/music/clutter-reflect-texture.c: + No need to include GL header. + * configure.ac: + No need for -Werror + +2008-02-29 Matthew Allum + + * applications/contacts/clutter-reflect-texture.c: + * applications/images/clutter-reflect-texture.c: + * applications/music/clutter-reflect-texture.c: + Quick hack to build with GLES. + * configure.ac: + Stick with 0.6, dont pull in gst + +2008-02-21 Neil J. Patel + + * configure.ac: + Update to clutter 0.7 (trunk) + + * src/astro-appicon.c: + Include the clutter-shader.h + +2008-02-18 Neil J. Patel + + * applications/Makefile.am: + * applications/contacts/astro-contacts-window.c: (ensure_layout), + (ensure_layout_proper), (on_event), (astro_contacts_window_init), + (astro_contacts_window_new): + * applications/contacts/init.c: (astro_application_factory_init): + * applications/example/init.c: (astro_application_factory_init): + * applications/images/Makefile.am: + * applications/images/astro-images-window.c: + (astro_images_window_class_init), (astro_images_window_init), + (astro_images_window_new): + * applications/images/astro-images-window.h: + * applications/images/astro-images.c: (get_title), (set_title), + (get_icon), (set_icon), (get_window), (close), + (astro_images_class_init), (astro_images_init), (astro_images_new): + * applications/images/astro-images.h: + * applications/images/clutter-reflect-texture.c: + (reflect_texture_render_to_gl_quad), + (clutter_reflect_texture_paint), + (clutter_reflect_texture_set_property), + (clutter_reflect_texture_get_property), + (clutter_reflect_texture_class_init), + (clutter_reflect_texture_init), (clutter_reflect_texture_new): + * applications/images/clutter-reflect-texture.h: + * applications/images/init.c: (astro_application_factory_init): + * applications/music/init.c: (astro_application_factory_init): + * configure.ac: + * data/icons/Makefile.am: + Added in the starting of a new images application. + + * libastro-desktop/astro-defines.h: + * src/astro-panel.c: (astro_panel_init): + * src/astro-systray.c: (astro_systray_init): + Increased the default panel size, and fixed the label-sizing issues + that went with it. + +2008-02-07 Neil J. Patel + + * applets/cal.json: + * applets/clock.json: + * applets/mail.json: + * applets/weather.json: + Fix the sizing so that it is a factor of the stage size. + + * applications/music/astro-songs.c: (bounds_check): + Remove some printfs. + + * src/astro-applet.c: (astro_applet_paint): + Change the bacground texture size to be the as wide as the widest + child (y+width). + +2008-02-05 Neil J. Patel + + * src/astro-appicon.c: (astro_appicon_set_application): + Update to new shader api. + +2008-02-01 Neil J. Patel + + * applications/music/astro-songs.c: (astro_songs_init): + * src/astro-panel.c: (astro_panel_set_header): + * src/astro-systray.c: (astro_systray_init): + More fixes to sizing and display position. + +2008-01-31 Neil J Patel + + * applications/music/astro-music-window.c: + (astro_music_window_init): + Fix the label size. + +2008-01-31 Neil J Patel + + * applications/contacts/astro-contact-row.c: + (astro_contact_row_init): + * applications/contacts/astro-contacts-details.c: + * applications/contacts/astro-contacts-window.c: + (astro_contacts_window_init): + * applications/contacts/astro-texture-group.c: + * applications/example/init.c: (astro_application_factory_init): + * libastro-desktop/astro.h: + Fixes to the contacts application to behave at different resolutions. + +2008-01-31 Neil J. Patel + + * libastro-desktop/tidy-private.h: + Forgot to add this. + +2008-01-31 Neil J Patel + + * src/astro-systray.c: (set_time), (astro_systray_init): + Choose sizes depending on stage size, rather than magic values. + +2008-01-30 Neil J. Patel + + * applets/cal.json: + * applets/clock.json: + * applets/weather.json: + * applications/contacts/astro-contact-row.c: + * applications/contacts/astro-contacts-window.c: + * applications/contacts/astro-texture-group.c: + * configure.ac: + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-defines.h: + * libastro-desktop/tidy-texture-frame.c: + (tidy_texture_frame_paint), (tidy_texture_frame_set_property), + (tidy_texture_frame_get_property), (tidy_texture_frame_class_init), + (tidy_texture_frame_init), (tidy_texture_frame_new): + * libastro-desktop/tidy-texture-frame.h: + * src/astro-applet.c: + Bring the Tidy actors in-house. + +2008-01-30 Neil J Patel + + * applets/clock.json: + * applications/contacts/init.c: (astro_application_factory_init): + * applications/music/init.c: (astro_application_factory_init): + * libastro-desktop/astro-defines.h: + * src/astro-appview.c: + * src/astro-desktop.c: (load_applications): + Misc fixes to allow astro to run at smaller resolutions. + +2008-01-29 Neil J. Patel + + * applications/music/astro-songs.c: (bounds_check), (on_event): + Fixed bounds checking bug. + +2008-01-25 Neil J. Patel + + * applications/music/astro-music-window.c: (on_cover_clicked): + * applications/music/astro-songs.c: (on_event), (astro_songs_init): + Added in kinetic scrolling. Needs to be pulled out into own widget and + tweaked. + +2008-01-25 Neil J. Patel + + * applications/music/astro-reflection.c: + (astro_reflection_set_active): + * applications/music/astro-songs.c: (astro_songs_set_active), + (on_event), (astro_songs_init): + * applications/music/astro-songs.h: + Added poor mans scrolling to the song list..now ot convert it to + something resembling kinetic scrolling. + Fixed the clips & event capture so that it works without interfering + with the rest of the app. + +2008-01-25 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: + (astro_contacts_list_alpha): + * applications/music/Makefile.am: + * applications/music/astro-music-window.c: (on_cover_activated), + (astro_music_window_init): + * applications/music/astro-music-window.h: + * applications/music/astro-reflection.c: + (astro_reflection_set_active), (astro_reflection_set_pixbuf): + * applications/music/astro-songs.c: (astro_songs_class_init), + (astro_songs_init), (astro_songs_new): + * applications/music/astro-songs.h: + * data/albums/Makefile.am: + Lots more fixes, added a song list (needs scrolling support). + Added a few more albums. + +2008-01-22 Neil J. Patel + + * applications/contacts/Makefile.am: + * applications/contacts/astro-contact-row.h: + * applications/contacts/astro-contacts-details.c: (on_fade_out), + (astro_contact_details_set_active), + (astro_contact_details_class_init), (astro_contact_details_init): + * applications/contacts/astro-contacts-details.h: + * applications/contacts/astro-contacts-window.c: + (ensure_layout_proper), (astro_contacts_window_init): + * applications/contacts/astro-contacts-window.h: + * applications/contacts/astro-texture-group.c: + (astro_texture_group_set_text), (astro_texture_group_set_property), + (astro_texture_group_get_property), + (astro_texture_group_class_init), (astro_texture_group_init), + (astro_texture_group_new): + * applications/contacts/astro-texture-group.h: + More stuff added. More to come. + +2008-01-17 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: (load_contacts): + Added more information for each contact. + +2008-01-17 Neil J. Patel + + * applications/contacts/astro-contact-row.c: + (astro_contact_row_init): + Fix some more stuff up. + + * data/Makefile.am: + Add another asset. + +2008-01-17 Neil J. Patel + + * applications/contacts/astro-contact-row.c: + (astro_contact_row_set_name), (astro_contact_row_init): + * applications/contacts/astro-contact-row.h: + Add in icon, adjust the sizes of the icons. + +2008-01-16 Neil J. Patel + + * applications/contacts/astro-contact-row.c: + (astro_contact_row_init): + * applications/contacts/astro-contacts-details.c: + (astro_contact_details_set_pixbuf), + (astro_contact_details_get_property), (astro_contact_details_init): + * applications/contacts/astro-contacts-window.c: + (astro_contacts_window_init): + * data/contact-bar.svg: + More and more tweaks, plus timelines now match for contact animations. + +2008-01-16 Neil J. Patel + + * applications/contacts/astro-contact-row.c: + (astro_contact_row_set_name), (astro_contact_row_init): + Positioning tweaks. + + * data/contact-bar.svg: + Remove border, so it looks nicer. + +2008-01-15 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: + (on_contact_activated), (astro_contacts_window_init): + Some more positioning tweaks. + Added in the face.png image for contacts application. + +2008-01-15 Neil J. Patel + + * applications/contacts/astro-contact-row.c: (on_active_completed), + (astro_contact_row_set_active), (_resize_alpha), + (astro_contact_row_init): + * applications/contacts/astro-contacts-window.c: (ensure_layout), + (ensure_layout_proper), (astro_contacts_list_window_advance), + (on_main_timeline_completed): + Try and get the resize of the background to appear as its pushing + the row beneath away. + Update the alpha-calculating function. + + * applications/music/astro-music-window.c: (astro_music_alpha), + (astro_music_window_init): + Update the alpha-calculating function. + +2008-01-15 Neil J. Patel + + * applications/contacts/Makefile.am: + * applications/contacts/astro-contact-row.c: (on_active_completed), + (on_inactive_completed), (astro_contact_row_set_active), + (astro_contact_row_set_name), (astro_contact_row_set_icon), + (_resize_alpha), (astro_contact_row_set_property), + (astro_contact_row_get_property), (astro_contact_row_class_init), + (astro_contact_row_init), (astro_contact_row_new): + * applications/contacts/astro-contact-row.h: + * applications/contacts/astro-contacts-window.c: (ensure_layout), + (make_contact), (astro_contacts_window_init): + * applications/music/astro-music-window.c: (astro_music_alpha), + (astro_music_window_init): + * data/Makefile.am: + Changing some things around in contacts app to try and make it + look/work nicer. + +2008-01-13 Neil J. Patel + + * applications/Makefile.am: + Actually make the contacts application! + +2008-01-13 Neil J. Patel + + * applications/contacts/Makefile.am: + * applications/contacts/astro-contacts-details.c: + (astro_contact_details_set_pixbuf), + (astro_contact_details_set_property), + (astro_contact_details_get_property), + (astro_contact_details_class_init), (astro_contact_details_init), + (astro_contact_details_new): + * applications/contacts/astro-contacts-details.h: + * applications/contacts/astro-contacts-window.c: + (on_contact_activated), (on_contact_clicked), (load_contacts), + (on_key_release_event): + Rename astro-reflection as it was conflicting with the one in + music.app. + Starting of a contact-details widget, to show photo + actions. + Initally position all labels at CSH(), so they slide in. + +2008-01-12 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: + (astro_contacts_window_init): + * data/Makefile.am: + * data/contact-bar.svg: + Woo! Contact Bar! Does nothing usefule yet! + + * data/disc_bg.svg: + Added a border so you can see it clearer now. + +2008-01-12 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: (ensure_layout): + Some more spacing fixes. + + * data/background.svg: + Changed to a darker backgrounf to get some more contrast. + +2008-01-12 Neil J. Patel + + + * applications/contacts/astro-contacts-window.c: (make_contact), + (load_contacts), (astro_contacts_list_alpha), + (astro_contacts_window_init): + More tweaks to the spacing, speed and accuracy of the animation. + +2008-01-12 Neil J. Patel + + * applications/contacts/astro-contacts-window.c: (ensure_layout), + (astro_contacts_list_window_advance), + (on_contact_active_completed), (on_contact_activated), + (on_contact_clicked), (make_contact), (load_details), + (load_contacts), (astro_contacts_list_alpha), + (on_main_timeline_completed), (on_key_release_event), + (astro_contacts_window_init): + Created the main contact list, added animations to move through it. + +2008-01-12 Neil J. Patel + + * applications/contacts/Makefile.am: + * applications/contacts/astro-contacts-window.c: (ensure_layout), + (astro_contacts_window_advance), (on_cover_active_completed), + (on_cover_activated), (on_cover_clicked), (make_cover), + (load_details), (load_albums), (astro_contacts_alpha), + (on_main_timeline_completed), (on_key_release_event), + (astro_contacts_window_class_init), (astro_contacts_window_init), + (astro_contacts_window_new): + * applications/contacts/astro-contacts-window.h: + * applications/contacts/astro-contacts.c: (get_title), (set_title), + (get_icon), (set_icon), (get_window), (close), + (astro_contacts_class_init), (astro_contacts_init), + (astro_contacts_new): + * applications/contacts/astro-contacts.h: + * applications/contacts/astro-reflection.c: (fix_clip), + (astro_reflection_set_active), (astro_reflection_set_pixbuf), + (astro_reflection_set_property), (astro_reflection_get_property), + (astro_reflection_class_init), (astro_reflection_init), + (astro_reflection_new): + * applications/contacts/astro-reflection.h: + * applications/contacts/clutter-reflect-texture.c: + (reflect_texture_render_to_gl_quad), + (clutter_reflect_texture_paint), + (clutter_reflect_texture_set_property), + (clutter_reflect_texture_get_property), + (clutter_reflect_texture_class_init), + (clutter_reflect_texture_init), (clutter_reflect_texture_new): + * applications/contacts/clutter-reflect-texture.h: + * applications/contacts/init.c: (astro_application_factory_init): + * configure.ac: + * data/icons/Makefile.am: + Beginings of a contacts application. + +2008-01-12 Neil J. Patel + + * applications/music/init.c: (astro_application_factory_init): + Set the correct name for the application. + + * src/astro-desktop.c: (astro_desktop_show_application), + (astro_desktop_hide_application): + * src/astro-panel.c: (astro_panel_set_header), (astro_panel_init): + * src/astro-panel.h: + Set the title and icon for the current window. + +2008-01-12 Neil J. Patel + + * applications/music/astro-reflection.c: (fix_clip), + (astro_reflection_set_active): + Some clever clipping to make the reflection look proper. + + * libastro-desktop/astro-utils.c: (astro_utils_set_clip): + Added HAVE_CLIP, which can be set to 0 to disable clipping. + +2008-01-12 Neil J. Patel + + * applications/music/astro-reflection.c: + (astro_reflection_set_active), (astro_reflection_set_pixbuf): + Added reflections for album slide out. + + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-utils.c: (astro_utils_set_clip): + * libastro-desktop/astro-utils.h: + Beginings of a clutter_actor_set_clip wrapper which we can disable at + compile-time for gles chips which can handle clips. + +2008-01-12 Neil J. Patel + + * applications/music/astro-music-window.c: + (on_cover_active_completed), (on_cover_activated), + (on_cover_clicked), (on_key_release_event), + (astro_music_window_init): + Added ability to close ablums covers again & return to original state. + + * data/disc_bg.svg: + Stamped the bg with hand of OH! + +2008-01-12 Neil J. Patel + + * applications/music/astro-music-window.c: (ensure_layout), + (astro_music_window_advance), (on_cover_active_completed), + (on_cover_activated), (on_cover_clicked), (load_albums), + (astro_music_alpha), (on_main_timeline_completed), + (on_key_release_event), (astro_music_window_init): + * applications/music/astro-reflection.c: + (astro_reflection_set_active), (astro_reflection_set_pixbuf), + (astro_reflection_init): + * applications/music/astro-reflection.h: + * data/Makefile.am: + * data/disc_bg.svg: + Added album activation, and a 'starting' songs widget (press + enter/click on an album). + +2008-01-12 Neil J. Patel + + * applications/music/astro-music-window.c: (ensure_layout), + (on_cover_clicked), (load_albums), (astro_music_window_init): + Respond to button-press-events, tweak the animation some more. + +2008-01-12 Neil J. Patel + + * applications/music/astro-music-window.c: + (on_main_timeline_completed), (astro_music_window_init): + Some fixes for the album view effect. + + * applications/music/clutter-reflect-texture.c: + (clutter_reflect_texture_paint): + Swapped gl calls for cogl calls and removed glDisable calls, so + the ClutterReflectTexture now works perfectly. + +2008-01-11 Neil J. Patel + + * applications/music/astro-music-window.c: (load_albums): + Intially set the covers off the screen, so they slide in. + + * libastro-desktop/astro-window.c: (astro_window_close): + On close, slide the window out of the RHS. + +2008-01-11 Neil J. Patel + + * applications/music/astro-music-window.c: (ensure_layout), + (astro_music_window_advance), (astro_music_alpha), + (on_key_release_event), (astro_music_window_init): + Hooked up the keyboard to allow moving between albums. + Beefed up the alpha_func + layout calculation. + +2008-01-11 Neil J. Patel + + * applications/music/astro-music-window.c: (ensure_layout), + (make_cover), (load_details), (load_albums), (astro_music_alpha), + (astro_music_window_init): + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-behave.c: (astro_behave_alpha_notify), + (astro_behave_class_init), (astro_behave_init), (astro_behave_new): + * libastro-desktop/astro-behave.h: + Intermediate commit before laying the smackdown on the music app. + +2008-01-11 Neil J. Patel + + * applications/music/Makefile.am: + * applications/music/astro-music-window.c: (ensure_layout), + (make_cover), (load_albums), (astro_music_window_init): + * applications/music/astro-reflection.c: + (astro_reflection_set_pixbuf), (astro_reflection_set_property), + (astro_reflection_get_property), (astro_reflection_class_init), + (astro_reflection_init), (astro_reflection_new): + * applications/music/astro-reflection.h: + * applications/music/clutter-reflect-texture.c: + (reflect_texture_render_to_gl_quad), + (clutter_reflect_texture_paint), + (clutter_reflect_texture_set_property), + (clutter_reflect_texture_get_property), + (clutter_reflect_texture_class_init), + (clutter_reflect_texture_init), (clutter_reflect_texture_new): + * applications/music/clutter-reflect-texture.h: + Add a reflected texture actor which wraps ClutterReflectTexture. + Needs work, everything is white! + +2008-01-11 Neil J. Patel + + * applications/music/Makefile.am: + * applications/music/astro-music-window.c: (make_cover), + (load_albums), (astro_music_window_class_init), + (astro_music_window_init), (astro_music_window_new): + * applications/music/astro-music-window.h: + * applications/music/astro-music.c: (get_window): + Beginings of a music browser/player. + + * configure.ac: + * data/Makefile.am: + * data/albums/Makefile.am: + Added in albums for music app. + + * src/astro-desktop.c: (astro_desktop_show_application): + Set the window position as [0, 0], so it can decide where it wants + to be. + +2008-01-10 Neil J. Patel + + * applications/Makefile.am: + * applications/example/init.c: (astro_application_factory_init): + * applications/music/Makefile.am: + * applications/music/astro-music.c: (get_title), (set_title), + (get_icon), (set_icon), (get_window), (close), + (astro_music_class_init), (astro_music_init), (astro_music_new): + * applications/music/astro-music.h: + * applications/music/init.c: (astro_application_factory_init): + * configure.ac: + * data/icons/Makefile.am: + * libastro-desktop/astro-application.h: + Add the begginings of an music application. + Sort out the typing in the module loading function. + Add in the music icon. + Realise that I may need to learn shader programming. + +2008-01-10 Neil J. Patel + + * src/astro-desktop.c: (load_applications): + Add back the 'filler' apps, so the main list still looks good. + +2008-01-10 Neil J. Patel + + * Makefile.am: + * applications/Makefile.am: + * applications/example/Makefile.am: + * applications/example/astro-example.c: (get_title), (set_title), + (get_icon), (set_icon), (get_window), (close), + (astro_example2_class_init), (astro_example2_init), + (astro_example2_new): + * applications/example/astro-example.h: + * applications/example/init.c: (astro_application_factory_init): + * configure.ac: + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-application.c: + * libastro-desktop/astro-application.h: + * libastro-desktop/astro.h: + * src/Makefile.am: + * src/astro-desktop.c: (_load_app_module), (load_applications): + Allow applications to be loaded as .so modules. + Added an simple example application. + +2008-01-10 Neil J. Patel + + * libastro-desktop/astro-application.c: + * libastro-desktop/astro-application.h: + * src/astro-desktop.c: (astro_desktop_show_application): + * src/astro-example.c: (get_window), (astro_example_class_init): + Make AstroWindow manditory. + +2008-01-10 Neil J. Patel + + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-window.c: (astro_window_show), + (astro_window_hide), (astro_window_close), + (astro_window_class_init), (astro_window_init), (astro_window_new): + * libastro-desktop/astro-window.h: + A wrapper for app windows, with transitions. + + * src/astro-appview.c: (on_appicon_clicked), + (astro_appview_get_active_app), (astro_appview_class_init): + * src/astro-appview.h: + A function to retrieve the active application. + + * src/astro-desktop.c: (astro_desktop_show_application), + (astro_desktop_hide_application), (on_appview_activated), + (on_key_release_event), (on_panel_home_clicked), + (astro_desktop_init): + Actually show/hide application windows when icon is activated. + Connect to the panel signals to restore the desktop/close a window. + + * src/astro-example.c: (get_window): + Use the AstroWindow actor. + +2008-01-10 Neil J. Patel + + * configure.ac: + * libastro-desktop/Makefile.am: + * src/Makefile.am: + Make sure we are compiling with -Werror, cos it's fun. + + * src/astro-appicon.c: (on_clicked), + (astro_appicon_set_application): + * src/astro-applet-manager.c: (_load_script): + * src/astro-applet.c: (astro_applet_paint): + * src/astro-appview.c: (ensure_layout): + * src/astro-desktop.c: (on_appview_activated), + (astro_desktop_init): + * src/astro-systray.c: (set_time): + * src/main.c: (main): + Consequences of compiling with -Werror. + +2008-01-10 Neil J. Patel + + * libastro-desktop/astro-defines.h: + Add ASTRO_APPICON_SPACING() #define. + Set the spacing to 0.9 of the icon size. + + * src/astro-appview.c: (astro_appview_show), (astro_appview_hide), + (astro_appview_set_app_list), (astro_appview_advance): + Use ASTRO_APPICON_SPACING () to allow different spacing widths. + +2008-01-10 Neil J. Patel + + * src/astro-applet-manager.c: (astro_applet_manager_show): + Actually make it hide in the right direction! + +2008-01-10 Neil J. Patel + + + * src/astro-applet-manager.c: (astro_applet_manager_hide): + Move off to the left. + + * src/astro-appview.c: (astro_appview_show), (astro_appview_hide): + Move off the left; Restore to the last active icon. + + * src/astro-panel.c: (astro_panel_init): + Correct the home icon & title label positioning. + +2008-01-10 Neil J. Patel + + * src/astro-appview.c: (astro_appview_advance): + Correct bounds check on main list. + +2008-01-10 Neil J. Patel + + * src/astro-applet-manager.c: (astro_applet_manager_show), + (on_hide_timeline_completed), (astro_applet_manager_hide), + (astro_applet_manager_class_init), (astro_applet_manager_init): + Override hide/show to make it a transition. + + * src/astro-appview.c: (astro_appview_set_app_list): + Call _show () on actors individually, rather than the entire group. + + * src/astro-desktop.c: (on_key_release_event), + (astro_desktop_init): + Also hide/show the applets in enter (for testing). + + * src/astro-panel.c: + ? + +2008-01-09 Neil J. Patel + + * src/astro-appview.c: (astro_appview_show), + (on_hide_timeline_completed), (astro_appview_hide), + (astro_appview_class_init), (astro_appview_init): + Override ClutterActor->show/hide to have an animation. + + * src/astro-desktop.c: (on_key_release_event): + Change CLUTTER_Enter to activate show/hide for testing. + +2008-01-09 Neil J. Patel + + * data/icons/Makefile.am: + Added a few more icons. + + * src/Makefile.am: + * src/astro-appicon.c: + * src/astro-applet-manager.c: (astro_applet_manager_init): + Some spacing fixes. + + * src/astro-panel.c: (astro_panel_init): + Added the systray. + + * src/astro-systray.c: (set_time), (astro_systray_class_init), + (astro_systray_init), (astro_systray_new): + * src/astro-systray.h: + Poor mans systray, with date/time and everything! + +2008-01-09 Neil J. Patel + + * AUTHORS: + * Makefile.am: + * applets/Makefile.am: + * applets/cal.json: + * applets/clock.json: + * applets/mail.json: + * applets/weather.json: + * autogen.sh: + * configure.ac: + * data/Makefile.am: + * data/background.svg: + * data/icons/Makefile.am: + * libastro-desktop/Makefile.am: + * libastro-desktop/astro-application.c: + (astro_application_get_title), (astro_application_set_title), + (astro_application_get_icon), (astro_application_set_icon), + (astro_application_get_window), (astro_application_close), + (astro_application_get_property), (astro_application_set_property), + (astro_application_class_init), (astro_application_init): + * libastro-desktop/astro-application.h: + * libastro-desktop/astro-defines.h: + * libastro-desktop/astro.h: + * src/Makefile.am: + * src/astro-appicon.c: (on_clicked), (astro_appicon_get_title), + (astro_appicon_set_application), (astro_appicon_set_blur), + (astro_appicon_class_init), (astro_appicon_init), + (astro_appicon_new): + * src/astro-appicon.h: + * src/astro-applet-manager.c: (astro_applet_manager_class_init), + (_load_script), (astro_applet_manager_init), + (astro_applet_manager_new): + * src/astro-applet-manager.h: + * src/astro-applet.c: (astro_applet_paint), + (astro_applet_class_init), (astro_applet_init), (astro_applet_new): + * src/astro-applet.h: + * src/astro-appview.c: (ensure_layout), + (on_move_timeline_new_frame), (on_appicon_clicked), + (astro_appview_set_app_list), (astro_appview_advance), + (astro_appview_class_init), (astro_appview_init), + (astro_appview_new): + * src/astro-appview.h: + * src/astro-desktop.c: (on_key_release_event), (load_applications), + (astro_desktop_class_init), (astro_desktop_init), + (astro_desktop_new): + * src/astro-desktop.h: + * src/astro-example.c: (get_title), (set_title), (get_icon), + (set_icon), (get_window), (set_window), (close), + (astro_example_class_init), (astro_example_init), + (astro_example_new): + * src/astro-example.h: + * src/astro-panel.c: (on_home_clicked), (on_close_clicked), + (astro_panel_class_init), (astro_panel_init), (astro_panel_new): + * src/astro-panel.h: + * src/main.c: (main), (load_background): + Inital import diff --git a/attic/astro-desktop/Makefile.am b/attic/astro-desktop/Makefile.am new file mode 100644 index 0000000..bb184fd --- /dev/null +++ b/attic/astro-desktop/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = data libastro-desktop applets applications src + +MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/attic/astro-desktop/NEWS b/attic/astro-desktop/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/attic/astro-desktop/README b/attic/astro-desktop/README new file mode 100644 index 0000000..e69de29 diff --git a/attic/astro-desktop/applets/Makefile.am b/attic/astro-desktop/applets/Makefile.am new file mode 100644 index 0000000..9294d8a --- /dev/null +++ b/attic/astro-desktop/applets/Makefile.am @@ -0,0 +1,11 @@ +dist_applet_DATA = \ + cal.json \ + cal.png \ + clock.json \ + clock.png \ + clouds.png \ + mail.json \ + mail.png \ + weather.json + +appletdir = $(pkgdatadir)/applets diff --git a/attic/astro-desktop/applets/cal.json b/attic/astro-desktop/applets/cal.json new file mode 100644 index 0000000..697867f --- /dev/null +++ b/attic/astro-desktop/applets/cal.json @@ -0,0 +1,32 @@ +{ + "id" : "applet-child", + "type" : "ClutterGroup", + "visible" : true, + "children": + [ + { "id" : "label-temp", + "type" : "ClutterLabel", + "x" : "1%", + "y" : "12%", + "width" : "9%", + "text" : "Tuesday", + "font-name" : "Sans 10px", + "color" : "white", + "alignment" : "left", + "wrap" : false, + "ellipsize" : "none", + "visible" : true + }, + + { + "id" : "cloud", + "type" : "ClutterTexture", + "x" : "1%", + "y" : 0, + "width" : "7%", + "height" : "10%", + "pixbuf" : "cal.png", + "visible" : true + } + ], +} diff --git a/attic/astro-desktop/applets/cal.png b/attic/astro-desktop/applets/cal.png new file mode 100644 index 0000000000000000000000000000000000000000..fca646076bcea40e5f42c340fd7ed181600308e8 GIT binary patch literal 2378 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 KMNUMnLSTX_Vj+A0 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/applets/clouds.png b/attic/astro-desktop/applets/clouds.png new file mode 100644 index 0000000000000000000000000000000000000000..87e1db04721854c4da5f7da10542487bc70b15fe GIT binary patch literal 4358 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 + */ + + +#include "astro-contact-row.h" + +#include +#include + +#include + + +G_DEFINE_TYPE (AstroContactRow, astro_contact_row, CLUTTER_TYPE_GROUP); + +#define ASTRO_CONTACT_ROW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_CONTACT_ROW, AstroContactRowPrivate)) + +#define PADDING (CSH()/200) +#define ICON_SIZE (ROW_HEIGHT - (PADDING * 2)) + +struct _AstroContactRowPrivate +{ + gchar *name; + GdkPixbuf *icon; + gboolean active; + + /* Actors */ + ClutterActor *bg; + ClutterActor *texture; + ClutterActor *label; + ClutterActor *bar; + + /* Timelines */ + ClutterEffectTemplate *active_temp; + ClutterTimeline *active_time; + ClutterEffectTemplate *bar_temp; + ClutterTimeline *bar_time; + ClutterAlpha *alpha; + ClutterBehaviour *behave; +}; + +enum +{ + PROP_0, + + PROP_NAME, + PROP_ICON +}; + +static GdkPixbuf *bg_pixbuf = NULL; +static ClutterActor *bg_texture = NULL; + +/* Public Functions */ +static void +on_active_completed (ClutterActor *actor, gpointer data) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (data)); + priv = ASTRO_CONTACT_ROW_GET_PRIVATE (data); + + if (clutter_timeline_is_playing (priv->bar_time)) + return; + + priv->bar_time = clutter_effect_fade (priv->bar_temp, + priv->bar, + 255, + NULL, NULL); +} + +static void +on_inactive_completed (ClutterActor *actor, gpointer data) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (data)); + priv = ASTRO_CONTACT_ROW_GET_PRIVATE (data); + + clutter_actor_set_height (priv->bg, ROW_HEIGHT); + clutter_actor_set_opacity (priv->bar, 0); +} + +void +astro_contact_row_set_active (AstroContactRow *row, + gboolean active) +{ + AstroContactRowPrivate *priv; + static ClutterTimeline *active_time = NULL; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (row)); + priv = row->priv; + + if (priv->active == active) + return; + + priv->active = active; + + if (active) + { + active_time = clutter_effect_fade (priv->active_temp, + priv->bg, + 255, + on_active_completed, row); + clutter_timeline_start (priv->active_time); + } + else + { + active_time = clutter_effect_fade (priv->active_temp, + priv->bg, + 0, + on_inactive_completed, row); + if (clutter_timeline_is_playing (priv->bar_time)) + clutter_timeline_stop (priv->bar_time); + + priv->bar_time = clutter_effect_fade (priv->active_temp, + priv->bar, + 0, + NULL, NULL); + } +} + +/* Private functions */ +static void +astro_contact_row_set_name (AstroContactRow *row, const gchar *name) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (row)); + g_return_if_fail (name); + priv = row->priv; + + if (priv->name) + g_free (priv->name); + priv->name = g_strdup (name); + + clutter_label_set_text (CLUTTER_LABEL (priv->label), name); + + clutter_actor_set_position (priv->label, (PADDING*2)+ICON_SIZE, + (ROW_HEIGHT /2)-(clutter_actor_get_height (priv->label)/2)); +} + +static void +astro_contact_row_set_icon (AstroContactRow *row, GdkPixbuf *icon) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (row)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + priv = row->priv; + + priv->icon = icon; + + g_object_set (G_OBJECT (priv->texture), "pixbuf", icon, NULL); + clutter_actor_set_size (priv->texture, ICON_SIZE, ICON_SIZE); +} + +static void +_resize_alpha (ClutterBehaviour *behave, + guint32 alpha, + AstroContactRow *row) +{ + AstroContactRowPrivate *priv; + gfloat factor; + gint dest_height = ROW_HEIGHT; + gint current_height, diff_height; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (row)); + priv = row->priv; + + factor = (gfloat)alpha/CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->active) + dest_height = (ROW_HEIGHT * 2) + PADDING; + + current_height = clutter_actor_get_height (priv->bg); + + if (current_height > dest_height) + diff_height = (current_height - dest_height) * -1; + else + diff_height = dest_height - current_height; + + clutter_actor_set_height (priv->bg, + current_height + ((diff_height * alpha)/CLUTTER_ALPHA_MAX_ALPHA)); +} + +/* GObject stuff */ +static void +astro_contact_row_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (object)); + priv = ASTRO_CONTACT_ROW (object)->priv; + + switch (prop_id) + { + case PROP_NAME: + astro_contact_row_set_name (ASTRO_CONTACT_ROW (object), + g_value_get_string (value)); + break; + case PROP_ICON: + astro_contact_row_set_icon (ASTRO_CONTACT_ROW (object), + GDK_PIXBUF (g_value_get_object (value))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_contact_row_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AstroContactRowPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_ROW (object)); + priv = ASTRO_CONTACT_ROW (object)->priv; + + switch (prop_id) + { + case PROP_NAME: + g_value_set_string (value, priv->name); + case PROP_ICON: + g_value_set_object (value, G_OBJECT (priv->icon)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_contact_row_class_init (AstroContactRowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = astro_contact_row_set_property; + gobject_class->get_property = astro_contact_row_get_property; + + g_object_class_install_property ( + gobject_class, + PROP_NAME, + g_param_spec_string ("contact_name", + "Contact Name", + "The contacts name", + " ", + G_PARAM_READWRITE)); + + g_object_class_install_property ( + gobject_class, + PROP_ICON, + g_param_spec_object ("contact_icon", + "Contact Icon", + "The contacts icon", + GDK_TYPE_PIXBUF, + G_PARAM_READWRITE)); + + + g_type_class_add_private (gobject_class, sizeof (AstroContactRowPrivate)); +} + +static void +astro_contact_row_init (AstroContactRow *row) +{ + AstroContactRowPrivate *priv; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + gchar *font = NULL; + GdkPixbuf *pixbuf; + + priv = row->priv = ASTRO_CONTACT_ROW_GET_PRIVATE (row); + + priv->name = NULL; + priv->icon = NULL; + priv->active = FALSE; + + /* The background texture */ + if (!GDK_IS_PIXBUF (bg_pixbuf)) + bg_pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR"/applet_bg.png", NULL); + if (!CLUTTER_IS_ACTOR (bg_texture)) + { + bg_texture = clutter_texture_new_from_pixbuf (bg_pixbuf); + clutter_actor_show (bg_texture); + } + + priv->bg = tidy_texture_frame_new (CLUTTER_TEXTURE (bg_texture), + 15, 15, 15, 15); + clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->bg); + clutter_actor_set_position (priv->bg, 0, 0); + clutter_actor_set_size (priv->bg, CSW()*0.5, ROW_HEIGHT); + clutter_actor_set_opacity (priv->bg, 0); + + /* The icon */ + priv->texture = clutter_texture_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->texture); + clutter_actor_set_position (priv->texture, PADDING, PADDING); + clutter_actor_set_size (priv->texture, ICON_SIZE, ICON_SIZE); + + /* The label */ + font = g_strdup_printf ("Sans %d", (gint)(ROW_HEIGHT * 0.3)); + priv->label = clutter_label_new_full (font, " ", &white); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->label), FALSE); + clutter_actor_set_width (priv->label, CSW()/2); + clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->label); + clutter_actor_set_position (priv->label, (PADDING*2) + ICON_SIZE, + ROW_HEIGHT /2); + g_free (font); + + /* Contact bar */ + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR"/contact-bar.svg", + -1, ROW_HEIGHT-(PADDING*4), TRUE, + NULL); + priv->bar = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (row), priv->bar); + clutter_actor_set_position (priv->bar, + (PADDING*2) + ICON_SIZE, + ROW_HEIGHT + PADDING); + clutter_actor_set_opacity (priv->bar, 0); + + /* Timelines */ + priv->active_time = clutter_timeline_new_for_duration (200); + priv->active_temp = clutter_effect_template_new (priv->active_time, + clutter_sine_inc_func); + priv->bar_time = clutter_timeline_new_for_duration (600); + priv->bar_temp = clutter_effect_template_new (priv->bar_time, + clutter_sine_inc_func); + + priv->active_time = clutter_timeline_new_for_duration (800); + priv->alpha = clutter_alpha_new_full (priv->active_time, + clutter_sine_inc_func, + NULL, NULL); + priv->behave = astro_behave_new (priv->alpha, + (AstroBehaveAlphaFunc)_resize_alpha, + row); + + clutter_actor_show_all (CLUTTER_ACTOR (row)); +} + +ClutterActor * +astro_contact_row_new (const gchar *name, GdkPixbuf *icon) +{ + ClutterActor *row = g_object_new (ASTRO_TYPE_CONTACT_ROW, + "contact_name", name, + "contact_icon", icon, + NULL); + return row; +} + diff --git a/attic/astro-desktop/applications/contacts/astro-contact-row.h b/attic/astro-desktop/applications/contacts/astro-contact-row.h new file mode 100644 index 0000000..e84f271 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contact-row.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#include "astro-contacts-window.h" + +#ifndef _HAVE_ASTRO_CONTACT_ROW_H +#define _HAVE_ASTRO_CONTACT_ROW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_CONTACT_ROW astro_contact_row_get_type() + +#define ASTRO_CONTACT_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_CONTACT_ROW, \ + AstroContactRow)) + +#define ASTRO_CONTACT_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_CONTACT_ROW, \ + AstroContactRowClass)) + +#define ASTRO_IS_CONTACT_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_CONTACT_ROW)) + +#define ASTRO_IS_CONTACT_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_CONTACT_ROW)) + +#define ASTRO_CONTACT_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_CONTACT_ROW, \ + AstroContactRowClass)) + +#define ROW_HEIGHT (CSH()/11) + +typedef struct _AstroContactRow AstroContactRow; +typedef struct _AstroContactRowClass AstroContactRowClass; +typedef struct _AstroContactRowPrivate AstroContactRowPrivate; + +struct _AstroContactRow +{ + ClutterGroup parent; + + /*< private >*/ + AstroContactRowPrivate *priv; +}; + +struct _AstroContactRowClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_contact_row_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_contact_row_new (const gchar *name, + GdkPixbuf *icon); +void astro_contact_row_set_active (AstroContactRow *row, + gboolean active); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/astro-contacts-details.c b/attic/astro-desktop/applications/contacts/astro-contacts-details.c new file mode 100644 index 0000000..93f3490 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts-details.c @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-contacts-details.h" + +#include +#include + +#include "astro-texture-group.h" + +G_DEFINE_TYPE (AstroContactDetails, astro_contact_details, CLUTTER_TYPE_GROUP); + +#define ASTRO_CONTACT_DETAILS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_CONTACT_DETAILS, AstroContactDetailsPrivate)) + +#define PADDING (CSH()/50) + +struct _AstroContactDetailsPrivate +{ + AstroContact *contact; + ClutterActor *address; + ClutterActor *tel; + ClutterActor *email; + + ClutterEffectTemplate *details_temp; + ClutterTimeline *details_time; + ClutterTimeline *timeline; +}; + +void +on_fade_out (AstroContactDetails *details) +{ + AstroContactDetailsPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_DETAILS (details)); + priv = details->priv; + + astro_texture_group_set_text (ASTRO_TEXTURE_GROUP (priv->address), + priv->contact->address); + astro_texture_group_set_text (ASTRO_TEXTURE_GROUP (priv->tel), + priv->contact->tel); + astro_texture_group_set_text (ASTRO_TEXTURE_GROUP (priv->email), + priv->contact->email); + + clutter_actor_set_y (priv->address, 0); + clutter_actor_set_y (priv->tel, + clutter_actor_get_height (priv->address) + PADDING); + clutter_actor_set_y (priv->email, + clutter_actor_get_y (priv->tel) + + clutter_actor_get_height (priv->tel) + PADDING); + + clutter_actor_set_y (CLUTTER_ACTOR (details), + (CSH()/2)-(clutter_actor_get_height (CLUTTER_ACTOR (details))/2)); + + priv->timeline = clutter_effect_fade (priv->details_temp, + CLUTTER_ACTOR (details), + 255, + NULL, NULL); + + g_debug ("on_fade_out\n"); +} + +void +astro_contact_details_set_active (AstroContactDetails *details, + AstroContact *contact) +{ + AstroContactDetailsPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACT_DETAILS (details)); + priv = details->priv; + + priv->contact = contact; + + if (CLUTTER_IS_TIMELINE (priv->timeline)) + g_object_unref (G_OBJECT (priv->timeline)); + + priv->timeline = clutter_effect_fade (priv->details_temp, + CLUTTER_ACTOR (details), + 0, + (ClutterEffectCompleteFunc)on_fade_out, + details); + + g_debug ("set_active"); +} + + +/* GObject stuff */ +static void +astro_contact_details_class_init (AstroContactDetailsClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroContactDetailsPrivate)); +} + +static void +astro_contact_details_init (AstroContactDetails *details) +{ + AstroContactDetailsPrivate *priv; + priv = details->priv = ASTRO_CONTACT_DETAILS_GET_PRIVATE (details); + + priv->address = astro_texture_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (details), priv->address); + + priv->tel = astro_texture_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (details), priv->tel); + + priv->email = astro_texture_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (details), priv->email); + + priv->details_time = clutter_timeline_new_for_duration (500); + priv->details_temp = clutter_effect_template_new (priv->details_time, + clutter_sine_inc_func); + + clutter_actor_set_opacity (CLUTTER_ACTOR (details), 0); + clutter_actor_show_all (CLUTTER_ACTOR (details)); +} + +ClutterActor * +astro_contact_details_new (void) +{ + ClutterActor *details = g_object_new (ASTRO_TYPE_CONTACT_DETAILS, + NULL); + return CLUTTER_ACTOR (details); +} + diff --git a/attic/astro-desktop/applications/contacts/astro-contacts-details.h b/attic/astro-desktop/applications/contacts/astro-contacts-details.h new file mode 100644 index 0000000..a475e06 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts-details.h @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#include "astro-contacts-window.h" + +#ifndef _HAVE_ASTRO_CONTACT_DETAILS_H +#define _HAVE_ASTRO_CONTACT_DETAILS_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_CONTACT_DETAILS astro_contact_details_get_type() + +#define ASTRO_CONTACT_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_CONTACT_DETAILS, \ + AstroContactDetails)) + +#define ASTRO_CONTACT_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_CONTACT_DETAILS, \ + AstroContactDetailsClass)) + +#define ASTRO_IS_CONTACT_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_CONTACT_DETAILS)) + +#define ASTRO_IS_CONTACT_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_CONTACT_DETAILS)) + +#define ASTRO_CONTACT_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_CONTACT_DETAILS, \ + AstroContactDetailsClass)) + +typedef struct _AstroContactDetails AstroContactDetails; +typedef struct _AstroContactDetailsClass AstroContactDetailsClass; +typedef struct _AstroContactDetailsPrivate AstroContactDetailsPrivate; + +struct _AstroContactDetails +{ + ClutterGroup parent; + + /*< private >*/ + AstroContactDetailsPrivate *priv; +}; + +struct _AstroContactDetailsClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_contact_details_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_contact_details_new (void); + +void astro_contact_details_set_active (AstroContactDetails *details, + AstroContact *contact); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/astro-contacts-window.c b/attic/astro-desktop/applications/contacts/astro-contacts-window.c new file mode 100644 index 0000000..aeb8b55 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts-window.c @@ -0,0 +1,591 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-contacts-window.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "astro-contact-row.h" +#include "astro-contacts-details.h" + +G_DEFINE_TYPE (AstroContactsWindow, astro_contacts_window, ASTRO_TYPE_WINDOW); + +#define ASTRO_CONTACTS_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_CONTACTS_WINDOW, AstroContactsWindowPrivate)) + +#define ALBUM_SIZE (CSW()/4) +#define OH_ADDRESS "Unit R, Homesdale Business Centre\n216-218 Homesdale Road\nBromley, BR12QZ" + +#define OH_TEL "01923 820 124" + +struct _AstroContactsWindowPrivate +{ + GList *contacts_list; + + ClutterActor *contacts; + ClutterActor *contacts_eventbox; + ClutterActor *label; + + ClutterActor *details; + + gint active; + gboolean activated; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + + gint starty; + gint endy; + gint lasty; + guint32 start_time; + gboolean mousedown; +}; + +static AstroContact contacts[] = { + {"Andrew Zaborowski", OH_ADDRESS, OH_TEL, "andrew@o-hand.com"}, + {"Chris Lord", OH_ADDRESS, OH_TEL, "chris@o-hand.com"}, + {"Dodji Seketeli", OH_ADDRESS, OH_TEL, "dodji@o-hand.com"}, + {"Emmanuele Bassi", OH_ADDRESS, OH_TEL, "ebassi@o-hand.com"}, + {"Iain Holmes", OH_ADDRESS, OH_TEL, "iain@o-hand.com"}, + {"Jorn Baayen", OH_ADDRESS, OH_TEL, "jorn@o-hand.com"}, + {"Jussi Kukkonen", OH_ADDRESS, OH_TEL, "jku@o-hand.com"}, + {"Marcin Juszkiewicz", OH_ADDRESS, OH_TEL, "hrw@o-hand.com"}, + {"Matthew Allum", OH_ADDRESS, OH_TEL, "mallum@o-hand.com"}, + {"Neil J. Patel", OH_ADDRESS, OH_TEL, "njp@o-hand.com"}, + {"Øyvind Kolås", OH_ADDRESS, OH_TEL, "pippin@o-hand.com"}, + {"Paul Cooper", OH_ADDRESS, OH_TEL, "pgc@o-hand.com"}, + {"Richard Purdie", OH_ADDRESS, OH_TEL, "rp@o-hand.com"}, + {"Robert Bradford", OH_ADDRESS, OH_TEL, "rob@o-hand.com"}, + {"Ross Burton", OH_ADDRESS, OH_TEL, "ross@o-hand.com"}, + {"Samuel Ortiz", OH_ADDRESS, OH_TEL, "sameo@o-hand.com"}, + {"Sidske Allum", OH_ADDRESS, OH_TEL, "sid@o-hand.com"}, + {"Thomas Wood", OH_ADDRESS, OH_TEL, "thomas@o-hand.com"}, + {"Tomas Frydrych", OH_ADDRESS, OH_TEL, "tf@o-hand.com"} +}; + + + +static void on_main_timeline_completed (ClutterTimeline *timeline, + AstroContactsWindow *window); + +/* Public Functions */ + +/* Private functions */ +typedef struct +{ + gint y; + gfloat scale; + +} ContactTrans; + +static void +ensure_layout (AstroContactsWindow *window) +{ +#define MAX_DIST 4 +#define SPACING (ROW_HEIGHT * 1.5) + AstroContactsWindowPrivate *priv; + GList *c; + gint i = 0; + + priv = window->priv; + + c = priv->contacts_list; + for (c=c; c; c = c->next) + { + ClutterActor *contact = c->data; + ContactTrans *trans = g_object_get_data (G_OBJECT (contact), "trans"); + gboolean active = FALSE; + + if (i == priv->active) + { + trans->y = CSH ()/2; + trans->scale = 1.0; + } + else if (i > priv->active) + { + gint diff; + + diff = i - priv->active; + trans->y = (CSH()/2) + (SPACING * diff); + if (diff > MAX_DIST) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (MAX_DIST-diff)/MAX_DIST); + + } + else + { + gint diff; + + diff = priv->active - i; + trans->y = (CSH()/2) - (SPACING * diff); + if (diff > MAX_DIST) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (MAX_DIST-diff)/MAX_DIST); + } + + astro_contact_row_set_active (ASTRO_CONTACT_ROW (contact), active); + + i++; + } +} + +static void +ensure_layout_proper (AstroContactsWindow *window) +{ +#define MAX_DIST 4 +#define SPACING (ROW_HEIGHT * 1.5) + AstroContactsWindowPrivate *priv; + GList *c; + gint i = 0; + + priv = window->priv; + + c = priv->contacts_list; + for (c=c; c; c = c->next) + { + ClutterActor *contact = c->data; + ContactTrans *trans = g_object_get_data (G_OBJECT (contact), "trans"); + gboolean active = FALSE; + + if (i == priv->active) + { + trans->y = CSH ()/2; + trans->scale = 1.0; + active = TRUE; + + astro_contact_details_set_active (ASTRO_CONTACT_DETAILS (priv->details), + &contacts[g_list_index (priv->contacts_list, contact)]); + } + else if (i > priv->active) + { + gint diff; + + diff = i - priv->active; + trans->y = (CSH()/2) + (SPACING * diff); + trans->y += ROW_HEIGHT * 1; + if (diff > MAX_DIST) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (MAX_DIST-diff)/MAX_DIST); + } + else + { + gint diff; + + diff = priv->active - i; + trans->y = (CSH()/2) - (SPACING * diff); + if (diff > MAX_DIST) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (MAX_DIST-diff)/MAX_DIST); + } + + astro_contact_row_set_active (ASTRO_CONTACT_ROW (contact), active); + + i++; + } +} +static void +astro_contacts_list_window_advance (AstroContactsWindow *window, gint n) +{ + AstroContactsWindowPrivate *priv; + gint new_active; + + g_return_if_fail (ASTRO_IS_CONTACTS_WINDOW (window)); + priv = window->priv; + + new_active = priv->active + n; + if (new_active < 0 || + new_active > (clutter_group_get_n_children (CLUTTER_GROUP (priv->contacts))-1)) + return; + + priv->active += n; + ensure_layout (window); + + g_signal_connect (priv->timeline, "completed", + G_CALLBACK (on_main_timeline_completed), window); + + if (clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_stop (priv->timeline); + + clutter_timeline_start (priv->timeline); + +} + +static gboolean +on_event (ClutterActor *contacts, + ClutterEvent *event, + AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + + g_return_val_if_fail (ASTRO_IS_CONTACTS_WINDOW (window), FALSE); + priv = window->priv; + + if (event->type == CLUTTER_BUTTON_PRESS) + { + priv->mousedown = TRUE; + priv->starty = priv->lasty = event->button.y; + priv->start_time = event->button.time; + + priv->active = -1; + clutter_timeline_start (priv->timeline); + + g_debug ("button-press\n"); + } + else if (event->type == CLUTTER_MOTION) + { + gint offset; + + if (!priv->mousedown) + return FALSE; + + if (event->motion.y > priv->lasty) + offset = event->motion.y - priv->lasty; + else + offset = -1 * (priv->lasty - event->motion.y); + + priv->lasty = event->motion.y; + + clutter_actor_set_y (priv->contacts, + clutter_actor_get_y (priv->contacts) + offset); + + g_debug ("button-motion\n"); + return TRUE; + } + else if (event->type == CLUTTER_BUTTON_RELEASE) + { + gint endy; + + endy = event->button.y - priv->starty; + + + g_print ("endy = %d\n", endy); + + priv->mousedown = FALSE; + g_debug ("button-release\n"); + } + return FALSE; +} + +static void +on_contact_activated (AstroContactsWindow *window) +{ +#define ACTIVE_SCALE 1.5 + AstroContactsWindowPrivate *priv; + ClutterActor *contact; + GList *children; + ContactTrans *trans; + + g_return_if_fail (ASTRO_IS_CONTACTS_WINDOW (window)); + priv = window->priv; + + children = priv->contacts_list; + contact = g_list_nth_data (children, priv->active); + + if (!CLUTTER_IS_ACTOR (contact)) + return; + + trans = g_object_get_data (G_OBJECT (contact), "trans"); + if (!trans) + return; + + priv->activated = TRUE; + + trans->scale = ACTIVE_SCALE; + trans->y = (CSW()/2) - ((ALBUM_SIZE * ACTIVE_SCALE) * 0.5); + + clutter_actor_raise_top (contact); + + if (clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_rewind (priv->timeline); + else + clutter_timeline_start (priv->timeline); +} + +static gboolean +on_contact_clicked (ClutterActor *contact, + ClutterEvent *event, + AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + GList *children; + gint n; + + g_return_val_if_fail (ASTRO_IS_CONTACTS_WINDOW (window), FALSE); + priv = window->priv; + + children = priv->contacts_list; + n = g_list_index (children, contact); + + if (priv->activated) + { + priv->activated = FALSE; + + astro_contacts_list_window_advance (window, 0); + return FALSE; + } + if (n == priv->active) + on_contact_activated (window); + else + { + gint diff; + if (n > priv->active) + diff = (n-priv->active); + else + diff = (priv->active - n) * -1; + astro_contacts_list_window_advance (window, diff); + } + + return FALSE; +} + +static ClutterActor * +make_contact (const gchar *name) +{ + ClutterActor *row; + static GdkPixbuf *face = NULL; + + if (!face) + face = gdk_pixbuf_new_from_file (PKGDATADIR"/face.png", NULL); + + row = astro_contact_row_new (name, face); + + clutter_actor_set_anchor_point_from_gravity (row, CLUTTER_GRAVITY_WEST); + + g_object_set_data (G_OBJECT (row), "trans", g_new0 (ContactTrans, 1)); + + return row; +} + +static void +load_contacts (AstroContactsWindow *window) +{ +#define PADDING 10 + AstroContactsWindowPrivate *priv; + gint i = 0; + + priv = window->priv; + + for (i = 0; i < G_N_ELEMENTS (contacts); i++) + { + ClutterActor *contact; + + contact = make_contact (contacts[i].name); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->contacts), contact); + clutter_actor_set_position (contact, PADDING, CSH()); + clutter_actor_show_all (contact); + clutter_actor_set_reactive (contact, TRUE); + g_signal_connect (contact, "button-release-event", + G_CALLBACK (on_contact_clicked), window); + + priv->contacts_list = g_list_append (priv->contacts_list, contact); + } +} + +static void +astro_contacts_list_alpha (ClutterBehaviour *behave, + guint32 alpha_value, + AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + gfloat factor; + GList *c; + + g_return_if_fail (ASTRO_IS_CONTACTS_WINDOW (window)); + priv = window->priv; + + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + c = priv->contacts_list; + for (c=c; c; c = c->next) + { + ClutterActor *contact = c->data; + ContactTrans *trans = g_object_get_data (G_OBJECT (contact), "trans"); + gdouble cscale, dscale; + gint currenty, diffy; + + currenty = clutter_actor_get_y (contact); + if (currenty > trans->y) + diffy = (currenty - trans->y) * -1; + else + diffy = trans->y - currenty; + + //clutter_actor_set_y (contact, currenty + (gint)(diffy*factor)); + clutter_actor_set_y (contact, + currenty + + (gint)((diffy*alpha_value)/CLUTTER_ALPHA_MAX_ALPHA)); + + clutter_actor_get_scale (contact, &cscale, &cscale); + if (cscale > trans->scale) + dscale = (cscale - trans->scale) * -1; + else + dscale = trans->scale - cscale; + + clutter_actor_set_scale (contact, + cscale + (dscale*factor), + cscale + (dscale*factor)); + } +} + +static void +on_main_timeline_completed (ClutterTimeline *timeline, + AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + + g_return_if_fail (ASTRO_CONTACTS_WINDOW (window)); + priv = window->priv; + + g_signal_handlers_disconnect_by_func (timeline, + on_main_timeline_completed, + window); + + ensure_layout_proper (window); + clutter_timeline_start (priv->timeline); +} + +static gboolean +on_key_release_event (ClutterActor *actor, + ClutterEvent *event, + AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + + g_return_val_if_fail (ASTRO_IS_WINDOW (window), FALSE); + priv = window->priv; + + switch (event->key.keyval) + { + case CLUTTER_Return: + case CLUTTER_KP_Enter: + case CLUTTER_ISO_Enter: + on_contact_activated (window); + break; + case CLUTTER_Up: + case CLUTTER_KP_Up: + if (priv->activated) + { + priv->activated = FALSE; + } + astro_contacts_list_window_advance (window, -1); + break; + case CLUTTER_Down: + case CLUTTER_KP_Down: + if (priv->activated) + { + priv->activated = FALSE; + } + astro_contacts_list_window_advance (window, 1); + break; + default: + ; + } + + return FALSE; +} + +/* GObject stuff */ +static void +astro_contacts_window_class_init (AstroContactsWindowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroContactsWindowPrivate)); +} + +static void +astro_contacts_window_init (AstroContactsWindow *window) +{ + AstroContactsWindowPrivate *priv; + + priv = window->priv = ASTRO_CONTACTS_WINDOW_GET_PRIVATE (window); + + priv->contacts_list = NULL; + priv->active = 0; + priv->activated = FALSE; + + priv->contacts = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (window), priv->contacts); + clutter_actor_set_size (priv->contacts, CSW(), CSH()); + clutter_actor_set_position (priv->contacts, 0, 0); + + priv->contacts_eventbox = clutter_rectangle_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (window), + priv->contacts_eventbox); + clutter_actor_set_position (priv->contacts_eventbox, 0, 0); + clutter_actor_set_size (priv->contacts_eventbox, CSW()/2, CSH()); + clutter_actor_set_opacity (priv->contacts_eventbox, 0); + clutter_actor_set_reactive (priv->contacts_eventbox, TRUE); + + priv->details = astro_contact_details_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (window), priv->details); + clutter_actor_set_position (priv->details, CSW()*0.54, 0); + + load_contacts (window); + + ensure_layout (window); + + priv->timeline = clutter_timeline_new_for_duration (800); + priv->alpha = clutter_alpha_new_full (priv->timeline, + clutter_sine_inc_func, + NULL, NULL); + priv->behave = astro_behave_new (priv->alpha, + (AstroBehaveAlphaFunc)astro_contacts_list_alpha, + window); + + g_signal_connect (priv->timeline, "completed", + G_CALLBACK (on_main_timeline_completed), window); + + clutter_timeline_start (priv->timeline); + + g_signal_connect (window, "key-release-event", + G_CALLBACK (on_key_release_event), window); + clutter_grab_keyboard (CLUTTER_ACTOR (window)); + + astro_utils_set_clip (CLUTTER_ACTOR (window), 0, ASTRO_PANEL_HEIGHT (), + CSW(), CSH()); + + g_signal_connect (priv->contacts_eventbox, "event", + G_CALLBACK (on_event), window); + + clutter_actor_set_position (CLUTTER_ACTOR (window), 0, 0); + clutter_actor_show_all (CLUTTER_ACTOR (window)); +} + +AstroWindow * +astro_contacts_window_new (void) +{ + AstroWindow *contacts_window = g_object_new (ASTRO_TYPE_CONTACTS_WINDOW, + NULL); + + return contacts_window; +} diff --git a/attic/astro-desktop/applications/contacts/astro-contacts-window.h b/attic/astro-desktop/applications/contacts/astro-contacts-window.h new file mode 100644 index 0000000..7050392 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts-window.h @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_CONTACTS_WINDOW_H +#define _HAVE_ASTRO_CONTACTS_WINDOW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_CONTACTS_WINDOW astro_contacts_window_get_type() + +#define ASTRO_CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_CONTACTS_WINDOW, \ + AstroContactsWindow)) + +#define ASTRO_CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_CONTACTS_WINDOW, \ + AstroContactsWindowClass)) + +#define ASTRO_IS_CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_CONTACTS_WINDOW)) + +#define ASTRO_IS_CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_CONTACTS_WINDOW)) + +#define ASTRO_CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_CONTACTS_WINDOW, \ + AstroContactsWindowClass)) + +typedef struct _AstroContactsWindow AstroContactsWindow; +typedef struct _AstroContactsWindowClass AstroContactsWindowClass; +typedef struct _AstroContactsWindowPrivate AstroContactsWindowPrivate; + +struct _AstroContactsWindow +{ + AstroWindow parent; + + /*< private >*/ + AstroContactsWindowPrivate *priv; +}; + +struct _AstroContactsWindowClass +{ + /*< private >*/ + AstroWindowClass parent_class; +}; + +typedef struct { + gchar *name; + gchar *address; + gchar *tel; + gchar *email; + +} AstroContact; + + +GType astro_contacts_window_get_type (void) G_GNUC_CONST; + +AstroWindow * astro_contacts_window_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/astro-contacts.c b/attic/astro-desktop/applications/contacts/astro-contacts.c new file mode 100644 index 0000000..73d8510 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts.c @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-contacts.h" + +#include +#include +#include + +#include "astro-contacts-window.h" + +G_DEFINE_TYPE (AstroContacts, astro_contacts, ASTRO_TYPE_APPLICATION); + +#define ASTRO_CONTACTS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_CONTACTS, AstroContactsPrivate)) + +struct _AstroContactsPrivate +{ + const gchar *title; + GdkPixbuf *icon; + ClutterActor *window; +}; + +/* Public Functions */ + +/* Private functions */ +static const gchar * +get_title (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_CONTACTS (app), NULL); + + return ASTRO_CONTACTS (app)->priv->title; +} + +static void +set_title (AstroApplication *app, const gchar *title) +{ + g_return_if_fail (ASTRO_IS_CONTACTS (app)); + g_return_if_fail (title); + + ASTRO_CONTACTS (app)->priv->title = g_strdup (title); +} + +static GdkPixbuf * +get_icon (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_CONTACTS (app), NULL); + + return ASTRO_CONTACTS (app)->priv->icon; +} + +static void +set_icon (AstroApplication *app, GdkPixbuf *icon) +{ + g_return_if_fail (ASTRO_IS_CONTACTS (app)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + ASTRO_CONTACTS (app)->priv->icon = icon; +} + +static AstroWindow * +get_window (AstroApplication *app) +{ + AstroContactsPrivate *priv; + ClutterActor *window = NULL; + + g_return_val_if_fail (ASTRO_IS_CONTACTS (app), NULL); + priv = ASTRO_CONTACTS (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + window = priv->window; + else + { + window = CLUTTER_ACTOR (astro_contacts_window_new ()); + } + + ASTRO_CONTACTS (app)->priv->window = window; + + return ASTRO_WINDOW (window); +} + +static void +close (AstroApplication *app) +{ + AstroContactsPrivate *priv; + + g_return_if_fail (ASTRO_IS_CONTACTS (app)); + priv = ASTRO_CONTACTS (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + clutter_actor_destroy (priv->window); +} + +/* GObject stuff */ +static void +astro_contacts_class_init (AstroContactsClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + AstroApplicationClass *app_class = ASTRO_APPLICATION_CLASS (klass); + + app_class->get_title = get_title; + app_class->set_title = set_title; + app_class->get_icon = get_icon; + app_class->set_icon = set_icon; + app_class->get_window = get_window; + app_class->close = close; + + g_type_class_add_private (gobject_class, sizeof (AstroContactsPrivate)); +} + +static void +astro_contacts_init (AstroContacts *contacts) +{ + AstroContactsPrivate *priv; + priv = contacts->priv = ASTRO_CONTACTS_GET_PRIVATE (contacts); + + priv->title = NULL; + priv->icon = NULL; + priv->window = NULL; +} + +AstroApplication * +astro_contacts_new (const gchar *title, GdkPixbuf *icon) +{ + AstroApplication *contacts = g_object_new (ASTRO_TYPE_CONTACTS, + NULL); + + astro_application_set_title (contacts, title); + astro_application_set_icon (contacts, icon); + + return contacts; +} + diff --git a/attic/astro-desktop/applications/contacts/astro-contacts.h b/attic/astro-desktop/applications/contacts/astro-contacts.h new file mode 100644 index 0000000..a755262 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-contacts.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_CONTACTS_H +#define _HAVE_ASTRO_CONTACTS_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_CONTACTS astro_contacts_get_type() + +#define ASTRO_CONTACTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_CONTACTS, \ + AstroContacts)) + +#define ASTRO_CONTACTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_CONTACTS, \ + AstroContactsClass)) + +#define ASTRO_IS_CONTACTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_CONTACTS)) + +#define ASTRO_IS_CONTACTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_CONTACTS)) + +#define ASTRO_CONTACTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_CONTACTS, \ + AstroContactsClass)) + +typedef struct _AstroContacts AstroContacts; +typedef struct _AstroContactsClass AstroContactsClass; +typedef struct _AstroContactsPrivate AstroContactsPrivate; + +struct _AstroContacts +{ + AstroApplication parent; + + /*< private >*/ + AstroContactsPrivate *priv; +}; + +struct _AstroContactsClass +{ + /*< private >*/ + AstroApplicationClass parent_class; +}; + +GType astro_contacts_get_type (void) G_GNUC_CONST; + +AstroApplication * astro_contacts_new (const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/astro-reflection.c b/attic/astro-desktop/applications/contacts/astro-reflection.c new file mode 100644 index 0000000..a9feb43 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-reflection.c @@ -0,0 +1,258 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-reflection.h" + +#include +#include + +#include "clutter-reflect-texture.h" + +G_DEFINE_TYPE (AstroReflection, astro_reflection, CLUTTER_TYPE_GROUP); + +#define ASTRO_REFLECTION_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_REFLECTION, AstroReflectionPrivate)) + +static GdkPixbuf *disc_bg = NULL; + +struct _AstroReflectionPrivate +{ + ClutterActor *songs; + ClutterActor *songs_reflect; + ClutterActor *texture; + ClutterActor *reflect; + GdkPixbuf *pixbuf; + + ClutterEffectTemplate *songs_temp; + ClutterTimeline *songs_time; +}; + +enum +{ + PROP_0, + + PROP_PIXBUF +}; + +static void +fix_clip (ClutterTimeline *timeline, + gint frame_num, + AstroReflection *reflection) +{ + AstroReflectionPrivate *priv; + gint size; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + size = clutter_actor_get_width (priv->songs); + + astro_utils_set_clip (priv->songs_reflect, + size - clutter_actor_get_x (priv->songs_reflect), + 0, size, size); +} + +void +astro_reflection_set_active (AstroReflection *reflection, + gboolean active) +{ + AstroReflectionPrivate *priv; + static ClutterTimeline *fade_time = NULL; + gint x = 0; + gint fade = 0; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + if (active) + { + x = clutter_actor_get_width (priv->texture); + fade = 100; + } + + clutter_effect_move (priv->songs_temp, + priv->songs, + x, clutter_actor_get_y (priv->songs), + NULL, NULL); + clutter_effect_move (priv->songs_temp, + priv->songs_reflect, + x, clutter_actor_get_y (priv->songs_reflect), + NULL, NULL); + + fade_time = clutter_effect_fade (priv->songs_temp, + priv->songs_reflect, + fade, + NULL, NULL); + g_signal_connect (fade_time, "new-frame", + G_CALLBACK (fix_clip), reflection); + +} + +void +astro_reflection_set_pixbuf (AstroReflection *reflection, + GdkPixbuf *pixbuf) +{ + AstroReflectionPrivate *priv; + gint height; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + if (CLUTTER_IS_ACTOR (priv->texture)) + clutter_actor_destroy (priv->texture); + + if (CLUTTER_IS_ACTOR (priv->reflect)) + clutter_actor_destroy (priv->reflect); + + height = gdk_pixbuf_get_height (pixbuf); + + /* Songs widget */ + if (!disc_bg) + { + disc_bg = gdk_pixbuf_new_from_file_at_size (PKGDATADIR"/disc_bg.svg", + height, height, NULL); + } + priv->songs = clutter_texture_new_from_pixbuf (disc_bg); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), priv->songs); + clutter_actor_set_size (priv->songs, height, height); + clutter_actor_set_position (priv->songs, 0, 0); + + priv->songs_reflect = clutter_reflect_texture_new (CLUTTER_TEXTURE (priv->songs), + height * 0.7); + clutter_actor_set_opacity (priv->songs_reflect, 0); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->songs_reflect); + clutter_actor_set_position (priv->songs_reflect, 0, height+1); + + /* Album cover */ + priv->texture = g_object_new (CLUTTER_TYPE_TEXTURE, + "pixbuf", pixbuf, + "tiled", FALSE, + NULL); + + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->texture); + clutter_actor_set_position (priv->texture, 0, 0); + + priv->reflect = clutter_reflect_texture_new (CLUTTER_TEXTURE (priv->texture), + height * 0.7); + clutter_actor_set_opacity (priv->reflect, 100); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->reflect); + clutter_actor_set_position (priv->reflect, 0, height+1); + + clutter_actor_set_anchor_point (CLUTTER_ACTOR (reflection), + clutter_actor_get_width (priv->texture)/2, + height/2); + + clutter_actor_show_all (CLUTTER_ACTOR (reflection)); +} + +/* GObject stuff */ +static void +astro_reflection_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AstroReflectionPrivate *priv; + + g_return_if_fail (ASTRO_IS_REFLECTION (object)); + priv = ASTRO_REFLECTION (object)->priv; + + switch (prop_id) + { + case PROP_PIXBUF: + astro_reflection_set_pixbuf (ASTRO_REFLECTION (object), + GDK_PIXBUF (g_value_get_object (value))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_reflection_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AstroReflectionPrivate *priv; + + g_return_if_fail (ASTRO_IS_REFLECTION (object)); + priv = ASTRO_REFLECTION (object)->priv; + + switch (prop_id) + { + case PROP_PIXBUF: + g_value_set_object (value, G_OBJECT (priv->pixbuf)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_reflection_class_init (AstroReflectionClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = astro_reflection_set_property; + gobject_class->get_property = astro_reflection_get_property; + + g_object_class_install_property ( + gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "Pixbuf", + "A pixbuf", + GDK_TYPE_PIXBUF, + G_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (AstroReflectionPrivate)); +} + +static void +astro_reflection_init (AstroReflection *reflection) +{ + AstroReflectionPrivate *priv; + priv = reflection->priv = ASTRO_REFLECTION_GET_PRIVATE (reflection); + + priv->texture = NULL; + priv->reflect = NULL; + + priv->songs_time = clutter_timeline_new_for_duration (600); + priv->songs_temp = clutter_effect_template_new (priv->songs_time, + clutter_sine_inc_func); +} + +ClutterActor * +astro_reflection_new (GdkPixbuf *pixbuf) +{ + ClutterActor *reflection = g_object_new (ASTRO_TYPE_REFLECTION, + "pixbuf", pixbuf, + NULL); + return CLUTTER_ACTOR (reflection); +} + diff --git a/attic/astro-desktop/applications/contacts/astro-reflection.h b/attic/astro-desktop/applications/contacts/astro-reflection.h new file mode 100644 index 0000000..1d71ea9 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-reflection.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_REFLECTION_H +#define _HAVE_ASTRO_REFLECTION_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_REFLECTION astro_reflection_get_type() + +#define ASTRO_REFLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_REFLECTION, \ + AstroReflection)) + +#define ASTRO_REFLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_REFLECTION, \ + AstroReflectionClass)) + +#define ASTRO_IS_REFLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_REFLECTION)) + +#define ASTRO_IS_REFLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_REFLECTION)) + +#define ASTRO_REFLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_REFLECTION, \ + AstroReflectionClass)) + +typedef struct _AstroReflection AstroReflection; +typedef struct _AstroReflectionClass AstroReflectionClass; +typedef struct _AstroReflectionPrivate AstroReflectionPrivate; + +struct _AstroReflection +{ + ClutterGroup parent; + + /*< private >*/ + AstroReflectionPrivate *priv; +}; + +struct _AstroReflectionClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_reflection_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_reflection_new (GdkPixbuf *pixbuf); + +void astro_reflection_set_active (AstroReflection *reflection, + gboolean active); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/astro-texture-group.c b/attic/astro-desktop/applications/contacts/astro-texture-group.c new file mode 100644 index 0000000..fa1d616 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-texture-group.c @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more group. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-texture-group.h" + +#include +#include + +#include + + +G_DEFINE_TYPE (AstroTextureGroup, astro_texture_group, CLUTTER_TYPE_GROUP); + +#define ASTRO_TEXTURE_GROUP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_TEXTURE_GROUP, AstroTextureGroupPrivate)) + +#define PADDING (CSH()/30) +#define GROUP_WIDTH (CSW()*0.45) +#define GROUP_HEIGHT (CSH()/10) + +static GdkPixbuf *bg_pixbuf = NULL; +static ClutterActor *bg_texture = NULL; + +struct _AstroTextureGroupPrivate +{ + ClutterActor *bg; + ClutterActor *label; +}; + +enum +{ + PROP_0, + + PROP_TEXT, +}; + + +/* Public Functions */ +void +astro_texture_group_set_text (AstroTextureGroup *group, const gchar *text) +{ + AstroTextureGroupPrivate *priv; + + g_return_if_fail (ASTRO_IS_TEXTURE_GROUP (group)); + g_return_if_fail (text); + priv = group->priv; + + clutter_label_set_text (CLUTTER_LABEL (priv->label), text); + + clutter_actor_set_position (priv->label, PADDING, PADDING); + + clutter_actor_set_size (priv->bg, + GROUP_WIDTH, + clutter_actor_get_height (priv->label) + (2*PADDING)); + clutter_actor_set_position (priv->bg, 0, 0); +} + +/* GObject stuff */ +static void +astro_texture_group_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AstroTextureGroupPrivate *priv; + + g_return_if_fail (ASTRO_IS_TEXTURE_GROUP (object)); + priv = ASTRO_TEXTURE_GROUP (object)->priv; + + switch (prop_id) + { + case PROP_TEXT: + astro_texture_group_set_text (ASTRO_TEXTURE_GROUP (object), + g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_texture_group_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AstroTextureGroupPrivate *priv; + + g_return_if_fail (ASTRO_IS_TEXTURE_GROUP (object)); + priv = ASTRO_TEXTURE_GROUP (object)->priv; + + switch (prop_id) + { + case PROP_TEXT: + g_value_set_string (value, + clutter_label_get_text (CLUTTER_LABEL (priv->label))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_texture_group_class_init (AstroTextureGroupClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = astro_texture_group_set_property; + gobject_class->get_property = astro_texture_group_get_property; + + g_object_class_install_property ( + gobject_class, + PROP_TEXT, + g_param_spec_string ("text", + "Text", + "The text to display", + " ", + G_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (AstroTextureGroupPrivate)); +} + +static void +astro_texture_group_init (AstroTextureGroup *group) +{ + AstroTextureGroupPrivate *priv; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + gchar *font = NULL; + + + priv = group->priv = ASTRO_TEXTURE_GROUP_GET_PRIVATE (group); + + /* The background texture */ + if (!GDK_IS_PIXBUF (bg_pixbuf)) + bg_pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR"/info_bg.png", NULL); + if (!CLUTTER_IS_ACTOR (bg_texture)) + { + bg_texture = clutter_texture_new_from_pixbuf (bg_pixbuf); + clutter_actor_show (bg_texture); + } + + priv->bg = tidy_texture_frame_new (CLUTTER_TEXTURE (bg_texture), + 15, 15, 15, 15); + clutter_container_add_actor (CLUTTER_CONTAINER (group), priv->bg); + clutter_actor_set_position (priv->bg, 0, 0); + clutter_actor_set_size (priv->bg, GROUP_WIDTH, GROUP_HEIGHT); + + + /* The label */ + font = g_strdup_printf ("Sans %d", (gint)(GROUP_HEIGHT * 0.3)); + priv->label = clutter_label_new_full (font, " ", &white); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->label), TRUE); + clutter_actor_set_width (priv->label, GROUP_WIDTH); + clutter_container_add_actor (CLUTTER_CONTAINER (group), priv->label); + clutter_actor_set_position (priv->label, PADDING, GROUP_HEIGHT /2); + g_free (font); + + clutter_actor_show_all (CLUTTER_ACTOR (group)); +} + +ClutterActor * +astro_texture_group_new () +{ + ClutterActor *group = g_object_new (ASTRO_TYPE_TEXTURE_GROUP, + NULL); + return group; +} + diff --git a/attic/astro-desktop/applications/contacts/astro-texture-group.h b/attic/astro-desktop/applications/contacts/astro-texture-group.h new file mode 100644 index 0000000..1efb939 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/astro-texture-group.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#include "astro-contacts-window.h" + +#ifndef _HAVE_ASTRO_TEXTURE_GROUP_H +#define _HAVE_ASTRO_TEXTURE_GROUP_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_TEXTURE_GROUP astro_texture_group_get_type() + +#define ASTRO_TEXTURE_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_TEXTURE_GROUP, \ + AstroTextureGroup)) + +#define ASTRO_TEXTURE_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_TEXTURE_GROUP, \ + AstroTextureGroupClass)) + +#define ASTRO_IS_TEXTURE_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_TEXTURE_GROUP)) + +#define ASTRO_IS_TEXTURE_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_TEXTURE_GROUP)) + +#define ASTRO_TEXTURE_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_TEXTURE_GROUP, \ + AstroTextureGroupClass)) + +#define ROW_HEIGHT (CSH()/11) + +typedef struct _AstroTextureGroup AstroTextureGroup; +typedef struct _AstroTextureGroupClass AstroTextureGroupClass; +typedef struct _AstroTextureGroupPrivate AstroTextureGroupPrivate; + +struct _AstroTextureGroup +{ + ClutterGroup parent; + + /*< private >*/ + AstroTextureGroupPrivate *priv; +}; + +struct _AstroTextureGroupClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_texture_group_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_texture_group_new (); +void astro_texture_group_set_text (AstroTextureGroup *group, + const gchar *text); + + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/clutter-reflect-texture.c b/attic/astro-desktop/applications/contacts/clutter-reflect-texture.c new file mode 100644 index 0000000..5689d49 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/clutter-reflect-texture.c @@ -0,0 +1,346 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB + + +/** + * SECTION:clutter-reflect-texture + * @short_description: Actor for cloning existing textures in an + * efficient way. + * + * #ClutterReflectTexture allows the cloning of existing #ClutterTexture with + * a refelction like effect. + */ + +#include + +#include "clutter-reflect-texture.h" + +enum +{ + PROP_0, + PROP_REFLECTION_HEIGHT +}; + +G_DEFINE_TYPE (ClutterReflectTexture, + clutter_reflect_texture, + CLUTTER_TYPE_CLONE_TEXTURE); + +#define CLUTTER_REFLECT_TEXTURE_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexturePrivate)) + +struct _ClutterReflectTexturePrivate +{ + gint reflection_height; +}; + +static void +reflect_texture_render_to_gl_quad (ClutterReflectTexture *ctexture, + int x1, + int y1, + int x2, + int y2) +{ + gint qx1 = 0, qx2 = 0, qy1 = 0, qy2 = 0; + gint qwidth = 0, qheight = 0; + gint x, y, i =0, lastx = 0, lasty = 0; + gint n_x_tiles, n_y_tiles; + gint pwidth, pheight, rheight; + float tx, ty, ty2 = 0.0; + +#ifdef CLUTTER_COGL_HAS_GL + + ClutterReflectTexturePrivate *priv = ctexture->priv; + ClutterActor *parent_texture = CLUTTER_ACTOR(clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(ctexture))); + + priv = ctexture->priv; + + qwidth = x2 - x1; + qheight = y2 - y1; + + rheight = priv->reflection_height; + + if (rheight > qheight) + rheight = qheight; + + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* Only paint if parent is in a state to do so */ + if (!clutter_texture_has_generated_tiles (CLUTTER_TEXTURE(parent_texture))) + return; + + clutter_texture_get_base_size (CLUTTER_TEXTURE(parent_texture), + &pwidth, &pheight); + + if (!clutter_texture_is_tiled (CLUTTER_TEXTURE(parent_texture))) + { + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), 0); + + /* NPOTS textures *always* used if extension available + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)) + { + tx = (float) pwidth; + ty = (float) pheight; + ty2 = (float)(clutter_actor_get_height (CLUTTER_ACTOR(ctexture)) * rheight) + / pheight; + ty2 = pheight - ty2; + + } + else + { + tx = (float) pwidth / clutter_util_next_p2 (pwidth); + ty = (float) pheight / clutter_util_next_p2 (pheight); + } + + qx1 = x1; qx2 = x2; + qy1 = y1; qy2 = y1 + rheight; + + glBegin (GL_QUADS); + + glColor4ub (255, 255, 255, + clutter_actor_get_opacity (CLUTTER_ACTOR(ctexture))); + + glTexCoord2f (0, ty); + glVertex2i (qx1, qy1); + + glTexCoord2f (tx, ty); + glVertex2i (qx2, qy1); + + glColor4ub (255, 255, 255, 0); + + glTexCoord2f (tx, ty2); + glVertex2i (qx2, qy2); + + glTexCoord2f (0, ty2); + glVertex2i (qx1, qy2); + + glEnd (); + + return; + } + + clutter_texture_get_n_tiles (CLUTTER_TEXTURE(parent_texture), + &n_x_tiles, &n_y_tiles); + + for (x = 0; x < n_x_tiles; x++) + { + lasty = 0; + + for (y = 0; y < n_y_tiles; y++) + { + gint actual_w, actual_h; + gint xpos, ypos, xsize, ysize, ywaste, xwaste; + + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), i); + + clutter_texture_get_x_tile_detail (CLUTTER_TEXTURE(parent_texture), + x, &xpos, &xsize, &xwaste); + + clutter_texture_get_y_tile_detail (CLUTTER_TEXTURE(parent_texture), + y, &ypos, &ysize, &ywaste); + + actual_w = xsize - xwaste; + actual_h = ysize - ywaste; + + tx = (float) actual_w / xsize; + ty = (float) actual_h / ysize; + + qx1 = x1 + lastx; + qx2 = qx1 + ((qwidth * actual_w ) / pwidth ); + + qy1 = y1 + lasty; + qy2 = qy1 + ((qheight * actual_h) / pheight ); + + glBegin (GL_QUADS); + glTexCoord2f (tx, ty); glVertex2i (qx2, qy2); + glTexCoord2f (0, ty); glVertex2i (qx1, qy2); + glTexCoord2f (0, 0); glVertex2i (qx1, qy1); + glTexCoord2f (tx, 0); glVertex2i (qx2, qy1); + glEnd (); + + lasty += qy2 - qy1; + + i++; + } + lastx += qx2 - qx1; + } +#endif + +} + +static void +clutter_reflect_texture_paint (ClutterActor *self) +{ + ClutterReflectTexturePrivate *priv; + ClutterActor *parent_texture; + gint x1, y1, x2, y2; + GLenum target_type; + +#ifdef CLUTTER_COGL_HAS_GL + + priv = CLUTTER_REFLECT_TEXTURE (self)->priv; + + /* no need to paint stuff if we don't have a texture to reflect */ + if (!clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))) + return; + + /* parent texture may have been hidden, there for need to make sure its + * realised with resources available. + */ + parent_texture = CLUTTER_ACTOR (clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))); + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* FIXME: figure out nicer way of getting at this info... + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE) && + clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture)) == FALSE) + { + target_type = CGL_TEXTURE_RECTANGLE_ARB; + cogl_enable (CGL_ENABLE_TEXTURE_RECT | CGL_ENABLE_BLEND); + } + else + { + target_type = CGL_TEXTURE_2D; + cogl_enable (CGL_ENABLE_TEXTURE_2D|CGL_ENABLE_BLEND); + } + + cogl_push_matrix (); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ub (255, 255, 255, clutter_actor_get_opacity (self)); + + clutter_actor_get_coords (self, &x1, &y1, &x2, &y2); + + /* Parent paint translated us into position */ + reflect_texture_render_to_gl_quad (CLUTTER_REFLECT_TEXTURE (self), + 0, 0, x2 - x1, y2 - y1); + + cogl_pop_matrix (); +#endif +} + + + +static void +clutter_reflect_texture_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + priv->reflection_height = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + g_value_set_int (value, priv->reflection_height); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_class_init (ClutterReflectTextureClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = clutter_reflect_texture_paint; + + gobject_class->set_property = clutter_reflect_texture_set_property; + gobject_class->get_property = clutter_reflect_texture_get_property; + + g_object_class_install_property (gobject_class, + PROP_REFLECTION_HEIGHT, + g_param_spec_int ("reflection-height", + "Reflection Height", + "", + 0, G_MAXINT, + 0, + (G_PARAM_CONSTRUCT | CLUTTER_PARAM_READWRITE))); + + g_type_class_add_private (gobject_class, sizeof (ClutterReflectTexturePrivate)); +} + +static void +clutter_reflect_texture_init (ClutterReflectTexture *self) +{ + ClutterReflectTexturePrivate *priv; + + self->priv = priv = CLUTTER_REFLECT_TEXTURE_GET_PRIVATE (self); + priv->reflection_height = 100; +} + +/** + * clutter_reflect_texture_new: + * @texture: a #ClutterTexture or %NULL + * + * Creates an efficient 'reflect' of a pre-existing texture if which it + * shares the underlying pixbuf data. + * + * You can use clutter_reflect_texture_set_parent_texture() to change the + * parent texture to be reflectd. + * + * Return value: the newly created #ClutterReflectTexture + */ +ClutterActor * +clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height) +{ + g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL); + + return g_object_new (CLUTTER_TYPE_REFLECT_TEXTURE, + "parent-texture", texture, + "reflection-height", reflection_height, + NULL); +} + diff --git a/attic/astro-desktop/applications/contacts/clutter-reflect-texture.h b/attic/astro-desktop/applications/contacts/clutter-reflect-texture.h new file mode 100644 index 0000000..9ba7353 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/clutter-reflect-texture.h @@ -0,0 +1,84 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_REFLECT_TEXTURE_H +#define _HAVE_CLUTTER_REFLECT_TEXTURE_H + +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_REFLECT_TEXTURE (clutter_reflect_texture_get_type ()) + +#define CLUTTER_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexture)) + +#define CLUTTER_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +#define CLUTTER_IS_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_IS_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_REFLECT_TEXTURE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +typedef struct _ClutterReflectTexture ClutterReflectTexture; +typedef struct _ClutterReflectTexturePrivate ClutterReflectTexturePrivate; +typedef struct _ClutterReflectTextureClass ClutterReflectTextureClass; + +struct _ClutterReflectTexture +{ + ClutterCloneTexture parent; + + /*< priv >*/ + ClutterReflectTexturePrivate *priv; +}; + +struct _ClutterReflectTextureClass +{ + ClutterCloneTextureClass parent_class; + + /* padding for future expansion */ + void (*_clutter_reflect_1) (void); + void (*_clutter_reflect_2) (void); + void (*_clutter_reflect_3) (void); + void (*_clutter_reflect_4) (void); +}; + +GType clutter_reflect_texture_get_type (void) G_GNUC_CONST; + +ClutterActor * clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/contacts/init.c b/attic/astro-desktop/applications/contacts/init.c new file mode 100644 index 0000000..d693877 --- /dev/null +++ b/attic/astro-desktop/applications/contacts/init.c @@ -0,0 +1,26 @@ + +#include +#include +#include +#include + +#include "astro-contacts.h" + + +AstroApplication * +astro_application_factory_init () +{ + AstroApplication *app; + GdkPixbuf *pixbuf; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/icons/contacts.png", + ASTRO_APPICON_SIZE(), ASTRO_APPICON_SIZE(), + TRUE, + NULL); + + app = astro_contacts_new ("Contacts", pixbuf); + + g_debug ("Contacts application loaded\n"); + + return app; +} diff --git a/attic/astro-desktop/applications/example/Makefile.am b/attic/astro-desktop/applications/example/Makefile.am new file mode 100644 index 0000000..5e008b9 --- /dev/null +++ b/attic/astro-desktop/applications/example/Makefile.am @@ -0,0 +1,26 @@ +INCLUDES =\ + -I$(srcdir) \ + $(DEPS_CFLAGS) \ + $(GCC_CFLAGS) \ + -DPREFIX=\"$(prefix)\" \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DLIBDIR=\"$(libdir)\" \ + -I$(top_builddir)/libastro-desktop + +APP_SOURCES = \ + init.c \ + astro-example.c + +APP_LDADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libastro-desktop/libastro-desktop.la + + +examplelibdir = $(libdir)/astro-desktop/apps +examplelib_LTLIBRARIES = example.la +example_la_SOURCES = $(APP_SOURCES) +example_la_LIBADD = $(APP_LDADD) +example_la_LDFLAGS = -module -avoid-version +example_la_CFLAGS = + diff --git a/attic/astro-desktop/applications/example/astro-example.c b/attic/astro-desktop/applications/example/astro-example.c new file mode 100644 index 0000000..fadb7c6 --- /dev/null +++ b/attic/astro-desktop/applications/example/astro-example.c @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-example.h" + +#include +#include +#include + +G_DEFINE_TYPE (AstroExample2, astro_example2, ASTRO_TYPE_APPLICATION); + +#define ASTRO_EXAMPLE2_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_EXAMPLE2, AstroExample2Private)) + +struct _AstroExample2Private +{ + const gchar *title; + GdkPixbuf *icon; + ClutterActor *window; +}; + +/* Public Functions */ + +/* Private functions */ +static const gchar * +get_title (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_EXAMPLE2 (app), NULL); + + return ASTRO_EXAMPLE2 (app)->priv->title; +} + +static void +set_title (AstroApplication *app, const gchar *title) +{ + g_return_if_fail (ASTRO_IS_EXAMPLE2 (app)); + g_return_if_fail (title); + + ASTRO_EXAMPLE2 (app)->priv->title = g_strdup (title); +} + +static GdkPixbuf * +get_icon (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_EXAMPLE2 (app), NULL); + + return ASTRO_EXAMPLE2 (app)->priv->icon; +} + +static void +set_icon (AstroApplication *app, GdkPixbuf *icon) +{ + g_return_if_fail (ASTRO_IS_EXAMPLE2 (app)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + ASTRO_EXAMPLE2 (app)->priv->icon = icon; +} + +static AstroWindow * +get_window (AstroApplication *app) +{ + AstroExample2Private *priv; + ClutterColor color = { 0xff, 0xff, 0x22, 0x22 }; + ClutterActor *window = NULL, *rect; + + g_return_val_if_fail (ASTRO_IS_EXAMPLE2 (app), NULL); + priv = ASTRO_EXAMPLE2 (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + window = priv->window; + else + { + window = astro_window_new (); + + rect = clutter_rectangle_new_with_color (&color); + clutter_container_add_actor (CLUTTER_CONTAINER (window), rect); + clutter_actor_set_size (rect, CSW (), CSH()-ASTRO_PANEL_HEIGHT()); + clutter_actor_show (rect); + } + + ASTRO_EXAMPLE2 (app)->priv->window = window; + + return ASTRO_WINDOW (window); +} + +static void +close (AstroApplication *app) +{ + AstroExample2Private *priv; + + g_return_if_fail (ASTRO_IS_EXAMPLE2 (app)); + priv = ASTRO_EXAMPLE2 (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + clutter_actor_destroy (priv->window); +} + +/* GObject stuff */ +static void +astro_example2_class_init (AstroExample2Class *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + AstroApplicationClass *app_class = ASTRO_APPLICATION_CLASS (klass); + + app_class->get_title = get_title; + app_class->set_title = set_title; + app_class->get_icon = get_icon; + app_class->set_icon = set_icon; + app_class->get_window = get_window; + app_class->close = close; + + g_type_class_add_private (gobject_class, sizeof (AstroExample2Private)); +} + +static void +astro_example2_init (AstroExample2 *example2) +{ + AstroExample2Private *priv; + priv = example2->priv = ASTRO_EXAMPLE2_GET_PRIVATE (example2); + + priv->title = NULL; + priv->icon = NULL; + priv->window = NULL; +} + +AstroApplication * +astro_example2_new (const gchar *title, GdkPixbuf *icon) +{ + AstroApplication *example2 = g_object_new (ASTRO_TYPE_EXAMPLE2, + NULL); + + astro_application_set_title (example2, title); + astro_application_set_icon (example2, icon); + + return example2; +} + diff --git a/attic/astro-desktop/applications/example/astro-example.h b/attic/astro-desktop/applications/example/astro-example.h new file mode 100644 index 0000000..a452ecb --- /dev/null +++ b/attic/astro-desktop/applications/example/astro-example.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_EXAMPLE2_H +#define _HAVE_ASTRO_EXAMPLE2_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_EXAMPLE2 astro_example2_get_type() + +#define ASTRO_EXAMPLE2(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_EXAMPLE2, \ + AstroExample2)) + +#define ASTRO_EXAMPLE2_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_EXAMPLE2, \ + AstroExample2Class)) + +#define ASTRO_IS_EXAMPLE2(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_EXAMPLE2)) + +#define ASTRO_IS_EXAMPLE2_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_EXAMPLE2)) + +#define ASTRO_EXAMPLE2_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_EXAMPLE2, \ + AstroExample2Class)) + +typedef struct _AstroExample2 AstroExample2; +typedef struct _AstroExample2Class AstroExample2Class; +typedef struct _AstroExample2Private AstroExample2Private; + +struct _AstroExample2 +{ + AstroApplication parent; + + /*< private >*/ + AstroExample2Private *priv; +}; + +struct _AstroExample2Class +{ + /*< private >*/ + AstroApplicationClass parent_class; +}; + +GType astro_example2_get_type (void) G_GNUC_CONST; + +AstroApplication * astro_example2_new (const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/example/init.c b/attic/astro-desktop/applications/example/init.c new file mode 100644 index 0000000..4d54fdd --- /dev/null +++ b/attic/astro-desktop/applications/example/init.c @@ -0,0 +1,25 @@ + +#include +#include +#include + +#include "astro-example.h" + + +AstroApplication * +astro_application_factory_init () +{ + AstroApplication *app; + GdkPixbuf *pixbuf; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/icons/exec.png", + ASTRO_APPICON_SIZE(), ASTRO_APPICON_SIZE(), + TRUE, + NULL); + + app = astro_example2_new ("Example Application", pixbuf); + + g_debug ("Example application loaded\n"); + + return app; +} diff --git a/attic/astro-desktop/applications/images/Makefile.am b/attic/astro-desktop/applications/images/Makefile.am new file mode 100644 index 0000000..1eee4a5 --- /dev/null +++ b/attic/astro-desktop/applications/images/Makefile.am @@ -0,0 +1,28 @@ +INCLUDES =\ + -I$(srcdir) \ + $(DEPS_CFLAGS) \ + $(GCC_CFLAGS) \ + -DPREFIX=\"$(prefix)\" \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DLIBDIR=\"$(libdir)\" \ + -I$(top_builddir)/libastro-desktop + +APP_SOURCES = \ + init.c \ + astro-images.c \ + astro-images-window.c \ + clutter-reflect-texture.c + +APP_LDADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libastro-desktop/libastro-desktop.la + + +imageslibdir = $(libdir)/astro-desktop/apps +imageslib_LTLIBRARIES = images.la +images_la_SOURCES = $(APP_SOURCES) +images_la_LIBADD = $(APP_LDADD) +images_la_LDFLAGS = -module -avoid-version +images_la_CFLAGS = + diff --git a/attic/astro-desktop/applications/images/astro-images-window.c b/attic/astro-desktop/applications/images/astro-images-window.c new file mode 100644 index 0000000..7919147 --- /dev/null +++ b/attic/astro-desktop/applications/images/astro-images-window.c @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-images-window.h" + +#include +#include +#include +#include +#include +#include +#include + +G_DEFINE_TYPE (AstroImagesWindow, astro_images_window, ASTRO_TYPE_WINDOW); + +#define ASTRO_IMAGES_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ASTRO_TYPE_IMAGES_WINDOW, AstroImagesWindowPrivate)) + +struct _AstroImagesWindowPrivate +{ + gint i; +}; + + + +/* GObject stuff */ +static void +astro_images_window_class_init (AstroImagesWindowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroImagesWindowPrivate)); +} + +static void +astro_images_window_init (AstroImagesWindow *window) +{ + AstroImagesWindowPrivate *priv; + + priv = window->priv = ASTRO_IMAGES_WINDOW_GET_PRIVATE (window); + + clutter_actor_set_position (CLUTTER_ACTOR (window), 0, 0); + clutter_actor_show_all (CLUTTER_ACTOR (window)); +} + +AstroWindow * +astro_images_window_new (void) +{ + AstroWindow *images_window = g_object_new (ASTRO_TYPE_IMAGES_WINDOW, + NULL); + + return images_window; +} diff --git a/attic/astro-desktop/applications/images/astro-images-window.h b/attic/astro-desktop/applications/images/astro-images-window.h new file mode 100644 index 0000000..f3995ea --- /dev/null +++ b/attic/astro-desktop/applications/images/astro-images-window.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_IMAGES_WINDOW_H +#define _HAVE_ASTRO_IMAGES_WINDOW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_IMAGES_WINDOW astro_images_window_get_type() + +#define ASTRO_IMAGES_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_IMAGES_WINDOW, \ + AstroImagesWindow)) + +#define ASTRO_IMAGES_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_IMAGES_WINDOW, \ + AstroImagesWindowClass)) + +#define ASTRO_IS_IMAGES_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_IMAGES_WINDOW)) + +#define ASTRO_IS_IMAGES_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_IMAGES_WINDOW)) + +#define ASTRO_IMAGES_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_IMAGES_WINDOW, \ + AstroImagesWindowClass)) + +typedef struct _AstroImagesWindow AstroImagesWindow; +typedef struct _AstroImagesWindowClass AstroImagesWindowClass; +typedef struct _AstroImagesWindowPrivate AstroImagesWindowPrivate; + +struct _AstroImagesWindow +{ + AstroWindow parent; + + /*< private >*/ + AstroImagesWindowPrivate *priv; +}; + +struct _AstroImagesWindowClass +{ + /*< private >*/ + AstroWindowClass parent_class; +}; + +GType astro_images_window_get_type (void) G_GNUC_CONST; + +AstroWindow * astro_images_window_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/images/astro-images.c b/attic/astro-desktop/applications/images/astro-images.c new file mode 100644 index 0000000..e4e8d47 --- /dev/null +++ b/attic/astro-desktop/applications/images/astro-images.c @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-images.h" + +#include +#include +#include + +#include "astro-images-window.h" + +G_DEFINE_TYPE (AstroImages, astro_images, ASTRO_TYPE_APPLICATION); + +#define ASTRO_IMAGES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_IMAGES, AstroImagesPrivate)) + +struct _AstroImagesPrivate +{ + const gchar *title; + GdkPixbuf *icon; + ClutterActor *window; +}; + +/* Public Functions */ + +/* Private functions */ +static const gchar * +get_title (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_IMAGES (app), NULL); + + return ASTRO_IMAGES (app)->priv->title; +} + +static void +set_title (AstroApplication *app, const gchar *title) +{ + g_return_if_fail (ASTRO_IS_IMAGES (app)); + g_return_if_fail (title); + + ASTRO_IMAGES (app)->priv->title = g_strdup (title); +} + +static GdkPixbuf * +get_icon (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_IMAGES (app), NULL); + + return ASTRO_IMAGES (app)->priv->icon; +} + +static void +set_icon (AstroApplication *app, GdkPixbuf *icon) +{ + g_return_if_fail (ASTRO_IS_IMAGES (app)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + ASTRO_IMAGES (app)->priv->icon = icon; +} + +static AstroWindow * +get_window (AstroApplication *app) +{ + AstroImagesPrivate *priv; + ClutterActor *window = NULL; + + g_return_val_if_fail (ASTRO_IS_IMAGES (app), NULL); + priv = ASTRO_IMAGES (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + window = priv->window; + else + { + window = CLUTTER_ACTOR (astro_images_window_new ()); + } + + ASTRO_IMAGES (app)->priv->window = window; + + return ASTRO_WINDOW (window); +} + +static void +close (AstroApplication *app) +{ + AstroImagesPrivate *priv; + + g_return_if_fail (ASTRO_IS_IMAGES (app)); + priv = ASTRO_IMAGES (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + clutter_actor_destroy (priv->window); +} + +/* GObject stuff */ +static void +astro_images_class_init (AstroImagesClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + AstroApplicationClass *app_class = ASTRO_APPLICATION_CLASS (klass); + + app_class->get_title = get_title; + app_class->set_title = set_title; + app_class->get_icon = get_icon; + app_class->set_icon = set_icon; + app_class->get_window = get_window; + app_class->close = close; + + g_type_class_add_private (gobject_class, sizeof (AstroImagesPrivate)); +} + +static void +astro_images_init (AstroImages *images) +{ + AstroImagesPrivate *priv; + priv = images->priv = ASTRO_IMAGES_GET_PRIVATE (images); + + priv->title = NULL; + priv->icon = NULL; + priv->window = NULL; +} + +AstroApplication * +astro_images_new (const gchar *title, GdkPixbuf *icon) +{ + AstroApplication *images = g_object_new (ASTRO_TYPE_IMAGES, + NULL); + + astro_application_set_title (images, title); + astro_application_set_icon (images, icon); + + return images; +} + diff --git a/attic/astro-desktop/applications/images/astro-images.h b/attic/astro-desktop/applications/images/astro-images.h new file mode 100644 index 0000000..012d58b --- /dev/null +++ b/attic/astro-desktop/applications/images/astro-images.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_IMAGES_H +#define _HAVE_ASTRO_IMAGES_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_IMAGES astro_images_get_type() + +#define ASTRO_IMAGES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_IMAGES, \ + AstroImages)) + +#define ASTRO_IMAGES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_IMAGES, \ + AstroImagesClass)) + +#define ASTRO_IS_IMAGES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_IMAGES)) + +#define ASTRO_IS_IMAGES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_IMAGES)) + +#define ASTRO_IMAGES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_IMAGES, \ + AstroImagesClass)) + +typedef struct _AstroImages AstroImages; +typedef struct _AstroImagesClass AstroImagesClass; +typedef struct _AstroImagesPrivate AstroImagesPrivate; + +struct _AstroImages +{ + AstroApplication parent; + + /*< private >*/ + AstroImagesPrivate *priv; +}; + +struct _AstroImagesClass +{ + /*< private >*/ + AstroApplicationClass parent_class; +}; + +GType astro_images_get_type (void) G_GNUC_CONST; + +AstroApplication * astro_images_new (const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/images/clutter-reflect-texture.c b/attic/astro-desktop/applications/images/clutter-reflect-texture.c new file mode 100644 index 0000000..5689d49 --- /dev/null +++ b/attic/astro-desktop/applications/images/clutter-reflect-texture.c @@ -0,0 +1,346 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB + + +/** + * SECTION:clutter-reflect-texture + * @short_description: Actor for cloning existing textures in an + * efficient way. + * + * #ClutterReflectTexture allows the cloning of existing #ClutterTexture with + * a refelction like effect. + */ + +#include + +#include "clutter-reflect-texture.h" + +enum +{ + PROP_0, + PROP_REFLECTION_HEIGHT +}; + +G_DEFINE_TYPE (ClutterReflectTexture, + clutter_reflect_texture, + CLUTTER_TYPE_CLONE_TEXTURE); + +#define CLUTTER_REFLECT_TEXTURE_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexturePrivate)) + +struct _ClutterReflectTexturePrivate +{ + gint reflection_height; +}; + +static void +reflect_texture_render_to_gl_quad (ClutterReflectTexture *ctexture, + int x1, + int y1, + int x2, + int y2) +{ + gint qx1 = 0, qx2 = 0, qy1 = 0, qy2 = 0; + gint qwidth = 0, qheight = 0; + gint x, y, i =0, lastx = 0, lasty = 0; + gint n_x_tiles, n_y_tiles; + gint pwidth, pheight, rheight; + float tx, ty, ty2 = 0.0; + +#ifdef CLUTTER_COGL_HAS_GL + + ClutterReflectTexturePrivate *priv = ctexture->priv; + ClutterActor *parent_texture = CLUTTER_ACTOR(clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(ctexture))); + + priv = ctexture->priv; + + qwidth = x2 - x1; + qheight = y2 - y1; + + rheight = priv->reflection_height; + + if (rheight > qheight) + rheight = qheight; + + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* Only paint if parent is in a state to do so */ + if (!clutter_texture_has_generated_tiles (CLUTTER_TEXTURE(parent_texture))) + return; + + clutter_texture_get_base_size (CLUTTER_TEXTURE(parent_texture), + &pwidth, &pheight); + + if (!clutter_texture_is_tiled (CLUTTER_TEXTURE(parent_texture))) + { + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), 0); + + /* NPOTS textures *always* used if extension available + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)) + { + tx = (float) pwidth; + ty = (float) pheight; + ty2 = (float)(clutter_actor_get_height (CLUTTER_ACTOR(ctexture)) * rheight) + / pheight; + ty2 = pheight - ty2; + + } + else + { + tx = (float) pwidth / clutter_util_next_p2 (pwidth); + ty = (float) pheight / clutter_util_next_p2 (pheight); + } + + qx1 = x1; qx2 = x2; + qy1 = y1; qy2 = y1 + rheight; + + glBegin (GL_QUADS); + + glColor4ub (255, 255, 255, + clutter_actor_get_opacity (CLUTTER_ACTOR(ctexture))); + + glTexCoord2f (0, ty); + glVertex2i (qx1, qy1); + + glTexCoord2f (tx, ty); + glVertex2i (qx2, qy1); + + glColor4ub (255, 255, 255, 0); + + glTexCoord2f (tx, ty2); + glVertex2i (qx2, qy2); + + glTexCoord2f (0, ty2); + glVertex2i (qx1, qy2); + + glEnd (); + + return; + } + + clutter_texture_get_n_tiles (CLUTTER_TEXTURE(parent_texture), + &n_x_tiles, &n_y_tiles); + + for (x = 0; x < n_x_tiles; x++) + { + lasty = 0; + + for (y = 0; y < n_y_tiles; y++) + { + gint actual_w, actual_h; + gint xpos, ypos, xsize, ysize, ywaste, xwaste; + + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), i); + + clutter_texture_get_x_tile_detail (CLUTTER_TEXTURE(parent_texture), + x, &xpos, &xsize, &xwaste); + + clutter_texture_get_y_tile_detail (CLUTTER_TEXTURE(parent_texture), + y, &ypos, &ysize, &ywaste); + + actual_w = xsize - xwaste; + actual_h = ysize - ywaste; + + tx = (float) actual_w / xsize; + ty = (float) actual_h / ysize; + + qx1 = x1 + lastx; + qx2 = qx1 + ((qwidth * actual_w ) / pwidth ); + + qy1 = y1 + lasty; + qy2 = qy1 + ((qheight * actual_h) / pheight ); + + glBegin (GL_QUADS); + glTexCoord2f (tx, ty); glVertex2i (qx2, qy2); + glTexCoord2f (0, ty); glVertex2i (qx1, qy2); + glTexCoord2f (0, 0); glVertex2i (qx1, qy1); + glTexCoord2f (tx, 0); glVertex2i (qx2, qy1); + glEnd (); + + lasty += qy2 - qy1; + + i++; + } + lastx += qx2 - qx1; + } +#endif + +} + +static void +clutter_reflect_texture_paint (ClutterActor *self) +{ + ClutterReflectTexturePrivate *priv; + ClutterActor *parent_texture; + gint x1, y1, x2, y2; + GLenum target_type; + +#ifdef CLUTTER_COGL_HAS_GL + + priv = CLUTTER_REFLECT_TEXTURE (self)->priv; + + /* no need to paint stuff if we don't have a texture to reflect */ + if (!clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))) + return; + + /* parent texture may have been hidden, there for need to make sure its + * realised with resources available. + */ + parent_texture = CLUTTER_ACTOR (clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))); + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* FIXME: figure out nicer way of getting at this info... + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE) && + clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture)) == FALSE) + { + target_type = CGL_TEXTURE_RECTANGLE_ARB; + cogl_enable (CGL_ENABLE_TEXTURE_RECT | CGL_ENABLE_BLEND); + } + else + { + target_type = CGL_TEXTURE_2D; + cogl_enable (CGL_ENABLE_TEXTURE_2D|CGL_ENABLE_BLEND); + } + + cogl_push_matrix (); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ub (255, 255, 255, clutter_actor_get_opacity (self)); + + clutter_actor_get_coords (self, &x1, &y1, &x2, &y2); + + /* Parent paint translated us into position */ + reflect_texture_render_to_gl_quad (CLUTTER_REFLECT_TEXTURE (self), + 0, 0, x2 - x1, y2 - y1); + + cogl_pop_matrix (); +#endif +} + + + +static void +clutter_reflect_texture_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + priv->reflection_height = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + g_value_set_int (value, priv->reflection_height); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_class_init (ClutterReflectTextureClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = clutter_reflect_texture_paint; + + gobject_class->set_property = clutter_reflect_texture_set_property; + gobject_class->get_property = clutter_reflect_texture_get_property; + + g_object_class_install_property (gobject_class, + PROP_REFLECTION_HEIGHT, + g_param_spec_int ("reflection-height", + "Reflection Height", + "", + 0, G_MAXINT, + 0, + (G_PARAM_CONSTRUCT | CLUTTER_PARAM_READWRITE))); + + g_type_class_add_private (gobject_class, sizeof (ClutterReflectTexturePrivate)); +} + +static void +clutter_reflect_texture_init (ClutterReflectTexture *self) +{ + ClutterReflectTexturePrivate *priv; + + self->priv = priv = CLUTTER_REFLECT_TEXTURE_GET_PRIVATE (self); + priv->reflection_height = 100; +} + +/** + * clutter_reflect_texture_new: + * @texture: a #ClutterTexture or %NULL + * + * Creates an efficient 'reflect' of a pre-existing texture if which it + * shares the underlying pixbuf data. + * + * You can use clutter_reflect_texture_set_parent_texture() to change the + * parent texture to be reflectd. + * + * Return value: the newly created #ClutterReflectTexture + */ +ClutterActor * +clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height) +{ + g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL); + + return g_object_new (CLUTTER_TYPE_REFLECT_TEXTURE, + "parent-texture", texture, + "reflection-height", reflection_height, + NULL); +} + diff --git a/attic/astro-desktop/applications/images/clutter-reflect-texture.h b/attic/astro-desktop/applications/images/clutter-reflect-texture.h new file mode 100644 index 0000000..9ba7353 --- /dev/null +++ b/attic/astro-desktop/applications/images/clutter-reflect-texture.h @@ -0,0 +1,84 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_REFLECT_TEXTURE_H +#define _HAVE_CLUTTER_REFLECT_TEXTURE_H + +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_REFLECT_TEXTURE (clutter_reflect_texture_get_type ()) + +#define CLUTTER_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexture)) + +#define CLUTTER_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +#define CLUTTER_IS_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_IS_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_REFLECT_TEXTURE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +typedef struct _ClutterReflectTexture ClutterReflectTexture; +typedef struct _ClutterReflectTexturePrivate ClutterReflectTexturePrivate; +typedef struct _ClutterReflectTextureClass ClutterReflectTextureClass; + +struct _ClutterReflectTexture +{ + ClutterCloneTexture parent; + + /*< priv >*/ + ClutterReflectTexturePrivate *priv; +}; + +struct _ClutterReflectTextureClass +{ + ClutterCloneTextureClass parent_class; + + /* padding for future expansion */ + void (*_clutter_reflect_1) (void); + void (*_clutter_reflect_2) (void); + void (*_clutter_reflect_3) (void); + void (*_clutter_reflect_4) (void); +}; + +GType clutter_reflect_texture_get_type (void) G_GNUC_CONST; + +ClutterActor * clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/images/init.c b/attic/astro-desktop/applications/images/init.c new file mode 100644 index 0000000..4fab13f --- /dev/null +++ b/attic/astro-desktop/applications/images/init.c @@ -0,0 +1,26 @@ + +#include +#include +#include +#include + +#include "astro-images.h" + + +AstroApplication * +astro_application_factory_init () +{ + AstroApplication *app; + GdkPixbuf *pixbuf; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/icons/images.png", + ASTRO_APPICON_SIZE(), ASTRO_APPICON_SIZE(), + TRUE, + NULL); + + app = astro_images_new ("Images", pixbuf); + + g_debug ("Images application loaded\n"); + + return app; +} diff --git a/attic/astro-desktop/applications/music/Makefile.am b/attic/astro-desktop/applications/music/Makefile.am new file mode 100644 index 0000000..98b669f --- /dev/null +++ b/attic/astro-desktop/applications/music/Makefile.am @@ -0,0 +1,30 @@ +INCLUDES =\ + -I$(srcdir) \ + $(DEPS_CFLAGS) \ + $(GCC_CFLAGS) \ + -DPREFIX=\"$(prefix)\" \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DLIBDIR=\"$(libdir)\" \ + -I$(top_builddir)/libastro-desktop + +APP_SOURCES = \ + init.c \ + astro-music.c \ + astro-music-window.c \ + astro-reflection.c \ + astro-songs.c \ + clutter-reflect-texture.c + +APP_LDADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libastro-desktop/libastro-desktop.la + + +musiclibdir = $(libdir)/astro-desktop/apps +musiclib_LTLIBRARIES = music.la +music_la_SOURCES = $(APP_SOURCES) +music_la_LIBADD = $(APP_LDADD) +music_la_LDFLAGS = -module -avoid-version +music_la_CFLAGS = + diff --git a/attic/astro-desktop/applications/music/astro-music-window.c b/attic/astro-desktop/applications/music/astro-music-window.c new file mode 100644 index 0000000..8a25165 --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-music-window.c @@ -0,0 +1,491 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-music-window.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "astro-reflection.h" + +G_DEFINE_TYPE (AstroMusicWindow, astro_music_window, ASTRO_TYPE_WINDOW); + +#define ASTRO_MUSIC_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_MUSIC_WINDOW, AstroMusicWindowPrivate)) + +#define ALBUM_DIR PKGDATADIR"/albums" + +struct _AstroMusicWindowPrivate +{ + GList *covers; + + ClutterActor *albums; + ClutterActor *label; + + ClutterActor *player; + + gint active; + gboolean activated; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; +}; + +/* Public Functions */ + +/* Private functions */ +typedef struct +{ + gint x; + gfloat scale; + +} CoverTrans; + +static void +ensure_layout (AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + GList *c; + gint i = 0; + + priv = window->priv; + + c = priv->covers; + for (c=c; c; c = c->next) + { + ClutterActor *cover = c->data; + CoverTrans *trans = g_object_get_data (G_OBJECT (cover), "trans"); + + if (i == priv->active) + { + trans->x = CSW ()/2; + trans->scale = 1.0; + } + else if (i > priv->active) + { + gint diff; + + diff = i - priv->active; + trans->x = (CSW()/2) + ((CSW()/4)*diff); + if (diff > 3) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (3-diff)/3); + } + else + { + gint diff; + + diff = priv->active - i; + trans->x = (CSW()/2) - ((CSW()/4)*diff); + if (diff > 3) + trans->scale = 0.4; + else + trans->scale = 0.4 + (0.4 * (3-diff)/3); + } + + i++; + } +} + +static void +astro_music_window_advance (AstroMusicWindow *window, gint n) +{ + AstroMusicWindowPrivate *priv; + gint new_active; + + g_return_if_fail (ASTRO_IS_MUSIC_WINDOW (window)); + priv = window->priv; + + new_active = priv->active + n; + if (new_active < 0 || + new_active > (clutter_group_get_n_children (CLUTTER_GROUP (priv->albums))-1)) + return; + + priv->active += n; + ensure_layout (window); + + if (clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_rewind (priv->timeline); + else + clutter_timeline_start (priv->timeline); + +} + +static void +on_cover_active_completed (ClutterTimeline *timeline, + AstroReflection *reflection) +{ + astro_reflection_set_active (reflection, TRUE); + + g_signal_handlers_disconnect_by_func (timeline, + on_cover_active_completed, + reflection); +} + +static void +on_cover_activated (AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + ClutterActor *cover; + GList *children; + CoverTrans *trans; + + g_return_if_fail (ASTRO_IS_MUSIC_WINDOW (window)); + priv = window->priv; + + children = priv->covers; + cover = g_list_nth_data (children, priv->active); + + if (!CLUTTER_IS_ACTOR (cover)) + return; + + trans = g_object_get_data (G_OBJECT (cover), "trans"); + if (!trans) + return; + + priv->activated = TRUE; + + trans->scale = ALBUM_SCALE; + trans->x = (CSW()/2) - ((ALBUM_SIZE * ALBUM_SCALE) * 0.5); + + clutter_actor_raise_top (cover); + + if (clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_rewind (priv->timeline); + else + clutter_timeline_start (priv->timeline); + + g_signal_connect (priv->timeline, "completed", + G_CALLBACK (on_cover_active_completed), cover); +} + +static gboolean +on_cover_clicked (ClutterActor *cover, + ClutterEvent *event, + AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + GList *children; + gint n; + + g_return_val_if_fail (ASTRO_IS_MUSIC_WINDOW (window), FALSE); + priv = window->priv; + + children = priv->covers; + n = g_list_index (children, cover); + + if (priv->activated) + { + if (event->button.x > CSW()/2) + return FALSE; + astro_reflection_set_active (g_list_nth_data (priv->covers, + priv->active), FALSE); + priv->activated = FALSE; + + astro_music_window_advance (window, 0); + return FALSE; + } + + if (n == priv->active) + on_cover_activated (window); + else + { + gint diff; + if (n > priv->active) + diff = (n-priv->active); + else + diff = (priv->active - n) * -1; + astro_music_window_advance (window, diff); + } + + return FALSE; +} + +static ClutterActor * +make_cover (const gchar *filename) +{ + GdkPixbuf *pixbuf; + ClutterActor *texture; + + pixbuf = gdk_pixbuf_new_from_file_at_size (filename, + ALBUM_SIZE, ALBUM_SIZE, + NULL); + if (!pixbuf) + return NULL; + + texture = astro_reflection_new (pixbuf); + + g_object_set_data (G_OBJECT (texture), "trans", g_new0 (CoverTrans, 1)); + return texture; +} + +static void +load_details (ClutterActor *cover, const gchar *leaf) +{ + gchar *details; + gint i; + + details = g_strndup (leaf, strlen (leaf)-4); + + for (i = 0; i < strlen (details); i++) + if (details[i] == '_') details[i] = ' '; + + clutter_actor_set_name (cover, details); + g_free (details); +} + +static void +load_albums (AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + GDir *dir; + const gchar *leaf; + GError *error = NULL; + gint offset = CSW()*2; + + priv = window->priv; + + dir = g_dir_open (ALBUM_DIR, 0, &error); + if (error) + { + g_warning ("Cannot load albums: %s", error->message); + g_error_free (error); + return; + } + + while ((leaf = g_dir_read_name (dir))) + { + ClutterActor *cover; + gchar *filename; + + if (!g_str_has_suffix (leaf, ".jpg")) + continue; + + filename = g_build_filename (ALBUM_DIR, leaf, NULL); + cover = make_cover (filename); + + if (!CLUTTER_IS_ACTOR (cover)) + { + g_free (filename); + continue; + } + load_details (cover, leaf); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->albums), cover); + clutter_actor_set_position (cover, offset, 0); + clutter_actor_show_all (cover); + clutter_actor_set_reactive (cover, TRUE); + g_signal_connect (cover, "button-release-event", + G_CALLBACK (on_cover_clicked), window); + + priv->covers = g_list_append (priv->covers, cover); + + g_free (filename); + + offset += ALBUM_SIZE * 0.9; + } +} + +static void +astro_music_alpha (ClutterBehaviour *behave, + guint32 alpha_value, + AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + GList *c; + + g_return_if_fail (ASTRO_IS_MUSIC_WINDOW (window)); + priv = window->priv; + + c = priv->covers; + for (c=c; c; c = c->next) + { + ClutterActor *cover = c->data; + CoverTrans *trans = g_object_get_data (G_OBJECT (cover), "trans"); + gdouble cscale, dscale; + gint currentx, diffx; + + currentx = clutter_actor_get_x (cover); + if (currentx > trans->x) + diffx = (currentx - trans->x) * -1; + else + diffx = trans->x - currentx; + + clutter_actor_set_x (cover, currentx + + (gint)((diffx*alpha_value)/CLUTTER_ALPHA_MAX_ALPHA)); + + clutter_actor_get_scale (cover, &cscale, &cscale); + if (cscale > trans->scale) + dscale = (cscale - trans->scale) * -1; + else + dscale = trans->scale - cscale; + + clutter_actor_set_scale (cover, + cscale + ((dscale*alpha_value)/CLUTTER_ALPHA_MAX_ALPHA), + cscale + ((dscale*alpha_value)/CLUTTER_ALPHA_MAX_ALPHA)); + } +} + +static void +on_main_timeline_completed (ClutterTimeline *timeline, + AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + const gchar *details; + GList *children; + + g_return_if_fail (ASTRO_MUSIC_WINDOW (window)); + priv = window->priv; + + children = priv->covers; + details = clutter_actor_get_name (g_list_nth_data (children, priv->active)); + + clutter_label_set_text (CLUTTER_LABEL (priv->label), details); +} + +static gboolean +on_key_release_event (ClutterActor *actor, + ClutterEvent *event, + AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + + g_return_val_if_fail (ASTRO_IS_WINDOW (window), FALSE); + priv = window->priv; + + switch (event->key.keyval) + { + case CLUTTER_Return: + case CLUTTER_KP_Enter: + case CLUTTER_ISO_Enter: + on_cover_activated (window); + break; + case CLUTTER_Left: + case CLUTTER_KP_Left: + if (priv->activated) + { + astro_reflection_set_active (g_list_nth_data (priv->covers, + priv->active), FALSE); + priv->activated = FALSE; + } + astro_music_window_advance (window, -1); + break; + case CLUTTER_Right: + case CLUTTER_KP_Right: + if (priv->activated) + { + astro_reflection_set_active (g_list_nth_data (priv->covers, + priv->active), FALSE); + priv->activated = FALSE; + } + astro_music_window_advance (window, 1); + break; + default: + ; + } + + return FALSE; +} + +/* GObject stuff */ +static void +astro_music_window_class_init (AstroMusicWindowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroMusicWindowPrivate)); +} + +static void +astro_music_window_init (AstroMusicWindow *window) +{ + AstroMusicWindowPrivate *priv; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + gchar *font = NULL; + + priv = window->priv = ASTRO_MUSIC_WINDOW_GET_PRIVATE (window); + + priv->covers = NULL; + priv->active = 0; + priv->activated = FALSE; + + priv->albums = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (window), priv->albums); + clutter_actor_set_anchor_point_from_gravity (priv->albums, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (priv->albums, 0, CSH() * 0.5); + + load_albums (window); + + font = g_strdup_printf ("Sans %d", CSH()/30); + priv->label = clutter_label_new_full (font, + "Jay Z - American Gangster", + &white); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->label), FALSE); + clutter_label_set_alignment (CLUTTER_LABEL (priv->label), + PANGO_ALIGN_CENTER); + clutter_container_add_actor (CLUTTER_CONTAINER (window), priv->label); + clutter_actor_set_size (priv->label, CSW(), CSH()/10); + clutter_actor_set_anchor_point_from_gravity (priv->label, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (priv->label, CSW()/2, CSH()*0.95); + g_free (font); + + ensure_layout (window); + + priv->timeline = clutter_timeline_new_for_duration (1200); + priv->alpha = clutter_alpha_new_full (priv->timeline, + clutter_sine_inc_func, + NULL, NULL); + priv->behave = astro_behave_new (priv->alpha, + (AstroBehaveAlphaFunc)astro_music_alpha, + window); + + g_signal_connect (priv->timeline, "completed", + G_CALLBACK (on_main_timeline_completed), window); + + clutter_timeline_start (priv->timeline); + + g_signal_connect (window, "key-release-event", + G_CALLBACK (on_key_release_event), window); + clutter_grab_keyboard (CLUTTER_ACTOR (window)); + + + clutter_actor_set_position (CLUTTER_ACTOR (window), 0, 0); + clutter_actor_show_all (CLUTTER_ACTOR (window)); +} + +AstroWindow * +astro_music_window_new (void) +{ + AstroWindow *music_window = g_object_new (ASTRO_TYPE_MUSIC_WINDOW, + NULL); + + return music_window; +} + diff --git a/attic/astro-desktop/applications/music/astro-music-window.h b/attic/astro-desktop/applications/music/astro-music-window.h new file mode 100644 index 0000000..fc590e9 --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-music-window.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_MUSIC_WINDOW_H +#define _HAVE_ASTRO_MUSIC_WINDOW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_MUSIC_WINDOW astro_music_window_get_type() + +#define ASTRO_MUSIC_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_MUSIC_WINDOW, \ + AstroMusicWindow)) + +#define ASTRO_MUSIC_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_MUSIC_WINDOW, \ + AstroMusicWindowClass)) + +#define ASTRO_IS_MUSIC_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_MUSIC_WINDOW)) + +#define ASTRO_IS_MUSIC_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_MUSIC_WINDOW)) + +#define ASTRO_MUSIC_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_MUSIC_WINDOW, \ + AstroMusicWindowClass)) + +#define ALBUM_SIZE (CSW()/4) +#define ALBUM_SCALE 1.9 + +typedef struct _AstroMusicWindow AstroMusicWindow; +typedef struct _AstroMusicWindowClass AstroMusicWindowClass; +typedef struct _AstroMusicWindowPrivate AstroMusicWindowPrivate; + +struct _AstroMusicWindow +{ + AstroWindow parent; + + /*< private >*/ + AstroMusicWindowPrivate *priv; +}; + +struct _AstroMusicWindowClass +{ + /*< private >*/ + AstroWindowClass parent_class; +}; + +GType astro_music_window_get_type (void) G_GNUC_CONST; + +AstroWindow * astro_music_window_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/music/astro-music.c b/attic/astro-desktop/applications/music/astro-music.c new file mode 100644 index 0000000..4f1594b --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-music.c @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-music.h" + +#include +#include +#include + +#include "astro-music-window.h" + +G_DEFINE_TYPE (AstroMusic, astro_music, ASTRO_TYPE_APPLICATION); + +#define ASTRO_MUSIC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_MUSIC, AstroMusicPrivate)) + +struct _AstroMusicPrivate +{ + const gchar *title; + GdkPixbuf *icon; + ClutterActor *window; +}; + +/* Public Functions */ + +/* Private functions */ +static const gchar * +get_title (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_MUSIC (app), NULL); + + return ASTRO_MUSIC (app)->priv->title; +} + +static void +set_title (AstroApplication *app, const gchar *title) +{ + g_return_if_fail (ASTRO_IS_MUSIC (app)); + g_return_if_fail (title); + + ASTRO_MUSIC (app)->priv->title = g_strdup (title); +} + +static GdkPixbuf * +get_icon (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_MUSIC (app), NULL); + + return ASTRO_MUSIC (app)->priv->icon; +} + +static void +set_icon (AstroApplication *app, GdkPixbuf *icon) +{ + g_return_if_fail (ASTRO_IS_MUSIC (app)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + ASTRO_MUSIC (app)->priv->icon = icon; +} + +static AstroWindow * +get_window (AstroApplication *app) +{ + AstroMusicPrivate *priv; + ClutterActor *window = NULL; + + g_return_val_if_fail (ASTRO_IS_MUSIC (app), NULL); + priv = ASTRO_MUSIC (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + window = priv->window; + else + { + window = CLUTTER_ACTOR (astro_music_window_new ()); + } + + ASTRO_MUSIC (app)->priv->window = window; + + return ASTRO_WINDOW (window); +} + +static void +close (AstroApplication *app) +{ + AstroMusicPrivate *priv; + + g_return_if_fail (ASTRO_IS_MUSIC (app)); + priv = ASTRO_MUSIC (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + clutter_actor_destroy (priv->window); +} + +/* GObject stuff */ +static void +astro_music_class_init (AstroMusicClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + AstroApplicationClass *app_class = ASTRO_APPLICATION_CLASS (klass); + + app_class->get_title = get_title; + app_class->set_title = set_title; + app_class->get_icon = get_icon; + app_class->set_icon = set_icon; + app_class->get_window = get_window; + app_class->close = close; + + g_type_class_add_private (gobject_class, sizeof (AstroMusicPrivate)); +} + +static void +astro_music_init (AstroMusic *music) +{ + AstroMusicPrivate *priv; + priv = music->priv = ASTRO_MUSIC_GET_PRIVATE (music); + + priv->title = NULL; + priv->icon = NULL; + priv->window = NULL; +} + +AstroApplication * +astro_music_new (const gchar *title, GdkPixbuf *icon) +{ + AstroApplication *music = g_object_new (ASTRO_TYPE_MUSIC, + NULL); + + astro_application_set_title (music, title); + astro_application_set_icon (music, icon); + + return music; +} + diff --git a/attic/astro-desktop/applications/music/astro-music.h b/attic/astro-desktop/applications/music/astro-music.h new file mode 100644 index 0000000..05c5d5a --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-music.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_MUSIC_H +#define _HAVE_ASTRO_MUSIC_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_MUSIC astro_music_get_type() + +#define ASTRO_MUSIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_MUSIC, \ + AstroMusic)) + +#define ASTRO_MUSIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_MUSIC, \ + AstroMusicClass)) + +#define ASTRO_IS_MUSIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_MUSIC)) + +#define ASTRO_IS_MUSIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_MUSIC)) + +#define ASTRO_MUSIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_MUSIC, \ + AstroMusicClass)) + +typedef struct _AstroMusic AstroMusic; +typedef struct _AstroMusicClass AstroMusicClass; +typedef struct _AstroMusicPrivate AstroMusicPrivate; + +struct _AstroMusic +{ + AstroApplication parent; + + /*< private >*/ + AstroMusicPrivate *priv; +}; + +struct _AstroMusicClass +{ + /*< private >*/ + AstroApplicationClass parent_class; +}; + +GType astro_music_get_type (void) G_GNUC_CONST; + +AstroApplication * astro_music_new (const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/music/astro-reflection.c b/attic/astro-desktop/applications/music/astro-reflection.c new file mode 100644 index 0000000..87e9cc5 --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-reflection.c @@ -0,0 +1,272 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-reflection.h" + +#include +#include + +#include "clutter-reflect-texture.h" +#include "astro-songs.h" + +G_DEFINE_TYPE (AstroReflection, astro_reflection, CLUTTER_TYPE_GROUP); + +#define ASTRO_REFLECTION_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_REFLECTION, AstroReflectionPrivate)) + +static GdkPixbuf *disc_bg = NULL; + +struct _AstroReflectionPrivate +{ + ClutterActor *songs; + ClutterActor *songs_reflect; + ClutterActor *song_list; + ClutterActor *texture; + ClutterActor *reflect; + GdkPixbuf *pixbuf; + + ClutterEffectTemplate *songs_temp; + ClutterTimeline *songs_time; +}; + +enum +{ + PROP_0, + + PROP_PIXBUF +}; + +static void +fix_clip (ClutterTimeline *timeline, + gint frame_num, + AstroReflection *reflection) +{ + AstroReflectionPrivate *priv; + gint size; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + size = clutter_actor_get_width (priv->songs); + + astro_utils_set_clip (priv->songs_reflect, + size - clutter_actor_get_x (priv->songs_reflect), + 0, size, size); +} + +void +astro_reflection_set_active (AstroReflection *reflection, + gboolean active) +{ + AstroReflectionPrivate *priv; + static ClutterTimeline *fade_time = NULL; + gint x = 0; + gint fade = 0; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + if (active) + { + x = clutter_actor_get_width (priv->texture); + fade = 100; + } + + clutter_effect_move (priv->songs_temp, + priv->songs, + x, clutter_actor_get_y (priv->songs), + NULL, NULL); + clutter_effect_move (priv->songs_temp, + priv->song_list, + x, clutter_actor_get_y (priv->song_list), + NULL, NULL); + clutter_effect_move (priv->songs_temp, + priv->songs_reflect, + x, clutter_actor_get_y (priv->songs_reflect), + NULL, NULL); + + fade_time = clutter_effect_fade (priv->songs_temp, + priv->songs_reflect, + fade, + NULL, NULL); + g_signal_connect (fade_time, "new-frame", + G_CALLBACK (fix_clip), reflection); + + astro_songs_set_active (ASTRO_SONGS (priv->song_list), active); +} + +void +astro_reflection_set_pixbuf (AstroReflection *reflection, + GdkPixbuf *pixbuf) +{ + AstroReflectionPrivate *priv; + gint height; + + g_return_if_fail (ASTRO_IS_REFLECTION (reflection)); + priv = reflection->priv; + + if (CLUTTER_IS_ACTOR (priv->texture)) + clutter_actor_destroy (priv->texture); + + if (CLUTTER_IS_ACTOR (priv->reflect)) + clutter_actor_destroy (priv->reflect); + + height = gdk_pixbuf_get_height (pixbuf); + + /* Songs widget */ + if (!disc_bg) + { + disc_bg = gdk_pixbuf_new_from_file_at_size (PKGDATADIR"/disc_bg.svg", + height, height, NULL); + } + priv->songs = clutter_texture_new_from_pixbuf (disc_bg); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), priv->songs); + clutter_actor_set_size (priv->songs, height, height); + clutter_actor_set_position (priv->songs, 0, 0); + + priv->songs_reflect = clutter_reflect_texture_new (CLUTTER_TEXTURE (priv->songs), + height * 0.7); + clutter_actor_set_opacity (priv->songs_reflect, 0); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->songs_reflect); + clutter_actor_set_position (priv->songs_reflect, 0, height+1); + + /* Song list */ + priv->song_list = astro_songs_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), priv->song_list); + clutter_actor_set_size (priv->song_list, height, height); + clutter_actor_set_position (priv->song_list, 0, 0); + + + /* Album cover */ + priv->texture = g_object_new (CLUTTER_TYPE_TEXTURE, + "pixbuf", pixbuf, + "tiled", FALSE, + NULL); + + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->texture); + clutter_actor_set_position (priv->texture, 0, 0); + + priv->reflect = clutter_reflect_texture_new (CLUTTER_TEXTURE (priv->texture), + height * 0.7); + clutter_actor_set_opacity (priv->reflect, 100); + clutter_container_add_actor (CLUTTER_CONTAINER (reflection), + priv->reflect); + clutter_actor_set_position (priv->reflect, 0, height+1); + + clutter_actor_set_anchor_point (CLUTTER_ACTOR (reflection), + clutter_actor_get_width (priv->texture)/2, + height/2); + + clutter_actor_show_all (CLUTTER_ACTOR (reflection)); +} + +/* GObject stuff */ +static void +astro_reflection_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AstroReflectionPrivate *priv; + + g_return_if_fail (ASTRO_IS_REFLECTION (object)); + priv = ASTRO_REFLECTION (object)->priv; + + switch (prop_id) + { + case PROP_PIXBUF: + astro_reflection_set_pixbuf (ASTRO_REFLECTION (object), + GDK_PIXBUF (g_value_get_object (value))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_reflection_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AstroReflectionPrivate *priv; + + g_return_if_fail (ASTRO_IS_REFLECTION (object)); + priv = ASTRO_REFLECTION (object)->priv; + + switch (prop_id) + { + case PROP_PIXBUF: + g_value_set_object (value, G_OBJECT (priv->pixbuf)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +astro_reflection_class_init (AstroReflectionClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = astro_reflection_set_property; + gobject_class->get_property = astro_reflection_get_property; + + g_object_class_install_property ( + gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "Pixbuf", + "A pixbuf", + GDK_TYPE_PIXBUF, + G_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (AstroReflectionPrivate)); +} + +static void +astro_reflection_init (AstroReflection *reflection) +{ + AstroReflectionPrivate *priv; + priv = reflection->priv = ASTRO_REFLECTION_GET_PRIVATE (reflection); + + priv->texture = NULL; + priv->reflect = NULL; + + priv->songs_time = clutter_timeline_new_for_duration (600); + priv->songs_temp = clutter_effect_template_new (priv->songs_time, + clutter_sine_inc_func); +} + +ClutterActor * +astro_reflection_new (GdkPixbuf *pixbuf) +{ + ClutterActor *reflection = g_object_new (ASTRO_TYPE_REFLECTION, + "pixbuf", pixbuf, + NULL); + return CLUTTER_ACTOR (reflection); +} + diff --git a/attic/astro-desktop/applications/music/astro-reflection.h b/attic/astro-desktop/applications/music/astro-reflection.h new file mode 100644 index 0000000..1d71ea9 --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-reflection.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_REFLECTION_H +#define _HAVE_ASTRO_REFLECTION_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_REFLECTION astro_reflection_get_type() + +#define ASTRO_REFLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_REFLECTION, \ + AstroReflection)) + +#define ASTRO_REFLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_REFLECTION, \ + AstroReflectionClass)) + +#define ASTRO_IS_REFLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_REFLECTION)) + +#define ASTRO_IS_REFLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_REFLECTION)) + +#define ASTRO_REFLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_REFLECTION, \ + AstroReflectionClass)) + +typedef struct _AstroReflection AstroReflection; +typedef struct _AstroReflectionClass AstroReflectionClass; +typedef struct _AstroReflectionPrivate AstroReflectionPrivate; + +struct _AstroReflection +{ + ClutterGroup parent; + + /*< private >*/ + AstroReflectionPrivate *priv; +}; + +struct _AstroReflectionClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_reflection_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_reflection_new (GdkPixbuf *pixbuf); + +void astro_reflection_set_active (AstroReflection *reflection, + gboolean active); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/music/astro-songs.c b/attic/astro-desktop/applications/music/astro-songs.c new file mode 100644 index 0000000..dcdd774 --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-songs.c @@ -0,0 +1,280 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-songs.h" + +#include +#include +#include + +#include "astro-music-window.h" + +G_DEFINE_TYPE (AstroSongs, astro_songs, CLUTTER_TYPE_GROUP); + +#define ASTRO_SONGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_SONGS, AstroSongsPrivate)) + +struct _AstroSongsPrivate +{ + ClutterActor *group; + ClutterActor *events; + + gboolean mousedown; + gint lasty; + gint starty; + guint32 start_time; + gint endy; + + ClutterEffectTemplate *temp; + ClutterTimeline *timeline; +}; + +static gchar *song_names[] = { + "Oh Timbaland", + "Give It To Me", + "Release", + "The Way I Are", + "Bounce", + "Come And Get Me", + "Kill Yourself", + "Boardmeeting", + "Fantasy", + "Screem", + "Miscommunication", + "Bombay", + "Throw It On Me", + "Time", + "One And Only", + "Apologize", + "2 Man Show", + "Hello" +}; + +static gboolean on_event (AstroSongs *songs, ClutterEvent *event); + +/* Public Functions */ +void +astro_songs_set_active (AstroSongs *songs, gboolean active) +{ + AstroSongsPrivate *priv; + + g_return_if_fail (ASTRO_IS_SONGS (songs)); + priv = songs->priv; + + if (active) + { + g_signal_connect (songs, "event", G_CALLBACK (on_event), NULL); + } + else + { + g_signal_handlers_disconnect_by_func (songs, on_event, NULL); + priv->mousedown = FALSE; + } +} + + +/* Private functions */ +static void +bounds_check (ClutterActor *group, AstroSongs *songs) +{ + AstroSongsPrivate *priv; + gint y, height; + + g_return_if_fail (ASTRO_IS_SONGS (songs)); + priv = songs->priv; + + height = clutter_actor_get_height (group); + y = clutter_actor_get_y (group); + + if (y < 0 && y < (-1*height+(ALBUM_SIZE/2))) + { + y = (-1*height) + ALBUM_SIZE/2; + } + + if ( y > 0 && y > (ALBUM_SIZE/2)) + { + y = ALBUM_SIZE/2; + } + + priv->timeline = clutter_effect_move (priv->temp, priv->group, + clutter_actor_get_x (priv->group), + y, + NULL, NULL); +} + +static gboolean +on_event (AstroSongs *songs, ClutterEvent *event) +{ +#define TIMEOUT 400 +#define SPEED_FACTOR 1.5 + AstroSongsPrivate *priv = songs->priv; + + if (event->type == CLUTTER_BUTTON_PRESS) + { + priv->starty = priv->lasty = event->button.y; + + priv->start_time = event->button.time; + + if (clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_stop (priv->timeline); + + } + else if (event->type == CLUTTER_BUTTON_RELEASE) + { + gint endy = clutter_actor_get_y (priv->group); + guint32 time = event->button.time - priv->start_time; + gfloat factor; + + factor = 2.0 - (time/event->button.time); + + if (time > TIMEOUT) + { + priv->endy = endy; + } + else if (event->button.y > priv->starty) + { + /* + * The mouse from left to right, so we have to *add* pixels to the + * current group position to make it move to the right + */ + endy += (event->motion.y - priv->starty) * SPEED_FACTOR * factor; + priv->endy = endy; + } + else if (event->button.y < priv->starty) + { + /* + * The mouse from right to left, so we have to *minus* p.yels to the + * current group position to make it move to the left + */ + endy -= (priv->starty - event->button.y) * SPEED_FACTOR * factor; + priv->endy = endy; + } + else + { + /* If the click was fast, treat it as a standard 'clicked' event */ + if (time < TIMEOUT) + g_debug ("Song clicked\n"); + priv->starty = priv->lasty = 0; + return FALSE; + } + + priv->timeline = clutter_effect_move (priv->temp, priv->group, + clutter_actor_get_x (priv->group), + priv->endy, + (ClutterEffectCompleteFunc)bounds_check, + songs); + + priv->starty = priv->lasty = 0; + } + else if (event->type == CLUTTER_MOTION) + { + gint offset; + + if (!priv->starty) + return FALSE; + if (event->motion.y > priv->lasty) + { + offset = event->motion.y - priv->lasty; + } + else + { + offset = priv->lasty - event->motion.y; + offset *= -1; + } + priv->lasty = event->motion.y; + clutter_actor_set_position (priv->group, + clutter_actor_get_x (priv->group), + clutter_actor_get_y (priv->group)+ offset); + } + + return FALSE; +} + +/* GObject stuff */ +static void +astro_songs_class_init (AstroSongsClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroSongsPrivate)); +} + +static void +astro_songs_init (AstroSongs *songs) +{ +#define FONT_SIZE (ALBUM_SIZE/8) +#define ROW_SPACING (FONT_SIZE*1.3) +#define PAD 2 + AstroSongsPrivate *priv; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + gchar *font = NULL; + gint i, offset = ROW_SPACING/2; + + priv = songs->priv = ASTRO_SONGS_GET_PRIVATE (songs); + + priv->mousedown = FALSE; + + priv->group = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (songs), priv->group); + clutter_actor_set_position (priv->group, 0, 0); + + font = g_strdup_printf ("Sans %d", FONT_SIZE); + + for (i = 0; i < 10; i++) + { + ClutterActor *row; + + row = clutter_label_new_full (font, song_names[i], &white); + + clutter_container_add_actor (CLUTTER_CONTAINER (priv->group), row); + clutter_actor_set_anchor_point_from_gravity (row, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (row, 10, offset); + clutter_actor_set_scale (row, 1/ALBUM_SCALE, 1/ALBUM_SCALE); + clutter_actor_set_opacity (row, i%2 ? 200: 255); + + offset += ROW_SPACING; + } + + priv->timeline = clutter_timeline_new_for_duration (1000); + priv->temp = clutter_effect_template_new (priv->timeline, + clutter_sine_inc_func); + + clutter_actor_set_reactive (CLUTTER_ACTOR (songs), TRUE); + + clutter_actor_set_clip (CLUTTER_ACTOR (songs), + PAD, PAD, ALBUM_SIZE-(2*PAD), ALBUM_SIZE-(2*PAD)); + + clutter_actor_show_all (CLUTTER_ACTOR (priv->group)); + clutter_actor_show_all (CLUTTER_ACTOR (songs)); + g_free (font); +} + +ClutterActor * +astro_songs_new (void) +{ + ClutterActor *songs = g_object_new (ASTRO_TYPE_SONGS, + NULL); + + return songs; +} + diff --git a/attic/astro-desktop/applications/music/astro-songs.h b/attic/astro-desktop/applications/music/astro-songs.h new file mode 100644 index 0000000..21fa78c --- /dev/null +++ b/attic/astro-desktop/applications/music/astro-songs.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_SONGS_H +#define _HAVE_ASTRO_SONGS_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_SONGS astro_songs_get_type() + +#define ASTRO_SONGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_SONGS, \ + AstroSongs)) + +#define ASTRO_SONGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_SONGS, \ + AstroSongsClass)) + +#define ASTRO_IS_SONGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_SONGS)) + +#define ASTRO_IS_SONGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_SONGS)) + +#define ASTRO_SONGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_SONGS, \ + AstroSongsClass)) + +typedef struct _AstroSongs AstroSongs; +typedef struct _AstroSongsClass AstroSongsClass; +typedef struct _AstroSongsPrivate AstroSongsPrivate; + +struct _AstroSongs +{ + ClutterGroup parent; + + /*< private >*/ + AstroSongsPrivate *priv; +}; + +struct _AstroSongsClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_songs_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_songs_new (void); + +void astro_songs_set_active (AstroSongs *songs, gboolean active); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/music/clutter-reflect-texture.c b/attic/astro-desktop/applications/music/clutter-reflect-texture.c new file mode 100644 index 0000000..5689d49 --- /dev/null +++ b/attic/astro-desktop/applications/music/clutter-reflect-texture.c @@ -0,0 +1,346 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB + + +/** + * SECTION:clutter-reflect-texture + * @short_description: Actor for cloning existing textures in an + * efficient way. + * + * #ClutterReflectTexture allows the cloning of existing #ClutterTexture with + * a refelction like effect. + */ + +#include + +#include "clutter-reflect-texture.h" + +enum +{ + PROP_0, + PROP_REFLECTION_HEIGHT +}; + +G_DEFINE_TYPE (ClutterReflectTexture, + clutter_reflect_texture, + CLUTTER_TYPE_CLONE_TEXTURE); + +#define CLUTTER_REFLECT_TEXTURE_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexturePrivate)) + +struct _ClutterReflectTexturePrivate +{ + gint reflection_height; +}; + +static void +reflect_texture_render_to_gl_quad (ClutterReflectTexture *ctexture, + int x1, + int y1, + int x2, + int y2) +{ + gint qx1 = 0, qx2 = 0, qy1 = 0, qy2 = 0; + gint qwidth = 0, qheight = 0; + gint x, y, i =0, lastx = 0, lasty = 0; + gint n_x_tiles, n_y_tiles; + gint pwidth, pheight, rheight; + float tx, ty, ty2 = 0.0; + +#ifdef CLUTTER_COGL_HAS_GL + + ClutterReflectTexturePrivate *priv = ctexture->priv; + ClutterActor *parent_texture = CLUTTER_ACTOR(clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(ctexture))); + + priv = ctexture->priv; + + qwidth = x2 - x1; + qheight = y2 - y1; + + rheight = priv->reflection_height; + + if (rheight > qheight) + rheight = qheight; + + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* Only paint if parent is in a state to do so */ + if (!clutter_texture_has_generated_tiles (CLUTTER_TEXTURE(parent_texture))) + return; + + clutter_texture_get_base_size (CLUTTER_TEXTURE(parent_texture), + &pwidth, &pheight); + + if (!clutter_texture_is_tiled (CLUTTER_TEXTURE(parent_texture))) + { + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), 0); + + /* NPOTS textures *always* used if extension available + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)) + { + tx = (float) pwidth; + ty = (float) pheight; + ty2 = (float)(clutter_actor_get_height (CLUTTER_ACTOR(ctexture)) * rheight) + / pheight; + ty2 = pheight - ty2; + + } + else + { + tx = (float) pwidth / clutter_util_next_p2 (pwidth); + ty = (float) pheight / clutter_util_next_p2 (pheight); + } + + qx1 = x1; qx2 = x2; + qy1 = y1; qy2 = y1 + rheight; + + glBegin (GL_QUADS); + + glColor4ub (255, 255, 255, + clutter_actor_get_opacity (CLUTTER_ACTOR(ctexture))); + + glTexCoord2f (0, ty); + glVertex2i (qx1, qy1); + + glTexCoord2f (tx, ty); + glVertex2i (qx2, qy1); + + glColor4ub (255, 255, 255, 0); + + glTexCoord2f (tx, ty2); + glVertex2i (qx2, qy2); + + glTexCoord2f (0, ty2); + glVertex2i (qx1, qy2); + + glEnd (); + + return; + } + + clutter_texture_get_n_tiles (CLUTTER_TEXTURE(parent_texture), + &n_x_tiles, &n_y_tiles); + + for (x = 0; x < n_x_tiles; x++) + { + lasty = 0; + + for (y = 0; y < n_y_tiles; y++) + { + gint actual_w, actual_h; + gint xpos, ypos, xsize, ysize, ywaste, xwaste; + + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), i); + + clutter_texture_get_x_tile_detail (CLUTTER_TEXTURE(parent_texture), + x, &xpos, &xsize, &xwaste); + + clutter_texture_get_y_tile_detail (CLUTTER_TEXTURE(parent_texture), + y, &ypos, &ysize, &ywaste); + + actual_w = xsize - xwaste; + actual_h = ysize - ywaste; + + tx = (float) actual_w / xsize; + ty = (float) actual_h / ysize; + + qx1 = x1 + lastx; + qx2 = qx1 + ((qwidth * actual_w ) / pwidth ); + + qy1 = y1 + lasty; + qy2 = qy1 + ((qheight * actual_h) / pheight ); + + glBegin (GL_QUADS); + glTexCoord2f (tx, ty); glVertex2i (qx2, qy2); + glTexCoord2f (0, ty); glVertex2i (qx1, qy2); + glTexCoord2f (0, 0); glVertex2i (qx1, qy1); + glTexCoord2f (tx, 0); glVertex2i (qx2, qy1); + glEnd (); + + lasty += qy2 - qy1; + + i++; + } + lastx += qx2 - qx1; + } +#endif + +} + +static void +clutter_reflect_texture_paint (ClutterActor *self) +{ + ClutterReflectTexturePrivate *priv; + ClutterActor *parent_texture; + gint x1, y1, x2, y2; + GLenum target_type; + +#ifdef CLUTTER_COGL_HAS_GL + + priv = CLUTTER_REFLECT_TEXTURE (self)->priv; + + /* no need to paint stuff if we don't have a texture to reflect */ + if (!clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))) + return; + + /* parent texture may have been hidden, there for need to make sure its + * realised with resources available. + */ + parent_texture = CLUTTER_ACTOR (clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))); + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* FIXME: figure out nicer way of getting at this info... + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE) && + clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture)) == FALSE) + { + target_type = CGL_TEXTURE_RECTANGLE_ARB; + cogl_enable (CGL_ENABLE_TEXTURE_RECT | CGL_ENABLE_BLEND); + } + else + { + target_type = CGL_TEXTURE_2D; + cogl_enable (CGL_ENABLE_TEXTURE_2D|CGL_ENABLE_BLEND); + } + + cogl_push_matrix (); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ub (255, 255, 255, clutter_actor_get_opacity (self)); + + clutter_actor_get_coords (self, &x1, &y1, &x2, &y2); + + /* Parent paint translated us into position */ + reflect_texture_render_to_gl_quad (CLUTTER_REFLECT_TEXTURE (self), + 0, 0, x2 - x1, y2 - y1); + + cogl_pop_matrix (); +#endif +} + + + +static void +clutter_reflect_texture_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + priv->reflection_height = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + g_value_set_int (value, priv->reflection_height); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_class_init (ClutterReflectTextureClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = clutter_reflect_texture_paint; + + gobject_class->set_property = clutter_reflect_texture_set_property; + gobject_class->get_property = clutter_reflect_texture_get_property; + + g_object_class_install_property (gobject_class, + PROP_REFLECTION_HEIGHT, + g_param_spec_int ("reflection-height", + "Reflection Height", + "", + 0, G_MAXINT, + 0, + (G_PARAM_CONSTRUCT | CLUTTER_PARAM_READWRITE))); + + g_type_class_add_private (gobject_class, sizeof (ClutterReflectTexturePrivate)); +} + +static void +clutter_reflect_texture_init (ClutterReflectTexture *self) +{ + ClutterReflectTexturePrivate *priv; + + self->priv = priv = CLUTTER_REFLECT_TEXTURE_GET_PRIVATE (self); + priv->reflection_height = 100; +} + +/** + * clutter_reflect_texture_new: + * @texture: a #ClutterTexture or %NULL + * + * Creates an efficient 'reflect' of a pre-existing texture if which it + * shares the underlying pixbuf data. + * + * You can use clutter_reflect_texture_set_parent_texture() to change the + * parent texture to be reflectd. + * + * Return value: the newly created #ClutterReflectTexture + */ +ClutterActor * +clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height) +{ + g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL); + + return g_object_new (CLUTTER_TYPE_REFLECT_TEXTURE, + "parent-texture", texture, + "reflection-height", reflection_height, + NULL); +} + diff --git a/attic/astro-desktop/applications/music/clutter-reflect-texture.h b/attic/astro-desktop/applications/music/clutter-reflect-texture.h new file mode 100644 index 0000000..9ba7353 --- /dev/null +++ b/attic/astro-desktop/applications/music/clutter-reflect-texture.h @@ -0,0 +1,84 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_REFLECT_TEXTURE_H +#define _HAVE_CLUTTER_REFLECT_TEXTURE_H + +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_REFLECT_TEXTURE (clutter_reflect_texture_get_type ()) + +#define CLUTTER_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexture)) + +#define CLUTTER_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +#define CLUTTER_IS_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_IS_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_REFLECT_TEXTURE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +typedef struct _ClutterReflectTexture ClutterReflectTexture; +typedef struct _ClutterReflectTexturePrivate ClutterReflectTexturePrivate; +typedef struct _ClutterReflectTextureClass ClutterReflectTextureClass; + +struct _ClutterReflectTexture +{ + ClutterCloneTexture parent; + + /*< priv >*/ + ClutterReflectTexturePrivate *priv; +}; + +struct _ClutterReflectTextureClass +{ + ClutterCloneTextureClass parent_class; + + /* padding for future expansion */ + void (*_clutter_reflect_1) (void); + void (*_clutter_reflect_2) (void); + void (*_clutter_reflect_3) (void); + void (*_clutter_reflect_4) (void); +}; + +GType clutter_reflect_texture_get_type (void) G_GNUC_CONST; + +ClutterActor * clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/applications/music/init.c b/attic/astro-desktop/applications/music/init.c new file mode 100644 index 0000000..7d17570 --- /dev/null +++ b/attic/astro-desktop/applications/music/init.c @@ -0,0 +1,25 @@ + +#include +#include +#include + +#include "astro-music.h" + + +AstroApplication * +astro_application_factory_init () +{ + AstroApplication *app; + GdkPixbuf *pixbuf; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/icons/music.png", + ASTRO_APPICON_SIZE(), ASTRO_APPICON_SIZE(), + TRUE, + NULL); + + app = astro_music_new ("Music Player", pixbuf); + + g_debug ("Music application loaded\n"); + + return app; +} diff --git a/attic/astro-desktop/autogen.sh b/attic/astro-desktop/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/attic/astro-desktop/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/attic/astro-desktop/configure.ac b/attic/astro-desktop/configure.ac new file mode 100644 index 0000000..10f06a0 --- /dev/null +++ b/attic/astro-desktop/configure.ac @@ -0,0 +1,37 @@ +AC_PREREQ(2.53) +AC_INIT(astro-desktop, 0.1, []) +AM_INIT_AUTOMAKE() +AC_CONFIG_SRCDIR(src/main.c) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_STDC_HEADERS +AC_PROG_LIBTOOL + +PKG_CHECK_MODULES(DEPS, + clutter-0.6 + gdk-2.0) +AC_SUBST(DEPS_CFLAGS) +AC_SUBST(DEPS_LIBS) + +if test "x$GCC" = "xyes"; then + GCC_CFLAGS="-g -Wall" +fi +AC_SUBST(GCC_CFLAGS) + +AC_OUTPUT([ +Makefile +data/Makefile +data/albums/Makefile +data/icons/Makefile +libastro-desktop/Makefile +applets/Makefile +applications/Makefile +applications/contacts/Makefile +applications/example/Makefile +applications/images/Makefile +applications/music/Makefile +src/Makefile +]) diff --git a/attic/astro-desktop/data/Makefile.am b/attic/astro-desktop/data/Makefile.am new file mode 100644 index 0000000..7a73690 --- /dev/null +++ b/attic/astro-desktop/data/Makefile.am @@ -0,0 +1,12 @@ +SUBDIRS = albums icons + +dist_default_DATA = \ + applet_bg.png \ + background.svg \ + contact.png \ + contact-bar.svg \ + disc_bg.svg \ + face.png \ + info_bg.png + +defaultdir = $(pkgdatadir) diff --git a/attic/astro-desktop/data/albums/Amy_Winehouse_-_Back_To_Black.jpg b/attic/astro-desktop/data/albums/Amy_Winehouse_-_Back_To_Black.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36e2745a78be28b43ecd12e27d2f54f46be44a3a GIT binary patch literal 16410 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 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/albums/Makefile.am b/attic/astro-desktop/data/albums/Makefile.am new file mode 100644 index 0000000..a804798 --- /dev/null +++ b/attic/astro-desktop/data/albums/Makefile.am @@ -0,0 +1,10 @@ +dist_album_DATA = \ + Amy_Winehouse_-_Back_To_Black.jpg \ + Jay_Z_-_American_Gangster.jpg \ + Kanye_West_-_Graduation.jpg \ + Lupe_Fiasco_-_Food_and_Liquor.jpg \ + Red_Hot_Chilli_Peppers_-_Greatest_Hits.jpg \ + Santana_-_Ultimate_Santana.jpg \ + Timbaland_-_Shock_Value.jpg + +albumdir = $(pkgdatadir)/albums diff --git a/attic/astro-desktop/data/albums/Red_Hot_Chilli_Peppers_-_Greatest_Hits.jpg b/attic/astro-desktop/data/albums/Red_Hot_Chilli_Peppers_-_Greatest_Hits.jpg new file mode 100755 index 0000000000000000000000000000000000000000..04de88294123534081a72045fdc4a742b927632b GIT binary patch literal 59693 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μ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 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/albums/Santana_-_Ultimate_Santana.jpg b/attic/astro-desktop/data/albums/Santana_-_Ultimate_Santana.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad756227938cb456d6e5a6147dba1140d07198ff GIT binary patch literal 94541 zcmbTdcUV)+*ESkNib#17kWP>y(xrDIC|y8$C(@*ebZLPoMLGxw2m%3-E<~jF-lg{< zz1M^qLK04%-}|2Pz2EoOIcK=YbtQZD?77#PHS1n$*1ny)T?PE3sj8t0ARqt$2=IS^ z+eN^001@HcyLSnR@E=4(M8qWIq$K!8b^rc7a%!pv52&fAsc9av(9_T|(NR+~JYryC zWd#C(H1r%?9Bf=HY(Tbu2O+@UNr^u-2nBRkvv!}}Emc4gpVcmZDq8jou(;bMO z;eS>M)6!kgb+Lj81@HdyruJ4PEur&r;>;9a>3&V4N}*AgWe^&q_j>zL$B&MZ!82|C zm>E zeLZ_CXyX3o*W-zSm76!2x?JPAmSOm7u)%jzE4(dFe&0{>R;AE1OvsISiGLjD&P*Ir ziW{@@oJj^f6cF8QB-vYwb3~vE#qd0LGV&pS)EUy&0vV&K9*Ug*sQ>|mc)dI}WiJ~rhrgnG? zTCVpNKvE5)+>?U)=36aT^|_qA;L5%s42wg@Y~yGlAjB;o3M1(57wjND>-A?mzDjf_ zi{OLvE#U3g<-3CHl-f>os*VG5x$eU!L{ALBCW-SiOCQw2Ys5}=K&XjZK$omi;x(;= z?hWP^u%U;o(z*sNfr^K&)0ZJxYA%vk*Zo@n%F!Zt5xVwZ>MAhc1Sfuia+HSdzM2M| zoZSNAK}V(F0pWVZeBo_yz^Rj_SFifszffh{>2WH8y0}{a2sN7nu|)ZP_c!ROqp{dK zTUdE6t2%fl<~FJq>S;v29Jie}IDM0wM(G)wI$61{#CrgIcX0qBk*EIQAEw#ZGF{FD zJ^x6{u0Aw&ClKgq-NJK-q!lv3{d3cI((vXD36es^a^VY~CXCbGjS4@ht<+bn| zBGrT8U>B%kzb=>v3|;BF1+14)9bOUK0y6k+a5&H{fX+-{{r;iWF>nfeCft0@UZn73 z5jPy{ehVPKAi>@u(U2?CSiC=N{a^`JFbTK+yZKgZvkAbtLV74jNqL? zX@>PL?DLuETG0IRjCxm5_=Th~;IHcvowhkq8(d%JKd+!V*BQcn1mfN6;^l76!sIAR36sFa;xW^!t zCRazjvS+bYrD?QZswoH(SFse>>&mX4P3m|n)9b8EzB;RhxYDYg#@H1(*CEsEGWvbV z4U?*K^7pK70Y5P0<26w^Zc<&dvrh3fnKDZsf@P;|&-hHuW3p1*4!+X~2<)q6NZ4&t z@g}kmXmEVUBYE6fftQGHBwivW|B=WzULkt`&?&DA?CSa!(A$8Q2Y!ijwQlH^X#KlX zbED6wkF@Q#TQ=5!Vxdv(l}Q*U$D9YsR%i3-sg4xQlOEB6x?h*+j`I-9@jiO)mYT-#;;i| zWghvd=DrgFpgE4S5T_XK%F0BER5SD7twcn$92FmOEpm zKigPWawgf4DTxG|)E%xdB~wL6Sl$9=-+*Q^p^l`Zy7yf+a0_*)nYKmowq&qJYr%gk zFk#`u#3P%r&o6Vr7N8j&@bh9O2p zpkuHS=*ld9=hM4U=q3iOQA~kOHt^Haz3c&PrZ1UH!T!BN&8c9HfByoTvo1jEFMA7s znOQ;)r^Aq9tGyX(*-TqNEy;zCRjyHwOssG>TB}bE1ul(4jgjRX2G=hIdLzt7KWi0NXFZoZ^Q> z!8y%LlCL-8rbC<0H0oG?Ke^Ubc&EhyiQf{PKY6o}Mqbhqd*riO{H|STF-ky{5G@)htrD|KJwzv%V%l z?H1r)JbGZ+*XvGg<)p~`;@6iRUq7C--@=BkM7x77F|K}V=p%$qOxyVeJuZ}g1mw&( z$jVKyW^4vJXWE8K{;Jb8PG6_}p6#lTm@4m!)E`{)RS*<>cf9GFOkAI=6dG{%>hUi{ zHjK(|#B$ifbl;+-p;}d_=wsH=Jh*~~eQMT)t;T2zo2gzJTsg-m(y)Q4QMkUtKao{uBELJ?VSy#n!B9y7tb6LIH1f7)KQ^E?|-FI(d1f;HTF`bsEh3&xRoqYh3e4 zV2>q1(}4T1>k%yS7I4b#v~sZn#DzW?niVutQ4oL)e-aFeUM!P_Es$6?O`Lz@=QrDo zco&x_#`!w+ne=Fp1X8%$Jt|F+V{B`p{P3M#+#v34oXBa)9@r*iGFTjrUh}*K{5ENS zpJu!9DrR1ESp2)l1rKnh@z;5t35~w5V$V+pnL%1R25i|9+VS$;So4rB`5f&nATi_N zwo*d($t_^)8T_Zb-g-QJ*ZYnd=G=;|%?O$IXfgyW?8q&*Wd_biNStI-%YES;u7dO3 z1T(ch26vRIS857LxWcmkUYpXM1E7yAP0g#aGJn8%C9%}w=2=D!fAi^3FtvRU6TnLx zOPhK)ITQ*dz)37ZM3D-kG1X=#6>i__oOVQr;*v?*Wp)n0IV+UD*7{8hE623jkB!0%TDny^Y5;1^!nC zt`wTv|5PDDl}&PSY^nN1)~(!=1^i}~Uu9o?FOmp;8xn^y=t1*D+kxhfqsL&{f$tiV>F>!dy*2% z#&ygUh#ss~v7bYSag zMD8u12+u6XRa^4cw;QA)YhaWv9-E~aPf|&cd1Ry&5N-$6FYsyy_oPA&Sap_LlWJd2 zw&axoLi?zkc-z$^Dt3q&a>6Nk2fkV~c{TwdH4k+>h z4#V9=QJ#_>9lZo1C8x67??OwJ#(=p45*JeOzRbD={tpDjv>&~**L_Td_l&fWXPEw< zo)T+O-Ho?^H?rU+iEwV6n1ag!6zg;~(o$`^gQNdj%&|ezXAkHrJR8{i`FAgbwYK(m z#%j=jW>sF78zC3rNzYph&l~s11p^W8xVIV#IB(0uBl=qaTP6tWn{rLINT)YMzFFM} zj*e$2FjF~Klt9HJIr_}TFDM=`^TS0|=iVfJQZ!~kUsizEg!280P!r>VZWDfu*e>G! z&IkA2DFBAO>!P$TI>6u#L;25Z*AlU*CaN#cU5-)=$t+NB>_k9_OIV@0S1Dz{gzFX{KMM;lE>Wc|XfhFp zljse8pBIB+zZ;*s$l7H94+UueA26-2<&zaW)V9pp0B;p1*Z1J24sL=2B-lb}V4>@{ zqL|YyU?JyTLn>{?&##t`Wmkhw#$bcZL!ApvDDc|W)Sjb4G=uX$ET5zHf(yyC>u&cstE2E;K&y>B34xJNP?>ZV!&)r`={>bRi;cE(- z>{@Kyq&ryYLgW1JgVkJBj-b|xqZN|6nV%S{7JQqwzB~^4G|xs}VZj13Kdh*939DG) z+ilFyH&pmu;M%&gf@7TGnudUEO0*c_kKHDWjpXmBdhn;A@-~9nNSEgN+#HAom-xj3 z;#8liy$p7Ru3cfG&^%cGo?Ad}%qbqE{p#LMpx^g3JY^m zkvS6@bP@`WoeVGhSrkEpG3WOMwKS26kusCV`SqXtGbKB=yhK9f*j&%VRFOF?`Afug zQ;*XmdSM zZXm3KLLWEVlb!>t&r$o3f23xsEX%f>^`@n&P}_etqI^Aa;?aA8k%5KCv@3cj=%T%{9CxVZ~0{X`(I&_R?RiFOwwd>vK1c*NvdlP6$7+$PQ(~ zdZW4*>ITxCy0b~_8lV^_3QDTDzy2XW<$*F*co_9QhfxBB=W#RH=^?X$Wh(OgKs zu5vB)DO1HFn}6!#N6qx8c=k!m8*KlYYNi^U2oE!sl0Ar5e+!{nXC|J!7&>^!a4N(G zYNv_GtNN_q+J+h`5`@RU`6~2qpX;0AEx-p?W~r8*k_5I2|5^GfyeWU6T)X#2{+x0s z*9KAi^E#e}GKz-`ZmdmuOi$kalCB6ZFS$z~$0Ugk%WOD(f?bHqxuA}Z<_h&*8uv0I z9*-gOZtr<%r_e*B&MKnQ{rT{F5t)dJQH)?8({rG-K!5~oU(k)gC-vSyPtCF4CDK>L zaSx`-YLz*U5oV-0&oJ(^3TN-YHx+C_m0wp8JfMsfKG`-UNhXuetgS)Fzr9I8yo$(pE zQM2U;KK^|j;`ojj)S|ZBN@eE$h*>=~E1- zsOZYg4v5-?lVHmpFM3Lo96RfxkKtnU7*e>nH4s&fhEXDNkts2+@8+mU@O9q&0?GdV z{L@Y_bh+kyT!VAePa$@dnHI4WRyZ^PRe}G;@l(mIW#9N>r|=6)mADO~;XZp) z$BxfFv|(LtO!^2%QQ*M9?H-F$!0g~~$jv`(<%#;Zt;djv++y9R5WK5&VSaxL=yN?h z0YLjx^P#g@P&5U^x3F-9b^i!^qfWKog*KUM1>6FX_*LXx{?<@Z;+7kwhw@FKnl_8mXOnoZlkowspo3vE(J|dC?O*`oHyhk#M{fz><0K zRD4=<`a62@RK`^+En6lqXX_SlU#-it6CrrCnxK3?H{w^fPd}UvNpzlB(GXA~!!^ol zlhgGJQ)$%w`i|)&V9BFqC2Z))n*G-OzgJJoW3wHc-}=DFXrY~cw!uqOH=DD|D^;VI z7!%k9dIe23+kqedAK~~zk-0WpsOt&U{0>fqe-w>%#}c{z>4o<9Dn@F9u1xl=P{>;V z2Mg?C8MFh=X?tLR;}6!WoN?dfKj+`*!$f&OXZ>#h*&!jA7jZDA{YZs3xX_voXxk75 zR3ZWWJ6n>v#`#7&YJo;LEM_U@lc>+w_)ki~TE zH`HgzbhR>%BAO8Y0NTZCrH056X0zrrbKny%icZ$pZCljke{9DDn)HK+F?L>ml7IeiF}Fm?$Tt#pfFg-o#}Lcq z?iEgH3)z)KkDsaI4*U$xB__k0;(ks0fs+y*nQQ)(gl4ou7!iG!57WKZSng89 zmBMIUr(hMJN7gn-lJ28*cUmnU`)+o++PIt~Ja)0v{(MF|(rgV=F+BC%`cRYl5|4 zu6>+X=nyl0Z`Q!=XJy`eyYwGd{&wWH(OLWufjk#X95XR?1iA8=`tD;%yM!GXr>{9~ z0Y^k-1!-Z9`7hSwFVDExl8SU^uT5YOQY34m|M%YYd)|)4dEqelU#u#K=^Pey3!uCZ zrghaVQ7dUL*%Hv};$Y!RXue4fGRfEnQDIcpxHZ-$(+?4#ufNUW`@>mw0QTNT){1-* zb`}e#ElhQJv&x2lg&l)$0b+Y{Uv2Aa)0Ur+X+|&vhKhjMFqVxCh=PQ2SN=b}!^_OR zn-KyYlya1xT5A#8d2Ho*^ZTBkjo0a*d3~H`!~Tv(N^4)5ax`8*o2JTN+Hd@b9lHex z4>lpk!l(EYQcTVrC7JYNzdSq&;pyrIRzFxu8{M(aMzGkP7@f}p&m?x}pZ=Cp?RuM3 zdDri*$qxw08!6dhn|^hC<`HfnS=Axg+$NSzi17(NLtNorSkd5`zvJT~m4L`2iL0NW zgJt(UYuNvJMeN_y4f^UE+9W;t7T^mO9^22yIG!oq;XTXp9xZqeCA&aDWJ)cWcRU^C zP2Ea$7}zL5vO9vS`@;jnI(F@QV5O)6vMEdMDrsjO!+qZT!?urp?m-)|_ZG~!o;xj@ zd1>6M`#7pJs)=SD8M7EO8D6P^W8#@iu>LSCz+~b9w9GvZo-<@3$SW-Ax8YmdLcL7` zu^HdU*pOA3=j+iRZz;3ug3&;vep+(p1-z|bSu^(SOxdgV1V4f}Pt{OJ1{wcq%3Nwb zJw9Dz+_aNOMeOwY&B|svn>Vk!%VA#@5rhQ-%T++-H^6t9u2!j0Y-n|iPY*j8qv~vxMM^Z8p+4cJ)t2f#NH%)pAF`z>{+w!@FAM(T%V*ft zDS4)*i!`wumw$0dvzH>D^1OjX+#$puRQ6`)tb%Fp&i4;8!=Mlbe)fU$_0-P6Rfmt5 zgT1HqremQ+^xx(8Yb>|^TsZ`P8)X$6mM$t88m zoZj{~`~A}x?ba3|ot|gyjF&&=bXPE?Z_yca{XE-!tR;}&N_HdC2L__ZWDuE+K`%7b zl_6sAMxlpJHbGX;#AeBWJSpx-E;yKX|0b$^DYyh#i_mK53-RDH-AGn`DA9?|A-M%u z|Msf%jCIhE@?>DiiQ)4vAE!@AQ*arpJ^eK_CdseSB-FFE$=(?B9E-O_TxszT z3ETxo6F|!$KR0t8H#b_GD=?d9i$jXu)g$9Kpn<(WEXBdW=>H@j5srKV8x%?;rsXyU z*Oj=Mi<1waP0jJPgAovxxZ(G-O9eKmP-@ls=NWLp6=ws!=)~tb?crgTHj99Z128mX z%vdTj0vGM(>@4voo@K+{$#jEv&)VA^5oY0(n$r1{FR9(;A5fCStQrdLB_Lv5X2Crdtc%cM=S>rod$mN!u zRfgX5A5>^45X}I;??WaMa|QlTkNYzrfR`5y2(2p#^3OL-27C@&wHk`j7TnMvd6R+lx90JyXPKV0s?rOOcF z%%#rYDk$F#1_5~)U*{5yGqXqj1oDmNWC~}PgZbg7zAQFTxh-4vm`RzZHFhTkB~_9k z@~F=J(}17D9a42i+kc;ee8oC(3W}i(u#X3IRxLX?D>SsdEOz=t$X7wt^(I|dV8rw$ zkn9L|ubAm*Z3H^rc4=c0)$vov;>ktLO0hxtk%-9A*iGLW4<@CB6W36O`{bI0&4+Fb z;l)t#8~Vt~uM>RD6R3vua>tU-KDxov@4mF8TY!~4PPuvT7I3UJPOpXC*&a=4C3o6f zaWQYo6PWns?|(G}RRX)rmHP9qy}9fhrYP|~5u*g@gZL2ek8HFiGw0<`azz%aESK22 zcRVozcUqobM$b$vzO0@gjG)y1vpm>9crm(VT8hC=C@|r=q}uNj3l+! z({9we7~a`0%j{jX^|pw0!WcL*l2^JP7RO+M3n@+ZO(yriWd5Hp`;AB2xtQyTTX%7=Ol&+ zeCZx1WX`?FI!05B#-2IY8x_YF$?fM;?4-vl<9XbU{X*W7W_nFQipy$Am zhS86CX$OWBQyfq+bEEPjuOeu)6YgcP{$@{MZ6J1Md4;NNQ*9h{&?}6+Ym$ze1VMH1 z(NjQMK_Iki^qRU_7mbX)1t`&N1FQSc!*aNmZCvW;e^U`3Py)`eYh36s2Nt1@%r1&a zqigST`R2qAR)^Jl^tc3D+~ALH`X>t#(Ow`l0RDsPCjMOFEbP)2qdv90 z%x`Q24zgCs9bu4=nrKHm&*J4iXXm$XQb*|2&Mx7(IC6-5>M_SeIla#rHTO}kD0L9d zs>L;ho{WLCMk(afTu|F-q>y_#|LWB|hVe(&kH!7u-Avmq`FIwyI_=?V@+`X|>0tN7I?o3TGOl{DnHh!6r#~!|(=*~WUrikVHqfQDrClv4e8pnRH z+#0X4+<(TyHDS;7WK9+D<9>p!=9fZJhQj{)kiL%#@cDe^rP##oNe1f40!@>&UPZl8 z@z-uUh;rJua;9OlhGopuS@<#uyZGv~W3ERIgekqMuFBKv*=O1C#71a=g$U7g)P_Q7 z0k*VzK$Ki{=PuQn;`e&Pe6iA3+1y?Ok(`-6o)Jee3BAFqy_;3S?C6*}cCzrZoDas{ z#^ObC-9=uceGKP68%EYA?B;^`P4svM4H?OoV3%s%hA&+Xlb)<*h0xV7?0Ore)w0qx zeI0XTU@faeX_edu{iET`PZV<`SpjXO0>UKzRQ1qMpUEYzSx>W=XcLz85$H$qJwK%? zcZloyslsaztd(arnVfESPPLjC%{~Q@V@njzwKk29`EiQ8`l^!?*jR|=3*!Kc!igvekgF9~BRRmd8!Q$fksc|(`vQ@vorrqf4dU5~!R!D^up zs)G=XGkHO0j*Zm&jG)w@*{EjkwHD%&L%*xGJzx)urX_rqm7fV58$zQBV4f$~H>M=n zcI6$*qjxs)yAY3enJ{@ZIkpi(ixF(7ZK-RSeyiU(I9;dW{NesDh4x*s(H2Y8^?ET^ zyu5-V&sRHl$=xDp&SUs&+m>~Du79iwlC`Qf9g>1+lf7d!1=O1gcI|29_h$oB{e?Qu zSEo2nwsDVaM~~VDh0RTLcg@?ZR8A|*>7`ef-3&9$vx%&J3)a-uGMc`)?^t_d88#T- z%kX3`>AWX6e>KXQieyhj@wwoS*I~F__!E@GYLkL3{fw`x8Jlzg&~eCytIsmdi=d(p zpGJLf4ySY}($ta>=89JPYUfcJdDCX@uW<^dHXqj+5PsGjbYxIeruKZp>OGjsX}DOa za1_#hw8(JNdbC2fv5?q(3t$AlG#-BNho zDqdo3xgBg_*OR7=v?X%78P}21`%}emHbYM~Uc?`?V-#nYL3DmorR}S*(_c1miLYG$ zwgO&^qlBEvRyF*$g4@aXzoltQ^?)dknw5T9ELr_^zT4rssZPCV{Zxbfk{#!(n1r-b znW*0VDF9KBmqb)hzZk-?y22<9ca4pBgx@bfhF!g=&#KGqL zo+8cW1fQ`ZAve2ZdaIN{;5Pfmu!Ph}Y(ANEqN{e1uVb4R?^*#LB*l0ia$slYT`Utb zvTU|Qo~pvbw%yXVnwH_~(kKy!koT52%?|exU2jN?3}K$C)>htjo!c->W{ojA8(DRo z$55|>C{XWB-3!MnDlSMnup2KWc`uCm=n9>`c2Vo;YkL)D59USstnau50o8(L2Ulty zXM1~>xxSx4G$;Q_lI2UVI6lY32c~0$z5&q$OL#JmPr{LHL+my{lP?B{iqA4 zGG(S%-jgJ#sPZ$ax(GcmiPbI1CZpq65gjjM!RMP!?BuNT^0L&D(B ziADR0Z1rg*9qSH6>c^DQ62oLu+4ocpEGPW-U7r|URwgIJK3^~QR-S%alo@b-@O8~Z zCTZ&EU{*0TwJOWQbr%%%UT=TF=%_IIZZt~-r1+SN=o2Xqm)&x6H3ozv!652Jq02Go zw{_A5`spV>Qq0{^Sqwi}Hb9<|Ui>bne=05V`wyQP-5&sHp1X%<3KbRY`}xt&cw6Kv z)4hz1%bK>j-@$a0R^{L;;BoD#`4jcUhq$Gv%TJcByi2Rx`N||uU8IjTkAB6EQKBpR z%~)1&gv{d~HNo)+Qw^0HjUwMMG}YQ$VUiC%;U0$HJWz^p8hAcIwZKP@FK+pIM~}ys zXDpQgXG9BP6rZzI|31c}KCWE)vlKv>yJu9B7}NL=?s%!K)}_DHQ7_q->X|fI6L8_l z5HNPB87x0oq+0EAqhnyO%JyN#T%otdo6$^I-PB8l8Veu}ax=#B|0+04k*(&k#AJa3n@cAbouI$~ZF?AV2=} z$s7*RCvQyCtyiQ5byQLKtH{`ho3{*%P*iNLt*@^47qW3G&?!C$d#PXEahGPI z<#}%i<+Lx9S~tk0cAb~*nPUpc2a=b@_Fziik9=|(_L9GND1(3n!43jD8j`j0 z^Q-$M)!z?&U?lqJmFG!338vHU2s;|oS3gcJa*Su1n z^nKAZeSR(cJ&KS;eNA=MpJyt_q&PADApjsQ_nAa#8;&yhV}qP3FfTBZ^HxYyZe@Zb zg&Q4BZQlZ%!4v|sq33Eh-%#=;%q;il^DvdyCLbU|6E%X0SBA;B;qopz!@-UB_cjA( zCqmd!dASFT_L(6CYm3n~A<)?;d}_-0#oE1Fhoh~U`q9ulAzZO;MyN!ilS_0SBC}mt z9urYO=4JVNC78l#GFf9-t`Dggju0273iI)|q;vQk^-mDwd-LdJ%Eu*VFTne1uRd4^ z-#)}~a$LD0!h@C^z->*kWft-nmAZEF&)zM-b_%25&Gq`&*zAia@Rg?(9nz3TEm?F{ z2TK{~!`BO!i$-E+VvFY=CGQV9eP(%Qzj0Q$;4B+)dQx4LX-~qOq``=u{pEk4lW6+8 zzIvigiKf4tq5kb>k`ltqlGSpdV4$|EMQ0pjeLlVs&Q{ZQxpE_ymNi?`+?2QvYCf== zf;yI&k;J;GQlS-6+%H$j(Cl#){GIZw8*mDLYZ>C~Tx;><4_uiV(-|L*CO=wH{qOtB zPKRx=ev$K#@yV13E#HV=oR7Tg21!@!P`tjDYkx&v0`K3|Y>uUbAL!Zpc8DBCZn8=6 zl0CLRuLCsFnhlLx@FtfG^XOW}@5y8?5W9)VFNpKO;2(NeKD(HBi6Nbu{9S_rUPb50 zrVD&TxVF;K@{Gt-eEi2kt^B|a$sf;idDxgq)1Itq(kh%{iTMTD=kAGN{@^`Q#sSbo zeH+S3QsG<rT#gGy`q&s zZVQF+_jT$Y1 z*S{QCd^%Y7UbuyNc!iv_wFDw#D%&sk8^}-tiuJS;xy9_8lzlC-N};a`HAcmUo0JHX zJ+G&q#6Jpuy!zfTfk?{k$-uiB*%xy}ktD6MlbMPH5}H!X_R>D9pDu2y4RIDA8J;@x zCtEf???#y(k+#Rh&Acn^k0oauJt0g=m~Qfw`11Lly_sRc`y&~2pox^6#PHCFAw}O7 zs|Wu;e$d}+qwOsHSZYQaQ%COKT%3dx6+?j|o-ERDJuLANj}aRYnbd=B-@ZFv#9u$W z8ww3K9^q5fsE_K&eE!)iafPQvg!w9R=%#OrWO8cio5PnQd@gLGp(Nu07g_FWFJ1Ud zO-(gtYKyv=K8qXI#`V(XdqL+Dp?JGNQ@D2FZTb`ry~;PX!lRDQUZezfMnm(dK_ue!_&pa zc4z8iu=m%aTfiJ)ncbWT-HlARY(i-t+v{im+I|OZ1Wq^z2;R`*zwiGeHKM{cUR8rD z*+Vhx93ERFW6&v^g!(aRt7jxaMrH30Ou*Pl#4mQZu_y0lPY&}8hXw^@ZmuIoqn06k zT;%!1{=Fd0G1Rv;{0Z<&2@9`Y8SvXA*qZkWvckybA%Y;$EBIhx=$F6dS6^;A{*&O7 zshw`4GN#&=L^qV@`awZ5#hZcV*df2};-W3Z{3U9z$=5@9gEb$Tp4JI8pvSwve{`Dy zqK2sDji~uM#3>+3N2-3)?Z|ThuWDud`PrXPgC5BH@FwB-si-=Ze>9JDvd1tV7~ZV1 zr9;QIUF$PU^YYVtVQB9R7j<7l=Lf)1<~j$;ZS}9YvpeUM5S($TIw4(io+l-X>`XW& zgiDbV`C{VvBUk>nJ@3Ri2+Klv&U^63j8(1QWLl(pFqmeoitPxaxbFQscfMUGfZ;|o?yG#F2v}B?C-fnPih!j%)|(E# z<+-~RM0$DF1@PPg%B@0D+=8K84+q>@k8NpH=!XZ6EK_X}N8XbOEtFpxW>NxyT29tv z<37P0H(Iqf&lkZ$j~{5%pZBqN&ipDssjaljcu5BB0KsXT5IU6EVEE01B$> z0DR%<`Yj-W=il$-w}8>PZa*&*W4A6{4W1 zUmsIvE{JXc9~G1@z1@=|Cf+wvnn&~Sr8S(Z{of+Ao1lD}fo z26MLdrYq~4>je%e8qPS!B5*;l!s<{{EbNY{wWa2%&dj%rxy_WYVP|FOz?3iCx~UbL z)4nA=8ajJfh~fL-f$E4Gx*vNkV{%%F%$6LyNASKN(& zQ)3UGeg4icrv}v@Rt5Th&@?!FHR7j4Op6Qf3JL9O5De;ArX7RWx!IJiEOitPyVySv zgDk&(Ysc98Hw$wjQvDflr17a{ zs)>+4w;j2ff}GbtQ`Wlz#B6(}TfWtbLQnI(s~oNGfC}4SxmEN7P>oPDa4CQaH)Q45 zr!9(Cc}Ht-t48(Lm-})Rq&$cb*KI1A0~1-fvZ(c^zcLH7}-_p2n|uPNeSL zXbk7T*J6bu^%q|*ESChZbgs=vylQ8tI?bUyRe7HY3=3g&1qyxhztY8y*8H=Q)C2hf zftJM$U}0`sDW_pg(iKJR%Yx~~^|rrSvX=nraAxFev4V=xOJbgTx(h}H^mJ{WrBer5 zX*AAN`*w)@f8}w6KMnp!VcN=$aPQK-Z@ZsPV_qG`SNL8)tpXr12a%c)k{BhPTlvd6 zOJ2a`enQ9Pi0tu(F*Wl@))e-Y&h=U!53BpPZ*A;*9`l=5I|l)sb?&uXJ}uG@nN0R_ zTE&>SAr=ImvQnNNTeL|KFnXW9V{VM|8GgIif$$vnv$P~k@T+dW1>jS;4Es#A>EtF4 zMU)Z8i@XlppD#h0ops2Ze0KM9Q&NM3$jq(IHU8Pe>LSu=G^>%zWZ^Y8uO+(g1;VdO z&C4wX@iK>%+Af&%rum? z|6~Rx*_Xz;W{iQ?W-sxc^fJp2_L?g=Ck6^glr<$#y-C!ka|YEoxDCQ2b1|c_cWH!rGFJEv_*R|Xe--=CO=-! z+R%4_?`kkL2b%fVq}q5tx*Leyzm{sxJkGC(&8YYu@jB5ZUzJL5DzV+RwGrhio(7{h zzlm2Fj4Gd>|MvS1-sNeEPn7c+L2V`4-SwiFiGL8*s;vreItXr^{Ra zah~-uf0^7|tl5^rHA0J3>hS|p$s16`oPUeH{OQ#trpEOeUoCJ`gaj5#oQ-z>l|56M zsR?rRWwY0rP-d_f1%3@ll};z^6^i3@c77iknpN;*DrIaQ*@fcHjerQ!O$;|@nCmaT z-^l&DBC)#sWVXgs;@j?#uZ%IEn*OT~d z$H%%l-LM_&3ac-gS${PLWzSz2_o}6*(NC7pQdTYq{I0$4<-L?y_UDYTc1>65Ku?R` zlDgh4-v7RS_MoBg^GUk%v3&agIu~z|MT2A5H+dSPAMYJsw|~-CUPZ{1OA9{#=RWX@ z<6>r6@LSt2{r?==3|vXPs*~d7w{5mIBWF@INYp9(=K7DLZ671Uh**zI!cplQnV9~9 zY$;qn*ZZP;f@Yk$>mgZaPv|+ro_4*`LEI*m$Wn}A{wAO8OP|x<-i;0-U0Sct-x@Sc zGwJ6!p1yTF88;BuPC0uKJm;;#@^dod!N}Q{Q+*W?HV?J)@0~LmTZ<`)U?qbgz$dh6 zhrqpS%0T=(R5Rs7(QCgKnX)Iy39^3Rk3PPZ=2@93{73M&9UrC4 zTW@^tvZtM&AAB83Yz@W|aZfq=L+*61DeYZg_@*s(or+J7O$>Ql>D~exTeOU#-pOn*Jh4Ss|GbsJx@J*mkk zxHG92uGS<^F~YlPk^muM_;ugj>d4YBUG392Ef=Lt>U zQL$YQG>TD*x{CeDr+dj1gRO-i-P{Uy9KGO_iyiD)oKCaUiFyYbPkCPyYg7cNVjqr< zO*}|dFZ^EM-kguPS+n}v{p+vmuULKtgz;j2J!=$>+WZzk5Ai0d`G)d-o+?E*?)+iBR zOBoY1;17lq$&%?FuhjJQYt3Vkkw1YAGRB~2tZO6cCJ$TnJj^^oOz_*=bl}-=Tl>Zt z944-y8uaa3@_4hgVMBN-C;#FFusm3AP3{27;7=*$9eMMD`2NS;IlQxBn!QJ_Pt!FT zJT4t;kmb^6w|!rWS<8$&nZbz3Sm2O^EAs>+v;LR9>!HAcP!e}<@xiCY=3aX2G%Lx5 zB`D$0m*Rny@}MNIrz0n?^vD(od|jpjs5K+O9IwB?du-1)0eIFoTZBCAY8QZ zq_J{R-{)N0X|zc3t_wZB;I3i?JTkeYnUwZMaVOE{$P6cnq{T6!dW7;AAJecndotj} zIbq$tbW(@-l;I-^Fs?xjGwcmz?gvNFhi4Jc+Na=-ocWRy9?09I|oa-|PQ+E?UqYN68U``PUQ*P zHLAMxvh1$jilIzqVO5hfYZlXoLL;D)Bru=<`%Z08&-Z0(Grihm#nVfU)-r642^(FD zyG0j1QC;q1TwH3m@#JuwE`LY~F4oa1QF5aerRIsR`$LO1hdPm&Usu%g)YSw*d!?Vv zLX?;Ro<4mf*u&XG7dzkPEGUJaz1LRw>{Z4m5peq0ZYu+afK&vPfML?!OzQwD&<`Rp zIf|799)KAj{Cf~N3~Z)#2o=~35w3LC!k+-omnGnfKHSUpa4H%WR7Bg5SmYB&tq&iQ zc}90#;}U3CIFz5uSmzh5S+#Xj3>S8mike%7e5z;VJFt@|=wK#zqui`*;wi;{tHTR9#`_0~sEE57hk}p3E36reAT?d4$ z)pZqLopq+rRJaxo$FJt{$)(c;TT=(^I^Tcq2Ep33?+N?v)i|&JrHHW=NRaQEJY~f6 zXdn;3Qh{5o@$QdK4?kT?!mgd5?NHfsDv|}I)s@J53WMSPt5POx1^pwS&lvvg6WRls z(P9lKudu?OUNtmL3XX1TB&%dBf)t`ZovBos>Y#7Ixd)4E{A10Ju+;Ug)p*YwRIM;a z?ucXn#Y1M1v7N%Mp2fRADR2Bl7p1NujWB(5e=+|c877)FYxM_WwO`zo*#)9>&oQpQ zQ8#P&x=Lpc*O|QxH{Enex!yn^o=VA1NLcRn{zm2gxu)flbze(D8oG5ve;`s*maeE< zo6_qk)uFzVLIuj!M_R|tpf}5z!#}w%=UyFyWUCNc^A}C9<7>j}+37bD`O$-0#&Qzg zf4Ytv^ab^q*1^uRyXB#YcqLytm57 z*x8HHR*Fg7Vky@o`{_|@2&`wJC61Vn0n(yL-ADeYy#Rv^I-$j^#ka0`c)Q@-ZYj)0SgVQUbFFA!m=c{I(^E4b*D^7 zIQz@r^B6Vddd?AdD&R&i57(uAMpcXU_;jW5Eg#6?#86S2e`V@s4=n9nqoE}JG`8vH z$`K1KzExK^?GVmKTH)Q?HnFpOlZrvs}oq+e(beS8{?6q0jZMwHC_e z=uLWu_t48Yxl~Y6PNWigXY=B+*-m!yJu6I^Bp}YfjGovXx&3Oj(yL==z#R$hK9#2} zksSAxiitZY!5oSzO_}AhpQRNxmvZ#%Ye3#@<0<8`+gs_)Y0omlX&G)+5Vzug`qj^9 z*8}Z;GhhPP{CKO{tm@4KDEU&{^V>MD0mt95-A((cpp}Gjg?>tn&HnMG`HM8?4f3jh z57gC1R=K+JmCom8=h;PE({1Lo^X7^7>`lzOa6lbvqmt3{G@{(5pG0UYxU!d-QfqP6#ll|-HYC*G1Td9& z^c9<_UOnupBT})iKzftvY0+7udJOv4W#Nwm{iH3a=}RMxShYM~b4Ix-3&pvS;u(Z`PFs%@1c;seH_; zw588UGwS@a=)K7_2|B6 z7%rh7m6L%ooW_42;rxF(=X_(}OAirib{eC~Vt5^V)W^#z1Dt(pI+z*84m4!!_eQkw zmub{rF@6(hpV(duw=y9YH$&|c40FifeghTfn$LkeUE;41Uh10TPs#nz=bjZYEAqb}#sMR{Ji@sm(@Wzux$Ad9okOE=^W1y(9JXu>qA zJ-Q+&y3&)J7X3(1!L4&>)gH?*+8GwafehB1awSBFu zMJ>*ebrrE+Hb_`TNXW??SIHWKO=)qmSk6R-Iek?0{&Zt`@YNfn{yoaVNmPxe_D^5^ zo$W5x>r%dGU2PsUMUajef#^MJpZNWzT#psaJcz>H^4tjI#~A>EKDE?*0M~A&OPvC2 zJP;?H3wK<%Bk7Zx$o-(TTf?qHq`6hIf)P4^Ic7NopUR?2KT(TMui_DM`qRJkk2mm0 z)U9u{#f&;rFGKfgwG@k(^ZF=|+|{!(A4Ftx{Dm>R);0-yAe4 z?Yvoh_X-8RqD+x8o}&OC#2WA&LNcv9N2mpVD)*0$I`z!{D%75GOgesHg$H0UllY!% z!J6|EnTY}SZVY;7J?qoS<0)3D$?)ItF~rFzK}&lbXTz-u>dpq1MRRd@R3s`gK<)UP z*Vw)X(&p2=6Je%a0JAIwWFCdGar)QD-U{&@#q)YvH7 z^M)Rv*N5Ij&}x$>smQN+_?fO=-RioH_33G5^I8=P(G(H@9>Tnq`%jALqJCkQ2j*eP z1Nr{|`s>l*_)V&oe(m%*voxPC^K~@*G2!_&3kdFRZWKV@byJqW?0qZTeh+vmT~k!H zx|Z3a(yYjAu)vXrMIOBMuO9e&9pn&P+s~5{uqsbu?f6&MzX;yyUjb>)b}+$MAtMB! zW3>KN=VBu|`1w<-E2!$NvDFECEHZIcY{mH1KB0SKY2m#h)@zH4rt@W3mpF}jXV4S; ztAn)oPvXhq4Iq*&)q71Q~Hrz=fw{NN8*bCb7`_YN(KGf9+EHjPxLkO&w_kgabbBLqov&W7fK4U zFyY5>j^e(J_-ErK@m`%Nnk0hu+<`1=atJ*bdsSglg%Y5_sO%^aroiSfXYkEE9*TZ=?sgj@K^!He+uw#8%3z;UN+Pk=0{7l zx@nR@!8tirABHR2wLNC}J`=XEvf}lu75u-bXX2&QL)%>#H&pUDudXx0+T-LXLcG}&Qgg~=S z-fXfHlYn`zYyF;W?@q0#T`Y{YO9)3^%;fR;4E}W#)mom;l%?*yZRLKZlW>PL;=Se6 z^vmr&>r3!w_E(4D4RIU-3w)daPX&qm&2XAO!MlGbKCi1x@}5~O)Bq3E=RcKozYx4_ zW8q6>O`_)dQJA0yp#JlE59eMT;!lb?{PQun*8aq&q);80ABQ#Fik=^xMa9Xki=oRx zHMv}qvVBibx%f4rNf{Q}rSwng!B~D+6*t502J<$j;nzRV}}ELqAc_dQ-JVb7JS_!!TYem9A>2ROisG zZ2~L`9SpKayY>d#f!peRs>!pqI(@v%?qYUgk&nL3z#~70TB{w}2#~Zprig7u2ZQO6 z-xY3UkuEJDkMG-}mh=ox;y+sS8fMn8vcU*vh3($m{IbjY&EbF?{ybFzTt*|`lnfZI zcqi8tb5gsA96*oeY$!5D)CaCV`t?p2&I1-C{VM6MWwD&nj-^|OWLZy@f`^esY+Bjg zO&05T9z@PJDC0C$do|pjZ7#(FWoZmPeY+KqFgqCJo_Y#M>|NAJGqy)NSL@R?JogsT z$XYccZ$CH6N$foNb@*YGH`GXFp&>lEG_4AjXBWY@ns8lfUsIRlzp-WBC zeAxunzH+wGK4Kdg>*-3r@hN$yx*?Rt%D5a$o-tcG^IYj(9}q&Ac}^L#&H%}*>7x?q ztnsAg-dWJb9D>-v1dRO+5OTHV?iJ%rNy3t`%S9$it_S#5v`C&>Dv$viivIwO7utQ7 z1~&3ZI1ZV?K8&Z8H5QqtUfk;NY5TMGmI>xBATLu}%B)m*rJ_fbEImlOSnPZSpe@vc zR=Q2mDgDr4_sH*#z*o~>3Vt0W#8GQ{^c$l%YkO845!sk}dsiv&W5RH1`s7hGU-2%} z(OyOD-`!utjQ$nuUlaUJJTKwKcs7g6kKJ1@p~o$cZ}6{=m0zvSSeoAg*&c&Vl2mE# z_bL2A_<^VRVGV_paop+wc!+S34%@N(tH3;Mn!r+m{Bk_rB%xlOXOcRjPf z9};i$u^cyZwyC8*%E=+z$UoU9`5O1#5$&bZqqwt~rL~zvkmsGMM?v2e@>hZMNoSJJ zOSc5gcPJlB{{Voms60V=ZQ$PnJH!SpAQ3s@1koGB@mLB8zSIk~5g5@V!#O`5!0+W!Z>0e&_H}N!nD)8W% zaKCGd_g6{SoPF$i5&dhzzA$)Mbgg>#PejGF!1JxW04Jy5c%oB{8t}zOSiQ=p%_vHY zw_6@R80d4choP>M!byIrO$486xJ`^# z3a71lImBsu2Ip(^?kp7VDAS#T1xAe#*OR;cmwX`#UH){-WK*upjvKQT?Hp{wnn2 zt&0BuHmwiY+x|nkpZ$9;{)JS(XknihKs{_%{{TX2=8FFSVP3zfz5f8(pP}L3 z0o)!d=<)bptl{l%d2Gi^*?UXITkemwbgP?Bh@TH0DZ+`}Jh?~w^O;8sKSTJ|H^56v ziv`zgZcwDKT&gh-rd0UMK$5Ks*a*O?L}OA z*Sq|98~j<~H3uJbXa3o(cw@rA6(x>OB#tZE;m9c}zv5>uV(g*lb$<`m1rwxXyCNtq zdY@|g_u%*g;pUs}AO8SDHS!O`(wlCUFrW-@J$|+J7s5r`@bgOJtZaYr<6eFxKkYh~ z?7u^Mr-hBXpE&r<7yDmQL&z6$f9Phod8D?vk)nz>{{VP!4R&7;W?OATRB}LHwaB?S z<1T9xN3gSGf_T(66k)wxOl+_kovg)lkGo?H44!n~MHaiuEH;+xQNN_AB~vlGfZY2s_EX{2@Cb9p0gmPrXc zPdxWE&P65mphe}K`JA47saqKJ1GPmyov3P;QcO|WM`Mh)O#c8NKhA2C+G;v2@g7-B zpPd-tAKguTZUZi(LWjbf-tF}~yj^OusjK&TTcOg!cYkbAmfqnX_>=D`{HxP`7Wj&N z8^qQZXkIujU1GS5{{VG}9Q_Y9Q|b3e8X4m%f1$6H^_@ChFITy+xLi$b zBSwG6@#4OVlg2g{{x^fd&9t+_lP-Eo**`DlE6#st4G-+P&9=7+Vmr0+$6wEd(vj*NIII8TyWJ&wcRIVZqOJuYPaLcVeMj`1Siw9T~z+h_jzHS}-5Z}|}4 z{=TICLcVMGtuNW&y>keeh3f@V&pVqOcdc;IQmKYdxiv3pwm97-?oG=&6pX7Zh%@s> zG3o9zn)VNdJ}Umm*DUo|pEm5?Rmy|aNx}TO*U#Ez)z{nOdva#DmQR@o>(5W~(!E2& zHdENd@yNl_PoE&i^LubmqxzCuV@Sot^83D^8Wx)_*S=!tQSo9TYaZS z#nRr-%Tw$K#duMKXBk(H(vRY9Zm(l*pZ=^2q?@|V~Xll?2`{{RG9TlhEO zz`VQxAIdjV`j#Vw{zANW;hu^8z2gfzS6$FX-gMrZSDbz)1M#my{h&3m2A^r5z}s45 z=S&Cp2LOJ5%D6C1!knwiqOv;iE1qha>#IB);?ImP9j>)GB;BZ9Ir4!#M!w#_a4U|m zgU+yqc_cDO(e83iNhYXxn^U*dwTs1QgNTmE8$Fk==5lKP0EMBF>q@|2hBhjH+8&kl z*?v{*u&Qt4mapb{b@577Tskd*VGk(U02vFrJu_W?f(%hLxprW@jP|ZRa@O+%a6w`? z#tHub^&i9QU4MsdF3~*8hA#2|5fo(O{A(QUohmp-8E*FVHo(eLt98)&v*BK&CaK_E zI_7pQDxryq>Piy1{D7}A`2PT*MQN=;s>2=<`3lX)8^`#MvhM76p>^2WwF209ba{)AT}Z4Sto$T>U% zUt5%7<68?EH?Ln)gByjCsO_-v8Z++5IqWJszb)=?bS;033ivIN`Y%^sb+8N)zUsl3s4d1spu@bc*o7Y+2^G2#anN z_>3tz&&ojh1N5oPP~$s7y8^|scVw>Ylb(Mr^;=NU^-Flt-R!5>4(T6Z!#CH`s$AXN zh()oSlu@+sI(lcWE77MYR#$|syozbX+DgSqKY1Y|s~!bdRtXl|0^4((R;Pz-35IL= zQ~(g{&1PRjV+$mFqpp6QqO^^8x$+|kS-w-G@Z>j_T1;(gC`DFfVV?OX`4L5C+Cip6 zYaiRLCt00$;Q+t~r4?L-8J3pt{goMpXL%$tFLY7IKA--olToyJRNVcrT{A)#=R00K zyx{);dx1b>4bk$m49nFWH*Yz}$g1V8#L@|Yjz!6k1SI>CJ!|GE$;sX<`g+iGw5=Pi z{f@iNhga~$o$T(6(2$ZLJcb+}%yanGcBi-g5zqCT$J&upw@d{*aoA?LrioTpdwFGj zxMHC>&UwZ&inXm@nDh&Kc+8RJc5#z~!0YOEmyF8Zei8ow$vV=%+<*NItLGnzGR;1#tw=W)d#BDj4d37^#Hkz6rA=)nj#^sQoS#dc zdpf+=EhNlTvB||rX=wAf2!=zSx(9DsaTvoYFgXV#^Ur$N@XC)qX50t^3VnI!`d7D! ztnl<4qP8NEbtaQ!Flkqaxe>2S0L_ZAZ=_E0qg)V(rz9(NuU+tGhdd3aXpr3NJ|Q;O zY*XlJRz*t}$L(%<+{e**K)lB~FZGs&2-A zz)ucIKBp&$E+QfeaAUV5edjz9K7;wxzqB5-(qCEVaWUBn`STA}KX>%c=U$6v;(rHO zTSseatm%-$7}|)Er~p?n;>#b0J|(~Y(7o57j^wCP@!WxsI&fo!*wJ|i;SM=~@i_N6#e*xU+@XxJyj^f(!v*tpmaJ>Hjx@$a6E?9+5DJ#V- zS+r=zpEJ9&eGGpX_@7bnKAkHTL)SuWa}+sL84L7T!7X&1~%kPjwwX zLyF-ov`>Wb$QoY}T}%P{r*H@ITJH3Z8TbQAvX08bQ@6K*J{49c!1p|Lr-F;8QO>N^ zzGPxroD?A!r;(TN<3Mc#;va}D79zIhHIm)2!A5L=KAk@bYsnT>^I8AST z%xTVQr#zzevGWzilRUVRRo@`=ZYqTOE$h1xW`S|thEL!t-lg#W0K&cbUlm;iJ%A_w z0A#3cv@eDt7V>;mdA|p5$Vkuq^HnU*7L}Wi-faq0qVANw1^W z2`yuZ9z5;^^7z2+2Nm?Dyx$6StyXPH^Hp!O&Ovg9MFfBcOnM5T{h9E8{({s00N-+d z@iny^MSMJ^>}MM{eazn^;*{d{w#SF~cS>zH&D|VpxBxbH>(;)p_*OCS{{TrJ^vC}I zW;N%lrTidSRsR6B<{%vHF8DuRmb;5T9(Wqk*)6SgXd;F+3W%{d3O_2U6&tTA)u$V^ z(V5rxsi;$n)5!Vf$B?`0I<<6!cxPD$p1FqxhM%-qb;dAh_K)+k-eOu4CLGnD|n`gKide#=2gP^A#M(@6+ zyz1(FubCsRa~FYr8s$_Lv$h-$;+2p802FKHO>M7l8JT`}m5a*kdY-lPma*es0cx6b z);GGeQrpbCU3|Cy01Dt=M)*&>u<;G>AKd}J_=>zk_u%QuHjdY1(9$wfi@WkXSlen= z>Iz1#G5jZ-)kb+Qriv@o5yXU&xg+Ku(;w%W^*bh>D;co<5$#JG!uD7l_6-kwG3_0#Sf3LN9m6Q>{g(Hlh91M&S zJ6EIW5PU8gY$H&+)SB#|GY}X6*yk7>E6U8OIb$cwWhHH2=yXxDr55jJ(HvBoh2)x{ z)gE_ivoD-v&pWf6*U^3=(*FSAFYp4xA_Sg$bebYZ-IEy~;rQ2`>F41UoyyPV-p*9y zEXw775squNUy42qL<+Z)1p@#JcHmZcC{w2ysHx~%KJcRfuYjJ1bqiuHt zkjl4GhF4M#P%Gzeidt30=A)|E+qacEU%M-AD~vhh5z@Yl9~8VCKjrpe{{UT%w-sVG4~(VDz=xfJ=irOy{>A2fJx!dixzcGogVZe#>( zA&JL7H*ZSpAp1mfIzM55|-ahT8A#zF^_^ zZQI{Dsl?_OikFp1MqXd!YfhClXvIkl_(QE77sl4=@3srS^m#eslk%U>74BX?h3-5T zs>K>JyIVHZQIbu3w{IlT+%tiYa*aqU{{X-n@L$5WIu4g{sOm9!cXxqy#z)N@V>};o*B?sp&xsnP z=DFe>PUv7cc8Vo)fU2hee_HnD_^sgpIJvoD?E$VkS=Ig(YL~BfabtM0$agzLg##Z_ zGgXLGy_8`}Yu$I(sWe>qzp@#3CJJuF4c$Q{{Yvn zlf%9~@CJcwZS=i5_62TTyr5aWq@0@Zu!&Qz?I$(osWsm{K1jiwSH{l<{{Uy|_Y(_p z+Fqbbs{zDrPD=Z8$gd!S!T6Pg_hF&VKvn1Uuc$R2ie3!Aw0m3IE4zqahK@)SgZY}x z@U_>&eOFzI(@gNy%$G78fh2p8M{+@I04uUJWlnB5YKbXy^YS4{@>;AOhnRRbz`CZW zRy`X`Z!BOlCx?rggHCf|jafMJD?%vlJWKHG z+t^KcqUyGq&AduXvBW`(lb1EW({AU%uU0S{q9H}JY-i>q?CNZgpb8h{a&1#UfzL_Er z6;TdGF`hbCFp;Iknj=N|h6o>pbUq~1tmU?uAh|~@Fa{1YipSDKQa}JGWL3u8;Md!w zWq9;HQgV+zsZt)zUES2*-W{f z?PMxW!WENmMtDcQNWR^Wnt zMl)5NmTgW*ty(xOrG49q@Cf4|d)J8t7p!(Y8rg+zR+Ik#BDC7Jrzl9V6n`qO2tJ+a zOK7f{r+cWr)D=Eck<$mDr)yd~mfGCbVnc9td5T9JdCgdPWUy!v1NmY+v*RtCe~oDB zMf^QZDb7tPH=!1oGLSC9*a~)z{8xAI<-onU0E|k2f#^a10PEKarx~4*auQyDKT7Jn zC379FrE30Q!!945osD@}ggvb(!5?#mcA*#DBkbRS_p5i{J9siT+RE`T_T9LChP+$i z-j?>BEY>ZEWe+Kt2%r!AaIlUpRjg&np11? zNB;mWVY&YPILBU;k@$hx0XBS_8V(oxsdia6@B*_Xe!0ICJ{h>T@-S~oZAV@rme2$|zWBK5I2DASF zXdQMr^$TqhDFI7RWt@Y+VmKdw{&nQiUdIP6^4sQZQTt3nOQG}ry>U1ECHBj0DUIQe z4%o=S=M{GI#0_r3Fphov8~IU$Me7+&ZD{4 z?d@k+ZWO6*jo5u_H8mV7tWly#gMc|X^d`AjZl=AxidM{zoRN=us+lDPPn|>aJFwW; zRjA`BX>Y{zOWk71+SAYTQHdM{aB_d0C8o7yJ)_>1Xy8GD7<|nC0Noz7$m*7JDf8mC zY)!)g0-W{E4>eT%q2r3qA?CT~3OE_>^!NUiIDD%QQd-lp`J2_N2+&fD{pM20m;lHNDEZ{6*8;GW$5DO&SQ(CkDi=1oP%??B|SJq2Ot zphvGj*N}ycEW$Y`qc;OW9ceZrzgyA+<2Q)TZ3*ipCy+&+D2?+rbh!K zCbYEKirie>$OLSq8gM!==zmUXPY>PNc#lQQ+eD*2Aay^`CEq7sMeEitzap_umYu(+m z%vDm|askIIYl3^hr`lUvk%oLO0UR!Jd-p%ey)JvpJ8unH&KM|`H3=H^CmjC(_3Cpx zx|K?;sHNxJ*DuA@O45qE5)gXnT9wxQw~;gGBm#@OfP?^;%{N95ejL~SPH zl1A*Fxb_&XD_W5)wOdhe9TG#mhw&_gQb;^#&H_ zIO7{fApZb5=f-6;AvWnjUq+Ga;V~|)H7U;5FKc?Y_BE82@J@{J31NjTDHH^`h7$PLRuaPua1KsA`&4S0j-c@VK?7%UZ!UsIn>wIp|!ma?oijIkl)f-$aBc*@V4(g0k7}n6hP8`{%id2I&N9Wf9x>bSuFt`q51!`nZFHMC zZ!VjLkc{mfr1S!c)4sJxI?%$eE?*9O>818-R$$ldE(&NNhm)b6$ z$+bd7v>E6dkx#hB54o2Q1+>gSyeavr&o-5QfJIjq)bT=0)KXY!a!XWHD zhw5v|HLFRrDCO06hc6*2r;n6>BVFV{B)ECxkjW#AF6>|~dH^e)YbhPCVOX*tk^H1R z31PcGt$hwosnAW!<9ol*;Ky@H$!LyWK)Rnx)CKLnGCH6mk>54n+}&yV_M2}q<%awf z&I&d<8uPoDWw*L=Vv$0e{K`Scr!I~C?VD?LDn9Fb8u}bo0+u3h#79ZT@m-G| z7@5Knru9tewQV{$TmiK{VVoX2nwC2)J>rjaX}wpLu*R58yw1&q}mT@w?F-SlGxgZ`7(!A)oQf``hp?f(xZO&bE6YUok zz9PDj+*~ru(UN({Q-S=2Sh=^=HF@sttjd>F++zm^9asu2fr9)Qifwa{>GLTYvIsS; z=OwPGJ@vAfl4eunhQMB#!Tk88I=s3gA8iRcGYTtaJ8ofFWRC#OolHb~`g_)$h}={k zE(n_U%M`0{2)Jg>K?5We{JynH>qgPg&2<%~^mYWs80`GB zpVGNjHWQooPp89TrA~^b_3X=j1=go{V`X-V^38z^zQ=+MeOusP5?FZ0!-Pzz)9muE zE!*5+oO&AhYRub%7=jo)rR3}z3VyuS*M$5@b){-+f2G{{bHv42Pe&Q#5!@Ua@@htS zYO<>c`;T?l>E>9N^2ypuW2^X`;46<0UA@(`CgVwwvW`Z4ul8H|8uLcd-L4)sWj4~b zSPn1;Z^pi#@OO`NFBDq~JHr*Nl- z^v@rGs-Wu8m$kw);`%cxoRt?Pb!NJsFv_#N>|S!XK3>LRF}rE&_|d7fkXbl}31+xs z^2VIw)Z^)1*LU!L#F4%rxUijj9p!&QDJ{Ma_?AZkX{;e$=gckqg>6$Z#m;HEMAO1h zg80t}(ezD9<%E|?mhlslx+O1I_`4eVYS_6-mG5JUjvfko8XAMaVW-P>7!iOIo&i07D&uZ-1a*01aLflgPbc!N z9~56tX>Dt19Hu35S)Xp=2h;Es&v_Ew-0X##0ulZ-cv_AWx!>Y>xcT0zQRsAY zz^P-o(_~8`#L}#%cJc>7(*X9VyfvmJsoD`*?&0vP-4r%zo&JK1_)Z zpAHmfIXL5XGlF_{?Oor8S{r-QHPp+pGdqCZ!DC=a~u#9!g|B;)JFT$a}ED_G*ZgwJYJs44>#9dL2{Sm!mmOWCPF-kh7CB|?U)s@XNf zcc}zRbs!|WACQ1>2^cxZ9Y0!2End|vrh@v`BvJDxm6ER+>H+LQ!5QgQb!!BkS!TDs zi6KB2Y=aUgP(}zI)j~JA6D7j2SQF(7yOa2L&2m(e=1xm<(Nv>4PBD8O9gd^A*>0c; zB#{$oKf+E!vX6WYed~VO+UDjn6t6R984{>;`Y^yF>MPGJC1}~h`B7~QimurzcalaI zoOY(Zrs}^m^2nfZ67ERz@6Jg4tF~EkscGEuBZ&5Qg_Am+TFltOE)44i3kHFR`FjGS z^NxB~I~Lh*qcF|@0FvZ!(;3HH)j00f@^pcql4%`)j2A2kIOCI%)7GzF$9ZGrVc|l+ zfw9*M&miD&*VcypisgHl%7?a}G))^w{=qoAw3;_6KYFB}-Y;-|UcQI5b+&RrevK`Y z8Dp3$?e4A*Ao?5{^KDvNsjY;?o+M`S{Iy;gzu6;(ACDBx8&tm0E(@5Y@?~84G7&6c7!q#e8UUo7`p2$DR{OdPSj^4~ztjfMa{H}V9tTCK> zALU&9`o+ete<6hc60rg#Iodk_Pim{I+-joN%9Rvj3y}HR2eB2%@D-Daj>~hV6H|<| z^g7Q6xAsSi&Y06Iscdm2+3KlT-0E__i6`P)H9e*xqp3Eev|r|o?&!F+)UmJXiKjKx zLR02J`?g$t?g7dC4n6Ca6AAW!S>4d`d1LLL=~euFsGFY=Y7K89JW|{d!N?#EIs7WF zm2r5JdF#9w*K!`+M5JmKo=B5-?Paj|s^P2HXDmX{XaE3*MCT{bs-4@1GL9vzwE5)%iWhCD(1EQg`N z_ZiJ})29l!cscv4s@Z(ZB%@I|H_NWyan|^3TAv^3Hqk1pLh}d06)PUlM&s+9-<@C6 zEhX0cL2;|Cv|(R!<~V_D4vo(k#yWnro#3Qs^~;@J>UeCOAykAuTsIp|NFL(44J}(o z4`HYzwlc?&6p@^Q4?9m|*Y&P^T~#G1Q`>8wMS-TJ2rc^9r>?-UUniM@@Ge17g(0{E z4#z&2>s*Gk*8@$u8IvMa^Kzq+&wP{D71nDP(5=+6BS|WtPde&hwE!7lGt;T)GD#Iy z^&r%=DHg}~hGZ_zQ~*zZ%l`naS<|N|(o>uFn*RWXG?hwjy0XzdPd1{gsGi56>7m$@${JK}NXt8`a@j|ED z(X>rKkKQbDY>C^sT!IJFitwBJ`%SQmXk?C7j55fh8wng{qfZpgX#yL|e>*&GQ-fbG zR|iwtI*^KzeHn%u9I;JPleD|7kEbB;55v16E-rOJJY$?qc%gss+*G=ckGvh>ix#x- z^|Ut<0m53KRL`q7f7ZTWJ~p;x{oRbk$l+PQ=hCQLc(YNuJ8hv$bsc%jerKh0Q^I1_ zkffu2r)tASZ{MBldMCsm9o*`7qUTt=1^)o$g|ZS7G3-CDTJu|7M(0!2^EMgXfQTQv zAK_Uu8ReJEo0cp|bJWxA8KJw5RFSf+mN>=-*1dctTMRSjZ<%>!Bwo&u-JPA}zMi#XU@=3NxqFewSQF7dj z<8k9Zg;c%LY%L*6#g<^t(XynI*QP7CxX~lICgXO-b@_n7&mW~rd7(plZxD(FXNx#i z2V(*-LB~(6bJ5LV9#|*qdjk)wwy& zI3WAiuxh>%^K{}`G>yhcP)m};V{s%7zzkxk+juP-O(^li9CZhH&*X7iyxN<)mro&4 z!g74h2Tikit;~{2s>JkW!NvwVdSZ(1-=XFoRH%7xl!AF?vX({p zPS2YJ^Upo0_E%=$Ewd>*N6M_D@&>KjY4W~|Z{rH8lI?I?2Nf2x<$b2YNE9gurb0b< z$*rX*w(YAtX}8Z9xLqZ5$7!}&em>J3$R-y%;*)?!p!9D_v}3qsx=n^aG7*$#Y0n2A zO3(2j-+ON?NRUM|cn5CLAO`^Z^gPzqg>Q2X6(m+!VK)OTcLANa{Qm$-;;8vjlY5)e zrm9KDm)_pZ9Y2QQ7K;;D-U)5)KqG(3Ll3V**1G$6EnX#_Sffb+z+y+v-oHxZJPj0A z`d-+F?vmk{xE%*zE2Pw8c~xa;5fU-BG%bvKeSK?+q*pfAXRC*Y?o_t9Zu&sX>VhHA zpWShT?_55c43Rw73nt+VtQ46zPEI%-PXu$=itcS0En+Wr?9wvjM3@=$T0)KHTwF}ZsK9Wmj>A0gD{D!)v3sY8 z$0?O_x>o_Zc0A+ot_)sXN)qOz+-2pl(e;-nX)CWY*6jW>Ye=A6=~h!8RAx`{r(FDJ z)!8v`q*=s$UD?0FylQ2h&s<};$Rq`#4V6-RujS9-T=uJc36M0i31yO05v%<1=NKcL zA5X@LcpOzrC09q}N~=Yt+%`Q&#h(>5i@2RH^~JY@^@iK!&*k$U&bbJ6Nc9^jCb4sp z2@d0r$GH4OaZpWWE|%6v8UrMaBg98BDf_tx&|{vQ@m&^$7w@M_C}p19Fd@)vDCBee zg(}%>XwRCXa(;j0Y^!royfpOx05V&RB6x1CFQuHyOQSekmQmF6-mb%>{{U!RUh02n zXo5Hhjt1_7AFXP%R(BSWM>6d>8%rnvKe#+#o}<^As1jKJ0Cm1dq7Q-q02Aqf*1Db| z5LU6`x-yiE-9psCrNM0(VRQ7Lnzo{RH6S~TRWta+D;ZKt-oFR0qhT z>GV0xQET>!z$8c`ImZKo@N*f zIgzOB4#~jzD=9M)W z3o5-^wb1B%KWTFVTWVUQ4Y3uF77Re+jo!H@KD6TU#WnTQ!y-bdz16Z;7{NHsLG6=| zdg%N~EK^y}ExeZYZD-8Hj0q1=qn=kI>(aQ76-vCnTR=PW7Rp_;Xa&WOcHG5RO_& z4%AWVTNwPguT0Q<5#c=@qLWbn08O}cV%}o{h(X3N>-Fo3==B{tN50cO$po|gpPa>M zDy~4zMh9*Ubv)89NG*K-0LbTb?XAzB(%N-pOK@knEL3@FTLd04j!8KFRl5w*c!u}v z*Xov%K!iI1%dsFFsUr+YuUoOw>@;Znt1CD();}tUQ_Z`7$F*^v5^Q3!YZGk+ly@xb zUIh8BUv@c_yXVrBaWJh>DMwYXO7U7Vm(nbtwee=1YjCkBML#oR4#ebc8OK5^TjEuo zl9mEXQ4&9z6#_UU@Ox*bbIoSzI$FYnmWoi#pCzQjteG3I_`@DC!8KCC(#?sU;v1J` z02MNP(ULt6eDEv1TYH@U03vS-+F7@VWsYl~DRvF4SHHGCovVAq9!{ZWd2V#%hE#7b z6E4liA9U^m=I^w6iseKS0Jrwi%wFA`Lp*VXh!M^S`tUu^8Ks|7)^%%pn>*>CJKbc< zIW3-qudaL4r+1-ks3mt{z7o@}E{M1#B8DPK-O;dcGt+{2&20%~N#a%VP8=}~yK)x* z40PeLGuN8RvAxtHw3^pWwl@}VM$yR3eLi!@`V;xqhLv*_#*=e-1-VVFv57fgavPt; zYAq=9N?#+BmP%K)j7<{H#4lnlbhxacQcAALlonvk&>rU}j`dyqG2$uaGqu$K!9YI0 zs!HI;A{&gzx&H9RMT9l5QIM&nMjwMA=#WQ&kOLmZ&{{HzL|od;g^&0Rg z@<_qF$lqxgY!1NjoMZ5;adZ^n?mvH_$67IKmCDbjnV)-Tw)bkX63{fNbKe84c2-)R z*N)pvu#(0Czdge#-M48u-P7+$bX9t8Zw|`laZfpwYy-_CW{r&x|RviqmD)dY%7urI6M{r3gmR#x$ZQHri#GZ z!jTyFGj0Tsy^;RkM;kK1*bh z@vp9@o?XTE%Q5-u#pFrrb=wWw(VLzjqcG?#CnF(zQ@+CcB*3ZBAP7Pft;@k1peE zO1qz?{xQe@09u=8GZ>{ti2>d7G3q{*9M1kxKOxvjK4wk_7$ZH7e@dz)X)wFIeLFyh2bPkCM4t%auAIBb*EY*yv(sK@_Hye>WimjedLVi1a|(1ijiAk zSt4T_bYKrY^|EO+n=q+OwA@!?r_yf{3mBf_-3duIG>x7{Z~(^y@H*$5R+M_?onvg1 zYIahIR1q0QCwV6%9)qd(s@?^SAfNudW$F#9>lY6+ z8e6TJxs%F8;CIQ-{{X76uIWmjB$L09=F!2Qd%YQPa)b&uZ=C z`ivq#bLIoJv-;+b6eow8^=&LI{Hc1$Bxfo(=ocK5RPU^`?K4Cd5#3$=rdHb=YC?>6 zCjz@^O*dxNzCluq91~R9`;F!ChP`g0DK0lMj!HUU{%e{mh_||uIPgiyIqOAb^{gNA z75$M{vOO*zhttP@eAn>^KFc&`_iL1JpbwpM#z_4AtE890x;2%?t1H?x{hD%8~r;~bX12@w0j%W?;OjVXYmAnRf!B+ZLA@7 z$Lm|47>k{ENs?2IntXBK{{RjN70M;-Qw4@dyv2(nt~!e4s~A<1<<%Z+>duX6wymcB z05i1kF0~?C9Xj4I6ls#Gr#~q@2|al|Yo(Uz;K}>2w(=;+WlWMk-Y1X46~%Zu$l1c$ zlTRGcFe=EOd3hWh{vVxhT3tzdc+gucmkQZyg;>KXB8-p^*QxXr=}tI#$?qqz)t4%m zno;N3KfGgVTD14iXB6@)7Ya&(+@I!6Z0PpOr&+x1a}U}hw`Y}P<=m6=FS}zSJu02F z1}_afuF%`Zd2=CIVtvI37+t^)2RH|gYhS~*P(Zpww+|J}WVNuoV0?t@^7O$tB#&}x z{ky3oJ?k z7dDrAhMng_boT^ZZ1N*qxj+eKK8i6`E+km&EblHY$|~Hov7SU20Dax4JAs;r(Nw1S zUWZ*cr5c2l$FP;~Wo^*GHkWmZ8Hc#T@u%Q2zjRfaB^w z9Mw$di05X(AaS*aWA*D=JU_IW zb9xvj&kk5UzVoev?2`fZy+Nco&&s$1>N0BG&)FrA+}qDPvj81pZl@T}rE}oKtSxOn zdvht`G;`m%&HxoKox zWZFk0_27SvVQH5-7nc>q-yGYG;xuQG_f{%1%Z(&g1w2o|xmbeHwokYI0nvHLjNl!jAaQPpRrn zYU(mctI2KQy*0nllzEr3Mt)tn%C83pvE$bj+}p)(qv^>Flw>Lq+sDL=3C3N&gn#4Q_UT#I z_jdpbcXhOZ=FgQ7Au+dtM^b(BNvF(O<*sfNE!$gOUC+6M3&s>V5e|Z$rg|`np zfyUM289Wj6_pc_BnydZZueD!!*q^6~^O@gZM^CBy||YH6F<(NUow}k%6`sCS1s% z555-|Jb#|`=vvQ&VAmb3C6e00O@d;wsdu;hyBu^UKbC3wPr=(sExywah^B_(Qc~UC z)JMI#{GgoU0Q2czUxUmk$_Z55=c|RPmoi!&VQL_e3Tf6aG>QtUCApEl?+v(*y`H@X zOjMBSfuOgCQ{J+M2|CCQ?3TkfB<;ZH03P+H1bU6a-02rW`K7bH2`rHl!32UjgOiSf z(}7FkJy-0vk!ekSVg_cD&6X@C&7Ufg*~ns7o`bKgbys|^Ly8iV<8REP3BAxnx;j`J zp%ud{Q!9)}NZdC9a;=PG9k+GOUGSElBzjHtqsAqYd`#n*kz2(G_RhTC7Uw$$xf z5a7Tr1U#zG7{h>jj5i;JSkvtwj(K23Wt_7{IOA%bpZCiO;g%w4TH5}m&Mm!JM=@DY{Jn5}y(^o)(zMuh1^&vrjJaX^$b$fL(<*yWIlN5y z6k2P#{ZEU;zpO^hG}gvGrXzz<2*}$aUF0)xa(Vt$(s*uIwTNUhTs57Hav~Lk02nYm ze<9aBbK0Oj2=RA_r+0@+x!Ustd5lFs@f88OAQB#p-uM4GNUh>wH=dzq$K5ErpD+$s7sgt0?(d$tqQU*~wFr z)RSBWobH$Q^S}fbtw{#yv5g!`icTDH>UY z_ymdZChT=^2JifPKb>KW!%a0(JN^gQWcZ3soT*7^Z4X!YU8&DyVR@v9!!ns8h?c{| z`^Wyk`{EksknLc6t?1nkX9ZAPtYTcjPE-oUqg^$hvRR`4LuUu7Tj&$0Aw+>lZMsg1a z`Buk+NIKLdvy?|>$r;ETSBqM16y-SU{b+raYLSH|% zXOUF2X&Bsb_mmF)*{mCjsLZiNZz3JdwQxr@wF;7iS17AgmW+0{q(^HK&tx{j=jR#7 z9)x~a_N>Wlr8A@ldpl!jCnqPS4R$)@0C;MDDoDuj} zr-8&uv|O3?*F%KXd6&EBGY#31sPGB_oFi|fx?u{4BS>_0NAV3FV6 ztlC=1dvs#7h1)qHMH^Yo&)`Rn<8$iHPv`Jdj;Vb**}B!6s(OfA(Xjjo9KN^Tfgly@C6eXEhw zd}kHJrZ{e1;hNciRE)4&g?~}mhELMDO@8>K(f*>X0 zL36C?E|FQn-!kkG+eMT3fzRWLA1MSj2psE2`;bH4Q!~ce6tisb82V7%PHsI}=v*T`g~K7F{*2<%O5bVdT6jt&ep% zBd!4Cbgid?n~mYB@;;sz_^EsQuCH>qYbl_%p8i>+ypLo>V%UlzQI+|K$z#_eoEpW| zq83*&UTN`14Yk8H++yPr5>y;+Fb)ab7XBUWoxO9@%yOdSeT+NFvsRlatF0^ z+B_OIm#sm01matLqBxr6fnA{v@05;*sI0F#E8br+(^b=H{JW9aPp92!aNS?pwZHa_ zsDcG6<>i!Nl_}bsp%(Pl zZlx)7yU4Gmk59O}isff-v)q>55+aUMcVYqSQ|aCo7n)$Z)V#>_=~&4Y+!>`k3vd8X zNaH;{Dz=xYUB}@!BT;!JTj1sdhb^~}zda8@#Yynq^HG+<;s|bh>pwV&Bb4qi0NDY3 zGC!ZSX^pS!=(#4e+p;)mLT+hm?{D4tkG{UL)1_T13k|l@ZE0o%ypa-ck~5z9=~qqr zYEX+y#0f01eUeSQ27lpi`|J7FU#aQ-7Sy!3<JwBO2x4-aW` zTujN8bzJRLInURDit;H|_R@r7E6MJ5I((Gp&l@7`q&Kta$9=Fyapki4g9Vd@_XmJ8 z^v_!C{5K?CBJe!AebhUyEfnom&Psvr&nuPs;ShtKum(hZ#pdFK_+WGD> zLZ3r}RrC)O>RM*5Z{(F3_yl7L$~fECfr{^SBMO|abLSx?Lanc(FyfBR%Uiv*)Gi`J z437{qN4XmZugiin*R6FP5!E5pG>uQeuWZ**T_Kv#+3sz!uQ~b8$`5>;aa{L`bs1m8 z63c0D5-GwIg`-}6QInP)pw;h(>oumOeAiG*6bMo7nH(0G4tB(t{_}OmrYo+M6sOFQ z^tg(=)H$2&_xB?4E|IKgz8+-NbZ9NrqK@7hm|J%5oE8j2U=z=3<|ULfhXJ#e!+D$( z#uYaDgU)N!{6RjMsak(!O=+R&lgtjwb8ycx=cep%4SA$6C9{T-Ez`u09EzN%a7f%w zKs(n&sLrmG?W(iC=8Py}DL2hozG&*2>*UV+;kK16hLG0cB@X$|I_FXTCbSC4BfD!lWLO7OGFb+A<<1uu5qissl% zB^gkaNH2Xmy>9GZwXxCV(j;V#3wz9fVn1^4Cm;YnjA!K|wmXAZ_pu8rSMx4)6}?-e zhA7;Ph(C#B<2$>9-}A1PeKy-u(#7qQ$Vn$8rozsrCD0Fkc;p^OaB+1h;tLd4(Mz^; z#P<&S!IU48LVI(7NaGpl(xVNDgNlD@>g)ai)YrFzU2UWN2?@K@b$M)b!{(JxvdGv} zhz>GOrxg7QQ`4-IQ@punmJ3y28YbG;3^?j}#&`f@*043LL9|T{*6nA8cy$-YokQOmF3m(L}RzvKD^3eFxnc zs=D;|x|Xrw+qJ=wVN;;njkLJSS8(OQEehX?XYpm)X9J^An z+@C%G4sgrCAD8}vUZ~c{b0LdssV=1U$mYCv;f{r?Yu+`t)U>eDO>H8xw?qq%n6W;+ zJxzP3iEnft3&Ld8WL-k{s=yD*81aC;{{S4*czTkW^ZUw`c-gbeZagoo-D>)aX?lE< z#O!>jS1THc4(2&01Nec*9Ga1Q3u&Ywm&86Sva!h};IH+ejN6$it|?SM~H1i z_xDj~T1tbkaG4)U!b?93Tf=jBx>lv)IT1-Rl2R1Ma!*?JAqga}y6ygFojglP#ydTA z+wLk!eemMPVp(ar&b=xY+Abv9AI;PSTwr@vm5#aMTY!t2>GHr6yvDJTvtnFp

_J`W69 z+YX}RRk#j*yLqab!(17faeEEj(NPcj6hbtFH>ax{V0~(Cmc>(pl$F!e;B_53HF$$w z3rS=ox-t=N&Nw@8Nf_u(+-Ep76p+nh6Ix#FjU}8ITX=MTl!hut80lJmFbdYT%)$n7 zoXDGU20;pT@zt2%jEoX`)LJ~zN1;-?!kK)0=Y>nXVXMzB%X7 zN2P1)7qVO@*{uRBW90z{-L7w25?I*(0B0!+b#gN+1IkC(em~3WMH-WuQF}cqg`tSb$0P{^Z#u|*lqQAEnR_>vtDxtPVj2w~2e)z3etWq~i{U$B; zGbjNeepR#74@1(d{{X@Ve*}_?S!W*s! z73sRoq@E=H(7)aGZ8{Cs@a!SlR{#tH(~Jz7@~uWGEbrS-M|OL1M1_6r)?2 zMcwIieU4X(betnQMJ}eq5M18cVq1t}g)+t4IRok6`I=^lrCYS#Y^Tgp3nm>jbl;{f}fr#0xuQL*ssCrM3Bbe26Lvqfk2Eax~rz*imc8aRfbs59U> zDHlCJB;@{;>Gxj_G|#t7e>KX;tj15Bh#;O%*PyQp7hatVQ>Q!GTju+oH7V4uNlQh3 zof7PfZ9`nYxA1c6LjLMVorHgAjQ;VI2xrzoiy)KQ+7ZSVRVnYB31i@u2*{)epFT-_OO;B~om0z@2n$0L>WCmlOxy1xr} zmd4`pZ6fIooRiGb%jS@GHbzEI0lf*wOlO+&%Y7>1;G4VKXNuM+lm#OW$0w(@Pg>Qu z)MJ9f${Ki5%Vp);=V ztr5B})v0Fh?069tp)agtWP7-|syrW;Lot z?VVPtwh0WHhM99_Ze)leyHEbC5tqr`^Bmw{=Yfuud_kw`cd%N|1Yjx!2X?O&AobO(=0H4R$l%1AC@dt|p8;!z1!9+)6;RPa@n zm;S#}zqKmC>0`6I@cx5meRmy=mZ#BbLGM?8+Te?_y> zbhyR!w67=HAVDhw!5|KxW0C54u0G>XK*Q{stc<)WD7xB4I}qF&WS6?B)9xpGXSL5+ zjG%dhdvqu1T=?8Pu{8N2`F~%L>ESWeDa}fztMWT}CysdtZN*9Bj9^x0iM8u14Nk;G zA#2D^Ac{2wH~#<$XV1z9QZbwZ>sfkkovP}0O>UR+M3Lk>0fWa{!}zSQXcB4qO|~SS z8%_5Q)cNupuqV_m(T_^&sPNU+6ug%9 za>#&@yfUyOjyCXr8u~fLGLJHkym+`+LDW*3xzuWt%{7Y$)S6o|;3`cthaQ*?39Oi* zp4lS3f=j(T#z{$xp?T@@;08TUKx*BaUouIlM;fBC{H-j7mKE!~Zs<=K&$c-=pDn~s zY$cu+3eABo31%a(C!qRQp@PbJqNi3zUNbb5rOO4P`Ie0FSj7@0+i)3!sO3MZ}?gqZs@usk>Xq86?=FAhWhhpQcap6*Pa@@!B+z-!x>L z5X;x_9R8K=)1yw5Z4<_nn|Elee#Xh>+$7>%>}4pUZaZKehdKQ!-i@cntC?lExNCb$ zc*#KQ%srQZ+|?=WEgN;eopkW92ML7*yXT7B@P?^nXQt1k>TN7`w>wL`TT5k0D~;Io z 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 zⓈ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

Ejd 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

Ak}{8*`Q^jyj8&8zCJnq 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 l>0n1Ld}wd8WCyH5N|T*Ul(tC5 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

aeD>@83 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

$R;pwGOElx5Q1ABp%~E zAyT}*(*$mOZ&>17AMQm$dKlmw%_BkjGHRMs=*z9l?o!ihZZ@&dIfmOKJ1sn<2KYf3 zE-z|YY6y%}J_FA;C{EeSapF`dy-4Z-)K;J_Y(VP5nimqpy*xRkCMZizP(*>xkT4+S z2{$CU8+l{^rii(!c00&-`xm%T4G{rggzP&13(URoY-4f@Zmljh3k#p literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/applet_bg.png b/attic/astro-desktop/data/applet_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9d25c9026d95efbba26383689195fc0d61faa76e GIT binary patch literal 714 zcmV;*0yX`KP)p&1ikCT<2fQo|GQ6f=N@Bw^0H9wILKop24 z^2ky+MgbAW9@)D)>w791&}w{U_Ks1MCdLSG1>6G{zzXq`|G*3I1Uxq}#=pP=(BwRo z6W)Nw0Neo)*yTNs3;qDN0XU=8uVhNk+Hk{a*ruG~` zXWB>ZgHYD6??a{;h=JC!5=`^LE&y9}5sYCQfPcUm?VLl{vNvr9ywa`+q4!soOQbE> zJNu2G+dJQKp2`uiGwak$^AZP=Ftih#tIc|ELx*1cq&>kf!fnWP|Sl(Wm++oOhGEsim_x0Jk7LX(C%qKrWu&B zXjKjSKBl|~7Gta0v!7qP$5Xh?!LKsuV?G8HImV;692R7n0hwkXSJ7Mt;ari!wb^P< z1G)$d$TR~o&4AV@1IOCabtIUXcr0?rydIWx5lq%SOM0I+nHWnlZ88)&49GMCwG}N% zRI2SFNb>MYGR;k(?$)RhDCHcd&_7lzC~_E(X$Ddj&CQ@cMasxgjm>IL1G)$dEZsEI zoULt*8jDGmrJH7=`xKsvHk@z&SW)2yQhR&O5~#ymf4C6lkfG^b4Xr8vD?>^k0C5Fu wfE(JviQ}wk>$GY1-y3xaTxUI!4>rK_CwdWrRe}E?&Hw-a07*qoM6N<$f|{E&761SM literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/background.svg b/attic/astro-desktop/data/background.svg new file mode 100644 index 0000000000000000000000000000000000000000..03d9b16d7a61b2d361a32d35d186fe9375d04bd6 GIT binary patch literal 59181 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/attic/astro-desktop/data/contact.png b/attic/astro-desktop/data/contact.png new file mode 100644 index 0000000000000000000000000000000000000000..9749d8b762696f5a8be25278ab938fe3bc9da103 GIT binary patch literal 11748 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 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/disc_bg.svg b/attic/astro-desktop/data/disc_bg.svg new file mode 100644 index 0000000..eb0731c --- /dev/null +++ b/attic/astro-desktop/data/disc_bg.svg @@ -0,0 +1,1028 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/attic/astro-desktop/data/face.png b/attic/astro-desktop/data/face.png new file mode 100644 index 0000000000000000000000000000000000000000..5fca18641f9f615e9cd1ec8e8bc01e7eb9325651 GIT binary patch literal 1862 zcmV-M2f6r(P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iO4* z5ep7Z5-^Vd00zcML_t(o!>yNFh#XlN$A9P4rSIM8o_l5{^q9@CgSd%`?CL66F)r&M zA_}`J_#nQy2UhP3b?>c;BDZyM^84+KTLn( zAskEK=eCnNUY>p;ldsI;q%xotq2Hq0T&KBx(**tA8^9|^Pd3^g8-c|68->d3%QK75 zBG8zyhfzL8^)V`lUz9G5t!wOT-FO%H%F&aJ`d)p@2NdA7;@JGlvrAt_m=F-iR1qsP zj!cgs-8@DsRCj~&*fira3x|O}B*Y(&z}XY!Cmc8Pv+2bzV8SlK$zf&3v9c4f&6JUD z3F+n$cABVjn^I+xT%mjnc;y71hIC5^H;1q@2s;JR zBI>L&HoXAw>SGfSLVTl8nL~#jLOKX5g>-UQnF`V^AnbJ9E^UOcL0Fj3!*N~QRQgC# zHIGK%?1^&TcG7cF3NQ*VfWa7rQ6XprMi1Nn2QZ;WDpLS>@_s(-Jp>rDYY3<)2~?L?CN0bQ+mXXhR@#B2(N!odQRPqaes77sA7J%vv$J`Po$Yn% z?T8O|=Q!0~=5qFVY8{*HmZCa4Mi@p5UC*yJSI@lpzy$UkI`+H8LkB)<>@@XufDjTa zmqI>6K$de`Q+)B*O9ay|5bpmva{g=l>C!Z7of1$5Odq0#I-m8(AY zQFHaoM|)O5b$R8PVj=g>lcz^HQ- z+ugR$hii2_&*Qx-^`Y}2X=5-t0%PcSeezisDaDuW48xrS#vI2Y4C7I16{4eH=v)t= zV*CD;I$h7>^7?L~jKb)cz<{)l`e>~Q!ibdXxWN4V)`FgjG*X!1$I?m1BN1}2LqQ-g z7%tvyvN&bq`(fSh|9NR81L4Cs+isDP-~!m-B*LIqH}X9(8bI_?EQ_;$DJk#!V8%0${& z_QC%FwwpcvbE`elHj=C+wnExC+Qaia!XUb~_SW&*y(S_F6w{SzCzOS6&rRm(^c33Y zWGWbBI3t;^Xm$hqev~Ajf{|pz7;H;0o-^Fu(Ri)eZ(3`AKMw?PhyPE&0&?A37k1sL z!?RfFrG?oFT5FV6aeVb?iN)}PXh=>F&l{G6v};o-W|w0FDy3#lpinR(g8$%zH2dih1^v)|cBF)%Rldb&7< zXiRLKwAahoQNYb#FPyu(fum{a4-T;~PR*QJF8PCp%mr9C3UW&`o0j_f6m;SGh;)%vLn|{|Jrl^8iQZs$3+pWOlKHl6CT-r zke$JHuHht$S>sZnA6z;N#s@47T6aC(zV^t`{;Rt`Tvxj0cJ@jcM|76@0oSj=Z&xL+ z{5xxxWI_DfmCY1zX9{F++4M8^3wy( sHt(Ot&wr$~V75v~qqqb24*jn9=*WzC^*FVdQ&MBb@0JPGeG5`Po literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/icons/close.png b/attic/astro-desktop/data/icons/close.png new file mode 100644 index 0000000000000000000000000000000000000000..f17b36cab6cc3ec3345b7821efe53a9b91e467ce GIT binary patch literal 1467 zcmV;s1w{IZP)1Zn2z=Og;F@EeVs0Gv zX%cC2ny1)fu6c(XY(N6R#j<?)Unmq%E|=$#AQ6dFH9R>vaih@)S^wF9JbwI`i^XE%y+6w5 z^S_jsOF&gWj7FowuV23gSw|UscFgDVD3wY~M6ogECJFN1N2(e&n@u+!kFUT_A4{cD zn#<*Cxm@m#U$MoISE~~-b0i{RtJQMM zeC__M&3rzOAPCfZ|85?(c~fXIdZ(wSZaf~}_!Ni;&N*yvZ!>_{Id=>I%p9p|m?Vi~ z=4?=|9fKgi&dv@4hzo_nJo9OxNlY2Y+1c4-6lWy>z&VG_%}oXnU;ZjQKR2$71Op63Tfc5ot27q3#=e+mVz_W8}EjBhbn1~jFUq%1` z=;Goc0uXk)U6-cmjZY!VZ2%CF8^Hm<7=s579x#A-eSLi)_+DnWRkyIW3^7==b~F@Auhzf9-lE zZLLKvmvi3x@XMDkv%A4L5(YuwthHAFrX@rK-ENmfBrccB$K`VQSVZDZr^9KQ z-k5He3mewf)|{$_pFVw>TVgJO&!0cP_TGm<5V&c8iQOfH_Z~@-u!zLZpFhv?S$B7L zk3}R-l7y#su(NGgYf&r~orr`VKYo0DX96Pf(ilTOf(O1&#w1BtRpZ^=-Py^gdwYAw zA`+jSo$=3hu+~}_V@OqB-kE?g<`pxyhr=QN3|>Uyy}i93RTACb-#-?SxY=xS_EtA5 z(eL+}ncJ%R>dpjSym(Pf)AT4!(_}Ch@booiM!Vf+?|r<#zyGT;s0RlJ$Eq5)S}h)r z$NyYV#rgR;kH_N#z|rC1;hp|j1prX1)ha~v-Z{7R@Zm$}y+^0hVF2;L!NDRmoNBdN zq^jZ0&W^Lz;&Of@L^L=2!UCBDfcMV1ZDv*g@!{d&GOOrB!Z}CG++GwOSaK^-tJNwZ z@)r@kt5hm~V)@M&Rjbw4s`}Cx^J-Ce;BMXrRvQ1?{}23Y;$C3YaWAmyxEEM;{0&1# VbZ4gE^i}`>002ovPDHLkV1m6=wHg2b literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/icons/contacts.png b/attic/astro-desktop/data/icons/contacts.png new file mode 100644 index 0000000000000000000000000000000000000000..d37e990f76c74605426d510bb0611be65965be43 GIT binary patch literal 9708 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 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/icons/exec.png b/attic/astro-desktop/data/icons/exec.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4abdb5965bef45b7fd95f0255ad6de1ba234cb GIT binary patch literal 8688 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 KMy0v~?*9Nq7=beY literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/icons/home.png b/attic/astro-desktop/data/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..f165f033370dc8678919ba5f6ab572b3412af839 GIT binary patch literal 3140 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 eu+!UTWd92*u_y|@iAxFq00009t)BIGX- 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 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/data/icons/nm.png b/attic/astro-desktop/data/icons/nm.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d973efb795efb055aad5224378470336c3cdc2 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt&roT^vI! zdf)aNaxobSxZYP;)Z2bR>FB232>ol17;V~@D#RU8u3%*4SL8Td#b)c=;oG7heI`%m z?^*eO2Ki}6EZyTJlb?C5?CrR+%AEB=lsLn=okrXutGHJ%`5oA`*760zEk^GICYfTr zN&Nmyp$Eh?g0~-uvu0r3z!0Xn;D+lf@BO6-TxS{zUj^`#u&+B{CvNiPtA_X&;lGZV u3zn~!cZ{pv&wBIb@29d6+0qPxE90||NKQZ3SeycMJA;Pd79hn^?Bp530R%N1DIGvQXMsm# zF;M+=5N34Jm|X!Blq_+LC<)F_D=AMbN@XZ7FW1Y=%Pvk%EJ)SMFG`>N&PIxXfhpC~ z#WAE}&f6P?evcg(S|2{YIiqmmiJ+9DE6r5*?sV2t;hQk~2g4oqR;}`aDyvP43PmEF zJRcr>a5F99?WJb%r~hwd#yyUI+_~rbukMwvtDeo7T@ow4Jy*Kcg8hT9Yv2+U&l;KI zbGLq*@%(38(EsOu{wC+&F57eeef_jl%U%2T_s^R@zx@`^1L38at6sm(uCK2CZ8iIB zovLTiBqyFZ#gkX95;He9x94j=d?A{#rcvi~NqPDAveMG6o3F_!zu$ZFZP|3!z!(!> z<1cm$@flWgvv%Lzrz6(Q9(=ttZd$4jN5kjKCcURN^}OD7uD3XE)6JYk3*8wdj-_qx zoKq}(`TO6Fa;670vV81cYweAeU+#=%EO_R(JUFFIj`6{N2Ob6wB{l}8BnAf|Lk0l> zW`;=}j13JE3=>><7+8)lG^ivoC@8Qos0cDMFd8x_bV@LAbTBe_9$|2xsn(M{$CK^9 za4;N}>OX!@A~|lej&v1wLt{#$TJo9I8?VVtKdri*`GJq_bnpDNwr=;TH{X7%*S%;* z#;mj#u?+hzlvrIY+g%%}BgXF*WIzA>{A;hjO7G`B@bknbpVwc1<=V}+_k7i>5}Doa z8fX(1dUb7>_WWfp4;VAnOf&J_8nw12G&D9)r2pEj#VW4%{(p{1c(rSu<#V;z>qm2M g*V$l;^tyl2Nrea3>mQZ~2c}8}Pgg&ebxsLQ07c3t2mk;8 literal 0 HcmV?d00001 diff --git a/attic/astro-desktop/libastro-desktop/Makefile.am b/attic/astro-desktop/libastro-desktop/Makefile.am new file mode 100644 index 0000000..354f018 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = \ + -I$(srcdir) \ + -I$(top_srcdir) \ + -DPREFIX=\""$(prefix)"\" \ + -DLIBDIR=\""$(libdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + $(GCC_CFLAGS) \ + $(DEPS_CFLAGS) + +lib_LTLIBRARIES = libastro-desktop.la + +libastro_desktop_la_SOURCES = \ + astro-application.c \ + astro-behave.c \ + astro-utils.c \ + astro-window.c \ + tidy-texture-frame.c + +libastro_desktop_la_LIBADD = $(DEPS_LIBS) +libastro_desktop_la_LDFLAGS = $(DEPS_LT_LDFLAGS) -version-info 0:1:0 diff --git a/attic/astro-desktop/libastro-desktop/astro-application.c b/attic/astro-desktop/libastro-desktop/astro-application.c new file mode 100644 index 0000000..cf907e6 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-application.c @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-application.h" + +#include "astro-defines.h" + +G_DEFINE_TYPE (AstroApplication, astro_application, G_TYPE_OBJECT); + +enum +{ + PROP_0, + PROP_TITLE, + PROP_ICON +}; + +/* Public Functions */ +const gchar * +astro_application_get_title (AstroApplication *application) +{ + AstroApplicationClass *klass; + + g_return_val_if_fail (ASTRO_IS_APPLICATION (application), NULL); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_val_if_fail (klass->get_title != NULL, NULL); + + return klass->get_title (application); +} + +void +astro_application_set_title (AstroApplication *application, const gchar *title) +{ + AstroApplicationClass *klass; + + g_return_if_fail (ASTRO_IS_APPLICATION (application)); + g_return_if_fail (title); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_if_fail (klass->set_title != NULL); + + klass->set_title (application, title); + /* FIXME: emit signal */ +} + +GdkPixbuf * +astro_application_get_icon (AstroApplication *application) +{ + AstroApplicationClass *klass; + + g_return_val_if_fail (ASTRO_IS_APPLICATION (application), NULL); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_val_if_fail (klass->get_icon != NULL, NULL); + + return klass->get_icon (application); +} + +void +astro_application_set_icon (AstroApplication *application, + GdkPixbuf *icon) +{ + AstroApplicationClass *klass; + + g_return_if_fail (ASTRO_IS_APPLICATION (application)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_if_fail (klass->set_icon != NULL); + + klass->set_icon (application, icon); + /* FIXME: emit signal */ +} + +AstroWindow * +astro_application_get_window (AstroApplication *application) +{ + AstroApplicationClass *klass; + + g_return_val_if_fail (ASTRO_IS_APPLICATION (application), NULL); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_val_if_fail (klass->get_window != NULL, NULL); + + return klass->get_window (application); +} + +void +astro_application_close (AstroApplication *application) +{ + AstroApplicationClass *klass; + + g_return_if_fail (ASTRO_IS_APPLICATION (application)); + + klass = ASTRO_APPLICATION_GET_CLASS (application); + g_return_if_fail (klass->close != NULL); + + klass->close (application); +} + +/* GObject stuff */ +static void +astro_application_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + AstroApplication *app = ASTRO_APPLICATION (object); + + g_return_if_fail (ASTRO_IS_APPLICATION (object)); + + switch (prop_id) + { + case PROP_TITLE: + g_value_set_string (value, astro_application_get_title (app)); + break; + case PROP_ICON: + g_value_set_object (value, astro_application_get_icon (app)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +astro_application_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + AstroApplication *app = ASTRO_APPLICATION (object); + + g_return_if_fail (ASTRO_IS_APPLICATION (object)); + + switch (prop_id) + { + case PROP_TITLE: + astro_application_set_title (app, g_value_get_string (value)); + break; + case PROP_ICON: + astro_application_set_icon (app, g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +astro_application_class_init (AstroApplicationClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = astro_application_set_property; + gobject_class->get_property = astro_application_get_property; + + /* Class properties */ + g_object_class_install_property (gobject_class, + PROP_TITLE, + g_param_spec_string ("title", + "Title", + "The title of the application", + "Untitled", + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property (gobject_class, + PROP_ICON, + g_param_spec_object ("icon", + "Icon", + "The icon of the application", + CLUTTER_TYPE_ACTOR, + G_PARAM_READWRITE)); +} + +static void +astro_application_init (AstroApplication *application) +{ + ; +} + diff --git a/attic/astro-desktop/libastro-desktop/astro-application.h b/attic/astro-desktop/libastro-desktop/astro-application.h new file mode 100644 index 0000000..4ae43df --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-application.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#include "astro-window.h" + +#ifndef _HAVE_ASTRO_APPLICATION_H +#define _HAVE_ASTRO_APPLICATION_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_APPLICATION astro_application_get_type() + +#define ASTRO_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_APPLICATION, \ + AstroApplication)) + +#define ASTRO_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_APPLICATION, \ + AstroApplicationClass)) + +#define ASTRO_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_APPLICATION)) + +#define ASTRO_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_APPLICATION)) + +#define ASTRO_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_APPLICATION, \ + AstroApplicationClass)) + +typedef struct _AstroApplication AstroApplication; +typedef struct _AstroApplicationClass AstroApplicationClass; + +struct _AstroApplication +{ + GObject parent; +}; + +struct _AstroApplicationClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< VTable, not signals >*/ + const gchar * (*get_title) (AstroApplication *application); + void (*set_title) (AstroApplication *application, + const gchar *title); + GdkPixbuf * (*get_icon) (AstroApplication *application); + void (*set_icon) (AstroApplication *application, + GdkPixbuf *icon); + AstroWindow * (*get_window) (AstroApplication *application); + + void (*close) (AstroApplication *application); + +}; + +typedef AstroApplication * (*AstroApplicationInitFunc) (); + +GType astro_application_get_type (void) G_GNUC_CONST; + +const gchar * astro_application_get_title (AstroApplication *application); +void astro_application_set_title (AstroApplication *application, + const gchar *title); +GdkPixbuf * astro_application_get_icon (AstroApplication *application); +void astro_application_set_icon (AstroApplication *application, + GdkPixbuf *pixbuf); +AstroWindow * astro_application_get_window (AstroApplication *application); +void astro_application_close (AstroApplication *application); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/libastro-desktop/astro-behave.c b/attic/astro-desktop/libastro-desktop/astro-behave.c new file mode 100644 index 0000000..00b7c56 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-behave.c @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2007 Intel + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authored by Neil Jagdish Patel + * + */ + +#include "astro-behave.h" + +G_DEFINE_TYPE (AstroBehave, astro_behave, CLUTTER_TYPE_BEHAVIOUR); + +#define ASTRO_BEHAVE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_BEHAVE, \ + AstroBehavePrivate)) + +struct _AstroBehavePrivate +{ + AstroBehaveAlphaFunc func; + gpointer data; +}; + +static void +astro_behave_alpha_notify (ClutterBehaviour *behave, guint32 alpha_value) +{ + AstroBehave *astro_behave = ASTRO_BEHAVE(behave); + AstroBehavePrivate *priv; + + priv = ASTRO_BEHAVE_GET_PRIVATE (astro_behave); + + if (priv->func != NULL) + priv->func (behave, alpha_value, priv->data); +} + +static void +astro_behave_class_init (AstroBehaveClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterBehaviourClass *behave_class = CLUTTER_BEHAVIOUR_CLASS (klass); + + behave_class->alpha_notify = astro_behave_alpha_notify; + + g_type_class_add_private (gobject_class, sizeof (AstroBehavePrivate)); +} + +static void +astro_behave_init (AstroBehave *self) +{ + AstroBehavePrivate *priv; + + priv = ASTRO_BEHAVE_GET_PRIVATE (self); + + priv->func = NULL; + priv->data = NULL; +} + +ClutterBehaviour* +astro_behave_new (ClutterAlpha *alpha, + AstroBehaveAlphaFunc func, + gpointer data) +{ + AstroBehave *behave; + AstroBehavePrivate *priv; + + behave = g_object_new (ASTRO_TYPE_BEHAVE, + "alpha", alpha, + NULL); + + priv = ASTRO_BEHAVE_GET_PRIVATE (behave); + + priv->func = func; + priv->data = data; + + return CLUTTER_BEHAVIOUR(behave); +} diff --git a/attic/astro-desktop/libastro-desktop/astro-behave.h b/attic/astro-desktop/libastro-desktop/astro-behave.h new file mode 100644 index 0000000..164495d --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-behave.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 Intel + * + * 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. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authored by Neil Jagdish Patel + * + */ + +/* This is a utility ClutterBehaviour-derived class, in which you can set the + alphanotify function. It is useful for situations where you do not need the + full capabilities of the ClutterBehvaiour class, you just want a function to + be called for each iteration along the timeline +*/ + +#ifndef _ASTRO_BEHAVE_H_ +#define _ASTRO_BEHAVE_H_ + +#include +#include + +#define ASTRO_TYPE_BEHAVE (astro_behave_get_type ()) + +#define ASTRO_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),\ + ASTRO_TYPE_BEHAVE, AstroBehave)) + +#define ASTRO_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_BEHAVE, AstroBehaveClass)) + +#define CLUTTER_IS_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj),\ + ASTRO_TYPE_BEHAVE)) + +#define CLUTTER_IS_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),\ + ASTRO_TYPE_BEHAVE)) + +#define ASTRO_BEHAVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_BEHAVE, AstroBehaveClass)) + +typedef struct _AstroBehave AstroBehave; +typedef struct _AstroBehaveClass AstroBehaveClass; +typedef struct _AstroBehavePrivate AstroBehavePrivate; + +struct _AstroBehave +{ + ClutterBehaviour parent; +}; + +struct _AstroBehaveClass +{ + ClutterBehaviourClass parent_class; +}; + +typedef void (*AstroBehaveAlphaFunc) (ClutterBehaviour *behave, + guint32 alpha_value, + gpointer data); + +GType astro_behave_get_type (void) G_GNUC_CONST; + +ClutterBehaviour* +astro_behave_new (ClutterAlpha *alpha, + AstroBehaveAlphaFunc func, + gpointer data); + + +#endif /* _ASTRO_BEHAVE_H_ */ + diff --git a/attic/astro-desktop/libastro-desktop/astro-defines.h b/attic/astro-desktop/libastro-desktop/astro-defines.h new file mode 100644 index 0000000..705a1f4 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-defines.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#ifndef _HAVE_ASTRO_DEFINES_H +#define _HAVE_ASTRO_DEFINES_H + +#define CSW() (CLUTTER_STAGE_WIDTH()) +#define CSH() (CLUTTER_STAGE_HEIGHT()) + +#define ASTRO_PANEL_HEIGHT() (CSH() * 0.15) + +#define ASTRO_WINDOW_WIDTH() (CSW()) +#define ASTRO_WINDOW_HEIGHT() (CSW()-ASTRO_PANEL_HEIGHT()) + +#define ASTRO_APPICON_SIZE() (CSH()*0.3) +#define ASTRO_APPICON_SPACING() (ASTRO_APPICON_SIZE()*0.9) + +#define ASTRO_APPLET_HEIGHT() (CSH()*0.15) +#define ASTRO_APPLET_PADDING 4 + +#endif diff --git a/attic/astro-desktop/libastro-desktop/astro-utils.c b/attic/astro-desktop/libastro-desktop/astro-utils.c new file mode 100644 index 0000000..26c872a --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-utils.c @@ -0,0 +1,14 @@ +#include "astro-utils.h" + + +void +astro_utils_set_clip (ClutterActor *actor, + gint xoff, + gint yoff, + gint width, + gint height) +{ +#if 1 + clutter_actor_set_clip (actor, xoff, yoff, width, height); +#endif +} diff --git a/attic/astro-desktop/libastro-desktop/astro-utils.h b/attic/astro-desktop/libastro-desktop/astro-utils.h new file mode 100644 index 0000000..f8528fc --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-utils.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + +#include + +#ifndef _HAVE_ASTRO_UTILS_H +#define _HAVE_ASTRO_UTILS_H + + +void astro_utils_set_clip (ClutterActor *actor, + gint xoff, + gint yoff, + gint width, + gint height); + +#endif diff --git a/attic/astro-desktop/libastro-desktop/astro-window.c b/attic/astro-desktop/libastro-desktop/astro-window.c new file mode 100644 index 0000000..54bc88c --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-window.c @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-window.h" + +#include "astro-defines.h" + +G_DEFINE_TYPE (AstroWindow, astro_window, CLUTTER_TYPE_GROUP); + +#define ASTRO_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_WINDOW, AstroWindowPrivate)) + +struct _AstroWindowPrivate +{ + ClutterEffectTemplate *show_temp; + ClutterTimeline *show_time; + + ClutterEffectTemplate *hide_temp; + ClutterTimeline *hide_time; +}; + + +static void +astro_window_show (ClutterActor *view) +{ + AstroWindowPrivate *priv; + static ClutterTimeline *show_time = NULL; + + g_return_if_fail (ASTRO_IS_WINDOW (view)); + priv = ASTRO_WINDOW (view)->priv; + + if (CLUTTER_IS_TIMELINE (show_time) &&clutter_timeline_is_playing (show_time)) + { + clutter_timeline_stop (show_time); + g_object_unref (show_time); + } + + CLUTTER_ACTOR_CLASS (astro_window_parent_class)->show (view); + + show_time = clutter_effect_fade (priv->show_temp, + CLUTTER_ACTOR (view), + 255, + NULL, NULL); +} + +static void +astro_window_hide (ClutterActor *view) +{ + AstroWindowPrivate *priv; + static ClutterTimeline *hide_time = NULL; + + g_return_if_fail (ASTRO_IS_WINDOW (view)); + priv = ASTRO_WINDOW (view)->priv; + + if (CLUTTER_IS_TIMELINE (hide_time) &&clutter_timeline_is_playing (hide_time)) + { + clutter_timeline_stop (hide_time); + g_object_unref (hide_time); + } + + hide_time = clutter_effect_fade (priv->hide_temp, + CLUTTER_ACTOR (view), + 0, + (ClutterEffectCompleteFunc) + CLUTTER_ACTOR_CLASS (astro_window_parent_class)->hide, + NULL); +} + + + +void +astro_window_close (AstroWindow *window) +{ + AstroWindowPrivate *priv; + static ClutterTimeline *hide_time = NULL; + + g_return_if_fail (ASTRO_IS_WINDOW (window)); + priv = ASTRO_WINDOW (window)->priv; + + if (CLUTTER_IS_TIMELINE (hide_time) &&clutter_timeline_is_playing (hide_time)) + { + clutter_timeline_stop (hide_time); + g_object_unref (hide_time); + } + + hide_time = clutter_effect_move (priv->hide_temp, + CLUTTER_ACTOR (window), + CSW(), + clutter_actor_get_y (CLUTTER_ACTOR (window)), + NULL, NULL); + + hide_time = clutter_effect_fade (priv->hide_temp, + CLUTTER_ACTOR (window), + 0, + (ClutterEffectCompleteFunc)clutter_actor_destroy, + NULL); +} + +/* GObject stuff */ +static void +astro_window_class_init (AstroWindowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->show = astro_window_show; + actor_class->hide = astro_window_hide; + + g_type_class_add_private (gobject_class, sizeof (AstroWindowPrivate)); +} + + +static void +astro_window_init (AstroWindow *window) +{ + AstroWindowPrivate *priv; + + priv = window->priv = ASTRO_WINDOW_GET_PRIVATE (window); + + clutter_actor_set_opacity (CLUTTER_ACTOR (window), 0); + + priv->show_time = clutter_timeline_new_for_duration (300); + priv->show_temp = clutter_effect_template_new (priv->show_time, + clutter_sine_inc_func); + priv->hide_time = clutter_timeline_new_for_duration (300); + priv->hide_temp = clutter_effect_template_new (priv->hide_time, + clutter_sine_inc_func);; +} + +ClutterActor * +astro_window_new () +{ + return g_object_new (ASTRO_TYPE_WINDOW, NULL); +} + diff --git a/attic/astro-desktop/libastro-desktop/astro-window.h b/attic/astro-desktop/libastro-desktop/astro-window.h new file mode 100644 index 0000000..73c3ab6 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro-window.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#ifndef _HAVE_ASTRO_WINDOW_H +#define _HAVE_ASTRO_WINDOW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_WINDOW astro_window_get_type() + +#define ASTRO_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_WINDOW, \ + AstroWindow)) + +#define ASTRO_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_WINDOW, \ + AstroWindowClass)) + +#define ASTRO_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_WINDOW)) + +#define ASTRO_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_WINDOW)) + +#define ASTRO_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_WINDOW, \ + AstroWindowClass)) + +typedef struct _AstroWindow AstroWindow; +typedef struct _AstroWindowClass AstroWindowClass; +typedef struct _AstroWindowPrivate AstroWindowPrivate; + +struct _AstroWindow +{ + ClutterGroup parent; + + /*< private >*/ + AstroWindowPrivate *priv; +}; + +struct _AstroWindowClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /*< signals >*/ + void (*close) (AstroWindow *window); +}; + +GType astro_window_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_window_new (void); +void astro_window_close (AstroWindow *window); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/libastro-desktop/astro.h b/attic/astro-desktop/libastro-desktop/astro.h new file mode 100644 index 0000000..2fa048c --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/astro.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#ifndef _HAVE_ASTRO_H +#define _HAVE_ASTRO_H + +#include "astro-application.h" +#include "astro-defines.h" +#include "astro-utils.h" +#include "astro-window.h" +#endif diff --git a/attic/astro-desktop/libastro-desktop/tidy-private.h b/attic/astro-desktop/libastro-desktop/tidy-private.h new file mode 100644 index 0000000..5f17d93 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/tidy-private.h @@ -0,0 +1,40 @@ +/* tidy-private.h: Private declarations + * + * Copyright (C) 2007 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __TIDY_PRIVATE_H__ +#define __TIDY_PRIVATE_H__ + +#include + +G_BEGIN_DECLS + +#define I_(str) (g_intern_static_string ((str))) + +#define TIDY_PARAM_READABLE \ + (G_PARAM_READABLE | \ + G_PARAM_STATIC_NICK | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB) + +#define TIDY_PARAM_READWRITE \ + (G_PARAM_READABLE | G_PARAM_WRITABLE | \ + G_PARAM_STATIC_NICK | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB) + +G_END_DECLS + +#endif /* __TIDY_PRIVATE_H__ */ diff --git a/attic/astro-desktop/libastro-desktop/tidy-texture-frame.c b/attic/astro-desktop/libastro-desktop/tidy-texture-frame.c new file mode 100644 index 0000000..8bc91c0 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/tidy-texture-frame.c @@ -0,0 +1,378 @@ +/* tidy-texture-frame.h: Expandible texture actor + * + * Copyright (C) 2007 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:tidy-texture-frame + * @short_description: Actor for cloning existing textures in an + * efficient way. + * + * #TidyTextureFrame + * + */ + +#include + +#include "tidy-texture-frame.h" +#include "tidy-private.h" + +enum +{ + PROP_0, + PROP_LEFT, + PROP_TOP, + PROP_RIGHT, + PROP_BOTTOM +}; + +G_DEFINE_TYPE (TidyTextureFrame, + tidy_texture_frame, + CLUTTER_TYPE_CLONE_TEXTURE); + +#define TIDY_TEXTURE_FRAME_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), TIDY_TYPE_TEXTURE_FRAME, TidyTextureFramePrivate)) + +struct _TidyTextureFramePrivate +{ + gint left, top, right, bottom; +}; + +static void +tidy_texture_frame_paint (ClutterActor *self) +{ + TidyTextureFramePrivate *priv; + ClutterActor *parent_texture; + guint width, height; + gint pwidth, pheight, ex, ey; + ClutterFixed tx1, ty1, tx2, ty2, tw, th; + GLenum target_type; + ClutterColor col = { 0xff, 0xff, 0xff, 0xff }; + + priv = TIDY_TEXTURE_FRAME (self)->priv; + + /* no need to paint stuff if we don't have a texture to reflect */ + if (!clutter_clone_texture_get_parent_texture (CLUTTER_CLONE_TEXTURE(self))) + return; + + /* parent texture may have been hidden, there for need to make sure its + * realised with resources available. + */ + parent_texture + = CLUTTER_ACTOR + (clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))); + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + if (clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture))) + { + g_warning("tiled textures not yet supported..."); + return; + } + + cogl_push_matrix (); + +#define FX(x) CLUTTER_INT_TO_FIXED(x) + + clutter_texture_get_base_size (CLUTTER_TEXTURE(parent_texture), + &pwidth, &pheight); + clutter_actor_get_size (self, &width, &height); + + tx1 = FX (priv->left); + tx2 = FX (pwidth - priv->right); + ty1 = FX (priv->top); + ty2 = FX (pheight - priv->bottom); + tw = FX (pwidth); + th = FX (pheight); + + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)) + { + target_type = CGL_TEXTURE_RECTANGLE_ARB; + cogl_enable (CGL_ENABLE_TEXTURE_RECT|CGL_ENABLE_BLEND); + } + else + { + target_type = CGL_TEXTURE_2D; + cogl_enable (CGL_ENABLE_TEXTURE_2D|CGL_ENABLE_BLEND); + + tw = clutter_util_next_p2 (pwidth); + th = clutter_util_next_p2 (pheight); + + tx1 = tx1/tw; + tx2 = tx2/tw; + ty1 = ty1/th; + ty2 = ty2/th; + tw = FX(pwidth)/tw; + th = FX(pheight)/th; + } + + col.alpha = clutter_actor_get_opacity (self); + cogl_color (&col); + + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), 0); + + ex = width - priv->right; + if (ex < 0) + ex = priv->right; /* FIXME */ + + ey = height - priv->bottom; + if (ey < 0) + ey = priv->bottom; /* FIXME */ + + /* top left corner */ + cogl_texture_quad (0, + priv->left, /* FIXME: clip if smaller */ + 0, + priv->top, + 0, + 0, + tx1, + ty1); + + /* top middle */ + cogl_texture_quad (priv->left, + ex, + 0, + priv->top, + tx1, + 0, + tx2, + ty1); + + /* top right */ + cogl_texture_quad (ex, + width, + 0, + priv->top, + tx2, + 0, + tw, + ty1); + + /* mid left */ + cogl_texture_quad (0, + priv->left, + priv->top, + ey, + 0, + ty1, + tx1, + ty2); + + /* center */ + cogl_texture_quad (priv->left, + ex, + priv->top, + ey, + tx1, + ty1, + tx2, + ty2); + + /* mid right */ + cogl_texture_quad (ex, + width, + priv->top, + ey, + tx2, + ty1, + tw, + ty2); + + /* bottom left */ + cogl_texture_quad (0, + priv->left, + ey, + height, + 0, + ty2, + tx1, + th); + + /* bottom center */ + cogl_texture_quad (priv->left, + ex, + ey, + height, + tx1, + ty2, + tx2, + th); + + /* bottom right */ + cogl_texture_quad (ex, + width, + ey, + height, + tx2, + ty2, + tw, + th); + + cogl_pop_matrix (); + +#undef FX +} + + +static void +tidy_texture_frame_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + TidyTextureFrame *ctexture = TIDY_TEXTURE_FRAME (object); + TidyTextureFramePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_LEFT: + priv->left = g_value_get_int (value); + break; + case PROP_TOP: + priv->top = g_value_get_int (value); + break; + case PROP_RIGHT: + priv->right = g_value_get_int (value); + break; + case PROP_BOTTOM: + priv->bottom = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +tidy_texture_frame_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + TidyTextureFrame *ctexture = TIDY_TEXTURE_FRAME (object); + TidyTextureFramePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_LEFT: + g_value_set_int (value, priv->left); + break; + case PROP_TOP: + g_value_set_int (value, priv->top); + break; + case PROP_RIGHT: + g_value_set_int (value, priv->right); + break; + case PROP_BOTTOM: + g_value_set_int (value, priv->bottom); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +tidy_texture_frame_class_init (TidyTextureFrameClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = tidy_texture_frame_paint; + + gobject_class->set_property = tidy_texture_frame_set_property; + gobject_class->get_property = tidy_texture_frame_get_property; + + g_object_class_install_property + (gobject_class, + PROP_LEFT, + g_param_spec_int ("left", + "left", + "", + 0, G_MAXINT, + 0, + TIDY_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_TOP, + g_param_spec_int ("top", + "top", + "", + 0, G_MAXINT, + 0, + TIDY_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_BOTTOM, + g_param_spec_int ("bottom", + "bottom", + "", + 0, G_MAXINT, + 0, + TIDY_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_RIGHT, + g_param_spec_int ("right", + "right", + "", + 0, G_MAXINT, + 0, + TIDY_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (TidyTextureFramePrivate)); +} + +static void +tidy_texture_frame_init (TidyTextureFrame *self) +{ + TidyTextureFramePrivate *priv; + + self->priv = priv = TIDY_TEXTURE_FRAME_GET_PRIVATE (self); +} + +/** + * tidy_texture_frame_new: + * @texture: a #ClutterTexture or %NULL + * + * FIXME + * + * Return value: the newly created #TidyTextureFrame + */ +ClutterActor* +tidy_texture_frame_new (ClutterTexture *texture, + gint left, + gint top, + gint right, + gint bottom) +{ + g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL); + + return g_object_new (TIDY_TYPE_TEXTURE_FRAME, + "parent-texture", texture, + "left", left, + "top", top, + "right", right, + "bottom", bottom, + NULL); +} + diff --git a/attic/astro-desktop/libastro-desktop/tidy-texture-frame.h b/attic/astro-desktop/libastro-desktop/tidy-texture-frame.h new file mode 100644 index 0000000..87d2d04 --- /dev/null +++ b/attic/astro-desktop/libastro-desktop/tidy-texture-frame.h @@ -0,0 +1,82 @@ +/* tidy-texture-frame.h: Expandible texture actor + * + * Copyright (C) 2007 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_TIDY_TEXTURE_FRAME_H +#define _HAVE_TIDY_TEXTURE_FRAME_H + +#include + +G_BEGIN_DECLS + +#define TIDY_TYPE_TEXTURE_FRAME (tidy_texture_frame_get_type ()) + +#define TIDY_TEXTURE_FRAME(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + TIDY_TYPE_TEXTURE_FRAME, TidyTextureFrame)) + +#define TIDY_TEXTURE_FRAME_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + TIDY_TYPE_TEXTURE_FRAME, TidyTextureFrameClass)) + +#define TIDY_IS_TEXTURE_FRAME(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + TIDY_TYPE_TEXTURE_FRAME)) + +#define TIDY_IS_TEXTURE_FRAME_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + TIDY_TYPE_TEXTURE_FRAME)) + +#define TIDY_TEXTURE_FRAME_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TIDY_TYPE_TEXTURE_FRAME, TidyTextureFrameClass)) + +typedef struct _TidyTextureFrame TidyTextureFrame; +typedef struct _TidyTextureFramePrivate TidyTextureFramePrivate; +typedef struct _TidyTextureFrameClass TidyTextureFrameClass; + +struct _TidyTextureFrame +{ + ClutterCloneTexture parent; + + /*< priv >*/ + TidyTextureFramePrivate *priv; +}; + +struct _TidyTextureFrameClass +{ + ClutterCloneTextureClass parent_class; + + /* padding for future expansion */ + void (*_clutter_box_1) (void); + void (*_clutter_box_2) (void); + void (*_clutter_box_3) (void); + void (*_clutter_box_4) (void); +}; + +GType tidy_texture_frame_get_type (void) G_GNUC_CONST; +ClutterActor *tidy_texture_frame_new (ClutterTexture *texture, + gint left, + gint top, + gint right, + gint bottom); + +G_END_DECLS + +#endif /* _HAVE_TIDY_TEXTURE_FRAME_H */ diff --git a/attic/astro-desktop/src/Makefile.am b/attic/astro-desktop/src/Makefile.am new file mode 100644 index 0000000..2228260 --- /dev/null +++ b/attic/astro-desktop/src/Makefile.am @@ -0,0 +1,35 @@ +bin_PROGRAMS = astro-desktop + +AM_CFLAGS = \ + $(DEPS_CFLAGS) \ + $(GCC_CFLAGS) \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" \ + -DPKGDATADIR=\""$(pkgdatadir)"\" \ + -DPKGLIBDIR=\""$(libdir)/astro-desktop"\" \ + -I$(top_builddir)/libastro-desktop + +astro_desktop_LDADD = \ + $(DEPS_LIBS) \ + $(top_builddir)/libastro-desktop/libastro-desktop.la + +astro_desktop_SOURCES = \ + astro-appicon.c \ + astro-appicon.h \ + astro-applet.c \ + astro-applet.h \ + astro-applet-manager.c \ + astro-applet-manager.h \ + astro-appview.c \ + astro-appview.h \ + astro-desktop.c \ + astro-desktop.h \ + astro-example.c \ + astro-example.h \ + astro-panel.c \ + astro-panel.h \ + astro-systray.c \ + astro-systray.h \ + main.c + + diff --git a/attic/astro-desktop/src/astro-appicon.c b/attic/astro-desktop/src/astro-appicon.c new file mode 100644 index 0000000..9ce40ff --- /dev/null +++ b/attic/astro-desktop/src/astro-appicon.c @@ -0,0 +1,190 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-appicon.h" + +#include +#include + +G_DEFINE_TYPE (AstroAppicon, astro_appicon, CLUTTER_TYPE_GROUP); + +#define ASTRO_APPICON_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_APPICON, AstroAppiconPrivate)) + +struct _AstroAppiconPrivate +{ + AstroApplication *application; + ClutterActor *texture; + ClutterShader *shader; +}; + +enum +{ + CLICKED, + + LAST_SIGNAL +}; +static guint _appicon_signals[LAST_SIGNAL] = { 0 }; + +static gchar *source = "uniform float radius ;" + "uniform sampler2DRect rectTexture;" + "" + "void main()" + "{" + " vec4 color = texture2DRect(rectTexture, gl_TexCoord[0].st);" + " float u;" + " float v;" + " int count = 1;" + " for (u=-radius;upriv->application); + return FALSE; +} + + +/* Public Functions */ +const gchar * +astro_appicon_get_title (AstroAppicon *icon) +{ + g_return_val_if_fail (ASTRO_IS_APPICON (icon), NULL); + + return astro_application_get_title (icon->priv->application); +} + +static void +astro_appicon_set_application (AstroAppicon *appicon, AstroApplication *app) +{ + AstroAppiconPrivate *priv; + ClutterShader *shader; + ClutterActor *texture; + GdkPixbuf *pixbuf; + GError *error = NULL; + + g_return_if_fail (ASTRO_IS_APPICON (appicon)); + priv = appicon->priv; + + priv->application = app; + + pixbuf = astro_application_get_icon (app); + if (pixbuf) + { + priv->texture = texture = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (appicon), texture); + + clutter_actor_set_position (texture, 0, 0); + clutter_actor_set_reactive (texture, TRUE); + + g_signal_connect (texture, "button-release-event", + G_CALLBACK (on_clicked), appicon); + + } + else + return; + /* Set up shader */ + priv->shader = shader = clutter_shader_new (); + clutter_shader_set_fragment_source (shader, source, -1); + + /* We try and bind the source, we'll catch and error if there are issues */ + clutter_shader_bind (shader, &error); + if (error) + { + g_warning ("Unable to init shader: %s", error->message); + g_error_free (error); + } + else + { + clutter_actor_set_shader (texture, shader); + clutter_actor_set_shader_param (texture, "radius", 5.0); + } + + clutter_actor_show_all (CLUTTER_ACTOR (appicon)); +} + +void +astro_appicon_set_blur (AstroAppicon *appicon, + gfloat blur) +{ + AstroAppiconPrivate *priv; + + g_return_if_fail (ASTRO_IS_APPICON (appicon)); + priv = appicon->priv; + + clutter_actor_set_shader_param (priv->texture, "radius", blur); +} + +/* GObject stuff */ +static void +astro_appicon_class_init (AstroAppiconClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + _appicon_signals[CLICKED] = + g_signal_new ("clicked", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AstroAppiconClass, clicked), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, ASTRO_TYPE_APPLICATION); + + g_type_class_add_private (gobject_class, sizeof (AstroAppiconPrivate)); +} + +static void +astro_appicon_init (AstroAppicon *appicon) +{ + AstroAppiconPrivate *priv; + + priv = appicon->priv = ASTRO_APPICON_GET_PRIVATE (appicon); + + priv->application = NULL; + priv->texture = NULL; + priv->shader = NULL; +} + +ClutterActor * +astro_appicon_new (AstroApplication *app) +{ + AstroAppicon *appicon = g_object_new (ASTRO_TYPE_APPICON, + NULL); + astro_appicon_set_application (appicon, app); + + return CLUTTER_ACTOR (appicon); +} + diff --git a/attic/astro-desktop/src/astro-appicon.h b/attic/astro-desktop/src/astro-appicon.h new file mode 100644 index 0000000..a33b938 --- /dev/null +++ b/attic/astro-desktop/src/astro-appicon.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_APPICON_H +#define _HAVE_ASTRO_APPICON_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_APPICON astro_appicon_get_type() + +#define ASTRO_APPICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_APPICON, \ + AstroAppicon)) + +#define ASTRO_APPICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_APPICON, \ + AstroAppiconClass)) + +#define ASTRO_IS_APPICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_APPICON)) + +#define ASTRO_IS_APPICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_APPICON)) + +#define ASTRO_APPICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_APPICON, \ + AstroAppiconClass)) + +typedef struct _AstroAppicon AstroAppicon; +typedef struct _AstroAppiconClass AstroAppiconClass; +typedef struct _AstroAppiconPrivate AstroAppiconPrivate; + +struct _AstroAppicon +{ + ClutterGroup parent; + + /*< private >*/ + AstroAppiconPrivate *priv; +}; + +struct _AstroAppiconClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /*< signals >*/ + void (*clicked) (AstroAppicon *appicon, AstroApplication *application); +}; + +GType astro_appicon_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_appicon_new (AstroApplication *application); +const gchar * astro_appicon_get_title (AstroAppicon *icon); +void astro_appicon_set_blur (AstroAppicon *icon, + gfloat blur); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-applet-manager.c b/attic/astro-desktop/src/astro-applet-manager.c new file mode 100644 index 0000000..380d782 --- /dev/null +++ b/attic/astro-desktop/src/astro-applet-manager.c @@ -0,0 +1,216 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-applet-manager.h" + +#include + +#include "astro-applet.h" + +G_DEFINE_TYPE (AstroAppletManager, astro_applet_manager, CLUTTER_TYPE_GROUP); + +#define ASTRO_APPLET_MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ASTRO_TYPE_APPLET_MANAGER, AstroAppletManagerPrivate)) + +struct _AstroAppletManagerPrivate +{ + GList *applets; + + ClutterEffectTemplate *show_temp; + ClutterTimeline *show_time; + + ClutterEffectTemplate *hide_temp; + ClutterTimeline *hide_time; +}; + + +/* GObject stuff */ +static void +astro_applet_manager_show (ClutterActor *appman) +{ + AstroAppletManagerPrivate *priv; + static ClutterTimeline *show_time = NULL; + + g_return_if_fail (ASTRO_IS_APPLET_MANAGER (appman)); + priv = ASTRO_APPLET_MANAGER (appman)->priv; + + if (CLUTTER_IS_TIMELINE (show_time) &&clutter_timeline_is_playing (show_time)) + { + clutter_timeline_stop (show_time); + g_object_unref (show_time); + } + + clutter_actor_set_x (appman, clutter_actor_get_width (appman) * -1); + CLUTTER_ACTOR_CLASS (astro_applet_manager_parent_class)->show (appman); + + show_time = clutter_effect_move (priv->show_temp, + CLUTTER_ACTOR (appman), + ASTRO_APPLET_PADDING, + clutter_actor_get_y (CLUTTER_ACTOR (appman)), + NULL, NULL); +} + +static void +on_hide_timeline_completed (ClutterTimeline *timeline, ClutterActor *appman) +{ + CLUTTER_ACTOR_CLASS (astro_applet_manager_parent_class)->hide (appman); +} + +static void +astro_applet_manager_hide (ClutterActor *appman) +{ + AstroAppletManagerPrivate *priv; + static ClutterTimeline *hide_time = NULL; + + g_return_if_fail (ASTRO_IS_APPLET_MANAGER (appman)); + priv = ASTRO_APPLET_MANAGER (appman)->priv; + + if (CLUTTER_IS_TIMELINE (hide_time) &&clutter_timeline_is_playing (hide_time)) + { + clutter_timeline_stop (hide_time); + g_object_unref (hide_time); + } + + hide_time = clutter_effect_move (priv->hide_temp, + CLUTTER_ACTOR (appman), + -1*clutter_actor_get_width (appman), + clutter_actor_get_y (CLUTTER_ACTOR (appman)), + NULL, NULL); + + g_signal_connect (hide_time, "completed", + G_CALLBACK (on_hide_timeline_completed), appman); +} + +static void +astro_applet_manager_class_init (AstroAppletManagerClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->show = astro_applet_manager_show; + actor_class->hide = astro_applet_manager_hide; + + g_type_class_add_private (gobject_class, sizeof (AstroAppletManagerPrivate)); +} + +static ClutterActor * +_load_script (const gchar *name) +{ + ClutterScript *script; + ClutterActor *applet; + ClutterActor *child = NULL; + GError *error = NULL; + gint res; + + script = clutter_script_new (); + + clutter_script_load_from_file (script, name, &error); + if (error) + { + g_warning ("Unable to load applet: %s", error->message); + g_error_free (error); + return NULL; + } + + res = clutter_script_get_objects (script, "applet-child", &child, NULL); + if (res == 3) + { + g_warning ("Unable to load script: %s", name); + return NULL; + } + + if (!CLUTTER_IS_ACTOR (child)) + { + g_warning ("Did not get child\n"); + return NULL; + } + + applet = astro_applet_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (applet), child); + clutter_actor_set_position (child, + ASTRO_APPLET_PADDING, ASTRO_APPLET_PADDING); + + return applet; +} + +static void +astro_applet_manager_init (AstroAppletManager *applet_manager) +{ + AstroAppletManagerPrivate *priv; + GDir *dir; + GError *error = NULL; + const gchar *name; + gint offset = 0; + + applet_manager->priv = ASTRO_APPLET_MANAGER_GET_PRIVATE (applet_manager); + priv = applet_manager->priv; + + /* Load applets */ + dir = g_dir_open (PKGDATADIR "/applets", 0, &error); + if (error) + { + g_warning ("Can't open applet directory: %s", error->message); + g_error_free (error); + return; + } + + while ((name = g_dir_read_name (dir))) + { + if (g_str_has_suffix (name, ".json")) + { + ClutterActor *applet = NULL; + gchar *filename = g_strdup_printf ("%s%s", + PKGDATADIR"/applets/", + name); + + applet = _load_script (filename); + + if (!CLUTTER_IS_ACTOR (applet)) + { + g_free (filename); + continue; + } + clutter_container_add_actor (CLUTTER_CONTAINER (applet_manager), + applet); + clutter_actor_set_position (applet, offset, 0); + + offset+= clutter_actor_get_width (applet) + ASTRO_APPLET_PADDING; + g_free (filename); + } + } + g_dir_close (dir); + + priv->show_time = clutter_timeline_new_for_duration (600); + priv->show_temp = clutter_effect_template_new (priv->show_time, + clutter_sine_inc_func); + priv->hide_time = clutter_timeline_new_for_duration (300); + priv->hide_temp = clutter_effect_template_new (priv->hide_time, + clutter_sine_inc_func); +} + +ClutterActor * +astro_applet_manager_new (void) +{ + AstroAppletManager *applet_manager = g_object_new (ASTRO_TYPE_APPLET_MANAGER, + NULL); + return CLUTTER_ACTOR (applet_manager); +} + diff --git a/attic/astro-desktop/src/astro-applet-manager.h b/attic/astro-desktop/src/astro-applet-manager.h new file mode 100644 index 0000000..dd07ce2 --- /dev/null +++ b/attic/astro-desktop/src/astro-applet-manager.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#ifndef _HAVE_ASTRO_APPLET_MANAGER_H +#define _HAVE_ASTRO_APPLET_MANAGER_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_APPLET_MANAGER astro_applet_manager_get_type() + +#define ASTRO_APPLET_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_APPLET_MANAGER, \ + AstroAppletManager)) + +#define ASTRO_APPLET_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_APPLET_MANAGER, \ + AstroAppletManagerClass)) + +#define ASTRO_IS_APPLET_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_APPLET_MANAGER)) + +#define ASTRO_IS_APPLET_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_APPLET_MANAGER)) + +#define ASTRO_APPLET_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_APPLET_MANAGER, \ + AstroAppletManagerClass)) + +typedef struct _AstroAppletManager AstroAppletManager; +typedef struct _AstroAppletManagerClass AstroAppletManagerClass; +typedef struct _AstroAppletManagerPrivate AstroAppletManagerPrivate; + +struct _AstroAppletManager +{ + ClutterGroup parent; + + /*< private >*/ + AstroAppletManagerPrivate *priv; +}; + +struct _AstroAppletManagerClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_applet_manager_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_applet_manager_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-applet.c b/attic/astro-desktop/src/astro-applet.c new file mode 100644 index 0000000..d897758 --- /dev/null +++ b/attic/astro-desktop/src/astro-applet.c @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-applet.h" + +#include + +#include + +G_DEFINE_TYPE (AstroApplet, astro_applet, CLUTTER_TYPE_GROUP); + +#define ASTRO_APPLET_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_APPLET, AstroAppletPrivate)) + +static GdkPixbuf *applet_bg = NULL; +static ClutterActor *texture = NULL; + +struct _AstroAppletPrivate +{ + ClutterActor *texture; +}; + +/* GObject stuff */ +static void +astro_applet_paint (ClutterActor *applet) +{ + AstroAppletPrivate *priv; + GList *c; + gint width = 0; + + g_return_if_fail (ASTRO_IS_APPLET (applet)); + priv = ASTRO_APPLET (applet)->priv; + + c = clutter_container_get_children (CLUTTER_CONTAINER (applet)); + + for (c = c; c; c = c->next) + { + gint total = clutter_actor_get_y (c->data) + + clutter_actor_get_width (c->data); + if (total > width && c->data != priv->texture) + width = total; + } + + clutter_actor_set_size (priv->texture, + width, + clutter_actor_get_height (applet)); + + c = clutter_container_get_children (CLUTTER_CONTAINER (applet)); + for (c = c; c; c = c->next) + clutter_actor_paint (c->data); + +} + +static void +astro_applet_class_init (AstroAppletClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = astro_applet_paint; + + g_type_class_add_private (gobject_class, sizeof (AstroAppletPrivate)); +} + +static void +astro_applet_init (AstroApplet *applet) +{ + AstroAppletPrivate *priv; + + priv = applet->priv = ASTRO_APPLET_GET_PRIVATE (applet); + + if (!CLUTTER_IS_TEXTURE (texture)) + { + applet_bg = gdk_pixbuf_new_from_file (PKGDATADIR "/applet_bg.png", NULL); + texture = g_object_new (CLUTTER_TYPE_TEXTURE, + "pixbuf", applet_bg, + "tiled", FALSE, + NULL); + + } + + priv->texture = tidy_texture_frame_new (CLUTTER_TEXTURE (texture), + 15, 15, 15, 15); + clutter_container_add_actor (CLUTTER_CONTAINER (applet), priv->texture); + + clutter_actor_show_all (CLUTTER_ACTOR (applet)); +} + +ClutterActor * +astro_applet_new (void) +{ + AstroApplet *applet = g_object_new (ASTRO_TYPE_APPLET, + NULL); + + return CLUTTER_ACTOR (applet); +} + diff --git a/attic/astro-desktop/src/astro-applet.h b/attic/astro-desktop/src/astro-applet.h new file mode 100644 index 0000000..2ad9705 --- /dev/null +++ b/attic/astro-desktop/src/astro-applet.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_APPLET_H +#define _HAVE_ASTRO_APPLET_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_APPLET astro_applet_get_type() + +#define ASTRO_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_APPLET, \ + AstroApplet)) + +#define ASTRO_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_APPLET, \ + AstroAppletClass)) + +#define ASTRO_IS_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_APPLET)) + +#define ASTRO_IS_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_APPLET)) + +#define ASTRO_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_APPLET, \ + AstroAppletClass)) + +typedef struct _AstroApplet AstroApplet; +typedef struct _AstroAppletClass AstroAppletClass; +typedef struct _AstroAppletPrivate AstroAppletPrivate; + +struct _AstroApplet +{ + ClutterGroup parent; + + /*< private >*/ + AstroAppletPrivate *priv; +}; + +struct _AstroAppletClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /*< signals >*/ + void (*clicked) (AstroApplet *applet, AstroApplication *application); +}; + +GType astro_applet_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_applet_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-appview.c b/attic/astro-desktop/src/astro-appview.c new file mode 100644 index 0000000..b65f27d --- /dev/null +++ b/attic/astro-desktop/src/astro-appview.c @@ -0,0 +1,357 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-appview.h" + +#include +#include +#include + +#include "astro-panel.h" +#include "astro-example.h" +#include "astro-appicon.h" + +G_DEFINE_TYPE (AstroAppview, astro_appview, CLUTTER_TYPE_GROUP); + +#define ASTRO_APPVIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_APPVIEW, AstroAppviewPrivate)) +#define VARIANCE (CSH()*-0.2) +#define MAX_BLUR 10.0 + +struct _AstroAppviewPrivate +{ + GList *apps; + gint active; + + /* Timeline stuff */ + ClutterEffectTemplate *move_temp; + ClutterTimeline *move_time; + + ClutterEffectTemplate *show_temp; + ClutterTimeline *show_time; + + ClutterEffectTemplate *hide_temp; + ClutterTimeline *hide_time; +}; + +enum +{ + LAUNCH_APP, + + LAST_SIGNAL +}; +static guint _appview_signals[LAST_SIGNAL] = { 0 }; + +/* Private functions */ +static void +ensure_layout (AstroAppview *view) +{ + AstroAppviewPrivate *priv; + GList *l; + gint groupx = 0; + gint center = 0; + gint i = 0; + + priv = view->priv; + + groupx = clutter_actor_get_x (CLUTTER_ACTOR (view)); + center = CSW()/2; + + l = clutter_container_get_children (CLUTTER_CONTAINER (view)); + for (l = l; l; l = l->next) + { + ClutterActor *icon = l->data; + gint realx, diff, y_diff;; + gfloat scale; + + realx = clutter_actor_get_x (icon) + groupx; + + if (realx > center && realx < CSW ()) + { + diff = center - (realx - center); + } + else if (realx > 0 && realx <= center) + { + diff = realx; + } + else + { + diff = 0; + } + + scale = (gfloat)diff/center; + scale = 0.2 + (0.8 * scale); + clutter_actor_set_scale (icon, scale, scale); + + if (realx < center) + { + gfloat angle, sine; + + angle = scale * (3.14*2); + sine = sin (0.5 *angle); + + y_diff = (CSH()/2) + (VARIANCE * sine); + } + else + { + gfloat angle, sine; + + angle = scale * (3.14*2); + sine = sin (0.5*angle); + + y_diff = (CSH()/2) - (VARIANCE * sine); + + } + clutter_actor_set_y (icon, y_diff); + + astro_appicon_set_blur (ASTRO_APPICON (icon), (1.0 - scale) * MAX_BLUR); + + i++; + } +} + +static void +on_move_timeline_new_frame (ClutterTimeline *timeline, + gint frame, + AstroAppview *view) +{ + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + + ensure_layout (view); +} + +static void +on_appicon_clicked (AstroAppicon *icon, + AstroApplication *app, + AstroAppview *view) +{ + AstroAppviewPrivate *priv; + AstroApplication *active_app; + + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + priv = view->priv; + + active_app = g_list_nth_data (priv->apps, priv->active); + + if (active_app == app) + { + g_signal_emit (view, _appview_signals[LAUNCH_APP], + 0, g_list_nth_data (priv->apps, priv->active)); + } + else + { + gint new_active = g_list_index (priv->apps, app); + astro_appview_advance (view, new_active - priv->active); + } +} + +static void +astro_appview_show (ClutterActor *view) +{ + AstroAppviewPrivate *priv; + static ClutterTimeline *show_time = NULL; + + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + priv = ASTRO_APPVIEW (view)->priv; + + if (CLUTTER_IS_TIMELINE (show_time) &&clutter_timeline_is_playing (show_time)) + { + clutter_timeline_stop (show_time); + g_object_unref (show_time); + } + + clutter_actor_set_x (view, -1* clutter_actor_get_width (view)); + CLUTTER_ACTOR_CLASS (astro_appview_parent_class)->show (view); + + show_time = clutter_effect_move (priv->show_temp, + CLUTTER_ACTOR (view), + (CSW()/2)- (priv->active * ASTRO_APPICON_SPACING()), + clutter_actor_get_y (CLUTTER_ACTOR (view)), + NULL, NULL); + + g_signal_connect (show_time, "new-frame", + G_CALLBACK (on_move_timeline_new_frame), view); +} + +static void +on_hide_timeline_completed (ClutterTimeline *timeline, ClutterActor *view) +{ + CLUTTER_ACTOR_CLASS (astro_appview_parent_class)->hide (view); +} + +static void +astro_appview_hide (ClutterActor *view) +{ + AstroAppviewPrivate *priv; + static ClutterTimeline *hide_time = NULL; + + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + priv = ASTRO_APPVIEW (view)->priv; + + if (CLUTTER_IS_TIMELINE (hide_time) &&clutter_timeline_is_playing (hide_time)) + { + clutter_timeline_stop (hide_time); + g_object_unref (hide_time); + } + + hide_time = clutter_effect_move (priv->hide_temp, + CLUTTER_ACTOR (view), + -1 * clutter_actor_get_width (view), + clutter_actor_get_y (CLUTTER_ACTOR (view)), + NULL, NULL); + + g_signal_connect (hide_time, "new-frame", + G_CALLBACK (on_move_timeline_new_frame), view); + g_signal_connect (hide_time, "completed", + G_CALLBACK (on_hide_timeline_completed), view); +} + + +/* Public Functions */ +void +astro_appview_set_app_list (AstroAppview *view, + GList *apps) +{ + AstroAppviewPrivate *priv; + GList *l; + gint offset = 0; + + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + priv = view->priv; + + priv->apps = apps; + priv->active = 0; + + /* Add all the icons */ + for (l = apps; l; l = l->next) + { + AstroApplication *app = l->data; + ClutterActor *icon = astro_appicon_new (app); + + clutter_container_add_actor (CLUTTER_CONTAINER (view), icon); + clutter_actor_set_size (icon, ASTRO_APPICON_SIZE (),ASTRO_APPICON_SIZE()); + clutter_actor_set_anchor_point_from_gravity (icon,CLUTTER_GRAVITY_CENTER); + + clutter_actor_set_position (icon, offset, CSH ()/2); + clutter_actor_show (icon); + g_signal_connect (icon, "clicked", + G_CALLBACK (on_appicon_clicked), view); + + offset += ASTRO_APPICON_SPACING (); + } + astro_appview_advance (view, 0); +} + +void +astro_appview_advance (AstroAppview *view, + gint n) +{ + AstroAppviewPrivate *priv; + static ClutterTimeline *move_time = NULL; + gint new_active; + + g_return_if_fail (ASTRO_IS_APPVIEW (view)); + priv = view->priv; + + new_active = priv->active + n; + if (new_active < 0 || new_active >= g_list_length (priv->apps)) + return; + priv->active = new_active; + + if (CLUTTER_IS_TIMELINE (move_time) &&clutter_timeline_is_playing (move_time)) + { + clutter_timeline_stop (move_time); + g_object_unref (move_time); + } + + move_time = clutter_effect_move (priv->move_temp, + CLUTTER_ACTOR (view), + (CSW()/2)- (priv->active * ASTRO_APPICON_SPACING ()), + clutter_actor_get_y (CLUTTER_ACTOR (view)), + NULL, NULL); + + g_signal_connect (move_time, "new-frame", + G_CALLBACK (on_move_timeline_new_frame), view); +} + +AstroApplication * +astro_appview_get_active_app (AstroAppview *view) +{ + g_return_val_if_fail (ASTRO_IS_APPVIEW (view), NULL); + + return g_list_nth_data (view->priv->apps, view->priv->active); +} + +/* GObject stuff */ +static void +astro_appview_class_init (AstroAppviewClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->show = astro_appview_show; + actor_class->hide = astro_appview_hide; + + _appview_signals[LAUNCH_APP] = + g_signal_new ("launch-app", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AstroAppviewClass, launch_app), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + ASTRO_TYPE_APPLICATION); + + + g_type_class_add_private (gobject_class, sizeof (AstroAppviewPrivate)); +} + +static void +astro_appview_init (AstroAppview *appview) +{ + AstroAppviewPrivate *priv; + priv = appview->priv = ASTRO_APPVIEW_GET_PRIVATE (appview); + + priv->active = 0; + priv->apps = NULL; + + priv->move_time = clutter_timeline_new_for_duration (300); + priv->move_temp = clutter_effect_template_new (priv->move_time, + clutter_sine_inc_func); + + priv->show_time = clutter_timeline_new_for_duration (600); + priv->show_temp = clutter_effect_template_new (priv->show_time, + clutter_sine_inc_func); + priv->hide_time = clutter_timeline_new_for_duration (300); + priv->hide_temp = clutter_effect_template_new (priv->hide_time, + clutter_sine_inc_func); + } + +ClutterActor * +astro_appview_new (void) +{ + AstroAppview *appview = g_object_new (ASTRO_TYPE_APPVIEW, + NULL); + + return CLUTTER_ACTOR (appview); +} + diff --git a/attic/astro-desktop/src/astro-appview.h b/attic/astro-desktop/src/astro-appview.h new file mode 100644 index 0000000..2e5c7b5 --- /dev/null +++ b/attic/astro-desktop/src/astro-appview.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_APPVIEW_H +#define _HAVE_ASTRO_APPVIEW_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_APPVIEW astro_appview_get_type() + +#define ASTRO_APPVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_APPVIEW, \ + AstroAppview)) + +#define ASTRO_APPVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_APPVIEW, \ + AstroAppviewClass)) + +#define ASTRO_IS_APPVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_APPVIEW)) + +#define ASTRO_IS_APPVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_APPVIEW)) + +#define ASTRO_APPVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_APPVIEW, \ + AstroAppviewClass)) + +typedef struct _AstroAppview AstroAppview; +typedef struct _AstroAppviewClass AstroAppviewClass; +typedef struct _AstroAppviewPrivate AstroAppviewPrivate; + +struct _AstroAppview +{ + ClutterGroup parent; + + /*< private >*/ + AstroAppviewPrivate *priv; +}; + +struct _AstroAppviewClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /*< signals >*/ + void (*launch_app) (AstroAppview *view, AstroApplication *application); +}; + +GType astro_appview_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_appview_new (void); +void astro_appview_set_app_list (AstroAppview *view, + GList *apps); +void astro_appview_advance (AstroAppview *view, + gint n); +AstroApplication * astro_appview_get_active_app (AstroAppview *view); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-desktop.c b/attic/astro-desktop/src/astro-desktop.c new file mode 100644 index 0000000..4129743 --- /dev/null +++ b/attic/astro-desktop/src/astro-desktop.c @@ -0,0 +1,316 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-desktop.h" + +#include +#include +#include + +#include "astro-applet-manager.h" +#include "astro-appview.h" +#include "astro-example.h" +#include "astro-panel.h" + +G_DEFINE_TYPE (AstroDesktop, astro_desktop, CLUTTER_TYPE_GROUP); + +#define ASTRO_DESKTOP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_DESKTOP, AstroDesktopPrivate)) + +struct _AstroDesktopPrivate +{ + ClutterActor *panel; + ClutterActor *appview; + ClutterActor *applets; + + GList *apps; + GList *apps_modules; + + AstroApplication *active_app; + ClutterActor *active_window; +}; + +/* Public Functions */ + +/* Private functions */ +static void +astro_desktop_show_application (AstroDesktop *desktop, + AstroApplication *application) +{ + AstroDesktopPrivate *priv; + + g_return_if_fail (ASTRO_IS_DESKTOP (desktop)); + priv = desktop->priv; + + if (ASTRO_IS_WINDOW (priv->active_window)) + { + astro_window_close (ASTRO_WINDOW (priv->active_window)); + } + + clutter_ungrab_keyboard (); + clutter_actor_hide (priv->appview); + clutter_actor_hide (priv->applets); + + astro_panel_set_header (ASTRO_PANEL (priv->panel), + astro_application_get_title (application), + astro_application_get_icon (application)); + + priv->active_window = (ClutterActor*)astro_application_get_window + (application); + clutter_container_add_actor (CLUTTER_CONTAINER (desktop), + priv->active_window); + clutter_actor_set_position (priv->active_window, + 0, + 0); + clutter_actor_show (priv->active_window); +} + +static void +astro_desktop_hide_application (AstroDesktop *desktop) +{ + AstroDesktopPrivate *priv; + + g_return_if_fail (ASTRO_IS_DESKTOP (desktop)); + priv = desktop->priv; + + if (!ASTRO_IS_WINDOW (priv->active_window)) + return; + + astro_window_close (ASTRO_WINDOW (priv->active_window)); + + astro_panel_set_header (ASTRO_PANEL (priv->panel), + "Home", + NULL); + + clutter_actor_show (priv->applets); + clutter_actor_show (priv->appview); + + clutter_grab_keyboard (CLUTTER_ACTOR (desktop)); +} + + +static void +on_appview_activated (AstroAppview *appview, + AstroApplication *application, + AstroDesktop *desktop) +{ + AstroDesktopPrivate *priv; + + g_return_if_fail (ASTRO_IS_DESKTOP (desktop)); + priv = desktop->priv; + + astro_desktop_show_application (desktop, application); +} + +static gboolean +on_key_release_event (ClutterActor *actor, + ClutterEvent *event, + AstroDesktop *desktop) +{ + AstroDesktopPrivate *priv; + AstroApplication *application; + + g_return_val_if_fail (ASTRO_IS_DESKTOP (desktop), FALSE); + priv = desktop->priv; + + switch (event->key.keyval) + { + case CLUTTER_Return: + case CLUTTER_KP_Enter: + case CLUTTER_ISO_Enter: + application = astro_appview_get_active_app + (ASTRO_APPVIEW (priv->appview)); + astro_desktop_show_application (desktop, application); + break; + case CLUTTER_Left: + case CLUTTER_KP_Left: + astro_appview_advance (ASTRO_APPVIEW (priv->appview), -1); + break; + case CLUTTER_Right: + case CLUTTER_KP_Right: + astro_appview_advance (ASTRO_APPVIEW (priv->appview), 1); + break; + default: + ; + } + + return FALSE; +} + +static void +on_panel_home_clicked (AstroPanel *panel, AstroDesktop *desktop) +{ + g_return_if_fail (ASTRO_IS_DESKTOP (desktop)); + + astro_desktop_hide_application (desktop); +} + +static AstroApplication * +_load_app_module (const gchar *filename) +{ + GModule *module; + AstroApplication *app; + AstroApplicationInitFunc init_func; + + module = g_module_open (filename, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); + if (module == NULL) + { + g_warning ("Unable to load module %s : %s\n",filename, g_module_error ()); + return NULL; + } + + /* Try and load the init symbol */ + if (g_module_symbol (module, "astro_application_factory_init", + (void*)&init_func)) + { + app = (AstroApplication*)init_func (); + if (ASTRO_IS_APPLICATION (app)) + { + g_object_set_data (G_OBJECT (app), "module", module); + return app; + } + } + + g_warning ("Cannot init module %s: %s", filename, g_module_error ()); + + g_module_close (module); + + return NULL; +} + +static void +load_applications (AstroDesktop *desktop) +{ + AstroDesktopPrivate *priv; + GdkPixbuf *pixbuf; + GDir *dir; + const gchar *leaf; + gint i; + + g_return_if_fail (ASTRO_IS_DESKTOP (desktop)); + priv = desktop->priv; + + /* Load .so applications */ + dir = g_dir_open (PKGLIBDIR"/apps", 0, NULL); + if (!dir) + { + g_warning ("%s doesn't exist", PKGLIBDIR"/apps"); + return; + } + while ((leaf = g_dir_read_name (dir))) + { + AstroApplication *app; + gchar *filename; + + if (!g_str_has_suffix (leaf, ".so")) + continue; + + filename = g_build_filename (PKGLIBDIR"/apps", leaf, NULL); + app = _load_app_module (filename); + + if (ASTRO_IS_APPLICATION (app)) + priv->apps = g_list_append (priv->apps, app); + else + g_debug ("load failed\n"); + + g_free (filename); + } + g_dir_close (dir); + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/icons/exec.png", + ASTRO_APPICON_SIZE(), + ASTRO_APPICON_SIZE(), + TRUE, NULL); + for (i = 0; i < 5; i++) + { + AstroApplication *app; + gchar *title; + + title = g_strdup_printf ("Example %d", i+1); + app = astro_example_new (title, + pixbuf); + g_free (title); + + priv->apps = g_list_append (priv->apps, app); + } +} + +/* GObject stuff */ +static void +astro_desktop_class_init (AstroDesktopClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroDesktopPrivate)); +} + +static void +astro_desktop_init (AstroDesktop *desktop) +{ + AstroDesktopPrivate *priv; + priv = desktop->priv = ASTRO_DESKTOP_GET_PRIVATE (desktop); + + /* Load the panel */ + priv->panel = astro_panel_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (desktop), priv->panel); + clutter_actor_set_position (priv->panel, 0, 0); + g_signal_connect (priv->panel, "show-home", + G_CALLBACK (on_panel_home_clicked), desktop); + g_signal_connect (priv->panel, "close-window", + G_CALLBACK (on_panel_home_clicked), desktop); + + /* Load the applications */ + load_applications (desktop); + priv->appview = astro_appview_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (desktop), priv->appview); + clutter_actor_set_size (priv->appview, + ASTRO_WINDOW_WIDTH (), + ASTRO_WINDOW_HEIGHT ()); + clutter_actor_set_position (priv->appview, CSW(), 0); + astro_appview_set_app_list (ASTRO_APPVIEW (priv->appview), priv->apps); + + g_signal_connect (priv->appview, "launch-app", + G_CALLBACK (on_appview_activated), desktop); + + /* Load the applets */ + priv->applets = astro_applet_manager_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (desktop), priv->applets); + clutter_actor_set_position (priv->applets, + CSW(), + CSH() - ASTRO_APPLET_HEIGHT() -(ASTRO_APPLET_PADDING*3)); + + g_signal_connect (desktop, "key-release-event", + G_CALLBACK (on_key_release_event), desktop); + + clutter_grab_keyboard (CLUTTER_ACTOR (desktop)); + clutter_actor_show_all (CLUTTER_ACTOR (desktop)); +} + +ClutterActor * +astro_desktop_new (void) +{ + AstroDesktop *desktop = g_object_new (ASTRO_TYPE_DESKTOP, + NULL); + + return CLUTTER_ACTOR (desktop); +} + diff --git a/attic/astro-desktop/src/astro-desktop.h b/attic/astro-desktop/src/astro-desktop.h new file mode 100644 index 0000000..ea6d539 --- /dev/null +++ b/attic/astro-desktop/src/astro-desktop.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#ifndef _HAVE_ASTRO_DESKTOP_H +#define _HAVE_ASTRO_DESKTOP_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_DESKTOP astro_desktop_get_type() + +#define ASTRO_DESKTOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_DESKTOP, \ + AstroDesktop)) + +#define ASTRO_DESKTOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_DESKTOP, \ + AstroDesktopClass)) + +#define ASTRO_IS_DESKTOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_DESKTOP)) + +#define ASTRO_IS_DESKTOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_DESKTOP)) + +#define ASTRO_DESKTOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_DESKTOP, \ + AstroDesktopClass)) + +typedef struct _AstroDesktop AstroDesktop; +typedef struct _AstroDesktopClass AstroDesktopClass; +typedef struct _AstroDesktopPrivate AstroDesktopPrivate; + +struct _AstroDesktop +{ + ClutterGroup parent; + + /*< private >*/ + AstroDesktopPrivate *priv; +}; + +struct _AstroDesktopClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +GType astro_desktop_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_desktop_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-example.c b/attic/astro-desktop/src/astro-example.c new file mode 100644 index 0000000..ff73340 --- /dev/null +++ b/attic/astro-desktop/src/astro-example.c @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-example.h" + +#include +#include +#include + +G_DEFINE_TYPE (AstroExample, astro_example, ASTRO_TYPE_APPLICATION); + +#define ASTRO_EXAMPLE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_EXAMPLE, AstroExamplePrivate)) + +struct _AstroExamplePrivate +{ + const gchar *title; + GdkPixbuf *icon; + ClutterActor *window; +}; + +/* Public Functions */ + +/* Private functions */ +static const gchar * +get_title (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_EXAMPLE (app), NULL); + + return ASTRO_EXAMPLE (app)->priv->title; +} + +static void +set_title (AstroApplication *app, const gchar *title) +{ + g_return_if_fail (ASTRO_IS_EXAMPLE (app)); + g_return_if_fail (title); + + ASTRO_EXAMPLE (app)->priv->title = g_strdup (title); +} + +static GdkPixbuf * +get_icon (AstroApplication *app) +{ + g_return_val_if_fail (ASTRO_IS_EXAMPLE (app), NULL); + + return ASTRO_EXAMPLE (app)->priv->icon; +} + +static void +set_icon (AstroApplication *app, GdkPixbuf *icon) +{ + g_return_if_fail (ASTRO_IS_EXAMPLE (app)); + g_return_if_fail (GDK_IS_PIXBUF (icon)); + + ASTRO_EXAMPLE (app)->priv->icon = icon; +} + +static AstroWindow * +get_window (AstroApplication *app) +{ + AstroExamplePrivate *priv; + ClutterColor color = { 0xff, 0xff, 0x22, 0x22 }; + ClutterActor *window = NULL, *rect; + + g_return_val_if_fail (ASTRO_IS_EXAMPLE (app), NULL); + priv = ASTRO_EXAMPLE (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + window = priv->window; + else + { + window = astro_window_new (); + + rect = clutter_rectangle_new_with_color (&color); + clutter_container_add_actor (CLUTTER_CONTAINER (window), rect); + clutter_actor_set_size (rect, CSW (), CSH()-ASTRO_PANEL_HEIGHT()); + clutter_actor_show (rect); + } + + ASTRO_EXAMPLE (app)->priv->window = window; + + return ASTRO_WINDOW (window); +} + +static void +close (AstroApplication *app) +{ + AstroExamplePrivate *priv; + + g_return_if_fail (ASTRO_IS_EXAMPLE (app)); + priv = ASTRO_EXAMPLE (app)->priv; + + if (CLUTTER_IS_ACTOR (priv->window)) + clutter_actor_destroy (priv->window); +} + +/* GObject stuff */ +static void +astro_example_class_init (AstroExampleClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + AstroApplicationClass *app_class = ASTRO_APPLICATION_CLASS (klass); + + app_class->get_title = get_title; + app_class->set_title = set_title; + app_class->get_icon = get_icon; + app_class->set_icon = set_icon; + app_class->get_window = get_window; + app_class->close = close; + + g_type_class_add_private (gobject_class, sizeof (AstroExamplePrivate)); +} + +static void +astro_example_init (AstroExample *example) +{ + AstroExamplePrivate *priv; + priv = example->priv = ASTRO_EXAMPLE_GET_PRIVATE (example); + + priv->title = NULL; + priv->icon = NULL; + priv->window = NULL; +} + +AstroApplication * +astro_example_new (const gchar *title, GdkPixbuf *icon) +{ + AstroApplication *example = g_object_new (ASTRO_TYPE_EXAMPLE, + NULL); + + astro_application_set_title (example, title); + astro_application_set_icon (example, icon); + + return example; +} + diff --git a/attic/astro-desktop/src/astro-example.h b/attic/astro-desktop/src/astro-example.h new file mode 100644 index 0000000..87c06a5 --- /dev/null +++ b/attic/astro-desktop/src/astro-example.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include +#include + +#ifndef _HAVE_ASTRO_EXAMPLE_H +#define _HAVE_ASTRO_EXAMPLE_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_EXAMPLE astro_example_get_type() + +#define ASTRO_EXAMPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_EXAMPLE, \ + AstroExample)) + +#define ASTRO_EXAMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_EXAMPLE, \ + AstroExampleClass)) + +#define ASTRO_IS_EXAMPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_EXAMPLE)) + +#define ASTRO_IS_EXAMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_EXAMPLE)) + +#define ASTRO_EXAMPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_EXAMPLE, \ + AstroExampleClass)) + +typedef struct _AstroExample AstroExample; +typedef struct _AstroExampleClass AstroExampleClass; +typedef struct _AstroExamplePrivate AstroExamplePrivate; + +struct _AstroExample +{ + AstroApplication parent; + + /*< private >*/ + AstroExamplePrivate *priv; +}; + +struct _AstroExampleClass +{ + /*< private >*/ + AstroApplicationClass parent_class; +}; + +GType astro_example_get_type (void) G_GNUC_CONST; + +AstroApplication * astro_example_new (const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-panel.c b/attic/astro-desktop/src/astro-panel.c new file mode 100644 index 0000000..df600ce --- /dev/null +++ b/attic/astro-desktop/src/astro-panel.c @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-panel.h" + +#include + +#include "astro-systray.h" + +G_DEFINE_TYPE (AstroPanel, astro_panel, CLUTTER_TYPE_GROUP); + +#define ASTRO_PANEL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_PANEL, AstroPanelPrivate)) + +#define PADDING 4 + +struct _AstroPanelPrivate +{ + ClutterActor *panel_bg; + ClutterActor *home; + ClutterActor *title; + ClutterActor *systray; + ClutterActor *close; + + GdkPixbuf *home_pixbuf; +}; + +enum +{ + SHOW_HOME, + CLOSE_WINDOW, + + LAST_SIGNAL +}; +static guint _panel_signals[LAST_SIGNAL] = { 0 }; + + +/* Public Functions */ +void +astro_panel_set_header (AstroPanel *panel, + const gchar *title, + GdkPixbuf *icon) +{ + AstroPanelPrivate *priv; + + g_return_if_fail (ASTRO_IS_PANEL (panel)); + priv = panel->priv; + + clutter_label_set_text (CLUTTER_LABEL (priv->title), title); + clutter_actor_set_position (priv->title, + clutter_actor_get_width (priv->home)+(PADDING*3), + (ASTRO_PANEL_HEIGHT ()/2)); + + if (!icon) + icon = priv->home_pixbuf; + + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (priv->home), icon, NULL); + clutter_actor_set_position (priv->home, PADDING/2, + ASTRO_PANEL_HEIGHT ()/2); +} + +/* Callbacks */ +static gboolean +on_home_clicked (ClutterActor *home, ClutterEvent *event, AstroPanel *panel) +{ + g_debug ("home button clicked"); + + g_signal_emit (panel, _panel_signals[SHOW_HOME], 0); + return FALSE; +} + +static gboolean +on_close_clicked (ClutterActor *home, ClutterEvent *event, AstroPanel *panel) +{ + g_debug ("close button clicked"); + + g_signal_emit (panel, _panel_signals[CLOSE_WINDOW], 0); + return FALSE; +} + + + +/* GObject stuff */ +static void +astro_panel_class_init (AstroPanelClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + _panel_signals[SHOW_HOME] = + g_signal_new ("show-home", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AstroPanelClass, show_home), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _panel_signals[CLOSE_WINDOW] = + g_signal_new ("close-window", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AstroPanelClass, close_window), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + g_type_class_add_private (gobject_class, sizeof (AstroPanelPrivate)); +} + +static void +astro_panel_init (AstroPanel *panel) +{ + AstroPanelPrivate *priv; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + GdkPixbuf *pixbuf; + gchar *font; + + priv = panel->priv = ASTRO_PANEL_GET_PRIVATE (panel); + + clutter_actor_set_size (CLUTTER_ACTOR (panel), + CSW (), ASTRO_PANEL_HEIGHT ()); + + /* Background rect */ + priv->panel_bg = clutter_rectangle_new_with_color (&white); + clutter_container_add_actor (CLUTTER_CONTAINER (panel), priv->panel_bg); + clutter_actor_set_size (priv->panel_bg, CSW(), ASTRO_PANEL_HEIGHT ()); + clutter_actor_set_position (priv->panel_bg, 0, 0); + clutter_actor_set_opacity (priv->panel_bg, 0); + + /* Home button */ + pixbuf = gdk_pixbuf_new_from_file_at_size (PKGDATADIR "/icons/home.png", + ASTRO_PANEL_HEIGHT () - PADDING, + ASTRO_PANEL_HEIGHT () - PADDING, + NULL); + if (pixbuf) + { + priv->home_pixbuf = pixbuf; + priv->home = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (panel), priv->home); + clutter_actor_set_anchor_point_from_gravity (priv->home, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (priv->home, PADDING/2, + ASTRO_PANEL_HEIGHT ()/2); + clutter_actor_set_reactive (priv->home, TRUE); + + g_signal_connect (priv->home, "button-release-event", + G_CALLBACK (on_home_clicked), panel); + } + + /* Title label */ + font = g_strdup_printf ("Sans %d", (int)(ASTRO_PANEL_HEIGHT () * 0.3)); + priv->title = clutter_label_new_full (font, "Home", &white); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->title), FALSE); + clutter_container_add_actor (CLUTTER_CONTAINER (panel), priv->title); + clutter_actor_set_anchor_point_from_gravity (priv->title, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (priv->title, + clutter_actor_get_width (priv->home)+(PADDING*3), + (ASTRO_PANEL_HEIGHT ()/2) + PADDING); + g_free (font); + + /* Close button */ + pixbuf = gdk_pixbuf_new_from_file_at_size (PKGDATADIR "/icons/close.png", + ASTRO_PANEL_HEIGHT () - PADDING, + ASTRO_PANEL_HEIGHT () - PADDING, + NULL); + if (pixbuf) + { + priv->close = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (panel), priv->close); + clutter_actor_set_anchor_point_from_gravity (priv->close, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (priv->close, + CSW () - clutter_actor_get_width (priv->close) - (PADDING/2), + ASTRO_PANEL_HEIGHT () /2); + clutter_actor_set_reactive (priv->close, TRUE); + + g_signal_connect (priv->close, "button-release-event", + G_CALLBACK (on_close_clicked), panel); + } + + /* Systray */ + priv->systray = astro_systray_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (panel), priv->systray); + clutter_actor_set_position (priv->systray, + CSW () + - clutter_actor_get_width (priv->close) + - clutter_actor_get_width (priv->systray) + - PADDING*2, + PADDING/2); + + clutter_actor_show_all (CLUTTER_ACTOR (panel)); +} + +ClutterActor * +astro_panel_new (void) +{ + AstroPanel *panel = g_object_new (ASTRO_TYPE_PANEL, + NULL); + + return CLUTTER_ACTOR (panel); +} + diff --git a/attic/astro-desktop/src/astro-panel.h b/attic/astro-desktop/src/astro-panel.h new file mode 100644 index 0000000..ec81149 --- /dev/null +++ b/attic/astro-desktop/src/astro-panel.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#ifndef _HAVE_ASTRO_PANEL_H +#define _HAVE_ASTRO_PANEL_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_PANEL astro_panel_get_type() + +#define ASTRO_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_PANEL, \ + AstroPanel)) + +#define ASTRO_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_PANEL, \ + AstroPanelClass)) + +#define ASTRO_IS_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_PANEL)) + +#define ASTRO_IS_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_PANEL)) + +#define ASTRO_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_PANEL, \ + AstroPanelClass)) + +typedef struct _AstroPanel AstroPanel; +typedef struct _AstroPanelClass AstroPanelClass; +typedef struct _AstroPanelPrivate AstroPanelPrivate; + +struct _AstroPanel +{ + ClutterGroup parent; + + /*< private >*/ + AstroPanelPrivate *priv; +}; + +struct _AstroPanelClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /*< signals >*/ + void (*show_home) (AstroPanel *panel); + void (*close_window) (AstroPanel *panel); +}; + +GType astro_panel_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_panel_new (void); + +void astro_panel_set_header (AstroPanel *panel, + const gchar *title, + GdkPixbuf *icon); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/astro-systray.c b/attic/astro-desktop/src/astro-systray.c new file mode 100644 index 0000000..449cb4c --- /dev/null +++ b/attic/astro-desktop/src/astro-systray.c @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include "astro-systray.h" + +#include +#include + +G_DEFINE_TYPE (AstroSystray, astro_systray, CLUTTER_TYPE_GROUP); + +#define ASTRO_SYSTRAY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + ASTRO_TYPE_SYSTRAY, AstroSystrayPrivate)) + +#define PADDING 10 + +struct _AstroSystrayPrivate +{ + ClutterActor *bt; + ClutterActor *nm; + ClutterActor *time; +}; + +static gboolean +set_time (AstroSystray *systray) +{ + AstroSystrayPrivate *priv; + time_t rawtime; + struct tm *timeinfo; + char buffer [100]; + + g_return_val_if_fail (ASTRO_IS_SYSTRAY (systray), FALSE); + priv = systray->priv; + + time (&rawtime); + timeinfo = localtime (&rawtime); + + strftime (buffer, 100, "%a %d %b,%H:%M ", timeinfo); + + clutter_label_set_text (CLUTTER_LABEL (priv->time), buffer); + + return TRUE; +} + +/* GObject stuff */ +static void +astro_systray_class_init (AstroSystrayClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (gobject_class, sizeof (AstroSystrayPrivate)); +} + +static void +astro_systray_init (AstroSystray *systray) +{ + AstroSystrayPrivate *priv; + GdkPixbuf *pixbuf; + ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; + gint width; + gchar *font; + + priv = systray->priv = ASTRO_SYSTRAY_GET_PRIVATE (systray); + + pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR"/icons/bt.png", NULL); + if (pixbuf) + { + priv->bt = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (systray), priv->bt); + clutter_actor_set_anchor_point_from_gravity (priv->bt, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (priv->bt, 0, ASTRO_PANEL_HEIGHT ()/2); + } + + pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR"/icons/nm.png", NULL); + if (pixbuf) + { + priv->nm = clutter_texture_new_from_pixbuf (pixbuf); + clutter_container_add_actor (CLUTTER_CONTAINER (systray), priv->nm); + clutter_actor_set_anchor_point_from_gravity (priv->nm, + CLUTTER_GRAVITY_WEST); + clutter_actor_set_position (priv->nm, + clutter_actor_get_width (priv->bt) + PADDING, + ASTRO_PANEL_HEIGHT () /2); + } + + width = clutter_actor_get_width (CLUTTER_ACTOR (systray)); + + /* Time date */ + font = g_strdup_printf ("Sans %d", (int)(ASTRO_PANEL_HEIGHT () * 0.2)); + priv->time = clutter_label_new_full (font, " ", &white); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->time), FALSE); + clutter_container_add_actor (CLUTTER_CONTAINER (systray), priv->time); + clutter_actor_set_anchor_point_from_gravity (priv->time,CLUTTER_GRAVITY_WEST); + set_time (systray); + clutter_actor_set_position (priv->time, width + PADDING, + ASTRO_PANEL_HEIGHT ()/2); + + g_timeout_add (1000, (GSourceFunc)set_time, systray); + g_free (font); + + clutter_actor_show_all (CLUTTER_ACTOR (systray)); +} + +ClutterActor * +astro_systray_new (void) +{ + AstroSystray *systray = g_object_new (ASTRO_TYPE_SYSTRAY, + NULL); + + return CLUTTER_ACTOR (systray); +} + diff --git a/attic/astro-desktop/src/astro-systray.h b/attic/astro-desktop/src/astro-systray.h new file mode 100644 index 0000000..5042636 --- /dev/null +++ b/attic/astro-desktop/src/astro-systray.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2007 OpenedHand Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Neil Jagdish Patel + */ + + +#include +#include + +#ifndef _HAVE_ASTRO_SYSTRAY_H +#define _HAVE_ASTRO_SYSTRAY_H + +G_BEGIN_DECLS + +#define ASTRO_TYPE_SYSTRAY astro_systray_get_type() + +#define ASTRO_SYSTRAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ASTRO_TYPE_SYSTRAY, \ + AstroSystray)) + +#define ASTRO_SYSTRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + ASTRO_TYPE_SYSTRAY, \ + AstroSystrayClass)) + +#define ASTRO_IS_SYSTRAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ASTRO_TYPE_SYSTRAY)) + +#define ASTRO_IS_SYSTRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ASTRO_TYPE_SYSTRAY)) + +#define ASTRO_SYSTRAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + ASTRO_TYPE_SYSTRAY, \ + AstroSystrayClass)) + +typedef struct _AstroSystray AstroSystray; +typedef struct _AstroSystrayClass AstroSystrayClass; +typedef struct _AstroSystrayPrivate AstroSystrayPrivate; + +struct _AstroSystray +{ + ClutterGroup parent; + + /*< private >*/ + AstroSystrayPrivate *priv; +}; + +struct _AstroSystrayClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + +}; + +GType astro_systray_get_type (void) G_GNUC_CONST; + +ClutterActor * astro_systray_new (void); + +G_END_DECLS + +#endif diff --git a/attic/astro-desktop/src/main.c b/attic/astro-desktop/src/main.c new file mode 100644 index 0000000..a7f3fec --- /dev/null +++ b/attic/astro-desktop/src/main.c @@ -0,0 +1,110 @@ +#include +#include + +#include +#include +#include + +#include + +#include "astro-desktop.h" + +/* forwards */ +static ClutterActor * load_background (void); + +/* Command line options */ +static gint width = 640; +static gint height = 480; +static gboolean fullscreen = FALSE; + +static GOptionEntry entries[] = +{ + { + "width", + 'w', 0, + G_OPTION_ARG_INT, + &width, + "Width of application window. Default: 640", + NULL + }, + { + "height", + 'h', 0, + G_OPTION_ARG_INT, + &height, + "Height of application window. Default: 480", + NULL + }, + { + "fullscreen", + 'f', 0, + G_OPTION_ARG_NONE, + &fullscreen, + "Whether the application window should be fullscreen.", + NULL + }, + { + NULL + } +}; + +gint +main (gint argc, gchar *argv[]) +{ + ClutterActor *stage, *bg, *desktop; + GError *error = NULL; + + g_thread_init (NULL); + + clutter_init_with_args (&argc, &argv, + " - Astro Desktop", entries, + NULL, &error); + if (error) + { + g_error ("Unable to run Astro Desktop: %s", error->message); + g_error_free (error); + return EXIT_FAILURE; + } + + /* Set up the stage */ + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, width, height); + + if (fullscreen) + clutter_stage_fullscreen (CLUTTER_STAGE (stage)); + + /* Draw the background */ + bg = load_background (); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), bg); + clutter_actor_set_position (bg, 0, 0); + + /* Load the desktop */ + desktop = astro_desktop_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), desktop); + clutter_actor_set_size (desktop, CSW (), CSH ()); + clutter_actor_set_position (desktop, 0, 0); + + clutter_actor_show_all (stage); + + clutter_main (); + + return EXIT_SUCCESS; +} + +static ClutterActor * +load_background (void) +{ + ClutterActor *texture; + GdkPixbuf *pixbuf; + + texture = clutter_texture_new (); + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR "/background.svg", + CSW (), + CSH (), + FALSE, + NULL); + if (pixbuf) + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (texture), pixbuf, NULL); + + return texture; +} diff --git a/attic/fluttr/AUTHORS b/attic/fluttr/AUTHORS new file mode 100644 index 0000000..8ec34a6 --- /dev/null +++ b/attic/fluttr/AUTHORS @@ -0,0 +1 @@ +Neil J. Patel diff --git a/attic/fluttr/COPYING b/attic/fluttr/COPYING new file mode 100644 index 0000000..623b625 --- /dev/null +++ b/attic/fluttr/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + + 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/attic/fluttr/ChangeLog b/attic/fluttr/ChangeLog new file mode 100644 index 0000000..7c71cb1 --- /dev/null +++ b/attic/fluttr/ChangeLog @@ -0,0 +1,740 @@ +2008-02-18 Chris Lord + + * configure.ac: + Bump clutter version to 0.6 + +2008-02-08 Chris Lord + + * src/fluttr-photo.c: (fluttr_photo_init): + * src/fluttr-set.c: (fluttr_set_init): + * src/fluttr-spinner.c: (fluttr_spinner_alpha_func): + Update to new 0.5 rotation API + +2007-09-07 Neil J. Patel + + Patch by: Andre Magalhaes + + * configure.ac: + Bump to 0.5 + + * src/fluttr-list-view.c: (fluttr_list_view_advance): + Make sure the active_actor is raised to the top. + + * src/main.c: (main), (photo_input_cb), (list_input_cb), + (sets_input_cb): + Add a list_view into the app struct, as two objects were sharing the same + reference :-/. + +2007-08-07 Neil J. Patel + + * configure.ac: + Bump to 0.4. Remove check and warning for 0.2. + +2007-08-01 Neil J. Patel + + * prepare-ChangeLog.pl: + Should not be here. + +2007-08-01 Neil J. Patel + + * AUTHORS: + Include email address. + +2007-07-12 Neil J. Patel + + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func): + Remove the spinning of the photos. + +2007-06-28 Neil J. Patel + + * README: + * configure.ac: + Added instructions on where to download Fluttr for clutter-0.2 + + * src/fluttr-auth.c: + * src/fluttr-list-view.c: (fluttr_list_view_set_property): + * src/fluttr-list.c: (fluttr_list_init): + * src/fluttr-photo.c: (fluttr_photo_set_visible), + (fluttr_photo_swap_alpha_func), (fluttr_photo_init): + * src/fluttr-set-view.c: + * src/fluttr-spinner.c: (fluttr_spinner_new): + * src/fluttr-viewer.c: (fluttr_viewer_swap_alpha_func): + * src/main.c: (main), (create_background): + Port to clutter-0.3. + Call clutter_actor_show_all () on groups where parent == ClutterGroup. + Update clutter_texture_set_pixbuf to new api. + +2007-06-19 Ross Burton + + * libnflick/Makefile.am: + Don't install the library. + +2007-06-19 Rob Bradford + + * libnflick/Makefile.am: + * src/Makefile.am: + Make distcheck pass. + +2007-06-19 Neil J. Patel + + * src/fluttr-viewer.c: (fluttr_viewer_go), + (fluttr_viewer_swap_alpha_func), (fluttr_viewer_init): + Added a spinner while we are fecthing the main pixbuf. + +2007-06-19 Neil J. Patel + + * README: + Added options info. + +2007-06-19 Neil J. Patel + + * README: + Added some more info. + +2007-06-19 Neil J. Patel + + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func), + (on_thread_ok_idle), (fluttr_photo_init): + Added black background. + Stopped printing known warnings/errors. + +2007-05-29 Tomas Frydrych + + * configure.ac: + Check that neon is at least 0.26.0 + +2007-05-22 Neil J Patel + + * src/fluttr-list-view.c: (fluttr_list_view_advance): + Added some more code to 'shrink' the stage, so there's less work for + clutter to do. Definitely a visible improvement on large lists. + +2007-05-21 Neil J. Patel + + * src/fluttr-photo.c: (fluttr_photo_set_visible), + (fluttr_photo_swap_alpha_func): + Fixed Clutter-CRITICAL warnings in the texture-destroying code. + +2007-05-21 Neil J. Patel + + * data/picture.svg: + Made it fit the ratio of the thumbnails so it doesn't appear + stretched. + + * src/fluttr-photo.c: (fluttr_photo_get_default_size): + Made the default size a little larger. + +2007-05-21 Neil J. Patel + + * src/fluttr-photo.c: (on_thread_ok_idle), (_check_cache): + * src/main.c: (main): + Thumbnails will be created according to stage size, and will be saved + in .fluttr-thumbs//.png. Therefore photos will always + be at the proper size for the current stage size. + + * src/main.c: (main): + Added fulscreen (-f), width (-w) and height (-h) options. + +2007-05-21 Neil J. Patel + + * src/fluttr-list-view.c: (fluttr_list_view_advance), + (fluttr_list_view_activate), (fluttr_list_view_advance_row), + (fluttr_list_view_set_property), (fluttr_list_view_get_property), + (fluttr_list_view_class_init): + * src/main.c: (main): + You can now set the number of columns in the list view via the -c + switch (default=3). + +2007-05-20 Neil J. Patel + + * libnflick/nflick-photo-set.c: (nflick_photo_set_give_list): + * libnflick/nflick-pixbuf-fetch.c: (nflick_pixbuf_fetch): + Removed unnecassary warnings. + + * src/fluttr-list-view.c: (fluttr_list_view_paint): + * src/fluttr-photo.c: (fluttr_photo_set_visible), + (fluttr_photo_swap_alpha_func), (on_thread_ok_idle), + (fluttr_photo_finalize), (fluttr_photo_init): + * src/fluttr-photo.h: + When a FLuttrPhoto is not painted, it will destroy its private texture + which holds the photo, recreating it before it is painted. + +2007-05-18 Neil J Patel + + * src/fluttr-list-view.c: (fluttr_list_view_empty), + (fluttr_list_view_paint): + Stopped painting textures which cannot be seen. + +2007-05-10 Neil J. Patel + + * src/main.c: (_swap_alpha_func), (browse_input_cb): + Removed unnecessary variables. + +2007-05-10 Neil J. Patel + + * README: + * src/fluttr-set-view.c: + * src/main.c: (main): + Restored default column settings. + Added some more info to README. + +2007-05-10 Neil J Patel + + * README: + Added authorisation instructions. + + * src/main.c: (main): + Removed 'forced' full screen. + +2007-05-10 Neil J.Patel + + * src/fluttr-list-view.c: + * src/fluttr-photo.c: + * src/fluttr-set-view.c: + * src/main.c: (main): + +2007-05-09 Neil J.Patel + + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func), + (_fluttr_photo_fetch_pixbuf): + Fixed transition. + + * src/fluttr-viewer.c: (fluttr_viewer_show), + (fluttr_viewer_swap_alpha_func), (fluttr_viewer_init): + Tweaked effect. + +2007-05-09 Neil J.Patel + + * src/fluttr-photo.c: (on_thread_ok_idle), (_check_cache), + (_fluttr_photo_fetch_pixbuf): + Implemented caching for thumbnails. + + * src/fluttr-set-view.c: (fluttr_set_view_advance), + (fluttr_set_view_init): + * src/fluttr-set.c: (fluttr_set_set_active), + (fluttr_set_act_alpha_func): + Made the activated set have a different text colour. + + * src/main.c: (main): + Made sure the thumbnail directory is created. + +2007-05-09 Neil J.Patel + + * src/fluttr-set-view.c: (fluttr_set_view_add_set): + All sets start from the middle of the stage. + + * src/main.c: (main), (_swap_alpha_func), (list_input_cb), + (sets_input_cb): + Smooth fading transition from sets<->list. + +2007-05-09 Neil J.Patel + + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func), + (fluttr_photo_class_init), (fluttr_photo_init): + * src/fluttr-photo.h: + Emits signal when the activation effect is complete. + + * src/fluttr-viewer.c: (fluttr_viewer_show), + (close_message_window), (on_thread_ok_idle), (fluttr_viewer_go), + (fluttr_viewer_alpha_func), (fluttr_viewer_swap_alpha_func), + (fluttr_viewer_set_property), (fluttr_viewer_get_property), + (fluttr_viewer_class_init), (fluttr_viewer_init): + * src/main.c: (photo_input_cb), (_show_viewer), (list_input_cb): + Fixed bug where the viewer was not hiding properly, and blockign the + current view. + +2007-05-09 Neil J.Patel + + * src/fluttr-viewer.c: (on_thread_abort_idle), (on_thread_ok_idle), + (on_thread_error_idle), (fluttr_viewer_go), + (fluttr_viewer_swap_alpha_func), (fluttr_viewer_init): + Fixed bug which was stopping the active photo (and subsequent threads) + from doing their work because of a timeline. + +2007-05-09 Neil J.Patel + + * src/Makefile.am: + * src/fluttr-photo.c: + * src/fluttr-photo.h: + * src/fluttr-viewer.c: + * src/fluttr-viewer.h: + * src/main.c: + Added basic fullscreen photo viewing capability. + +2007-05-09 Neil J.Patel + + * libnflick/nflick-set-list-worker.c: (thread_func): + Removed useless status messages. + + * src/Makefile.am: + Added the new set-view files. + + * src/fluttr-list-view.c: (fluttr_list_view_advance), (_peg), + (fluttr_list_view_activate), (fluttr_list_view_empty), + (fluttr_list_view_populate), (fluttr_list_view_set_property), + (fluttr_list_view_get_property), (fluttr_list_view_class_init), + (fluttr_list_view_init), (fluttr_list_view_new): + * src/fluttr-list-view.h: + Amended code to use a FluttrSet as the underlying data-type rather than + a FluttrLibrary class. + + * src/fluttr-list.c: (on_thread_msg_change_idle): + Added a '\n' at the end of each message. + + * src/fluttr-set-view.c: (fluttr_set_view_get_active), + (fluttr_set_view_advance), (fluttr_set_view_activate), + (fluttr_set_view_advance_row), (fluttr_set_view_advance_col), + (fluttr_set_view_add_set), (fluttr_set_view_set_property), + (fluttr_set_view_get_property), (fluttr_set_view_paint), + (fluttr_set_view_dispose), (fluttr_set_view_finalize), + (fluttr_set_view_class_init), (fluttr_set_view_init), + (fluttr_set_view_new): + * src/fluttr-set-view.h: + A new view whihc is based on the list view, but handles FLuttrSets. + + * src/fluttr-set.c: (fluttr_set_get_default_size), + (fluttr_set_get_default_width), (fluttr_set_get_default_height), + (fluttr_set_set_active), (fluttr_set_update_position), + (fluttr_set_trans_alpha_func), (fluttr_set_act_alpha_func), + (_refresh_thumbs), (fluttr_set_append_photo), + (fluttr_set_get_photos), (_update_text), (fluttr_set_set_property), + (fluttr_set_get_property), (fluttr_set_dispose), + (fluttr_set_finalize), (fluttr_set_class_init), (fluttr_set_init), + (fluttr_set_new): + * src/fluttr-set.h: + A CluttrActor which is the representation of a Flickr set. It also + contains the list of photos belonging to that set. + + * src/main.c: (main), (list_get_successful), (list_input_cb), + (sets_input_cb), (browse_input_cb): + Added ability to browse sets and then photos belonging to the activated + set. + +2007-05-08 Neil J.Patel + + * libnflick/nflick-set-list-worker.c: (thread_func): Changed to download + photo information for every set rather than just the first set. + + * src/main.c: (list_get_successful): Chhanged data output. + +2007-05-08 Neil J.Patel + + * src/fluttr-photo.c: (fluttr_photo_set_active), + (_fluttr_photo_fetch_pixbuf): Fixed problem where the photo fetching + worker was being called repeatedly affecting performance. + +2007-05-04 Neil J. Patel + + * src/fluttr-list-view.c: (fluttr_list_view_advance), + (fluttr_list_view_activate): + All visible rows will 'fall' when a photo is activated. + +2007-05-04 Neil J. Patel + + * src/fluttr-list-view.c: (fluttr_list_view_advance): + * src/fluttr-photo.c: (fluttr_photo_get_default_width), + (fluttr_photo_get_default_height), (fluttr_photo_swap_alpha_func), + (fluttr_photo_paint), (fluttr_photo_init): + * src/fluttr-photo.h: + Photos are w>h again, instead of squares. Looks nicer. + + +2007-05-04 Neil J. Patel + + reviewed by: + + * src/fluttr-list-view.c: + Changed the 'falling photos' code so it moves up first, then down. + + * src/fluttr-photo.c: + Fixed some silly resize errors, removed the 'flipping' code when + activated. + + * src/main.c: + Stopped activation from calling the fluttr_photo_set_options. + + +2007-05-04 Neil J. Patel + + * src/fluttr-list-view.c: (fluttr_list_view_get_active), + (fluttr_list_view_advance), (fluttr_list_view_activate): + * src/fluttr-list-view.h: + Added a call to 'activate' the current photo. Activation consists of + letting the other photos 'fall' away, and the centering the main photo. + + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func), + (on_thread_ok_idle), (fluttr_photo_init): + Cleaned up some over-the-top printing. + + * src/main.c: (_set_options), (browse_input_cb): + Changed to 'activate the list view when enter is pressed. + +2007-05-04 Neil J. Patel + + reviewed by: + + * src/fluttr-list-view.c: (fluttr_list_view_get_active), + (fluttr_list_view_advance), (fluttr_list_view_activate): + * src/fluttr-list-view.h: + * src/fluttr-photo.c: (fluttr_photo_opt_alpha_func), + (on_thread_ok_idle), (fluttr_photo_init): + * src/main.c: (_set_options), (browse_input_cb): + +2007-05-04 Neil J. Patel + + reviewed by: + + * src/fluttr-list-view.c: (fluttr_list_view_get_active), + (fluttr_list_view_advance): + * src/fluttr-photo.c: (fluttr_photo_get_default_size), + (fluttr_photo_set_options), (fluttr_photo_set_active), + (fluttr_photo_act_alpha_func), (fluttr_photo_opt_alpha_func), + (fluttr_photo_fetch_pixbuf), (fluttr_photo_set_property), + (fluttr_photo_paint), (fluttr_photo_init): + * src/fluttr-photo.h: + * src/main.c: (_set_options): + +2007-05-04 Neil J. Patel + + * src/fluttr-photo.c: (fluttr_photo_act_alpha_func), + (fluttr_photo_set_options), (fluttr_photo_paint), + (fluttr_photo_init): + * src/fluttr-photo.h: + Adjusted to use glScale over a timeline, rather than + clutter_actor_set_scale. + After settings the options, FluttrPhoto will automatically start the + 'active' timeline. + + * src/main.c: (_set_options): + Sets a test 'options' widget upon pressing enter. + +2007-05-03 Neil J. Patel + + * libnflick/nflick-show-worker.c: + Stop spitting out annoying messages. + + * src/fluttr-auth.h: + * src/fluttr-library-row.c: + Added a GdkPixbuf property. + + * src/fluttr-list-view.c: + * src/fluttr-list-view.h: + Ability to control table size. + Added calls to allow you to move n numbr os rows or columns. + Ability to get the currently selected FluttrPhoto. + + * src/fluttr-photo.c: + * src/fluttr-photo.h: + Added the 'options' widget at the correct rotation. + Function to set the options widget. + + * src/main.c: + Responds to keystrokes. + + +2007-05-03 Neil J. Patel + + * Makefile.am: + * config.guess: + * config.sub: + * configure.ac: + * libnflick/Makefile.am: + * libnflick/nflick-api-request-private.h: + * libnflick/nflick-api-request.c: + * libnflick/nflick-api-request.h: + * libnflick/nflick-api-response-private.h: + * libnflick/nflick-api-response.c: + * libnflick/nflick-auth-worker.h: + * libnflick/nflick-flickr.h: + * libnflick/nflick-get-sizes-response-private.h: + * libnflick/nflick-get-sizes-response.c: + * libnflick/nflick-get-sizes-response.h: + * libnflick/nflick-gft-response-private.h: + * libnflick/nflick-gft-response.c: + * libnflick/nflick-gft-response.h: + * libnflick/nflick-no-set-response-private.h: + * libnflick/nflick-no-set-response.c: + * libnflick/nflick-no-set-response.h: + * libnflick/nflick-photo-data.c: + * libnflick/nflick-photo-data.h: + * libnflick/nflick-photo-list-response-private.h: + * libnflick/nflick-photo-list-response.c: + * libnflick/nflick-photo-list-response.h: + * libnflick/nflick-photo-list-worker-private.h: + * libnflick/nflick-photo-list-worker.c: + * libnflick/nflick-photo-list-worker.h: + * libnflick/nflick-photo-set-private.h: + * libnflick/nflick-photo-set.c: + * libnflick/nflick-photo-set.h: + * libnflick/nflick-pixbuf-fetch-private.h: + * libnflick/nflick-pixbuf-fetch.c: + * libnflick/nflick-pixbuf-fetch.h: + * libnflick/nflick-set-list-response-private.h: + * libnflick/nflick-set-list-response.c: + * libnflick/nflick-set-list-response.h: + * libnflick/nflick-set-list-worker-private.h: + * libnflick/nflick-set-list-worker.c: + * libnflick/nflick-set-list-worker.h: + * libnflick/nflick-show-worker-private.h: + * libnflick/nflick-show-worker.c: + * libnflick/nflick-show-worker.h: + * libnflick/nflick-types.h: + * libnflick/nflick-worker-private.h: + * libnflick/nflick-worker.c: + * libnflick/nflick-worker.h: + * libnflick/nflick.h: + * ltmain.sh: + * src/Makefile.am: + * src/fluttr-auth.c: + * src/fluttr-library-row.c: + * src/fluttr-library-row.h: + * src/fluttr-list-view.h: + * src/fluttr-list.c: + * src/fluttr-list.h: + * src/fluttr-photo.c: + * src/fluttr-photo.h: + * src/main.c: + * src/nflick-api-request-private.h: + * src/nflick-api-request.c: + * src/nflick-api-request.h: + * src/nflick-api-response-private.h: + * src/nflick-api-response.c: + * src/nflick-api-response.h: + * src/nflick-auth-worker-private.h: + * src/nflick-auth-worker.c: + * src/nflick-auth-worker.h: + * src/nflick-flickr.h: + * src/nflick-get-sizes-response-private.h: + * src/nflick-get-sizes-response.c: + * src/nflick-get-sizes-response.h: + * src/nflick-gft-response-private.h: + * src/nflick-gft-response.c: + * src/nflick-gft-response.h: + * src/nflick-no-set-response-private.h: + * src/nflick-no-set-response.c: + * src/nflick-no-set-response.h: + * src/nflick-photo-data.c: + * src/nflick-photo-data.h: + * src/nflick-photo-list-response-private.h: + * src/nflick-photo-list-response.c: + * src/nflick-photo-list-response.h: + * src/nflick-photo-list-worker-private.h: + * src/nflick-photo-list-worker.c: + * src/nflick-photo-list-worker.h: + * src/nflick-photo-set-private.h: + * src/nflick-photo-set.c: + * src/nflick-photo-set.h: + * src/nflick-pixbuf-fetch-private.h: + * src/nflick-pixbuf-fetch.c: + * src/nflick-pixbuf-fetch.h: + * src/nflick-set-list-response-private.h: + * src/nflick-set-list-response.c: + * src/nflick-set-list-response.h: + * src/nflick-set-list-worker-private.h: + * src/nflick-set-list-worker.c: + * src/nflick-set-list-worker.h: + * src/nflick-show-worker-private.h: + * src/nflick-show-worker.c: + * src/nflick-show-worker.h: + * src/nflick-types.h: + * src/nflick-worker-private.h: + * src/nflick-worker.c: + * src/nflick-worker.h: + Pulled all nflick files into its own directory. + Updated sources to reflect change. + +2007-05-03 Neil J. Patel + + * data/picture.svg: + Changed to lighter colour, and added clock picture (from Tango icon). + + * src/fluttr-list-view.c: (fluttr_list_view_advance): + Changed to make a grid of 4x3 icons. + + * src/fluttr-photo.c: (fluttr_photo_swap_alpha_func), + (on_thread_ok_idle), (fluttr_photo_fetch_pixbuf), + (fluttr_photo_get_default_size), (fluttr_photo_init): + Changed the sizing to be a square with a set size, rather than a + resizable rectangle. The downloaded picture is now set in the middle + of a clip region. + + * src/fluttr-photo.h: + Added a utility function to get the default size of the photo square for + the current stage width & height. + + +2007-05-02 Neil J. Patel + + * src/Makefile.am: + * src/fluttr-library-row.c: + Fixed pixbuf swapping effect. Lowered fps. + + * src/fluttr-library.c: + * src/fluttr-library.h: + Changed function names. + + * src/fluttr-list-view.c: + * src/fluttr-list-view.h: + A table widget to show photos. Handles positioning. + + * src/fluttr-photo.c: + Changed fps to be faster. Send signal when finished. + + * src/main.c: + Commented out the test code. + +2007-05-02 Neil J. Patel + + * src/fluttr-list.c: (fluttr_list_text_alpha_func): + Correctted factor calulation for text fade out. + + * src/fluttr-photo.c: (fluttr_photo_trans_alpha_func), + (fluttr_photo_swap_alpha_func), (on_thread_ok_idle), + (fluttr_photo_fetch_pixbuf), (fluttr_photo_init): + Added a effect for swapping the default pixbuf with the downloaded + photo pixbuf. + +2007-05-02 Neil J. Patel + + * data/Makefile.am: + * src/Makefile.am: + * src/fluttr-library-row.c: + * src/fluttr-library-row.h: + * src/fluttr-library.c: + Added library interface, with a FluttrLibraryRow class which is created + or every photo. + + * src/fluttr-list.c: + Adjusted timeline fps to allow other threads to work properly. + + * src/fluttr-photo.c: + * src/fluttr-photo.h: + A class representing a photo *on* the stage, it is created & destroyed + as needed. + + * src/fluttr-settings.c: + * src/fluttr-settings.h: + A singleton containing the current sessions auth properties. + + * src/main.c: + Added a test case for downloading a picture. + + * src/nflick-show-worker-private.h: + * src/nflick-show-worker.c: + * src/nflick-show-worker.h: + Added missing files from NFlick to allow downloading of photos. + +2007-05-01 Neil J. Patel + + * data/Makefile.am: + * data/background.svg: + * data/message.svg: + * data/spinner.svg: + Added some nice pictures. + + * src/Makefile.am: + * src/fluttr-auth.c: + Removed unneeded header. + + * src/fluttr-behave.c: (alpha_sine_inc_func), + (alpha_linear_inc_func), (fluttr_behave_alpha_notify), + (fluttr_behave_class_init), (fluttr_behave_init), + (fluttr_behave_new): + * src/fluttr-behave.h: + A utility behaviour class witch will call a custom function on each + iteration of the timeline. + + * src/fluttr-library-row.h: + Removed unused headers. + + * src/fluttr-list.c: (close_message_window), + (on_thread_abort_idle), (on_thread_ok_idle), + (on_thread_error_idle), (on_thread_msg_change_idle), + (fluttr_list_go), (fluttr_list_alpha_func), + (fluttr_list_text_alpha_func), (fluttr_list_init), + (fluttr_list_new): + Added a startup spinning effect while the photo data is being + downloaded from flickr. + + * src/fluttr-spinner.c: (fluttr_spinner_spin), + (fluttr_spinner_alpha_func), (fluttr_spinner_dispose), + (fluttr_spinner_finalize), (fluttr_spinner_class_init), + (fluttr_spinner_init), (fluttr_spinner_new): + * src/fluttr-spinner.h: + A basic spinner widget. + + * src/main.c: (main), (create_background): + Added a background. + + * src/nflick-worker.c: (thread_start): + Changed the thread for OkIdle to be called with a higher priority. + + +2007-04-30 Neil J. Patel + + * src/Makefile.am + Imported missing files from NFlick. + + * src/fluttr-auth.h: + Fixed typo from copy. + + * src/fluttr-list.c: + * src/fluttr-list.h: + An actor which wraps nflick_set_list_worker, sends signals on + completion. + + * src/main.c: (main), (auth_successful), (auth_error), + (list_get_successful), (list_get_error): + Added the ability to get a list of photos and print them out. + +2007-04-30 Neil J. Patel + + * README: + Added explaination of where the Flickr code came from. + + * src/Makefile.am: + * src/fluttr-auth.c: + * src/fluttr-auth.h: + Added a FluttrAuth class which handles Flickr authorisations and uses + signals to provide feedback. + + * src/main.c: (_auth_timeout):Starts the FluttrAuth class. + (main):Added checks for authorisation. + (check_credentials): Loads up a .fluttr keyfile which contains the + username, fullname, token and usernsid of the previous session. + (auth_successful): Will save the new details in the .fluttr keyfile + (auth_error): FluttrAuth error handler. + + * src/nflick-flickr.h: + Changed the values to authorise for fluttr and not nflic. + +2007-04-30 Neil J. Patel + + * configure.ac: + * prepare-ChangeLog.pl: + * src/Makefile.am: + * src/main.c: (main): + * src/nflick-api-request-private.h: + * src/nflick-api-request.c: + * src/nflick-api-request.h: + * src/nflick-api-response-private.h: + * src/nflick-api-response.c: + * src/nflick-api-response.h: + * src/nflick-auth-worker-private.h: + * src/nflick-auth-worker.c: + * src/nflick-auth-worker.h: + * src/nflick-flickr.h: + * src/nflick-gft-response-private.h: + * src/nflick-gft-response.c: + * src/nflick-gft-response.h: + * src/nflick-types.h: + * src/nflick-worker-private.h: + * src/nflick-worker.c: + * src/nflick-worker.h: + Import of nflick's Flickr code, made it compile. + +2007-04-27 Neil J. Patel + + * Inital Import: + Initial Import + diff --git a/attic/fluttr/INSTALL b/attic/fluttr/INSTALL new file mode 100644 index 0000000..23e5f25 --- /dev/null +++ b/attic/fluttr/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/attic/fluttr/Makefile.am b/attic/fluttr/Makefile.am new file mode 100644 index 0000000..7dba0bf --- /dev/null +++ b/attic/fluttr/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = data libnflick src + +#MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/attic/fluttr/NEWS b/attic/fluttr/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/attic/fluttr/README b/attic/fluttr/README new file mode 100644 index 0000000..b21d2e7 --- /dev/null +++ b/attic/fluttr/README @@ -0,0 +1,69 @@ +A clutter-based flickr viewer. + +NOTE +==== + +Fluttr is now tracking clutter svn (clutter-0.3 upwards), so you can either +install clutter svn on your system, or you can grab a copy of Fluttr which will +compile against clutter-0.2 from: +http://folks.o-hand.com/njp/fluttr/fluttr-0.1-svn846.tar.gz + + +Authorising yourself with Flickr +================================ + +Type this url into your web-browser of choice: + +http://www.flickr.com/auth-72157600141007022 + +You will then be asked to log into flickr (or not if you are already +logged in). The next screen will ask you if you want to let Fluttr access +your Flickr pictures, click "OK, I'll allow it", and Flickr will take you to +a page which has a auth code in the middle like this: + +123-456-789 + +Now, start fluttr with that code: + +$ fluttr 123-456-789 + +Fluttr will then contact Flickr and save its settings. From now on, you can +just run fluttr without any options. + +NB: You may need to restart fluttr after the initial authorisation. + +Using Fluttr +=========== + +Fluttr is pretty simple in that it can view sets, view photos within a set, +and finally view a photo. Certain things, like moving between photos when +maximised, still need to be added. + +The main keys for using Fluttr are the Up/Down/Left/Right keys to navigate, +and Enter to select. Esc will bring you back to the previous menu. If you are +already at 'root level' ie. you can see all the different photo sets, then +pressing Esc will quit Fluttr. Pressing q at any time will also cause Fluttr +to quit. + +Options +======= +-c, --columns=3 Number of picture columns in the view +-f, --fullscreen Launch Fluttr in fullscreen mode +-w, --width=800 Width of the Fluttr window +-h, --height=440 Height of the Fluttr window + +Know Issues +=========== + +On some machines, Fluttr does not quit properly (due to a thread problem in +either libneon or the nflick code), so you may have to kill it. You will +know that this has happened because your cpu usage will be raised. I am +trying to find the reason for this, or how to prevent it. If you have any +ideas, you know what to do :). + + +Credits +======= +All of the 'flickr' code (anything starting with nflick-*), has been taken +from the excellent NFlick Flickr browser for the n800 by MDK +(https://garage.maemo.org/projects/nflick). diff --git a/attic/fluttr/TODO b/attic/fluttr/TODO new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/attic/fluttr/TODO @@ -0,0 +1 @@ + diff --git a/attic/fluttr/autogen.sh b/attic/fluttr/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/attic/fluttr/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/attic/fluttr/config.guess b/attic/fluttr/config.guess new file mode 120000 index 0000000..d0bb19b --- /dev/null +++ b/attic/fluttr/config.guess @@ -0,0 +1 @@ +/usr/share/libtool/config.guess \ No newline at end of file diff --git a/attic/fluttr/config.sub b/attic/fluttr/config.sub new file mode 120000 index 0000000..31a57ca --- /dev/null +++ b/attic/fluttr/config.sub @@ -0,0 +1 @@ +/usr/share/libtool/config.sub \ No newline at end of file diff --git a/attic/fluttr/configure.ac b/attic/fluttr/configure.ac new file mode 100644 index 0000000..02fcd08 --- /dev/null +++ b/attic/fluttr/configure.ac @@ -0,0 +1,28 @@ +AC_PREREQ(2.53) +AC_INIT(fluttr, 0.1.1, []) +AM_INIT_AUTOMAKE() +AC_CONFIG_SRCDIR(src/main.c) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_STDC_HEADERS +AC_PROG_LIBTOOL + +PKG_CHECK_MODULES(DEPS, clutter-0.6 gdk-2.0 gtk+-2.0 neon >= 0.26.0 libxml-2.0) +AC_SUBST(DEPS_CFLAGS) +AC_SUBST(DEPS_LIBS) + +if test "x$GCC" = "xyes"; then + GCC_FLAGS="-g -Wall" +fi + +AC_SUBST(GCC_FLAGS) + +AC_OUTPUT([ +Makefile +data/Makefile +libnflick/Makefile +src/Makefile +]) diff --git a/attic/fluttr/data/Makefile.am b/attic/fluttr/data/Makefile.am new file mode 100644 index 0000000..4754dd6 --- /dev/null +++ b/attic/fluttr/data/Makefile.am @@ -0,0 +1,12 @@ +imagedir = $(datadir)/fluttr +image_DATA = \ + background.svg \ + message.svg \ + spinner.svg \ + picture.svg + +EXTRA_DIST = \ + background.svg \ + message.svg \ + spinner.svg \ + picture.svg diff --git a/attic/fluttr/data/background.svg b/attic/fluttr/data/background.svg new file mode 100644 index 0000000..b3e1b2a --- /dev/null +++ b/attic/fluttr/data/background.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/fluttr/data/message.svg b/attic/fluttr/data/message.svg new file mode 100644 index 0000000..64daef9 --- /dev/null +++ b/attic/fluttr/data/message.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/attic/fluttr/data/picture.svg b/attic/fluttr/data/picture.svg new file mode 100644 index 0000000..7d17d9f --- /dev/null +++ b/attic/fluttr/data/picture.svg @@ -0,0 +1,950 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/attic/fluttr/data/spinner.svg b/attic/fluttr/data/spinner.svg new file mode 100644 index 0000000..62e6a18 --- /dev/null +++ b/attic/fluttr/data/spinner.svg @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/fluttr/libnflick/Makefile.am b/attic/fluttr/libnflick/Makefile.am new file mode 100644 index 0000000..faf1134 --- /dev/null +++ b/attic/fluttr/libnflick/Makefile.am @@ -0,0 +1,62 @@ +noinst_LTLIBRARIES = libnflick.la + +INCLUDES = \ + $(DEPS_CFLAGS) + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(DEPS_CFLAGS) \ + -DDATADIR=\""$(datadir)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + $(NULL) + +libnflick_la_SOURCES = \ + nflick.h \ + nflick-api-request.c \ + nflick-api-request.h \ + nflick-api-request-private.h \ + nflick-api-response.c \ + nflick-api-response.h \ + nflick-api-response-private.h \ + nflick-auth-worker.c \ + nflick-auth-worker.h \ + nflick-auth-worker-private.h \ + nflick-flickr.h \ + nflick-get-sizes-response.c \ + nflick-get-sizes-response.h \ + nflick-get-sizes-response-private.h \ + nflick-gft-response.c \ + nflick-gft-response.h \ + nflick-gft-response-private.h \ + nflick-no-set-response.c \ + nflick-no-set-response.h \ + nflick-no-set-response-private.h \ + nflick-photo-data.c \ + nflick-photo-data.h \ + nflick-photo-list-response.c \ + nflick-photo-list-response.h \ + nflick-photo-list-response-private.h \ + nflick-photo-list-worker.c \ + nflick-photo-list-worker.h \ + nflick-photo-list-worker-private.h \ + nflick-photo-set.c \ + nflick-photo-set.h \ + nflick-photo-set-private.h \ + nflick-pixbuf-fetch.c \ + nflick-pixbuf-fetch.h \ + nflick-pixbuf-fetch-private.h \ + nflick-set-list-response.c \ + nflick-set-list-response.h \ + nflick-set-list-response-private.h \ + nflick-set-list-worker.c \ + nflick-set-list-worker.h \ + nflick-set-list-worker-private.h \ + nflick-show-worker.c \ + nflick-show-worker.h \ + nflick-show-worker-private.h \ + nflick-types.h \ + nflick-worker.c \ + nflick-worker.h \ + nflick-worker-private.h + +libnflick_la_LIBADD = $(DEPS_LIBS) +libnflick_la_LDFLAGS = -version-info 0:1:0 diff --git a/attic/fluttr/libnflick/nflick-api-request-private.h b/attic/fluttr/libnflick/nflick-api-request-private.h new file mode 100644 index 0000000..99f84dd --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-request-private.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickApiRequestPrivate +{ + GHashTable *Hash; + gchar *Buffer; + gint32 BytesRead; +}; + +static void nflick_api_request_class_init (NFlickApiRequestClass *klass); + +static void nflick_api_request_init (NFlickApiRequest *self); + +static gboolean private_init (NFlickApiRequest *self, NFlickApiRequestPrivate *private); + +static void private_dispose (NFlickApiRequestPrivate *private); + +static void nflick_api_request_dispose (NFlickApiRequest *self); + +static void nflick_api_request_finalize (NFlickApiRequest *self); + +static gchar* get_path (NFlickApiRequest *self); + +static void foreach_composer_list (gchar *param, gchar *val, GList **list); + +static void foreach_composer_str (gchar *val, gchar **str); + +static gchar* get_path_sig (NFlickApiRequest *self); + +static void foreach_composer_list_sig (gchar *param, gchar *val, GList **list); + +static void foreach_composer_str_sig (gchar *val, gchar **str); + +static int block_reader (NFlickApiRequest *self, gchar *buffer, int len); + diff --git a/attic/fluttr/libnflick/nflick-api-request.c b/attic/fluttr/libnflick/nflick-api-request.c new file mode 100644 index 0000000..9986143 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-request.c @@ -0,0 +1,396 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-api-request.h" +#include "nflick-api-request-private.h" + +GType nflick_api_request_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickApiRequestClass), + NULL, + NULL, + (GClassInitFunc) nflick_api_request_class_init, + NULL, + NULL, + sizeof (NFlickApiRequest), + 4, + (GInstanceInitFunc) nflick_api_request_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickApiRequest", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_api_request_class_init (NFlickApiRequestClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_api_request_dispose; + gobjectclass->finalize = (gpointer) nflick_api_request_finalize; + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_api_request_init (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + self->Private = NULL; + + NFlickApiRequestPrivate *priv = g_new0 (NFlickApiRequestPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickApiRequest *self, NFlickApiRequestPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + g_return_val_if_fail (private->Hash != NULL, FALSE); + + private->Buffer = NULL; + private->BytesRead = 0; + + return TRUE; +} + +static void private_dispose (NFlickApiRequestPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Hash != NULL) { + g_hash_table_destroy (private->Hash); + private->Hash = NULL; + } + + if (private->Buffer != NULL) { + g_free (private->Buffer); + private->Buffer = NULL; + } +} + +static void nflick_api_request_dispose (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_api_request_finalize (NFlickApiRequest *self) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +NFlickApiRequest* nflick_api_request_new (const gchar *method) +{ + g_return_val_if_fail (method != NULL, NULL); + + NFlickApiRequest *self = g_object_new (NFLICK_TYPE_API_REQUEST, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_METHOD, method); + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_KEY, NFLICK_FLICKR_API_KEY); + + return self; +} + +void nflick_api_request_add_parameter (NFlickApiRequest *self, + const gchar *param, const gchar *val) +{ + g_return_if_fail (NFLICK_IS_API_REQUEST (self)); + g_return_if_fail (param != NULL); + + g_hash_table_insert (self->Private->Hash, g_strdup (param), g_strdup (val)); +} + +static gchar* get_path (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + GList *list = NULL; + gchar *str = NULL; + g_hash_table_foreach (self->Private->Hash, (GHFunc) foreach_composer_list, &list); + g_list_foreach (list, (GFunc) foreach_composer_str, &str); + g_list_foreach (list, (GFunc) g_free, NULL); + + return str; +} + +static gchar* get_path_sig (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + GList *list = NULL; + gchar *str = g_strdup_printf ("%s", NFLICK_FLICKR_SHARED_SECRET); + g_hash_table_foreach (self->Private->Hash, (GHFunc) foreach_composer_list_sig, &list); + g_list_foreach (list, (GFunc) foreach_composer_str_sig, &str); + g_list_foreach (list, (GFunc) g_free, NULL); + + return str; +} + +static void foreach_composer_list (gchar *param, gchar *val, GList **list) +{ + /* Silently ignore empty vals */ + if (param == NULL || list == NULL) + return; + + gchar *str = g_strdup_printf ("%s=%s", param, val); + g_return_if_fail (str != NULL); + + *list = g_list_insert_sorted (*list, str, (GCompareFunc) strcmp); +} + +static void foreach_composer_str (gchar *val, gchar **str) +{ + /* Silently ignore empty vals */ + if (val == NULL) + return; + + gchar *old = *str; + + if (*str != NULL) { + *str = g_strdup_printf ("%s&%s", *str, val); + g_free (old); + } else + *str = g_strdup_printf ("%s", val); +} + +static void foreach_composer_list_sig (gchar *param, gchar *val, GList **list) +{ + /* Silently ignore empty vals */ + if (param == NULL || list == NULL) + return; + + gchar *str = g_strdup_printf ("%s%s", param, val); + g_return_if_fail (str != NULL); + + *list = g_list_insert_sorted (*list, str, (GCompareFunc) strcmp); +} + +static void foreach_composer_str_sig (gchar *val, gchar **str) +{ + /* Silently ignore empty vals */ + if (val == NULL) + return; + + gchar *old = *str; + + if (*str != NULL) { + *str = g_strdup_printf ("%s%s", *str, val); + g_free (old); + } else + *str = g_strdup_printf ("%s", val); +} + +gboolean nflick_api_request_sign (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + + gchar *path_sig = NULL; + gpointer ctx = NULL; + gpointer ctx_output = NULL; + gchar *ascii = NULL; + gboolean res = TRUE; + + path_sig = get_path_sig (self); + if (path_sig == NULL) + goto Failure; + + ctx = ne_md5_create_ctx (); + if (ctx == NULL) + goto Failure; + + ne_md5_process_bytes (path_sig, strlen (path_sig), ctx); + ctx_output = g_malloc (16); + if (ctx_output == NULL) + goto Failure; + + ne_md5_finish_ctx (ctx, ctx_output); + ascii = g_malloc (33); + if (ascii == NULL) + goto Failure; + + ne_md5_to_ascii (ctx_output, ascii); + if (ascii [32] != 0) + goto Failure; + + /* Now it's time to sign it... */ + nflick_api_request_add_parameter (self, NFLICK_FLICKR_API_PARAM_SIGNATURE, ascii); + + goto Finish; + +Failure: + res = FALSE; + g_warning ("Failure during md5 computation/signing"); + +Finish: + if (path_sig != NULL) + g_free (path_sig); + if (ctx != NULL) + g_free (ctx); + if (ctx_output != NULL) + g_free (ctx_output); + if (ascii != NULL) + g_free (ascii); + + return res; +} + +static int block_reader (NFlickApiRequest *self, gchar *buffer, int len) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), -1); + + if (self->Private->Buffer == NULL) { + self->Private->Buffer = g_malloc (len + 1); + memcpy (self->Private->Buffer, buffer, len); + self->Private->Buffer [len] = 0; + self->Private->BytesRead = 0; + } else { + gchar *old_ptr = self->Private->Buffer; + self->Private->Buffer = g_malloc (self->Private->BytesRead + len + 1); + memcpy (self->Private->Buffer, old_ptr, self->Private->BytesRead); + memcpy (self->Private->Buffer + self->Private->BytesRead, buffer, len); + self->Private->Buffer [len + self->Private->BytesRead] = 0; + + g_free (old_ptr); + } + + self->Private->BytesRead += len; + return 0; +} + +gboolean nflick_api_request_exec (NFlickApiRequest *self) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), FALSE); + + gchar *path_str = NULL; /* The full path */ + gchar *uri_str = NULL; /* The actual uri to use */ + ne_uri *uri = NULL; /* Neon uri */ + ne_request *request = NULL; /* Http request */ + ne_session *session = NULL; /* Neon session */ + gboolean result = TRUE; /* result */ + + path_str = get_path (self); + if (path_str == NULL) { + result = FALSE; + goto Done; + } + + uri_str = g_strdup_printf ("%s?%s", NFLICK_FLICKR_REST_END_POINT, path_str); + if (uri_str == NULL) { + result = FALSE; + goto Done; + } + + uri = g_new0 (ne_uri, 1); + if (uri == NULL) { + result = FALSE; + goto Done; + } + + /* Fill-out the params */ + uri->scheme = "http"; + uri->port = ne_uri_defaultport (uri->scheme); + uri->host = NFLICK_FLICKR_HOST; + uri->path = uri_str; + + /* Create the session */ + session = ne_session_create (uri->scheme, uri->host, uri->port); + if (session == NULL) { + result = FALSE; + goto Done; + } + + /* Create the request */ + request = ne_request_create (session, "GET", uri->path); + if (request == NULL) { + result = FALSE; + goto Done; + } + + ne_add_response_body_reader (request, ne_accept_always, (gpointer) block_reader, self); + + result == (ne_request_dispatch (request) == NE_OK) ? TRUE : FALSE; + if (self->Private->Buffer == NULL) + result = FALSE; + +Done: + if (path_str != NULL) + g_free (path_str); + + if (uri_str != NULL) + g_free (uri_str); + + if (uri != NULL) + g_free (uri); + + if (session != NULL) + ne_session_destroy (session); + + if (request != NULL) + ne_request_destroy (request); + + return result; +} + +gchar* nflick_api_request_take_buffer (NFlickApiRequest *self) + +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (self), NULL); + + gchar *buf = self->Private->Buffer; + self->Private->Buffer = NULL; + + return buf; +} diff --git a/attic/fluttr/libnflick/nflick-api-request.h b/attic/fluttr/libnflick/nflick-api-request.h new file mode 100644 index 0000000..8853e46 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-request.h @@ -0,0 +1,62 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAPIREQUEST_H__ +#define __NFLICKAPIREQUEST_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickApiRequest +{ + GObject Parent; + NFlickApiRequestPrivate *Private; +}; + +struct _NFlickApiRequestClass +{ + GObjectClass ParentClass; +}; + +GType nflick_api_request_get_type (void); + +NFlickApiRequest* nflick_api_request_new (const gchar *method); + +void nflick_api_request_add_parameter (NFlickApiRequest *self, + const gchar *param, const gchar *val); + +gboolean nflick_api_request_exec (NFlickApiRequest *self); + +gboolean nflick_api_request_sign (NFlickApiRequest *self); + +gchar* nflick_api_request_take_buffer (NFlickApiRequest *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-api-response-private.h b/attic/fluttr/libnflick/nflick-api-response-private.h new file mode 100644 index 0000000..38bb074 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-response-private.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickApiResponsePrivate +{ + gchar *Xml; + gchar *Error; + gboolean Success; + gboolean ParseError; +}; + +enum +{ + ARG_0, + ARG_ERROR, + ARG_PARSE_ERROR, + ARG_XML, + ARG_SUCCESS +}; + +static void nflick_api_response_class_init (NFlickApiResponseClass *klass); + +static void nflick_api_response_init (NFlickApiResponse *self); + +static gboolean private_init (NFlickApiResponse *self, NFlickApiResponsePrivate *private); + +static void private_dispose (NFlickApiResponsePrivate *private); + +static void nflick_api_response_dispose (NFlickApiResponse *self); + +static void nflick_api_response_finalize (NFlickApiResponse *self); + +static void nflick_api_response_get_property (NFlickApiResponse *self, guint propid, + GValue *value, GParamSpec *pspec); + + diff --git a/attic/fluttr/libnflick/nflick-api-response.c b/attic/fluttr/libnflick/nflick-api-response.c new file mode 100644 index 0000000..1313a9d --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-response.c @@ -0,0 +1,337 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-api-response.h" +#include "nflick-api-response-private.h" + +GType nflick_api_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickApiResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_api_response_class_init, + NULL, + NULL, + sizeof (NFlickApiResponse), + 4, + (GInstanceInitFunc) nflick_api_response_init, + }; + /* FIXME Make abstract type */ + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickApiResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_api_response_class_init (NFlickApiResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_api_response_dispose; + gobjectclass->finalize = (gpointer) nflick_api_response_finalize; + gobjectclass->get_property = (gpointer) nflick_api_response_get_property; + + g_object_class_install_property (gobjectclass, ARG_ERROR, + g_param_spec_string + ("error", "Error", "Message describing the error", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_SUCCESS, + g_param_spec_boolean + ("success", "Success", "If the response is succesfull", + TRUE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_PARSE_ERROR, + g_param_spec_boolean + ("parseerror", "ParseError", "If the error was an xml parsing error", + FALSE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_XML, + g_param_spec_string + ("xml", "Xml", "Xml message source", + NULL, G_PARAM_READABLE)); + + klass->ParseFunc = NULL; + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_api_response_init (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + self->Private = NULL; + + NFlickApiResponsePrivate *priv = g_new0 (NFlickApiResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickApiResponse *self, NFlickApiResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Error = NULL; + private->Xml = NULL; + private->Success = TRUE; + + return TRUE; +} + +NFlickApiResponse* nflick_api_response_new_from_request (GType type, NFlickApiRequest *request) +{ + g_return_val_if_fail (NFLICK_IS_API_REQUEST (request), NULL); + + NFlickApiResponse *self = NULL; + + gchar *buffer = nflick_api_request_take_buffer (request); + if (buffer == NULL) + goto Done; + + self = g_object_new (type, NULL); + if (self == NULL) + goto Done; + + if (self->Private == NULL) { + g_object_unref (self); + self = NULL; + goto Done; + } + + nflick_api_response_parse (self, buffer); + +Done: + if (buffer != NULL) + g_free (buffer); + + if (self != NULL) + return self; + else + g_return_val_if_reached (NULL); +} + +static void private_dispose (NFlickApiResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Error != NULL) { + g_free (private->Error); + private->Error = NULL; + } + + if (private->Xml != NULL) { + g_free (private->Xml); + private->Xml = NULL; + } +} + +static void nflick_api_response_dispose (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_api_response_finalize (NFlickApiResponse *self) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +void nflick_api_response_set_error (NFlickApiResponse *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private->Error != NULL) + g_free (self->Private->Error); + + self->Private->Error = (error != NULL) ? g_strdup (error) : NULL; +} + +void nflick_api_response_add_error (NFlickApiResponse *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + + if (self->Private->Error == NULL) + nflick_api_response_set_error (self, error); + else if (error != NULL) { + gchar *sum = g_strdup_printf ("%s\n%s", self->Private->Error, error); + g_free (self->Private->Error); + self->Private->Error = sum; + } else + self->Private->Error = NULL; +} + +gboolean nflick_api_response_parse (NFlickApiResponse *self, const gchar *xml) +{ + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (self), FALSE); + g_return_val_if_fail (xml != NULL, FALSE); + g_return_val_if_fail (self->Private->Xml == NULL, FALSE); + g_return_val_if_fail (NFLICK_API_RESPONSE_GET_CLASS (self)->ParseFunc != NULL, FALSE); + + self->Private->Xml = g_strdup (xml); + + xmlDoc *doc = NULL; /* The xml tree element */ + xmlNode *root_element = NULL; /* Root element to start parsing */ + gboolean result = TRUE; /* If we were sucesfull */ + gboolean parse_error = FALSE; /* If the error was a parsing error */ + gchar *stat = NULL; /* Response stat */ + + /* Start here */ + doc = xmlReadMemory (xml, strlen (xml), NULL, NULL, 0); + if (doc == NULL) { + nflick_api_response_add_error (self, gettext ("Couldn't create the xml tree.")); + result = FALSE; + parse_error = TRUE; + goto Done; + } + + root_element = xmlDocGetRootElement(doc); + if (root_element == NULL) { + nflick_api_response_add_error (self, gettext ("Couldn't get xml root element.")); + result = FALSE; + parse_error = TRUE; + goto Done; + } + + if (root_element->type != XML_ELEMENT_NODE || + strcmp (root_element->name, "rsp") != 0) { + nflick_api_response_add_error (self, gettext ("Rsp xml root expected, but was not found.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + stat = xmlGetProp (root_element, "stat"); + if (stat == NULL) { + nflick_api_response_add_error (self, gettext ("Response has not stat property.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + if (strcmp (stat, "ok") == 0) + result = TRUE; + else if (strcmp (stat, "fail") == 0) + result = FALSE; + else { + nflick_api_response_add_error (self, gettext ("Unknown response.")); + parse_error = TRUE; + result = FALSE; + goto Done; + } + + if (root_element->children == NULL) + goto Done; + + xmlNode *cur_node = NULL; + + /* Do the main parsing */ + for (cur_node = root_element->children; cur_node; cur_node = cur_node->next) { + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "err") == 0) { + gchar *err = xmlGetProp (cur_node, "msg"); + result = FALSE; + if (err != NULL) { + nflick_api_response_set_error (self, err); + g_free (err); + } + } + } + + if (result == FALSE) + goto Done; + + /* Forward to our parse func */ + NFLICK_API_RESPONSE_GET_CLASS (self)->ParseFunc (self, doc, root_element->children, &result, &parse_error); + +Done: + /* Free */ + if (doc != NULL) + xmlFreeDoc (doc); + + if (stat != NULL) + g_free (stat); + + if (result == FALSE && self->Private->Error == NULL) + nflick_api_response_set_error (self, gettext ("Failed to parse xml tree. Unknown error")); + + if (result == FALSE && parse_error == TRUE) + g_warning ("Failed to parse xml tree. Error: %s", self->Private->Error); + + self->Private->Success = result; + self->Private->ParseError = parse_error; + return result; +} + +static void nflick_api_response_get_property (NFlickApiResponse *self, guint propid, + GValue *value, GParamSpec *pspec) + +{ + g_return_if_fail (NFLICK_IS_API_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_ERROR: + g_value_set_string (value, self->Private->Error); + break; + + case ARG_PARSE_ERROR: + g_value_set_boolean (value, self->Private->ParseError); + break; + + case ARG_SUCCESS: + g_value_set_boolean (value, self->Private->Success); + break; + + case ARG_XML: + g_value_set_string (value, self->Private->Xml); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-api-response.h b/attic/fluttr/libnflick/nflick-api-response.h new file mode 100644 index 0000000..9778872 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-api-response.h @@ -0,0 +1,58 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAPIRESPONSE_H__ +#define __NFLICKAPIRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-api-request.h" + +struct _NFlickApiResponse +{ + GObject Parent; + NFlickApiResponsePrivate *Private; +}; + +struct _NFlickApiResponseClass +{ + GObjectClass ParentClass; + NFlickApiRequestParseFunc ParseFunc; +}; + +GType nflick_api_response_get_type (void); + +void nflick_api_response_set_error (NFlickApiResponse *self, const gchar *error); + +void nflick_api_response_add_error (NFlickApiResponse *self, const gchar *error); + +gboolean nflick_api_response_parse (NFlickApiResponse *self, const gchar *xml); + +NFlickApiResponse* nflick_api_response_new_from_request (GType type, NFlickApiRequest *request); + +#endif diff --git a/attic/fluttr/libnflick/nflick-auth-worker-private.h b/attic/fluttr/libnflick/nflick-auth-worker-private.h new file mode 100644 index 0000000..dfdbdac --- /dev/null +++ b/attic/fluttr/libnflick/nflick-auth-worker-private.h @@ -0,0 +1,60 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickAuthWorkerPrivate +{ + gchar *MiniToken; + gchar *UserName; + gchar *FullName; + gchar *Token; + gchar *UserNsid; +}; + +enum +{ + ARG_0, + ARG_USER_NAME, + ARG_FULL_NAME, + ARG_TOKEN, + ARG_USER_NSID +}; + +static void nflick_auth_worker_class_init (NFlickAuthWorkerClass *klass); + +static void nflick_auth_worker_init (NFlickAuthWorker *self); + +static gboolean private_init (NFlickAuthWorker *self, NFlickAuthWorkerPrivate *private); + +static void private_dispose (NFlickAuthWorkerPrivate *private); + +static void nflick_auth_worker_dispose (NFlickAuthWorker *self); + +static void nflick_auth_worker_finalize (NFlickAuthWorker *self); + +static NFlickWorkerStatus thread_func (NFlickAuthWorker *self); + +static void nflick_auth_worker_get_property (NFlickAuthWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-auth-worker.c b/attic/fluttr/libnflick/nflick-auth-worker.c new file mode 100644 index 0000000..c23d610 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-auth-worker.c @@ -0,0 +1,278 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-auth-worker.h" +#include "nflick-auth-worker-private.h" + +GType nflick_auth_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickAuthWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_auth_worker_class_init, + NULL, + NULL, + sizeof (NFlickAuthWorker), + 4, + (GInstanceInitFunc) nflick_auth_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickAuthWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_auth_worker_class_init (NFlickAuthWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_auth_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_auth_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_auth_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_TOKEN, + g_param_spec_string + ("token", "Token", "Unique flick full token", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NAME, + g_param_spec_string + ("username", "UserName", "Flickr user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_FULL_NAME, + g_param_spec_string + ("fullname", "FullName", "Flickr full user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NSID, + g_param_spec_string + ("usernsid", "UserNsid", "Unique nsid identyfying user in flickr", + NULL, G_PARAM_READABLE)); + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_auth_worker_init (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + self->Private = NULL; + + NFlickAuthWorkerPrivate *priv = g_new0 (NFlickAuthWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Authorizing token...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickAuthWorker *self, NFlickAuthWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_AUTH_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->MiniToken = NULL; + private->UserName = NULL; + private->FullName = NULL; + private->UserNsid = NULL; + private->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickAuthWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->MiniToken != NULL) { + g_free (private->MiniToken); + private->MiniToken = NULL; + } + + if (private->UserName != NULL) { + g_free (private->UserName); + private->UserName = NULL; + } + + if (private->FullName != NULL) { + g_free (private->FullName); + private->FullName = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->UserNsid != NULL) { + g_free (private->UserNsid); + private->UserNsid = NULL; + } +} + +static void nflick_auth_worker_dispose (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_auth_worker_finalize (NFlickAuthWorker *self) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickAuthWorker *self) +{ + NFlickApiRequest *full_token_request = NULL; + NFlickApiResponse *full_token_response = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + + full_token_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_GET_FULL_TOKEN); + if (full_token_request == NULL) + goto Error; + + nflick_api_request_add_parameter (full_token_request, + NFLICK_FLICKR_API_PARAM_MINI_TOKEN, + self->Private->MiniToken); + + nflick_api_request_sign (full_token_request); + + if (nflick_api_request_exec (full_token_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + full_token_response = nflick_api_response_new_from_request (NFLICK_TYPE_GFT_RESPONSE, full_token_request); + if (full_token_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, full_token_response) == FALSE) + goto Error; + + /* Get out variables */ + g_object_get (G_OBJECT (full_token_response), + "username", &self->Private->UserName, + "fullname", &self->Private->FullName, + "usernsid", &self->Private->UserNsid, + "token", &self->Private->Token, NULL); + + if (self->Private->UserName == NULL || + self->Private->FullName == NULL || + self->Private->Token == NULL || + self->Private->UserNsid == NULL) + goto Error; + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (full_token_request != NULL) + g_object_unref (full_token_request); + + if (full_token_response != NULL) + g_object_unref (full_token_response); + + return status; +} + +NFlickAuthWorker* nflick_auth_worker_new (const gchar *minitoken) +{ + g_return_val_if_fail (minitoken != NULL, NULL); + + NFlickAuthWorker *self = g_object_new (NFLICK_TYPE_AUTH_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->MiniToken = g_strdup (minitoken); + + return self; +} + +static void nflick_auth_worker_get_property (NFlickAuthWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_AUTH_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_USER_NAME: + g_value_set_string (value, self->Private->UserName); + break; + + case ARG_FULL_NAME: + g_value_set_string (value, self->Private->FullName); + break; + + case ARG_TOKEN: + g_value_set_string (value, self->Private->Token); + break; + + case ARG_USER_NSID: + g_value_set_string (value, self->Private->UserNsid); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-auth-worker.h b/attic/fluttr/libnflick/nflick-auth-worker.h new file mode 100644 index 0000000..807e4ec --- /dev/null +++ b/attic/fluttr/libnflick/nflick-auth-worker.h @@ -0,0 +1,50 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKAUTHWORKER_H__ +#define __NFLICKAUTHWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-gft-response.h" +#include "nflick-types.h" + +struct _NFlickAuthWorker +{ + NFlickWorker Parent; + NFlickAuthWorkerPrivate *Private; +}; + +struct _NFlickAuthWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_auth_worker_get_type (void); + +NFlickAuthWorker* nflick_auth_worker_new (const gchar *minitoken); + +#endif diff --git a/attic/fluttr/libnflick/nflick-flickr.h b/attic/fluttr/libnflick/nflick-flickr.h new file mode 100644 index 0000000..2183262 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-flickr.h @@ -0,0 +1,69 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKFLICKR_H__ +#define __NFLICKFLICKR_H__ + +/* Some stock stuff obtained from flickr. That's public, really */ + +#define NFLICK_FLICKR_API_KEY "97f40c6445ca8243d52fff461308fb18" + +#define NFLICK_FLICKR_SHARED_SECRET "2d434592f898e1ab" + +#define NFLICK_FLICKR_HOST "www.flickr.com" + +#define NFLICK_FLICKR_REST_END_POINT "/services/rest/" + +/* Request parameters */ + +#define NFLICK_FLICKR_API_PARAM_KEY "api_key" + +#define NFLICK_FLICKR_API_PARAM_METHOD "method" + +#define NFLICK_FLICKR_API_PARAM_MINI_TOKEN "mini_token" + +#define NFLICK_FLICKR_API_PARAM_TOKEN "auth_token" + +#define NFLICK_FLICKR_API_PARAM_SIGNATURE "api_sig" + +#define NFLICK_FLICKR_API_PARAM_USER_ID "user_id" + +#define NFLICK_FLICKR_API_PARAM_PHOTOSET_ID "photoset_id" + +#define NFLICK_FLICKR_API_PARAM_PHOTO_ID "photo_id" + +#define NFLICK_FLICKR_API_PARAM_PER_PAGE "per_page" + +/* Possible methods */ + +#define NFLICK_FLICKR_API_METHOD_GET_FULL_TOKEN "flickr.auth.getFullToken" + +#define NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_LIST "flickr.photosets.getList" + +#define NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS "flickr.photosets.getPhotos" + +#define NFLICK_FLICKR_API_METHOD_PHOTOS_GET_SIZES "flickr.photos.getSizes" + +#define NFLICK_FLICKR_API_METHOD_PHOTOS_NOT_IN_SET "flickr.photos.getNotInSet" + +#endif diff --git a/attic/fluttr/libnflick/nflick-get-sizes-response-private.h b/attic/fluttr/libnflick/nflick-get-sizes-response-private.h new file mode 100644 index 0000000..4853bd5 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-get-sizes-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickGetSizesResponsePrivate +{ + GList *SizesList; +}; + +struct _SizeData +{ + gchar *Uri; + gint32 Width; + gint32 Height; +} typedef SizeData; + +static void nflick_get_sizes_response_class_init (NFlickGetSizesResponseClass *klass); + +static void nflick_get_sizes_response_init (NFlickGetSizesResponse *self); + +static gboolean private_init (NFlickGetSizesResponse *self, NFlickGetSizesResponsePrivate *private); + +static void private_dispose (NFlickGetSizesResponsePrivate *private); + +static void nflick_get_sizes_response_dispose (NFlickGetSizesResponse *self); + +static void nflick_get_sizes_response_finalize (NFlickGetSizesResponse *self); + +static void parse_func (NFlickGetSizesResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + diff --git a/attic/fluttr/libnflick/nflick-get-sizes-response.c b/attic/fluttr/libnflick/nflick-get-sizes-response.c new file mode 100644 index 0000000..d7cf12a --- /dev/null +++ b/attic/fluttr/libnflick/nflick-get-sizes-response.c @@ -0,0 +1,304 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-get-sizes-response.h" +#include "nflick-get-sizes-response-private.h" + +GType nflick_get_sizes_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickGetSizesResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_get_sizes_response_class_init, + NULL, + NULL, + sizeof (NFlickGetSizesResponse), + 4, + (GInstanceInitFunc) nflick_get_sizes_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickGetSizesResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_get_sizes_response_class_init (NFlickGetSizesResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_get_sizes_response_dispose; + gobjectclass->finalize = (gpointer) nflick_get_sizes_response_finalize; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_get_sizes_response_init (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + self->Private = NULL; + + NFlickGetSizesResponsePrivate *priv = g_new0 (NFlickGetSizesResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickGetSizesResponse *self, NFlickGetSizesResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->SizesList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickGetSizesResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->SizesList != NULL) { + + GList *iterator; + + for (iterator = private->SizesList; iterator; iterator = g_list_next (iterator)) { + SizeData *data = (SizeData *) iterator->data; + if (data != NULL) { + if (data->Uri != NULL) + g_free (data->Uri); + + g_free (data); + } + } + + g_list_free (private->SizesList); + private->SizesList = NULL; + } +} + +static void nflick_get_sizes_response_dispose (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_get_sizes_response_finalize (NFlickGetSizesResponse *self) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickGetSizesResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "sizes") == 0) { + + xmlNode *sizes_node = NULL; + for (sizes_node = cur_node->children; sizes_node; sizes_node = sizes_node->next) { + + if (sizes_node->type == XML_ELEMENT_NODE && strcmp (sizes_node->name, "size") == 0) { + + gint32 width_val = -1; + gint32 height_val = -1; + gchar *width = xmlGetProp (sizes_node, "width"); + gchar *height = xmlGetProp (sizes_node, "height"); + gchar *source = xmlGetProp (sizes_node, "source"); + + if (width != NULL) + width_val = atoi (width); + + if (height != NULL) + height_val = atoi (height); + + if (width != NULL && height != NULL && source != NULL && + width_val > 0 && height_val > 0) { + SizeData *data = g_new0 (SizeData, 1); + data->Uri = g_strdup (source); + data->Width = width_val; + data->Height = height_val; + self->Private->SizesList = g_list_append (self->Private->SizesList, data); + } + + if (width != NULL) + g_free (width); + if (height != NULL) + g_free (height); + if (source != NULL) + g_free (source); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +/* FIXME: Make private */ +gint32 nflick_get_sizes_response_height_for (gint32 width, gint32 height, gint32 fit_width) +{ + g_return_val_if_fail (width > 0, -1); + g_return_val_if_fail (height > 0, -1); + g_return_val_if_fail (fit_width > 0, -1); + + gdouble aspect = (gdouble) height / (gdouble) width; + return aspect * (gdouble) fit_width; +} + +/* FIXME: Make private */ +gint32 nflick_get_sizes_response_width_for (gint32 width, gint32 height, gint32 fit_height) +{ + g_return_val_if_fail (width > 0, -1); + g_return_val_if_fail (height > 0, -1); + g_return_val_if_fail (fit_height > 0, -1); + + gdouble aspect = (gdouble) width / (gdouble) height; + return aspect * (gdouble) fit_height; +} + +gchar* nflick_get_sizes_response_find_match (NFlickGetSizesResponse *self, gint32 *width, gint32 *height, gboolean *rotated) +{ + g_return_val_if_fail (NFLICK_IS_GET_SIZES_RESPONSE (self), NULL); + g_return_val_if_fail (width != NULL, NULL); + g_return_val_if_fail (height != NULL, NULL); + g_return_val_if_fail (rotated != NULL, NULL); + g_return_val_if_fail (*width > 0, NULL); + g_return_val_if_fail (*height > 0, NULL); + + GList *iterator; + gchar *current_source = NULL; + gint32 current_distance = 10000; /* FIXME: Max int */ + gdouble out_aspect = (gdouble) *height / (gdouble) *width; + gint32 out_width = -1; + gint32 out_height = -1; + gboolean out_rotated = FALSE; + + for (iterator = self->Private->SizesList; iterator; iterator = g_list_next (iterator)) { + SizeData *data = (SizeData *) iterator->data; + g_assert (data != NULL); + + gdouble in_aspect = (gdouble) data->Height / (gdouble) data->Width; + + gint32 x_distance = 0; + gint32 y_distance = 0; + gint32 distance = 0; + + // FIXME: We should analyze the input width and height here! + if (in_aspect > 1.0) { + x_distance = abs (data->Width - *height); + y_distance = abs (data->Height - *width); + + if (data->Width < *height) + x_distance *= 2; + if (data->Height < *width) + y_distance *= 2; + + distance = x_distance + y_distance; + + if (distance < current_distance) { + current_distance = distance; + current_source = data->Uri; + out_rotated = TRUE; + + /* Now let's try doing the fitting */ + in_aspect = (gdouble) data->Width / (gdouble) data->Height; + if (in_aspect > out_aspect) { + out_width = *height; + out_height = nflick_get_sizes_response_height_for (data->Width, data->Height, out_width); + } else { + out_height = *width; + out_width= nflick_get_sizes_response_width_for (data->Width, data->Height, out_height); + } + } + } else { + x_distance = abs (data->Width - *width); + y_distance = abs (data->Height - *height); + + if (data->Width < *width) + x_distance *= 2; + if (data->Height < *height) + y_distance *= 2; + + distance = x_distance + y_distance; + + if (distance < current_distance) { + current_distance = distance; + current_source = data->Uri; + out_rotated = FALSE; + + /* Now let's try doing the fitting */ + if (in_aspect > out_aspect) { + out_height = *height; + out_width = nflick_get_sizes_response_width_for (data->Width, data->Height, out_height); + } else { + out_width = *width; + out_height = nflick_get_sizes_response_height_for (data->Width, data->Height, out_width); + } + } + + + } + } + + *width = out_width; + *height = out_height; + *rotated = out_rotated; + + if (current_source != NULL) + return g_strdup (current_source); + else + return NULL; +} diff --git a/attic/fluttr/libnflick/nflick-get-sizes-response.h b/attic/fluttr/libnflick/nflick-get-sizes-response.h new file mode 100644 index 0000000..bf2a304 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-get-sizes-response.h @@ -0,0 +1,55 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKGETSIZESRESPONSE_H__ +#define __NFLICKGETSIZESRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickGetSizesResponse +{ + NFlickApiResponse Parent; + NFlickGetSizesResponsePrivate *Private; +}; + +struct _NFlickGetSizesResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_get_sizes_response_get_type (void); + +gchar* nflick_get_sizes_response_find_match (NFlickGetSizesResponse *self, gint32 *width, gint32 *height, gboolean *rotated); + +gint32 nflick_get_sizes_response_height_for (gint32 width, gint32 height, gint32 fit_width); + +gint32 nflick_get_sizes_response_width_for (gint32 width, gint32 height, gint32 fit_height); + +#endif diff --git a/attic/fluttr/libnflick/nflick-gft-response-private.h b/attic/fluttr/libnflick/nflick-gft-response-private.h new file mode 100644 index 0000000..dd8a54d --- /dev/null +++ b/attic/fluttr/libnflick/nflick-gft-response-private.h @@ -0,0 +1,62 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickGftResponsePrivate +{ + gchar *UserName; + gchar *UserNsid; + gchar *FullName; + gchar *Token; +}; + +enum +{ + ARG_0, + ARG_USER_NAME, + ARG_FULL_NAME, + ARG_TOKEN, + ARG_USER_NSID +}; + +static void nflick_gft_response_class_init (NFlickGftResponseClass *klass); + +static void nflick_gft_response_init (NFlickGftResponse *self); + +static gboolean private_init (NFlickGftResponse *self, NFlickGftResponsePrivate *private); + +static void private_dispose (NFlickGftResponsePrivate *private); + +static void nflick_gft_response_dispose (NFlickGftResponse *self); + +static void nflick_gft_response_finalize (NFlickGftResponse *self); + +static void parse_func (NFlickGftResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static gboolean all_fields_valid (NFlickGftResponse *self); + +static void fill_blanks (NFlickGftResponse *self); + +static void nflick_gft_response_get_property (NFlickGftResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/fluttr/libnflick/nflick-gft-response.c b/attic/fluttr/libnflick/nflick-gft-response.c new file mode 100644 index 0000000..a38e04d --- /dev/null +++ b/attic/fluttr/libnflick/nflick-gft-response.c @@ -0,0 +1,281 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-gft-response.h" +#include "nflick-gft-response-private.h" + +GType nflick_gft_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickGftResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_gft_response_class_init, + NULL, + NULL, + sizeof (NFlickGftResponse), + 4, + (GInstanceInitFunc) nflick_gft_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickGftResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_gft_response_class_init (NFlickGftResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_gft_response_dispose; + gobjectclass->finalize = (gpointer) nflick_gft_response_finalize; + gobjectclass->get_property = (gpointer) nflick_gft_response_get_property; + + g_object_class_install_property (gobjectclass, ARG_TOKEN, + g_param_spec_string + ("token", "Token", "Unique flick full token", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NAME, + g_param_spec_string + ("username", "UserName", "Flickr user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_FULL_NAME, + g_param_spec_string + ("fullname", "FullName", "Flickr full user name", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_USER_NSID, + g_param_spec_string + ("usernsid", "UserNsid", "Unique nsid identyfying user in flickr", + NULL, G_PARAM_READABLE)); + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_gft_response_init (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + self->Private = NULL; + + NFlickGftResponsePrivate *priv = g_new0 (NFlickGftResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickGftResponse *self, NFlickGftResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_GFT_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->UserName = NULL; + private->FullName = NULL; + private->Token = NULL; + private->UserNsid = NULL; + + return TRUE; +} + +static void private_dispose (NFlickGftResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->UserName != NULL) { + g_free (private->UserName); + private->UserName = NULL; + } + + if (private->FullName != NULL) { + g_free (private->FullName); + private->FullName = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->UserNsid != NULL) { + g_free (private->UserNsid); + private->UserNsid = NULL; + } +} + + +static void nflick_gft_response_dispose (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_gft_response_finalize (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static gboolean all_fields_valid (NFlickGftResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_GFT_RESPONSE (self), FALSE); + + if (self->Private->UserNsid != NULL && self->Private->Token != NULL) + return TRUE; + else + return FALSE; +} + +static void fill_blanks (NFlickGftResponse *self) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + + if (self->Private->UserName == NULL) + self->Private->UserName = g_strdup (gettext ("anonymous")); + + if (self->Private->FullName == NULL) + self->Private->FullName = g_strdup (gettext ("Anonymous")); +} + +static void parse_func (NFlickGftResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "auth") == 0) { + + xmlNode *auth_node = NULL; + for (auth_node = cur_node->children; auth_node; auth_node = auth_node->next) { + + /* */ + if (auth_node->type == XML_ELEMENT_NODE && strcmp (auth_node->name, "user") == 0) { + + /* Nsid */ + gchar *nsid = xmlGetProp (auth_node, "nsid"); + if (nsid != NULL) { + if (self->Private->UserNsid != NULL) + g_free (self->Private->UserNsid); + self->Private->UserNsid = nsid; + } + + /* UserName */ + gchar *username = xmlGetProp (auth_node, "username"); + if (username != NULL) { + if (self->Private->UserName != NULL) + g_free (self->Private->UserName); + self->Private->UserName = username; + } + + /* FullName */ + gchar *fullname = xmlGetProp (auth_node, "fullname"); + if (fullname != NULL) { + if (self->Private->FullName != NULL) + g_free (self->Private->FullName); + self->Private->FullName = fullname; + } + } + + /* */ + if (auth_node->type == XML_ELEMENT_NODE && strcmp (auth_node->name, "token") == 0) { + char *token = xmlNodeListGetString (doc, auth_node->xmlChildrenNode, 1); + if (token != NULL) { + if (self->Private->Token != NULL) + g_free (self->Private->Token); + self->Private->Token = token; + } + } + } + } + } + + /* Finished */ + if (all_fields_valid (self) == TRUE) { + fill_blanks (self); + *result = TRUE; + *parse_error = FALSE; + } else { + *result = FALSE; + *parse_error = TRUE; + nflick_api_response_add_error ((NFlickApiResponse *) self, + gettext ("Some of the required info is missing from the response!")); + } +} + +static void nflick_gft_response_get_property (NFlickGftResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_GFT_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_USER_NAME: + g_value_set_string (value, self->Private->UserName); + break; + + case ARG_FULL_NAME: + g_value_set_string (value, self->Private->FullName); + break; + + case ARG_TOKEN: + g_value_set_string (value, self->Private->Token); + break; + + case ARG_USER_NSID: + g_value_set_string (value, self->Private->UserNsid); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-gft-response.h b/attic/fluttr/libnflick/nflick-gft-response.h new file mode 100644 index 0000000..cd67b4a --- /dev/null +++ b/attic/fluttr/libnflick/nflick-gft-response.h @@ -0,0 +1,49 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKGFTRESPONSE_H__ +#define __NFLICKGFTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" + +struct _NFlickGftResponse +{ + NFlickApiResponse Parent; + NFlickGftResponsePrivate *Private; +}; + +struct _NFlickGftResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_gft_response_get_type (void); + +#endif diff --git a/attic/fluttr/libnflick/nflick-no-set-response-private.h b/attic/fluttr/libnflick/nflick-no-set-response-private.h new file mode 100644 index 0000000..e71c6aa --- /dev/null +++ b/attic/fluttr/libnflick/nflick-no-set-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickNoSetResponsePrivate +{ + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_no_set_response_class_init (NFlickNoSetResponseClass *klass); + +static void nflick_no_set_response_init (NFlickNoSetResponse *self); + +static gboolean private_init (NFlickNoSetResponse *self, NFlickNoSetResponsePrivate *private); + +static void private_dispose (NFlickNoSetResponsePrivate *private); + +static void nflick_no_set_response_dispose (NFlickNoSetResponse *self); + +static void nflick_no_set_response_finalize (NFlickNoSetResponse *self); + +static void parse_func (NFlickNoSetResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_no_set_response_get_property (NFlickNoSetResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/fluttr/libnflick/nflick-no-set-response.c b/attic/fluttr/libnflick/nflick-no-set-response.c new file mode 100644 index 0000000..b215c4e --- /dev/null +++ b/attic/fluttr/libnflick/nflick-no-set-response.c @@ -0,0 +1,199 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-no-set-response.h" +#include "nflick-no-set-response-private.h" + +GType nflick_no_set_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickNoSetResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_no_set_response_class_init, + NULL, + NULL, + sizeof (NFlickNoSetResponse), + 4, + (GInstanceInitFunc) nflick_no_set_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickNoSetResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_no_set_response_class_init (NFlickNoSetResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_no_set_response_dispose; + gobjectclass->finalize = (gpointer) nflick_no_set_response_finalize; + gobjectclass->get_property = (gpointer) nflick_no_set_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_no_set_response_init (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + self->Private = NULL; + + NFlickNoSetResponsePrivate *priv = g_new0 (NFlickNoSetResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickNoSetResponse *self, NFlickNoSetResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_NO_SET_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickNoSetResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_no_set_response_dispose (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_no_set_response_finalize (NFlickNoSetResponse *self) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickNoSetResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photos") == 0) { + + xmlNode *set_node = NULL; + for (set_node = cur_node->children; set_node; set_node = set_node->next) { + + if (set_node->type == XML_ELEMENT_NODE && strcmp (set_node->name, "photo") == 0) { + + gchar *id = xmlGetProp (set_node, "id"); + gchar *name = xmlGetProp (set_node, "title"); + + if (id != NULL && name != NULL) { + NFlickPhotoData *photo_data = nflick_photo_data_new (id, name); + + /* We prepend to add photos in reverse order. Flickr seems to return + * photos in oldest-to-newest order */ + + if (photo_data != NULL) + self->Private->PhotoDataList = g_list_prepend (self->Private->PhotoDataList, photo_data); + } + + if (id != NULL) + g_free (id); + if (name != NULL) + g_free (name); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_no_set_response_get_property (NFlickNoSetResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_NO_SET_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_no_set_response_take_list (NFlickNoSetResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_NO_SET_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} + + diff --git a/attic/fluttr/libnflick/nflick-no-set-response.h b/attic/fluttr/libnflick/nflick-no-set-response.h new file mode 100644 index 0000000..623c42f --- /dev/null +++ b/attic/fluttr/libnflick/nflick-no-set-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKNOSETRESPONSE_H__ +#define __NFLICKNOSETRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickNoSetResponse +{ + NFlickApiResponse Parent; + NFlickNoSetResponsePrivate *Private; +}; + +struct _NFlickNoSetResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_no_set_response_get_type (void); + +GList* nflick_no_set_response_take_list (NFlickNoSetResponse *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-photo-data.c b/attic/fluttr/libnflick/nflick-photo-data.c new file mode 100644 index 0000000..9954732 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-data.c @@ -0,0 +1,75 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-data.h" + +GType nflick_photo_data_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + objecttype = g_boxed_type_register_static + ("NFlickPhotoData", + (GBoxedCopyFunc) nflick_photo_data_copy, + (GBoxedFreeFunc) nflick_photo_data_free); + } + + return objecttype; +} + +NFlickPhotoData* nflick_photo_data_copy (const NFlickPhotoData *self) +{ + g_return_val_if_fail (self != NULL, NULL); + + NFlickPhotoData *new = g_new (NFlickPhotoData, 1); + g_return_val_if_fail (new != NULL, NULL); + + new->Id = (self->Id != NULL) ? g_strdup (self->Id) : NULL; + new->Name = (self->Name != NULL) ? g_strdup (self->Name) : NULL; + + return new; +} + +void nflick_photo_data_free (NFlickPhotoData *self) +{ + if (self == NULL) + return; + else { + if (self->Id != NULL) + g_free (self->Id); + if (self->Name != NULL) + g_free (self->Name); + g_free (self); + } +} + +NFlickPhotoData* nflick_photo_data_new (const gchar *id, const gchar *name) +{ + NFlickPhotoData *self = g_new (NFlickPhotoData, 1); + g_return_val_if_fail (self != NULL, NULL); + + self->Id = (id != NULL) ? g_strdup (id) : NULL; + self->Name = (name != NULL) ? g_strdup (name) : NULL; + + return self; +} diff --git a/attic/fluttr/libnflick/nflick-photo-data.h b/attic/fluttr/libnflick/nflick-photo-data.h new file mode 100644 index 0000000..5a156d2 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-data.h @@ -0,0 +1,44 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTODATA_H__ +#define __NFLICKPHOTODATA_H__ + +#include +#include "nflick-types.h" + +struct _NFlickPhotoData +{ + gchar *Id; + gchar *Name; +}; + +GType nflick_photo_data_get_type (void); + +NFlickPhotoData* nflick_photo_data_copy (const NFlickPhotoData *self); + +void nflick_photo_data_free (NFlickPhotoData *self); + +NFlickPhotoData* nflick_photo_data_new (const gchar *id, const gchar *name); + +#endif diff --git a/attic/fluttr/libnflick/nflick-photo-list-response-private.h b/attic/fluttr/libnflick/nflick-photo-list-response-private.h new file mode 100644 index 0000000..c8920ab --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickPhotoListResponsePrivate +{ + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_photo_list_response_class_init (NFlickPhotoListResponseClass *klass); + +static void nflick_photo_list_response_init (NFlickPhotoListResponse *self); + +static gboolean private_init (NFlickPhotoListResponse *self, NFlickPhotoListResponsePrivate *private); + +static void private_dispose (NFlickPhotoListResponsePrivate *private); + +static void nflick_photo_list_response_dispose (NFlickPhotoListResponse *self); + +static void nflick_photo_list_response_finalize (NFlickPhotoListResponse *self); + +static void parse_func (NFlickPhotoListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_photo_list_response_get_property (NFlickPhotoListResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/fluttr/libnflick/nflick-photo-list-response.c b/attic/fluttr/libnflick/nflick-photo-list-response.c new file mode 100644 index 0000000..0941181 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-response.c @@ -0,0 +1,195 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-list-response.h" +#include "nflick-photo-list-response-private.h" + +GType nflick_photo_list_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoListResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_list_response_class_init, + NULL, + NULL, + sizeof (NFlickPhotoListResponse), + 4, + (GInstanceInitFunc) nflick_photo_list_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickPhotoListResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_list_response_class_init (NFlickPhotoListResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_list_response_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_list_response_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_list_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_photo_list_response_init (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + self->Private = NULL; + + NFlickPhotoListResponsePrivate *priv = g_new0 (NFlickPhotoListResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoListResponse *self, NFlickPhotoListResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoListResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_list_response_dispose (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_list_response_finalize (NFlickPhotoListResponse *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickPhotoListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photoset") == 0) { + + xmlNode *set_node = NULL; + for (set_node = cur_node->children; set_node; set_node = set_node->next) { + + if (set_node->type == XML_ELEMENT_NODE && strcmp (set_node->name, "photo") == 0) { + + gchar *id = xmlGetProp (set_node, "id"); + gchar *name = xmlGetProp (set_node, "title"); + + if (id != NULL && name != NULL) { + NFlickPhotoData *photo_data = nflick_photo_data_new (id, name); + if (photo_data != NULL) + self->Private->PhotoDataList = g_list_append (self->Private->PhotoDataList, photo_data); + } + + if (id != NULL) + g_free (id); + if (name != NULL) + g_free (name); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_photo_list_response_get_property (NFlickPhotoListResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_photo_list_response_take_list (NFlickPhotoListResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} + + diff --git a/attic/fluttr/libnflick/nflick-photo-list-response.h b/attic/fluttr/libnflick/nflick-photo-list-response.h new file mode 100644 index 0000000..2b6b3f7 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOLISTRESPONSE_H__ +#define __NFLICKPHOTOLISTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickPhotoListResponse +{ + NFlickApiResponse Parent; + NFlickPhotoListResponsePrivate *Private; +}; + +struct _NFlickPhotoListResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_photo_list_response_get_type (void); + +GList* nflick_photo_list_response_take_list (NFlickPhotoListResponse *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-photo-list-worker-private.h b/attic/fluttr/libnflick/nflick-photo-list-worker-private.h new file mode 100644 index 0000000..b2b84ab --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-worker-private.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickPhotoListWorkerPrivate +{ + gchar *Id; + gchar *Token; + GList *PhotoDataList; +}; + +enum +{ + ARG_0, +}; + +static void nflick_photo_list_worker_class_init (NFlickPhotoListWorkerClass *klass); + +static void nflick_photo_list_worker_init (NFlickPhotoListWorker *self); + +static gboolean private_init (NFlickPhotoListWorker *self, NFlickPhotoListWorkerPrivate *private); + +static void private_dispose (NFlickPhotoListWorkerPrivate *private); + +static void nflick_photo_list_worker_dispose (NFlickPhotoListWorker *self); + +static void nflick_photo_list_worker_finalize (NFlickPhotoListWorker *self); + +static NFlickWorkerStatus thread_func (NFlickPhotoListWorker *self); + +static void nflick_photo_list_worker_get_property (NFlickPhotoListWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-photo-list-worker.c b/attic/fluttr/libnflick/nflick-photo-list-worker.c new file mode 100644 index 0000000..9d75c17 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-worker.c @@ -0,0 +1,240 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-list-worker.h" +#include "nflick-photo-list-worker-private.h" + +GType nflick_photo_list_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoListWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_list_worker_class_init, + NULL, + NULL, + sizeof (NFlickPhotoListWorker), + 4, + (GInstanceInitFunc) nflick_photo_list_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickPhotoListWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_list_worker_class_init (NFlickPhotoListWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_list_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_list_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_list_worker_get_property; + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_photo_list_worker_init (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + self->Private = NULL; + + NFlickPhotoListWorkerPrivate *priv = g_new0 (NFlickPhotoListWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Loading photoset data...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoListWorker *self, NFlickPhotoListWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Id = NULL; + private->Token = NULL; + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoListWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Id != NULL) { + g_free (private->Id); + private->Id = NULL; + } + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_list_worker_dispose (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_list_worker_finalize (NFlickPhotoListWorker *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickPhotoListWorker *self) +{ + NFlickApiRequest *get_photolist_request = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + NFlickApiResponse *photo_list_response = NULL; + + get_photolist_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS); + if (get_photolist_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_photolist_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (get_photolist_request, + NFLICK_FLICKR_API_PARAM_PHOTOSET_ID, + self->Private->Id); + + nflick_api_request_sign (get_photolist_request); + if (nflick_api_request_exec (get_photolist_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + photo_list_response = nflick_api_response_new_from_request (NFLICK_TYPE_PHOTO_LIST_RESPONSE, get_photolist_request); + if (photo_list_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, photo_list_response) == FALSE) + goto Error; + + self->Private->PhotoDataList = nflick_photo_list_response_take_list ((NFlickPhotoListResponse *) photo_list_response); + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (get_photolist_request != NULL) + g_object_unref (get_photolist_request); + + if (photo_list_response != NULL) + g_object_unref (photo_list_response); + + return status; +} + +NFlickPhotoListWorker* nflick_photo_list_worker_new (const gchar *id, const gchar *token) +{ + g_return_val_if_fail (id != NULL, NULL); + + NFlickPhotoListWorker *self = g_object_new (NFLICK_TYPE_PHOTO_LIST_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Id = g_strdup (id); + self->Private->Token = g_strdup (token); + + return self; +} + +static void nflick_photo_list_worker_get_property (NFlickPhotoListWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} + +GList* nflick_photo_list_worker_take_list (NFlickPhotoListWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_LIST_WORKER (self), NULL); + + GList *lst = self->Private->PhotoDataList; + self->Private->PhotoDataList = NULL; + + return lst; +} diff --git a/attic/fluttr/libnflick/nflick-photo-list-worker.h b/attic/fluttr/libnflick/nflick-photo-list-worker.h new file mode 100644 index 0000000..03de657 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-list-worker.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOLISTWORKER_H__ +#define __NFLICKPHOTOLISTWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-types.h" +#include "nflick-photo-list-response.h" + +struct _NFlickPhotoListWorker +{ + NFlickWorker Parent; + NFlickPhotoListWorkerPrivate *Private; +}; + +struct _NFlickPhotoListWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_photo_list_worker_get_type (void); + +NFlickPhotoListWorker* nflick_photo_list_worker_new (const gchar *id, const gchar *token); + +GList* nflick_photo_list_worker_take_list (NFlickPhotoListWorker *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-photo-set-private.h b/attic/fluttr/libnflick/nflick-photo-set-private.h new file mode 100644 index 0000000..4c6e745 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-set-private.h @@ -0,0 +1,59 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObjectClass* ParentClass = NULL; + +struct _NFlickPhotoSetPrivate +{ + gchar *Name; + gint32 Count; + gchar *Id; + gboolean Fetched; + GList *PhotoDataList; +}; + +enum +{ + ARG_0, + ARG_COMBO_TEXT, + ARG_COUNT, + ARG_ID, + ARG_FETCHED, + ARG_LIST +}; + +static void nflick_photo_set_class_init (NFlickPhotoSetClass *klass); + +static void nflick_photo_set_init (NFlickPhotoSet *self); + +static gboolean private_init (NFlickPhotoSet *self, NFlickPhotoSetPrivate *private); + +static void private_dispose (NFlickPhotoSetPrivate *private); + +static void nflick_photo_set_dispose (NFlickPhotoSet *self); + +static void nflick_photo_set_finalize (NFlickPhotoSet *self); + +static void nflick_photo_set_get_property (NFlickPhotoSet *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-photo-set.c b/attic/fluttr/libnflick/nflick-photo-set.c new file mode 100644 index 0000000..5bd4483 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-set.c @@ -0,0 +1,242 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-photo-set.h" +#include "nflick-photo-set-private.h" + +GType nflick_photo_set_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickPhotoSetClass), + NULL, + NULL, + (GClassInitFunc) nflick_photo_set_class_init, + NULL, + NULL, + sizeof (NFlickPhotoSet), + 4, + (GInstanceInitFunc) nflick_photo_set_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickPhotoSet", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_photo_set_class_init (NFlickPhotoSetClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_photo_set_dispose; + gobjectclass->finalize = (gpointer) nflick_photo_set_finalize; + gobjectclass->get_property = (gpointer) nflick_photo_set_get_property; + + g_object_class_install_property (gobjectclass, ARG_COMBO_TEXT, + g_param_spec_string + ("combotext", "ComboText", "A text to put in combobox", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_ID, + g_param_spec_string + ("id", "Id", "Photoset id", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_COUNT, + g_param_spec_int + ("count", "Count", "Number of items", + -5000, 5000, 0, G_PARAM_READABLE)); + /* FIXME Use actual max/min vals for int */ + + g_object_class_install_property (gobjectclass, ARG_FETCHED, + g_param_spec_boolean + ("fetched", "Fetched", "If the photoset information was fetched", + FALSE, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_LIST, + g_param_spec_pointer + ("list", "List", "A list of all the pointers", + G_PARAM_READABLE)); + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); +} + +static void nflick_photo_set_init (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + self->Private = NULL; + + NFlickPhotoSetPrivate *priv = g_new0 (NFlickPhotoSetPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickPhotoSet *self, NFlickPhotoSetPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_PHOTO_SET (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Name = NULL; + private->Count = 0; + private->Id = NULL; + private->Fetched = FALSE; + private->PhotoDataList = NULL; + + return TRUE; +} + +static void private_dispose (NFlickPhotoSetPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Name != NULL) { + g_free (private->Name); + private->Name = NULL; + } + + if (private->Id != NULL) { + g_free (private->Id); + private->Id = NULL; + } + + if (private->PhotoDataList != NULL) { + + GList *iterator; + + for (iterator = private->PhotoDataList; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + nflick_photo_data_free ((NFlickPhotoData *) iterator->data); + + g_list_free (private->PhotoDataList); + private->PhotoDataList = NULL; + } +} + +static void nflick_photo_set_dispose (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_photo_set_finalize (NFlickPhotoSet *self) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +NFlickPhotoSet* nflick_photo_set_new_no_set (gint32 count) +{ + g_return_val_if_fail (count >= 0, NULL); + + return nflick_photo_set_new (gettext ("Photos without a set"), NULL, count); +} + +NFlickPhotoSet* nflick_photo_set_new (const gchar *name, const gchar *id, gint32 count) +{ + g_return_val_if_fail (name != NULL, NULL); + g_return_val_if_fail (count >= 0, NULL); + + NFlickPhotoSet *self = g_object_new (NFLICK_TYPE_PHOTO_SET, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Name = g_strdup (name); + + if (id != NULL) + self->Private->Id = g_strdup (id); + + self->Private->Count = count; + + return self; +} + +void nflick_photo_set_give_list (NFlickPhotoSet *self, GList *list) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + if (self->Private->Fetched != FALSE) + return; + + self->Private->PhotoDataList = list; + self->Private->Fetched = TRUE; + self->Private->Count = g_list_length (list); +} + +static void nflick_photo_set_get_property (NFlickPhotoSet *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_PHOTO_SET (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_COMBO_TEXT: { + gchar *str = g_strdup_printf ("%s (%d)", self->Private->Name, self->Private->Count); + g_value_take_string (value, str); + } break; + + case ARG_COUNT: { + g_value_set_int (value, self->Private->Count); + } break; + + case ARG_ID: { + g_value_set_string (value, self->Private->Id); + } break; + + case ARG_FETCHED: { + g_value_set_boolean (value, self->Private->Fetched); + } break; + + case ARG_LIST: { + g_value_set_pointer (value, self->Private->PhotoDataList); + } break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-photo-set.h b/attic/fluttr/libnflick/nflick-photo-set.h new file mode 100644 index 0000000..a322962 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-photo-set.h @@ -0,0 +1,53 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPHOTOSET_H__ +#define __NFLICKPHOTOSET_H__ + +#include +#include +#include +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-data.h" + +struct _NFlickPhotoSet +{ + GObject Parent; + NFlickPhotoSetPrivate *Private; +}; + +struct _NFlickPhotoSetClass +{ + GObjectClass ParentClass; +}; + +GType nflick_photo_set_get_type (void); + +NFlickPhotoSet* nflick_photo_set_new (const gchar *name, const gchar *id, gint32 count); + +void nflick_photo_set_give_list (NFlickPhotoSet *self, GList *list); + +NFlickPhotoSet* nflick_photo_set_new_no_set (gint32 count); + +#endif diff --git a/attic/fluttr/libnflick/nflick-pixbuf-fetch-private.h b/attic/fluttr/libnflick/nflick-pixbuf-fetch-private.h new file mode 100644 index 0000000..460b369 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-pixbuf-fetch-private.h @@ -0,0 +1,37 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +struct _PixbufFetchHelper +{ + gint32 Width; + gint32 Height; + GdkPixbufLoader *Loader; + FILE *CacheFile; +} typedef PixbufFetchHelper; + +static int block_reader (PixbufFetchHelper *helper, gchar *buffer, int len); + +static void on_size_prepared (GdkPixbufLoader *loader, gint width, gint height, PixbufFetchHelper *helper); + +static gchar* get_cache_file (const gchar *token); + diff --git a/attic/fluttr/libnflick/nflick-pixbuf-fetch.c b/attic/fluttr/libnflick/nflick-pixbuf-fetch.c new file mode 100644 index 0000000..8892907 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-pixbuf-fetch.c @@ -0,0 +1,172 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-pixbuf-fetch.h" +#include "nflick-pixbuf-fetch-private.h" + +GdkPixbuf* nflick_pixbuf_fetch_try_cache (const gchar *token) +{ + return NULL; +} + +GdkPixbuf* nflick_pixbuf_fetch (const gchar *url, gint32 width, gint32 height, const gchar *cache_token) +{ + g_return_val_if_fail (url != NULL, NULL); + + ne_uri *uri = NULL; /* Neon uri */ + ne_request *request = NULL; /* Http request */ + ne_session *session = NULL; /* Neon session */ + gboolean result = TRUE; + GdkPixbuf *pixbuf = NULL; + + /* Allocate new neon uri */ + uri = g_new0 (ne_uri, 1); + if (uri == NULL) { + result = FALSE; + goto Done; + } + + /* Parse the incoming url into valid neon uri */ + if (ne_uri_parse (url, uri) || uri->host == NULL || uri->path == NULL) { + result = FALSE; + goto Done; + } + + /* Set defaults. */ + if (uri->scheme == NULL) + uri->scheme = g_strdup ("http"); + if (uri->port == 0) + uri->port = ne_uri_defaultport (uri->scheme); + + /* Create the session */ + session = ne_session_create (uri->scheme, uri->host, uri->port); + if (session == NULL) { + result = FALSE; + goto Done; + } + + /* Create the request */ + request = ne_request_create (session, "GET", uri->path); + if (request == NULL) { + result = FALSE; + goto Done; + } + + /* Allocate our struct */ + PixbufFetchHelper *helper = g_new0 (PixbufFetchHelper, 1); + if (helper == NULL) { + result = FALSE; + goto Done; + } + + helper->Loader = gdk_pixbuf_loader_new (); + if (helper->Loader == NULL) { + result = FALSE; + goto Done; + } + + // Open the cache file if applies... + // FIXME: Move this shit as func param + + if (cache_token != NULL && 1) { + gchar *file_name = NULL; + file_name = get_cache_file (cache_token); + if (file_name != NULL) { + helper->CacheFile = fopen (file_name, "wb"); + g_free (file_name); + } + } + + g_signal_connect (G_OBJECT (helper->Loader), "size-prepared", (gpointer) on_size_prepared, helper); + + helper->Width = width; + helper->Height = height; + + ne_add_response_body_reader (request, ne_accept_always, (gpointer) block_reader, helper); + + result = (ne_request_dispatch (request) == NE_OK) ? TRUE : FALSE; + + if (helper->CacheFile != NULL) + fclose (helper->CacheFile); + gdk_pixbuf_loader_close (helper->Loader, NULL); + + if (result == TRUE) { + pixbuf = gdk_pixbuf_loader_get_pixbuf (helper->Loader); + if (pixbuf) + g_object_ref (pixbuf); + } else { + // FIXME: Remove the cached file + } + +Done: + if (uri != NULL) { + ne_uri_free (uri); + g_free (uri); + } + + if (session != NULL) + ne_session_destroy (session); + + if (request != NULL) + ne_request_destroy (request); + + if (helper != NULL) { + if (helper->Loader != NULL) + g_object_unref (helper->Loader); + g_free (helper); + } + + return pixbuf; +} + +static gchar* get_cache_file (const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + + return g_build_filename ("cache", token, NULL); +} + +static int block_reader (PixbufFetchHelper *helper, gchar *buffer, int len) +{ + g_return_val_if_fail (helper != NULL, -1); + g_return_val_if_fail (helper->Loader != NULL, -1); + + if (helper->CacheFile != NULL) + fwrite (buffer, 1, len, helper->CacheFile); + + gdk_pixbuf_loader_write (helper->Loader, buffer, len, NULL); + + return 0; +} + +static void on_size_prepared (GdkPixbufLoader *loader, gint width, gint height, PixbufFetchHelper *helper) +{ + g_return_if_fail (helper != NULL); + + if (helper->Width == 0 && helper->Height == 0) + return; + + if (width != helper->Width && height != helper->Height) + gdk_pixbuf_loader_set_size (loader, helper->Width, helper->Height); +} + diff --git a/attic/fluttr/libnflick/nflick-pixbuf-fetch.h b/attic/fluttr/libnflick/nflick-pixbuf-fetch.h new file mode 100644 index 0000000..8def879 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-pixbuf-fetch.h @@ -0,0 +1,40 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKPIXBUFFETCH_H__ +#define __NFLICKPIXBUFFETCH_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +GdkPixbuf* nflick_pixbuf_fetch (const gchar *url, int width, int height, const gchar *token); + +GdkPixbuf* nflick_pixbuf_fetch_try_cache (const gchar *token); + +#endif diff --git a/attic/fluttr/libnflick/nflick-set-list-response-private.h b/attic/fluttr/libnflick/nflick-set-list-response-private.h new file mode 100644 index 0000000..0634c58 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-response-private.h @@ -0,0 +1,51 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickApiResponse* ParentClass = NULL; + +struct _NFlickSetListResponsePrivate +{ + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void nflick_set_list_response_class_init (NFlickSetListResponseClass *klass); + +static void nflick_set_list_response_init (NFlickSetListResponse *self); + +static gboolean private_init (NFlickSetListResponse *self, NFlickSetListResponsePrivate *private); + +static void private_dispose (NFlickSetListResponsePrivate *private); + +static void nflick_set_list_response_dispose (NFlickSetListResponse *self); + +static void nflick_set_list_response_finalize (NFlickSetListResponse *self); + +static void parse_func (NFlickSetListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +static void nflick_set_list_response_get_property (NFlickSetListResponse *self, guint propid, + GValue *value, GParamSpec *pspec); diff --git a/attic/fluttr/libnflick/nflick-set-list-response.c b/attic/fluttr/libnflick/nflick-set-list-response.c new file mode 100644 index 0000000..abaa761 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-response.c @@ -0,0 +1,212 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-set-list-response.h" +#include "nflick-set-list-response-private.h" + +GType nflick_set_list_response_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickSetListResponseClass), + NULL, + NULL, + (GClassInitFunc) nflick_set_list_response_class_init, + NULL, + NULL, + sizeof (NFlickSetListResponse), + 4, + (GInstanceInitFunc) nflick_set_list_response_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_API_RESPONSE, "NFlickSetListResponse", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_set_list_response_class_init (NFlickSetListResponseClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickApiResponseClass *apiresponseclass = (NFlickApiResponseClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_set_list_response_dispose; + gobjectclass->finalize = (gpointer) nflick_set_list_response_finalize; + gobjectclass->get_property = (gpointer) nflick_set_list_response_get_property; + + apiresponseclass->ParseFunc = (gpointer) parse_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_API_RESPONSE); +} + +static void nflick_set_list_response_init (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + self->Private = NULL; + + NFlickSetListResponsePrivate *priv = g_new0 (NFlickSetListResponsePrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickSetListResponse *self, NFlickSetListResponsePrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoSets = NULL; + + return TRUE; +} + +static void private_dispose (NFlickSetListResponsePrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = private->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (private->PhotoSets); + private->PhotoSets = NULL; + } +} + +GList* nflick_set_list_response_take_list (NFlickSetListResponse *self) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void nflick_set_list_response_dispose (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_set_list_response_finalize (NFlickSetListResponse *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void parse_func (NFlickSetListResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + g_return_if_fail (children != NULL); + g_return_if_fail (doc != NULL); + g_return_if_fail (result != NULL && parse_error != NULL); + + xmlNode *cur_node = NULL; + + for (cur_node = children; cur_node; cur_node = cur_node->next) { + + if (cur_node->type == XML_ELEMENT_NODE && strcmp (cur_node->name, "photosets") == 0) { + + xmlNode *sets_node = NULL; + for (sets_node = cur_node->children; sets_node; sets_node = sets_node->next) { + + if (sets_node->type == XML_ELEMENT_NODE && strcmp (sets_node->name, "photoset") == 0) { + + gchar *id = xmlGetProp (sets_node, "id"); + gchar *count = xmlGetProp (sets_node, "photos"); + gchar *title = NULL; + gint32 count_val = 0; + NFlickPhotoSet *photo_set = NULL; + + xmlNode *this_node = NULL; + for (this_node = sets_node->children; this_node; this_node = this_node->next) { + if (this_node->type == XML_ELEMENT_NODE && strcmp (this_node->name, "title") == 0) { + if (title != NULL) + g_free (title); + title = xmlNodeListGetString (doc, this_node->xmlChildrenNode, 1); + } + } + + count_val = atoi (count); + + if (count_val != 0 && + id != NULL && + title != NULL) + photo_set = nflick_photo_set_new (title, id, count_val); + + if (photo_set != NULL) + self->Private->PhotoSets = g_list_append (self->Private->PhotoSets, photo_set); + + /* Free */ + if (id != NULL) + g_free (id); + if (count != NULL) + g_free (count); + if (title != NULL) + g_free (title); + } + } + } + } + + /* Finished */ + *result = TRUE; + *parse_error = FALSE; +} + +static void nflick_set_list_response_get_property (NFlickSetListResponse *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_RESPONSE (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-set-list-response.h b/attic/fluttr/libnflick/nflick-set-list-response.h new file mode 100644 index 0000000..6e0d45d --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-response.h @@ -0,0 +1,52 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSETLISTRESPONSE_H__ +#define __NFLICKSETLISTRESPONSE_H__ + +#include +#include +#include +#include +#include +#include "nflick-api-response.h" +#include "nflick-flickr.h" +#include "nflick-types.h" +#include "nflick-photo-set.h" + +struct _NFlickSetListResponse +{ + NFlickApiResponse Parent; + NFlickSetListResponsePrivate *Private; +}; + +struct _NFlickSetListResponseClass +{ + NFlickApiResponseClass ParentClass; +}; + +GType nflick_set_list_response_get_type (void); + +GList* nflick_set_list_response_take_list (NFlickSetListResponse *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-set-list-worker-private.h b/attic/fluttr/libnflick/nflick-set-list-worker-private.h new file mode 100644 index 0000000..7dc1742 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-worker-private.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorkerClass* ParentClass = NULL; + +struct _NFlickSetListWorkerPrivate +{ + gchar *UserNsid; + gchar *Token; + GList *PhotoSets; +}; + +enum +{ + ARG_0, +}; + +static void nflick_set_list_worker_class_init (NFlickSetListWorkerClass *klass); + +static void nflick_set_list_worker_init (NFlickSetListWorker *self); + +static gboolean private_init (NFlickSetListWorker *self, NFlickSetListWorkerPrivate *priv); + +static void private_dispose (NFlickSetListWorkerPrivate *priv); + +static void nflick_set_list_worker_dispose (NFlickSetListWorker *self); + +static void nflick_set_list_worker_finalize (NFlickSetListWorker *self); + +static NFlickWorkerStatus thread_func (NFlickSetListWorker *self); + +static void nflick_set_list_worker_get_property (NFlickSetListWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-set-list-worker.c b/attic/fluttr/libnflick/nflick-set-list-worker.c new file mode 100644 index 0000000..024ab1f --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-worker.c @@ -0,0 +1,362 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-set-list-worker.h" +#include "nflick-set-list-worker-private.h" + +GType nflick_set_list_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickSetListWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_set_list_worker_class_init, + NULL, + NULL, + sizeof (NFlickSetListWorker), + 4, + (GInstanceInitFunc) nflick_set_list_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickSetListWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_set_list_worker_class_init (NFlickSetListWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_set_list_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_set_list_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_set_list_worker_get_property; + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_set_list_worker_init (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + self->Private = NULL; + + NFlickSetListWorkerPrivate *priv = g_new0 (NFlickSetListWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Parsing photosets...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickSetListWorker *self, NFlickSetListWorkerPrivate *priv) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_WORKER (self), FALSE); + g_return_val_if_fail (priv != NULL, FALSE); + + priv->UserNsid = NULL; + priv->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickSetListWorkerPrivate *priv) +{ + g_return_if_fail (priv != NULL); + + if (priv->Token != NULL) { + g_free (priv->Token); + priv->Token = NULL; + } + + if (priv->UserNsid != NULL) { + g_free (priv->UserNsid); + priv->UserNsid = NULL; + } + + if (priv->PhotoSets != NULL) { + + GList *iterator; + + for (iterator = priv->PhotoSets; iterator; iterator = g_list_next (iterator)) + if (iterator->data != NULL) + g_object_unref (iterator->data); + + g_list_free (priv->PhotoSets); + priv->PhotoSets = NULL; + } +} + +static void nflick_set_list_worker_dispose (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_set_list_worker_finalize (NFlickSetListWorker *self) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickSetListWorker *self) +{ + NFlickApiRequest *get_photosets_request = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + NFlickApiResponse *set_list_response = NULL; + gchar *first_id = NULL; + NFlickPhotoSet *first_set = NULL; /* Do not dispose, it's not reffed */ + NFlickApiRequest *first_photolist_request = NULL; + NFlickApiResponse *first_photo_list_response = NULL; + GList *first_list = NULL; + NFlickApiRequest *unsetted_request = NULL; + NFlickApiResponse *unsetted_response = NULL; + GList *unsetted_list = NULL; + NFlickPhotoSet *unsetted_set = NULL; /* Do not dispose, it's not reffed */ + + get_photosets_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_LIST); + if (get_photosets_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_photosets_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (get_photosets_request, + NFLICK_FLICKR_API_PARAM_USER_ID, + self->Private->UserNsid); + + nflick_api_request_sign (get_photosets_request); + if (nflick_api_request_exec (get_photosets_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + set_list_response = nflick_api_response_new_from_request (NFLICK_TYPE_SET_LIST_RESPONSE, get_photosets_request); + if (set_list_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, set_list_response) == FALSE) + goto Error; + + self->Private->PhotoSets = nflick_set_list_response_take_list ((NFlickSetListResponse *) set_list_response); + + /* Let's fetch information about the unsetted photos */ + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Parsing photos without set...")); + + unsetted_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOS_NOT_IN_SET); + if (unsetted_request == NULL) + goto Error; + + nflick_api_request_add_parameter (unsetted_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + /* We try to get 500 photos per page. 500 is a maximum value. + * FIXME: We should check if 500 is enough. Someone might have more than + * 500 photos */ + + nflick_api_request_add_parameter (unsetted_request, + NFLICK_FLICKR_API_PARAM_PER_PAGE, + "500"); + + nflick_api_request_sign (unsetted_request); + if (nflick_api_request_exec (unsetted_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + unsetted_response = nflick_api_response_new_from_request (NFLICK_TYPE_NO_SET_RESPONSE, unsetted_request); + if (unsetted_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, unsetted_response) == FALSE) + goto Error; + + unsetted_list = nflick_no_set_response_take_list ((NFlickNoSetResponse *) unsetted_response); + /* FIXME: Here we could expose the "count" property on the PhotoSetResponse and NoSetResponse */ + unsetted_set = nflick_photo_set_new_no_set (g_list_length (unsetted_list)); + nflick_photo_set_give_list (unsetted_set, unsetted_list); + + /* Append the set to our set list... */ + self->Private->PhotoSets = g_list_append (self->Private->PhotoSets, + unsetted_set); + + /* If the user has not sets, finish now */ + if (self->Private->PhotoSets->data == (gpointer) unsetted_set) { + goto Done; + } + /* Now let's try fetching the photos for first photo set */ + nflick_worker_set_message ((NFlickWorker *) self, gettext ("Loading photoset data...")); + + GList *sets = self->Private->PhotoSets; + GList *set; + gint i = g_list_length (sets); + + for (set = sets; set != NULL; set = set->next) { + first_set = (NFlickPhotoSet*)set->data; + + g_object_get (G_OBJECT (first_set), "id", &first_id, NULL); + + first_photolist_request = nflick_api_request_new + (NFLICK_FLICKR_API_METHOD_PHOTOSETS_GET_PHOTOS); + if (first_photolist_request == NULL) + goto Error; + + nflick_api_request_add_parameter (first_photolist_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (first_photolist_request, + NFLICK_FLICKR_API_PARAM_PHOTOSET_ID, + first_id); + + nflick_api_request_sign (first_photolist_request); + if (nflick_api_request_exec (first_photolist_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + g_warning ("Error : %s", first_id); + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + g_warning ("Abort : %s", first_id); + + first_photo_list_response = nflick_api_response_new_from_request + (NFLICK_TYPE_PHOTO_LIST_RESPONSE, first_photolist_request); + if (first_photo_list_response == NULL) + g_warning ("No photos : %s", first_id); + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, + first_photo_list_response) == FALSE) + ; + + first_list = nflick_photo_list_response_take_list + ((NFlickPhotoListResponse *) first_photo_list_response); + nflick_photo_set_give_list (first_set, first_list); + } + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + g_print ("Abort\n"); + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + g_print ("Error\n"); +Done: + if (get_photosets_request != NULL) + g_object_unref (get_photosets_request); + + if (set_list_response != NULL) + g_object_unref (set_list_response); + + if (first_photolist_request != NULL) + g_object_unref (first_photolist_request); + + if (unsetted_response != NULL) + g_object_unref (unsetted_response); + + if (unsetted_request != NULL) + g_object_unref (unsetted_request); + + if (first_photo_list_response != NULL) + g_object_unref (first_photo_list_response); + + if (first_id != NULL) + g_free (first_id); + + return status; +} + +NFlickSetListWorker* nflick_set_list_worker_new (const gchar *usernsid, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (usernsid != NULL, NULL); + + NFlickSetListWorker *self = g_object_new (NFLICK_TYPE_SET_LIST_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->UserNsid = g_strdup (usernsid); + self->Private->PhotoSets = NULL; + + return self; +} + +GList* nflick_set_list_worker_take_list (NFlickSetListWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_SET_LIST_WORKER (self), NULL); + + GList *lst = self->Private->PhotoSets; + self->Private->PhotoSets = NULL; + + return lst; +} + +static void nflick_set_list_worker_get_property (NFlickSetListWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SET_LIST_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-set-list-worker.h b/attic/fluttr/libnflick/nflick-set-list-worker.h new file mode 100644 index 0000000..d7105c7 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-set-list-worker.h @@ -0,0 +1,55 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSETLISTWORKER_H__ +#define __NFLICKSETLISTWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-no-set-response.h" + +struct _NFlickSetListWorker +{ + NFlickWorker Parent; + NFlickSetListWorkerPrivate *Private; +}; + +struct _NFlickSetListWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_set_list_worker_get_type (void); + +NFlickSetListWorker* nflick_set_list_worker_new (const gchar *usernsid, const gchar *token); + +GList* nflick_set_list_worker_take_list (NFlickSetListWorker *self); + +#endif diff --git a/attic/fluttr/libnflick/nflick-show-worker-private.h b/attic/fluttr/libnflick/nflick-show-worker-private.h new file mode 100644 index 0000000..417fa75 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-show-worker-private.h @@ -0,0 +1,57 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static NFlickWorker* ParentClass = NULL; + +struct _NFlickShowWorkerPrivate +{ + gchar *PhotoId; + gchar *Token; + gint32 Width; + gint32 Height; + GdkPixbuf *Pixbuf; +}; + +enum +{ + ARG_0, + ARG_PIXBUF, +}; + +static void nflick_show_worker_class_init (NFlickShowWorkerClass *klass); + +static void nflick_show_worker_init (NFlickShowWorker *self); + +static gboolean private_init (NFlickShowWorker *self, NFlickShowWorkerPrivate *private); + +static void private_dispose (NFlickShowWorkerPrivate *private); + +static void nflick_show_worker_dispose (NFlickShowWorker *self); + +static void nflick_show_worker_finalize (NFlickShowWorker *self); + +static NFlickWorkerStatus thread_func (NFlickShowWorker *self); + +static void nflick_show_worker_get_property (NFlickShowWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-show-worker.c b/attic/fluttr/libnflick/nflick-show-worker.c new file mode 100644 index 0000000..10bc3d5 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-show-worker.c @@ -0,0 +1,264 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-show-worker.h" +#include "nflick-show-worker-private.h" + +GType nflick_show_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickShowWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_show_worker_class_init, + NULL, + NULL, + sizeof (NFlickShowWorker), + 4, + (GInstanceInitFunc) nflick_show_worker_init, + }; + objecttype = g_type_register_static (NFLICK_TYPE_WORKER, "NFlickShowWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_show_worker_class_init (NFlickShowWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + NFlickWorkerClass *workerclass = (NFlickWorkerClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_show_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_show_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_show_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_PIXBUF, + g_param_spec_object + ("pixbuf", "Pixbuf", "Pixbuf", + GDK_TYPE_PIXBUF, G_PARAM_READABLE)); + + workerclass->ThreadFunc = (NFlickWorkerThreadFunc) thread_func; + + ParentClass = g_type_class_ref (NFLICK_TYPE_WORKER); +} + +static void nflick_show_worker_init (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + self->Private = NULL; + + NFlickShowWorkerPrivate *priv = g_new0 (NFlickShowWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) { + self->Private = priv; + nflick_worker_set_message ((NFlickWorker *) self, + gettext ("Loading photo...")); + } else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickShowWorker *self, NFlickShowWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_SHOW_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->PhotoId = NULL; + private->Token = NULL; + + return TRUE; +} + +static void private_dispose (NFlickShowWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Token != NULL) { + g_free (private->Token); + private->Token = NULL; + } + + if (private->PhotoId != NULL) { + g_free (private->PhotoId); + private->PhotoId = NULL; + } + + if (private->Pixbuf != NULL) { + g_object_unref (private->Pixbuf); + private->Pixbuf = NULL; + } +} + +static void nflick_show_worker_dispose (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_show_worker_finalize (NFlickShowWorker *self) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static NFlickWorkerStatus thread_func (NFlickShowWorker *self) +{ + NFlickApiRequest *get_sizes_request = NULL; + NFlickApiResponse *get_sizes_response = NULL; + gchar *uri = NULL; + NFlickWorkerStatus status = NFLICK_WORKER_STATUS_OK; + gdouble vbox_aspect = (gdouble) self->Private->Width / (gdouble) self->Private->Height; + gdouble pixbuf_aspect = -1; + gint32 final_width = -1; + gint32 final_height = -1; + gboolean rotated = FALSE; + + get_sizes_request = nflick_api_request_new (NFLICK_FLICKR_API_METHOD_PHOTOS_GET_SIZES); + if (get_sizes_request == NULL) + goto Error; + + nflick_api_request_add_parameter (get_sizes_request, + NFLICK_FLICKR_API_PARAM_TOKEN, + self->Private->Token); + + nflick_api_request_add_parameter (get_sizes_request, + NFLICK_FLICKR_API_PARAM_PHOTO_ID, + self->Private->PhotoId); + + nflick_api_request_sign (get_sizes_request); + if (nflick_api_request_exec (get_sizes_request) != TRUE) { + nflick_worker_set_network_error ((NFlickWorker *) self); + goto Error; + } + + if (nflick_worker_is_aborted ((NFlickWorker *) self) == TRUE) + goto Abort; + + get_sizes_response = nflick_api_response_new_from_request (NFLICK_TYPE_GET_SIZES_RESPONSE, get_sizes_request); + if (get_sizes_response == NULL) + goto Error; + + if (nflick_worker_parse_api_response ((NFlickWorker*) self, get_sizes_response) == FALSE) + goto Error; + + final_width = self->Private->Width; + final_height = self->Private->Height; + + uri = nflick_get_sizes_response_find_match ((NFlickGetSizesResponse *) get_sizes_response, + &final_width, &final_height, &rotated); + + if (uri == NULL) + goto Error; + + self->Private->Pixbuf = nflick_pixbuf_fetch (uri, final_width, final_height, NULL); + if (self->Private->Pixbuf == NULL) + goto Error; + + if (rotated == TRUE) { + GdkPixbuf *pxbuf = gdk_pixbuf_rotate_simple (self->Private->Pixbuf, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE); + if (pxbuf != NULL) { + g_object_unref (self->Private->Pixbuf); + self->Private->Pixbuf = pxbuf; + } + } + + /* All ok */ + goto Done; + +Abort: + status = NFLICK_WORKER_STATUS_ABORTED; + goto Done; + +Error: + status = NFLICK_WORKER_STATUS_ERROR; + +Done: + if (get_sizes_request != NULL) + g_object_unref (get_sizes_request); + + if (get_sizes_response != NULL) + g_object_unref (get_sizes_response); + + if (uri != NULL) + g_free (uri); + + return status; +} + +NFlickShowWorker* nflick_show_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token) +{ + g_return_val_if_fail (token != NULL, NULL); + g_return_val_if_fail (photoid != NULL, NULL); + + NFlickShowWorker *self = g_object_new (NFLICK_TYPE_SHOW_WORKER, NULL); + g_return_val_if_fail (self != NULL, NULL); + + if (self->Private == NULL) { + g_object_unref (self); + return NULL; + } + + self->Private->Token = g_strdup (token); + self->Private->PhotoId= g_strdup (photoid); + self->Private->Width = width; + self->Private->Height = height; + + return self; +} + +static void nflick_show_worker_get_property (NFlickShowWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_SHOW_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_PIXBUF: + g_value_set_object (value, self->Private->Pixbuf); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + + } +} diff --git a/attic/fluttr/libnflick/nflick-show-worker.h b/attic/fluttr/libnflick/nflick-show-worker.h new file mode 100644 index 0000000..a17faf9 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-show-worker.h @@ -0,0 +1,54 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKSHOWWORKER_H__ +#define __NFLICKSHOWWORKER_H__ + +#include +#include +#include "nflick-worker.h" +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-get-sizes-response.h" +#include "nflick-set-list-response.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-set.h" +#include "nflick-types.h" +#include "nflick-pixbuf-fetch.h" + +struct _NFlickShowWorker +{ + NFlickWorker Parent; + NFlickShowWorkerPrivate *Private; +}; + +struct _NFlickShowWorkerClass +{ + NFlickWorkerClass ParentClass; +}; + +GType nflick_show_worker_get_type (void); + +NFlickShowWorker* nflick_show_worker_new (const gchar *photoid, gint32 width, gint32 height, const gchar *token); + +#endif diff --git a/attic/fluttr/libnflick/nflick-types.h b/attic/fluttr/libnflick/nflick-types.h new file mode 100644 index 0000000..61b0e46 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-types.h @@ -0,0 +1,514 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKTYPES_H__ +#define __NFLICKTYPES_H__ + +#include +#include + +/* Window */ + +typedef struct _NFlickWindowClass NFlickWindowClass; + +typedef struct _NFlickWindow NFlickWindow; + +typedef struct _NFlickWindowPrivate NFlickWindowPrivate; + +#define NFLICK_TYPE_WINDOW (nflick_window_get_type ()) + +#define NFLICK_IS_WINDOW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WINDOW)) + +#define NFLICK_WINDOW(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WINDOW, NFlickWindow)) + +#define NFLICK_WINDOW_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WINDOW, NFlickWindowClass)) + +/* Wait dialog */ + +#define NFLICK_WAIT_DIALOG_RESPONSE_ABORTED 1000 + +#define NFLICK_WAIT_DIALOG_RESPONSE_ERROR 1001 + +#define NFLICK_WAIT_DIALOG_RESPONSE_OK 1002 + +typedef struct _NFlickWaitDialogClass NFlickWaitDialogClass; + +typedef struct _NFlickWaitDialog NFlickWaitDialog; + +typedef struct _NFlickWaitDialogPrivate NFlickWaitDialogPrivate; + +#define NFLICK_TYPE_WAIT_DIALOG (nflick_wait_dialog_get_type ()) + +#define NFLICK_IS_WAIT_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WAIT_DIALOG)) + +#define NFLICK_WAIT_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WAIT_DIALOG, NFlickWaitDialog)) + +#define NFLICK_WAIT_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WAIT_DIALOG, NFlickWaitDialogClass)) + +/* Token dialog */ + +typedef struct _NFlickTokenDialogClass NFlickTokenDialogClass; + +typedef struct _NFlickTokenDialog NFlickTokenDialog; + +typedef struct _NFlickTokenDialogPrivate NFlickTokenDialogPrivate; + +#define NFLICK_TYPE_TOKEN_DIALOG (nflick_token_dialog_get_type ()) + +#define NFLICK_IS_TOKEN_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_TOKEN_DIALOG)) + +#define NFLICK_TOKEN_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_TOKEN_DIALOG, NFlickTokenDialog)) + +#define NFLICK_TOKEN_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_TOKEN_DIALOG, NFlickTokenDialogClass)) + +/* Cache dialog */ + +typedef struct _NFlickCacheDialogClass NFlickCacheDialogClass; + +typedef struct _NFlickCacheDialog NFlickCacheDialog; + +typedef struct _NFlickCacheDialogPrivate NFlickCacheDialogPrivate; + +#define NFLICK_TYPE_CACHE_DIALOG (nflick_cache_dialog_get_type ()) + +#define NFLICK_IS_CACHE_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_CACHE_DIALOG)) + +#define NFLICK_CACHE_DIALOG(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_CACHE_DIALOG, NFlickCacheDialog)) + +#define NFLICK_CACHE_DIALOG_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_CACHE_DIALOG, NFlickCacheDialogClass)) + +/* Welcome VBox */ + +typedef struct _NFlickWelcomeVBoxClass NFlickWelcomeVBoxClass; + +typedef struct _NFlickWelcomeVBox NFlickWelcomeVBox; + +typedef struct _NFlickWelcomeVBoxPrivate NFlickWelcomeVBoxPrivate; + +#define NFLICK_TYPE_WELCOME_VBOX (nflick_welcome_vbox_get_type ()) + +#define NFLICK_IS_WELCOME_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WELCOME_VBOX)) + +#define NFLICK_WELCOME_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WELCOME_VBOX, NFlickWelcomeVBox) + +#define NFLICK_WELCOME_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WELCOME_VBOX, NFlickWelcomeVBoxClass)) + +/* Show VBox */ + +typedef struct _NFlickShowVBoxClass NFlickShowVBoxClass; + +typedef struct _NFlickShowVBox NFlickShowVBox; + +typedef struct _NFlickShowVBoxPrivate NFlickShowVBoxPrivate; + +#define NFLICK_TYPE_SHOW_VBOX (nflick_show_vbox_get_type ()) + +#define NFLICK_IS_SHOW_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SHOW_VBOX)) + +#define NFLICK_SHOW_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SHOW_VBOX, NFlickShowVBox) + +#define NFLICK_SHOW_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SHOW_VBOX, NFlickShowVBoxClass)) + +/* Worker */ + +typedef struct _NFlickWorkerClass NFlickWorkerClass; + +typedef struct _NFlickWorker NFlickWorker; + +typedef struct _NFlickWorkerPrivate NFlickWorkerPrivate; + +#define NFLICK_TYPE_WORKER (nflick_worker_get_type ()) + +#define NFLICK_IS_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_WORKER)) + +#define NFLICK_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_WORKER, NFlickWorker) + +#define NFLICK_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_WORKER, NFlickWorkerClass)) + +enum +{ + NFLICK_WORKER_STATUS_IDLE, + NFLICK_WORKER_STATUS_OK, + NFLICK_WORKER_STATUS_ABORTED, + NFLICK_WORKER_STATUS_RUNNING, + NFLICK_WORKER_STATUS_ERROR + +} typedef NFlickWorkerStatus; + +typedef NFlickWorkerStatus (*NFlickWorkerThreadFunc) (NFlickWorker *self); + +typedef gboolean (*NFlickWorkerIdleFunc) (NFlickWorker *self); + +/* Api request */ + +typedef struct _NFlickApiRequestClass NFlickApiRequestClass; + +typedef struct _NFlickApiRequest NFlickApiRequest; + +typedef struct _NFlickApiRequestPrivate NFlickApiRequestPrivate; + +#define NFLICK_TYPE_API_REQUEST (nflick_api_request_get_type ()) + +#define NFLICK_IS_API_REQUEST(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_API_REQUEST)) + +#define NFLICK_API_REQUEST(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_API_REQUEST, NFlickApiRequest) + +#define NFLICK_API_REQUEST_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_API_REQUEST, NFlickApiRequestClass)) + +/* Api response */ + +typedef struct _NFlickApiResponseClass NFlickApiResponseClass; + +typedef struct _NFlickApiResponse NFlickApiResponse; + +typedef struct _NFlickApiResponsePrivate NFlickApiResponsePrivate; + +#define NFLICK_TYPE_API_RESPONSE (nflick_api_response_get_type ()) + +#define NFLICK_IS_API_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_API_RESPONSE)) + +#define NFLICK_API_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_API_RESPONSE, NFlickApiResponse) + +typedef void (*NFlickApiRequestParseFunc) \ + (NFlickApiResponse *self, xmlDoc *doc, xmlNode *children, gboolean *result, gboolean *parse_error); + +#define NFLICK_API_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_API_RESPONSE, NFlickApiResponseClass)) + +/* Gft response */ + +typedef struct _NFlickGftResponseClass NFlickGftResponseClass; + +typedef struct _NFlickGftResponse NFlickGftResponse; + +typedef struct _NFlickGftResponsePrivate NFlickGftResponsePrivate; + +#define NFLICK_TYPE_GFT_RESPONSE (nflick_gft_response_get_type ()) + +#define NFLICK_IS_GFT_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_GFT_RESPONSE)) + +#define NFLICK_GFT_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_GFT_RESPONSE, NFlickGftResponse) + +#define NFLICK_GFT_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_GFT_RESPONSE, NFlickGftResponseClass)) + +/* Photo set */ + +typedef struct _NFlickPhotoSetClass NFlickPhotoSetClass; + +typedef struct _NFlickPhotoSet NFlickPhotoSet; + +typedef struct _NFlickPhotoSetPrivate NFlickPhotoSetPrivate; + +#define NFLICK_TYPE_PHOTO_SET (nflick_photo_set_get_type ()) + +#define NFLICK_IS_PHOTO_SET(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_SET)) + +#define NFLICK_PHOTO_SET(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_SET, NFlickPhotoSet) + +#define NFLICK_PHOTO_SET_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_SET, NFlickPhotoSetClass)) + +/* Thmb table */ + +typedef struct _NFlickThmbTableClass NFlickThmbTableClass; + +typedef struct _NFlickThmbTable NFlickThmbTable; + +typedef struct _NFlickThmbTablePrivate NFlickThmbTablePrivate; + +#define NFLICK_TYPE_THMB_TABLE (nflick_thmb_table_get_type ()) + +#define NFLICK_IS_THMB_TABLE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_THMB_TABLE)) + +#define NFLICK_THMB_TABLE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_THMB_TABLE, NFlickThmbTable) + +#define NFLICK_THMB_TABLE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_THMB_TABLE, NFlickThmbTableClass)) + +/* Thmb image */ + +typedef struct _NFlickThmbImageClass NFlickThmbImageClass; + +typedef struct _NFlickThmbImage NFlickThmbImage; + +typedef struct _NFlickThmbImagePrivate NFlickThmbImagePrivate; + +#define NFLICK_TYPE_THMB_IMAGE (nflick_thmb_image_get_type ()) + +#define NFLICK_IS_THMB_IMAGE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_THMB_IMAGE)) + +#define NFLICK_THMB_IMAGE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_THMB_IMAGE, NFlickThmbImage) + +#define NFLICK_THMB_IMAGE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_THMB_IMAGE, NFlickThmbImageClass)) + +/* Set list response */ + +typedef struct _NFlickSetListResponseClass NFlickSetListResponseClass; + +typedef struct _NFlickSetListResponse NFlickSetListResponse; + +typedef struct _NFlickSetListResponsePrivate NFlickSetListResponsePrivate; + +#define NFLICK_TYPE_SET_LIST_RESPONSE (nflick_set_list_response_get_type ()) + +#define NFLICK_IS_SET_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_LIST_RESPONSE)) + +#define NFLICK_SET_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_LIST_RESPONSE, NFlickSetListResponse) + +#define NFLICK_SET_LIST_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_LIST_RESPONSE, NFlickSetListResponseClass)) + +/* Photo list response */ + +typedef struct _NFlickPhotoListResponseClass NFlickPhotoListResponseClass; + +typedef struct _NFlickPhotoListResponse NFlickPhotoListResponse; + +typedef struct _NFlickPhotoListResponsePrivate NFlickPhotoListResponsePrivate; + +#define NFLICK_TYPE_PHOTO_LIST_RESPONSE (nflick_photo_list_response_get_type ()) + +#define NFLICK_IS_PHOTO_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE)) + +#define NFLICK_PHOTO_LIST_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE, NFlickPhotoListResponse) + +#define NFLICK_PHOTO_LIST_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_LIST_RESPONSE, NFlickPhotoListResponseClass)) + +/* No set response */ + +typedef struct _NFlickNoSetResponseClass NFlickNoSetResponseClass; + +typedef struct _NFlickNoSetResponse NFlickNoSetResponse; + +typedef struct _NFlickNoSetResponsePrivate NFlickNoSetResponsePrivate; + +#define NFLICK_TYPE_NO_SET_RESPONSE (nflick_no_set_response_get_type ()) + +#define NFLICK_IS_NO_SET_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_NO_SET_RESPONSE)) + +#define NFLICK_NO_SET_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_NO_SET_RESPONSE, NFlickNoSetResponse) + +#define NFLICK_NO_SET_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_NO_SET_RESPONSE, NFlickNoSetResponseClass)) + +/* GetSizes response */ + +typedef struct _NFlickGetSizesResponseClass NFlickGetSizesResponseClass; + +typedef struct _NFlickGetSizesResponse NFlickGetSizesResponse; + +typedef struct _NFlickGetSizesResponsePrivate NFlickGetSizesResponsePrivate; + +#define NFLICK_TYPE_GET_SIZES_RESPONSE (nflick_get_sizes_response_get_type ()) + +#define NFLICK_IS_GET_SIZES_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE)) + +#define NFLICK_GET_SIZES_RESPONSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE, NFlickGetSizesResponse) + +#define NFLICK_GET_SIZES_RESPONSE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_GET_SIZES_RESPONSE, NFlickGetSizesResponseClass)) + +/* Auth worker */ + +typedef struct _NFlickAuthWorkerClass NFlickAuthWorkerClass; + +typedef struct _NFlickAuthWorker NFlickAuthWorker; + +typedef struct _NFlickAuthWorkerPrivate NFlickAuthWorkerPrivate; + +#define NFLICK_TYPE_AUTH_WORKER (nflick_auth_worker_get_type ()) + +#define NFLICK_IS_AUTH_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_AUTH_WORKER)) + +#define NFLICK_AUTH_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_AUTH_WORKER, NFlickAuthWorker) + +#define NFLICK_AUTH_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_AUTH_WORKER, NFlickAuthWorkerClass)) + +/* Show worker */ + +typedef struct _NFlickShowWorkerClass NFlickShowWorkerClass; + +typedef struct _NFlickShowWorker NFlickShowWorker; + +typedef struct _NFlickShowWorkerPrivate NFlickShowWorkerPrivate; + +#define NFLICK_TYPE_SHOW_WORKER (nflick_show_worker_get_type ()) + +#define NFLICK_IS_SHOW_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SHOW_WORKER)) + +#define NFLICK_SHOW_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SHOW_WORKER, NFlickShowWorker) + +#define NFLICK_SHOW_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SHOW_WORKER, NFlickShowWorkerClass)) + +/* Set worker */ + +typedef struct _NFlickSetListWorkerClass NFlickSetListWorkerClass; + +typedef struct _NFlickSetListWorker NFlickSetListWorker; + +typedef struct _NFlickSetListWorkerPrivate NFlickSetListWorkerPrivate; + +#define NFLICK_TYPE_SET_LIST_WORKER (nflick_set_list_worker_get_type ()) + +#define NFLICK_IS_SET_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_LIST_WORKER)) + +#define NFLICK_SET_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_LIST_WORKER, NFlickSetListWorker) + +#define NFLICK_SET_LIST_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_LIST_WORKER, NFlickSetListWorkerClass)) + +/* Photo list worker */ + +typedef struct _NFlickPhotoListWorkerClass NFlickPhotoListWorkerClass; + +typedef struct _NFlickPhotoListWorker NFlickPhotoListWorker; + +typedef struct _NFlickPhotoListWorkerPrivate NFlickPhotoListWorkerPrivate; + +#define NFLICK_TYPE_PHOTO_LIST_WORKER (nflick_photo_list_worker_get_type ()) + +#define NFLICK_IS_PHOTO_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER)) + +#define NFLICK_PHOTO_LIST_WORKER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER, NFlickPhotoListWorker) + +#define NFLICK_PHOTO_LIST_WORKER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTO_LIST_WORKER, NFlickPhotoListWorkerClass)) + +/* Photos vbox */ + +typedef struct _NFlickPhotosVBoxClass NFlickPhotosVBoxClass; + +typedef struct _NFlickPhotosVBox NFlickPhotosVBox; + +typedef struct _NFlickPhotosVBoxPrivate NFlickPhotosVBoxPrivate; + +#define NFLICK_TYPE_PHOTOS_VBOX (nflick_photos_vbox_get_type ()) + +#define NFLICK_IS_PHOTOS_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_PHOTOS_VBOX)) + +#define NFLICK_PHOTOS_VBOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_PHOTOS_VBOX, NFlickPhotosVBox) + +#define NFLICK_PHOTOS_VBOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_PHOTOS_VBOX, NFlickPhotosVBoxClass)) + +/* Set Combo */ + +typedef struct _NFlickSetComboClass NFlickSetComboClass; + +typedef struct _NFlickSetCombo NFlickSetCombo; + +typedef struct _NFlickSetComboPrivate NFlickSetComboPrivate; + +#define NFLICK_TYPE_SET_COMBO (nflick_set_combo_get_type ()) + +#define NFLICK_IS_SET_COMBO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NFLICK_TYPE_SET_COMBO)) + +#define NFLICK_SET_COMBO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), NFLICK_TYPE_SET_COMBO, NFlickSetCombo) + +#define NFLICK_SET_COMBO_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), NFLICK_TYPE_SET_COMBO, NFlickSetComboClass)) + +/* Processor */ + +typedef void (*NFlickProcessorFreeFunc) (gpointer data); + +typedef gboolean (*NFlickProcessorJobFunc) (gpointer data, gchar **error); + +typedef gboolean (*NFlickProcessorErrorFunc) (gchar *msg); + +typedef gboolean (*NFlickProcessorDoneFunc) (gpointer data); + +typedef struct _NFlickProcessorResult NFlickProcessorResult; + +/* Model */ + +typedef struct _NFlickModel NFlickModel; + +/* Photo data */ + +typedef struct _NFlickPhotoData NFlickPhotoData; + +#define NFLICK_TYPE_PHOTO_DATA (nflick_photo_data_get_type ()) + +/* End */ + +#endif diff --git a/attic/fluttr/libnflick/nflick-worker-private.h b/attic/fluttr/libnflick/nflick-worker-private.h new file mode 100644 index 0000000..884f364 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-worker-private.h @@ -0,0 +1,74 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +static GObject* ParentClass = NULL; + +struct _NFlickWorkerPrivate +{ + GThread *Thread; + gboolean Started; + GMutex *Mutex; + NFlickWorkerStatus Status; + gchar *Error; + gchar *Message; + + NFlickWorkerIdleFunc AbortedIdle; + NFlickWorkerIdleFunc OkIdle; + NFlickWorkerIdleFunc ErrorIdle; + NFlickWorkerIdleFunc MsgChangeIdle; + gpointer CustomData; + + gboolean AbortRequested; +}; + +enum +{ + ARG_0, + ARG_ERROR, + ARG_MESSAGE, + ARG_STATUS +}; + +#define WORKER_LOCK(obj) (g_mutex_lock (obj->Private->Mutex)) + +#define WORKER_UNLOCK(obj) (g_mutex_unlock (obj->Private->Mutex)) + +static void nflick_worker_class_init (NFlickWorkerClass *klass); + +static void nflick_worker_init (NFlickWorker *self); + +static gboolean private_init (NFlickWorker *self, NFlickWorkerPrivate *private); + +static void private_dispose (NFlickWorkerPrivate *private); + +static void nflick_worker_dispose (NFlickWorker *self); + +static void nflick_worker_finalize (NFlickWorker *self); + +static void thread_start (NFlickWorker *self); + +static void set_error_no_lock (NFlickWorker *self, const gchar *error); + +static void nflick_worker_get_property (NFlickWorker *self, guint propid, + GValue *value, GParamSpec *pspec); + diff --git a/attic/fluttr/libnflick/nflick-worker.c b/attic/fluttr/libnflick/nflick-worker.c new file mode 100644 index 0000000..b618a72 --- /dev/null +++ b/attic/fluttr/libnflick/nflick-worker.c @@ -0,0 +1,454 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#include "nflick-worker.h" +#include "nflick-worker-private.h" + +GType nflick_worker_get_type (void) +{ + static GType objecttype = 0; + + if (!objecttype) { + + static const GTypeInfo objectinfo = { + sizeof (NFlickWorkerClass), + NULL, + NULL, + (GClassInitFunc) nflick_worker_class_init, + NULL, + NULL, + sizeof (NFlickWorker), + 4, + (GInstanceInitFunc) nflick_worker_init, + }; + objecttype = g_type_register_static (G_TYPE_OBJECT, "NFlickWorker", + &objectinfo, 0); + } + return objecttype; +} + +static void nflick_worker_class_init (NFlickWorkerClass *klass) +{ + GObjectClass *gobjectclass = (GObjectClass *) klass; + + gobjectclass->dispose = (gpointer) nflick_worker_dispose; + gobjectclass->finalize = (gpointer) nflick_worker_finalize; + gobjectclass->get_property = (gpointer) nflick_worker_get_property; + + g_object_class_install_property (gobjectclass, ARG_ERROR, + g_param_spec_string + ("error", "Error", "Message describing the error", + NULL, G_PARAM_READABLE)); + + g_object_class_install_property (gobjectclass, ARG_STATUS, + g_param_spec_int + ("status", "Status", "Current worker status", + -5000, 5000, NFLICK_WORKER_STATUS_IDLE, G_PARAM_READABLE)); + /* FIXME Use actual max/min vals for int */ + + g_object_class_install_property (gobjectclass, ARG_MESSAGE, + g_param_spec_string + ("message", "Message", "Message describing the thread status", + NULL, G_PARAM_READABLE)); + + ParentClass = g_type_class_ref (G_TYPE_OBJECT); + + klass->ThreadFunc = NULL; +} + +static void nflick_worker_init (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + self->Private = NULL; + + NFlickWorkerPrivate *priv = g_new0 (NFlickWorkerPrivate, 1); + g_return_if_fail (priv != NULL); + + if (private_init (self, priv) == TRUE) + self->Private = priv; + else { + private_dispose (priv); + g_free (priv); + self->Private = NULL; + } +} + +static gboolean private_init (NFlickWorker *self, NFlickWorkerPrivate *private) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + g_return_val_if_fail (private != NULL, FALSE); + + private->Thread = NULL; + + private->Mutex = g_mutex_new (); + g_return_val_if_fail (private->Mutex != NULL, FALSE); + + private->Started = FALSE; + private->Status = NFLICK_WORKER_STATUS_IDLE; + private->Error = NULL; + private->AbortRequested = FALSE; + + /* Null the idle functions */ + private->OkIdle = NULL; + private->AbortedIdle = NULL; + private->MsgChangeIdle = NULL; + private->ErrorIdle = NULL; + private->CustomData = NULL; + + /* Initialize the message to a stubby one */ + private->Message = g_strdup (gettext ("Working...")); + + return TRUE; +} + +static void private_dispose (NFlickWorkerPrivate *private) +{ + g_return_if_fail (private != NULL); + + if (private->Thread != NULL) { + g_thread_join (private->Thread); + private->Thread = NULL; + } + + if (private->Mutex != NULL) { + g_mutex_free (private->Mutex); + private->Mutex = NULL; + } + + if (private->Error != NULL) { + g_free (private->Error); + private->Error = NULL; + } + + if (private->Message != NULL) { + g_free (private->Message); + private->Message = NULL; + } +} + +void nflick_worker_start (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + if (self->Private->Started == TRUE) { + g_warning ("Worker was already started"); + } else { + self->Private->Thread = g_thread_create ((GThreadFunc) thread_start, self, TRUE, NULL); + /* FIXME Check for NULL */ + } + + WORKER_UNLOCK (self); +} + +static void thread_start (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + + /* Get the class and call the proper function */ + NFlickWorkerClass *klass = (NFlickWorkerClass *) G_OBJECT_GET_CLASS (self); + g_assert (klass != NULL); + + if (klass->ThreadFunc == NULL) { + g_warning ("No thread func"); + set_error_no_lock (self, gettext ("Internal threading error, no thread function. " + "Please file a bug report.")); + self->Private->Status = NFLICK_WORKER_STATUS_ERROR; + + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + + WORKER_UNLOCK (self); + goto Done; + } + + self->Private->Status = NFLICK_WORKER_STATUS_RUNNING; + WORKER_UNLOCK (self); + + /* Here we're waiting, waiting, waiting... */ + NFlickWorkerStatus status = klass->ThreadFunc (self); + + WORKER_LOCK (self); + + /* Our last chance for an abort */ + if (self->Private->AbortRequested == TRUE) + status = NFLICK_WORKER_STATUS_ABORTED; + + self->Private->Status = status; + + switch (status) { + + case NFLICK_WORKER_STATUS_RUNNING: + case NFLICK_WORKER_STATUS_IDLE: + self->Private->Status = NFLICK_WORKER_STATUS_ERROR; + set_error_no_lock (self, gettext ("Internal threading error, thread in running after function done. " + "Please file a bug report.")); + /* Fire error func */ + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + break; + + case NFLICK_WORKER_STATUS_ERROR: + if (self->Private->Error == NULL) + set_error_no_lock (self, gettext ("Error in thread, but no error was set. " + "Please file a bug report.")); + /* Fire error func */ + if (self->Private->ErrorIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->ErrorIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + break; + + case NFLICK_WORKER_STATUS_OK: + /* Fire ok func */ + if (self->Private->OkIdle != NULL) + /*g_idle_add ((GSourceFunc) self->Private->OkIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self);*/ + g_timeout_add_full (G_PRIORITY_HIGH_IDLE, + 1000, + (GSourceFunc) self->Private->OkIdle, + (self->Private->CustomData + != NULL) ? self->Private->CustomData + : self, + NULL); + + break; + + case NFLICK_WORKER_STATUS_ABORTED: + /* Fire aborted func */ + if (self->Private->AbortedIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->AbortedIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + break; + } + + WORKER_UNLOCK (self); + + Done: + return; +} + +static void set_error_no_lock (NFlickWorker *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private->Error != NULL) + g_free (self->Private->Error); + + self->Private->Error = g_strdup (error); +} + +void nflick_worker_set_message (NFlickWorker *self, const gchar *msg) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + if (self->Private->Message != NULL) + g_free (self->Private->Message); + + self->Private->Message = g_strdup (msg); + + /* Notify */ + if (self->Private->MsgChangeIdle != NULL) + g_idle_add ((GSourceFunc) self->Private->MsgChangeIdle, + (self->Private->CustomData != NULL) ? self->Private->CustomData : self); + + WORKER_UNLOCK (self); +} + +void nflick_worker_set_network_error (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + nflick_worker_set_error (self, gettext ("A network error occured while trying to connect to flickr. " + "Please check your connection settings.")); +} + +gboolean nflick_worker_parse_api_response (NFlickWorker *self, NFlickApiResponse *response) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + g_return_val_if_fail (NFLICK_IS_API_RESPONSE (response), FALSE); + + gboolean success = FALSE; + + g_object_get (G_OBJECT (response), "success", &success, NULL); + + if (success == TRUE) + return TRUE; + else { + gboolean parse_error = FALSE; + gchar *error = NULL; + + g_object_get (G_OBJECT (response), "error", &error, "parseerror", &parse_error, NULL); + + if (parse_error == TRUE) { + gchar *e = g_strdup_printf ("%s\n\n%s", + gettext ("An error occurred while parsing the flickr api response. " + "Please file a bug report. Error details: "), error); + nflick_worker_set_error (self, e); + if (e != NULL) + g_free (e); + } else + nflick_worker_set_error (self, error); + + if (error != NULL) + g_free (error); + + return FALSE; + } +} + +void nflick_worker_set_error (NFlickWorker *self, const gchar *error) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + g_return_if_fail (error != NULL); + + WORKER_LOCK (self); + set_error_no_lock (self, error); + WORKER_UNLOCK (self); +} + +void nflick_worker_set_custom_data (NFlickWorker *self, gpointer data) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->CustomData = data; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_aborted_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->AbortedIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_ok_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->OkIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_set_error_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->ErrorIdle = func; + WORKER_UNLOCK (self); +} + +void nflick_worker_request_abort (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->AbortRequested = TRUE; + WORKER_UNLOCK (self); +} + +gboolean nflick_worker_is_aborted (NFlickWorker *self) +{ + g_return_val_if_fail (NFLICK_IS_WORKER (self), FALSE); + + WORKER_LOCK (self); + gboolean ret = self->Private->AbortRequested; + WORKER_UNLOCK (self); + + return ret; +} + +void nflick_worker_set_msg_change_idle (NFlickWorker *self, NFlickWorkerIdleFunc func) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + WORKER_LOCK (self); + self->Private->MsgChangeIdle = func; + WORKER_UNLOCK (self); +} + +static void nflick_worker_dispose (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private != NULL) + private_dispose (self->Private); + + G_OBJECT_CLASS (ParentClass)->dispose (G_OBJECT (self)); +} + +static void nflick_worker_finalize (NFlickWorker *self) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + + if (self->Private != NULL) { + g_free (self->Private); + self->Private = NULL; + } + + G_OBJECT_CLASS (ParentClass)->finalize (G_OBJECT (self)); +} + +static void nflick_worker_get_property (NFlickWorker *self, guint propid, + GValue *value, GParamSpec *pspec) +{ + g_return_if_fail (NFLICK_IS_WORKER (self)); + g_assert (self->Private != NULL); + + switch (propid) { + + case ARG_ERROR: + WORKER_LOCK (self); + g_value_set_string (value, self->Private->Error); + WORKER_UNLOCK (self); + break; + + case ARG_STATUS: + WORKER_LOCK (self); + g_value_set_int (value, self->Private->Status); + WORKER_UNLOCK (self); + break; + + case ARG_MESSAGE: + WORKER_LOCK (self); + g_value_set_string (value, self->Private->Message); + WORKER_UNLOCK (self); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (G_OBJECT (self), propid, pspec); + break; + } +} diff --git a/attic/fluttr/libnflick/nflick-worker.h b/attic/fluttr/libnflick/nflick-worker.h new file mode 100644 index 0000000..b1c1a4f --- /dev/null +++ b/attic/fluttr/libnflick/nflick-worker.h @@ -0,0 +1,70 @@ +/******************************************************************************/ +/* */ +/* GPL license, Copyright (c) 2005-2006 by: */ +/* */ +/* Authors: */ +/* Michael Dominic K. */ +/* */ +/* 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, or (at your option) any later */ +/* version. */ +/* */ +/* 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, Inc., 59 */ +/* Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/******************************************************************************/ + +#ifndef __NFLICKWORKER_H__ +#define __NFLICKWORKER_H__ + +#include +#include +#include "nflick-api-response.h" +#include "nflick-types.h" + +struct _NFlickWorker +{ + GObject Parent; + NFlickWorkerPrivate *Private; +}; + +struct _NFlickWorkerClass +{ + GObjectClass ParentClass; + NFlickWorkerThreadFunc ThreadFunc; +}; + +GType nflick_worker_get_type (void); + +void nflick_worker_start (NFlickWorker *self); + +void nflick_worker_set_error (NFlickWorker *self, const gchar *error); + +void nflick_worker_set_custom_data (NFlickWorker *self, gpointer data); + +void nflick_worker_set_aborted_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_ok_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_error_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_msg_change_idle (NFlickWorker *self, NFlickWorkerIdleFunc func); + +void nflick_worker_set_message (NFlickWorker *self, const gchar *msg); + +void nflick_worker_request_abort (NFlickWorker *self); + +gboolean nflick_worker_is_aborted (NFlickWorker *self); + +void nflick_worker_set_network_error (NFlickWorker *self); + +gboolean nflick_worker_parse_api_response (NFlickWorker *self, NFlickApiResponse *response); + +#endif diff --git a/attic/fluttr/libnflick/nflick.h b/attic/fluttr/libnflick/nflick.h new file mode 100644 index 0000000..3769917 --- /dev/null +++ b/attic/fluttr/libnflick/nflick.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +/* A simple header file which includes all of the necessary nflick headers */ + +#ifndef NFLICK_H +#define NFLICK_H + +#include "nflick-api-request.h" +#include "nflick-api-response.h" +#include "nflick-auth-worker.h" +#include "nflick-flickr.h" +#include "nflick-get-sizes-response.h" +#include "nflick-gft-response.h" +#include "nflick-no-set-response.h" +#include "nflick-photo-data.h" +#include "nflick-photo-list-response.h" +#include "nflick-photo-list-worker.h" +#include "nflick-photo-set.h" +#include "nflick-pixbuf-fetch.h" +#include "nflick-set-list-response.h" +#include "nflick-set-list-worker.h" +#include "nflick-show-worker.h" +#include "nflick-types.h" +#include "nflick-worker.h" + + +#endif diff --git a/attic/fluttr/ltmain.sh b/attic/fluttr/ltmain.sh new file mode 120000 index 0000000..72940b6 --- /dev/null +++ b/attic/fluttr/ltmain.sh @@ -0,0 +1 @@ +/usr/share/libtool/ltmain.sh \ No newline at end of file diff --git a/attic/fluttr/src/Makefile.am b/attic/fluttr/src/Makefile.am new file mode 100644 index 0000000..aee400c --- /dev/null +++ b/attic/fluttr/src/Makefile.am @@ -0,0 +1,42 @@ +bin_PROGRAMS=fluttr + +PKGDATADIR = $(datadir)/fluttr +AM_CFLAGS = \ + $(DEPS_CFLAGS) \ + $(GCC_FLAGS) \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -D_GNU_SOURCE \ + -DPKGDATADIR=\"$(PKGDATADIR)\" + +fluttr_LDADD = $(DEPS_LIBS) \ + $(top_builddir)/libnflick/libnflick.la + +fluttr_SOURCES = \ + main.c \ + eggsequence.c \ + eggsequence.h \ + fluttr-auth.c \ + fluttr-auth.h \ + fluttr-behave.c \ + fluttr-behave.h \ + fluttr-library.c \ + fluttr-library.h \ + fluttr-library-row.c \ + fluttr-library-row.h \ + fluttr-list.c \ + fluttr-list.h \ + fluttr-list-view.c \ + fluttr-list-view.h \ + fluttr-photo.c \ + fluttr-photo.h \ + fluttr-set.c \ + fluttr-set.h \ + fluttr-set-view.c \ + fluttr-set-view.h \ + fluttr-settings.c \ + fluttr-settings.h \ + fluttr-spinner.c \ + fluttr-spinner.h \ + fluttr-viewer.c \ + fluttr-viewer.h diff --git a/attic/fluttr/src/eggsequence.c b/attic/fluttr/src/eggsequence.c new file mode 100644 index 0000000..979a512 --- /dev/null +++ b/attic/fluttr/src/eggsequence.c @@ -0,0 +1,1709 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "eggsequence.h" + +typedef struct _EggSequenceNode EggSequenceNode; + +struct _EggSequence +{ + EggSequenceNode * end_node; + GDestroyNotify data_destroy_notify; + gboolean access_prohibited; +}; + +struct _EggSequenceNode +{ + gint n_nodes; + EggSequenceNode *parent; + EggSequenceNode *left; + EggSequenceNode *right; + gpointer data; /* For the end node, this field points + * to the sequence + */ +}; + +static EggSequenceNode *node_new (gpointer data); +static EggSequenceNode *node_get_first (EggSequenceNode *node); +static EggSequenceNode *node_get_last (EggSequenceNode *node); +static EggSequenceNode *node_get_prev (EggSequenceNode *node); +static EggSequenceNode *node_get_next (EggSequenceNode *node); +static gint node_get_pos (EggSequenceNode *node); +static EggSequenceNode *node_get_by_pos (EggSequenceNode *node, + gint pos); +static EggSequenceNode *node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp, + gpointer user_data); +static gint node_get_length (EggSequenceNode *node); +static void node_free (EggSequenceNode *node, + EggSequence *seq); +static void node_cut (EggSequenceNode *split); +static void node_insert_after (EggSequenceNode *node, + EggSequenceNode *second); +static void node_insert_before (EggSequenceNode *node, + EggSequenceNode *new); +static void node_unlink (EggSequenceNode *node); +static void node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +static EggSequence * +get_sequence (EggSequenceNode *node) +{ + return (EggSequence *)node_get_last (node)->data; +} + +static void +check_seq_access (EggSequence *seq) +{ + if (G_UNLIKELY (seq->access_prohibited)) + { + g_warning ("Accessing a sequence while it is " + "being sorted or searched is not allowed"); + } +} + +static void +check_iter_access (EggSequenceIter *iter) +{ + check_seq_access (get_sequence (iter)); +} + +static gboolean +is_end (EggSequenceIter *iter) +{ + EggSequence *seq = get_sequence (iter); + + return seq->end_node == iter; +} + +/* + * Public API + */ + +/** + * egg_sequence_new: + * @data_destroy: A #GDestroyNotify function, or %NULL + * + * Creates a new EggSequence. The @data_destroy function will be called + * on all items when the sequence is destroyed and on items that are + * removed from the sequence. + * + * Return value: A new #EggSequence + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_new (GDestroyNotify data_destroy) +{ + EggSequence *seq = g_new (EggSequence, 1); + seq->data_destroy_notify = data_destroy; + + seq->end_node = node_new (seq); + + seq->access_prohibited = FALSE; + + return seq; +} + +/** + * egg_sequence_free: + * @seq: a #EggSequence + * + * Frees the memory allocated for @seq. If @seq has a destroy notify + * function associated with it, that function is called on all items in + * @seq. + * + * Since: 2.14 + **/ +void +egg_sequence_free (EggSequence *seq) +{ + g_return_if_fail (seq != NULL); + + check_seq_access (seq); + + node_free (seq->end_node, seq); + + g_free (seq); +} + +/** + * egg_sequence_foreach_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * @func: a #GFunc + * @user_data: user data passed to @func + * + * Calls @func for each item in the range (@begin, @end) passing + * @user_data to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer user_data) +{ + EggSequence *seq; + EggSequenceIter *iter; + + g_return_if_fail (func != NULL); + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + seq = get_sequence (begin); + + seq->access_prohibited = TRUE; + + iter = begin; + while (iter != end) + { + EggSequenceIter *next = node_get_next (iter); + + func (iter->data, user_data); + + iter = next; + } + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_foreach: + * @seq: a #EggSequence + * @func: the function to call for each item in @seq + * @data: user data passed to @func + * + * Calls @func for each item in the sequence passing @user_data + * to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data) +{ + EggSequenceIter *begin, *end; + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + egg_sequence_foreach_range (begin, end, func, data); +} + +/** + * egg_sequence_range_get_midpoint: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Finds an iterator somewhere in the range (@begin, @end). This + * iterator will be close to the middle of the range, but is not + * guaranteed to be exactly in the middle. + * + * The @begin and @end iterators must both point to the same sequence and + * @begin must come before or be equal to @end in the sequence. + * + * Return value: A #EggSequenceIter which is close to the middle of + * the (@begin, @end) range. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_range_get_midpoint (EggSequenceIter *begin, + EggSequenceIter *end) +{ + int begin_pos, end_pos, mid_pos; + + g_return_val_if_fail (begin != NULL, NULL); + g_return_val_if_fail (end != NULL, NULL); + g_return_val_if_fail (get_sequence (begin) == get_sequence (end), NULL); + + begin_pos = node_get_pos (begin); + end_pos = node_get_pos (end); + + g_return_val_if_fail (end_pos >= begin_pos, NULL); + + mid_pos = begin_pos + (end_pos - begin_pos) / 2; + + return node_get_by_pos (begin, mid_pos); +} + +/** + * egg_sequence_iter_compare: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Returns a negative number if @a comes before @b, 0 if they are equal, + * and a positive number if @a comes after @b. + * + * The @a and @b iterators must point into the same sequence. + * + * Return value: A negative number if @a comes before @b, 0 if they are + * equal, and a positive number if @a comes after @b. + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter *b) +{ + gint a_pos, b_pos; + + g_return_val_if_fail (a != NULL, 0); + g_return_val_if_fail (b != NULL, 0); + g_return_val_if_fail (get_sequence (a) == get_sequence (b), 0); + + check_iter_access (a); + check_iter_access (b); + + a_pos = node_get_pos (a); + b_pos = node_get_pos (b); + + if (a_pos == b_pos) + return 0; + else if (a_pos > b_pos) + return 1; + else + return -1; +} + +/** + * egg_sequence_append: + * @seq: a #EggSequencePointer + * @data: the data for the new item + * + * Adds a new item to the end of @seq. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_append (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + node_insert_before (seq->end_node, node); + + return node; +} + +/** + * egg_sequence_prepend: + * @seq: a #EggSequence + * @data: the data for the new item + * + * Adds a new item to the front of @seq + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_prepend (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node, *first; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + first = node_get_first (seq->end_node); + + node_insert_before (first, node); + + return node; +} + +/** + * egg_sequence_insert_before: + * @iter: a #EggSequenceIter + * @data: the data for the new item + * + * Inserts a new item just before the item pointed to by @iter. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_before (EggSequenceIter *iter, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (iter != NULL, NULL); + + check_iter_access (iter); + + node = node_new (data); + + node_insert_before (iter, node); + + return node; +} + +/** + * egg_sequence_remove: + * @iter: a #EggSequenceIter + * + * Removes the item pointed to by @iter. It is an error to pass the + * end iterator to this function. + * + * If the sequnce has a data destroy function associated with it, this + * function is called on the data for the removed item. + * + * Since: 2.14 + **/ +void +egg_sequence_remove (EggSequenceIter *iter) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + seq = get_sequence (iter); + + node_unlink (iter); + node_free (iter, seq); +} + +/** + * egg_sequence_remove_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Removes all items in the (@begin, @end) range. + * + * If the sequence has a data destroy function associated with it, this + * function is called on the data for the removed items. + * + * Since: 2.14 + **/ +void +egg_sequence_remove_range (EggSequenceIter *begin, + EggSequenceIter *end) +{ + g_return_if_fail (get_sequence (begin) == get_sequence (end)); + + check_iter_access (begin); + check_iter_access (end); + + egg_sequence_move_range (NULL, begin, end); +} + +/** + * egg_sequence_move_range: + * @dest: a #EggSequenceIter + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Inserts the (@begin, @end) range at the destination pointed to by ptr. + * The @begin and @end iters must point into the same sequence. It is + * allowed for @dest to point to a different sequence than the one pointed + * into by @begin and @end. + * + * If @dest is NULL, the range indicated by @begin and @end is + * removed from the sequence. If @dest iter points to a place within + * the (@begin, @end) range, the range does not move. + * + * Since: 2.14 + **/ +void +egg_sequence_move_range (EggSequenceIter *dest, + EggSequenceIter *begin, + EggSequenceIter *end) +{ + EggSequence *src_seq; + EggSequenceNode *first; + + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + check_iter_access (begin); + check_iter_access (end); + if (dest) + check_iter_access (dest); + + src_seq = get_sequence (begin); + + g_return_if_fail (src_seq == get_sequence (end)); + + /* Dest points to begin or end? */ + if (dest == begin || dest == end) + return; + + /* begin comes after end? */ + if (egg_sequence_iter_compare (begin, end) >= 0) + return; + + /* dest points somewhere in the (begin, end) range? */ + if (dest && get_sequence (dest) == src_seq && + egg_sequence_iter_compare (dest, begin) > 0 && + egg_sequence_iter_compare (dest, end) < 0) + { + return; + } + + src_seq = get_sequence (begin); + + first = node_get_first (begin); + + node_cut (begin); + + node_cut (end); + + if (first != begin) + node_insert_after (node_get_last (first), end); + + if (dest) + node_insert_before (dest, begin); + else + node_free (begin, src_seq); +} + +typedef struct +{ + GCompareDataFunc cmp_func; + gpointer cmp_data; + EggSequenceNode *end_node; +} SortInfo; + +/* This function compares two iters using a normal compare + * function and user_data passed in in a SortInfo struct + */ +static gint +iter_compare (EggSequenceIter *node1, + EggSequenceIter *node2, + gpointer data) +{ + const SortInfo *info = data; + gint retval; + + if (node1 == info->end_node) + return 1; + + if (node2 == info->end_node) + return -1; + + retval = info->cmp_func (node1->data, node2->data, info->cmp_data); + + return retval; +} + +/** + * egg_sequence_sort: + * @seq: a #EggSequence + * @cmp_func: the #GCompareDataFunc used to sort @seq. This function is + * passed two items of @seq and should return 0 if they are equal, + * a negative value fi the first comes before the second, and a + * positive value if the second comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Sorts @seq using @cmp_func. + * + * Since: 2.14 + **/ +void +egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, seq->end_node }; + + check_seq_access (seq); + + egg_sequence_sort_iter (seq, iter_compare, &info); +} + +/** + * egg_sequence_insert_sorted: + * @seq: a #EggSequence + * @data: the data to insert + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Inserts @data into @queue using @func to determine the new position. + * @seq must already be sorted according to @cmp_func; otherwise the + * new position of is undefined. + * + * Return value: A #EggSequenceIter pointing to the new item. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + g_return_val_if_fail (cmp_func != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_insert_sorted_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_changed: + * @iter: A #EggSequenceIter + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Moves the data pointed to a new position as indicated by @cmp_func. This + * function should be called for items in a sequence already sorted according + * to @cmp_func whenever some aspect of an item changes so that @cmp_func + * may return different values for that item. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed (EggSequenceIter *iter, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_if_fail (!is_end (iter)); + + info.end_node = get_sequence (iter)->end_node; + check_iter_access (iter); + + egg_sequence_sort_changed_iter (iter, iter_compare, &info); +} + +/** + * egg_sequence_search: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Returns an iterator pointing to the position where @data would + * be inserted according to @cmp_func and @cmp_data. + * + * Return value: An #EggSequenceIter pointing to the position where @data + * would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_search_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_iter: + * @seq: a #EggSequence + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort(), but uses a #EggSequenceIterCompareFunc instead + * of a GCompareDataFunc as the compare function + * + * Since: 2.14 + **/ +void +egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequence *tmp; + EggSequenceNode *begin, *end; + + g_return_if_fail (seq != NULL); + g_return_if_fail (cmp_func != NULL); + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + tmp = egg_sequence_new (NULL); + + egg_sequence_move_range (egg_sequence_get_begin_iter (tmp), begin, end); + + tmp->access_prohibited = TRUE; + seq->access_prohibited = TRUE; + + while (egg_sequence_get_length (tmp) > 0) + { + EggSequenceNode *node = egg_sequence_get_begin_iter (tmp); + + node_unlink (node); + + node_insert_sorted (seq->end_node, node, seq->end_node, cmp_func, cmp_data); + } + + tmp->access_prohibited = FALSE; + seq->access_prohibited = FALSE; + + egg_sequence_free (tmp); +} + +/** + * egg_sequence_sort_changed_iter: + * @iter: a #EggSequenceIter + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort_changed(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed_iter (EggSequenceIter *iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequence *seq; + EggSequenceIter *next, *prev; + + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + /* If one of the neighbours is equal to iter, then + * don't move it. This ensures that sort_changed() is + * a stable operation. + */ + + next = node_get_next (iter); + prev = node_get_prev (iter); + + if (prev != iter && iter_cmp (prev, iter, cmp_data) == 0) + return; + + if (!is_end (next) && iter_cmp (next, iter, cmp_data) == 0) + return; + + seq = get_sequence (iter); + + seq->access_prohibited = TRUE; + + node_unlink (iter); + node_insert_sorted (seq->end_node, iter, seq->end_node, iter_cmp, cmp_data); + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_insert_sorted_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_insert_sorted(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequenceNode *new_node; + EggSequence *tmp_seq; + + check_seq_access (seq); + + /* Create a new temporary sequence and put the new node into + * that. The reason for this is that the user compare function + * will be called with the new node, and if it dereferences, + * "is_end" will be called on it. But that will crash if the + * node is not actually in a sequence. + * + * node_insert_sorted() makes sure the node is unlinked before + * is is inserted. + * + * The reason we need the "iter" versions at all is that that + * is the only kind of compare functions GtkTreeView can use. + */ + tmp_seq = egg_sequence_new (NULL); + new_node = egg_sequence_append (tmp_seq, data); + + node_insert_sorted (seq->end_node, new_node, + seq->end_node, iter_cmp, cmp_data); + + egg_sequence_free (tmp_seq); + + return new_node; +} + +/** + * egg_sequence_search_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_search(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the position in @seq + * where @data would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *node; + EggSequenceNode *dummy; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + seq->access_prohibited = TRUE; + + dummy = node_new (data); + + node = node_find_closest (seq->end_node, dummy, + seq->end_node, cmp_func, cmp_data); + + node_free (dummy, NULL); + + seq->access_prohibited = FALSE; + + return node; +} + +/** + * egg_sequence_iter_get_sequence: + * @iter: a #EggSequenceIter + * + * Returns the #EggSequence that @iter points into. + * + * Return value: The #EggSequence that @iter points into. + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_iter_get_sequence (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return get_sequence (iter); +} + +/** + * egg_sequence_get: + * @iter: a #EggSequenceIter + * + * Returns the data that @iter points to. + * + * Return value: The data that @iter points to + * + * Since: 2.14 + **/ +gpointer +egg_sequence_get (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + g_return_val_if_fail (!is_end (iter), NULL); + + return iter->data; +} + +/** + * egg_sequence_set: + * @iter: a #EggSequenceIter + * @data: new data for the item + * + * Changes the data for the item pointed to by @iter to be @data. If + * the sequence has a data destroy function associated with it, that + * function is called on the existing data that @iter pointed to. + * + * Since: 2.14 + **/ +void +egg_sequence_set (EggSequenceIter *iter, + gpointer data) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + seq = get_sequence (iter); + + /* If @data is identical to iter->data, it is destroyed + * here. This will work right in case of ref-counted objects. Also + * it is similar to what ghashtables do. + * + * For non-refcounted data it's a little less convenient, but + * code relying on self-setting not destroying would be + * pretty dubious anyway ... + */ + + if (seq->data_destroy_notify) + seq->data_destroy_notify (iter->data); + + iter->data = data; +} + +/** + * egg_sequence_get_length: + * @seq: a #EggSequence + * + * Returns the length of @seq + * + * Return value: The length of @seq + * + * Since: 2.14 + **/ +gint +egg_sequence_get_length (EggSequence *seq) +{ + return node_get_length (seq->end_node) - 1; +} + +/** + * egg_sequence_get_end_iter: + * @seq: a #EggSequence + * + * Returns the end iterator for @seg + * + * Return value: The end iterator for @seq + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_end_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + + g_assert (is_end (seq->end_node)); + + return seq->end_node; +} + +/** + * egg_sequence_get_begin_iter: + * @seq: a #EggSequence + * + * Returns the begin iterator for @seq. + * + * Return value: The begin iterator for @seq. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_begin_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + return node_get_first (seq->end_node); +} + +static int +clamp_position (EggSequence *seq, + int pos) +{ + gint len = egg_sequence_get_length (seq); + + if (pos > len || pos < 0) + pos = len; + + return pos; +} + +/* + * if pos > number of items or -1, will return end pointer + */ +/** + * egg_sequence_get_iter_at_pos: + * @seq: a #EggSequence + * @pos: a position in @seq, or -1 for the end. + * + * Returns the iterator as position @pos. If @pos is negative or larger + * than the number of items in @seq, the end iterator is returned. + * + * Return value: The #EggSequenceIter at position @pos + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos) +{ + g_return_val_if_fail (seq != NULL, NULL); + + pos = clamp_position (seq, pos); + + return node_get_by_pos (seq->end_node, pos); +} + +/** + * egg_sequence_move: + * @src: a #EggSequenceIter pointing to the item to move + * @dest: a #EggSequenceIter pointing to the position to which + * the item is moved. + * + * Move the item pointed to by @src to the position indicated by @dest. + * After calling this function @dest will point to the position immediately + * after @src. + * + * Since: 2.14 + **/ +void +egg_sequence_move (EggSequenceIter *src, + EggSequenceIter *dest) +{ + g_return_if_fail (src != NULL); + g_return_if_fail (dest != NULL); + g_return_if_fail (!is_end (src)); + + if (src == dest) + return; + + node_unlink (src); + node_insert_before (dest, src); +} + +/* EggSequenceIter */ + +/** + * egg_sequence_iter_is_end: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the end iterator + * + * Return value: Whether @iter is the end iterator. + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_end (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return is_end (iter); +} + +/** + * egg_sequence_iter_is_begin: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the begin iterator + * + * Return value: Whether @iter is the begin iterator + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_begin (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return (node_get_prev (iter) == iter); +} + +/** + * egg_sequence_iter_get_position: + * @iter: a #EggSequenceIter + * + * Returns the position of @iter + * + * Return value: The position of @iter + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_get_position (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, -1); + + return node_get_pos (iter); +} + +/** + * egg_sequence_iter_next: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the next position after @iter. If + * @iter is the end iterator, the end iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the next position after @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_next (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_next (iter); +} + +/** + * egg_sequence_iter_prev: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the previous position before @iter. If + * @iter is the begin iterator, the begin iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the previous position before + * @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_prev (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_prev (iter); +} + +/** + * egg_sequence_iter_move: + * @iter: a #EggSequenceIter + * @delta: A positive or negative number indicating how many positions away + * from @iter the returned #EggSequenceIter will be. + * + * Returns the #EggSequenceIter which is @delta positions away from @iter. + * If @iter is closer than -@delta positions to the beginning of the sequence, + * the begin iterator is returned. If @iter is closer than @delta positions + * to the end of the queue, the end iterator is returned. + * + * Return value: a #EggSequenceIter which is @delta positions away from @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_move (EggSequenceIter *iter, + gint delta) +{ + gint new_pos; + + g_return_val_if_fail (iter != NULL, NULL); + + new_pos = node_get_pos (iter) + delta; + + new_pos = clamp_position (get_sequence (iter), new_pos); + + return node_get_by_pos (iter, new_pos); +} + +/** + * egg_sequence_swap: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Swaps the items pointed to by @a and @b + * + * Since: 2.14 + **/ +void +egg_sequence_swap (EggSequenceIter *a, + EggSequenceIter *b) +{ + EggSequenceNode *leftmost, *rightmost, *rightmost_next; + int a_pos, b_pos; + + g_return_if_fail (!egg_sequence_iter_is_end (a)); + g_return_if_fail (!egg_sequence_iter_is_end (b)); + + if (a == b) + return; + + a_pos = egg_sequence_iter_get_position (a); + b_pos = egg_sequence_iter_get_position (b); + + if (a_pos > b_pos) + { + leftmost = b; + rightmost = a; + } + else + { + leftmost = a; + rightmost = b; + } + + rightmost_next = node_get_next (rightmost); + + /* Situation is now like this: + * + * ..., leftmost, ......., rightmost, rightmost_next, ... + * + */ + egg_sequence_move (rightmost, leftmost); + egg_sequence_move (leftmost, rightmost_next); +} + +/* + * Implementation of the node_* methods + */ +static void +node_update_fields (EggSequenceNode *node) +{ + g_assert (node != NULL); + + node->n_nodes = 1; + + if (node->left) + node->n_nodes += node->left->n_nodes; + + if (node->right) + node->n_nodes += node->right->n_nodes; +} + +#define NODE_LEFT_CHILD(n) (((n)->parent) && ((n)->parent->left) == (n)) +#define NODE_RIGHT_CHILD(n) (((n)->parent) && ((n)->parent->right) == (n)) + +static void +node_rotate (EggSequenceNode *node) +{ + EggSequenceNode *tmp, *old; + + g_assert (node->parent); + g_assert (node->parent != node); + + if (NODE_LEFT_CHILD (node)) + { + /* rotate right */ + tmp = node->right; + + node->right = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->left == node->right) + node->parent->left = node; + else + node->parent->right = node; + } + + g_assert (node->right); + + node->right->parent = node; + node->right->left = tmp; + + if (node->right->left) + node->right->left->parent = node->right; + + old = node->right; + } + else + { + /* rotate left */ + tmp = node->left; + + node->left = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->right == node->left) + node->parent->right = node; + else + node->parent->left = node; + } + + g_assert (node->left); + + node->left->parent = node; + node->left->right = tmp; + + if (node->left->right) + node->left->right->parent = node->left; + + old = node->left; + } + + node_update_fields (old); + node_update_fields (node); +} + +static EggSequenceNode * +splay (EggSequenceNode *node) +{ + while (node->parent) + { + if (!node->parent->parent) + { + /* zig */ + node_rotate (node); + } + else if ((NODE_LEFT_CHILD (node) && NODE_LEFT_CHILD (node->parent)) || + (NODE_RIGHT_CHILD (node) && NODE_RIGHT_CHILD (node->parent))) + { + /* zig-zig */ + node_rotate (node->parent); + node_rotate (node); + } + else + { + /* zig-zag */ + node_rotate (node); + node_rotate (node); + } + } + + return node; +} + +static EggSequenceNode * +node_new (gpointer data) +{ + EggSequenceNode *node = g_slice_new0 (EggSequenceNode); + + node->parent = NULL; + node->parent = NULL; + node->left = NULL; + node->right = NULL; + + node->data = data; + node->n_nodes = 1; + + return node; +} + +static EggSequenceNode * +find_min (EggSequenceNode *node) +{ + splay (node); + + while (node->left) + node = node->left; + + return node; +} + +static EggSequenceNode * +find_max (EggSequenceNode *node) +{ + splay (node); + + while (node->right) + node = node->right; + + return node; +} + +static EggSequenceNode * +node_get_first (EggSequenceNode *node) +{ + return splay (find_min (node)); +} + +static EggSequenceNode * +node_get_last (EggSequenceNode *node) +{ + return splay (find_max (node)); +} + +static gint +get_n_nodes (EggSequenceNode *node) +{ + if (node) + return node->n_nodes; + else + return 0; +} + +static EggSequenceNode * +node_get_by_pos (EggSequenceNode *node, + gint pos) +{ + gint i; + + g_assert (node != NULL); + + splay (node); + + while ((i = get_n_nodes (node->left)) != pos) + { + if (i < pos) + { + node = node->right; + pos -= (i + 1); + } + else + { + node = node->left; + g_assert (node->parent != NULL); + } + } + + return splay (node); +} + +static EggSequenceNode * +node_get_prev (EggSequenceNode *node) +{ + splay (node); + + if (node->left) + { + node = node->left; + while (node->right) + node = node->right; + } + + return splay (node); +} + +static EggSequenceNode * +node_get_next (EggSequenceNode *node) +{ + splay (node); + + if (node->right) + { + node = node->right; + while (node->left) + node = node->left; + } + + return splay (node); +} + +static gint +node_get_pos (EggSequenceNode *node) +{ + splay (node); + + return get_n_nodes (node->left); +} + +/* Return closest node _strictly_ bigger than @needle (does always exist because + * there is an end_node) + */ +static EggSequenceNode * +node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *best; + gint c; + + g_assert (haystack); + + haystack = splay (haystack); + + do + { + best = haystack; + + /* cmp_func can't be called with the end node (it may be user-supplied) */ + if (haystack == end) + c = 1; + else + c = cmp_func (haystack, needle, cmp_data); + + /* In the following we don't break even if c == 0. Instaed we go on searching + * along the 'bigger' nodes, so that we find the last one that is equal + * to the needle. + */ + if (c > 0) + haystack = haystack->left; + else + haystack = haystack->right; + } + while (haystack != NULL); + + /* If the best node is smaller or equal to the data, then move one step + * to the right to make sure the best one is strictly bigger than the data + */ + if (best != end && c <= 0) + best = node_get_next (best); + + return best; +} + +static void +node_free (EggSequenceNode *node, + EggSequence *seq) +{ + GQueue *stack = g_queue_new (); + + splay (node); + + g_queue_push_head (stack, node); + + while (!g_queue_is_empty (stack)) + { + node = g_queue_pop_head (stack); + + if (node) + { + g_queue_push_head (stack, node->right); + g_queue_push_head (stack, node->left); + + if (seq && seq->data_destroy_notify && node != seq->end_node) + seq->data_destroy_notify (node->data); + + g_slice_free (EggSequenceNode, node); + } + } + + g_queue_free (stack); +} + +/* Splits into two trees, left and right. + * @node will be part of the right tree + */ + +static void +node_cut (EggSequenceNode *node) +{ + splay (node); + + g_assert (node->parent == NULL); + + if (node->left) + node->left->parent = NULL; + + node->left = NULL; + node_update_fields (node); +} + +static void +node_insert_before (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_min (new)); + g_assert (new->left == NULL); + + if (node->left) + node->left->parent = new; + + new->left = node->left; + new->parent = node; + + node->left = new; + + node_update_fields (new); + node_update_fields (node); +} + +static void +node_insert_after (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_max (new)); + g_assert (new->right == NULL); + g_assert (node->parent == NULL); + + if (node->right) + node->right->parent = new; + + new->right = node->right; + new->parent = node; + + node->right = new; + + node_update_fields (new); + node_update_fields (node); +} + +static gint +node_get_length (EggSequenceNode *node) +{ + g_assert (node != NULL); + + splay (node); + return node->n_nodes; +} + +static void +node_unlink (EggSequenceNode *node) +{ + EggSequenceNode *right, *left; + + splay (node); + + left = node->left; + right = node->right; + + node->parent = node->left = node->right = NULL; + node_update_fields (node); + + if (right) + { + right->parent = NULL; + + right = node_get_first (right); + g_assert (right->left == NULL); + + right->left = left; + if (left) + { + left->parent = right; + node_update_fields (right); + } + } + else if (left) + { + left->parent = NULL; + } +} + +static void +node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *closest; + + closest = node_find_closest (node, new, end, cmp_func, cmp_data); + + node_unlink (new); + + node_insert_before (closest, new); +} + +static gint +node_calc_height (EggSequenceNode *node) +{ + gint left_height; + gint right_height; + + if (node) + { + left_height = 0; + right_height = 0; + + if (node->left) + left_height = node_calc_height (node->left); + + if (node->right) + right_height = node_calc_height (node->right); + + return MAX (left_height, right_height) + 1; + } + + return 0; +} + +/* Self test functions */ + +static void +check_node (EggSequenceNode *node) +{ + if (node) + { + g_assert (node->parent != node); + g_assert (node->n_nodes == + 1 + get_n_nodes (node->left) + get_n_nodes (node->right)); + check_node (node->left); + check_node (node->right); + } +} + +void +egg_sequence_self_test (EggSequence *seq) +{ + EggSequenceNode *node = splay (seq->end_node); + + check_node (node); +} diff --git a/attic/fluttr/src/eggsequence.h b/attic/fluttr/src/eggsequence.h new file mode 100644 index 0000000..107db47 --- /dev/null +++ b/attic/fluttr/src/eggsequence.h @@ -0,0 +1,120 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#ifndef __GSEQUENCE_H__ +#define __GSEQUENCE_H__ + +typedef struct _EggSequence EggSequence; +typedef struct _EggSequenceNode EggSequenceIter; + + + +typedef gint (* EggSequenceIterCompareFunc) (EggSequenceIter *a, + EggSequenceIter *b, + gpointer data); + +/* EggSequence */ +EggSequence * egg_sequence_new (GDestroyNotify data_destroy); +void egg_sequence_free (EggSequence *seq); +gint egg_sequence_get_length (EggSequence *seq); +void egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data); +void egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer data); +void egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* Getting iters */ +EggSequenceIter *egg_sequence_get_begin_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_end_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos); +EggSequenceIter *egg_sequence_append (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_prepend (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_insert_before (EggSequenceIter * iter, + gpointer data); +void egg_sequence_move (EggSequenceIter * src, + EggSequenceIter * dest); +void egg_sequence_swap (EggSequenceIter * a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +void egg_sequence_sort_changed (EggSequenceIter * iter, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_changed_iter (EggSequenceIter * iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); + +void egg_sequence_remove (EggSequenceIter * iter); +void egg_sequence_remove_range (EggSequenceIter * begin, + EggSequenceIter * end); +void egg_sequence_move_range (EggSequenceIter * iter, + EggSequenceIter * begin, + EggSequenceIter * end); +EggSequenceIter *egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* dereferencing */ +gpointer egg_sequence_get (EggSequenceIter * iter); +void egg_sequence_set (EggSequenceIter * iter, + gpointer data); + + +/* operations on EggSequenceIter * */ +gboolean egg_sequence_iter_is_begin (EggSequenceIter * iter); +gboolean egg_sequence_iter_is_end (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_next (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_prev (EggSequenceIter * iter); +gint egg_sequence_iter_get_position (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_move (EggSequenceIter * iter, + gint leap); +EggSequence * egg_sequence_iter_get_sequence (EggSequenceIter * iter); + + +/* search */ +gint egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_range_get_midpoint (EggSequenceIter * begin, + EggSequenceIter * end); + +#endif /* __GSEQUENCE_H__ */ diff --git a/attic/fluttr/src/fluttr-auth.c b/attic/fluttr/src/fluttr-auth.c new file mode 100644 index 0000000..9507012 --- /dev/null +++ b/attic/fluttr/src/fluttr-auth.c @@ -0,0 +1,433 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "fluttr-auth.h" + +#include +#include + +G_DEFINE_TYPE (FluttrAuth, fluttr_auth, CLUTTER_TYPE_GROUP); + +#define FLUTTR_AUTH_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_AUTH, \ + FluttrAuthPrivate)) + +#define FONT "DejaVu Sans Book" + + +struct _FluttrAuthPrivate +{ + gchar *mini_token; + gchar *username; + gchar *fullname; + gchar *token; + gchar *usernsid; + + NFlickWorker *worker; + + GdkPixbuf *logo; + ClutterActor *messagebox; + ClutterActor *throbber; + ClutterActor *text; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; +}; + +enum +{ + PROP_0, + PROP_MINI_TOKEN, + PROP_USERNAME, + PROP_FULLNAME, + PROP_TOKEN, + PROP_USERNSID +}; + +enum +{ + SUCCESSFUL, + ERROR, + LAST_SIGNAL +}; + +static guint _auth_signals[LAST_SIGNAL] = { 0 }; + +static gboolean +on_thread_abort_idle (FluttrAuth *auth) +{ + g_return_val_if_fail (FLUTTR_IS_AUTH (auth), FALSE); + + g_signal_emit (auth, _auth_signals[ERROR], 0, "Aborted"); + + return FALSE; +} + +static gboolean +on_thread_ok_idle (FluttrAuth *auth) +{ + FluttrAuthPrivate *priv; + + g_return_val_if_fail (FLUTTR_IS_AUTH (auth), FALSE); + priv = FLUTTR_AUTH_GET_PRIVATE(auth); + + g_object_get (G_OBJECT (priv->worker), + "username", &priv->username, + "fullname", &priv->fullname, + "token", &priv->token, + "usernsid", &priv->usernsid, + NULL); + + g_signal_emit (auth, _auth_signals[SUCCESSFUL], 0, ""); + + return FALSE; +} + +static gboolean +on_thread_error_idle (FluttrAuth *auth) +{ + FluttrAuthPrivate *priv; + gchar *error = NULL; + + g_return_val_if_fail (FLUTTR_IS_AUTH (auth), FALSE); + priv = FLUTTR_AUTH_GET_PRIVATE(auth); + + /* Get the actual error */ + g_object_get (G_OBJECT (priv->worker), "error", &error, NULL); + if (error == NULL) { + error = g_strdup_printf (gettext ("Internal error. ")); + g_warning ("No error set on worker!"); + } + g_signal_emit (auth, _auth_signals[ERROR], 0, error); + + g_free (error); + + return FALSE; +} + +static gboolean +on_thread_msg_change_idle (FluttrAuth *auth) +{ + FluttrAuthPrivate *priv; + gchar *msg = NULL; + + g_return_val_if_fail (FLUTTR_IS_AUTH (auth), FALSE); + priv = FLUTTR_AUTH_GET_PRIVATE(auth); + + /* Get the new message */ + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + g_print ("%s", msg); + } + + g_free (msg); + + return FALSE; +} + + +/* This function does th emain work of creating and configuring the worker + thread. the majority of this code is taken from + NFlick the n800 Flickr photo browser by MDK (see: README) */ +void +fluttr_auth_go (FluttrAuth *auth) +{ + FluttrAuthPrivate *priv; + NFlickWorker *worker; + NFlickWorkerStatus status; + + g_return_if_fail (FLUTTR_IS_AUTH (auth)); + priv = FLUTTR_AUTH_GET_PRIVATE(auth); + + /* Create the worker */ + worker = (NFlickWorker*)nflick_auth_worker_new (priv->mini_token); + + /* Check if the worker is in the right state */ + g_object_get (G_OBJECT (worker), "status", &status, NULL); + + if (status != NFLICK_WORKER_STATUS_IDLE) { + g_warning ("Bad worker status"); + return; + } + + g_object_ref (worker); + priv->worker = worker; + + /* Get the initial message */ + gchar *msg = NULL; + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + /* FIXME Escape markup */ + g_print ("%s", msg); + } + + /* Set the callback functions */ + nflick_worker_set_custom_data (worker, auth); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc) on_thread_abort_idle); + + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc) on_thread_error_idle); + + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc) on_thread_ok_idle); + + nflick_worker_set_msg_change_idle (worker, + (NFlickWorkerIdleFunc) on_thread_msg_change_idle); + + nflick_worker_start (priv->worker); + + /* Free */ + g_free (msg); +} + + +/* Slide in or out the notification popp, depending on priv->pop_visible */ +static void +fluttr_auth_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + return; +} + +/* GObject Stuff */ + +static void +fluttr_auth_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrAuthPrivate *priv; + + g_return_if_fail (FLUTTR_IS_AUTH (object)); + priv = FLUTTR_AUTH_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_MINI_TOKEN: + if (priv->mini_token != NULL) + g_free (priv->mini_token); + priv->mini_token =g_strdup (g_value_get_string (value)); + break; + case PROP_USERNAME: + if (priv->username != NULL) + g_free (priv->username); + priv->username =g_strdup (g_value_get_string (value)); + break; + + case PROP_FULLNAME: + if (priv->fullname != NULL) + g_free (priv->fullname); + priv->fullname =g_strdup (g_value_get_string (value)); + break; + + case PROP_TOKEN: + if (priv->token != NULL) + g_free (priv->token); + priv->token =g_strdup (g_value_get_string (value)); + break; + + case PROP_USERNSID: + if (priv->usernsid != NULL) + g_free (priv->usernsid); + priv->usernsid =g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_auth_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrAuthPrivate *priv; + + g_return_if_fail (FLUTTR_IS_AUTH (object)); + priv = FLUTTR_AUTH_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_MINI_TOKEN: + g_value_set_string (value, priv->mini_token); + break; + case PROP_USERNAME: + g_value_set_string (value, priv->username); + break; + + case PROP_FULLNAME: + g_value_set_string (value, priv->fullname); + break; + + case PROP_TOKEN: + g_value_set_string (value, priv->token); + break; + + case PROP_USERNSID: + g_value_set_string (value, priv->usernsid); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_auth_paint (ClutterActor *actor) +{ + FluttrAuth *auth; + FluttrAuthPrivate *priv; + + auth = FLUTTR_AUTH(actor); + + priv = FLUTTR_AUTH_GET_PRIVATE(auth); + + glPushMatrix(); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + if (child) { + clutter_actor_paint (child); + } + } + + glPopMatrix(); +} + +static void +fluttr_auth_dispose (GObject *object) +{ + FluttrAuth *self = FLUTTR_AUTH(object); + FluttrAuthPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_auth_parent_class)->dispose (object); +} + +static void +fluttr_auth_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_auth_parent_class)->finalize (object); +} + +static void +fluttr_auth_class_init (FluttrAuthClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_auth_parent_class); + + actor_class->paint = fluttr_auth_paint; + + gobject_class->finalize = fluttr_auth_finalize; + gobject_class->dispose = fluttr_auth_dispose; + gobject_class->get_property = fluttr_auth_get_property; + gobject_class->set_property = fluttr_auth_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrAuthPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_MINI_TOKEN, + g_param_spec_string ("mini-token", + "Mini Token", + "The Flickr mini-token", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_USERNAME, + g_param_spec_string ("username", + "Username", + "The Flickr username", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_FULLNAME, + g_param_spec_string ("fullname", + "Fullname", + "The users full name", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_TOKEN, + g_param_spec_string ("token", + "Token", + "The Flickr token", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_USERNSID, + g_param_spec_string ("usernsid", + "Usernsid", + "The Flickr usernsid", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + /* Class signals */ + _auth_signals[SUCCESSFUL] = + g_signal_new ("successful", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrAuthClass, successful), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + + _auth_signals[ERROR] = + g_signal_new ("error", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrAuthClass, error), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + +} + +static void +fluttr_auth_init (FluttrAuth *self) +{ + FluttrAuthPrivate *priv; + priv = FLUTTR_AUTH_GET_PRIVATE (self); + + priv->mini_token = NULL; +} + +ClutterActor* +fluttr_auth_new (const char *mini_token) +{ + ClutterGroup *auth; + + auth = g_object_new (FLUTTR_TYPE_AUTH, + "mini-token", mini_token, + NULL); + if (0) fluttr_auth_alpha_func (NULL, 0, NULL); + return CLUTTER_ACTOR (auth); +} + diff --git a/attic/fluttr/src/fluttr-auth.h b/attic/fluttr/src/fluttr-auth.h new file mode 100644 index 0000000..f46a267 --- /dev/null +++ b/attic/fluttr/src/fluttr-auth.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#ifndef _HAVE_FLUTTR_AUTH_H +#define _HAVE_FLUTTR_AUTH_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_AUTH fluttr_auth_get_type() + +#define FLUTTR_AUTH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_AUTH, \ + FluttrAuth)) + +#define FLUTTR_AUTH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_AUTH, \ + FluttrAuthClass)) + +#define FLUTTR_IS_AUTH(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_AUTH)) + +#define FLUTTR_IS_AUTH_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_AUTH)) + +#define FLUTTR_AUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_AUTH, \ + FluttrAuthClass)) + +typedef struct _FluttrAuth FluttrAuth; +typedef struct _FluttrAuthClass FluttrAuthClass; +typedef struct _FluttrAuthPrivate FluttrAuthPrivate; + +struct _FluttrAuth +{ + ClutterGroup parent; + + /* private */ + FluttrAuthPrivate *priv; +}; + +struct _FluttrAuthClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*successful) (FluttrAuth *auth, gchar *null); + void (*error) (FluttrAuth *auth, gchar *msg); + void (*_fluttr_auth_3) (void); + void (*_fluttr_auth_4) (void); +}; + +GType fluttr_auth_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_auth_new (const char *mini_token); + +void +fluttr_auth_go (FluttrAuth *auth); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-behave.c b/attic/fluttr/src/fluttr-behave.c new file mode 100644 index 0000000..c676f70 --- /dev/null +++ b/attic/fluttr/src/fluttr-behave.c @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +/* This is a utility ClutterBehaviour-derived class, in which you can set the + alphanotify function. It is useful for situations where you do not need the + full capabilities of the ClutterBehvaiour class, you just want a function to + be called for each iteration along the timeline +*/ + +#include "fluttr-behave.h" + +#include "math.h" + +G_DEFINE_TYPE (FluttrBehave, fluttr_behave, CLUTTER_TYPE_BEHAVIOUR); + +#define FLUTTR_BEHAVE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_BEHAVE, \ + FluttrBehavePrivate)) + +struct _FluttrBehavePrivate +{ + FluttrBehaveAlphaFunc func; + gpointer data; +}; + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy) +{ + ClutterTimeline *timeline; + gint current_frame_num, n_frames; + gdouble x, sine; + + timeline = clutter_alpha_get_timeline (alpha); + + current_frame_num = clutter_timeline_get_current_frame (timeline); + n_frames = clutter_timeline_get_n_frames (timeline); + + x = (gdouble) (current_frame_num * 0.5f * M_PI) / n_frames ; + /* sine = (sin (x - (M_PI / 0.5f)) + 1.0f) * 0.5f; */ + + sine = (sin (x - (M_PI / 0.5f))) ; + + return (guint32)(sine * (gdouble) CLUTTER_ALPHA_MAX_ALPHA); +} + +guint32 +alpha_linear_inc_func (ClutterAlpha *alpha, + gpointer dummy) +{ + ClutterTimeline *timeline; + gint current_frame_num, n_frames; + gdouble x; + + timeline = clutter_alpha_get_timeline (alpha); + + current_frame_num = clutter_timeline_get_current_frame (timeline); + n_frames = clutter_timeline_get_n_frames (timeline); + + x = (gdouble) (current_frame_num) / n_frames ; + /* sine = (sin (x - (M_PI / 0.5f)) + 1.0f) * 0.5f; */ + + return (guint32)(x * (gdouble) CLUTTER_ALPHA_MAX_ALPHA); +} + +static void +fluttr_behave_alpha_notify (ClutterBehaviour *behave, guint32 alpha_value) +{ + FluttrBehave *fluttr_behave = FLUTTR_BEHAVE(behave); + FluttrBehavePrivate *priv; + + priv = FLUTTR_BEHAVE_GET_PRIVATE (fluttr_behave); + + if (priv->func != NULL) { + priv->func (behave, alpha_value, priv->data); + } +} + +static void +fluttr_behave_class_init (FluttrBehaveClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterBehaviourClass *behave_class = CLUTTER_BEHAVIOUR_CLASS (klass); + + behave_class->alpha_notify = fluttr_behave_alpha_notify; + + g_type_class_add_private (gobject_class, sizeof (FluttrBehavePrivate)); +} + +static void +fluttr_behave_init (FluttrBehave *self) +{ + FluttrBehavePrivate *priv; + + priv = FLUTTR_BEHAVE_GET_PRIVATE (self); + + priv->func = NULL; + priv->data = NULL; +} + +ClutterBehaviour* +fluttr_behave_new (ClutterAlpha *alpha, + FluttrBehaveAlphaFunc func, + gpointer data) +{ + FluttrBehave *behave; + FluttrBehavePrivate *priv; + + behave = g_object_new (FLUTTR_TYPE_BEHAVE, + "alpha", alpha, + NULL); + + priv = FLUTTR_BEHAVE_GET_PRIVATE (behave); + + priv->func = func; + priv->data = data; + + return CLUTTER_BEHAVIOUR(behave); +} diff --git a/attic/fluttr/src/fluttr-behave.h b/attic/fluttr/src/fluttr-behave.h new file mode 100644 index 0000000..c4b7629 --- /dev/null +++ b/attic/fluttr/src/fluttr-behave.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +/* This is a utility ClutterBehaviour-derived class, in which you can set the + alphanotify function. It is useful for situations where you do not need the + full capabilities of the ClutterBehvaiour class, you just want a function to + be called for each iteration along the timeline +*/ + +#ifndef _FLUTTR_BEHAVE_H_ +#define _FLUTTR_BEHAVE_H_ + +#include +#include + +#define FLUTTR_TYPE_BEHAVE (fluttr_behave_get_type ()) + +#define FLUTTR_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),\ + FLUTTR_TYPE_BEHAVE, \ + FluttrBehave)) + +#define FLUTTR_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_BEHAVE, \ + FluttrBehaveClass)) + +#define CLUTTER_IS_BEHAVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj),\ + FLUTTR_TYPE_BEHAVE)) + +#define CLUTTER_IS_BEHAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),\ + FLUTTR_TYPE_BEHAVE)) + +#define FLUTTR_BEHAVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_BEHAVE, \ + FluttrBehaveClass)) + +typedef struct _FluttrBehave FluttrBehave; +typedef struct _FluttrBehaveClass FluttrBehaveClass; +typedef struct _FluttrBehavePrivate FluttrBehavePrivate; + +struct _FluttrBehave +{ + ClutterBehaviour parent; +}; + +struct _FluttrBehaveClass +{ + ClutterBehaviourClass parent_class; +}; + +typedef void (*FluttrBehaveAlphaFunc) (ClutterBehaviour *behave, + guint32 alpha_value, + gpointer data); + +GType fluttr_behave_get_type (void) G_GNUC_CONST; + +ClutterBehaviour* +fluttr_behave_new (ClutterAlpha *alpha, + FluttrBehaveAlphaFunc func, + gpointer data); + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy); + +guint32 +alpha_linear_inc_func (ClutterAlpha *alpha, + gpointer dummy); + +#endif /* _FLUTTR_BEHAVE_H_ */ + diff --git a/attic/fluttr/src/fluttr-library-row.c b/attic/fluttr/src/fluttr-library-row.c new file mode 100644 index 0000000..315d2d3 --- /dev/null +++ b/attic/fluttr/src/fluttr-library-row.c @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "fluttr-library-row.h" + +G_DEFINE_TYPE (FluttrLibraryRow, fluttr_library_row, G_TYPE_OBJECT); + +#define FLUTTR_LIBRARY_ROW_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), FLUTTR_TYPE_LIBRARY_ROW, \ + FluttrLibraryRowPrivate)) + +#define FONT "DejaVu Sans Book" + + +struct _FluttrLibraryRowPrivate +{ + gchar *id; + gchar *name; + NFlickPhotoSet *set; + GdkPixbuf *pixbuf; + + ClutterActor *photo; +}; + +enum +{ + PROP_0, + PROP_ID, + PROP_NAME, + PROP_PHOTO, + PROP_SET, + PROP_PIXBUF +}; + +/* GObject Stuff */ + +static void +fluttr_library_row_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrLibraryRowPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIBRARY_ROW (object)); + priv = FLUTTR_LIBRARY_ROW_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + if (priv->id != NULL) + g_free (priv->id); + priv->id = g_strdup (g_value_get_string (value)); + break; + case PROP_NAME: + if (priv->name != NULL) + g_free (priv->name); + priv->name =g_strdup (g_value_get_string (value)); + break; + + case PROP_PHOTO: + priv->photo = g_value_get_object (value); + break; + + case PROP_SET: + priv->set = g_value_get_object (value); + break; + + case PROP_PIXBUF: + if (priv->pixbuf) + g_object_unref (priv->pixbuf); + priv->pixbuf = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_library_row_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrLibraryRowPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIBRARY_ROW (object)); + priv = FLUTTR_LIBRARY_ROW_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + g_value_set_string (value, priv->id); + break; + + case PROP_NAME: + g_value_set_string (value, priv->name); + break; + + case PROP_PHOTO: + g_value_set_object (value, G_OBJECT (priv->photo)); + break; + + case PROP_SET: + g_value_set_object (value, G_OBJECT (priv->set)); + break; + + case PROP_PIXBUF: + g_value_set_object (value, G_OBJECT (priv->pixbuf)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_library_row_dispose (GObject *object) +{ + FluttrLibraryRow *self = FLUTTR_LIBRARY_ROW(object); + FluttrLibraryRowPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_library_row_parent_class)->dispose (object); +} + +static void +fluttr_library_row_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_library_row_parent_class)->finalize (object); +} + +static void +fluttr_library_row_class_init (FluttrLibraryRowClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = fluttr_library_row_finalize; + gobject_class->dispose = fluttr_library_row_dispose; + gobject_class->get_property = fluttr_library_row_get_property; + gobject_class->set_property = fluttr_library_row_set_property; + + g_type_class_add_private (gobject_class, + sizeof (FluttrLibraryRowPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_ID, + g_param_spec_string ("id", + "ID", + "The Flickr photo id", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "The Flickr photo name", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_PHOTO, + g_param_spec_object ("photo", + "Photo", + "The FluttrPhoto actor", + CLUTTER_TYPE_ACTOR, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_SET, + g_param_spec_object ("set", + "Set", + "The NFlick photo set", + NFLICK_TYPE_PHOTO_SET, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "Pixbuf", + "The GdkPixbuf representing this photo", + GDK_TYPE_PIXBUF, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); +} + +static void +fluttr_library_row_init (FluttrLibraryRow *self) +{ + FluttrLibraryRowPrivate *priv; + priv = FLUTTR_LIBRARY_ROW_GET_PRIVATE (self); + + priv->set = NULL; + priv->pixbuf = NULL; +} + +FluttrLibraryRow* +fluttr_library_row_new (gchar *id, gchar *name, NFlickPhotoSet *set) +{ + GObject *row; + + row = g_object_new (FLUTTR_TYPE_LIBRARY_ROW, + "id", id, + "name", name, + "set", set, + NULL); + + return FLUTTR_LIBRARY_ROW(row); +} + diff --git a/attic/fluttr/src/fluttr-library-row.h b/attic/fluttr/src/fluttr-library-row.h new file mode 100644 index 0000000..e5012db --- /dev/null +++ b/attic/fluttr/src/fluttr-library-row.h @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +#include +#include +#include + +#include + +#ifndef _HAVE_FLUTTR_LIBRARY_ROW_H +#define _HAVE_FLUTTR_LIBRARY_ROW_H + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_LIBRARY_ROW fluttr_library_row_get_type() + +#define FLUTTR_LIBRARY_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_LIBRARY_ROW, \ + FluttrLibraryRow)) + +#define FLUTTR_LIBRARY_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_LIBRARY_ROW, \ + FluttrLibraryRowClass)) + +#define FLUTTR_IS_LIBRARY_ROW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_LIBRARY_ROW)) + +#define FLUTTR_IS_LIBRARY_ROW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_LIBRARY_ROW)) + +#define FLUTTR_LIBRARY_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_LIBRARY_ROW, \ + FluttrLibraryRowClass)) + +typedef struct _FluttrLibraryRow FluttrLibraryRow; +typedef struct _FluttrLibraryRowClass FluttrLibraryRowClass; +typedef struct _FluttrLibraryRowPrivate FluttrLibraryRowPrivate; + +struct _FluttrLibraryRow +{ + GObject parent; + + /* private */ + FluttrLibraryRowPrivate *priv; +}; + +struct _FluttrLibraryRowClass +{ + /*< private >*/ + GObjectClass parent_class; +}; + +GType +fluttr_library_row_get_type (void); + +FluttrLibraryRow* +fluttr_library_row_new (gchar *id, gchar *name, NFlickPhotoSet *set); + +G_END_DECLS + +#endif + diff --git a/attic/fluttr/src/fluttr-library.c b/attic/fluttr/src/fluttr-library.c new file mode 100644 index 0000000..394f6ea --- /dev/null +++ b/attic/fluttr/src/fluttr-library.c @@ -0,0 +1,294 @@ +/* + * Copyright (C) 2007 Matthew Allum + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Matthew Allum + */ + +#include "fluttr-library.h" +#include + +G_DEFINE_TYPE (FluttrLibrary, fluttr_library, G_TYPE_OBJECT); + +#define LIBRARY_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), FLUTTR_TYPE_LIBRARY, FluttrLibraryPrivate)) + +typedef struct _FluttrLibraryPrivate FluttrLibraryPrivate; + +enum +{ + REORDERED, + LIBRARY_ROW_CHANGED, + LIBRARY_ROW_ADDED, + FILTER, + LAST_SIGNAL +}; + +static guint _library_signals[LAST_SIGNAL] = { 0 }; + +struct _FluttrLibraryPrivate +{ + FluttrFilterRowFunc filter; + gpointer filter_data; + FluttrCompareRowFunc sort; + gpointer sort_data; + EggSequence *library_rows; +}; + +static void +fluttr_library_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +fluttr_library_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, + pspec); + } +} + +static void +fluttr_library_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (fluttr_library_parent_class)->dispose) + G_OBJECT_CLASS (fluttr_library_parent_class)->dispose (object); +} + +static void +fluttr_library_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_library_parent_class)->finalize (object); +} + +static void +fluttr_library_class_init (FluttrLibraryClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (FluttrLibraryPrivate)); + + object_class->get_property = fluttr_library_get_property; + object_class->set_property = fluttr_library_set_property; + object_class->dispose = fluttr_library_dispose; + object_class->finalize = fluttr_library_finalize; + + _library_signals[REORDERED] = + g_signal_new ("library_rows-reordered", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrLibraryClass, reordered), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _library_signals[FILTER] = + g_signal_new ("filter-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrLibraryClass, filter_change), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _library_signals[LIBRARY_ROW_CHANGED] = + g_signal_new ("library_row-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrLibraryClass, library_row_change), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, FLUTTR_TYPE_LIBRARY_ROW); + + _library_signals[LIBRARY_ROW_ADDED] = + g_signal_new ("library_row-added", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrLibraryClass, library_row_added), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, FLUTTR_TYPE_LIBRARY_ROW); + +} + +static void +fluttr_library_init (FluttrLibrary *self) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(self); + + priv->library_rows = egg_sequence_new (NULL); +} + +static gboolean +check_filter (FluttrLibrary *library, EggSequenceIter *iter) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + gboolean res; + + if (priv->filter == NULL) + return TRUE; + + res = priv->filter(library, (FluttrLibraryRow*)egg_sequence_get (iter), + priv->filter_data); + return res; +} + +guint +fluttr_library_row_count (FluttrLibrary *library) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + gint n = 0; + + if (priv->filter == NULL) + return egg_sequence_get_length (priv->library_rows); + + iter = egg_sequence_get_begin_iter (priv->library_rows); + + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) + n++; + iter = egg_sequence_iter_next (iter); + } + + return n; +} + +FluttrLibraryRow* +fluttr_library_get_library_row (FluttrLibrary *library, gint index) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + gint n = 0; + + if (priv->filter == NULL) + return (FluttrLibraryRow*)egg_sequence_get + (egg_sequence_get_iter_at_pos (priv->library_rows, index)); + + iter = egg_sequence_get_begin_iter (priv->library_rows); + + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) { + if (n == index) + return (FluttrLibraryRow*)egg_sequence_get (iter); + n++; + } + iter = egg_sequence_iter_next (iter); + } + + return NULL; +} +/* +static void +on_library_row_changed (GObject *obj, GParamSpec *arg1, + gpointer data) +{ + return; + FluttrLibrary *library = FLUTTR_LIBRARY(data); + FluttrLibraryPrivate *priv; + + priv = LIBRARY_PRIVATE(library); + + if (!strcmp(g_param_spec_get_name(arg1), "thumbnail")) + return; + + if (priv->sort) { + egg_sequence_sort (priv->library_rows, + (GCompareDataFunc)priv->sort, priv->sort_data); + g_signal_emit (library, _library_signals[REORDERED], 0); + } + + g_signal_emit (library, _library_signals[LIBRARY_ROW_CHANGED], 0, + FLUTTR_LIBRARY_ROW(obj)); +} +*/ + +void +fluttr_library_append_library_row (FluttrLibrary *library, FluttrLibraryRow *library_row) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + + g_object_ref (library_row); + + if (priv->sort) + iter = egg_sequence_insert_sorted (priv->library_rows, (gpointer)library_row, + (GCompareDataFunc)priv->sort, + priv->sort_data); + else + iter = egg_sequence_append (priv->library_rows, (gpointer)library_row); + + if (check_filter (library, iter)) + g_signal_emit (library, _library_signals[LIBRARY_ROW_ADDED], 0, library_row); +} + + +void +fluttr_library_foreach (FluttrLibrary *library, + FluttrForeachRowFunc func, + gpointer data) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + EggSequenceIter *iter; + + iter = egg_sequence_get_begin_iter (priv->library_rows); + + while (!egg_sequence_iter_is_end (iter)) { + if (check_filter (library, iter)) + if (func (library, + (FluttrLibraryRow*)egg_sequence_get (iter), + data) == FALSE) + return; + + iter = egg_sequence_iter_next (iter); + } +} + +void +fluttr_library_set_sort_func (FluttrLibrary *library, + FluttrCompareRowFunc func, + gpointer userdata) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + + priv->sort = func; + priv->sort_data = userdata; + + if (func) { + egg_sequence_sort (priv->library_rows, (GCompareDataFunc)func, userdata); + g_signal_emit (library, _library_signals[REORDERED], 0); + } +} + +void +fluttr_library_set_filter (FluttrLibrary *library, + FluttrFilterRowFunc filter, + gpointer data) +{ + FluttrLibraryPrivate *priv = LIBRARY_PRIVATE(library); + FluttrFilterRowFunc prev_filter; + + prev_filter = priv->filter; + + priv->filter = filter; + priv->filter_data = data; + + if (prev_filter != priv->filter) + g_signal_emit (library, _library_signals[FILTER], 0); +} + +FluttrLibrary* +fluttr_library_new () +{ + return g_object_new (FLUTTR_TYPE_LIBRARY, NULL); +} + diff --git a/attic/fluttr/src/fluttr-library.h b/attic/fluttr/src/fluttr-library.h new file mode 100644 index 0000000..42c9bef --- /dev/null +++ b/attic/fluttr/src/fluttr-library.h @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2007 Matthew Allum + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Matthew Allum + */ +#ifndef _FLUTTR_LIBRARY +#define _FLUTTR_LIBRARY + +#include +//#include +#include +#include "fluttr-library-row.h" +#include "eggsequence.h" + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_LIBRARY fluttr_library_get_type() + +#define FLUTTR_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_LIBRARY, \ + FluttrLibrary)) + +#define FLUTTR_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_LIBRARY, \ + FluttrLibraryClass)) + +#define FLUTTR_IS_LIBRARY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_LIBRARY)) + +#define FLUTTR_IS_LIBRARY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_LIBRARY)) + +#define FLUTTR_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_LIBRARY, \ + FluttrLibraryClass)) + +typedef struct { + GObject parent; + +} FluttrLibrary; + +typedef struct { + GObjectClass parent_class; + + void (*reordered) (FluttrLibrary *library); + void (*filter_change) (FluttrLibrary *library); + void (*library_row_change) (FluttrLibrary *library, FluttrLibraryRow *library_row); + void (*library_row_added) (FluttrLibrary *library, FluttrLibraryRow *library_row); + +} FluttrLibraryClass; + +typedef gint (*FluttrCompareRowFunc) (FluttrLibraryRow *a, + FluttrLibraryRow *b, + gpointer data); + +typedef gboolean (*FluttrFilterRowFunc) (FluttrLibrary *library, + FluttrLibraryRow *library_row, + gpointer data); + +typedef gboolean (*FluttrForeachRowFunc) (FluttrLibrary *library, + FluttrLibraryRow *library_row, + gpointer data); + +GType fluttr_library_get_type (void); + +FluttrLibrary* +fluttr_library_new (); + +guint +fluttr_library_row_count (FluttrLibrary *library); + +FluttrLibraryRow* +fluttr_library_get_library_row (FluttrLibrary *library, gint index); + +void +fluttr_library_append_library_row (FluttrLibrary *library, FluttrLibraryRow *library_row); + +void +fluttr_library_set_filter (FluttrLibrary *library, + FluttrFilterRowFunc filter, + gpointer data); + +void +fluttr_library_set_sort_func (FluttrLibrary *library, + FluttrCompareRowFunc func, + gpointer userdata); + +void +fluttr_library_foreach (FluttrLibrary *library, + FluttrForeachRowFunc func, + gpointer data); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-list-view.c b/attic/fluttr/src/fluttr-list-view.c new file mode 100644 index 0000000..7e05f83 --- /dev/null +++ b/attic/fluttr/src/fluttr-list-view.c @@ -0,0 +1,526 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include + +#include "fluttr-list-view.h" + +G_DEFINE_TYPE (FluttrListView, fluttr_list_view, CLUTTER_TYPE_GROUP); + +#define FLUTTR_LIST_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_LIST_VIEW, \ + FluttrListViewPrivate)) + +struct _FluttrListViewPrivate +{ + FluttrLibrary *library; + FluttrSet *set; + GList *photos; + + gint active_photo; + ClutterActor *active_actor; + gint active_col; + + gint n_cols; +}; + +enum +{ + PROP_0, + PROP_LIBRARY, + PROP_SET, + PROP_COLS +}; + +static ClutterGroupClass *parent_class = NULL; + +FluttrPhoto* +fluttr_list_view_get_active (FluttrListView *list_view) +{ + FluttrListViewPrivate *priv; + + g_return_val_if_fail (FLUTTR_IS_LIST_VIEW (list_view), NULL); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(list_view); + + return FLUTTR_PHOTO (priv->active_actor); +} + +void +fluttr_list_view_advance (FluttrListView *list_view, gint n) +{ + FluttrListViewPrivate *priv; + gint len; + gint i = 0; + ClutterActor *photo = NULL; + guint width = fluttr_photo_get_default_width (); + guint height = fluttr_photo_get_default_height (); + ClutterActor *stage = clutter_stage_get_default (); + gint stage_height; + gint min = -1 * fluttr_photo_get_default_height (); + gint x1; + gint active_row = 0; + gint offset = height/2; + gint padding = width /6; + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (list_view)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(list_view); + + len = g_list_length (priv->photos); + g_object_get (G_OBJECT (stage), "height", &stage_height, NULL); + stage_height += fluttr_photo_get_default_height (); + + /* Make sure we are within the bounds of the number of albums */ + priv->active_photo+= n; + if (priv->active_photo < 0) { + priv->active_photo = 0; + } else if (priv->active_photo > len-1) { + priv->active_photo = len -1; + } else + ; + /* Find the magic row */ + active_row = 0; + gint row = 0; + gint col = 0; + + for (i = 0; i < len; i++) { + if (i == priv->active_photo) { + active_row = row; + break; + } + col++; + if (col > (priv->n_cols-1)) { + col = 0; + row++; + } + } + + /* Figure out the base x value */ + x1 = ((width) * priv->n_cols ) + (padding*(priv->n_cols-1)); + x1 = (CLUTTER_STAGE_WIDTH ()/2)-(x1/2); + + /* Iterate through actors, calculating their new x positions, and make + sure they are on the right place (left, right or center) */ + col = 0; + row = 0; + gint less = priv->active_photo - (priv->n_cols * 2); + gint more = priv->active_photo + (priv->n_cols * 3); + + offset = -1 * ((height) + padding) * active_row; + offset += (CLUTTER_STAGE_HEIGHT () /2) - (height/2); + + for (i = 0; i < len; i++) { + photo = (ClutterActor*)g_list_nth_data (priv->photos, i); + + gint x = x1 + (col * (width + padding)); + gint y = offset; + if (y > stage_height) + y = stage_height; + else if (y < min) + y = min; + + fluttr_photo_update_position (FLUTTR_PHOTO (photo), x, y); + + col++; + if (col > (priv->n_cols-1)) { + col = 0; + row++; + offset += height + padding; + } + if ((i > less) && (i < more)) { + GdkPixbuf *pixbuf = NULL; + g_object_get (G_OBJECT (photo), + "pixbuf", &pixbuf, NULL); + + if (!pixbuf) { + fluttr_photo_fetch_pixbuf (FLUTTR_PHOTO + (photo)); + } + } + + if (i == priv->active_photo) { + fluttr_photo_set_active (FLUTTR_PHOTO (photo), TRUE); + priv->active_actor = photo; + + } else + fluttr_photo_set_active (FLUTTR_PHOTO (photo), FALSE); + } + if (priv->active_actor) + clutter_actor_raise_top (priv->active_actor); +} + +static gboolean +_peg (ClutterActor *photo) +{ + guint size = fluttr_photo_get_default_size (); + fluttr_photo_update_position (FLUTTR_PHOTO (photo), + clutter_actor_get_x (photo), + CLUTTER_STAGE_HEIGHT () + size); + return FALSE; +} + +/* We make all the 'viewable' photos fall down, leaving just the main one */ +void +fluttr_list_view_activate (FluttrListView *list_view) +{ + FluttrListViewPrivate *priv; + gint len; + gint i = 0; + ClutterActor *photo = NULL; + gint active_row = 0; + guint size = fluttr_photo_get_default_size (); + gint x_center = (CLUTTER_STAGE_WIDTH () /2) - (size /2); + gint y_center = (CLUTTER_STAGE_HEIGHT ()/2) - (size /2); + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (list_view)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(list_view); + + len = g_list_length (priv->photos); + + /* Find the active row */ + active_row = 0; + gint row = 0; + gint col = 0; + + for (i = 0; i < len; i++) { + if (i == priv->active_photo) { + active_row = row; + break; + } + col++; + if (col > (priv->n_cols-1)) { + col = 0; + row++; + } + } + + /* Iterate through actors, calculating their new x positions, and make + sure they are on the right place (left, right or center) */ + col = 0; + row = 0; + + for (i = 0; i < len; i++) { + photo = (ClutterActor*)g_list_nth_data (priv->photos, i); + + if (i == priv->active_photo) { + fluttr_photo_update_position (FLUTTR_PHOTO (photo), + x_center, y_center); + + } else { + if ((row >= active_row-2) && (row <= active_row +3)) { + + + fluttr_photo_update_position + (FLUTTR_PHOTO (photo), + clutter_actor_get_x (photo), + clutter_actor_get_y (photo) - 20); + + /*fluttr_photo_update_position + (FLUTTR_PHOTO (photo), + clutter_actor_get_x (photo), + CLUTTER_STAGE_HEIGHT () + size);*/ + g_timeout_add (300, (GSourceFunc)_peg, photo); + + } + } + col++; + if (col > (priv->n_cols-1)) { + col = 0; + row++; + } + } +} + +void +fluttr_list_view_advance_row (FluttrListView *view, gint n) +{ + FluttrListViewPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (view)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(view); + + fluttr_list_view_advance (view, (priv->n_cols * n)); +} + +void +fluttr_list_view_advance_col (FluttrListView *list_view, gint n) +{ + fluttr_list_view_advance (list_view, n); +} + +/* Empty the group*/ +static void +fluttr_list_view_empty (FluttrListView *view) +{ + FluttrListViewPrivate *priv; + gint i; + ClutterActor* child; + gint len; + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (view)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(view); + + len = g_list_length (priv->photos); + + for (i = 0; i < len; i++) { + child = (ClutterActor*)g_list_nth_data (priv->photos, i); + clutter_group_remove (CLUTTER_GROUP (view), child); + + } + g_list_free (priv->photos); +} + +/* Populate the group */ +static void +fluttr_list_view_populate (FluttrListView *view) +{ + FluttrListViewPrivate *priv; + GList *photos = NULL; + GList *p; + gint x =(CLUTTER_STAGE_WIDTH ()/2)-(fluttr_photo_get_default_width()/2); + gint y =(CLUTTER_STAGE_HEIGHT()/2) + -(fluttr_photo_get_default_height()/2); + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (view)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(view); + + photos = fluttr_set_get_photos (FLUTTR_SET (priv->set)); + priv->photos = NULL; + + /* Go through each photodata in the list, creating a FluttrPhoto, and + adding it to the group */ + + for (p = photos; p != NULL; p = p->next) { + FluttrPhotoData *data = (FluttrPhotoData*)p->data; + ClutterActor *photo = fluttr_photo_new (); + clutter_actor_set_size (photo, + fluttr_photo_get_default_width (), + fluttr_photo_get_default_height ()); + clutter_actor_set_position (photo, x, y); + clutter_group_add (CLUTTER_GROUP (view), photo); + + g_object_set (G_OBJECT (photo), + "photoid", data->id, + "name", data->name, + NULL); + + /* Now lets set the pixbuf if we have it */ + if (data->pixbuf) + g_object_set (G_OBJECT (photo), "pixbuf", data->pixbuf, + NULL); + + clutter_actor_show_all (photo); + priv->photos = g_list_append (priv->photos, photo); + } + priv->active_photo = 0; + priv->active_actor = NULL; +} + +/* GObject Stuff */ + +static void +fluttr_list_view_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrListViewPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (object)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_LIBRARY: + if (priv->library != NULL) + g_object_unref (priv->library); + priv->library =g_value_get_object (value); + if (priv->library) + g_object_ref (priv->library); + /* Connect to the library signals */ + break; + + case PROP_SET: + if (priv->set) + g_object_unref (priv->set); + priv->set = g_value_get_object (value); + if (priv->set != NULL) { + g_object_ref (priv->set); + /* Empty the group*/ + fluttr_list_view_empty ( + FLUTTR_LIST_VIEW (object)); + + /* Populate the group */ + fluttr_list_view_populate ( + FLUTTR_LIST_VIEW (object)); + } + break; + + case PROP_COLS: + priv->n_cols = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_list_view_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrListViewPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST_VIEW (object)); + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_LIBRARY: + g_value_set_object (value, priv->library); + break; + + case PROP_SET: + g_value_set_object (value, priv->library); + break; + + case PROP_COLS: + g_value_set_int (value, priv->n_cols); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_list_view_paint (ClutterActor *actor) +{ + FluttrListView *list; + FluttrListViewPrivate *priv; + gint height; + gint buf = -1 * fluttr_photo_get_default_width (); + + list = FLUTTR_LIST_VIEW(actor); + + priv = FLUTTR_LIST_VIEW_GET_PRIVATE(list); + + glPushMatrix(); + + g_object_get (G_OBJECT (clutter_stage_get_default ()), "height", + &height, NULL); + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + + gint y; + g_object_get (G_OBJECT (child), "y", &y, NULL); + + if (y < buf || y > height) { + fluttr_photo_set_visible (FLUTTR_PHOTO (child), FALSE); + continue; + } else { + fluttr_photo_set_visible (FLUTTR_PHOTO (child), TRUE); + } + if (child) { + clutter_actor_paint (child); + } + } + glPopMatrix(); +} + +static void +fluttr_list_view_dispose (GObject *object) +{ + FluttrListView *self = FLUTTR_LIST_VIEW(object); + FluttrListViewPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (parent_class)->dispose (object); +} + +static void +fluttr_list_view_finalize (GObject *object) +{ + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +fluttr_list_view_class_init (FluttrListViewClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + parent_class = CLUTTER_GROUP_CLASS (klass); + + actor_class->paint = fluttr_list_view_paint; + + gobject_class->finalize = fluttr_list_view_finalize; + gobject_class->dispose = fluttr_list_view_dispose; + gobject_class->get_property = fluttr_list_view_get_property; + gobject_class->set_property = fluttr_list_view_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrListViewPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_LIBRARY, + g_param_spec_object ("library", + "Library", + "The underlying Fluttr Library", + FLUTTR_TYPE_LIBRARY, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_SET, + g_param_spec_object ("set", + "Set", + "The underlying Fluttr Photo set", + FLUTTR_TYPE_SET, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_COLS, + g_param_spec_int ("cols", + "Columns", + "The number of photo columns", + 1, 10, 3, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + +} + +static void +fluttr_list_view_init (FluttrListView *self) +{ + FluttrListViewPrivate *priv; + + priv = FLUTTR_LIST_VIEW_GET_PRIVATE (self); + + priv->active_photo = 0; + priv->active_col = 0; + priv->set = NULL; + +} + +ClutterActor* +fluttr_list_view_new (void) +{ + ClutterGroup *list_view; + + list_view = g_object_new (FLUTTR_TYPE_LIST_VIEW, + NULL); + + return CLUTTER_ACTOR (list_view); +} + diff --git a/attic/fluttr/src/fluttr-list-view.h b/attic/fluttr/src/fluttr-list-view.h new file mode 100644 index 0000000..901e6c3 --- /dev/null +++ b/attic/fluttr/src/fluttr-list-view.h @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#include "fluttr-library.h" +#include "fluttr-photo.h" +#include "fluttr-set.h" + +#include + +#ifndef _HAVE_FLUTTR_LIST_VIEW_H +#define _HAVE_FLUTTR_LIST_VIEW_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_LIST_VIEW fluttr_list_view_get_type() + +#define FLUTTR_LIST_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_LIST_VIEW, \ + FluttrListView)) + +#define FLUTTR_LIST_VIEWCLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_LIST_VIEW, \ + FluttrListViewClass)) + +#define FLUTTR_IS_LIST_VIEW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_LIST_VIEW)) + +#define FLUTTR_IS_LIST_VIEW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_LIST_VIEW)) + +#define FLUTTR_LIST_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_LIST_VIEW, \ + FluttrListViewClass)) + +typedef struct _FluttrListView FluttrListView; +typedef struct _FluttrListViewClass FluttrListViewClass; +typedef struct _FluttrListViewPrivate FluttrListViewPrivate; + +struct _FluttrListView +{ + ClutterGroup parent; + + /* private */ + FluttrListViewPrivate *priv; +}; + +struct _FluttrListViewClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*_fluttr_list_view_1) (void); + void (*_fluttr_list_view_2) (void); + void (*_fluttr_list_view_3) (void); + void (*_fluttr_list_view_4) (void); +}; + +GType fluttr_list_view_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_list_view_new (); + +FluttrPhoto* +fluttr_list_view_get_active (FluttrListView *list_view); + +void +fluttr_list_view_activate (FluttrListView *list_view); + +void +fluttr_list_view_advance (FluttrListView *list_view, gint n); + +void +fluttr_list_view_advance_row (FluttrListView *list_view, gint n); + +void +fluttr_list_view_advance_col (FluttrListView *list_view, gint n); + + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-list.c b/attic/fluttr/src/fluttr-list.c new file mode 100644 index 0000000..0fe38ee --- /dev/null +++ b/attic/fluttr/src/fluttr-list.c @@ -0,0 +1,622 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include + +#include "fluttr-list.h" + +#include "fluttr-spinner.h" +#include "fluttr-behave.h" + +G_DEFINE_TYPE (FluttrList, fluttr_list, CLUTTER_TYPE_GROUP); + +#define FLUTTR_LIST_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_LIST, \ + FluttrListPrivate)) + +#define FONT "DejaVu Sans Book" + + +struct _FluttrListPrivate +{ + gchar *mini_token; + gchar *username; + gchar *fullname; + gchar *token; + gchar *usernsid; + + NFlickWorker *worker; + + GdkPixbuf *logo; + ClutterActor *group; + ClutterActor *message; + ClutterActor *spinner; + ClutterActor *text; + gchar *msg; + gboolean popping; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + + ClutterTimeline *text_time; + ClutterAlpha *text_alpha; + ClutterBehaviour *text_behave; +}; + +enum +{ + PROP_0, + PROP_MINI_TOKEN, + PROP_USERNAME, + PROP_FULLNAME, + PROP_TOKEN, + PROP_USERNSID +}; + +enum +{ + SUCCESSFUL, + ERROR, + LAST_SIGNAL +}; + +static guint _list_signals[LAST_SIGNAL] = { 0 }; + +static void +close_message_window (FluttrList *list) +{ + FluttrListPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST (list)); + priv = FLUTTR_LIST_GET_PRIVATE(list); + + priv->popping = FALSE; + clutter_timeline_start (priv->timeline); + fluttr_spinner_spin (FLUTTR_SPINNER (priv->spinner), FALSE); +} + +static gboolean +on_thread_abort_idle (FluttrList *list) +{ + g_return_val_if_fail (FLUTTR_IS_LIST (list), FALSE); + + close_message_window (list); + + g_signal_emit (list, _list_signals[ERROR], 0, "Aborted"); + + return FALSE; +} + +static gboolean +on_thread_ok_idle (FluttrList *list) +{ + FluttrListPrivate *priv; + + g_return_val_if_fail (FLUTTR_IS_LIST (list), FALSE); + priv = FLUTTR_LIST_GET_PRIVATE(list); + + close_message_window (list); + + g_signal_emit (list, _list_signals[SUCCESSFUL], 0, priv->worker); + + return FALSE; +} + +static gboolean +on_thread_error_idle (FluttrList *list) +{ + FluttrListPrivate *priv; + gchar *error = NULL; + + g_return_val_if_fail (FLUTTR_IS_LIST (list), FALSE); + priv = FLUTTR_LIST_GET_PRIVATE(list); + + close_message_window (list); + + /* Get the actual error */ + g_object_get (G_OBJECT (priv->worker), "error", &error, NULL); + if (error == NULL) { + error = g_strdup_printf (gettext ("Internal error. ")); + g_warning ("No error set on worker!"); + } + g_signal_emit (list, _list_signals[ERROR], 0, error); + + g_free (error); + + return FALSE; +} + +/* Copy the new message and start the fade effect if not already started */ +static gboolean +on_thread_msg_change_idle (FluttrList *list) +{ + FluttrListPrivate *priv; + gchar *msg; + + g_return_val_if_fail (FLUTTR_IS_LIST (list), FALSE); + priv = FLUTTR_LIST_GET_PRIVATE(list); + + /* Get the new message */ + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + g_print ("%s\n", msg); + } + priv->msg = g_strdup (msg); + + if (clutter_timeline_is_playing (priv->text_time)) + ;//clutter_timeline_rewind (priv->text_time); + + else + clutter_timeline_start (priv->text_time); + + return FALSE; +} + + +/* This function does th emain work of creating and configuring the worker + thread. the majority of this code is taken from + NFlick the n800 Flickr photo browser by MDK (see: README) */ +void +fluttr_list_go (FluttrList *list) +{ + FluttrListPrivate *priv; + NFlickWorker *worker; + NFlickWorkerStatus status; + + g_return_if_fail (FLUTTR_IS_LIST (list)); + priv = FLUTTR_LIST_GET_PRIVATE(list); + + /* Set to opaque and start spinner */ + fluttr_spinner_spin (FLUTTR_SPINNER (priv->spinner), TRUE); + clutter_timeline_start (priv->timeline); + clutter_actor_set_opacity (CLUTTER_ACTOR (list), 255); + + /* Create the worker */ + worker = (NFlickWorker*)nflick_set_list_worker_new (priv->usernsid, + priv->token); + + /* Check if the worker is in the right state */ + g_object_get (G_OBJECT (worker), "status", &status, NULL); + + if (status != NFLICK_WORKER_STATUS_IDLE) { + g_warning ("Bad worker status"); + return; + } + + g_object_ref (worker); + priv->worker = worker; + + /* Get the initial message */ + gchar *msg = NULL; + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + /* FIXME Escape markup */ + g_print ("%s", msg); + } + + /* Set the callback functions */ + nflick_worker_set_custom_data (worker, list); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc) on_thread_abort_idle); + + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc) on_thread_error_idle); + + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc) on_thread_ok_idle); + + nflick_worker_set_msg_change_idle (worker, + (NFlickWorkerIdleFunc) on_thread_msg_change_idle); + + nflick_worker_start (priv->worker); + + /* Free */ + g_free (msg); +} + + +/* Slide in or out the notification popp, depending on priv->pop_visible */ +static void +fluttr_list_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrListPrivate *priv; + gfloat scale; + gfloat factor; + guint width, height; + gint x, y; + + g_return_if_fail (FLUTTR_IS_LIST (data)); + priv = FLUTTR_LIST_GET_PRIVATE(data); + + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->popping) + scale = factor; + else + scale = 1.0 - factor; + + clutter_actor_set_scale (CLUTTER_ACTOR (priv->group), scale, scale); + + /* Set new size */ + clutter_actor_get_size (CLUTTER_ACTOR (priv->group), &width, &height); + width *= scale; + height *= scale; + + x = (CLUTTER_STAGE_WIDTH () /2) - (width /2); + y = (CLUTTER_STAGE_HEIGHT () /2) - (height /2); + + g_object_set (G_OBJECT (priv->group), + "y", y, + "x", x, + NULL); + clutter_actor_set_opacity (CLUTTER_ACTOR (priv->group), 255 * scale); + clutter_actor_set_opacity (CLUTTER_ACTOR (priv->text), 255 * scale); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* Fade out text, change text, then fade in, all within one play of the timeline + just to keep things interesting :) */ +static void +fluttr_list_text_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrListPrivate *priv; + gfloat factor; + + g_return_if_fail (FLUTTR_IS_LIST (data)); + priv = FLUTTR_LIST_GET_PRIVATE(data); + + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->msg != NULL && factor > 0.5) { + gchar *text = priv->msg; + gint x, y; + clutter_label_set_text (CLUTTER_LABEL (priv->text), + text); + + /* Calculate the new position */ + x = (CLUTTER_STAGE_WIDTH () /2) + - (clutter_actor_get_width (priv->text)/2); + y = (CLUTTER_STAGE_HEIGHT () /20) * 18; + clutter_actor_set_position (priv->text, x, y); + clutter_actor_set_position (priv->text, x, y); + g_free (priv->msg); + priv->msg = NULL; + + } + if (factor < 0.5) { + factor *= 2; + factor = 1.0 - factor; + } else { + factor -= 0.5; + factor /= 0.5; + } + clutter_actor_set_opacity (CLUTTER_ACTOR (priv->text), 255 * factor); + /*clutter_actor_rotate_x (CLUTTER_ACTOR (priv->text), + 360 * factor, + clutter_actor_get_height (CLUTTER_ACTOR (priv->text))/2, + 0); + */ + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* GObject Stuff */ + +static void +fluttr_list_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrListPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST (object)); + priv = FLUTTR_LIST_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_MINI_TOKEN: + if (priv->mini_token != NULL) + g_free (priv->mini_token); + priv->mini_token =g_strdup (g_value_get_string (value)); + break; + case PROP_USERNAME: + if (priv->username != NULL) + g_free (priv->username); + priv->username =g_strdup (g_value_get_string (value)); + break; + + case PROP_FULLNAME: + if (priv->fullname != NULL) + g_free (priv->fullname); + priv->fullname =g_strdup (g_value_get_string (value)); + break; + + case PROP_TOKEN: + if (priv->token != NULL) + g_free (priv->token); + priv->token =g_strdup (g_value_get_string (value)); + break; + + case PROP_USERNSID: + if (priv->usernsid != NULL) + g_free (priv->usernsid); + priv->usernsid =g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_list_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrListPrivate *priv; + + g_return_if_fail (FLUTTR_IS_LIST (object)); + priv = FLUTTR_LIST_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_MINI_TOKEN: + g_value_set_string (value, priv->mini_token); + break; + case PROP_USERNAME: + g_value_set_string (value, priv->username); + break; + + case PROP_FULLNAME: + g_value_set_string (value, priv->fullname); + break; + + case PROP_TOKEN: + g_value_set_string (value, priv->token); + break; + + case PROP_USERNSID: + g_value_set_string (value, priv->usernsid); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_list_paint (ClutterActor *actor) +{ + FluttrList *list; + FluttrListPrivate *priv; + + list = FLUTTR_LIST(actor); + + priv = FLUTTR_LIST_GET_PRIVATE(list); + + glPushMatrix(); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + if (child) { + clutter_actor_paint (child); + } + } + + glPopMatrix(); +} + +static void +fluttr_list_dispose (GObject *object) +{ + FluttrList *self = FLUTTR_LIST(object); + FluttrListPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_list_parent_class)->dispose (object); +} + +static void +fluttr_list_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_list_parent_class)->finalize (object); +} + +static void +fluttr_list_class_init (FluttrListClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_list_parent_class); + + actor_class->paint = fluttr_list_paint; + + gobject_class->finalize = fluttr_list_finalize; + gobject_class->dispose = fluttr_list_dispose; + gobject_class->get_property = fluttr_list_get_property; + gobject_class->set_property = fluttr_list_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrListPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_MINI_TOKEN, + g_param_spec_string ("mini-token", + "Mini Token", + "The Flickr mini-token", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_USERNAME, + g_param_spec_string ("username", + "Username", + "The Flickr username", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_FULLNAME, + g_param_spec_string ("fullname", + "Fullname", + "The users full name", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_TOKEN, + g_param_spec_string ("token", + "Token", + "The Flickr token", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_USERNSID, + g_param_spec_string ("usernsid", + "Usernsid", + "The Flickr usernsid", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + /* Class signals */ + _list_signals[SUCCESSFUL] = + g_signal_new ("successful", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrListClass, successful), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, NFLICK_TYPE_WORKER); + + _list_signals[ERROR] = + g_signal_new ("error", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrListClass, error), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + +} + +static void +fluttr_list_init (FluttrList *self) +{ + FluttrListPrivate *priv; + gint size = CLUTTER_STAGE_HEIGHT ()/9; + gint width, height; + ClutterActor *message; + GdkPixbuf *msg_buf = NULL; + guint font_size; + gchar *font; + ClutterColor text_color = { 0xff, 0xff, 0xff, 0xff }; + + priv = FLUTTR_LIST_GET_PRIVATE (self); + + priv->mini_token = NULL; + + width = CLUTTER_STAGE_WIDTH ()/4; + height = CLUTTER_STAGE_HEIGHT ()/4; + + /* Group */ + priv->group = clutter_group_new (); + clutter_group_add (CLUTTER_GROUP (self),priv->group); + clutter_actor_set_size (priv->group, width, height); + clutter_actor_set_position (priv->group, + (CLUTTER_STAGE_WIDTH ()/2) - (width/2), + (CLUTTER_STAGE_HEIGHT ()/2) - (height/2)); + + /* message box */ + message = clutter_texture_new (); + priv->message = message; + msg_buf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR \ + "/message.svg", + width, + height, + FALSE, + NULL); + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (message), msg_buf, NULL); + clutter_group_add (CLUTTER_GROUP (priv->group),message); + clutter_actor_set_size (message, width, height); + clutter_actor_set_position (message, -(width/2),-(height/2)); + + + /* Spinner */ + priv->spinner = fluttr_spinner_new (); + clutter_group_add (CLUTTER_GROUP (priv->group), priv->spinner); + clutter_actor_set_size (priv->spinner, size, size); + clutter_actor_set_position (priv->spinner, -(size/2), -(size/2)); + + priv->timeline = clutter_timeline_new (40, 80); + priv->alpha = clutter_alpha_new_full (priv->timeline, + alpha_sine_inc_func, + NULL, NULL); + priv->behave = fluttr_behave_new (priv->alpha, + fluttr_list_alpha_func, + (gpointer)self); + priv->popping = TRUE; + + /* This is the msg label */ + font_size = CLUTTER_STAGE_HEIGHT () /20; + font = g_strdup_printf ("%s %d", FONT, font_size); + + priv->text = clutter_label_new_full (font, " ", &text_color); + clutter_actor_set_opacity (priv->text, 0); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->text), FALSE); + clutter_group_add (CLUTTER_GROUP (self), priv->text); + clutter_actor_set_size (priv->text, + CLUTTER_STAGE_WIDTH (), + font_size * 2); + + priv->text_time = clutter_timeline_new (40, 50); + priv->text_alpha = clutter_alpha_new_full (priv->text_time, + alpha_sine_inc_func, + NULL, NULL); + priv->text_behave = fluttr_behave_new (priv->text_alpha, + fluttr_list_text_alpha_func, + (gpointer)self); + + clutter_actor_show_all (priv->group); + clutter_actor_show_all (CLUTTER_ACTOR (self)); + g_free (font); +} + +ClutterActor* +fluttr_list_new (void) +{ + ClutterGroup *list; + + list = g_object_new (FLUTTR_TYPE_LIST, + NULL); + + clutter_actor_set_opacity (CLUTTER_ACTOR (list), 0); + + return CLUTTER_ACTOR (list); +} + diff --git a/attic/fluttr/src/fluttr-list.h b/attic/fluttr/src/fluttr-list.h new file mode 100644 index 0000000..7cd14cf --- /dev/null +++ b/attic/fluttr/src/fluttr-list.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#include + +#ifndef _HAVE_FLUTTR_LIST_H +#define _HAVE_FLUTTR_LIST_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_LIST fluttr_list_get_type() + +#define FLUTTR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_LIST, \ + FluttrList)) + +#define FLUTTR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_LIST, \ + FluttrListClass)) + +#define FLUTTR_IS_LIST(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_LIST)) + +#define FLUTTR_IS_LIST_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_LIST)) + +#define FLUTTR_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_LIST, \ + FluttrListClass)) + +typedef struct _FluttrList FluttrList; +typedef struct _FluttrListClass FluttrListClass; +typedef struct _FluttrListPrivate FluttrListPrivate; + +struct _FluttrList +{ + ClutterGroup parent; + + /* private */ + FluttrListPrivate *priv; +}; + +struct _FluttrListClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*successful) (FluttrList *list, NFlickWorker *worker); + void (*error) (FluttrList *list, gchar *msg); + void (*_fluttr_list_3) (void); + void (*_fluttr_list_4) (void); +}; + +GType fluttr_list_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_list_new (void); + +void +fluttr_list_go (FluttrList *list); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-photo.c b/attic/fluttr/src/fluttr-photo.c new file mode 100644 index 0000000..061c901 --- /dev/null +++ b/attic/fluttr/src/fluttr-photo.c @@ -0,0 +1,983 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "GL/gl.h" + +#include "fluttr-photo.h" + +#include "fluttr-behave.h" +#include "fluttr-settings.h" + + +G_DEFINE_TYPE (FluttrPhoto, fluttr_photo, CLUTTER_TYPE_GROUP); + +#define FLUTTR_PHOTO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_PHOTO, \ + FluttrPhotoPrivate)) + +#define FONT "DejaVu Sans Book" +#define FRAME 1 +#define X_ANGLE 90 + +#define ACT_SCALE 0.3 + +static GdkPixbuf *default_pic = NULL; + +struct _FluttrPhotoPrivate +{ + gchar *photoid; + gchar *name; + NFlickPhotoSet *set; + gboolean visible; + + /* The all-important pixbuf fetching variables */ + NFlickWorker *worker; + GdkPixbuf *pixbuf; + + /* Transformation code */ + gint new_x; + gint new_y; + gfloat new_scale; + ClutterTimeline *trans_time; + ClutterAlpha *trans_alpha; + ClutterBehaviour *trans_behave; + + + /* The actual actors */ + ClutterActor *bg; + ClutterActor *frame; + ClutterActor *clip; + ClutterActor *texture; + ClutterActor *options; /* The 'flip' side */ + + /* Swap pixbuf code */ + ClutterTimeline *swap_time; + ClutterAlpha *swap_alpha; + ClutterBehaviour *swap_behave; + + /* Activate animation */ + gboolean active; + gfloat scale; + ClutterTimeline *act_time; + ClutterAlpha *act_alpha; + ClutterBehaviour *act_behave; + + /* Activate animation */ + gboolean opt_in; + ClutterTimeline *opt_time; + ClutterAlpha *opt_alpha; + ClutterBehaviour *opt_behave; +}; + +enum +{ + PROP_0, + PROP_ID, + PROP_NAME, + PROP_PIXBUF, + PROP_SET +}; + +enum +{ + LOADED, + ERROR, + ACTIVATED, + LAST_SIGNAL +}; + +static guint _photo_signals[LAST_SIGNAL] = { 0 }; + +void +_fluttr_photo_fetch_pixbuf (FluttrPhoto *photo, guint width, guint height); + + +/* + * If visible is set to false, the texture actor will be destroyed, else, it + * will be created again + */ +void +fluttr_photo_set_visible (FluttrPhoto *photo, gboolean visible) +{ + FluttrPhotoPrivate *priv; + gint width = fluttr_photo_get_default_width (); + gint height = fluttr_photo_get_default_height (); + guint w, h; + + g_return_if_fail (FLUTTR_IS_PHOTO (photo)); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if (priv->visible == visible) + return; + if (visible) { + priv->texture = clutter_texture_new_from_pixbuf (default_pic); + clutter_group_add (CLUTTER_GROUP (priv->clip), priv->texture); + clutter_actor_set_size (priv->texture, + width -(FRAME*2), + height -(FRAME*2)); + clutter_actor_set_position (priv->texture, FRAME, FRAME); + if (priv->pixbuf) { + clutter_texture_set_pixbuf (CLUTTER_TEXTURE ( + priv->texture), + priv->pixbuf, NULL); + clutter_actor_set_scale (priv->texture, 0.6, 0.6); + clutter_actor_get_abs_size (priv->texture, &w, &h); + + clutter_actor_set_position (priv->texture, + (width/2) - (w/2), + (height/2) - (h/2)); + } + clutter_actor_show_all (priv->texture); + } else { + clutter_group_remove (CLUTTER_GROUP (priv->clip),priv->texture); + if (CLUTTER_IS_ACTOR (priv->texture)) + clutter_actor_destroy (priv->texture); + priv->texture = NULL; + } + priv->visible = visible; + +} + +/* Will return the default size of the FluttrPhoto square for the current stage */ +guint +fluttr_photo_get_default_size (void) +{ + guint width = CLUTTER_STAGE_WIDTH (); + guint height = CLUTTER_STAGE_HEIGHT (); + + if (width > height) + return height/3; + else + return width /3; +} + +guint +fluttr_photo_get_default_width (void) +{ + return fluttr_photo_get_default_size (); +} + +guint +fluttr_photo_get_default_height (void) +{ + return fluttr_photo_get_default_width () * 0.8; +} + +void +fluttr_photo_show_options (FluttrPhoto *photo, gboolean show) +{ + FluttrPhotoPrivate *priv; + + g_return_if_fail (FLUTTR_IS_PHOTO (photo)); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if (priv->opt_in == show) + return; + priv->opt_in = show; + + if (!clutter_timeline_is_playing (priv->opt_time)) + clutter_timeline_start (priv->opt_time); + else + clutter_timeline_rewind (priv->opt_time); +} + +/* If active, scale the photo, if not, scale it down */ +void +fluttr_photo_set_active (FluttrPhoto *photo, gboolean active) +{ + FluttrPhotoPrivate *priv; + + g_return_if_fail (FLUTTR_IS_PHOTO (photo)); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if (priv->active == active) + return; + + priv->active = active; + + if (!clutter_timeline_is_playing (priv->act_time)) + clutter_timeline_start (priv->act_time); + else + clutter_timeline_rewind (priv->act_time); +} + + +/* Set the new x and y position of the actor, and start (or rewind) the main + timeline */ +void +fluttr_photo_update_position (FluttrPhoto *photo, gint x, gint y) +{ + FluttrPhotoPrivate *priv; + + g_return_if_fail (FLUTTR_IS_PHOTO (photo)); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if ((priv->new_x == x) && (priv->new_y == y)) { + return; + } + priv->new_x = x; + priv->new_y = y; + /*clutter_actor_set_position (photo, x, y); + + */ + if (clutter_timeline_is_playing (priv->trans_time)) + clutter_timeline_rewind (priv->trans_time); + else + clutter_timeline_start (priv->trans_time); + +} + +/* Allows smooth transforms (position & size) on th widget...looks goooood*/ +static void +fluttr_photo_trans_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrPhotoPrivate *priv; + gfloat factor; + gint old_x, old_y; + gint x, y; + + + g_return_if_fail (FLUTTR_IS_PHOTO (data)); + priv = FLUTTR_PHOTO_GET_PRIVATE(data); + + /* Calculate the factor */ + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + /* Load up the orignal values */ + old_x = clutter_actor_get_x (CLUTTER_ACTOR (data)); + old_y = clutter_actor_get_y (CLUTTER_ACTOR (data)); + + /* We first calculate the new x pos */ + if (old_x == priv->new_x) { + x = 0; + //g_print ("Same x %d\n", x); + } else if (old_x < priv->new_x) { + /* We're moving to the positive */ + if (old_x < 0) + x = ((-1*old_x)+priv->new_x) * factor; + else + x = (priv->new_x - old_x) * factor; + } else { + /* We're moving to the left */ + if (priv->new_x < 0) + x = ((-1*priv->new_x)+old_x) * -1 * factor; + else + x = (old_x - priv->new_x) * -1 * factor; + } + + /* Then the new y pos */ + if (old_y == priv->new_y) { + y = 0; + //g_print ("Same y %d %d\n", y, priv->new_y); + + } else if (old_y < priv->new_y) { + /* We're moving to the bottom */ + if (old_y < 0) + y = ((-1*old_y)+priv->new_y) * factor; + else + y = (priv->new_y - old_y) * factor; + } else { + /* We're moving to the top */ + if (priv->new_y < 0) + y = ((-1*priv->new_y)+old_y) * -1 * factor; + else + y = (old_y - priv->new_y) * -1 * factor; + } + + x += old_x; + y += old_y; + + clutter_actor_set_position (CLUTTER_ACTOR (data), x, y); + /*g_print ("%s %d %d\n", priv->photoid, x, y);*/ + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* Fade out text, change text, then fade in, all within one play of the timeline + just to keep things interesting :) */ +static void +fluttr_photo_swap_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrPhotoPrivate *priv; + gfloat factor; + guint width = fluttr_photo_get_default_width (); + guint height = fluttr_photo_get_default_height (); + guint w, h; + + + g_return_if_fail (FLUTTR_IS_PHOTO (data)); + priv = FLUTTR_PHOTO_GET_PRIVATE(data); + + /* If we are not visible, return */ + if (!priv->visible || priv->texture == NULL) { + clutter_timeline_stop (priv->swap_time); + return; + } + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->pixbuf != NULL && factor > 0.5 && priv->texture) { + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (priv->texture), + priv->pixbuf, NULL); + clutter_actor_set_scale (priv->texture, 0.6, 0.6); + clutter_actor_get_abs_size (priv->texture, &w, &h); + + clutter_actor_set_position (priv->texture, + (width/2) - (w/2), + (height/2) - (h/2)); + clutter_actor_show_all (priv->texture); + } + if (factor < 0.5) { + factor *= 2; + factor = 1.0 - factor; + } else { + factor -= 0.5; + factor /= 0.5; + } + + if (priv->texture) + clutter_actor_set_opacity (CLUTTER_ACTOR (priv->texture), + 255 * factor); + //clutter_actor_set_opacity (CLUTTER_ACTOR (priv->frame), 255 * factor); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* Moves the pixbuf texture on the z axis when it is active*/ +static void +fluttr_photo_act_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrPhotoPrivate *priv; + gfloat factor; + guint size = fluttr_photo_get_default_size (); + + g_return_if_fail (FLUTTR_IS_PHOTO (data)); + priv = FLUTTR_PHOTO_GET_PRIVATE(data); + + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->active) + priv->scale = 1 + (ACT_SCALE * factor); + else + priv->scale = (1 +ACT_SCALE)- (ACT_SCALE *factor); + + + size = size * priv->scale; + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +static void +fluttr_photo_opt_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrPhotoPrivate *priv; + gfloat factor; + guint width = fluttr_photo_get_default_width (); + gfloat sw; + + g_return_if_fail (FLUTTR_IS_PHOTO (data)); + priv = FLUTTR_PHOTO_GET_PRIVATE(data); + + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->opt_in) { + sw = (CLUTTER_STAGE_WIDTH ()/(float)width) * factor; + if (sw > priv->scale) + priv->scale = sw; + clutter_actor_set_opacity (priv->texture, 255-(255*factor)); + clutter_actor_set_opacity (priv->frame, 255-(255*factor)); + + // clutter_actor_rotate_y (CLUTTER_ACTOR (data), 180 *factor, + // width /2, 0); + } else { + sw = (CLUTTER_STAGE_WIDTH ()/(float)width) * (1.0 - factor); + if (sw >ACT_SCALE + 1.0) + priv->scale = sw; + clutter_actor_set_opacity (priv->texture, (255*factor)); + clutter_actor_set_opacity (priv->frame, (255*factor)); + + //clutter_actor_rotate_y (CLUTTER_ACTOR (data), 180+ (180*factor), + // width /2, 0); + } + + if (factor > 0.9) + g_signal_emit (data, _photo_signals[ACTIVATED], 0, ""); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + + +static gboolean +on_thread_abort_idle (FluttrPhoto *photo) +{ + g_return_val_if_fail (FLUTTR_IS_PHOTO (photo), FALSE); + + g_signal_emit (photo, _photo_signals[ERROR], 0, "Aborted"); + + return FALSE; +} + +static gboolean +on_thread_ok_idle (FluttrPhoto *photo) +{ + FluttrPhotoPrivate *priv; + GdkPixbuf *pixbuf; + gchar *filename, *name; + + g_return_val_if_fail (FLUTTR_IS_PHOTO (photo), FALSE); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if (priv->pixbuf) + return FALSE; + + /* Get pixbuf from worker */ + g_object_get (G_OBJECT (priv->worker), "pixbuf", &pixbuf, NULL); + priv->pixbuf = pixbuf; + g_object_ref (G_OBJECT (priv->pixbuf)); + + /* If we are not visible, we don't start the time line */ + if (!priv->visible) + return FALSE; + + if (!clutter_timeline_is_playing (priv->swap_time)) + clutter_timeline_start (priv->swap_time); + + g_signal_emit (photo, _photo_signals[LOADED], 0, ""); + + /* Save the pixbuf */ + GError *err = NULL; + name = g_strdup_printf ("%d/%s.png", + fluttr_photo_get_default_width (), + priv->photoid); + filename = g_build_filename (g_get_home_dir (), + ".fluttr-thumbs", + name, + NULL); + gdk_pixbuf_save (pixbuf, filename, "png", &err, NULL); + + if (err) + { + g_free (filename); + filename = g_build_filename (g_get_home_dir (), + ".fluttr-thumbs", + NULL); + g_mkdir_with_parents (filename, 0700); + } + + g_free (filename); + g_free (name); + return FALSE; +} + +static gboolean +on_thread_error_idle (FluttrPhoto *photo) +{ + FluttrPhotoPrivate *priv; + gchar *error = NULL; + + g_return_val_if_fail (FLUTTR_IS_PHOTO (photo), FALSE); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + /* Get the actual error */ + g_object_get (G_OBJECT (priv->worker), "error", &error, NULL); + if (error == NULL) { + error = g_strdup_printf (gettext ("Internal error. ")); + g_warning ("No error set on worker!"); + } + g_signal_emit (photo, _photo_signals[ERROR], 0, error); + + g_free (error); + + return FALSE; +} + +static gboolean +on_thread_msg_change_idle (FluttrPhoto *photo) +{ + FluttrPhotoPrivate *priv; + gchar *msg = NULL; + + g_return_val_if_fail (FLUTTR_IS_PHOTO (photo), FALSE); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + /* Get the new message */ + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + ;//g_print ("%s", msg); + } + + g_free (msg); + + return FALSE; +} + +/* Check if we have already download the pixbuf */ +static GdkPixbuf* +_check_cache (FluttrPhoto *photo) +{ + FluttrPhotoPrivate *priv; + GdkPixbuf *pixbuf = NULL; + + g_return_val_if_fail (FLUTTR_IS_PHOTO (photo), NULL); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); gchar *name, *filename; + + name = g_strdup_printf ("%d/%s.png", + fluttr_photo_get_default_width (), + priv->photoid); + filename = g_build_filename (g_get_home_dir (), + ".fluttr-thumbs", + name, + NULL); + pixbuf = gdk_pixbuf_new_from_file (filename, NULL); + + g_free (filename); + g_free (name); + + return pixbuf; +} + +/* Start the pixbuf worker */ +void +_fluttr_photo_fetch_pixbuf (FluttrPhoto *photo, guint width, guint height) +{ + FluttrPhotoPrivate *priv; + FluttrSettings *settings = fluttr_settings_get_default (); + NFlickWorker *worker; + NFlickWorkerStatus status; + + gchar *token = NULL; + + g_return_if_fail (FLUTTR_IS_PHOTO (photo)); + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + if (priv->pixbuf != NULL) { + /*g_warning ("Pixbuf already set");*/ + return; + } + + priv->pixbuf = _check_cache (photo); + if (priv->pixbuf) { + if (!clutter_timeline_is_playing (priv->swap_time)) + clutter_timeline_start (priv->swap_time); + + g_signal_emit (photo, _photo_signals[LOADED], 0, ""); + return; + } + + if (priv->worker != NULL) { + /*g_warning ("Fetching has already started");*/ + return; + } + g_object_get (G_OBJECT (settings), "token", &token, NULL); + + worker = (NFlickWorker *)nflick_show_worker_new (priv->photoid, + width, + height, + token); + /* Check if the worker is in the right state */ + g_object_get (G_OBJECT (worker), "status", &status, NULL); + + if (status != NFLICK_WORKER_STATUS_IDLE) { + g_warning ("Bad worker status"); + return; + } + + g_object_ref (worker); + priv->worker = worker; + + /* Get the initial message */ + gchar *msg = NULL; + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + /* FIXME Escape markup */ + //g_print ("%s", msg); + } + + /* Set the callback functions */ + nflick_worker_set_custom_data (worker, photo); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc) on_thread_abort_idle); + + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc) on_thread_error_idle); + + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc) on_thread_ok_idle); + + nflick_worker_set_msg_change_idle (worker, + (NFlickWorkerIdleFunc) on_thread_msg_change_idle); + + nflick_worker_start (priv->worker); + + /* Free */ + g_free (msg); +} + +void +fluttr_photo_fetch_pixbuf (FluttrPhoto *photo) +{ + guint size = fluttr_photo_get_default_size (); + size *= 2.0; + + _fluttr_photo_fetch_pixbuf (photo, size, size); +} + + +/* GObject Stuff */ + +static void +fluttr_photo_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrPhotoPrivate *priv; + + g_return_if_fail (FLUTTR_IS_PHOTO (object)); + priv = FLUTTR_PHOTO_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + if (priv->photoid != NULL) + g_free (priv->photoid); + priv->photoid = g_strdup (g_value_get_string (value)); + break; + case PROP_NAME: + if (priv->name != NULL) + g_free (priv->name); + priv->name =g_strdup (g_value_get_string (value)); + break; + case PROP_PIXBUF: + if (priv->pixbuf != NULL) + g_object_unref (G_OBJECT (priv->pixbuf)); + priv->pixbuf = g_value_get_object (value); + clutter_timeline_start (priv->swap_time); + break; + + case PROP_SET: + priv->set = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_photo_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrPhotoPrivate *priv; + + g_return_if_fail (FLUTTR_IS_PHOTO (object)); + priv = FLUTTR_PHOTO_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + g_value_set_string (value, priv->photoid); + break; + + case PROP_NAME: + g_value_set_string (value, priv->name); + + case PROP_PIXBUF: + g_value_set_object (value, G_OBJECT (priv->pixbuf)); + break; + + case PROP_SET: + g_value_set_object (value, G_OBJECT (priv->set)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_photo_paint (ClutterActor *actor) +{ + FluttrPhoto *photo; + FluttrPhotoPrivate *priv; + + photo = FLUTTR_PHOTO(actor); + + priv = FLUTTR_PHOTO_GET_PRIVATE(photo); + + glPushMatrix(); + + gfloat x, y; + guint width = fluttr_photo_get_default_width (); + guint height = fluttr_photo_get_default_height (); + + x = (priv->scale * width) - (width); + x /= 2; + x *= -1; + + y = (priv->scale * height) - (height); + y /= 2; + y *= -1; + + glTranslatef (x, y, 0); + glScalef (priv->scale, priv->scale, 1); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + if (child) { + clutter_actor_paint (child); + } + } + + glPopMatrix(); +} + +static void +fluttr_photo_dispose (GObject *object) +{ + FluttrPhoto *self = FLUTTR_PHOTO(object); + FluttrPhotoPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_photo_parent_class)->dispose (object); +} + +static void +fluttr_photo_finalize (GObject *object) +{ + FluttrPhotoPrivate *priv; + + priv = FLUTTR_PHOTO_GET_PRIVATE(object); + + G_OBJECT_CLASS (fluttr_photo_parent_class)->finalize (object); +} + +static void +fluttr_photo_class_init (FluttrPhotoClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_photo_parent_class); + + actor_class->paint = fluttr_photo_paint; + + gobject_class->finalize = fluttr_photo_finalize; + gobject_class->dispose = fluttr_photo_dispose; + gobject_class->get_property = fluttr_photo_get_property; + gobject_class->set_property = fluttr_photo_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrPhotoPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_ID, + g_param_spec_string ("photoid", + "PhotoID", + "The Flickr photo id", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "The Flickr photo name", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "Pixbuf", + "The GdkPixbuf of the photo", + GDK_TYPE_PIXBUF, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_SET, + g_param_spec_object ("set", + "Set", + "The Flickr set", + NFLICK_TYPE_PHOTO_SET, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + /* Class signals */ + _photo_signals[LOADED] = + g_signal_new ("pixbuf-loaded", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrPhotoClass, pixbuf_loaded), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + + _photo_signals[ERROR] = + g_signal_new ("error", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrPhotoClass, fetch_error), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1,G_TYPE_STRING); + + _photo_signals[ACTIVATED] = + g_signal_new ("activated", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrPhotoClass, activated), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1,G_TYPE_STRING); + +} + +static void +fluttr_photo_init (FluttrPhoto *self) +{ + FluttrPhotoPrivate *priv; + ClutterColor rect_col = { 0xff, 0xff, 0xff, 0xff }; + ClutterColor bg_col = {0x00, 0x00, 0x00, 0xff}; + ClutterActor *bg; + gint width = fluttr_photo_get_default_width (); + gint height = fluttr_photo_get_default_height (); + + priv = FLUTTR_PHOTO_GET_PRIVATE (self); + + priv->pixbuf = NULL; + priv->scale = 1.0; + priv->visible = TRUE; + + /* The black frame */ + bg = clutter_rectangle_new_with_color (&bg_col); + priv->bg = bg; + clutter_group_add (CLUTTER_GROUP (self), bg); + clutter_actor_set_size (bg, width, height); + clutter_actor_set_position (bg, 0, 0); + clutter_actor_show (bg); + + /* The white frame */ + priv->frame = clutter_rectangle_new_with_color (&rect_col); + clutter_group_add (CLUTTER_GROUP (self), priv->frame); + clutter_actor_set_size (priv->frame, width, height); + clutter_actor_set_position (priv->frame, 0, 0); + + /*Load the default pixbuf */ + if (default_pic == NULL) { + default_pic = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR \ + "/picture.svg", + width -(FRAME*2), + height -(FRAME*2), + FALSE, + NULL); + } + /* The picture clip region */ + priv->clip = clutter_group_new (); + clutter_group_add (CLUTTER_GROUP (self),priv->clip); + clutter_actor_set_size (priv->clip, + width -(FRAME*2), + height -(FRAME*2)); + clutter_actor_set_position (priv->clip, 0, 0); + clutter_actor_set_clip (priv->clip, + FRAME, FRAME, + width -(FRAME*2), + height -(FRAME*2)); + + /* The pixture texture */ + priv->texture = clutter_texture_new_from_pixbuf (default_pic); + clutter_group_add (CLUTTER_GROUP (priv->clip), priv->texture); + clutter_actor_set_size (priv->texture, + width -(FRAME*2), + height -(FRAME*2)); + clutter_actor_set_position (priv->texture, FRAME, FRAME); + + /* Set up options */ + priv->options = clutter_group_new (); + clutter_group_add (CLUTTER_GROUP (self), priv->options); + clutter_actor_set_size (priv->options, width, height); + clutter_actor_set_position (priv->options, 0, 0); + clutter_actor_set_rotation (priv->options, + CLUTTER_X_AXIS, 90, 0, height, 0); + + /* Setup the transformation */ + priv->new_x = priv->new_y = priv->new_scale = 0; + priv->trans_time = clutter_timeline_new (40, 40); + priv->trans_alpha = clutter_alpha_new_full (priv->trans_time, + alpha_linear_inc_func, + NULL, NULL); + priv->trans_behave = fluttr_behave_new (priv->trans_alpha, + fluttr_photo_trans_alpha_func, + (gpointer)self); + + /* Setup the pixbuf swap */ + priv->pixbuf = NULL; + priv->swap_time = clutter_timeline_new (40, 40); + priv->swap_alpha = clutter_alpha_new_full (priv->swap_time, + alpha_linear_inc_func, + NULL, NULL); + priv->swap_behave = fluttr_behave_new (priv->swap_alpha, + fluttr_photo_swap_alpha_func, + (gpointer)self); + + /* Setup the activating line */ + priv->act_time = clutter_timeline_new (60, 240); + priv->act_alpha = clutter_alpha_new_full (priv->act_time, + alpha_linear_inc_func, + NULL, NULL); + priv->act_behave = fluttr_behave_new (priv->act_alpha, + fluttr_photo_act_alpha_func, + (gpointer)self); + + /* Setup the option line */ + priv->opt_time = clutter_timeline_new (60, 80); + priv->opt_alpha = clutter_alpha_new_full (priv->opt_time, + alpha_linear_inc_func, + NULL, NULL); + priv->opt_behave = fluttr_behave_new (priv->opt_alpha, + fluttr_photo_opt_alpha_func, + (gpointer)self); + + clutter_actor_lower_bottom (bg); + clutter_actor_show_all (priv->clip); + clutter_actor_show_all (priv->options); + clutter_actor_show_all (CLUTTER_ACTOR (self)); +} + +ClutterActor* +fluttr_photo_new (void) +{ + ClutterGroup *photo; + + photo = g_object_new (FLUTTR_TYPE_PHOTO, + NULL); + return CLUTTER_ACTOR (photo); +} + diff --git a/attic/fluttr/src/fluttr-photo.h b/attic/fluttr/src/fluttr-photo.h new file mode 100644 index 0000000..c952f69 --- /dev/null +++ b/attic/fluttr/src/fluttr-photo.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +#include +#include +#include + +#include + +#ifndef _HAVE_FLUTTR_PHOTO_H +#define _HAVE_FLUTTR_PHOTO_H + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_PHOTO fluttr_photo_get_type() + +#define FLUTTR_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_PHOTO, \ + FluttrPhoto)) + +#define FLUTTR_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_PHOTO, \ + FluttrPhotoClass)) + +#define FLUTTR_IS_PHOTO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_PHOTO)) + +#define FLUTTR_IS_PHOTO_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_PHOTO)) + +#define FLUTTR_PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_PHOTO, \ + FluttrPhotoClass)) + +typedef struct _FluttrPhoto FluttrPhoto; +typedef struct _FluttrPhotoClass FluttrPhotoClass; +typedef struct _FluttrPhotoPrivate FluttrPhotoPrivate; + +struct _FluttrPhoto +{ + ClutterGroup parent; + + /* private */ + FluttrPhotoPrivate *priv; +}; + +struct _FluttrPhotoClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*pixbuf_loaded) (FluttrPhoto *photo, gchar *null); + void (*fetch_error) (FluttrPhoto *photo, gchar *msg); + void (*activated) (FluttrPhoto *photo, gchar *msg); + void (*_fluttr_photo_4) (void); +}; + +GType fluttr_photo_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_photo_new (void); + +void +fluttr_photo_fetch_pixbuf (FluttrPhoto *photo); + +void +fluttr_photo_update_position (FluttrPhoto *photo, gint x, gint y); + +guint +fluttr_photo_get_default_size (void); + +guint +fluttr_photo_get_default_width (void); + +guint +fluttr_photo_get_default_height (void); + +void +fluttr_photo_show_options (FluttrPhoto *photo, gboolean show); + +void +fluttr_photo_set_active (FluttrPhoto *photo, gboolean active); + +void +fluttr_photo_set_visible (FluttrPhoto *photo, gboolean visible); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-set-view.c b/attic/fluttr/src/fluttr-set-view.c new file mode 100644 index 0000000..6d0f849 --- /dev/null +++ b/attic/fluttr/src/fluttr-set-view.c @@ -0,0 +1,281 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include + +#include "fluttr-set-view.h" + +G_DEFINE_TYPE (FluttrSetView, fluttr_set_view, CLUTTER_TYPE_GROUP); + +#define FLUTTR_SET_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_SET_VIEW, \ + FluttrSetViewPrivate)) + +struct _FluttrSetViewPrivate +{ + GList *sets; + gint active_set; + ClutterActor *active_actor; + gint active_col; +}; + +enum +{ + PROP_0, + PROP_LIBRARY +}; + +#define N_COLS 3 + +static ClutterGroupClass *parent_class = NULL; + +FluttrSet* +fluttr_set_view_get_active (FluttrSetView *set_view) +{ + FluttrSetViewPrivate *priv; + + g_return_val_if_fail (FLUTTR_IS_SET_VIEW (set_view), NULL); + priv = FLUTTR_SET_VIEW_GET_PRIVATE(set_view); + + return FLUTTR_SET (priv->active_actor); +} + +void +fluttr_set_view_advance (FluttrSetView *set_view, gint n) +{ + FluttrSetViewPrivate *priv; + gint len; + gint i = 0; + ClutterActor *set = NULL; + guint width = fluttr_set_get_default_width (); + guint height = fluttr_set_get_default_height (); + gint x1; + gint active_row = 0; + gint offset = height/2; + gint padding = width/2; + + g_return_if_fail (FLUTTR_IS_SET_VIEW (set_view)); + priv = FLUTTR_SET_VIEW_GET_PRIVATE(set_view); + + len = clutter_group_get_n_children (CLUTTER_GROUP (set_view)); + + /* Make sure we are within the bounds of the number of albums */ + priv->active_set+= n; + if (priv->active_set < 0) { + priv->active_set = 0; + } else if (priv->active_set > len-1) { + priv->active_set = len -1; + } else + ; + /* Find the magic row */ + active_row = 0; + gint row = 0; + gint col = 0; + + for (i = 0; i < len; i++) { + if (i == priv->active_set) { + active_row = row; + break; + } + col++; + if (col > (N_COLS-1)) { + col = 0; + row++; + } + } + + /* Figure out the base x value */ + x1 = ((width) * N_COLS ) + (padding*(N_COLS-1)); + x1 = (CLUTTER_STAGE_WIDTH ()/2)-(x1/2); + + /* Iterate through actors, calculating their new x positions, and make + sure they are on the right place (left, right or center) */ + col = 0; + row = 0; + + offset = -1 * ((height) + padding) * active_row; + offset += (CLUTTER_STAGE_HEIGHT () /2) - (height/2); + + for (i = 0; i < len; i++) { + set = clutter_group_get_nth_child (CLUTTER_GROUP (set_view), i); + + gint x = x1 + (col * (width + padding)); + gint y = offset; + fluttr_set_update_position (FLUTTR_SET (set), x, y); + + col++; + if (col > (N_COLS-1)) { + col = 0; + row++; + offset += height + padding; + } + if (i == priv->active_set) { + priv->active_actor = set; + fluttr_set_set_active (FLUTTR_SET (set), TRUE); + } else + fluttr_set_set_active (FLUTTR_SET (set), FALSE); + + /* Update the position of the ring */ + } +} + +/* We make all the 'viewable' sets fall down, leaving just the main one */ +void +fluttr_set_view_activate (FluttrSetView *set_view) +{ + ; +} + +void +fluttr_set_view_advance_row (FluttrSetView *set_view, gint n) +{ + fluttr_set_view_advance (set_view, (N_COLS * n)); +} + +void +fluttr_set_view_advance_col (FluttrSetView *set_view, gint n) +{ + fluttr_set_view_advance (set_view, n); +} + +void +fluttr_set_view_add_set (FluttrSetView *set_view, FluttrSet *set) +{ + gint x = CLUTTER_STAGE_WIDTH () /2; + gint y = CLUTTER_STAGE_HEIGHT ()/2; + g_return_if_fail (FLUTTR_IS_SET_VIEW (set_view)); + + + clutter_group_add (CLUTTER_GROUP (set_view), CLUTTER_ACTOR (set)); + clutter_actor_set_position (CLUTTER_ACTOR (set), x, y); + clutter_actor_show_all (CLUTTER_ACTOR (set)); +} + +/* GObject Stuff */ + +static void +fluttr_set_view_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrSetViewPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET_VIEW (object)); + priv = FLUTTR_SET_VIEW_GET_PRIVATE(object); + + switch (prop_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_set_view_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrSetViewPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET_VIEW (object)); + priv = FLUTTR_SET_VIEW_GET_PRIVATE(object); + + switch (prop_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_set_view_paint (ClutterActor *actor) +{ + FluttrSetView *set; + FluttrSetViewPrivate *priv; + + set = FLUTTR_SET_VIEW(actor); + + priv = FLUTTR_SET_VIEW_GET_PRIVATE(set); + + glPushMatrix(); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + if (child) { + clutter_actor_paint (child); + } + } + + glPopMatrix(); +} + +static void +fluttr_set_view_dispose (GObject *object) +{ + FluttrSetView *self = FLUTTR_SET_VIEW(object); + FluttrSetViewPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (parent_class)->dispose (object); +} + +static void +fluttr_set_view_finalize (GObject *object) +{ + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +fluttr_set_view_class_init (FluttrSetViewClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + parent_class = CLUTTER_GROUP_CLASS (klass); + + actor_class->paint = fluttr_set_view_paint; + + gobject_class->finalize = fluttr_set_view_finalize; + gobject_class->dispose = fluttr_set_view_dispose; + gobject_class->get_property = fluttr_set_view_get_property; + gobject_class->set_property = fluttr_set_view_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrSetViewPrivate)); + +} + +static void +fluttr_set_view_init (FluttrSetView *self) +{ + FluttrSetViewPrivate *priv; + priv = FLUTTR_SET_VIEW_GET_PRIVATE (self); + + priv->active_set = 0; + priv->active_col = 0; + +} + +ClutterActor* +fluttr_set_view_new (void) +{ + ClutterGroup *set_view; + + set_view = g_object_new (FLUTTR_TYPE_SET_VIEW, + NULL); + + return CLUTTER_ACTOR (set_view); +} + diff --git a/attic/fluttr/src/fluttr-set-view.h b/attic/fluttr/src/fluttr-set-view.h new file mode 100644 index 0000000..a316bfe --- /dev/null +++ b/attic/fluttr/src/fluttr-set-view.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#include + +#include "fluttr-set.h" + + +#ifndef _HAVE_FLUTTR_SET_VIEW_H +#define _HAVE_FLUTTR_SET_VIEW_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_SET_VIEW fluttr_set_view_get_type() + +#define FLUTTR_SET_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_SET_VIEW, \ + FluttrSetView)) + +#define FLUTTR_SET_VIEWCLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_SET_VIEW, \ + FluttrSetViewClass)) + +#define FLUTTR_IS_SET_VIEW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_SET_VIEW)) + +#define FLUTTR_IS_SET_VIEW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_SET_VIEW)) + +#define FLUTTR_SET_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_SET_VIEW, \ + FluttrSetViewClass)) + +typedef struct _FluttrSetView FluttrSetView; +typedef struct _FluttrSetViewClass FluttrSetViewClass; +typedef struct _FluttrSetViewPrivate FluttrSetViewPrivate; + +struct _FluttrSetView +{ + ClutterGroup parent; + + /* private */ + FluttrSetViewPrivate *priv; +}; + +struct _FluttrSetViewClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*_fluttr_set_view_1) (void); + void (*_fluttr_set_view_2) (void); + void (*_fluttr_set_view_3) (void); + void (*_fluttr_set_view_4) (void); +}; + +GType fluttr_set_view_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_set_view_new (void); + +void +fluttr_set_view_add_set (FluttrSetView *set_view, FluttrSet *set); + +FluttrSet* +fluttr_set_view_get_active (FluttrSetView *set_view); + +void +fluttr_set_view_activate (FluttrSetView *set_view); + +void +fluttr_set_view_advance (FluttrSetView *set_view, gint n); + +void +fluttr_set_view_advance_row (FluttrSetView *set_view, gint n); + +void +fluttr_set_view_advance_col (FluttrSetView *set_view, gint n); + + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-set.c b/attic/fluttr/src/fluttr-set.c new file mode 100644 index 0000000..f54b1b4 --- /dev/null +++ b/attic/fluttr/src/fluttr-set.c @@ -0,0 +1,554 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "fluttr-set.h" + +#include "fluttr-behave.h" +#include "fluttr-settings.h" +#include "fluttr-photo.h" + + +G_DEFINE_TYPE (FluttrSet, fluttr_set, CLUTTER_TYPE_GROUP); + +#define FLUTTR_SET_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_SET, \ + FluttrSetPrivate)) + +#define FONT "DejaVu Sans Book" +#define FRAME 2 +#define X_ANGLE 90 + +#define ACT_SCALE 0.3 + +struct _FluttrSetPrivate +{ + gchar *setid; + gchar *name; + NFlickPhotoSet *set; + GList *photos; + + /* The all-important pixbuf fetching variables */ + NFlickWorker *worker; + + + /* The actual actors */ + ClutterActor *text; + ClutterActor *photo1; + ClutterActor *photo2; + ClutterActor *photo3; + + /* Transformation code */ + gint new_x; + gint new_y; + gfloat new_scale; + ClutterTimeline *trans_time; + ClutterAlpha *trans_alpha; + ClutterBehaviour *trans_behave; + + /* Activate animation */ + gboolean active; + gfloat scale; + ClutterTimeline *act_time; + ClutterAlpha *act_alpha; + ClutterBehaviour *act_behave; +}; + +enum +{ + PROP_0, + PROP_ID, + PROP_NAME, + PROP_SET +}; + +void +_fluttr_set_fetch_pixbuf (FluttrSet *set, guint width, guint height); + +/* Will return the default size of the FluttrSet square for the current stage */ +guint +fluttr_set_get_default_size (void) +{ + guint width = CLUTTER_STAGE_WIDTH (); + guint height = CLUTTER_STAGE_HEIGHT (); + + if (width > height) + return height/3; + else + return width /3; +} + +guint +fluttr_set_get_default_width (void) +{ + return fluttr_set_get_default_size (); +} + +guint +fluttr_set_get_default_height (void) +{ + return fluttr_set_get_default_width () * 1.4; +} + +/* If active, scale the set, if not, scale it down */ +void +fluttr_set_set_active (FluttrSet *set, gboolean active) +{ + FluttrSetPrivate *priv; + ClutterColor act = { 0x00, 0x55, 0xff, 0xff }; + ClutterColor inact = { 0xff, 0xff, 0xff, 0xff }; + + g_return_if_fail (FLUTTR_IS_SET (set)); + priv = FLUTTR_SET_GET_PRIVATE(set); + + if (priv->active == active) + return; + + priv->active = active; + + if (active) + clutter_label_set_color (CLUTTER_LABEL (priv->text), &act); + else + clutter_label_set_color (CLUTTER_LABEL (priv->text), &inact); +} + + +/* Set the new x and y position of the actor, and start (or rewind) the main + timeline */ +void +fluttr_set_update_position (FluttrSet *set, gint x, gint y) +{ + FluttrSetPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET (set)); + priv = FLUTTR_SET_GET_PRIVATE(set); + + if ((priv->new_x == x) && (priv->new_y == y)) { + return; + } + priv->new_x = x; + priv->new_y = y; + /*clutter_actor_set_position (set, x, y); + + */ + if (clutter_timeline_is_playing (priv->trans_time)) + clutter_timeline_rewind (priv->trans_time); + else + clutter_timeline_start (priv->trans_time); + +} + +/* Allows smooth transforms (position & size) on th widget...looks goooood*/ +static void +fluttr_set_trans_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrSetPrivate *priv; + gfloat factor; + gint old_x, old_y; + gint x, y; + + + g_return_if_fail (FLUTTR_IS_SET (data)); + priv = FLUTTR_SET_GET_PRIVATE(data); + + /* Calculate the factor */ + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + /* Load up the orignal values */ + old_x = clutter_actor_get_x (CLUTTER_ACTOR (data)); + old_y = clutter_actor_get_y (CLUTTER_ACTOR (data)); + + /* We first calculate the new x pos */ + if (old_x == priv->new_x) { + x = 0; + //g_print ("Same x %d\n", x); + } else if (old_x < priv->new_x) { + /* We're moving to the positive */ + if (old_x < 0) + x = ((-1*old_x)+priv->new_x) * factor; + else + x = (priv->new_x - old_x) * factor; + } else { + /* We're moving to the left */ + if (priv->new_x < 0) + x = ((-1*priv->new_x)+old_x) * -1 * factor; + else + x = (old_x - priv->new_x) * -1 * factor; + } + + /* Then the new y pos */ + if (old_y == priv->new_y) { + y = 0; + //g_print ("Same y %d %d\n", y, priv->new_y); + + } else if (old_y < priv->new_y) { + /* We're moving to the bottom */ + if (old_y < 0) + y = ((-1*old_y)+priv->new_y) * factor; + else + y = (priv->new_y - old_y) * factor; + } else { + /* We're moving to the top */ + if (priv->new_y < 0) + y = ((-1*priv->new_y)+old_y) * -1 * factor; + else + y = (old_y - priv->new_y) * -1 * factor; + } + + x += old_x; + y += old_y; + + clutter_actor_set_position (CLUTTER_ACTOR (data), x, y); + /*g_print ("%s %d %d\n", priv->setid, x, y);*/ + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + + +/* Moves the pixbuf texture on the y axis when it is active*/ +static void +fluttr_set_act_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrSetPrivate *priv; + gfloat factor; + guint size = fluttr_set_get_default_size (); + + g_return_if_fail (FLUTTR_IS_SET (data)); + priv = FLUTTR_SET_GET_PRIVATE(data); + + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->active) + priv->scale = 1 + (ACT_SCALE * factor); + else + priv->scale = (1 +ACT_SCALE)- (ACT_SCALE *factor); + + + priv->scale = size * priv->scale; + + //clutter_actor_set_scale (CLUTTER_ACTOR (data), y + //clutter_actor_set_position (CLUTTER_ACTOR (data), x, y); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +static void +_refresh_thumbs (FluttrSet *set, const gchar *id, const gchar *name) +{ + FluttrSetPrivate *priv; + gint i = 0; + ClutterActor *photo = NULL; + + g_return_if_fail (FLUTTR_IS_SET (set)); + priv = FLUTTR_SET_GET_PRIVATE(set); + + i = g_list_length (priv->photos); + + if (i > 3) + return; + else if (i == 1) + photo = priv->photo1; + else if (i == 2) + photo = priv->photo2; + else + photo = priv->photo3; + + if (photo) { + g_object_set (G_OBJECT (photo), + "photoid", id, + "name", name, + NULL); + fluttr_photo_fetch_pixbuf (FLUTTR_PHOTO (photo)); + } + + +} + +void +fluttr_set_append_photo (FluttrSet *set, const gchar *id, const gchar *name) +{ + FluttrPhotoData *data; + FluttrSetPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET (set)); + priv = FLUTTR_SET_GET_PRIVATE(set); + + data = g_new0 (FluttrPhotoData, 1); + + data->id = g_strdup (id); + data->name = g_strdup (id); + data->pixbuf = NULL; + + priv->photos = g_list_append (priv->photos, (gpointer)data); + + _refresh_thumbs (set, id, name); +} + +GList* +fluttr_set_get_photos (FluttrSet *set) +{ + FluttrSetPrivate *priv; + + g_return_val_if_fail (FLUTTR_IS_SET (set), NULL); + priv = FLUTTR_SET_GET_PRIVATE(set); + + return priv->photos; +} + +static void +_update_text (FluttrSet *set) +{ + FluttrSetPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET (set)); + priv = FLUTTR_SET_GET_PRIVATE(set); + + clutter_label_set_text (CLUTTER_LABEL (priv->text), + priv->name); + + g_object_set (G_OBJECT (priv->text), + "x", (fluttr_set_get_default_width ()/2) + - (clutter_actor_get_width (priv->text)/2), + NULL); +} + +/* GObject Stuff */ + +static void +fluttr_set_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrSetPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET (object)); + priv = FLUTTR_SET_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + if (priv->setid != NULL) + g_free (priv->setid); + priv->setid = g_strdup (g_value_get_string (value)); + break; + case PROP_NAME: + if (priv->name != NULL) + g_free (priv->name); + priv->name =g_strdup (g_value_get_string (value)); + _update_text (FLUTTR_SET (object)); + break; + + case PROP_SET: + priv->set = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_set_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrSetPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SET (object)); + priv = FLUTTR_SET_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_ID: + g_value_set_string (value, priv->setid); + break; + + case PROP_NAME: + g_value_set_string (value, priv->name); + + case PROP_SET: + g_value_set_object (value, G_OBJECT (priv->set)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_set_dispose (GObject *object) +{ + FluttrSet *self = FLUTTR_SET(object); + FluttrSetPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_set_parent_class)->dispose (object); +} + +static void +fluttr_set_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_set_parent_class)->finalize (object); +} + +static void +fluttr_set_class_init (FluttrSetClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_set_parent_class); + + gobject_class->finalize = fluttr_set_finalize; + gobject_class->dispose = fluttr_set_dispose; + gobject_class->get_property = fluttr_set_get_property; + gobject_class->set_property = fluttr_set_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrSetPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_ID, + g_param_spec_string ("setid", + "SetID", + "The Flickr set id", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "The Flickr set name", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_SET, + g_param_spec_object ("set", + "Set", + "The Flickr set", + NFLICK_TYPE_PHOTO_SET, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + +} + +static void +fluttr_set_init (FluttrSet *self) +{ + FluttrSetPrivate *priv; + ClutterColor rect_col = { 0xff, 0xff, 0xff, 0xff }; + ClutterActor *label, *photo; + gint width = fluttr_set_get_default_width (); + gint height = fluttr_set_get_default_height (); + gchar *font; + + priv = FLUTTR_SET_GET_PRIVATE (self); + + /* Create the text label */ + font = g_strdup_printf ("%s %d", FONT, height/12); + label = clutter_label_new_full (font, "Set name", &rect_col); + priv->text = label; + clutter_label_set_line_wrap (CLUTTER_LABEL (label), FALSE); + clutter_actor_set_size (label, width, height/12); + clutter_actor_set_position (label, 0, height-(height/12)); + clutter_group_add (CLUTTER_GROUP (self), label); + + /* Set up the photos */ + photo = fluttr_photo_new (); + priv->photo1 = photo; + clutter_actor_set_size (photo, fluttr_photo_get_default_width ()/2, + fluttr_photo_get_default_height ()/2); + clutter_group_add (CLUTTER_GROUP (self), photo); + clutter_actor_set_position (photo, + (width/2)-(clutter_actor_get_width(photo)/2), + (height/2)-(clutter_actor_get_height(photo)/2)); + clutter_actor_set_rotation (photo, CLUTTER_Z_AXIS, 30, + clutter_actor_get_width (photo) / 2, + clutter_actor_get_height (photo) / 2, 0); + + + photo = fluttr_photo_new (); + priv->photo2 = photo; + clutter_actor_set_size (photo, fluttr_photo_get_default_width ()/2, + fluttr_photo_get_default_height ()/2); + clutter_group_add (CLUTTER_GROUP (self), photo); + clutter_actor_set_position (photo, + (width/2)-(clutter_actor_get_width(photo)/2), + (height/2)-(clutter_actor_get_height(photo)/2)); + clutter_actor_set_rotation (photo, CLUTTER_Z_AXIS, -20, + clutter_actor_get_width (photo) / 2, + clutter_actor_get_height (photo) / 2, 0); + + + photo = fluttr_photo_new (); + priv->photo3 = photo; + clutter_actor_set_size (photo, fluttr_photo_get_default_width ()/2, + fluttr_photo_get_default_height ()/2); + clutter_group_add (CLUTTER_GROUP (self), photo); + clutter_actor_set_position (photo, + (width/2)-(clutter_actor_get_width(photo)/2), + (height/2)-(clutter_actor_get_height(photo)/2)); + clutter_actor_set_rotation (photo, CLUTTER_Z_AXIS, 0, + clutter_actor_get_width (photo) / 2, + clutter_actor_get_height (photo) / 2, 0); + + + /* Setup the transformation */ + priv->new_x = priv->new_y = priv->new_scale = 0; + priv->trans_time = clutter_timeline_new (40, 40); + priv->trans_alpha = clutter_alpha_new_full (priv->trans_time, + alpha_linear_inc_func, + NULL, NULL); + priv->trans_behave = fluttr_behave_new (priv->trans_alpha, + fluttr_set_trans_alpha_func, + (gpointer)self); + + /* Setup the activating line */ + priv->act_time = clutter_timeline_new (60, 240); + priv->act_alpha = clutter_alpha_new_full (priv->act_time, + alpha_linear_inc_func, + NULL, NULL); + priv->act_behave = fluttr_behave_new (priv->act_alpha, + fluttr_set_act_alpha_func, + (gpointer)self); + +} + +ClutterActor* +fluttr_set_new (NFlickPhotoSet *photo_set) +{ + ClutterGroup *set; + gchar *setid; + gchar *name; + + g_object_get (G_OBJECT (photo_set), + "id", &setid, + "combotext", &name, + NULL); + + set = g_object_new (FLUTTR_TYPE_SET, + "setid", setid, + "name", name, + "set", photo_set, + NULL); + return CLUTTER_ACTOR (set); +} + diff --git a/attic/fluttr/src/fluttr-set.h b/attic/fluttr/src/fluttr-set.h new file mode 100644 index 0000000..8171518 --- /dev/null +++ b/attic/fluttr/src/fluttr-set.h @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +#include +#include +#include + +#include + +#ifndef _HAVE_FLUTTR_SET_H +#define _HAVE_FLUTTR_SET_H + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_SET fluttr_set_get_type() + +#define FLUTTR_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_SET, \ + FluttrSet)) + +#define FLUTTR_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_SET, \ + FluttrSetClass)) + +#define FLUTTR_IS_SET(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_SET)) + +#define FLUTTR_IS_SET_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_SET)) + +#define FLUTTR_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_SET, \ + FluttrSetClass)) + +typedef struct _FluttrSet FluttrSet; +typedef struct _FluttrSetClass FluttrSetClass; +typedef struct _FluttrSetPrivate FluttrSetPrivate; + +struct _FluttrSet +{ + ClutterGroup parent; + + /* private */ + FluttrSetPrivate *priv; +}; + +struct _FluttrSetClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*pixbuf_loaded) (FluttrSet *set, gchar *null); + void (*fetch_error) (FluttrSet *set, gchar *msg); + void (*_fluttr_set_3) (void); + void (*_fluttr_set_4) (void); +}; + +typedef struct { + gchar *id; + gchar *name; + GdkPixbuf *pixbuf; + +} FluttrPhotoData; + +GType fluttr_set_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_set_new (NFlickPhotoSet *photo_set); + +void +fluttr_set_append_photo (FluttrSet *set, const gchar *id, const gchar *name); + +GList* +fluttr_set_get_photos (FluttrSet *set); + +void +fluttr_set_fetch_pixbuf (FluttrSet *set); + +void +fluttr_set_update_position (FluttrSet *set, gint x, gint y); + +guint +fluttr_set_get_default_size (void); + +guint +fluttr_set_get_default_width (void); + +guint +fluttr_set_get_default_height (void); + +void +fluttr_set_set_options (FluttrSet *set, ClutterActor *options); + +void +fluttr_set_set_active (FluttrSet *set, gboolean active); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-settings.c b/attic/fluttr/src/fluttr-settings.c new file mode 100644 index 0000000..75b6623 --- /dev/null +++ b/attic/fluttr/src/fluttr-settings.c @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "fluttr-settings.h" + + +G_DEFINE_TYPE (FluttrSettings, fluttr_settings, G_TYPE_OBJECT); + +#define FLUTTR_SETTINGS_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), FLUTTR_TYPE_SETTINGS, \ + FluttrSettingsPrivate)) + + +struct _FluttrSettingsPrivate +{ + gchar *username; + gchar *fullname; + gchar *token; + gchar *usernsid; +}; + +enum +{ + PROP_0, + PROP_USERNAME, + PROP_FULLNAME, + PROP_TOKEN, + PROP_USERNSID +}; + +static FluttrSettings* global_settings = NULL; + +/* GObject Stuff */ + +static void +fluttr_settings_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrSettingsPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SETTINGS (object)); + priv = FLUTTR_SETTINGS_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_USERNAME: + priv->username = g_strdup (g_value_get_string (value)); + break; + case PROP_FULLNAME: + priv->fullname = g_strdup (g_value_get_string (value)); + break; + + case PROP_TOKEN: + priv->token = g_strdup (g_value_get_string (value)); + break; + + case PROP_USERNSID: + priv->usernsid = g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_settings_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrSettingsPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SETTINGS (object)); + priv = FLUTTR_SETTINGS_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_USERNAME: + g_value_set_string (value, priv->username); + break; + case PROP_FULLNAME: + g_value_set_string (value, priv->fullname); + break; + + case PROP_TOKEN: + g_value_set_string (value, priv->token); + break; + + case PROP_USERNSID: + g_value_set_string (value, priv->usernsid); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_settings_dispose (GObject *object) +{ + FluttrSettings *self = FLUTTR_SETTINGS(object); + FluttrSettingsPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_settings_parent_class)->dispose (object); +} + +static void +fluttr_settings_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_settings_parent_class)->finalize (object); +} + +static void +fluttr_settings_class_init (FluttrSettingsClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = fluttr_settings_finalize; + gobject_class->dispose = fluttr_settings_dispose; + gobject_class->get_property = fluttr_settings_get_property; + gobject_class->set_property = fluttr_settings_set_property; + + g_type_class_add_private (gobject_class, + sizeof (FluttrSettingsPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_USERNAME, + g_param_spec_string ("username", + "Username", + "The Flickr username", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_FULLNAME, + g_param_spec_string ("fullname", + "Fullname", + "The Flickr fullname", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_TOKEN, + g_param_spec_string ("token", + "Token", + "The Flickr token", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_USERNSID, + g_param_spec_string ("usernsid", + "Usernsid", + "The Flickr usernsid", + NULL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); +} + +static void +fluttr_settings_init (FluttrSettings *self) +{ + FluttrSettingsPrivate *priv; + priv = FLUTTR_SETTINGS_GET_PRIVATE (self); +} + +FluttrSettings* +fluttr_settings_new (void) +{ + global_settings = (FluttrSettings*) g_object_new (FLUTTR_TYPE_SETTINGS, + NULL); + + return global_settings; +} + +FluttrSettings* +fluttr_settings_get_default (void) +{ + if (global_settings == NULL) + global_settings = fluttr_settings_new (); + + return global_settings; +} + diff --git a/attic/fluttr/src/fluttr-settings.h b/attic/fluttr/src/fluttr-settings.h new file mode 100644 index 0000000..59604ab --- /dev/null +++ b/attic/fluttr/src/fluttr-settings.h @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + + +#include +#include + +#ifndef _HAVE_FLUTTR_SETTINGS_H +#define _HAVE_FLUTTR_SETTINGS_H + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_SETTINGS fluttr_settings_get_type() + +#define FLUTTR_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_SETTINGS, \ + FluttrSettings)) + +#define FLUTTR_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_SETTINGS, \ + FluttrSettingsClass)) + +#define FLUTTR_IS_SETTINGS(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_SETTINGS)) + +#define FLUTTR_IS_SETTINGS_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_SETTINGS)) + +#define FLUTTR_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_SETTINGS, \ + FluttrSettingsClass)) + +typedef struct _FluttrSettings FluttrSettings; +typedef struct _FluttrSettingsClass FluttrSettingsClass; +typedef struct _FluttrSettingsPrivate FluttrSettingsPrivate; + +struct _FluttrSettings +{ + GObject parent; + + /* private */ + FluttrSettingsPrivate *priv; +}; + +struct _FluttrSettingsClass +{ + /*< private >*/ + GObjectClass parent_class; +}; + +GType +fluttr_settings_get_type (void); + +FluttrSettings* +fluttr_settings_new (void); + +FluttrSettings* +fluttr_settings_get_default (void); + +G_END_DECLS + +#endif + diff --git a/attic/fluttr/src/fluttr-spinner.c b/attic/fluttr/src/fluttr-spinner.c new file mode 100644 index 0000000..b31066c --- /dev/null +++ b/attic/fluttr/src/fluttr-spinner.c @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include "fluttr-spinner.h" + +#include "fluttr-behave.h" + +G_DEFINE_TYPE (FluttrSpinner, fluttr_spinner, CLUTTER_TYPE_TEXTURE); + +#define FLUTTR_SPINNER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_SPINNER, \ + FluttrSpinnerPrivate)) + +#define FONT "DejaVu Sans Book" + +static GdkPixbuf *spinner_pixbuf = NULL; + + +struct _FluttrSpinnerPrivate +{ + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; +}; + + +/* Starts the timeline */ +void +fluttr_spinner_spin (FluttrSpinner *spinner, gboolean spin) +{ + FluttrSpinnerPrivate *priv; + + g_return_if_fail (FLUTTR_IS_SPINNER (spinner)); + priv = FLUTTR_SPINNER_GET_PRIVATE (spinner); + + if (spin) + clutter_timeline_start (priv->timeline); + else + clutter_timeline_stop (priv->timeline); +} + + +/* Spins the spinner texture on its y-axis */ +static void +fluttr_spinner_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrSpinnerPrivate *priv; + gfloat factor; + gfloat angle; + + g_return_if_fail (FLUTTR_IS_SPINNER (data)); + priv = FLUTTR_SPINNER_GET_PRIVATE (data); + + /* First we calculate the factor (how far we are along the timeline + between 0-1 + */ + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + /* Calculate the angle */ + angle = factor * 360.0; + + /* Set the new angle */ + clutter_actor_set_rotation (CLUTTER_ACTOR (data), CLUTTER_Z_AXIS, angle, + clutter_actor_get_width (CLUTTER_ACTOR (data)) / 2, + clutter_actor_get_height (CLUTTER_ACTOR (data)) / 2, 0); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* GObject Stuff */ + +static void +fluttr_spinner_dispose (GObject *object) +{ + FluttrSpinner *self = FLUTTR_SPINNER(object); + FluttrSpinnerPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_spinner_parent_class)->dispose (object); +} + +static void +fluttr_spinner_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_spinner_parent_class)->finalize (object); +} + +static void +fluttr_spinner_class_init (FluttrSpinnerClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_spinner_parent_class); + + gobject_class->finalize = fluttr_spinner_finalize; + gobject_class->dispose = fluttr_spinner_dispose; + + g_type_class_add_private (gobject_class, sizeof (FluttrSpinnerPrivate)); +} + +static void +fluttr_spinner_init (FluttrSpinner *self) +{ + FluttrSpinnerPrivate *priv; + priv = FLUTTR_SPINNER_GET_PRIVATE (self); + + priv->timeline = clutter_timeline_new (40, 50); + clutter_timeline_set_loop (priv->timeline, TRUE); + priv->alpha = clutter_alpha_new_full (priv->timeline, + alpha_linear_inc_func, + NULL, NULL); + priv->behave = fluttr_behave_new (priv->alpha, + fluttr_spinner_alpha_func, + (gpointer)self); +} + +ClutterActor* +fluttr_spinner_new (void) +{ + ClutterGroup *spinner; + + spinner = g_object_new (FLUTTR_TYPE_SPINNER, + NULL); + + if (spinner_pixbuf == NULL) { + spinner_pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR \ + "/spinner.svg", + CLUTTER_STAGE_HEIGHT ()/9, + CLUTTER_STAGE_HEIGHT ()/9, + FALSE, + NULL); + } + if (spinner_pixbuf) + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (spinner), + spinner_pixbuf, NULL); + else + g_print ("Could not load spinner\n"); + return CLUTTER_ACTOR (spinner); +} + diff --git a/attic/fluttr/src/fluttr-spinner.h b/attic/fluttr/src/fluttr-spinner.h new file mode 100644 index 0000000..7bfb364 --- /dev/null +++ b/attic/fluttr/src/fluttr-spinner.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#ifndef _HAVE_FLUTTR_SPINNER_H +#define _HAVE_FLUTTR_SPINNER_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_SPINNER fluttr_spinner_get_type() + +#define FLUTTR_SPINNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_SPINNER, \ + FluttrSpinner)) + +#define FLUTTR_SPINNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_SPINNER, \ + FluttrSpinnerClass)) + +#define FLUTTR_IS_SPINNER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_SPINNER)) + +#define FLUTTR_IS_SPINNER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_SPINNER)) + +#define FLUTTR_SPINNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_SPINNER, \ + FluttrSpinnerClass)) + +typedef struct _FluttrSpinner FluttrSpinner; +typedef struct _FluttrSpinnerClass FluttrSpinnerClass; +typedef struct _FluttrSpinnerPrivate FluttrSpinnerPrivate; + +struct _FluttrSpinner +{ + ClutterTexture parent; + + /* private */ + FluttrSpinnerPrivate *priv; +}; + +struct _FluttrSpinnerClass +{ + /*< private >*/ + ClutterTextureClass parent_class; +}; + +GType fluttr_spinner_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_spinner_new (void); + +void +fluttr_spinner_spin (FluttrSpinner *spinner, gboolean spin); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/fluttr-viewer.c b/attic/fluttr/src/fluttr-viewer.c new file mode 100644 index 0000000..fa1c367 --- /dev/null +++ b/attic/fluttr/src/fluttr-viewer.c @@ -0,0 +1,524 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include + +#include "fluttr-viewer.h" + +#include "fluttr-spinner.h" +#include "fluttr-behave.h" +#include "fluttr-settings.h" + +G_DEFINE_TYPE (FluttrViewer, fluttr_viewer, CLUTTER_TYPE_GROUP); + +#define FLUTTR_VIEWER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\ + FLUTTR_TYPE_VIEWER, \ + FluttrViewerPrivate)) + +#define FONT "DejaVu Sans Book" + + +struct _FluttrViewerPrivate +{ + gchar *mini_token; + gchar *username; + gchar *fullname; + gchar *token; + gchar *usernsid; + + NFlickWorker *worker; + + GdkPixbuf *logo; + ClutterActor *group; + ClutterActor *texture; + ClutterActor *spinner; + + gchar *msg; + + gboolean popping; + gboolean show; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + + /* Swap pixbuf code */ + GdkPixbuf *pixbuf; + ClutterTimeline *swap_time; + ClutterAlpha *swap_alpha; + ClutterBehaviour *swap_behave; + +}; + +enum +{ + PROP_0, + PROP_PIXBUF +}; + +enum +{ + SUCCESSFUL, + ERROR, + LAST_SIGNAL +}; + +static guint _viewer_signals[LAST_SIGNAL] = { 0 }; + + +void +fluttr_viewer_show (FluttrViewer *viewer, gboolean show) +{ + FluttrViewerPrivate *priv; + + g_return_if_fail (FLUTTR_IS_VIEWER (viewer)); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + priv->popping = show; + if (show == TRUE) + clutter_actor_set_opacity (priv->texture, 0); + if (!clutter_timeline_is_playing (priv->timeline)) + clutter_timeline_start (priv->timeline); +} + +static void +close_message_window (FluttrViewer *viewer) +{ + FluttrViewerPrivate *priv; + + g_return_if_fail (FLUTTR_IS_VIEWER (viewer)); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + +} + +static gboolean +on_thread_abort_idle (FluttrViewer *viewer) +{ + g_return_val_if_fail (FLUTTR_IS_VIEWER (viewer), FALSE); + + close_message_window (viewer); + + g_signal_emit (viewer, _viewer_signals[ERROR], 0, "Aborted"); + + g_print ("Aborted\n"); + + return FALSE; +} + +static gboolean +on_thread_ok_idle (FluttrViewer *viewer) +{ + FluttrViewerPrivate *priv; + GdkPixbuf *pixbuf; + + g_return_val_if_fail (FLUTTR_IS_VIEWER (viewer), FALSE); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + close_message_window (viewer); + + /* Get pixbuf from worker */ + g_object_get (G_OBJECT (priv->worker), "pixbuf", &pixbuf, NULL); + priv->pixbuf = pixbuf; + + if (!clutter_timeline_is_playing (priv->swap_time)) + clutter_timeline_start (priv->swap_time); + + g_signal_emit (viewer, _viewer_signals[SUCCESSFUL], 0, priv->worker); + + return FALSE; +} + +static gboolean +on_thread_error_idle (FluttrViewer *viewer) +{ + FluttrViewerPrivate *priv; + gchar *error = NULL; + + g_return_val_if_fail (FLUTTR_IS_VIEWER (viewer), FALSE); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + close_message_window (viewer); + + /* Get the actual error */ + g_object_get (G_OBJECT (priv->worker), "error", &error, NULL); + if (error == NULL) { + error = g_strdup_printf (gettext ("Internal error. ")); + g_warning ("No error set on worker!"); + } + g_signal_emit (viewer, _viewer_signals[ERROR], 0, error); + + g_print ("%s\n", error); + + g_free (error); + + return FALSE; +} + +/* Copy the new message and start the fade effect if not already started */ +static gboolean +on_thread_msg_change_idle (FluttrViewer *viewer) +{ + FluttrViewerPrivate *priv; + gchar *msg; + + g_return_val_if_fail (FLUTTR_IS_VIEWER (viewer), FALSE); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + /* Get the new message */ + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + g_print ("%s\n", msg); + } + priv->msg = g_strdup (msg); + + return FALSE; +} + + +/* This function does th emain work of creating and configuring the worker + thread. the majority of this code is taken from + NFlick the n800 Flickr photo browser by MDK (see: README) */ +void +fluttr_viewer_go (FluttrViewer *viewer, FluttrPhoto *photo) +{ + FluttrViewerPrivate *priv; + FluttrSettings *settings = fluttr_settings_get_default (); + NFlickWorker *worker; + NFlickWorkerStatus status; + gint width = CLUTTER_STAGE_WIDTH (); + gint height = CLUTTER_STAGE_HEIGHT(); + + gchar *token = NULL; + gchar *photoid = NULL; + + g_return_if_fail (FLUTTR_IS_VIEWER (viewer)); + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + if (priv->worker) + nflick_worker_request_abort (priv->worker); + + fluttr_spinner_spin (FLUTTR_SPINNER (priv->spinner), TRUE); + clutter_actor_set_opacity (priv->spinner, 255); + + + g_object_get (G_OBJECT (settings), "token", &token, NULL); + g_object_get (G_OBJECT (photo), "photoid", &photoid, NULL); + + worker = (NFlickWorker *)nflick_show_worker_new (photoid, + width, + height, + token); + /* Check if the worker is in the right state */ + g_object_get (G_OBJECT (worker), "status", &status, NULL); + + if (status != NFLICK_WORKER_STATUS_IDLE) { + g_warning ("Bad worker status"); + return; + } + + g_object_ref (worker); + priv->worker = worker; + + /* Get the initial message */ + gchar *msg = NULL; + g_object_get (G_OBJECT (priv->worker), "message", &msg, NULL); + if (msg != NULL) { + /* FIXME Escape markup */ + //g_print ("%s", msg); + } + + /* Set the callback functions */ + nflick_worker_set_custom_data (worker, viewer); + nflick_worker_set_aborted_idle (worker, + (NFlickWorkerIdleFunc) on_thread_abort_idle); + + nflick_worker_set_error_idle (worker, + (NFlickWorkerIdleFunc) on_thread_error_idle); + + nflick_worker_set_ok_idle (worker, + (NFlickWorkerIdleFunc) on_thread_ok_idle); + + nflick_worker_set_msg_change_idle (worker, + (NFlickWorkerIdleFunc) on_thread_msg_change_idle); + + nflick_worker_start (priv->worker); + + /* Free */ + g_free (msg); +} + + +/* Slide in or out the notification popp, depending on priv->pop_visible */ +static void +fluttr_viewer_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrViewerPrivate *priv; + gfloat factor; + + g_return_if_fail (FLUTTR_IS_VIEWER (data)); + priv = FLUTTR_VIEWER_GET_PRIVATE(data); + + factor = (gfloat)alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->popping) + clutter_actor_set_opacity (CLUTTER_ACTOR (data), 255 * factor); + else + clutter_actor_set_opacity (CLUTTER_ACTOR (data), + 255- (255*factor)); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + +/* Fade out text, change text, then fade in, all within one play of the timeline + just to keep things interesting :) */ +static void +fluttr_viewer_swap_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + FluttrViewerPrivate *priv; + gfloat factor; + guint width = CLUTTER_STAGE_WIDTH (); + guint height = CLUTTER_STAGE_HEIGHT (); + guint w, h; + + g_return_if_fail (FLUTTR_IS_VIEWER (data)); + priv = FLUTTR_VIEWER_GET_PRIVATE(data); + + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + + if (priv->pixbuf != NULL && factor > 0.5) { + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (priv->texture), + priv->pixbuf, NULL); + clutter_actor_get_size (priv->texture, &w, &h); + + clutter_actor_set_position (priv->texture, + (width/2) - (w/2), + (height/2) - (h/2)); + } + if (factor < 0.5) { + factor *= 2; + factor = 1.0 - factor; + } else { + factor -= 0.5; + factor /= 0.5; + } + + clutter_actor_set_opacity (CLUTTER_ACTOR (priv->texture), + 255 * factor); + clutter_actor_set_opacity (priv->spinner, 255 * (1-factor)); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(data))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(data)); +} + + +/* GObject Stuff */ + +static void +fluttr_viewer_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + FluttrViewerPrivate *priv; + + g_return_if_fail (FLUTTR_IS_VIEWER (object)); + priv = FLUTTR_VIEWER_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_PIXBUF: + if (priv->pixbuf != NULL) + g_object_unref (G_OBJECT (priv->pixbuf)); + priv->pixbuf = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_viewer_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + FluttrViewerPrivate *priv; + + g_return_if_fail (FLUTTR_IS_VIEWER (object)); + priv = FLUTTR_VIEWER_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_PIXBUF: + g_value_set_object (value, priv->pixbuf); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, + pspec); + break; + } +} + +static void +fluttr_viewer_paint (ClutterActor *actor) +{ + FluttrViewer *viewer; + FluttrViewerPrivate *priv; + + viewer = FLUTTR_VIEWER(actor); + + priv = FLUTTR_VIEWER_GET_PRIVATE(viewer); + + glPushMatrix(); + + gint i; + gint len = clutter_group_get_n_children (CLUTTER_GROUP (actor)); + for (i = 0; i < len; i++) { + ClutterActor* child; + + child = clutter_group_get_nth_child (CLUTTER_GROUP(actor), i); + if (child) { + clutter_actor_paint (child); + } + } + + glPopMatrix(); +} + +static void +fluttr_viewer_dispose (GObject *object) +{ + FluttrViewer *self = FLUTTR_VIEWER(object); + FluttrViewerPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (fluttr_viewer_parent_class)->dispose (object); +} + +static void +fluttr_viewer_finalize (GObject *object) +{ + G_OBJECT_CLASS (fluttr_viewer_parent_class)->finalize (object); +} + +static void +fluttr_viewer_class_init (FluttrViewerClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (fluttr_viewer_parent_class); + + actor_class->paint = fluttr_viewer_paint; + + gobject_class->finalize = fluttr_viewer_finalize; + gobject_class->dispose = fluttr_viewer_dispose; + gobject_class->get_property = fluttr_viewer_get_property; + gobject_class->set_property = fluttr_viewer_set_property; + + g_type_class_add_private (gobject_class, sizeof (FluttrViewerPrivate)); + + /* Class properties */ + g_object_class_install_property + (gobject_class, + PROP_PIXBUF, + g_param_spec_object ("pixbuf", + "Pixbuf", + "The current pixbuf", + GDK_TYPE_PIXBUF, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + + /* Class signals */ + _viewer_signals[SUCCESSFUL] = + g_signal_new ("successful", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrViewerClass, successful), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, NFLICK_TYPE_WORKER); + + _viewer_signals[ERROR] = + g_signal_new ("error", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (FluttrViewerClass, error), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + +} + +static void +fluttr_viewer_init (FluttrViewer *self) +{ + FluttrViewerPrivate *priv; + gint width, height; + ClutterActor *message; + + priv = FLUTTR_VIEWER_GET_PRIVATE (self); + + priv->mini_token = NULL; + priv->popping = FALSE; + + width = CLUTTER_STAGE_WIDTH (); + height = CLUTTER_STAGE_HEIGHT (); + + /* message box */ + message = clutter_texture_new (); + priv->texture = message; + clutter_group_add (CLUTTER_GROUP (self),message); + clutter_actor_set_size (message, width, height); + clutter_actor_set_position (message, -(width/2),-(height/2)); + + /* Spinner */ + priv->spinner = fluttr_spinner_new (); + clutter_group_add (CLUTTER_GROUP (self),priv->spinner); + clutter_actor_set_size (priv->spinner, (height/6)-11, (height/6)-11); + clutter_actor_set_position (priv->spinner, width-(height/6),height-(height/6)); + + /* Setup the pixbuf swap */ + priv->pixbuf = NULL; + priv->swap_time = clutter_timeline_new (40, 40); + priv->swap_alpha = clutter_alpha_new_full (priv->swap_time, + alpha_linear_inc_func, + NULL, NULL); + priv->swap_behave = fluttr_behave_new (priv->swap_alpha, + fluttr_viewer_swap_alpha_func, + (gpointer)self); + + priv->timeline = clutter_timeline_new (40, 80); + priv->alpha = clutter_alpha_new_full (priv->timeline, + alpha_sine_inc_func, + NULL, NULL); + priv->behave = fluttr_behave_new (priv->alpha, + fluttr_viewer_alpha_func, + (gpointer)self); + +} + +ClutterActor* +fluttr_viewer_new (void) +{ + ClutterGroup *viewer; + + viewer = g_object_new (FLUTTR_TYPE_VIEWER, + NULL); + + clutter_actor_set_opacity (CLUTTER_ACTOR (viewer), 0); + + return CLUTTER_ACTOR (viewer); +} + diff --git a/attic/fluttr/src/fluttr-viewer.h b/attic/fluttr/src/fluttr-viewer.h new file mode 100644 index 0000000..43cb9ba --- /dev/null +++ b/attic/fluttr/src/fluttr-viewer.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include + +#include + +#include "fluttr-photo.h" + +#ifndef _HAVE_FLUTTR_VIEWER_H +#define _HAVE_FLUTTR_VIEWER_H + + +G_BEGIN_DECLS + +#define FLUTTR_TYPE_VIEWER fluttr_viewer_get_type() + +#define FLUTTR_VIEWER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FLUTTR_TYPE_VIEWER, \ + FluttrViewer)) + +#define FLUTTR_VIEWER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\ + FLUTTR_TYPE_VIEWER, \ + FluttrViewerClass)) + +#define FLUTTR_IS_VIEWER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FLUTTR_TYPE_VIEWER)) + +#define FLUTTR_IS_VIEWER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FLUTTR_TYPE_VIEWER)) + +#define FLUTTR_VIEWER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ + FLUTTR_TYPE_VIEWER, \ + FluttrViewerClass)) + +typedef struct _FluttrViewer FluttrViewer; +typedef struct _FluttrViewerClass FluttrViewerClass; +typedef struct _FluttrViewerPrivate FluttrViewerPrivate; + +struct _FluttrViewer +{ + ClutterGroup parent; + + /* private */ + FluttrViewerPrivate *priv; +}; + +struct _FluttrViewerClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + void (*successful) (FluttrViewer *viewer, NFlickWorker *worker); + void (*error) (FluttrViewer *viewer, gchar *msg); + void (*_fluttr_viewer_3) (void); + void (*_fluttr_viewer_4) (void); +}; + +GType fluttr_viewer_get_type (void) G_GNUC_CONST; + +ClutterActor* +fluttr_viewer_new (void); + +void +fluttr_viewer_go (FluttrViewer *viewer, FluttrPhoto *photo); + +void +fluttr_viewer_show (FluttrViewer *viewer, gboolean show); + +G_END_DECLS + +#endif diff --git a/attic/fluttr/src/main.c b/attic/fluttr/src/main.c new file mode 100644 index 0000000..c394c3f --- /dev/null +++ b/attic/fluttr/src/main.c @@ -0,0 +1,695 @@ +/* + * Copyright (C) 2007 Neil J. Patel + * Copyright (C) 2007 OpenedHand Ltd + * + * Author: Neil J. Patel + */ + +#include +#include +#include +#include + +#include "fluttr-auth.h" +#include "fluttr-behave.h" +#include "fluttr-library.h" +#include "fluttr-library-row.h" +#include "fluttr-list.h" +#include "fluttr-list-view.h" +#include "fluttr-photo.h" +#include "fluttr-settings.h" +#include "fluttr-set-view.h" +#include "fluttr-set.h" +#include "fluttr-viewer.h" + +#include + +typedef enum { + FLUTTR_VIEW_SETS, + FLUTTR_VIEW_PHOTOS, + FLUTTR_VIEW_PHOTO + +} FluttrView; + +typedef struct { + FluttrLibrary *library; + + ClutterActor *stage; + ClutterActor *auth; + ClutterActor *sets; + ClutterActor *list; + ClutterActor *list_view; + ClutterActor *viewer; + + /* Current view info */ + FluttrView view; + gulong sig; + + /* Flickr info */ + gchar *username; + gchar *fullname; + gchar *token; + gchar *usernsid; + + /* The swapping timeline */ + ClutterActor *in; + ClutterActor *out; + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + +} Fluttr; + +static void browse_input_cb (ClutterStage *stage, + ClutterEvent *event, + Fluttr *fluttr); + +static void create_background (ClutterActor *bg, + guint width, + guint height); + +static gboolean check_credentials (Fluttr *fluttr); + +static void auth_successful (FluttrAuth *auth, gchar *null, + Fluttr *fluttr); +static void auth_error (FluttrAuth *auth, gchar *msg, + Fluttr *fluttr); + +static void list_get_successful (FluttrAuth *auth, + NFlickWorker *worker, + Fluttr *fluttr); +static void list_get_error (FluttrAuth *auth, gchar *msg, + Fluttr *fluttr); +static void _swap_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data); + + +/* Commmand line options */ +static gint cols = 3; +static gboolean fullscreen = FALSE; +static gint stage_width = 800; +static gint stage_height = 440; + +static GOptionEntry entries[] = +{ + { "columns", + 'c', 0, + G_OPTION_ARG_INT, + &cols, + "Number of picture columns in the view", + "3" }, + + { "fullscreen", + 'f', 0, + G_OPTION_ARG_NONE, + &fullscreen, + "Launch Juke in fullscreen mode", + NULL }, + + { "width", + 'w', 0, + G_OPTION_ARG_INT, + &stage_width, + "Width of the Fluttr window", + "800" }, + + { "height", + 'h', 0, + G_OPTION_ARG_INT, + &stage_height, + "Height of the Fluttr window", + "440" }, + + { NULL } +}; + + + +static gboolean +_auth_timeout (Fluttr *fluttr) +{ + fluttr_auth_go (FLUTTR_AUTH (fluttr->auth)); + return FALSE; +} + +int +main (int argc, char **argv) +{ + Fluttr *fluttr = g_new0 (Fluttr, 1); + GOptionContext *context; + ClutterActor *stage, *background, *list; + ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff }; + FluttrSettings *settings = NULL; + gchar *filename, *folder; + + g_thread_init (NULL); + clutter_init (&argc, &argv); + + /* Load options */ + context = g_option_context_new (" - Fluttr Options"); + g_option_context_add_main_entries (context, entries, NULL); + g_option_context_parse (context, &argc, &argv, NULL); + + /* Check that there are enough arguments */ + if (argc < 2 && !(check_credentials (fluttr))) { + g_print ("\n\nYou need to start Fluttr with your Flickr "\ + "authorisation code, which is available here:\n"\ + "http://www.flickr.com/auth-72157600141007022\n\n"); + return 0; + } + + /* Create a new library */ + fluttr->library = NULL; + fluttr->view = FLUTTR_VIEW_SETS; + + stage = clutter_stage_get_default (); + fluttr->stage = stage; + clutter_actor_set_size (stage, stage_width, stage_height); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + + if (fullscreen) + g_object_set (stage, "fullscreen", TRUE, NULL); + + /* Make sure the sized thumbnail path is created */ + folder = g_strdup_printf ("%d", fluttr_photo_get_default_width ()); + filename = g_build_filename (g_get_home_dir (), + ".fluttr-thumbs", + folder, + NULL); + g_mkdir (filename, 0775); + g_free (filename); + g_free (folder); + + + if (fluttr->username == NULL) { + /* Authorise the mini-token */ + g_print ("Authenticating : %s\n", argv[1]); + fluttr->auth = fluttr_auth_new (argv[1]); + g_signal_connect (G_OBJECT (fluttr->auth), "successful", + G_CALLBACK (auth_successful), fluttr); + g_signal_connect (G_OBJECT (fluttr->auth), "error", + G_CALLBACK (auth_error), fluttr); + + clutter_actor_set_size (fluttr->auth, 800, 440); + clutter_actor_set_position (fluttr->auth, 0, 0); + clutter_group_add (CLUTTER_GROUP (fluttr->stage), fluttr->auth); + + g_timeout_add (1500, (GSourceFunc)_auth_timeout, + (gpointer)fluttr); + } + + /* Background */ + background = clutter_texture_new (); + clutter_actor_set_position (background, 0, 0); + create_background (background, CLUTTER_STAGE_WIDTH (), + CLUTTER_STAGE_HEIGHT ()); + clutter_group_add (CLUTTER_GROUP (stage), background); + + /* Set up the list worker */ + list = fluttr_list_new (); + fluttr->list = list; + g_object_set (G_OBJECT (list), + "username", fluttr->username, + "fullname", fluttr->fullname, + "token", fluttr->token, + "usernsid", fluttr->usernsid, + NULL); + g_signal_connect (G_OBJECT (list), "successful", + G_CALLBACK (list_get_successful), fluttr); + g_signal_connect (G_OBJECT (list), "error", + G_CALLBACK (list_get_error), fluttr); + + clutter_actor_set_size (list, 800, 480); + clutter_actor_set_position (list, 0, 0); + clutter_group_add (CLUTTER_GROUP (fluttr->stage), list); + + + /* If we have a username etc, we want to start the list fetcher */ + if (fluttr->username != NULL) { + /* We update the settings singleton */ + settings = fluttr_settings_get_default (); + g_object_set (G_OBJECT (settings), + "username", fluttr->username, + "fullname", fluttr->fullname, + "token", fluttr->token, + "usernsid", fluttr->usernsid, + NULL); + fluttr_list_go (FLUTTR_LIST (fluttr->list)); + } + + /* Sets view */ + ClutterActor *sets = fluttr_set_view_new (); + fluttr->sets = sets; + clutter_group_add (CLUTTER_GROUP (fluttr->stage), sets); + clutter_actor_set_size (sets, + CLUTTER_STAGE_WIDTH (), + CLUTTER_STAGE_HEIGHT()); + clutter_actor_set_position (sets, 0, 0); + + /* The list view */ + fluttr->list_view = fluttr_list_view_new (); + g_object_set (G_OBJECT (fluttr->list_view), "cols", cols, NULL); + clutter_group_add (CLUTTER_GROUP (fluttr->stage), fluttr->list_view); + clutter_actor_set_size (fluttr->list_view, CLUTTER_STAGE_WIDTH (), + CLUTTER_STAGE_HEIGHT ()); + clutter_actor_set_position (fluttr->list_view, 0, 0); + clutter_actor_set_opacity (fluttr->list_view, 0); + + clutter_actor_show_all (fluttr->stage); + + /* The viewer */ + fluttr->viewer = fluttr_viewer_new (); + clutter_group_add (CLUTTER_GROUP (fluttr->stage), fluttr->viewer); + clutter_actor_set_size (fluttr->viewer, CLUTTER_STAGE_WIDTH (), + CLUTTER_STAGE_HEIGHT ()); + clutter_actor_set_position (fluttr->viewer, 0, 0); + clutter_actor_set_opacity (fluttr->viewer, 0); + + clutter_actor_show_all (fluttr->stage); + + /* Setup the view swa behaviour */ + fluttr->in = fluttr->out = NULL; + fluttr->timeline = clutter_timeline_new (40, 60); + fluttr->alpha = clutter_alpha_new_full (fluttr->timeline, + alpha_linear_inc_func, + NULL, NULL); + fluttr->behave = fluttr_behave_new (fluttr->alpha, + _swap_alpha_func, + (gpointer)fluttr); + + /* Receive all input events */ + g_signal_connect (stage, + "event", + G_CALLBACK (browse_input_cb), + (gpointer)fluttr); + + clutter_main(); + return 0; +} + +/* Fade out text, change text, then fade in, all within one play of the timeline + just to keep things interesting :) */ +static void +_swap_alpha_func (ClutterBehaviour *behave, + guint alpha_value, + gpointer data) +{ + Fluttr *fluttr = (Fluttr*)data; + gfloat factor; + factor = (gfloat) alpha_value / CLUTTER_ALPHA_MAX_ALPHA; + ClutterActor *stage = clutter_stage_get_default (); + + clutter_actor_set_opacity (CLUTTER_ACTOR (fluttr->in), 255 * factor); + clutter_actor_set_opacity (CLUTTER_ACTOR (fluttr->out), + 255- (255*factor)); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(stage))) + clutter_actor_queue_redraw (CLUTTER_ACTOR(stage)); +} + +/* If available, load setting from the users key file */ +static gboolean +check_credentials (Fluttr *fluttr) +{ + gchar *path; + gchar *res = NULL; + GKeyFile *keyf = NULL; + + path = g_build_filename (g_get_home_dir (), ".fluttr", NULL); + + if ( (g_file_test (path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS))){ + + keyf = g_key_file_new (); + g_key_file_load_from_file (keyf, path, 0, NULL); + + /* Try loading the username form the file, if it works, then we + already have the credentials, else we set everything to NULL + */ + res = g_key_file_get_string (keyf, "fluttr", "username", NULL); + if (res == NULL) { + /* Somethings wrong, so just set the varibales to NULL*/ + fluttr->username = NULL; + fluttr->fullname = NULL; + fluttr->token = NULL; + fluttr->usernsid = NULL; + g_free (path); + return FALSE; + } + + fluttr->username = g_strdup (res); + + res = NULL; + res = g_key_file_get_string (keyf, "fluttr", "fullname", NULL); + fluttr->fullname = g_strdup (res); + + res = NULL; + res = g_key_file_get_string (keyf, "fluttr", "token", NULL); + fluttr->token = g_strdup (res); + + res = NULL; + res = g_key_file_get_string (keyf, "fluttr", "usernsid", NULL); + fluttr->usernsid = g_strdup (res); + + + g_print ("Loaded Credentials:\n\t%s\n\t%s\n\t%s\n\t%s\n", + fluttr->username, + fluttr->fullname, + fluttr->token, + fluttr->usernsid); + + g_free (path); + return TRUE; + } else { + /* Doesn't exist, so just set the varibales to NULL */ + fluttr->username = NULL; + fluttr->fullname = NULL; + fluttr->token = NULL; + fluttr->usernsid = NULL; + g_free (path); + return FALSE; + } +} + +/* Authorisation Call backs */ +static void +auth_successful (FluttrAuth *auth, gchar *null, Fluttr *fluttr) +{ + gchar *c; + GKeyFile *kf = g_key_file_new(); + gchar *file = g_build_filename(g_get_home_dir(), ".fluttr", NULL); + FluttrSettings *settings; + + /* Load the details */ + g_object_get (G_OBJECT (fluttr->auth), + "username", &fluttr->username, + "fullname", &fluttr->fullname, + "token", &fluttr->token, + "usernsid", &fluttr->usernsid, + NULL); + + /* Save the details for next time */ + + g_key_file_set_string (kf, "fluttr", "username", fluttr->username); + g_key_file_set_string (kf, "fluttr", "fullname", fluttr->fullname); + g_key_file_set_string (kf, "fluttr", "token", fluttr->token); + g_key_file_set_string (kf, "fluttr", "usernsid", fluttr->usernsid); + + c = g_key_file_to_data(kf, NULL, NULL); + g_key_file_free(kf); + + g_file_set_contents(file, c, -1, NULL); + g_free(c); + g_free(file); + + g_print ("Auth Successful:\n\t%s\n\t%s\n\t%s\n\t%s\n", + fluttr->username, + fluttr->fullname, + fluttr->token, + fluttr->usernsid); + + /* Start the list fetcher */ + g_object_set (G_OBJECT (fluttr->list), + "username", fluttr->username, + "fullname", fluttr->fullname, + "token", fluttr->token, + "usernsid", fluttr->usernsid, + NULL); + + /* We update the settings singleton */ + settings = fluttr_settings_get_default (); + g_object_set (G_OBJECT (settings), + "username", fluttr->username, + "fullname", fluttr->fullname, + "token", fluttr->token, + "usernsid", fluttr->usernsid, + NULL); + fluttr_list_go (FLUTTR_LIST (fluttr->list)); +} + +static void +auth_error (FluttrAuth *auth, gchar *msg, Fluttr *fluttr) +{ + g_critical ("Auth Unsuccessful : %s\n", msg); +} + +/* get list callbacks */ + +/* Go through the list of sets, and poplulate the Fluttr library with + FluttrLibraryRows */ +static void +list_get_successful (FluttrAuth *auth, NFlickWorker *worker, Fluttr *fluttr) +{ + GList *list = NULL; + GList *l = NULL; + list = nflick_set_list_worker_take_list ((NFlickSetListWorker*) worker); + gint i = 0; + gint j = 0; + + g_print ("\n"); + for (l = list; l != NULL; l = l->next) { + ClutterActor *set = fluttr_set_new (l->data); + GList *photos = NULL; + GList *photo; + gchar *id = NULL; + g_object_get (G_OBJECT (l->data), "combotext", &id, NULL); + g_print ("%s : ", id); + + g_object_get (G_OBJECT (l->data), "list", &photos, NULL); + + g_print ("%d loaded\n", g_list_length (photos)); + + for (photo = photos; photo!=NULL ;photo = photo->next) { + NFlickPhotoData *p = (NFlickPhotoData*)photo->data; + + fluttr_set_append_photo (FLUTTR_SET (set), + p->Id, + p->Name); + + i++; + } + fluttr_set_view_add_set (FLUTTR_SET_VIEW (fluttr->sets), + FLUTTR_SET (set)); + j++; + } + fluttr_set_view_advance (FLUTTR_SET_VIEW (fluttr->sets), 0); + + g_print ("%d Photo(s) in %d set(s)\n", i, j); +} + +static void +list_get_error (FluttrAuth *auth, gchar *msg, Fluttr *fluttr) +{ + g_critical ("Auth Unsuccessful : %s\n", msg); +} + +static void +photo_input_cb (ClutterStage *stage, + ClutterEvent *event, + Fluttr *fluttr) +{ + FluttrPhoto *photo = NULL; + + + /* First check for app wide keybinding */ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + + switch (clutter_key_event_symbol (kev)) { + case CLUTTER_Left: + case CLUTTER_Right: + case CLUTTER_Up: + case CLUTTER_Down: + case CLUTTER_Return: + case CLUTTER_space: + case CLUTTER_KP_Enter: + case CLUTTER_Escape: + fluttr_list_view_advance_col + (FLUTTR_LIST_VIEW (fluttr->list_view), 0); + photo = fluttr_list_view_get_active + (FLUTTR_LIST_VIEW (fluttr->list_view)); + fluttr->view = FLUTTR_VIEW_PHOTOS; + fluttr_viewer_show (FLUTTR_VIEWER (fluttr->viewer), + FALSE); + fluttr_photo_show_options (photo, FALSE); + + break; + default: + break; + } + } +} + +static void +_show_viewer (FluttrPhoto *photo, gchar *null, Fluttr *fluttr) +{ + fluttr_viewer_show (FLUTTR_VIEWER (fluttr->viewer), TRUE); + + g_signal_handler_disconnect (G_OBJECT (photo), fluttr->sig); +} + +static void +list_input_cb (ClutterStage *stage, + ClutterEvent *event, + Fluttr *fluttr) +{ + FluttrPhoto *photo = NULL; + + + /* First check for app wide keybinding */ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + + switch (clutter_key_event_symbol (kev)) { + case CLUTTER_Left: + fluttr_list_view_advance_col + (FLUTTR_LIST_VIEW (fluttr->list_view), -1); + break; + case CLUTTER_Right: + fluttr_list_view_advance_col + (FLUTTR_LIST_VIEW (fluttr->list_view), 1); + break; + case CLUTTER_Up: + fluttr_list_view_advance_row + (FLUTTR_LIST_VIEW (fluttr->list_view), -1); + break; + case CLUTTER_Down: + fluttr_list_view_advance_row + (FLUTTR_LIST_VIEW (fluttr->list_view), 1); + break; + case CLUTTER_Return: + case CLUTTER_space: + case CLUTTER_KP_Enter: + fluttr_list_view_activate (FLUTTR_LIST_VIEW + (fluttr->list_view)); + photo = fluttr_list_view_get_active + (FLUTTR_LIST_VIEW (fluttr->list_view)); + fluttr_photo_show_options (photo, TRUE); + fluttr->view = FLUTTR_VIEW_PHOTO; + + fluttr_viewer_go (FLUTTR_VIEWER (fluttr->viewer),photo); + fluttr->sig = g_signal_connect (photo, "activated", + G_CALLBACK (_show_viewer), fluttr); + break; + case CLUTTER_Escape: + fluttr->in = fluttr->sets; + fluttr->out = fluttr->list_view; + if (!clutter_timeline_is_playing (fluttr->timeline)) + clutter_timeline_start (fluttr->timeline); + /* + clutter_actor_set_opacity (fluttr->list_view, 0); + clutter_actor_set_opacity (fluttr->sets, 255); + */ + fluttr->view = FLUTTR_VIEW_SETS; + break; + default: + break; + } + } +} + +static void +sets_input_cb (ClutterStage *stage, + ClutterEvent *event, + Fluttr *fluttr) +{ + FluttrSet *set = NULL; + + + /* First check for app wide keybinding */ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + + switch (clutter_key_event_symbol (kev)) { + case CLUTTER_Left: + fluttr_set_view_advance_col + (FLUTTR_SET_VIEW (fluttr->sets), -1); + break; + case CLUTTER_Right: + fluttr_set_view_advance_col + (FLUTTR_SET_VIEW (fluttr->sets), 1); + break; + case CLUTTER_Up: + fluttr_set_view_advance_row + (FLUTTR_SET_VIEW (fluttr->sets), -1); + break; + case CLUTTER_Down: + fluttr_set_view_advance_row + (FLUTTR_SET_VIEW (fluttr->sets), 1); + break; + case CLUTTER_Return: + case CLUTTER_space: + case CLUTTER_KP_Enter: + fluttr_set_view_activate (FLUTTR_SET_VIEW + (fluttr->sets)); + set = fluttr_set_view_get_active (FLUTTR_SET_VIEW + (fluttr->sets)); + if (set) { + g_object_set (G_OBJECT (fluttr->list_view), + "set", set, NULL); + fluttr->in = fluttr->list_view; + fluttr->out = fluttr->sets; + if (!clutter_timeline_is_playing ( + fluttr->timeline)) + clutter_timeline_start ( + fluttr->timeline); + fluttr->view = FLUTTR_VIEW_PHOTOS; + fluttr_list_view_advance + (FLUTTR_LIST_VIEW (fluttr->list_view), 0); + } + break; + case CLUTTER_Escape: + clutter_main_quit(); + break; + default: + break; + } + } +} + + +static void +browse_input_cb (ClutterStage *stage, + ClutterEvent *event, + Fluttr *fluttr) +{ + /* First check for app wide keybinding */ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + + switch (clutter_key_event_symbol (kev)) { + + case CLUTTER_Escape: + if (fluttr->view == FLUTTR_VIEW_SETS) + clutter_main_quit(); + break; + default: + break; + } + } + /* if we have got here, we can pass the input onto the right place */ + if (fluttr->view == FLUTTR_VIEW_SETS) + sets_input_cb (stage, event, fluttr); + else if (fluttr->view == FLUTTR_VIEW_PHOTOS) + list_input_cb (stage, event, fluttr); + else + photo_input_cb (stage, event, fluttr); +} + +static void +create_background (ClutterActor *bg, guint width, guint height) +{ + GdkPixbuf *pixbuf = NULL; + + pixbuf = gdk_pixbuf_new_from_file_at_scale (PKGDATADIR \ + "/background.svg", + width, + height, + FALSE, + NULL); + if (pixbuf) + clutter_texture_set_pixbuf (CLUTTER_TEXTURE (bg), pixbuf, NULL); + else + g_print ("Could not load pixbuf\n"); +} + diff --git a/attic/gcr/Makefile b/attic/gcr/Makefile new file mode 100644 index 0000000..7e88452 --- /dev/null +++ b/attic/gcr/Makefile @@ -0,0 +1,88 @@ +# A generic buildfiles to build single executable directory projects depending +# only on pkg-config ability to build. It automatically names the project on +# the toplevel directory you're in. +# +# Setting additional CFLAGS like $ export CFLAGS=-Wall -Werror # can help you +# track issues down better after compilation. +# +# 20071008 +# Øyvind Kolås (c) 2007 placed in the Public Domain. +## + +PKGMODULES = clutter-gegl-0.7 + +# you only need to change the following if you want to change where the +# generated tarball gets scp'd to: + +SCP_DESTINATION=pug.vpn:tmp + +BINARY=$(shell basename `pwd`)# +PACKAGE=../$(BINARY).tar.bz2 # you can use both .gz and .bz2 as extension here + +CFLAGS=-Wall +LIBS = -rdynamic + + +## +# end of template configuration. +# + +# This makefile uses the current directory as the only target binary, and +# expects a single of the .c files to contain a main function. + + + +all: $(BINARY) + +# The help available also contains brief information about the different +# build rules supported. +help: + @echo '' + @echo 'Available targets in this make system' + @echo '' + @echo ' (none) builds $(BINARY)' + @echo ' dist create $(PACKAGE)' + @echo ' clean rm *.o *~ and foo and bar' + @echo ' run ./$(BINARY)' + @echo ' gdb gdb ./$(BINARY)' + @echo ' gdb2 gdb ./$(BINARY) --g-fatal-warnings' + @echo ' scp scp $(PACKAGE) $(SCP_DESTINATION)' + @echo ' help this help' + @echo '' + + +LIBS+= $(shell pkg-config --libs $(PKGMODULES) | sed -e 's/-Wl,\-\-export\-dynamic//') +INCS= $(shell pkg-config --cflags $(PKGMODULES)) + +CFILES = $(wildcard *.c) +OBJECTS = $(subst ./,,$(CFILES:.c=.o)) +HFILES = $(wildcard *.h) +%.o: %.c $(HFILES) + $(CC) -g $(CFLAGS) $(INCS) -c $< -o$@ +$(BINARY): $(OBJECTS) + $(CC) -o $@ $(OBJECTS) $(LIBS) + +#$(BINARY): $(CFILES) +# $(LD) $(CFLAGS) $(INCS) $(CFILES) $(LIBS) -o $@ +test: run +run: $(BINARY) + ./$(BINARY) + +../$(BINARY).tar.gz: clean $(CFILES) $(HFILES) + cd ..;tar czvhf $(BINARY).tar.gz $(BINARY)/* + @ls -slah ../$(BINARY).tar.gz +../$(BINARY).tar.bz2: clean $(CFILES) $(HFILES) + cd ..;tar cjvhf $(BINARY).tar.bz2 $(BINARY)/* + @ls -slah ../$(BINARY).tar.bz2 + +dist: $(PACKAGE) + echo $(PACKAGE) +scp: dist + scp $(PACKAGE) $(SCP_DESTINATION) + +gdb: all + gdb --args ./$(BINARY) +gdb2: all + gdb --args ./$(BINARY) -demo --g-fatal-warnings +clean: + rm -fvr *.o $(BINARY) *~ *.patch diff --git a/attic/gcr/README b/attic/gcr/README new file mode 100644 index 0000000..4843649 --- /dev/null +++ b/attic/gcr/README @@ -0,0 +1,28 @@ +gcr - gegl clutter recorder +=========================== + +A setup to use interface Clutter with a worker thread using ffmpeg to +encode a Clutter program to video in realtime using GEGL. + +This screen recorder has not been written for casual recordings, it requires +you to modify the source of the program you want to record. + +The easiest way to integrate gcr in your project is to add a call to: + +gcr_prepare ("/tmp/path_to_output.mpg"); /* to prepare for recording */ + +gcr_start (); /* to start recording */ + + +gcr_stop (); /* to stop recording (currently not implemented, just quit your + application instead) */ + +The workflow I've been using is to encode to mpeg with high bitrate (hardcoded +in the .c file), and then afterwards transcode this to Theora or some other +codec suitable for distribution. + +The includes test example links with clutter-gegl, and also includes a custom +cursor code. + + +/Øyvind K. diff --git a/attic/gcr/custom-cursor.c b/attic/gcr/custom-cursor.c new file mode 100644 index 0000000..dfda6e7 --- /dev/null +++ b/attic/gcr/custom-cursor.c @@ -0,0 +1,392 @@ +#include +#include "custom-cursor.h" +#include +#include + +G_DEFINE_TYPE (CustomCursor, custom_cursor, CLUTTER_TYPE_ACTOR); + +enum +{ + PROP_0, + PROP_NORMAL, + PROP_PRESSED, + PROP_HOT_X, + PROP_HOT_Y +}; + + +#define CUSTOM_CURSOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), CUSTOM_TYPE_CURSOR, CustomCursorPrivate)) + + +typedef struct +{ + gint id; + gint x; + gint y; + gint pressed; + CustomCursorState state; +} DeviceInfo; + +#define MAX_DEVICES 40 + +struct _CustomCursorPrivate +{ + gint hot_x; + gint hot_y; + + ClutterActor *normal; + ClutterActor *pressed; + + DeviceInfo device[MAX_DEVICES]; + gint device_count; +}; + +static void +custom_cursor_allocate (ClutterActor *self, + const ClutterActorBox *box, + gboolean origin_changed) +{ + CustomCursorPrivate *priv = CUSTOM_CURSOR (self)->priv; + + /* chain up to set actor->allocation */ + CLUTTER_ACTOR_CLASS (custom_cursor_parent_class)->allocate (self, box, + origin_changed); + + /* Make sure children also get there allocations */ + if (priv->normal) + clutter_actor_allocate_preferred_size (priv->normal, origin_changed); + + if (priv->pressed) + clutter_actor_allocate_preferred_size (priv->pressed, origin_changed); + +} + + +static void +custom_cursor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + CustomCursor *cursor; + CustomCursorPrivate *priv; + + cursor = CUSTOM_CURSOR(object); + priv = cursor->priv; + + switch (prop_id) + { + case PROP_HOT_X: + priv->hot_x = g_value_get_int (value); + break; + case PROP_HOT_Y: + priv->hot_y = g_value_get_int (value); + break; + case PROP_NORMAL: + if (priv->normal) + g_object_unref (priv->normal); + priv->normal = g_value_dup_object (value); + clutter_actor_set_parent (priv->normal, CLUTTER_ACTOR (cursor)); + break; + case PROP_PRESSED: + if (priv->pressed) + g_object_unref (priv->pressed); + priv->pressed = g_value_dup_object (value); + clutter_actor_set_parent (priv->pressed, CLUTTER_ACTOR (cursor)); + clutter_actor_queue_relayout (CLUTTER_ACTOR (cursor)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +custom_cursor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + CustomCursorPrivate *priv = CUSTOM_CURSOR (object)->priv; + + switch (prop_id) + { + case PROP_HOT_X: + g_value_set_int (value, priv->hot_x); + break; + case PROP_HOT_Y: + g_value_set_int (value, priv->hot_y); + break; + case PROP_NORMAL: + g_value_set_object (value, priv->normal); + break; + case PROP_PRESSED: + g_value_set_object (value, priv->pressed); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +custom_cursor_pick (ClutterActor *self, + const ClutterColor *color) +{ + /* The cursor is not pickable at all + */ +} + +static void +custom_cursor_paint (ClutterActor *self) +{ + CustomCursorPrivate *priv = CUSTOM_CURSOR (self)->priv; + gint no; + + + for (no=0; nodevice_count; no++) + { + cogl_push_matrix (); + + cogl_translate (priv->device[no].x, priv->device[no].y, 0); + cogl_translate (-priv->hot_x, -priv->hot_y, 0); + + switch (priv->device[no].state) + { + case CUSTOM_CURSOR_NORMAL: + if (priv->normal) + clutter_actor_paint (priv->normal); + else + { +#define LENGTH 30 +#define GAP 15 + cogl_color (&((ClutterColor){0x00, 0x00, 0x00, 0x77})); + cogl_rectangle (-LENGTH-GAP, -2, LENGTH, 4); + cogl_rectangle (GAP, -2, LENGTH, 4); + cogl_rectangle (-2, -LENGTH-GAP, 4, LENGTH); + cogl_rectangle (-2, GAP, 4, LENGTH); + + cogl_color (&((ClutterColor){0xff, 0xff, 0xff, 0xaa})); + cogl_rectangle (-LENGTH-GAP, -1, LENGTH, 2); + cogl_rectangle (GAP, -1, LENGTH, 2); + cogl_rectangle (-1, -LENGTH-GAP, 2, LENGTH); + cogl_rectangle (-1, GAP, 2, LENGTH); + } + break; + case CUSTOM_CURSOR_PRESSED: + if (priv->pressed) + clutter_actor_paint (priv->pressed); + else + { + cogl_color (&((ClutterColor){0xff, 0xff, 0xff, 0x77})); + cogl_path_ellipse (0, 0, CLUTTER_UNITS_FROM_INT (52), + CLUTTER_UNITS_FROM_INT (52)); + cogl_path_arc (0, 0, CLUTTER_UNITS_FROM_INT (38), + CLUTTER_UNITS_FROM_INT (38), + 0, 1027); + cogl_path_fill (); + + cogl_color (&((ClutterColor){0x45, 0x66, 0xff, 0x55})); + cogl_path_ellipse (0, 0, CLUTTER_UNITS_FROM_INT (50), + CLUTTER_UNITS_FROM_INT (50)); + cogl_path_arc (0, 0, CLUTTER_UNITS_FROM_INT (40), + CLUTTER_UNITS_FROM_INT (40), + 0, 1027); + cogl_path_fill (); + } + } + cogl_pop_matrix (); + } +} + + + +static void +custom_cursor_class_init (CustomCursorClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + gobject_class->set_property = custom_cursor_set_property; + gobject_class->get_property = custom_cursor_get_property; + actor_class->pick = custom_cursor_pick; + actor_class->paint = custom_cursor_paint; + actor_class->allocate = custom_cursor_allocate; + + g_type_class_add_private (gobject_class, sizeof (CustomCursorPrivate)); + +#define PARAM_FLAGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |\ + G_PARAM_STATIC_BLURB | \ + G_PARAM_READABLE | G_PARAM_WRITABLE) + + g_object_class_install_property (gobject_class, + PROP_HOT_X, + g_param_spec_int ("hot-x", + "hot-Y", + "x coordinate of cursor tip", + 0, G_MAXINT, + 0, + PARAM_FLAGS)); + + g_object_class_install_property (gobject_class, + PROP_HOT_Y, + g_param_spec_int ("hot-y", + "hot Y", + "Y coordinate of cursor tip", + 0, G_MAXINT, + 0, + PARAM_FLAGS)); + + + g_object_class_install_property (gobject_class, + PROP_NORMAL, + g_param_spec_object ("normal", + "Normal", + "Actor to show when moving the mouse around", + CLUTTER_TYPE_ACTOR, + PARAM_FLAGS)); + + g_object_class_install_property (gobject_class, + PROP_PRESSED, + g_param_spec_object ("pressed", + "Pressed", + "Actor to show when a mouse button is pressed", + CLUTTER_TYPE_ACTOR, + PARAM_FLAGS)); + +#undef PARAM_FLAGS +} + +static void +custom_cursor_init (CustomCursor *self) +{ + CustomCursorPrivate *priv; + + self->priv = priv = CUSTOM_CURSOR_GET_PRIVATE (self); + + priv->normal = NULL; + priv->pressed = NULL; + priv->hot_x = 0; + priv->hot_y = 0; + priv->device_count = 0; +} + +static gint +get_device_no (CustomCursorPrivate *priv, + gint device_id) +{ + gint i; + for (i=0; idevice_count; i++) + { + if (priv->device[i].id == device_id) + return i; + } + g_assert (priv->device_count+1 < MAX_DEVICES); + priv->device[priv->device_count].id = device_id; + priv->device_count++; + return priv->device_count-1; +} + +static gboolean soft_cursor_capture (ClutterActor *stage, + ClutterEvent *event, + gpointer data) +{ + CustomCursor *self = CUSTOM_CURSOR (data); + CustomCursorPrivate *priv = self->priv; + + switch (clutter_event_type (event)) + { + case CLUTTER_MOTION: + case CLUTTER_BUTTON_PRESS: + case CLUTTER_BUTTON_RELEASE: + { + gint x, y; + gint id = clutter_event_get_device_id (event); + gint no = get_device_no (priv, id); + clutter_event_get_coords (event, &x, &y); + +#if 0 + gchar c; + + switch (clutter_event_type (event)) + { + case CLUTTER_MOTION: + c = 'm'; + break; + case CLUTTER_BUTTON_PRESS: + c = 'p'; + break; + case CLUTTER_BUTTON_RELEASE: + c = 'r'; + break; + default: + c = '?'; + } + + g_print ("%c%c%c%c %i,%i\n", + id!=0?' ':c, + id!=1?' ':c, + id!=2?' ':c, + id!=3?' ':c, + id!=4?' ':c, + x, y); +#endif + + if (clutter_event_type (event) == CLUTTER_BUTTON_PRESS) + { + priv->device[no].state = CUSTOM_CURSOR_PRESSED; + } + else if (clutter_event_type (event) == CLUTTER_BUTTON_RELEASE) + { + priv->device[no].state = CUSTOM_CURSOR_NORMAL; + } + custom_cursor (x,y, id); + } + default: + break; + } + return FALSE; +} + +/* always returns the same cursor */ +ClutterActor * +custom_cursor (gint x, + gint y, + gint device_id) +{ + static ClutterActor *cursor = NULL; + CustomCursorPrivate *priv; + + if (!cursor) + { + ClutterActor *stage = clutter_stage_get_default (); + cursor = g_object_new (CUSTOM_TYPE_CURSOR, NULL); + +/*if(0) clutter_x11_enable_xinput ();*/ + priv = CUSTOM_CURSOR (cursor)->priv; + priv->device_count = 0; + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), cursor); + clutter_actor_show (cursor); + g_signal_connect (stage, "captured-event", + G_CALLBACK (soft_cursor_capture), cursor); + if(0)clutter_stage_hide_cursor (CLUTTER_STAGE (stage)); + } + else + { + priv = CUSTOM_CURSOR (cursor)->priv; + } + + { + gint no = get_device_no (priv, device_id); + priv->device[no].x = x; + priv->device[no].y = y; + } + + clutter_actor_queue_redraw (cursor); + clutter_actor_raise_top (cursor); + return cursor; +} + + + diff --git a/attic/gcr/custom-cursor.h b/attic/gcr/custom-cursor.h new file mode 100644 index 0000000..f40f830 --- /dev/null +++ b/attic/gcr/custom-cursor.h @@ -0,0 +1,77 @@ +/* + * CustomCursor. + * + * Copyright (C) 2008 OpenedHand, authored by Øyvind Kolås. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __CUSTOM_CURSOR_H__ +#define __CUSTOM_CURSOR_H__ + +#include +#include + + +G_BEGIN_DECLS + +#define CUSTOM_TYPE_CURSOR (custom_cursor_get_type ()) +#define CUSTOM_CURSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUSTOM_TYPE_CURSOR, CustomCursor)) +#define CUSTOM_CURSORCLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUSTOM_TYPE_CURSOR, CustomCursorClass)) +#define CLUTTER_IS_CAIRO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUSTOM_TYPE_CURSOR)) +#define CLUTTER_IS_CAIRO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUSTOM_TYPE_CURSOR)) +#define CUSTOM_CURSORGET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CUSTOM_TYPE_CURSOR, CustomCursorClass)) + +typedef struct _CustomCursor CustomCursor; +typedef struct _CustomCursorClass CustomCursorClass; +typedef struct _CustomCursorPrivate CustomCursorPrivate; + +typedef enum { + CUSTOM_CURSOR_NORMAL, + CUSTOM_CURSOR_PRESSED +}CustomCursorState; + +struct _CustomCursor +{ + ClutterActor parent; + CustomCursorPrivate *priv; +}; + +struct _CustomCursorClass +{ + /*< private >*/ + ClutterActorClass parent_class; + + void (*_custom_cursor_1) (void); + void (*_custom_cursor_2) (void); + void (*_custom_cursor_3) (void); + void (*_custom_cursor_4) (void); +}; + +GType custom_cursor_get_type (void) G_GNUC_CONST; + + +/* update positional data for cursor, first call to this function enables custom cursors, + * subsequent calls will update the position of the given device_id (needs to be called + * during pointer grabs) */ + +ClutterActor * custom_cursor (gint x, + gint y, + gint device_id); + +G_END_DECLS + +#endif /* __CUSTOM_CURSORH__ */ diff --git a/attic/gcr/gcr.c b/attic/gcr/gcr.c new file mode 100644 index 0000000..68888e3 --- /dev/null +++ b/attic/gcr/gcr.c @@ -0,0 +1,206 @@ +/* Minimal screencast recorder for clutter (GL) using GEGL. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Copyright (C) 2008 Øyvind Kolås + * Copyright (C) 2008 OpenedHand + */ + +#include +#include +#include +#include + +/* some basic configuration */ +#define FPS 25 +#define KBITRATE (7000*8) + +/* TODO: Move away from pixbufs, the original code used a pixbuf but + * with newer GEGL it should be better to use a linear buffer directly + */ + +static GThread *encode_thread = NULL; +static GStaticMutex mutex = G_STATIC_MUTEX_INIT; +static gint prev_width = 0; +static gint prev_height = 0; +static gint frames = 0; +static guchar *pixels = NULL; +static guchar *pixels_inverted = NULL; +static gboolean got_data = FALSE; +static GdkPixbuf *pixbuf = NULL; +static GeglNode *gegl = NULL; +static GeglNode *load_pixbuf = NULL; +static GeglNode *ff_save; +static long prev_stored = 0; + +static gpointer encoder (gpointer data); +static void save_frame (gpointer data); + +long babl_ticks (void); + +void gcr_prepare (const gchar *path) +{ + if (!g_thread_supported ()) g_thread_init (NULL); + + gegl_init (NULL, NULL); + gegl = gegl_node_new (); + + ff_save = gegl_node_new_child (gegl, + "operation", "ff-save", + "bitrate", KBITRATE *1000.0, + "fps", (FPS * 1.0), + "path", path, + NULL + ); + load_pixbuf = gegl_node_create_child (gegl, "pixbuf"); + gegl_node_link (load_pixbuf, ff_save); +} + +void gcr_start (void) +{ + ClutterActor *stage = clutter_stage_get_default (); + + g_signal_connect_after (stage, "paint", G_CALLBACK (save_frame), NULL); + + encode_thread = g_thread_create (encoder, NULL, FALSE, NULL); + + prev_stored = babl_ticks (); +} + +void gcr_stop (void) +{ + /* FIXME: NYI */ +} + +/* this is called by clutter each time a stage has been rendered */ +static void save_frame (gpointer data) +{ + + GLint viewport[4]; + gint x, y, width, height; + glong delta; + + /* issue commands that might make sure we're fully rendered ... */ + glFinish (); + glFlush (); + + glGetIntegerv(GL_VIEWPORT, viewport); + + x = viewport[0]; + y = viewport[1]; + width = viewport[2] - x; + height = viewport[3] - y; + + /* by locking here we wait until the encoder thread is finished encoding */ + g_static_mutex_lock (&mutex); + + /* we only create the pixbuf on the first frame (hopefully) */ + + if (prev_width != width || + prev_height != height) + { + if (pixels) + g_free (pixels); + if (pixels_inverted) + g_free (pixels_inverted); + if (pixbuf) + g_object_unref (pixbuf); + pixels_inverted = g_malloc (width * height * 4); + pixels = g_malloc (width * height * 4); + + pixbuf = gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, TRUE, 8, + width, height, width * 4, NULL, NULL); + + prev_width = width; + prev_height = height; + } + + /* figure out the time elapsed since the previously stored encoded frame */ + delta = babl_ticks () - prev_stored; + + if (got_data == FALSE && delta >= 1000000.0/FPS) + { + prev_stored += delta; + glReadPixels (x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels_inverted); + /* we only do the read pixels here, the encoder thread does the + * inversion + */ + got_data = TRUE; + + frames = delta / (1000000.0/FPS); + /* FIXME: * precision loss, we need to keep a remainder around to produce + * the correct framerate */ + } + g_static_mutex_unlock (&mutex); +} + +static gpointer encoder (gpointer data) +{ + while (TRUE) + { + gint rowstride; + gint width, height; + gint repeats = 0; + + gboolean action = FALSE; + + /* critical section */ + g_static_mutex_lock (&mutex); + if (got_data) + { + gint y; + height = prev_height; + width = prev_width; + rowstride = prev_width * 4; + + /* flip the image right side up when copying it */ + for (y=0; y + +/* this needs to be called before clutter_main() */ +void gcr_prepare (const gchar *path); +void gcr_start (void); +void gcr_stop (void); + +#endif diff --git a/attic/gcr/test.c b/attic/gcr/test.c new file mode 100644 index 0000000..95f3490 --- /dev/null +++ b/attic/gcr/test.c @@ -0,0 +1,27 @@ +#include + +#include "custom-cursor.h" + +#include "gcr.h" + + +gint +main (int argc, + char *argv[]) +{ + ClutterActor *stage; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + + custom_cursor (0, 0, 0); + + gcr_prepare ("/tmp/test.mpg"); + clutter_actor_show (stage); + gcr_start (); + clutter_main (); + gcr_stop (); + + return 0; +} diff --git a/attic/mallums-magic-browser/Makefile b/attic/mallums-magic-browser/Makefile new file mode 100644 index 0000000..875a5dd --- /dev/null +++ b/attic/mallums-magic-browser/Makefile @@ -0,0 +1,86 @@ +# A generic buildfiles to build single executable directory projects depending +# only on pkg-config ability to build. It automatically names the project on +# the toplevel directory you're in. +# +# Setting additional CFLAGS like $ export CFLAGS=-Wall -Werror # can help you +# track issues down better after compilation. +# +# 20071008 +# Øyvind Kolås (c) 2007 placed in the Public Domain. +## + +PKGMODULES = tidy-1.0 clutter-0.8 webkit-clutter-1.0 + +# you only need to change the following if you want to change where the +# generated tarball gets scp'd to: + +SCP_DESTINATION=pug.vpn:tmp + +BINARY=$(shell basename `pwd`)# +PACKAGE=../$(BINARY).tar.bz2 # you can use both .gz and .bz2 as extension here + + +## +# end of template configuration. +# + +# This makefile uses the current directory as the only target binary, and +# expects a single of the .c files to contain a main function. + + + +all: $(BINARY) + +# The help available also contains brief information about the different +# build rules supported. +help: + @echo '' + @echo 'Available targets in this make system' + @echo '' + @echo ' (none) builds $(BINARY)' + @echo ' dist create $(PACKAGE)' + @echo ' clean rm *.o *~ and foo and bar' + @echo ' run ./$(BINARY)' + @echo ' gdb gdb ./$(BINARY)' + @echo ' gdb2 gdb ./$(BINARY) --g-fatal-warnings' + @echo ' scp scp $(PACKAGE) $(SCP_DESTINATION)' + @echo ' help this help' + @echo '' + + +LIBS= $(shell pkg-config --libs $(PKGMODULES) | sed -e 's/-Wl,\-\-export\-dynamic//') +INCS= $(shell pkg-config --cflags $(PKGMODULES)) + + +CFILES = $(wildcard *.c) +OBJECTS = $(subst ./,,$(CFILES:.c=.o)) +HFILES = $(wildcard *.h) +%.o: %.c $(HFILES) + $(CC) -g $(CFLAGS) $(INCS) -c $< -o$@ +$(BINARY): $(OBJECTS) + $(CC) -o $@ $(OBJECTS) $(LIBS) + +#$(BINARY): $(CFILES) +# $(LD) $(CFLAGS) $(INCS) $(CFILES) $(LIBS) -o $@ +test: run +run: $(BINARY) + ./$(BINARY) + +../$(BINARY).tar.gz: clean $(CFILES) $(HFILES) + cd ..;tar czvhf $(BINARY).tar.gz $(BINARY)/* + @ls -slah ../$(BINARY).tar.gz +../$(BINARY).tar.bz2: clean $(CFILES) $(HFILES) + cd ..;tar cjvhf $(BINARY).tar.bz2 $(BINARY)/* + @ls -slah ../$(BINARY).tar.bz2 + +dist: $(PACKAGE) + echo $(PACKAGE) +scp: dist + scp $(PACKAGE) $(SCP_DESTINATION) + +gdb: all + gdb --args ./$(BINARY) +gdb2: all + gdb --args ./$(BINARY) -demo --g-fatal-warnings +clean: + rm -fvr *.o $(BINARY) *~ *.patch diff --git a/attic/mallums-magic-browser/README-mozilla b/attic/mallums-magic-browser/README-mozilla new file mode 100644 index 0000000..a033441 --- /dev/null +++ b/attic/mallums-magic-browser/README-mozilla @@ -0,0 +1,16 @@ +Notes on building the mozilla version: + +The mozilla version of mallums-magic-browser requires mozilla built with the +headless backend and ClutterMozEmbed; + +git://git.o-hand.com/mozilla-headless.git +git://git.clutter-project.org/clutter-mozembed.git + +It also builds against clutter 0.9 instead of 0.8. + +To build, you'll want a line something along the lines of; + +gcc -o web-browser-mallum web-browser-mallum.c -Wall -g `pkg-config --cflags --libs cluttermozembed` -DWITH_MOZILLA + +Which should then produce a binary 'web-browser-mallum'. Note that the port +to Clutter 0.9 was mmade in a rush, so some animations may not be correct. diff --git a/attic/mallums-magic-browser/assets/back.png b/attic/mallums-magic-browser/assets/back.png new file mode 100755 index 0000000000000000000000000000000000000000..a7617db620decfa502fb12886d0e1de59bf2ef1b GIT binary patch literal 2587 zcmV+$3gq>PP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RT0|FKcD~R)X@Bjb_tw}^dRA}DK zS$k|-)fqqMK78->BZ(hP+&Hf$q)8LfmX=b)qoPbO4Q&jBHiiUrG^0jC+a#t@?T=|l z15FcBwTWrtLXyHpSD+6#(G_8{~ah$|XY}eQE zq~rU`mcQfk`@Zx2&iNh?6d|vl;|YqO${CXJSZMQF2j|#g=j_c6&QWhO*_<5B*#H1Q z(xh}+O$&k~_ytM06qn=uqAL1iq|E48k34s~7Zr*D7P5#x$5R~5wKzD(whBwdHjmA- z$z^s`6ObSwgb)IF!~ZpaVE_OCHZY21V!@fzOkX%1J{_0hr$kL0^xp2(R@4B#k7qcF zYw*}SPt}#xJ?OT&8##)zLI?|Tgkczltjn3O7#^RTpFAE+&FmAk%!qfhS6)^F-ss~Y zMNsZ?OZg+Mt8VqWt?ovKWVk|s-^dUJDRMLu^$$lbcFu|6_cWx=?%M3dMH}!&KTp|A z);pS<>weMfY<_^HSTg_sEEo7|jQ{`u1u61qY~*8K%(o|@Bu?+zlz&)#A#e8c%wb>m z6XU{_b2`#><0grYbUiR180r~4(*9;Y&lU!LfH(J!9rezpLRSz*$hgUZFhUVAJoWdn z-skt8@3iFwzT-U4^p5rH5+q>`V~h(0aqZg0K4)7$FU2Fr#y@R$IE}HUbhvvBXTNNx`3(I2A}t9uzh40yeO2rn$xn z%j$2fwKsjo!8t3l?Sl=BL+POJZ1B_PQfl(k_6=X&PSmxEG(owWoXs!Rl+cbN_-V(xm)_ajHONzo0qYv%sh+X! zC*qP2&V?6}CW-&@AKTqE_$42{u$rT|h8EYYyI7Jn7aB6iKzcAebNOuWx!$YC<=An5V*JEHnz58HB*V41Zry36tu5CXuy=^3JhrN*%gye_LPEwc z3?rjuQWqk9?|v3KwKF6J|GcB^+1NAdy;(tFfRl4#==imyUrL}=@Nu8=sx=L;SH0Djo!HL!tm zPu?Je4%Ss;XC3#wb&)42nxM*8nJc!j6lcxnZjVY~|M1npu8=s>^<+!?Y_XY8KH3b) za200vwx|?-k1~;rXSKz%DVz7NNw%bk#OTSfxbF`Mb^hdzR&S>0OfJu-5<&>wmdXvI z^OvhBGtD(RI9GKp3kCUVa3p@|{ppndH5IATJ6a2`q>8Po?5xvcp)6}DJLB9+LXyhn z`CxkL;^5W(S7LIs=jj%&1pd!LK!UWhjxAIfYj4U1KCZ+5#;Ehr(3-0a)T)( z+kybXQl_ktC}SM;i`B3YLWm5c2a@BT2uk$mQ!4LeJFwJa4v2AXWP!Ws#_hKUa~XJhxd;a*ydQ~TgU*0kyPU& zR8o!iVFROVC0&(e%|@2wem9mFZaZ+LlShUg{y}5*&e=+dVPKrl;{Ak#MBls`3+9qQ zxmb7oZLYgsSZCk(M=M=&_q$h?=`;#BfrKi|%DOm0s7RR!OEZ1BR74O$$da6OoqgjY zx0m1B>9N%Q?BGPF`)1-_r~t!KXh6YofIvWx#N_a41{Xc!O6b002Nn;$Sc{`40^%ay~`? z000Ro+RatBY%Rb4)q2~yS9=5RY&kHocq`=wHxR{A=K5S~ab)OPC^Pwqgwg}o{n#7$ z>&97eYPgtQsD?CkIz8TZBGmJ2x4)z0z(n@fyW8Jk9~RCX$fbddF~(78cH+aSeRqAO zFC^oP?@H=or-l`|&{!rRNmZKbHs0pE=jB@K+Lt-X+>^&{k<@U z*FeLnawR$Rwu0rs8!8+L?DdSypFfIlakBu7G1jrB1yZADKbbwe<4~ZZ^ef;edGp7i z557N_nZA_G`xs-4FhZk=3m^4Nz147Crf}^S-B4#IMcKMEm)B%r7& zOT!&yCfAxNaqNMQLm%`=NF2fj)>+bgi;HnTRA+5^xYXpTT56vKPR5kEiOIBYkA@Zh zl2`Bt0iJd-?x)(y?)-I`X;pQxqomJ?hjayHQktPk1~3c?(hNg#HX53kT)H7iEgl}4 zKl|H=9DMz;+8nCF?f}o83im#rRO69iNL_3gVvKQ0oxge}a%}gJsZMKNo;xz#X*(17 z@aJ(QGJUg0Obg%>N^JIQyZAG*4N`lDq1x>t3ueH*Gf&442RIp9@DIgm8hZx}hooapXim^zBLM^Z$9Y zdg++Y3B=)Po}dX+t<&WGUcI%gz09<#mV&ftISBscY(du&S}Zt`9(wz#5_(6)ivN-7 zWf*i{$BP->%#qfX3by7MH(PgqDebB;5rt3e4Z|=rLy?nOY-U!P{P&z3_=}3=!Ebxo z(<@qz9+}~3j}K5yBpSQaIe7Seh= xkko|BDLp3e*xBn#KBWF@K^u<002ovPDHLkV1i2n2B`o5 literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/bground.png b/attic/mallums-magic-browser/assets/bground.png new file mode 100755 index 0000000000000000000000000000000000000000..0d5b4c32f347f5f54bada03130426eca940f1ce8 GIT binary patch literal 6200 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 BrZ4~i literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/document-new.png b/attic/mallums-magic-browser/assets/document-new.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d64bb90b32dfec83232de6478afc1a6b335b8f GIT binary patch literal 1008 zcmV9&7>1-t%; zZoBM??ke>U^dD4er7kL=hDJeZLn7jm5(v08gqI)OnbXC!k+JW?xKusTXl69mbH4MM z@xcEq@?UJK$`~hw1@dkN7mNd7!v<|zXR5g`LOT&)eSQ72TrT&mh?I;m7-R6>>yxk%nY!jFra=|`UYN$jJFw$o6!Q~hf9-+XQxm0cZ zJOI$ON<^+(?>q^>$`OG*B(MkM>^|0nAkF)!0Ktc~6Mw%ewATx-0 z2=>Fy#)6oaAmto-RYqh2Z%eTNabbvae=k5%Xre;9nY`Cxo3Q|K&2t~+0bbw5`9+*Bg4+i7q|>%JJZgfrw$XMK(PuKxMWP1) zmY0{W>pwdb1w8NJv=RMSizu_;qj``kQ{8>c()+Ea(0)p>xdkyNp>qyZjjXz5Nh%eb zJ_06CKaG(SAOf&5#fzQa`ScU_6UFA1NR%C^9_W{0asp;?Orsp*IYRUtB#$=>{POGf z$mGS7-aUt|f-L1XOD{mFpjwHh3d#hRje(RK4xrbrCP4qK*Ol9z4QaP$ zB0w01u}ZUm;sE+(Xb;3G&N>H11xP%I05&!@FlI1uh6OanWah@e?qL{S$7*F|CG}!T zQk>+WI7tmb|J9u4iTE=iTT(+XjMA*NEST6TNGiioz`DnJl8oemyOdkq1z9qR=SBkP zt&A)XRZRu!2Phk3PF1yBE|(FB-UUGr{Oh~`$mjECz&vmawE6)`KxJ=l@5|NI)h|Rk zFN(X9=I-w9SHJ>bfdjzz`fv=G1MUG+ow>a$ literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/forward.png b/attic/mallums-magic-browser/assets/forward.png new file mode 100755 index 0000000000000000000000000000000000000000..266200d1149891c6744460506f9c24ae72d1f75b GIT binary patch literal 2593 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 DV*BZ; literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/go-next.png b/attic/mallums-magic-browser/assets/go-next.png new file mode 100644 index 0000000000000000000000000000000000000000..036e4326cc394ff8c6adcf625a172e5b6a5a6762 GIT binary patch literal 1849 zcmV-92gdk`P)bF#wEv+&kb}U^p-a7!P~|xB<8txFTwL z3OE6D0DlMe0SAGjz#IFPhwfrIsF+Uv37-PS0@I^s954bXi)`kyn~pxaf!BZl>;ZNI z2g0(@RVbH&9QfoKUjf_*%m+RLj0UO-wUdQ3a2hxaYyp~pLoeSKI+GemH1PN*y?|lB zoxpO8_>iRi6Ce$AViIcrnt@|4Ee$>IAj}zX0~U zxFo-<@{*Xi)>i=NE;O{Wa>>fys@&0$2#F#KL5pT+&%>vi}|^(!hU!9|NnOTNqCFZE(RrQ`Y$u zFdKLTi|6@5qN2}pn0C)b-wnbxc_yq51ZnKNSP4AUz95{->A=*dy?{x;D&P~u%O(x{ z8`uH-9{5|-=VRC;OvMhgfy%E3JNUi~?A<&6-RP9cZso)<;5*ocO+x+%umbokaB}xO zAq_BXy*~i_5%@wh=%mPAv8&;Ln}COauVdjBvJFme@)f`m;HSX*5|BR$d>?px*Sv71 zzedxWd>L>v@HJp2a25Ga>NuRnq_k?+JlhYwvn+9=#4?FW2@*UnOZ+Amd4OH>Lbt?U zBp#Odp2S}z&Lym8gk4R6;|qO1)7h7CY-h_s;sTPvRko?@An$=q`}F zBnC;`CUG->o6+o@#Pn$PlafzMoNApDe^=>?);Zz0#9E1^5*sDnDsUwvah*iyC;|iGl0XvYv_S$e<;xUP@ z%J$Uhgic7}7KsrqlFo=i$(O#yg3diXmT02Qp~6E1Z$oB=N%pDa_V4vKj$7BdP*aB;^y0Cn4a88++pV@a>83UwY^fi9pGlaNK8=G#M;M3Y2E!VoHnYKbe8 zj5=qBuac;h_?5)H5!1-}JKye84ue0wi~c(OVA+Enb6QQiJJOWpUOqNzSX<> zRzF%|g~ZP#CQFnTd+tb_k!Xw*W4yBmoZIGy1FM105nl`F0sa9z475CRYj~%Rttu=q zdr7??*a_Q)40q%e1)^IrU#d)(QaSW@BT#xBB-{I!4%H*TK@8<3Do3I3|qQ14* zmEc1$c9M_>_*cZOBm2t>X5^mTz8ouTtiURdN#gPuELWPTqzneG1j-Zik3$-G9rzKj zdi}I;UNWs;$20Zrkr^2bejdBuOu-9J!ECU{3;4&x_ z8S<}Vb+RYcO%4C;uVLPqUD)m`fw{mpunX3uD)RMUnqLL1ZJcu9%x4fQjeDQ-DPRg# z__z%#9VP0U5ZR?Fu>G_X+puji)8<|tM6dN>yF6>s^2&@M> z)=nxxp*tH(UhtJzh+G8B0Ip+T75hwu{wP*wTL&Cyn3!8KeNoiFOJDTmSm~%5`?1F@ z*e_O+R3+1x#*bn5nRZMv`=6YUUoQP&KoYp`C0~a9hGGP^$$j)W3QH7JMNQwv!r>9D n0>2+P6#ajE&G_?6r-k7E+7!B&kJ2}>00000NkvXXu0mjfmf&s* literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/go-previous.png b/attic/mallums-magic-browser/assets/go-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..895ce3380f9dbfa5f081124febe79cc760c50a9c GIT binary patch literal 1841 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 V&OS-&I+y?e002ovPDHLkV1nf$%cTGS literal 0 HcmV?d00001 diff --git a/attic/mallums-magic-browser/assets/toolbar-bg.png b/attic/mallums-magic-browser/assets/toolbar-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..21fbd7d4d6261a8dd75db237bdceffc8bacaa7e2 GIT binary patch literal 26595 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 m4Z$%WJCn-sowqY0;{ONDvW#kMpplpW0000 + +#include +#include "popup-factory.h" + +static void popup_factory_iface_init (WebKitPopupFactoryInterface *iface); + +enum { + NAME_COLUMN, + LAST_COLUMN +}; + +enum { + SHOW_MENU, + HIDE_MENU, + LAST_SIGNAL +}; + +G_DEFINE_TYPE_WITH_CODE (PopupFactory, popup_factory, TIDY_TYPE_LIST_VIEW, + G_IMPLEMENT_INTERFACE (WEBKIT_TYPE_POPUP_FACTORY, + popup_factory_iface_init)); +#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), POPUP_TYPE_FACTORY, PopupFactoryPrivate)) + +struct _PopupFactoryPrivate +{ + ClutterModel *model; +}; + +static guint32 signals[LAST_SIGNAL] = {0, }; + +static void +popup_factory_class_init (PopupFactoryClass *klass) +{ + g_type_class_add_private (klass, sizeof (PopupFactoryPrivate)); + + signals[SHOW_MENU] = g_signal_new ("show-menu", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_NO_RECURSE | + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET ( PopupFactoryClass, + show_menu), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + signals[HIDE_MENU] = g_signal_new ("hide-menu", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_NO_RECURSE | + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET ( PopupFactoryClass, + hide_menu), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); +} + +static void +popup_factory_init (PopupFactory *factory) +{ + PopupFactoryPrivate *priv = factory->priv = GET_PRIVATE (factory); + + priv->model = clutter_list_model_new (LAST_COLUMN, G_TYPE_STRING, "name"); + g_object_set (G_OBJECT (factory), + "model", priv->model, + NULL); +} + +static void +factory_clear (WebKitPopupFactory *factory) +{ + PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv; + + if (priv->model) { + g_object_unref (priv->model); + } + + priv->model = clutter_list_model_new (LAST_COLUMN, G_TYPE_STRING, "name"); +} + +static void +factory_append_separator (WebKitPopupFactory *factory) +{ +} + +static void +factory_append_item (WebKitPopupFactory *factory, + const char *text) +{ + PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv; + + clutter_model_append (priv->model, NAME_COLUMN, text, -1); +} + +static void +factory_show (WebKitPopupFactory *factory, int index) +{ + PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv; + + tidy_list_view_set_model (TIDY_LIST_VIEW (factory), priv->model); + g_signal_emit (factory, signals[SHOW_MENU], 0); +} + +static void +factory_hide (WebKitPopupFactory *factory) +{ + g_signal_emit (factory, signals[HIDE_MENU], 0); + tidy_list_view_set_model (TIDY_LIST_VIEW (factory), NULL); +} + +static void +popup_factory_iface_init (WebKitPopupFactoryInterface *iface) +{ + iface->clear = factory_clear; + iface->append_separator = factory_append_separator; + iface->append_item = factory_append_item; + iface->show = factory_show; + iface->hide = factory_hide; +} diff --git a/attic/mallums-magic-browser/popup-factory.h b/attic/mallums-magic-browser/popup-factory.h new file mode 100644 index 0000000..0ec3d41 --- /dev/null +++ b/attic/mallums-magic-browser/popup-factory.h @@ -0,0 +1,31 @@ +#ifndef _POPUP_FACTORY +#define _POPUP_FACTORY + +#include + +G_BEGIN_DECLS + +#define POPUP_TYPE_FACTORY (popup_factory_get_type ()) + +typedef struct _PopupFactoryPrivate PopupFactoryPrivate; + +#define POPUP_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPUP_TYPE_FACTORY, PopupFactory)) + +typedef struct { + TidyListView parent; + + PopupFactoryPrivate *priv; +} PopupFactory; + +typedef struct { + TidyListViewClass parent_class; + + void (*show_menu) (PopupFactory *factory); + void (*hide_menu) (PopupFactory *factory); +} PopupFactoryClass; + +GType popup_factory_get_type (void); + +G_END_DECLS + +#endif diff --git a/attic/mallums-magic-browser/scroll-frame.c b/attic/mallums-magic-browser/scroll-frame.c new file mode 100644 index 0000000..27ac97a --- /dev/null +++ b/attic/mallums-magic-browser/scroll-frame.c @@ -0,0 +1,362 @@ +#include + +#include "scroll-frame.h" + +static void scrollable_iface_init (TidyScrollableInterface *iface); + +static void scrollable_set_adjustments (TidyScrollable *scrollable, + TidyAdjustment *hadjustment, + TidyAdjustment *vadjustment); +static void scrollable_get_adjustments (TidyScrollable *scrollable, + TidyAdjustment **hadjustment, + TidyAdjustment **vadjustment); + +enum { + PROP_0, + PROP_HADJUST, + PROP_VADJUST +}; + +G_DEFINE_TYPE_WITH_CODE (ScrollFrame, scroll_frame, TIDY_TYPE_FRAME, + G_IMPLEMENT_INTERFACE (TIDY_TYPE_SCROLLABLE, + scrollable_iface_init)); +#define FRAME_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), SCROLL_TYPE_FRAME, ScrollFramePrivate)) + +struct _ScrollFramePrivate { + TidyAdjustment *hadj; + TidyAdjustment *vadj; + + WebkitAdjustment *wk_hadj; + WebkitAdjustment *wk_vadj; + + guint hadj_idle; + gdouble hadj_value; + + guint vadj_idle; + gdouble vadj_value; +}; + +static void +scroll_frame_finalize (GObject *object) +{ + G_OBJECT_CLASS (scroll_frame_parent_class)->finalize (object); +} + +static void +scroll_frame_dispose (GObject *object) +{ + ScrollFramePrivate *priv = SCROLL_FRAME (object)->priv; + + if (priv->hadj_idle) { + g_source_remove (priv->hadj_idle); + priv->hadj_idle = 0; + } + + if (priv->vadj_idle) { + g_source_remove (priv->vadj_idle); + priv->vadj_idle = 0; + } + + G_OBJECT_CLASS (scroll_frame_parent_class)->dispose (object); +} + +static void +scroll_frame_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ScrollFrame *frame = SCROLL_FRAME (object); + + switch (prop_id) { + case PROP_HADJUST: + scrollable_set_adjustments (TIDY_SCROLLABLE (object), + g_value_get_object (value), + frame->priv->vadj); + break; + + case PROP_VADJUST: + scrollable_set_adjustments (TIDY_SCROLLABLE (object), + frame->priv->hadj, + g_value_get_object (value)); + break; + + default: + break; + } +} + +static void +scroll_frame_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ScrollFrame *frame = SCROLL_FRAME (object); + TidyAdjustment *adj; + + switch (prop_id) { + case PROP_HADJUST: + scrollable_get_adjustments (TIDY_SCROLLABLE (object), &adj, NULL); + g_value_set_object (value, adj); + break; + + case PROP_VADJUST: + scrollable_get_adjustments (TIDY_SCROLLABLE (object), NULL, &adj); + g_value_set_object (value, adj); + break; + + default: + break; + } +} + +static gboolean +scroll_frame_button_release_event (ClutterActor *actor, + ClutterButtonEvent *event) +{ + ClutterActor *child = tidy_frame_get_child (TIDY_FRAME (actor)); + + if (child) { + return clutter_actor_event (child, (ClutterEvent *) event, FALSE); + } + + return FALSE; +} + +static void +scroll_frame_class_init (ScrollFrameClass *klass) +{ + GObjectClass *o_class = (GObjectClass *) klass; + ClutterActorClass *a_class = (ClutterActorClass *) klass; + + o_class->finalize = scroll_frame_finalize; + o_class->dispose = scroll_frame_dispose; + o_class->set_property = scroll_frame_set_property; + o_class->get_property = scroll_frame_get_property; + + a_class->button_release_event = scroll_frame_button_release_event; + + g_type_class_add_private (klass, sizeof (ScrollFramePrivate)); + + g_object_class_override_property (o_class, PROP_HADJUST, "hadjustment"); + g_object_class_override_property (o_class, PROP_VADJUST, "vadjustment"); +} + +static void +vadj_wk_changed (WebkitAdjustment *adjustment, + ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + double value, lower, upper, step, page_inc, page_size; + + webkit_adjustment_get_values (adjustment, &value, &lower, &upper, + &step, &page_inc, &page_size); + tidy_adjustment_set_values (priv->vadj, value, lower, upper, step, + page_inc, page_size); +} + +static void +vadj_wk_value_changed (WebkitAdjustment *adjustment, + GParamSpec *pspec, + ScrollFrame *frame) +{ + vadj_wk_changed (adjustment, frame); +} + +static void +hadj_wk_changed (WebkitAdjustment *adjustment, + ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + double value, lower, upper, step, page_inc, page_size; + + webkit_adjustment_get_values (adjustment, &value, &lower, &upper, + &step, &page_inc, &page_size); + tidy_adjustment_set_values (priv->hadj, value, lower, upper, step, + page_inc, page_size); +} + +static void +hadj_wk_value_changed (WebkitAdjustment *adjustment, + GParamSpec *pspec, + ScrollFrame *frame) +{ + hadj_wk_changed (adjustment, frame); +} + +static gboolean +vadj_idle_cb (ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + + webkit_adjustment_set_value (priv->wk_vadj, priv->vadj_value); + priv->vadj_idle = 0; + + return FALSE; +} + +static gboolean +hadj_idle_cb (ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + + webkit_adjustment_set_value (priv->wk_hadj, priv->hadj_value); + priv->hadj_idle = 0; + + return FALSE; +} + +static void +vadj_tidy_changed (TidyAdjustment *adjustment, + GParamSpec *pspec, + ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + double value; + + value = tidy_adjustment_get_value (adjustment); + priv->vadj_value = value; + if (!priv->vadj_idle) + priv->vadj_idle = g_idle_add_full (G_PRIORITY_DEFAULT, + (GSourceFunc)vadj_idle_cb, frame, NULL); +} + +static void +hadj_tidy_changed (TidyAdjustment *adjustment, + GParamSpec *pspec, + ScrollFrame *frame) +{ + ScrollFramePrivate *priv = frame->priv; + double value; + + value = tidy_adjustment_get_value (adjustment); + priv->hadj_value = value; + if (!priv->hadj_idle) + priv->hadj_idle = g_idle_add_full (G_PRIORITY_DEFAULT, + (GSourceFunc)hadj_idle_cb, frame, NULL); +} + +static void +scrollable_set_adjustments (TidyScrollable *scrollable, + TidyAdjustment *hadjustment, + TidyAdjustment *vadjustment) +{ + ScrollFramePrivate *priv = SCROLL_FRAME (scrollable)->priv; + + if (hadjustment != priv->hadj) { + if (priv->hadj) { + g_signal_handlers_disconnect_by_func (priv->hadj, + hadj_tidy_changed, + scrollable); + g_object_unref (priv->hadj); + } + + if (hadjustment) { + g_object_ref (hadjustment); + g_signal_connect (hadjustment, "notify::value", + G_CALLBACK (hadj_tidy_changed), scrollable); + } + + priv->hadj = hadjustment; + } + + if (vadjustment != priv->vadj) { + if (priv->vadj) { + g_signal_handlers_disconnect_by_func (priv->vadj, + vadj_tidy_changed, + scrollable); + g_object_unref (priv->vadj); + } + + if (vadjustment) { + g_object_ref (vadjustment); + g_signal_connect (vadjustment, "notify::value", + G_CALLBACK (vadj_tidy_changed), scrollable); + } + + priv->vadj = vadjustment; + } +} + +static void +scrollable_get_adjustments (TidyScrollable *scrollable, + TidyAdjustment **hadjustment, + TidyAdjustment **vadjustment) +{ + ScrollFramePrivate *priv = SCROLL_FRAME (scrollable)->priv; + + if (hadjustment) { + if (priv->hadj) { + *hadjustment = priv->hadj; + } else { + TidyAdjustment *adjustment = tidy_adjustment_newx (0, 0, 0, 0, 0, 0); + double value, lower, upper, step, page_inc, page_size; + + webkit_adjustment_get_values (priv->wk_hadj, &value, &lower, &upper, + &step, &page_inc, &page_size); + tidy_adjustment_set_values (adjustment, value, lower, upper, step, + page_inc, page_size); + + scrollable_set_adjustments (scrollable, adjustment, priv->vadj); + *hadjustment = adjustment; + } + + g_signal_connect (priv->wk_hadj, "notify::value", + G_CALLBACK (hadj_wk_value_changed), scrollable); + g_signal_connect (priv->wk_hadj, "changed", + G_CALLBACK (hadj_wk_changed), scrollable); + } + + if (vadjustment) { + if (priv->vadj) { + *vadjustment = priv->vadj; + } else { + TidyAdjustment *adjustment = tidy_adjustment_newx (0, 0, 0, 0, 0, 0); + double value, lower, upper, step, page_inc, page_size; + + webkit_adjustment_get_values (priv->wk_vadj, &value, &lower, &upper, + &step, &page_inc, &page_size); + tidy_adjustment_set_values (adjustment, value, lower, upper, step, + page_inc, page_size); + + scrollable_set_adjustments (scrollable, priv->hadj, adjustment); + *vadjustment = adjustment; + } + + g_signal_connect (priv->wk_vadj, "notify::value", + G_CALLBACK (vadj_wk_value_changed), scrollable); + g_signal_connect (priv->wk_vadj, "changed", + G_CALLBACK (vadj_wk_changed), scrollable); + } +} + +static void +scrollable_iface_init (TidyScrollableInterface *iface) +{ + iface->set_adjustments = scrollable_set_adjustments; + iface->get_adjustments = scrollable_get_adjustments; +} + +static void +scroll_frame_init (ScrollFrame *frame) +{ + ScrollFramePrivate *priv; + ClutterColor bg = {0x00, 0x00, 0x00, 0x00}; + + priv = frame->priv = FRAME_PRIVATE (frame); + priv->wk_hadj = webkit_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + priv->wk_vadj = webkit_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); +} + +void +scroll_frame_add_webkit (ScrollFrame *frame, + WebKitWebView *web_view) +{ + webkit_web_view_set_scroll_adjustments (web_view, + frame->priv->wk_hadj, + frame->priv->wk_vadj); + clutter_container_add_actor (CLUTTER_CONTAINER (frame), + CLUTTER_ACTOR (web_view)); +} diff --git a/attic/mallums-magic-browser/scroll-frame.h b/attic/mallums-magic-browser/scroll-frame.h new file mode 100644 index 0000000..6577a63 --- /dev/null +++ b/attic/mallums-magic-browser/scroll-frame.h @@ -0,0 +1,33 @@ +#ifndef _SCROLL_FRAME +#define _SCROLL_FRAME + +#include +#include + +#include + +G_BEGIN_DECLS + +#define SCROLL_TYPE_FRAME scroll_frame_get_type () + +typedef struct _ScrollFramePrivate ScrollFramePrivate; + +#define SCROLL_FRAME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCROLL_TYPE_FRAME, ScrollFrame)) + +typedef struct { + TidyFrame parent; + ScrollFramePrivate *priv; +} ScrollFrame; + +typedef struct { + TidyFrameClass parent; +} ScrollFrameClass; + +GType scroll_frame_get_type (void); + +void scroll_frame_add_webkit (ScrollFrame *frame, + WebKitWebView *web_view); + +G_END_DECLS + +#endif diff --git a/attic/mallums-magic-browser/web-browser-mozilla.c b/attic/mallums-magic-browser/web-browser-mozilla.c new file mode 100644 index 0000000..a4ea56e --- /dev/null +++ b/attic/mallums-magic-browser/web-browser-mozilla.c @@ -0,0 +1,952 @@ +#include + +#include "web-browser-mozilla.h" + +#ifdef WITH_MOZILLA +# include "clutter-mozembed.h" +#else +# include +# include +# include "scroll-frame.h" +# include "popup-factory.h" +#endif + +static void +tabs_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser); + +G_DEFINE_TYPE (MmBrowser, mm_browser, CLUTTER_TYPE_GROUP) +#define BROWSER_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_BROWSER, MmBrowserPrivate)) + +typedef struct _MmBrowserPage +{ + MmBrowser *browser; + ClutterActor *web; + ClutterActor *overlay; + ClutterActor *scroll; + ClutterActor *popup_menu; + +#ifndef WITH_MOZILLA + PopupFactory *factory; + + WebKitWebView *view; + WebkitAdjustment *hadj, *vadj; +#endif + + char *address; + + gboolean over_link; + + int start_x; + int start_y; +} MmBrowserPage; + +struct _MmBrowserPrivate +{ + ClutterTimeline *fade_timeline; + ClutterTimeline *scale_timeline; + ClutterTimeline *scroll_timeline; + ClutterTimeline *move_timeline; + + ClutterActor *toolbar, *toolbar_bg; + ClutterActor *tab_control; + ClutterActor *new_tab; + ClutterActor *prev_tab; + ClutterActor *next_tab; + + ClutterActor *next_prev_group; + + ClutterActor *back; + ClutterActor *forward; + ClutterActor *entry; + ClutterActor *tabs; + ClutterActor *progress; + + ClutterActor *page_group; + + GList *pages; + GList *current_page; + + gboolean showing_tabs; + gboolean maybe_scroll; + + int popup_x; + int popup_y; +}; + +#define WEB_WIDTH 800 +#define WEB_HEIGHT 480 + +#define JITTER 5 + +static void +mm_browser_finalize (GObject *object) +{ + G_OBJECT_CLASS (mm_browser_parent_class)->finalize (object); +} + +static void +mm_browser_dispose (GObject *object) +{ + G_OBJECT_CLASS (mm_browser_parent_class)->dispose (object); +} + +static void +mm_browser_class_init (MmBrowserClass *klass) +{ + GObjectClass *o_class = (GObjectClass *) klass; + ClutterActorClass *a_class = (ClutterActorClass *) klass; + + g_type_class_add_private (klass, sizeof (MmBrowserPrivate)); + + o_class->finalize = mm_browser_finalize; + o_class->dispose = mm_browser_dispose; +} + +static void +set_back_and_forward (MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + +#ifdef WITH_MOZILLA + if (clutter_mozembed_can_go_back (CLUTTER_MOZEMBED (page->web))) { +#else + if (webkit_web_view_can_go_back (page->view)) { +#endif + clutter_actor_animate (priv->back, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); + } else { + clutter_actor_animate (priv->back, CLUTTER_LINEAR, 500, + "opacity", 0x55, NULL); + } + +#ifdef WITH_MOZILLA + if (clutter_mozembed_can_go_forward (CLUTTER_MOZEMBED (page->web))) { +#else + if (webkit_web_view_can_go_forward (page->view)) { +#endif + clutter_actor_animate (priv->forward, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); + } else { + clutter_actor_animate (priv->forward, CLUTTER_LINEAR, 500, + "opacity", 0x55, NULL); + } +} + +static void +load_started_cb (MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + ClutterTimeline *tl; + + clutter_actor_animate (priv->progress, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); +} + +#ifdef WITH_MOZILLA +static void +load_finished_cb (MmBrowser *browser, + ClutterMozEmbed *mozembed) +#else +static void +load_finished_cb (MmBrowser *browser, + WebKitWebFrame *frame, + WebKitWebView *web_view) +#endif +{ + MmBrowserPrivate *priv = browser->priv; + const gchar *location; + MmBrowserPage *page; + ClutterTimeline *tl; + + clutter_actor_animate (priv->progress, CLUTTER_LINEAR, 500, + "opacity", 0x00, NULL); + +#ifdef WITH_MOZILLA + location = clutter_mozembed_get_location (mozembed); +#else + location = webkit_web_frame_get_uri (frame); +#endif + + clutter_text_set_text (CLUTTER_TEXT (priv->entry), location); + page = priv->current_page->data; + + g_free (page->address); + page->address = g_strdup (location); + + set_back_and_forward (browser); +} + +static gboolean +web_event_capture_cb (ClutterActor *actor, + ClutterEvent *event, + MmBrowserPage *page) +{ + MmBrowser *browser = page->browser; + MmBrowserPrivate *priv = browser->priv; + + switch (event->type) { + case CLUTTER_BUTTON_PRESS: + if (priv->showing_tabs == TRUE) + { + tabs_cb (NULL, NULL, browser); + return TRUE; + } + + return FALSE; + + case CLUTTER_BUTTON_RELEASE: + return FALSE; + + case CLUTTER_MOTION: +#if 0 + if (priv->maybe_scroll == TRUE) { + ClutterMotionEvent *mev = (ClutterMotionEvent *) event; + int dx = mev->x - page->start_x; + int dy = mev->y - page->start_y; + + gtk_adjustment_set_value (page->hscroll, + MIN (page->hscroll->value - dx, + page->hscroll->upper - WEB_WIDTH)); + gtk_adjustment_set_value (page->vscroll, + MIN (page->vscroll->value - dy, + page->vscroll->upper - WEB_HEIGHT)); + + page->start_x = mev->x; + page->start_y = mev->y; + } else { + return FALSE; + } +#endif + return FALSE; + + case CLUTTER_ENTER: + case CLUTTER_LEAVE: + default: + /* Let the actor handle all the other events */ + return FALSE; + } + + return TRUE; +} + +#ifndef WITH_MOZILLA +static void +hovering_over_link_cb (WebKitWebView *view, + const char *string1, /* What is this string? */ + const char *url, + MmBrowserPage *page) +{ + if (string1 == NULL && url == NULL) { + page->over_link = FALSE; + } else { + page->over_link = TRUE; + } +} + +static void +show_popup_menu (WebKitPopupFactory *factory, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + clutter_actor_raise_top (page->popup_menu); + clutter_actor_show_all (page->popup_menu); +} + +static void +hide_popup_menu (WebKitPopupFactory *factory, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + clutter_actor_hide (page->popup_menu); +} + +static gboolean +popup_button_release_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + + if ((ABS (event->x - priv->popup_x) < JITTER) && + (ABS (event->y - priv->popup_y) < JITTER)) { + int row; + + row = tidy_list_view_get_row_at_pos (TIDY_LIST_VIEW (page->factory), + event->x, event->y); + if (row == -1) { + return FALSE; + } + + webkit_popup_factory_activate (WEBKIT_POPUP_FACTORY (page->factory), row); + webkit_popup_factory_close (WEBKIT_POPUP_FACTORY (page->factory)); + return TRUE; + } + + return FALSE; +} + +static gboolean +popup_button_press_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + + if (event->button != 1) { + return FALSE; + } + + priv->popup_x = event->x; + priv->popup_y = event->y; + + return TRUE; +} + +static void +create_popup_factory (MmBrowser *browser, + MmBrowserPage *page) +{ + MmBrowserPrivate *priv = browser->priv; + ClutterActor *bground, *scroll; + ClutterColor black = {0xbb, 0xbb, 0xbb, 0xdd}; + + page->popup_menu = clutter_group_new (); + + bground = clutter_rectangle_new_with_color (&black); + clutter_container_add_actor (CLUTTER_CONTAINER (page->popup_menu), bground); + clutter_actor_set_size (bground, WEB_WIDTH, 125); + clutter_actor_show (bground); + + page->factory = g_object_new (POPUP_TYPE_FACTORY, + "rules-hint", FALSE, + "show-headers", FALSE, + NULL); + tidy_stylable_set_style (TIDY_STYLABLE (page->factory), tidy_style_new ()); + tidy_stylable_set (TIDY_STYLABLE (page->factory), + "font-name", "Impact 20", NULL); + + g_signal_connect (page->factory, "show-menu", + G_CALLBACK (show_popup_menu), browser); + g_signal_connect (page->factory, "hide-menu", + G_CALLBACK (hide_popup_menu), browser); + g_signal_connect (page->factory, "button-press-event", + G_CALLBACK (popup_button_press_cb), browser); + g_signal_connect (page->factory, "button-release-event", + G_CALLBACK (popup_button_release_cb), browser); + webkit_web_view_set_popup_factory (page->view, WEBKIT_POPUP_FACTORY (page->factory)); + clutter_actor_set_size (CLUTTER_ACTOR (page->factory), WEB_WIDTH, 125); + clutter_actor_show (CLUTTER_ACTOR (page->factory)); + + scroll = tidy_finger_scroll_new (TIDY_FINGER_SCROLL_MODE_KINETIC); + clutter_container_add_actor (CLUTTER_CONTAINER (page->popup_menu), scroll); + clutter_container_add_actor (CLUTTER_CONTAINER (scroll), + CLUTTER_ACTOR (page->factory)); + clutter_actor_set_size (scroll, WEB_WIDTH, 125); + + clutter_actor_set_position (page->popup_menu, 0, WEB_HEIGHT - 125); + clutter_container_add_actor (CLUTTER_CONTAINER (clutter_stage_get_default ()), + page->popup_menu); + + clutter_actor_show_all (scroll); +} + +static void +page_start_editing_cb (WebkitActor *actor, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + + webkit_web_view_zoom_to_selected_node (page->view); +} + +static void +page_stop_editing_cb (WebkitActor *actor, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + + webkit_web_view_zoom_to_default (page->view); +} +#endif + +static void +add_new_page (MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + ClutterActor *frame; + + page = g_new (MmBrowserPage, 1); + page->address = NULL; + page->browser = browser; + +#ifdef WITH_MOZILLA + page->scroll = page->web = clutter_mozembed_new (); + clutter_actor_set_size (page->web, WEB_WIDTH, WEB_HEIGHT); + clutter_mozembed_open (CLUTTER_MOZEMBED (page->web), "about:blank"); + g_signal_connect_swapped (page->web, "net-start", + G_CALLBACK (load_started_cb), browser); + g_signal_connect_swapped (page->web, "net-stop", + G_CALLBACK (load_finished_cb), browser); +#else + page->hadj = webkit_adjustment_new (0,0,0,0,0,0); + page->vadj = webkit_adjustment_new (0,0,0,0,0,0); + + page->web = webkit_web_view_new (WEB_WIDTH, WEB_HEIGHT); + webkit_web_view_set_scroll_adjustments (WEBKIT_WEB_VIEW (page->web), + page->hadj, page->vadj); + + clutter_actor_set_reactive (page->web, TRUE); + clutter_actor_set_size (page->web, WEB_WIDTH, WEB_HEIGHT); + g_signal_connect (page->web, "captured-event", + G_CALLBACK (webkit_event_capture_cb), page); + page->view = WEBKIT_WEB_VIEW (page->web); + clutter_actor_show (page->web); + + frame = g_object_new (SCROLL_TYPE_FRAME, NULL); + /* clutter_actor_set_size (frame, WEB_WIDTH, WEB_HEIGHT); */ + clutter_actor_show (frame); + + scroll_frame_add_webkit (SCROLL_FRAME (frame), page->view); + + page->scroll = tidy_finger_scroll_new (TIDY_FINGER_SCROLL_MODE_KINETIC); + tidy_stylable_set_style (TIDY_STYLABLE (page->scroll), tidy_style_new ()); + tidy_stylable_set (TIDY_STYLABLE (page->scroll), + "xthickness", 5, "ythickness", 5, NULL); + clutter_actor_set_size (page->scroll, WEB_WIDTH, WEB_HEIGHT); + clutter_container_add_actor (CLUTTER_CONTAINER (page->scroll), frame); + + webkit_web_view_open (page->view, "about:blank"); + g_signal_connect_swapped (page->view, "load-started", + G_CALLBACK (load_started_cb), browser); + g_signal_connect_swapped (page->view, "load-finished", + G_CALLBACK (load_finished_cb), browser); + g_signal_connect (page->view, "hovering-over-link", + G_CALLBACK (hovering_over_link_cb), page); + g_signal_connect (page->view, "start-editing", + G_CALLBACK (page_start_editing_cb), browser); + g_signal_connect (page->view, "stop-editing", + G_CALLBACK (page_stop_editing_cb), browser); + + create_popup_factory (browser, page); +#endif + + clutter_actor_set_anchor_point_from_gravity (page->scroll, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (page->scroll, WEB_WIDTH / 2, WEB_HEIGHT / 2); + + clutter_container_add_actor (CLUTTER_CONTAINER (priv->page_group), + page->scroll); + + priv->pages = g_list_append (priv->pages, page); + + /* Fixme...obviously */ + priv->current_page = g_list_last (priv->pages); +} + +static ClutterActor * +make_button (const char *image) +{ + return clutter_texture_new_from_file (image, NULL); +} + +#if 0 +static void +key_release_cb (ClutterEntry *entry, + ClutterEvent *event, + MmBrowser *browser) +{ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent *kev = (ClutterKeyEvent *) event; + + clutter_entry_handle_key_event (CLUTTER_ENTRY (browser->priv->entry), kev); + } +} +#endif +static void +entry_activated_cb (ClutterText *entry, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + char *address = g_strdup (clutter_text_get_text (entry)); + MmBrowserPage *page; + + mm_browser_open (browser, address); + + page = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), page->web); + g_free (address); +} + +static gboolean +entry_clicked_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), priv->entry); + + return FALSE; +} + +static void +back_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + if (priv->showing_tabs == TRUE) + return; + + /* Get top page */ + page = priv->current_page->data; +#ifdef WITH_MOZILLA + clutter_mozembed_back (CLUTTER_MOZEMBED (page->web)); +#else + webkit_web_view_go_back (page->view); +#endif + set_back_and_forward (browser); +} + +static void +forward_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + if (priv->showing_tabs == TRUE) + return; + + /* Get top page */ + page = priv->current_page->data; +#ifdef WITH_MOZILLA + clutter_mozembed_forward (CLUTTER_MOZEMBED (page->web)); +#else + webkit_web_view_go_forward (page->view); +#endif + set_back_and_forward (browser); +} + +static void +hide_on_effect_complete (ClutterActor *actor, + gpointer userdata) +{ + clutter_actor_hide (actor); +} + +static void +tabs_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page, *prev = NULL, *next = NULL; + + if (priv->showing_tabs == FALSE) { + page = priv->current_page->data; + + /* Layout previous page */ + if (priv->current_page->prev) { + prev = priv->current_page->prev->data; + + clutter_actor_set_scale (prev->scroll, 0.4, 0.4); + clutter_actor_set_position (prev->scroll, 0, 240); + clutter_actor_set_opacity (prev->scroll, 0x00); + + clutter_actor_show (prev->scroll); + } else { + g_print ("No prev\n"); + } + + /* Layout next page */ + if (priv->current_page->next) { + next = priv->current_page->next->data; + + clutter_actor_set_scale (next->scroll, 0.4, 0.4); + clutter_actor_set_position (next->scroll, 800, 240); + clutter_actor_set_opacity (next->scroll, 0x00); + + clutter_actor_show (next->scroll); + } + + clutter_actor_animate (page->scroll, CLUTTER_LINEAR, 100, + "scale-x", 0.4, "scale-y", 0.4, NULL); + clutter_actor_show (priv->tab_control); + clutter_actor_animate (priv->tab_control, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); + if (prev != NULL) { + clutter_actor_show (prev->scroll); + clutter_actor_animate (prev->scroll, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); + } + + if (next != NULL) { + clutter_actor_show (next->scroll); + clutter_actor_animate (next->scroll, CLUTTER_LINEAR, 500, + "opacity", 0xff, NULL); + } + + priv->showing_tabs = TRUE; + } else { + page = priv->current_page->data; + + if (priv->current_page->prev) { + prev = priv->current_page->prev->data; + + g_signal_connect_swapped (clutter_actor_animate (prev->scroll, + CLUTTER_LINEAR, 500, + "opacity", 0x00, NULL), + "completed", + G_CALLBACK (hide_on_effect_complete), + prev->scroll); + } + + if (priv->current_page->next) { + next = priv->current_page->next->data; + + g_signal_connect_swapped (clutter_actor_animate (next->scroll, + CLUTTER_LINEAR, 500, + "opacity", 0x00, NULL), + "completed", + G_CALLBACK (hide_on_effect_complete), + next->scroll); + } + + clutter_actor_animate (page->scroll, CLUTTER_LINEAR, 100, + "scale-x", 1.0, "scale-y", 1.0, NULL); + g_signal_connect_swapped (clutter_actor_animate (priv->tab_control, + CLUTTER_LINEAR, 500, + "opacity", 0x00, NULL), + "completed", + G_CALLBACK (hide_on_effect_complete), + priv->tab_control); + priv->showing_tabs = FALSE; + } +} + +static void +select_previous_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *pages[4], *current; + int i; + + pages[2] = priv->current_page->data; + + if (priv->current_page->next) { + pages[3] = priv->current_page->next->data; + } else { + pages[3] = NULL; + } + + if (priv->current_page->prev) { + pages[1] = priv->current_page->prev->data; + + if (priv->current_page->prev->prev) { + pages[0] = priv->current_page->prev->prev->data; + } else { + pages[0] = NULL; + } + } else { + /* Current page was the first page, so we can't screll */ + return; + } + + /* Scroll all four pages */ + for (i = 0; i < 4; i++) { + int x; + + if (pages[i] == NULL) { + continue; + } + + clutter_actor_get_position (pages[i]->scroll, &x, NULL); + clutter_actor_animate (pages[i]->scroll, CLUTTER_LINEAR, 400, + "x", x + 400, NULL); + } + + priv->current_page = priv->current_page->prev; + current = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), current->scroll); + clutter_text_set_text (CLUTTER_TEXT (priv->entry), + current->address ? current->address : ""); +} + +static void +select_next_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *pages[4], *current; + int i; + + pages[1] = priv->current_page->data; + + if (priv->current_page->prev) { + pages[0] = priv->current_page->prev->data; + } else { + pages[0] = NULL; + } + + if (priv->current_page->next) { + pages[2] = priv->current_page->next->data; + + if (priv->current_page->next->next) { + pages[3] = priv->current_page->next->next->data; + } else { + pages[3] = NULL; + } + } else { + /* Current page was last page, so we can't scroll */ + return; + } + + /* Scroll all four pages */ + for (i = 0; i < 4; i++) { + int x; + + if (pages[i] == NULL) { + continue; + } + + clutter_actor_get_position (pages[i]->scroll, &x, NULL); + clutter_actor_animate (pages[i]->scroll, CLUTTER_LINEAR, 400, + "x", x - 400, NULL); + } + + priv->current_page = priv->current_page->next; + current = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), current->web); + clutter_text_set_text (CLUTTER_TEXT (priv->entry), + current->address ? current->address : ""); +} + +static void +create_new_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + g_print ("New tab\n"); +} + +static void +mm_browser_init (MmBrowser *self) +{ + MmBrowserPrivate *priv; + ClutterColor white = {0x33, 0x33, 0x33, 0xff}; + ClutterColor progress_color = {0x00, 0x55, 0xdd, 0xff}; + ClutterActor *stage = clutter_stage_get_default (); + ClutterAlpha *alpha; + ClutterBehaviour *behave; + ClutterKnot progress_knots[] = {{265, 11}, {515, 11}}; + MmBrowserPage *page; + + priv = self->priv = BROWSER_PRIVATE (self); + + alpha = clutter_alpha_new_full (priv->move_timeline, CLUTTER_EASE_IN_OUT_CUBIC); + behave = clutter_behaviour_path_new_with_knots (alpha, progress_knots, 2); + + priv->pages = NULL; + priv->showing_tabs = FALSE; + + priv->page_group = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->page_group); + clutter_actor_set_position (priv->page_group, 0, 0); + clutter_actor_set_reactive (priv->page_group, TRUE); + + add_new_page (self); + add_new_page (self); + add_new_page (self); + + priv->current_page = priv->current_page->prev; + clutter_actor_show (((MmBrowserPage *) priv->current_page->data)->scroll); + clutter_actor_raise_top (((MmBrowserPage *) priv->current_page->data)->scroll); + + priv->tab_control = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->page_group), priv->tab_control); + clutter_actor_set_position (priv->tab_control, 0, 350); + clutter_actor_set_size (priv->tab_control, 800, 34); + + priv->prev_tab = make_button ("assets/go-previous.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->prev_tab); + clutter_actor_set_reactive (priv->prev_tab, TRUE); + clutter_actor_set_position (priv->prev_tab, 20, 2); + g_signal_connect (priv->prev_tab, "button-release-event", + G_CALLBACK (select_previous_tab), self); + + priv->next_tab = make_button ("assets/go-next.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->next_tab); + clutter_actor_set_reactive (priv->next_tab, TRUE); + clutter_actor_set_position (priv->next_tab, 748, 2); + g_signal_connect (priv->next_tab, "button-release-event", + G_CALLBACK (select_next_tab), self); + +#if 0 + priv->new_tab = make_button ("assets/document-new.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->new_tab); + clutter_actor_set_reactive (priv->new_tab, TRUE); + clutter_actor_set_position (priv->new_tab, 384, 2); + g_signal_connect (priv->new_tab, "button-release-event", + G_CALLBACK (create_new_tab), self); +#endif + clutter_actor_set_opacity (priv->tab_control, 0x00); + clutter_actor_show_all (priv->tab_control); + + clutter_actor_show (priv->page_group); + + priv->toolbar = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->toolbar); + clutter_actor_set_position (priv->toolbar, 0, 430); + + priv->toolbar_bg = clutter_texture_new_from_file ("assets/toolbar-bg.png", NULL); + clutter_group_add (CLUTTER_GROUP (priv->toolbar), priv->toolbar_bg); + + priv->progress = clutter_rectangle_new_with_color (&progress_color); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), + priv->progress); + clutter_actor_set_size (priv->progress, 30, 28); + clutter_actor_set_position (priv->progress, 265, 11); + clutter_actor_set_opacity (priv->progress, 0x00); + clutter_behaviour_apply (behave, priv->progress); + + + priv->back = make_button ("assets/back.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->back); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->back), TRUE); + clutter_actor_set_position (priv->back, 140, 2); + g_signal_connect (priv->back, "button-release-event", + G_CALLBACK (back_cb), self); + + priv->forward = make_button ("assets/forward.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->forward); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->forward), TRUE); + clutter_actor_set_position (priv->forward, 200, 2); + g_signal_connect (priv->forward, "button-release-event", + G_CALLBACK (forward_cb), self); + + priv->tabs = make_button ("assets/tabs.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->tabs); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->tabs), TRUE); + clutter_actor_set_position (priv->tabs, 8, 2); + g_signal_connect (priv->tabs, "button-release-event", + G_CALLBACK (tabs_cb), self); + + + priv->entry = clutter_text_new_full ("Sans 28px", "", &white); + g_object_set (G_OBJECT (priv->entry), + "editable", TRUE, "activatable", TRUE, NULL); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->entry); + clutter_actor_set_reactive (priv->entry, TRUE); + clutter_actor_set_position (priv->entry, 265, 11); + clutter_actor_set_size (priv->entry, 515, 50); +#if 0 + g_signal_connect (priv->entry, "key-release-event", + G_CALLBACK (key_release_cb), self); +#endif + g_signal_connect (priv->entry, "activate", + G_CALLBACK (entry_activated_cb), self); + g_signal_connect (priv->entry, "button-release-event", + G_CALLBACK (entry_clicked_cb), self); + + set_back_and_forward (self); + + page = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), page->web); + + clutter_actor_show_all (priv->toolbar); + + /* clutter_actor_raise_top (priv->page_group); */ +} + +MmBrowser * +mm_browser_new (void) +{ + return g_object_new (MM_TYPE_BROWSER, NULL); +} + +void +mm_browser_open (MmBrowser *browser, + const char *address) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; +#ifdef WITH_MOZILLA + clutter_mozembed_open (CLUTTER_MOZEMBED (page->web), address); +#else + webkit_web_view_open (page->view, address); +#endif +} + +/***************************************************************************/ + +int +main (int argc, + char **argv) +{ + ClutterActor *stage; + ClutterActor *background; + MmBrowser *browser; + ClutterColor col = {0x24, 0x29, 0x29, 0xff}; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, 800, 480); + clutter_stage_set_color (CLUTTER_STAGE(stage), &col); + + browser = mm_browser_new (); + clutter_actor_set_position (CLUTTER_ACTOR (browser), 0, 0); + clutter_group_add (CLUTTER_GROUP (stage), CLUTTER_ACTOR (browser)); + clutter_actor_show_all (stage); + + if (argc < 2) { + mm_browser_open (browser, "http://news.google.co.uk/"); + } else { + mm_browser_open (browser, argv[1]); + } + + clutter_main (); + return 0; +} diff --git a/attic/mallums-magic-browser/web-browser-mozilla.h b/attic/mallums-magic-browser/web-browser-mozilla.h new file mode 100644 index 0000000..9d39ad0 --- /dev/null +++ b/attic/mallums-magic-browser/web-browser-mozilla.h @@ -0,0 +1,32 @@ +#ifndef _MM_BROWSER +#define _MM_BROWSER + +#include +#include + +G_BEGIN_DECLS + +#define MM_TYPE_BROWSER mm_browser_get_type () + +typedef struct _MmBrowserPrivate MmBrowserPrivate; + +#define MM_BROWSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BROWSER, MmBrowser)) + +typedef struct { + ClutterGroup parent; + MmBrowserPrivate *priv; +} MmBrowser; + +typedef struct { + ClutterGroupClass parent_class; +} MmBrowserClass; + +GType mm_browser_get_type (void); + +MmBrowser *mm_browser_new (void); +void mm_browser_open (MmBrowser *browser, + const char *address); + +G_END_DECLS + +#endif diff --git a/attic/mallums-magic-browser/web-browser.c b/attic/mallums-magic-browser/web-browser.c new file mode 100644 index 0000000..75fbaa4 --- /dev/null +++ b/attic/mallums-magic-browser/web-browser.c @@ -0,0 +1,901 @@ +#include +#include +#include + +#include "web-browser.h" +#include "scroll-frame.h" +#include "popup-factory.h" + +static void +tabs_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser); + +G_DEFINE_TYPE (MmBrowser, mm_browser, CLUTTER_TYPE_GROUP) +#define BROWSER_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_BROWSER, MmBrowserPrivate)) + +typedef struct _MmBrowserPage +{ + MmBrowser *browser; + ClutterActor *webkit; + ClutterActor *overlay; + ClutterActor *scroll; + ClutterActor *popup_menu; + + PopupFactory *factory; + + WebKitWebView *view; + WebkitAdjustment *hadj, *vadj; + + char *address; + + gboolean over_link; + + int start_x; + int start_y; +} MmBrowserPage; + +struct _MmBrowserPrivate +{ + ClutterTimeline *fade_timeline; + ClutterTimeline *scale_timeline; + ClutterTimeline *scroll_timeline; + ClutterTimeline *move_timeline; + + ClutterEffectTemplate *fade_template; + ClutterEffectTemplate *scale_template; + ClutterEffectTemplate *scroll_template; + + ClutterActor *toolbar, *toolbar_bg; + ClutterActor *tab_control; + ClutterActor *new_tab; + ClutterActor *prev_tab; + ClutterActor *next_tab; + + ClutterActor *next_prev_group; + + ClutterActor *back; + ClutterActor *forward; + ClutterActor *entry; + ClutterActor *tabs; + ClutterActor *progress; + + ClutterActor *page_group; + + GList *pages; + GList *current_page; + + gboolean showing_tabs; + gboolean maybe_scroll; + + int popup_x; + int popup_y; +}; + +#define WEBKIT_WIDTH 800 +#define WEBKIT_HEIGHT 480 + +#define JITTER 5 + +static void +mm_browser_finalize (GObject *object) +{ + G_OBJECT_CLASS (mm_browser_parent_class)->finalize (object); +} + +static void +mm_browser_dispose (GObject *object) +{ + G_OBJECT_CLASS (mm_browser_parent_class)->dispose (object); +} + +static void +mm_browser_class_init (MmBrowserClass *klass) +{ + GObjectClass *o_class = (GObjectClass *) klass; + ClutterActorClass *a_class = (ClutterActorClass *) klass; + + g_type_class_add_private (klass, sizeof (MmBrowserPrivate)); + + o_class->finalize = mm_browser_finalize; + o_class->dispose = mm_browser_dispose; +} + +static void +set_back_and_forward (MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + + if (webkit_web_view_can_go_back (page->view)) { + clutter_effect_fade (priv->fade_template, priv->back, 0xff, NULL, NULL); + } else { + clutter_effect_fade (priv->fade_template, priv->back, 0x55, NULL, NULL); + } + + if (webkit_web_view_can_go_forward (page->view)) { + clutter_effect_fade (priv->fade_template, priv->forward, 0xff, NULL, NULL); + } else { + clutter_effect_fade (priv->fade_template, priv->forward, 0x55, NULL, NULL); + } +} + +static void +load_started_cb (WebKitWebView *web_view, + WebKitWebFrame *frame, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + ClutterTimeline *tl; + + clutter_effect_fade (priv->fade_template, priv->progress, 0xff, NULL, NULL); + clutter_timeline_start (priv->move_timeline); +} + +static void +load_finished_cb (WebKitWebView *web_view, + WebKitWebFrame *frame, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + ClutterTimeline *tl; + + clutter_effect_fade (priv->fade_template, priv->progress, 0x00, NULL, NULL); + clutter_timeline_stop (priv->move_timeline); + clutter_timeline_rewind (priv->move_timeline); + + clutter_entry_set_text (CLUTTER_ENTRY (priv->entry), + webkit_web_frame_get_uri (frame)); + page = priv->current_page->data; + + g_free (page->address); + page->address = g_strdup (webkit_web_frame_get_uri (frame)); + + set_back_and_forward (browser); +} + +static gboolean +webkit_event_capture_cb (ClutterActor *actor, + ClutterEvent *event, + MmBrowserPage *page) +{ + MmBrowser *browser = page->browser; + MmBrowserPrivate *priv = browser->priv; + + switch (event->type) { + case CLUTTER_BUTTON_PRESS: + if (priv->showing_tabs == TRUE) + { + tabs_cb (NULL, NULL, browser); + return TRUE; + } + + return FALSE; + + case CLUTTER_BUTTON_RELEASE: + return FALSE; + + case CLUTTER_MOTION: +#if 0 + if (priv->maybe_scroll == TRUE) { + ClutterMotionEvent *mev = (ClutterMotionEvent *) event; + int dx = mev->x - page->start_x; + int dy = mev->y - page->start_y; + + gtk_adjustment_set_value (page->hscroll, + MIN (page->hscroll->value - dx, + page->hscroll->upper - WEBKIT_WIDTH)); + gtk_adjustment_set_value (page->vscroll, + MIN (page->vscroll->value - dy, + page->vscroll->upper - WEBKIT_HEIGHT)); + + page->start_x = mev->x; + page->start_y = mev->y; + } else { + return FALSE; + } +#endif + return FALSE; + + case CLUTTER_ENTER: + case CLUTTER_LEAVE: + default: + /* Let the actor handle all the other events */ + return FALSE; + } + + return TRUE; +} + +static void +hovering_over_link_cb (WebKitWebView *view, + const char *string1, /* What is this string? */ + const char *url, + MmBrowserPage *page) +{ + if (string1 == NULL && url == NULL) { + page->over_link = FALSE; + } else { + page->over_link = TRUE; + } +} + +static void +show_popup_menu (WebKitPopupFactory *factory, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + clutter_actor_raise_top (page->popup_menu); + clutter_actor_show_all (page->popup_menu); +} + +static void +hide_popup_menu (WebKitPopupFactory *factory, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + clutter_actor_hide (page->popup_menu); +} + +static gboolean +popup_button_release_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + page = priv->current_page->data; + + if ((ABS (event->x - priv->popup_x) < JITTER) && + (ABS (event->y - priv->popup_y) < JITTER)) { + int row; + + row = tidy_list_view_get_row_at_pos (TIDY_LIST_VIEW (page->factory), + event->x, event->y); + if (row == -1) { + return FALSE; + } + + webkit_popup_factory_activate (WEBKIT_POPUP_FACTORY (page->factory), row); + webkit_popup_factory_close (WEBKIT_POPUP_FACTORY (page->factory)); + return TRUE; + } + + return FALSE; +} + +static gboolean +popup_button_press_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + + if (event->button != 1) { + return FALSE; + } + + priv->popup_x = event->x; + priv->popup_y = event->y; + + return TRUE; +} + +static void +create_popup_factory (MmBrowser *browser, + MmBrowserPage *page) +{ + MmBrowserPrivate *priv = browser->priv; + ClutterActor *bground, *scroll; + ClutterColor black = {0xbb, 0xbb, 0xbb, 0xdd}; + + page->popup_menu = clutter_group_new (); + + bground = clutter_rectangle_new_with_color (&black); + clutter_container_add_actor (CLUTTER_CONTAINER (page->popup_menu), bground); + clutter_actor_set_size (bground, WEBKIT_WIDTH, 125); + clutter_actor_show (bground); + + page->factory = g_object_new (POPUP_TYPE_FACTORY, + "rules-hint", FALSE, + "show-headers", FALSE, + NULL); + tidy_stylable_set_style (TIDY_STYLABLE (page->factory), tidy_style_new ()); + tidy_stylable_set (TIDY_STYLABLE (page->factory), + "font-name", "Impact 20", NULL); + + g_signal_connect (page->factory, "show-menu", + G_CALLBACK (show_popup_menu), browser); + g_signal_connect (page->factory, "hide-menu", + G_CALLBACK (hide_popup_menu), browser); + g_signal_connect (page->factory, "button-press-event", + G_CALLBACK (popup_button_press_cb), browser); + g_signal_connect (page->factory, "button-release-event", + G_CALLBACK (popup_button_release_cb), browser); + webkit_web_view_set_popup_factory (page->view, WEBKIT_POPUP_FACTORY (page->factory)); + clutter_actor_set_size (CLUTTER_ACTOR (page->factory), WEBKIT_WIDTH, 125); + clutter_actor_show (CLUTTER_ACTOR (page->factory)); + + scroll = tidy_finger_scroll_new (TIDY_FINGER_SCROLL_MODE_KINETIC); + clutter_container_add_actor (CLUTTER_CONTAINER (page->popup_menu), scroll); + clutter_container_add_actor (CLUTTER_CONTAINER (scroll), + CLUTTER_ACTOR (page->factory)); + clutter_actor_set_size (scroll, WEBKIT_WIDTH, 125); + + clutter_actor_set_position (page->popup_menu, 0, WEBKIT_HEIGHT - 125); + clutter_container_add_actor (CLUTTER_CONTAINER (clutter_stage_get_default ()), + page->popup_menu); + + clutter_actor_show_all (scroll); +} + +static void +page_start_editing_cb (WebkitActor *actor, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + + webkit_web_view_zoom_to_selected_node (page->view); +} + +static void +page_stop_editing_cb (WebkitActor *actor, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + + webkit_web_view_zoom_to_default (page->view); +} + +static void +add_new_page (MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + ClutterActor *frame; + + page = g_new (MmBrowserPage, 1); + page->address = NULL; + page->browser = browser; + + page->hadj = webkit_adjustment_new (0,0,0,0,0,0); + page->vadj = webkit_adjustment_new (0,0,0,0,0,0); + + page->webkit = webkit_web_view_new (WEBKIT_WIDTH, WEBKIT_HEIGHT); + webkit_web_view_set_scroll_adjustments (WEBKIT_WEB_VIEW (page->webkit), + page->hadj, page->vadj); + + clutter_actor_set_reactive (page->webkit, TRUE); + clutter_actor_set_size (page->webkit, WEBKIT_WIDTH, WEBKIT_HEIGHT); + g_signal_connect (page->webkit, "captured-event", + G_CALLBACK (webkit_event_capture_cb), page); + page->view = WEBKIT_WEB_VIEW (page->webkit); + clutter_actor_show (page->webkit); + + frame = g_object_new (SCROLL_TYPE_FRAME, NULL); + /* clutter_actor_set_size (frame, WEBKIT_WIDTH, WEBKIT_HEIGHT); */ + clutter_actor_show (frame); + + scroll_frame_add_webkit (SCROLL_FRAME (frame), page->view); + + page->scroll = tidy_finger_scroll_new (TIDY_FINGER_SCROLL_MODE_KINETIC); + tidy_stylable_set_style (TIDY_STYLABLE (page->scroll), tidy_style_new ()); + tidy_stylable_set (TIDY_STYLABLE (page->scroll), + "xthickness", 5, "ythickness", 5, NULL); + clutter_actor_set_size (page->scroll, WEBKIT_WIDTH, WEBKIT_HEIGHT); + clutter_container_add_actor (CLUTTER_CONTAINER (page->scroll), frame); + + webkit_web_view_open (page->view, "about:blank"); + g_signal_connect (page->view, "load-started", + G_CALLBACK (load_started_cb), browser); + g_signal_connect (page->view, "load-finished", + G_CALLBACK (load_finished_cb), browser); + g_signal_connect (page->view, "hovering-over-link", + G_CALLBACK (hovering_over_link_cb), page); + g_signal_connect (page->view, "start-editing", + G_CALLBACK (page_start_editing_cb), browser); + g_signal_connect (page->view, "stop-editing", + G_CALLBACK (page_stop_editing_cb), browser); + + clutter_actor_set_anchor_point_from_gravity (page->scroll, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (page->scroll, WEBKIT_WIDTH / 2, + WEBKIT_HEIGHT / 2); + + clutter_container_add_actor (CLUTTER_CONTAINER (priv->page_group), + page->scroll); + priv->pages = g_list_append (priv->pages, page); + + create_popup_factory (browser, page); + + /* Fixme...obviously */ + priv->current_page = g_list_last (priv->pages); +} + +static ClutterActor * +make_button (const char *image) +{ + return clutter_texture_new_from_file (image, NULL); +} + +#if 0 +static void +key_release_cb (ClutterEntry *entry, + ClutterEvent *event, + MmBrowser *browser) +{ + if (event->type == CLUTTER_KEY_RELEASE) { + ClutterKeyEvent *kev = (ClutterKeyEvent *) event; + + clutter_entry_handle_key_event (CLUTTER_ENTRY (browser->priv->entry), kev); + } +} +#endif +static void +entry_activated_cb (ClutterEntry *entry, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + char *address = g_strdup (clutter_entry_get_text (entry)); + MmBrowserPage *page; + + mm_browser_open (browser, address); + + page = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), page->webkit); + g_free (address); +} + +static void +entry_clicked_cb (ClutterActor *actor, + ClutterButtonEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), priv->entry); +} + +static void +back_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + if (priv->showing_tabs == TRUE) + return; + + /* Get top page */ + page = priv->current_page->data; + webkit_web_view_go_back (page->view); + set_back_and_forward (browser); +} + +static void +forward_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + if (priv->showing_tabs == TRUE) + return; + + /* Get top page */ + page = priv->current_page->data; + webkit_web_view_go_forward (page->view); + set_back_and_forward (browser); +} + +static void +hide_on_effect_complete (ClutterActor *actor, + gpointer userdata) +{ + clutter_actor_hide (actor); +} + +static void +tabs_cb (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page, *prev = NULL, *next = NULL; + + if (priv->showing_tabs == FALSE) { + page = priv->current_page->data; + + /* Layout previous page */ + if (priv->current_page->prev) { + prev = priv->current_page->prev->data; + + clutter_actor_set_scale (prev->scroll, 0.4, 0.4); + clutter_actor_set_position (prev->scroll, 0, 240); + clutter_actor_set_opacity (prev->scroll, 0x00); + + clutter_actor_show (prev->scroll); + } else { + g_print ("No prev\n"); + } + + /* Layout next page */ + if (priv->current_page->next) { + next = priv->current_page->next->data; + + clutter_actor_set_scale (next->scroll, 0.4, 0.4); + clutter_actor_set_position (next->scroll, 800, 240); + clutter_actor_set_opacity (next->scroll, 0x00); + + clutter_actor_show (next->scroll); + } + + clutter_effect_scale (priv->scale_template, page->scroll, + 0.4, 0.4, NULL, NULL); + clutter_actor_show (priv->tab_control); + clutter_effect_fade (priv->fade_template, priv->tab_control, + 0xff, NULL, NULL); + if (prev != NULL) { + clutter_actor_show (prev->scroll); + clutter_effect_fade (priv->fade_template, prev->scroll, 0xff, NULL, NULL); + } + + if (next != NULL) { + clutter_actor_show (next->scroll); + clutter_effect_fade (priv->fade_template, next->scroll, 0xff, NULL, NULL); + } + + priv->showing_tabs = TRUE; + } else { + page = priv->current_page->data; + + if (priv->current_page->prev) { + prev = priv->current_page->prev->data; + + clutter_effect_fade (priv->fade_template, prev->scroll, 0x00, hide_on_effect_complete, NULL); + } + + if (priv->current_page->next) { + next = priv->current_page->next->data; + + clutter_effect_fade (priv->fade_template, next->scroll, 0x00, hide_on_effect_complete, NULL); + } + + clutter_effect_scale (priv->scale_template, page->scroll, + 1.0, 1.0, NULL, NULL); + clutter_effect_fade (priv->fade_template, priv->tab_control, + 0x00, hide_on_effect_complete, NULL); + priv->showing_tabs = FALSE; + } +} + +static void +select_previous_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *pages[4], *current; + int i; + + pages[2] = priv->current_page->data; + + if (priv->current_page->next) { + pages[3] = priv->current_page->next->data; + } else { + pages[3] = NULL; + } + + if (priv->current_page->prev) { + pages[1] = priv->current_page->prev->data; + + if (priv->current_page->prev->prev) { + pages[0] = priv->current_page->prev->prev->data; + } else { + pages[0] = NULL; + } + } else { + /* Current page was the first page, so we can't screll */ + return; + } + + /* Scroll all four pages */ + for (i = 0; i < 4; i++) { + int x, y; + + if (pages[i] == NULL) { + continue; + } + + clutter_actor_get_position (pages[i]->scroll, &x, &y); + clutter_effect_move (priv->scroll_template, pages[i]->scroll, + x + 400, y, NULL, NULL); + } + + priv->current_page = priv->current_page->prev; + current = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), current->scroll); + clutter_entry_set_text (CLUTTER_ENTRY (priv->entry), + current->address ? current->address : ""); +} + +static void +select_next_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + ClutterActor *stage = clutter_stage_get_default (); + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *pages[4], *current; + int i; + + pages[1] = priv->current_page->data; + + if (priv->current_page->prev) { + pages[0] = priv->current_page->prev->data; + } else { + pages[0] = NULL; + } + + if (priv->current_page->next) { + pages[2] = priv->current_page->next->data; + + if (priv->current_page->next->next) { + pages[3] = priv->current_page->next->next->data; + } else { + pages[3] = NULL; + } + } else { + /* Current page was last page, so we can't scroll */ + return; + } + + /* Scroll all four pages */ + for (i = 0; i < 4; i++) { + int x, y; + + if (pages[i] == NULL) { + continue; + } + + clutter_actor_get_position (pages[i]->scroll, &x, &y); + clutter_effect_move (priv->scroll_template, pages[i]->scroll, + x - 400, y, NULL, NULL); + } + + priv->current_page = priv->current_page->next; + current = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), current->webkit); + clutter_entry_set_text (CLUTTER_ENTRY (priv->entry), + current->address ? current->address : ""); +} + +static void +create_new_tab (ClutterActor *button, + ClutterEvent *event, + MmBrowser *browser) +{ + g_print ("New tab\n"); +} + +static void +mm_browser_init (MmBrowser *self) +{ + MmBrowserPrivate *priv; + ClutterColor white = {0x33, 0x33, 0x33, 0xff}; + ClutterColor progress_color = {0x00, 0x55, 0xdd, 0xff}; + ClutterActor *stage = clutter_stage_get_default (); + ClutterAlpha *alpha; + ClutterBehaviour *behave; + ClutterKnot progress_knots[] = {{265, 11}, {515, 11}}; + MmBrowserPage *page; + + priv = self->priv = BROWSER_PRIVATE (self); + + priv->fade_timeline = clutter_timeline_new_for_duration (500); + priv->fade_template = clutter_effect_template_new (priv->fade_timeline, + CLUTTER_ALPHA_RAMP_INC); + + priv->scale_timeline = clutter_timeline_new_for_duration (100); + priv->scale_template = clutter_effect_template_new (priv->scale_timeline, + CLUTTER_ALPHA_RAMP_INC); + + priv->scroll_timeline = clutter_timeline_new_for_duration (250); + priv->scroll_template = clutter_effect_template_new (priv->scroll_timeline, + CLUTTER_ALPHA_RAMP_INC); + + priv->move_timeline = clutter_timeline_new_for_duration (2000); + clutter_timeline_set_loop (priv->move_timeline, TRUE); + + alpha = clutter_alpha_new_full (priv->move_timeline, CLUTTER_ALPHA_RAMP, + NULL, NULL); + behave = clutter_behaviour_path_new (alpha, progress_knots, 2); + + priv->pages = NULL; + priv->showing_tabs = FALSE; + + priv->page_group = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->page_group); + clutter_actor_set_position (priv->page_group, 0, 0); + clutter_actor_set_size (priv->page_group, WEBKIT_WIDTH, WEBKIT_HEIGHT); + clutter_actor_set_reactive (priv->page_group, TRUE); + + add_new_page (self); + add_new_page (self); + add_new_page (self); + + priv->current_page = priv->current_page->prev; + clutter_actor_show (((MmBrowserPage *) priv->current_page->data)->scroll); + clutter_actor_raise_top (((MmBrowserPage *) priv->current_page->data)->scroll); + + priv->tab_control = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->page_group), priv->tab_control); + clutter_actor_set_position (priv->tab_control, 0, 350); + clutter_actor_set_size (priv->tab_control, 800, 34); + + priv->prev_tab = make_button ("assets/go-previous.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->prev_tab); + clutter_actor_set_reactive (priv->prev_tab, TRUE); + clutter_actor_set_position (priv->prev_tab, 20, 2); + g_signal_connect (priv->prev_tab, "button-release-event", + G_CALLBACK (select_previous_tab), self); + + priv->next_tab = make_button ("assets/go-next.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->next_tab); + clutter_actor_set_reactive (priv->next_tab, TRUE); + clutter_actor_set_position (priv->next_tab, 748, 2); + g_signal_connect (priv->next_tab, "button-release-event", + G_CALLBACK (select_next_tab), self); + +#if 0 + priv->new_tab = make_button ("assets/document-new.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->tab_control), + priv->new_tab); + clutter_actor_set_reactive (priv->new_tab, TRUE); + clutter_actor_set_position (priv->new_tab, 384, 2); + g_signal_connect (priv->new_tab, "button-release-event", + G_CALLBACK (create_new_tab), self); +#endif + clutter_actor_set_opacity (priv->tab_control, 0x00); + clutter_actor_show_all (priv->tab_control); + + clutter_actor_show (priv->page_group); + + priv->toolbar = clutter_group_new (); + clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->toolbar); + clutter_actor_set_position (priv->toolbar, 0, 430); + + priv->toolbar_bg = clutter_texture_new_from_file ("assets/toolbar-bg.png", NULL); + clutter_group_add (CLUTTER_GROUP (priv->toolbar), priv->toolbar_bg); + + priv->progress = clutter_rectangle_new_with_color (&progress_color); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), + priv->progress); + clutter_actor_set_size (priv->progress, 30, 28); + clutter_actor_set_position (priv->progress, 265, 11); + clutter_actor_set_opacity (priv->progress, 0x00); + clutter_behaviour_apply (behave, priv->progress); + + + priv->back = make_button ("assets/back.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->back); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->back), TRUE); + clutter_actor_set_position (priv->back, 140, 2); + g_signal_connect (priv->back, "button-release-event", + G_CALLBACK (back_cb), self); + + priv->forward = make_button ("assets/forward.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->forward); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->forward), TRUE); + clutter_actor_set_position (priv->forward, 200, 2); + g_signal_connect (priv->forward, "button-release-event", + G_CALLBACK (forward_cb), self); + + priv->tabs = make_button ("assets/tabs.png"); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->tabs); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->tabs), TRUE); + clutter_actor_set_position (priv->tabs, 8, 2); + g_signal_connect (priv->tabs, "button-release-event", + G_CALLBACK (tabs_cb), self); + + + priv->entry = clutter_entry_new_full ("Sans 28px", "", &white); + clutter_container_add_actor (CLUTTER_CONTAINER (priv->toolbar), priv->entry); + clutter_actor_set_reactive (priv->entry, TRUE); + clutter_actor_set_position (priv->entry, 265, 11); + clutter_actor_set_size (priv->entry, 515, 50); +#if 0 + g_signal_connect (priv->entry, "key-release-event", + G_CALLBACK (key_release_cb), self); +#endif + g_signal_connect (priv->entry, "activate", + G_CALLBACK (entry_activated_cb), self); + g_signal_connect (priv->entry, "button-release-event", + G_CALLBACK (entry_clicked_cb), self); + + set_back_and_forward (self); + + page = priv->current_page->data; + clutter_stage_set_key_focus (CLUTTER_STAGE (stage), page->webkit); + + clutter_actor_show_all (priv->toolbar); + + /* clutter_actor_raise_top (priv->page_group); */ +} + +MmBrowser * +mm_browser_new (void) +{ + return g_object_new (MM_TYPE_BROWSER, NULL); +} + +void +mm_browser_open (MmBrowser *browser, + const char *address) +{ + MmBrowserPrivate *priv = browser->priv; + MmBrowserPage *page; + + /* Get top page */ + page = priv->current_page->data; + webkit_web_view_open (page->view, address); +} + +/***************************************************************************/ + +int +main (int argc, + char **argv) +{ + ClutterActor *stage; + ClutterActor *background; + MmBrowser *browser; + ClutterColor col = {0x24, 0x29, 0x29, 0xff}; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, 800, 480); + clutter_stage_set_color (CLUTTER_STAGE(stage), &col); + + browser = mm_browser_new (); + clutter_actor_set_position (CLUTTER_ACTOR (browser), 0, 0); + clutter_group_add (CLUTTER_GROUP (stage), CLUTTER_ACTOR (browser)); + clutter_actor_show_all (stage); + + if (argc < 2) { + mm_browser_open (browser, "http://www.openedhand.com"); + } else { + mm_browser_open (browser, argv[1]); + } + + clutter_main (); + return 0; +} diff --git a/attic/mallums-magic-browser/web-browser.h b/attic/mallums-magic-browser/web-browser.h new file mode 100644 index 0000000..9d39ad0 --- /dev/null +++ b/attic/mallums-magic-browser/web-browser.h @@ -0,0 +1,32 @@ +#ifndef _MM_BROWSER +#define _MM_BROWSER + +#include +#include + +G_BEGIN_DECLS + +#define MM_TYPE_BROWSER mm_browser_get_type () + +typedef struct _MmBrowserPrivate MmBrowserPrivate; + +#define MM_BROWSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BROWSER, MmBrowser)) + +typedef struct { + ClutterGroup parent; + MmBrowserPrivate *priv; +} MmBrowser; + +typedef struct { + ClutterGroupClass parent_class; +} MmBrowserClass; + +GType mm_browser_get_type (void); + +MmBrowser *mm_browser_new (void); +void mm_browser_open (MmBrowser *browser, + const char *address); + +G_END_DECLS + +#endif diff --git a/attic/sqlite-model/Makefile b/attic/sqlite-model/Makefile new file mode 100644 index 0000000..9389842 --- /dev/null +++ b/attic/sqlite-model/Makefile @@ -0,0 +1,13 @@ +LIBS=`pkg-config --libs clutter-0.8 sqlite3` +INCS=`pkg-config --cflags clutter-0.8 sqlite3` + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: test-sqlite-model + +test-sqlite-model: test-sqlite-model.o clutter-sqlite-model.o + $(CC) -g -Wall $(CFLAGS) -o $@ test-sqlite-model.o clutter-sqlite-model.o $(LIBS) + +clean: + rm -fr *.o test-sqlite-model diff --git a/attic/sqlite-model/clutter-sqlite-model.c b/attic/sqlite-model/clutter-sqlite-model.c new file mode 100644 index 0000000..0a4c624 --- /dev/null +++ b/attic/sqlite-model/clutter-sqlite-model.c @@ -0,0 +1,1110 @@ +/* + * ClutterSqliteModel + * + * An sqlite3-backed ClutterModel implementation. + * + * Authored By Chris Lord + * + * Copyright (C) 2008 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * NB: Inspiration taken from the 'woohaa' toy by Matthew Allum and + * GValue conversion code copied from ClutterListModel, by + * Matthew Allum, Neil Jagdish Patel and Emmanuele Bassi. + */ + +#include +#include + +#include "clutter-sqlite-model.h" + +#define CLUTTER_SQLITE_TYPE_MODEL_ITER (clutter_sqlite_model_iter_get_type()) +#define CLUTTER_SQLITE_MODEL_ITER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + CLUTTER_SQLITE_TYPE_MODEL_ITER, \ + ClutterSqliteModelIter)) +#define CLUTTER_SQLITE_IS_MODEL_ITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + CLUTTER_SQLITE_TYPE_MODEL_ITER)) +#define CLUTTER_SQLITE_MODEL_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_SQLITE_TYPE_MODEL_ITER, \ + ClutterSqliteModelIterClass)) +#define CLUTTER_SQLITE_IS_MODEL_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_SQLITE_TYPE_MODEL_ITER)) +#define CLUTTER_SQLITE_MODEL_ITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_SQLITE_TYPE_MODEL_ITER, \ + ClutterSqliteModelIterClass)) + +typedef struct _ClutterSqliteModelIter ClutterSqliteModelIter; +typedef struct _ClutterSqliteModelIterClass ClutterSqliteModelIterClass; + +struct _ClutterSqliteModelIter +{ + ClutterModelIter parent_instance; + + guint is_parent; + gboolean is_last; + gint row; + gint rowid; +}; + +struct _ClutterSqliteModelIterClass +{ + ClutterModelIterClass parent_class; +}; + +G_DEFINE_TYPE (ClutterSqliteModel, clutter_sqlite_model, CLUTTER_TYPE_MODEL) +G_DEFINE_TYPE (ClutterSqliteModelIter, clutter_sqlite_model_iter, \ + CLUTTER_TYPE_MODEL_ITER) + +#define MODEL_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), CLUTTER_SQLITE_TYPE_MODEL, \ + ClutterSqliteModelPrivate)) + +enum +{ + PROP_0, + + PROP_DB, + PROP_TABLE, + PROP_COL_NAMES, + PROP_COL_TYPES, + PROP_STATEMENT, +}; + +enum +{ + SQL_ADD_ROW = 0, + SQL_GET_ROW, + SQL_DELETE_ROW, + N_SQL_STATEMENTS +}; + +/* TODO: Optimisation: Do select statements like the update statements and have + * a separate query per column. + */ +static const gchar *sql_statements[] = + { + "insert into %s(\"%s\") values(NULL);", + "select *,rowid from %s where rowid=:rowid;", + "delete from %s where rowid=:rowid;", + }; + +static const gchar *sql_update_statement = + "update %s set %s=:value where rowid=:rowid;"; + +struct _ClutterSqliteModelPrivate +{ + sqlite3 *db; + gchar **col_names; + ClutterSqliteIntV *col_types; + gchar *table; + gint n_columns; + + sqlite3_stmt *statements[N_SQL_STATEMENTS]; + sqlite3_stmt **update_statements; + + gboolean complete; + sqlite3_stmt *statement; + guint version; + GPtrArray *rowids; + GHashTable *rowid_to_row; + + gboolean skip_add; + gboolean skip_change; + gboolean skip_remove; +}; + +/* Retries are every half a second */ +#define META_MAX_TRIES 30 + +/* In case another process/thread is using this db, deal with locking */ +#define DB_RETRY_TIME 2000 +#define DB_RETRY_WAIT 0 + +static ClutterModelIter * +clutter_sqlite_model_iter_new (ClutterSqliteModel *db, + gint row); + +static ClutterModelIter * +clutter_sqlite_model_iter_new_from_rowid (ClutterSqliteModel *db, + gint rowid); + + +ClutterSqliteIntV * +clutter_sqlite_intv_copy (const ClutterSqliteIntV *intv) +{ + ClutterSqliteIntV *copy; + + copy = g_memdup (intv, sizeof (ClutterSqliteIntV)); + copy->data = g_memdup (intv->data, sizeof (gint) * copy->length); + + return copy; +} + +void +clutter_sqlite_intv_free (ClutterSqliteIntV *intv) +{ + g_free (intv->data); + g_free (intv); +} + +GType +clutter_sqlite_intv_get_type (void) +{ + static GType our_type = 0; + + if (!our_type) + our_type = g_boxed_type_register_static ("ClutterSqliteIntV", + (GBoxedCopyFunc) clutter_sqlite_intv_copy, + (GBoxedFreeFunc) clutter_sqlite_intv_free); + + return our_type; +} + +static void +reset_statement (ClutterSqliteModel *model) +{ + ClutterSqliteModelPrivate *priv = model->priv; + + priv->version ++; + priv->complete = FALSE; + if (priv->rowids->len > 0) + g_ptr_array_remove_range (priv->rowids, 0, priv->rowids->len); + g_hash_table_remove_all (priv->rowid_to_row); +} + +static void +clutter_sqlite_model_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (object)->priv; + + switch (property_id) + { + case PROP_DB: + g_value_set_pointer (value, priv->db); + break; + case PROP_TABLE: + g_value_set_string (value, priv->table); + break; + case PROP_COL_NAMES: + g_value_set_boxed (value, priv->col_names); + break; + case PROP_COL_TYPES: + g_value_set_boxed (value, priv->col_types); + break; + case PROP_STATEMENT: + g_value_set_pointer (value, priv->statement); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +clutter_sqlite_model_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (object)->priv; + + switch (property_id) + { + case PROP_DB: + priv->db = g_value_get_pointer (value); + break; + case PROP_TABLE: + if (priv->table) + g_free (priv->table); + priv->table = g_value_dup_string (value); + break; + case PROP_COL_NAMES: + if (priv->col_names) + g_strfreev (priv->col_names); + priv->col_names = g_value_dup_boxed (value); + break; + case PROP_COL_TYPES: + if (priv->col_types) + clutter_sqlite_intv_free (priv->col_types); + priv->col_types = g_value_dup_boxed (value); + break; + case PROP_STATEMENT: + reset_statement (CLUTTER_SQLITE_MODEL (object)); + if (priv->statement) + sqlite3_reset (priv->statement); + priv->statement = g_value_get_pointer (value); + g_signal_emit_by_name (object, "sort-changed"); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +clutter_sqlite_model_dispose (GObject *object) +{ + G_OBJECT_CLASS (clutter_sqlite_model_parent_class)->dispose (object); +} + +static void +clutter_sqlite_model_finalize (GObject *object) +{ + gint i; + + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (object)->priv; + + /* Remove db change notification */ + sqlite3_update_hook (priv->db, NULL, NULL); + + g_strfreev (priv->col_names); + clutter_sqlite_intv_free (priv->col_types); + g_ptr_array_free (priv->rowids, TRUE); + g_hash_table_destroy (priv->rowid_to_row); + + /* Finalize statements */ + for (i = 0; i < N_SQL_STATEMENTS; i++) + if (priv->statements[i]) + sqlite3_finalize (priv->statements[i]); + + for (i = 0; priv->update_statements[i]; i++) + sqlite3_finalize (priv->update_statements[i]); + g_free (priv->update_statements); + + G_OBJECT_CLASS (clutter_sqlite_model_parent_class)->finalize (object); +} + +static glong +time_val_diff (GTimeVal *val1, GTimeVal *val2) +{ + glong diff; + + diff = (val2->tv_sec - val1->tv_sec) * 1000; + diff += (val2->tv_usec - val1->tv_usec) / 1000; + + return diff; +} + +static int +sqlite3_step_retry (sqlite3_stmt *stmt) +{ + GTimeVal val1, val2; + int result = SQLITE_BUSY; + + g_assert (stmt); + + g_get_current_time (&val1); + + while (result == SQLITE_BUSY) { + if ((result = sqlite3_step (stmt)) != SQLITE_BUSY) + break; + + g_get_current_time (&val2); + + if (time_val_diff (&val1, &val2) >= DB_RETRY_TIME) + break; + } + + if (result == SQLITE_BUSY) + g_warning ("Database busy, could not execute query"); + + return result; +} + +static gboolean +statement_next (ClutterSqliteModel *model, + gboolean complete, + gint find_rowid, + gint stop_on_row) +{ + ClutterSqliteModelPrivate *priv = model->priv; + gboolean last = FALSE; + + if (!priv->statement) + return TRUE; + + priv->version ++; + + if (priv->rowids->len == 0) + sqlite3_reset (priv->statement); + + do + { + int result = sqlite3_step_retry (priv->statement); + gint rowid = sqlite3_column_int (priv->statement, priv->n_columns); + + if (result == SQLITE_ROW) + { + g_hash_table_insert (priv->rowid_to_row, + GINT_TO_POINTER (rowid), + GINT_TO_POINTER (priv->rowids->len) + 1); + g_ptr_array_add (priv->rowids, GINT_TO_POINTER (rowid)); + + if (rowid == find_rowid) + break; + } + else if ((result == SQLITE_DONE) || (result == SQLITE_OK)) + { + sqlite3_reset (priv->statement); + priv->complete = TRUE; + last = TRUE; + break; + } + else + { + g_warning ("Error while stepping main statement: %s", + sqlite3_errmsg (priv->db)); + break; + } + + if ((priv->rowids->len - 1) == stop_on_row) + break; + } while (complete); + + return last; +} + +static void +clutter_sqlite_update_hook (void *user_data, + int type, + const char *db_name, + const char *table, + sqlite_int64 rowid) +{ + ClutterModelIter *iter; + ClutterSqliteModel *model = user_data; + ClutterSqliteModelPrivate *priv = model->priv; + gboolean skip = FALSE; + + if (strcmp (priv->table, table) != 0) + return; + + /* We need to be able to skip row additions/changes as ClutterModel emits + * these signals itself, where as we want to emit them for all additions/ + * changes using sqlite hooks. + */ + if ((type == SQLITE_INSERT) && (priv->skip_add)) + { + skip = TRUE; + priv->skip_add = FALSE; + } + else if ((type == SQLITE_UPDATE) && (priv->skip_change)) + { + skip = TRUE; + priv->skip_change = FALSE; + } + else if ((type == SQLITE_DELETE) && (priv->skip_remove)) + { + skip = TRUE; + priv->skip_remove = FALSE; + } + + if (!skip) + { + switch (type) + { + case SQLITE_INSERT: + iter = clutter_sqlite_model_iter_new_from_rowid (model, rowid); + g_signal_emit_by_name (model, "row-added", iter); + if (iter) + g_object_unref (iter); + break; + case SQLITE_DELETE: + g_signal_emit_by_name (model, "row-removed", NULL); + break; + case SQLITE_UPDATE: + iter = clutter_sqlite_model_iter_new_from_rowid (model, rowid); + g_signal_emit_by_name (model, "row-changed", iter); + if (iter) + g_object_unref (iter); + break; + } + } + + /* Reset our index, it may not be valid anymore */ + reset_statement (model); +} + +static guint +clutter_sqlite_model_get_n_rows (ClutterModel *model) +{ + ClutterSqliteModel *sqlite_model = CLUTTER_SQLITE_MODEL (model); + ClutterSqliteModelPrivate *priv = sqlite_model->priv; + + if (!priv->complete) + statement_next (sqlite_model, TRUE, -1, -1); + + return priv->rowids->len; +} + +static guint +clutter_sqlite_model_get_n_columns (ClutterModel *model) +{ + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (model)->priv; + return priv->n_columns; +} + +static const gchar * +clutter_sqlite_model_get_column_name (ClutterModel *model, guint column) +{ + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (model)->priv; + return priv->col_names[column]; +} + +static GType +clutter_sqlite_model_get_column_type (ClutterModel *model, guint column) +{ + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (model)->priv; + + switch (priv->col_types->data[column]) + { + case SQLITE_INTEGER : + return G_TYPE_INT; + case SQLITE_FLOAT : + return G_TYPE_DOUBLE; + case SQLITE_BLOB : + case SQLITE_TEXT : + return G_TYPE_STRING; + case SQLITE_NULL : + default : + return G_TYPE_INVALID; + } +} + +static ClutterModelIter * +clutter_sqlite_model_insert_row (ClutterModel *model, gint index) +{ + /* Note: This ignores index and just 'appends' to the table */ + gint result; + ClutterSqliteModel *sqlite_model = CLUTTER_SQLITE_MODEL (model); + ClutterSqliteModelPrivate *priv = sqlite_model->priv; + + /* Cancel the current iteration through the db, + * we'll be reset on add anyway */ + if (!priv->complete && priv->rowids->len) + sqlite3_reset (priv->statement); + + /* Skip the add hook, ClutterModel generates the row-added signal */ + priv->skip_add = TRUE; + result = sqlite3_step_retry (priv->statements[SQL_ADD_ROW]); + sqlite3_reset (priv->statements[SQL_ADD_ROW]); + + if (result == SQLITE_DONE) + { + gint rowid = sqlite3_last_insert_rowid (priv->db); + ClutterModelIter *iter = + clutter_sqlite_model_iter_new_from_rowid (sqlite_model, rowid); + if (iter) + return iter; + else + g_warning ("Failed to get iter for newly created row, " + "probably about to assert."); + } + else + g_warning ("Failed to create row, probably about to assert: %s", + sqlite3_errmsg (priv->db)); + + return NULL; +} + +static void +clutter_sqlite_model_remove_row (ClutterModel *model, guint row) +{ + ClutterSqliteModel *sqlite_model = CLUTTER_SQLITE_MODEL (model); + ClutterSqliteModelPrivate *priv = sqlite_model->priv; + ClutterModelIter *iter; + + /* Fire off 'removed' signal. We do this here, so at least for rows + * removed through ClutterModel, we can pass a valid iter. + */ + iter = clutter_sqlite_model_iter_new (sqlite_model, row); + if (iter) + { + priv->skip_remove = TRUE; + g_signal_emit_by_name (model, "row-removed", iter); + g_object_unref (iter); + } + + if (!priv->complete && priv->rowids->len) + sqlite3_reset (priv->statement); + + sqlite3_bind_int (priv->statements[SQL_DELETE_ROW], + 1, + GPOINTER_TO_INT (priv->rowids->pdata[row])); + sqlite3_step_retry (priv->statements[SQL_DELETE_ROW]); + sqlite3_reset (priv->statements[SQL_DELETE_ROW]); +} + +static ClutterModelIter * +clutter_sqlite_model_get_iter_at_row (ClutterModel *model, guint row) +{ + return clutter_sqlite_model_iter_new (CLUTTER_SQLITE_MODEL (model), row); +} + +static void +clutter_sqlite_model_resort (ClutterModel *model, + ClutterModelSortFunc func, + gpointer data) +{ +} + +static GObject * +clutter_sqlite_model_constructor (GType type, + guint n_properties, + GObjectConstructParam *properties) +{ + GObjectClass *gobject_class; + GObject *obj; + ClutterSqliteModelPrivate *priv; + gint i; + + gobject_class = G_OBJECT_CLASS (clutter_sqlite_model_parent_class); + obj = gobject_class->constructor (type, n_properties, properties); + priv = CLUTTER_SQLITE_MODEL (obj)->priv; + + /* Set the busy-timeout */ + sqlite3_busy_timeout (priv->db, DB_RETRY_WAIT); + + /* Generate and precompile statements */ + for (i = 0; i < N_SQL_STATEMENTS; i++) + { + gchar *text = + g_strdup_printf (sql_statements[i], priv->table, priv->col_names[0]); + + if (sqlite3_prepare (priv->db, + text, + -1, + &priv->statements[i], + NULL) != SQLITE_OK) + g_warning ("Failed to prepare '%s': %s", + text, + sqlite3_errmsg (priv->db)); + + g_free (text); + } + + priv->n_columns = priv->col_types->length; + + priv->update_statements = + g_malloc0 (sizeof (sqlite3_stmt *) * priv->n_columns); + for (i = 0; i < priv->n_columns; i++) + { + gchar *text = g_strdup_printf (sql_update_statement, + priv->table, + priv->col_names[i]); + if (sqlite3_prepare (priv->db, + text, + -1, + &priv->update_statements[i], + NULL) != SQLITE_OK) + g_warning ("Failed to prepare '%s' : %s", + text, + sqlite3_errmsg (priv->db)); + + g_free (text); + } + + /* Hook onto data change notification */ + sqlite3_update_hook (priv->db, clutter_sqlite_update_hook, obj); + + return obj; +} + +static void +clutter_sqlite_model_class_init (ClutterSqliteModelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterModelClass *model_class = CLUTTER_MODEL_CLASS (klass); + + g_type_class_add_private (klass, sizeof (ClutterSqliteModelPrivate)); + + object_class->constructor = clutter_sqlite_model_constructor; + object_class->get_property = clutter_sqlite_model_get_property; + object_class->set_property = clutter_sqlite_model_set_property; + object_class->dispose = clutter_sqlite_model_dispose; + object_class->finalize = clutter_sqlite_model_finalize; + + model_class->get_n_rows = clutter_sqlite_model_get_n_rows; + model_class->get_n_columns = clutter_sqlite_model_get_n_columns; + model_class->get_column_name = clutter_sqlite_model_get_column_name; + model_class->get_column_type = clutter_sqlite_model_get_column_type; + model_class->insert_row = clutter_sqlite_model_insert_row; + model_class->remove_row = clutter_sqlite_model_remove_row; + model_class->get_iter_at_row = clutter_sqlite_model_get_iter_at_row; + model_class->resort = clutter_sqlite_model_resort; + + g_object_class_install_property (object_class, + PROP_DB, + g_param_spec_pointer ("db", + "Database", + "Sqlite3 database " + "pointer", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_TABLE, + g_param_spec_string ("table", + "Table name", + "Sqlite3 table name", + NULL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_COL_NAMES, + g_param_spec_boxed ("col-names", + "Column names", + "Sqlite3 column names", + G_TYPE_STRV, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_COL_TYPES, + g_param_spec_boxed ("col-types", + "Column types", + "Sqlite3 column types", + CLUTTER_SQLITE_TYPE_INTV, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_STATEMENT, + g_param_spec_pointer ("statement", + "Statement", + "Sqlite3 statement " + "pointer", + G_PARAM_READWRITE)); +} + +static void +clutter_sqlite_model_init (ClutterSqliteModel *self) +{ + ClutterSqliteModelPrivate *priv = self->priv = MODEL_PRIVATE (self); + + priv->rowids = g_ptr_array_new (); + priv->rowid_to_row = g_hash_table_new (NULL, NULL); +} + +ClutterModel * +clutter_sqlite_model_new (sqlite3 *db, const gchar *table, ...) +{ + ClutterModel *model; + gint n_columns; + const gchar *name; + GStrv name_array; + ClutterSqliteIntV *type_array; + GList *names = NULL; + GList *types = NULL; + + va_list args; + + va_start (args, table); + + n_columns = 0; + name = va_arg (args, const gchar *); + for (; name; name = va_arg (args, const gchar *)) + { + names = g_list_prepend (names, g_strdup (name)); + types = g_list_prepend (types, GINT_TO_POINTER (va_arg (args, gint))); + + n_columns ++; + } + + va_end (args); + + name_array = g_malloc0 (sizeof (gchar *) * (n_columns + 1)); + + type_array = g_new (ClutterSqliteIntV, 1); + type_array->length = n_columns; + type_array->data = g_malloc (sizeof (gint) * n_columns); + + while (names) + { + n_columns--; + name_array[n_columns] = names->data; + type_array->data[n_columns] = GPOINTER_TO_INT (types->data); + + names = g_list_delete_link (names, names); + types = g_list_delete_link (types, types); + } + + model = CLUTTER_MODEL (g_object_new (CLUTTER_SQLITE_TYPE_MODEL, + "db", db, + "table", table, + "col-names", name_array, + "col-types", type_array, + NULL)); + + g_strfreev (name_array); + clutter_sqlite_intv_free (type_array); + + return model; +} + +static void +clutter_sqlite_model_iter_get_value (ClutterModelIter *iter, + guint column, + GValue *value) +{ + sqlite3_stmt *statement; + GType column_type; + gboolean converted = FALSE; + GValue real_value = { 0, }; + GValue column_value = { 0, }; + + ClutterModel *model = clutter_model_iter_get_model (iter); + ClutterSqliteModelPrivate *priv = CLUTTER_SQLITE_MODEL (model)->priv; + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + + if (!priv->statement) + return; + + column_type = clutter_sqlite_model_get_column_type (model, column); + if (column_type == G_TYPE_INVALID) + return; + + if (sqliter->is_parent == priv->version) + statement = priv->statement; + else + { + gint rowid = (sqliter->row == -1) ? + sqliter->rowid : GPOINTER_TO_INT (priv->rowids->pdata[sqliter->row]); + sqlite3_bind_int (priv->statements[SQL_GET_ROW], 1, rowid); + if (sqlite3_step_retry (priv->statements[SQL_GET_ROW]) != SQLITE_ROW) + { + g_warning ("Error getting row: %s", sqlite3_errmsg (priv->db)); + sqlite3_reset (priv->statements[SQL_GET_ROW]); + return; + } + + statement = priv->statements[SQL_GET_ROW]; + } + + g_value_init (&column_value, column_type); + switch (column_type) + { + case G_TYPE_STRING : + if (priv->col_types->data[column] == SQLITE_TEXT) + g_value_set_string (&column_value, (const gchar *) + sqlite3_column_text (statement, column)); + break; + case G_TYPE_INT : + g_value_set_int (&column_value, + sqlite3_column_int (statement, column)); + break; + case G_TYPE_BOOLEAN : + g_value_set_boolean (&column_value, + sqlite3_column_int (statement, column)); + break; + default : + g_value_unset (&column_value); + if (sqliter->is_parent != priv->version) + sqlite3_reset (priv->statements[SQL_GET_ROW]); + return; + } + + if (sqliter->is_parent != priv->version) + sqlite3_reset (priv->statements[SQL_GET_ROW]); + + if (!g_type_is_a (G_VALUE_TYPE (value), column_type)) + { + if (!g_value_type_compatible (G_VALUE_TYPE (value), column_type) && + !g_value_type_compatible (column_type, G_VALUE_TYPE (value))) + { + g_warning ("%s: Unable to convert from %s to %s", + G_STRLOC, + g_type_name (G_VALUE_TYPE (value)), + g_type_name (column_type)); + return; + } + + if (!g_value_transform (&column_value, &real_value)) + { + g_warning ("%s: Unable to make conversion from %s to %s", + G_STRLOC, + g_type_name (column_type), + g_type_name (G_VALUE_TYPE (value))); + g_value_unset (&real_value); + } + + converted = TRUE; + } + + if (converted) + { + g_value_copy (&real_value, value); + g_value_unset (&real_value); + } + else + g_value_copy (&column_value, value); + + g_value_unset (&column_value); +} + +static void +clutter_sqlite_model_iter_set_value (ClutterModelIter *iter, + guint column, + const GValue *value) +{ + gint res, rowid; + GType column_type; + gboolean converted = FALSE; + GValue real_value = { 0, }; + + ClutterModel *model = clutter_model_iter_get_model (iter); + ClutterSqliteModel *sqlite_model = CLUTTER_SQLITE_MODEL (model); + ClutterSqliteModelPrivate *priv = sqlite_model->priv; + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + + if (!priv->statement) + return; + + column_type = clutter_sqlite_model_get_column_type (model, column); + if (column_type == G_TYPE_INVALID) + return; + + g_value_init (&real_value, column_type); + + if (!g_type_is_a (G_VALUE_TYPE (value), column_type)) + { + if (!g_value_type_compatible (G_VALUE_TYPE (value), column_type) && + !g_value_type_compatible (column_type, G_VALUE_TYPE (value))) + { + g_warning ("%s: Unable to convert from %s to %s", + G_STRLOC, + g_type_name (G_VALUE_TYPE (value)), + g_type_name (column_type)); + return; + } + + if (!g_value_transform (value, &real_value)) + { + g_warning ("%s: Unable to make conversion from %s to %s", + G_STRLOC, + g_type_name (G_VALUE_TYPE (value)), + g_type_name (column_type)); + g_value_unset (&real_value); + } + + converted = TRUE; + } + + if (!converted) + g_value_copy (value, &real_value); + + if (!priv->complete && priv->rowids->len) + statement_next (sqlite_model, TRUE, -1, -1); + + switch (column_type) + { + case G_TYPE_STRING : + sqlite3_bind_text (priv->update_statements[column], + 1, g_value_get_string (&real_value), -1, + SQLITE_TRANSIENT); + break; + case G_TYPE_INT : + sqlite3_bind_int (priv->update_statements[column], + 1, g_value_get_int (&real_value)); + break; + case G_TYPE_BOOLEAN : + sqlite3_bind_int (priv->update_statements[column], + 1, g_value_get_boolean (&real_value)); + break; + case G_TYPE_ENUM : + sqlite3_bind_int (priv->update_statements[column], + 1, g_value_get_enum (&real_value)); + break; + case G_TYPE_OBJECT : + /* TODO: Let's think about this later */ + default : + goto _iter_set_value_skip_write; + } + + rowid = (sqliter->row == -1) ? + sqliter->rowid : GPOINTER_TO_INT (priv->rowids->pdata[sqliter->row]); + sqlite3_bind_int (priv->update_statements[column], 2, rowid); + priv->skip_change = TRUE; + sqlite3_step_retry (priv->update_statements[column]); + res = sqlite3_reset (priv->update_statements[column]); + + if (res != SQLITE_OK) + g_warning ("Unable to write to db (%d): %s", + res, + sqlite3_errmsg (priv->db)); + +_iter_set_value_skip_write: + + g_value_unset (&real_value); +} + +static gboolean +clutter_sqlite_model_iter_is_first (ClutterModelIter *iter) +{ + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + return (sqliter->row == 0) ? TRUE : FALSE; +} + +static gboolean +clutter_sqlite_model_iter_is_last (ClutterModelIter *iter) +{ + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + return sqliter->is_last; +} + +static ClutterModelIter * +clutter_sqlite_model_iter_new (ClutterSqliteModel *model, + gint row) +{ + ClutterSqliteModelIter *iter; + ClutterSqliteModelPrivate *priv = model->priv; + + if (!priv->statement) + return NULL; + + if (row && (row > (gint)priv->rowids->len)) + { + if (!priv->complete) + statement_next (model, TRUE, -1, row); + + if (row > priv->rowids->len) + return NULL; + } + + iter = g_object_new (CLUTTER_SQLITE_TYPE_MODEL_ITER, + "model", model, + "row", row, + NULL); + iter->row = row; + iter->is_last = (row >= priv->rowids->len) ? TRUE : FALSE; + + if ((row == priv->rowids->len) && (!priv->complete)) + { + iter->is_last = statement_next (model, FALSE, -1, -1); + iter->is_parent = priv->version; + } + + return CLUTTER_MODEL_ITER (iter); +} + +static ClutterModelIter * +clutter_sqlite_model_iter_new_from_rowid (ClutterSqliteModel *model, + gint rowid) +{ + ClutterSqliteModelPrivate *priv = model->priv; + ClutterModelIter *iter; + ClutterSqliteModelIter *sqlite_iter; + + if (!priv->statement) + return NULL; + + iter = clutter_sqlite_model_iter_new (model, -1); + sqlite_iter = CLUTTER_SQLITE_MODEL_ITER (iter); + sqlite_iter->rowid = rowid; + + return iter; +} + +static ClutterModelIter * +clutter_sqlite_model_iter_next (ClutterModelIter *iter) +{ + ClutterModelIter *new_iter; + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + ClutterSqliteModel *model; + ClutterSqliteModelPrivate *priv; + + if (sqliter->is_last) + return NULL; + + model = CLUTTER_SQLITE_MODEL (clutter_model_iter_get_model (iter)); + priv = model->priv; + + /* If we don't yet have a row set, try to get one */ + if (sqliter->row < 0) + { + sqliter->row = GPOINTER_TO_INT ( + g_hash_table_lookup (priv->rowid_to_row, + GINT_TO_POINTER (sqliter->rowid))); + + if (!priv->complete && !sqliter->row) + { + statement_next (model, TRUE, sqliter->rowid, -1); + sqliter->row = GPOINTER_TO_INT ( + g_hash_table_lookup (priv->rowid_to_row, + GINT_TO_POINTER (sqliter->rowid))); + } + + if (!sqliter->row) + { + sqliter->row = -1; + return NULL; + } + } + + new_iter = clutter_sqlite_model_iter_new (model, sqliter->row + 1); + + if (sqliter->is_parent == priv->version) + { + ClutterSqliteModelIter *sqlite_iter = + CLUTTER_SQLITE_MODEL_ITER (new_iter); + statement_next (model, FALSE, -1, -1); + sqlite_iter->is_parent = priv->version; + } + + g_object_unref (sqliter); + + return new_iter; +} + +static ClutterModelIter * +clutter_sqlite_model_iter_prev (ClutterModelIter *iter) +{ + ClutterModelIter *new_iter; + ClutterSqliteModelIter *sqliter = CLUTTER_SQLITE_MODEL_ITER (iter); + ClutterSqliteModel *model; + + if (sqliter->row == 0) + return NULL; + + model = CLUTTER_SQLITE_MODEL (clutter_model_iter_get_model (iter)); + new_iter = clutter_sqlite_model_iter_new (model, sqliter->row - 1); + + g_object_unref (sqliter); + + return new_iter; +} + +static void +clutter_sqlite_model_iter_class_init (ClutterSqliteModelIterClass *klass) +{ + ClutterModelIterClass *iter_class = CLUTTER_MODEL_ITER_CLASS (klass); + + iter_class->get_value = clutter_sqlite_model_iter_get_value; + iter_class->set_value = clutter_sqlite_model_iter_set_value; + iter_class->is_first = clutter_sqlite_model_iter_is_first; + iter_class->is_last = clutter_sqlite_model_iter_is_last; + iter_class->next = clutter_sqlite_model_iter_next; + iter_class->prev = clutter_sqlite_model_iter_prev; +} + +static void +clutter_sqlite_model_iter_init (ClutterSqliteModelIter *iter) +{ +} + diff --git a/attic/sqlite-model/clutter-sqlite-model.h b/attic/sqlite-model/clutter-sqlite-model.h new file mode 100644 index 0000000..815af58 --- /dev/null +++ b/attic/sqlite-model/clutter-sqlite-model.h @@ -0,0 +1,97 @@ + +/* + * ClutterSqliteModel + * + * An sqlite3-backed ClutterModel implementation. + * + * Authored By Chris Lord + * + * Copyright (C) 2008 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * NB: Inspiration taken from the 'woohaa' toy by Matthew Allum and + * GValue conversion code copied from ClutterListModel, by + * Matthew Allum, Neil Jagdish Patel and Emmanuele Bassi. + */ + +#ifndef _CLUTTER_SQLITE_MODEL +#define _CLUTTER_SQLITE_MODEL + +#include +#include +#include + +G_BEGIN_DECLS + +#define CLUTTER_SQLITE_TYPE_INTV (clutter_sqlite_intv_get_type()) + +typedef struct _ClutterSqliteIntV ClutterSqliteIntV; + +struct _ClutterSqliteIntV +{ + guint length; + gint *data; +}; + +ClutterSqliteIntV *clutter_sqlite_intv_copy (const ClutterSqliteIntV *intv); +void clutter_sqlite_intv_free (ClutterSqliteIntV *intv); + + +#define CLUTTER_SQLITE_TYPE_MODEL (clutter_sqlite_model_get_type()) + +#define CLUTTER_SQLITE_MODEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_SQLITE_TYPE_MODEL, ClutterSqliteModel)) + +#define CLUTTER_SQLITE_MODEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_SQLITE_TYPE_MODEL, ClutterSqliteModelClass)) + +#define CLUTTER_SQLITE_IS_MODEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_SQLITE_TYPE_MODEL)) + +#define CLUTTER_SQLITE_IS_MODEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_SQLITE_TYPE_MODEL)) + +#define CLUTTER_SQLITE_MODEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_SQLITE_TYPE_MODEL, ClutterSqliteModelClass)) + +typedef struct _ClutterSqliteModel ClutterSqliteModel; +typedef struct _ClutterSqliteModelPrivate ClutterSqliteModelPrivate; +typedef struct _ClutterSqliteModelClass ClutterSqliteModelClass; + +struct _ClutterSqliteModel { + ClutterModel parent; + + ClutterSqliteModelPrivate *priv; +}; + +struct _ClutterSqliteModelClass { + ClutterModelClass parent_class; +}; + +GType clutter_sqlite_model_get_type (void); + +ClutterModel *clutter_sqlite_model_new (sqlite3 *db, const gchar *table, ...); + +G_END_DECLS + +#endif + diff --git a/attic/sqlite-model/test-sqlite-model.c b/attic/sqlite-model/test-sqlite-model.c new file mode 100644 index 0000000..0cc2750 --- /dev/null +++ b/attic/sqlite-model/test-sqlite-model.c @@ -0,0 +1,248 @@ +#include +#include +#include "clutter-sqlite-model.h" +#include +#include + +/* Test taken from Clutter and modified to use ClutterSqliteModel */ + +/* gcc -o test-sqlite-model *.c `pkg-config --cflags --libs clutter-0.8 sqlite3` -Wall -g */ + +#define N_ROWS 1000 + +enum +{ + COLUMN_FOO, + COLUMN_BAR, + + N_COLUMNS +}; + +static sqlite3_stmt *statement = NULL; + +static void +set_query (ClutterModel *model, const gchar *query) +{ + sqlite3_stmt *old_stmt; + sqlite3 *db; + + old_stmt = statement; + + g_object_get (G_OBJECT (model), "db", &db, NULL); + if (sqlite3_prepare (db, query, -1, &statement, NULL) != SQLITE_OK) + g_error ("Error preparing query: %s", sqlite3_errmsg (db)); + g_object_set (G_OBJECT (model), "statement", statement, NULL); + + if (old_stmt) + sqlite3_finalize (old_stmt); +} + +static void +print_iter (ClutterModelIter *iter, + const gchar *text) +{ + ClutterModel *model; + gint i; + gchar *string; + + model = clutter_model_iter_get_model (iter); + + clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1); + + g_print ("[row:%02d]: %s: (%s: %d), (%s: %s)\n", + clutter_model_iter_get_row (iter), + text, + clutter_model_get_column_name (model, COLUMN_FOO), i, + clutter_model_get_column_name (model, COLUMN_BAR), string); + + g_free (string); +} + +static gboolean +foreach_func (ClutterModel *model, + ClutterModelIter *iter, + gpointer dummy) +{ + gint i; + gchar *string; + + clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1); + + g_print ("[row:%02d]: Foreach: %d, %s\n", + clutter_model_iter_get_row (iter), + i, string); + + g_free (string); + + return TRUE; +} + +static void +on_row_changed (ClutterModel *model, + ClutterModelIter *iter) +{ + print_iter (iter, "Changed"); +} + +static void +filter_model (ClutterModel *model) +{ + ClutterModelIter *iter; + + g_print ("\n* Changing Query: reverse alpha\n"); + set_query (model, "select *,rowid from mytable order by bar desc;"); + + g_signal_connect (model, "row-changed", G_CALLBACK (on_row_changed), NULL); + + iter = clutter_model_get_iter_at_row (model, 0); + clutter_model_iter_set (iter, COLUMN_BAR, "Changed string of 0th row, " + "automatically gets sorted", + -1); + g_object_unref (iter); + + clutter_model_foreach (model, foreach_func, NULL); + + g_print ("\n* Unset filter\n"); + clutter_model_set_filter (model, NULL, NULL, NULL); + + while (clutter_model_get_n_rows (model)) + clutter_model_remove (model, 0); + + clutter_main_quit (); +} + +static void +iterate (ClutterModel *model) +{ + ClutterModelIter *iter; + + iter = clutter_model_get_first_iter (model); + + while (!clutter_model_iter_is_last (iter)) + { + print_iter (iter, "Forward Iteration"); + iter = clutter_model_iter_next (iter); + } + g_object_unref (iter); + + iter = clutter_model_get_last_iter (model); + do + { + print_iter (iter, "Reverse Iteration"); + iter = clutter_model_iter_prev (iter); + } + while (!clutter_model_iter_is_first (iter)); + + print_iter (iter, "Reverse Iteration"); + g_object_unref (iter); + + filter_model (model); +} + + +static gboolean +populate_model (ClutterModel *model) +{ + gint i; + + for (i = 0; i < N_ROWS; i++) + { + gchar *string = g_strdup_printf ("String %d", i); + + clutter_model_append (model, + COLUMN_FOO, i, + COLUMN_BAR, string, + -1); + g_free (string); + } + + clutter_model_foreach (model, foreach_func, NULL); + iterate (model); + + return FALSE; +} + +static void +on_row_added (ClutterModel *model, + ClutterModelIter *iter, + gpointer dummy) +{ + gint i; + gchar *string; + + clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1); + + g_print ("[row:%02d]: Added: %d, %s\n", + clutter_model_iter_get_row (iter), + i, string); + + g_free (string); +} + +static void +on_row_removed (ClutterModel *model, + ClutterModelIter *iter, + gpointer dummy) +{ + print_iter (iter, "Removed"); +} + +static void +on_sort_changed (ClutterModel *model) +{ + g_print ("*** Sort Changed ***\n\n"); + clutter_model_foreach (model, foreach_func, NULL); +} + +static void +on_filter_changed (ClutterModel *model) +{ + g_print ("*** Filter Changed ***\n\n"); +} + +int +main (int argc, char *argv[]) +{ + sqlite3 *db; + ClutterModel *model; + const gchar *file = "test-sqlite-db.db"; + + clutter_init (&argc, &argv); + + if (sqlite3_open (file, &db)) + g_error ("Error creating database: %s", sqlite3_errmsg (db)); + + if (sqlite3_exec (db, + "CREATE TABLE IF NOT EXISTS mytable(foo int, bar text);", + NULL, + NULL, + NULL)) + g_error ("Can't create table: %s", sqlite3_errmsg (db)); + + model = clutter_sqlite_model_new (db, "mytable", + "foo", SQLITE_INTEGER, + "bar", SQLITE_TEXT, + NULL); + + set_query (model, "select *,rowid from mytable order by bar;"); + + g_timeout_add (1000, (GSourceFunc) populate_model, model); + + g_signal_connect (model, "row-added", + G_CALLBACK (on_row_added), NULL); + g_signal_connect (model, "row-removed", + G_CALLBACK (on_row_removed), NULL); + g_signal_connect (model, "sort-changed", + G_CALLBACK (on_sort_changed), NULL); + g_signal_connect (model, "filter-changed", + G_CALLBACK (on_filter_changed), NULL); + + clutter_main(); + + g_object_unref (model); + + g_remove (file); + + return 0; +} + diff --git a/attic/table/Makefile b/attic/table/Makefile new file mode 100644 index 0000000..385061e --- /dev/null +++ b/attic/table/Makefile @@ -0,0 +1,14 @@ +LIBS=`pkg-config --libs clutter-0.6 gnome-vfs-2.0 clutter-gst-0.6` +INCS=`pkg-config --cflags clutter-0.6 gnome-vfs-2.0 clutter-gst-0.6` + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: table + + +table: table.o clutter-dominatrix.o clutter-video-player.o + $(CC) -g -Wall $(CFLAGS) -o $@ table.o clutter-dominatrix.o clutter-video-player.o $(LIBS) + +clean: + rm -fr *.o table diff --git a/attic/table/clutter-dominatrix.c b/attic/table/clutter-dominatrix.c new file mode 100644 index 0000000..79e2991 --- /dev/null +++ b/attic/table/clutter-dominatrix.c @@ -0,0 +1,1008 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Tomas Frydrych tf@openedhand.com> + * + * Copyright (C) 2007 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:clutter-dominatrix + * @short_description: An actor manipulation proxy. + * + * #ClutterDominatrix is a proxy object for manipulation for actors via a + * pointer: the slave actor can be rotated by dragging one of it's corners, + * moved by dragging it's center and resizes by dragging the rest of it. + */ + +#include "clutter-dominatrix.h" +#include +#include + +#ifndef CLUTTER_PARAM_READWRITE +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB +#endif + +G_DEFINE_TYPE (ClutterDominatrix, + clutter_dominatrix, + G_TYPE_OBJECT); + +#define CLUTTER_DOMINATRIX_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_DOMINATRIX, ClutterDominatrixPrivate)) + +typedef enum { + DRAG_NONE = 0, + DRAG_ROTATE, + DRAG_MOVE, + DRAG_RESIZE_TL, + DRAG_RESIZE_TR, + DRAG_RESIZE_BL, + DRAG_RESIZE_BR, + DRAG_SCALE, +} DragType; + +struct _ClutterDominatrixPrivate +{ + ClutterActor * slave; + + guint rhandle_width; + guint rhandle_height; + + guint mhandle_width; + guint mhandle_height; + + DragType dragging; + gint prev_x; + gint prev_y; + gint center_x; + gint center_y; + + gboolean scale : 1; + gboolean dont_rotate : 1; + gboolean dont_resize : 1; + gboolean dont_move : 1; + + ClutterGravity gravity; + + ClutterActorBox orig_box; + ClutterFixed orig_scale_x; + ClutterFixed orig_scale_y; + ClutterFixed orig_zang; + gint orig_rot_x; + gint orig_rot_y; + + guint8 old_opacity; +}; + +enum +{ + MANIPULATION_STARTED, + MANIPULATION_ENDED, + + LAST_SIGNAL +}; + +static guint dmx_signals[LAST_SIGNAL] = { 0, }; + +enum +{ + PROP_0, + PROP_ROTATE_HANDLE_WIDTH, + PROP_ROTATE_HANDLE_HEIGHT, + PROP_MOVE_HANDLE_WIDTH, + PROP_MOVE_HANDLE_HEIGHT, + PROP_SLAVE, + PROP_SCALE, + PROP_DISABLE_ROTATION, + PROP_DISABLE_RESIZING, + PROP_DISABLE_MOVEMENT, + PROP_GRAVITY, +}; + + +static void +clutter_dominatrix_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + + ClutterDominatrix *dominatrix; + ClutterDominatrixPrivate *priv; + + dominatrix = CLUTTER_DOMINATRIX(object); + priv = dominatrix->priv; + + switch (prop_id) + { + case PROP_ROTATE_HANDLE_WIDTH: + priv->rhandle_width = g_value_get_int (value); + break; + case PROP_ROTATE_HANDLE_HEIGHT: + priv->rhandle_height = g_value_get_int (value); + break; + case PROP_MOVE_HANDLE_WIDTH: + priv->mhandle_width = g_value_get_int (value); + break; + case PROP_MOVE_HANDLE_HEIGHT: + priv->mhandle_height = g_value_get_int (value); + break; + case PROP_SLAVE: + clutter_dominatrix_set_slave (dominatrix, + CLUTTER_ACTOR (g_value_get_pointer (value))); + break; + case PROP_SCALE: + priv->scale = g_value_get_boolean (value); + break; + case PROP_DISABLE_ROTATION: + priv->dont_rotate = g_value_get_boolean (value); + break; + case PROP_DISABLE_RESIZING: + priv->dont_resize = g_value_get_boolean (value); + break; + case PROP_DISABLE_MOVEMENT: + priv->dont_move = g_value_get_boolean (value); + break; + case PROP_GRAVITY: + priv->gravity = g_value_get_enum (value); + clutter_actor_move_anchor_point_from_gravity (priv->slave, + priv->gravity); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_dominatrix_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterDominatrix *dominatrix; + ClutterDominatrixPrivate *priv; + + dominatrix = CLUTTER_DOMINATRIX(object); + priv = dominatrix->priv; + + switch (prop_id) + { + case PROP_ROTATE_HANDLE_WIDTH: + g_value_set_int (value, priv->rhandle_width); + break; + case PROP_ROTATE_HANDLE_HEIGHT: + g_value_set_int (value, priv->rhandle_height); + break; + case PROP_MOVE_HANDLE_WIDTH: + g_value_set_int (value, priv->mhandle_width); + break; + case PROP_MOVE_HANDLE_HEIGHT: + g_value_set_int (value, priv->mhandle_height); + break; + case PROP_SLAVE: + g_value_set_pointer (value, priv->slave); + break; + case PROP_SCALE: + g_value_set_boolean (value, priv->scale); + break; + case PROP_DISABLE_ROTATION: + g_value_set_boolean (value, priv->dont_rotate); + break; + case PROP_DISABLE_RESIZING: + g_value_set_boolean (value, priv->dont_resize); + break; + case PROP_DISABLE_MOVEMENT: + g_value_set_boolean (value, priv->dont_move); + break; + case PROP_GRAVITY: + g_value_set_enum (value, priv->gravity); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_dominatrix_release_slave (ClutterDominatrixPrivate * priv) +{ + priv->dragging = DRAG_NONE; + + if (priv->slave) + { + g_object_unref (priv->slave); + g_object_set_data (G_OBJECT (priv->slave), "dominatrix", NULL); + priv->slave = NULL; + } +} + +static void +clutter_dominatrix_finalize (GObject *object) +{ + ClutterDominatrix *dmx = CLUTTER_DOMINATRIX (object); + + clutter_dominatrix_release_slave (dmx->priv); + + G_OBJECT_CLASS (clutter_dominatrix_parent_class)->finalize (object); +} + +static void +clutter_dominatrix_store_original_settings (ClutterDominatrixPrivate *priv) +{ + clutter_actor_move_anchor_point_from_gravity (priv->slave, + CLUTTER_GRAVITY_NONE); + clutter_actor_query_coords (priv->slave, &priv->orig_box); + + clutter_actor_get_scalex (priv->slave, + &priv->orig_scale_x, + &priv->orig_scale_y); + + priv->orig_zang = clutter_actor_get_rotationx (priv->slave, + CLUTTER_Z_AXIS, + &priv->orig_rot_x, + &priv->orig_rot_y, + NULL); + clutter_actor_move_anchor_point_from_gravity (priv->slave, + priv->gravity); +} + +static GObject * +clutter_dominatrix_constructor (GType gtype, + guint n_params, + GObjectConstructParam *params) +{ + GObjectClass * parent_class; + GObject * retval; + ClutterDominatrix * dmx; + ClutterActor * stage; + + parent_class = G_OBJECT_CLASS (clutter_dominatrix_parent_class); + retval = parent_class->constructor (gtype, n_params, params); + + dmx = CLUTTER_DOMINATRIX (retval); + + stage = clutter_stage_get_default (); + + clutter_dominatrix_store_original_settings (dmx->priv); + + g_object_set_data (G_OBJECT (dmx->priv->slave), "dominatrix", retval); + + return retval; +} + +static void +clutter_dominatrix_class_init (ClutterDominatrixClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = clutter_dominatrix_constructor; + object_class->set_property = clutter_dominatrix_set_property; + object_class->get_property = clutter_dominatrix_get_property; + object_class->finalize = clutter_dominatrix_finalize; + + g_type_class_add_private (klass, sizeof (ClutterDominatrixPrivate)); + + /** + * ClutterDominatrix:rotate-handle-width: + * + * Width of the rotation handle. + */ + g_object_class_install_property (object_class, + PROP_ROTATE_HANDLE_WIDTH, + g_param_spec_int ("rotate-handle-width", + "width of rotation handle", + "width of rotation handle", + 0, G_MAXINT, + 0, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:rotate-handle-height: + * + * Height of the rotation handle. + */ + g_object_class_install_property (object_class, + PROP_ROTATE_HANDLE_HEIGHT, + g_param_spec_int ("rotate-handle-height", + "height of rotation handle", + "height of rotation handle", + 0, G_MAXINT, + 0, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:move-handle-width: + * + * Width of the move handle. + */ + g_object_class_install_property (object_class, + PROP_MOVE_HANDLE_WIDTH, + g_param_spec_int ("move-handle-width", + "width of move handle", + "width of move handle", + 0, G_MAXINT, + 0, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:move-handle-height: + * + * Height of the move handle. + */ + g_object_class_install_property (object_class, + PROP_MOVE_HANDLE_HEIGHT, + g_param_spec_int ("move-handle-height", + "height of move handle", + "height of move handle", + 0, G_MAXINT, + 0, + CLUTTER_PARAM_READWRITE)); + + + /** + * ClutterDominatrix:slave: + * + * Slave we are manipulating. + */ + g_object_class_install_property (object_class, + PROP_SLAVE, + g_param_spec_pointer ("slave", + "slave", + "slave", + G_PARAM_CONSTRUCT | + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:scale: + * + * Whether dragging in the no-mans land should be translated to scaling + * or resizing. Deafult TRUE + */ + g_object_class_install_property (object_class, + PROP_SCALE, + g_param_spec_boolean ("scale", + "whether to scale or resize", + "whether to scale or resize", + TRUE, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:disable-rotation: + * + * Whether rotation should be disabled; default FALSE + */ + g_object_class_install_property (object_class, + PROP_DISABLE_ROTATION, + g_param_spec_boolean ("disable-rotation", + "whether to rotate", + "whether to rotate", + FALSE, + CLUTTER_PARAM_READWRITE)); + + + /** + * ClutterDominatrix:disable-resizing: + * + * Whether resizing should be disabled; default FALSE + */ + g_object_class_install_property (object_class, + PROP_DISABLE_RESIZING, + g_param_spec_boolean ("disable-resizing", + "whether to resize", + "whether to resize", + FALSE, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:disable-movement: + * + * Whether moving should be disabled; default FALSE + */ + g_object_class_install_property (object_class, + PROP_DISABLE_MOVEMENT, + g_param_spec_boolean ("disable-movement", + "whether to move", + "whether to move", + FALSE, + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix:gravity: + * + * Gravity to use when scaling; default CLUTTER_GRAVITY_CENTER + */ + g_object_class_install_property (object_class, + PROP_GRAVITY, + g_param_spec_enum ("gravity", + "which gravity to use for scaling", + "which gravity to use for scaling", + CLUTTER_TYPE_GRAVITY, + CLUTTER_GRAVITY_CENTER, + G_PARAM_CONSTRUCT | + CLUTTER_PARAM_READWRITE)); + + /** + * ClutterDominatrix::manipulation-started: + * @dmx: the object which received the signal + * + * This signal is emitted each time the users starts to manipulate the + * actor. + * + */ + dmx_signals[MANIPULATION_STARTED] = + g_signal_new ("manipulation-started", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (ClutterDominatrixClass, + manipulation_started), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * ClutterDominatrix::manipulation-ended: + * @dmx: the object which received the signal + * + * This signal is emitted each time the users starts to manipulate the + * actor. + * + */ + dmx_signals[MANIPULATION_ENDED] = + g_signal_new ("manipulation-ended", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (ClutterDominatrixClass, + manipulation_ended), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); +} + +static void +clutter_dominatrix_init (ClutterDominatrix *self) +{ + self->priv = CLUTTER_DOMINATRIX_GET_PRIVATE (self); + + self->priv->rhandle_width = 30; + self->priv->rhandle_height = 30; + self->priv->mhandle_width = 30; + self->priv->mhandle_height = 30; + self->priv->scale = TRUE; + self->priv->gravity = CLUTTER_GRAVITY_CENTER; + self->priv->old_opacity = 0xff; +} + +void +clutter_dominatrix_handle_event (ClutterDominatrix *dominatrix, + ClutterEvent *event) +{ + ClutterDominatrixPrivate * priv = dominatrix->priv; + + switch (event->type) + { + case CLUTTER_BUTTON_PRESS: + { + gint x, y; + ClutterActor * actor = priv->slave; + ClutterVertex v[4]; + ClutterVertex v1, v2; + ClutterFixed xp, yp; + ClutterFixed zang; + gint32 xmin, xmax, ymin, ymax; + gint i; + gint width, height; + gint mhandle_width = priv->mhandle_width; + gint mhandle_height = priv->mhandle_height; + gint rhandle_width = priv->rhandle_width; + gint rhandle_height = priv->rhandle_height; + + if (((ClutterButtonEvent *)event)->click_count == 2) + { + clutter_dominatrix_restore (dominatrix); + break; + } + + clutter_event_get_coords (event, &x, &y); + + clutter_actor_raise_top (priv->slave); + + priv->old_opacity = clutter_actor_get_opacity (priv->slave); + + + g_signal_emit (dominatrix, dmx_signals[MANIPULATION_STARTED], 0); + + priv->prev_x = x; + priv->prev_y = y; + + /* Check that the handle size are sensible in relationship to the + * projected size of our slave, otherwise if the user reduces the size + * of the slave too much, s/he will not be able to expand it again + * -- we practice safe bondage only in this house ;). + * + * Allow the movement handle to be at most half of the width/height + * and the rotation handles to be at most a quarter of width/height. + */ + clutter_actor_get_vertices (actor, v); + + xmin = xmax = v[0].x; + ymin = ymax = v[0].y; + + for (i = 1; i < 4; ++i) + { + if (xmin > v[i].x) + xmin = v[i].x; + if (xmax < v[i].x) + xmax = v[i].x; + + if (ymin > v[i].y) + ymin = v[i].y; + if (ymax < v[i].y) + ymax = v[i].y; + } + + width = CLUTTER_FIXED_INT (xmax - xmin); + height = CLUTTER_FIXED_INT (ymax - ymin); + + /* FIXME -- make this work when the actor is rotated */ + if (width < 2 * mhandle_width) + { + mhandle_width = width >> 1; + g_debug ("Adjusted mhandle width to %d", mhandle_width); + } + + if (height < 2 * mhandle_height) + { + mhandle_height = height >> 1; + g_debug ("Adjusted mhandle height to %d", mhandle_height); + } + + if (width < 4 * rhandle_width) + { + rhandle_width = width >> 2; + g_debug ("Adjusted rhandle width to %d", rhandle_width); + } + + if (height < 4 * rhandle_height) + { + rhandle_height = height >> 2; + g_debug ("Adjusted rhandle height to %d", rhandle_height); + } + + /* + * work out drag type + * + * First, check for movement + */ + v1.x = CLUTTER_INT_TO_FIXED (clutter_actor_get_width (actor) / 2); + v1.y = CLUTTER_INT_TO_FIXED (clutter_actor_get_height (actor) / 2); + v1.z = 0; + + clutter_actor_apply_transform_to_point (actor, &v1, &v2); + + xp = CLUTTER_FIXED_INT (v2.x); + yp = CLUTTER_FIXED_INT (v2.y); + + /* Store these for later */ + priv->center_x = xp; + priv->center_y = yp; + + if (abs (xp - x) < mhandle_width && + abs (yp - y) < mhandle_height) + { + priv->dragging = DRAG_MOVE; + clutter_actor_set_opacity (priv->slave, priv->old_opacity / 2); + return; + } + + /* + * Next, we check for rotation + */ + for (i = 0; i < 4; ++i) + if (abs (CLUTTER_FIXED_INT (v[i].x) - x) < rhandle_width && + abs (CLUTTER_FIXED_INT (v[i].y) - y) < rhandle_height) + { + priv->dragging = DRAG_ROTATE; + return; + } + + + /* + * Neither move or rotation, so we are resizing or scaling. + */ + if (priv->scale) + { + priv->dragging = DRAG_SCALE; + return; + } + else + { + /* + * We notionally divide the projected area into 2 x 2 grid, + * representing 4 types of resize. + * + * If the object is rotated, we need to unrotate the screen + * coords first. + */ + zang = clutter_actor_get_rotationx (actor, CLUTTER_Z_AXIS, + NULL, NULL, NULL); + + if (zang) + { + gint x2 = x - xp; + gint y2 = y - yp; + ClutterFixed zang_rad = -CFX_MUL (zang, CFX_PI) / 180; + + x = CLUTTER_FIXED_INT (x2 * clutter_cosx (zang_rad) - + y2 * clutter_sinx (zang_rad)) + xp; + + y = CLUTTER_FIXED_INT (y2 * clutter_cosx (zang_rad) + + x2 * clutter_sinx (zang_rad)) + yp; + } + + if (x < xp && y < yp) + { + priv->dragging = DRAG_RESIZE_TL; + return; + } + + if (x < xp && y >= yp) + { + priv->dragging = DRAG_RESIZE_BL; + return; + } + + if (x >= xp && y < yp) + { + priv->dragging = DRAG_RESIZE_TR; + return; + } + + if (x >= xp && y >= yp) + { + priv->dragging = DRAG_RESIZE_BR; + return; + } + } + + g_warning ("Error calculating drag type"); + priv->dragging = DRAG_NONE; + } + break; + + case CLUTTER_MOTION: + { + gint x, y; + ClutterFixed zang; + ClutterActorBox box; + + if (priv->dragging == DRAG_NONE) + return; + + clutter_event_get_coords (event, &x, &y); + + /* We intentionally do not test here if the pointer is within + * our slave since we want to be able to manipulate the objects with + * the point outwith the object (i.e., for greater precission when + * rotating) + */ + clutter_actor_query_coords (priv->slave, &box); + + zang = clutter_actor_get_rotationx (priv->slave, CLUTTER_Z_AXIS, + NULL, NULL, NULL); + + if (priv->dragging == DRAG_MOVE) + { + if (priv->dont_move) + return; + + clutter_actor_move_by (priv->slave, + x - priv->prev_x, + y - priv->prev_y); + } + else if (priv->dragging >= DRAG_RESIZE_TL && + priv->dragging <= DRAG_RESIZE_BR) + { + ClutterFixed xp, yp; + + if (priv->dont_resize) + return; + + + xp = CLUTTER_INT_TO_FIXED (x - priv->prev_x); + yp = CLUTTER_INT_TO_FIXED (y - priv->prev_y); + + if (zang) + { + gint x2 = x - priv->prev_x; + gint y2 = y - priv->prev_y; + + ClutterFixed zang_rad = -CFX_MUL (zang, CFX_PI) / 180; + + xp = x2 * clutter_cosx (zang_rad) - + y2 * clutter_sinx (zang_rad); + + yp = y2 * clutter_cosx (zang_rad) + + x2 * clutter_sinx (zang_rad); + } + + switch (priv->dragging) + { + case DRAG_RESIZE_TL: + box.x1 += xp; + box.y1 += yp; + break; + case DRAG_RESIZE_TR: + box.x2 += xp; + box.y1 += yp; + break; + case DRAG_RESIZE_BL: + box.x1 += xp; + box.y2 += yp; + break; + case DRAG_RESIZE_BR: + box.x2 += xp; + box.y2 += yp; + break; + default: + break; + } + + clutter_actor_request_coords (priv->slave, &box); + } + else if (priv->dragging == DRAG_ROTATE) + { + ClutterFixed a; + gint x1, x2, y1, y2, div; + + if (priv->dont_rotate) + return; + + x1 = priv->prev_x; + y1 = priv->prev_y; + x2 = x; + y2 = y; + + /* + * For the incremental angle a, + * + * sin(a) = (x1*y2 - x2*y1) / (x1^2 + y1^2) + * + * where x1,y1 and x2,y2 are coords relative to the center of + * rotation. + * + * For very small a, we can assume sin(a) == a, + * and after converting from rad to deg and to ClutterFixed, + * we get, + * + * a = 0x394bb8 * (x1*y2 - x2*y1) / (x1^2 + y1^2), + * + */ + + /* We work out the rotation on screen, not in the actor space. + * This is not entirely acurate, but considerably easier, and + * since the angles are very small should be generally enough for + * the rotatated actor not to get out of sync with the position + * of the pointer even if it is somewhat rotated around x and/or y + * axes. + * + * FIXME: if the actor has been rotated around the Z axis prior to + * start of our dragging, and the center of rotation was not the + * center of the actor, the actor will move from it's current + * position, since we will preserve the rotation angle, but change + * the pivot point. This is probably not a great deal for the + * kinds of application the dominatrix is intended for. + * + * First, project the center of the actor, which will be our + * reference point. + */ + x1 -= priv->center_x; + y1 -= priv->center_y; + x2 -= priv->center_x; + y2 -= priv->center_y; + + div = x1 * x1 + y1 * y1; + + if (div) + a = (((x1 * y2 - x2 * y1) * 0x32000) / div) << 4; + else + a = CFX_ONE; + + /* + * For anything above 0.7 rad, we tweak the value a bit + */ + if (a >= 0xb333) + a = CFX_MUL (a, 0x14000); + + clutter_actor_set_rotationx (priv->slave, CLUTTER_Z_AXIS, zang + a, + 0, 0, 0); + } + else if (priv->dragging == DRAG_SCALE) + { + /* + * for each pixel of movement from the center increase scale by + * some sensible step, proportionate to the actor width. + */ +#define SCALE_STEP 40 + ClutterFixed sx, sy; + gint d1, d2, diff, x1, y1, x2, y2; + + if (priv->dont_resize) + return; + + x1 = abs (priv->prev_x - priv->center_x); + y1 = abs (priv->prev_y - priv->center_y); + x2 = abs (x - priv->center_x); + y2 = abs (y - priv->center_y); + + clutter_actor_get_scalex (priv->slave, &sx, &sy); + + d1 = x1*x1 + y1*y1; + d2 = x2*x2 + y2*y2; + + /* What we should do now is to sqrt d1 and d2 and substract the + * results but d1 and d2 can be quite big and sqrti does not + * handle very big numbers well, while ClutterFixed range is + * limited, ruling out sqrtx. We do not want to use sqrt for + * performance reasons, and all we need is reasonable speed of + * scaling and semblance of constancy. So, we substract the + * numbers first, then sqrti the difference, give it appropriate + * sign and choose a suitable step to go with what that produces. + */ + diff = (clutter_sqrti (abs (d2 - d1)) * + clutter_actor_get_width (priv->slave)) / 25; + + if (d1 > d2) + diff = -diff; + + sx += SCALE_STEP * diff; + sy += SCALE_STEP * diff; + + clutter_actor_set_scalex (priv->slave, sx, sy); +#undef SCALE_STEP + } + + priv->prev_x = x; + priv->prev_y = y; + + } + break; + + case CLUTTER_BUTTON_RELEASE: + { + if (priv->dragging != DRAG_NONE) + { + clutter_actor_set_opacity (priv->slave, priv->old_opacity); + g_signal_emit (dominatrix, dmx_signals[MANIPULATION_ENDED], 0); + priv->dragging = DRAG_NONE; + } + } + break; + + default: + break; + } + clutter_actor_move_anchor_point_from_gravity (priv->slave, + priv->gravity); +} + + +/** + * clutter_dominatrix_new: + * @slave: a #ClutterActor to manipulate + * + * Creates a ClutterDominatrix proxy for the given actor that allows + * the user to be manipulated via a pointer. + * + * When you are done with the proxy, release the references to it. + */ +ClutterDominatrix * +clutter_dominatrix_new (ClutterActor *slave) +{ + return g_object_new (CLUTTER_TYPE_DOMINATRIX, "slave", slave, NULL); +} + +/** + * clutter_dominatrix_new_with_gravity: + * @slave: a #ClutterActor to manipulate + * @gravity: a #ClutterGravity to use when the actor is being scaled. + * + * Creates a ClutterDominatrix proxy for the given actor that allows + * the user to be manipulated via a pointer, and sets the gravity for scaling + * to the provided value. + * + * When you are done with the proxy, release the references to it. + */ +ClutterDominatrix * +clutter_dominatrix_new_with_gravity (ClutterActor * slave, + ClutterGravity gravity) +{ + return g_object_new (CLUTTER_TYPE_DOMINATRIX, + "slave", slave, + "gravity", gravity, + NULL); +} + +/** + * clutter_dominatrix_set_slave: + * @dmx: a #ClutterDominatrix + * @slave: a #ClutterActor that the proxy should operate on. + * + */ +void +clutter_dominatrix_set_slave (ClutterDominatrix *dmx, ClutterActor *slave) +{ + clutter_dominatrix_release_slave (dmx->priv); + + g_object_ref (slave); + dmx->priv->slave = slave; + + clutter_dominatrix_store_original_settings (dmx->priv); + clutter_actor_move_anchor_point_from_gravity (slave, + dmx->priv->gravity); +} + +/** + * clutter_dominatrix_get_slave: + * @dmx: a #ClutterDominatrix + * + * Returns the #ClutterActor that the proxy currently operates on. When you + * are done with it, you have to unref the slave. + */ +ClutterActor * +clutter_dominatrix_get_slave (ClutterDominatrix *dmx) +{ + g_return_val_if_fail (CLUTTER_IS_DOMINATRIX (dmx), NULL); + + if (dmx->priv->slave) + g_object_ref (dmx->priv->slave); + + return dmx->priv->slave; +} + +/** + * clutter_dominatrix_restore: + * @dmx: a #ClutterDominatrix + * + * Restores the slave the proxy manipulates to it's original state. + */ +void +clutter_dominatrix_restore (ClutterDominatrix *dmx) +{ + ClutterDominatrixPrivate * priv; + g_return_if_fail (CLUTTER_IS_DOMINATRIX (dmx)); + + priv = dmx->priv; + + clutter_actor_move_anchor_point_from_gravity (priv->slave, + CLUTTER_GRAVITY_NONE); + clutter_actor_set_rotationx (priv->slave, CLUTTER_Z_AXIS, priv->orig_zang, + priv->orig_rot_x, priv->orig_rot_y, 0); + + clutter_actor_set_scalex (priv->slave, + priv->orig_scale_x, priv->orig_scale_y); + + clutter_actor_request_coords (priv->slave, &priv->orig_box); + clutter_actor_move_anchor_point_from_gravity (priv->slave, + priv->gravity); +} diff --git a/attic/table/clutter-dominatrix.h b/attic/table/clutter-dominatrix.h new file mode 100644 index 0000000..d99e510 --- /dev/null +++ b/attic/table/clutter-dominatrix.h @@ -0,0 +1,89 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Tomas Frydrych tf@openedhand.com> + * + * Copyright (C) 2007 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_DOMINATRIX_H +#define _HAVE_CLUTTER_DOMINATRIX_H + +/* clutter-dominatrix.h */ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_DOMINATRIX clutter_dominatrix_get_type() + +#define CLUTTER_DOMINATRIX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_DOMINATRIX, ClutterDominatrix)) +#define CLUTTER_DOMINATRIX_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_DOMINATRIX, ClutterDominatrixClass)) +#define CLUTTER_IS_DOMINATRIX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_DOMINATRIX)) +#define CLUTTER_IS_DOMINATRIX_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_DOMINATRIX)) +#define CLUTTER_DOMINATRIX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_DOMINATRIX, ClutterDominatrixClass)) + +typedef struct _ClutterDominatrix ClutterDominatrix; +typedef struct _ClutterDominatrixClass ClutterDominatrixClass; +typedef struct _ClutterDominatrixPrivate ClutterDominatrixPrivate; + +struct _ClutterDominatrix +{ + /*< public >*/ + GObject parent_instance; + + /*< private >*/ + ClutterDominatrixPrivate *priv; +}; + +struct _ClutterDominatrixClass +{ + GObjectClass parent_class; + + void (* manipulation_started) (ClutterDominatrix *dmx); + void (* manipulation_ended) (ClutterDominatrix *dmx); +}; + +GType clutter_dominatrix_get_type (void) G_GNUC_CONST; + +ClutterDominatrix * clutter_dominatrix_new (ClutterActor *actor); +ClutterDominatrix * clutter_dominatrix_new_with_gravity (ClutterActor *actor, + ClutterGravity gravity); + +void clutter_dominatrix_set_slave (ClutterDominatrix *dmx, + ClutterActor *slave); +ClutterActor * clutter_dominatrix_get_slave (ClutterDominatrix *dmx); +void clutter_dominatrix_restore (ClutterDominatrix *dmx); + +void +clutter_dominatrix_handle_event (ClutterDominatrix *dominatrix, + ClutterEvent *event); + +G_END_DECLS + +#endif /* _HAVE_CLUTTER_DOMINATRIX_H */ diff --git a/attic/table/clutter-video-player.c b/attic/table/clutter-video-player.c new file mode 100644 index 0000000..2f62e0a --- /dev/null +++ b/attic/table/clutter-video-player.c @@ -0,0 +1,374 @@ + +#include +#include "clutter-video-player.h" +#include "play_png.h" +#include "pause_png.h" + +#define CTRL_SIZE 10 + +#ifndef CLUTTER_PARAM_READWRITE +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB +#endif + +G_DEFINE_TYPE (ClutterVideoPlayer, clutter_video_player, CLUTTER_TYPE_GROUP); + +#define CLUTTER_VIDEO_PLAYER_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_VIDEO_PLAYER, ClutterVideoPlayerPrivate)) + +struct _ClutterVideoPlayerPrivate +{ + ClutterActor * vtexture; + + ClutterActor * control; + ClutterActor * control_play; + ClutterActor * control_pause; + + gboolean paused; + + gint width; + gint height; + + gchar * uri; +}; + +static void +toggle_pause_state (ClutterVideoPlayer *player); + +static void +input_cb (ClutterStage * stage, ClutterEvent * event, gpointer data); + +static gboolean +autostop_playback (gpointer data) +{ + ClutterVideoPlayer * player = data; + ClutterVideoPlayerPrivate * priv = player->priv; + + clutter_actor_show (priv->vtexture); + + toggle_pause_state (player); + clutter_media_set_position (CLUTTER_MEDIA (priv->vtexture), 0); + return FALSE; +} + +static void +eos_cb (ClutterMedia * media, gpointer data) +{ + ClutterVideoPlayer * player = data; + + if (!player->priv->paused) + toggle_pause_state (player); + + clutter_media_set_position (media, 0); +} + +static GdkPixbuf * +pixbuf_from_data (const guchar * data, gint length) +{ + GdkPixbuf *pixbuf; + GdkPixbufLoader * ldr = gdk_pixbuf_loader_new_with_type ("png", NULL); + + if (!ldr) + { + g_warning ("Could not create loader"); + return NULL; + } + + if (!gdk_pixbuf_loader_write (ldr, data, length, NULL)) + { + g_warning ("Failed to write to loader."); + return NULL; + } + + pixbuf = gdk_pixbuf_loader_get_pixbuf (ldr); + + return pixbuf; +} + +void +size_change (ClutterTexture *texture, + gint width, + gint height, + gpointer data) +{ + ClutterVideoPlayer *player = data; + gint h = player->priv->width * height / width; + + clutter_actor_set_size (CLUTTER_ACTOR (player), player->priv->width, h); +} + +static void +construct_controls (ClutterVideoPlayer *player) +{ + ClutterVideoPlayerPrivate *priv = player->priv; + GdkPixbuf *pixb; + + priv->vtexture = clutter_gst_video_texture_new (); + + if (priv->vtexture == NULL) + g_error("failed to create vtexture"); + + /* Dont let the underlying pixbuf dictate size */ + g_object_set (G_OBJECT(priv->vtexture), "sync-size", FALSE, NULL); + + g_signal_connect (CLUTTER_TEXTURE(priv->vtexture), + "size-change", + G_CALLBACK (size_change), player); + + clutter_media_set_filename(CLUTTER_MEDIA(priv->vtexture), priv->uri); + clutter_media_set_playing (CLUTTER_MEDIA(priv->vtexture), TRUE); + priv->paused = FALSE; + g_signal_connect (priv->vtexture, "eos", G_CALLBACK (eos_cb), player); + g_timeout_add (100, autostop_playback, player); + + priv->control = clutter_group_new (); + + pixb = pixbuf_from_data (&play_png[0], sizeof (play_png)); + + if (pixb == NULL) + g_error("Unable to load play button image"); + + priv->control_play = clutter_texture_new_from_pixbuf (pixb); + clutter_actor_set_size (priv->control_play, CTRL_SIZE, CTRL_SIZE); + clutter_actor_show (priv->control_play); + + pixb = pixbuf_from_data (&pause_png[0], sizeof (pause_png)); + + if (pixb == NULL) + g_error("Unable to load pause button image"); + + priv->control_pause = clutter_texture_new_from_pixbuf (pixb); + clutter_actor_set_size (priv->control_pause, CTRL_SIZE, CTRL_SIZE); + + clutter_group_add_many (CLUTTER_GROUP (priv->control), + priv->control_play, + priv->control_pause, + NULL); + + clutter_actor_set_opacity (priv->control, 0xee); + + clutter_actor_set_position (priv->control_play, 0, 0); + clutter_actor_set_position (priv->control_pause, 0, 0); + + clutter_group_add_many (CLUTTER_GROUP (player), + priv->vtexture, priv->control, NULL); + + g_signal_connect (clutter_stage_get_default(), "event", + G_CALLBACK (input_cb), + player); +} + +enum +{ + PROP_0, + PROP_URI, +}; + +static void +clutter_video_player_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterVideoPlayer *player; + ClutterVideoPlayerPrivate *priv; + + player = CLUTTER_VIDEO_PLAYER(object); + priv = player->priv; + + switch (prop_id) + { + case PROP_URI: + g_free (priv->uri); + priv->uri = g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_video_player_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterVideoPlayer *player; + ClutterVideoPlayerPrivate *priv; + + player = CLUTTER_VIDEO_PLAYER(object); + priv = player->priv; + + switch (prop_id) + { + case PROP_URI: + g_value_set_string (value, priv->uri); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +clutter_video_player_constructor (GType gtype, + guint n_params, + GObjectConstructParam *params) +{ + GObjectClass * parent_class; + GObject * retval; + + parent_class = G_OBJECT_CLASS (clutter_video_player_parent_class); + retval = parent_class->constructor (gtype, n_params, params); + + construct_controls (CLUTTER_VIDEO_PLAYER (retval)); + + return retval; +} + +static void +clutter_video_player_finalize (GObject *object) +{ + ClutterVideoPlayer *player = CLUTTER_VIDEO_PLAYER (object); + + g_free (player->priv->uri); + + G_OBJECT_CLASS (clutter_video_player_parent_class)->finalize (object); +} + +static void +clutter_video_player_request_coords (ClutterActor *self, + ClutterActorBox *box) +{ + ClutterVideoPlayer * player = CLUTTER_VIDEO_PLAYER (self); + ClutterVideoPlayerPrivate *priv = player->priv; + ClutterActorBox cbox; + + cbox.x1 = 0; + cbox.y1 = 0; + cbox.x2 = box->x2 - box->x1; + cbox.y2 = box->y2 - box->y1; + + priv->width = CLUTTER_FIXED_INT (cbox.x2); + priv->height = CLUTTER_FIXED_INT (cbox.y2); + + g_debug ("coords request %d x %d", + CLUTTER_FIXED_INT (cbox.x2), + CLUTTER_FIXED_INT (cbox.y2)); + + clutter_actor_request_coords (priv->vtexture, &cbox); + + clutter_actor_set_position (priv->control, 0, 0); + + CLUTTER_ACTOR_CLASS (clutter_video_player_parent_class)->request_coords (self, box); + + g_object_notify (G_OBJECT (self), "height"); + g_object_notify (G_OBJECT (self), "width"); + + clutter_actor_set_position (priv->control, + (clutter_actor_get_width (priv->vtexture) - + CTRL_SIZE) / 2, + clutter_actor_get_height (priv->vtexture) - + (CTRL_SIZE + CTRL_SIZE/2)); + + clutter_actor_show (priv->control); + clutter_actor_queue_redraw (priv->vtexture); +} + +static void +clutter_video_player_class_init (ClutterVideoPlayerClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + gobject_class->constructor = clutter_video_player_constructor; + gobject_class->set_property = clutter_video_player_set_property; + gobject_class->get_property = clutter_video_player_get_property; + gobject_class->finalize = clutter_video_player_finalize; + + actor_class->request_coords = clutter_video_player_request_coords; + + g_object_class_install_property (gobject_class, + PROP_URI, + g_param_spec_string ("uri", + "uri", + "uri", + "test.avi", + G_PARAM_CONSTRUCT | + CLUTTER_PARAM_READWRITE)); + + g_type_class_add_private (gobject_class, sizeof (ClutterVideoPlayerPrivate)); +} + +static void +clutter_video_player_init (ClutterVideoPlayer *self) +{ + ClutterVideoPlayerPrivate *priv; + + self->priv = priv = CLUTTER_VIDEO_PLAYER_GET_PRIVATE (self); + + priv->paused = TRUE; +} + +ClutterActor * +clutter_video_player_new (const gchar * uri) +{ + return g_object_new (CLUTTER_TYPE_VIDEO_PLAYER, "uri", uri, NULL); +} + +static void +toggle_pause_state (ClutterVideoPlayer *player) +{ + if (player->priv->paused) + { + clutter_media_set_playing (CLUTTER_MEDIA(player->priv->vtexture), + TRUE); + player->priv->paused = FALSE; + clutter_actor_hide (player->priv->control_play); + clutter_actor_show (player->priv->control_pause); + } + else + { + clutter_media_set_playing (CLUTTER_MEDIA(player->priv->vtexture), + FALSE); + player->priv->paused = TRUE; + clutter_actor_hide (player->priv->control_pause); + clutter_actor_show (player->priv->control_play); + } +} + +static void +input_cb (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data) +{ + ClutterVideoPlayer *player = (ClutterVideoPlayer*)user_data; + ClutterVideoPlayerPrivate *priv = player->priv; + + switch (event->type) + { + case CLUTTER_BUTTON_PRESS: + { + ClutterActor *actor; + ClutterButtonEvent *bev = (ClutterButtonEvent *) event; + + actor + = clutter_stage_get_actor_at_pos + (CLUTTER_STAGE(clutter_stage_get_default()), + bev->x, bev->y); + + printf("got actor %p at pos %ix%i\n", actor, bev->x, bev->y); + + if (actor == priv->control_pause || actor == priv->control_play) + { + toggle_pause_state (player); + return; + } + + } + break; + default: + break; + } +} diff --git a/attic/table/clutter-video-player.h b/attic/table/clutter-video-player.h new file mode 100644 index 0000000..f2ec2e2 --- /dev/null +++ b/attic/table/clutter-video-player.h @@ -0,0 +1,81 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __CLUTTER_VIDEO_PLAYER_H__ +#define __CLUTTER_VIDEO_PLAYER_H__ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_VIDEO_PLAYER (clutter_video_player_get_type()) + +#define CLUTTER_VIDEO_PLAYER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_VIDEO_PLAYER, ClutterVideoPlayer)) + +#define CLUTTER_VIDEO_PLAYER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_VIDEO_PLAYER, ClutterVideoPlayerClass)) + +#define CLUTTER_IS_VIDEO_PLAYER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_VIDEO_PLAYER)) + +#define CLUTTER_IS_VIDEO_PLAYER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_VIDEO_PLAYER)) + +#define CLUTTER_VIDEO_PLAYER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_VIDEO_PLAYER, ClutterVideoPlayerClass)) + +typedef struct _ClutterVideoPlayer ClutterVideoPlayer; +typedef struct _ClutterVideoPlayerClass ClutterVideoPlayerClass; +typedef struct _ClutterVideoPlayerPrivate ClutterVideoPlayerPrivate; + +struct _ClutterVideoPlayer +{ + ClutterGroup parent_instance; + + /*< private >*/ + ClutterVideoPlayerPrivate *priv; +}; + +struct _ClutterVideoPlayerClass +{ + ClutterGroupClass parent_class; +}; + +GType clutter_video_player_get_type (void) G_GNUC_CONST; + +ClutterActor *clutter_video_player_new (const gchar * uri); + +G_END_DECLS + +#endif /* __CLUTTER_VIDEO_PLAYER_H__ */ diff --git a/attic/table/hand0.png b/attic/table/hand0.png new file mode 100644 index 0000000000000000000000000000000000000000..5b71eeba7dc8713386e4c8a8863c4ee4a48b81bc GIT binary patch literal 6451 zcmZX3Wl)=4&}eXnAcX({5}X$)!Cg|^y*S0C#a#*%cX!uf1xj&mixzh+#R(KEPSKmr zo$tr}?(CdrXU^=N-RI1n)o2Yhc>-K2TmS$-pr|0Dg~Y?iHII#n{E`5BSCI(QLRnr0 z@ca*ox+_wVJ2);12JQd=9_hb@0?5e&Avdu+6jf!h7BRs%MEHw^e~_G@uZl9#IzB7M zCU0HR=i37pGV{A%4P%gSLBAzwI3}a9I@E%zH8@1_H{CR<2C9ekSE@by#ArlkwdFNL zkHH7i2~jO&s4?l5-;{UurEx)0{cd=;ti*2XKPJSN+mDV84H5Dss>H)jT>kGfA0>F# zxy`SC9X|eQF1YGC?Lb9G{U8MaV*kHr0zK6Pf)LAv30P(&&cg;Btd|(VvQQxRDQXr+ z!QlZHIF@71#Ot?|mW4oR4+wdzHSZufY;X@X3#|wg%wxO;*av(jlF9~_=xC;igi>wd z17ayH-2r1XP1Zt^{eV2cXLW4NkE|nvp#j>%pxn|KL9o;nMGIibw#2!=NZcAAAuuDD zAkRVGne6^#3zbpX$D)A0L*%VjrkCYi=;mFxhxV3JIKrdW-6!xoZ*4lITlB{T5kiPW zw~5AR42t@PHB8}qc)YoHSG@V>bGjGsrr3UnfI`~4^YPbHYBGPT`&wBl&tEQpa3k&G z5MkgZ*NN9A^d4*~5SY$=gnLht`!5@ebw&(E(T4}q-vxL;&)Tv#kqlqVMDH_=?%PHB zyzIZ_oSS1RI!~KK`(gngda86A^~!RL_|?{+0l`{#M9F4-kn9wKx4P2yow|E><4l8w zf{ybN1Rc1jeYLtCV`pae9dpP3zyG#cWC11He>TIGNsdn`(hnDh9F=!FJn5;h8OLa! ztF)^FW_3-SWE#9zv%%hnz84E$cytNr?ryz~xVvCpV_C(^1sb^xc$his{_2gKs;50~ zD>;)3Xo*3hda0b6naW|E9UiKmSF#~Fwr^^bmG}gMUl!y<(vgQ87A6r2@E`mWj~Jt5 z*lUwTitTW$dYZ4tKT|F0`2}3R)P2p88RIfxYj;9Y@O}YUfhWZ`nOjkV5+)*o--u+q zIWjQ0o~t#s&*J2C-`oFEzK-CX6Z~-JH-6ZBq>$8{1CKQ6#P{p~$UH98u817EEV&q= z7YUcy1zf21IaaNHku`Dx;WPIO8eYiP`oB{N1#V@nWa4{!GW8#z0+E;QP*I~8tXriZ z{o#(gzMRRt=b)xa(^35xjfkevu^ie$)?b5{K-Zs%_2>iITKt zh#}#@)0K1$qc0QrvpfyH@%dy{@eWTcZIL>pO6b3Tmo3d0>e+~{dj#E8kr|03(#)37 z&pNh~k2>v3ykF7Wtu&ahq+HLNYuaU4oQ8a$9f@`7KFPmi5yd2Tv8WEzeIHsjFychc|q6doc z|3mSwEV8iw4eyvSph+SB14vhj+rZk-gGFXRoHgEujoY9gtsu>+$bvksm@)r};QXWoBzS7zF#h?@dxQ;@!7s4cbJz+6(k6yb_pR{2K;!6*j* zUk1oOUH@qS{3i^%4DzD{a(xUHmUmKA)Dn1liopDh!rI><^su}8hK&t$bx@&bP-VF{ zCVhXk$nbMo8cNPKED5~)3mhAlz2;wpEGPT#VE=4yuk=4)`s0#S2FZ2@5=R%^g;OMD z6iRZ}sNRx<->hK`Y=7wO%5zJy(ng(l@{rI{f0@fOw3X z&A9?l%Mr5b0U_Am%wBZ&PU6a{Vlbmx+mSi9kKh!N7n5iy#ON%)x30+~ML* zb@=hm;Nih6W*B`26T-K=UY+@TCBx7l;~vC3kwbvR$kB+xfrqE^pBsoDJw5j&eMwU3 z{Kx)IxSeO4!=w1&oS0ltuQ~0jA<3A!?IGEw*4H2c+Sq6fqg=b?MtPr1PWQZ1L+3W> zSfjm_a7ayRGK4r$p6_&piGFPjF5tt#d`C?sbG$b`0U178ZehlzF%?HASZ#r>tP#BC zj&i*~^rdIBtzmv-RT!O=-#p(1Ah72aO7@cFE8RGhlFEjqk+%&%u(oXzYAd+9p7NGa zkeBRNReXH~<#SqB6UJtX0=vjcPaezy5W_upzk^nI-u{Sj>r4*1Ki((?=6D?y)veK^ zyY9H%{NlAO>bDrq6PZ8nZv$$clXC<|$xK~duPz8?Wpu7$^~`8R*^yDM-$op-hqoIK z8zG5$>Bd`s!lC5h`YY2s&b0I&A61d}s&Vrbjm#oBq(4$ao7By@3+C%5+DaWhDVey??O%0R0p8iF^xMLT zasd^bZKr+VjEh&E*^IWX3kPYp4PT<`<`u;o&KFUzxWm^4H2ioMKEHdg#sM! zugy`Dx9QRk&w|6@cAcA;Bho42SZA4;mSd`d#OxD^$tGMov|>@et@MRegoneY@Bbpu z8aKo6UYC><-JT6;b_a^@LVkRNJZ%ppyAHhQ4-wLM_=@(2(*T~JkO3|`e!NK*cW0ir z_^I_hsnwAh&VvYJ#e!kQ*Y_sC+!0!(uSb*9$jVxpk{I&xLg(s@qaRkCN>^qL51a%` z0ws4LYPw0$HjKH1q3rBySQIdw;20TbGprziMOV@`69S%V?vbkpiAG3P9za5t*VIgp#2g5$oY9oGcD+@ zbF;2<>hpV1)cJWJdEBUh67EB^hP{XZtO0AtGhYb$DNMn;)y`*|;1!|H;eRhF#HgC* z?yq)tr+>tFjYxl~?-(ITz!l*C=Dq6ZVr@;yqbR($A#F98hqLGQ?PkGfp?znskBAMc zL78yI_xAIFfQ-NYW;cSiOf@SQ$GImviHDiP0Ciwn`tW4!BZ3S0UN>-Q+U#S&R+oak z_SNo&PuGHNJiM^8^w(u+f?iJnQkp;>-&&oo!<{ttw2Uyj)z-m{-v+ZkVN zr0GltZUoz(o`$*ifeS<9UH@zQHy}IJ?!=Ge0{1qKfOCtpS47!vSJDMIG%t1`eP8c?*UaQkJ%rNf_mrGx za>-6+^J)v{+fPa{blo5N8w`}S-+BSlEQcfDG-rRMW@3R5XF>++^^xdU#j*`#q@7d$s(H$Jh(kl)# zOsMww39C{BWY09PF^pPQI=1dkI@Jvg4ivlQh1p)7y<2V`y*}mkT9=4YkWnj<@ceHV zVpD3q%wuo8%W1fSUD8U~Z0gXKXS*e%1#EN&K6RfevdPPoCRB-?<*qA?%z5&mjY#AF zE@xIv(Mm{FBL&NQ6Emw5rZ68!e5*Tmlh=h1g_os~4v&_C`&EXizENF`@g~qKnCYhH zB``%h;k8&1(jWe;(UfyyQKb(-M~oFC>83u+tpE>>(zMi+45`?nvW2mwsY|-M-Kb(# zRfVy?MJW1lv&wHe{+ePVd#`4#P}R7W(I5HQ#IXu z$36a6YbK_d(;aI6i}A_@5cvqas9MRvf)H>_7Z_zF--YKpGWYbk!2jx@Fo1rI7@0d@ zuYV8E_{8`;L`UtunyO^QsbBOgpJLwL34~uMEG+q6G*LHOMYBx|`yX=7DR+fHx!lq+ z4{;5e>5(zHwe0akO#?Xpijq>~Sx(qMSHw|vtZ`RZTMPA!-$~tQ6?e4=1{vYDy z_*QldMU;UunrX8R7eGLV-*!i)nZP((s@^9lL^8w2bh;}a;PJ_zLj2*12Mc1F6*s=a z6dHY9Rx|NRPW<7sO&_!5CD0;8?WheXXXZ^qpP#>SJ@11*9 zXNof*@F=bM;+gch=GINkW$W9IS3Xp1lYsHP4zEV#D|OdJ|%$X@uKd^3U2xWydJ*udapZw)CI z1y8*Z%BTzk*3e7t7HZQ?HxrDc63ZG5&6F@q<^0d{kfLbs%eqXNnKUtndud{H&- z=7d_CTA^I^V(e6ty_6>L46};V-OdjX%#~iNv5|8XWufPmp80WKKH|w{^=KJX`o#R{ zlzVUlSpp@;HBbR8=K|_)E+##X1MzIFzOK!_A}NpxGc?>#{7S<~h4V!L+x1V^^PwJ@ z?A_Iy>V$rfu~&&-g=WNrfA?B<_x|lZgTnxhOiVLjqfahuA@G+rG>r8HTx>$Pa7cKv z2`r6y0aT66xSU`|#)I^^NGwK@W4Zvq>ym)CKgEWv0I>kELC|U+=q(vM&21vnWkOy* z0uq`UQQdhly=YRgx-`Mqy~~=6-P+2qSP(c4_#6eh#W(8T^>r|uIK+2s(xXVci2vKM4U$Q<+XUR<08ept?>n1D>Zk-xipxtRAIB-$_h z+`@)VsgwM?aK84PrI4>5?R};h*Hsc03uI|3IF3y_W!IAzWcgeX$>^7e8Kf2)!%9me zf-j^dSz1T}4&E2jjCmo*yH8p)0ct$JejfOAl{d<2tSlXOAn_krgx|Hv`k#iHoPM z4b|S)_YGHOvP`o71~(!g0|;Nm#F~)p--db6!EX*`=?%VF!ZbU58#nz$#{#J`xLzPj zbp~Ur2|ZnCe_@j$m;fE$+wRfqiQb1JLuV)I_A!BB@UQxI3KJUj*`)`4UeGItDE>UDL~!PyIUn?8qq4y@rm5%xFE|5;ouMK`yz?7^LJO)c^Afw z@Y>f`!)Ev2LUB?N1(TBAI(5_fhQDu<9NOgNP0y9JvA+vXlEHQMs~$4C{YfeMxQtmt z#>WM0Fe&nf5}3qc5fW5HUzeP79$Y7$buTIxAUWPADwWzswv*(@-a;)|>0=*JG?2ol ztG@dqzkxa|l~HnfmDO-`gyiJs$(F^m`(B*2e3wOWlHIT7*eLG2n6SQUQ40m^23=<~ zdr1$4oYccsrx(Qugvyn&r^}5cdz+C}XG4GaPJdPn%s-p|hkTjIul%T0)MdjxA{QN( z>F>Ht?MF!P!ethtNlSh=3{`%68;8#Krn$*CNjYhUXK)Dy=uiv7LneB>PIP=!l9n2=1>Yxv7qi8oJro`HjP5&~z)YBBOChCq{zuube!5)mDlo zWjf(XjBDV4TF5?s|_NCH&GHN_?Y>}f5-LfxvLzavgbW;9cwBihkrsX@>lBI zxL=nyvu3)=3hQq%IKcRCfb4u((dRW5j`0qk;KN>j| zhw=X?(D3ivm>Zi)%@>F*TRcu%Nm7dr)8coOR>I`oL zd{zj-Q$}mvqVzpr{PrjIWawh~T)E?Opk}*MeiR!nzY3mMbFSdqH4r};V#_gTOim_y z9JGqQfvbIt9ZCGo0X}so+q)R+Vni)wZ4L6=0Lm|y`vWeH?+DSgr*JkL2K7yT z&JuYAC?i|4JcCXHU%QuWtA63QN&#-Osoa(_AZ84#B4cOq4nNBNA z-jf*ZUPUiAf0&dbl4Nixk>B%s!rTl>$tRRQ{3Dtvv_Up;wR7Ndp=I8@3uoTJ3^aWd zsw<_1Jj?DnZV5`U0pUrTxHW=}bw%A2)O3Iz_aNc^gnMe85wV3x@GgKHEek)FNC((c zLZy!8lLFfl+`>xjVA;*1;29)G$->)MXT@*ihh1B2#MPk5J#mLqJ%8d7L~V0O;(m?B z${gO{MThl8JG|#5@L|LiNyU_lKcO=p09r;0;|c55SrFg%YteNre!) o?=9nW*#9>r_%}09Ab*go5`&3$=6pv(jyC{`vT8DQ@HZj<2c8@bUH||9 literal 0 HcmV?d00001 diff --git a/attic/table/hand1.png b/attic/table/hand1.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf1b78e93a5eb73ea8345b9363383f2980ff77b GIT binary patch literal 6605 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 literal 0 HcmV?d00001 diff --git a/attic/table/hand2.png b/attic/table/hand2.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5243a33e10bea1872d2949497540da0ffcfa45 GIT binary patch literal 7130 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 U@CM+RDjeXIqPjwb+`G{K0X+eQ^#A|> literal 0 HcmV?d00001 diff --git a/attic/table/hand3.png b/attic/table/hand3.png new file mode 100644 index 0000000000000000000000000000000000000000..83c7c079a24f015edc28333fd578036e7218cba7 GIT binary patch literal 6719 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 Pe*mh=no2c_mLdNI4oQ#> literal 0 HcmV?d00001 diff --git a/attic/table/hand5.png b/attic/table/hand5.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fb78303a7abe70c832f02efb4ac2a381f1ef33 GIT binary patch literal 6691 zcmZvBbySqyxBt*3Fu;IF&J68K_fRrJcXtV>Na#=k(#?P%Ez&KBgmg)FNSB0w!~oKb zgK+1)>v#Y7eeYd+ooBCg*7H1P?{z-Aqjj}a$VnMU0RRBGnyR8cmJedrEHNSWNe%2+ z!ZJcT4HZSe{lApgR+5a}A#qhT^8f(IX#QO|fQ&49>?VgtrtoX$iQyRvPqr_d0(#oIX(k{t1 zJIMHK@JiZQ%0AnxKKL8ypolRZbsjeu*h>UX2$m;FAW~CB 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.qYrVx8#4?`Gp3pC2z{w7V<|x7ko5%=CSD%H^52 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 LwqhmXY3P3edxU?~ literal 0 HcmV?d00001 diff --git a/attic/table/hand6.png b/attic/table/hand6.png new file mode 100644 index 0000000000000000000000000000000000000000..7a50ab739c185302a7d13ca759514f2488dab07c GIT binary patch literal 7115 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 JOvNVrKLCsZ8`uB< literal 0 HcmV?d00001 diff --git a/attic/table/pause_png.h b/attic/table/pause_png.h new file mode 100644 index 0000000..7971cf9 --- /dev/null +++ b/attic/table/pause_png.h @@ -0,0 +1,431 @@ +static unsigned char pause_png [] = { +0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44, +0x52,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x84,0x08,0x06,0x00,0x00,0x00,0x5c, +0x5a,0xf3,0xe0,0x00,0x00,0x00,0x04,0x73,0x42,0x49,0x54,0x08,0x08,0x08,0x08, +0x7c,0x08,0x64,0x88,0x00,0x00,0x00,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, +0x74,0x77,0x61,0x72,0x65,0x00,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63, +0x61,0x70,0x65,0x2e,0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x00,0x00,0x18,0xb4, +0x49,0x44,0x41,0x54,0x78,0x9c,0xe5,0x5d,0xcf,0x8f,0x25,0xc9,0x51,0x8e,0xa8, +0xd7,0xdd,0xef,0x47,0xf7,0x74,0xcf,0xec,0x0c,0x06,0x76,0x61,0x77,0xc6,0xbb, +0xd8,0xbb,0x7b,0x40,0x2c,0x86,0x03,0x12,0x48,0x20,0x2c,0x21,0xc4,0x09,0x63, +0xa1,0xe5,0x80,0xe4,0x83,0x25,0x0c,0x47,0x2e,0x9c,0xf9,0x07,0x10,0x37,0x8c, +0xb9,0x21,0x0e,0x7b,0x47,0xb2,0x40,0x32,0x57,0x30,0xa7,0x35,0x02,0x2f,0x12, +0x07,0x66,0x90,0x58,0x2d,0xf6,0xee,0x7a,0xd7,0xeb,0xf1,0xcc,0x74,0xbf,0x7e, +0x15,0x1c,0xea,0x57,0x66,0xc6,0x17,0x59,0x99,0x2f,0xdf,0x7b,0xfd,0xba,0x37, +0xa4,0x99,0xae,0xca,0xaa,0xcc,0x8a,0xf8,0x32,0x32,0x22,0x32,0x32,0xab,0x1e, +0x8b,0x08,0x11,0x11,0x31,0x33,0x13,0xd1,0x31,0x11,0xdd,0x22,0xa2,0x13,0x22, +0x62,0xba,0xde,0x74,0x49,0x44,0x3f,0x24,0xa2,0x1f,0x48,0x27,0xe4,0x9a,0xc4, +0xcc,0x15,0x35,0x98,0xdc,0x22,0xa2,0x05,0x5d,0x7f,0x6c,0x96,0xd4,0xe0,0xf2, +0xc3,0xae,0x80,0x45,0x84,0x98,0xf9,0x88,0x88,0x5e,0x24,0xa2,0xea,0xca,0x58, +0xdb,0x1e,0x5d,0x10,0xd1,0xff,0x89,0xc8,0xb3,0x75,0x2a,0x33,0xf3,0x31,0x11, +0x3d,0x4f,0xd7,0xbf,0xf3,0x11,0x3d,0x25,0xa2,0xef,0x89,0xc8,0x45,0xd7,0xf1, +0x3f,0x49,0x37,0x53,0x09,0x88,0x88,0x8e,0x88,0xe8,0x45,0x66,0x3e,0xc8,0xad, +0xd8,0x5a,0x82,0xcf,0xd0,0xcd,0x54,0x02,0x22,0xa2,0x39,0x35,0xd8,0x70,0xc5, +0xcc,0x67,0x6d,0xc1,0x4d,0xa7,0x5b,0x6b,0xd4,0xb9,0x4b,0x44,0x87,0x9b,0x66, +0x64,0xcf,0xa8,0x22,0xa2,0xe3,0x8a,0x88,0x9e,0xbb,0x6a,0x4e,0x76,0x44,0x59, +0x8a,0xd0,0xc6,0x4c,0x77,0xb6,0xc4,0xcb,0xbe,0xd1,0xad,0x83,0xaa,0xaa,0x4c, +0x93,0x79,0xfb,0xf6,0xd9,0xec,0xce,0x73,0x77,0x4e,0x76,0xc9,0x51,0x09,0x7d, +0xf2,0xc9,0x8f,0x9e,0x7c,0xf0,0xfe,0x07,0x4f,0x8c,0xcb,0x33,0x66,0x9e,0x88, +0xc8,0x2a,0xb1,0xb9,0x49,0x55,0xd9,0xde,0xf2,0xee,0xbd,0xbb,0x8b,0xd3,0xd3, +0x5b,0x8b,0x6c,0x26,0xaf,0x88,0x7e,0xf0,0xe1,0x47,0x8f,0x3f,0xfe,0xf8,0x63, +0x2b,0x4e,0x3a,0x39,0xa8,0xaa,0x4a,0xf9,0xbf,0x97,0xee,0xbf,0x78,0xf7,0xb5, +0xd7,0x5f,0xfb,0xe3,0xd9,0x6c,0xfa,0xa5,0x36,0x58,0xba,0x16,0x24,0x22,0xcb, +0xe5,0x72,0xf9,0xad,0x47,0x0f,0xff,0xe7,0x2f,0xff,0xe3,0xdf,0xbf,0xfb,0x28, +0xbc,0xbe,0x5a,0xad,0x2a,0x22,0x4a,0x52,0x84,0xd9,0x6c,0xc6,0x97,0x97,0x97, +0xaa,0xfc,0xb5,0xd7,0x5f,0x7d,0xf1,0xc1,0x67,0xef,0xff,0xc9,0xd1,0xd1,0xd1, +0xef,0xb4,0x41,0xf6,0xb5,0x20,0x11,0x79,0x7a,0x71,0x7e,0xf1,0xcd,0x77,0xde, +0xf9,0xcf,0xbf,0x78,0xf8,0xdf,0x8f,0x3e,0x08,0x2e,0x73,0x55,0x55,0x95,0x84, +0xff,0x5e,0x7b,0xfd,0xd5,0xaf,0xce,0xe7,0xb3,0x3f,0xbc,0x4e,0x4a,0x40,0x44, +0xc4,0xcc,0x87,0x47,0x47,0x47,0xbf,0x7d,0xff,0xc1,0x4b,0x7f,0x8a,0xe4,0x9a, +0xcd,0x66,0x59,0xed,0xa1,0x36,0x5e,0x7e,0xe5,0xb3,0x7f,0x36,0x9d,0x4e,0x7f, +0xf7,0x3a,0x29,0x01,0x11,0x11,0x33,0xcf,0xa7,0xb3,0xe9,0xef,0xbd,0xfa,0xea, +0xe7,0xbf,0x82,0xe4,0xaa,0xaa,0xaa,0xa2,0xf0,0xdf,0x6c,0x36,0xfb,0xd2,0x55, +0x33,0x5e,0x42,0x87,0x87,0x87,0x5f,0xbc,0xff,0xe0,0xa5,0xbb,0xa1,0x5c,0xb9, +0x14,0xd6,0xbf,0xff,0xe0,0xa5,0xbb,0x07,0x07,0x07,0xbf,0xb1,0x05,0x96,0x77, +0x46,0xb3,0xf9,0xec,0xcb,0xa8,0xcf,0x0f,0x10,0x40,0xcc,0x7c,0xfb,0x0a,0x78, +0xdc,0x18,0x31,0xf3,0xe4,0xf4,0xf4,0xf4,0xac,0xaa,0xaa,0x0f,0xdd,0xf2,0xdc, +0xbc,0x52,0x88,0xcd,0xe9,0xe9,0xe9,0x19,0x33,0x4f,0xca,0x39,0xbc,0x3a,0x62, +0xe6,0x3b,0xa8,0xcf,0xa1,0x22,0xdc,0x04,0xaa,0x2a,0xa6,0xc9,0xc4,0xef,0x33, +0xe4,0xf3,0xe3,0x6d,0xf8,0xd8,0xf0,0x0d,0xc9,0x26,0x84,0xb8,0x10,0x65,0x28, +0xc2,0x9b,0x6f,0xbe,0x49,0x6f,0xfc,0xc2,0x1b,0x9b,0xe6,0xa9,0x98,0x1e,0x3e, +0x7c,0x48,0x5f,0xff,0xeb,0xaf,0xeb,0x0b,0xcc,0xaa,0x23,0x73,0x62,0x84,0xd9, +0x6c,0x46,0x75,0x5d,0xab,0x36,0x11,0x7d,0xed,0x8f,0xbe,0x46,0x0f,0x1e,0x3c, +0x48,0x6e,0x7b,0x57,0xf4,0xf6,0x77,0xde,0xa6,0xb7,0xde,0x7a,0x4b,0x95,0x17, +0x59,0x84,0x57,0x5e,0xf9,0x39,0x7a,0x70,0xff,0xe5,0x62,0xe6,0x36,0x4d,0x87, +0x87,0x38,0x66,0x63,0xd2,0x8a,0x90,0x4b,0xca,0x22,0x18,0x09,0xc6,0xcf,0x7d, +0xee,0xf3,0xf4,0x33,0x2f,0xfc,0x6c,0xd1,0xb3,0xb6,0x41,0x3f,0x7a,0xfc,0x18, +0x96,0x7f,0xaa,0x5c,0x03,0x03,0x8b,0xa0,0x46,0xf8,0x08,0x69,0xd7,0x70,0x33, +0x7c,0x83,0xa5,0x08,0x45,0x2b,0x73,0xfb,0x4a,0x5c,0xb1,0x84,0xb2,0xad,0xa1, +0x08,0x5e,0x7d,0xae,0xf8,0x46,0x60,0x85,0xfa,0xfc,0xe6,0x5a,0x04,0xe0,0x1a, +0x16,0x8b,0x45,0x72,0x47,0x2e,0x16,0x0b,0x09,0x83,0x4b,0xcb,0x35,0x5c,0x37, +0x82,0x16,0x01,0x45,0x90,0xa9,0x24,0x22,0xf4,0xf4,0x99,0x95,0xd1,0xdd,0x3c, +0x4d,0x8f,0xa6,0x34,0x99,0xa4,0x2d,0x22,0x22,0xd7,0x90,0x4b,0x21,0x36,0x20, +0x09,0x6b,0x52,0x5d,0xaf,0xe8,0xd9,0x79,0x7c,0xe5,0xbb,0xdd,0x02,0xe0,0x1c, +0x57,0xc4,0x44,0x24,0x84,0xf5,0xb5,0xbb,0x5f,0xa4,0x59,0x0e,0x6d,0x8e,0x9b, +0x93,0xf9,0x6c,0x91,0xec,0xba,0x36,0xae,0x08,0x97,0x97,0x4b,0x7a,0xff,0x83, +0xef,0xed,0xcc,0x77,0xde,0xbd,0x73,0x8f,0x8e,0x8f,0xd3,0xd6,0x8e,0xb6,0xa1, +0x08,0xcd,0xaa,0x74,0x1a,0x3d,0x7d,0xfa,0x84,0x3e,0xfc,0x28,0xcc,0xe4,0x6e, +0x8f,0x7e,0xea,0x33,0xcf,0xd3,0xd1,0xd1,0x34,0xe9,0x5e,0xa8,0x08,0xe5,0x9d, +0xb8,0x9f,0xe6,0x72,0x13,0xc1,0x62,0x09,0x36,0x85,0x9b,0xa2,0xb6,0x4a,0x9f, +0xae,0x60,0x11,0x28,0xc2,0xd1,0x51,0xfa,0xf2,0xc0,0x6c,0x36,0xa3,0xd5,0x6a, +0xe5,0x61,0x93,0xe3,0x1a,0xf6,0x99,0x3e,0x8d,0xd3,0xc7,0x22,0x25,0x57,0xd8, +0xdc,0x9c,0xe9,0x63,0xc1,0xac,0x41,0xf6,0xdb,0xdc,0x85,0xc4,0xac,0x53,0xcc, +0xa5,0x6b,0x0d,0xf6,0xac,0x41,0x54,0xdb,0xfb,0x8c,0x54,0x51,0x8a,0x19,0x45, +0xb2,0xbb,0x16,0x56,0x08,0x75,0x26,0xe6,0xa2,0x34,0x46,0x40,0xf5,0xad,0x98, +0x61,0x5f,0x3a,0x5d,0x61,0x63,0x30,0x76,0x23,0x5d,0x83,0xd5,0x09,0x3b,0xcd, +0x2c,0xee,0x81,0x26,0x20,0x16,0xac,0x69,0x68,0xd9,0xac,0x41,0xc0,0xe3,0xf6, +0xc1,0x55,0x98,0x9a,0xa0,0x3b,0x6e,0x3e,0x4f,0xdf,0xa3,0x3b,0x9f,0xcf,0xf5, +0x6a,0x65,0x14,0xaa,0x3d,0xc0,0x22,0x91,0x50,0x9f,0x67,0xe4,0x11,0x64,0x2f, +0xfa,0x3d,0x15,0xf0,0x8a,0x2b,0xe8,0x0b,0x73,0x48,0x25,0x94,0x8c,0x3c,0x82, +0x20,0x6c,0x76,0x0d,0x96,0x08,0xe9,0x81,0x8a,0x6f,0xb5,0x62,0x84,0x24,0x8e, +0xf7,0x43,0x07,0x34,0xe0,0x96,0xf9,0x63,0xd6,0x6b,0x0d,0x6b,0x04,0x8b,0xfe, +0x5a,0x03,0x1b,0x6b,0x0d,0xa0,0xf4,0x2a,0xf0,0xd2,0xe2,0x99,0xae,0x41,0xcf, +0x1a,0x8a,0x52,0xcc,0x6b,0xd7,0xdc,0xe0,0xf3,0x0c,0x26,0x98,0xb5,0x2f,0x5c, +0xad,0x52,0x37,0x30,0x37,0xa4,0x33,0x8b,0xd7,0x6b,0xfa,0x68,0xf5,0x4f,0x59, +0xb0,0x88,0x4c,0xcf,0x7e,0xd8,0x09,0x4c,0x85,0x09,0xa5,0xf9,0x7c,0xae,0x14, +0xc7,0x9e,0x35,0x20,0x6c,0x76,0x4b,0x39,0x4f,0x2f,0x0a,0x16,0x9b,0xa9,0x5b, +0xc1,0xd3,0x37,0x46,0xe1,0x7c,0xdd,0x70,0x0d,0x1b,0xd8,0x98,0x92,0x63,0x01, +0x52,0xcd,0xf2,0xf6,0x08,0xc5,0x08,0x19,0xb3,0x86,0xd2,0x80,0x6a,0xd7,0x94, +0xea,0xe6,0xd1,0xf4,0x31,0x47,0x31,0xaa,0xaa,0x52,0x8a,0x60,0xa6,0x98,0xf7, +0x21,0x8a,0x16,0xcd,0xc6,0x96,0x5c,0x83,0x6e,0x7a,0x0f,0xc4,0x37,0x3b,0x61, +0x13,0xab,0x8f,0xa9,0x29,0x66,0x71,0xfe,0x1f,0x61,0x6b,0x2f,0x68,0x0b,0x8b, +0x4e,0xbb,0x95,0x56,0x32,0x94,0x11,0xa5,0x98,0x73,0x83,0x45,0x35,0x6b,0xd8, +0xd3,0x95,0x56,0x22,0xac,0x8c,0x59,0xd3,0xc7,0xf4,0x18,0x01,0xcd,0x95,0x93, +0xaa,0x6e,0x94,0x84,0xd2,0x16,0xbe,0xd1,0xf4,0x31,0x37,0x58,0x5c,0x2e,0x97, +0xaa,0x4d,0xcc,0xd4,0x1e,0xe4,0x58,0x32,0x18,0xd8,0xf8,0xf4,0xf1,0x4a,0x48, +0x02,0xfd,0xdb,0xa2,0x6b,0xb8,0x6e,0xd3,0xc7,0xd4,0x1c,0x4b,0x61,0x8a,0xf9, +0xea,0xa7,0x48,0x59,0xcf,0x07,0x29,0xe6,0x5c,0x52,0xf5,0xa3,0x4b,0x0d,0x57, +0x8d,0x4d,0x3a,0x15,0xa5,0x98,0x73,0x16,0x35,0xb6,0x4b,0x69,0x31,0x02,0x4a, +0x31,0xe7,0x2e,0x3a,0xa5,0xa6,0x98,0x11,0x5d,0x8d,0xab,0x48,0x9b,0x3e,0x16, +0x2d,0x43,0x47,0xda,0xdd,0x1d,0x49,0x4e,0x8c,0x90,0x37,0x5d,0x0c,0x09,0xbd, +0x38,0x6b,0x1a,0x98,0x3d,0x88,0x11,0x72,0x06,0xa5,0x95,0x47,0x48,0x6b,0x21, +0x63,0x51,0x63,0xab,0x94,0x18,0x23,0x10,0x08,0x16,0x73,0x2c,0xc2,0x62,0xb1, +0xa0,0xe5,0x72,0x19,0xac,0x35,0xe0,0x19,0x16,0x76,0x0d,0xbb,0x07,0x27,0x23, +0x8f,0xa0,0x83,0xc5,0xeb,0xb5,0x1f,0x41,0x2b,0xa3,0xbd,0x0a,0x0d,0xdf,0x6b, +0xc8,0x7a,0x5a,0xfa,0x4b,0xb0,0x57,0x6d,0x2a,0x3b,0x16,0x76,0x90,0x59,0xec, +0xba,0x80,0xbd,0xb2,0x3d,0x00,0x20,0x63,0x87,0x52,0x2e,0x25,0x6f,0x67,0xdf, +0x07,0x18,0x32,0xa8,0x68,0xd6,0xd0,0xdd,0x75,0xd5,0x32,0x77,0xcf,0x1f,0xe3, +0x7a,0x13,0x8a,0x90,0xb5,0xd6,0x30,0x5a,0xb0,0x5d,0x92,0x76,0x58,0xa6,0x70, +0x5c,0x94,0x62,0x6e,0x2c,0x8f,0x96,0xae,0xc1,0x2a,0xf6,0xf8,0xcd,0x21,0x22, +0xe0,0xd8,0x0e,0x11,0x58,0x75,0x64,0xf1,0xe6,0xd5,0x98,0x62,0x84,0x6d,0x8f, +0xe2,0x42,0xb4,0x0d,0x6d,0x41,0x18,0x85,0x04,0xa7,0x8f,0xe5,0x31,0x02,0xb7, +0xaf,0x69,0xd9,0xd7,0x31,0xad,0x09,0x42,0x62,0x67,0x32,0x33,0x1d,0x1c,0xf8, +0xaf,0xc7,0x85,0xe7,0x31,0x42,0x5b,0xd5,0xb2,0xf2,0x12,0x92,0x62,0x45,0xb7, +0x8c,0x8d,0x81,0x15,0xc2,0x21,0x73,0x3f,0x82,0x41,0xcc,0xc4,0x16,0xf3,0xe2, +0xfd,0x71,0x2b,0x59,0x0f,0x8a,0x31,0x91,0x7c,0x7f,0xe3,0x1a,0xca,0x12,0x4a, +0xa9,0xc1,0x22,0xe4,0x80,0x87,0x0a,0x10,0x1b,0x81,0x87,0x4e,0xe5,0xa4,0xa7, +0x24,0x5f,0x76,0x29,0x63,0xd1,0x09,0x4f,0xb3,0xd0,0xb3,0x06,0x70,0x0c,0x94, +0xb8,0xa9,0xa9,0xae,0x26,0x2b,0x88,0x3d,0x4b,0x60,0x8b,0xa9,0x86,0x2f,0xe1, +0x40,0xb6,0x9c,0x74,0x7a,0x7b,0xaf,0xdf,0x3a,0xd7,0x26,0xdc,0xf1,0x7e,0x00, +0xd8,0xf4,0x45,0xa9,0xd8,0xc4,0x95,0xa3,0x8b,0x11,0xdc,0x3b,0x8b,0xa7,0x8f, +0x35,0x52,0x04,0x93,0x8f,0x31,0xd7,0x60,0x54,0x46,0x0a,0x92,0x04,0x80,0x78, +0x47,0xe6,0x73,0x99,0xb3,0x32,0x81,0x88,0xd4,0x76,0x78,0xeb,0x89,0x96,0x32, +0xc6,0x2f,0x07,0x77,0x85,0x45,0xeb,0x63,0xd3,0xdf,0x93,0x33,0x7d,0x84,0x8a, +0x90,0x93,0x89,0x6d,0x83,0xa2,0x81,0xa5,0x30,0xe3,0x93,0xe1,0x23,0x0d,0x00, +0xe2,0xc3,0xd0,0x70,0x0d,0x20,0x8f,0x50,0x1a,0x2c,0x4a,0x5d,0xc3,0x29,0xb3, +0xe9,0x80,0x7a,0xd7,0xd0,0xb7,0xb0,0x53,0x6c,0x22,0x16,0x41,0x95,0xe1,0x18, +0x01,0x29,0x82,0x02,0xbd,0x13,0x32,0x84,0x81,0xb1,0x0c,0x44,0x4a,0x43,0xad, +0x2e,0xd4,0xcd,0xc5,0x1c,0x2a,0xee,0x06,0x34,0x7d,0x5c,0x63,0x3f,0x82,0x77, +0x5e,0x0b,0xc3,0x41,0xe6,0xef,0x59,0x8c,0xc5,0x25,0x16,0x36,0xa9,0x0a,0x92, +0x87,0x8d,0x15,0xd3,0x94,0xbf,0xe9,0xe4,0xe7,0x76,0xf3,0x13,0x4a,0x01,0x67, +0x08,0x84,0x24,0x00,0x3c,0x36,0xac,0x60,0xb1,0x7c,0x17,0xb3,0x0a,0x16,0x6b, +0x93,0x41,0xd7,0x1e,0x0f,0xf7,0x47,0x6e,0xf7,0x29,0x4d,0x41,0xf2,0xb1,0xc1, +0xc5,0xdb,0x79,0xe5,0x8d,0x5b,0xab,0x10,0x28,0xc9,0x08,0x2f,0x61,0x03,0xee, +0x99,0xd7,0xb9,0xa3,0xb8,0x9b,0xcd,0x96,0xa5,0x98,0x17,0x8b,0x85,0x56,0x9c, +0xdc,0x65,0x6d,0x66,0xd2,0x5b,0x59,0x4a,0xb0,0x49,0x51,0x0c,0x27,0xc7,0x62, +0x5c,0x2f,0x5a,0x74,0xb2,0x3d,0x31,0x77,0x87,0x5e,0x79,0x7f,0xb4,0x8e,0x82, +0x38,0x80,0xa7,0x2a,0x46,0x48,0x15,0xb3,0x24,0x2f,0xa8,0x19,0x14,0xd6,0xaf, +0x2e,0x39,0xf9,0xd3,0xee,0x3d,0x29,0xdd,0x29,0xc1,0x26,0x32,0x68,0x40,0x4c, +0x60,0xa9,0x2d,0xc2,0xa5,0xc8,0x22,0x24,0x8d,0x8f,0x51,0x05,0x49,0x00,0x20, +0x32,0x12,0x63,0xa0,0x85,0x09,0xa0,0x9c,0xe9,0xe3,0xc1,0xc1,0x41,0xf2,0x07, +0x37,0xad,0xe7,0xe7,0xdd,0x62,0x63,0x93,0x34,0x68,0xc0,0xe3,0xac,0x7a,0x1b, +0xc9,0x2c,0x8a,0x77,0xdc,0x45,0xb1,0xd6,0xee,0xde,0x88,0x08,0x20,0xff,0x90, +0x06,0x40,0xa2,0xd7,0x2d,0xdc,0x8f,0x40,0x94,0xfe,0x7d,0x04,0x6c,0x8a,0x25, +0xba,0xd9,0x35,0x07,0x1b,0x64,0x39,0xb0,0xc7,0x09,0x23,0xce,0xc2,0xe9,0xa3, +0x45,0xb0,0xd9,0x48,0xba,0x0d,0x03,0x11,0x81,0xc0,0x04,0x20,0xa8,0x23,0xc6, +0x71,0xc0,0xd7,0xa6,0xa7,0x8f,0xb1,0xd7,0xe2,0x31,0x36,0x46,0xc3,0xb9,0xd8, +0x84,0x96,0x43,0xfc,0x29,0xa9,0x97,0xdd,0xd0,0x13,0x3b,0x45,0x1b,0x78,0xaf, +0xc1,0x22,0x10,0x1f,0x8f,0x24,0xa0,0xfc,0xe2,0x91,0x8c,0x0c,0x39,0x41,0x57, +0x24,0xf8,0xf2,0xab,0x6e,0x7e,0xfa,0x68,0x7a,0x06,0x58,0xce,0x64,0xce,0x1b, +0x4a,0xb1,0x09,0x14,0x83,0x3b,0xc5,0x48,0xd4,0xf3,0x42,0x8b,0x30,0x36,0x79, +0xd1,0xd2,0x29,0x23,0x66,0x00,0x10,0x8a,0x3f,0x2e,0xfc,0x38,0x31,0xf8,0x3a, +0x7b,0x8e,0x22,0x2c,0x16,0x0b,0xf0,0x7d,0x04,0xdb,0x22,0x40,0x1e,0x9c,0xff, +0x71,0x95,0xcd,0x61,0x03,0x59,0x30,0xf8,0x4a,0x7e,0xaf,0xc1,0x5e,0x65,0x43, +0x4c,0xb0,0x79,0x19,0x01,0x31,0x0a,0x40,0xaa,0xf0,0x4e,0x2b,0x96,0x0c,0x61, +0x79,0xee,0x0e,0xa5,0xb0,0x3e,0x6a,0xb3,0xb9,0xe0,0x72,0x13,0x96,0x07,0xcc, +0x7a,0x97,0xb6,0x83,0x4d,0x5f,0x62,0xf0,0x0b,0x83,0xc5,0x83,0x83,0x03,0xd5, +0x52,0x9e,0x72,0xb8,0xf3,0x19,0x43,0x05,0x95,0x6c,0x1c,0x5c,0x4a,0x15,0x1e, +0xad,0xe3,0x61,0x61,0xab,0xaa,0x92,0x50,0xb6,0xdc,0x18,0x21,0xac,0x5f,0x55, +0x95,0xe4,0x6d,0x91,0x1f,0xc1,0x66,0x44,0x39,0x72,0x15,0x03,0xa9,0x84,0xd1, +0xe9,0x7a,0xfa,0x98,0xd7,0xe9,0x9a,0x50,0xae,0x50,0x31,0x15,0x82,0xb0,0xb6, +0x62,0x84,0xfc,0x37,0xe7,0xa9,0x16,0x21,0x47,0x11,0x0e,0x0f,0x0f,0xe1,0x6b, +0xf1,0x10,0x9b,0xb1,0x10,0x27,0x38,0x1b,0x46,0x6c,0x5c,0x39,0x62,0xd8,0x48, +0x2d,0xb4,0xaa,0x57,0x24,0x52,0xd3,0xaa,0x5e,0xd1,0x29,0x9f,0xc1,0x86,0x92, +0x2d,0x02,0x8a,0x11,0xd0,0x8d,0xb9,0x99,0x19,0x04,0x82,0x09,0x40,0x54,0x78, +0x14,0x06,0xfb,0xf5,0xa1,0x45,0x60,0xbd,0x1d,0x3d,0xf7,0xad,0x2e,0xf5,0x36, +0x35,0xeb,0x37,0xa4,0x03,0x76,0xe3,0x65,0xea,0x92,0xad,0x1c,0x52,0x0b,0xd5, +0x52,0x93,0xd4,0x4d,0x47,0xaf,0x56,0xab,0xe6,0x5c,0xea,0x5e,0x41,0xb1,0x62, +0x27,0x60,0x93,0x1a,0x2c,0x9a,0x5a,0x84,0x9e,0xab,0xee,0x15,0xef,0x8f,0x77, +0x6b,0x70,0x94,0xa6,0x18,0x46,0xfb,0x4e,0x53,0x16,0xbf,0xdb,0x98,0x3e,0x26, +0x7f,0x59,0x4d,0x28,0x8a,0x8d,0x48,0x4d,0x75,0xdb,0xd9,0x75,0x5d,0x53,0x2d, +0xab,0xe6,0xef,0xaa,0xf9,0x2b,0x61,0x9d,0x5e,0x06,0xa2,0x6e,0x36,0xa2,0x79, +0x09,0x99,0x30,0xdd,0xa6,0x2a,0x83,0xbb,0x98,0xb1,0xf9,0x1b,0x9b,0x35,0x0c, +0x25,0xa2,0x2e,0x60,0xe5,0x48,0x52,0x8c,0xb1,0xbe,0x13,0x4b,0xeb,0xcb,0xa7, +0x8f,0xe8,0xeb,0xec,0xa9,0xae,0x81,0xab,0xe6,0x0b,0xed,0xab,0x55,0x63,0xbe, +0x3b,0x53,0xde,0x75,0xbc,0xaa,0xec,0xe6,0x22,0xbc,0x1d,0x5f,0xec,0x5d,0x1b, +0xde,0xc3,0x75,0x57,0x42,0xed,0xbe,0xc9,0xb1,0x08,0xe9,0xc1,0x22,0xb6,0xcc, +0x90,0x81,0xb0,0x04,0x2a,0x47,0x44,0x31,0xa2,0x7e,0x14,0xf1,0xa6,0x0b,0xed, +0xb7,0x97,0x13,0xe8,0xf8,0xf8,0x18,0xbd,0xe0,0x92,0x8c,0x0d,0x13,0xd1,0x93, +0x27,0x8f,0xdd,0x22,0xff,0x7e,0x71,0x3a,0xb4,0xad,0xe0,0x0d,0x07,0x71,0x31, +0x70,0x10,0x71,0xca,0x5d,0xa5,0x40,0x24,0x64,0xf6,0xa5,0x0e,0x16,0xb3,0x62, +0x84,0x31,0xd7,0x10,0xd1,0x50,0x6d,0xc4,0x1c,0xf0,0x80,0xc5,0x80,0x4a,0xa1, +0x18,0x8a,0x68,0x3d,0x70,0x0d,0xc7,0xc7,0x79,0xbf,0x67,0xaa,0x5c,0x83,0x65, +0x11,0x80,0x52,0x37,0x15,0x9c,0x88,0x27,0xc0,0x46,0xc2,0x85,0x35,0xa2,0x56, +0x39,0x80,0x62,0xb4,0x05,0x43,0x39,0x50,0x96,0x80,0x9d,0xee,0xf1,0x1b,0x8f, +0x11,0x2c,0xe2,0xe0,0x44,0xc2,0x52,0x43,0x39,0xc2,0x60,0xd2,0xb7,0x18,0x62, +0x28,0x85,0x6a,0x26,0xa2,0xf5,0xeb,0xfd,0xe8,0xa7,0x4b,0x3a,0x58,0x8c,0xc4, +0x08,0x9a,0x03,0x3f,0xbe,0x61,0xf1,0xb0,0x09,0x95,0xa3,0x91,0xdf,0xbd,0xd6, +0xcd,0x11,0x86,0x01,0xa3,0x14,0xc0,0x55,0x0a,0xaf,0xbd,0xe1,0x7c,0xf3,0xc1, +0xa2,0x19,0x06,0xb3,0xc7,0x81,0xba,0x2b,0x54,0x8e,0x04,0xc5,0x50,0xd6,0x22, +0x66,0xe0,0x4d,0xad,0xd7,0x99,0xc5,0x5c,0xd2,0xc1,0xa2,0x31,0x6b,0x30,0xb0, +0x61,0x66,0x72,0xb7,0x94,0x2a,0x83,0xec,0x28,0xc7,0xa0,0x18,0xbe,0xc5,0xb0, +0xad,0xc5,0x88,0x55,0xe8,0xda,0x05,0xfc,0x26,0xbf,0x0d,0x9d,0x95,0x34,0xe1, +0x86,0x19,0x4d,0x86,0x72,0x40,0xc5,0x48,0x51,0x0a,0xb0,0xdb,0x97,0x6c,0xd7, +0xc0,0x95,0x7e,0x2d,0x3e,0xe7,0x33,0x41,0x87,0x87,0x87,0x12,0x2e,0x43,0xdb, +0xae,0xc1,0x20,0x26,0x62,0x17,0x9b,0x5e,0x64,0xac,0x1c,0xc2,0xd2,0xdf,0xe4, +0x2a,0x06,0xb6,0x16,0x86,0x55,0x70,0x1f,0x6f,0x0c,0x92,0x74,0x45,0x40,0xef, +0x03,0x18,0xf2,0xb3,0x73,0xcd,0x63,0x47,0x29,0x07,0x56,0x0c,0x51,0x0d,0x68, +0xa5,0x68,0xa6,0x57,0x35,0xd5,0xc1,0x35,0x69,0xff,0x21,0x7e,0xd1,0x6b,0xed, +0xb9,0x84,0xbe,0xca,0x06,0xb1,0x31,0x88,0x1d,0xcb,0xe6,0xe6,0x43,0x42,0xe5, +0xf0,0xec,0x82,0xeb,0x2e,0xb8,0x2f,0x8d,0x2a,0x05,0x1a,0x22,0xbd,0xaa,0x19, +0xd8,0x84,0x04,0x15,0xa1,0x82,0xae,0x41,0x53,0xc3,0xe2,0x10,0x2e,0xe3,0x91, +0xdf,0x5d,0xc6,0x8a,0xd1,0x74,0xb4,0x90,0xc8,0x8a,0x56,0x6d,0x87,0x4b,0xdd, +0xce,0xad,0xdb,0xf3,0x8e,0x4e,0x16,0x27,0x4e,0xcd,0xf6,0x48,0x30,0xbf,0x28, +0x58,0x2c,0xfd,0x3a,0x7b,0xc5,0x9c,0x8c,0x4d,0x73,0x81,0x7b,0x1e,0xfd,0x78, +0xa1,0x77,0x00,0xcd,0xa9,0x83,0x8d,0x30,0xb2,0x16,0x71,0xa5,0xf0,0x2d,0xa8, +0x7f,0x04,0xb1,0x29,0x99,0x3e,0x22,0x8a,0x85,0x7f,0xae,0x62,0x34,0x1d,0x5d, +0xd3,0xca,0xe9,0x64,0xe9,0x3a,0x5d,0x9c,0x4d,0xb0,0x61,0xf0,0x44,0x9d,0xe8, +0x9d,0xdf,0xf4,0x9f,0x24,0xc4,0xa6,0xf9,0x43,0x1f,0xd3,0x2a,0xfe,0xdd,0x47, +0x66,0xbc,0xd6,0x60,0xe0,0xd5,0x8f,0x5b,0x15,0x3b,0x4b,0xdb,0xc9,0x83,0x40, +0x43,0x39,0xb2,0x16,0x86,0x52,0xb8,0x0a,0xe1,0x3d,0x73,0x70,0xa9,0xd6,0x3a, +0x4c,0x58,0x56,0x14,0x23,0xf4,0x0f,0x95,0x21,0x1d,0x3a,0xfc,0x6d,0x3a,0xbf, +0xe9,0x68,0x52,0x09,0x29,0x6f,0x44,0x78,0x80,0xf8,0x82,0xfb,0x7e,0x93,0x9d, +0x5a,0x71,0x7e,0x19,0x24,0x94,0x72,0xa6,0x8f,0x6d,0x1e,0x41,0xb5,0x09,0xa7, +0xd6,0xf0,0xe5,0xe0,0xe1,0x5e,0x71,0xfe,0x0b,0x95,0xa3,0xc3,0xc6,0x2d,0xef, +0xb1,0x71,0x2c,0x09,0xb2,0x14,0x1d,0x36,0xd8,0x22,0x50,0xde,0xac,0x21,0x39, +0xb3,0x08,0x48,0x88,0xe8,0xc9,0xd3,0x1f,0x23,0x16,0x3c,0x77,0xdf,0x28,0xb0, +0xdb,0x89,0xce,0x88,0x18,0x11,0x7c,0x18,0x21,0x4d,0x44,0x10,0x9a,0x3e,0x8b, +0xdf,0x6d,0x7d,0xa6,0x1f,0x5b,0x1f,0x5d,0x77,0x48,0x05,0xb7,0xc1,0x9c,0x13, +0x0b,0x29,0xc5,0x48,0xc0,0x06,0xb9,0x0f,0x1f,0x1b,0xed,0x16,0xac,0x94,0x38, +0x0c,0x16,0x93,0x15,0xc1,0xf0,0x8d,0x43,0x71,0x2b,0x4c,0xdf,0xf9,0x58,0x78, +0x6e,0x47,0xbc,0x2f,0x24,0x39,0x65,0x81,0x90,0x8e,0x95,0xa0,0x60,0xaa,0x1a, +0xe3,0x17,0x59,0x84,0x5c,0x02,0xb3,0x8e,0xe4,0xe9,0x63,0xe3,0xb2,0xfc,0xeb, +0x26,0x36,0xc0,0x5a,0x60,0x4b,0xe1,0x63,0x23,0x83,0x69,0x68,0x9f,0x93,0x86, +0x0d,0xb4,0x08,0x40,0x2a,0x23,0x8f,0x80,0x6e,0x6c,0xee,0x75,0x2d,0xa3,0x97, +0x0b,0x77,0x78,0x73,0x85,0x37,0xcd,0xa1,0x0c,0x1b,0x3e,0xa5,0x8b,0x8a,0xbc, +0x40,0x6b,0x70,0x13,0x63,0x16,0xa1,0x74,0x19,0x7a,0x3a,0x9d,0xd2,0xc5,0xc5, +0x05,0x94,0x37,0x95,0xc2,0x77,0xc4,0x31,0x36,0xd2,0x2a,0x8c,0x3b,0x60,0x80, +0xa5,0x00,0xd8,0x70,0x18,0x34,0x65,0x60,0x13,0x92,0x61,0x11,0xd0,0x48,0x42, +0xf6,0xaf,0x29,0x1f,0xda,0x6d,0xe7,0xb7,0x9e,0x4b,0x70,0x84,0xf7,0x94,0x02, +0x8c,0x06,0xee,0x80,0x03,0x56,0xc2,0x0d,0xae,0xc2,0x30,0x15,0xf0,0x8b,0x96, +0xa1,0x73,0xbe,0x8f,0x40,0x84,0x5c,0xc3,0xc4,0xc0,0xc6,0x20,0x0e,0xa3,0x1a, +0x84,0x0d,0xb2,0x16,0x11,0x6c,0x9c,0x01,0xe4,0x0e,0x96,0x81,0x12,0xb0,0x29, +0x5a,0x74,0x52,0x25,0xd4,0x8e,0x10,0x72,0x98,0x6e,0x59,0xec,0x18,0x24,0x22, +0x71,0x7c,0x9b,0x5e,0x39,0x1b,0x46,0x03,0x76,0x1d,0x8e,0x45,0xf0,0x94,0xcd, +0x67,0x62,0x8b,0x29,0xe6,0xb4,0x59,0x83,0x41,0xc3,0xec,0x91,0xfd,0xb2,0x08, +0x36,0x32,0x98,0xc7,0x00,0x1b,0x7b,0xb0,0x48,0x26,0x36,0x45,0x29,0x66,0x68, +0x54,0x55,0xe7,0xb7,0x85,0x8e,0xf0,0x71,0xc1,0x43,0x2b,0x11,0x00,0xa1,0x2c, +0x02,0x66,0x22,0x75,0xfa,0x98,0x4b,0xa9,0x8b,0x4e,0xf6,0xc0,0x61,0xf2,0x74, +0x38,0x01,0x1b,0xd7,0x52,0x84,0x56,0xc2,0x1a,0x2c,0xf6,0x1a,0x2b,0xc6,0xa6, +0x68,0xfa,0x68,0xed,0xcc,0x61,0xdf,0x24,0x90,0x78,0xc2,0x27,0x08,0x1e,0x8c, +0x04,0x2f,0x96,0x08,0x14,0x02,0x93,0xad,0xf5,0x1b,0xf8,0x3a,0xbb,0x7f,0x6e, +0xae,0x35,0x20,0xb6,0x78,0x73,0xd8,0xf4,0x4a,0x82,0x07,0x8b,0x99,0xe1,0xcf, +0x99,0x35,0xac,0xb5,0x67,0xb1,0x77,0xd5,0xdc,0x06,0x44,0x83,0x5f,0x1b,0x0c, +0x83,0x24,0x09,0x1e,0x15,0x32,0x38,0xb7,0x78,0x49,0x0d,0x16,0x73,0x29,0x79, +0x17,0xb3,0xc3,0x4b,0x4f,0x42,0x18,0x9b,0x56,0x96,0x38,0x36,0x39,0x0a,0x81, +0xd7,0x60,0xba,0xc2,0xb2,0x60,0x71,0x6c,0xad,0x41,0x9c,0x03,0x6e,0x7d,0xb8, +0x53,0xd6,0x78,0x8c,0x30,0x1d,0xea,0x08,0x2e,0x4e,0x76,0xdd,0x52,0x08,0x24, +0xb4,0x41,0x38,0x9f,0xae,0x57,0x1f,0xa7,0xd3,0xa9,0xd9,0x46,0x48,0xc7,0xc7, +0xc7,0xea,0xbd,0x86,0xaa,0xe2,0xf8,0x5a,0x83,0x37,0x45,0x20,0x85,0x8d,0x38, +0xd6,0xae,0xc3,0xa1,0x29,0x0f,0xb1,0x31,0x06,0x0b,0x54,0x08,0xfc,0xcd,0x86, +0xe6,0x7e,0xcc,0x6f,0xd1,0xea,0x23,0xbb,0x91,0x61,0x2f,0xd9,0xb0,0xe6,0xee, +0x65,0xbe,0xda,0x5b,0x90,0xe0,0x9e,0x92,0x90,0xf4,0x41,0x66,0x5c,0x68,0xe9, +0x70,0x05,0x7c,0x19,0xfc,0x6e,0x61,0xd1,0x89,0xcd,0x3c,0x02,0x69,0x6c,0x88, +0x14,0x36,0x5a,0x29,0x5c,0x4b,0x51,0x80,0x8d,0xa5,0x9b,0x62,0xc6,0x08,0xaa, +0x0c,0xbe,0x16,0x1f,0xdd,0xa9,0xeb,0x06,0x88,0xbd,0x30,0x02,0x35,0x1f,0x09, +0x6e,0x5b,0x84,0x98,0xd0,0x40,0xeb,0x9d,0x73,0x2b,0x58,0x0c,0x65,0x0b,0x53, +0xc6,0x31,0xba,0xbc,0xbc,0xa4,0xc3,0xc3,0xc3,0xc4,0x59,0x43,0x17,0x0b,0x0c, +0xc7,0x6e,0x5c,0xe3,0xe1,0xa0,0x94,0x22,0xb4,0xa0,0x01,0x36,0xde,0x39,0x72, +0x19,0x36,0x36,0x91,0xcc,0xa2,0x0e,0x16,0xad,0x6d,0x5e,0x4a,0xd4,0x61,0xc0, +0x7b,0x0f,0x74,0x23,0x83,0x3e,0xd1,0x81,0x04,0xef,0xb2,0x61,0x31,0x85,0x08, +0x85,0xee,0xfd,0x66,0x17,0x2f,0xb8,0x0c,0x0d,0x02,0x5b,0xab,0x8f,0xa1,0x6c, +0x27,0x27,0x27,0xea,0x3e,0x8b,0x4e,0x4e,0x4e,0x54,0x42,0xc9,0x5a,0x7d,0x1c, +0x90,0xf7,0x4b,0xbc,0x97,0x4f,0x54,0x5a,0x98,0x86,0xb5,0x82,0xd8,0x60,0xf1, +0xce,0x07,0x05,0xf0,0x77,0x33,0x07,0xec,0x8c,0x60,0x53,0xf4,0x5e,0x83,0xe5, +0xa2,0x19,0x25,0x81,0x08,0x28,0x40,0x30,0x12,0x6c,0xa1,0x1d,0x21,0x99,0xda, +0x73,0xd7,0x67,0x52,0xa0,0x11,0x76,0x40,0xb4,0x71,0xd7,0x60,0x8c,0x30,0x73, +0xfa,0xe8,0x30,0x3c,0xe0,0xd0,0x9c,0x13,0x01,0x6c,0x62,0x83,0x25,0xc0,0x26, +0xb4,0x9c,0x3d,0x05,0x03,0x76,0x0b,0x7b,0x16,0x23,0xc1,0x5a,0xfb,0x3f,0x4a, +0x0b,0x63,0x21,0xbb,0x73,0xac,0xf5,0xc8,0x3a,0x34,0xbf,0x12,0xc0,0xc3,0x03, +0x7b,0x65,0x30,0x3a,0x67,0x03,0x6b,0x0d,0xe9,0x9b,0x57,0x01,0xb1,0x8b,0x18, +0x3b,0x69,0xe1,0xf6,0x22,0x45,0x06,0x4b,0x88,0x4d,0x37,0x70,0x62,0xd8,0x38, +0xcf,0x25,0x21,0xcf,0x3d,0x8c,0xc9,0x45,0x94,0x33,0x7d,0xe4,0x00,0x7f,0xe7, +0xde,0x5e,0x09,0xdb,0x2d,0x54,0x83,0x67,0x10,0x5b,0xeb,0x1d,0xb3,0x28,0x03, +0xd7,0xc4,0xe6,0x08,0x10,0xcc,0x00,0x99,0x09,0xa5,0x9d,0x4d,0x1f,0xbb,0x40, +0x36,0x0b,0x1b,0x6f,0xed,0x60,0x04,0x9b,0x3e,0xde,0x8a,0x60,0x43,0x90,0x81, +0xf4,0xe9,0xe3,0xe1,0xe1,0x61,0xd2,0x8d,0x1d,0xd3,0x5e,0x88,0xc0,0xdc,0x5e, +0x19,0x3a,0x72,0x10,0xb2,0xb9,0x3b,0x5c,0x20,0x71,0x85,0x0e,0x83,0xca,0xde, +0x24,0xc2,0x11,0x80,0xac,0x41,0x07,0x04,0x8a,0x11,0xca,0x7f,0xca,0x27,0xc4, +0x66,0x52,0x4d,0xe0,0xb3,0x50,0xf8,0xd4,0xa9,0x87,0x89,0x8d,0x77,0xde,0xed, +0x3f,0x1c,0xac,0xa9,0x69,0x39,0xa1,0x35,0x30,0xb0,0x11,0xdc,0x97,0xc9,0xbf, +0x16,0x3f,0x36,0x92,0xc4,0x39,0x6a,0x6e,0x75,0xb3,0x80,0x5a,0xe8,0x66,0x9e, +0xec,0x0a,0xd9,0x08,0x8d,0xdc,0x85,0xab,0x1c,0xfd,0x6a,0x61,0x0b,0xc0,0xc0, +0xa0,0x2f,0x70,0x6a,0x66,0x71,0x5b,0x3b,0x94,0xbc,0xa0,0x90,0x7a,0xc3,0xaf, +0x12,0x62,0x10,0x9b,0x6e,0xd6,0xd5,0x76,0xe8,0xb8,0x75,0x68,0xf7,0x6c,0x89, +0x3f,0x50,0x1c,0x66,0x1c,0xb7,0x90,0xa1,0x08,0xeb,0x64,0x16,0x9d,0x10,0xa8, +0x3f,0xf3,0xa7,0x32,0xbe,0xd0,0x9d,0x59,0x0c,0xfd,0xa4,0x18,0x23,0xa0,0xd7, +0x79,0xf6,0xcd,0x61,0xfb,0xd0,0x9e,0xfa,0x91,0x88,0x5d,0x99,0xa0,0x37,0x7a, +0x52,0x69,0x3e,0x9f,0x2b,0xc5,0xb1,0x5c,0x03,0xd8,0xa8,0x4c,0x83,0x45,0x20, +0x22,0x80,0x4d,0xbf,0x5d,0x5d,0x61,0x13,0xb7,0x0e,0x2e,0x36,0xee,0x40,0x69, +0x18,0x71,0x78,0x6a,0xff,0x59,0x53,0xeb,0xb0,0x2c,0x73,0xab,0x9a,0xf6,0x84, +0x3d,0x0f,0xce,0xdc,0x36,0x1c,0x05,0xd2,0x76,0x28,0xb4,0x0e,0xc8,0x55,0x38, +0x02,0xfb,0xe6,0x50,0x73,0x63,0xf1,0x8b,0x96,0xa1,0xe7,0xf3,0xb9,0x21,0x17, +0xa6,0xe4,0x59,0x43,0xff,0xbf,0x78,0x65,0xfd,0x94,0x17,0x60,0xd3,0xcf,0xb5, +0x00,0x36,0xc8,0x3a,0x8c,0x2a,0x03,0x74,0x4c,0xb6,0xb5,0x0c,0x69,0x8d,0x45, +0xa7,0xc1,0x1e,0x78,0x30,0x74,0x2f,0x6b,0x48,0x6b,0xfc,0x7b,0xb3,0x18,0xb1, +0x0e,0xbd,0x7f,0x04,0xae,0x01,0x28,0x43,0xf7,0xb8,0xf0,0xe5,0x4f,0x6b,0xd6, +0x50,0x1a,0x2c,0xe6,0xcf,0x1a,0x34,0x36,0x9d,0x45,0x88,0x61,0xa3,0xad,0x43, +0xc4,0x1a,0x98,0xca,0xd0,0xb8,0x8d,0x24,0x6c,0x92,0xf3,0x08,0xa3,0x7b,0xf7, +0xbb,0x70,0xa5,0xd5,0xfa,0x2e,0x7a,0xed,0x84,0x76,0x72,0xe1,0x32,0x0c,0x0b, +0x6d,0x1d,0xfa,0xe3,0x34,0x65,0xe8,0x1e,0xcd,0x2e,0x07,0x8c,0xf9,0xad,0xaa, +0x4a,0x6d,0x44,0x51,0xdf,0x44,0x1a,0xa1,0xf5,0xde,0x6b,0x70,0x94,0x37,0x11, +0x1b,0x6d,0x1d,0xf2,0x06,0x4a,0x1f,0xa3,0x24,0x62,0x03,0x7f,0xb8,0xc3,0xda, +0xd4,0x11,0x27,0x57,0xf3,0x51,0x9a,0x18,0x8c,0x00,0x67,0xcd,0x60,0x6d,0x65, +0xf0,0x38,0x70,0x76,0x32,0x02,0x7e,0x91,0x19,0xcf,0xcd,0x2c,0x9e,0x9f,0x9f, +0x83,0x36,0xc7,0x2c,0xa8,0x7f,0x3c,0x86,0x4d,0x03,0x4b,0x21,0x36,0x41,0x17, +0x7a,0x2a,0x32,0xca,0x6f,0x43,0x19,0x9b,0x57,0x09,0x85,0x08,0xbe,0xd6,0x3b, +0xd3,0x19,0x25,0x64,0x54,0x19,0xc8,0x37,0x85,0x44,0x58,0xf8,0x96,0x06,0x7b, +0x14,0x33,0x7f,0x9b,0xdf,0xc5,0x6c,0xbf,0xfb,0x48,0x18,0x1b,0x87,0x57,0x0b, +0x9b,0x71,0x65,0xa0,0x11,0x6c,0xd4,0x8c,0x91,0xc6,0xb0,0xb1,0x66,0x0d,0x6a, +0xb8,0x45,0xa7,0x48,0xa1,0x1b,0xa4,0xce,0x04,0x76,0xd6,0x61,0x1d,0x65,0x18, +0xfc,0x22,0x94,0x2e,0x42,0x22,0x96,0x22,0x94,0xcd,0x1a,0x9a,0x36,0xfc,0xfa, +0x6d,0x9b,0xe8,0x4e,0xef,0xcf,0xb0,0xb5,0x48,0x27,0x7e,0x52,0x94,0x41,0xb5, +0x1d,0xc5,0x06,0xd5,0x19,0xae,0x24,0xcf,0x1a,0x90,0x76,0xe0,0x85,0x95,0x4e, +0xc8,0xf0,0x51,0x7d,0xe3,0x49,0xca,0x40,0x23,0x02,0xfb,0x32,0x87,0x89,0x95, +0xee,0xce,0xc1,0x3e,0x30,0x5b,0x8b,0x4e,0xdb,0x79,0xaf,0x01,0xbf,0xf2,0xa6, +0x3b,0xc7,0xe5,0x36,0x65,0xa0,0x0c,0xc7,0x14,0x0c,0x92,0x7e,0xd8,0x0c,0x5d, +0x9e,0x88,0x4d,0xc3,0x73,0xa2,0x45,0x98,0x4c,0x26,0x70,0xbe,0xac,0xc9,0xd1, +0x7a,0x67,0xc2,0xe0,0x99,0xac,0x98,0x32,0x90,0x73,0x6c,0x0a,0x4c,0x64,0xd4, +0xe8,0xb9,0x08,0x4d,0x9f,0xc5,0x2f,0x8a,0x11,0x72,0x82,0xc5,0xd5,0x6a,0xa5, +0x82,0x2a,0x33,0x8f,0xd0,0x06,0x66,0x0e,0x83,0x5a,0x8e,0x98,0x0b,0xed,0xef, +0x0f,0x3a,0x7d,0xc4,0x45,0x68,0x3e,0x86,0x56,0x5c,0x9e,0x43,0x82,0x31,0x02, +0xb3,0xde,0xc9,0x33,0x9a,0x4f,0xef,0x0e,0xda,0x68,0xcd,0x9f,0xce,0x18,0x02, +0x3b,0x8b,0x23,0x81,0x7e,0xfb,0x4f,0x71,0x4d,0x5f,0xa0,0x74,0xae,0xb8,0x6e, +0x9d,0xd4,0xcc,0x62,0x4e,0x1e,0xe1,0xd6,0xad,0x5b,0x7a,0x19,0xda,0xd8,0x98, +0x02,0xb1,0x69,0x8f,0x07,0x6c,0x02,0xf5,0x76,0xd3,0xc3,0x2c,0x69,0x16,0xd3, +0xd7,0x32,0x10,0x2c,0xea,0x20,0x25,0x39,0x46,0xc8,0x0a,0x16,0xa3,0x02,0x23, +0x8d,0x8c,0x08,0x34,0x62,0x15,0x62,0xbe,0xcf,0x25,0x21,0x7b,0xd1,0x69,0xd3, +0x6f,0x3a,0x99,0x79,0x84,0xb0,0x88,0x9d,0x42,0x0f,0x8e,0x7e,0x94,0xa8,0xdb, +0x91,0xfd,0x73,0xb1,0xf1,0x6f,0x4c,0xc3,0x26,0x36,0x48,0x42,0x2a,0xff,0x50, +0x86,0xf3,0xd0,0x21,0x52,0xf5,0xe2,0x25,0x68,0x15,0xc2,0x3a,0x61,0x19,0x74, +0x15,0x3a,0x3c,0x36,0x03,0x22,0x64,0x11,0x72,0x29,0x79,0x17,0x73,0xd8,0x4f, +0x01,0x8d,0xbb,0x88,0xa0,0x32,0x68,0x68,0x6c,0x78,0x75,0xd6,0x39,0xe4,0x67, +0xf3,0x16,0xc1,0x61,0xc1,0x0b,0x5a,0xc8,0x31,0x4f,0xe2,0xdf,0x17,0xa3,0x54, +0x9d,0x56,0x95,0x9c,0xe3,0x41,0xd9,0xd2,0x62,0x84,0x5c,0x4a,0xb6,0x08,0x3d, +0x73,0x3e,0x36,0xa1,0xf5,0x73,0xef,0x0b,0xeb,0x6a,0xcf,0x9f,0xe0,0x1e,0x8c, +0x9a,0x1d,0x36,0x42,0x79,0x31,0x82,0xea,0x0f,0x6b,0xfa,0xd8,0x3f,0xd0,0xe8, +0xc1,0xb5,0x3a,0x17,0xd5,0x1b,0x55,0xff,0xa0,0xbe,0x21,0xec,0x64,0x32,0xf1, +0x3e,0x7f,0x93,0xfb,0xc1,0x4d,0x35,0x7d,0x34,0x4c,0x2d,0x31,0x01,0x6c,0x70, +0x14,0x94,0xf4,0xdc,0x35,0xeb,0xa1,0x76,0xac,0x3d,0x8b,0xe1,0x04,0x61,0xbd, +0xed,0xec,0xd1,0x47,0xa7,0xf9,0x2e,0x6d,0xfb,0xb0,0xff,0x54,0xe4,0xc5,0x4b, +0xad,0xb9,0x05,0xfc,0x76,0xa3,0xd7,0x95,0x2f,0x37,0xc5,0x0c,0x2d,0x42,0xea, +0xa7,0x73,0x22,0xa6,0x7d,0x6b,0x24,0xc1,0x09,0x1b,0xd8,0x80,0x09,0x42,0xc1, +0x47,0xb9,0x4b,0xc4,0x5a,0xb7,0xae,0x80,0xda,0xf6,0x2e,0x9c,0x50,0xd8,0x1c, +0x45,0x38,0x39,0x39,0xd1,0x1f,0xca,0x48,0x76,0x37,0x5a,0xbe,0x6d,0x2b,0x41, +0xbb,0xc9,0x4f,0x3b,0x93,0xd4,0x18,0xa1,0x28,0x58,0x94,0xf0,0x74,0x3d,0x71, +0x85,0xc8,0xb7,0x06,0x20,0x28,0x1c,0x0e,0xc3,0x67,0xd8,0x7b,0xf7,0x43,0xd9, +0x72,0xd6,0x1a,0xba,0x36,0xc2,0xf3,0x9c,0xb8,0xa3,0x4c,0xdd,0xd7,0xa9,0x17, +0x76,0x48,0xc6,0xac,0x21,0xfb,0x8b,0x29,0x81,0xf9,0xc1,0x9d,0x9f,0x32,0xed, +0x5b,0x83,0x04,0xd7,0x4b,0xb5,0x08,0xb9,0x84,0xf2,0x2b,0xd1,0x64,0x1b,0x0c, +0xe5,0xc3,0x72,0x8c,0xd7,0xba,0x36,0x24,0x3a,0xf8,0x72,0xf2,0x08,0xa9,0xc1, +0xa2,0xcf,0x1b,0x78,0xb8,0x33,0xa2,0xbd,0xc1,0xed,0xd4,0x49,0x13,0x16,0xdd, +0x85,0x9e,0x37,0x1c,0xa6,0xae,0x35,0x14,0x07,0x8b,0xe6,0x5a,0x83,0x44,0xb1, +0xf1,0x32,0xa3,0x2e,0x1e,0x86,0xe5,0xb3,0x09,0xdb,0x44,0xe3,0x36,0xb2,0xac, +0x25,0x5c,0x6b,0xe8,0xd2,0xa8,0x6e,0x14,0x19,0x37,0x7f,0xa2,0x8f,0x04,0x96, +0x92,0x62,0x59,0x9c,0x32,0xef,0x36,0x2d,0x60,0x4e,0x97,0x59,0xab,0x8f,0xa5, +0x5f,0x67,0x0f,0x7f,0xfb,0xd1,0x5c,0x7d,0x04,0x4a,0x80,0x67,0x58,0x63,0x52, +0x89,0x86,0xc8,0xc5,0x26,0x3a,0x10,0x09,0x06,0xf4,0xc9,0xae,0xa1,0xbb,0xd1, +0x35,0x17,0x96,0x22,0x58,0xd3,0xc7,0x71,0x8d,0x17,0xd0,0xc9,0x86,0x76,0x63, +0xed,0x6a,0x4f,0x01,0xd0,0x06,0xbf,0x9b,0xc8,0x23,0x84,0xee,0x25,0x96,0x47, +0x80,0xd8,0x84,0x3c,0x5b,0xd8,0xd8,0x20,0xd8,0x65,0xe2,0x3f,0xb3,0x0b,0x16, +0x3d,0x5e,0x28,0x23,0x8f,0x90,0xfa,0xc1,0x4d,0xc8,0x8f,0xf8,0xe6,0x56,0xa0, +0x7b,0x70,0xb5,0x7c,0x44,0xe3,0x81,0x72,0x78,0x2a,0xd4,0x1d,0x06,0x81,0xa5, +0xf5,0x51,0xc9,0x70,0xd1,0x28,0xe7,0xc7,0xbd,0x4e,0x4f,0x4f,0xc1,0x2b,0x6f, +0x78,0xf5,0xd1,0x79,0x67,0xcd,0xe3,0xcb,0x57,0x82,0x9e,0x79,0x63,0x80,0xa4, +0x59,0x83,0xd1,0x80,0xdc,0xc1,0x86,0x09,0x63,0x93,0xb1,0x43,0x29,0xe6,0x07, +0xb1,0x01,0xf7,0x94,0x60,0xd4,0x25,0x18,0x1a,0x1f,0xb1,0x06,0x6e,0x7d,0xdf, +0x71,0x6f,0xd7,0x22,0x24,0xb5,0x29,0x3a,0x07,0xe2,0x7b,0xbe,0x88,0x12,0x8c, +0x60,0x03,0x07,0x08,0xb0,0x06,0xc3,0xb1,0x5b,0x37,0xe3,0x05,0x17,0xa4,0x1d, +0xf6,0xc7,0xb4,0x7c,0x86,0xba,0x33,0xdb,0xcc,0x75,0xe7,0xed,0x9d,0xee,0xf1, +0x50,0x60,0x6a,0xbc,0x5e,0x7e,0xd6,0x16,0x42,0x0c,0x7e,0xd1,0x2e,0xe6,0x9c, +0xf7,0x1a,0xea,0xba,0x56,0x23,0xa7,0x99,0x3e,0xea,0x67,0xe1,0xa1,0xd1,0x72, +0x1b,0x73,0x95,0x09,0xd8,0x44,0x07,0x88,0xe2,0xc3,0xc7,0xa6,0xc9,0x2c,0x26, +0x7e,0x4c,0x2b,0xd9,0x22,0xa0,0x19,0x92,0x94,0x0b,0xea,0x1f,0x5b,0x5a,0x8e, +0x2d,0x48,0xd7,0xa4,0xb5,0x8b,0xb9,0xf3,0xef,0xb9,0x2f,0xb6,0xf4,0x6d,0x24, +0x5a,0x04,0x76,0xe5,0xea,0xd9,0xdb,0x14,0x36,0x5e,0x2d,0xff,0xd8,0xc3,0x49, +0x9a,0xec,0xac,0x73,0x87,0x00,0x19,0x88,0x08,0xe2,0x82,0xdf,0x74,0x42,0x69, +0x54,0x4f,0x31,0xc3,0x2a,0x05,0x82,0xa6,0x9a,0x3d,0x72,0x8f,0x9d,0xbd,0x0d, +0x76,0x1a,0xb5,0xff,0x98,0x56,0x37,0x02,0xd6,0xd8,0xc5,0xec,0x7b,0x21,0x66, +0x41,0xcf,0xea,0x40,0x6f,0x4e,0x7c,0xa9,0x7c,0x6b,0x3f,0x82,0x53,0x58,0x3f, +0x63,0x80,0x08,0xd1,0x10,0x2a,0x76,0xd8,0x10,0xc6,0x26,0xc4,0x85,0x28,0x37, +0xb3,0x18,0x2a,0x00,0x33,0x4d,0xa7,0x33,0x87,0x15,0x72,0x84,0xa6,0x80,0x4d, +0xbf,0x0d,0x6d,0x4e,0x05,0x14,0x06,0xdb,0xae,0xaa,0x0a,0x9a,0xc6,0x6d,0xed, +0x47,0xc8,0xfb,0x95,0x37,0x9f,0xb1,0xaa,0x62,0x9a,0x4e,0xbb,0x8d,0x30,0x25, +0xd8,0xe8,0xba,0xc8,0x4a,0x32,0x33,0xf4,0x1c,0xd9,0xd3,0xc7,0xb1,0xca,0xea, +0xd1,0xed,0xc9,0x10,0x95,0xb2,0xf7,0xa7,0xd1,0x50,0x21,0x50,0x18,0x5c,0x1b, +0xda,0x13,0x6b,0xaf,0xa9,0x78,0xb6,0x40,0xf1,0x94,0x1a,0x2c,0x9e,0x9d,0x85, +0x3f,0x92,0x69,0xd3,0xd9,0xd9,0x19,0x3d,0x7b,0xf6,0x6c,0xb4,0xcd,0x96,0x75, +0x80,0x0d,0xd3,0x30,0x18,0x47,0xb0,0xf1,0x0e,0xc1,0xd7,0xa2,0xd6,0xc2,0x86, +0xa2,0x81,0x74,0x48,0x46,0xb0,0x68,0xc4,0x08,0x20,0x33,0x87,0x35,0x1b,0x1e, +0x9a,0x25,0x76,0x1c,0x40,0x9e,0xa0,0x61,0xa5,0xe1,0x05,0x1f,0x1c,0x23,0x94, +0x5a,0x04,0x1c,0x2c,0x1a,0x31,0xc2,0x3e,0x62,0x43,0x19,0x16,0x21,0xd9,0x35, +0xb8,0x9f,0x7c,0x09,0x39,0x35,0x0f,0xf5,0xa8,0x37,0xaf,0x21,0x4a,0x10,0x94, +0xd8,0x58,0x74,0x62,0x9d,0x47,0xc8,0xa5,0x54,0xd7,0xe0,0x8e,0xe1,0xbd,0xc2, +0xc6,0x18,0x24,0x45,0x79,0x04,0x7f,0x79,0x09,0x0b,0x31,0x1c,0x62,0xcd,0xee, +0xda,0x81,0x34,0xa2,0xf9,0x43,0xfe,0x54,0xbb,0xa8,0x54,0xd7,0x20,0x19,0x8b, +0x0d,0x22,0xa2,0xd6,0x15,0xec,0x3c,0x82,0x81,0x0d,0x84,0x69,0xd3,0xd8,0xf8, +0x27,0x29,0x31,0x82,0x95,0x59,0x54,0x4f,0x40,0x37,0x2e,0x97,0x17,0xb4,0xba, +0x5c,0xea,0x67,0xbb,0xfc,0x80,0xd9,0x04,0x8a,0x75,0x3c,0x96,0x25,0xb8,0xea, +0x05,0x3c,0xa1,0x60,0x7e,0x34,0x24,0x42,0x74,0x7e,0x71,0x6e,0x2e,0xac,0xec, +0xea,0x17,0x5c,0x2e,0x5a,0x6c,0x2c,0x2d,0xdb,0x3e,0x36,0xba,0x21,0x11,0xa2, +0xf3,0x25,0xc6,0xa6,0xe8,0x13,0xbc,0xdf,0xf9,0xb7,0xb7,0xe9,0x9d,0x77,0xbe, +0x1b,0x8a,0x62,0x50,0xf2,0xc0,0x8b,0x53,0xc2,0x88,0x5a,0xad,0x56,0xc9,0xb3, +0x86,0xd2,0xdf,0x74,0xb2,0x2c,0xc2,0xb7,0xff,0xf5,0x9f,0xe9,0x60,0xe2,0x9b, +0xdb,0x5d,0x62,0x63,0x59,0xea,0xcb,0xe5,0xe5,0xe6,0x63,0x84,0xe5,0x72,0x99, +0xf5,0x9d,0xc2,0x5d,0xd2,0x55,0x4f,0x1f,0xcf,0xcf,0xcf,0xe9,0x9c,0xce,0x55, +0xf9,0x3e,0x50,0xb2,0x22,0xa0,0xc0,0x21,0xba,0xe8,0x74,0x4d,0x68,0x52,0x55, +0x52,0xa2,0x08,0xb7,0x6f,0xdf,0x56,0x8b,0x4e,0x93,0xc9,0x44,0x6e,0x02,0x36, +0xc9,0x16,0x61,0x32,0x99,0xfc,0x4b,0x5d,0xd7,0xbf,0xb2,0x0b,0xa6,0xb6,0x44, +0xef,0x7d,0xe1,0x17,0x7f,0xf9,0x91,0xab,0xe4,0x75,0x5d,0xd3,0xed,0xdb,0xb7, +0xb3,0x1a,0x09,0xb1,0xf9,0xc2,0x1b,0xbf,0xf4,0xe8,0xbd,0xf7,0xde,0x7d,0x97, +0x88,0x5e,0xd8,0x04,0x93,0x57,0x41,0x55,0x55,0x7d,0x3b,0xc4,0x85,0xc8,0x50, +0x84,0xe3,0xe3,0xe3,0xbf,0x79,0xfc,0xf8,0xf1,0x75,0x55,0x04,0x99,0x4e,0xa7, +0x7f,0x75,0xe7,0xce,0x73,0x5e,0x3e,0x79,0x1d,0xeb,0x10,0xd6,0xb9,0x7b,0xf7, +0xde,0xe5,0x6c,0x36,0xff,0xc6,0xf9,0xf9,0xb3,0x3f,0x2f,0x63,0xf1,0xca,0x68, +0x75,0xbc,0x38,0xfe,0x86,0x5b,0xd0,0xc9,0xc8,0x22,0xf2,0x1c,0xaa,0xf1,0xad, +0x7f,0xfa,0xc7,0x97,0xbf,0xff,0xfe,0xf7,0xff,0xa0,0xae,0x57,0x3f,0xbd,0x03, +0x06,0x37,0x42,0x15,0x57,0x1f,0xde,0xbb,0xf7,0x13,0x7f,0xf7,0xc5,0xdf,0xfc, +0xad,0xff,0x82,0xd7,0xab,0xea,0x63,0x22,0x4a,0x8d,0x18,0x2b,0x22,0x82,0x26, +0xe4,0x9b,0xff,0xf0,0xf7,0x3f,0xff,0xf1,0x47,0x1f,0xfd,0x7e,0x2d,0xf5,0x9d, +0x35,0x59,0xdd,0x39,0x55,0xd5,0xe4,0xdd,0x17,0x9e,0x7f,0xe1,0x6f,0x7f,0xed, +0x57,0x7f,0xfd,0x7f,0xd1,0x75,0x16,0x91,0x13,0x22,0x3a,0xda,0x31,0x5f,0x57, +0x45,0x1f,0x51,0x5e,0xd8,0x7e,0x46,0x44,0x65,0x3b,0x60,0xaf,0x07,0xd5,0x15, +0x11,0x5d,0x8c,0xde,0x76,0x33,0xe8,0x19,0xe5,0xcf,0xdd,0xf6,0x73,0x2a,0xb0, +0x79,0x7a,0x5a,0x11,0xd1,0x92,0x36,0x36,0xb9,0xdd,0x5b,0xaa,0x89,0xe8,0xe9, +0x1a,0xf5,0x3e,0x0d,0x83,0xe4,0x92,0x88,0xce,0x2b,0x6a,0x94,0xe0,0x93,0xb6, +0xe0,0xa6,0xd2,0x8f,0x69,0x3d,0x65,0xaf,0xa9,0xc1,0x26,0x6f,0xfb,0xf3,0xf5, +0x21,0xa1,0x06,0x1b,0xe2,0x20,0xfd,0x3e,0x25,0xa2,0x39,0x35,0x81,0xd2,0x75, +0xa7,0x25,0x35,0x23,0xfa,0x82,0x36,0x63,0xf1,0xe6,0x44,0x34,0x23,0xb8,0x69, +0xfc,0xda,0x51,0x87,0x4b,0xef,0x0d,0xfe,0x1f,0x25,0x02,0xa9,0x06,0xfd,0x19, +0xc9,0xa6,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, +}; diff --git a/attic/table/play_png.h b/attic/table/play_png.h new file mode 100644 index 0000000..e76dd0b --- /dev/null +++ b/attic/table/play_png.h @@ -0,0 +1,540 @@ +static unsigned char play_png [] = { +0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44, +0x52,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x82,0x08,0x06,0x00,0x00,0x00,0x9e, +0xba,0x4c,0x59,0x00,0x00,0x00,0x04,0x73,0x42,0x49,0x54,0x08,0x08,0x08,0x08, +0x7c,0x08,0x64,0x88,0x00,0x00,0x00,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, +0x74,0x77,0x61,0x72,0x65,0x00,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63, +0x61,0x70,0x65,0x2e,0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x00,0x00,0x1f,0x07, +0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0x5d,0x79,0x9c,0x14,0xd5,0x9d,0xff,0xbe, +0x3a,0xba,0xbb,0xfa,0x1a,0x06,0x66,0x98,0x01,0x86,0x73,0x18,0x6e,0x10,0xe5, +0x46,0x8e,0x19,0x30,0x1a,0x24,0x11,0x5d,0xb3,0x2e,0xc9,0x1a,0x4d,0x62,0x44, +0xa2,0xc6,0xb8,0xc1,0xcd,0x6e,0x92,0xcd,0x1a,0x3f,0x2b,0x72,0x1f,0x8a,0x5c, +0x2a,0x87,0x20,0xc2,0x20,0x51,0x50,0x23,0x2a,0x31,0x86,0x78,0xc5,0x80,0x89, +0x37,0xa7,0x9a,0x21,0x20,0xcc,0xd1,0xdd,0xd3,0x73,0xf4,0xcc,0xf4,0x51,0x6f, +0xff,0xa8,0xee,0x9e,0xaa,0xae,0x57,0xd5,0xc7,0x0c,0xcc,0x00,0xfd,0xe5,0xd3, +0x43,0xd5,0xbb,0xab,0xbe,0xfd,0xfb,0xfd,0xde,0xfb,0xbd,0xa3,0x09,0xa5,0x14, +0x84,0x10,0x02,0x20,0x17,0x80,0x1b,0x40,0x10,0x40,0x08,0x40,0x1d,0xa5,0xb4, +0x05,0x59,0x74,0x6a,0x10,0x00,0x02,0x80,0x9e,0x00,0x6c,0x8c,0x78,0x3f,0x80, +0x1a,0x4a,0x69,0xe4,0x82,0xb6,0x2a,0x8b,0x94,0x41,0x00,0xe4,0x01,0xe8,0x6a, +0x92,0x46,0x06,0xe0,0x01,0x50,0x4b,0x29,0xa5,0x17,0xa4,0x55,0x59,0xa4,0x0c, +0x02,0xa0,0x1f,0x00,0x4b,0x0a,0x69,0x43,0x00,0xaa,0x29,0xa5,0x0d,0xe7,0xb5, +0x45,0x59,0xa4,0x05,0x0e,0xa9,0x91,0x07,0x00,0x22,0x80,0x9e,0x84,0x90,0x22, +0x42,0x88,0xf5,0x3c,0xb6,0x29,0x8b,0x34,0xc0,0x65,0x90,0xc7,0x0e,0xa0,0x2f, +0x21,0xa4,0x80,0x10,0xc2,0xb7,0x77,0x83,0xb2,0x48,0x0f,0x42,0x62,0xc0,0x90, +0x21,0x83,0x4b,0x7a,0x15,0xf5,0x5c,0x42,0x29,0x9a,0x9b,0x9a,0x9a,0x5e,0x3a, +0x7c,0xe8,0x83,0xdd,0xa1,0x50,0x88,0xd5,0x89,0xc9,0x01,0xe0,0x22,0x84,0x78, +0x01,0xf8,0xb2,0xf6,0xb1,0x63,0x40,0x00,0x0c,0x52,0x07,0x5c,0xf3,0x8d,0x19, +0x07,0x39,0x8e,0x2b,0x8c,0xdd,0x47,0x22,0x91,0x63,0x1e,0x8f,0x77,0xe1,0x87, +0x7f,0xff,0xe8,0x7d,0x93,0x72,0xb2,0xf6,0xb1,0x83,0xa0,0x53,0xa1,0x6a,0xf2, +0x00,0x80,0xe7,0xf9,0xc1,0xdd,0xbb,0xe7,0x6f,0x2b,0x9b,0x31,0x7d,0xcd,0x80, +0xe2,0xfe,0x45,0x06,0xe5,0xc4,0xec,0x63,0xef,0xac,0x7d,0xbc,0xb0,0x48,0xd9, +0x06,0x8a,0xa2,0x78,0x6d,0x71,0xf1,0x80,0x57,0xa6,0x4e,0xbb,0xfa,0x3f,0xba, +0x74,0xc9,0x91,0x0c,0x92,0x49,0x50,0xec,0x63,0x21,0x21,0x44,0xa7,0x9e,0xb3, +0x68,0x7f,0xa4,0xd5,0x89,0x21,0x84,0x58,0x25,0x49,0x9a,0x3f,0x76,0xdc,0x98, +0xd7,0x27,0x4c,0x1c,0x37,0x27,0xea,0xc1,0x61,0xc1,0x0d,0xa0,0x1f,0x21,0xa4, +0xab,0x49,0x9a,0x2c,0xda,0x01,0xa6,0x04,0x0a,0x82,0x80,0x69,0xd3,0xa6,0xe9, +0x33,0x71,0x5c,0xf7,0x9c,0x9c,0x9c,0xa5,0x33,0x66,0x96,0xee,0x1a,0x39,0x72, +0xf8,0x28,0x93,0xb2,0xf3,0xa0,0x10,0xe9,0x6a,0x7b,0x53,0xb3,0x60,0x21,0x29, +0x81,0xbf,0xfa,0xe5,0xff,0xe0,0xf1,0xb5,0x6b,0xd1,0xa7,0x4f,0x1f,0x5d,0x3c, +0xcf,0xf3,0xa3,0x0b,0x7b,0x14,0xee,0x2e,0x2d,0x9b,0xb6,0xb8,0x77,0xef,0xa2, +0x7c,0x83,0x62,0x44,0x00,0x3d,0xa2,0xf6,0x91,0xe5,0xae,0xcb,0xa2,0x0d,0x48, +0xaa,0x42,0x09,0x21,0x28,0x29,0x1e,0x84,0x0d,0xeb,0x9f,0xc0,0xaf,0x7e,0xf5, +0x2b,0xd8,0x6c,0xb6,0xc4,0x78,0x62,0xb1,0x58,0x6e,0x1a,0x32,0x74,0xf0,0xeb, +0x57,0x4f,0x99,0x3c,0xcf,0xe1,0xb0,0x1b,0x39,0x06,0x24,0x00,0x7d,0xb2,0xf6, +0xb1,0x7d,0x91,0xb2,0x0d,0xe4,0x79,0x1e,0xd3,0xa7,0x95,0x61,0xd7,0xce,0x72, +0xcc,0xfd,0xee,0x5c,0x5d,0x3c,0x21,0xc4,0xee,0x70,0xd8,0x17,0x4c,0x9a,0x3c, +0xf1,0x95,0xb1,0xe3,0xc6,0x5c,0x63,0x52,0x54,0xcc,0x3e,0x76,0xcb,0xda,0xc7, +0xb6,0x23,0x6d,0x4f,0x8c,0x24,0xd9,0xf1,0xc3,0xdb,0xef,0xc0,0xf6,0xed,0xcf, +0x60,0xcc,0xd8,0x31,0xfa,0x02,0x39,0xae,0x77,0xd7,0xae,0xb9,0x6b,0x67,0xcc, +0x2c,0xdd,0x3a,0x64,0xe8,0xe0,0x12,0x93,0x7a,0xbb,0x01,0xe8,0x9f,0xb5,0x8f, +0x6d,0x43,0x26,0xae,0x34,0x00,0x40,0xf7,0xfc,0x02,0x2c,0xfc,0xbf,0x45,0x58, +0xb1,0x62,0x25,0xba,0x77,0xef,0xae,0x8b,0x17,0x04,0x61,0x52,0xef,0xde,0x45, +0xfb,0xa6,0x97,0x4e,0xfd,0xdf,0x82,0x82,0xee,0x39,0x06,0xc5,0x08,0x50,0xec, +0x63,0x9f,0xac,0x7d,0xcc,0x0c,0x19,0x13,0x08,0x28,0xf6,0x71,0xc4,0xf0,0x91, +0xd8,0xb2,0x79,0x2b,0xee,0xbf,0xff,0x7e,0x08,0x82,0x90,0x18,0xcf,0x5b,0xad, +0xd6,0x7f,0x1f,0x75,0xc5,0xc8,0x03,0x93,0xaf,0x9e,0x78,0xab,0xc5,0x62,0x31, +0xf2,0x9d,0xda,0x90,0xb5,0x8f,0x19,0x21,0x2d,0x02,0x29,0xa5,0x68,0x6e,0x69, +0xd2,0x85,0x0b,0x82,0x88,0x59,0xdf,0x9c,0x8d,0xf2,0x5d,0xbb,0xf1,0xad,0x6f, +0x7f,0x4b,0x17,0x4f,0x08,0xc9,0x71,0x3a,0x9d,0xbf,0x99,0x3a,0x6d,0xca,0xbe, +0x2b,0xaf,0x1a,0x3d,0xd9,0xa4,0x0a,0x37,0x14,0xb5,0x9a,0xb5,0x8f,0x29,0x22, +0x6d,0x02,0xfd,0x75,0xb5,0xf0,0xd6,0xd6,0x20,0x1c,0x0e,0xe9,0xe2,0x9d,0x4e, +0x17,0x7e,0x7a,0xcf,0xcf,0xb0,0x69,0xd3,0x66,0x0c,0x1b,0x36,0x54,0x17,0xcf, +0xf3,0x5c,0x49,0x7e,0x7e,0xde,0x96,0xb2,0x19,0xd3,0xd7,0x0d,0x1c,0x58,0xac, +0x1f,0x97,0x28,0x20,0x68,0xb5,0x8f,0xee,0x74,0xda,0x77,0x39,0x22,0x23,0x15, +0x1a,0x0a,0x85,0xe0,0xad,0xf5,0xc0,0x5f,0xe7,0x83,0x4c,0x65,0x5d,0x7c,0x51, +0xaf,0xde,0x58,0xb1,0x7c,0x35,0x16,0x2e,0x5c,0x88,0x9c,0x1c,0xbd,0xf9,0x13, +0x45,0x71,0x66,0xff,0x01,0xfd,0x7e,0x3f,0x75,0xda,0x94,0x07,0xba,0x76,0xed, +0xea,0x30,0xa8,0x46,0x00,0x50,0x98,0xb5,0x8f,0xe6,0xc8,0xd8,0x06,0x2a,0xea, +0xb4,0x19,0x1e,0x6f,0x35,0x1a,0x1a,0xf5,0x93,0x10,0x1c,0xc7,0x61,0xec,0x98, +0xf1,0x78,0x66,0xfb,0x0e,0xcc,0xbb,0xeb,0x2e,0x24,0x6a,0x44,0x42,0x88,0x45, +0x92,0x6c,0x77,0x5e,0x35,0x66,0xf4,0xeb,0x13,0x27,0x8e,0xff,0x17,0x13,0x95, +0x19,0xb3,0x8f,0x3d,0xb2,0xf6,0x51,0x8f,0x36,0x75,0x62,0x00,0x40,0x96,0x65, +0x34,0x06,0xea,0xe1,0xf1,0x56,0xa3,0xa5,0x45,0xbf,0x88,0xcd,0x62,0xb1,0xe2, +0xe6,0x9b,0xbe,0x83,0x5d,0xbb,0xca,0x51,0x56,0x56,0xa6,0x6f,0x00,0xc7,0xe5, +0xb9,0x73,0xdc,0x8b,0x66,0xcc,0x2c,0x7d,0x6e,0xd4,0xa8,0x11,0x57,0x9a,0x54, +0xe5,0x82,0xa2,0x56,0xf3,0x08,0x21,0x6d,0x6e,0xf7,0xa5,0x82,0x76,0x7b,0x11, +0xe1,0x48,0x18,0xb5,0x75,0x5e,0x78,0x6b,0x3d,0x88,0x44,0xc2,0xba,0xf8,0x2e, +0x39,0xb9,0xf8,0xaf,0x5f,0xfc,0x12,0xeb,0xd7,0xaf,0x47,0xbf,0x7e,0xfd,0x74, +0xf1,0x3c,0xcf,0x8f,0x2c,0x28,0x2c,0xd8,0x59,0x5a,0x36,0x6d,0x79,0xdf,0xbe, +0x7d,0x0a,0x0c,0xaa,0x21,0x50,0x16,0x60,0xf5,0xcb,0xda,0x47,0x05,0xed,0xfe, +0x4d,0x0e,0x85,0x82,0xf0,0xf8,0x6a,0x50,0x57,0xef,0x47,0xe2,0x24,0x3d,0x21, +0x04,0x03,0xfa,0x0f,0xc4,0xba,0xb5,0x1b,0xf0,0x9b,0xdf,0xfc,0x06,0x92,0x24, +0x25,0xc6,0x13,0x8b,0xc5,0xf2,0xed,0x41,0x83,0x4b,0x5e,0x9b,0x32,0x75,0xf2, +0x4f,0x9c,0x4e,0xa7,0xd1,0xdc,0xa2,0xda,0x3e,0x1a,0x4d,0x6d,0x5d,0x16,0x38, +0x2f,0xaa,0x88,0x52,0x8a,0xa6,0xe6,0x00,0x6a,0xbc,0xd5,0x08,0x34,0x35,0xea, +0xe2,0x79,0x9e,0xc7,0x94,0xab,0xa7,0x61,0xd7,0xce,0x72,0xdc,0x7a,0xeb,0xad, +0xba,0x78,0x42,0x88,0x64,0xb7,0xdb,0xef,0x9f,0x38,0x69,0xfc,0xfe,0x71,0xe3, +0xc7,0x5c,0x67,0x52,0x95,0x0d,0x40,0xef,0xa8,0x7d,0x14,0xdb,0xef,0x09,0x2e, +0x1e,0x9c,0x57,0x5b,0x22,0xcb,0x11,0xd4,0x37,0xd4,0xc1,0xeb,0xab,0x41,0x30, +0xa8,0xb7,0x8f,0x36,0x9b,0x84,0xef,0xdf,0x7a,0x3b,0x9e,0x79,0x66,0x07,0x26, +0x8c,0x1f,0xaf,0x6f,0x1c,0xc7,0xf5,0xca,0xcd,0xcd,0x7d,0x6c,0xc6,0xcc,0xd2, +0xed,0x43,0x87,0x0d,0x19,0x6c,0x52,0x95,0x0b,0x8a,0x5a,0xbd,0xec,0xec,0xe3, +0x05,0x79,0xd8,0x50,0x38,0x84,0xda,0x3a,0x1f,0x6a,0xfd,0x5e,0x44,0x64,0xfd, +0xfa,0xa8,0xfc,0xbc,0xee,0x78,0xe8,0xa1,0x87,0xb1,0x6a,0xf5,0x6a,0x14,0x16, +0xf6,0xd0,0xc5,0x0b,0x82,0x30,0xbe,0xa8,0xa8,0xd7,0x0b,0xd3,0x4b,0xa7,0xfe, +0xb6,0x47,0x8f,0xc2,0x5c,0x83,0x6a,0xd4,0xf6,0xd1,0xc8,0x75,0x77,0xc9,0xe1, +0x82,0x7d,0x5b,0x29,0xa5,0x68,0x09,0xb6,0xc0,0xeb,0xab,0x41,0x7d,0x43,0x1d, +0xd3,0x3e,0x0e,0x1b,0x32,0x1c,0x9b,0x9e,0xda,0x8c,0x05,0x0f,0x3c,0x00,0x51, +0x14,0x13,0xe3,0x79,0xab,0xd5,0xfa,0xdd,0x11,0x23,0x87,0xbf,0x3e,0xf9,0xea, +0x89,0xb7,0x99,0xb8,0xe5,0x04,0x00,0x05,0x84,0x90,0xbe,0x97,0x83,0x7d,0xbc, +0xe0,0xea,0x46,0x96,0x65,0x04,0x9a,0x1a,0xe1,0xf1,0x55,0xa3,0xa9,0x39,0xa0, +0x8b,0x17,0x04,0x01,0xd7,0x5e,0x73,0x1d,0xca,0x77,0xed,0xc6,0x8d,0x37,0xdd, +0xa8,0x8b,0x27,0x84,0xb8,0x9d,0x4e,0xe7,0xaf,0xa7,0x4d,0x9f,0xf2,0xd2,0x55, +0x63,0xae,0x9c,0x62,0x52,0x95,0x15,0x8a,0x7d,0xec,0x79,0x29,0xdb,0xc7,0x0e, +0xb3,0x17,0x91,0x48,0x04,0x75,0xf5,0x7e,0x78,0x7d,0x35,0x08,0x31,0xdc,0x72, +0x0e,0x87,0x13,0x3f,0xb9,0xeb,0x1e,0x6c,0xd9,0xb2,0x15,0x23,0x47,0x8e,0xd0, +0xc5,0x73,0x1c,0x57,0x9c,0x97,0xd7,0x6d,0x53,0xd9,0x8c,0xe9,0x1b,0x4a,0x4a, +0x06,0xf6,0x35,0xa9,0xca,0x89,0x4b,0xd8,0x3e,0x76,0xf8,0x03,0x85,0xc2,0x21, +0xf8,0x6a,0x3d,0xf0,0xd7,0xd5,0x42,0x96,0xf5,0x6e,0xb9,0x9e,0x3d,0x7a,0x61, +0xe9,0x92,0x15,0x58,0xbc,0x78,0x09,0x72,0x73,0xf5,0x7b,0x70,0x44,0x51,0x2c, +0xeb,0xd7,0xbf,0xef,0xef,0xa7,0x4d,0x9f,0xf2,0x8b,0x6e,0xdd,0xba,0x39,0x0d, +0xaa,0x89,0xd9,0xc7,0xfe,0x97,0x9a,0x7d,0xec,0x70,0x02,0x81,0xd6,0x59,0x0e, +0x8f,0xaf,0x1a,0x8d,0x81,0x7a,0x5d,0x3c,0xc7,0x71,0xb8,0x72,0xf4,0x55,0xd8, +0xb6,0x6d,0x3b,0xee,0xbe,0xfb,0x6e,0x96,0x5b,0x4e,0xb4,0xd9,0x6c,0x77,0x5c, +0x79,0xd5,0xe8,0xd7,0x26,0x4e,0x9a,0xf0,0x1d,0x9e,0xe7,0x8d,0x9e,0x8b,0x47, +0xab,0x7d,0xb4,0xb7,0xff,0x93,0x5c,0x78,0x74,0x0a,0x02,0x63,0x90,0x65,0x19, +0x0d,0x8d,0x0d,0x51,0xb7,0x5c,0xb3,0x2e,0xde,0x22,0x5a,0x30,0xe7,0x86,0x9b, +0x50,0x5e,0xfe,0x1c,0xae,0xf9,0x86,0x7e,0xd5,0x06,0xc7,0x91,0x3c,0xb7,0xdb, +0xb5,0xb0,0xb4,0x6c,0xda,0x9e,0x2b,0xae,0x18,0xa9,0x5f,0x2e,0xd0,0x0a,0x2b, +0x80,0xa2,0x4b,0xc1,0x3e,0x76,0x2a,0x02,0x63,0x50,0xdc,0x72,0x3e,0xf8,0x6a, +0x3d,0x08,0x33,0xdc,0x72,0x39,0xee,0x1c,0xfc,0xe7,0x82,0xff,0xc2,0x86,0x0d, +0x1b,0x51,0x5c,0x5c,0xac,0x8b,0xe7,0x79,0x7e,0x78,0x41,0x61,0xc1,0xb3,0xa5, +0x65,0xd3,0x57,0xf6,0xeb,0xd7,0x57,0x3f,0x2e,0x69,0x45,0xcc,0x3e,0xe6,0x5f, +0xac,0xf6,0xb1,0x53,0x37,0x3a,0x18,0x0a,0xc2,0xeb,0xf3,0x30,0xdd,0x72,0x00, +0xd0,0xbf,0xdf,0x00,0x3c,0xbe,0x66,0x2d,0x1e,0xfc,0xed,0x83,0x70,0x38,0xf4, +0x1a,0xd1,0x62,0x11,0x67,0x97,0x0c,0x1a,0xb8,0x7f,0xca,0xd4,0xab,0xef,0x75, +0xb9,0x5d,0x46,0x53,0x52,0xb1,0xed,0xe5,0x17,0xa5,0x7d,0xec,0xd4,0x04,0x02, +0x00,0xa5,0x32,0x9a,0x9a,0x03,0xf0,0x18,0xb8,0xe5,0x38,0x8e,0xc7,0xe4,0x89, +0x53,0xf0,0xec,0xb3,0xe5,0xb8,0xfd,0xf6,0xdb,0x75,0xf1,0x8a,0x5b,0x4e,0xfa, +0xe9,0x84,0x09,0xe3,0xf6,0x8f,0x9f,0x30,0xf6,0x7a,0x93,0xaa,0x2e,0x4a,0xfb, +0x48,0x04,0x41,0xd0,0xec,0x4e,0x9a,0x31,0xb3,0xf4,0x58,0xec,0xda,0x66,0xb3, +0x61,0xdf,0xde,0x97,0xe2,0x71,0xb2,0x2c,0xa3,0xda,0x53,0x79,0x01,0x9b,0xa7, +0x87,0x28,0x88,0x70,0x38,0x5c,0xb0,0x5a,0xd8,0x7e,0x6e,0x8f,0xb7,0x06,0x6b, +0x1e,0x5f,0x83,0xf7,0xde,0x7d,0x97,0x19,0x1f,0x09,0x47,0x0e,0x57,0x56,0x56, +0x2e,0x3c,0x72,0xe4,0xd8,0xe7,0x49,0xaa,0x6a,0x8c,0x44,0x22,0xd5,0x94,0xd2, +0x60,0x1b,0x9b,0x7c,0x5e,0x41,0x6c,0x36,0x9b,0x86,0xc0,0x69,0xd3,0xa7,0x74, +0x6a,0x02,0x01,0x80,0x80,0xc0,0x62,0xb1,0xc2,0xe5,0x74,0x83,0xe7,0xf5,0x0e, +0x19,0x4a,0x29,0x8e,0x9f,0x38,0x8a,0x25,0x4b,0x97,0xe0,0xcc,0xe9,0x33,0xac, +0x78,0x39,0x14,0x0a,0xed,0xf9,0xea,0xcb,0x7f,0xac,0x3e,0x77,0xae,0xd2,0x63, +0x52,0x15,0x05,0x50,0xdb,0xd2,0xd2,0xe2,0xa1,0x94,0xb1,0xf4,0xa0,0x13,0x80, +0xb8,0x5c,0x2e,0x0d,0x81,0x93,0x26,0x4f,0xe8,0xf4,0x04,0xc6,0xc0,0x71,0x1c, +0x6c,0x56,0x09,0x4e,0x87,0x4b,0x37,0xb4,0x00,0x94,0xce,0xd0,0xc1,0x83,0x6f, +0x62,0xf5,0xea,0xd5,0x08,0x06,0xf5,0x82,0x44,0x29,0xad,0x6f,0x6a,0x6a,0x5e, +0xfb,0xf9,0x67,0x47,0xb6,0x07,0x83,0x41,0x7d,0x6f,0xa9,0x15,0x11,0x00,0x9e, +0xfa,0xfa,0xfa,0xda,0xf6,0x6b,0x7d,0xfb,0x80,0xe4,0xe6,0xe6,0x6a,0x08,0x1c, +0x37,0x7e,0xcc,0x45,0x43,0x60,0x0c,0x3c,0xcf,0xc3,0x21,0xb9,0x74,0xf3,0x8b, +0x31,0x04,0x02,0x8d,0x78,0xe6,0xd9,0x67,0xf0,0xbb,0x3d,0x7b,0x98,0xf1,0xb2, +0x2c,0xff,0xa3,0xbe,0xbe,0xe1,0x91,0x63,0x47,0x8f,0x1f,0x4c,0x52,0x55,0x90, +0x52,0x5a,0x55,0x5b,0x5b,0xab,0xf7,0x01,0x76,0x10,0x48,0x7e,0x7e,0xbe,0x86, +0xc0,0x2b,0xaf,0xba,0xe2,0xa2,0x23,0x30,0x06,0x51,0x10,0xe1,0x72,0xba,0x21, +0x8a,0xec,0xed,0x19,0xe7,0x2a,0xcf,0x62,0xe5,0xaa,0x95,0xf8,0xe8,0xc3,0x0f, +0x99,0xf1,0x91,0x48,0xe4,0xcf,0x35,0x35,0x9e,0x47,0xbe,0x3e,0x73,0xf6,0x2b, +0x56,0xbc,0xaa,0x27,0xdc,0x48,0x29,0xad,0xae,0xa9,0xa9,0xe9,0x70,0xfb,0x48, +0x7a,0xf6,0xec,0xa9,0x21,0x70,0xc4,0xc8,0x61,0x17,0x2d,0x81,0x80,0x32,0xab, +0x61,0xb5,0xd8,0xe0,0x72,0xba,0xc1,0x71,0xfa,0x4e,0x36,0xa5,0x14,0x1f,0x7f, +0xf2,0x11,0x96,0x2e,0x5d,0x82,0x9a,0x9a,0x1a,0x56,0x7c,0x38,0x1c,0x0e,0x3f, +0x73,0xe6,0xf4,0xd7,0x8f,0xd7,0xd7,0x37,0xe8,0xdd,0x42,0xaa,0xa4,0x00,0xfc, +0xa2,0x28,0x7a,0x2a,0x2a,0x2a,0x3a,0xec,0x20,0x24,0xd2,0xa7,0x4f,0x1f,0x0d, +0x81,0x43,0x86,0x0e,0xca,0x80,0x40,0x02,0xa2,0xfc,0xd7,0x69,0xc0,0x11,0x0e, +0x36,0x9b,0x1d,0x4e,0x07,0xdb,0x3d,0x1a,0x0a,0x05,0xf1,0xda,0xeb,0xaf,0x62, +0xdd,0xba,0x75,0x88,0x44,0xf4,0xef,0x9f,0x52,0xea,0x6d,0x69,0x69,0x59,0x5d, +0xf1,0x8f,0x53,0xcf,0xc9,0xac,0xb5,0x93,0xad,0x88,0x50,0x4a,0x3d,0xa7,0x4f, +0x9f,0xf6,0x77,0xc4,0x41,0x0f,0xa4,0xb8,0xb8,0x58,0x43,0x60,0xf1,0xc0,0xfe, +0xa6,0x04,0xd6,0x78,0xab,0xda,0xa3,0xda,0x76,0x28,0x23,0x06,0xf3,0x77,0x26, +0xf0,0x02,0x1c,0x76,0x27,0xac,0x56,0xf6,0x38,0xbe,0xbe,0xbe,0x0e,0x9b,0x36, +0x3f,0x89,0xfd,0xfb,0x5f,0x65,0xc6,0xcb,0xb2,0x7c,0x24,0x10,0x68,0x5a,0x78, +0xee,0x6c,0xe5,0xa1,0x24,0x0d,0x09,0x12,0x42,0xaa,0x4f,0x9e,0x3c,0xa9,0x1f, +0xac,0x9e,0x47,0x90,0xc1,0x83,0x07,0x6b,0x08,0xec,0xdb,0xaf,0x77,0x9a,0x04, +0x12,0xd5,0x5f,0x5d,0x70,0xc7,0x42,0xc5,0xad,0x28,0x8a,0x70,0x3a,0xdc,0xba, +0xfd,0x1b,0x31,0x9c,0xfa,0x67,0x05,0x96,0x2f,0x5f,0x8a,0x63,0xc7,0x8e,0x33, +0xe3,0x23,0x91,0xc8,0xab,0x75,0xfe,0xfa,0x25,0x7e,0x7f,0xdd,0xd7,0x49,0x6a, +0x6d,0x94,0x65,0xb9,0xfa,0xc4,0x89,0x13,0x17,0xc4,0x3e,0x92,0x11,0x23,0x46, +0x68,0x08,0xec,0xd9,0xab,0xb0,0x95,0x40,0xc9,0x86,0x7d,0x2f,0x68,0x09,0xf4, +0xf8,0xaa,0x33,0xad,0x2a,0xa3,0xd4,0xe9,0xeb,0x24,0xe3,0x1c,0x84,0x10,0x58, +0x2c,0x36,0xb8,0x0c,0x86,0x1d,0xb2,0x2c,0xe3,0xd0,0x07,0x7f,0xc5,0xb2,0xa5, +0xcb,0x50,0x5f,0x5f,0xa7,0x2f,0x99,0xd2,0xe6,0x48,0x24,0xb2,0xd9,0xeb,0xad, +0x7d,0x22,0x14,0x0c,0xe9,0x37,0x89,0x20,0xde,0xd1,0xa1,0x94,0x52,0x3f,0xa5, +0xd4,0x73,0xe4,0xc8,0x91,0xf3,0x6a,0x1f,0xc9,0xe8,0xd1,0xa3,0x35,0x04,0x76, +0x2f,0xc8,0x4b,0x83,0xc0,0x84,0x69,0x1d,0x66,0x0d,0xed,0xd2,0xce,0xf4,0xc1, +0xe0,0x31,0x16,0xc4,0x73,0x8a,0x7d,0xb4,0x4b,0x6c,0x8f,0x59,0x4b,0xb0,0x05, +0xfb,0xf6,0xbd,0x80,0x4d,0x9b,0x36,0xb1,0x8b,0xa6,0xf4,0x5c,0x38,0x14,0x5e, +0xee,0xf5,0xd6,0xbe,0xc4,0x4c,0xd0,0x8a,0x08,0x21,0xc4,0xcb,0xf3,0x7c,0xed, +0xe1,0xc3,0x87,0xcf,0x8b,0x7d,0xe4,0x04,0x41,0x80,0xfa,0x63,0x0a,0xa2,0x74, +0x57,0x08,0x08,0x08,0x21,0x20,0x04,0x9a,0x0f,0x74,0x1f,0x66,0xa0,0xee,0x93, +0xee,0xbf,0x54,0xca,0x54,0x1a,0xc5,0x08,0x22,0x80,0x4c,0x65,0x04,0x9a,0x1a, +0x50,0xeb,0xf7,0x31,0x07,0xf8,0x56,0x8b,0x15,0xb7,0xfc,0xeb,0x5c,0xec,0xda, +0x55,0xce,0x3c,0xe4,0x81,0x10,0x52,0x28,0x5a,0xc4,0xe5,0xdd,0x0b,0xf2,0x76, +0x75,0xe9,0xe2,0x1e,0x91,0xf8,0x0e,0x55,0x1f,0x9e,0xe7,0xf9,0x7c,0x00,0x7d, +0xc7,0x8c,0x19,0x63,0xb4,0x07,0xa4,0x4d,0x20,0x93,0x26,0x4d,0xd2,0x48,0xa0, +0xcb,0xed,0x88,0x4b,0xa0,0x24,0xd9,0xb0,0x57,0x2d,0x81,0x54,0x86,0xd7,0x17, +0xeb,0x7a,0xeb,0x45,0x2b,0xa9,0xb0,0x5d,0x28,0x69,0x34,0xf9,0xae,0xb3,0xa2, +0x2c,0xa2,0x08,0x87,0xdd,0x65,0xe8,0x96,0xfb,0xe2,0xcb,0x93,0x58,0xb2,0x74, +0x31,0x4e,0x55,0x9c,0x62,0xc5,0x53,0x4a,0xe9,0xf3,0x2d,0x2d,0xc1,0x95,0xa1, +0x60,0x58,0x3f,0x2e,0xd1,0x22,0xc0,0x71,0x5c,0xf5,0x3b,0xef,0xbc,0xd3,0x6e, +0x07,0xe9,0x92,0xa9,0x53,0xa7,0x6a,0x08,0x94,0xec,0x56,0x53,0x02,0x7d,0x3e, +0x86,0xeb,0xb0,0x8d,0xba,0x33,0x53,0x5e,0xd3,0xd3,0x49,0x26,0x3a,0x15,0xd1, +0xf1,0xa3,0xd5,0x06,0xbb,0xe4,0x60,0xda,0xc7,0x48,0x24,0x82,0xb7,0xdf,0x7d, +0x0b,0xab,0x56,0xae,0x44,0x53,0x93,0xde,0xfc,0x51,0x4a,0x1b,0x29,0xa5,0xeb, +0x5a,0x9a,0x43,0x4f,0x53,0x4a,0xf5,0x8b,0x7c,0x54,0x20,0x84,0xf8,0x79,0x9e, +0xaf,0x79,0xf3,0xcd,0x37,0xdb,0x6c,0x1f,0xc9,0x8c,0x19,0x33,0x34,0x04,0x0a, +0x22,0xa7,0x22,0x50,0xc2,0xde,0x17,0x5e,0x8c,0xc7,0xc9,0x54,0x86,0xaf,0x36, +0x46,0x20,0xfb,0xb5,0xa7,0x4c,0x46,0xbb,0x74,0x5b,0x29,0xf3,0x32,0x8d,0x5c, +0xba,0x18,0x9e,0xe3,0x61,0xb3,0xda,0x75,0xa7,0x71,0xc4,0xd0,0xd4,0xdc,0x84, +0xf2,0xf2,0x9d,0xd8,0xb9,0x73,0x27,0xbb,0x04,0x4a,0x2b,0x28,0xc5,0xe2,0x48, +0x58,0xfe,0xa3,0x69,0x1b,0x14,0xe7,0xb8,0x27,0x3f,0x3f,0xbf,0x76,0xf7,0xee, +0xdd,0x19,0xdb,0x47,0x72,0xed,0xb5,0xd7,0x0e,0xd2,0x86,0xc8,0x86,0x04,0x52, +0x2a,0xc3,0x5b,0xeb,0x35,0x7e,0xd5,0x44,0x77,0x61,0x5e,0x79,0x1a,0x0d,0x4d, +0x86,0xb4,0xa5,0x31,0x89,0x9a,0x15,0x05,0x11,0x92,0xcd,0xae,0x5b,0x9f,0x1a, +0x43,0x75,0x4d,0x15,0x56,0x3f,0xba,0x0a,0x87,0x0f,0x1d,0x66,0x97,0x41,0xf1, +0x36,0x80,0x45,0xa0,0xe4,0x64,0x92,0xc6,0x84,0x28,0xa5,0xd5,0x07,0x0e,0x1c, +0xc8,0xe8,0xa0,0x40,0x32,0x7b,0xf6,0x6c,0x0d,0x81,0xa1,0x70,0x8b,0x29,0x81, +0xbe,0x5a,0x2f,0xcc,0xdc,0x2e,0x19,0x2b,0xce,0x76,0xd1,0xa3,0xa9,0xd3,0x68, +0x26,0x85,0xf1,0x48,0x42,0x60,0x11,0x2d,0xb0,0x4b,0x0e,0x43,0xb7,0xdc,0xe7, +0x47,0x3f,0xc3,0xe2,0x45,0x8b,0x50,0x55,0xc5,0x74,0x70,0x44,0x00,0xec,0xe0, +0x08,0xbf,0x86,0x10,0x4e,0x3f,0x2e,0xd1,0x22,0x40,0x29,0xad,0xde,0xbf,0x7f, +0x7f,0x5a,0xf6,0x91,0xcc,0x99,0x33,0x47,0x43,0x60,0x53,0x73,0xa3,0x39,0x81, +0x7e,0x9f,0x92,0xd1,0xb8,0xc8,0x94,0xc9,0x68,0xef,0x3e,0x4d,0xca,0xf4,0x51, +0xf3,0xd4,0x89,0x31,0x1c,0xe1,0x60,0xb5,0x5a,0x20,0xd9,0xd8,0x1d,0xc9,0x70, +0x38,0x8c,0x37,0xfe,0x78,0x00,0x8f,0x3d,0xf6,0x18,0xc2,0x61,0xe6,0xac,0x54, +0x2d,0x21,0x64,0xb5,0x45,0xb4,0xed,0x26,0x84,0x24,0xb3,0x7b,0x7e,0x9e,0xe7, +0x6b,0x9e,0x7f,0xfe,0xf9,0x94,0xec,0x23,0xb9,0xf9,0xe6,0x9b,0x35,0x04,0xd6, +0x37,0xf8,0x4d,0x08,0xa4,0xa8,0xf5,0x7b,0x63,0x59,0x0d,0x19,0x30,0x27,0xa6, +0x1d,0xd8,0x4d,0x8f,0xa9,0xf4,0x62,0x4c,0xc8,0xe5,0x78,0x1e,0x92,0x55,0x82, +0xc5,0x60,0x35,0x40,0x63,0x63,0x03,0xb6,0x3c,0xbd,0x05,0x2f,0xbd,0xf8,0x22, +0x33,0x1e,0xc0,0x71,0x9e,0x17,0x1e,0x96,0x6c,0x76,0xb3,0xb3,0x57,0x41,0x29, +0x95,0xa3,0xe3,0x47,0x5f,0x32,0xfb,0xc8,0x89,0xa2,0x08,0xf5,0x27,0x29,0xe2, +0x03,0x3f,0xe3,0x11,0x1d,0x73,0xf0,0xa5,0xca,0x67,0x18,0xc5,0x4e,0xc6,0x1c, +0x5e,0x9a,0x7d,0x4c,0x13,0xea,0xc6,0x9e,0xac,0xa1,0x2b,0x3b,0x9f,0x1c,0x89, +0xa0,0x31,0xd0,0x80,0xfa,0x86,0x3a,0xe6,0x6a,0x39,0x87,0xc3,0x89,0x7b,0xef, +0xfe,0x29,0xb6,0x6c,0xde,0x8a,0x61,0xc3,0x87,0xb1,0xde,0xde,0xa0,0x48,0x24, +0xbc,0xad,0x31,0x50,0xbf,0x26,0x1c,0x09,0x15,0x25,0xbe,0xfb,0xd8,0xc7,0x62, +0xb1,0x70,0xa2,0x28,0xe6,0x71,0x1c,0xd7,0x6f,0xee,0xdc,0xb9,0x46,0x8b,0x95, +0x15,0x3a,0x6e,0xbd,0xf5,0x56,0x8d,0x04,0x56,0x55,0x9f,0x33,0x95,0x40,0x7f, +0x9d,0x2f,0x96,0x55,0x55,0x0a,0xa3,0x60,0x76,0x75,0x66,0x6d,0x39,0xcf,0xd0, +0x7f,0x91,0x75,0x21,0x26,0xf6,0x54,0x7d,0x47,0xa9,0x0c,0x59,0x96,0x21,0x8a, +0x56,0xb8,0x9d,0x6e,0x43,0xb7,0xdc,0x87,0x1f,0xfd,0x1d,0x8b,0x17,0x2f,0x82, +0xdf,0xef,0x67,0x35,0x28,0xc8,0x71,0xdc,0x66,0xb7,0x2b,0x67,0x83,0x28,0x5a, +0x98,0x6e,0xb9,0x18,0x08,0x21,0x4d,0xb2,0x2c,0x57,0xed,0xd8,0xb1,0x43,0x67, +0x1f,0xc9,0x0f,0x7e,0xf0,0x03,0x0d,0x81,0x5f,0x9f,0x3d,0x6d,0x4e,0x60,0xc2, +0xaa,0x02,0x62,0x72,0x97,0x2c,0xaa,0x6d,0xaa,0xd6,0x5c,0x8f,0x32,0x63,0xcd, +0xf5,0xa6,0xfe,0x8e,0x52,0x44,0xe4,0x08,0x22,0x91,0xe8,0x47,0x96,0x21,0x47, +0xc2,0xa0,0xd1,0x8e,0x0e,0x05,0x20,0x08,0x3c,0xba,0x76,0xc9,0x83,0x5d,0x62, +0xdb,0xc7,0x50,0x28,0x88,0x97,0x7f,0xff,0x32,0x36,0x6e,0xdc,0xc0,0x5c,0x1a, +0x09,0xa0,0x4a,0x14,0xc4,0xe5,0xdd,0xba,0xe5,0xbf,0x48,0x08,0x49,0x66,0x1c, +0xfc,0x84,0x10,0xcf,0x96,0x2d,0x5b,0xe2,0xe2,0x4f,0xee,0xbc,0xf3,0x4e,0x0d, +0x81,0x15,0xa7,0xbe,0x32,0x25,0xb0,0x2e,0x4e,0x60,0x72,0x46,0x88,0x51,0x44, +0x87,0x82,0xea,0xaf,0xa8,0xb2,0x19,0x35,0x22,0x47,0x20,0x47,0x22,0x08,0xcb, +0x32,0x64,0x39,0x02,0x4a,0xe5,0x78,0x22,0x4d,0x2e,0x4d,0x98,0xf2,0xd7,0x66, +0x91,0x90,0x9b,0xdb,0x0d,0x16,0x83,0xd5,0x00,0x75,0x75,0x7e,0x6c,0x78,0x62, +0x3d,0xde,0xf8,0xc3,0x1b,0xcc,0x78,0x42,0xc8,0x47,0x92,0x64,0x7f,0x38,0xaf, +0x5b,0xfe,0xc7,0xcc,0x56,0xb7,0x92,0x2f,0x13,0x42,0xbc,0x45,0x45,0x45,0xbe, +0x07,0x1f,0x7c,0x90,0xa6,0xe7,0x0b,0x55,0xaa,0x42,0xa2,0x01,0x6c,0xb5,0x5b, +0x46,0x3e,0x4b,0x7d,0x76,0xb6,0x0d,0x24,0x6d,0xfc,0x18,0xd9,0xc2,0xd6,0xea, +0x65,0x99,0x22,0x1c,0x0e,0x23,0x18,0x0c,0xa2,0xb9,0xb9,0x09,0x8d,0x81,0x46, +0x34,0x34,0xd6,0x23,0xd0,0x14,0x40,0x4b,0x4b,0x33,0x42,0xe1,0x10,0xe4,0xe8, +0x26,0x54,0x42,0xb8,0xd4,0xea,0x05,0x41,0x4b,0xb0,0x19,0x67,0x2b,0xcf,0xc0, +0xeb,0xab,0x61,0x6e,0x62,0x75,0x47,0x57,0x93,0x6f,0xdc,0xf8,0x04,0xfa,0x0f, +0xe8,0xcf,0x22,0xe8,0x8a,0x40,0xa0,0x71,0xf7,0xe9,0x33,0xa7,0x96,0x34,0x06, +0x1a,0xf2,0x13,0x79,0x51,0xd9,0x48,0x4e,0x10,0x84,0xbc,0xca,0xca,0xca,0x02, +0x00,0x20,0xf7,0xdd,0x77,0x9f,0x46,0x02,0x8f,0x1e,0xfb,0xdc,0x5c,0x02,0x1b, +0xfc,0xc9,0x25,0x8b,0x24,0xc6,0x5e,0x58,0x09,0x94,0x65,0x59,0xb1,0x53,0x51, +0x5b,0x25,0xcb,0x14,0x54,0x96,0x55,0x87,0x12,0xa9,0x65,0x47,0x7f,0xa1,0xbd, +0x4d,0x0c,0x4b,0xb8,0x57,0xa9,0xd3,0xd8,0x3d,0x47,0x38,0xe4,0xb8,0x73,0x0d, +0x57,0xcb,0xc9,0xb2,0x8c,0xbf,0xbc,0xff,0x1e,0x96,0x2e,0x5b,0x82,0xa6,0x00, +0xd3,0xfc,0x05,0x44,0x51,0xdc,0xd0,0xab,0x67,0xef,0xcd,0x16,0x8b,0xc5,0xd0, +0x2d,0x47,0x08,0xa9,0x11,0x52,0x93,0x3a,0x55,0x26,0x03,0xd5,0x99,0x11,0x59, +0xf1,0x7c,0xa9,0xe7,0xa1,0x94,0x82,0x52,0x0a,0x99,0xca,0xa0,0x32,0x8d,0x13, +0x45,0x65,0xaa,0x3b,0x35,0x8a,0x26,0xe8,0xbf,0xd6,0x97,0x49,0xa0,0xd1,0x83, +0xf1,0xea,0x8d,0xc2,0x91,0x62,0x18,0x05,0x28,0x01,0xa5,0x14,0x3e,0xbf,0x17, +0x0d,0x8d,0x75,0xc8,0xcd,0xe9,0x06,0x9b,0x4d,0xbb,0x5a,0x8e,0xe3,0x38,0x4c, +0x9e,0x74,0x35,0xca,0x77,0x3e,0x87,0x3d,0xbf,0xdb,0x8d,0x6d,0xdb,0xb6,0x25, +0x3e,0xa6,0x3d,0x14,0x0a,0xfd,0xfc,0xd4,0x3f,0x2b,0x86,0x0f,0x1d,0x32,0xec, +0x3e,0x93,0xd7,0x21,0x09,0x29,0x0d,0x1d,0x12,0x91,0xce,0x8b,0x27,0x06,0xa4, +0xeb,0x40,0x41,0x69,0x2b,0x41,0x14,0xb4,0xf5,0xda,0x80,0x20,0x5d,0x55,0x89, +0xdb,0xce,0xa0,0xbc,0x4c,0x63,0x67,0x7b,0x1b,0xa7,0xe8,0x12,0x09,0x8d,0xde, +0xc7,0x82,0xc3,0xe1,0x30,0xaa,0x3d,0x95,0x70,0x38,0x5c,0xe8,0xda,0xa5,0x9b, +0x2e,0xbb,0xd5,0x6a,0xc5,0xbf,0x7f,0xef,0xfb,0x28,0x2d,0x2d,0xc3,0x9d,0xf3, +0x7e,0x8c,0x48,0x58,0xab,0x7a,0x65,0x39,0x52,0x1a,0x0e,0x87,0x2d,0x36,0x9b, +0x8d,0x39,0xbb,0x4f,0x29,0xe5,0xd2,0x97,0x40,0xa2,0xbc,0x14,0x4a,0x10,0x57, +0x27,0xb1,0x97,0xaf,0x7d,0x27,0x54,0x33,0x26,0x8e,0x11,0x02,0x0d,0x41,0xd1, +0x32,0x52,0x14,0xc0,0xcc,0x0e,0x30,0x34,0x21,0x8a,0x25,0x51,0xba,0x70,0x02, +0x0a,0x0a,0xa2,0x0a,0x33,0xe0,0x2d,0xa1,0x0c,0x0a,0x10,0x02,0x97,0x33,0x07, +0x2e,0x27,0xfb,0x4c,0x22,0x4a,0x29,0x8e,0x1e,0x3b,0x82,0x47,0x1e,0x59,0xa8, +0x23,0x8f,0x10,0x80,0xe3,0xb8,0x8f,0xec,0x76,0x7b,0x98,0x35,0xcd,0x15,0x85, +0x9c,0x36,0x81,0xca,0x06,0xcc,0x56,0x23,0x97,0x28,0x5d,0xac,0x97,0x4c,0x0c, +0xbd,0x36,0xa4,0x35,0xfd,0xf9,0x30,0x93,0xca,0x3b,0x04,0x35,0x24,0x91,0x15, +0x9e,0xa2,0x64,0x26,0x91,0x3e,0xc9,0x66,0x87,0xdb,0xd5,0xc5,0xb0,0x63,0xe8, +0xf1,0xd4,0x60,0xf5,0xa3,0xab,0x70,0xe8,0x90,0xb2,0x56,0x2a,0xf1,0xbd,0x71, +0x1c,0xff,0x76,0xef,0xa2,0xde,0xbf,0xb4,0x5a,0xad,0x46,0x6a,0x27,0x1c,0x0e, +0x87,0x2b,0x75,0x2a,0x54,0x5d,0x10,0xf3,0x1b,0x4f,0x48,0x52,0xd2,0xf4,0xf9, +0x8c,0x96,0x1d,0x32,0x14,0xb1,0xa1,0xba,0x33,0x83,0xc1,0x5c,0x9f,0xae,0x60, +0xed,0xf4,0x13,0x21,0x06,0x83,0xf9,0x64,0xb6,0x2f,0x51,0x1a,0x55,0xf7,0x82, +0x20,0x22,0xc7,0xd5,0xc5,0x70,0xf3,0x4d,0x4b,0x4b,0x33,0x76,0x3f,0x57,0x8e, +0x67,0x9f,0x7d,0x56,0x69,0x95,0xfe,0xdd,0x55,0xb8,0x5d,0xee,0xc5,0x23,0x46, +0x8c,0x8a,0x4f,0x47,0x31,0xc6,0x8f,0x32,0x80,0xb3,0x0f,0x3d,0xf4,0x50,0x58, +0x27,0x81,0xc9,0x08,0x8c,0x91,0xa7,0x8d,0x53,0xba,0xf0,0xba,0x54,0x9a,0xce, +0x81,0xee,0x56,0x1f,0x6e,0x10,0x9f,0x1c,0xb1,0x74,0xc9,0x24,0x47,0x4b,0x22, +0x8d,0xb7,0xb4,0xb5,0xe3,0x42,0x13,0x95,0x45,0x02,0x79,0x51,0xcd,0xa8,0x8b, +0x27,0x84,0x83,0xcb,0xe9,0x82,0x64,0xb3,0x1b,0xf6,0x3c,0xdf,0xfb,0xcb,0xbb, +0x58,0xb9,0x72,0x05,0x9a,0x9a,0x9a,0x58,0x69,0x1a,0x24,0x49,0x5a,0x3f,0x62, +0xf8,0xa8,0xa7,0x25,0x49,0x32,0x9b,0x10,0xae,0x13,0x04,0xa1,0xfa,0x81,0x07, +0x1e,0x88,0x00,0x40,0xda,0x12,0x68,0x14,0xaf,0x57,0x93,0x7a,0x12,0xf5,0x92, +0x66,0xd2,0x15,0xca,0xd8,0xde,0x21,0xb9,0x5d,0x35,0xb2,0x7d,0x8c,0x74,0x3a, +0x42,0xd5,0xd1,0xca,0xef,0x0f,0xc3,0x2e,0x39,0xe0,0xb0,0x3b,0x0d,0xa7,0x9c, +0x2a,0x4e,0xfd,0x03,0x4b,0x97,0x2e,0x41,0x45,0x45,0x85,0xd2,0x4a,0xed,0xb3, +0xc9,0xa2,0x28,0xbe,0x30,0xa0,0x7f,0xf1,0xca,0x9e,0x3d,0x7b,0x99,0x2d,0xc9, +0x68,0x21,0x84,0x54,0x2d,0x58,0xb0,0x40,0x33,0xee,0x60,0x48,0x20,0xfb,0x3a, +0x1e,0xa6,0x21,0xca,0x80,0x24,0xa2,0xba,0x56,0xdd,0x6b,0x92,0x26,0x54,0x90, +0xd8,0x7f,0x64,0x04,0xa6,0x06,0x1a,0x2b,0xb7,0x55,0xd2,0xcc,0xee,0xb4,0xf9, +0x52,0x29,0xbb,0xf5,0xd6,0x22,0x5a,0x4c,0xd7,0x9a,0xd6,0xd5,0xd7,0x61,0xe3, +0xc6,0xf5,0x38,0x78,0xf0,0xa0,0x52,0xb3,0xde,0xce,0xfd,0xad,0xa0,0xa0,0xe0, +0xe1,0x11,0xc3,0x47,0x7e,0x66,0x52,0xab,0x4c,0x29,0xf5,0xf8,0xfd,0xfe,0xda, +0x07,0x1f,0x7c,0x50,0xd7,0x70,0xfd,0x30,0x22,0x39,0x83,0xd0,0xaa,0x4c,0x73, +0xd2,0x5a,0xef,0x59,0x64,0x11,0x03,0xae,0x12,0xea,0x4d,0x95,0x48,0xa3,0x31, +0x9d,0x61,0x1a,0x93,0xb4,0x0c,0xbb,0x17,0x93,0x46,0x9e,0xe3,0x61,0xb7,0x3b, +0x0d,0xed,0x5c,0x28,0x14,0xc2,0x2b,0xfb,0x5f,0xc6,0x53,0x4f,0x3d,0xa9,0x94, +0x9e,0xf8,0x38,0x84,0x9c,0x73,0xbb,0x73,0x96,0x4d,0x9a,0x78,0xf5,0xcb,0x49, +0x9e,0xa8,0x5e,0x14,0xc5,0xea,0x79,0xf3,0xe6,0x19,0x6e,0x7d,0xd3,0x4b,0xa0, +0xe6,0xf5,0x9a,0xa9,0x50,0x06,0x71,0x06,0xa4,0x19,0x13,0xa6,0x65,0xcf,0x48, +0x1e,0x8d,0x82,0x34,0x48,0x95,0x18,0x56,0x78,0x42,0x0f,0x52,0x7b,0xdf,0xca, +0x1c,0x21,0x04,0x92,0x4d,0x82,0xcd,0x2a,0x31,0xcd,0x0b,0xa5,0x14,0x1f,0x7d, +0xfc,0x21,0x96,0x2d,0x5f,0x8a,0xba,0xba,0x3a,0x1d,0x73,0x04,0x68,0x96,0x24, +0xfb,0xa6,0xab,0xae,0x1c,0xfb,0x64,0x6e,0x6e,0xae,0xd9,0x0c,0x44,0x50,0x96, +0xe5,0xaa,0xf9,0xf3,0xe7,0x27,0xdd,0xc6,0x96,0x76,0x27,0x26,0x55,0xe2,0x12, +0x49,0x4b,0x24,0x4c,0xa7,0x50,0x59,0x61,0xfa,0xaa,0x33,0x80,0xb6,0x93,0xa2, +0x2b,0x23,0x99,0xea,0x8c,0xc6,0x5b,0x2c,0x56,0x48,0x36,0x3b,0xd3,0xce,0x01, +0xc0,0xb9,0x73,0x67,0xb1,0x72,0xd5,0x0a,0x1c,0x3d,0x7a,0x34,0x4e,0xb6,0x1a, +0xa2,0x28,0xee,0x2f,0x19,0x38,0x68,0xe9,0xa0,0x92,0xc1,0x66,0x4b,0xf3,0xe5, +0xe8,0x46,0x19,0xa6,0xba,0x64,0x21,0x83,0x4e,0x0c,0x60,0x48,0x16,0x31,0x92, +0xbe,0x74,0x48,0xcc,0x88,0xa5,0xcc,0x24,0xd4,0x24,0x2c,0x16,0xc5,0xf3,0x02, +0x24,0xc9,0x0e,0x81,0x67,0xdb,0xb9,0xa6,0xa6,0x00,0xb6,0x6d,0x7f,0x1a,0xaf, +0xbc,0xf2,0x8a,0xd2,0x0c,0x9d,0x9d,0xe3,0x8e,0x14,0x16,0xf6,0x58,0x38,0x79, +0xd2,0xd5,0xa6,0x9b,0x63,0x28,0xa5,0xf5,0x00,0xaa,0x6f,0xbb,0xed,0x36,0xb3, +0x9d,0xc2,0x3a,0xb4,0x93,0x04,0xaa,0xa8,0x30,0x23,0x8e,0x49,0xa2,0x99,0x9a, +0x66,0x41,0x9f,0x83,0x31,0x41,0xa4,0xcb,0x93,0x6c,0x88,0x91,0x38,0x9e,0x23, +0x84,0xc0,0x66,0x95,0x0c,0xa7,0x87,0x22,0x91,0x08,0xfe,0x74,0xf0,0x4d,0xac, +0x5b,0xb7,0x16,0x91,0x48,0x84,0x35,0x9e,0xf3,0xe6,0xb8,0x73,0x56,0xcd,0x98, +0x71,0xcd,0x1e,0x51,0x14,0xcd,0x7c,0x80,0x41,0x42,0x48,0xd5,0xdc,0xb9,0x73, +0x33,0xda,0xf5,0x9b,0xc1,0x38,0x10,0x06,0x52,0x67,0x42,0x56,0x02,0x51,0xc9, +0x06,0xfe,0x66,0x9e,0x9b,0xd6,0xbf,0xda,0x50,0x9a,0x70,0xa5,0x01,0x43,0xd2, +0x8c,0xc6,0x73,0x80,0xa2,0x2e,0x2d,0xa2,0xd5,0xd0,0xce,0x9d,0x38,0x79,0x1c, +0xcb,0x96,0x2d,0x8d,0x6f,0x10,0x4d,0x48,0x17,0x96,0x24,0xfb,0xf6,0x09,0xe3, +0x27,0xac,0xed,0xd5,0xab,0x48,0xb7,0x41,0x54,0x3d,0xaf,0x07,0xc0,0xeb,0xf3, +0xf9,0x7c,0xf3,0xe6,0xcd,0xcb,0xd8,0x29,0xcb,0x50,0xa1,0xec,0x6b,0x75,0x60, +0x32,0xf2,0x62,0x6a,0xb6,0xb5,0x8c,0xd8,0xb5,0x11,0x89,0xc9,0x1c,0x01,0xaa, +0x32,0x0c,0x1e,0x24,0x29,0x89,0x26,0x52,0x18,0x1b,0xcf,0x09,0xbc,0x00,0x8b, +0xc5,0x6a,0x68,0xe7,0x7c,0x3e,0x2f,0x1e,0x5f,0xbb,0x06,0x7f,0xff,0xfb,0xdf, +0xa2,0xcf,0xa0,0x8d,0x17,0x45,0xf1,0x60,0x49,0xc9,0xe0,0x45,0x63,0xc7,0x8c, +0xfb,0xca,0xa0,0x99,0x31,0x34,0x10,0x42,0xaa,0xe6,0xcc,0x99,0x93,0x96,0xba, +0x64,0x21,0x03,0x15,0x1a,0x8f,0xd4,0x4b,0x98,0x91,0xd4,0xa9,0xae,0x8d,0x07, +0xff,0xa9,0x79,0x73,0xb4,0x57,0x86,0x8d,0x83,0x59,0xc7,0x45,0x23,0x7d,0x14, +0xe0,0x78,0x0e,0x16,0xd1,0xca,0xdc,0x1b,0x01,0x00,0xc1,0x60,0x10,0xbf,0x7b, +0x7e,0x0f,0xf6,0xec,0xd9,0xad,0x7b,0x06,0x00,0xe0,0x38,0xee,0xab,0x82,0x82, +0xc2,0x45,0xdf,0xbc,0xee,0xfa,0x83,0x49,0x1a,0x16,0x24,0x84,0x54,0xcf,0x9e, +0x3d,0xbb,0xdd,0x36,0x81,0xa6,0x3d,0x0e,0xd4,0xaa,0x50,0x35,0x69,0x6c,0xf2, +0x92,0x4b,0xa0,0xf1,0x98,0x52,0x7b,0x99,0x9c,0x40,0xad,0x8c,0xb5,0xde,0x25, +0x4e,0xd9,0x41,0x45,0x9e,0x68,0xb1,0x80,0xe7,0x79,0x43,0xf7,0xd7,0xa1,0xc3, +0x7f,0xc5,0xa3,0x8f,0xad,0x56,0x7e,0x13,0x43,0x9f,0xa6,0xbe,0x4b,0x4e,0x97, +0xb5,0xd7,0xcf,0x9a,0xbd,0xdd,0xe9,0x74,0x19,0x4a,0x13,0x21,0x84,0xca,0xb2, +0xec,0xa1,0x94,0xfa,0x66,0xcd,0x9a,0xd5,0xc6,0x39,0x2c,0x2d,0x32,0x97,0x40, +0x40,0x27,0x71,0x2a,0x25,0x1a,0x8f,0xd7,0x93,0xd7,0x4a,0x18,0x51,0xe5,0x53, +0x13,0xa5,0xbb,0x6e,0x6d,0x50,0x6b,0xb1,0xa9,0xc0,0x70,0x30,0x4e,0xc1,0xf3, +0x22,0x04,0x5e,0x30,0xb4,0x73,0xa7,0xcf,0xfc,0x13,0xcb,0x57,0x2c,0xc3,0x99, +0x33,0x67,0x12,0xda,0x0f,0x00,0x90,0x25,0x49,0xda,0x33,0x71,0xc2,0xa4,0x55, +0x43,0x06,0x0f,0xf5,0xea,0x0a,0xd0,0xa2,0x81,0xe7,0xf9,0xea,0xd2,0xd2,0x52, +0xd3,0x0d,0x2f,0x99,0x22,0xc3,0xd9,0x08,0x40,0xf3,0x66,0xb4,0x9a,0x50,0x15, +0xcc,0x92,0x3c,0x55,0x9c,0x21,0x79,0xe6,0x63,0xca,0x84,0x6a,0xd8,0xd0,0x91, +0xa7,0xe8,0x4d,0x8e,0x70,0x10,0x04,0x1e,0x46,0x87,0x13,0x36,0x34,0x36,0xe0, +0xa9,0xa7,0x9e,0xc0,0x3b,0xef,0xbc,0xa3,0x79,0x86,0x18,0x04,0x51,0x3c,0x34, +0xa8,0x64,0xd0,0xc2,0x99,0x33,0xae,0x39,0xa2,0xab,0x52,0x3b,0x6b,0x10,0x92, +0x65,0xb9,0xaa,0xac,0xac,0xec,0xbc,0xee,0x99,0x4f,0xdb,0x13,0xa3,0x07,0x61, +0xdf,0xb1,0xb8,0x57,0x2b,0x5b,0x9d,0x90,0x26,0x90,0x97,0x30,0x34,0x49,0x24, +0x51,0xaf,0x50,0x0d,0x3a,0x28,0x40,0x7c,0x78,0xc0,0xf3,0x82,0x61,0x07,0x25, +0x1c,0x0e,0xe3,0xd5,0xd7,0x5e,0xc5,0xb6,0x6d,0x5b,0x95,0x52,0xf5,0x76,0xee, +0xeb,0x82,0x82,0x82,0xa5,0xff,0x76,0xcb,0x77,0xf7,0x33,0x0b,0xd0,0x56,0xe9, +0x0d,0x06,0x83,0xde,0xb2,0xb2,0xb2,0x76,0x55,0x97,0x2c,0xb4,0x4d,0x85,0x6a, +0x73,0x9a,0xdc,0x69,0x03,0xf5,0x12,0xc5,0x90,0x3c,0x24,0x92,0xa7,0x26,0x2e, +0xe1,0x3a,0xfe,0xbf,0xb6,0xe3,0x12,0x23,0x8f,0xe3,0x09,0x62,0x2b,0xcc,0x12, +0x41,0x29,0xc5,0xa7,0x9f,0x7d,0x8a,0xd5,0xab,0x57,0xa0,0xa1,0xa1,0x81,0x61, +0xe6,0x48,0x53,0x4e,0x4e,0xce,0x93,0xdf,0xfe,0xd6,0x0d,0x9b,0x0a,0x0a,0x0a, +0xf5,0xa7,0xd0,0x6a,0xd1,0xc8,0x71,0x5c,0xd5,0xd8,0xb1,0x63,0xcf,0x8b,0xba, +0x64,0x21,0xfd,0x61,0x84,0x21,0x52,0x9d,0xa3,0x49,0x01,0x06,0x4e,0x74,0x76, +0x27,0x29,0x21,0x6d,0x9c,0x3c,0x0a,0x0e,0x1c,0x08,0x47,0x0c,0xbf,0x88,0x55, +0xd5,0x55,0x78,0xf4,0xd1,0x55,0xf8,0xe2,0x8b,0x93,0xcc,0xb2,0x6c,0x36,0xe9, +0xe5,0x49,0x13,0x27,0x2d,0x1b,0x3f,0x7e,0xe2,0xb9,0x24,0x2d,0x0e,0x11,0x42, +0xaa,0x47,0x8f,0x1e,0x9d,0xd1,0x16,0xb1,0xb6,0x20,0x7d,0x09,0xa4,0x14,0x94, +0x10,0x90,0x38,0x61,0xda,0x49,0xb3,0x78,0x68,0xe2,0x40,0x59,0x15,0x69,0xd8, +0x2b,0x8c,0x27,0x60,0x64,0x4e,0xe9,0xfb,0x41,0x14,0x91,0xa3,0xca,0x8e,0x22, +0x23,0xe2,0x5a,0x5a,0x9a,0xb1,0x63,0xc7,0x76,0x1c,0xf8,0xc3,0x01,0xe6,0x73, +0x0a,0x82,0xf0,0xd9,0xc0,0x81,0x25,0x0f,0xff,0xcb,0x4d,0xdf,0xf9,0x5b,0x92, +0x0a,0x29,0x00,0x5f,0x43,0x43,0x83,0x67,0xd2,0xa4,0x49,0xe7,0x5d,0x5d,0xb2, +0x90,0x7e,0x27,0xc6,0x00,0x89,0x9e,0x7c,0x4d,0x5c,0x74,0xa0,0x4c,0x41,0x41, +0x34,0xa4,0xb7,0x7e,0x09,0x28,0x88,0xf2,0xee,0x49,0x42,0x76,0xd5,0x17,0x86, +0x52,0x02,0x12,0x4d,0x44,0x41,0x41,0xa2,0x5c,0x27,0xb6,0x9f,0x70,0xec,0x76, +0xcb,0xb2,0x8c,0xb7,0xde,0xfa,0x33,0x36,0x3e,0xb9,0x01,0x88,0xb6,0x29,0x21, +0x6f,0x4d,0x41,0x41,0xc1,0xca,0xdb,0x6f,0xfb,0xd1,0x0b,0x26,0x6b,0x51,0x62, +0x68,0xa4,0x94,0x56,0x0f,0x1d,0x3a,0xb4,0x43,0xcf,0x4b,0xcb,0xcc,0x06,0xc6, +0x5e,0xaa,0x5a,0x1a,0x55,0x84,0xc4,0x88,0xa2,0x8c,0x97,0x14,0x13,0x2e,0x65, +0xa5,0x17,0x01,0x25,0xca,0xff,0x20,0x31,0x12,0x55,0x65,0x2b,0x8d,0xd0,0xd4, +0x13,0x27,0x4c,0x65,0xf2,0x62,0x6d,0x8d,0x7d,0xf4,0xcd,0xa5,0xf8,0xf2,0xcb, +0x2f,0xb0,0x72,0xf5,0x4a,0xf8,0x7c,0xde,0x58,0x06,0x75,0x92,0x90,0xdb,0xed, +0x7e,0x7a,0xce,0x0d,0x37,0xae,0x2f,0x19,0x38,0x28,0x99,0x1a,0x0c,0x53,0x4a, +0xab,0x4a,0x4a,0x4a,0x2e,0xb8,0xba,0x64,0x21,0xed,0x81,0xbc,0x4e,0xc0,0x54, +0x63,0xab,0x28,0x6d,0x5a,0x32,0x63,0xd2,0x17,0x27,0x33,0x26,0x49,0x5a,0x12, +0x11,0x95,0xae,0x56,0x12,0x01,0xa8,0x08,0xd5,0x30,0x47,0x68,0x4c,0x53,0x82, +0x10,0x02,0x8e,0x33,0x56,0x97,0xb5,0xfe,0x5a,0x6c,0xd8,0xb0,0x0e,0x9f,0x7c, +0xfa,0x49,0xf4,0x91,0x12,0xec,0x9c,0xd5,0xf6,0xc7,0xf1,0xe3,0x27,0x2c,0xfe, +0xe6,0x75,0xb3,0x2a,0x92,0xbc,0x2b,0x4a,0x08,0xf1,0x59,0xad,0x56,0x6f,0x41, +0x41,0x41,0xa7,0x39,0xfc,0xd5,0x54,0x02,0x99,0x30,0x90,0x3e,0x85,0x33,0xad, +0xba,0x03,0xd1,0x4a,0x62,0x6c,0x9c,0x14,0xe3,0x23,0xa6,0x56,0xe3,0xe4,0x45, +0x97,0xb2,0xd0,0xe8,0x1f,0x82,0xd8,0xfa,0x53,0x95,0xc0,0xc5,0xee,0x09,0x01, +0xc7,0xf1,0x86,0xc3,0x82,0x50,0x28,0x84,0xbd,0x7b,0x9f,0xc7,0xbe,0x17,0xf7, +0x22,0x96,0x4d,0xfd,0x85,0xe4,0x79,0xfe,0x8b,0xe2,0xe2,0x81,0x8f,0xdc,0xf1, +0xc3,0x1f,0xbf,0x9d,0xc2,0x7b,0x0a,0x70,0x1c,0x57,0xd5,0xa3,0x47,0x8f,0x0e, +0x3f,0x5e,0x32,0x11,0xe6,0x2a,0x94,0xd1,0x6b,0x50,0xba,0xe6,0x49,0x48,0x84, +0xca,0x56,0x69,0x48,0x54,0x4a,0xd5,0x12,0xaa,0x26,0x2f,0x26,0x8d,0x6a,0x22, +0x19,0x8d,0x8e,0x8e,0xe7,0x8c,0xdc,0x5f,0x1f,0x7c,0x70,0x08,0xeb,0x37,0xac, +0x43,0x28,0x14,0x62,0xd9,0xb9,0xba,0xee,0xf9,0xdd,0xd7,0xcc,0x9f,0x7f,0xcf, +0x0e,0xb7,0xdb,0x6d,0xb8,0x8d,0x39,0xfa,0x65,0x0b,0x03,0xa8,0x2e,0x28,0x28, +0x30,0x3b,0x76,0xb2,0x43,0xa1,0xef,0xc4,0xc4,0xff,0x18,0x0d,0x23,0x8c,0x6c, +0x55,0xb4,0x03,0x98,0x28,0x81,0x9a,0x0e,0x87,0xc2,0x08,0x4b,0x1a,0xe3,0x95, +0x53,0xcd,0x85,0x06,0xbc,0x20,0x24,0x71,0x7f,0x9d,0xc6,0x63,0x8f,0xad,0x46, +0x65,0xe5,0xb9,0x68,0xd9,0x9a,0x74,0x11,0x97,0xcb,0xb5,0xfb,0x86,0x1b,0x6e, +0x7c,0x74,0xdc,0xd8,0xf1,0x3e,0x5d,0x01,0x89,0x0f,0x09,0xd4,0x46,0x22,0x11, +0x4f,0x7e,0x7e,0x7e,0xa7,0x51,0x97,0x2c,0x98,0xab,0x50,0xe6,0x8b,0x82,0xa9, +0xad,0x8a,0x49,0xa0,0xda,0x4e,0xa9,0xc5,0x49,0x4d,0x98,0x96,0xc8,0xd6,0x6b, +0xc4,0xf3,0x28,0x97,0x3c,0xc7,0x43,0x14,0x45,0x43,0x75,0xd9,0xd0,0xd0,0x80, +0x2d,0x5b,0x37,0xe1,0xf0,0x61,0xf6,0x2a,0x67,0xab,0xd5,0xfa,0xfe,0xd8,0x31, +0xe3,0x16,0xce,0x9d,0xfb,0xbd,0x63,0xac,0xfc,0x09,0xcf,0x1f,0x20,0x84,0x54, +0x39,0x9d,0xce,0x4e,0xa7,0x2e,0x59,0x30,0x1f,0x46,0x30,0x07,0x5e,0xd1,0x4e, +0x48,0xdc,0x3e,0xc5,0xae,0xd9,0xd2,0x08,0x24,0x27,0x52,0xdf,0xa3,0x8c,0x7d, +0x51,0x38,0x58,0x2d,0x16,0xf0,0x06,0xcb,0x19,0xc2,0xe1,0x30,0x5e,0x7b,0xfd, +0x55,0xec,0x7e,0xae,0x5c,0xd7,0x76,0x00,0xe0,0x79,0xfe,0x4c,0xbf,0x7e,0xfd, +0x97,0x3c,0xb0,0xe0,0x17,0xaf,0xa5,0xf0,0x2e,0xc2,0x84,0x90,0x6a,0x9b,0xcd, +0xd6,0x69,0xd5,0x25,0x0b,0x69,0x0f,0x23,0x28,0xa5,0xda,0x8e,0x46,0x92,0x9e, +0x63,0x94,0x2e,0x86,0x44,0xaa,0xea,0x54,0xdf,0x46,0x6f,0xac,0x16,0x2b,0x04, +0x41,0x34,0x76,0x7f,0x7d,0xfa,0x09,0xd6,0x6d,0x58,0xcb,0x5c,0xe5,0x4c,0x08, +0x69,0xca,0xcb,0xcb,0xdb,0x78,0xf7,0xfc,0x7b,0x36,0x17,0x15,0xf5,0x4e,0xe5, +0xdc,0x15,0x9f,0x28,0x8a,0x1e,0x28,0xb3,0xe4,0x17,0x15,0x92,0x10,0xc8,0xce, +0x94,0x49,0xcf,0x51,0x21,0x4f,0x4d,0x64,0x62,0x22,0x05,0x16,0xd1,0x02,0xab, +0xc5,0x66,0x48,0x5c,0x55,0x55,0x25,0xd6,0x6d,0x58,0x8b,0x53,0xa7,0x2a,0xa0, +0x74,0x80,0xb4,0x83,0x1a,0xa7,0xd3,0xf9,0xd2,0x0d,0xdf,0x9e,0xb3,0xec,0x1b, +0xd7,0x5c,0x9b,0xca,0xd1,0xc2,0x4d,0x00,0xaa,0x00,0xb4,0xdb,0xe1,0x73,0x17, +0x1a,0x7a,0xdd,0xa4,0x72,0x28,0x1b,0xbd,0xc4,0x68,0xb2,0xa8,0x0a,0x6c,0x75, +0x5f,0x21,0x7a,0x1b,0x27,0x32,0x56,0x9e,0x4a,0xb5,0x6a,0xfa,0x26,0x2a,0x62, +0x05,0x9e,0x87,0xcd,0x26,0x19,0xce,0x8a,0x07,0x9a,0x02,0x28,0x2f,0x7f,0x16, +0x6f,0xbd,0xfd,0x16,0xb3,0x6d,0x16,0x8b,0xe5,0xe3,0xd1,0xa3,0xaf,0x5c,0x38, +0x7f,0xde,0xdd,0xec,0x23,0xe9,0xb5,0x88,0x00,0xa8,0x06,0x90,0xec,0xf4,0xa4, +0x4e,0x0f,0x1d,0x81,0xc9,0x3b,0x31,0x46,0xbd,0xc8,0x56,0x89,0x6c,0xcd,0x8f, +0x04,0x62,0xf5,0x1d,0x4d,0x8e,0xe3,0xa2,0x67,0x92,0x19,0xaf,0xfe,0xfa,0xf3, +0x5b,0x07,0xb1,0x63,0xc7,0xf6,0x68,0x6f,0x56,0xdb,0x26,0x8e,0xe3,0xaa,0x7b, +0xf7,0xee,0xb3,0xe2,0x97,0xff,0xfd,0xeb,0xbd,0xa2,0x20,0xa6,0xe2,0x8f,0xac, +0x05,0x50,0x83,0x8b,0x50,0x5d,0xb2,0xc0,0x20,0x90,0x7d,0xad,0x06,0xab,0xe7, +0xa8,0xe9,0x5d,0x02,0x5a,0x35,0xca,0x90,0x3c,0x50,0x65,0x0f,0x9d,0xcd,0x6a, +0xac,0x2e,0x4f,0x9c,0x38,0x8e,0x0d,0x1b,0xd7,0x29,0xab,0x9c,0xa1,0xeb,0x54, +0x05,0xbb,0x76,0xed,0xba,0xf5,0x8e,0x1f,0xdd,0xb9,0x7e,0xf0,0xe0,0x21,0xa9, +0x2c,0xc9,0x6b,0x06,0x50,0x89,0x8b,0x58,0x5d,0xb2,0x60,0x2a,0x81,0xa9,0xa9, +0xd0,0xc4,0x21,0x80,0x5a,0xa5,0xb2,0xc7,0x73,0x56,0x8b,0xcd,0xf0,0x00,0x39, +0x40,0xd9,0xfc,0xb8,0x79,0xcb,0x53,0x38,0x7e,0xfc,0x38,0xb3,0x1d,0x92,0x64, +0xff,0xc3,0xcc,0x19,0x33,0x17,0xcf,0x99,0x73,0xd3,0x3f,0x93,0x3c,0x1f,0xa0, +0xa8,0xcb,0x1a,0x00,0xcc,0xd3,0x76,0x2e,0x76,0x64,0x46,0xa0,0x4e,0xc4,0xd4, +0xf9,0xd9,0x92,0x08,0x28,0x47,0x38,0x3a,0x1d,0x4e,0x08,0x02,0x7b,0x5f,0x7e, +0x73,0x4b,0x33,0xf6,0xed,0xdb,0x8b,0x37,0xde,0x30,0x9c,0xe6,0x39,0x31,0x74, +0xe8,0xb0,0x85,0x3f,0xbd,0xf7,0x67,0xef,0xa5,0xf8,0x7c,0x7e,0x28,0xe4,0x75, +0xd8,0x0f,0x73,0x9c,0x6f,0xa4,0x4f,0xa0,0x7a,0x5c,0x07,0xf6,0x10,0x00,0x09, +0xf7,0x1c,0xc7,0xc1,0xe9,0x70,0xc1,0x66,0x65,0xff,0xb6,0x51,0x44,0x8e,0xe0, +0xd0,0xa1,0xf7,0xf1,0xf4,0xb6,0xad,0xca,0x8f,0x70,0x24,0x54,0x4b,0x08,0xf1, +0xf7,0x2c,0xec,0xf9,0xe8,0x82,0x05,0xbf,0xd8,0xe5,0x74,0x3a,0x53,0x21,0xa3, +0x19,0x4a,0xef,0x32,0xd9,0x0c,0xfa,0x45,0x0f,0x3d,0x81,0x48,0x4d,0x85,0x46, +0x13,0x6b,0x98,0x54,0x13,0x1b,0x8b,0x73,0xd8,0x9d,0x70,0xd8,0x9d,0x86,0x65, +0x55,0x54,0x7c,0x85,0x27,0x9e,0xda,0x08,0x8f,0xc7,0xc3,0xaa,0x33,0x92,0xe3, +0xce,0xd9,0x79,0xcb,0x2d,0x73,0x1f,0x1b,0x3b,0x66,0x5c,0x2a,0x2a,0xf0,0x92, +0x56,0x97,0x2c,0x98,0x4b,0x20,0xcb,0x13,0xa3,0x73,0x95,0xb1,0xed,0x9c,0x64, +0x95,0xa2,0xbf,0xef,0xc7,0xf6,0xa2,0xf8,0xfd,0xb5,0xd8,0xbe,0x63,0x1b,0x3e, +0x35,0x98,0xe6,0xb1,0x5a,0xad,0xef,0x4e,0x9a,0x38,0xf9,0x91,0xb9,0xff,0xf6, +0xbd,0x13,0x29,0x3e,0xcb,0x25,0xaf,0x2e,0x59,0x68,0x83,0x0d,0x54,0x67,0x52, +0x8d,0xe7,0x04,0x01,0x39,0x6e,0xe3,0x4d,0xfe,0xc1,0x60,0x0b,0x5e,0x3b,0xf0, +0x2a,0x5e,0x79,0xe5,0xf7,0xcc,0x3a,0x78,0x9e,0x3f,0x35,0xa0,0xff,0x80,0x25, +0x3f,0xff,0x8f,0xff,0xfc,0x43,0x8a,0xcf,0xd0,0x02,0xa5,0x77,0x79,0xc9,0xab, +0x4b,0x16,0x18,0x03,0xf9,0x56,0xc9,0x33,0xb2,0x81,0x46,0xe3,0x39,0xb7,0xab, +0x8b,0xe1,0xa9,0xef,0xb2,0x2c,0xe3,0xa3,0x8f,0x3f,0xc4,0xd3,0xdb,0xb6,0x20, +0x18,0x0c,0xb2,0xdc,0x5f,0x81,0xbc,0xbc,0xbc,0xf5,0x3f,0xb9,0xeb,0x9e,0xad, +0x85,0x85,0x29,0xcd,0xbb,0xc9,0x50,0x24,0xae,0xd3,0xfd,0x28,0xe3,0x85,0x44, +0x92,0x81,0xbc,0x3e,0x03,0xcb,0x06,0xba,0x1c,0x2e,0xb8,0x5d,0x5d,0x0c,0x37, +0xf9,0x7f,0xfd,0xf5,0x69,0x6c,0xd9,0xba,0x19,0x67,0xcf,0x9e,0x8d,0x66,0xd3, +0xb9,0xbf,0xf6,0x5e,0x3f,0x6b,0xf6,0x8a,0xe9,0xd3,0xcb,0x52,0xfd,0x5d,0x9f, +0x3a,0x28,0x9e,0x94,0xcb,0x4a,0x5d,0xb2,0x90,0x81,0x0a,0x45,0xdc,0xdf,0x69, +0xb3,0x48,0xc8,0xcd,0xe9,0x66,0x78,0xd2,0x6f,0x7d,0x43,0x3d,0xf6,0xec,0x29, +0xc7,0x07,0x1f,0x1c,0x8e,0x96,0x17,0x2f,0x19,0x00,0x20,0x8a,0x96,0x0f,0x47, +0x8f,0x1e,0xfd,0xf0,0xed,0xb7,0xfd,0xf0,0x93,0x14,0xdb,0xdb,0x02,0xa5,0x77, +0x69,0x7a,0x40,0xea,0xe5,0x84,0x8c,0x6c,0xa0,0x20,0x88,0xe8,0xda,0xa5,0x1b, +0x24,0x83,0xdf,0x1e,0x0a,0x85,0x82,0x38,0xf8,0xd6,0x9f,0xb0,0x77,0xef,0x0b, +0xb1,0x82,0x34,0xf1,0x1c,0xc7,0x55,0x16,0x15,0xf5,0x5e,0xfe,0xf3,0xfb,0x1f, +0x78,0x49,0x10,0x84,0x54,0xdc,0x5f,0x59,0x75,0x69,0x80,0xb4,0x09,0xcc,0xcd, +0xe9,0x0a,0xb7,0x2b,0xc7,0xd0,0xce,0x1d,0x3d,0xfa,0x39,0x9e,0xde,0xbe,0x15, +0x81,0x40,0x80,0x95,0xa6,0x25,0x37,0xb7,0xeb,0xe6,0xdb,0x6f,0xfb,0xe1,0xc6, +0xe2,0x01,0xc5,0xa9,0x4a,0x51,0x1d,0x14,0xf2,0xda,0xbc,0x97,0xee,0x52,0x44, +0x5a,0x04,0x12,0x42,0x90,0xe3,0xee,0xc2,0x2c,0xa8,0xb2,0xea,0x1c,0x9e,0xd9, +0xb1,0xcd,0xe8,0x30,0x1b,0x48,0x92,0xf4,0x5a,0x59,0xe9,0x8c,0x25,0xdf,0xbc, +0xee,0x7a,0xfd,0xef,0x82,0xb3,0x91,0x55,0x97,0x29,0x20,0xed,0x4e,0x4c,0x22, +0x02,0x81,0x46,0xbc,0xf8,0xf2,0x3e,0xbc,0xf7,0xde,0xbb,0xfa,0xfc,0x00,0x04, +0x41,0x38,0x36,0x64,0xc8,0xd0,0x87,0xef,0xbc,0xe3,0xae,0xbf,0xa6,0xd8,0x26, +0x19,0x80,0x07,0x8a,0xba,0x4c,0x45,0xbd,0x5e,0xd6,0x60,0x78,0x62,0xd8,0xd7, +0x89,0x08,0x87,0xc3,0xf8,0xcb,0x5f,0xdf,0xc3,0xf3,0xcf,0xef,0x81,0x2c,0xcb, +0x2c,0x69,0xf5,0x15,0x16,0xf6,0x78,0xf4,0xde,0xbb,0xef,0xdb,0xed,0x70,0x38, +0x52,0xed,0x2d,0xd6,0x43,0xe9,0x5d,0x66,0xd5,0x65,0x8a,0x48,0xdb,0x13,0x43, +0x29,0xc5,0xc9,0x2f,0x4f,0x60,0xc7,0x8e,0xed,0xf0,0xfb,0x6b,0x75,0x79,0x00, +0x44,0xdc,0xee,0x9c,0x1d,0xdf,0xb9,0xf9,0x5f,0xd7,0x8c,0x1c,0x31,0x2a,0xd5, +0x09,0xd3,0x20,0x14,0x75,0xd9,0x69,0x7e,0x9f,0xfd,0x62,0x01,0x73,0x46,0x9e, +0x79,0x0d,0xc0,0xe3,0xad,0x46,0x79,0xf9,0x2e,0x9c,0x3c,0xa9,0x78,0xb7,0x34, +0x04,0x13,0xc0,0x6a,0xb5,0xbe,0x3d,0x61,0xfc,0xc4,0x47,0x6e,0x9c,0x73,0xf3, +0x17,0x29,0xd6,0x2f,0x03,0xf0,0x02,0xf0,0x21,0xab,0x2e,0x33,0x42,0x4a,0x9d, +0x98,0xa6,0xe6,0x26,0xbc,0x7e,0xe0,0x55,0x1c,0x3c,0xf8,0x27,0x10,0xe8,0xed, +0x1c,0xcf,0xf3,0x15,0xfd,0xfb,0x0f,0x58,0xf4,0x93,0xf9,0xf7,0xbe,0x99,0x46, +0xdd,0x59,0x75,0xd9,0x0e,0x30,0x25,0x90,0x52,0x8a,0x43,0x1f,0xbc,0x8f,0x3d, +0x7b,0x9e,0x43,0x38,0x1c,0x66,0xd9,0xb9,0x86,0xbc,0xbc,0xbc,0x75,0x3f,0xfe, +0xd1,0xbc,0x6d,0x79,0x79,0xf9,0xa9,0x6e,0x6a,0xcc,0xaa,0xcb,0x76,0x84,0x29, +0x81,0x91,0x48,0x04,0xe5,0xe5,0xbb,0x74,0xe1,0x00,0x64,0x87,0xc3,0xf9,0xc2, +0xac,0xeb,0x66,0xad,0x9c,0x38,0x71,0x72,0xb2,0x9f,0x1d,0x8d,0x81,0x42,0xe9, +0x5d,0x66,0xd5,0x65,0x3b,0xc2,0x7c,0x18,0xc1,0x80,0x28,0x5a,0xfe,0x36,0x6a, +0xd4,0x15,0x0f,0xcf,0xbd,0xe5,0xbb,0x66,0x67,0x5c,0x26,0xa2,0x01,0x8a,0xba, +0xbc,0x60,0x5b,0x8f,0x2f,0x17,0xa4,0x4c,0x20,0xc7,0x71,0x67,0x8b,0x7a,0x15, +0x2d,0xbf,0xf7,0x9e,0x9f,0x25,0x3b,0xe3,0x52,0x8d,0x10,0x14,0x75,0x79,0x5e, +0x4f,0x6a,0xb8,0x9c,0xa1,0x23,0x90,0xe7,0xb9,0xaf,0x65,0x59,0xee,0xa9,0x0a, +0x6a,0xce,0xcd,0xcd,0xdd,0xf4,0xbd,0xb9,0xdf,0x7f,0xb2,0x4f,0x9f,0xbe,0xa9, +0x7a,0x45,0x28,0x94,0xde,0xa5,0x17,0x59,0x75,0x79,0x5e,0xa1,0x23,0xb0,0xb0, +0xa0,0x70,0xfd,0xd9,0x73,0x67,0x7f,0x0d,0xc0,0x26,0x49,0xd2,0xfe,0x69,0x53, +0x4b,0x97,0x96,0x95,0xce,0x34,0x3b,0xe3,0x32,0x11,0x8d,0x50,0xa4,0x2e,0xab, +0x2e,0x2f,0x00,0x08,0xa5,0x74,0x50,0x62,0xe0,0x99,0x33,0xa7,0x6d,0x27,0xbf, +0x38,0x91,0x3b,0x7d,0x5a,0xd9,0xd9,0x34,0xca,0xca,0xaa,0xcb,0x0e,0x00,0x93, +0xc0,0x34,0x91,0x55,0x97,0x1d,0x88,0xf4,0x7e,0xb6,0x45,0x8f,0xac,0xba,0xec, +0x60,0x64,0x4a,0x60,0x18,0x0a,0x71,0x9d,0xe2,0xa4,0x86,0xcb,0x19,0xe9,0x12, +0x48,0xa1,0x0c,0xc4,0x3d,0xc8,0xaa,0xcb,0x4e,0x01,0x01,0xca,0xc4,0x29,0x7b, +0x0d,0xa0,0x16,0x01,0x28,0x52,0x77,0x51,0x6c,0x3d,0xbe,0x5c,0x20,0x40,0x59, +0x10,0xdb,0xdd,0x24,0x4d,0x18,0x8a,0x17,0xe5,0xa2,0xda,0x7a,0x7c,0xb9,0x40, +0x80,0x42,0x4c,0x57,0xe8,0xd5,0x29,0x85,0x32,0x2b,0x7e,0x51,0x6e,0x3d,0xbe, +0x5c,0x40,0x68,0x7c,0x9b,0x2d,0x72,0x00,0xe4,0x42,0x91,0xb8,0x26,0x28,0x8b, +0x89,0xb2,0xea,0xb2,0x93,0xe3,0xff,0x01,0xb0,0xa7,0x7e,0xbb,0x8d,0xcf,0x0a, +0x8d,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, +}; + diff --git a/attic/table/table.c b/attic/table/table.c new file mode 100644 index 0000000..69f7d16 --- /dev/null +++ b/attic/table/table.c @@ -0,0 +1,446 @@ +#include +#include + +#include +#include +#include +#include +#include +#include "clutter-dominatrix.h" +#include "clutter-video-player.h" + +#define SIZE_X 80 +#define MARG 4 + +ClutterDominatrix *ActiveDMX = NULL; + +/* rand() is not that random, and tends to generate clustered values; + * this function attempts to ensure that the images we load are spread more + * evenly around the stage + * + * We divide the stage into n x m squares with size corresponsing to the + * thumb width, and maintain a bit matrix indicating if an image has been + * placed at a position in each square; then, for first n*m/2 number of thumbs, + * we do not allow two thumbs in the same square. + */ +static void +get_xy_coords (ClutterActor * stage, gint * x, gint * y) +{ + static unsigned char * map = NULL; + static gint count = 0; + static gint size = 0; + static gint sw, sh; + static gint xdim, ydim; + + if (!map) + { + gint w, h; + + sw = clutter_actor_get_width (stage) - SIZE_X; + sh = clutter_actor_get_height (stage) - SIZE_X; + + w = sw + 2 * SIZE_X - 1; + h = sh + 2 * SIZE_X - 1; + + xdim = w / (SIZE_X); + ydim = h / (SIZE_X); + + size = xdim * ydim; + + map = g_malloc0 (size / 8); + } + + *x = rand () % sw; + *y = rand () % sh; + + if (count >= size / 2) + return; + + do { + gint off; + gint indx; + unsigned char mask; + + off = *y/(SIZE_X) * xdim + *x/(SIZE_X); + indx = off / 8; + mask = 1 << (off % 8); + + if (!(map[indx] & mask)) + { + map[indx] |= mask; + count++; + return; + } + + *x = rand () % sw; + *y = rand () % sh; + } + while (count < size / 2); +} + +struct notify_data +{ + ClutterActor * bckg; + ClutterActor * shdw; +}; + +static void +notify_cb (GObject *object, + GParamSpec *param_spec, + gpointer data) +{ + ClutterVideoPlayer * player; + struct notify_data * d = data; + + if (!CLUTTER_IS_VIDEO_PLAYER (object)) + return; + + player = CLUTTER_VIDEO_PLAYER (object); + + gint w = clutter_actor_get_width (CLUTTER_ACTOR (player)) + MARG; + gint h = clutter_actor_get_height (CLUTTER_ACTOR (player)) + MARG; + + if (w == clutter_actor_get_width (d->bckg) && + h == clutter_actor_get_width (d->bckg)) + return; + + clutter_actor_set_size (d->bckg, w, h); + clutter_actor_set_size (d->shdw, w, h); +} + +static ClutterDominatrix * +make_item (ClutterActor * stage, ClutterActor *actor) +{ + ClutterActor * rect, * group, * shaddow; + ClutterDominatrix * dmx; + ClutterColor bckg_clr = { 0xff, 0xff, 0xff, 0xff }; + ClutterColor shdw_clr = { 0x44, 0x44, 0x44, 0x44 }; + gdouble scale; + gint w, h, sw, sh, x, y; + ClutterFixed zang; + struct notify_data * ndata = g_malloc0(sizeof (struct notify_data)); + + scale = (double) SIZE_X / (double) clutter_actor_get_width (actor); + w = SIZE_X; + h = (gint)(scale * (double) clutter_actor_get_height (actor)); + + sw = clutter_actor_get_width (stage) - w; + sh = clutter_actor_get_height (stage) - h; + + get_xy_coords (stage, &x, &y); + + group = clutter_group_new (); + clutter_actor_set_position (group, x, y); + clutter_actor_set_size (group, w + MARG, h + MARG); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), group); + clutter_actor_show (group); + + rect = clutter_rectangle_new (); + clutter_actor_set_position (rect, 0, 0); + clutter_actor_set_size (rect, w + MARG, h + MARG); + + clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), + &bckg_clr); + clutter_actor_show (rect); + ndata->bckg = rect; + + shaddow = clutter_rectangle_new (); + clutter_actor_set_position (shaddow, 2, 2); + clutter_actor_set_size (shaddow, w + MARG, h + MARG); + clutter_rectangle_set_color (CLUTTER_RECTANGLE (shaddow), &shdw_clr); + clutter_actor_show (shaddow); + ndata->shdw = shaddow; + + clutter_actor_set_position (actor, 2, 2); + clutter_actor_set_size (actor, w, h); + clutter_actor_show (actor); + + if (CLUTTER_IS_VIDEO_PLAYER (actor)) + { + g_signal_connect (actor, "notify::width", G_CALLBACK(notify_cb), ndata); + g_signal_connect (actor, "notify::height", G_CALLBACK(notify_cb), ndata); + } + + clutter_container_add (CLUTTER_CONTAINER (group), + shaddow, rect, actor, NULL); + + zang = CLUTTER_INT_TO_FIXED (rand()%360); + clutter_actor_set_rotationx (group, + CLUTTER_Z_AXIS, + zang, + 0, + 0, + 0); + + dmx = clutter_dominatrix_new (group); + + return dmx; +} + +static ClutterDominatrix * +make_img_item (ClutterActor * stage, const gchar * name) +{ + ClutterActor * img; + GdkPixbuf * pixbuf; + + pixbuf = gdk_pixbuf_new_from_file_at_size (name, 400, 400, NULL); + + if (!pixbuf) + return NULL; + + img = clutter_texture_new_from_pixbuf (pixbuf); + clutter_actor_show (img); + + return make_item (stage, img); +} + +static ClutterDominatrix * +make_vid_item (ClutterActor * stage, const gchar * name) +{ + ClutterActor * vid; + + vid = clutter_video_player_new (name); + return make_item (stage, vid); +} + +static gboolean +is_supported_img (const gchar * name) +{ + GdkPixbufFormat * fmt = gdk_pixbuf_get_file_info (name, NULL, NULL); + + if (fmt) + return (gdk_pixbuf_format_is_disabled (fmt) != TRUE); + + return FALSE; +} + +static void +process_directory (const gchar * name, + ClutterActor * stage, ClutterActor * notice) +{ + GDir * dir; + const gchar * fname; + struct stat sbuf; + + dir = g_dir_open (name, 0, NULL); + + if (!dir) + return; + + g_chdir (name); + + while ((fname = g_dir_read_name (dir))) + { + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, FALSE); + + if (is_supported_img (fname)) + { + make_img_item (stage, fname); + clutter_actor_raise_top (notice); + } + else if (g_str_has_suffix (fname, ".flv") + || g_str_has_suffix (fname, ".avi") + || g_str_has_suffix (fname, ".mpg") + || g_str_has_suffix (fname, ".mp4") + || g_str_has_suffix (fname, ".mov") + || g_str_has_suffix (fname, ".ogg")) + { + make_vid_item (stage, fname); + clutter_actor_raise_top (notice); + } + + if (g_stat (fname, &sbuf) > -1 && S_ISDIR (sbuf.st_mode)) + process_directory (fname, stage, notice); + } + + g_chdir (".."); + + g_dir_close (dir); +} + +static ClutterActor * +make_busy_notice (ClutterActor * stage) +{ + ClutterActor * label; + ClutterActor * rect; + ClutterActor * group; + ClutterColor text_clr = { 0xff, 0xff, 0xff, 0xff }; + ClutterColor bckg_clr = { 0x5c, 0x54, 0x57, 0x9f }; + + label = clutter_label_new_with_text ("Sans 54", + "Please wait, loading images ..."); + + clutter_label_set_color (CLUTTER_LABEL (label), &text_clr); + clutter_actor_set_position (label, 10, 10); + clutter_actor_show (label); + + group = clutter_group_new (); + clutter_actor_show (group); + + rect = clutter_rectangle_new (); + clutter_actor_set_position (rect, 0, 0); + clutter_actor_set_size (rect, + clutter_actor_get_width (label) + 20, + clutter_actor_get_height (label) + 20); + + clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), + &bckg_clr); + clutter_actor_show (rect); + + clutter_container_add (CLUTTER_CONTAINER (group), rect, label, NULL); + + return group; +} + +struct timeout_cb_data +{ + ClutterActor * stage; + ClutterActor * notice; + const gchar * name; +}; + +static void +tmln_completed_cb (ClutterActor *actor, gpointer data) +{ + ClutterGroup * stage = data; + + clutter_group_remove (stage, actor); +} + +static gboolean +timeout_cb (gpointer data) +{ + ClutterTimeline * tmln; + ClutterEffectTemplate * tmpl; + + struct timeout_cb_data * d = data; + + process_directory (d->name, d->stage, d->notice); + + tmpl = clutter_effect_template_new (clutter_timeline_new (60, 60), + CLUTTER_ALPHA_SINE_DEC); + + clutter_actor_set_opacity (d->notice, 0); + tmln = clutter_effect_fade (tmpl, d->notice, 0xff, tmln_completed_cb, + d->stage); + + g_object_unref (tmpl); + + clutter_actor_show_all (d->stage); + clutter_actor_queue_redraw (d->stage); + + return FALSE; +} + +static void +on_event (ClutterStage *stage, + ClutterEvent *event, + gpointer data) +{ + gint x,y; + ClutterActor *actor; + ClutterDominatrix *dmx; + + switch (event->type) + { + case CLUTTER_KEY_PRESS: + { + guint sym = clutter_key_event_symbol ((ClutterKeyEvent*)event); + + switch (sym) + { + case CLUTTER_Escape: + case CLUTTER_q: + case CLUTTER_Q: + clutter_main_quit (); + break; + + default: + break; + } + } + break; + case CLUTTER_BUTTON_PRESS: + clutter_event_get_coords (event, &x, &y); + + actor = clutter_stage_get_actor_at_pos (stage, x, y); + + while (actor && + clutter_actor_get_parent (actor) != CLUTTER_ACTOR(stage) && + (actor = clutter_actor_get_parent (actor))); + + if (!actor) + return; + + dmx = g_object_get_data (G_OBJECT (actor), "dominatrix"); + + if (!dmx) + return; + + ActiveDMX = g_object_ref (dmx); + break; + case CLUTTER_BUTTON_RELEASE: + if (ActiveDMX) + { + clutter_dominatrix_handle_event (ActiveDMX, event); + g_object_unref (ActiveDMX); + ActiveDMX = NULL; + } + break; + default: + break; + } + + if (ActiveDMX) + clutter_dominatrix_handle_event (ActiveDMX, event); + + return; +} + +int +main (int argc, char *argv[]) +{ + ClutterActor * stage, * notice; + ClutterColor stage_clr = { 0xed, 0xe8, 0xe1, 0xff }; + struct timeout_cb_data tcbd; + + if (argc != 2) + { + g_print ("\n usage: %s image_directory\n\n", argv[0]); + exit (1); + } + + srand (time(NULL) + getpid()); + + clutter_init (&argc, &argv); + gst_init (&argc, &argv); + + stage = clutter_stage_get_default (); + + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_clr); + + g_object_set (stage, "fullscreen", TRUE, NULL); + + notice = make_busy_notice (stage); + clutter_actor_set_position (notice, + (clutter_actor_get_width (stage) - + clutter_actor_get_width (notice))/2, + (clutter_actor_get_height (stage) - + clutter_actor_get_height (notice))/2); + + clutter_group_add (CLUTTER_GROUP(stage), notice); + clutter_actor_show_all (stage); + + tcbd.stage = stage; + tcbd.notice = notice; + tcbd.name = argv[1]; + + g_timeout_add (100, timeout_cb, &tcbd); + + g_signal_connect (stage, "event", G_CALLBACK (on_event), NULL); + + clutter_main(); + + return EXIT_SUCCESS; +} diff --git a/attic/widgets/Makefile b/attic/widgets/Makefile new file mode 100644 index 0000000..d52c9f1 --- /dev/null +++ b/attic/widgets/Makefile @@ -0,0 +1,14 @@ +LIBS=`pkg-config --libs clutter-0.6 gnome-vfs-2.0 clutter-gst-0.6` +INCS=`pkg-config --cflags clutter-0.6 gnome-vfs-2.0 clutter-gst-0.6` + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: test + + +test: test.o clutter-reflect-texture.o + $(CC) -g -Wall $(CFLAGS) -o $@ test.o clutter-reflect-texture.o $(LIBS) + +clean: + rm -fr *.o test diff --git a/attic/widgets/clutter-reflect-texture.c b/attic/widgets/clutter-reflect-texture.c new file mode 100644 index 0000000..9fd86a1 --- /dev/null +++ b/attic/widgets/clutter-reflect-texture.c @@ -0,0 +1,340 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#define CLUTTER_PARAM_READWRITE \ + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |G_PARAM_STATIC_BLURB + + +/** + * SECTION:clutter-reflect-texture + * @short_description: Actor for cloning existing textures in an + * efficient way. + * + * #ClutterReflectTexture allows the cloning of existing #ClutterTexture with + * a refelction like effect. + */ + +#include +#include + +#include "clutter-reflect-texture.h" + +enum +{ + PROP_0, + PROP_REFLECTION_HEIGHT +}; + +G_DEFINE_TYPE (ClutterReflectTexture, + clutter_reflect_texture, + CLUTTER_TYPE_CLONE_TEXTURE); + +#define CLUTTER_REFLECT_TEXTURE_GET_PRIVATE(obj) \ +(G_TYPE_INSTANCE_GET_PRIVATE ((obj), CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexturePrivate)) + +struct _ClutterReflectTexturePrivate +{ + gint reflection_height; +}; + +static void +reflect_texture_render_to_gl_quad (ClutterReflectTexture *ctexture, + int x1, + int y1, + int x2, + int y2) +{ + gint qx1 = 0, qx2 = 0, qy1 = 0, qy2 = 0; + gint qwidth = 0, qheight = 0; + gint x, y, i =0, lastx = 0, lasty = 0; + gint n_x_tiles, n_y_tiles; + gint pwidth, pheight, rheight; + float tx, ty, ty2 = 0.0; + + ClutterReflectTexturePrivate *priv = ctexture->priv; + ClutterActor *parent_texture = CLUTTER_ACTOR(clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(ctexture))); + + priv = ctexture->priv; + + qwidth = x2 - x1; + qheight = y2 - y1; + + rheight = priv->reflection_height; + + if (rheight > qheight) + rheight = qheight; + + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* Only paint if parent is in a state to do so */ + if (!clutter_texture_has_generated_tiles (CLUTTER_TEXTURE(parent_texture))) + return; + + clutter_texture_get_base_size (CLUTTER_TEXTURE(parent_texture), + &pwidth, &pheight); + + if (!clutter_texture_is_tiled (CLUTTER_TEXTURE(parent_texture))) + { + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), 0); + + /* NPOTS textures *always* used if extension available + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE)) + { + tx = (float) pwidth; + ty = (float) pheight; + ty2 = (float)(clutter_actor_get_height (CLUTTER_ACTOR(ctexture)) * rheight) + / pheight; + ty2 = pheight - ty2; + + } + else + { + tx = (float) pwidth / clutter_util_next_p2 (pwidth); + ty = (float) pheight / clutter_util_next_p2 (pheight); + } + + qx1 = x1; qx2 = x2; + qy1 = y1; qy2 = y1 + rheight; + + glBegin (GL_QUADS); + + glColor4ub (255, 255, 255, + clutter_actor_get_opacity (CLUTTER_ACTOR(ctexture))); + + glTexCoord2f (0, ty); + glVertex2i (qx1, qy1); + + glTexCoord2f (tx, ty); + glVertex2i (qx2, qy1); + + glColor4ub (255, 255, 255, 0); + + glTexCoord2f (tx, ty2); + glVertex2i (qx2, qy2); + + glTexCoord2f (0, ty2); + glVertex2i (qx1, qy2); + + glEnd (); + + return; + } + + clutter_texture_get_n_tiles (CLUTTER_TEXTURE(parent_texture), + &n_x_tiles, &n_y_tiles); + + for (x = 0; x < n_x_tiles; x++) + { + lasty = 0; + + for (y = 0; y < n_y_tiles; y++) + { + gint actual_w, actual_h; + gint xpos, ypos, xsize, ysize, ywaste, xwaste; + + clutter_texture_bind_tile (CLUTTER_TEXTURE(parent_texture), i); + + clutter_texture_get_x_tile_detail (CLUTTER_TEXTURE(parent_texture), + x, &xpos, &xsize, &xwaste); + + clutter_texture_get_y_tile_detail (CLUTTER_TEXTURE(parent_texture), + y, &ypos, &ysize, &ywaste); + + actual_w = xsize - xwaste; + actual_h = ysize - ywaste; + + tx = (float) actual_w / xsize; + ty = (float) actual_h / ysize; + + qx1 = x1 + lastx; + qx2 = qx1 + ((qwidth * actual_w ) / pwidth ); + + qy1 = y1 + lasty; + qy2 = qy1 + ((qheight * actual_h) / pheight ); + + glBegin (GL_QUADS); + glTexCoord2f (tx, ty); glVertex2i (qx2, qy2); + glTexCoord2f (0, ty); glVertex2i (qx1, qy2); + glTexCoord2f (0, 0); glVertex2i (qx1, qy1); + glTexCoord2f (tx, 0); glVertex2i (qx2, qy1); + glEnd (); + + lasty += qy2 - qy1; + + i++; + } + lastx += qx2 - qx1; + } +} + +static void +clutter_reflect_texture_paint (ClutterActor *self) +{ + ClutterReflectTexturePrivate *priv; + ClutterActor *parent_texture; + gint x1, y1, x2, y2; + GLenum target_type; + + priv = CLUTTER_REFLECT_TEXTURE (self)->priv; + + /* no need to paint stuff if we don't have a texture to reflect */ + if (!clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))) + return; + + /* parent texture may have been hidden, there for need to make sure its + * realised with resources available. + */ + parent_texture = CLUTTER_ACTOR (clutter_clone_texture_get_parent_texture(CLUTTER_CLONE_TEXTURE(self))); + if (!CLUTTER_ACTOR_IS_REALIZED (parent_texture)) + clutter_actor_realize (parent_texture); + + /* FIXME: figure out nicer way of getting at this info... + */ + if (clutter_feature_available (CLUTTER_FEATURE_TEXTURE_RECTANGLE) && + clutter_texture_is_tiled (CLUTTER_TEXTURE (parent_texture)) == FALSE) + { + target_type = CGL_TEXTURE_RECTANGLE_ARB; + cogl_enable (CGL_ENABLE_TEXTURE_RECT | CGL_ENABLE_BLEND); + } + else + { + target_type = CGL_TEXTURE_2D; + cogl_enable (CGL_ENABLE_TEXTURE_2D|CGL_ENABLE_BLEND); + } + + cogl_push_matrix (); + + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ub (255, 255, 255, clutter_actor_get_opacity (self)); + + clutter_actor_get_coords (self, &x1, &y1, &x2, &y2); + + /* Parent paint translated us into position */ + reflect_texture_render_to_gl_quad (CLUTTER_REFLECT_TEXTURE (self), + 0, 0, x2 - x1, y2 - y1); + + cogl_pop_matrix (); +} + + + +static void +clutter_reflect_texture_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + priv->reflection_height = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ClutterReflectTexture *ctexture = CLUTTER_REFLECT_TEXTURE (object); + ClutterReflectTexturePrivate *priv = ctexture->priv; + + switch (prop_id) + { + case PROP_REFLECTION_HEIGHT: + g_value_set_int (value, priv->reflection_height); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +clutter_reflect_texture_class_init (ClutterReflectTextureClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + actor_class->paint = clutter_reflect_texture_paint; + + gobject_class->set_property = clutter_reflect_texture_set_property; + gobject_class->get_property = clutter_reflect_texture_get_property; + + g_object_class_install_property (gobject_class, + PROP_REFLECTION_HEIGHT, + g_param_spec_int ("reflection-height", + "Reflection Height", + "", + 0, G_MAXINT, + 0, + (G_PARAM_CONSTRUCT | CLUTTER_PARAM_READWRITE))); + + g_type_class_add_private (gobject_class, sizeof (ClutterReflectTexturePrivate)); +} + +static void +clutter_reflect_texture_init (ClutterReflectTexture *self) +{ + ClutterReflectTexturePrivate *priv; + + self->priv = priv = CLUTTER_REFLECT_TEXTURE_GET_PRIVATE (self); + priv->reflection_height = 100; +} + +/** + * clutter_reflect_texture_new: + * @texture: a #ClutterTexture or %NULL + * + * Creates an efficient 'reflect' of a pre-existing texture if which it + * shares the underlying pixbuf data. + * + * You can use clutter_reflect_texture_set_parent_texture() to change the + * parent texture to be reflectd. + * + * Return value: the newly created #ClutterReflectTexture + */ +ClutterActor * +clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height) +{ + g_return_val_if_fail (texture == NULL || CLUTTER_IS_TEXTURE (texture), NULL); + + return g_object_new (CLUTTER_TYPE_REFLECT_TEXTURE, + "parent-texture", texture, + "reflection-height", reflection_height, + NULL); +} + diff --git a/attic/widgets/clutter-reflect-texture.h b/attic/widgets/clutter-reflect-texture.h new file mode 100644 index 0000000..9ba7353 --- /dev/null +++ b/attic/widgets/clutter-reflect-texture.h @@ -0,0 +1,84 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2006 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_CLUTTER_REFLECT_TEXTURE_H +#define _HAVE_CLUTTER_REFLECT_TEXTURE_H + +#include + +G_BEGIN_DECLS + +#define CLUTTER_TYPE_REFLECT_TEXTURE (clutter_reflect_texture_get_type ()) + +#define CLUTTER_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTexture)) + +#define CLUTTER_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +#define CLUTTER_IS_REFLECT_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_IS_REFLECT_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + CLUTTER_TYPE_REFLECT_TEXTURE)) + +#define CLUTTER_REFLECT_TEXTURE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + CLUTTER_TYPE_REFLECT_TEXTURE, ClutterReflectTextureClass)) + +typedef struct _ClutterReflectTexture ClutterReflectTexture; +typedef struct _ClutterReflectTexturePrivate ClutterReflectTexturePrivate; +typedef struct _ClutterReflectTextureClass ClutterReflectTextureClass; + +struct _ClutterReflectTexture +{ + ClutterCloneTexture parent; + + /*< priv >*/ + ClutterReflectTexturePrivate *priv; +}; + +struct _ClutterReflectTextureClass +{ + ClutterCloneTextureClass parent_class; + + /* padding for future expansion */ + void (*_clutter_reflect_1) (void); + void (*_clutter_reflect_2) (void); + void (*_clutter_reflect_3) (void); + void (*_clutter_reflect_4) (void); +}; + +GType clutter_reflect_texture_get_type (void) G_GNUC_CONST; + +ClutterActor * clutter_reflect_texture_new (ClutterTexture *texture, gint reflection_height); + +G_END_DECLS + +#endif diff --git a/attic/widgets/test.c b/attic/widgets/test.c new file mode 100644 index 0000000..362b35a --- /dev/null +++ b/attic/widgets/test.c @@ -0,0 +1,45 @@ +#include +#include "clutter-reflect-texture.h" + +int +main (int argc, char *argv[]) +{ + ClutterActor *stage, *tex, *reflect; + GdkPixbuf *pixbuf; + ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff }; + gint x; + + clutter_init (&argc, &argv); + + if (argc < 2) + { + g_error ("No image argument supplied"); + } + + stage = clutter_stage_get_default (); + + clutter_stage_set_color (CLUTTER_STAGE (stage), + &stage_color); + + pixbuf = gdk_pixbuf_new_from_file (argv[1], NULL); + + tex = clutter_texture_new_from_pixbuf (pixbuf); + + reflect = clutter_reflect_texture_new (CLUTTER_TEXTURE(tex), 100); + clutter_actor_set_opacity (reflect, 100); + + x = (CLUTTER_STAGE_WIDTH() - clutter_actor_get_width(tex))/2; + + clutter_group_add (CLUTTER_GROUP(stage), tex); + clutter_group_add (CLUTTER_GROUP(stage), reflect); + clutter_actor_set_position (tex, x, 20); + clutter_actor_set_position (reflect, x, clutter_actor_get_height(tex) + 20); + + /* clutter_actor_rotate_y (stage, 60.0, CLUTTER_STAGE_WIDTH()/2, 0); */ + + clutter_actor_show_all (stage); + + clutter_main(); + + return 1; +} diff --git a/attic/woohaa/AUTHORS b/attic/woohaa/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/attic/woohaa/ChangeLog b/attic/woohaa/ChangeLog new file mode 100644 index 0000000..1663d7f --- /dev/null +++ b/attic/woohaa/ChangeLog @@ -0,0 +1,271 @@ +2008-02-18 Chris Lord + + * configure.ac: + Bump clutter requirement to 0.6 + +2008-02-13 Chris Lord + + * wh-db.c: (wh_db_dispose), (wh_db_init), (wh_db_monitor_add_idle), + (wh_db_media_file_found_idle), (wh_db_import_uri_private), + (wh_db_walk_directory), (wh_db_import_uri_func), + (on_vfs_monitor_event), (wh_db_import_uri): + Do importing in a thread, using a thread pool + +2007-09-04 Matthew Allum + + * Makefile.am: + * totem-resources.c: + * totem-resources.h: + * wh-db.c: + * wh-screen-video.c: + * wh-video-thumbnailer.c: + * woohaa.c: + Big Patch from Sir Bastien Nocera: + + - Use totem-resources.[ch] to avoid the thumbnailer running + amok (avoids signals, use threads and monitor memory usage + as well). + - Put the woohaa db in ~/.local/share/woohaa, as per XDG-ish + - Don't use GNOME_VFS_PERM_ACCESS_READABLE, it's only + implemented by the file method in gnome-vfs (so doesn't work + remotely) + - Make sure URIs and not local file paths are getting passed around + - Get a list from GConf so that we can use ":" (as in "smb://blah") in + the URI + - Don't leak the GConfClient (it's not a singleton) + +2007-08-07 Matthew Allum + + * configure.ac: + Update for 0.4 + +2007-07-13 Matthew Allum + + * woohaa.c: (browse_input_cb): + Escape also exit app. + +2007-07-13 Matthew Allum + + * wh-screen-video.c: + Escape also quit video. + * woohaa.c: + Really hide startup screen. + +2007-07-12 Matthew Allum + + * wh-screen-video.c: + * wh-video-view.c: + Improve video controls look. + Clean up a couple of compiler warnings. + +2007-07-11 Matthew Allum + + * data/arrow-next.svg: + * data/arrow-prev.svg: + * wh-screen-video.c: + * wh-slider-menu.c: + * wh-video-view.c: + Improve look of arrows (a little). + Change keys so enter also pauses, q exits video playback + +2007-07-11 Matthew Allum + + * wh-screen-video.c: + * wh-slider-menu.c: + * wh-video-view.c: + * woohaa.c: + Various minor tweaks to look. + +2007-07-09 Neil J. Patel + + * woohaa.c: (main): + Look for bg.png in PKGDATADIR + +2007-07-09 Matthew Allum + + * clutter-simple-layout.c: + * configure.ac: + * data/Makefile.am: + * data/arrow-down.svg: + * data/arrow-next.svg: + * data/arrow-prev.svg: + * data/arrow-up.svg: + * data/header.svg: + * data/play.svg: + * data/selected.svg: + * data/spinner.svg: + * util.c: + * wh-busy.c: + * wh-slider-menu.c: + * wh-video-row-renderer.c: + * wh-video-thumbnailer.c: + * woohaa.c: + Update for 0.3 API, along with a new look. + +2007-04-06 Matthew Allum + + * wh-screen-video.c: + Re-add cheesy easter egg effect (via 'e' key). + + * wh-slider-menu.c: + * wh-slider-menu.h: + * woohaa.c: + * wh-video-view.c: + Improve layout/scalability on various sized displays. + + * wh-video-row-renderer.c: + Simple glow effect on selected video. + + * wh-video-thumbnailer.c: + Clean up a couple of warnings. + +2007-04-03 Matthew Allum + + * wh-slider-menu.c: + Fix dissapearing mystery slider menu entrys when Sans font + was used. + +2007-04-01 Matthew Allum + + * wh-screen-video.c: + Fix Audio/Picture sync on movie playback startup + +2007-03-30 Matthew Allum + + * woohaa.c: (main): + Importing -> Syncing copy change. + +2007-03-30 Matthew Allum + + * wh-screen-video.c: + Hack to prevent bad video files causing crazed looping. + * woohaa.c: + Set stage hidden cursor property. + +2007-03-29 Matthew Allum + + * wh-db.c: + Fix space in regexp + + * wh-screen-video.c: + Disable thumbnail generation on video stop. + Add volume control via up/down arrows + + * wh-theme.c: + * wh-video-model.c: + * wh-video-thumbnailer.c: + * wh-video-view.c: + Clean up warnings. + +2007-03-29 Matthew Allum + + * data/Makefile.am: + Add defualt thumbnail image. + + * configure.ac: + Pull in gconf. + + * wh-video-model.c: + * wh-video-model.h: + * wh-screen-video.c: + * wh-screen-video.h: + * wh-video-model-row.c: + * wh-video-row-renderer.c: + Various thumbnail related tweaks. + + * wh-video-view.c: + Speed up painting via only paint on screen rows. + + * wh-video-thumbnailer.c: + * woohaa.c: + Add a seperate thumbnailer process and handle it. + + * Makefile.am: + * wh-theme.c: + * wh-theme.h: + Add a *very* simple initial theme 'framework'. + +2007-03-20 Matthew Allum + + * wh-db.c: (wh_db_parse_video_uri_info): + Improve filename parsing for video title including parent directory + name if deemed useful. (via patch from Iain). + * wh-screen-video.c: + Improve layout of video controls. + +2007-03-18 Matthew Allum + + * clutter-slider-menu.c: + * clutter-slider-menu.h: + * selector.svg: + Remove old uneeded files. + +2007-03-18 Matthew Allum + + * Makefile.am: + * clutter-simple-layout.c: + * clutter-simple-layout.h: + * clutter-slider-menu.c: + * configure.ac: + * data/Makefile.am: + * selector.svg: + * util.c: + * util.h: + * wh-busy.c: + * wh-busy.h: + * wh-db.c: + * wh-db.h: + * wh-screen-video.c: + * wh-screen-video.h: + * wh-slider-menu.c: + * wh-slider-menu.h: + * wh-video-model-row.c: + * wh-video-model-row.h: + * wh-video-model.c: + * wh-video-model.h: + * wh-video-row-renderer.c: + * wh-video-row-renderer.h: + * wh-video-view.c: + * woohaa.c: + Lots and lots. Far too long without a commit.. + +2007-02-22 Matthew Allum + + + * wh-video-model.c: + * wh-video-model.h: + * wh-video-view.c: + * wh-video-view.h: + * woohaa.c: + Various model/view tweaks + +2007-02-20 Matthew Allum + + * clutter-disk.c: + * clutter-disk.h: + * clutter-video-model.c: + * clutter-video-model.h: + * clutter-video-view.c: + * clutter-video-view.h: + Remove old files + +2007-02-20 Matthew Allum + + * Makefile.am: + * autogen.sh: + * clutter-video-model.h: + * configure.ac: + * eggsequence.c: + * eggsequence.h: + * wh-db.c: + * wh-db.h: + * wh-video-model-row.c: + * wh-video-model-row.h: + * wh-video-model.c: + * wh-video-model.h: + * wh-video-row-renderer.c: + * wh-video-row-renderer.h: + * wh-video-view.c: + * wh-video-view.h: + * woohaa.c: + Overhaul and refactor lots. diff --git a/attic/woohaa/Makefile.am b/attic/woohaa/Makefile.am new file mode 100644 index 0000000..b275de1 --- /dev/null +++ b/attic/woohaa/Makefile.am @@ -0,0 +1,41 @@ +SUBDIRS=data + +bin_PROGRAMS=woohaa wh-video-thumbnailer + +PKGDATADIR = $(datadir)/woohaa + +AM_CFLAGS = $(DEPS_CFLAGS) $(CLUTTER_HELIX_CFLAGS) $(GCC_FLAGS) -D_GNU_SOURCE -DPKGDATADIR=\"$(PKGDATADIR)\" + +woohaa_LDADD = $(DEPS_LIBS) $(CLUTTER_HELIX_LIBS) +woohaa_SOURCES = woohaa.c \ + wh-busy.c \ + wh-busy.h \ + wh-slider-menu.c \ + wh-slider-menu.h \ + wh-screen-video.c \ + wh-screen-video.h \ + wh-video-model.c \ + wh-video-model.h \ + wh-video-view.c \ + wh-video-view.h \ + wh-video-model-row.c \ + wh-video-model-row.h \ + wh-video-row-renderer.c \ + wh-video-row-renderer.h \ + wh-db.c \ + wh-db.h \ + wh-theme.c \ + wh-theme.h \ + eggsequence.c \ + eggsequence.h \ + util.c \ + util.h + +wh_video_thumbnailer_LDADD = $(DEPS_LIBS) $(CLUTTER_HELIX_LIBS) +wh_video_thumbnailer_SOURCES = wh-video-thumbnailer.c totem-resources.c totem-resources.h + +MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/attic/woohaa/NEWS b/attic/woohaa/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/attic/woohaa/README b/attic/woohaa/README new file mode 100644 index 0000000..406a3ba --- /dev/null +++ b/attic/woohaa/README @@ -0,0 +1,25 @@ +Woohaa README +============= + +Woohaa is hacky prototype movie viewing toy. *YMMV*. + +To run, 'Woohaa ' + +Keys: + up/down - navigate list + left/right - check list view (not implemnted as yet) + Enter - Play movie + q - Quit + + With movie playing: + + left/right - advance movie forward/back. + p - pause + Enter - toggle on screen display + Esc - exit back to list + r - rotate the screen 180 degrees + +Remember its a prototype. + + -- Matthew Allum + diff --git a/attic/woohaa/autogen.sh b/attic/woohaa/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/attic/woohaa/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/attic/woohaa/configure.ac b/attic/woohaa/configure.ac new file mode 100644 index 0000000..963e010 --- /dev/null +++ b/attic/woohaa/configure.ac @@ -0,0 +1,43 @@ +AC_PREREQ(2.53) +AC_INIT(woohaa, 0.0, [http://bugzilla.o-hand.com/enter_bug.cgi?product=woohaa]) +AM_INIT_AUTOMAKE() +AC_CONFIG_SRCDIR(woohaa.c) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_STDC_HEADERS + +PKG_CHECK_MODULES(DEPS, clutter-0.8 gnome-vfs-2.0 clutter-gst-0.8 sqlite3 gdk-2.0 gdk-pixbuf-2.0 gconf-2.0) +AC_SUBST(DEPS_CFLAGS) +AC_SUBST(DEPS_LIBS) + +AC_ARG_ENABLE([helix], + AS_HELP_STRING([--enable-helix],[enable helix]), + [enable_helix=$enableval], + [enable_helix=no]) + +if test "x$GCC" = "xyes"; then + GCC_FLAGS="-g -Wall" +fi + +if test "x$enable_helix" = "xyes"; then + PKG_CHECK_MODULES(CLUTTER_HELIX, [clutter-helix-0.8], + [has_helix=yes], + [has_helix=no]) + if test "x$has_helix" = "xno"; then + AC_MSG_ERROR([Clutter-Helix libraries are not available.]) + fi + + GCC_FLAGS+=" -DUSE_HELIX" + AC_SUBST(CLUTTER_HELIX_CFLAGS) + AC_SUBST(CLUTTER_HELIX_LDFAGS) +fi + +AC_SUBST(GCC_FLAGS) + +AC_OUTPUT([ +Makefile +data/Makefile +]) diff --git a/attic/woohaa/data/Makefile.am b/attic/woohaa/data/Makefile.am new file mode 100644 index 0000000..f41e49e --- /dev/null +++ b/attic/woohaa/data/Makefile.am @@ -0,0 +1,4 @@ +resdir = $(datadir)/woohaa +res_DATA = bg.png busy.png default-thumb.png arrow-next.svg arrow-prev.svg arrow-up.svg arrow-down.svg play.svg selected.svg spinner.svg header.svg + +EXTRA_DIST = bg.png busy.png default-thumb.png arrow-next.svg arrow-prev.svg arrow-up.svg arrow-down.svg play.svg selected.svg spinner.svg header.svg diff --git a/attic/woohaa/data/arrow-down.svg b/attic/woohaa/data/arrow-down.svg new file mode 100644 index 0000000..a65cfc2 --- /dev/null +++ b/attic/woohaa/data/arrow-down.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/woohaa/data/arrow-next.svg b/attic/woohaa/data/arrow-next.svg new file mode 100644 index 0000000..1c18c0e --- /dev/null +++ b/attic/woohaa/data/arrow-next.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/woohaa/data/arrow-prev.svg b/attic/woohaa/data/arrow-prev.svg new file mode 100644 index 0000000..4e8869b --- /dev/null +++ b/attic/woohaa/data/arrow-prev.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/woohaa/data/arrow-up.svg b/attic/woohaa/data/arrow-up.svg new file mode 100644 index 0000000..c30f43f --- /dev/null +++ b/attic/woohaa/data/arrow-up.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/woohaa/data/bg.png b/attic/woohaa/data/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5a55f612b7629993d6037d5162a29de1256657 GIT binary patch literal 6154 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 + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/attic/woohaa/data/play.svg b/attic/woohaa/data/play.svg new file mode 100644 index 0000000..9c86f4b --- /dev/null +++ b/attic/woohaa/data/play.svg @@ -0,0 +1,50 @@ + + +image/svg+xml + + \ No newline at end of file diff --git a/attic/woohaa/data/selected.svg b/attic/woohaa/data/selected.svg new file mode 100644 index 0000000..bfc3156 --- /dev/null +++ b/attic/woohaa/data/selected.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/attic/woohaa/data/spinner.svg b/attic/woohaa/data/spinner.svg new file mode 100644 index 0000000..57c5b96 --- /dev/null +++ b/attic/woohaa/data/spinner.svg @@ -0,0 +1,74 @@ + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/attic/woohaa/eggsequence.c b/attic/woohaa/eggsequence.c new file mode 100644 index 0000000..979a512 --- /dev/null +++ b/attic/woohaa/eggsequence.c @@ -0,0 +1,1709 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "eggsequence.h" + +typedef struct _EggSequenceNode EggSequenceNode; + +struct _EggSequence +{ + EggSequenceNode * end_node; + GDestroyNotify data_destroy_notify; + gboolean access_prohibited; +}; + +struct _EggSequenceNode +{ + gint n_nodes; + EggSequenceNode *parent; + EggSequenceNode *left; + EggSequenceNode *right; + gpointer data; /* For the end node, this field points + * to the sequence + */ +}; + +static EggSequenceNode *node_new (gpointer data); +static EggSequenceNode *node_get_first (EggSequenceNode *node); +static EggSequenceNode *node_get_last (EggSequenceNode *node); +static EggSequenceNode *node_get_prev (EggSequenceNode *node); +static EggSequenceNode *node_get_next (EggSequenceNode *node); +static gint node_get_pos (EggSequenceNode *node); +static EggSequenceNode *node_get_by_pos (EggSequenceNode *node, + gint pos); +static EggSequenceNode *node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp, + gpointer user_data); +static gint node_get_length (EggSequenceNode *node); +static void node_free (EggSequenceNode *node, + EggSequence *seq); +static void node_cut (EggSequenceNode *split); +static void node_insert_after (EggSequenceNode *node, + EggSequenceNode *second); +static void node_insert_before (EggSequenceNode *node, + EggSequenceNode *new); +static void node_unlink (EggSequenceNode *node); +static void node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +static EggSequence * +get_sequence (EggSequenceNode *node) +{ + return (EggSequence *)node_get_last (node)->data; +} + +static void +check_seq_access (EggSequence *seq) +{ + if (G_UNLIKELY (seq->access_prohibited)) + { + g_warning ("Accessing a sequence while it is " + "being sorted or searched is not allowed"); + } +} + +static void +check_iter_access (EggSequenceIter *iter) +{ + check_seq_access (get_sequence (iter)); +} + +static gboolean +is_end (EggSequenceIter *iter) +{ + EggSequence *seq = get_sequence (iter); + + return seq->end_node == iter; +} + +/* + * Public API + */ + +/** + * egg_sequence_new: + * @data_destroy: A #GDestroyNotify function, or %NULL + * + * Creates a new EggSequence. The @data_destroy function will be called + * on all items when the sequence is destroyed and on items that are + * removed from the sequence. + * + * Return value: A new #EggSequence + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_new (GDestroyNotify data_destroy) +{ + EggSequence *seq = g_new (EggSequence, 1); + seq->data_destroy_notify = data_destroy; + + seq->end_node = node_new (seq); + + seq->access_prohibited = FALSE; + + return seq; +} + +/** + * egg_sequence_free: + * @seq: a #EggSequence + * + * Frees the memory allocated for @seq. If @seq has a destroy notify + * function associated with it, that function is called on all items in + * @seq. + * + * Since: 2.14 + **/ +void +egg_sequence_free (EggSequence *seq) +{ + g_return_if_fail (seq != NULL); + + check_seq_access (seq); + + node_free (seq->end_node, seq); + + g_free (seq); +} + +/** + * egg_sequence_foreach_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * @func: a #GFunc + * @user_data: user data passed to @func + * + * Calls @func for each item in the range (@begin, @end) passing + * @user_data to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer user_data) +{ + EggSequence *seq; + EggSequenceIter *iter; + + g_return_if_fail (func != NULL); + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + seq = get_sequence (begin); + + seq->access_prohibited = TRUE; + + iter = begin; + while (iter != end) + { + EggSequenceIter *next = node_get_next (iter); + + func (iter->data, user_data); + + iter = next; + } + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_foreach: + * @seq: a #EggSequence + * @func: the function to call for each item in @seq + * @data: user data passed to @func + * + * Calls @func for each item in the sequence passing @user_data + * to the function. + * + * Since: 2.14 + **/ +void +egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data) +{ + EggSequenceIter *begin, *end; + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + egg_sequence_foreach_range (begin, end, func, data); +} + +/** + * egg_sequence_range_get_midpoint: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Finds an iterator somewhere in the range (@begin, @end). This + * iterator will be close to the middle of the range, but is not + * guaranteed to be exactly in the middle. + * + * The @begin and @end iterators must both point to the same sequence and + * @begin must come before or be equal to @end in the sequence. + * + * Return value: A #EggSequenceIter which is close to the middle of + * the (@begin, @end) range. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_range_get_midpoint (EggSequenceIter *begin, + EggSequenceIter *end) +{ + int begin_pos, end_pos, mid_pos; + + g_return_val_if_fail (begin != NULL, NULL); + g_return_val_if_fail (end != NULL, NULL); + g_return_val_if_fail (get_sequence (begin) == get_sequence (end), NULL); + + begin_pos = node_get_pos (begin); + end_pos = node_get_pos (end); + + g_return_val_if_fail (end_pos >= begin_pos, NULL); + + mid_pos = begin_pos + (end_pos - begin_pos) / 2; + + return node_get_by_pos (begin, mid_pos); +} + +/** + * egg_sequence_iter_compare: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Returns a negative number if @a comes before @b, 0 if they are equal, + * and a positive number if @a comes after @b. + * + * The @a and @b iterators must point into the same sequence. + * + * Return value: A negative number if @a comes before @b, 0 if they are + * equal, and a positive number if @a comes after @b. + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter *b) +{ + gint a_pos, b_pos; + + g_return_val_if_fail (a != NULL, 0); + g_return_val_if_fail (b != NULL, 0); + g_return_val_if_fail (get_sequence (a) == get_sequence (b), 0); + + check_iter_access (a); + check_iter_access (b); + + a_pos = node_get_pos (a); + b_pos = node_get_pos (b); + + if (a_pos == b_pos) + return 0; + else if (a_pos > b_pos) + return 1; + else + return -1; +} + +/** + * egg_sequence_append: + * @seq: a #EggSequencePointer + * @data: the data for the new item + * + * Adds a new item to the end of @seq. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_append (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + node_insert_before (seq->end_node, node); + + return node; +} + +/** + * egg_sequence_prepend: + * @seq: a #EggSequence + * @data: the data for the new item + * + * Adds a new item to the front of @seq + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_prepend (EggSequence *seq, + gpointer data) +{ + EggSequenceNode *node, *first; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + node = node_new (data); + first = node_get_first (seq->end_node); + + node_insert_before (first, node); + + return node; +} + +/** + * egg_sequence_insert_before: + * @iter: a #EggSequenceIter + * @data: the data for the new item + * + * Inserts a new item just before the item pointed to by @iter. + * + * Return value: An iterator pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_before (EggSequenceIter *iter, + gpointer data) +{ + EggSequenceNode *node; + + g_return_val_if_fail (iter != NULL, NULL); + + check_iter_access (iter); + + node = node_new (data); + + node_insert_before (iter, node); + + return node; +} + +/** + * egg_sequence_remove: + * @iter: a #EggSequenceIter + * + * Removes the item pointed to by @iter. It is an error to pass the + * end iterator to this function. + * + * If the sequnce has a data destroy function associated with it, this + * function is called on the data for the removed item. + * + * Since: 2.14 + **/ +void +egg_sequence_remove (EggSequenceIter *iter) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + seq = get_sequence (iter); + + node_unlink (iter); + node_free (iter, seq); +} + +/** + * egg_sequence_remove_range: + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Removes all items in the (@begin, @end) range. + * + * If the sequence has a data destroy function associated with it, this + * function is called on the data for the removed items. + * + * Since: 2.14 + **/ +void +egg_sequence_remove_range (EggSequenceIter *begin, + EggSequenceIter *end) +{ + g_return_if_fail (get_sequence (begin) == get_sequence (end)); + + check_iter_access (begin); + check_iter_access (end); + + egg_sequence_move_range (NULL, begin, end); +} + +/** + * egg_sequence_move_range: + * @dest: a #EggSequenceIter + * @begin: a #EggSequenceIter + * @end: a #EggSequenceIter + * + * Inserts the (@begin, @end) range at the destination pointed to by ptr. + * The @begin and @end iters must point into the same sequence. It is + * allowed for @dest to point to a different sequence than the one pointed + * into by @begin and @end. + * + * If @dest is NULL, the range indicated by @begin and @end is + * removed from the sequence. If @dest iter points to a place within + * the (@begin, @end) range, the range does not move. + * + * Since: 2.14 + **/ +void +egg_sequence_move_range (EggSequenceIter *dest, + EggSequenceIter *begin, + EggSequenceIter *end) +{ + EggSequence *src_seq; + EggSequenceNode *first; + + g_return_if_fail (begin != NULL); + g_return_if_fail (end != NULL); + + check_iter_access (begin); + check_iter_access (end); + if (dest) + check_iter_access (dest); + + src_seq = get_sequence (begin); + + g_return_if_fail (src_seq == get_sequence (end)); + + /* Dest points to begin or end? */ + if (dest == begin || dest == end) + return; + + /* begin comes after end? */ + if (egg_sequence_iter_compare (begin, end) >= 0) + return; + + /* dest points somewhere in the (begin, end) range? */ + if (dest && get_sequence (dest) == src_seq && + egg_sequence_iter_compare (dest, begin) > 0 && + egg_sequence_iter_compare (dest, end) < 0) + { + return; + } + + src_seq = get_sequence (begin); + + first = node_get_first (begin); + + node_cut (begin); + + node_cut (end); + + if (first != begin) + node_insert_after (node_get_last (first), end); + + if (dest) + node_insert_before (dest, begin); + else + node_free (begin, src_seq); +} + +typedef struct +{ + GCompareDataFunc cmp_func; + gpointer cmp_data; + EggSequenceNode *end_node; +} SortInfo; + +/* This function compares two iters using a normal compare + * function and user_data passed in in a SortInfo struct + */ +static gint +iter_compare (EggSequenceIter *node1, + EggSequenceIter *node2, + gpointer data) +{ + const SortInfo *info = data; + gint retval; + + if (node1 == info->end_node) + return 1; + + if (node2 == info->end_node) + return -1; + + retval = info->cmp_func (node1->data, node2->data, info->cmp_data); + + return retval; +} + +/** + * egg_sequence_sort: + * @seq: a #EggSequence + * @cmp_func: the #GCompareDataFunc used to sort @seq. This function is + * passed two items of @seq and should return 0 if they are equal, + * a negative value fi the first comes before the second, and a + * positive value if the second comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Sorts @seq using @cmp_func. + * + * Since: 2.14 + **/ +void +egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, seq->end_node }; + + check_seq_access (seq); + + egg_sequence_sort_iter (seq, iter_compare, &info); +} + +/** + * egg_sequence_insert_sorted: + * @seq: a #EggSequence + * @data: the data to insert + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Inserts @data into @queue using @func to determine the new position. + * @seq must already be sorted according to @cmp_func; otherwise the + * new position of is undefined. + * + * Return value: A #EggSequenceIter pointing to the new item. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + g_return_val_if_fail (cmp_func != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_insert_sorted_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_changed: + * @iter: A #EggSequenceIter + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Moves the data pointed to a new position as indicated by @cmp_func. This + * function should be called for items in a sequence already sorted according + * to @cmp_func whenever some aspect of an item changes so that @cmp_func + * may return different values for that item. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed (EggSequenceIter *iter, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_if_fail (!is_end (iter)); + + info.end_node = get_sequence (iter)->end_node; + check_iter_access (iter); + + egg_sequence_sort_changed_iter (iter, iter_compare, &info); +} + +/** + * egg_sequence_search: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #GCompareDataFunc used to compare items in the queue. It + * is called with two items of the @seq and @user_data. It should + * return 0 if the items are equal, a negative value if the first + * item comes before the second, and a positive value if the second + * item comes before the first. + * @cmp_data: user data passed to @cmp_func. + * + * Returns an iterator pointing to the position where @data would + * be inserted according to @cmp_func and @cmp_data. + * + * Return value: An #EggSequenceIter pointing to the position where @data + * would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data) +{ + SortInfo info = { cmp_func, cmp_data, NULL }; + + g_return_val_if_fail (seq != NULL, NULL); + + info.end_node = seq->end_node; + check_seq_access (seq); + + return egg_sequence_search_iter (seq, data, iter_compare, &info); +} + +/** + * egg_sequence_sort_iter: + * @seq: a #EggSequence + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort(), but uses a #EggSequenceIterCompareFunc instead + * of a GCompareDataFunc as the compare function + * + * Since: 2.14 + **/ +void +egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequence *tmp; + EggSequenceNode *begin, *end; + + g_return_if_fail (seq != NULL); + g_return_if_fail (cmp_func != NULL); + + check_seq_access (seq); + + begin = egg_sequence_get_begin_iter (seq); + end = egg_sequence_get_end_iter (seq); + + tmp = egg_sequence_new (NULL); + + egg_sequence_move_range (egg_sequence_get_begin_iter (tmp), begin, end); + + tmp->access_prohibited = TRUE; + seq->access_prohibited = TRUE; + + while (egg_sequence_get_length (tmp) > 0) + { + EggSequenceNode *node = egg_sequence_get_begin_iter (tmp); + + node_unlink (node); + + node_insert_sorted (seq->end_node, node, seq->end_node, cmp_func, cmp_data); + } + + tmp->access_prohibited = FALSE; + seq->access_prohibited = FALSE; + + egg_sequence_free (tmp); +} + +/** + * egg_sequence_sort_changed_iter: + * @iter: a #EggSequenceIter + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_sort_changed(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Since: 2.14 + **/ +void +egg_sequence_sort_changed_iter (EggSequenceIter *iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequence *seq; + EggSequenceIter *next, *prev; + + g_return_if_fail (!is_end (iter)); + + check_iter_access (iter); + + /* If one of the neighbours is equal to iter, then + * don't move it. This ensures that sort_changed() is + * a stable operation. + */ + + next = node_get_next (iter); + prev = node_get_prev (iter); + + if (prev != iter && iter_cmp (prev, iter, cmp_data) == 0) + return; + + if (!is_end (next) && iter_cmp (next, iter, cmp_data) == 0) + return; + + seq = get_sequence (iter); + + seq->access_prohibited = TRUE; + + node_unlink (iter); + node_insert_sorted (seq->end_node, iter, seq->end_node, iter_cmp, cmp_data); + + seq->access_prohibited = FALSE; +} + +/** + * egg_sequence_insert_sorted_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_insert_sorted(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the new item + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data) +{ + EggSequenceNode *new_node; + EggSequence *tmp_seq; + + check_seq_access (seq); + + /* Create a new temporary sequence and put the new node into + * that. The reason for this is that the user compare function + * will be called with the new node, and if it dereferences, + * "is_end" will be called on it. But that will crash if the + * node is not actually in a sequence. + * + * node_insert_sorted() makes sure the node is unlinked before + * is is inserted. + * + * The reason we need the "iter" versions at all is that that + * is the only kind of compare functions GtkTreeView can use. + */ + tmp_seq = egg_sequence_new (NULL); + new_node = egg_sequence_append (tmp_seq, data); + + node_insert_sorted (seq->end_node, new_node, + seq->end_node, iter_cmp, cmp_data); + + egg_sequence_free (tmp_seq); + + return new_node; +} + +/** + * egg_sequence_search_iter: + * @seq: a #EggSequence + * @data: data for the new item + * @cmp_func: the #EggSequenceItercompare used to compare iterators in the + * sequence. It is called with two iterators pointing into @seq. It should + * return 0 if the iterators are equal, a negative value if the first + * iterator comes before the second, and a positive value if the second + * iterator comes before the first. + * @cmp_data: user data passed to @cmp_func + * + * Like egg_sequence_search(), but uses + * a #EggSequenceIterCompareFunc instead of a #GCompareDataFunc as + * the compare function. + * + * Return value: A #EggSequenceIter pointing to the position in @seq + * where @data would have been inserted according to @cmp_func and @cmp_data. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *node; + EggSequenceNode *dummy; + + g_return_val_if_fail (seq != NULL, NULL); + + check_seq_access (seq); + + seq->access_prohibited = TRUE; + + dummy = node_new (data); + + node = node_find_closest (seq->end_node, dummy, + seq->end_node, cmp_func, cmp_data); + + node_free (dummy, NULL); + + seq->access_prohibited = FALSE; + + return node; +} + +/** + * egg_sequence_iter_get_sequence: + * @iter: a #EggSequenceIter + * + * Returns the #EggSequence that @iter points into. + * + * Return value: The #EggSequence that @iter points into. + * + * Since: 2.14 + **/ +EggSequence * +egg_sequence_iter_get_sequence (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return get_sequence (iter); +} + +/** + * egg_sequence_get: + * @iter: a #EggSequenceIter + * + * Returns the data that @iter points to. + * + * Return value: The data that @iter points to + * + * Since: 2.14 + **/ +gpointer +egg_sequence_get (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + g_return_val_if_fail (!is_end (iter), NULL); + + return iter->data; +} + +/** + * egg_sequence_set: + * @iter: a #EggSequenceIter + * @data: new data for the item + * + * Changes the data for the item pointed to by @iter to be @data. If + * the sequence has a data destroy function associated with it, that + * function is called on the existing data that @iter pointed to. + * + * Since: 2.14 + **/ +void +egg_sequence_set (EggSequenceIter *iter, + gpointer data) +{ + EggSequence *seq; + + g_return_if_fail (iter != NULL); + g_return_if_fail (!is_end (iter)); + + seq = get_sequence (iter); + + /* If @data is identical to iter->data, it is destroyed + * here. This will work right in case of ref-counted objects. Also + * it is similar to what ghashtables do. + * + * For non-refcounted data it's a little less convenient, but + * code relying on self-setting not destroying would be + * pretty dubious anyway ... + */ + + if (seq->data_destroy_notify) + seq->data_destroy_notify (iter->data); + + iter->data = data; +} + +/** + * egg_sequence_get_length: + * @seq: a #EggSequence + * + * Returns the length of @seq + * + * Return value: The length of @seq + * + * Since: 2.14 + **/ +gint +egg_sequence_get_length (EggSequence *seq) +{ + return node_get_length (seq->end_node) - 1; +} + +/** + * egg_sequence_get_end_iter: + * @seq: a #EggSequence + * + * Returns the end iterator for @seg + * + * Return value: The end iterator for @seq + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_end_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + + g_assert (is_end (seq->end_node)); + + return seq->end_node; +} + +/** + * egg_sequence_get_begin_iter: + * @seq: a #EggSequence + * + * Returns the begin iterator for @seq. + * + * Return value: The begin iterator for @seq. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_begin_iter (EggSequence *seq) +{ + g_return_val_if_fail (seq != NULL, NULL); + return node_get_first (seq->end_node); +} + +static int +clamp_position (EggSequence *seq, + int pos) +{ + gint len = egg_sequence_get_length (seq); + + if (pos > len || pos < 0) + pos = len; + + return pos; +} + +/* + * if pos > number of items or -1, will return end pointer + */ +/** + * egg_sequence_get_iter_at_pos: + * @seq: a #EggSequence + * @pos: a position in @seq, or -1 for the end. + * + * Returns the iterator as position @pos. If @pos is negative or larger + * than the number of items in @seq, the end iterator is returned. + * + * Return value: The #EggSequenceIter at position @pos + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos) +{ + g_return_val_if_fail (seq != NULL, NULL); + + pos = clamp_position (seq, pos); + + return node_get_by_pos (seq->end_node, pos); +} + +/** + * egg_sequence_move: + * @src: a #EggSequenceIter pointing to the item to move + * @dest: a #EggSequenceIter pointing to the position to which + * the item is moved. + * + * Move the item pointed to by @src to the position indicated by @dest. + * After calling this function @dest will point to the position immediately + * after @src. + * + * Since: 2.14 + **/ +void +egg_sequence_move (EggSequenceIter *src, + EggSequenceIter *dest) +{ + g_return_if_fail (src != NULL); + g_return_if_fail (dest != NULL); + g_return_if_fail (!is_end (src)); + + if (src == dest) + return; + + node_unlink (src); + node_insert_before (dest, src); +} + +/* EggSequenceIter */ + +/** + * egg_sequence_iter_is_end: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the end iterator + * + * Return value: Whether @iter is the end iterator. + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_end (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return is_end (iter); +} + +/** + * egg_sequence_iter_is_begin: + * @iter: a #EggSequenceIter + * + * Returns whether @iter is the begin iterator + * + * Return value: Whether @iter is the begin iterator + * + * Since: 2.14 + **/ +gboolean +egg_sequence_iter_is_begin (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, FALSE); + + return (node_get_prev (iter) == iter); +} + +/** + * egg_sequence_iter_get_position: + * @iter: a #EggSequenceIter + * + * Returns the position of @iter + * + * Return value: The position of @iter + * + * Since: 2.14 + **/ +gint +egg_sequence_iter_get_position (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, -1); + + return node_get_pos (iter); +} + +/** + * egg_sequence_iter_next: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the next position after @iter. If + * @iter is the end iterator, the end iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the next position after @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_next (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_next (iter); +} + +/** + * egg_sequence_iter_prev: + * @iter: a #EggSequenceIter + * + * Returns an iterator pointing to the previous position before @iter. If + * @iter is the begin iterator, the begin iterator is returned. + * + * Return value: A #EggSequenceIter pointing to the previous position before + * @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_prev (EggSequenceIter *iter) +{ + g_return_val_if_fail (iter != NULL, NULL); + + return node_get_prev (iter); +} + +/** + * egg_sequence_iter_move: + * @iter: a #EggSequenceIter + * @delta: A positive or negative number indicating how many positions away + * from @iter the returned #EggSequenceIter will be. + * + * Returns the #EggSequenceIter which is @delta positions away from @iter. + * If @iter is closer than -@delta positions to the beginning of the sequence, + * the begin iterator is returned. If @iter is closer than @delta positions + * to the end of the queue, the end iterator is returned. + * + * Return value: a #EggSequenceIter which is @delta positions away from @iter. + * + * Since: 2.14 + **/ +EggSequenceIter * +egg_sequence_iter_move (EggSequenceIter *iter, + gint delta) +{ + gint new_pos; + + g_return_val_if_fail (iter != NULL, NULL); + + new_pos = node_get_pos (iter) + delta; + + new_pos = clamp_position (get_sequence (iter), new_pos); + + return node_get_by_pos (iter, new_pos); +} + +/** + * egg_sequence_swap: + * @a: a #EggSequenceIter + * @b: a #EggSequenceIter + * + * Swaps the items pointed to by @a and @b + * + * Since: 2.14 + **/ +void +egg_sequence_swap (EggSequenceIter *a, + EggSequenceIter *b) +{ + EggSequenceNode *leftmost, *rightmost, *rightmost_next; + int a_pos, b_pos; + + g_return_if_fail (!egg_sequence_iter_is_end (a)); + g_return_if_fail (!egg_sequence_iter_is_end (b)); + + if (a == b) + return; + + a_pos = egg_sequence_iter_get_position (a); + b_pos = egg_sequence_iter_get_position (b); + + if (a_pos > b_pos) + { + leftmost = b; + rightmost = a; + } + else + { + leftmost = a; + rightmost = b; + } + + rightmost_next = node_get_next (rightmost); + + /* Situation is now like this: + * + * ..., leftmost, ......., rightmost, rightmost_next, ... + * + */ + egg_sequence_move (rightmost, leftmost); + egg_sequence_move (leftmost, rightmost_next); +} + +/* + * Implementation of the node_* methods + */ +static void +node_update_fields (EggSequenceNode *node) +{ + g_assert (node != NULL); + + node->n_nodes = 1; + + if (node->left) + node->n_nodes += node->left->n_nodes; + + if (node->right) + node->n_nodes += node->right->n_nodes; +} + +#define NODE_LEFT_CHILD(n) (((n)->parent) && ((n)->parent->left) == (n)) +#define NODE_RIGHT_CHILD(n) (((n)->parent) && ((n)->parent->right) == (n)) + +static void +node_rotate (EggSequenceNode *node) +{ + EggSequenceNode *tmp, *old; + + g_assert (node->parent); + g_assert (node->parent != node); + + if (NODE_LEFT_CHILD (node)) + { + /* rotate right */ + tmp = node->right; + + node->right = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->left == node->right) + node->parent->left = node; + else + node->parent->right = node; + } + + g_assert (node->right); + + node->right->parent = node; + node->right->left = tmp; + + if (node->right->left) + node->right->left->parent = node->right; + + old = node->right; + } + else + { + /* rotate left */ + tmp = node->left; + + node->left = node->parent; + node->parent = node->parent->parent; + if (node->parent) + { + if (node->parent->right == node->left) + node->parent->right = node; + else + node->parent->left = node; + } + + g_assert (node->left); + + node->left->parent = node; + node->left->right = tmp; + + if (node->left->right) + node->left->right->parent = node->left; + + old = node->left; + } + + node_update_fields (old); + node_update_fields (node); +} + +static EggSequenceNode * +splay (EggSequenceNode *node) +{ + while (node->parent) + { + if (!node->parent->parent) + { + /* zig */ + node_rotate (node); + } + else if ((NODE_LEFT_CHILD (node) && NODE_LEFT_CHILD (node->parent)) || + (NODE_RIGHT_CHILD (node) && NODE_RIGHT_CHILD (node->parent))) + { + /* zig-zig */ + node_rotate (node->parent); + node_rotate (node); + } + else + { + /* zig-zag */ + node_rotate (node); + node_rotate (node); + } + } + + return node; +} + +static EggSequenceNode * +node_new (gpointer data) +{ + EggSequenceNode *node = g_slice_new0 (EggSequenceNode); + + node->parent = NULL; + node->parent = NULL; + node->left = NULL; + node->right = NULL; + + node->data = data; + node->n_nodes = 1; + + return node; +} + +static EggSequenceNode * +find_min (EggSequenceNode *node) +{ + splay (node); + + while (node->left) + node = node->left; + + return node; +} + +static EggSequenceNode * +find_max (EggSequenceNode *node) +{ + splay (node); + + while (node->right) + node = node->right; + + return node; +} + +static EggSequenceNode * +node_get_first (EggSequenceNode *node) +{ + return splay (find_min (node)); +} + +static EggSequenceNode * +node_get_last (EggSequenceNode *node) +{ + return splay (find_max (node)); +} + +static gint +get_n_nodes (EggSequenceNode *node) +{ + if (node) + return node->n_nodes; + else + return 0; +} + +static EggSequenceNode * +node_get_by_pos (EggSequenceNode *node, + gint pos) +{ + gint i; + + g_assert (node != NULL); + + splay (node); + + while ((i = get_n_nodes (node->left)) != pos) + { + if (i < pos) + { + node = node->right; + pos -= (i + 1); + } + else + { + node = node->left; + g_assert (node->parent != NULL); + } + } + + return splay (node); +} + +static EggSequenceNode * +node_get_prev (EggSequenceNode *node) +{ + splay (node); + + if (node->left) + { + node = node->left; + while (node->right) + node = node->right; + } + + return splay (node); +} + +static EggSequenceNode * +node_get_next (EggSequenceNode *node) +{ + splay (node); + + if (node->right) + { + node = node->right; + while (node->left) + node = node->left; + } + + return splay (node); +} + +static gint +node_get_pos (EggSequenceNode *node) +{ + splay (node); + + return get_n_nodes (node->left); +} + +/* Return closest node _strictly_ bigger than @needle (does always exist because + * there is an end_node) + */ +static EggSequenceNode * +node_find_closest (EggSequenceNode *haystack, + EggSequenceNode *needle, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *best; + gint c; + + g_assert (haystack); + + haystack = splay (haystack); + + do + { + best = haystack; + + /* cmp_func can't be called with the end node (it may be user-supplied) */ + if (haystack == end) + c = 1; + else + c = cmp_func (haystack, needle, cmp_data); + + /* In the following we don't break even if c == 0. Instaed we go on searching + * along the 'bigger' nodes, so that we find the last one that is equal + * to the needle. + */ + if (c > 0) + haystack = haystack->left; + else + haystack = haystack->right; + } + while (haystack != NULL); + + /* If the best node is smaller or equal to the data, then move one step + * to the right to make sure the best one is strictly bigger than the data + */ + if (best != end && c <= 0) + best = node_get_next (best); + + return best; +} + +static void +node_free (EggSequenceNode *node, + EggSequence *seq) +{ + GQueue *stack = g_queue_new (); + + splay (node); + + g_queue_push_head (stack, node); + + while (!g_queue_is_empty (stack)) + { + node = g_queue_pop_head (stack); + + if (node) + { + g_queue_push_head (stack, node->right); + g_queue_push_head (stack, node->left); + + if (seq && seq->data_destroy_notify && node != seq->end_node) + seq->data_destroy_notify (node->data); + + g_slice_free (EggSequenceNode, node); + } + } + + g_queue_free (stack); +} + +/* Splits into two trees, left and right. + * @node will be part of the right tree + */ + +static void +node_cut (EggSequenceNode *node) +{ + splay (node); + + g_assert (node->parent == NULL); + + if (node->left) + node->left->parent = NULL; + + node->left = NULL; + node_update_fields (node); +} + +static void +node_insert_before (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_min (new)); + g_assert (new->left == NULL); + + if (node->left) + node->left->parent = new; + + new->left = node->left; + new->parent = node; + + node->left = new; + + node_update_fields (new); + node_update_fields (node); +} + +static void +node_insert_after (EggSequenceNode *node, + EggSequenceNode *new) +{ + g_assert (node != NULL); + g_assert (new != NULL); + + splay (node); + + new = splay (find_max (new)); + g_assert (new->right == NULL); + g_assert (node->parent == NULL); + + if (node->right) + node->right->parent = new; + + new->right = node->right; + new->parent = node; + + node->right = new; + + node_update_fields (new); + node_update_fields (node); +} + +static gint +node_get_length (EggSequenceNode *node) +{ + g_assert (node != NULL); + + splay (node); + return node->n_nodes; +} + +static void +node_unlink (EggSequenceNode *node) +{ + EggSequenceNode *right, *left; + + splay (node); + + left = node->left; + right = node->right; + + node->parent = node->left = node->right = NULL; + node_update_fields (node); + + if (right) + { + right->parent = NULL; + + right = node_get_first (right); + g_assert (right->left == NULL); + + right->left = left; + if (left) + { + left->parent = right; + node_update_fields (right); + } + } + else if (left) + { + left->parent = NULL; + } +} + +static void +node_insert_sorted (EggSequenceNode *node, + EggSequenceNode *new, + EggSequenceNode *end, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data) +{ + EggSequenceNode *closest; + + closest = node_find_closest (node, new, end, cmp_func, cmp_data); + + node_unlink (new); + + node_insert_before (closest, new); +} + +static gint +node_calc_height (EggSequenceNode *node) +{ + gint left_height; + gint right_height; + + if (node) + { + left_height = 0; + right_height = 0; + + if (node->left) + left_height = node_calc_height (node->left); + + if (node->right) + right_height = node_calc_height (node->right); + + return MAX (left_height, right_height) + 1; + } + + return 0; +} + +/* Self test functions */ + +static void +check_node (EggSequenceNode *node) +{ + if (node) + { + g_assert (node->parent != node); + g_assert (node->n_nodes == + 1 + get_n_nodes (node->left) + get_n_nodes (node->right)); + check_node (node->left); + check_node (node->right); + } +} + +void +egg_sequence_self_test (EggSequence *seq) +{ + EggSequenceNode *node = splay (seq->end_node); + + check_node (node); +} diff --git a/attic/woohaa/eggsequence.h b/attic/woohaa/eggsequence.h new file mode 100644 index 0000000..107db47 --- /dev/null +++ b/attic/woohaa/eggsequence.h @@ -0,0 +1,120 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Soeren Sandmann (sandmann@daimi.au.dk) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#ifndef __GSEQUENCE_H__ +#define __GSEQUENCE_H__ + +typedef struct _EggSequence EggSequence; +typedef struct _EggSequenceNode EggSequenceIter; + + + +typedef gint (* EggSequenceIterCompareFunc) (EggSequenceIter *a, + EggSequenceIter *b, + gpointer data); + +/* EggSequence */ +EggSequence * egg_sequence_new (GDestroyNotify data_destroy); +void egg_sequence_free (EggSequence *seq); +gint egg_sequence_get_length (EggSequence *seq); +void egg_sequence_foreach (EggSequence *seq, + GFunc func, + gpointer data); +void egg_sequence_foreach_range (EggSequenceIter *begin, + EggSequenceIter *end, + GFunc func, + gpointer data); +void egg_sequence_sort (EggSequence *seq, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_iter (EggSequence *seq, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* Getting iters */ +EggSequenceIter *egg_sequence_get_begin_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_end_iter (EggSequence *seq); +EggSequenceIter *egg_sequence_get_iter_at_pos (EggSequence *seq, + gint pos); +EggSequenceIter *egg_sequence_append (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_prepend (EggSequence *seq, + gpointer data); +EggSequenceIter *egg_sequence_insert_before (EggSequenceIter * iter, + gpointer data); +void egg_sequence_move (EggSequenceIter * src, + EggSequenceIter * dest); +void egg_sequence_swap (EggSequenceIter * a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_insert_sorted (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_insert_sorted_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); +void egg_sequence_sort_changed (EggSequenceIter * iter, + GCompareDataFunc cmp_func, + gpointer cmp_data); +void egg_sequence_sort_changed_iter (EggSequenceIter * iter, + EggSequenceIterCompareFunc iter_cmp, + gpointer cmp_data); + +void egg_sequence_remove (EggSequenceIter * iter); +void egg_sequence_remove_range (EggSequenceIter * begin, + EggSequenceIter * end); +void egg_sequence_move_range (EggSequenceIter * iter, + EggSequenceIter * begin, + EggSequenceIter * end); +EggSequenceIter *egg_sequence_search (EggSequence *seq, + gpointer data, + GCompareDataFunc cmp_func, + gpointer cmp_data); +EggSequenceIter *egg_sequence_search_iter (EggSequence *seq, + gpointer data, + EggSequenceIterCompareFunc cmp_func, + gpointer cmp_data); + +/* dereferencing */ +gpointer egg_sequence_get (EggSequenceIter * iter); +void egg_sequence_set (EggSequenceIter * iter, + gpointer data); + + +/* operations on EggSequenceIter * */ +gboolean egg_sequence_iter_is_begin (EggSequenceIter * iter); +gboolean egg_sequence_iter_is_end (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_next (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_prev (EggSequenceIter * iter); +gint egg_sequence_iter_get_position (EggSequenceIter * iter); +EggSequenceIter *egg_sequence_iter_move (EggSequenceIter * iter, + gint leap); +EggSequence * egg_sequence_iter_get_sequence (EggSequenceIter * iter); + + +/* search */ +gint egg_sequence_iter_compare (EggSequenceIter *a, + EggSequenceIter * b); +EggSequenceIter *egg_sequence_range_get_midpoint (EggSequenceIter * begin, + EggSequenceIter * end); + +#endif /* __GSEQUENCE_H__ */ diff --git a/attic/woohaa/totem-resources.c b/attic/woohaa/totem-resources.c new file mode 100644 index 0000000..4758fa6 --- /dev/null +++ b/attic/woohaa/totem-resources.c @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2007 Bastien Nocera + * + * 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. + * + * 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Totem project hereby grant permission for non-gpl compatible GStreamer + * plugins to be used and distributed together with GStreamer and Totem. This + * permission are above and beyond the permissions granted by the GPL license + * Totem is covered by. + * + * Monday 7th February 2005: Christian Schaller: Add exception clause. + * See license_change file for details. + * + */ + +#include "config.h" + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "totem-resources.h" + +#define MAX_HELPER_MEMORY (256 * 1024 * 1024) /* 256 MB */ +#define MAX_HELPER_SECONDS (15) /* 15 seconds */ +#define DEFAULT_SLEEP_TIME (30 * G_USEC_PER_SEC) /* 30 seconds */ + +static guint sleep_time = DEFAULT_SLEEP_TIME; +static gboolean finished = TRUE; + +static void +set_resource_limits (const char *input) +{ + struct rlimit limit; + struct stat buf; + rlim_t max; + + g_return_if_fail (input != NULL); + + max = MAX_HELPER_MEMORY; + + /* Set the maximum virtual size depending on the size + * of the file to process, as we wouldn't be able to + * mmap it otherwise */ + if (g_stat (input, &buf) == 0) { + max = MAX_HELPER_MEMORY + buf.st_size; + } else if (g_str_has_prefix (input, "file://") != FALSE) { + char *file; + file = g_filename_from_uri (input, NULL, NULL); + if (file != NULL && g_stat (file, &buf) == 0) + max = MAX_HELPER_MEMORY + buf.st_size; + g_free (file); + } + + limit.rlim_cur = max; + limit.rlim_max = max; + + setrlimit (RLIMIT_DATA, &limit); + + limit.rlim_cur = MAX_HELPER_SECONDS; + limit.rlim_max = MAX_HELPER_SECONDS; + setrlimit (RLIMIT_CPU, &limit); +} + +static gpointer +time_monitor (gpointer data) +{ + const char *app_name; + + g_usleep (sleep_time); + + if (finished != FALSE) + g_thread_exit (NULL); + + app_name = g_get_application_name (); + if (app_name == NULL) + app_name = g_get_prgname (); + g_print ("%s couln't process file: '%s'\n" + "Reason: Took too much time to process.\n", + app_name, + (const char *) data); + + exit (0); +} + +void +totem_resources_monitor_start (const char *input, guint wall_clock_time) +{ + set_resource_limits (input); + + if (wall_clock_time != 0) + sleep_time = wall_clock_time; + + finished = FALSE; + g_thread_create (time_monitor, (gpointer) input, FALSE, NULL); +} + +void +totem_resources_monitor_stop (void) +{ + finished = TRUE; +} + diff --git a/attic/woohaa/totem-resources.h b/attic/woohaa/totem-resources.h new file mode 100644 index 0000000..d1c0848 --- /dev/null +++ b/attic/woohaa/totem-resources.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2007 Bastien Nocera + * + * 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. + * + * 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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Totem project hereby grant permission for non-gpl compatible GStreamer + * plugins to be used and distributed together with GStreamer and Totem. This + * permission are above and beyond the permissions granted by the GPL license + * Totem is covered by. + * + * Monday 7th February 2005: Christian Schaller: Add exception clause. + * See license_change file for details. + * + */ + +#include + +void totem_resources_monitor_start (const char *input, + guint wall_clock_time); +void totem_resources_monitor_stop (void); + diff --git a/attic/woohaa/util.c b/attic/woohaa/util.c new file mode 100644 index 0000000..dd7d098 --- /dev/null +++ b/attic/woohaa/util.c @@ -0,0 +1,76 @@ +#include "util.h" +#include "math.h" + +#include + +ClutterActor* +util_actor_from_file (const gchar *path, int width, int height) +{ + ClutterActor *actor; + + actor = clutter_texture_new_from_file (path, NULL); + if (actor) + clutter_actor_set_size (actor, width, height); + + return actor; +} + +ClutterActor* +util_texture_from_root_window (void) +{ + ClutterActor *texture = NULL; + GdkWindow *root; + GdkPixbuf *pixbuf; + + gdk_init(NULL, NULL); + + root = gdk_get_default_root_window (); + + pixbuf = gdk_pixbuf_get_from_drawable (NULL, + root, + NULL, + 0, + 0, + 0, + 0, + gdk_screen_width(), + gdk_screen_height()); + + if (pixbuf) + { + + texture = clutter_texture_new (); + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (texture), + gdk_pixbuf_get_pixels (pixbuf), + gdk_pixbuf_get_has_alpha (pixbuf), + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf), + gdk_pixbuf_get_rowstride (pixbuf), + gdk_pixbuf_get_n_channels (pixbuf), + 0, + NULL); + } + + return texture; +} + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy) +{ + ClutterTimeline *timeline; + gint current_frame_num, n_frames; + gdouble x, sine; + + timeline = clutter_alpha_get_timeline (alpha); + + current_frame_num = clutter_timeline_get_current_frame (timeline); + n_frames = clutter_timeline_get_n_frames (timeline); + + x = (gdouble) (current_frame_num * 0.5f * M_PI) / n_frames ; + /* sine = (sin (x - (M_PI / 0.5f)) + 1.0f) * 0.5f; */ + sine = (sin (x - (M_PI / 0.5f))) ; + + return (guint32) (sine * (gdouble) CLUTTER_ALPHA_MAX_ALPHA); +} + diff --git a/attic/woohaa/util.h b/attic/woohaa/util.h new file mode 100644 index 0000000..a363d55 --- /dev/null +++ b/attic/woohaa/util.h @@ -0,0 +1,51 @@ +#ifndef _FOO_FOO_UTIL +#define _FOO_FOO_UTIL + +#include + +G_BEGIN_DECLS + +#define CSW() CLUTTER_STAGE_WIDTH() +#define CSH() CLUTTER_STAGE_HEIGHT() + +typedef void (*UtilAnimCompleteFunc) (ClutterActor *actor, + gpointer user_data); + +guint32 +alpha_sine_inc_func (ClutterAlpha *alpha, + gpointer dummy); + +ClutterActor* +util_actor_from_file (const gchar *path, int width, int height); + +ClutterTimeline* +util_actor_fade_in (ClutterActor *actor, + UtilAnimCompleteFunc func, + gpointer data); + +ClutterTimeline* +util_actor_fade_out (ClutterActor *actor, + UtilAnimCompleteFunc func, + gpointer data); + +ClutterTimeline* +util_actor_fade (ClutterActor *actor, + UtilAnimCompleteFunc func, + guint8 start_opacity, + guint8 end_opacity, + gpointer data); + + +ClutterTimeline* +util_actor_zoom (ClutterActor *actor, + UtilAnimCompleteFunc func, + gdouble start_scale, + gdouble end_scale, + gpointer data); + +ClutterActor* +util_texture_from_root_window (void); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-busy.c b/attic/woohaa/wh-busy.c new file mode 100644 index 0000000..6a0df15 --- /dev/null +++ b/attic/woohaa/wh-busy.c @@ -0,0 +1,443 @@ +#include +#include "wh-busy.h" + +#define CSW() CLUTTER_STAGE_WIDTH() +#define CSH() CLUTTER_STAGE_HEIGHT() + +#define WOOHAA_TYPE_BEHAVIOUR_BUSY (clutter_behaviour_busy_get_type ()) + +#define WOOHAA_BEHAVIOUR_BUSY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_BUSY, WoohaaBehaviourBusy)) + +#define WOOHAA_BEHAVIOUR_BUSY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WOOHAA_TYPE_BEHAVIOUR_BUSY, WoohaaBehaviourBusyClass)) + +#define CLUTTER_IS_BEHAVIOUR_BUSY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_BUSY)) + +#define CLUTTER_IS_BEHAVIOUR_BUSY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WOOHAA_TYPE_BEHAVIOUR_BUSY)) + +#define WOOHAA_BEHAVIOUR_BUSY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_BUSY, WoohaaBehaviourBusyClass)) + +typedef struct _WoohaaBehaviourBusy WoohaaBehaviourBusy; +typedef struct _WoohaaBehaviourBusyClass WoohaaBehaviourBusyClass; + +struct _WoohaaBehaviourBusy +{ + ClutterBehaviour parent; + WoohaaBusy *busy; +}; + +struct _WoohaaBehaviourBusyClass +{ + ClutterBehaviourClass parent_class; +}; + +GType clutter_behaviour_busy_get_type (void) G_GNUC_CONST; + +G_DEFINE_TYPE (WoohaaBehaviourBusy, clutter_behaviour_busy, CLUTTER_TYPE_BEHAVIOUR); + +static ClutterBehaviour* +clutter_behaviour_busy_new (WoohaaBusy *menu, ClutterAlpha *alpha); + +static void +clutter_behaviour_alpha_notify (ClutterBehaviour *behave, + guint32 alpha_value); + +enum +{ + PROP_0, + PROP_LABEL +}; + +struct _WoohaaBusyPrivate +{ + ClutterActor *spinner; + ClutterActor *label; + gchar *label_text; + ClutterTimeline *timeline; + guint spinner_alpha; +}; + +G_DEFINE_TYPE (WoohaaBusy, woohaa_busy, CLUTTER_TYPE_ACTOR); + +static void +woohaa_busy_dispose (GObject *object) +{ + WoohaaBusy *self; + WoohaaBusyPrivate *priv; + + self = WOOHAA_BUSY(object); + priv = self->priv; + + G_OBJECT_CLASS (woohaa_busy_parent_class)->dispose (object); +} + +static void +woohaa_busy_finalize (GObject *object) +{ + WoohaaBusy *self; + WoohaaBusyPrivate *priv; + + self = WOOHAA_BUSY(object); + priv = self->priv; + + G_OBJECT_CLASS (woohaa_busy_parent_class)->finalize (object); +} + +static void +woohaa_busy_show_cb (ClutterActor *actor, ClutterTimeline *timeline) +{ + clutter_timeline_start (timeline); +} + +static void +woohaa_busy_hide_cb (ClutterActor *actor, ClutterTimeline *timeline) +{ + clutter_timeline_stop (timeline); + clutter_actor_set_opacity (CLUTTER_ACTOR (actor), 0xFF); +} + +static void +newframe_cb (ClutterTimeline *timeline, + gint frame_num, + ClutterActor *spinner) +{ + gint x, y; + + clutter_actor_get_position (spinner, &x, &y); + clutter_actor_set_position (spinner, x + 10 , y + 10); + + clutter_actor_set_rotation (spinner, + CLUTTER_Z_AXIS, + (float)frame_num * 4.0, + clutter_actor_get_width (spinner) / 2, + clutter_actor_get_height (spinner) / 2, + 0); +} + +static void +woohaa_busy_paint (ClutterActor *actor) +{ + WoohaaBusyPrivate *priv = (WOOHAA_BUSY (actor))->priv; + + clutter_actor_paint (priv->spinner); + clutter_actor_paint (priv->label); +} + +static void +woohaa_busy_get_preferred_width (ClutterActor *actor, + ClutterUnit for_height, + ClutterUnit *min_width_p, + ClutterUnit *natural_width_p) +{ + *min_width_p = CLUTTER_UNITS_FROM_INT (100); + *natural_width_p = CLUTTER_UNITS_FROM_INT (500); +} + +static void +woohaa_busy_get_preferred_height (ClutterActor *actor, + ClutterUnit for_width, + ClutterUnit *min_height_p, + ClutterUnit *natural_height_p) +{ + *min_height_p = CLUTTER_UNITS_FROM_INT (100); + *natural_height_p = CLUTTER_UNITS_FROM_INT (500); +} + +static void +woohaa_busy_allocate (ClutterActor *actor, + const ClutterActorBox *box, + gboolean absolute_origin_changed) +{ + WoohaaBusyPrivate *priv = (WOOHAA_BUSY (actor))->priv; + ClutterUnit min_width, spinner_natural_width, label_natural_width; + ClutterUnit min_height, spinner_natural_height, label_natural_height; + ClutterActorBox spinner_box, label_box; + + /* query spinner width and height */ + clutter_actor_get_preferred_width (priv->spinner, + box->y2 - box->y1, + &min_width, + &spinner_natural_width); + clutter_actor_get_preferred_height (priv->spinner, + box->x2 - box->x1, + &min_height, + &spinner_natural_height); + + /* query label width and height */ + clutter_actor_get_preferred_width (priv->label, + box->y2 - box->y1, + &min_width, + &label_natural_width); + clutter_actor_get_preferred_height (priv->label, + box->x2 - box->x1, + &min_height, + &label_natural_height); + + spinner_box.x1 = CLUTTER_UNITS_FROM_INT (CSW()/2) - spinner_natural_width/2; + spinner_box.y1 = CLUTTER_UNITS_FROM_INT (CSH()/2) + - spinner_natural_height/2 + - label_natural_height/2 + + (priv->spinner_alpha * 100); + spinner_box.x2 = spinner_box.x1 + spinner_natural_width; + spinner_box.y2 = spinner_box.y1 + spinner_natural_height; + + label_box.x1 = CLUTTER_UNITS_FROM_INT (CSW()/2) - label_natural_width/2; + label_box.y1 = CLUTTER_UNITS_FROM_INT (CSH()/2) + - spinner_natural_height/2 + - label_natural_height/2 + + spinner_natural_height; + label_box.x2 = label_box.x1 + label_natural_width; + label_box.y2 = label_box.y1 + label_natural_height; + + clutter_actor_allocate (priv->spinner, + &spinner_box, + absolute_origin_changed); + + clutter_actor_allocate (priv->label, + &label_box, + absolute_origin_changed); + + CLUTTER_ACTOR_CLASS (woohaa_busy_parent_class)-> + allocate (actor, box, absolute_origin_changed); +} + +static void +woohaa_busy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + WoohaaBusy *busy; + WoohaaBusyPrivate *priv; + + busy = WOOHAA_BUSY(object); + priv = busy->priv; + + switch (prop_id) + { + case PROP_LABEL: + if (priv->label_text) + g_free (priv->label_text); + priv->label_text = g_strdup(g_value_get_string (value)); + clutter_label_set_text (CLUTTER_LABEL (priv->label), priv->label_text); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +woohaa_busy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + WoohaaBusy *busy; + WoohaaBusyPrivate *priv; + + busy = WOOHAA_BUSY(object); + priv = busy->priv; + + switch (prop_id) + { + case PROP_LABEL: + g_value_set_string (value, priv->label_text); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +woohaa_busy_class_init (WoohaaBusyClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WoohaaBusyPrivate)); + + object_class->dispose = woohaa_busy_dispose; + object_class->finalize = woohaa_busy_finalize; + object_class->set_property = woohaa_busy_set_property; + object_class->get_property = woohaa_busy_get_property; + + actor_class->get_preferred_width = woohaa_busy_get_preferred_width; + actor_class->get_preferred_height = woohaa_busy_get_preferred_height; + actor_class->allocate = woohaa_busy_allocate; + actor_class->paint = woohaa_busy_paint; + + g_object_class_install_property + (object_class, PROP_LABEL, + g_param_spec_string ("label", + "Label Text", + "Label Text", + NULL, + G_PARAM_READWRITE)); + +} + +static void +woohaa_busy_init (WoohaaBusy *woohaa_busy) +{ + WoohaaBusyPrivate *priv; + gchar *font; + ClutterColor grey = { 0x72, 0x9f, 0xcf, 0xff}; + + woohaa_busy->priv = priv = + G_TYPE_INSTANCE_GET_PRIVATE (woohaa_busy, + WOOHAA_TYPE_BUSY, + WoohaaBusyPrivate); + + priv->timeline = clutter_timeline_new (90, 20); + clutter_timeline_set_loop (priv->timeline, TRUE); + + priv->spinner = clutter_texture_new_from_file (PKGDATADIR "/spinner.svg", + NULL); + clutter_actor_set_position + (priv->spinner, + (CSW() - clutter_actor_get_width (priv->spinner))/2, + (CSH() - clutter_actor_get_height (priv->spinner))/2); + clutter_actor_show (priv->spinner); + + priv->label_text = g_strdup("One moment please..."); + font = g_strdup_printf("Sans %ipx", (CSH()/6)/2); + priv->label = clutter_label_new_full (font, priv->label_text, &grey); + clutter_actor_set_position (priv->label, + (CSW() - clutter_actor_get_width (priv->label))/2, + CSH() - (3*clutter_actor_get_height (priv->label))); + clutter_actor_show (priv->label); + + clutter_actor_set_parent (priv->spinner, CLUTTER_ACTOR (woohaa_busy)); + clutter_actor_set_parent (priv->label, CLUTTER_ACTOR (woohaa_busy)); + + g_signal_connect (priv->timeline, + "new-frame", + G_CALLBACK (newframe_cb), + priv->spinner); + + g_signal_connect (woohaa_busy, + "show", + G_CALLBACK (woohaa_busy_show_cb), + priv->timeline); + g_signal_connect (woohaa_busy, + "hide", + G_CALLBACK (woohaa_busy_hide_cb), + priv->timeline); +} + +void +fade_complete_cb (ClutterActor *actor, gpointer data) +{ + clutter_actor_hide(actor); +} + +void +woohaa_busy_fade_out (WoohaaBusy *busy, gint timeout) +{ + ClutterEffectTemplate *template; + ClutterTimeline *timeline; + + timeline = clutter_timeline_new_for_duration (timeout); + template = clutter_effect_template_new (timeline, CLUTTER_ALPHA_SINE_INC); + + clutter_effect_fade (template, + CLUTTER_ACTOR (busy), + 0, + fade_complete_cb, + NULL); +} + +void +woohaa_busy_fade_in (WoohaaBusy *busy, gint timeout) +{ + ClutterEffectTemplate *template; + ClutterTimeline *timeline; + + timeline = clutter_timeline_new_for_duration (timeout); + template = clutter_effect_template_new (timeline, CLUTTER_ALPHA_SINE_INC); + + clutter_actor_set_opacity (CLUTTER_ACTOR (busy), 0); + clutter_actor_show (CLUTTER_ACTOR (busy)); + + clutter_effect_fade (template, + CLUTTER_ACTOR (busy), + 0xFF, + NULL, + NULL); +} + +void +woohaa_busy_bounce (WoohaaBusy *busy) +{ + WoohaaBusyPrivate *priv; + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterGeometry geo; + ClutterBehaviour *behave; + priv = busy->priv; + + timeline = clutter_timeline_new_for_duration (500); + alpha = clutter_alpha_new_full (timeline, CLUTTER_ALPHA_SINE, NULL, NULL); + + behave = clutter_behaviour_busy_new (busy, alpha); + + clutter_timeline_start (timeline); + + clutter_actor_get_geometry (CLUTTER_ACTOR (busy), &geo); +} + +ClutterActor* +woohaa_busy_new (void) +{ + return g_object_new (WOOHAA_TYPE_BUSY, NULL); +} + +/* Custom Behavior */ + +static void +clutter_behaviour_alpha_notify (ClutterBehaviour *behave, + guint32 alpha_value) +{ + WoohaaBusy *busy; + + busy = (WOOHAA_BEHAVIOUR_BUSY (behave))->busy; + + busy->priv->spinner_alpha = alpha_value; + clutter_actor_queue_relayout (CLUTTER_ACTOR (busy)); +} + +static void +clutter_behaviour_busy_class_init (WoohaaBehaviourBusyClass *klass) +{ + ClutterBehaviourClass *behave_class = CLUTTER_BEHAVIOUR_CLASS (klass); + + behave_class->alpha_notify = clutter_behaviour_alpha_notify; +} + +static void +clutter_behaviour_busy_init (WoohaaBehaviourBusy *self) +{ +} + +static ClutterBehaviour* +clutter_behaviour_busy_new (WoohaaBusy *busy, ClutterAlpha *alpha) +{ + WoohaaBehaviourBusy *busy_behave; + + busy_behave = g_object_new (WOOHAA_TYPE_BEHAVIOUR_BUSY, + "alpha", alpha, NULL); + busy_behave->busy = busy; + + return CLUTTER_BEHAVIOUR(busy_behave); +} diff --git a/attic/woohaa/wh-busy.h b/attic/woohaa/wh-busy.h new file mode 100644 index 0000000..d4ccabe --- /dev/null +++ b/attic/woohaa/wh-busy.h @@ -0,0 +1,62 @@ +#ifndef _HAVE_WOOHAA_BUSY_H +#define _HAVE_WOOHAA_BUSY_H + +#include +#include + +G_BEGIN_DECLS +#define WOOHAA_TYPE_BUSY woohaa_busy_get_type() + +#define WOOHAA_BUSY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WOOHAA_TYPE_BUSY, WoohaaBusy)) + +#define WOOHAA_BUSY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WOOHAA_TYPE_BUSY, WoohaaBusyClass)) + +#define WOOHAA_IS_BUSY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WOOHAA_TYPE_BUSY)) + +#define WOOHAA_IS_BUSY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WOOHAA_TYPE_BUSY)) + +#define WOOHAA_BUSY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WOOHAA_TYPE_BUSY, WoohaaBusyClass)) + +typedef struct _WoohaaBusy WoohaaBusy; +typedef struct _WoohaaBusyClass WoohaaBusyClass; +typedef struct _WoohaaBusyPrivate WoohaaBusyPrivate; + +struct _WoohaaBusy +{ + /*< private >*/ + ClutterActor parent; + WoohaaBusyPrivate *priv; +}; + +struct _WoohaaBusyClass +{ + /*< private >*/ + ClutterGroupClass parent_class; + + /* Future padding */ + void (* __reserved1) (void); + void (* __reserved2) (void); + void (* __reserved3) (void); + void (* __reserved4) (void); + void (* __reserved5) (void); + void (* __reserved6) (void); +}; + +GType woohaa_busy_get_type (void) G_GNUC_CONST; +ClutterActor *woohaa_busy_new (void); +void woohaa_busy_fade_out (WoohaaBusy *busy, gint timeout); +void woohaa_busy_fade_in (WoohaaBusy *busy, gint timeout); +void woohaa_busy_bounce (WoohaaBusy *busy); +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-db.c b/attic/woohaa/wh-db.c new file mode 100644 index 0000000..945c12c --- /dev/null +++ b/attic/woohaa/wh-db.c @@ -0,0 +1,648 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wh-db.h" +#include "wh-video-model.h" +#include "wh-video-model-row.h" + + #include "wh-video-model.h" +#include + +G_DEFINE_TYPE (WHDB, wh_db, G_TYPE_OBJECT); + +#define DB_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), WH_TYPE_DB, WHDBPrivate)) + +typedef struct _WHDBPrivate WHDBPrivate; + +struct _WHDBPrivate +{ + sqlite3 *db; + + GThreadPool *thread_pool; +}; + +typedef struct +{ + WHDB *db; + gchar *uri; + GnomeVFSFileInfo *vfs_info; +} WHDBThreadData; + +enum +{ + ROW_CREATED, + ROW_DELETED, + LAST_SIGNAL +}; + +static guint _db_signals[LAST_SIGNAL] = { 0 }; + +#define SQL_CREATE_TABLES \ + "CREATE TABLE IF NOT EXISTS meta(path text, n_views int, active int, " \ + " vtime integer, mtime integer, thumbnail blob, " \ + " primary key (path), unique(path));" + +enum + { + SQL_GET_ROW_VIA_PATH = 0, + SQL_SET_ACTIVE_VIA_PATH, + SQL_ADD_NEW_ROW, + SQL_GET_ACTIVE_ROWS, + SQL_UPDATE_ROW, + N_SQL_STATEMENTS + }; + +static gchar *SQLStatementText[] = + { + "select n_views, vtime, mtime, thumbnail from meta where path=:path;", + "update meta set active=1, mtime=:mtime where path=:path;", + "insert into meta(path, n_views, active, vtime, mtime, thumbnail)" + " values(:path, 0, 1, 0, :mtime, 0);", + "select path, n_views, vtime, mtime, thumbnail from meta where active=1;", + "update meta set thumbnail=:thumbnail, n_views=:n_views, vtime=:vtime " + " where path=:path;" + }; + +static sqlite3_stmt *SQLStatements[N_SQL_STATEMENTS]; + +static gboolean +wh_db_walk_directory (WHDB *db, const gchar *uri); + +static void +wh_db_media_file_found (WHDB *db, + const char *uri, + GnomeVFSFileInfo *vfs_info); + +static void +on_vfs_monitor_event (GnomeVFSMonitorHandle *handle, + const gchar *monitor_uri, + const gchar *info_uri, + GnomeVFSMonitorEventType event_type, + gpointer user_data); + +static void +wh_db_import_uri_func (gchar *uri, + WHDB *db); + +static void +wh_db_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_db_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_db_dispose (GObject *object) +{ + WHDBPrivate *priv = DB_PRIVATE (object); + + if (priv->thread_pool) + { + g_thread_pool_free (priv->thread_pool, TRUE, TRUE); + priv->thread_pool = NULL; + } + + if (G_OBJECT_CLASS (wh_db_parent_class)->dispose) + G_OBJECT_CLASS (wh_db_parent_class)->dispose (object); +} + +static void +wh_db_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_db_parent_class)->finalize (object); +} + +static void +wh_db_class_init (WHDBClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WHDBPrivate)); + + object_class->get_property = wh_db_get_property; + object_class->set_property = wh_db_set_property; + object_class->dispose = wh_db_dispose; + object_class->finalize = wh_db_finalize; + + _db_signals[ROW_CREATED] = + g_signal_new ("row-created", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHDBClass, row_created), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, WH_TYPE_VIDEO_MODEL_ROW); +} + +static void +wh_db_init (WHDB *self) +{ + int res, i; + const gchar *data_dir; + gchar *db_filename, *path; + WHDBPrivate *priv = DB_PRIVATE(self); + + gnome_vfs_init (); + + data_dir = g_get_user_data_dir (); + + db_filename = g_build_filename (data_dir, "woohaa", "db", NULL); + path = g_path_get_dirname (db_filename); + g_mkdir_with_parents (path, 0755); + + res = sqlite3_open(db_filename, &priv->db); + + g_free(path); + g_free(db_filename); + + if (res) + { + g_error("Can't open database: %s\n", sqlite3_errmsg(priv->db)); + sqlite3_close(priv->db); + return; + } + + /* Create DB if not already existing - preexisting will silently fail */ + if (sqlite3_exec(priv->db, SQL_CREATE_TABLES, NULL, NULL, NULL)) + g_warning("Can't create table: %s\n", sqlite3_errmsg(priv->db)); + + /* Next mark fields inactive */ + if (sqlite3_exec(priv->db, "update meta set active=0;", NULL, NULL, NULL)) + g_warning("Can't mark table inactive: %s\n", sqlite3_errmsg(priv->db)); + + /* precompile statements */ + for (i=0; idb, SQLStatementText[i], -1, + &SQLStatements[i], NULL) != SQLITE_OK) + g_warning("Failed to prepare '%s' : %s", + SQLStatementText[i], sqlite3_errmsg(priv->db)); + + /* Create thread pool for indexing */ + priv->thread_pool = g_thread_pool_new ((GFunc)wh_db_import_uri_func, + self, + -1, + FALSE, + NULL); +} + +WHDB* +wh_db_new () +{ + return g_object_new (WH_TYPE_DB, NULL); +} + +gboolean +uri_is_media (const gchar *uri) +{ + /* Suck */ + /* FIXME: use gstreamer tag foo |gvfs mime type to identify */ + return (g_str_has_suffix(uri, ".avi") + || g_str_has_suffix(uri, ".mpeg") + || g_str_has_suffix(uri, ".wmv") +#ifdef USE_HELIX + || g_str_has_suffix(uri, ".rmvb") +#endif + || g_str_has_suffix(uri, ".ogg") + || g_str_has_suffix(uri, ".mp4") + || g_str_has_suffix(uri, ".mpg")); +} + +static gboolean +wh_db_monitor_add_idle (WHDBThreadData *data) +{ + GnomeVFSMonitorHandle *monitor_handle; + + gnome_vfs_monitor_add (&monitor_handle, + data->uri, + GNOME_VFS_MONITOR_DIRECTORY, + on_vfs_monitor_event, + data->db); + + g_free (data->uri); + g_slice_free (WHDBThreadData, data); + + return FALSE; +} + +static gboolean +wh_db_media_file_found_idle (WHDBThreadData *data) +{ + wh_db_media_file_found (data->db, data->uri, data->vfs_info); + + if (data->vfs_info) + gnome_vfs_file_info_unref (data->vfs_info); + g_free (data->uri); + g_slice_free (WHDBThreadData, data); + + return FALSE; +} + +gboolean +wh_db_import_uri_private (WHDB *db, const gchar *uri) +{ + GnomeVFSResult vfs_result; + GnomeVFSFileInfo *vfs_info = NULL; + GnomeVFSFileInfoOptions vfs_options; + gboolean ret = FALSE; + + vfs_options = + GNOME_VFS_FILE_INFO_DEFAULT + |GNOME_VFS_FILE_INFO_FOLLOW_LINKS + |GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS; + + vfs_info = gnome_vfs_file_info_new (); + vfs_result = gnome_vfs_get_file_info (uri, vfs_info, vfs_options); + + if (vfs_result != GNOME_VFS_OK) + goto cleanup; + + if (! (vfs_info->valid_fields & (GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS + |GNOME_VFS_FILE_INFO_FIELDS_TYPE))) + goto cleanup; + + /* GNOME_VFS_PERM_ACCESS_READABLE would be better, but only the + * file method implements it */ + if (! (vfs_info->permissions & GNOME_VFS_PERM_USER_READ)) + goto cleanup; + + if (vfs_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY) + { + WHDBThreadData *data; + + data = g_slice_new0 (WHDBThreadData); + data->uri = g_strdup (uri); + data->db = db; + + g_idle_add ((GSourceFunc)wh_db_monitor_add_idle, data); + + ret = wh_db_walk_directory (db, uri); + } + else if (vfs_info->type == GNOME_VFS_FILE_TYPE_REGULAR) + { + if (uri_is_media(uri)) + { + WHDBThreadData *data; + + data = g_slice_new0 (WHDBThreadData); + data->uri = g_strdup (uri); + data->db = db; + data->vfs_info = vfs_info; + + g_idle_add ((GSourceFunc)wh_db_media_file_found_idle, data); + + goto skip_cleanup; + } + + ret = TRUE; + } + + cleanup: + + if (vfs_info) + gnome_vfs_file_info_unref (vfs_info); + + skip_cleanup: + + return ret; +} + +static gboolean +wh_db_walk_directory (WHDB *db, const gchar *uri) +{ + GnomeVFSResult vfs_result; + GnomeVFSDirectoryHandle *vfs_handle = NULL; + GnomeVFSFileInfoOptions vfs_options; + GnomeVFSFileInfo *vfs_info = NULL; + gboolean ret = TRUE; + + vfs_options = + GNOME_VFS_FILE_INFO_DEFAULT + |GNOME_VFS_FILE_INFO_FOLLOW_LINKS + |GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS; + + vfs_result = gnome_vfs_directory_open (&vfs_handle, uri, vfs_options); + + if (vfs_result != GNOME_VFS_OK) + goto cleanup; + + vfs_info = gnome_vfs_file_info_new (); + + while (gnome_vfs_directory_read_next(vfs_handle, vfs_info) == GNOME_VFS_OK) + { + if (vfs_info->name + && strcmp(vfs_info->name, ".") + && strcmp(vfs_info->name, "..")) + { + gchar *entry_uri = NULL; + + entry_uri = g_strconcat(uri, "/", vfs_info->name, NULL); + + if (entry_uri) + { + ret |= wh_db_import_uri_private (db, entry_uri); + g_free(entry_uri); + } + } + } + + cleanup: + if (vfs_info) + gnome_vfs_file_info_unref (vfs_info); + + if (vfs_handle) + gnome_vfs_directory_close (vfs_handle); + + return ret; +} + +static void +wh_db_import_uri_func (gchar *uri, WHDB *db) +{ + wh_db_import_uri_private (db, uri); + g_free (uri); +} + +static gboolean +wh_db_get_uri (const gchar *uri, + gint *n_views, + gint *vtime, + gint *mtime, + GdkPixbuf **thumb) +{ + gboolean res = FALSE; + sqlite3_stmt *stmt = SQLStatements[SQL_GET_ROW_VIA_PATH]; + + sqlite3_bind_text (stmt, 1, uri, -1, SQLITE_STATIC); + + if (sqlite3_step(stmt) == SQLITE_ROW) + { + if (n_views) + *n_views = sqlite3_column_int(stmt, 0); + if (vtime) + *vtime = sqlite3_column_int(stmt, 1); + if (mtime) + *mtime = sqlite3_column_int(stmt, 2); + + if (thumb) + { + int len; + GdkPixdata *pixdata; + guint8 *blob = NULL; + + blob = (guint8 *)sqlite3_column_blob (stmt, 3); + len = sqlite3_column_bytes (stmt, 3); + + if (sqlite3_column_type (stmt,3) == SQLITE_BLOB) + { + pixdata = g_new0 (GdkPixdata, 1); + + if (gdk_pixdata_deserialize (pixdata, len, (const guint8*)blob, + NULL)) + *thumb = gdk_pixbuf_from_pixdata (pixdata, TRUE, NULL); + + g_free (pixdata); + } + } + res = TRUE; + } + + sqlite3_reset(stmt); + + return res; +} + +static gchar* +wh_db_parse_video_uri_info (const char *uri, + gchar **series, + gchar **episode) +{ + gchar *base, *res; + regex_t *regex; + size_t nmatch = 4; + regmatch_t pmatch[4]; + + /* HAXOR Regexp to extract 'meta data' from common TV show naming */ +#define TV_REGEXP "(.*)\\.?[Ss]+([0-9]+)[._ ]*[Ee]+[Pp]*([0-9]+)" + + base = g_path_get_basename (uri); + + regex = g_malloc0(sizeof(regex_t)); + + if (regcomp(regex, TV_REGEXP, REG_EXTENDED) != 0) + { + printf("regexp creation failed\n"); + } + + if (regexec(regex, base, nmatch, pmatch, 0) == 0) + { + char *name; + + name = g_strndup (base + pmatch[1].rm_so, + pmatch[1].rm_eo - pmatch[1].rm_so); + + name = g_strdelimit (name, "._", ' '); + + *series = g_strndup (base + pmatch[2].rm_so, + pmatch[2].rm_eo - pmatch[2].rm_so); + + *episode = g_strndup (base + pmatch[3].rm_so, + pmatch[3].rm_eo - pmatch[3].rm_so); + + res = name; + + if (res == NULL || *res == 0) + { + char *dirname; + + /* Assume we have series & episode but no name so grab + * name from parent direcory - handles show-name/s01e01.avi + * style naiming. + */ + dirname = g_path_get_dirname (uri); + name = g_path_get_basename (dirname); + g_free (dirname); + + name = g_strdelimit (name, "._", ' '); + + res = name; + } + + g_free (base); + } + else + { + gchar *p; + + p = g_strrstr (base, "."); *p = '\0'; + base = g_strdelimit (base, "._", ' '); + + res = base; + } + + g_free (regex); + + return res; +} + +static void +wh_db_media_file_found (WHDB *db, + const char *uri, + GnomeVFSFileInfo *vfs_info) +{ + WHVideoModelRow *row; + gchar *title, *episode = NULL, *series = NULL; + gint n_views = 0, mtime = 0, vtime = 0; + GdkPixbuf *thumb = NULL; + + /* See if we already have file in db. + * YES - mark active. + * NO - add it set vtime, n_views to 0 etc + */ + if (wh_db_get_uri (uri, &n_views, &vtime, &mtime, &thumb)) + { + /* Update */ + if (vfs_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) + mtime = vfs_info->mtime; + + sqlite3_stmt *stmt = SQLStatements[SQL_SET_ACTIVE_VIA_PATH]; + + sqlite3_bind_int (stmt, 1, mtime); + sqlite3_bind_text (stmt, 2, uri, -1, SQLITE_STATIC); + + sqlite3_step(stmt); + sqlite3_reset(stmt); + } + else + { + /* New - create row entry*/ + if (vfs_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) + mtime = vfs_info->mtime; + + sqlite3_stmt *stmt = SQLStatements[SQL_ADD_NEW_ROW]; + + sqlite3_bind_text (stmt, 1, uri, -1, SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, mtime); /* mtime */ + + sqlite3_step(stmt); + sqlite3_reset(stmt); + } + + row = wh_video_model_row_new (); + wh_video_model_row_set_path (row, uri); + + title = wh_db_parse_video_uri_info ((const char *)uri, + &series, + &episode); + + wh_video_model_row_set_title (row, title); + wh_video_model_row_set_extended_info (row, series, episode); + + g_free(title); + + if (thumb) + { + wh_video_model_row_set_thumbnail (row, thumb); + g_object_unref (thumb); + } + + wh_video_model_row_set_n_views (row, n_views); + wh_video_model_row_set_age (row, mtime); + wh_video_model_row_set_vtime (row, vtime); + + g_signal_emit (db, _db_signals[ROW_CREATED], 0, row); + + g_object_unref (row); +} + +void +wh_db_sync_row (WHVideoModelRow *row) +{ + GdkPixdata *pixdata = NULL; + GdkPixbuf *pixbuf = NULL; + guint8 *data = NULL; + sqlite3_stmt *stmt = SQLStatements[SQL_UPDATE_ROW]; + + sqlite3_bind_int (stmt, 2, wh_video_model_row_get_n_views (row)); + sqlite3_bind_int (stmt, 3, wh_video_model_row_get_vtime (row)); + + pixbuf = wh_video_model_row_get_thumbnail (row); + + if (pixbuf) + { + guint len = 0; + + pixdata = g_new0 (GdkPixdata, 1); + gdk_pixdata_from_pixbuf (pixdata, pixbuf, FALSE); + + data = gdk_pixdata_serialize (pixdata, &len); + + sqlite3_bind_blob(stmt, 1, (void*)data, len, SQLITE_STATIC); + } + else + { + sqlite3_bind_null(stmt, 1); + } + + sqlite3_bind_text (stmt, 4, wh_video_model_row_get_path (row), + -1, SQLITE_STATIC); + + sqlite3_step(stmt); + sqlite3_reset(stmt); + + g_free (pixdata); + g_free (data); +} + +static void +on_vfs_monitor_event (GnomeVFSMonitorHandle *handle, + const gchar *monitor_uri, + const gchar *info_uri, + GnomeVFSMonitorEventType event_type, + gpointer user_data) +{ + WHDB *db = (WHDB*)user_data; + + if (event_type == GNOME_VFS_MONITOR_EVENT_CREATED) + { + wh_db_import_uri_private (db, info_uri); + return; + } + + if (event_type == GNOME_VFS_MONITOR_EVENT_DELETED) + printf("file '%s' deleted\n", info_uri); + + if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED) + printf("file '%s' changed\n", info_uri); +} + +gboolean +wh_db_import_uri (WHDB *db, const gchar *uri) +{ + WHDBPrivate *priv = DB_PRIVATE (db); + + if (priv->thread_pool) + g_thread_pool_push (priv->thread_pool, g_strdup (uri), NULL); + + return TRUE; +} diff --git a/attic/woohaa/wh-db.h b/attic/woohaa/wh-db.h new file mode 100644 index 0000000..248ef4f --- /dev/null +++ b/attic/woohaa/wh-db.h @@ -0,0 +1,54 @@ +#ifndef _WH_DB +#define _WH_DB + +#include +#include "wh-video-model-row.h" + +G_BEGIN_DECLS + +#define WH_TYPE_DB wh_db_get_type() + +#define WH_DB(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_VIDEO_MODEL, WHVideoModel)) + +#define WH_DB_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_DB, WHDBClass)) + +#define WH_IS_DB(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_DB)) + +#define WH_IS_DB_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_DB)) + +#define WH_DB_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_DB, WHDBClass)) + +typedef struct { + GObject parent; +} WHDB; + +typedef struct { + GObjectClass parent_class; + + void (*row_created) (WHDB *db, WHVideoModelRow *row); +} WHDBClass; + +GType wh_db_get_type (void); + +WHDB* +wh_db_new (); + +gboolean +wh_db_import_uri (WHDB *db, const gchar *path); + +void +wh_db_sync_row (WHVideoModelRow *row); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-screen-video.c b/attic/woohaa/wh-screen-video.c new file mode 100644 index 0000000..ef3de66 --- /dev/null +++ b/attic/woohaa/wh-screen-video.c @@ -0,0 +1,706 @@ +#include + +#ifdef USE_HELIX +#include +#else +#include +#include +#endif + +#include "wh-screen-video.h" +#include "util.h" + +G_DEFINE_TYPE (WHScreenVideo, wh_screen_video, CLUTTER_TYPE_ACTOR); + +#define SCREEN_VIDEO_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ + WH_TYPE_SCREEN_VIDEO, WHScreenVideoPrivate)) + +typedef struct _WHScreenVideoPrivate WHScreenVideoPrivate; + +struct _WHScreenVideoPrivate +{ + ClutterActor *video; + ClutterActor *bg; + ClutterActor *video_controls; + ClutterActor *video_seekbar; + ClutterActor *video_seekbar_bg; + ClutterActor *duration, *title, *position, *vol_label; + gboolean video_playing; + gboolean video_controls_visible; + + guint controls_timeout; + WHVideoModelRow *video_row; + + /* Effects */ + ClutterEffectTemplate *controls_effect_tmpl, *fadein_effect_tmpl; +}; + +enum +{ + PLAYBACK_STARTED, + PLAYBACK_FINISHED, + LAST_SIGNAL +}; + +static guint _screen_signals[LAST_SIGNAL] = { 0 }; + +static void +video_size_change (ClutterTexture *texture, + gint width, + gint height, + gpointer user_data) +{ + gint new_x, new_y, new_width, new_height; + + new_height = ( height * CLUTTER_STAGE_WIDTH() ) / width; + + if (new_height <= CLUTTER_STAGE_HEIGHT()) + { + new_width = CLUTTER_STAGE_WIDTH(); + new_x = 0; + new_y = (CLUTTER_STAGE_HEIGHT() - new_height) / 2; + } + else + { + new_width = ( width * CLUTTER_STAGE_HEIGHT() ) / height; + new_height = CLUTTER_STAGE_HEIGHT(); + + new_x = (CLUTTER_STAGE_WIDTH() - new_width) / 2; + new_y = 0; + } + + clutter_actor_set_position (CLUTTER_ACTOR (texture), new_x, new_y); + clutter_actor_set_size (CLUTTER_ACTOR (texture), new_width, new_height); +} + +void +video_pixbuf_change (ClutterTexture *texture, WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + g_signal_emit (screen, _screen_signals[PLAYBACK_STARTED], 0); + + clutter_effect_fade (priv->fadein_effect_tmpl, + CLUTTER_ACTOR(screen), + 0xff, + NULL, + NULL); + + clutter_actor_show (CLUTTER_ACTOR(screen)); + clutter_actor_set_opacity (CLUTTER_ACTOR(screen), 0); + + g_signal_handlers_disconnect_by_func (priv->video, + G_CALLBACK (video_pixbuf_change), + screen); +} + +static gchar* +nice_time (int time) +{ + int hours, minutes, seconds; + + hours = time / 3600; + seconds = time % 3600; + minutes = seconds / 60; + seconds = seconds % 60; + + if (hours > 0) + return g_strdup_printf("%d:%.2d:%.2d", hours, minutes, seconds); + else + return g_strdup_printf("%.2d:%.2d", minutes, seconds); +} + + +static void +video_tick (GObject *object, + GParamSpec *pspec, + WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + ClutterMedia *vtex; + gint position, duration, seek_width; + + vtex = CLUTTER_MEDIA(object); + + position = clutter_media_get_position (CLUTTER_MEDIA(vtex)); + duration = clutter_media_get_duration (CLUTTER_MEDIA(vtex)); + + if (duration == 0 || position == 0) + return; + + if (!priv->video_playing && position > 0) + { + char *duration_txt; + duration_txt = nice_time (duration); + clutter_label_set_text (CLUTTER_LABEL(priv->duration), duration_txt); + g_free(duration_txt); + + priv->video_playing = TRUE; + } + + seek_width = clutter_actor_get_width(priv->video_seekbar_bg); + + clutter_actor_set_size (priv->video_seekbar, + (position * seek_width) / duration, + 20); + + if (priv->video_controls_visible) + { + char *position_txt; + + position_txt = nice_time (position); + clutter_label_set_text (CLUTTER_LABEL(priv->position), position_txt); + g_object_set (priv->position, "x", + ((position * seek_width) / duration) + 10, + NULL); + g_free(position_txt); + } +} + +static void +video_hide_controls (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + if (priv->video_controls_visible) + { + clutter_effect_fade (priv->controls_effect_tmpl, + priv->video_controls, + 0, + (ClutterEffectCompleteFunc)clutter_actor_hide, + NULL); + + priv->video_controls_visible = FALSE; + } +} + +static gboolean +video_controls_timeout_cb (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + priv->controls_timeout = 0; + video_hide_controls (screen); + return FALSE; +} + +static void +video_show_controls (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + if (!priv->video_controls_visible) + { + clutter_actor_show_all (CLUTTER_ACTOR(priv->video_controls)); + clutter_actor_set_opacity (CLUTTER_ACTOR(priv->video_controls), 0); + + clutter_effect_fade (priv->controls_effect_tmpl, + priv->video_controls, + 0xff, + NULL, + NULL); + priv->video_controls_visible = TRUE; + + priv->controls_timeout + = g_timeout_add (5 * 1000, + (GSourceFunc)video_controls_timeout_cb, + screen); + } + else if (priv->controls_timeout) + { + g_source_remove (priv->controls_timeout); + priv->controls_timeout + = g_timeout_add (5 * 1000, + (GSourceFunc)video_controls_timeout_cb, + screen); + } + +} + +static gboolean +video_input_cb (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data) +{ + WHScreenVideo *screen = (WHScreenVideo*)user_data; + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + gchar buf[16]; + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + static ClutterTimeline *timeline = NULL; + + switch (clutter_key_event_symbol (kev)) + { + case CLUTTER_Return: + case CLUTTER_p: + if (clutter_media_get_playing (CLUTTER_MEDIA(priv->video))) + video_show_controls (screen); + clutter_media_set_playing + (CLUTTER_MEDIA(priv->video), + !clutter_media_get_playing (CLUTTER_MEDIA(priv->video))); + break; + case CLUTTER_Left: + video_show_controls (screen); + clutter_media_set_position + (CLUTTER_MEDIA(priv->video), + clutter_media_get_position (CLUTTER_MEDIA(priv->video)) - 25); + break; + case CLUTTER_Right: + video_show_controls (screen); + clutter_media_set_position + (CLUTTER_MEDIA(priv->video), + clutter_media_get_position (CLUTTER_MEDIA(priv->video)) + 25); + break; + case CLUTTER_Up: + clutter_media_set_volume + (CLUTTER_MEDIA(priv->video), + clutter_media_get_volume (CLUTTER_MEDIA(priv->video)) + 0.02); + g_snprintf (buf, sizeof(buf), "Vol:%.2i", + (gint)(clutter_media_get_volume (CLUTTER_MEDIA(priv->video))/0.01)); + clutter_label_set_text (CLUTTER_LABEL(priv->vol_label), buf); + video_show_controls (screen); + break; + case CLUTTER_Down: + clutter_media_set_volume + (CLUTTER_MEDIA(priv->video), + clutter_media_get_volume (CLUTTER_MEDIA(priv->video)) - 0.02); + g_snprintf (buf, sizeof(buf), "Vol:%.2i", + (gint)(clutter_media_get_volume (CLUTTER_MEDIA(priv->video))/0.01)); + clutter_label_set_text (CLUTTER_LABEL(priv->vol_label), buf); + video_show_controls (screen); + break; + case CLUTTER_r: + if (!timeline || !clutter_timeline_is_playing (timeline)) + { + ClutterEffectTemplate *template; + static gint rotation; + + if (clutter_actor_is_rotated (CLUTTER_ACTOR (priv->video))) + rotation = 0; + else + rotation = 180; + + template = clutter_effect_template_new_for_duration + (1000, CLUTTER_ALPHA_SINE_INC); + timeline = clutter_effect_rotate (template, + CLUTTER_ACTOR (priv->video), + CLUTTER_Y_AXIS, + rotation, + CSW()/2, CSH()/2, 0, + rotation ? CLUTTER_ROTATE_CW : CLUTTER_ROTATE_CCW, + NULL, + NULL); + } + break; + case CLUTTER_Escape: + case CLUTTER_q: + wh_screen_video_deactivate (screen); + break; + default: + break; + } + + return FALSE; +} + +static void +wh_screen_video_paint (ClutterActor *actor) +{ + WHScreenVideo *screen = WH_SCREEN_VIDEO(actor); + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + clutter_actor_paint (priv->bg); + clutter_actor_paint (priv->video); + + clutter_actor_paint (priv->video_controls); +} + +static void +wh_screen_video_get_preferred_width (ClutterActor *self, + ClutterUnit for_height, + ClutterUnit *min_width_p, + ClutterUnit *natural_width_p) +{ + *min_width_p = CLUTTER_UNITS_FROM_INT (1); + *natural_width_p = CLUTTER_UNITS_FROM_INT (CSW ()); +} + +static void +wh_screen_video_get_preferred_height (ClutterActor *self, + ClutterUnit for_width, + ClutterUnit *min_height_p, + ClutterUnit *natural_height_p) +{ + *min_height_p = CLUTTER_UNITS_FROM_INT (1); + *natural_height_p = CLUTTER_UNITS_FROM_INT (CSH ()); +} + +static void +wh_screen_video_allocate (ClutterActor *actor, + const ClutterActorBox *box, + gboolean absolute_origin_changed) +{ + WHScreenVideo *screen = WH_SCREEN_VIDEO (actor); + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE (screen); + ClutterActorBox child_box; + ClutterUnit controls_x, controls_y; + + child_box.x1 = 0; + child_box.y1 = 0; + child_box.x2 = CLUTTER_UNITS_FROM_INT (CSW ()); + child_box.y2 = CLUTTER_UNITS_FROM_INT (CSH ()); + clutter_actor_allocate (priv->bg, &child_box, absolute_origin_changed); + clutter_actor_allocate (priv->video, &child_box, absolute_origin_changed); + + controls_x = CLUTTER_UNITS_FROM_INT (CSW()/8); + controls_y = CLUTTER_UNITS_FROM_INT ((CSH()/4)/3); + + clutter_actor_get_preferred_size (priv->video_controls, + NULL, + NULL, + &child_box.x2, + &child_box.y2); + child_box.x1 = controls_x; + child_box.y1 = controls_y; + child_box.x2 += controls_x; + child_box.y2 += controls_y; + clutter_actor_allocate (priv->video_controls, + &child_box, + absolute_origin_changed); + + CLUTTER_ACTOR_CLASS (wh_screen_video_parent_class)-> + allocate (actor, box, absolute_origin_changed); +} + +static void +wh_screen_video_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_screen_video_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_screen_video_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (wh_screen_video_parent_class)->dispose) + G_OBJECT_CLASS (wh_screen_video_parent_class)->dispose (object); +} + +static void +wh_screen_video_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_screen_video_parent_class)->finalize (object); +} + + + +static void +wh_screen_video_class_init (WHScreenVideoClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WHScreenVideoPrivate)); + + object_class->get_property = wh_screen_video_get_property; + object_class->set_property = wh_screen_video_set_property; + object_class->dispose = wh_screen_video_dispose; + object_class->finalize = wh_screen_video_finalize; + + actor_class->paint = wh_screen_video_paint; + actor_class->get_preferred_width = wh_screen_video_get_preferred_width; + actor_class->get_preferred_height = wh_screen_video_get_preferred_height; + actor_class->allocate = wh_screen_video_allocate; + + _screen_signals[PLAYBACK_STARTED] = + g_signal_new ("playback-started", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHScreenVideoClass, started), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _screen_signals[PLAYBACK_FINISHED] = + g_signal_new ("playback-finished", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHScreenVideoClass, finished), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); +} + +static void +video_make_controls (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + gchar font_desc[32]; + gint h, w, so; + ClutterActor *actor; + ClutterColor seekcol = { 0xbb, 0xbb, 0xbb, 0xff }, + txtcol = { 0x72, 0x9f, 0xcf, 0xff }, + fgcol = { 0x72, 0x9f, 0xcf, 0xff }; + + priv->video_controls = clutter_group_new(); + + /* And this code here is why some kind of optional simple layout engine + * would be a good idea in cluter... + */ + h = CSH()/6; + w = CSW() - CSW()/4; + + actor = util_actor_from_file (PKGDATADIR "/header.svg", w, h); + clutter_group_add (CLUTTER_GROUP(priv->video_controls), actor); + + g_snprintf(font_desc, 32, "Sans Bold %ipx", h/8); + priv->duration = clutter_label_new_full (font_desc, "00:00", &fgcol); + priv->position = clutter_label_new_full (font_desc, "00:00", &fgcol); + + so = clutter_actor_get_width (priv->position)/2 + 10; + + g_snprintf(font_desc, 32, "Sans Bold %ipx", h/6); + + priv->title = clutter_label_new_with_text (font_desc, " "); + clutter_label_set_color (CLUTTER_LABEL(priv->title), &txtcol); + clutter_label_set_line_wrap (CLUTTER_LABEL(priv->title), FALSE); + clutter_label_set_ellipsize (CLUTTER_LABEL(priv->title), + PANGO_ELLIPSIZE_MIDDLE); + clutter_actor_set_width (priv->title, w/2); + clutter_actor_set_position (priv->title, so, 10); + clutter_group_add (CLUTTER_GROUP(priv->video_controls), priv->title); + + priv->vol_label = clutter_label_new_with_text (font_desc, ""); + clutter_label_set_color (CLUTTER_LABEL(priv->vol_label), &seekcol); + clutter_label_set_line_wrap (CLUTTER_LABEL(priv->vol_label), FALSE); + clutter_actor_set_width (priv->vol_label, w/8); + clutter_actor_set_position (priv->vol_label, w-(w/8)-10, 10); + clutter_group_add (CLUTTER_GROUP(priv->video_controls), priv->vol_label); + + /* Seek bar */ + priv->video_seekbar_bg = clutter_rectangle_new_with_color (&seekcol); + clutter_actor_set_size (priv->video_seekbar_bg, w - (2*so), 20); + clutter_actor_set_position (priv->video_seekbar_bg, so, + 15 + clutter_actor_get_height (priv->title)); + clutter_group_add (CLUTTER_GROUP(priv->video_controls), + priv->video_seekbar_bg); + + priv->video_seekbar = clutter_rectangle_new_with_color (&fgcol); + clutter_actor_set_size (priv->video_seekbar, 0, 20); + clutter_actor_set_position (priv->video_seekbar, so, + 15 + clutter_actor_get_height (priv->title)); + clutter_group_add (CLUTTER_GROUP(priv->video_controls), priv->video_seekbar); + + + clutter_group_add (CLUTTER_GROUP(priv->video_controls), priv->duration); + clutter_actor_set_position (priv->duration, + w - clutter_actor_get_width (priv->duration)-10, + 15 + clutter_actor_get_height (priv->title) + 20); + + clutter_group_add (CLUTTER_GROUP(priv->video_controls), priv->position); + clutter_actor_set_position (priv->position, so, 15 + clutter_actor_get_height (priv->title) + 20); + + clutter_actor_set_position (priv->video_controls, + CSW()/8, h/3); + + clutter_actor_set_parent (CLUTTER_ACTOR(priv->video_controls), + CLUTTER_ACTOR(screen)); + + clutter_actor_set_opacity (CLUTTER_ACTOR(priv->video_controls), 0); + + priv->controls_effect_tmpl + = clutter_effect_template_new (clutter_timeline_new (30, 60), + CLUTTER_ALPHA_SINE_INC); + + priv->fadein_effect_tmpl + = clutter_effect_template_new (clutter_timeline_new (30, 60), + CLUTTER_ALPHA_SINE_INC); +} + +static void +wh_screen_video_init (WHScreenVideo *self) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(self); + ClutterColor black = { 0,0,0,255 }; + + /* Create child video texture */ +#ifdef USE_HELIX + priv->video = clutter_helix_video_texture_new (); +#else + priv->video = clutter_gst_video_texture_new (); +#endif + + /* Dont let the underlying pixbuf dictate size */ + g_object_set (G_OBJECT(priv->video), "sync-size", FALSE, NULL); + + /* Handle it ourselves so can scale up for fullscreen better */ + g_signal_connect (CLUTTER_TEXTURE(priv->video), + "size-change", + G_CALLBACK (video_size_change), NULL); + + priv->bg = clutter_rectangle_new_with_color (&black); + clutter_actor_set_size (priv->bg, + CLUTTER_STAGE_WIDTH(), CLUTTER_STAGE_HEIGHT()); + clutter_actor_set_opacity (priv->bg, 0); + + clutter_actor_set_parent (priv->bg, CLUTTER_ACTOR(self)); + clutter_actor_set_parent (priv->video, CLUTTER_ACTOR(self)); + + clutter_actor_show (priv->video); + + /* Make */ + video_make_controls (self); +} + +ClutterActor* +wh_screen_video_new (void) +{ + return CLUTTER_ACTOR(g_object_new (WH_TYPE_SCREEN_VIDEO, NULL)); +} + +static void +on_wh_screen_video_error (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + /* Hack to stop looping on an unplayable file. + * FIXME: Need much better error handling.. + */ + + g_signal_emit (screen, _screen_signals[PLAYBACK_STARTED], 0); + + g_signal_handlers_disconnect_by_func (priv->video, + G_CALLBACK (video_tick), + screen); + + g_signal_handlers_disconnect_by_func(clutter_stage_get_default(), + video_input_cb, + screen); + + g_signal_emit (screen, _screen_signals[PLAYBACK_FINISHED], 0); +} + + +void +wh_screen_video_deactivate (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + if (clutter_actor_is_rotated (priv->video)) + { + ClutterEffectTemplate *template; + + template = clutter_effect_template_new_for_duration + (1000, CLUTTER_ALPHA_SINE_INC); + clutter_effect_rotate (template, + CLUTTER_ACTOR (priv->video), + CLUTTER_Y_AXIS, + 0, + CSW()/2, CSH()/2, 0, + CLUTTER_ROTATE_CCW, + NULL, + NULL); + } + + g_signal_handlers_disconnect_by_func (priv->video, + G_CALLBACK (video_tick), + screen); + + clutter_media_set_playing (CLUTTER_MEDIA(priv->video), FALSE); + + priv->video_playing = FALSE; + + video_hide_controls (screen); + + g_signal_handlers_disconnect_by_func(clutter_stage_get_default(), + video_input_cb, + screen); + + g_signal_emit (screen, _screen_signals[PLAYBACK_FINISHED], 0); +} + +gboolean +wh_screen_video_get_playing (WHScreenVideo *screen) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + + return priv->video_playing; +} + +gboolean +wh_screen_video_activate (WHScreenVideo *screen, WHVideoView *view) +{ + WHScreenVideoPrivate *priv = SCREEN_VIDEO_PRIVATE(screen); + gchar *episode = NULL, *series = NULL, *title = NULL, buf[16]; + + priv->video_row = wh_video_view_get_selected (WH_VIDEO_VIEW(view)); + + if (priv->video_row == NULL + || wh_video_model_row_get_path(priv->video_row) == NULL) + return FALSE; + + g_signal_connect (clutter_stage_get_default(), + "key-release-event", + G_CALLBACK (video_input_cb), + screen); + + g_signal_connect (priv->video, + "notify::position", + G_CALLBACK (video_tick), + screen); + + g_signal_connect_swapped (priv->video, + "eos", + G_CALLBACK (wh_screen_video_deactivate), + screen); + + g_signal_connect_swapped (priv->video, + "error", + G_CALLBACK (on_wh_screen_video_error), + screen); + + g_signal_connect (priv->video, + "pixbuf-change", + G_CALLBACK(video_pixbuf_change), + screen); + + priv->video_controls_visible = FALSE; + + g_snprintf (buf, sizeof(buf), "Vol:%.2i", + (gint)(clutter_media_get_volume (CLUTTER_MEDIA(priv->video))/0.1)); + clutter_label_set_text (CLUTTER_LABEL(priv->vol_label), buf); + + wh_video_model_row_get_extended_info (priv->video_row, &series, &episode); + + title = g_strdup_printf("%s%s%s%s%s%s", + wh_video_model_row_get_title (priv->video_row), + (series != NULL || episode != NULL) ? " (" : "", + series != NULL ? series : "", + (series != NULL && episode != NULL) ? "/" : "", + episode != NULL ? episode : "", + (series != NULL || episode != NULL) ? ")" : ""); + + clutter_label_set_text (CLUTTER_LABEL(priv->title), title); + clutter_actor_set_width (priv->title, CSW()/2); + + g_free (title); + + clutter_media_set_uri(CLUTTER_MEDIA(priv->video), + wh_video_model_row_get_path(priv->video_row)); + clutter_media_set_playing (CLUTTER_MEDIA(priv->video), TRUE); + + return TRUE; +} diff --git a/attic/woohaa/wh-screen-video.h b/attic/woohaa/wh-screen-video.h new file mode 100644 index 0000000..84f3738 --- /dev/null +++ b/attic/woohaa/wh-screen-video.h @@ -0,0 +1,58 @@ +#ifndef _HAVE_WH_SCREEN_VIDEO_H +#define _HAVE_WH_SCREEN_VIDEO_H + +#include +#include "wh-video-view.h" + +G_BEGIN_DECLS + +#define WH_TYPE_SCREEN_VIDEO wh_screen_video_get_type() + +#define WH_SCREEN_VIDEO(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_SCREEN_VIDEO, WHScreenVideo)) + +#define WH_SCREEN_VIDEO_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_SCREEN_VIDEO, WHScreenVideoClass)) + +#define WH_IS_SCREEN_VIDEO(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_SCREEN_VIDEO)) + +#define WH_IS_SCREEN_VIDEO_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_SCREEN_VIDEO)) + +#define WH_SCREEN_VIDEO_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_SCREEN_VIDEO, WHScreenVideoClass)) + +typedef struct { + ClutterActor parent; +} WHScreenVideo; + +typedef struct { + ClutterActorClass parent_class; + + void (*started) (WHScreenVideo *screen); + void (*finished) (WHScreenVideo *screen); + +} WHScreenVideoClass; + +GType wh_screen_video_get_type (void); + +ClutterActor* wh_screen_video_new (void); + +gboolean +wh_screen_video_activate (WHScreenVideo *screen, WHVideoView *view); + +void +wh_screen_video_deactivate (WHScreenVideo *screen); + +gboolean +wh_screen_video_get_playing (WHScreenVideo *screen); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-slider-menu.c b/attic/woohaa/wh-slider-menu.c new file mode 100644 index 0000000..8195405 --- /dev/null +++ b/attic/woohaa/wh-slider-menu.c @@ -0,0 +1,518 @@ +#include +#include "wh-slider-menu.h" + +#define CSW() CLUTTER_STAGE_WIDTH() +#define CSH() CLUTTER_STAGE_HEIGHT() + +#define SELECTED_OFFSET (CLUTTER_STAGE_WIDTH()/5) + +typedef struct WoohaaSliderMenuEntry +{ + ClutterActor *actor; + WoohaaSliderMenuSelectedFunc selected_func; + gpointer userdata; + gint offset; +} +WoohaaSliderMenuEntry; + +#define WOOHAA_TYPE_BEHAVIOUR_SLIDER (clutter_behaviour_slider_get_type ()) + +#define WOOHAA_BEHAVIOUR_SLIDER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_SLIDER, WoohaaBehaviourSlider)) + +#define WOOHAA_BEHAVIOUR_SLIDER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WOOHAA_TYPE_BEHAVIOUR_SLIDER, WoohaaBehaviourSliderClass)) + +#define CLUTTER_IS_BEHAVIOUR_SLIDER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_SLIDER)) + +#define CLUTTER_IS_BEHAVIOUR_SLIDER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WOOHAA_TYPE_BEHAVIOUR_SLIDER)) + +#define WOOHAA_BEHAVIOUR_SLIDER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WOOHAA_TYPE_BEHAVIOUR_SLIDER, WoohaaBehaviourSliderClass)) + +typedef struct _WoohaaBehaviourSlider WoohaaBehaviourSlider; +typedef struct _WoohaaBehaviourSliderClass WoohaaBehaviourSliderClass; + +struct _WoohaaBehaviourSlider +{ + ClutterBehaviour parent; + WoohaaSliderMenuEntry *old; + WoohaaSliderMenuEntry *new; + WoohaaSliderMenu *menu; +}; + +struct _WoohaaBehaviourSliderClass +{ + ClutterBehaviourClass parent_class; +}; + +GType clutter_behaviour_slider_get_type (void) G_GNUC_CONST; + +G_DEFINE_TYPE (WoohaaBehaviourSlider, clutter_behaviour_slider, CLUTTER_TYPE_BEHAVIOUR); + +static ClutterBehaviour* +clutter_behaviour_slider_new (WoohaaSliderMenu *menu, + WoohaaSliderMenuEntry *start, + WoohaaSliderMenuEntry *end); + +struct _WoohaaSliderMenuPrivate +{ + GList *entrys; + gint entry_height; + gint menu_width; + gint n_entrys; + gint active_entry_num; + gint offset; /* current offset */ + gint unclipped_width; + ClutterActor *bg; + ClutterActor *entry_group; + + guint alpha_value; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behave; + ClutterEffectTemplate *effect_template; + + gchar *font; + ClutterColor *font_color; + ClutterActor *next, *prev; +}; + +G_DEFINE_TYPE (WoohaaSliderMenu, woohaa_slider_menu, CLUTTER_TYPE_ACTOR); + +#define WOOHAA_SLIDER_MENU_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), WOOHAA_TYPE_SLIDER_MENU, WoohaaSliderMenuPrivate)) + +static void +woohaa_slider_menu_dispose (GObject *object) +{ + WoohaaSliderMenu *self; + WoohaaSliderMenuPrivate *priv; + + self = WOOHAA_SLIDER_MENU(object); + priv = self->priv; + + G_OBJECT_CLASS (woohaa_slider_menu_parent_class)->dispose (object); +} + +static void +woohaa_slider_menu_finalize (GObject *object) +{ + WoohaaSliderMenu *self; + WoohaaSliderMenuPrivate *priv; + + self = WOOHAA_SLIDER_MENU(object); + priv = self->priv; + + G_OBJECT_CLASS (woohaa_slider_menu_parent_class)->finalize (object); +} + +static void +woohaa_slider_menu_paint (ClutterActor *actor) +{ + WoohaaSliderMenuPrivate *priv = (WOOHAA_SLIDER_MENU (actor))->priv; + + clutter_actor_paint (priv->bg); + clutter_actor_paint (priv->next); + clutter_actor_paint (priv->prev); + clutter_actor_paint (priv->entry_group); +} + +static void +woohaa_slider_menu_get_preferred_width (ClutterActor *actor, + ClutterUnit for_height, + ClutterUnit *min_width_p, + ClutterUnit *natural_width_p) +{ + *min_width_p = CLUTTER_UNITS_FROM_INT (100); + *natural_width_p = CLUTTER_UNITS_FROM_INT (CSW()); +} + +static void +woohaa_slider_menu_get_preferred_height (ClutterActor *actor, + ClutterUnit for_width, + ClutterUnit *min_height_p, + ClutterUnit *natural_height_p) +{ + WoohaaSliderMenuPrivate *priv = (WOOHAA_SLIDER_MENU (actor))->priv; + + *min_height_p = CLUTTER_UNITS_FROM_INT (1); + if (priv->entry_height) + *natural_height_p = CLUTTER_UNITS_FROM_INT (priv->entry_height * 2); + else + *natural_height_p = CLUTTER_UNITS_FROM_INT (200); +} + +static void +woohaa_slider_menu_allocate (ClutterActor *actor, + const ClutterActorBox *box, + gboolean absolute_origin_changed) +{ + WoohaaSliderMenuPrivate *priv = (WOOHAA_SLIDER_MENU (actor))->priv; + ClutterUnit natural_width, natural_height; + ClutterActorBox child_box; + ClutterUnit focal_x, focal_y; + ClutterUnit entry_offset = 0, entry_width = 0; + WoohaaSliderMenuEntry *current, *old; + + clutter_actor_get_preferred_size (priv->bg, NULL, NULL, + &natural_width, &natural_height); + child_box.x1 = 0; + child_box.y1 = 0; + child_box.x2 = natural_width; + child_box.y2 = natural_height; + clutter_actor_allocate (priv->bg, &child_box, absolute_origin_changed); + + focal_x = CLUTTER_UNITS_FROM_INT(CSW()/4); + focal_y = 0; + + if (priv->entrys) + { + current = (WOOHAA_BEHAVIOUR_SLIDER (priv->behave))->new; + old = (WOOHAA_BEHAVIOUR_SLIDER (priv->behave))->old; + + if (current && old) + { + entry_offset = (clutter_actor_get_xu (current->actor) - clutter_actor_get_xu (old->actor)) * + ((gdouble)(priv->alpha_value) / (gdouble)CLUTTER_ALPHA_MAX_ALPHA) + + clutter_actor_get_xu (old->actor); + + entry_width = (clutter_actor_get_widthu (current->actor) - clutter_actor_get_widthu (old->actor)) * + ((gdouble)(priv->alpha_value) / (gdouble)CLUTTER_ALPHA_MAX_ALPHA) + + clutter_actor_get_widthu (old->actor); + } + + } + + child_box.x1 = focal_x - entry_offset; + child_box.y1 = focal_y; + child_box.x2 = natural_height/2 + child_box.x1 - entry_offset; + child_box.y2 = natural_height/2 + child_box.y1; + clutter_actor_allocate (priv->entry_group, + &child_box, + absolute_origin_changed); + + if (priv->active_entry_num > 0) + { + clutter_actor_set_opacity (priv->prev, 0xAA); + + child_box.x1 = focal_x - natural_height/2; + child_box.y1 = focal_y + natural_height/10; + child_box.x2 = natural_height/2 + child_box.x1; + child_box.y2 = natural_height/2 + child_box.y1; + clutter_actor_allocate (priv->prev, &child_box, absolute_origin_changed); + } + else + { + clutter_actor_set_opacity (priv->prev, + 0xff + (priv->alpha_value * (-0xff) + / CLUTTER_ALPHA_MAX_ALPHA)); + } + + if (priv->active_entry_num < priv->n_entrys - 1) + { + clutter_actor_set_opacity (priv->next, 0xAA); + + child_box.x1 = focal_x + entry_width; + child_box.y1 = focal_y + natural_height/10; + child_box.x2 = natural_height/2 + child_box.x1; + child_box.y2 = natural_height/2 + child_box.y1; + clutter_actor_allocate (priv->next, &child_box, absolute_origin_changed); + } + else + { + clutter_actor_set_opacity (priv->next, + 0xff + (priv->alpha_value * (-0xff) + / CLUTTER_ALPHA_MAX_ALPHA)); + } + + CLUTTER_ACTOR_CLASS (woohaa_slider_menu_parent_class)-> + allocate (actor, box, absolute_origin_changed); +} + +static void +woohaa_slider_menu_class_init (WoohaaSliderMenuClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WoohaaSliderMenuPrivate)); + + object_class->dispose = woohaa_slider_menu_dispose; + object_class->finalize = woohaa_slider_menu_finalize; + + actor_class->get_preferred_width = woohaa_slider_menu_get_preferred_width; + actor_class->get_preferred_height = woohaa_slider_menu_get_preferred_height; + actor_class->allocate = woohaa_slider_menu_allocate; + actor_class->paint = woohaa_slider_menu_paint; +} + +static void +woohaa_slider_menu_init (WoohaaSliderMenu *woohaa_slider_menu) +{ + WoohaaSliderMenuPrivate *priv; + + woohaa_slider_menu->priv = priv = + G_TYPE_INSTANCE_GET_PRIVATE (woohaa_slider_menu, + WOOHAA_TYPE_SLIDER_MENU, + WoohaaSliderMenuPrivate); + + priv->menu_width = CSW(); + + priv->timeline = clutter_timeline_new (30, 60); + + priv->alpha = clutter_alpha_new_full (priv->timeline, + CLUTTER_ALPHA_SINE_INC, + NULL, NULL); + + priv->behave = clutter_behaviour_slider_new (woohaa_slider_menu, 0, 0); + + priv->effect_template + = clutter_effect_template_new (clutter_timeline_new (20, 60), + CLUTTER_ALPHA_SINE_INC); + + priv->font_color = g_new0(ClutterColor, 1); + clutter_color_parse ("#ccccccff", priv->font_color); + + priv->bg = clutter_texture_new_from_file (PKGDATADIR "/header.svg", NULL); + if (!priv->bg) g_warning ("Unable to load heaer.svg"); + + clutter_actor_set_parent (priv->bg, CLUTTER_ACTOR (woohaa_slider_menu)); + + clutter_actor_set_width (priv->bg, CSW()); + + clutter_actor_show (priv->bg); + + priv->next = clutter_texture_new_from_file (PKGDATADIR "/arrow-next.svg", + NULL); + if (!priv->next) g_warning ("Unable to load arror-next.svg"); + + clutter_actor_hide (priv->next); + clutter_actor_set_parent (priv->next, CLUTTER_ACTOR (woohaa_slider_menu)); + + priv->prev = clutter_texture_new_from_file (PKGDATADIR "/arrow-prev.svg", + NULL); + if (!priv->prev) g_warning ("Unable to load arror-prev.svg"); + + clutter_actor_hide (priv->prev); + clutter_actor_set_parent (priv->prev, CLUTTER_ACTOR (woohaa_slider_menu)); + + priv->entry_group = clutter_group_new (); + clutter_actor_set_parent (priv->entry_group, + CLUTTER_ACTOR (woohaa_slider_menu)); + clutter_actor_show (priv->entry_group); +} + +ClutterActor* +woohaa_slider_menu_new (const gchar *font) +{ + ClutterActor *menu; + WoohaaSliderMenuPrivate *priv; + + menu = g_object_new (WOOHAA_TYPE_SLIDER_MENU, NULL); + priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + priv->font = g_strdup(font); + + return menu; +} + +void +woohaa_slider_menu_add_option (WoohaaSliderMenu *menu, + const gchar *text, + WoohaaSliderMenuSelectedFunc selected, + gpointer userdata) +{ + WoohaaSliderMenuPrivate *priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + WoohaaSliderMenuEntry *entry; + ClutterActor *actor; + gint pad = 0; + + actor = clutter_label_new_with_text (priv->font, text); + clutter_label_set_color (CLUTTER_LABEL(actor), priv->font_color); + clutter_label_set_line_wrap (CLUTTER_LABEL(actor), FALSE); + + entry = g_new0(WoohaaSliderMenuEntry, 1); + entry->actor = actor; + entry->selected_func = selected; + entry->userdata = userdata; + + if (clutter_actor_get_height(actor) > priv->entry_height) + { + priv->entry_height = clutter_actor_get_height(actor); + + clutter_actor_set_width (priv->bg, CSW()); + clutter_actor_set_height (priv->bg, priv->entry_height + + (priv->entry_height/2)); + } + + if (clutter_actor_get_height(priv->next) > priv->entry_height) + { + gint w, h; + + w = priv->entry_height/8; + h = priv->entry_height/4; + + clutter_actor_set_size (priv->next, w, h); + clutter_actor_set_size (priv->prev, w, h); + } + + pad = clutter_actor_get_width (priv->next) * 2; + + entry->offset = priv->unclipped_width + pad; + + if (priv->entrys == NULL) + priv->unclipped_width += pad; + + priv->unclipped_width += clutter_actor_get_width(actor) + pad; + + if (priv->entrys == 0) + { + /* First Entry */ + clutter_actor_set_opacity (actor, 0xff); + } + else + { + clutter_actor_set_opacity (actor, 0x33); + clutter_actor_set_scale (actor, 0.7, 0.7); + } + + clutter_group_add (CLUTTER_GROUP (priv->entry_group), actor); + + priv->entrys = g_list_append (priv->entrys, entry); + + clutter_actor_set_position (actor, + entry->offset, + priv->entry_height/12); + + priv->n_entrys++; +} + +void +woohaa_slider_menu_activate (WoohaaSliderMenu *menu, + gint entry_num) +{ + WoohaaSliderMenuPrivate *priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + WoohaaSliderMenuEntry *selected, *current; + + if (entry_num < 0 || entry_num >= priv->n_entrys) + return; + + if (clutter_timeline_is_playing(priv->timeline)) + return; + + current + = (WoohaaSliderMenuEntry *)g_list_nth_data(priv->entrys, + priv->active_entry_num); + + selected = (WoohaaSliderMenuEntry *)g_list_nth_data(priv->entrys, + entry_num); + + priv->active_entry_num = entry_num; + + WOOHAA_BEHAVIOUR_SLIDER(priv->behave)->old = current; + WOOHAA_BEHAVIOUR_SLIDER(priv->behave)->new = selected; + + clutter_actor_queue_relayout (CLUTTER_ACTOR (menu)); + + /* FIXME: Should be a signal */ + if (selected->selected_func) + selected->selected_func(menu, selected->actor, selected->userdata); + + clutter_timeline_start (priv->timeline); +} + +void +woohaa_slider_menu_advance (WoohaaSliderMenu *menu, gint n) +{ + WoohaaSliderMenuPrivate *priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + woohaa_slider_menu_activate (menu, priv->active_entry_num + n); +} + +/* Custom behaviour */ + +static void +clutter_behaviour_alpha_notify (ClutterBehaviour *behave, + guint32 alpha_value) +{ + WoohaaBehaviourSlider *slide = WOOHAA_BEHAVIOUR_SLIDER(behave); + WoohaaSliderMenu *menu; + gdouble scale; + WoohaaSliderMenuPrivate *priv; + + if (!(slide->old) || !(slide->new)) + return; + + menu = slide->menu; + priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + + priv->offset = slide->old->offset + + (((gint)alpha_value * + (slide->new->offset - slide->old->offset)) + / CLUTTER_ALPHA_MAX_ALPHA); + + clutter_actor_set_opacity (slide->old->actor, + 0xff + (alpha_value + * (0x66 - 0xff) + / CLUTTER_ALPHA_MAX_ALPHA)); + + clutter_actor_set_opacity (slide->new->actor, + 0x66 + (alpha_value + * (0xff - 0x66) + / CLUTTER_ALPHA_MAX_ALPHA)); + + scale = (0.3 * alpha_value) / (gdouble)CLUTTER_ALPHA_MAX_ALPHA; + + clutter_actor_set_scale (slide->new->actor, + 0.7 + scale, + 0.7 + scale); + + if (slide->new->actor != slide->old->actor) + clutter_actor_set_scale (slide->old->actor, + 1.0 - scale, + 1.0 - scale); + + priv->alpha_value = alpha_value; + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR(menu))) + clutter_actor_queue_relayout (CLUTTER_ACTOR (menu)); +} + +static void +clutter_behaviour_slider_class_init (WoohaaBehaviourSliderClass *klass) +{ + ClutterBehaviourClass *behave_class = CLUTTER_BEHAVIOUR_CLASS (klass); + + behave_class->alpha_notify = clutter_behaviour_alpha_notify; +} + +static void +clutter_behaviour_slider_init (WoohaaBehaviourSlider *self) +{ +} + +static ClutterBehaviour* +clutter_behaviour_slider_new (WoohaaSliderMenu *menu, + WoohaaSliderMenuEntry *old, + WoohaaSliderMenuEntry *new) +{ + WoohaaSliderMenuPrivate *priv = WOOHAA_SLIDER_MENU_GET_PRIVATE (menu); + WoohaaBehaviourSlider *slide_behave; + + slide_behave = g_object_new (WOOHAA_TYPE_BEHAVIOUR_SLIDER, + "alpha", priv->alpha, + NULL); + + slide_behave->old = old; + slide_behave->new = new; + slide_behave->menu = menu; + + return CLUTTER_BEHAVIOUR(slide_behave); +} diff --git a/attic/woohaa/wh-slider-menu.h b/attic/woohaa/wh-slider-menu.h new file mode 100644 index 0000000..eaa04e8 --- /dev/null +++ b/attic/woohaa/wh-slider-menu.h @@ -0,0 +1,73 @@ +#ifndef _HAVE_WOOHAA_SLIDER_MENU_H +#define _HAVE_WOOHAA_SLIDER_MENU_H + +#include +#include + +G_BEGIN_DECLS +#define WOOHAA_TYPE_SLIDER_MENU woohaa_slider_menu_get_type() + +#define WOOHAA_SLIDER_MENU(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WOOHAA_TYPE_SLIDER_MENU, WoohaaSliderMenu)) + +#define WOOHAA_SLIDER_MENU_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WOOHAA_TYPE_SLIDER_MENU, WoohaaSliderMenuClass)) + +#define WOOHAA_IS_SLIDER_MENU(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WOOHAA_TYPE_SLIDER_MENU)) + +#define WOOHAA_IS_SLIDER_MENU_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WOOHAA_TYPE_SLIDER_MENU)) + +#define WOOHAA_SLIDER_MENU_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WOOHAA_TYPE_SLIDER_MENU, WoohaaSliderMenuClass)) + +typedef struct _WoohaaSliderMenu WoohaaSliderMenu; +typedef struct _WoohaaSliderMenuClass WoohaaSliderMenuClass; +typedef struct _WoohaaSliderMenuPrivate WoohaaSliderMenuPrivate; + +struct _WoohaaSliderMenu +{ + /*< private >*/ + ClutterActor parent; + WoohaaSliderMenuPrivate *priv; +}; + +struct _WoohaaSliderMenuClass +{ + /*< private >*/ + ClutterActorClass parent_class; + + /* Future padding */ + void (* __reserved1) (void); + void (* __reserved2) (void); + void (* __reserved3) (void); + void (* __reserved4) (void); + void (* __reserved5) (void); + void (* __reserved6) (void); +}; + +typedef void (*WoohaaSliderMenuSelectedFunc) (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata); + +GType woohaa_slider_menu_get_type (void) G_GNUC_CONST; +ClutterActor *woohaa_slider_menu_new (const gchar *font); + +void woohaa_slider_menu_add_option (WoohaaSliderMenu *menu, + const gchar *text, + WoohaaSliderMenuSelectedFunc selected, + gpointer userdata); +void woohaa_slider_menu_activate (WoohaaSliderMenu *menu, + gint entry_num); +void woohaa_slider_menu_advance (WoohaaSliderMenu *menu, + gint n); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-theme.c b/attic/woohaa/wh-theme.c new file mode 100644 index 0000000..e611580 --- /dev/null +++ b/attic/woohaa/wh-theme.c @@ -0,0 +1,78 @@ +#include "wh-theme.h" + +#define FONT_DEFAULT "Sans" + +#define PIXBUF_BG PKGDATADIR "/bg.png" +#define PIXBUF_BUSY PKGDATADIR "/busy.png" +#define PIXBUF_THUMBNAIL PKGDATADIR "/thumbnail-default.png" + +#define COLOR_SLIDER +#define COLOR_SELECTOR +#define COLOR_TITLE_ACTIVE +#define COLOR_TITLE_INACTIVE +#define COLOR_DETAIS + + +typedef struct WHTheme +{ + GHashTable *sounds, *fonts, *colors, *pixbufs; +} +WHTheme; + +static WHTheme *_theme = NULL; + +void +wh_theme_init() +{ + GdkPixbuf *pixbuf; + + _theme = g_new(WHTheme, 1); + + _theme->fonts = g_hash_table_new (g_str_hash, g_str_equal); + _theme->sounds = g_hash_table_new (NULL, NULL); + _theme->colors = g_hash_table_new (NULL, NULL); + _theme->pixbufs = g_hash_table_new (NULL, NULL); + + g_hash_table_insert (_theme->fonts, "default", FONT_DEFAULT); + + pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR "/busy.png", NULL); + if (pixbuf == NULL) + g_error ("Failed to load" PKGDATADIR "/busy.png"); + g_hash_table_insert (_theme->pixbufs, "busy", pixbuf); + + pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR "/bg.png", NULL); + if (pixbuf == NULL) + g_error ("Failed to load" PKGDATADIR "/bg.png"); + g_hash_table_insert (_theme->pixbufs, "bg", pixbuf); + + pixbuf = gdk_pixbuf_new_from_file (PKGDATADIR "/default-thumb.png", NULL); + if (pixbuf == NULL) + g_error ("Failed to load " PKGDATADIR "/default-thumb.png"); + g_hash_table_insert (_theme->pixbufs, "default-thumbnail", pixbuf); +} + +const char* +wh_theme_get_font (const char *id) +{ + return (const char*)g_hash_table_lookup (_theme->fonts, id); +} + +const ClutterColor* +wh_theme_get_color(const char *id) +{ + /* FIXME */ + return NULL; +} + +const ClutterMedia* +wh_theme_get_sound(const char *id) +{ + return NULL; +} + +GdkPixbuf* +wh_theme_get_pixbuf(const char *id) +{ + /* FIXME */ + return (GdkPixbuf*)g_hash_table_lookup (_theme->pixbufs, id); +} diff --git a/attic/woohaa/wh-theme.h b/attic/woohaa/wh-theme.h new file mode 100644 index 0000000..afce57e --- /dev/null +++ b/attic/woohaa/wh-theme.h @@ -0,0 +1,27 @@ +#ifndef _WH_THEME +#define _WH_THEME + +#include +#include +#include + +G_BEGIN_DECLS + +void +wh_theme_init(); + +const char* +wh_theme_get_font (const char *id); + +const ClutterColor* +wh_theme_get_color(const char *id); + +const ClutterMedia* +wh_theme_get_sound(const char *id); + +GdkPixbuf* +wh_theme_get_pixbuf(const char *id); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-video-model-row.c b/attic/woohaa/wh-video-model-row.c new file mode 100644 index 0000000..778f559 --- /dev/null +++ b/attic/woohaa/wh-video-model-row.c @@ -0,0 +1,468 @@ +/* wh-video-model-row.c */ + +#include "wh-video-model-row.h" +#include "wh-video-row-renderer.h" + +G_DEFINE_TYPE (WHVideoModelRow, wh_video_model_row, G_TYPE_OBJECT); + +#define VIDEO_MODEL_ROW_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), WH_TYPE_VIDEO_MODEL_ROW, WHVideoModelRowPrivate)) + +typedef struct _WHVideoModelRowPrivate WHVideoModelRowPrivate; + +struct _WHVideoModelRowPrivate +{ + gchar *path; + gchar *title; + gchar *series; + gchar *episode; + gint n_views; + time_t age; + time_t vtime; + GdkPixbuf *thumbnail; + WHVideoRowRenderer *renderer; +}; + +enum +{ + PROP_0, + PROP_PATH, + PROP_TITLE, + PROP_N_VIEWS, + PROP_AGE, + PROP_RENDERER, + PROP_VTIME, + PROP_SERIES, + PROP_EPISODE, + PROP_THUMBNAIL +}; + +static void +wh_video_model_row_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + WHVideoModelRow *row = WH_VIDEO_MODEL_ROW(object); + WHVideoModelRowPrivate *priv; + + priv = VIDEO_MODEL_ROW_PRIVATE(row); + + switch (property_id) + { + case PROP_PATH: + g_value_set_string (value, priv->path); + break; + case PROP_TITLE: + g_value_set_string (value, priv->title); + break; + case PROP_SERIES: + g_value_set_string (value, priv->series); + break; + case PROP_EPISODE: + g_value_set_string (value, priv->episode); + break; + case PROP_N_VIEWS: + g_value_set_int (value, wh_video_model_row_get_n_views (row)); + break; + case PROP_AGE: + g_value_set_int (value, wh_video_model_row_get_age (row)); + break; + case PROP_VTIME: + g_value_set_int (value, wh_video_model_row_get_vtime (row)); + break; + case PROP_RENDERER: + g_value_set_object (value, priv->renderer); + break; + case PROP_THUMBNAIL: + g_value_set_object (value, priv->thumbnail); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_model_row_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + WHVideoModelRow *row = WH_VIDEO_MODEL_ROW(object); + WHVideoModelRowPrivate *priv; + + priv = VIDEO_MODEL_ROW_PRIVATE(row); + + switch (property_id) + { + case PROP_PATH: + wh_video_model_row_set_path (row, g_value_get_string (value)); + break; + case PROP_TITLE: + wh_video_model_row_set_title (row, g_value_get_string (value)); + break; + case PROP_SERIES: + wh_video_model_row_set_extended_info (row, + g_value_get_string (value), + priv->episode); + break; + case PROP_EPISODE: + wh_video_model_row_set_extended_info (row, + priv->series, + g_value_get_string (value)); + break; + case PROP_N_VIEWS: + wh_video_model_row_set_n_views (row, g_value_get_int (value)); + break; + case PROP_AGE: + wh_video_model_row_set_age (row, g_value_get_int (value)); + break; + case PROP_VTIME: + wh_video_model_row_set_vtime (row, g_value_get_int (value)); + break; + case PROP_RENDERER: + wh_video_model_row_set_renderer (row, g_value_get_object (value)); + break; + case PROP_THUMBNAIL: + wh_video_model_row_set_thumbnail (row, + g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_model_row_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (wh_video_model_row_parent_class)->dispose) + G_OBJECT_CLASS (wh_video_model_row_parent_class)->dispose (object); +} + +static void +wh_video_model_row_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_video_model_row_parent_class)->finalize (object); +} + +static void +wh_video_model_row_class_init (WHVideoModelRowClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WHVideoModelRowPrivate)); + + object_class->get_property = wh_video_model_row_get_property; + object_class->set_property = wh_video_model_row_set_property; + object_class->dispose = wh_video_model_row_dispose; + object_class->finalize = wh_video_model_row_finalize; + + g_object_class_install_property + (object_class, + PROP_PATH, + g_param_spec_string ("path", + "Path", + "path to rows video file", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_TITLE, + g_param_spec_string ("title", + "title", + "Title of row entry", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_SERIES, + g_param_spec_string ("series", + "series", + "Series", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_EPISODE, + g_param_spec_string ("episode", + "episide", + "Episode", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_N_VIEWS, + g_param_spec_int ("n-views", + "n-views", + "Numberof times video file has been watched", + 0, G_MAXINT, + 0, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_AGE, + g_param_spec_int ("age", + "Age", + "Age in seconds", + 0, G_MAXINT, + 0, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_VTIME, + g_param_spec_int ("last-viewed-time", + "Last-Viewed-Time", + "When file was last viewed", + 0, G_MAXINT, + 0, + G_PARAM_READWRITE)); + + + g_object_class_install_property + (object_class, + PROP_RENDERER, + g_param_spec_object ("renderer", + "Renderer", + "Renderer Object used to paint the row", + WH_TYPE_VIDEO_ROW_RENDERER, + G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, + PROP_THUMBNAIL, + g_param_spec_object ("thumbnail", + "Thumbnail", + "Thumbnail image of video file", + GDK_TYPE_PIXBUF, + G_PARAM_READWRITE)); + +} + +static void +wh_video_model_row_init (WHVideoModelRow *self) +{ +} + +WHVideoModelRow* +wh_video_model_row_new (void) +{ + return g_object_new (WH_TYPE_VIDEO_MODEL_ROW, NULL); +} + +G_CONST_RETURN gchar* +wh_video_model_row_get_path (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->path; +} + +void +wh_video_model_row_set_path (WHVideoModelRow *row, const gchar *path) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + g_free (priv->path); + + if (path && path[0] != '\0') + priv->path = g_strdup(path); + + g_object_notify (G_OBJECT (row), "path"); + g_object_unref (row); +} + +G_CONST_RETURN gchar* +wh_video_model_row_get_title (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->title; +} + +void +wh_video_model_row_set_title (WHVideoModelRow *row, const gchar *title) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + g_free (priv->title); + priv->title = NULL; + + if (title && title[0] != '\0') + priv->title = g_strdup(title); + + g_object_notify (G_OBJECT (row), "title"); + g_object_unref (row); +} + +void +wh_video_model_row_set_extended_info (WHVideoModelRow *row, + const gchar *series, + const gchar *episode) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + g_free (priv->series); + priv->series = NULL; + + if (series && series[0] != '\0') + priv->series = g_strdup(series); + + g_object_notify (G_OBJECT (row), "series"); + + g_free (priv->episode); + priv->episode = NULL; + + if (episode && episode[0] != '\0') + priv->episode = g_strdup(episode); + + g_object_notify (G_OBJECT (row), "episode"); + + g_object_unref (row); +} + +void +wh_video_model_row_get_extended_info (WHVideoModelRow *row, + gchar **series, + gchar **episode) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + if (priv->series) + *series = g_strdup (priv->series); + else + *series = NULL; + + if (priv->episode) + *episode = g_strdup (priv->episode); + else + *episode = NULL; +} + + +gint +wh_video_model_row_get_age (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->age; +} + +void +wh_video_model_row_set_age (WHVideoModelRow *row, gint age) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + priv->age = age; + + g_object_notify (G_OBJECT (row), "age"); + g_object_unref (row); +} + +gint +wh_video_model_row_get_vtime (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->vtime; +} + +void +wh_video_model_row_set_vtime (WHVideoModelRow *row, gint vtime) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + priv->vtime = vtime; + + g_object_notify (G_OBJECT (row), "last-viewed-time"); + g_object_unref (row); +} + +gint +wh_video_model_row_get_n_views (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->n_views; +} + +void +wh_video_model_row_set_renderer (WHVideoModelRow *row, + WHVideoRowRenderer *renderer) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + if (priv->renderer) + g_object_unref (priv->renderer); + + priv->renderer = renderer; + + if (priv->renderer) + g_object_ref (priv->renderer); + + g_object_notify (G_OBJECT (row), "renderer"); + g_object_unref (row); +} + +WHVideoRowRenderer* +wh_video_model_row_get_renderer (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->renderer; +} + +void +wh_video_model_row_set_n_views (WHVideoModelRow *row, gint n_views) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + priv->n_views = n_views; + + g_object_notify (G_OBJECT (row), "n-views"); + g_object_unref (row); +} + +GdkPixbuf* +wh_video_model_row_get_thumbnail (WHVideoModelRow *row) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + return priv->thumbnail; +} + +void +wh_video_model_row_set_thumbnail (WHVideoModelRow *row, + GdkPixbuf *pixbuf) +{ + WHVideoModelRowPrivate *priv = VIDEO_MODEL_ROW_PRIVATE(row); + + g_object_ref (row); + + if (priv->thumbnail) + g_object_unref (priv->thumbnail); + + if (pixbuf == NULL) + g_warning("got a null pixbuf so I will now likely crash"); + + priv->thumbnail = pixbuf; + g_object_ref (pixbuf); + + g_object_notify (G_OBJECT (row), "thumbnail"); + g_object_unref (row); +} diff --git a/attic/woohaa/wh-video-model-row.h b/attic/woohaa/wh-video-model-row.h new file mode 100644 index 0000000..fce0fdd --- /dev/null +++ b/attic/woohaa/wh-video-model-row.h @@ -0,0 +1,103 @@ +/* wh-video-model-row.h */ +#ifndef _WH_VIDEO_MODEL_ROW +#define _WH_VIDEO_MODEL_ROW + +#include +#include + +G_BEGIN_DECLS + +#define WH_TYPE_VIDEO_MODEL_ROW wh_video_model_row_get_type() + +#define WH_VIDEO_MODEL_ROW(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_VIDEO_MODEL_ROW, WHVideoModelRow)) + +#define WH_VIDEO_MODEL_ROW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_VIDEO_MODEL_ROW, WHVideoModelRowClass)) + +#define WH_IS_VIDEO_MODEL_ROW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_VIDEO_MODEL_ROW)) + +#define WH_IS_VIDEO_MODEL_ROW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_VIDEO_MODEL_ROW)) + +#define WH_VIDEO_MODEL_ROW_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_VIDEO_MODEL_ROW, WHVideoModelRowClass)) + +typedef struct { + GObject parent; +} WHVideoModelRow; + +typedef struct { + GObjectClass parent_class; +} WHVideoModelRowClass; + +#include "wh-video-row-renderer.h" + +GType wh_video_model_row_get_type (void); + +WHVideoModelRow* wh_video_model_row_new (void); + +G_CONST_RETURN gchar* +wh_video_model_row_get_path (WHVideoModelRow *row); + +void +wh_video_model_row_set_path (WHVideoModelRow *row, const gchar *path); + +G_CONST_RETURN gchar* +wh_video_model_row_get_title (WHVideoModelRow *row); + +void +wh_video_model_row_set_title (WHVideoModelRow *row, const gchar *title); + +gint +wh_video_model_row_get_age (WHVideoModelRow *row); + +void +wh_video_model_row_set_age (WHVideoModelRow *row, gint age); + +gint +wh_video_model_row_get_n_views (WHVideoModelRow *row); + +void +wh_video_model_row_set_n_views (WHVideoModelRow *row, gint n_views); + +gint +wh_video_model_row_get_vtime (WHVideoModelRow *row); + +void +wh_video_model_row_set_vtime (WHVideoModelRow *row, gint vtime); + +void +wh_video_model_row_set_renderer (WHVideoModelRow *row, + WHVideoRowRenderer *renderer); + +WHVideoRowRenderer* +wh_video_model_row_get_renderer (WHVideoModelRow *row); + +void +wh_video_model_row_set_extended_info (WHVideoModelRow *row, + const gchar *series, + const gchar *episode); + +void +wh_video_model_row_get_extended_info (WHVideoModelRow *row, + gchar **series, + gchar **episode); + +GdkPixbuf* +wh_video_model_row_get_thumbnail (WHVideoModelRow *row); + +void +wh_video_model_row_set_thumbnail (WHVideoModelRow *row, + GdkPixbuf *pixbuf); + +G_END_DECLS + +#endif /* _WH_VIDEO_MODEL_ROW */ + diff --git a/attic/woohaa/wh-video-model.c b/attic/woohaa/wh-video-model.c new file mode 100644 index 0000000..3d9e4f8 --- /dev/null +++ b/attic/woohaa/wh-video-model.c @@ -0,0 +1,298 @@ +#include "wh-video-model.h" +#include + +G_DEFINE_TYPE (WHVideoModel, wh_video_model, G_TYPE_OBJECT); + +#define VIDEO_MODEL_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), WH_TYPE_VIDEO_MODEL, WHVideoModelPrivate)) + +typedef struct _WHVideoModelPrivate WHVideoModelPrivate; + +enum +{ + REORDERED, + ROW_CHANGED, + ROW_ADDED, + FILTER, + LAST_SIGNAL +}; + +static guint _model_signals[LAST_SIGNAL] = { 0 }; + +struct _WHVideoModelPrivate +{ + WHFilterRowFunc filter; + gpointer filter_data; + WHCompareRowFunc sort; + gpointer sort_data; + EggSequence *rows; +}; + +static void +wh_video_model_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_model_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_model_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (wh_video_model_parent_class)->dispose) + G_OBJECT_CLASS (wh_video_model_parent_class)->dispose (object); +} + +static void +wh_video_model_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_video_model_parent_class)->finalize (object); +} + +static void +wh_video_model_class_init (WHVideoModelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WHVideoModelPrivate)); + + object_class->get_property = wh_video_model_get_property; + object_class->set_property = wh_video_model_set_property; + object_class->dispose = wh_video_model_dispose; + object_class->finalize = wh_video_model_finalize; + + _model_signals[REORDERED] = + g_signal_new ("rows-reordered", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHVideoModelClass, reordered), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _model_signals[FILTER] = + g_signal_new ("filter-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHVideoModelClass, filter_change), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + _model_signals[ROW_CHANGED] = + g_signal_new ("row-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHVideoModelClass, row_change), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, WH_TYPE_VIDEO_MODEL_ROW); + + _model_signals[ROW_ADDED] = + g_signal_new ("row-added", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (WHVideoModelClass, row_added), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, WH_TYPE_VIDEO_MODEL_ROW); + +} + +static void +wh_video_model_init (WHVideoModel *self) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(self); + + priv->rows = egg_sequence_new (NULL); +} + +static gboolean +check_filter (WHVideoModel *model, EggSequenceIter *iter) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + gboolean res; + + if (priv->filter == NULL) + return TRUE; + + res = priv->filter(model, + (WHVideoModelRow*)egg_sequence_get (iter), + priv->filter_data); + return res; +} + +guint +wh_video_model_row_count (WHVideoModel *model) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + EggSequenceIter *iter; + gint n = 0; + + if (priv->filter == NULL) + return egg_sequence_get_length (priv->rows); + + iter = egg_sequence_get_begin_iter (priv->rows); + + while (!egg_sequence_iter_is_end (iter)) + { + if (check_filter (model, iter)) + n++; + iter = egg_sequence_iter_next (iter); + } + + return n; +} + +WHVideoModelRow* +wh_video_model_get_row (WHVideoModel *model, gint index) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + EggSequenceIter *iter; + gint n = 0; + + if (priv->filter == NULL) + return (WHVideoModelRow*)egg_sequence_get + (egg_sequence_get_iter_at_pos (priv->rows, index)); + + iter = egg_sequence_get_begin_iter (priv->rows); + + while (!egg_sequence_iter_is_end (iter)) + { + if (check_filter (model, iter)) + { + if (n == index) + return (WHVideoModelRow*)egg_sequence_get (iter); + n++; + } + iter = egg_sequence_iter_next (iter); + } + + return NULL; +} + +static void +on_row_changed (GObject *obj, + GParamSpec *arg1, + gpointer data) +{ + WHVideoModel *model = WH_VIDEO_MODEL(data); + WHVideoModelPrivate *priv; + + priv = VIDEO_MODEL_PRIVATE(model); + + /* thumbnail changing does not effect ordering */ + if (!strcmp(g_param_spec_get_name(arg1), "thumbnail")) + return; + + if (priv->sort) + { + egg_sequence_sort (priv->rows, + (GCompareDataFunc)priv->sort, priv->sort_data); + g_signal_emit (model, _model_signals[REORDERED], 0); + } + + g_signal_emit (model, _model_signals[ROW_CHANGED], 0, + WH_VIDEO_MODEL_ROW(obj)); +} + +void +wh_video_model_append_row (WHVideoModel *model, WHVideoModelRow *row) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + EggSequenceIter *iter; + + g_signal_connect (row, + "notify", + G_CALLBACK (on_row_changed), + model); + + g_object_ref (row); + + if (priv->sort) + iter = egg_sequence_insert_sorted (priv->rows, + (gpointer)row, + (GCompareDataFunc)priv->sort, + priv->sort_data); + else + iter = egg_sequence_append (priv->rows, (gpointer)row); + + if (check_filter (model, iter)) + g_signal_emit (model, _model_signals[ROW_ADDED], 0, row); +} + + +void +wh_video_model_foreach (WHVideoModel *model, + WHForeachRowFunc func, + gpointer data) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + EggSequenceIter *iter; + + iter = egg_sequence_get_begin_iter (priv->rows); + + while (!egg_sequence_iter_is_end (iter)) + { + if (check_filter (model, iter)) + if (func (model, + (WHVideoModelRow*)egg_sequence_get (iter), + data) == FALSE) + return; + + iter = egg_sequence_iter_next (iter); + } +} + +void +wh_video_model_set_sort_func (WHVideoModel *model, + WHCompareRowFunc func, + gpointer userdata) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + + priv->sort = func; + priv->sort_data = userdata; + + if (func) + { + egg_sequence_sort (priv->rows, (GCompareDataFunc)func, userdata); + g_signal_emit (model, _model_signals[REORDERED], 0); + } +} + +void +wh_video_model_set_filter (WHVideoModel *model, + WHFilterRowFunc filter, + gpointer data) +{ + WHVideoModelPrivate *priv = VIDEO_MODEL_PRIVATE(model); + WHFilterRowFunc prev_filter; + + prev_filter = priv->filter; + + priv->filter = filter; + priv->filter_data = data; + + if (prev_filter != priv->filter) + g_signal_emit (model, _model_signals[FILTER], 0); +} + +WHVideoModel* +wh_video_model_new () +{ + return g_object_new (WH_TYPE_VIDEO_MODEL, NULL); +} + diff --git a/attic/woohaa/wh-video-model.h b/attic/woohaa/wh-video-model.h new file mode 100644 index 0000000..fd705e3 --- /dev/null +++ b/attic/woohaa/wh-video-model.h @@ -0,0 +1,91 @@ +#ifndef _WH_VIDEO_MODEL +#define _WH_VIDEO_MODEL + +#include +#include +#include +#include "wh-video-model-row.h" +#include "eggsequence.h" + +G_BEGIN_DECLS + +#define WH_TYPE_VIDEO_MODEL wh_video_model_get_type() + +#define WH_VIDEO_MODEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_VIDEO_MODEL, WHVideoModel)) + +#define WH_VIDEO_MODEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_VIDEO_MODEL, WHVideoModelClass)) + +#define CLUTTER_IS_VIDEO_MODEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_VIDEO_MODEL)) + +#define CLUTTER_IS_VIDEO_MODEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_VIDEO_MODEL)) + +#define WH_VIDEO_MODEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_VIDEO_MODEL, WHVideoModelClass)) + +typedef struct { + GObject parent; +} WHVideoModel; + +typedef struct { + GObjectClass parent_class; + + void (*reordered) (WHVideoModel *model); + void (*filter_change) (WHVideoModel *model); + void (*row_change) (WHVideoModel *model, WHVideoModelRow *row); + void (*row_added) (WHVideoModel *model, WHVideoModelRow *row); + +} WHVideoModelClass; + +typedef gint (*WHCompareRowFunc) (WHVideoModelRow *a, + WHVideoModelRow *b, + gpointer data); + +typedef gboolean (*WHFilterRowFunc) (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data); + +typedef gboolean (*WHForeachRowFunc) (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data); + +GType wh_video_model_get_type (void); + +WHVideoModel* +wh_video_model_new (); + +guint +wh_video_model_row_count (WHVideoModel *model); + +WHVideoModelRow* +wh_video_model_get_row (WHVideoModel *model, gint index); + +void +wh_video_model_append_row (WHVideoModel *model, WHVideoModelRow *row); + +void +wh_video_model_set_filter (WHVideoModel *model, + WHFilterRowFunc filter, + gpointer data); + +void +wh_video_model_set_sort_func (WHVideoModel *model, + WHCompareRowFunc func, + gpointer userdata); + +void +wh_video_model_foreach (WHVideoModel *model, + WHForeachRowFunc func, + gpointer data); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/wh-video-row-renderer.c b/attic/woohaa/wh-video-row-renderer.c new file mode 100644 index 0000000..3120b0b --- /dev/null +++ b/attic/woohaa/wh-video-row-renderer.c @@ -0,0 +1,373 @@ +#include "wh-video-row-renderer.h" +#include "wh-video-model.h" +#include "wh-video-model-row.h" +#include "util.h" + +G_DEFINE_TYPE (WHVideoRowRenderer, wh_video_row_renderer, CLUTTER_TYPE_ACTOR); + +#define PAD 4 + +#define VIDEO_ROW_RENDERER_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), WH_TYPE_VIDEO_ROW_RENDERER, WHVideoRowRendererPrivate)) + +typedef struct _WHVideoRowRendererPrivate WHVideoRowRendererPrivate; + +struct _WHVideoRowRendererPrivate +{ + WHVideoModelRow *row; + ClutterActor *container; + ClutterActor *thumbnail, *thumbnail_image; + ClutterActor *title_label, *info_label, *date_label, *hr; + gint width, height; + gboolean active; +}; + +enum +{ + PROP_0, + PROP_ROW +}; + +static void +sync_thumbnail (WHVideoRowRenderer *renderer) +{ + GdkPixbuf *pixbuf; + WHVideoRowRendererPrivate *priv; + + priv = VIDEO_ROW_RENDERER_PRIVATE(renderer); + + pixbuf = wh_video_model_row_get_thumbnail (priv->row); + + if (pixbuf) + { + ClutterEffectTemplate *effect; + + if (priv->thumbnail_image) + g_object_unref (priv->thumbnail_image); + + + priv->thumbnail_image = clutter_texture_new (); + if (priv->thumbnail_image == NULL) + return; + + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (priv->thumbnail_image), + gdk_pixbuf_get_pixels (pixbuf), + gdk_pixbuf_get_has_alpha (pixbuf), + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf), + gdk_pixbuf_get_rowstride (pixbuf), + gdk_pixbuf_get_n_channels (pixbuf), + 0, + NULL); + + clutter_actor_set_position (priv->thumbnail_image, PAD + 2, PAD + 2); + clutter_actor_set_size (priv->thumbnail_image, + priv->height - (PAD*2) - 4, + priv->height - (PAD*2) - 4); + clutter_group_add(CLUTTER_GROUP(priv->container), + priv->thumbnail_image); + + effect + = clutter_effect_template_new (clutter_timeline_new (20, 60), + CLUTTER_ALPHA_SINE_INC); + + clutter_actor_set_opacity (priv->thumbnail_image, 0); + clutter_actor_show (priv->thumbnail_image); + clutter_effect_fade (effect, + priv->thumbnail_image, + 0xff, + NULL, + NULL); + g_object_unref (effect); + } +} + +static void +on_thumbnail_change (GObject *object, + GParamSpec *pspec, + WHVideoRowRenderer *renderer) +{ + sync_thumbnail (renderer); +} + +static void +wh_video_row_renderer_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + WHVideoRowRenderer *row = WH_VIDEO_ROW_RENDERER(object); + WHVideoRowRendererPrivate *priv; + + priv = VIDEO_ROW_RENDERER_PRIVATE(row); + + switch (property_id) + { + case PROP_ROW: + g_value_set_object (value, priv->row); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_row_renderer_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + WHVideoRowRenderer *row = WH_VIDEO_ROW_RENDERER(object); + WHVideoRowRendererPrivate *priv; + + priv = VIDEO_ROW_RENDERER_PRIVATE(row); + + switch (property_id) + { + case PROP_ROW: + if (priv->row) + g_object_unref(priv->row); + priv->row = g_value_get_object (value); + g_signal_connect (priv->row, + "notify::thumbnail", + G_CALLBACK (on_thumbnail_change), + row); + g_object_ref(priv->row); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +wh_video_row_renderer_dispose (GObject *object) +{ + if (G_OBJECT_CLASS (wh_video_row_renderer_parent_class)->dispose) + G_OBJECT_CLASS (wh_video_row_renderer_parent_class)->dispose (object); +} + +static void +wh_video_row_renderer_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_video_row_renderer_parent_class)->finalize (object); +} + +static void +wh_video_row_renderer_allocate (ClutterActor *self, + const ClutterActorBox *box, + gboolean absolute_origin_changed) +{ + WHVideoRowRenderer *row = WH_VIDEO_ROW_RENDERER(self); + WHVideoRowRendererPrivate *priv; + ClutterActorBox child_box; + ClutterUnit container_width, container_height; + + priv = VIDEO_ROW_RENDERER_PRIVATE(row); + + if ( (CLUTTER_UNITS_TO_INT(box->x2 - box->x1) != priv->width) + || (CLUTTER_UNITS_TO_INT(box->y2 - box->y1) != priv->height)) + { + ClutterColor color = { 0xcc, 0xcc, 0xcc, 0xff }; + ClutterColor info_color = { 0xde, 0xde, 0xde, 0xff }; + gint w,h; + gchar font_desc[32]; + gchar *episode = NULL, *series = NULL, *info = NULL; + GDate *date; + gchar date_buf[32]; + + /* Keep a simple cache to avoid setting fonts up too much */ + w = priv->width = CLUTTER_UNITS_TO_INT(box->x2 - box->x1); + h = priv->height = CLUTTER_UNITS_TO_INT(box->y2 - box->y1); + + clutter_actor_set_position (priv->thumbnail, PAD, PAD); + clutter_actor_set_size (priv->thumbnail, h-(PAD*2), h-(PAD*2)); + + g_snprintf(font_desc, 32, "Sans %ipx", (h*4)/8); + + clutter_label_set_text (CLUTTER_LABEL(priv->title_label), + wh_video_model_row_get_title (priv->row)); + clutter_label_set_font_name (CLUTTER_LABEL(priv->title_label), + font_desc); + clutter_label_set_color (CLUTTER_LABEL(priv->title_label), &color); + clutter_label_set_line_wrap (CLUTTER_LABEL(priv->title_label), FALSE); + clutter_label_set_ellipsize (CLUTTER_LABEL(priv->title_label), + PANGO_ELLIPSIZE_MIDDLE); + + clutter_actor_set_width (priv->title_label, w - ((2*(h+PAD)))); + clutter_actor_set_position (priv->title_label, h + PAD, PAD); + + g_snprintf(font_desc, 32, "Sans %ipx", (h*3)/12); + wh_video_model_row_get_extended_info (priv->row, &series, &episode); + + date = g_date_new(); + + g_date_set_time_t (date, wh_video_model_row_get_age(priv->row)); + g_date_strftime (date_buf, 32, "%x", date); + + info = g_strdup_printf("%s%s%s%s%s%s" + "Added: %s", + series != NULL ? "Series: " : "", + series != NULL ? series : "", + series != NULL ? " " : "", + episode != NULL ? "Episode: " : "", + episode != NULL ? episode : "", + episode != NULL ? " " : "", + date_buf); + + clutter_label_set_text (CLUTTER_LABEL(priv->info_label), info); + clutter_label_set_font_name (CLUTTER_LABEL(priv->info_label), + font_desc); + clutter_label_set_color (CLUTTER_LABEL(priv->info_label), + &info_color); + clutter_label_set_line_wrap (CLUTTER_LABEL(priv->info_label), FALSE); + clutter_label_set_use_markup (CLUTTER_LABEL(priv->info_label), TRUE); + + clutter_actor_set_position (priv->info_label, + h + PAD, + PAD + clutter_actor_get_height(priv->title_label)); + clutter_actor_set_width (priv->title_label, w - (2*h) + (2*PAD)); + + g_free (info); + g_free (series); + g_free (episode); + g_date_free(date); + + clutter_actor_set_size (priv->hr, w, 1); + clutter_actor_set_position (priv->hr, 0, h-1); + + sync_thumbnail (row); + + /* Force Update active look */ + priv->active = ~priv->active; + wh_video_row_renderer_set_active (row, ~priv->active); + } + + clutter_actor_get_sizeu (priv->container, + &container_width, + &container_height); + child_box.x1 = 0; + child_box.y1 = 0; + child_box.x2 = container_width; + child_box.y2 = container_height; + clutter_actor_allocate (priv->container, + &child_box, + absolute_origin_changed); + + CLUTTER_ACTOR_CLASS (wh_video_row_renderer_parent_class)-> + allocate (self, box, absolute_origin_changed); +} + +static void +wh_video_row_renderer_paint (ClutterActor *actor) +{ + WHVideoRowRenderer *row = WH_VIDEO_ROW_RENDERER(actor); + WHVideoRowRendererPrivate *priv; + + priv = VIDEO_ROW_RENDERER_PRIVATE(row); + + if (priv->width == 0 || priv->height ==0) + return; + + clutter_actor_paint (CLUTTER_ACTOR(priv->container)); +} + +static void +wh_video_row_renderer_class_init (WHVideoRowRendererClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (WHVideoRowRendererPrivate)); + + object_class->get_property = wh_video_row_renderer_get_property; + object_class->set_property = wh_video_row_renderer_set_property; + object_class->dispose = wh_video_row_renderer_dispose; + object_class->finalize = wh_video_row_renderer_finalize; + + actor_class->paint = wh_video_row_renderer_paint; + actor_class->allocate = wh_video_row_renderer_allocate; + /* + * actor_class->realize = wh_video_row_renderer__realize; + * actor_class->unrealize = parent_class->unrealize; + */ + + g_object_class_install_property + (object_class, + PROP_ROW, + g_param_spec_object ("row", + "Row", + "Row to render", + WH_TYPE_VIDEO_MODEL_ROW, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); +} + +static void +wh_video_row_renderer_init (WHVideoRowRenderer *self) +{ + ClutterColor color = { 0xcc, 0xcc, 0xcc, 0xff }; + ClutterColor grey_col = { 0xde, 0xde, 0xde, 0xff }; + WHVideoRowRendererPrivate *priv; + + priv = VIDEO_ROW_RENDERER_PRIVATE(self); + + priv->hr = clutter_rectangle_new_with_color (&grey_col); + + priv->thumbnail = clutter_rectangle_new_with_color(&color); + + priv->title_label = clutter_label_new(); + priv->info_label = clutter_label_new(); + + priv->container = clutter_group_new(); + clutter_actor_set_parent (priv->container, CLUTTER_ACTOR(self)); + + clutter_group_add_many (CLUTTER_GROUP(priv->container), + priv->hr, + priv->thumbnail, + priv->title_label, + priv->info_label, + NULL); + + clutter_actor_show_all (priv->container); +} + +void +wh_video_row_renderer_set_active (WHVideoRowRenderer *renderer, + gboolean setting) +{ + /* FIXME: should be prop */ + WHVideoRowRendererPrivate *priv = VIDEO_ROW_RENDERER_PRIVATE(renderer); + + ClutterColor inactive_col = { 0xaa, 0xaa, 0xaa, 0xff }; + ClutterColor active_col = { 0xff, 0xff, 0xff, 0xff }; + ClutterColor info_inactive_col = { 0xbb, 0xbb, 0xbb, 0xff }; + ClutterColor info_active_col = { 0xf3, 0xf3, 0xf3, 0xff }; + + if (priv->active == setting) + return; + + priv->active = setting; + + if (setting) + { + clutter_label_set_color (CLUTTER_LABEL(priv->title_label), + &active_col); + clutter_label_set_color (CLUTTER_LABEL(priv->info_label), + &info_active_col); + clutter_actor_set_opacity (CLUTTER_ACTOR(renderer), 0xff); + + } + else + { + clutter_label_set_color (CLUTTER_LABEL(priv->title_label), + &inactive_col); + clutter_label_set_color (CLUTTER_LABEL(priv->info_label), + &info_inactive_col); + clutter_actor_set_opacity (CLUTTER_ACTOR(renderer), 0xff); + } + + + +} + +WHVideoRowRenderer* +wh_video_row_renderer_new (WHVideoModelRow *row) +{ + return g_object_new (WH_TYPE_VIDEO_ROW_RENDERER, "row", row, NULL); +} + diff --git a/attic/woohaa/wh-video-row-renderer.h b/attic/woohaa/wh-video-row-renderer.h new file mode 100644 index 0000000..15e8591 --- /dev/null +++ b/attic/woohaa/wh-video-row-renderer.h @@ -0,0 +1,52 @@ +#ifndef _WH_VIDEO_ROW_RENDERER +#define _WH_VIDEO_ROW_RENDERER + +#include +#include + +G_BEGIN_DECLS + +#define WH_TYPE_VIDEO_ROW_RENDERER wh_video_row_renderer_get_type() + +#define WH_VIDEO_ROW_RENDERER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_VIDEO_ROW_RENDERER, WHVideoRowRenderer)) + +#define WH_VIDEO_ROW_RENDERER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_VIDEO_ROW_RENDERER, WHVideoRowRendererClass)) + +#define WH_IS_VIDEO_ROW_RENDERER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_VIDEO_ROW_RENDERER)) + +#define WH_IS_VIDEO_ROW_RENDERER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_VIDEO_ROW_RENDERER)) + +#define WH_VIDEO_ROW_RENDERER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_VIDEO_ROW_RENDERER, WHVideoRowRendererClass)) + +typedef struct { + ClutterActor parent; +} WHVideoRowRenderer; + +typedef struct { + ClutterActorClass parent_class; +} WHVideoRowRendererClass; + +#include "wh-video-model-row.h" + +GType wh_video_row_renderer_get_type (void); + +WHVideoRowRenderer* +wh_video_row_renderer_new (WHVideoModelRow *row); + +void +wh_video_row_renderer_set_active (WHVideoRowRenderer *renderer, + gboolean setting); + +G_END_DECLS + +#endif /* _WH_VIDEO_ROW_RENDERER */ diff --git a/attic/woohaa/wh-video-thumbnailer.c b/attic/woohaa/wh-video-thumbnailer.c new file mode 100644 index 0000000..3441358 --- /dev/null +++ b/attic/woohaa/wh-video-thumbnailer.c @@ -0,0 +1,157 @@ +#include +#include +#include +#include +#include + +#ifdef USE_HELIX +#include +#else +#include +#include +#endif + + +#include "totem-resources.h" + +int +main (int argc, char *argv[]) +{ + ClutterActor *video; + GdkPixbuf *shot = NULL; + gint duration; + CoglHandle tex_id; + CoglPixelFormat format; + gint size; + gint width; + gint height; + gint rowstride; + guchar *data = NULL; + +#ifdef USE_HELIX + clutter_helix_init (&argc, &argv); +#else + gst_init (&argc, &argv); +#endif + clutter_init (&argc, &argv); + + if (argc < 3) + { + g_print ("Usage: %s \n", argv[0]); + exit(-1); + } + + totem_resources_monitor_start (argv[1], 60 * G_USEC_PER_SEC); + +#ifdef USE_HELIX + video = clutter_helix_video_texture_new (); +#else + video = clutter_gst_video_texture_new (); +#endif + + if (argv[1][0] == '/') + clutter_media_set_filename(CLUTTER_MEDIA(video), argv[1]); + else + clutter_media_set_uri(CLUTTER_MEDIA(video), argv[1]); + clutter_media_set_volume (CLUTTER_MEDIA(video), 0); + clutter_media_set_playing (CLUTTER_MEDIA(video), TRUE); + + do { + + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, FALSE); + + duration = clutter_media_get_duration (CLUTTER_MEDIA(video)); + + } while (duration == 0); + + clutter_actor_realize (video); + + clutter_media_set_position (CLUTTER_MEDIA(video), duration/3); + + do { + + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, FALSE); + + } while (clutter_media_get_position (CLUTTER_MEDIA(video)) <= duration/3); + + tex_id = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (video)); + if (tex_id) + { + format = cogl_texture_get_format (tex_id); + size = cogl_texture_get_data (tex_id, format, 0, NULL); + width = cogl_texture_get_width (tex_id); + height = cogl_texture_get_height (tex_id); + rowstride = cogl_texture_get_rowstride (tex_id); + + data = (guchar*) g_malloc (sizeof(guchar) * size); + if (!data) + g_error ("malloc");; + + cogl_texture_get_data (tex_id, format, rowstride, data); + + + shot = gdk_pixbuf_new_from_data (data, + GDK_COLORSPACE_RGB, + FALSE, + 8, + width, + height, + rowstride, + NULL, + NULL); + + } + + totem_resources_monitor_stop (); + + if (shot) + { + GdkPixbuf *thumb, *pic; + gint x, y, nw, nh, w, h, size; + + size = 128; + + /* FIXME swap RGB pixels */ + + w = clutter_actor_get_width (video); + h = clutter_actor_get_height (video); + + nh = ( h * size) / w; + + if (nh <= size) + { + nw = size; + x = 0; + y = (size - nh) / 2; + } + else + { + nw = ( w * size ) / h; + nh = size; + x = (size - nw) / 2; + y = 0; + } + + thumb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, size, size); + gdk_pixbuf_fill (thumb, 0x000000FF); + + pic = gdk_pixbuf_scale_simple (shot, nw, nh, GDK_INTERP_BILINEAR); + gdk_pixbuf_copy_area (pic, 0, 0, nw, nh, thumb, x, y); + + if (!gdk_pixbuf_save (thumb, argv[2], "png", NULL, NULL)) + { + g_error ("%s: Pixbuf save failed\n", argv[0]); + exit(-1); + } + + g_object_unref (shot); + g_object_unref (thumb); + g_object_unref (pic); + + exit(0); + } + + exit (-1); +} diff --git a/attic/woohaa/wh-video-view.c b/attic/woohaa/wh-video-view.c new file mode 100644 index 0000000..b99675e --- /dev/null +++ b/attic/woohaa/wh-video-view.c @@ -0,0 +1,543 @@ +#include "wh-video-view.h" +#include "wh-video-model.h" +#include "util.h" + +#include + +G_DEFINE_TYPE (WHVideoView, wh_video_view, CLUTTER_TYPE_ACTOR); + +#define WH_VIDEO_VIEW_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \ + WH_TYPE_VIDEO_VIEW, \ + WHVideoViewPrivate)) + +struct _WHVideoViewPrivate +{ + WHVideoModel *model; + gint n_rows_visible; + gint active_item_num; + gint n_rows; + + ClutterActor *rows; + + ClutterActor *selection_indicator; + ClutterActor *selection; + ClutterActor *up_arrow; + ClutterActor *down_arrow; + + gboolean animation_running; +}; + +enum +{ + PROP_0, + PROP_MODEL, + PROP_N_ROWS +}; + +void wh_video_view_activate (WHVideoView *view, gint entry_num); + +static gboolean +populate_rows (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + WHVideoView *view; + WHVideoViewPrivate *priv; + WHVideoRowRenderer *renderer; + gint r_width, r_height, position; + ClutterEffectTemplate *template; + + view = WH_VIDEO_VIEW (data); + priv = WH_VIDEO_VIEW_GET_PRIVATE (view); + + template = clutter_effect_template_new_for_duration (500, + CLUTTER_ALPHA_SINE_INC); + + r_height = clutter_actor_get_height (CLUTTER_ACTOR (view)) / + priv->n_rows_visible; + r_width = clutter_actor_get_width (CLUTTER_ACTOR (view)); + + if (priv->n_rows == 0) + { + ClutterUnit width, height; + double scale; + + /* + * Scale the up and down indication arrows + */ + clutter_actor_get_preferred_size (priv->up_arrow, + NULL, + NULL, + &width, + &height); + scale = (double)CLUTTER_UNITS_FROM_INT (r_height/4) / (double) height; + height = CLUTTER_UNITS_FROM_INT (r_height/4); + width = width * scale; + clutter_actor_set_sizeu (priv->up_arrow, width, height); + clutter_actor_set_sizeu (priv->down_arrow, width, height); + + clutter_actor_set_size (priv->selection, r_width, r_height); + + width = CLUTTER_UNITS_FROM_INT (r_width - r_width/100) - width; + clutter_actor_set_positionu (priv->up_arrow, width, + CLUTTER_UNITS_FROM_INT (r_height/10)); + + height = CLUTTER_UNITS_FROM_INT (r_height - r_height/10) - height; + clutter_actor_set_positionu (priv->down_arrow, width, height); + + clutter_actor_set_opacity (priv->selection_indicator, 0); + } + + position = priv->n_rows++ + priv->active_item_num; + + renderer = wh_video_model_row_get_renderer (row); + + clutter_actor_set_size (CLUTTER_ACTOR (renderer), + clutter_actor_get_width (CLUTTER_ACTOR (view)), + r_height); + clutter_actor_show (CLUTTER_ACTOR (renderer)); + + clutter_effect_move (template, + CLUTTER_ACTOR (renderer), + 0, + position * r_height, + NULL, + NULL); + + clutter_effect_fade (template, + CLUTTER_ACTOR (renderer), + position >= priv->n_rows_visible ? 0x00 : 0xff, + NULL, + NULL); + + if (priv->n_rows == 1) + wh_video_row_renderer_set_active (renderer, TRUE); + else + wh_video_row_renderer_set_active (renderer, FALSE); + + clutter_group_add (priv->rows, CLUTTER_ACTOR (renderer)); + + return TRUE; +} + +static void +on_model_rows_change (WHVideoModel *model, gpointer *userdata) +{ + WHVideoView *view; + WHVideoViewPrivate *priv; + + view = WH_VIDEO_VIEW(userdata); + priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + + clutter_actor_set_opacity (priv->selection_indicator, 0); + clutter_group_remove_all (CLUTTER_GROUP (priv->rows)); + priv->n_rows = 0; + priv->active_item_num = 0; + + wh_video_model_foreach (model, + populate_rows, + view); + + wh_video_view_activate(view, 0); +} + +static void +wh_video_view_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + WHVideoView *view; + WHVideoViewPrivate *priv; + + view = WH_VIDEO_VIEW(object); + priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + + switch (prop_id) + { + case PROP_MODEL: + if (priv->model) + { + clutter_group_remove_all (CLUTTER_GROUP (priv->rows)); + g_object_unref (priv->model); + } + priv->model = g_value_get_object (value); + + wh_video_model_foreach (priv->model, + populate_rows, + priv->rows); + + g_signal_connect(priv->model, + "rows-reordered", + G_CALLBACK(on_model_rows_change), + object); + break; + case PROP_N_ROWS: + priv->n_rows_visible = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +wh_video_view_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + WHVideoView *view; + WHVideoViewPrivate *priv; + + view = WH_VIDEO_VIEW(object); + priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + + switch (prop_id) + { + case PROP_MODEL: + g_value_set_object (value, priv->model); + break; + case PROP_N_ROWS: + g_value_set_int (value, priv->n_rows_visible); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +wh_video_view_get_preferred_width (ClutterActor *actor, + ClutterUnit for_height, + ClutterUnit *min_width_p, + ClutterUnit *natural_width_p) +{ + WHVideoView *self = WH_VIDEO_VIEW(actor); + WHVideoViewPrivate *priv; + + priv = self->priv; + + clutter_actor_get_preferred_height (priv->rows, + for_height, + min_width_p, + natural_width_p); +} + +static void +wh_video_view_get_preferred_height (ClutterActor *actor, + ClutterUnit for_width, + ClutterUnit *min_height_p, + ClutterUnit *natural_height_p) +{ + WHVideoView *self = WH_VIDEO_VIEW(actor); + WHVideoViewPrivate *priv; + + priv = self->priv; + + clutter_actor_get_preferred_height (priv->rows, + for_width, + min_height_p, + natural_height_p); +} + +static void +wh_video_view_allocate (ClutterActor *actor, + const ClutterActorBox *box, + gboolean absolute_origin_changed) +{ + WHVideoView *self = WH_VIDEO_VIEW(actor); + WHVideoViewPrivate *priv; + ClutterActorBox child_box; + ClutterUnit width, height; + + priv = self->priv; + + CLUTTER_ACTOR_CLASS (wh_video_view_parent_class)-> + allocate (actor, box, absolute_origin_changed); + + clutter_actor_get_preferred_size (priv->rows, + NULL, + NULL, + &width, + &height); + + child_box.x1 = 0; + child_box.y1 = 0; + child_box.x2 = box->x1 + width; + child_box.y2 = box->y1 + height; + clutter_actor_allocate (priv->rows, + &child_box, + absolute_origin_changed); + + clutter_actor_get_preferred_size (priv->selection_indicator, + NULL, + NULL, + &width, + &height); + + child_box.x1 = 0; + child_box.y1 = 0; + child_box.x2 = box->x1 + width; + child_box.y2 = box->y1 + height; + clutter_actor_allocate (priv->selection_indicator, + &child_box, + absolute_origin_changed); +} + +static void +wh_video_view_paint (ClutterActor *actor) +{ + WHVideoView *self = WH_VIDEO_VIEW(actor); + WHVideoViewPrivate *priv = self->priv; + + priv = self->priv; + + clutter_actor_paint (priv->selection_indicator); + clutter_actor_paint (priv->rows); +} + +static void +wh_video_view_dispose (GObject *object) +{ + WHVideoView *self = WH_VIDEO_VIEW(object); + WHVideoViewPrivate *priv; + + priv = self->priv; + + G_OBJECT_CLASS (wh_video_view_parent_class)->dispose (object); +} + +static void +wh_video_view_finalize (GObject *object) +{ + G_OBJECT_CLASS (wh_video_view_parent_class)->finalize (object); +} + +static void +wh_video_view_class_init (WHVideoViewClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + ClutterActorClass *parent_class; + + parent_class = CLUTTER_ACTOR_CLASS (wh_video_view_parent_class); + + actor_class->paint = wh_video_view_paint; + actor_class->allocate = wh_video_view_allocate; + actor_class->get_preferred_width = wh_video_view_get_preferred_width; + actor_class->get_preferred_height = wh_video_view_get_preferred_height; + + gobject_class->finalize = wh_video_view_finalize; + gobject_class->dispose = wh_video_view_dispose; + gobject_class->set_property = wh_video_view_set_property; + gobject_class->get_property = wh_video_view_get_property; + + g_type_class_add_private (gobject_class, sizeof (WHVideoViewPrivate)); + + g_object_class_install_property + (gobject_class, + PROP_MODEL, + g_param_spec_object ("model", + "Model", + "Underlying video model", + WH_TYPE_VIDEO_MODEL, + G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_N_ROWS, + g_param_spec_int ("n-rows-visible", + "n-rows-visible", + "Number of row to display", + 0, G_MAXINT, + 0, + G_PARAM_READWRITE)); +} + +static void +row_move_complete (ClutterActor *actor, gpointer data) +{ + WHVideoView *view = WH_VIDEO_VIEW (data); + WHVideoViewPrivate *priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + + priv->animation_running = FALSE; +} + +void +wh_video_view_activate (WHVideoView *view, + gint entry_num) +{ + WHVideoViewPrivate *priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + ClutterActor *child; + gint i, r_height, position; + ClutterEffectTemplate *template; + guint8 opacity; + + priv->animation_running = TRUE; + + r_height = clutter_actor_get_height (CLUTTER_ACTOR (view)) / + priv->n_rows_visible; + + template = clutter_effect_template_new_for_duration (250, + CLUTTER_ALPHA_SINE_INC); + + for ( i = 0; i < priv->n_rows + 1; i++ ) + { + child = clutter_group_get_nth_child (CLUTTER_GROUP (priv->rows), i); + if (!child) + return; + + position = i - priv->active_item_num; + + if (position < -1 || position >= priv->n_rows_visible) + opacity = 0; + else + opacity = 0xff; + + clutter_effect_move (template, + child, + 0, + position * r_height, + row_move_complete, + view); + clutter_effect_fade (template, + child, + opacity, + NULL, + NULL); + + if (priv->active_item_num == i) + { + wh_video_row_renderer_set_active (WH_VIDEO_ROW_RENDERER (child), + TRUE); + + if (i > 0) + { + if (clutter_actor_get_opacity (priv->up_arrow) != 0xff) + clutter_effect_fade (template, + priv->up_arrow, + 0xff, + NULL, + NULL); + } + else if (clutter_actor_get_opacity (priv->up_arrow) != 0) + clutter_effect_fade (template, priv->up_arrow, 0, NULL, NULL); + + if (i < priv->n_rows - 1) + { + if (clutter_actor_get_opacity (priv->down_arrow) != 0xff) + clutter_effect_fade (template, + priv->down_arrow, + 0xff, + NULL, + NULL); + } + else if (clutter_actor_get_opacity (priv->down_arrow) != 0) + clutter_effect_fade (template, priv->down_arrow, 0, NULL, NULL); + + clutter_actor_set_opacity (priv->selection_indicator, 0xff); + } + else + wh_video_row_renderer_set_active (WH_VIDEO_ROW_RENDERER (child), + FALSE); + } +} + +void +wh_video_view_advance (WHVideoView *view, gint n) +{ + WHVideoViewPrivate *priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + gint new_index; + + if (priv->animation_running) + return; + + new_index = priv->active_item_num + n; + + if (new_index > priv->n_rows - 1) + new_index = priv->n_rows - 1; + else if (new_index < 0) + new_index = 0; + + if (new_index == priv->active_item_num) + return; + + priv->active_item_num = new_index; + + wh_video_view_activate (view, priv->active_item_num); +} + +WHVideoModelRow* +wh_video_view_get_selected (WHVideoView *view) +{ + WHVideoViewPrivate *priv = WH_VIDEO_VIEW_GET_PRIVATE(view); + + return wh_video_model_get_row (priv->model, priv->active_item_num); +} + +void +wh_video_view_enable_animation (WHVideoView *view, gboolean active) +{ +} + +static void +wh_video_view_init (WHVideoView *self) +{ + WHVideoViewPrivate *priv; + + self->priv = priv = WH_VIDEO_VIEW_GET_PRIVATE (self); + + priv->rows = clutter_group_new (); + + priv->selection_indicator = clutter_group_new (); + clutter_actor_set_opacity (priv->selection_indicator, 0); + clutter_actor_set_parent (priv->rows, CLUTTER_ACTOR (self)); + + /* Load the position backgroud image */ + priv->selection = clutter_texture_new_from_file (PKGDATADIR "/selected.svg", + NULL); + if (!priv->selection) + g_warning ("Unable to load %s\n", PKGDATADIR "/selected.svg"); + + clutter_actor_show (priv->selection); + clutter_group_add (CLUTTER_GROUP (priv->selection_indicator), + priv->selection); + + /* Load the up arrow image */ + priv->up_arrow = clutter_texture_new_from_file (PKGDATADIR "/arrow-up.svg", + NULL); + if (!priv->up_arrow) + g_warning ("Unable to load %s\n", PKGDATADIR "/arrow-up.svg"); + + clutter_actor_show (priv->up_arrow); + clutter_group_add (CLUTTER_GROUP (priv->selection_indicator), + priv->up_arrow); + + /* Load the down arrow image */ + priv->down_arrow = clutter_texture_new_from_file (PKGDATADIR "/arrow-down.svg", + NULL); + if (!priv->down_arrow) + g_warning ("Unable to load %s\n", PKGDATADIR "/arrow-down.svg"); + + clutter_actor_show (priv->down_arrow); + clutter_group_add (CLUTTER_GROUP (priv->selection_indicator), + priv->down_arrow); + +} + +ClutterActor* +wh_video_view_new (WHVideoModel *model, + gint n_rows_visible) +{ + ClutterActor *view; + + view = g_object_new (WH_TYPE_VIDEO_VIEW, + "n-rows-visible", n_rows_visible, + "model", model, + NULL); + + return view; +} + diff --git a/attic/woohaa/wh-video-view.h b/attic/woohaa/wh-video-view.h new file mode 100644 index 0000000..6a99ae5 --- /dev/null +++ b/attic/woohaa/wh-video-view.h @@ -0,0 +1,93 @@ +/* + * + * Authored By XXXXX + * + * Copyright (C) 2006 XXXXXX + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _HAVE_WH_VIDEO_VIEW_H +#define _HAVE_WH_VIDEO_VIEW_H + +#include +#include +#include "wh-video-model.h" +#include "wh-video-model-row.h" + +G_BEGIN_DECLS + +#define WH_TYPE_VIDEO_VIEW wh_video_view_get_type() + +#define WH_VIDEO_VIEW(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + WH_TYPE_VIDEO_VIEW, WHVideoView)) + +#define WH_VIDEO_VIEW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + WH_TYPE_VIDEO_VIEW, WHVideoViewClass)) + +#define WH_IS_VIDEO_VIEW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + WH_TYPE_VIDEO_VIEW)) + +#define WH_IS_VIDEO_VIEW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + WH_TYPE_VIDEO_VIEW)) + +#define WH_VIDEO_VIEW_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + WH_TYPE_VIDEO_VIEW, WHVideoViewClass)) + +typedef struct _WHVideoView WHVideoView; +typedef struct _WHVideoViewClass WHVideoViewClass; +typedef struct _WHVideoViewPrivate WHVideoViewPrivate; + +struct _WHVideoView +{ + ClutterActor parent; + /*< private >*/ + WHVideoViewPrivate *priv; +}; + +struct _WHVideoViewClass +{ + /*< private >*/ + ClutterActorClass parent_class; + + void (*_wh_video_view_1) (void); + void (*_wh_video_view_2) (void); + void (*_wh_video_view_3) (void); + void (*_wh_video_view_4) (void); +}; + +GType wh_video_view_get_type (void) G_GNUC_CONST; + +ClutterActor* +wh_video_view_new (WHVideoModel *model, + gint n_items_visible); +void +wh_video_view_advance (WHVideoView *view, gint n); + +void +wh_video_view_enable_animation (WHVideoView *view, gboolean active); + +WHVideoModelRow* +wh_video_view_get_selected (WHVideoView *view); + +G_END_DECLS + +#endif diff --git a/attic/woohaa/woohaa.c b/attic/woohaa/woohaa.c new file mode 100644 index 0000000..df463b2 --- /dev/null +++ b/attic/woohaa/woohaa.c @@ -0,0 +1,782 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef USE_HELIX +#include +#endif + +#include "wh-slider-menu.h" +#include "wh-video-model.h" +#include "wh-video-model-row.h" +#include "wh-video-view.h" +#include "wh-db.h" +#include "wh-screen-video.h" +#include "wh-busy.h" +#include "wh-theme.h" +#include "util.h" + +#define FONT "VistaSansBook 75px" +#define WOOHAA_GCONF_PREFIX "/apps/woohaa" + +typedef struct WooHaa +{ + ClutterActor *screen_browse, *screen_video; + WHVideoModel *model; + ClutterActor *view; + ClutterActor *menu; + ClutterActor *busy; + WHDB *db; + + ClutterEffectTemplate *video_effect_tmpl; + + /* For thumbnailer */ + gint tn_pending_child_pid; + WHVideoModelRow *tn_pending_row; + gint tn_trys; +} +WooHaa; + +gboolean +browse_input_cb (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data); + +void +video_input_cb (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data); + +static void +thumbnail_find_empty (WooHaa *wh); + +static gboolean +check_thumbnailer_child(gpointer data) +{ + WooHaa *wh = (WooHaa *)data; + GdkPixbuf *pixbuf; + gint status; + + if (wh->tn_pending_child_pid == 0 || wh->tn_pending_row == NULL) + return FALSE; + + if (waitpid (wh->tn_pending_child_pid, + &status, + WNOHANG) != wh->tn_pending_child_pid) + { + /* Try again soon */ + wh->tn_trys++; + + if (wh->tn_trys > 5) + { + g_warning("timed out making thumbnail"); + /* Insert a blank pixbuf */ + wh_video_model_row_set_thumbnail + (wh->tn_pending_row, wh_theme_get_pixbuf("default-thumbnail")); + kill (wh->tn_pending_child_pid, SIGKILL); + waitpid (wh->tn_pending_child_pid, &status, 0); + goto cleanup; + } + return TRUE; + } + + pixbuf = gdk_pixbuf_new_from_file ("/tmp/wh-thumb.png", NULL); + + if (pixbuf == NULL) + { + /* Insert a blank pixbuf */ + wh_video_model_row_set_thumbnail + (wh->tn_pending_row, wh_theme_get_pixbuf("default-thumbnail")); + g_warning("failed to load pixbuf from thumbnailed"); + goto cleanup; + } + + wh_video_model_row_set_thumbnail (wh->tn_pending_row, pixbuf); + g_object_unref (pixbuf); + + wh_db_sync_row (wh->tn_pending_row); + + cleanup: + g_object_unref(wh->tn_pending_row); + wh->tn_pending_child_pid = 0; + wh->tn_pending_row = NULL; + wh->tn_trys = 0; + g_remove ("/tmp/wh-thumb.png"); + + thumbnail_find_empty (wh); + + /* All done */ + return FALSE; +} + +gboolean +thumbnail_create (WooHaa *wh, WHVideoModelRow *row) +{ + gboolean result; + gchar **argv; + + if (wh->tn_pending_child_pid > 0 || wh->tn_pending_row != NULL) + return TRUE; + + argv = g_new(gchar *, 4); + argv[0] = g_strdup("wh-video-thumbnailer"); + argv[1] = g_strdup(wh_video_model_row_get_path(row)); + argv[2] = g_strdup("/tmp/wh-thumb.png"); + argv[3] = NULL; + + result = g_spawn_async (NULL, + argv, + NULL, + G_SPAWN_SEARCH_PATH|G_SPAWN_DO_NOT_REAP_CHILD, + NULL, + NULL, + &wh->tn_pending_child_pid, + NULL); + g_strfreev(argv); + + if (result == FALSE) + { + g_warning("failed to spawn wh-video-thumbnailer"); + + wh_video_model_row_set_thumbnail + (row, wh_theme_get_pixbuf("default-thumbnail")); + + wh->tn_pending_row = NULL; + wh->tn_pending_child_pid = 0; + + return FALSE; + } + + wh->tn_pending_row = row; + g_object_ref(row); + g_timeout_add (2500, check_thumbnailer_child, wh); + + return TRUE; +} + +static gboolean +thumbnail_find_empty_foreach (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + if (wh_video_model_row_get_thumbnail (row) == NULL) + { + if (thumbnail_create ((WooHaa *)data, row)) + return FALSE; + } + + return TRUE; +} + +static void +thumbnail_find_empty (WooHaa *wh) +{ + if (!wh_screen_video_get_playing(WH_SCREEN_VIDEO(wh->screen_video)) + && wh->tn_pending_child_pid == 0) + wh_video_model_foreach (wh->model, + thumbnail_find_empty_foreach, + (gpointer)wh); +} + +void +playback_finish_complete (ClutterActor *actor, WooHaa *wh) +{ + wh_video_view_enable_animation (WH_VIDEO_VIEW(wh->view), TRUE); + thumbnail_find_empty(wh); +} + +void +on_video_playback_start (WHScreenVideo *video, + WooHaa *wh) +{ + clutter_actor_raise_top (wh->screen_video); + + clutter_actor_set_scale (wh->screen_browse, 0.7, 0.7); + clutter_effect_scale (wh->video_effect_tmpl, + wh->screen_browse, + 0.0, + 0.0, + NULL, + NULL); + + clutter_effect_fade (wh->video_effect_tmpl, + wh->screen_browse, + 0, + NULL, + NULL); + + wh_video_view_enable_animation (WH_VIDEO_VIEW(wh->view), FALSE); + + /* Stop the busy 'cursor' */ + woohaa_busy_fade_out (WOOHAA_BUSY (wh->busy), 500); +} + +void +on_video_playback_finish (WHScreenVideo *video, + WooHaa *wh) +{ + WHVideoModelRow *row; + + g_signal_connect (clutter_stage_get_default(), + "key-release-event", + G_CALLBACK (browse_input_cb), + wh); + + /* update db */ + row = wh_video_view_get_selected (WH_VIDEO_VIEW(wh->view)); + wh_video_model_row_set_n_views (row, + wh_video_model_row_get_n_views(row)+1); + wh_video_model_row_set_vtime (row, time(NULL)); + wh_db_sync_row (row); + + clutter_actor_show (wh->screen_browse); + + clutter_effect_fade (wh->video_effect_tmpl, + wh->screen_browse, + 0xff, + NULL, + NULL); + + clutter_effect_scale (wh->video_effect_tmpl, + wh->screen_browse, + 1.0, + 1.0, + NULL, + NULL); + + clutter_effect_fade (wh->video_effect_tmpl, + wh->screen_video, + 0, + (ClutterEffectCompleteFunc)playback_finish_complete, + wh); +} + +gboolean +browse_input_cb (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data) +{ + WooHaa *wh = (WooHaa*)user_data; + + if (event->type == CLUTTER_KEY_RELEASE) + { + ClutterKeyEvent* kev = (ClutterKeyEvent *) event; + + switch (clutter_key_event_symbol (kev)) + { + case CLUTTER_Left: + woohaa_slider_menu_advance (WOOHAA_SLIDER_MENU(wh->menu), -1); + thumbnail_find_empty (wh); + break; + case CLUTTER_Right: + woohaa_slider_menu_advance (WOOHAA_SLIDER_MENU(wh->menu), 1); + thumbnail_find_empty (wh); + break; + case CLUTTER_Up: + wh_video_view_advance (WH_VIDEO_VIEW(wh->view), -1); + break; + case CLUTTER_Down: + wh_video_view_advance (WH_VIDEO_VIEW(wh->view), 1); + break; + case CLUTTER_Return: + if (!wh_screen_video_activate (WH_SCREEN_VIDEO(wh->screen_video), + WH_VIDEO_VIEW(wh->view))) + break; + + g_signal_handlers_disconnect_by_func(clutter_stage_get_default(), + browse_input_cb, + wh); + + clutter_effect_scale (wh->video_effect_tmpl, + wh->screen_browse, + 0.0, + 0.0, + NULL, + NULL); + + woohaa_busy_fade_in (WOOHAA_BUSY (wh->busy), 500); + break; + case CLUTTER_Escape: + case CLUTTER_q: + clutter_main_quit(); + break; + default: + break; + } + } + + return TRUE; +} + +static gint +model_sort_mtime (WHVideoModelRow *rowa, WHVideoModelRow *rowb, gpointer data) +{ + time_t a, b; + + a = wh_video_model_row_get_age(rowa); + b = wh_video_model_row_get_age(rowb); + + if (a > b) return -1; + else if (a < b) return 1; + else return 0; +} + +static gboolean +model_recently_added_filter (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + return TRUE; +} + +static void +view_recently_added_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_recently_added_filter, wh); + wh_video_model_set_sort_func (wh->model, model_sort_mtime, NULL); +} + +static gint +model_sort_alpha (WHVideoModelRow *rowa, WHVideoModelRow *rowb, gpointer data) +{ + return strcmp (wh_video_model_row_get_title(rowa), + wh_video_model_row_get_title(rowb)); +} + +#define FILTER_AF 0 +#define FILTER_GL 1 +#define FILTER_MR 2 +#define FILTER_SZ 3 + +static gboolean +model_alpha_filter (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + gint type = GPOINTER_TO_INT(data); + gchar lo, hi; + const gchar *title; + + title = wh_video_model_row_get_title(row); + + switch (type) + { + case FILTER_AF: + lo = 'a'; hi = 'f'; + /* Also numerical titles */ + if (g_ascii_tolower(title[0]) >= '0' && g_ascii_tolower(title[0]) <= '9') + return TRUE; + break; + case FILTER_GL: + lo = 'g'; hi = 'l'; + break; + case FILTER_MR: + lo = 'm'; hi = 'r'; + break; + case FILTER_SZ: + lo = 's'; hi = 'z'; + break; + default: + lo = 's'; hi = 'z'; + break; + } + + /* FIXME UTF8 */ + if (g_ascii_tolower(title[0]) >= lo && g_ascii_tolower(title[0]) <= hi) + return TRUE; + + return FALSE; +} + +static void +view_af_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_alpha_filter, + GINT_TO_POINTER(FILTER_AF)); + wh_video_model_set_sort_func (wh->model, model_sort_alpha, NULL); +} + +static void +view_gl_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_alpha_filter, + GINT_TO_POINTER(FILTER_GL)); + wh_video_model_set_sort_func (wh->model, model_sort_alpha, NULL); +} + +static void +view_mr_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_alpha_filter, + GINT_TO_POINTER(FILTER_MR)); + wh_video_model_set_sort_func (wh->model, model_sort_alpha, NULL); +} + +static void +view_sz_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_alpha_filter, + GINT_TO_POINTER(FILTER_SZ)); + wh_video_model_set_sort_func (wh->model, model_sort_alpha, NULL); +} + +static gint +model_sort_vtime (WHVideoModelRow *rowa, WHVideoModelRow *rowb, gpointer data) +{ + time_t a, b; + + a = wh_video_model_row_get_vtime(rowa); + b = wh_video_model_row_get_vtime(rowb); + + if (a > b) return -1; + else if (a < b) return 1; + else return 0; +} + +static gboolean +model_recently_viewed_filter (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + if (wh_video_model_row_get_n_views(row) == 0) + return FALSE; + + return TRUE; +} + +void +view_recently_viewed_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_recently_viewed_filter, wh); + wh_video_model_set_sort_func (wh->model, model_sort_vtime, NULL); +} + +static gboolean +model_not_viewed_filter (WHVideoModel *model, + WHVideoModelRow *row, + gpointer data) +{ + if (wh_video_model_row_get_n_views(row) > 0) + return FALSE; + + return TRUE; +} + +void +view_not_viewed_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_not_viewed_filter, wh); + wh_video_model_set_sort_func (wh->model, model_sort_mtime, NULL); +} + +static gint +model_sort_popular (WHVideoModelRow *rowa, + WHVideoModelRow *rowb, + gpointer data) +{ + gint a, b; + + a = wh_video_model_row_get_n_views(rowa); + b = wh_video_model_row_get_n_views(rowb); + + if (a > b) return -1; + else if (a < b) return 1; + else return 0; +} + + +void +view_popular_selected (WoohaaSliderMenu *menu, + ClutterActor *actor, + gpointer userdata) +{ + WooHaa *wh = (WooHaa*)userdata; + + wh_video_model_set_filter (wh->model, model_recently_viewed_filter, wh); + wh_video_model_set_sort_func (wh->model, model_sort_popular, NULL); +} + +void +on_db_row_created (WHDB *db, WHVideoModelRow *row, gpointer data) +{ + WooHaa *wh = (WooHaa *)data; + + wh_video_model_row_set_renderer (row, wh_video_row_renderer_new (row)); + wh_video_model_append_row (wh->model, row); +} + +static void +on_desktop_fade_complete (ClutterActor *actor, gpointer user_data) +{ + + WooHaa *wh = (WooHaa *) user_data; + WoohaaSliderMenu *menu = WOOHAA_SLIDER_MENU (wh->menu); + + /* Sort the model to correspond to insitial menu option */ + view_not_viewed_selected (menu, NULL, (gpointer)wh); +} + +int +main (int argc, char *argv[]) +{ + WooHaa *wh; + ClutterActor *stage, *bg, *desktop; + GConfClient *client; + GSList *gconf_paths, *path; + gchar *font_str; + gint menu_h, browse_h; + GError *error = NULL; + ClutterEffectTemplate *effect_template; + ClutterColor stage_color = { 0xff, 0xff, 0xf7, 0xff }; + + gnome_vfs_init (); +#ifdef USE_HELIX + clutter_helix_init (&argc, &argv); +#else + gst_init (&argc, &argv); +#endif + clutter_init (&argc, &argv); + + client = gconf_client_get_default (); + gconf_paths = gconf_client_get_list (client, + WOOHAA_GCONF_PREFIX "/paths", + GCONF_VALUE_STRING, + &error); + g_object_unref (client); + + if (gconf_paths == NULL) + { + g_printf("\n ***************************************************************************\n"); + g_printf(" To run woohaa you must set the GConf key; \n"); + g_printf(" '" WOOHAA_GCONF_PREFIX "/paths' \n"); + g_printf(" to a list of paths containing movie files.\n\n"); + g_printf(" To set the key, run;\n\n"); + g_printf(" gconftool-2 -s -t list --list-type=string " WOOHAA_GCONF_PREFIX "/paths \'[/path1,smb://10.1.1.1/path2]\'\n"); + g_printf("\n ***************************************************************************\n\n"); + + exit(-1); + } + + wh_theme_init(); + + wh = g_new0(WooHaa, 1); + + wh->model = wh_video_model_new (); + wh->db = wh_db_new (); + + effect_template + = clutter_effect_template_new (clutter_timeline_new_for_duration (1000), + CLUTTER_ALPHA_SINE_INC); + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, 800, 600); + g_object_set (stage, "fullscreen", TRUE, "cursor-visible", FALSE, NULL); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + + bg = util_actor_from_file (PKGDATADIR"/bg.png", CSW(), CSH()); + + clutter_group_add (CLUTTER_GROUP(stage), bg); + clutter_actor_show (bg); + + clutter_actor_show (stage); + + /* General setup */ + + wh->screen_browse = clutter_group_new(); + clutter_actor_set_size (wh->screen_browse, CSW(), CSH()); + + menu_h = CSH()/6; + browse_h = CSH() - 2 * menu_h; + font_str = g_strdup_printf("Sans %ipx", menu_h/2); + + wh->menu = woohaa_slider_menu_new (font_str); + clutter_actor_set_size (wh->menu, CSW(), menu_h); + clutter_actor_set_position (wh->menu, 0, menu_h/10); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "Not Viewed", + view_not_viewed_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "Recently Added", + view_recently_added_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "A-F", + view_af_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "G-L", + view_gl_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "M-R", + view_mr_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "S-Z", + view_sz_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "Popular", + view_popular_selected, + wh); + + woohaa_slider_menu_add_option (WOOHAA_SLIDER_MENU (wh->menu), + "Recently Viewed", + view_recently_viewed_selected, + wh); + + woohaa_slider_menu_advance (WOOHAA_SLIDER_MENU (wh->menu), 0); + + clutter_group_add (CLUTTER_GROUP(wh->screen_browse), wh->menu); + + /* Video screen */ + + + wh->screen_video = wh_screen_video_new (); + + g_signal_connect(wh->screen_video, + "playback-started", + G_CALLBACK(on_video_playback_start), + wh); + + g_signal_connect(wh->screen_video, + "playback-finished", + G_CALLBACK(on_video_playback_finish), + wh); + + clutter_group_add (CLUTTER_GROUP(stage), wh->screen_video); + + /* Startup screen */ + + desktop = util_texture_from_root_window (); + clutter_group_add (CLUTTER_GROUP(stage), desktop); + clutter_actor_show (desktop); + + wh->busy = woohaa_busy_new(); + clutter_group_add (CLUTTER_GROUP(stage), wh->busy); + clutter_actor_hide (wh->busy); + + wh->video_effect_tmpl + = clutter_effect_template_new (clutter_timeline_new_for_duration (500), + CLUTTER_ALPHA_SINE_INC); + + clutter_actor_set_scale (wh->busy, 0.2, 0.2); + clutter_effect_scale (effect_template, + wh->busy, + 1.0, + 1.0, + NULL, + NULL); + + clutter_effect_fade (effect_template, + desktop, + 0, + on_desktop_fade_complete, + wh); + clutter_effect_scale (effect_template, + desktop, + 0.1, + 0.1, + NULL, + NULL); + + /* show stage for desktop zoom */ + clutter_actor_show (stage); + + /* below actually spins main loop (for busy icon) */ + + g_signal_connect (wh->db, + "row-created", + G_CALLBACK (on_db_row_created), + wh); + + for (path = gconf_paths; path != NULL; path = path->next) + { + char *uri = NULL; + if (strstr (path->data, "://") == NULL) + uri = g_filename_to_uri (path->data, NULL, NULL); + wh_db_import_uri (wh->db, uri ? uri : path->data); + g_free (uri); + g_free (path->data); + } + g_slist_free (gconf_paths); + + /* view widget */ + + /* FIXME: Should be able to do this before importing + * and get a smoother transition, but something appears wrong + * with add signal. + */ + wh->view = wh_video_view_new (wh->model, 5); + /* menu_h is CSH()/12 */ + clutter_actor_set_size (wh->view, CSW() - menu_h, browse_h); + clutter_actor_set_position (wh->view, + (CSW() - clutter_actor_get_width(wh->view)) / 2, + menu_h + (menu_h/2) + (menu_h/6)); + + clutter_group_add (CLUTTER_GROUP(wh->screen_browse), wh->view); + + clutter_group_add (CLUTTER_GROUP (stage), wh->screen_browse); + + /* Zoom to browse screen */ + + clutter_actor_raise_top (wh->busy); + + clutter_actor_show_all (wh->screen_browse); + + g_signal_connect (stage, + "key-release-event", + G_CALLBACK (browse_input_cb), + wh); + + g_remove ("/tmp/wh-thumb.png"); + thumbnail_find_empty(wh); + + clutter_main(); + + g_remove ("/tmp/wh-thumb.png"); + + return 0; +} diff --git a/attic/youhaa/AUTHORS b/attic/youhaa/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/attic/youhaa/ChangeLog b/attic/youhaa/ChangeLog new file mode 100644 index 0000000..5cc17b1 --- /dev/null +++ b/attic/youhaa/ChangeLog @@ -0,0 +1,106 @@ +2008-05-03 Chris Lord + + * src/yh-youtube.c (yh_youtube_curl_close), (yh_youtube_query), + (yh_youtube_header_cb): + Stop freeing cURL's internal URL - what the hell was I doing this + for?! Fixes crash on ia64 (why this didn't crash on ia32, no idea) + +2008-05-02 Chris Lord + + * src/yh-youtube.c: (yh_youtube_pause): + * src/yh-youtube.h: + Add a function to pause/resume transfers + +2008-05-02 Chris Lord + + * src/yh-youtube.c: (yh_youtube_curl_close), + (yh_youtube_get_http_link_cb), (yh_youtube_get_http_link): + Reuse the same handle when handling redirects + +2008-05-01 Chris Lord + + Add support for related-videos query (tested, works) + + * src/yh-main.c (model_cb), (animate_search), (button_pressed_cb), + (related_cb): + Hook onto YHYoutubeBrowser's 'related' signal + + * src/yh-youtube-browser.c (yh_youtube_browser_request_coords), + (yh_youtube_browser_class_init), (related_pressed_cb), + (yh_youtube_browser_init): + Add a new button underneath the video preview image to search for + related videos, emit a signal, 'related', when its clicked + + * src/yh-youtube-browser.h: + Add 'related' signal + + * src/yh-youtube.c (yh_youtube_create_model), + (yh_youtube_curl_close), (yh_youtube_query_manual): + * src/yh-youtube.h: + Add related videos link to the model, add a new function to query an + abitrary link (assumed to be a well-formed youtube json query link) + +2008-04-28 Chris Lord + + * src/yh-youtube.c: (yh_youtube_header_cb): + Don't use Google cache for videos + +2008-04-28 Chris Lord + + * src/yh-youtube.c: (yh_youtube_header_cb): + Again, fix video URL mangling + +2008-04-25 Chris Lord + + * src/yh-youtube.c (yh_youtube_curl_close), (yh_youtube_header_cb): + Remove accidentally committed debugging statements - Also, tested flv + downloading with recently added videos, seems to work correctly + +2008-04-24 Chris Lord + + * src/yh-youtube.c (yh_youtube_curl_close), (yh_youtube_header_cb): + Actually fix flv downloading - This may not work on recent videos, + needs testing + +2008-04-24 Chris Lord + + * src/yh-youtube.c (yh_youtube_header_cb): + Update mangling URL for YouTube flv download + +2008-04-03 Chris Lord + + * src/yh-youtube.c (yh_youtube_curl_close): + Remove curl_easy_cleanup (fixes glibc corruption warning), I suppose + this is unnecessary + +2008-03-25 Chris Lord + + * src/yh-youtube.c: (yh_youtube_create_model): + Fix ratings + +2008-02-22 Chris Lord + + * src/yh-youtube-browser.c: (free_thumbs), + (yh_youtube_browser_dispose): + Disconnect signals from the Youtube object on dispose, also free + effects template and unparent internal group - the first of these + fixes crashes when doing a second successful query, the others stop + leaking memory + +2008-02-22 Chris Lord + + * Makefile.am: + * autogen.sh: + * configure.ac: + * data/Makefile.am: + * data/go-next.svg: + * data/go-previous.svg: + * libcurl.m4: + * src/Makefile.am: + * src/glibcurl.[ch]: + * src/yh-main.c: + * src/yh-theme.[ch]: + * src/yh-youtube-browser.[ch]: + * src/yh-youtube.[ch]: + Initial check-in of YouTube browser/player app + diff --git a/attic/youhaa/Makefile.am b/attic/youhaa/Makefile.am new file mode 100644 index 0000000..ef2a989 --- /dev/null +++ b/attic/youhaa/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS=data src + +MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/attic/youhaa/NEWS b/attic/youhaa/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/attic/youhaa/README b/attic/youhaa/README new file mode 100644 index 0000000..e69de29 diff --git a/attic/youhaa/autogen.sh b/attic/youhaa/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/attic/youhaa/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/attic/youhaa/configure.ac b/attic/youhaa/configure.ac new file mode 100644 index 0000000..053cd3f --- /dev/null +++ b/attic/youhaa/configure.ac @@ -0,0 +1,36 @@ +AC_PREREQ(2.53) +AC_INIT(youhaa, 0.0, []) +AM_INIT_AUTOMAKE() +AC_CONFIG_SRCDIR(src/yh-main.c) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_STDC_HEADERS + +m4_include(libcurl.m4) + +PKG_CHECK_MODULES(DEPS, clutter-0.6 clutter-gst-0.6 json-glib-1.0) + +LIBCURL_CHECK_CONFIG([yes], [7.14.0], + [DEPS_CFLAGS="$DEPS_CFLAGS $LIBCURL_CPPFLAGS" + DEPS_LIBS="$DEPS_LIBS $LIBCURL" + ], + AC_MSG_ERROR([libcurl >= 7.14.0 not found])) + +AC_SUBST(DEPS_CFLAGS) +AC_SUBST(DEPS_LIBS) + +if test "x$GCC" = "xyes"; then + GCC_FLAGS="-g -Wall" +fi + +AC_SUBST(GCC_FLAGS) + +AC_OUTPUT([ +Makefile +data/Makefile +src/Makefile +]) + diff --git a/attic/youhaa/data/Makefile.am b/attic/youhaa/data/Makefile.am new file mode 100644 index 0000000..9976a4f --- /dev/null +++ b/attic/youhaa/data/Makefile.am @@ -0,0 +1,6 @@ + +resdir = $(datadir)/youhaa +res_DATA = go-previous.svg go-next.svg + +EXTRA_DIST = $(res_DATA) + diff --git a/attic/youhaa/data/go-next.svg b/attic/youhaa/data/go-next.svg new file mode 100644 index 0000000..989bff5 --- /dev/null +++ b/attic/youhaa/data/go-next.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Next + + + go + next + right + arrow + pointer + > + + + + + + + + + + + + + + + + + + + + diff --git a/attic/youhaa/data/go-previous.svg b/attic/youhaa/data/go-previous.svg new file mode 100644 index 0000000..f1eb977 --- /dev/null +++ b/attic/youhaa/data/go-previous.svg @@ -0,0 +1,852 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Previous + + + go + previous + left + arrow + pointer + < + + + + + + + + + + + + + + + + + + + + diff --git a/attic/youhaa/libcurl.m4 b/attic/youhaa/libcurl.m4 new file mode 100644 index 0000000..798427c --- /dev/null +++ b/attic/youhaa/libcurl.m4 @@ -0,0 +1,236 @@ +# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], +# [ACTION-IF-YES], [ACTION-IF-NO]) +# ---------------------------------------------------------- +# David Shaw Jan-17-2006 +# +# Checks for libcurl. DEFAULT-ACTION is the string yes or no to +# specify whether to default to --with-libcurl or --without-libcurl. +# If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the +# minimum version of libcurl to accept. Pass the version as a regular +# version number like 7.10.1. If not supplied, any version is +# accepted. ACTION-IF-YES is a list of shell commands to run if +# libcurl was successfully found and passed the various tests. +# ACTION-IF-NO is a list of shell commands that are run otherwise. +# Note that using --without-libcurl does run ACTION-IF-NO. +# +# This macro #defines HAVE_LIBCURL if a working libcurl setup is +# found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary +# values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are +# the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy +# where yyy are the various protocols supported by libcurl. Both xxx +# and yyy are capitalized. See the list of AH_TEMPLATEs at the top of +# the macro for the complete list of possible defines. Shell +# variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also +# defined to 'yes' for those features and protocols that were found. +# Note that xxx and yyy keep the same capitalization as in the +# curl-config list (e.g. it's "HTTP" and not "http"). +# +# Users may override the detected values by doing something like: +# LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure +# +# For the sake of sanity, this macro assumes that any libcurl that is +# found is after version 7.7.2, the first version that included the +# curl-config script. Note that it is very important for people +# packaging binary versions of libcurl to include this script! +# Without curl-config, we can only guess what protocols are available, +# or use curl_version_info to figure it out at runtime. + +AC_DEFUN([LIBCURL_CHECK_CONFIG], +[ + AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) + AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) + AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) + AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) + AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) + AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) + AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) + AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) + + AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) + AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) + AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) + AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) + + AC_ARG_WITH(libcurl, + AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]), + [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) + + if test "$_libcurl_with" != "no" ; then + + AC_PROG_AWK + + _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" + + _libcurl_try_link=yes + + if test -d "$_libcurl_with" ; then + LIBCURL_CPPFLAGS="-I$withval/include" + _libcurl_ldflags="-L$withval/lib" + AC_PATH_PROG([_libcurl_config],["$withval/bin/curl-config"]) + else + AC_PATH_PROG([_libcurl_config],[curl-config]) + fi + + if test x$_libcurl_config != "x" ; then + AC_CACHE_CHECK([for the version of libcurl], + [libcurl_cv_lib_curl_version], + [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) + + _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` + _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` + + if test $_libcurl_wanted -gt 0 ; then + AC_CACHE_CHECK([for libcurl >= version $2], + [libcurl_cv_lib_version_ok], + [ + if test $_libcurl_version -ge $_libcurl_wanted ; then + libcurl_cv_lib_version_ok=yes + else + libcurl_cv_lib_version_ok=no + fi + ]) + fi + + if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then + if test x"$LIBCURL_CPPFLAGS" = "x" ; then + LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` + fi + if test x"$LIBCURL" = "x" ; then + LIBCURL=`$_libcurl_config --libs` + + # This is so silly, but Apple actually has a bug in their + # curl-config script. Fixed in Tiger, but there are still + # lots of Panther installs around. + case "${host}" in + powerpc-apple-darwin7*) + LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` + ;; + esac + fi + + # All curl-config scripts support --feature + _libcurl_features=`$_libcurl_config --feature` + + # Is it modern enough to have --protocols? (7.12.4) + if test $_libcurl_version -ge 461828 ; then + _libcurl_protocols=`$_libcurl_config --protocols` + fi + else + _libcurl_try_link=no + fi + + unset _libcurl_wanted + fi + + if test $_libcurl_try_link = yes ; then + + # we didn't find curl-config, so let's see if the user-supplied + # link line (or failing that, "-lcurl") is enough. + LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} + + AC_CACHE_CHECK([whether libcurl is usable], + [libcurl_cv_lib_curl_usable], + [ + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBCURL $LIBS" + + AC_LINK_IFELSE(AC_LANG_PROGRAM([#include ],[ +/* Try and use a few common options to force a failure if we are + missing symbols or can't link. */ +int x; +curl_easy_setopt(NULL,CURLOPT_URL,NULL); +x=CURL_ERROR_SIZE; +x=CURLOPT_WRITEFUNCTION; +x=CURLOPT_FILE; +x=CURLOPT_ERRORBUFFER; +x=CURLOPT_STDERR; +x=CURLOPT_VERBOSE; +]),libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no) + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + ]) + + if test $libcurl_cv_lib_curl_usable = yes ; then + + # Does curl_free() exist in this version of libcurl? + # If not, fake it with free() + + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBS $LIBCURL" + + AC_CHECK_FUNC(curl_free,, + AC_DEFINE(curl_free,free, + [Define curl_free() as free() if our version of curl lacks curl_free.])) + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + + AC_DEFINE(HAVE_LIBCURL,1, + [Define to 1 if you have a functional curl library.]) + AC_SUBST(LIBCURL_CPPFLAGS) + AC_SUBST(LIBCURL) + + for _libcurl_feature in $_libcurl_features ; do + AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) + eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes + done + + if test "x$_libcurl_protocols" = "x" ; then + + # We don't have --protocols, so just assume that all + # protocols are available + _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" + + if test x$libcurl_feature_SSL = xyes ; then + _libcurl_protocols="$_libcurl_protocols HTTPS" + + # FTPS wasn't standards-compliant until version + # 7.11.0 + if test $_libcurl_version -ge 461568; then + _libcurl_protocols="$_libcurl_protocols FTPS" + fi + fi + fi + + for _libcurl_protocol in $_libcurl_protocols ; do + AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) + eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes + done + fi + fi + + unset _libcurl_try_link + unset _libcurl_version_parse + unset _libcurl_config + unset _libcurl_feature + unset _libcurl_features + unset _libcurl_protocol + unset _libcurl_protocols + unset _libcurl_version + unset _libcurl_ldflags + fi + + if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then + # This is the IF-NO path + ifelse([$4],,:,[$4]) + else + # This is the IF-YES path + ifelse([$3],,:,[$3]) + fi + + unset _libcurl_with +])dnl diff --git a/attic/youhaa/src/Makefile.am b/attic/youhaa/src/Makefile.am new file mode 100644 index 0000000..4b2a969 --- /dev/null +++ b/attic/youhaa/src/Makefile.am @@ -0,0 +1,20 @@ +bin_PROGRAMS=youhaa + +PKGDATADIR = $(datadir)/youhaa + +AM_CFLAGS = $(DEPS_CFLAGS) $(GCC_FLAGS) -D_GNU_SOURCE -DPKGDATADIR=\"$(PKGDATADIR)\" + +youhaa_LDADD = $(DEPS_LIBS) +youhaa_SOURCES = \ + yh-main.c \ + yh-theme.c \ + yh-theme.h \ + yh-youtube-browser.c \ + yh-youtube-browser.h \ + yh-youtube.c \ + yh-youtube.h \ + glibcurl.c \ + glibcurl.h \ + pause_png.h \ + play_png.h + diff --git a/attic/youhaa/src/glibcurl.c b/attic/youhaa/src/glibcurl.c new file mode 100644 index 0000000..8299d30 --- /dev/null +++ b/attic/youhaa/src/glibcurl.c @@ -0,0 +1,546 @@ +/* $Id: glibcurl.c,v 1.14 2004/12/05 16:15:12 atterer Exp $ -*- C -*- + __ _ + |_) /| Copyright (C) 2004 | richard@ + | \/¯| Richard Atterer | atterer.net + ¯ '` ¯ + All rights reserved. + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization of the + copyright holder. + +*/ + +#include +#include + +#include +#include +#include + +/* #define D(_args) fprintf _args; */ +#define D(_args) + +/* #if 1 */ +#ifdef G_OS_WIN32 +/*______________________________________________________________________*/ + +/* Timeout for the fds passed to glib's poll() call, in millisecs. + curl_multi_fdset(3) says we should call curl_multi_perform() at regular + intervals. */ +#define GLIBCURL_TIMEOUT 500 + +/* A structure which "derives" (in glib speak) from GSource */ +typedef struct CurlGSource_ { + GSource source; /* First: The type we're deriving from */ + + CURLM* multiHandle; + GThread* selectThread; + GCond* cond; /* To signal selectThread => main thread: call perform() */ + GMutex* mutex; /* Not held by selectThread whenever it is waiting */ + + gboolean callPerform; /* TRUE => Call curl_multi_perform() Real Soon */ + gint gtkBlockAndWait; + gboolean selectRunning; /* FALSE => selectThread terminates */ + + /* For data returned by curl_multi_fdset */ + fd_set fdRead; + fd_set fdWrite; + fd_set fdExc; + int fdMax; + +} CurlGSource; + +/* Global state: Our CurlGSource object */ +static CurlGSource* curlSrc = 0; + +/* The "methods" of CurlGSource */ +static gboolean prepare(GSource* source, gint* timeout); +static gboolean check(GSource* source); +static gboolean dispatch(GSource* source, GSourceFunc callback, + gpointer user_data); +static void finalize(GSource* source); + +static GSourceFuncs curlFuncs = { + &prepare, &check, &dispatch, &finalize, 0, 0 +}; +/*______________________________________________________________________*/ + +void glibcurl_init() { + /* Create source object for curl file descriptors, and hook it into the + default main context. */ + GSource* src = g_source_new(&curlFuncs, sizeof(CurlGSource)); + curlSrc = (CurlGSource*)src; + g_source_attach(&curlSrc->source, NULL); + + if (!g_thread_supported()) g_thread_init(NULL); + + /* Init rest of our data */ + curlSrc->callPerform = 0; + curlSrc->selectThread = 0; + curlSrc->cond = g_cond_new(); + curlSrc->mutex = g_mutex_new(); + curlSrc->gtkBlockAndWait = 0; + + /* Init libcurl */ + curl_global_init(CURL_GLOBAL_ALL); + curlSrc->multiHandle = curl_multi_init(); +} +/*______________________________________________________________________*/ + +void glibcurl_cleanup() { + D((stderr, "glibcurl_cleanup\n")); + /* You must call curl_multi_remove_handle() and curl_easy_cleanup() for all + requests before calling this. */ +/* assert(curlSrc->callPerform == 0); */ + + /* All easy handles must be finished */ + + /* Lock before accessing selectRunning/selectThread */ + g_mutex_lock(curlSrc->mutex); + curlSrc->selectRunning = FALSE; + while (curlSrc->selectThread != NULL) { + g_mutex_unlock(curlSrc->mutex); + g_thread_yield(); + g_cond_signal(curlSrc->cond); /* Make the select thread shut down */ + g_thread_yield(); + g_mutex_lock(curlSrc->mutex); /* Wait until it has shut down */ + } + g_mutex_unlock(curlSrc->mutex); + + assert(curlSrc->selectThread == NULL); + + g_cond_free(curlSrc->cond); + g_mutex_free(curlSrc->mutex); + + curl_multi_cleanup(curlSrc->multiHandle); + curlSrc->multiHandle = 0; + curl_global_cleanup(); + + g_source_unref(&curlSrc->source); + curlSrc = 0; +} +/*______________________________________________________________________*/ + +CURLM* glibcurl_handle() { + return curlSrc->multiHandle; +} +/*______________________________________________________________________*/ + +CURLMcode glibcurl_add(CURL *easy_handle) { + assert(curlSrc != 0); + assert(curlSrc->multiHandle != 0); + glibcurl_start(); + return curl_multi_add_handle(curlSrc->multiHandle, easy_handle); +} +/*______________________________________________________________________*/ + +CURLMcode glibcurl_remove(CURL *easy_handle) { + D((stderr, "glibcurl_remove %p\n", easy_handle)); + assert(curlSrc != 0); + assert(curlSrc->multiHandle != 0); + return curl_multi_remove_handle(curlSrc->multiHandle, easy_handle); +} +/*______________________________________________________________________*/ + +/* Call this whenever you have added a request using + curl_multi_add_handle(). */ +void glibcurl_start() { + D((stderr, "glibcurl_start\n")); + curlSrc->callPerform = TRUE; +} +/*______________________________________________________________________*/ + +void glibcurl_set_callback(GlibcurlCallback function, void* data) { + g_source_set_callback(&curlSrc->source, (GSourceFunc)function, data, + NULL); +} +/*______________________________________________________________________*/ + +static gpointer selectThread(gpointer data) { + int fdCount; + struct timeval timeout; + assert(data == 0); /* Just to get rid of unused param warning */ + + D((stderr, "selectThread\n")); + g_mutex_lock(curlSrc->mutex); + D((stderr, "selectThread: got lock\n")); + + curlSrc->selectRunning = TRUE; + while (curlSrc->selectRunning) { + + FD_ZERO(&curlSrc->fdRead); + FD_ZERO(&curlSrc->fdWrite); + FD_ZERO(&curlSrc->fdExc); + curlSrc->fdMax = -1; + /* What fds does libcurl want us to poll? */ + curl_multi_fdset(curlSrc->multiHandle, &curlSrc->fdRead, + &curlSrc->fdWrite, &curlSrc->fdExc, &curlSrc->fdMax); + timeout.tv_sec = GLIBCURL_TIMEOUT / 1000; + timeout.tv_usec = (GLIBCURL_TIMEOUT % 1000) * 1000; + fdCount = select(curlSrc->fdMax + 1, &curlSrc->fdRead, &curlSrc->fdWrite, + &curlSrc->fdExc, &timeout); + D((stderr, "selectThread: select() fdCount=%d\n", fdCount)); + + g_atomic_int_inc(&curlSrc->gtkBlockAndWait); /* "GTK thread, block!" */ + D((stderr, "selectThread: waking up GTK thread %d\n", + curlSrc->gtkBlockAndWait)); + /* GTK thread will almost immediately block in prepare() */ + g_main_context_wakeup(NULL); + + /* Now unblock GTK thread, continue after it signals us */ + D((stderr, "selectThread: pre-wait\n")); + g_cond_wait(curlSrc->cond, curlSrc->mutex); + D((stderr, "selectThread: post-wait\n")); + + } + + curlSrc->selectThread = NULL; + D((stderr, "selectThread: exit\n")); + g_mutex_unlock(curlSrc->mutex); + return NULL; +} +/*______________________________________________________________________*/ + +/* Returning FALSE may cause the main loop to block indefinitely, but that is + not a problem, we use g_main_context_wakeup to wake it up */ +/* Returns TRUE iff it holds the mutex lock */ +gboolean prepare(GSource* source, gint* timeout) { + assert(source == &curlSrc->source); + D((stderr, "prepare: callPerform=%d, thread=%p\n", + curlSrc->callPerform, curlSrc->selectThread)); + + *timeout = -1; + + if (g_atomic_int_dec_and_test(&curlSrc->gtkBlockAndWait)) { + /* The select thread wants us to block */ + D((stderr, "prepare: trying lock\n")); + g_mutex_lock(curlSrc->mutex); + D((stderr, "prepare: got lock\n")); + return TRUE; + } else { + g_atomic_int_inc(&curlSrc->gtkBlockAndWait); + } + + /* Usual behaviour: Nothing happened, so don't dispatch. */ + if (!curlSrc->callPerform) return FALSE; + + /* Always dispatch if callPerform, i.e. 1st download just starting. */ + D((stderr, "prepare: trying lock 2\n")); + /* Problem: We can block up to GLIBCURL_TIMEOUT msecs here, until the + select() call returns. However, under Win32 this does not appear to be a + problem (don't know why) - it _does_ tend to block the GTK thread under + Linux. */ + g_mutex_lock(curlSrc->mutex); + D((stderr, "prepare: got lock 2\n")); + curlSrc->callPerform = FALSE; + if (curlSrc->selectThread == NULL) { + D((stderr, "prepare: starting select thread\n")); + /* Note that the thread will stop soon because we hold mutex */ + curlSrc->selectThread = g_thread_create(&selectThread, 0, FALSE, NULL); + assert(curlSrc->selectThread != NULL); + } + return TRUE; +} +/*______________________________________________________________________*/ + +/* Called after all the file descriptors are polled by glib. */ +gboolean check(GSource* source) { + assert(source == &curlSrc->source); + return FALSE; +} +/*______________________________________________________________________*/ + +gboolean dispatch(GSource* source, GSourceFunc callback, + gpointer user_data) { + CURLMcode x; + int multiCount; + + assert(source == &curlSrc->source); + do { + x = curl_multi_perform(curlSrc->multiHandle, &multiCount); + D((stderr, "dispatched: code=%d, reqs=%d\n", x, multiCount)); + } while (x == CURLM_CALL_MULTI_PERFORM); + + if (multiCount == 0) + curlSrc->selectRunning = FALSE; + + if (callback != 0) (*callback)(user_data); + + /* Let selectThread call select() again */ + g_cond_signal(curlSrc->cond); + g_mutex_unlock(curlSrc->mutex); + + return TRUE; /* "Do not destroy me" */ +} +/*______________________________________________________________________*/ + +void finalize(GSource* source) { + assert(source == &curlSrc->source); +} +/*======================================================================*/ + +#else /* !G_OS_WIN32 */ + +/* Number of highest allowed fd */ +#define GLIBCURL_FDMAX 127 + +/* Timeout for the fds passed to glib's poll() call, in millisecs. + curl_multi_fdset(3) says we should call curl_multi_perform() at regular + intervals. */ +#define GLIBCURL_TIMEOUT 1000 + +/* GIOCondition event masks */ +#define GLIBCURL_READ (G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP) +#define GLIBCURL_WRITE (G_IO_OUT | G_IO_ERR | G_IO_HUP) +#define GLIBCURL_EXC (G_IO_ERR | G_IO_HUP) + +/** A structure which "derives" (in glib speak) from GSource */ +typedef struct CurlGSource_ { + GSource source; /* First: The type we're deriving from */ + + CURLM* multiHandle; + + /* Previously seen FDs, for comparing with libcurl's current fd_sets */ + GPollFD lastPollFd[GLIBCURL_FDMAX + 1]; + int lastPollFdMax; /* Index of highest non-empty entry in lastPollFd */ + + int callPerform; /* Non-zero => curl_multi_perform() gets called */ + + /* For data returned by curl_multi_fdset */ + fd_set fdRead; + fd_set fdWrite; + fd_set fdExc; + int fdMax; + +} CurlGSource; + +/* Global state: Our CurlGSource object */ +static CurlGSource* curlSrc = 0; + +/* The "methods" of CurlGSource */ +static gboolean prepare(GSource* source, gint* timeout); +static gboolean check(GSource* source); +static gboolean dispatch(GSource* source, GSourceFunc callback, + gpointer user_data); +static void finalize(GSource* source); + +static GSourceFuncs curlFuncs = { + &prepare, &check, &dispatch, &finalize, 0, 0 +}; +/*______________________________________________________________________*/ + +void glibcurl_init() { + int fd; + /* Create source object for curl file descriptors, and hook it into the + default main context. */ + curlSrc = (CurlGSource*)g_source_new(&curlFuncs, sizeof(CurlGSource)); + g_source_attach(&curlSrc->source, NULL); + + /* Init rest of our data */ + memset(&curlSrc->lastPollFd, 0, sizeof(curlSrc->lastPollFd)); + for (fd = 1; fd <= GLIBCURL_FDMAX; ++fd) + curlSrc->lastPollFd[fd].fd = fd; + curlSrc->lastPollFdMax = 0; + curlSrc->callPerform = 0; + + /* Init libcurl */ + curl_global_init(CURL_GLOBAL_ALL); + curlSrc->multiHandle = curl_multi_init(); + + D((stderr, "events: R=%x W=%x X=%x\n", GLIBCURL_READ, GLIBCURL_WRITE, + GLIBCURL_EXC)); +} +/*______________________________________________________________________*/ + +CURLM* glibcurl_handle() { + return curlSrc->multiHandle; +} +/*______________________________________________________________________*/ + +CURLMcode glibcurl_add(CURL *easy_handle) { + assert(curlSrc->multiHandle != 0); + curlSrc->callPerform = -1; + return curl_multi_add_handle(curlSrc->multiHandle, easy_handle); +} +/*______________________________________________________________________*/ + +CURLMcode glibcurl_remove(CURL *easy_handle) { + assert(curlSrc != 0); + assert(curlSrc->multiHandle != 0); + return curl_multi_remove_handle(curlSrc->multiHandle, easy_handle); +} +/*______________________________________________________________________*/ + +/* Call this whenever you have added a request using curl_multi_add_handle(). + This is necessary to start new requests. It does so by triggering a call + to curl_multi_perform() even in the case where no open fds cause that + function to be called anyway. */ +void glibcurl_start() { + curlSrc->callPerform = -1; +} +/*______________________________________________________________________*/ + +void glibcurl_set_callback(GlibcurlCallback function, void* data) { + g_source_set_callback(&curlSrc->source, (GSourceFunc)function, data, + NULL); +} +/*______________________________________________________________________*/ + +void glibcurl_cleanup() { + /* You must call curl_multi_remove_handle() and curl_easy_cleanup() for all + requests before calling this. */ +/* assert(curlSrc->callPerform == 0); */ + + curl_multi_cleanup(curlSrc->multiHandle); + curlSrc->multiHandle = 0; + curl_global_cleanup(); + +/* g_source_destroy(&curlSrc->source); */ + g_source_unref(&curlSrc->source); + curlSrc = 0; +} +/*______________________________________________________________________*/ + +static void registerUnregisterFds() { + int fd, fdMax; + + FD_ZERO(&curlSrc->fdRead); + FD_ZERO(&curlSrc->fdWrite); + FD_ZERO(&curlSrc->fdExc); + curlSrc->fdMax = -1; + /* What fds does libcurl want us to poll? */ + curl_multi_fdset(curlSrc->multiHandle, &curlSrc->fdRead, + &curlSrc->fdWrite, &curlSrc->fdExc, &curlSrc->fdMax); + /*fprintf(stderr, "registerUnregisterFds: fdMax=%d\n", curlSrc->fdMax);*/ + assert(curlSrc->fdMax >= -1 && curlSrc->fdMax <= GLIBCURL_FDMAX); + + fdMax = curlSrc->fdMax; + if (fdMax < curlSrc->lastPollFdMax) fdMax = curlSrc->lastPollFdMax; + + /* Has the list of required events for any of the fds changed? */ + for (fd = 0; fd <= fdMax; ++fd) { + gushort events = 0; + if (FD_ISSET(fd, &curlSrc->fdRead)) events |= GLIBCURL_READ; + if (FD_ISSET(fd, &curlSrc->fdWrite)) events |= GLIBCURL_WRITE; + if (FD_ISSET(fd, &curlSrc->fdExc)) events |= GLIBCURL_EXC; + + /* List of events unchanged => no (de)registering */ + if (events == curlSrc->lastPollFd[fd].events) continue; + + D((stderr, "registerUnregisterFds: fd %d: old events %x, " + "new events %x\n", fd, curlSrc->lastPollFd[fd].events, events)); + + /* fd is already a lastPollFd, but event type has changed => do nothing. + Due to the implementation of g_main_context_query(), the new event + flags will be picked up automatically. */ + if (events != 0 && curlSrc->lastPollFd[fd].events != 0) { + curlSrc->lastPollFd[fd].events = events; + continue; + } + curlSrc->lastPollFd[fd].events = events; + + /* Otherwise, (de)register as appropriate */ + if (events == 0) { + g_source_remove_poll(&curlSrc->source, &curlSrc->lastPollFd[fd]); + curlSrc->lastPollFd[fd].revents = 0; + D((stderr, "unregister fd %d\n", fd)); + } else { + g_source_add_poll(&curlSrc->source, &curlSrc->lastPollFd[fd]); + D((stderr, "register fd %d\n", fd)); + } + } + + curlSrc->lastPollFdMax = curlSrc->fdMax; +} + +/* Called before all the file descriptors are polled by the glib main loop. + We must have a look at all fds that libcurl wants polled. If any of them + are new/no longer needed, we have to (de)register them with glib. */ +gboolean prepare(GSource* source, gint* timeout) { + D((stderr, "prepare\n")); + assert(source == &curlSrc->source); + + if (curlSrc->multiHandle == 0) return FALSE; + + registerUnregisterFds(); + + *timeout = GLIBCURL_TIMEOUT; +/* return FALSE; */ + return curlSrc->callPerform == -1 ? TRUE : FALSE; +} +/*______________________________________________________________________*/ + +/* Called after all the file descriptors are polled by glib. + g_main_context_check() has copied back the revents fields (set by glib's + poll() call) to our GPollFD objects. How inefficient all that copying + is... let's add some more and copy the results of these revents into + libcurl's fd_sets! */ +gboolean check(GSource* source) { + int fd, somethingHappened = 0; + + if (curlSrc->multiHandle == 0) return FALSE; + + assert(source == &curlSrc->source); + FD_ZERO(&curlSrc->fdRead); + FD_ZERO(&curlSrc->fdWrite); + FD_ZERO(&curlSrc->fdExc); + for (fd = 0; fd <= curlSrc->fdMax; ++fd) { + gushort revents = curlSrc->lastPollFd[fd].revents; + if (revents == 0) continue; + somethingHappened = 1; +/* D((stderr, "[fd%d] ", fd)); */ + if (revents & (G_IO_IN | G_IO_PRI)) + FD_SET((unsigned)fd, &curlSrc->fdRead); + if (revents & G_IO_OUT) + FD_SET((unsigned)fd, &curlSrc->fdWrite); + if (revents & (G_IO_ERR | G_IO_HUP)) + FD_SET((unsigned)fd, &curlSrc->fdExc); + } +/* D((stderr, "check: fdMax %d\n", curlSrc->fdMax)); */ + +/* return TRUE; */ +/* return FALSE; */ + return curlSrc->callPerform == -1 || somethingHappened != 0 ? TRUE : FALSE; +} +/*______________________________________________________________________*/ + +gboolean dispatch(GSource* source, GSourceFunc callback, + gpointer user_data) { + CURLMcode x; + + assert(source == &curlSrc->source); + assert(curlSrc->multiHandle != 0); + do { + x = curl_multi_perform(curlSrc->multiHandle, &curlSrc->callPerform); +/* D((stderr, "dispatched %d\n", x)); */ + } while (x == CURLM_CALL_MULTI_PERFORM); + + /* If no more calls to curl_multi_perform(), unregister left-over fds */ + if (curlSrc->callPerform == 0) registerUnregisterFds(); + + if (callback != 0) (*callback)(user_data); + + return TRUE; /* "Do not destroy me" */ +} +/*______________________________________________________________________*/ + +void finalize(GSource* source) { + assert(source == &curlSrc->source); + registerUnregisterFds(); +} + +#endif diff --git a/attic/youhaa/src/glibcurl.h b/attic/youhaa/src/glibcurl.h new file mode 100644 index 0000000..fa167e3 --- /dev/null +++ b/attic/youhaa/src/glibcurl.h @@ -0,0 +1,80 @@ +/* $Id: glibcurl.h,v 1.7 2004/12/04 13:58:29 atterer Exp $ -*- C -*- + __ _ + |_) /| Copyright (C) 2004 | richard@ + | \/¯| Richard Atterer | atterer.net + ¯ '` ¯ + All rights reserved. + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization of the + copyright holder. + +*/ + +/** @file + Use the libcurl multi interface from GTK+/glib programs without having to + resort to multithreading */ + +#ifndef GLIBCURL_H +#define GLIBCURL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Initialize libcurl. Call this once at the beginning of your program. This + function makes calls to curl_global_init() and curl_multi_init() */ +void glibcurl_init(); + +/** Return global multi handle */ +CURLM* glibcurl_handle(); + +/** Convenience function, just executes + curl_multi_add_handle(glibcurl_handle(), easy_handle); glibcurl_start()*/ +CURLMcode glibcurl_add(CURL* easy_handle); + +/** Convenience function, just executes + curl_multi_remove_handle(glibcurl_handle(), easy_handle) */ +CURLMcode glibcurl_remove(CURL* easy_handle); + +/** Call this whenever you have added a request using + curl_multi_add_handle(). This is necessary to start new requests. It does + so by triggering a call to curl_multi_perform() even in the case where no + open fds cause that function to be called anyway. The call happens + "later", i.e. during the next iteration of the glib main loop. + glibcurl_start() only sets a flag to make it happen. */ +void glibcurl_start(); + +/** Callback function for glibcurl_set_callback */ +typedef void (*GlibcurlCallback)(void*); +/** Set function to call after each invocation of curl_multi_perform(). Pass + function==0 to unregister a previously set callback. The callback + function will be called with the supplied data pointer as its first + argument. */ +void glibcurl_set_callback(GlibcurlCallback function, void* data); + +/** You must call glibcurl_remove() and curl_easy_cleanup() for all requests + before calling this. This function makes calls to curl_multi_cleanup() + and curl_global_cleanup(). */ +void glibcurl_cleanup(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/attic/youhaa/src/yh-main.c b/attic/youhaa/src/yh-main.c new file mode 100644 index 0000000..1be0fba --- /dev/null +++ b/attic/youhaa/src/yh-main.c @@ -0,0 +1,377 @@ + +#include +#include +#include + +#include "yh-theme.h" +#include "yh-youtube.h" +#include "yh-youtube-browser.h" + +typedef struct { + ClutterActor *entry; + ClutterActor *button; + ClutterActor *throbber; + ClutterActor *logo; + + ClutterActor *results; + + ClutterTimeline *throbber_timeline; + ClutterTimeline *transition; + + ClutterEffectTemplate *template; + + gboolean query_changed; + YHYoutube *youtube; +} YouhaaData; + +static void related_cb (YHYoutubeBrowser *browser, ClutterModelIter *iter, + YouhaaData *data); + +static void +button_in_complete (ClutterActor *actor, YouhaaData *data) +{ + data->transition = NULL; +} + +static void +throbber_out_complete (ClutterActor *actor, YouhaaData *data) +{ + clutter_actor_hide (data->throbber); + clutter_actor_show (data->button); + + clutter_timeline_stop (data->throbber_timeline); + + data->transition = clutter_effect_rotate (data->template, + data->button, + CLUTTER_Y_AXIS, + 0, + clutter_actor_get_width (data->button)/2, + 0, + 0, + CLUTTER_ROTATE_CCW, + (ClutterEffectCompleteFunc)button_in_complete, + data); +} + +static void +destroy_out_complete (ClutterActor *actor, YouhaaData *data) +{ + clutter_actor_destroy (actor); +} + +static void +model_cb (YHYoutube *youtube, ClutterModel *model, YouhaaData *data) +{ + if (data->results) + { + /* Fade out old view */ + clutter_effect_fade (data->template, + data->results, + 0x00, + (ClutterEffectCompleteFunc)destroy_out_complete, + data); + data->results = NULL; + } + + /* Animate out throbber */ + if (data->transition) + clutter_timeline_stop (data->transition); + data->transition = clutter_effect_rotate (data->template, + data->throbber, + CLUTTER_Y_AXIS, + 90, + 0, + 0, + 0, + CLUTTER_ROTATE_CW, + (ClutterEffectCompleteFunc)throbber_out_complete, + data); + + if (model) + { + /* Create and fade in new view */ + ClutterActor *view; + + view = yh_youtube_browser_new (model, data->youtube); + data->results = clutter_group_new (); + clutter_actor_show (data->results); + clutter_actor_show (view); + clutter_container_add_actor (CLUTTER_CONTAINER (data->results), view); + clutter_container_add_actor ( + CLUTTER_CONTAINER (clutter_stage_get_default ()), + data->results); + + clutter_actor_set_position (data->results, BORDER, BORDER); + clutter_actor_set_size (view, + CLUTTER_STAGE_WIDTH() - (BORDER*2), + clutter_actor_get_y (data->button) - (BORDER*2)); + + clutter_actor_set_opacity (data->results, 0x00); + clutter_effect_fade (data->template, + data->results, + 0xFF, + NULL, + NULL); + + /* Connected to related-videos button click */ + g_signal_connect (view, "related", + G_CALLBACK (related_cb), data); + } + else + { + /* TODO: Fade in 'No results' indicator */ + g_debug ("0 results"); + } +} + +static void +throbber_in_complete (ClutterActor *actor, YouhaaData *data) +{ + data->transition = NULL; +} + +static void +button_out_complete (ClutterActor *actor, YouhaaData *data) +{ + clutter_actor_hide (data->button); + clutter_actor_show (data->throbber); + + clutter_timeline_start (data->throbber_timeline); + + data->transition = clutter_effect_rotate (data->template, + data->throbber, + CLUTTER_Y_AXIS, + 0, + 0, + 0, + 0, + CLUTTER_ROTATE_CCW, + (ClutterEffectCompleteFunc)throbber_in_complete, + data); +} + +static void +animate_search (YouhaaData *data) +{ + static gboolean first_time = TRUE; + + if (first_time) + { + /* Fade out and destroy logo */ + clutter_effect_fade (data->template, + data->logo, + 0x00, + (ClutterEffectCompleteFunc)destroy_out_complete, + data); + first_time = FALSE; + } + + /* Animate the throbber in */ + if (data->transition) + clutter_timeline_stop (data->transition); + data->transition = clutter_effect_rotate (data->template, + data->button, + CLUTTER_Y_AXIS, + 90, + clutter_actor_get_width (data->button)/2, + 0, + 0, + CLUTTER_ROTATE_CW, + (ClutterEffectCompleteFunc)button_out_complete, + data); +} + +static gboolean +button_pressed_cb (ClutterActor *button, ClutterEvent *event, YouhaaData *data) +{ + if (data->query_changed) + { + yh_youtube_query (data->youtube, + clutter_entry_get_text (CLUTTER_ENTRY (data->entry))); + animate_search (data); + } + + return TRUE; +} + +static void +related_cb (YHYoutubeBrowser *browser, ClutterModelIter *iter, YouhaaData *data) +{ + gchar *url; + + clutter_model_iter_get (iter, YH_YOUTUBE_COL_RELATED, &url, -1); + if (url) + { + yh_youtube_query_manual (data->youtube, url); + g_free (url); + animate_search (data); + } +} + +static gboolean +stage_key_press_event_cb (ClutterActor *actor, + ClutterKeyEvent *event, + YouhaaData *data) +{ + data->query_changed = TRUE; + clutter_entry_handle_key_event (CLUTTER_ENTRY (data->entry), event); + + return TRUE; +} + +int +main (int argc, char **argv) +{ + YouhaaData data; + ClutterAlpha *alpha; + ClutterBehaviour *behaviour; + ClutterActor *stage, *button, *box, *label, *box2, *label2; + + clutter_init (&argc, &argv); + clutter_gst_init (&argc, &argv); + + /* Setup stage */ + stage = clutter_stage_get_default (); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + clutter_actor_set_size (stage, 800, 600); + + /* Initialise data */ + data.query_changed = FALSE; + data.results = NULL; + data.transition = NULL; + data.youtube = yh_youtube_get_default (); + g_signal_connect (data.youtube, + "model", + G_CALLBACK (model_cb), + &data); + data.template = clutter_effect_template_new ( + clutter_timeline_new_for_duration (250), + CLUTTER_ALPHA_RAMP_INC); + + /* Create actors */ + + /* Logo */ + data.logo = clutter_group_new (); + box = clutter_rectangle_new_with_color (&white); + label = clutter_label_new_full ("Sans 48", "You", &black); + box2 = clutter_rectangle_new_with_color (&red); + label2 = clutter_label_new_full ("Sans 48", "Tube", &white); + clutter_container_add (CLUTTER_CONTAINER (data.logo), + box, label, box2, label2, NULL); + clutter_actor_set_size (box, + clutter_actor_get_width (label2) + BORDER, + clutter_actor_get_height (label2) + BORDER/2); + clutter_actor_set_size (box2, + clutter_actor_get_width (box), + clutter_actor_get_height (box)); + clutter_actor_set_y (box2, clutter_actor_get_height (box)); + clutter_actor_set_anchor_point_from_gravity (label, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_anchor_point_from_gravity (label2, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (label, + clutter_actor_get_width (box)/2, + clutter_actor_get_height (box)/2); + clutter_actor_set_position (label2, + clutter_actor_get_width (box)/2, + (clutter_actor_get_height (box)*3)/2); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), data.logo); + + /* Search box + button */ + box = clutter_rectangle_new_with_color (&entry_color); + clutter_rectangle_set_border_width (CLUTTER_RECTANGLE (box), FRAME); + clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (box), &frame_color); + + data.entry = clutter_entry_new_full (font, "", &text_color); + + data.button = clutter_group_new (); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), + box); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), + data.entry); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), data.button); + + clutter_actor_set_height (box, + clutter_actor_get_height (data.entry) + (BORDER/2)); + clutter_actor_set_width (box, CLUTTER_STAGE_WIDTH() - (BORDER*2) - + clutter_actor_get_height (box)); + clutter_actor_set_position (box, BORDER, CLUTTER_STAGE_HEIGHT() - BORDER - + clutter_actor_get_height (box)); + + clutter_actor_set_width (data.entry, + clutter_actor_get_width (box) - (BORDER/2)); + clutter_actor_set_position (data.entry, 30, CLUTTER_STAGE_HEIGHT () - + clutter_actor_get_height (data.entry) - + BORDER + FRAME); + + button = clutter_rectangle_new_with_color (&bg_color); + clutter_rectangle_set_border_width (CLUTTER_RECTANGLE (button), FRAME); + clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (button), &frame_color); + label = clutter_label_new_full (font, "Go!", &entry_color); + clutter_actor_set_size (button, clutter_actor_get_height (box), + clutter_actor_get_height (box)); + clutter_container_add (CLUTTER_CONTAINER (data.button), button, label, NULL); + clutter_actor_set_anchor_point_from_gravity (label, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (label, + clutter_actor_get_width (button)/2, + clutter_actor_get_height (button)/2); + + clutter_actor_set_position (data.button, CLUTTER_STAGE_WIDTH() - BORDER - + clutter_actor_get_width (data.button), + CLUTTER_STAGE_HEIGHT() - BORDER - + clutter_actor_get_height (data.button)); + + /* Set position of logo */ + clutter_actor_set_anchor_point_from_gravity (data.logo, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (data.logo, + CLUTTER_STAGE_WIDTH () / 2, + clutter_actor_get_y (data.button) / 2); + + /* Throbber */ + data.throbber = clutter_label_new_full ("Sans 22", "+", &frame_color); + clutter_actor_set_position (data.throbber, + clutter_actor_get_x (data.button) + + (clutter_actor_get_width (data.button) - + clutter_actor_get_width (data.throbber))/2, + clutter_actor_get_y (data.button) + + (clutter_actor_get_height (data.button) - + clutter_actor_get_height (data.throbber))/2); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), data.throbber); + clutter_actor_move_anchor_point_from_gravity (data.throbber, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_rotation (data.throbber, + CLUTTER_Y_AXIS, + 90, + 0, + 0, + 0); + + data.throbber_timeline = clutter_timeline_new_for_duration (500); + alpha = clutter_alpha_new_full (data.throbber_timeline, + CLUTTER_ALPHA_RAMP_INC, NULL, NULL); + behaviour = clutter_behaviour_rotate_new (alpha, + CLUTTER_Z_AXIS, + CLUTTER_ROTATE_CW, + 0, + 360); + clutter_timeline_set_loop (data.throbber_timeline, TRUE); + clutter_behaviour_apply (behaviour, data.throbber); + + clutter_actor_show_all (stage); + clutter_actor_show_all (data.button); + clutter_actor_show_all (data.logo); + clutter_actor_hide (data.throbber); + + clutter_actor_set_reactive (data.button, TRUE); + g_signal_connect (data.button, "button-press-event", + G_CALLBACK (button_pressed_cb), &data); + + /* Hook up key events on stage to entry */ + g_signal_connect (stage, "key-press-event", + G_CALLBACK (stage_key_press_event_cb), &data); + + clutter_main (); + + return 0; +} + diff --git a/attic/youhaa/src/yh-theme.c b/attic/youhaa/src/yh-theme.c new file mode 100644 index 0000000..83ad9dc --- /dev/null +++ b/attic/youhaa/src/yh-theme.c @@ -0,0 +1,14 @@ + +#include "yh-theme.h" + +const ClutterColor stage_color = { 0x10, 0x10, 0x10, 0xff }; +const ClutterColor frame_color = { 0xc0, 0xc0, 0xc0, 0xff }; +const ClutterColor bg_color = { 0x80, 0x80, 0x80, 0xff }; +const ClutterColor entry_color = { 0xff, 0xff, 0xff, 0xff }; +const ClutterColor text_color = { 0x00, 0x00, 0x00, 0xff }; +const ClutterColor black = { 0x00, 0x00, 0x00, 0xff }; +const ClutterColor white = { 0xff, 0xff, 0xff, 0xff }; +const ClutterColor red = { 0xff, 0x00, 0x00, 0xff }; +const gchar *font = "Sans 22"; +const gchar *small_font = "Sans 16"; + diff --git a/attic/youhaa/src/yh-theme.h b/attic/youhaa/src/yh-theme.h new file mode 100644 index 0000000..fdd904b --- /dev/null +++ b/attic/youhaa/src/yh-theme.h @@ -0,0 +1,24 @@ + +#ifndef _YH_THEME_H +#define _YH_THEME_H + +#include + +#define BORDER 24 +#define UBORDER CLUTTER_UNITS_FROM_INT(BORDER) +#define FRAME 6 +#define UFRAME CLUTTER_UNITS_FROM_INT(FRAME) + +extern const ClutterColor stage_color; +extern const ClutterColor frame_color; +extern const ClutterColor bg_color; +extern const ClutterColor entry_color; +extern const ClutterColor text_color; +extern const ClutterColor black; +extern const ClutterColor white; +extern const ClutterColor red; +extern const gchar *font; +extern const gchar *small_font; + +#endif + diff --git a/attic/youhaa/src/yh-youtube-browser.c b/attic/youhaa/src/yh-youtube-browser.c new file mode 100644 index 0000000..5d4bc57 --- /dev/null +++ b/attic/youhaa/src/yh-youtube-browser.c @@ -0,0 +1,828 @@ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "yh-youtube-browser.h" +#include "yh-youtube.h" +#include "yh-theme.h" + +#include +#include +#include + +enum +{ + PROP_0, + + PROP_MODEL, + PROP_YOUTUBE, +}; + +struct _YHYoutubeBrowserPrivate { + ClutterModel *model; + YHYoutube *youtube; + ClutterModelIter *iter; + + ClutterActor *group; + + ClutterActor *frame; + ClutterActor *related; + ClutterActor *related_label; + ClutterActor *prev; + ClutterActor *next; + ClutterActor *thumb; + ClutterActor *title; + ClutterActor *author; + ClutterActor *rating; + ClutterActor *description; + + GList *thumb_handles; + GList *thumbs; + GList *current_thumb; + ClutterTimeline *timeline_in; + ClutterTimeline *timeline_out; + guint fade_timeout; + ClutterEffectTemplate *template; + gboolean loading; +}; + +G_DEFINE_TYPE (YHYoutubeBrowser, yh_youtube_browser, CLUTTER_TYPE_ACTOR) + +#define YOUTUBE_BROWSER_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \ + YH_TYPE_YOUTUBE_BROWSER, \ + YHYoutubeBrowserPrivate)) + +enum +{ + RELATED, + + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0, }; + +static void +video_out_complete_cb (ClutterActor *actor, YHYoutubeBrowser *browser) +{ + clutter_actor_destroy (actor); +} + +static gboolean +true_function () +{ + return TRUE; +} + +static gboolean +video_bg_button_press_cb (ClutterActor *actor, + ClutterButtonEvent *event, + YHYoutubeBrowser *browser) +{ + YHYoutubeBrowserPrivate *priv = browser->priv; + + clutter_effect_fade (priv->template, + actor, + 0x00, + (ClutterEffectCompleteFunc)video_out_complete_cb, + browser); + + /* Disconnect handler and just block events until we're faded out */ + g_signal_handlers_disconnect_by_func (actor, + video_bg_button_press_cb, + browser); + g_signal_connect (actor, "button-press-event", + G_CALLBACK (true_function), NULL); + + return TRUE; +} + +static void +video_in_complete_cb (ClutterActor *actor, YHYoutubeBrowser *browser) +{ + g_signal_handlers_disconnect_by_func (actor, + true_function, + browser); + g_signal_connect (actor, "button-press-event", + G_CALLBACK (video_bg_button_press_cb), browser); +} + +static void +video_error_cb (ClutterMedia *media, GError *error) +{ + g_warning ("Error from video: %s", error->message); +} + +static void +video_buffer_notify_cb (ClutterMedia *media, + GParamSpec *pspec, + YHYoutubeBrowser *browser) +{ + if ((clutter_media_get_buffer_percent (media) == 100) && + (!clutter_media_get_playing (media))) + clutter_media_set_playing (media, TRUE); +} + +static void +link_cb (YHYoutube *youtube, const gchar *url, YHYoutubeBrowser *browser) +{ + ClutterUnit width, height; + ClutterActor *group, *rect, *player, *player_bg; + + YHYoutubeBrowserPrivate *priv = browser->priv; + + priv->loading = FALSE; + + clutter_actor_get_sizeu (priv->frame, &width, &height); + + group = clutter_group_new (); + + rect = clutter_rectangle_new_with_color (&stage_color); + clutter_actor_set_opacity (rect, 128); + clutter_actor_set_size (rect, CLUTTER_STAGE_WIDTH(), CLUTTER_STAGE_HEIGHT()); + + player_bg = clutter_rectangle_new_with_color (&frame_color); + clutter_actor_set_sizeu (player_bg, + (width*4)/5 + UFRAME, + (height*4)/5 + UFRAME); + + player = clutter_gst_video_texture_new (); + g_signal_connect (player, "error", G_CALLBACK (video_error_cb), browser); + g_signal_connect (player, "notify::buffer-percent", + G_CALLBACK (video_buffer_notify_cb), browser); + + g_object_set (G_OBJECT (player), + "sync-size", FALSE, + "uri", url, + "playing", FALSE, + NULL); + + clutter_actor_set_sizeu (player, + (width*4)/5, + (height*4)/5); + + clutter_container_add (CLUTTER_CONTAINER (group), + rect, player_bg, player, NULL); + clutter_actor_show_all (group); + + clutter_container_add_actor (CLUTTER_CONTAINER (priv->group), group); + clutter_actor_set_position (group, 0, 0); + + clutter_actor_set_anchor_point_from_gravity (player, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_anchor_point_from_gravity (player_bg, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_positionu (player, width/2, height/2); + clutter_actor_set_positionu (player_bg, width/2, height/2); + + clutter_actor_set_opacity (group, 0x00); + clutter_effect_fade (priv->template, + group, + 0xFF, + (ClutterEffectCompleteFunc)video_in_complete_cb, + browser); + clutter_actor_set_reactive (group, TRUE); + g_signal_connect (group, "button-press-event", + G_CALLBACK (true_function), browser); +} + +static gboolean +thumb_button_press_cb (ClutterActor *actor, + ClutterButtonEvent *event, + YHYoutubeBrowser *browser) +{ + gchar **uris; + + YHYoutubeBrowserPrivate *priv = browser->priv; + + if (priv->loading) + return TRUE; + + clutter_model_iter_get (priv->iter, YH_YOUTUBE_COL_URIS, &uris, -1); + + if (!uris) + return TRUE; + + if (!uris[0]) + { + g_strfreev (uris); + return TRUE; + } + + /* We assume the http link comes first + * (which it does, but should probably check) + */ + yh_youtube_get_http_link (priv->youtube, uris[0]); + + g_strfreev (uris); + priv->loading = TRUE; + + return TRUE; +} + +static void +in_complete_cb (ClutterActor *actor, YHYoutubeBrowser *browser) +{ + YHYoutubeBrowserPrivate *priv = browser->priv; + + priv->timeline_in = NULL; +} + +static void +out_complete_cb (ClutterActor *actor, YHYoutubeBrowser *browser) +{ + YHYoutubeBrowserPrivate *priv = browser->priv; + + priv->timeline_out = NULL; +} + +static gboolean +crossfade_timeout (YHYoutubeBrowser *browser) +{ + YHYoutubeBrowserPrivate *priv = browser->priv; + + if (!priv->current_thumb) + return FALSE; + + if (priv->current_thumb->next || + (priv->current_thumb != priv->thumbs)) + { + ClutterActor *in, *out; + + out = CLUTTER_ACTOR (priv->current_thumb->data); + + priv->current_thumb = priv->current_thumb->next ? + priv->current_thumb->next : priv->thumbs; + + in = CLUTTER_ACTOR (priv->current_thumb->data); + + /* Cross-fade effect */ + priv->timeline_out = clutter_effect_fade (priv->template, + out, + 0x00, + (ClutterEffectCompleteFunc) + out_complete_cb, + browser); + priv->timeline_in = clutter_effect_fade (priv->template, + in, + 0xFF, + (ClutterEffectCompleteFunc) + in_complete_cb, + browser); + } + + return TRUE; +} + +static void +complete_cb (YHYoutube *youtube, void *handle, YHYoutubeBrowser *browser) +{ + GList *l; + YHYoutubeBrowserPrivate *priv = browser->priv; + + if ((l = g_list_find (priv->thumb_handles, handle))) + priv->thumb_handles = g_list_delete_link (priv->thumb_handles, l); +} + +static void +thumbnail_cb (YHYoutube *youtube, GdkPixbuf *pixbuf, YHYoutubeBrowser *browser) +{ + ClutterActor *thumb; + YHYoutubeBrowserPrivate *priv = browser->priv; + + if (!pixbuf) + return; + + thumb = clutter_texture_new_from_pixbuf (pixbuf); + if (!thumb) + return; + + priv->thumbs = g_list_append (priv->thumbs, thumb); + + clutter_container_add_actor (CLUTTER_CONTAINER (priv->group), thumb); + clutter_actor_set_positionu (thumb, + clutter_actor_get_xu (priv->prev), + UBORDER/2); + clutter_actor_set_sizeu (thumb, + clutter_actor_get_widthu (priv->frame)/2 - + (UBORDER*3)/2, + (clutter_actor_get_heightu (priv->frame)*3)/4 - + UBORDER); + clutter_actor_show (thumb); + clutter_actor_set_opacity (thumb, 0x00); + + clutter_actor_set_reactive (thumb, TRUE); + g_signal_connect (thumb, "button-press-event", + G_CALLBACK (thumb_button_press_cb), browser); + + if (!priv->current_thumb) + { + /* Fade in */ + priv->current_thumb = priv->thumbs; + priv->timeline_in = clutter_effect_fade (priv->template, + thumb, + 0xFF, + (ClutterEffectCompleteFunc) + in_complete_cb, + browser); + priv->fade_timeout = g_timeout_add_seconds (5, + (GSourceFunc)crossfade_timeout, + browser); + } +} + +static void +free_thumbs (YHYoutubeBrowser *self) +{ + YHYoutubeBrowserPrivate *priv = self->priv; + + if (priv->fade_timeout) + { + g_source_remove (priv->fade_timeout); + priv->fade_timeout = 0; + } + + if (priv->timeline_in) + { + clutter_timeline_pause (priv->timeline_in); + g_object_unref (priv->timeline_in); + priv->timeline_in = NULL; + } + + if (priv->timeline_out) + { + clutter_timeline_pause (priv->timeline_out); + g_object_unref (priv->timeline_out); + priv->timeline_out = NULL; + } + + while (priv->thumb_handles) + { + yh_youtube_cancel (priv->youtube, priv->thumb_handles->data); + priv->thumb_handles = g_list_delete_link (priv->thumb_handles, + priv->thumb_handles); + } + + while (priv->thumbs) + { + clutter_actor_destroy (CLUTTER_ACTOR (priv->thumbs->data)); + priv->thumbs = g_list_delete_link (priv->thumbs, priv->thumbs); + } + + priv->current_thumb = NULL; +} + +static void +fill_details (YHYoutubeBrowser *self) +{ + gchar *title, *author, *description, **thumbs; + ClutterModelIter *next_iter; + gdouble rating; + guint row; + + YHYoutubeBrowserPrivate *priv = self->priv; + + free_thumbs (self); + if (!priv->iter) + return; + + clutter_model_iter_get (priv->iter, + YH_YOUTUBE_COL_TITLE, &title, + YH_YOUTUBE_COL_AUTHOR, &author, + YH_YOUTUBE_COL_DESCRIPTION, &description, + YH_YOUTUBE_COL_RATING, &rating, + YH_YOUTUBE_COL_THUMBS, &thumbs, + -1); + + clutter_label_set_text (CLUTTER_LABEL (priv->title), title); + clutter_label_set_text (CLUTTER_LABEL (priv->author), author); + clutter_label_set_text (CLUTTER_LABEL (priv->description), description); + + switch ((gint)(rating + 0.5)) + { + case 1 : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "★••••"); + break; + case 2 : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "★★•••"); + break; + case 3 : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "★★★••"); + break; + case 4 : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "★★★★•"); + break; + case 5 : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "★★★★★"); + break; + default : + clutter_label_set_text (CLUTTER_LABEL (priv->rating), "No rating"); + } + + if (clutter_model_iter_is_first (priv->iter)) + { + clutter_actor_set_opacity (priv->prev, 128); + clutter_actor_set_reactive (priv->prev, FALSE); + } + else + { + clutter_actor_set_opacity (priv->prev, 255); + clutter_actor_set_reactive (priv->prev, TRUE); + } + + row = clutter_model_iter_get_row (priv->iter); + next_iter = clutter_model_get_iter_at_row (priv->model, row + 1); + if (!next_iter) + { + clutter_actor_set_opacity (priv->next, 128); + clutter_actor_set_reactive (priv->next, FALSE); + } + else + { + clutter_actor_set_opacity (priv->next, 255); + clutter_actor_set_reactive (priv->next, TRUE); + g_object_unref (next_iter); + } + + if (thumbs) + { + gint i; + for (i = 0; thumbs[i]; i++) + { + priv->thumb_handles = g_list_append (priv->thumb_handles, + yh_youtube_get_thumb (priv->youtube, + thumbs[i])); + } + g_strfreev (thumbs); + } +} + +static void +yh_youtube_browser_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + YHYoutubeBrowser *self = YH_YOUTUBE_BROWSER (object); + + switch (property_id) + { + case PROP_MODEL : + g_value_set_object (value, self->priv->model); + break; + + case PROP_YOUTUBE : + g_value_set_object (value, self->priv->youtube); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +yh_youtube_browser_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + YHYoutubeBrowser *self = YH_YOUTUBE_BROWSER (object); + + switch (property_id) + { + case PROP_MODEL : + self->priv->model = CLUTTER_MODEL (g_value_dup_object (value)); + self->priv->iter = clutter_model_get_first_iter (self->priv->model); + if (self->priv->youtube) + fill_details (self); + break; + + case PROP_YOUTUBE : + self->priv->youtube = YH_YOUTUBE (g_value_dup_object (value)); + g_signal_connect (self->priv->youtube, "complete", + G_CALLBACK (complete_cb), self); + g_signal_connect (self->priv->youtube, "thumbnail", + G_CALLBACK (thumbnail_cb), self); + g_signal_connect (self->priv->youtube, "link", + G_CALLBACK (link_cb), self); + if (self->priv->model) + fill_details (self); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +yh_youtube_browser_dispose (GObject *object) +{ + YHYoutubeBrowser *browser = YH_YOUTUBE_BROWSER (object); + YHYoutubeBrowserPrivate *priv = browser->priv; + + free_thumbs (browser); + + if (priv->iter) + { + g_object_unref (priv->iter); + priv->iter = NULL; + } + + if (priv->model) + { + g_object_unref (priv->model); + priv->model = NULL; + } + + if (priv->template) + { + g_object_unref (priv->template); + priv->template = NULL; + } + + if (priv->group) + { + clutter_actor_unparent (priv->group); + priv->group = NULL; + } + + if (priv->youtube) + { + g_signal_handlers_disconnect_by_func (priv->youtube, + complete_cb, + browser); + g_signal_handlers_disconnect_by_func (priv->youtube, + thumbnail_cb, + browser); + g_signal_handlers_disconnect_by_func (priv->youtube, + link_cb, + browser); + g_object_unref (priv->youtube); + priv->youtube = NULL; + } + + if (G_OBJECT_CLASS (yh_youtube_browser_parent_class)->dispose) + G_OBJECT_CLASS (yh_youtube_browser_parent_class)->dispose (object); +} + +static void +yh_youtube_browser_paint (ClutterActor *actor) +{ + YHYoutubeBrowserPrivate *priv = YH_YOUTUBE_BROWSER (actor)->priv; + + clutter_actor_paint (priv->group); +} + +static void +yh_youtube_browser_pick (ClutterActor *actor, const ClutterColor *color) +{ + yh_youtube_browser_paint (actor); +} + +static void +yh_youtube_browser_request_coords (ClutterActor *actor, ClutterActorBox *box) +{ + ClutterUnit width, height; + + YHYoutubeBrowserPrivate *priv = YH_YOUTUBE_BROWSER (actor)->priv; + + width = box->x2 - box->x1; + height = box->y2 - box->y1; + + clutter_actor_set_sizeu (priv->frame, width, height); + + clutter_actor_set_widthu (priv->title, width/2 - (UBORDER*3)/2); + clutter_actor_set_widthu (priv->author, width/2 - (UBORDER*3)/2); + clutter_actor_set_widthu (priv->rating, width/2 - (UBORDER*3)/2); + clutter_actor_set_widthu (priv->description, + width/2 - (UBORDER*3)/2); + clutter_actor_set_clipu (priv->description, 0, 0, + clutter_actor_get_widthu (priv->description), + height - clutter_actor_get_yu (priv->description) - + UBORDER/2); + + clutter_actor_set_positionu (priv->related, + width/2 + UBORDER/2, + (height*3)/4 - UBORDER/2); + clutter_actor_set_sizeu (priv->related, width/2 - (UBORDER*3)/2, + height/10); + clutter_actor_set_anchor_point_from_gravity (priv->related_label, + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_positionu (priv->related_label, + clutter_actor_get_xu (priv->related) + + clutter_actor_get_widthu (priv->related)/2, + clutter_actor_get_yu (priv->related) + + clutter_actor_get_heightu (priv->related)/2); + + clutter_actor_set_positionu (priv->prev, + width/2 + UBORDER/2, + (height*3)/4 + + clutter_actor_get_heightu (priv->related)); + clutter_actor_set_sizeu (priv->prev, width/4 - UBORDER, height/4 - UBORDER/2 - + clutter_actor_get_heightu (priv->related)); + + clutter_actor_set_positionu (priv->next, + clutter_actor_get_xu (priv->prev) + + clutter_actor_get_widthu (priv->prev) + UBORDER/2, + (height*3)/4 + + clutter_actor_get_heightu (priv->related)); + clutter_actor_set_sizeu (priv->next, width/4 - UBORDER, height/4 - UBORDER/2 - + clutter_actor_get_heightu (priv->related)); + + CLUTTER_ACTOR_CLASS (yh_youtube_browser_parent_class)-> + request_coords (actor, box); +} + +static void +yh_youtube_browser_class_init (YHYoutubeBrowserClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (YHYoutubeBrowserPrivate)); + + object_class->get_property = yh_youtube_browser_get_property; + object_class->set_property = yh_youtube_browser_set_property; + object_class->dispose = yh_youtube_browser_dispose; + + actor_class->paint = yh_youtube_browser_paint; + actor_class->pick = yh_youtube_browser_pick; + actor_class->request_coords = yh_youtube_browser_request_coords; + + g_object_class_install_property (object_class, + PROP_MODEL, + g_param_spec_object ("model", + "Model", + "ClutterModel", + CLUTTER_TYPE_MODEL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_YOUTUBE, + g_param_spec_object ("youtube", + "YHYoutube", + "Youtube data provider", + YH_TYPE_YOUTUBE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + signals[RELATED] = + g_signal_new ("related", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (YHYoutubeBrowserClass, related), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, CLUTTER_TYPE_MODEL_ITER); +} + +static gboolean +prev_pressed_cb (ClutterActor *actor, + ClutterEvent *event, + YHYoutubeBrowser *self) +{ + self->priv->iter = clutter_model_iter_prev (self->priv->iter); + fill_details (self); + return TRUE; +} + +static gboolean +next_pressed_cb (ClutterActor *actor, + ClutterEvent *event, + YHYoutubeBrowser *self) +{ + self->priv->iter = clutter_model_iter_next (self->priv->iter); + fill_details (self); + return TRUE; +} + +static gboolean +related_pressed_cb (ClutterActor *actor, + ClutterEvent *event, + YHYoutubeBrowser *self) +{ + g_signal_emit (self, signals[RELATED], 0, self->priv->iter); + return TRUE; +} + +static void +yh_youtube_browser_init (YHYoutubeBrowser *self) +{ + GdkPixbuf *pixbuf; + + GError *error = NULL; + YHYoutubeBrowserPrivate *priv = self->priv = YOUTUBE_BROWSER_PRIVATE (self); + + priv->group = clutter_group_new (); + clutter_actor_set_parent (priv->group, CLUTTER_ACTOR (self)); + + /* Frame */ + priv->frame = clutter_rectangle_new_with_color (&entry_color); + clutter_rectangle_set_border_width (CLUTTER_RECTANGLE (priv->frame), 6); + clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (priv->frame), + &frame_color); + + /* Related videos button */ + priv->related = clutter_rectangle_new_with_color (&bg_color); + clutter_rectangle_set_border_width (CLUTTER_RECTANGLE (priv->related), FRAME); + clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (priv->related), + &frame_color); + priv->related_label = clutter_label_new_full (font, "Related videos", + &entry_color); + clutter_actor_set_reactive (CLUTTER_ACTOR (priv->related), TRUE); + g_signal_connect (priv->related, "button-press-event", + G_CALLBACK (related_pressed_cb), self); + + /* Previous arrow */ + pixbuf = gdk_pixbuf_new_from_file_at_size (PKGDATADIR "/go-previous.svg", + CLUTTER_STAGE_WIDTH () / 5, + CLUTTER_STAGE_HEIGHT () / 4, + &error); + if (!pixbuf) + { + g_warning ("Error loading pixbuf: %s", error->message); + g_error_free (error); + error = NULL; + } + + priv->prev = clutter_texture_new_from_pixbuf (pixbuf); + g_signal_connect (priv->prev, "button-press-event", + G_CALLBACK (prev_pressed_cb), self); + + /* Next arrow */ + pixbuf = gdk_pixbuf_new_from_file_at_size (PKGDATADIR "/go-next.svg", + CLUTTER_STAGE_WIDTH () / 5, + CLUTTER_STAGE_HEIGHT () / 4, + &error); + if (!pixbuf) + { + g_warning ("Error loading pixbuf: %s", error->message); + g_error_free (error); + } + + priv->next = clutter_texture_new_from_pixbuf (pixbuf); + g_signal_connect (priv->next, "button-press-event", + G_CALLBACK (next_pressed_cb), self); + + /* Title */ + priv->title = clutter_label_new_full (font, "", &text_color); + clutter_label_set_ellipsize (CLUTTER_LABEL (priv->title), + PANGO_ELLIPSIZE_END); + + /* Author */ + priv->author = clutter_label_new_full (small_font, "", &text_color); + clutter_label_set_ellipsize (CLUTTER_LABEL (priv->author), + PANGO_ELLIPSIZE_END); + + /* Rating */ + priv->rating = clutter_label_new_full (small_font, "", &text_color); + clutter_label_set_ellipsize (CLUTTER_LABEL (priv->rating), + PANGO_ELLIPSIZE_END); + + /* Description */ + priv->description = clutter_label_new_full (small_font, "", &text_color); + clutter_label_set_line_wrap (CLUTTER_LABEL (priv->description), TRUE); + + /* Add widgets to group, they'll be sized (mostly) by request-coords */ + clutter_container_add (CLUTTER_CONTAINER (priv->group), + priv->frame, + priv->related, + priv->related_label, + priv->prev, + priv->next, + priv->title, + priv->author, + priv->rating, + priv->description, + NULL); + clutter_actor_set_position (priv->title, BORDER, BORDER/2); + clutter_actor_set_position (priv->author, + BORDER, + clutter_actor_get_y (priv->title) + + clutter_actor_get_height (priv->title) + + BORDER/2); + clutter_actor_set_position (priv->rating, + BORDER, + clutter_actor_get_y (priv->author) + + clutter_actor_get_height (priv->author) + + BORDER/2); + clutter_actor_set_position (priv->description, + BORDER, + clutter_actor_get_y (priv->rating) + + clutter_actor_get_height (priv->rating) + + BORDER/2); + + clutter_actor_show_all (priv->group); + + /* Create template for cycling preview image cross-fades */ + priv->template = clutter_effect_template_new ( + clutter_timeline_new_for_duration (750), + CLUTTER_ALPHA_RAMP_INC); +} + +ClutterActor * +yh_youtube_browser_new (ClutterModel *model, YHYoutube *youtube) +{ + return CLUTTER_ACTOR (g_object_new (YH_TYPE_YOUTUBE_BROWSER, + "model", model, + "youtube", youtube, NULL)); +} + diff --git a/attic/youhaa/src/yh-youtube-browser.h b/attic/youhaa/src/yh-youtube-browser.h new file mode 100644 index 0000000..87b88a3 --- /dev/null +++ b/attic/youhaa/src/yh-youtube-browser.h @@ -0,0 +1,58 @@ + +#ifndef _YH_YOUTUBE_BROWSER_H +#define _YH_YOUTUBE_BROWSER_H + +#include +#include +#include "yh-youtube.h" + +G_BEGIN_DECLS + +#define YH_TYPE_YOUTUBE_BROWSER yh_youtube_browser_get_type() + +#define YH_YOUTUBE_BROWSER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + YH_TYPE_YOUTUBE_BROWSER, YHYoutubeBrowser)) + +#define YH_YOUTUBE_BROWSER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + YH_TYPE_YOUTUBE_BROWSER, YHYoutubeBrowserClass)) + +#define YH_IS_YOUTUBE_BROWSER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + YH_TYPE_YOUTUBE_BROWSER)) + +#define YH_IS_YOUTUBE_BROWSER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + YH_TYPE_YOUTUBE_BROWSER)) + +#define YH_YOUTUBE_BROWSER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + YH_TYPE_YOUTUBE_BROWSER, YHYoutubeBrowserClass)) + +typedef struct _YHYoutubeBrowser YHYoutubeBrowser; +typedef struct _YHYoutubeBrowserClass YHYoutubeBrowserClass; +typedef struct _YHYoutubeBrowserPrivate YHYoutubeBrowserPrivate; + +struct _YHYoutubeBrowser { + ClutterActor parent; + + YHYoutubeBrowserPrivate *priv; +}; + +struct _YHYoutubeBrowserClass { + ClutterActorClass parent_class; + + /* Signals */ + void (* related) (YHYoutubeBrowser *browser, ClutterModelIter *iter); +}; + +GType yh_youtube_browser_get_type (void); + +ClutterActor * +yh_youtube_browser_new (ClutterModel *model, YHYoutube *youtube); + +G_END_DECLS + +#endif /* _YH_YOUTUBE_BROWSER_H */ + diff --git a/attic/youhaa/src/yh-youtube.c b/attic/youhaa/src/yh-youtube.c new file mode 100644 index 0000000..d68d870 --- /dev/null +++ b/attic/youhaa/src/yh-youtube.c @@ -0,0 +1,826 @@ + +#include "yh-youtube.h" + +#include +#include +#include +#include +#include "glibcurl.h" + +typedef enum { + TYPE_QUERY, + TYPE_THUMB, + TYPE_LINK, +} YHYoutubeRequestType; + +typedef struct { + gchar *url; + gchar *data; + gint size; + YHYoutubeRequestType type; +} YHYoutubeRequest; + +enum +{ + COMPLETE, + MODEL, + THUMBNAIL, + LINK, + + LAST_SIGNAL +}; + +#define YOUTUBE_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), YH_TYPE_YOUTUBE, YHYoutubePrivate)) + +struct _YHYoutubePrivate { + JsonParser *parser; +}; + +static guint signals[LAST_SIGNAL] = { 0, }; + +G_DEFINE_TYPE (YHYoutube, yh_youtube, G_TYPE_OBJECT) + +static void yh_youtube_curl_close (void *userp); +static void yh_youtube_get_http_link_cb (YHYoutubeRequest *request, + CURL *handle); + +static void +yh_youtube_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +yh_youtube_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +yh_youtube_dispose (GObject *object) +{ + YHYoutubePrivate *priv = YOUTUBE_PRIVATE (object); + + if (priv->parser) + { + g_object_unref (priv->parser); + priv->parser = NULL; + } + + if (G_OBJECT_CLASS (yh_youtube_parent_class)->dispose) + G_OBJECT_CLASS (yh_youtube_parent_class)->dispose (object); +} + +static void +yh_youtube_finalize (GObject *object) + +{ + G_OBJECT_CLASS (yh_youtube_parent_class)->finalize (object); +} + +static void +yh_youtube_class_init (YHYoutubeClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (YHYoutubePrivate)); + + object_class->get_property = yh_youtube_get_property; + object_class->set_property = yh_youtube_set_property; + object_class->dispose = yh_youtube_dispose; + object_class->finalize = yh_youtube_finalize; + + signals[COMPLETE] = + g_signal_new ("complete", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (YHYoutubeClass, complete), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); + + signals[MODEL] = + g_signal_new ("model", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (YHYoutubeClass, model), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, G_TYPE_OBJECT); + + signals[THUMBNAIL] = + g_signal_new ("thumbnail", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (YHYoutubeClass, thumbnail), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, G_TYPE_OBJECT); + + signals[LINK] = + g_signal_new ("link", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (YHYoutubeClass, link), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); +} + +static void +yh_youtube_init (YHYoutube *self) +{ + static gboolean first_call = TRUE; + + YHYoutubePrivate *priv = self->priv = YOUTUBE_PRIVATE (self); + + if (first_call) + { + glibcurl_init (); + glibcurl_set_callback (yh_youtube_curl_close, self); + + first_call = FALSE; + } + else + { + g_warning ("This class is a singleton, it can only be created once"); + return; + } + + priv->parser = json_parser_new (); + +} + +static ClutterModel * +yh_youtube_create_model (YHYoutube *youtube) +{ + gint i; + JsonNode *node; + JsonArray *array; + JsonObject *object; + ClutterModel *model; + + if (!(node = json_parser_get_root (youtube->priv->parser))) + { + g_warning ("Error retrieving root node"); + return NULL; + } + + if (!(object = json_node_get_object (node))) + { + g_warning ("Error retrieving object from root node"); + return NULL; + } + + if (!(node = json_object_get_member (object, "feed"))) + { + g_warning ("Error retrieving 'feed' member"); + return NULL; + } + + if (!(object = json_node_get_object (node))) + { + g_warning ("Error retreiving 'feed' as an object"); + return NULL; + } + + if (!(node = json_object_get_member (object, "entry"))) + { + /* No error message, no entry means zero results */ + return NULL; + } + + if (!(array = json_node_get_array (node))) + { + g_warning ("Error retrieving 'entry' as an array"); + return NULL; + } + + model = clutter_list_model_new (YH_YOUTUBE_COL_LAST, + G_TYPE_STRING, "Title", + G_TYPE_STRING, "Author", + G_TYPE_STRING, "Description", + G_TYPE_DOUBLE, "Rating", + G_TYPE_STRV, "Thumbnails", + G_TYPE_STRV, "MIME types", + G_TYPE_STRV, "URIs", + G_TYPE_STRING, "Related videos"); + + for (i = 0; i < json_array_get_length (array); i++) + { + ClutterModelIter *iter; + JsonNode *prop_node; + JsonArray *prop_array; + JsonObject *prop_object; + + if (!(node = json_array_get_element (array, i))) + continue; + + if (!(object = json_node_get_object (node))) + continue; + + clutter_model_insert (model, -1, + YH_YOUTUBE_COL_TITLE, NULL, + YH_YOUTUBE_COL_AUTHOR, NULL, + YH_YOUTUBE_COL_DESCRIPTION, NULL, + YH_YOUTUBE_COL_RATING, 0.0, + YH_YOUTUBE_COL_THUMBS, NULL, + YH_YOUTUBE_COL_MIMES, NULL, + YH_YOUTUBE_COL_URIS, NULL, + YH_YOUTUBE_COL_RELATED, NULL, + -1); + iter = clutter_model_get_last_iter (model); + + /* The 'JSON' that GData returns is really horrible :( */ + + /* Title */ + if ((prop_node = json_object_get_member (object, "title"))) + if ((prop_object = json_node_get_object (prop_node))) + if ((prop_node = json_object_get_member (prop_object, "$t"))) + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_TITLE, + json_node_get_string (prop_node), + -1); + + /* Author */ + if ((prop_node = json_object_get_member (object, "author"))) + if ((prop_array = json_node_get_array (prop_node))) + if ((prop_node = json_array_get_element (prop_array, 0))) + if ((prop_object = json_node_get_object (prop_node))) + if ((prop_node = json_object_get_member (prop_object, "name"))) + if ((prop_object = json_node_get_object (prop_node))) + if ((prop_node = json_object_get_member (prop_object, "$t"))) + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_AUTHOR, + json_node_get_string (prop_node), + -1); + + /* Description */ + if ((prop_node = json_object_get_member (object, "content"))) + if ((prop_object = json_node_get_object (prop_node))) + if ((prop_node = json_object_get_member (prop_object, "$t"))) + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_DESCRIPTION, + json_node_get_string (prop_node), + -1); + + /* Rating */ + if ((prop_node = json_object_get_member (object, "gd$rating"))) + if ((prop_object = json_node_get_object (prop_node))) + if ((prop_node = json_object_get_member (prop_object, "average"))) + { + /* FIXME: This is probably insecure? */ + gdouble rating = atof (json_node_get_string (prop_node)); + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_RATING, + rating, -1); + } + + /* Related content URL */ + if ((prop_node = json_object_get_member (object, "link"))) + if ((prop_array = json_node_get_array (prop_node))) + { + JsonObject *link_object; + JsonNode *link_node; + gint j; + + for (j = 0; j < json_array_get_length (prop_array); j++) + { + const gchar *rel, *url; + gchar *jurl; + + if (!(prop_node = json_array_get_element (prop_array, j))) + continue; + + if (!(link_object = json_node_get_object (prop_node))) + continue; + + if (!(link_node = json_object_get_member (link_object, "rel"))) + continue; + + if (!(rel = json_node_get_string (link_node))) + continue; + + if (strcmp (rel, + "http://gdata.youtube.com/schemas/2007#video.related") + != 0) + continue; + + if (!(link_node = json_object_get_member (link_object, "href"))) + continue; + + if (!(url = json_node_get_string (link_node))) + continue; + + /* Note: should probably check that the URL doesn't already have + * some parameters, and if it does, use "&alt=json" instead, + * but we know that it doesn't (for now). + */ + jurl = g_strconcat (url, "?alt=json", NULL); + clutter_model_iter_set (iter, YH_YOUTUBE_COL_RELATED, jurl, -1); + g_free (jurl); + + break; + } + } + + if ((prop_node = json_object_get_member (object, "media$group"))) + if ((prop_object = json_node_get_object (prop_node))) + { + JsonObject *media_object; + JsonNode *media_node; + gint j; + + /* Formats/URIs */ + if ((prop_node = json_object_get_member (prop_object, + "media$content"))) + if ((prop_array = json_node_get_array (prop_node))) + { + GList *uris = NULL; + GList *formats = NULL; + + for (j = 0; j < json_array_get_length (prop_array); j++) + { + const gchar *format, *uri; + + if (!(prop_node = json_array_get_element (prop_array, j))) + continue; + + if (!(media_object = json_node_get_object (prop_node))) + continue; + + if (!(media_node = json_object_get_member (media_object, + "type"))) + continue; + + if (!(format = json_node_get_string (media_node))) + continue; + + if (!(media_node = json_object_get_member (media_object, + "url"))) + continue; + + if (!(uri = json_node_get_string (media_node))) + continue; + + uris = g_list_append (uris, (gpointer)uri); + formats = g_list_append (formats, (gpointer)format); + } + + if (uris) + { + GList *l; + gchar **string_list; + + string_list = g_new0 (gchar *, g_list_length (uris) + 1); + + /* Set URI list */ + for (j = 0, l = uris; l; l = l->next, j++) + { + string_list[j] = (gchar *)l->data; + } + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_URIS, + string_list, + -1); + + /* Set format (MIME type) list */ + for (j = 0, l = formats; l; l = l->next, j++) + { + string_list[j] = (gchar *)l->data; + } + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_MIMES, + string_list, + -1); + + g_free (string_list); + g_list_free (uris); + g_list_free (formats); + } + } + + /* Thumbnails */ + if ((prop_node = json_object_get_member (prop_object, + "media$thumbnail"))) + if ((prop_array = json_node_get_array (prop_node))) + { + GList *urls = NULL; + + for (j = 0; j < json_array_get_length (prop_array); j++) + { + const gchar *url; + + if (!(prop_node = json_array_get_element (prop_array, j))) + continue; + + if (!(media_object = json_node_get_object (prop_node))) + continue; + + if (!(media_node = json_object_get_member (media_object, + "url"))) + continue; + + if (!(url = json_node_get_string (media_node))) + continue; + + urls = g_list_append (urls, (gpointer)url); + } + + if (urls) + { + GList *l; + gchar **string_list; + + string_list = g_new0 (gchar *, g_list_length (urls) + 1); + + /* Set URL list */ + for (j = 0, l = urls; l; l = l->next, j++) + { + string_list[j] = (gchar *)l->data; + } + clutter_model_iter_set (iter, + YH_YOUTUBE_COL_THUMBS, + string_list, + -1); + + g_free (string_list); + g_list_free (urls); + } + } + } + + g_object_unref (iter); + } + + return model; +} + +static void +yh_youtube_curl_close (void *userp) +{ + CURLMsg *msg; + int in_queue; + CURL *handle; + YHYoutubeRequest *request; + + YHYoutube *youtube = YH_YOUTUBE (userp); + YHYoutubePrivate *priv = youtube->priv; + + while ((msg = curl_multi_info_read (glibcurl_handle (), &in_queue))) { + gboolean remove_handle = TRUE; + GError *error = NULL; + + if (msg->msg != CURLMSG_DONE) + continue; + + handle = msg->easy_handle; + + if (curl_easy_getinfo (msg->easy_handle, + CURLINFO_PRIVATE, + &request) == CURLE_OK) + { + switch (request->type) + { + case TYPE_QUERY : { + ClutterModel *model = NULL; + + /* Parse the data into the model */ + if (request->data) + { + /*g_debug ("JSON:\n%.*s", request->size, request->data);*/ + if (!json_parser_load_from_data (priv->parser, + request->data, + request->size, + &error)) + { + g_warning ("Error parsing JSON: %s", error->message); + g_error_free (error); + } + else + model = yh_youtube_create_model (youtube); + } + + g_signal_emit (youtube, signals[MODEL], 0, model); + if (model) + g_object_unref (model); + } + break; + case TYPE_THUMB : { + GdkPixbuf *pixbuf = NULL; + + /* Create a GdkPixbuf from the data */ + if (request->data) + { + GdkPixbufLoader *loader; + + loader = gdk_pixbuf_loader_new (); + if (!gdk_pixbuf_loader_write (loader, + (const guchar *)request->data, + request->size, + &error)) + { + g_warning ("Error decoding image: %s", error->message); + g_error_free (error); + } + else + { + if (!gdk_pixbuf_loader_close (loader, &error)) + { + g_warning ("Error closing pixbuf loader: %s", + error->message); + g_error_free (error); + } + else + pixbuf = g_object_ref ( + gdk_pixbuf_loader_get_pixbuf (loader)); + } + g_object_unref (loader); + } + + g_signal_emit (youtube, signals[THUMBNAIL], 0, pixbuf); + if (pixbuf) + g_object_unref (pixbuf); + } + break; + case TYPE_LINK : { + long error_code; + + /* If we can't get the error code for whatever reason, just + * assume success. + */ + if (curl_easy_getinfo (handle, + CURLINFO_RESPONSE_CODE, + &error_code) != CURLE_OK) + error_code = 200; + + /* Recursively solve redirects */ + if ((error_code >= 300) && (error_code < 400)) + { + yh_youtube_get_http_link_cb (request, handle); + glibcurl_remove (handle); + glibcurl_add (handle); + remove_handle = FALSE; + } + else + g_signal_emit (youtube, signals[LINK], 0, request->url); + } + break; + } + + if (remove_handle) + { + g_free (request->data); + g_free (request->url); + g_slice_free (YHYoutubeRequest, request); + } + } + else + g_warning ("Error retrieving user data, something has gone wrong..."); + + if (remove_handle) + { + g_signal_emit (youtube, signals[COMPLETE], 0, handle); + glibcurl_remove (handle); + curl_easy_cleanup (handle); + } + } +} + +static size_t +yh_youtube_curl_read (void *buffer, size_t size, size_t nmemb, void *userp) +{ + YHYoutubeRequest *request = (YHYoutubeRequest *) userp; + gint real_size = (gint)(size * nmemb); + + if (!request->data) { + request->data = g_memdup (buffer, real_size); + request->size = real_size; + } + else + { + request->data = g_realloc (request->data, request->size + real_size); + g_memmove (request->data + request->size, buffer, real_size); + request->size += real_size; + } + + return (size_t)real_size; +} + +YHYoutube * +yh_youtube_get_default () +{ + static YHYoutube *youtube = NULL; + + if (!youtube) + { + youtube = YH_YOUTUBE (g_object_new (YH_TYPE_YOUTUBE, NULL)); + } + + return youtube; +} + +void * +yh_youtube_query (YHYoutube *youtube, const gchar *search_string) +{ + CURL *handle; + YHYoutubeRequest *request; + + /* Make request to Youtube GData url */ + request = g_slice_new0 (YHYoutubeRequest); + search_string = curl_escape (search_string, 0); + request->type = TYPE_QUERY; + request->url = + g_strconcat ("http://gdata.youtube.com/feeds/api/videos?alt=json&vq=", + search_string, NULL); + curl_free ((char *)search_string); + + handle = curl_easy_init (); + curl_easy_setopt (handle, CURLOPT_URL, request->url); + curl_easy_setopt (handle, CURLOPT_WRITEFUNCTION, yh_youtube_curl_read); + curl_easy_setopt (handle, CURLOPT_WRITEDATA, request); + curl_easy_setopt (handle, CURLOPT_PRIVATE, request); + + glibcurl_add (handle); + + return handle; +} + +void * +yh_youtube_query_manual (YHYoutube *youtube, const gchar *url) +{ + CURL *handle; + YHYoutubeRequest *request; + + /* Make request to Youtube GData url */ + request = g_slice_new0 (YHYoutubeRequest); + request->type = TYPE_QUERY; + request->url = g_strdup (url); + + /* Don't free url, CURL doesn't make a copy */ + handle = curl_easy_init (); + curl_easy_setopt (handle, CURLOPT_URL, request->url); + curl_easy_setopt (handle, CURLOPT_WRITEFUNCTION, yh_youtube_curl_read); + curl_easy_setopt (handle, CURLOPT_WRITEDATA, request); + curl_easy_setopt (handle, CURLOPT_PRIVATE, request); + + glibcurl_add (handle); + + return handle; +} + +void * +yh_youtube_get_thumb (YHYoutube *youtube, const gchar *url) +{ + CURL *handle; + YHYoutubeRequest *request; + + /* Download image */ + request = g_slice_new0 (YHYoutubeRequest); + request->type = TYPE_THUMB; + request->url = g_strdup (url); + + handle = curl_easy_init (); + curl_easy_setopt (handle, CURLOPT_URL, request->url); + curl_easy_setopt (handle, CURLOPT_WRITEFUNCTION, yh_youtube_curl_read); + curl_easy_setopt (handle, CURLOPT_WRITEDATA, request); + curl_easy_setopt (handle, CURLOPT_PRIVATE, request); + + glibcurl_add (handle); + + return handle; +} + +void +yh_youtube_cancel (YHYoutube *youtube, void *handle) +{ + YHYoutubeRequest *request; + + CURL *curl_handle = (CURL *)handle; + + if (curl_easy_getinfo (curl_handle, + CURLINFO_PRIVATE, + &request) == CURLE_OK) + { + g_free (request->data); + g_free (request->url); + g_slice_free (YHYoutubeRequest, request); + } + + glibcurl_remove(curl_handle); + curl_easy_cleanup (curl_handle); +} + +static size_t +yh_youtube_header_cb (void *buffer, size_t size, size_t nmemb, void *userp) +{ + YHYoutubeRequest *request = (YHYoutubeRequest *)userp; + gint real_size = (gint)(size *nmemb); + gchar *header = g_strstrip (g_strndup (buffer, real_size)); + +#define YOUTUBE_REGEX "video_id=([^&]*)&.*t=([^&]*)" + + if (header && strncmp (header, "Location: ", 10) == 0) + { + const gchar *url = header + 10; + + g_free (request->url); + + /* Hacky URL mangling */ + if (strstr (url, "/swf/l.swf?video_id=")) + { + /* NOTE: This URL/method subject to change. FREQUENTLY. */ + regex_t regex; + regmatch_t pmatch[3]; + + if ((regcomp (®ex, YOUTUBE_REGEX, REG_EXTENDED) == 0) && + (regexec (®ex, url, 3, pmatch, 0) == 0)) + { + gchar *video, *t; + video = g_strndup (url + pmatch[1].rm_so, + pmatch[1].rm_eo - pmatch[1].rm_so); + t = g_strndup (url + pmatch[2].rm_so, + pmatch[2].rm_eo - pmatch[2].rm_so); + request->url = + g_strdup_printf ( + "http://www.youtube.com/get_video?video_id=%s&" + "t=%s", video, t); + } + else + request->url = NULL; + } + else if (url[0] == '/') + { + request->url = g_strconcat ("http://www.youtube.com", url, NULL); + } + else + { + request->url = g_strdup (url); + } + + /* Set the size to -1 (cancels transfer) - + * this is the header we were looking for + */ + real_size = -1; + } + g_free (header); + + return real_size; +} + +static size_t +yh_youtube_minus_one () +{ + return -1; +} + +static void +yh_youtube_get_http_link_cb (YHYoutubeRequest *request, CURL *handle) +{ + curl_easy_setopt (handle, CURLOPT_URL, request->url); + curl_easy_setopt (handle, CURLOPT_WRITEFUNCTION, yh_youtube_minus_one); + curl_easy_setopt (handle, CURLOPT_WRITEDATA, request); + curl_easy_setopt (handle, CURLOPT_PRIVATE, request); + curl_easy_setopt (handle, CURLOPT_HEADERFUNCTION, yh_youtube_header_cb); + curl_easy_setopt (handle, CURLOPT_HEADERDATA, request); +} + +/* This is a nasty function required because YouTube uses HTTP 303's + * to 'redirect' :( (but even then, the location needs mangling) + */ +void * +yh_youtube_get_http_link (YHYoutube *youtube, const gchar *url) +{ + CURL *handle; + YHYoutubeRequest *request; + + /* Download image */ + request = g_slice_new0 (YHYoutubeRequest); + request->type = TYPE_LINK; + request->url = g_strdup (url); + + handle = curl_easy_init (); + yh_youtube_get_http_link_cb (request, handle); + + glibcurl_add (handle); + + return handle; +} + +void +yh_youtube_pause (YHYoutube *youtube, void *handle, gboolean resume) +{ + if (resume) + glibcurl_add ((CURL *)handle); + else + glibcurl_remove ((CURL *)handle); +} diff --git a/attic/youhaa/src/yh-youtube.h b/attic/youhaa/src/yh-youtube.h new file mode 100644 index 0000000..2d55c98 --- /dev/null +++ b/attic/youhaa/src/yh-youtube.h @@ -0,0 +1,81 @@ + +#ifndef _YH_YOUTUBE_H +#define _YH_YOUTUBE_H + +#include +#include + +G_BEGIN_DECLS + +#define YH_TYPE_YOUTUBE yh_youtube_get_type() + +#define YH_YOUTUBE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + YH_TYPE_YOUTUBE, YHYoutube)) + +#define YH_YOUTUBE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + YH_TYPE_YOUTUBE, YHYoutubeClass)) + +#define YH_IS_YOUTUBE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + YH_TYPE_YOUTUBE)) + +#define YH_IS_YOUTUBE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + YH_TYPE_YOUTUBE)) + +#define YH_YOUTUBE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + YH_TYPE_YOUTUBE, YHYoutubeClass)) + +enum { + YH_YOUTUBE_COL_TITLE, + YH_YOUTUBE_COL_AUTHOR, + YH_YOUTUBE_COL_DESCRIPTION, + YH_YOUTUBE_COL_RATING, + YH_YOUTUBE_COL_THUMBS, + YH_YOUTUBE_COL_MIMES, + YH_YOUTUBE_COL_URIS, + YH_YOUTUBE_COL_RELATED, + + YH_YOUTUBE_COL_LAST +}; + +typedef struct _YHYoutube YHYoutube; +typedef struct _YHYoutubeClass YHYoutubeClass; +typedef struct _YHYoutubePrivate YHYoutubePrivate; + +struct _YHYoutube { + GObject parent; + + YHYoutubePrivate *priv; +}; + +struct _YHYoutubeClass { + GObjectClass parent_class; + + /* Signals */ + void (* complete) (YHYoutube *youtube, void *handle); + void (* model) (YHYoutube *youtube, ClutterModel *model); + void (* thumbnail) (YHYoutube *youtube, GdkPixbuf *pixbuf); + void (* link) (YHYoutube *youtube, const gchar *url); +}; + +GType yh_youtube_get_type (void); + +YHYoutube * +yh_youtube_get_default (); + +void *yh_youtube_query (YHYoutube *youtube, const gchar *search_string); +void *yh_youtube_query_manual (YHYoutube *youtube, const gchar *url); +void *yh_youtube_get_thumb (YHYoutube *youtube, const gchar *url); +void yh_youtube_cancel (YHYoutube *youtube, void *handle); +void *yh_youtube_get_http_link (YHYoutube *youtube, const gchar *url); +void yh_youtube_pause (YHYoutube *youtube, void *handle, + gboolean resume); + +G_END_DECLS + +#endif /* _YH_YOUTUBE_H */ + diff --git a/circles/Makefile b/circles/Makefile new file mode 100644 index 0000000..a63d0f3 --- /dev/null +++ b/circles/Makefile @@ -0,0 +1,13 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: circles + +circles: circles.o + $(CC) -g -Wall $(CFLAGS) -o $@ circles.o -lm $(LIBS) + +clean: + rm -fr *.o circles diff --git a/circles/circles.c b/circles/circles.c new file mode 100644 index 0000000..eecd572 --- /dev/null +++ b/circles/circles.c @@ -0,0 +1,109 @@ +#define CLUTTER_DISABLE_DEPRECATION_WARNINGS +#include +#include + +#define N_CIRCLES 3 /* number of circles */ +#define CIRCLE_W 128 /* width */ +#define CIRCLE_G 32 /* gap */ +#define CIRCLE_S 3 /* segments */ +#define SCREEN_W 640 +#define SCREEN_H 480 + +#ifndef CLUTTER_ANGLE_FROM_RAD +#define CLUTTER_ANGLE_FROM_RAD(x) ((x) * 180.0 / G_PI) +#endif + +static void +circle_paint_cb (ClutterActor *actor) +{ + const CoglColor fill_color = { 0xff, 0xff, 0xff, 0x80 }; + gint i; + gdouble angle; + guint radius = clutter_actor_get_width (actor) / 2; + + cogl_set_source_color (&fill_color); + + angle = *((gdouble *)g_object_get_data (G_OBJECT (actor), "angle")); + for (i = 0; i < CIRCLE_S; i++, angle += (2.0 * G_PI) / (gdouble) CIRCLE_S) + { + gdouble angle2 = angle + ((2.0 * G_PI) / (gdouble)CIRCLE_S) / 2.0; + cogl_path_move_to (((radius - CIRCLE_W) * cos (angle)) + radius, + ((radius - CIRCLE_W) * sin (angle)) + radius); + cogl_path_arc (radius, radius, radius, radius, + CLUTTER_ANGLE_FROM_RAD (angle), + CLUTTER_ANGLE_FROM_RAD (angle2)); + cogl_path_line_to (((radius - CIRCLE_W) * cos (angle2)) + radius, + ((radius - CIRCLE_W) * sin (angle2)) + radius); + cogl_path_arc (radius, radius, radius - CIRCLE_W, radius - CIRCLE_W, + CLUTTER_ANGLE_FROM_RAD (angle2), + CLUTTER_ANGLE_FROM_RAD (angle)); + cogl_path_close (); + cogl_path_fill (); + } +} + +int +main (int argc, char **argv) +{ + const ClutterColor transp = { 0x00, 0x00, 0x00, 0x00 }; + const ClutterColor bg_color = { 0xe0, 0xf2, 0xfc, 0xff }; + ClutterTimeline *timeline; + ClutterActor *stage; + gint i; + + if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) + return 1; + + stage = clutter_stage_new (); + clutter_stage_set_title (CLUTTER_STAGE (stage), "Circles"); + clutter_stage_set_color (CLUTTER_STAGE (stage), &bg_color); + clutter_actor_set_size (stage, SCREEN_W, SCREEN_H); + g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); + + timeline = clutter_timeline_new (5000); + clutter_timeline_set_loop (timeline, TRUE); + + for (i = 0; i < N_CIRCLES; i++) + { + gint size; + gdouble *angle; + ClutterActor *actor; + ClutterAlpha *alpha; + ClutterBehaviour *behaviour; + + actor = clutter_rectangle_new_with_color (&transp); + + size = (i + 1) * (CIRCLE_W + CIRCLE_G) * 2; + clutter_actor_set_size (actor, size, size); + clutter_actor_set_position (actor, + SCREEN_W - size / 2.0, + SCREEN_H - size / 2.0); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor); + + angle = g_slice_new (gdouble); + *angle = g_random_double_range (0.0, 90.0); + g_object_set_data (G_OBJECT (actor), "angle", angle); + g_signal_connect (actor, "paint", G_CALLBACK (circle_paint_cb), NULL); + + /* Animate */ + alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR); + behaviour = clutter_behaviour_rotate_new (alpha, CLUTTER_Z_AXIS, + (i % 2) ? CLUTTER_ROTATE_CW + : CLUTTER_ROTATE_CCW, + 0.0, 0.0); + clutter_behaviour_rotate_set_center (CLUTTER_BEHAVIOUR_ROTATE (behaviour), + size / 2, + size / 2, + 0); + clutter_behaviour_apply (behaviour, actor); + } + + clutter_actor_show_all (stage); + + clutter_timeline_start (timeline); + + clutter_main (); + + return 0; +} diff --git a/courasel/Makefile b/courasel/Makefile new file mode 100644 index 0000000..233dc58 --- /dev/null +++ b/courasel/Makefile @@ -0,0 +1,14 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` +CFLAGS="-lm" + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: courasel + +courasel: courasel.o + $(CC) -g -Wall $(CFLAGS) -o $@ courasel.o $(LIBS) + +clean: + rm -fr *.o courasel diff --git a/courasel/accessories-text-editor.png b/courasel/accessories-text-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..02361a99e51a8c105fbdc52fc7b603902b1068db GIT binary patch literal 3953 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 literal 0 HcmV?d00001 diff --git a/courasel/applications-games.png b/courasel/applications-games.png new file mode 100644 index 0000000000000000000000000000000000000000..67a1a4c24d61e8dc08aa6ab634bbe6fa706f86d2 GIT binary patch literal 5529 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 +#include + +#define CSW() CLUTTER_STAGE_WIDTH() +#define CSH() CLUTTER_STAGE_HEIGHT() + +#define N_ITEMS 8 +#define STEP (360.0/N_ITEMS) +#define CLAMP_ANG(x) (((x) > 360.0) ? ((x) - 360.0) : (x)) + +struct { gchar *img; gchar *title; } ItemDetails[] = +{ + { "accessories-text-editor.png", "Text Editor" }, + { "applications-games.png", "Game" }, + { "dates.png", "Dates" }, + { "im-client.png", "Chat" }, + { "preferences-desktop-theme.png", "Preferences" }, + { "tasks.png", "Todo List" }, + { "utilities-terminal.png", "Terminal" }, + { "web-browser.png", "Browser"}, +}; + +typedef struct Item +{ + ClutterActor *actor; + ClutterBehaviour *ellipse_behave, *opacity_behave, *scale_behave; +} +Item; + +typedef struct App +{ + ClutterTimeline *timeline; + ClutterAlpha *alpha_sine_inc, *alpha_ramp; + GSList *items; + Item *active; + gdouble off; + int selected_index; + ClutterActor *label; +} +App; + +void +introduce_items (App *app) +{ + gint i; + GSList *node; + gdouble ang_start, ang_end; + + node = app->items; + + for (i=0; idata; + + ang_start = -90.0; + ang_end = (STEP * i); + + clutter_behaviour_ellipse_set_angle_start + (CLUTTER_BEHAVIOUR_ELLIPSE(item->ellipse_behave), ang_start); + + clutter_behaviour_ellipse_set_angle_end + (CLUTTER_BEHAVIOUR_ELLIPSE(item->ellipse_behave), ang_end); + + if (i == app->selected_index) + { + g_object_set (item->opacity_behave, + "opacity-start", 0x66, + "opacity-end", 0xff, + NULL); + g_object_set (item->scale_behave, + "x-scale-start", 0.6, + "y-scale-start", 0.6, + "x-scale-end", 1.0, + "y-scale-end", 1.0, + NULL); + } + node = node->next; + } + + clutter_timeline_start (app->timeline); +} + + +void +rotate_items (App *app, int step) +{ + gint i, from_index; + GSList *node; + gdouble ang = 0.0, ang_start, ang_end; + + from_index = app->selected_index; + + app->selected_index += (-1 * step); + if (app->selected_index < 0) app->selected_index = 7; + if (app->selected_index > 7) app->selected_index = 0; + + ang = app->off; + + node = app->items; + + for (i=0; idata; + + ang_start = ang; + ang_end = ang + (STEP * step); + + clutter_behaviour_ellipse_set_direction + (CLUTTER_BEHAVIOUR_ELLIPSE(item->ellipse_behave), + step > 0 ? CLUTTER_ROTATE_CW : CLUTTER_ROTATE_CCW); + + clutter_behaviour_ellipse_set_angle_start + (CLUTTER_BEHAVIOUR_ELLIPSE(item->ellipse_behave), ang_start); + + clutter_behaviour_ellipse_set_angle_end + (CLUTTER_BEHAVIOUR_ELLIPSE(item->ellipse_behave), ang_end); + + if (i == from_index) + { + g_object_set (item->opacity_behave, + "opacity-start", 0xff, + "opacity-end", 0x66, + NULL); + + g_object_set (item->scale_behave, + "x-scale-start", 1.0, + "y-scale-start", 1.0, + "x-scale-end", 0.6, + "y-scale-end", 0.6, + NULL); + } + else if (i == app->selected_index) + { + g_object_set (item->opacity_behave, + "opacity-start", 0x66, + "opacity-end", 0xff, + NULL); + g_object_set (item->scale_behave, + "x-scale-start", 0.6, + "y-scale-start", 0.6, + "x-scale-end", 1.0, + "y-scale-end", 1.0, + NULL); + } + else + { + g_object_set (item->opacity_behave, + "opacity-start", 0x66, + "opacity-end", 0x66, + NULL); + g_object_set (item->scale_behave, + "x-scale-start", 0.6, + "y-scale-start", 0.6, + "x-scale-end", 0.6, + "y-scale-end", 0.6, + NULL); + } + + ang += STEP; + node = node->next; + } + + clutter_timeline_start (app->timeline); + + app->off += (STEP * step); + app->off = CLAMP_ANG(app->off); +} + +static gboolean +on_input (ClutterActor *stage, + ClutterEvent *event, + gpointer user_data) +{ + App *app = user_data; + + if (event->type == CLUTTER_KEY_RELEASE) + { + if (clutter_timeline_is_playing(app->timeline)) + return FALSE; + + switch (clutter_event_get_key_symbol (event)) + { + case CLUTTER_Left: + rotate_items (app, -1); + break; + case CLUTTER_Right: + rotate_items (app, 1); + break; + case CLUTTER_Return: + break; + case CLUTTER_q: + clutter_main_quit(); + break; + default: + break; + } + } + + return FALSE; +} + +void +on_timeline_new_frame (ClutterTimeline *timeline, + gint frame_msecs, + App *app) +{ + if (frame_msecs > clutter_timeline_get_duration (timeline)/2) + clutter_text_set_text (CLUTTER_TEXT(app->label), + ItemDetails[app->selected_index].title); +} + +/* An alpha function that goes from 0->1->0 along a sine. */ +gdouble +label_opacity_alpha_func (ClutterAlpha *alpha, + gpointer unused) +{ + ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha); + return sin (clutter_timeline_get_progress (timeline) * M_PI); +} + +int +main (int argc, char *argv[]) +{ + ClutterActor *stage; + ClutterColor stage_color = { 0x34, 0x39, 0x39, 0xff }; + ClutterColor white = { 0x72, 0x9f, 0xcf, 0xff }; + gint i = 0; + Item *item; + App *app; + gdouble ang = 0.0; + ClutterBehaviour *behave; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + clutter_actor_set_size (stage, 800, 600); + + app = g_new0(App, 1); + app->off = 0.0; + app->timeline = clutter_timeline_new (300); + app->alpha_sine_inc + = clutter_alpha_new_full (app->timeline, CLUTTER_EASE_OUT_SINE); + + app->alpha_ramp + = clutter_alpha_new_with_func (app->timeline, label_opacity_alpha_func, + NULL, NULL); + + for (i=0; iactor = clutter_texture_new_from_file (ItemDetails[i].img, NULL); + if (!item->actor) + g_error ("Unable to load '%s'", ItemDetails[i].img); + + clutter_group_add (CLUTTER_GROUP(stage), item->actor); + + item->ellipse_behave + = clutter_behaviour_ellipse_new (app->alpha_sine_inc, + CSW()/4, /* center x */ + CSH() - (CSH()/3), /* center y */ + CSW()/2, /* width */ + CSH() - (CSH()/4), /* height */ + CLUTTER_ROTATE_CW, + ang, + ang + STEP); + item->opacity_behave + = clutter_behaviour_opacity_new (app->alpha_sine_inc, 0x66, 0x66); + + item->scale_behave + = clutter_behaviour_scale_new (app->alpha_sine_inc, + 0.6, 0.6, 0.6, 0.6); + + clutter_behaviour_apply (item->ellipse_behave, item->actor); + clutter_behaviour_apply (item->opacity_behave, item->actor); + clutter_behaviour_apply (item->scale_behave, item->actor); + + app->items = g_slist_append (app->items, item); + + ang += STEP; + } + + app->label = clutter_text_new_full ("Bitstream Vera Sans 60px", "", &white); + clutter_actor_set_position (app->label, CSW()/2 - 30, CSH()/3 - 40); + clutter_group_add (CLUTTER_GROUP(stage), app->label); + + behave = clutter_behaviour_opacity_new (app->alpha_ramp, 0xff, 0); + clutter_behaviour_apply (behave, app->label); + + g_signal_connect (app->timeline, + "new-frame", + G_CALLBACK(on_timeline_new_frame), + app); + + g_signal_connect (stage, + "event", + G_CALLBACK (on_input), + app); + + introduce_items (app); + + clutter_actor_show_all (stage); + + clutter_main(); + + return 0; +} diff --git a/courasel/dates.png b/courasel/dates.png new file mode 100644 index 0000000000000000000000000000000000000000..2824813cfd19e7df412952cc77638843ec7fc6d0 GIT binary patch literal 4656 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

MO>feC}~wdfm*6ZJA0 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 z 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�R|;Sb?m(_aVv=`k;U4&F7s75KeA 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

|pF!;1S(SNaoFLG4#D!vtV z$DhN%PZ1xHpKJN!-%QG@*!J>rjX!Vy!@;NZiTs{*{{F9H(sepM|Nc)De6zbc|Hf?q z|3QVnb$`zK@Ba(|zg)wQ-R6&fJte7hX~{?U=()B42tS4j9GM>VhH@6&z# z^T$Vl9}21CAO6%o{zgf87296^u*RQ1|2!0YTA%1Y@^*jxbxgWW$?xBN{rAs~2ET;( zi2TJ8ev*`@JaKxu#-Hc^G2qksM1J^=j{7V5`*vTS|Hp#gM0`a4I0?UQh?_5>Go7EI z@#pzp06wix*D>ij72nzq$G^W@<9{;v4a7&}uaNKyj?T>g zF^xax7lKdg6ZyR-biDn&eE0buJ4OwEwtoNXRPe*cxIQ9(%?9uv_xKb3cRkGVk6Zu# z)o}33HT=;N{r;h2-TkHQElyXe_$bKvr-4uF6a8Bxe37G?SMm?&ZkqV~188%{|be)oaAU^;2q_zFe1iz@jZBLOudSS=U z|Eg5}191KMX)C`7{5lQ4{O*qXS1b4y`1#4!_CE{!i0AjOy`R5D@98*yrh?A~b~kzd zKO6jnhM(L3enP>wz~}w%9Po2JzkluZA3Uk!{!b|Q>>#)QjR3z?!>`)_{*wy61wOz3 za4z^Q8h-y9D^0sk(fbcE@_X6#I@Rkb58wOzX~Bv3`wu0RtZa82fA6};#U=EUUozN{!Zv>@b9W*^TAIK8>!?EZQNLVa{Pe+kN5sL}OB#Q^GK2R%%>Vt%8JpJ{Rrvh9Y^wVCqqt`LMd&hqf$x6) ze6V}}>wHwwK=N6P|LDp7_!p4hE7$G7EKmOX{ja^FfgOYRH|$4`Kg{#{3uAv!AAkOT z{@(sqj`6?G7PZDq#J@Z%&p(j(BWV2olYJ6G<0-~}nI!(YnA3IM_6FFG(Qd^i3_;`!UQ z`>&TG{zWHKzW4gK|4#n#r;e1@wLwyo{|!4FWcE7mGxi+f-%>~U-t%8x|HjV$qPGzL zUbV(N#J?=t@wcVg;vYl&X*|XJFMQ5F{_vQz_pXb7@&)*BTWidRe_giykH-C=QR13?0t|q?aI&CT;yNuZOYG1{x!UZ^MAzuRm7hS$O_-> z|3LEiUyk_Gc#8R#U(@mY)5YID{ylulXKX&=-_Qy1Pu3&;+tnHi5dTP)<8K|?-7Id) z|51p4?kTkWz4>1uiGL|6ugm`$P5#&IdXPDM;u4ld{F4hQKRfxK`vKy=eXa2(;-AQJ z{Oy?W_>V^XX*|XJpDsE6>0(aT>Ehq?*kR`I$xGO4h<{Tj#J>sg?~_|=yp8zh$FqC> zXC3dJe_Vn1w~%}m<3Dn?fBcD^>gFqrw>UjplmCSu!heTaV-?7=|F48U z^%4D35`WQCHLvq$`=kFqyo9}j{Hvck*5q{r=`^{g0~< z{|1szV*Go~@#kN`a5rCg++^=_H2LSmziJ7qNBoQ4bL-1i{L6m8_1{jl#)pW1I?M65 zW5w@(6eIpLo?`q>N&IE8mMzo8zv6&{%#WT~!ahO#%WAWq|1Ea>d)FEtBmOPfj(?&1 z`QO!ue~RR@82>qv_=it(^HmmizU+BT{yXtcEn&+L|GLh~|30-w1LB{5kn0m*|MQ%G z^UwdTLHubv#rTJw_m4k3zU{s1;vXG={7)}oUm*UaFJ(Xf^M6AA?_6svMf_vgj{k7? z^S?2Oe>ur#G5&LU`|p2*PIvP~*9I?W^1pE)j=yzF*q4ZZq9E@0|bU)f!*IKj+}A#NX5ZV}l2q-~98w(KHU{ zpXaL2zZ)iRw9kKC{u%D)f7c@ZB_yB4_!qt4AAg!id0qa`Z7=^nS;D?X{wF#i|Lg7i z?^|oEK>J&r(Ej}M$LkP(8c#9)vn27?#hk9w#lPZb`0rY4d;|Yfw*Aj?KYzI%{zYfd z{^z~_!RGq&ua1rNYRrBq}f8`Rk67kPnlnsCX=btC6t~LHd{OdLG@BM~9|F|zg zm+^}}e`KB0ef{6RxdD|#&ZPd{{GZmxfBumvw6?wc|78jL0r78nEgR>5?(;v^dEM9l z{h1r#pV0UhrquCoFAguZ=l|yt_7nUIvyy+_&%YZ69%g>{TdlDc`By}~PZHeuABq3@ z-Piy9m75U%+#+@UE!%+jztmp**;4j1;@|LkHuBFKf3|j@dFt=A#yZ5mEGzLR&wpIt z-v1nj_?K$ppI__G{}xhS*9Ydc7ys@{*{_IyX(!}=&cTP7r~XlE7}vsJ5Y4~r9RK+J z*P9W48c*@~H(nBdUCimacH_UrQuZ6-pYEjie~9>Rg7_C_C;p!6&&Ymw{`&66+1CB= z`O}LRnmlge_}Bm9$<8|I=l@Z@Rr~Ma^G9arDD%qg!z`48@$ayk9EM$s$mcan`Fv#t z@AU6K*u`U0PcXmVZ;`Rp&A9(?=@^q&A@Ymnsek_ishjbO@~sQq``@>qlGs_a|9Q_p zR!j1~ft1(nz{}q8$8-M4@BiKkKCMsefBj$dkAFHQU8m$<>Rx|X;G4JIY4Ytve%;Rg z^DpacH(q=@+53F2zbF4=Z=PUY-aE{CA^$24&wl>#^Z(o6PkluH#TyWR!QXBFn0x%Y z9sFhzPmw?LC4c*y=VTWDSG@6e`F3NqJ%4kD-TtILkzX$1%i3DDOvSe@!~Mrzt>6C| z4}QIdADZX)kB-R9KdtfS{5!#?^@;u?Bz&2xY?+F0T@L@bt>6Eg0DhAAi2Q{Te%`s6 z`M;|3Z{tq{pVlYxyT0s?zsyy(Ovi6Ld$4)=A&ZQiF#gAG9AonB#qq!R<&A&;&l-jM zf7`a^Un%^{NIXUVBANernZ^G#P5e3kF7O$tPvp;%@p-V?c~|nUa6kXL8~kDoKR3@m z{x_2Hx?Ol(3;q)3H-wI-Fy=HlO+5!DbM33dtac4zjc*+|9dj{`KFq`Ow#@pq`ZvFm%X9j+w1xL z-+RHQ^@;wauXH^AUcP(%&x+mrF9Sd40=0jyw4Wck+AYsrW$$l#{0Se0dHziSpVlY( zkC*UeEZH(8|7th?rh*?OJ|e&WtA76yQeMX8%ihxX^UuHT1E1C>@~2Dqy#Dsyb$p(G z_k-U=d_?}7*ZltNaryc>k3YHpv9`zh?;kw?e%>{1K8bv5SO551M9OoP?EP&OAB79g z9c*55{~}{w`}%9#7?W==j=#<6V8&m5{qtY=Qy#<0gB5M-zX3{qZ39v_6sFbwS7db^N9ggUy?tUS#B>{p%Cz!PVo2K ze<(V4pgAf$lU=np^566QPw)NLaZjuJ-v<5u!bRZkHIt16KY9|)e=k4!OfdZPzYjD= z^`FUZ1;6ZMHNW7KVE6?yk2FW^JCltEpONpgh{vC44Z-ls_JjYwXR?Xl7i;*lJ`09l zbUoUCznN?j_>CHVuVn%8?flQ5$?gTe@Dz3X_g@|iKel*~IqJZf>=E!QPF3@BRs_R$ z@_)cg_89m%!`1wuUkAevuS5O~oXKW_Z)y0aH3h?W^8cWj>`CyOHT=@=g5g_}k$(rz zWJ&N%&+~`g@o#mvX{J4vOFw^z+G{d<(dQ5BEpl!@#2hwmHal-0+<*IbvB_%@$DiDh z4>{|ke7;cz?|m3K|3~?}35S>`+%lV82!7FiYW}i-`00u8w`Q|Tz%R~M^J5nW0XnfD{KlI!{bLGNM+4d*k{O`9*oi?_cQEdP5n!mrXA;?SMZxRk1758O%101C+DF5fB7lf6MS|eeCDUY5t{3{&+n9 zW3*m>Re)bed_;bOgkMU^`>F1d_ci{U{}}kRK9QfJIsbM^@+l?%PWSn{$H7k%ACW&@ z!fzqv<>c0-i!}a;HLbrtQVBk-PvkF_@O4bOPRXC(K7SVnKmS@cpGCg;sXzZ>q&($` z)AbtvXq$f(__RKeKS#nBIjVUjf1>;RTQ&F<#7E?ZB-dXJq`Zo4FaJQ}pBHca{BtJw zv_6p^mGE^;y3Wfd_uosqo9Xvk^DhB@&UNbcZ<6o}NO{T=r$6-g6Fv%Z{uAKS`b7W1 zn(I%IC(i5mMQ#31fuABiB0sXkpZ_99HUE*yf9K82@S@iE&jP<$!_Qsn=ZCL%+e^i^ zmoHZEt-HIMWo`Utz%M8DiT=wZ{7^||{Et0+_x#^FFJ$Jv+v?wU6MX*D{c@9gi2Tsd z`<-?4`lE!D=iABN%XV;|`Se`>+|%7`Y4cCQKT3Q={%XnnhZ0g=#^uXC@%Vf5pYxvs zpVlYx3pDp1I7juat=a0{WUvz_;&muqih2NhtbkhwUf5P8ov-N-fGw~N@{}h|FID(kW%&K2w&#E5f!|2#6Zr$a z^7C_Va@$K}()ncyzFmg%Uk0DnC-UPGK4s{pmHa9A{hc=d`QR54ACcede}4Z`QeMYj z?)CTFe{r6FZ>cpl#q-yNgWY(F_g{GZ^!Ue@Vb?Q$iTB^Q|0}43`iTC+B>tH~+w=br z{@vjpJ1oooQ*r&bUF-F48vbe0o}zz+#J`1<*Tv#tTlSTzaiWH*lF(n zD*UOB=-(jm*E!R5UVnG|W7FK{Z(ajGe;jRp@AKy)C7*x9NO{T=r@zp|Kk^Ua|97pC zgZPK5$C!NE;QAl&2aF$oUxz>S5#zsD;?MWBy?32|=^%XnY)!4P4g5n<8h`KS51g?v z#~MgN|X&z~AddA@(L_eO8~ufP9im*wYwZ-7th6ZxiuFJsA;34G7^ z@AUtFYK?}C5gR<%E`ccc2FQttmY{Hc%F|MI@=c>C-8>&xK(?0n-M z_~%;L@OQ_5>mm30=NERjmdWYXW8H0SKj{b z!k_wx?Y~0eFLRYG6a3eYKh|{j__GlFauQFG-&^whK|LuiNk&!5Pg>9ThHXU{htf`3IP`1Ah%0sNatdy4+?4epj-X}i(#{%o^7Fr?cK;{w6x+W^5`S5&Wy^H&cltl#KOgarc0&A}_J4K0 zkp{mcD||Qq?O5^nFGu`Kr?~kn#=mZ>X{KGCo`2Z$nY>nM^1o@;QRXL;cQ>{>7tbGj z7kvJGbpGDPKe z^YGunyv<*ASu6itdmi<1{zA-C{vym%em&+X|3l2%{9ZF#`77GWb3Q)*^W6V!{QM~M z-jnt-jzs(m4;W_x?Yx3J|MK$le?7|l;fVpp`QWE-%|5^Rr=!fqrw16Lz>itk=iB~Q zBnKE*fM1aX{=xq~iP`xzYw@+w2j8y_MV$GuQ9ORdc7CfmbO`31{xR(mv-ZyF&=K}L z@@e6BcbYw>RfmRQz8mI;T{<>;)`aTNiI}(ZG2UlvbnhWmp_4Ix7}j^ivcjFan8VxF zV-dSzTy>}q`TmEsmwWyDISN!vRgXVxYybFD{FHmVM)k_q58m;|z5j$Q`1$7-;M4lV z@h>9bD}lla72kT!J^yP2zmfQe{Dg#GI4d*%A2t5`{Oe2bX?-Gp*-aqXz6HOT_=x;`iNDU7uKQWz z&)fey@I%wxd=mN7xAo^AW$31V@$kL(e|h{@f}c#f?J4q`H-P`EihsEK{NXC_^PW@l z!`u1&6OXv@()q7e@#nhz|3~oaH2gUdex%0TUmgE96(1Y%_WucdTAvvIRT93AN!O|P z7W{epH-n!bJ|e&0_WtPmO=_pH}{#;F~X~<3Dx-_m%}Wcl7hiNO`{BviG$LzFn5{*MU##6ZxYhd>Ko&Ov!(_yIFK*>-Vpm3+`IAe_X;Z zCHW%b@@4;M{5jvi1wXA%^zXHkKmNS__TH8J`FQ^Ot=9bO0)9f{KTN_;XXw99M29x&)dH{__RLJfAI$REBUXw?H{uFFR9yq zXdi$48%TMzJ?`ac{CWHT3w&Ci=wB}3>zH(%lK)zFv-ynH@vjH?1@qMY{h#-@e~Of+ zJaKvxjX&pa20pD%^k2NcKmH;|HLv8q?)vuxKm4-VKYW0nUrx%a*!J?S8TfAwKCMsm zA1C4Km~@?zzra2J*aG~}e6{~72|r58Q=T}zsm7n5|7;09txxnHaiBl`B1bi^ z|JVk6TA#?TlkjCM*)kR1fu>K}#kbye+kZ#!W3RdGDe_|n`{Un0%Io%F zGmSrQ|DC|6^@;ouTUVJjqa&aHs`%DB?(w%b_yw=4{YT9ApMO}Syw1O;#-E>m^Z}pN zC;Ase{PEW@={hgp`}t?$r6FddVU=;=L|lLGO#K7<{*~wRUx)wYD&q?93-hwi4{dv- zxmU|7V*>b*J+jYF-#N_OYnLC4+2H4&eUr)CEx6CW-TOb*yKesPjQndR`7GvNN|Jvm za=yU#TlT(r2Km1W__RKe-z?$FSh8g*zV*I4{^x;jE}-r2{r=a`L;U?O{P=DmDx|IfwqFBkmrgYh!*ulZo=A5{M*`M1bD{_G0>&>NKR zjeoyG{qbi%yX95x_VO)N@&CYW|9;@JKi&2ep|Htn5^KbA?QlH3QE#cRb^3+$H-d4p&LEiuN1E1C> z@(Yge`->dayoztZpN~KJ;3qWW-*gGTW)7Hz%L^{B7ejXzdviq z%s*G-&&S_^;M4jc>(E} z-ATc>3-SIp2z*+f=s)@_zrP2fnNjkWy7@O4{M^6Bn!Fm3zf8g}_}h&a-%j@4TjS6B z-(ld>`b2*I*&X-y^1as|g^`2I;oB}{f1H5s-wA(zxTN+lbNEh6*iW|ge}{kMQq~jvf)BFa z{x<)kf~9Or@U2eb4?lS++Zy~-C-FZzeJR@({N~Q$U$~U*1itxU_S?U1zk|$=E?dg_ zfM4E8{Ncq**)HJMcLKj*%pvASB}>_^;3qxze}d`%wV~zC_fJOleLni=El-ACbmqrK zTf8VLg*e65tFwej5)DP?DV}5fyD`uD99P3}jy#4)@VY9}XTWwVx zdateg!ph^LL%LLZ?seP8=0mpd@(*?9UH%}wv|`%a|J%; z2ePrz)w^D1+Wsfm>rp@cW48avZRPEG+rJR=eE)3!Q!sDu-+*u4i`xFDw#{??@V0q- z`?4`lhVcCxPfW}+4l<_{EoXb6{jJ?EGf~WWW$XBB^B+EMISYfI>I8mt_v6f&Zx3R} zZIA1}#@oy`ec#_d;mc*8f7!9k^d*b`Ru?a4d&9rE6a4EC|E;cA&h`aAyhk?Lzw4$n zRyKc1({gqo__2PJpR+zun~E+oS50gG{I~erGtHdy&NS`%r*AUJdAFz0vd+KuKhpS5 zS7ja_)Xg#Zf^D1a&{Q_$xh(MZ2!b^76rd4D}49! z54NnkS@L%4^RI{F`YT1Q=fvx;iVe8_>Z7{;`@XxG)5bpn{O}rj{*!0Wfx6(F_Va&z zk_!_%EBF@pjcxoW_~jaY^9JyDQSjMH_xZCS;D^?#{ml`6|1`N?7nD7-c`80i@#oKu z1fSL?wtu~Z?}2D$RD28m{Q38zz;7WwBERHZzkia%OM_>9HU6AG6nt8r$Y0U*8PjIS zj(<9~y-vlqR=Ll=9SwfoKkD{xD)Qfd%l~_<*&f?ozpKWdKmT?N__RLJpPlcIepH2v+LAm#af%ijBW;_vlm zgO4-AUkqYnw@3bedz<5E*CG1zdZqq+Wd`r6?;jiwf9fN)|1ybx1~{jP*WZmlYj*Fy zo&bI>qvv1Vr{N}XSe^K2!5LQ zi2RWk`u$r-dCC)~_t5zB{(lnqv_6qvbe4bo6*;PT72o>B?SChOpKqw!zv(Cc^M4hj zyozlv-&5nyKYu6$pVlY(herD2uVd16D!%oroByYPpVLL{pOo;eHDgW6QB8+6{yhIr z1)tU@`sZETaeo!xTJ7flaPU(a|5*}#coR2XDtCMNUK)R%|EGaZ>l6Lsn|J*DN5!{( zbMyan@XLvh$X{@YKmN@bw*TH5f1dwmfKTfa`2#NX^K~(&>r{N}cQ^mf1V7r$nU?iKmVeex$&Yrae9EppWpwv9DG`z$R9VM77($Ng1&i-p$z{=yaDHxM6@Un1cb9GaQ` zK?;A%2(5qq_A2mGq&|_KSL*i<56X;xu!3*rDUW|K__RKeUnJp+d9IpQ^1Hb4zZ(2< z;v@3wB>d3e%={x7e}4SC27Fqd$nSlZKmICTak-MeNof7|AI5;6UvRC-w-x!5B>ZHC z{)cG%`SEuw__RKezed96``X^SlHb+!zZU$w!`${1`Gt4;<6lO~>-OQ$4E(PHpVlYx z;}X7(N!Ka)o4Wn~dhprdYX24qznGM#JaKxE#-I2967Xq#qW|iC{^Os>QOzs)-Q50v z1Ne=^N90%B<8S}MBiwkY*!J?l8h_sZZv>y#C-PTI_&O$Cr{s5c^ZzFBbBd!o%zw`QJ*FXQi=YPoO5C3xe z->vX37()4Z9{wDOe~Ogn`zL!p!V`b5f5lmN{^C76QwD#w7v*QcA4uN+E%;L(vHe#` z{AI4PWnOjQpa12gyo}42Mca%2lI5%b@h|R#`1AgEJN&7S z82@P!f9}`bJN0+U=5A|xwmAs%mu%ml6J~NccJ?UFYR{$DgKA7=M0U&MvXX-@ep8sPV_kPrpCF zoU(d3i-8~6H5+`={v`gTh=1Ks%J+^xlgc`te@A)R-|L@u1>*nva&|fV8?)lidhpz^ zkpCq;TJQhg1^>v=YX7cb|M_o%l;?HI-iPksI`--a&9BW>=Ya^Qge=E!W)>a|Y>e<@<_rO2*7#e?X{ufI8 zOG$ZIyYpp7d-LBDf6ku-KCMrTf2oAe>u>K};M2!CSyRbD=8p$7vMGqac`@}5EdTuc zLmSxx;MZq|?}>l-_txicCnNr`W2wKl{aZF5{>OOR-{a3l9d7=3R3m!?{$+nres?rr227l@!`uBRq?=O0)=5_w{-H$M@9M{O^ z!vFt>yA${(iUkbdvj`drVnx(~pcNIWf)wNk1tem@%4Ow{s30S9giDH`Rz+9@wJK^= zkfI=!vm#1Gl&T0tuBd<&5$hdz96?(eT92v)-?vFOJA2GFq{*hg_e?fBnSZ{S+1brz z6MRHFW!lsC)Y&m_NhX=j@8k%tr^zvIFQRIVqA`BnS>#5dq?_mF+? z^R4mYuU$e(=?zx{`g zTR^4f)&Be^GykGKdHZ`6`Pn?$?Qi(I`ux)C3FXf$zx!Y(n(?)V96)|@F+ab3eB|?s zm*V};kAdTl*O1@C^rtp|-SztX=>wGUV%81=)cvm-|M|@^{=fH-V&u;-$uHL*>He4V zFGhYgk2Zg{L4Nr))pTo?KcQJq>ieIE{DAyUf#3hK5y|{wBF_I;AAc`F{w$_HwfXJu z>HEKuDKEc1quYTd#~(h-f4&kAIVkmieQWbeuT{?fI`Xr5wE6Q4@*8C}dQ6i)IRA<* zZM5L0!1lKkzH6YeJ!$>)4f^&^AFiA)Hge_1ZdGr8L0?)g`?=EiXX?}Xg$BM{e@(Ys z|4JK8{5g>S4fyf5^7Hq9U!PxO%A380bYA|e@cGN={{G|decJru2YR2TE3eng zzfC>mVXeh{qZ7Ye-(VT zKCSO42tPm17h5Uw-)i{zOdhRY_d~t!928pq!6yAL&p&za+4{8pS_7Z$W3&4_U;MC9 zu>aqJpEp>^qxI82*5^+cqLerDhlbGqYvHr?Y5gA!d^3|>$MeM`8?}w=?BD+1hM&dc z(fY-k^!Y29@~o%5f4fQl%l+qJ%{EX`S`S5dxD*dVTXKW7NAJ$Yk zeJ?*w^i>O zP=*iPVbcG3)&2)k{wMkV{(a&5ck=w42EqOBM)>hh@%-{vQykYR_2k$c3{^k9D z0erSTZToL9@Xbti9nTlr*r?q8AHo-zJX$|UC91KZyx@TrOKG4OMk^1STQ<9D01zwB>@ z&(^1H|4HA5pP%cuQ;t8jz%OF*X#FO|df)c6(qCrzN1Ei9k3S0Gv-N5HTm#?CWY=;1 zWM%)m6~2SXqxDCBr_Z0slxIEdeag$<-WD8x+u-Lj^=bVX-|KxZQ(kMb%lGhn6q3i^ zcKB?4THp4A-e(Q7`x-yEGZv9QvwHj60l#vG@_th5%k{J89}=GlZTyW=Z~sAGsx!gW zlP>@J6xj)%t*;TOtGfQs$d@0h>H0^WFLqG!?}G1S@`REU|9QUHQOW-W ze7nk5fBqo1D?9!(nDX*^quVhx<$vfj*$tnqFOvCrzSv30zXyIElP8q^_b}y+a?6j6 zts(z%*J-jBK3iWT^YeVMvy%Ty_zClr@f=G2bf&zV)#!Fy4f(H_cA6ByXX}e(ex5IO z!TxVf;P~q+_*qPzQ1TZt<&AR7kGV|pJKn?g|N3dN4?bI8B=hrp(XQnG8h-ZYXSV;V z3^D(Bll*e~?}yLU7fSof?OW3=&lkI5|5x4r-@s3P?##x2@{tE=O}4atf=T}L2eJQe zeVQDA?^5|S@Bd}Lru{$97gMnPSLgp0ey+-|dHyeE%A2*rM3el!f}XV1Tc=4ee73$w zj(?snc2n|y2S5J#GwXkmDQ}j4Qcd|co+jVJXX}e(ex5IOx6%B$f%)$T_ytU!P`1Cy zrDLgCZh75gll)%k__yj5`4K)_UnKMMe6fd;|0noKFPvHbQ>MI})#&yE-vWy<%`Qi=8|9Rm0&tKr@FnL1pi66GwXjZQ(n$$bUW1~zvN%>#%XdGK3iWT^PBm;hj9FH^=aaTFTSB{&!PCa z)%(Ai_CM3q`Qzj^5omHZ&he$Pxfz&$Y^TYu z@Y(vb`Lq7f`?6J2elx#dJp5CqND2J>BKG)8z5j1h6~6xfC%^b{1DZ8I(Eg?H6JF-G zf6^(vAAdBol96bUVW&f8``>fAvn2f8ewAY4dyQg`c12i)pz2bzz|Y|An8! zeCp@7L7-JYT#;IsQEb-?ot7|5XNl zCR5(1-{r?;0lirN7Kx!z^|C2Yu-|a(;3a#vfCk z)-N{j%}jQk+K*TK{z`rUe&*jw9<87IrhfkMGUZuMdtX#-e~gcUa{fB-+4{78QUiVa zYaQOQ+GnnR8KC4p3%*nJ{Xg~o_i*BBD%H=> z;*bBlM*93&OnIIyJw7Ld@o$6A)~C&%exBYpGud@&pBew@O8)xrE15i6ze&8_cQM~r zWIgTuxgqp_9DKGutv}bm*E+mqu78`7zXAMWCXd!1eZD?_8uNWMo-IB8LTRtWhU!)NQ$ z`fCk*t;1X9`Qi{I{{>S1S<3Oe*6(jH{<4|x>+o#p@ux$`-vmBepVrUlsc(NXlU=9w zmHm%6RLOrKd{Rdl&syJO;Ab%9Sx;G7b{Ayp>|BAzu{7vC!F?qCp{~Pt~U&)kb^J?$U z3t{{>gU{Bd^*0&#T8FpH^F^nU{}TAFx=Md){o)()sZ>9E{9VkH=h@QZ&xMe`IefN0 zt)JFQ-~MJMyN>6Jci3pc7lF^eTEI`M$Irjtz%O9Rv!3?;^XmMn_y5VeZ=!3`e8N{x z;rRcY8B~6*_Wi&7INSd6V>O-skjqK8Eu`Hn^Jn|=CVI^PpYRj>;`-M6p0AL9h)<}1 zpV7#Azwi`%r%(6~e*F2?``M?_{v&)sgDiB+1=jn?B$ZxsuTQuHe)>h0_{#YYj6-?* zyA<0WyFF>Q|D>D3-~Kh*U(grtRJQ-i;3u8U-~O{a`u$%HQ=ZwRba!7+Z~sAGDk$eq zgwNKe&7V_?{Gs?Q;b)%1&!3qZe*0&0@{7-&6P$mqfbTW&>-N_BPMh+2b&bwE@FK@& z+y6@VY<=4HFF2&{e}*u<%k`-;{;q=WX7XtLY=iuE=KJDiFW{vR^0$J|)~EFk8~A1> zyN>JMqvUTb%hI9kcy7Jhs~etuV)zWqg} zJnL!izoO2s+WwLnq|!I<^9fzB{dtyJ~$-}UhGnLJv5 zNU47QPdqQQ{EI@!-w{4rpVlv`MSiaDveBH`DgNt!I>FCo@@W0;ck0{U&6H=`TYLXi zll-#Z89rN|)^C27-q$+3Wv)M7$=?OOJznWgtv_kF-p^yo^K9wy*Fwl|htJlh^<5+M zzM09cQ~Ne$`%VV6{$f>r_2*BXQTp~z zyFh6#`E?uJE>-{jglhlqT!!C2`^!U)Nx%Qa%x6~QmtL!!zbEpud9>rd@Lqj>qpU`c zndNt{K>q(ch-zKehSgTt?>~<#oKHlRW`ThN$aFA3WfBYR*i0+0`E$mGzx^*a$?xy~ zOAnGik>6)^{`>L!6LSN{pQ*^7X_7y4T=@A{nB@2W{$uNdU|4CEB&;Pbb{+um%|GViRX@&fB zipBZsH4JY5w;_L~>i9#QUz`?x{&gn#=~LML_a7uzBY%jk>G9|27!;ovPzMb^m)G(C2qE<)wWC@9$lc{5e_J z{~bL@l94}gs_ z-+vs6{C3sxr@H?qW$N=g%9Qif+RW_odXxSymhxYAh;&7Ma=-QcFXz7<`Pn?${&(#Q z|NBp7`SZ3Rf2%{J2l9KY$sc_GAwG`pUvCZU|A!&J$E5$|{tV~%?>&?L&)H1 zk>BZ4#*-!IKj-56-=7BZJCQ$K_5MRW{%ezegGqjIC+7c@L*z!}&zfe%_*Xvv5}&~L zzyEXiKYzUg`3p_*r#`CR{^d5Q>Gpk-{LatN|F;|>eURTf%8LBT=U?KJ%K6_rkw1AP z>qoBtKQPJfX?hFI7<7oFA-{V9>ywZ_e>=nLpM&RL#HVonKR+=4--Z0SCi$^qTX(NuhMu9$`50vw3vCKVXnw&RkRb z*OWhF#39lj`E3tbn_tXQ`hNuSi%frN_kU|2)AzrRDKEE$(QSdc|8?!}8NNrj8$Mf~ zw*809)cdkkQ~UFL@fjTdz8e_-BjM9~*!EX%{~c%P{UWBk{924|Kjh>WpM_t2{{0^K z4%Pgp_LD`upU;#xa^=T9;`q|~g3mGj2kj9?!Ds8!w*MvrU#`EV_UHQZl>GO?PrR4k z{^D$X{%oea{924|Kj!6s4!?hSap3chG4RP~zVBG7_cNICMy~wWCZ3N1wjF5y{(FS6 z@Y(vb?VoSp%k|gP{%W7u|4aD~1de~k!S^tEwA+98Tz&rZF-m*Muf^#06IFi2m&(e% z3qD())<10E8(Bt=seR`B@AJ6+==VVW@$d_oJX(MI8~Xf4meFIIRrwkJ1?U zFEZuj*JpIQmE%igWq&e!wmxn9$FI=)MwZcIT>nM<{#*6u5BI_MF?qDU&%mcHrM-+? z`LR!V`Cr1n|5$zgKLdUdQ=itittkV z{0t_KHh(o0*5_Y4P4e5n4$Qxq@Y7YFf2oiEnyfKsfB8k#aJx(G2lJC=4TJOl!|)4D ze3=Mm{&%bW;PJosijBJ73mktx0zX;x`IkDs_?A9@E>m89eMYyRaeS$)>^};htxwzk zNo)1Kk!AFl+E?~}WFfA<+7amg8Svv(pMR{k zPVZ+jikc@cQbjke%gAyZ)ZNQU_I^qFHQ2x z{*&<8`n0~!z}GswWu7lC#`*8+{7=EpWAbSI%87YYs-K;I5}5P#JX?Ca$Rxk)XTfLd z)B3gz`t~<7*>yZ$T!QN#ivr{SY53_(9+@C%vptf#&Il}Ucte+E8VpVrTQKm7bW zUwj?EKfNJv{P8UOg! zS;Oo;*MCFV|7OFd5Aw&K?PI-P#FRJl518ba_rEW~XY13B|9k`A%w*S@`SSknW%$Vp z`T2K$tIy9GX7|74Di+>$v_(W&V8?e)el@e)atSyMb?CtdwUx?foB2^2_tzYw+3n zwDVuVkKyO%`m2=rZ!vrilSkYB^e4TawIsCsKbqv1=f5TJ+4{7;?PtBOZD-!H+GpPX z;t7fU2GXmi`h**^2uVt`;`bkz_y4Pv_dl;AfAZ@}dusFVHppMhl;>ra9{@$;niU%~h19|_<8AIBFN|4sOXCjRuJ;roX1sB=`uwZoW&QEDEl(+Lw*7lmzWVq>`u)?ZAN2`$QS=yl6T9JIK%G(awLx z$HQ-bb$;gfCtvyeWgUDk)1F#i{8jH~zZqKlA6KvMLU z+E=c>5#Po5KM^?p_bz<<8YPd`s~t17>G{JFpAOs{^-Cyd7U%YMm<@uz(LEUs5R z|6Py#9+Uiz5`Ft8g!u2j{-*x^aq#m`sgLB}UwIEcTc5W5v*+u#f3}a!?rZ$u=fC26 zIR3Bx{htl+v)*F+U;X}5uAe>sEk9P%ZHcP?mGLibP`-cnK77|&)>qGehfDSCUz01Z zFXi~;edYUKAHa`)o9}0w2;V=!@kRLZ_is1CFEH_|YT=i0eDZ;kzW_dcho65%S@`*V z9AAVl|Nh>G@NMh(et%#1{z;BcHY)i)f}d~VZ>oh~&hbU~a{qq}-1q{|kNpQ=9hp=YRDO84o|5IiF}%`_p2yf8HT78GbHv zKFv~p-61jsej0N=%PK#=d1rcKo5SQW_{kr!^H0?JKTRIX(yjYoC%V;sn9PPRe$4kh z`}p&3ZN?w1KY$LQhsg`@JzMy`{F)=Z{n>W+r2FqbOkROcw^{EOeczc5nRS>fg74g6 zy)TWw1s@+FdGISAdWg#HY}NR8#&w|=x{r{x@Wm@9TJB4~f4X4r5%LcFf*AQ1eshH6 z!}rC=U-11AvL1fYRo1tEQbH>2`czk8-UwX(_KYR(e^tjnQvYA*IYKrdKaD|tzkl=y z`2c=S4E&_?JJ1E?N604lj#e?~f61>rLbkxqjFo@-2>BF##$(pce~x4Q>4goBlF#7h zTa#Zo|MDR|f36dF|FIeGKhoE;`yciBhoo}-{y+IWrM$e~FuMIy{r*SsQCRl3z-Q~z zp8uf+zL910nA&H~|Lst&zb=Gd%;eGfMYZt%Qs)oOKjKd1{M%Oe;s&KXwZ5Fo==euo z$GffM_+*!I{_9itN$<0M=*OQtSAP6&jxWOZ?FpQJ-3Gr%<*Ub^Tvs^x|55wO_;cg@ z%ZGvMAGgEL{D94`_UrzxAOF5L#!~rpnce=&^YJ9v-vOVkPuu_94SX|`UB~l9W^%vSk0S^gsOUx;<%|7n_n@ z$j|1{e*dHSANu~6+qkCpKkEF<{PUUe`~PnEZj<)UTo?ZN?^C??|3dLUgP&2r?|(UK zINRT8jxWNOKY#fge!_>*@&DuaWH-M5SP__izJOmCC7(2tTTgxdON8(ECgAUe?^3=0 zSI<9k4dJxE!12i*T>sN0u>ao!KVJ3zKXQH@wIAI6MELUeFZaSPF!2ljFY>;1izVuhq{HxB-_+KjR zzYl)mW`6s(snqwsn<*c7CC2|fTh;!GFBU2O*YMf;wEKV2z&F?TTLv zKkZY#@AxNt|9rKt+WzQk*#0)82>Y=8`F^!x`&06Z`|$p+y8XXHexFJH`3CuOnDeE^ zEgyKau{wWn{uRGg{O{qj^=ZfdZUf)UWY_V0vLBznZ4QjTAK*K-^ZUR1zxw|7GUZuM zd;bDne#ZY1K3ktQfAe?4KmOzSp zK5hReoC?4HdA3h<|^# z+CKrGtxwzj`we_ElU=9rgY7TExBn5yUj{$nY<_;ZK6d`kV#>?wjc!}0^9Ox$Nb!B} z+4{8k<$76PeypZjo-e|8{1wQ55`HC^hAfoPR`V{;NL!SP9=2r{vN4*(v(@k2TEhw^HX1`sApM zlCuNnKmLZFY2r73{7otu;cWk{Ilc(rRqg)+Kd}KnfAenP=TGAJkzC3FwJ{jXK~Hg>E^ z*Z(ZI@F*$5^*MoIw8MYuNU;p#RI1=OoQknm4$nQ9x-~StGk-xJ^{z_^7zwapd8~Nj}Wqk|Af4MUM*GK+*RerT^bA&(s zyO`upYm5939wq-Gf11_#E0p;^4*8vp+4fg&|HEsM-)@rMdtDd$!IQ^`Fc9ZI+p@m8 z{iCw~`(2s;8z8^iB>(POi$o>k?*s4jP9qHQeSkw(a$IGy#??H`r?|3{hs&qw}Zll+CX$luc>f0mR# z{}_o!ey7#>|5fJy#>k&`5!?Ri{_md}e*Zg6@=Nny=MRpN#>k&-b^a=4{=WeE3rzC= zUW@!Un&dBRkN*Go7-=Gn|D$uLJkA^8vTB>Wz}!Z3{y(M6|4ooT>0*BWFYX9z{BEoJ|FkmyUx@rUs{HEqPwf+a{+mql`{)0i$4CP5lLy%LSNrl1h-m-+ zr_BEsA-^qw^%GU&ucQ|FQ%&;wxBuP8NHgTOTb-ZO4}Si1G4f}c)gu2bCi#7jI_L)_$4CXKg4f;d7Fvk{zt5*%)c#=-(!+LxnKDC`@cnd-FT$6vzqtaw zcRKs|qk8=9u7!Ua$0u>h_`ec<(xv?T({Bww{~(Sp!k4eVxe9)ciQhaue19;SG z-wM9%GJgK;weW{V(S@jvOd@beGl_@tpS{*&OR4P|}x_-isKeE)Wi zFT$6{|JCpdO#Dr?@P~1Ha;`G|uYvC~@kb91KfjaXi}2;~e=U4^JHP!K4hi4CgX5D% z%J^>szsSVjPz(P~jxWNO$A4S+j$v$m_4pq?H2nN`aeQ)~GXAfFFV@SX@^O~-`pdev zhwl&P_#%9H{I`Rj=w$P&x4-OK_#-$ziC4ydGJLm*Zyy$Z{<}H82wxum?cv++;OF<$ z!XL@;$@$9o?*Ko~#LseupPzDk5xzYBuZN#-C!1eA{=FR+`NyWw@xMG~dAIj)e9~AM z{~h6HseJYL%e^D~{G&L&2wxumo#0oR_-S{B@88Su$py;z?+m}dWc&Bk!XM4?Mfmdg z?*c#fF1G*G?Vod3`1!|he9}Z2|91HC!}-2rc=-NUjxWNO$A4G&qRQ8d|62ItI6k>h z8UHEpeJWqw{@EkK&+p>+B7AxLcY{wy@Y{dL-QoM=IX<~a8UNkk7n%4~weTl!d=b7p z{(Hc8+|AFQH8TAC6V<+rohK_hq|!SNT|;g1`1f;s5xzYC_lBRP^40Ud_*yQ-%QPH+(&J`- z(>Ol4q(1dkw|^h_$)ouBozI8g|I<0X2tV(`K>ObeKi9<1u7&>q$0yC})1(%G@s|eQ zb`JmjkGmHBgB)LkUs>(n0$;qB-~P>C2*3Rw;`pRRed@k6kiRc{pNT)D7JjDMx3Ob2 z|DII(^XY5IW0-$4H}L0Q`8nauzw)#F-+v0ueHRdUswx&2FDjKQ;vUbg`YTBid z{QQq`e3Gaff270DHt}7x@Mm&-5xzYBZiDYu`RehvsTTe$j!!N}{yBm9cMyF0IDY%L zc`5w%7dgJj_=Dl+nfPKY{Mj6zv{dpBfuG>w=Re$g4V7jQqxnafU5xKN&hf=g@xk`L z9e$;WpYw9~?LU{}lPl^|>HCk;@y{^$uJQc*CAILMQ2ETie+OUw{Z}XaViSM(e0~13 z3Cim=Zu!8YPjY;6rQ+WKzksPvd;W8`fuA%nH2*1;uN?o2@a6Wu6Mha;pVsfbK%d_> zDKtNeoxP|aeUHR$v+Z)Ayc2$PgtnW zpPUhz{~X5`;X6+|{PPcmpUc#z^(Ptl@l!+dpXc}_N%8N2FEaIM{T~f{A5-3}{a@hu zcv5y%cY5)zeZs28aQs&?jmq^j(p-O=)?|r)ozecM=JOA7t?J`nlG~6LbPOE--;4Z? zX-a!)^XKO1`#+y4uL$~kFLLsWSJw~vqv2;P<@>)I_?~T}{B5Ea)sMWy@yRtf|8OL5 z{4)lAo{68fNS{A*;M|b>mpQ%&UvB@g@I5BJXy7O0D($6CtX`VW@yWG{KMsC6Q=hi~ z3k>`$ro38IFD>BsBICQ@7c%u}eV>6}$&^=%>ZMmWK53)$|9JSxZz%1l^^;!J_rHrN zuNKuy3pu_B-)0MJe-q&6GWBWw83ukaQ(i5qmvT5h=^r2TC&3q&@$)-g)8{W>%Bw~7 z(yJU_Y^&s-3_oL-vOQ_@=NtIG5dGIUKDkcu?}MMToS)xo;8Ui&IpKnnOs2eAR4={G@kPd;3O}EzPwTHW z@V!iVwWwZN%JVV)oz=hpGYx+BN~Jxue#R1g`@5O)YEixP2G38%@kg~k9X?sb_qQAP zcBZ^qR4*;#_@q6K|2hTcp9kP)F!gEkC%mrDpU0F}i|VE29AAVl=YJ5shpA8NryKa` ztCjXri|VBn9G`Sh{D? zuhSm?$&W|!_)lc=XCi;*L;UmKX$JXSd7-ucDs}$g`A;$+o@P|<{~m##_NG#ww*3nX ze32NwzqL=i7pO(q?zxw>I+?Em8{#E(Y#&w{bTYE`w_ysZW-Tivdy6=50 zG@gmiUj|z;|EcnOyP^Nvc}ZX7_r)N8=JmHw;ipl;ccXCr**BZY{oF|N{$GAP(*2*_ z9r?R>$*str^sx2g&v`=^`oO^B2|qIizT1KP6OWT|@bhEf z=cV_cb3gc6Xo2l7e$Fh*$Dj25+Xr4aP98x1j2YJVzwL1c{bT-d@(}#I82JypdYn8A z-xCAhettjt$I|2EQTPdu#i;#P9w(2%Pmh7`>C=V&@z!xN3w~A%eE;}gf1J#QUl;@5 zIR^PZK2Dy1Ul{|x5dH%@j+1BLyJlKH{<6oy|N1yt2tOl^J^y6Q@mIoN%)fcUy-zL9qe|}dNIwYZlEQjwk@#W`4`uI=U|Lt#4LRP|0e4O9@ z(ejJNBmXTWWCQ#ppY^`<`(Hx_m5`0_9Ve~#rSUi9&Jyw={QMaBQvUs;O2{Uu|I4k< zpSRFXhhDW`7>N1L{lauAkF!S6d;b$W|0FW!KW5_mhwUvkf1+TMUkq+b49+p83w}ORpZ5Gq@jm_azlm#=*Q-OB2j1rRyq09s8Ilc%#vAX@A zfS+#Sci*BPe`!0E*UNCayYF#)(pS0ueKpdw&~kHiz%-|nFqFTd=b8{`ugLS;1@FWY5m0pekD_$ z;dFNk)xM1_;JNb_n&BHIoO>_Y|CA-?--E}0BpuiPZw-w9mytjD3#C7``F#fYT}*j4 zllJ~rb$-Ra4cEVa9q{MF&t>Y<`l;LX{a?(K*P86|r)odg{vv!=qrks^wh+F!o1b5< z&*=THypDH!S7T*O3lbmn$sip6KGNQQ{b>&Tf;04eOnF7n-y6>HMfgS4`4_=Y+H+?4 zDN|mrDvyj%`O5X@WN>|&yD>2Te+0jXsZZPga&2t;v*qRWMz`mv`roFEzsd2G)(y_jjypbzER$t{a`G?dG`k%nhJVT!?FIz^paU5TSU%WrC{cVPye}+C=-pG|7 zYtW1Y$GqzM$3vCve+zu?8TxE_*)qCqsLmgJEmB!}e_wjTsUD<%0_LCF=TPY}=`V`! z|5biMgWgm;JxXYc`9JH9$EhE;(9dp(e}8z$3evVU-hW-i|M!PojbHS?Hg@}yU#sAd z@6~*Z{#WHMUJQTs3NjUb+DCl9O;U7xvKs#U734Yij!k@jQpf1{Iq$*Wyn^h4@7c`v zH}sB>s{I`CL$|K0C?axhar2EAZvIplM z9sf?|=7SEBt+9IRBuYQ2(^^k0TfDpI1UW$e(9Pev-z%R_XJnA@7xtL-2D>^T(g( z+=WznUIg;1eChoE{(=&67`{i~_y3AU5%X=T{P_H7|K}y-sFc4R-f^u6slDlS-TxByVg65OG?U7G+9+zDzZvv@NeQV${!Ekn^RJ6ke!V}tw1oTv-)rJe zZx=mZC@UdV@SOwr{h!c2ivGzGavHwd#P8oBihe~2A-7`W4dmzFe|;4FKT1d)_!%bt z{7%vHXa8A3>caP!_@qnpe4(<0oDDzyR(|_e+N0;s{=0tJ zR-Y*P^-9S_@RJ7d+kbId^!y(t|3$>1n165MUw<=v>JtC4LG6$K_4{AJR!W*7e~wB1 zA^jth|K2I%CXJjvCUg1&_m3Gl`GHB($7f6$GxGj1_fEg(zHyVrOdC0o zvez9W{e`EEnLcvbln3s=cTDhkHx5h=DV1aw5Ou2vbH2GMHz16<|CEL5u zbzMtIOKJQ)&F_D?j@q}s`uH#5TlkJrawUBFjP<@(@^3CBt>8PJwZvDw|4#g_3vD;3 zlw1uz-^5>gUu4Fgw*P(b*WFo4u7mHMXGwn5`|rvh;EyUL$?)yZ#l~+pzLa!;pBE#4 z-IP+&5q`q+G0Oj7Dd`M9D;ECZ_H^BhQqm26Wej}BvHo=3lcl5={Nfj^Z-2>ex2Tld z0zWO=dOv$?Ds8u_6vy7!|Gj95ubThFSFru(my*HoZ7=ctA2Xse|B0gK`3rAD`+rtSD13Je{7TF}?Y=7|iD?9)h2?(E9xO&AQWdXP+Ps!>2jc`_3mi(1|^klSWrz z{(tCRDsShFH0PhE-}-`oo#Fc*hy1LXZ?(tYm2blzwwyTOduQHD;d&^#08U)+4ZZu&C+wi)UC&R%xf@rx}&BK+hgll_L& zjN17}dQAF@w4eLoK-zK77U3%R@fXI%-|*!Y;Trg24E*Ged(n>jwg_#c{*QrQc@z5o z>n*}{@aaX?w?9p_(+%*G;TOfgFY1H*2et@Z;OAd#eSZ7R@W0(6bcG*(_z~*g$nYPl zwm)wN_&;nBZib)HGzR%o;QzEmxCOo^27Y#Dj6eAO;iosVKEHqa|7D9X5PqR0zJC8R zXXaL682q&6{QN6A=J>~Er04&{2ki8$xm$&?@JVaFFK-u-_WkdF&OJdMy%p!bV(|XM z|Nf`(3Gx_x+amt{KU(<gx$P4hDZ&>dq)v@FAuM^}&`0g0^+3?%lc7nVD-@eTH{L=Zqb;D1P*WhQw z!1wq6_!DFa{5)%X)%kaS{)bPHW$?3>^V{FMGCJ@7r1S6Vo;*QT!_Qs8_aiv}>GLl* zLDs^LU&;5gS4Ahkzx|h;An(E#^B<;i&PJN^Px9lD-v3GS@47W7$b0aUR`K&k%eQ}b z3*BBhT3C=?TlD{)%Y)JgZ96!jC=#%`#Zn=<$j6A_*>VrjC>0}@sAk!W6H>P z@Uvs&x0_f-et_?el|QwN`~;u;X?^=k*T1cMu#6mrpId2(AN>Bmi0_}vzkgAP@1G}r zIgy!v5>>yyW;FiU^74A4+jG_5KM(q3zViL|t?->^=(FXGT=}s^YCpLBi}0oSPx}7U zr|`4S(04QCWy|RHa*j_HDE>D1r0C4r-_Ddba^=Tbs(j|(e}tdW&F;^?9exH=Unsvn z!IqaTquXs9pS+^@JK*P?q0g2#a^=T%aeNVeUiU!$o$x(p=(FWz%jkAH$0rLFe;53O zug#ymS=kJ&Le?aK@+erP-l&{H^*Yo^ur2K6{-~Qd$ z{@LBYbjQ==rC^XUo^*%Igz138V=b>=^AG?0D#s<+jWH%Y-yv+1Ife%Pq0o35D0T zzK=F&y4=3IKlir@a58b{~)kMsd{ zS`7be`01zlzC4B_eg3h~JCHh;mJu8L!Wj6@TkX`DTSnsG#}j7$v*`1`q;#}D{D$xy zY1aG6gW$hWM$Utu83W%n82+*{(ipxs27bm+_{+=4Meq}EvA+GK{LYnSq$zx7to&7F zq&a+dto+qw-T@%ipxkl_^$qZfBKSTRN4ncdjAtY+D-?3Uq@7#2H6#jiu`xo;4XtjTQj-4KD>?8NXCtI!X_3iJy)JGnb z{M-0`!Kcw_|Md5J(~s7-A-^`p^)FY+YI=tw+i#%XV13YFPM$?e`~8S zA3k~9dOv9{{PkOfT=-dYtoL0{+3AtzJ{8`APk*+4{1rcKr(>S~RCpVH#zHId>-T@F z7H<=L@Lh}eepZu3{%s@D^S^7povvE4P52YOqjTUKA4VdvYX6t^cRFpAyG=L+KR*V( zeVLuMTE0!F^Dy53cCkLcbp4C%t@Xka*#G2AwSNB-zY_hwYMamq`Q5)h?H^-S_P=*E z{I|9VP2uO+t#AMQRq)^0CbWQ`_QDLy^Jl$@@t40%xB`B9SL^d9y@mYiw+XG`7skLR zZsh-9n{X}s+!X8c+do78joXA|_+mFJeEt02^@nXj5BRh@-_Ph5o%!FFoJza?xJ~E@ zKf5>Im*xcNFVg#;%IDz!v`x4XKIvnHuW$danr;`y!Oyyx@0X-Sr~RF8-$EZQjjPl9 zd3^r<NfkYtjGL_((4N%ozAZi?ID)>mw`S=f}X8&VRYu z`p9bd&RtgYzkdHWqKl8b4c~5Z{Q>+E!d-ACS)`hN}o{ja=VsQvMWKL6nx zedK-kc_#U7C!&)-*LxE^+{;HkgdhKf75%Ti{@AnLPDkJ5Bb(r-S>o&4f7Wk4a=~pl z|MCX^_^T*N$6u~8JAI+lM=pY&vz6~hZv3g+zew`Sd?W$B?NjT0=XWJc+p< z^WS!U{^={D^ZqA)7QTOc@k!DXzUQ(jmLLD6|B37Gnw})R;HM{A?3(ss>GlHTwO zW8jne@Gm)ufBOXAf4@BX`Db(-DoEG29v<-&-FYg{wh+rrgz1is2aY?Q_&v{-BQ0aS zbbaZLfAegMuq4&bR*kf5CyiG#mb7@QePm{``CP1hjwVP@y&2Ke3VTgg?>#&bzGt{4aj$AbR-ep@I|bZ@bO< z_Rs5w-#`9x1v!d;|5)70|NZy=&glI6$Bw^y(4{922p7!4@z--1w7UB(JO7yWFZ#dy zfN&xFgliwL-1q*Ae}B4o1*t^)+qUuBpWYLl_IEF7PbUg1$#qHC|L)@ZL)Jvc&%VAR zow#x(c^ZEHe*XODt%{7_e`w(QCv&$<@PGeg6qcp$pQJ7eeE;QMEX(_Q>H8;Ru`KQ1 zOIi+bNMq9_Js;&~jJ}Ub-#?jwJ@jsH>m(W>QmW~(Z;`=PPA^R6f zKE8ib{r#6iSeAV0ctiUB%m1Wh+?Sp&`G@`G3F-cH;MmxQW%>IpeJ)*Y`xDDj{l8x~ z#Q*)5zp9tz@7rLN>Tln&K>po51K+>-L0SeTy&lOwj%E4#IFkRXw2T^>(7@~eO@98_ zk5S35!ZPchs$S;#-QEuP9bXCfy`*LM-QD;3{Xx~s((93Yie>5b$o@UjGG5OnydKFP zC6&kWkk9U;()WKduq?eE*`HdyEVZZfH{~0t{18V&@jki}&wm8VZ2LcoWw!rkVOi>b z*`F<~M`cofN&b`7>-XOiX#cG0^|JpQmZjGt`^lZ^`d|Nstb1|uLqu=TD@Lc&gm@B-dJYy<6+fb3rsWY z0~vKv=%Qj9xvL(&|Ggr5^KbUT!1&24tQQ>L!&)x4y@_Qh|J=VP({-0Gw|yk7N0=+C z^M8!xRJ>v-Uj^0|R+n$mYYO#Y`BN;*dH=%lHfEX4Dc`?(tJ=Q?%dFo`TF?01vCR56 z%H^y5R4lW8Z)RCG+1o4Yo*m5pFY;eiz1-%PAr2{jD=bT|r%AUd{_)=y%ToP64!F%B zjI$LmY|Y=}e3pNwUByncrIuCFdHkH3!9%ToJ&f%VJlsr?nz%bVhd`u&wymi*Kn z0sk#5OTOIxZ%gH|AeEQ=cd*R*?=t1_G_syqmVBe}*YtZE8Hw?i6UFgIeh!R3t)Eue zl`h(6Be%fMUm3meFSUjAr}fkS=}MdKw~>MHvsYQ~`~HQ0z(#I^?~Z|ASOx!E8yO5g zW3~193y$0ASC?!TCgJmUXDR>uQ=s=EfBivLMJoO3((S^1@ZB-+bN)sC%eD(s;pd&O zKEJC9e#`AbCj7!O>-{3hZ?#=`6n?VLdf#;j{`K31XW{!!TJL-7bfp*FzC$kx{|HK`_v+G_v#H|Z;9ly37s$NT?V81%9ru`HioxDxBL zuq>aCI2Y@m#&WV$7yds0>z~20bpB$+f0Jn{mY=OIzoF$fj(Jl3i`D*I|FYsgfo0i~ z{HL)jdy@YQmSs=!pT)A|9X>UgO8&g+@>QD#J0u^gRDaszU&r-b>2FI;k|)sq=?nS& zFIQ6g{g1l;v;Q1O=d~>-ufcaO=KD?JUZv7&sJ*W~|5!McLdj7Ys>Pqc1%Ski%z8Lt)?T}wAC(YsKjIlm{4*UZ6m%_J=wceNh{k^Pp z>xCEY$NqoXSSt5(^v*x1_rHEWf4%TB{JiPb`>xCT(=7LTVITZ_(R!bD#P_d1UoRYh zpFP`pzhHWA`cALEgkPRU`xicIdH)lf|N5n{QurHwVIwQff2qeGodSPXrEtzOIR1RX z`u(5Z-(4x358oMs>+dpm_olNp{4KPEpEkn!_RsCokv1$^FZ>VVKY6b8GeY0Y1se&V!fZfwkypQ-V++ZFYs9JJEwJ|uYJ8ixD`?P+p|BX%B{{oZaKSy9}g!11OVAyhb|MjLPoo&e!FJ1tWA4g6QiNfP`56JMMj9p8iY{{a3q z@C#ebqH;TH&%e?KBIT>M|J?R{==%%HNn7}I62JYO57o*K&NqbC*QQSC9Xqqh0AI z@W;U~GV$dGjCB7?=ih91SCCiX7u1{TA7hfGoqxCQh)#ZYhZLFxe=+=|v-y7H@~hiF z;hq#~8(BeKhfibVXTi^fUlar1E9IvZWEp(hIsEpYySG;T&)xqOj6(mzUkTq~;%EFB z9Y1>v@{g(@Yv3o^`1zwX{^-~g`qaG@gm8dE{m!_P4B ziz}nk|D@<}L6F*x0Ph2VVoN*OoBm9Ioe)}i=6P^6IaeZk1u3^Fy{QgG5 zC@bFospntuygt-Bakwx~`u&ea{QS{s|Ds`i=#VWVgl+KctF6yZNA;omzZfALgrD_? z^}ZuMh2H$MTiB2DPwDgc$3M|(f2X%2-39*u{Hz%HH$USRis2W=z|TBCh3*z)ySL`te_Mx+mS0?G}!~ z7cKGC@4uwu|4;7uO!xoQ2sgp^nfO08i%xzIe9xtOgx>IJe@pVKw*RD0G5=h#N4Ob& zku|<*{P|WOf9pNMt?)Ak@bhoDHahK}Sr@;*^@EL!u7~+A2ERY#Y6kx&8yN>bJ#`^Ym zUzI|edu?O}d@%;Tt2Oe&p9$X=13%+xPGHeg7x5hhJ(V&%<}b%0FQv zFT&4^flu-ITk|p-nGZid27a;w{z)5o4SwR=*7v{bMr?oOHu5@rXAJz@Uhpeyc1g|JcY|@H1lIJNv@_*GBT;dt%^c z_k&+$!|#;h{MS0`+uz+kg|;|lBOBnS$G|U6hyS0AY=U1H1K(2z*MEMpoOEb~{vS8m z{~ll3*K6PZ&$uPqzs_*~?~tAm+Mo9Nvz+XX^vTOM3O7%~@lWG%RIWwq%a0rS^2!iy zwSLCS@UPe?^oMV|zzSb~{@b>?O6c@D{qmYUA_x#S!FL!OE`@irH_$N0CkHJrB8l(Pyr%D)t_RlNk=P!OTI_;l) z-VHS2+;4>uvvBi>7E zggcQx@n?R1niZY=Ilp22|GiOo3Hfc8$0&b6mEb~t`YS*G;+@gS@0ik!{??;FScm-i z{jA8Zp8q_9aQq|GC!b>fpPbLnAGz&M?fZIlq7}mmgwLe@pJRP~?-1lat3LTmI{tgZ z`uz4b-RLxDfv^YpGh>iHe=?5$&aO|2r2b!Keg49!DfH2~apYV0j`sZX@6j56lK(IK z@8IWK;v4LLwp0lZV*c?g;$Q#N@ry{!KN|mjwEq)vZ$75ifjqSL^fJ9!jClyckDHr2Hw? z`%cFVbn4xer0y`B|9$2G>hEOy$Flcd$RGD|962fF-@yO;S$q^IvuafB&<1Po(BQ_3=j%uK$T!7)Sm_ z`&V|ee*EXXg#Lduj+}TbR7!Sy%KEQup$osG}`dRXtLzk>FEBaWO6zaR#_57*zs zEsrBM_(?ZdpWn3@?Y|<9G=QHI1K+U}`B%r0^WYa*;1A1d;Q#&SvoN9lGhn67S-pG_ zmPaHlx7~r|RNR+-&-v~vm)q{dvh@4Q(!aMR{rgwLv3xOBO3Q7rek7Kqe?PAORa2?- z?_b@=l(%C&imCp-+Jf?UWOUA0T4&%&Td}l^=S%+{p5z~_UY7p-Ims`>vh?p=$-Ylo z#`9(Wq*NZuRYL;)Us#r3ujE%&FaNlzufyoyzsf`Vf4QpxIUntxIMn*_C;7L!8;}d& zXUE9@68?qoeP!0~fBpGC!AkQaY|Cjg(#is24v+DRWKNtQ*H;|X$yB5!(0o}Ue--2a*>E_FB zAj{$Byl%apTZrHPdUvNV2iLzR#^CqIa>wKQhpq~;X%ObWvHbbR@o%lJ{}1kmbf5oB z!1v$ASCB36(@nnrCXb6qzyBzf{0S9gEBq`I-*)7A|JV%E=jP9wi1vrS9e$ySAGQ3y z;QNo0D#&N>a~n+cXOt|fwtq1T`6pM9z3}53TJQUwfq!2GDT1G7;^+Pso$;TI_h08s zsUTm&7ft+V^}p@K6iTL6kZ<8<)VY_+j<)}kgxCD*B0c`&@%~GM|2=$P4DyTk{=-Al zE65@E_Hq3APi~hm^UF`yegBEz{ZCeA1@Xf7#^C#}w%76f_lGOUukaJko9gdl>BVaM zUk(uI{F0vqzXZP15?_D*rS4-D&7IB!4daO8Av7{`Qx8WfXm}f>gmTJfGkGB~kS2&aNP*rTixT zl~+YEKYTJ6pMN#x=N}$1U%&l5_EH70!FP<}`_8qisk9MAdj4^z^`R%9YD9~}O=?Z3D`et&O%TT&M%RWje>`%-r4F9P}F0yPExTY&k8Ub9CSjPL*C zn|%MLBud}^$?wsPPJD3{x$kOx{(T4k{Cn;P5&Qi^RsQ^sk^j0q!X3z;IFLX7a%M*C z^FNjE-2}h=9^o$dP7~kRwpQDJu*>oOOXa73l0rw>_Xrfe+r)1^J7W3!244*B_%_4u zxknfU-+n8<{pVd5o&5gq|MuD=jF$Y1CQ(#?QZDdc@jaIT$2( z&v6~D|NnRu`2fd1MQi!TKk;>6=I3{yq7eVI=U>xS_rmuNR*{dTqmj7D5@Eq(rn{FfttVGQz<4^rr3$RCgVd6)CQe^d~q{8@z^>DJv1$Q8(6 zX-R(l{B!E93ep()ZR7d<@9A5s{ttG!w*RH^KWI+_auxC?JNdp`LG6!!_4#dks)U!Y z{TF@1-~OANT1lnXPD zNOR=Rp1|M!!~xOie}Des2Ba?hy%edpZS*-GP|qW*m~ zNK5FqJ*Lc;P7vzyN4E|0f6mk(ap1c~^5+{*A^v_TB#mHy*VFv@ra#gCIFC7pLjF@h zf6{4`KiP$(DfDZf;jcgK0`wQwAQtG)ewGKniu||pD*YJsZ`wZP`ZuF&858nAsN+BR z4D7$HklYLVTU4;WwGj3%u0i_3{_e><>@TnX%x97Rek~*|pg;9~<@Rs5${$t?{oWd+ zKlCR|;jdq~|ET}v8e{6!a%Q$3wro{B;iN$nI%hM3zE--u=q!U#I1S zr~DPh|N7UeNyb2b!t*@z%iBNMBRaB19g4_u=(j$gtUp}-Pbh`|p?@6o7tG|ZUy}&^ z9gD~p(4Ve?eiGS{#p`O4iGu%U^Vgqeh5ooAvKsnLEtUO0|3s!(HvGr@f2{%xtbbgi zIj!v40GWcI(7QQU7m%T`TM&i~Tcv>Gd8 zc$KH;RlEx+z3@le0`(hT?#S+rFCyPSzgsQ+ZEKPg=-0elwf?*po@JRS|E}MBtCb~e ze2fV~6Up`Iw`zK^&!B%D^e3GjCw^D>e)#Gix&IvzJ=yxWnq(UErz+@oN6%sA=8MGN zR#p59zgO6tHLXlrtK9#Y%KByTr)`Azd!#0r34X!rRokDPeU=qW|9AV7C@Zt$CH$7F z*U8Un+>y2KRg=6R=$}_LKL`A7ssGL|0NZ?9IX{73pZ_yn@6HO&mC*m8{i|>CqWIf| z-yc5zU(414h9svU|8*@Qn-PD;R?6j{crgA{<$v5Bd)-@L{!e13qs6`Hg@49OalR_M3lq`Ot5h4m*)NDJ#dj2-Z(Sy+FfL&bh!eTb^opZLlxoIlZg23nikI>h`v(!%-@ zalIcC`5VRkgd7+@S>*qO^c^^t#Q(kG_@yTXnFaoKqy@gPzJ$R4qav-uZ~3>J-w|nl zew?_UkhR0g`Q4EA=l7{NUgGyf+MnOABCW&^tpBYI;#j@YwMc*XKcjc}{U6BpHbnfL ztwjcauj#{|@1EM8)%&Lw83cZ+3VhNC`oSLzzO^rZ{iep?pQ}Zz;HPup%g4Wj`H!88 zN6_;lG5&k;1%|97Zh`gR{4F=s|CdgS@n@}2^jzCaKeu5*-hLP_#}xnhr+Qiaw{*+9 zO!!h&<-hQGuuZG;?G227`z?>K8ZSOh8!(ht-FUSBE8E}k^+;+2KdG&9|EFl==QyHj z{eu0jcMH^?zO6gk<`_wF7dXjyM42z0zbgCR2;X$IBipudB<%`*UUwdRdHmTc;t$D__>=;=8rteJ`_f=W`nx$|3`+H#d zZz}4}Hoi?FTEBtsPT;TKdS?%IYhM~M6nw`sD)IZ#h~eNHCh_Mx?}q<-E+x0$gYnPC z%KlHd8Xo^A#q?l*eh?Ay3-sGt@hE@g`7djHTQ=nh2R%0h{!jBSe~7I8Cq;IZ@h|PX zj`zU$&&=%34)->a=W+kNy90m!I~v0O2}{Y{@V}{vvj4TEq4EDc?>VTje&g2Sp5~!< zE!P;3Zc9?kMf09u7aU(`%))*&=!yz@nqMu-)O4vhUg*z`skdCy73psHUug4fyOgQv zjZp#+#bI{so0J>2INcoIc{xi*o{d*LV z9O%!SF^4-}y#Cj#i0lF1@&bRpp#SdPMPxttnr8g{FX;aa`~%=y@8QoUPqks6^(i8U z1^d6u-~Oq;L4V&OavXf!z5Mm-cfkJxipVMOlbZAA8+W1qGq8x91wZpO73}{^8`fk{ z5jh9G<39fSllMSB_~*ed;KTRz|G)M1ztd6hIv4wwzw-WfT-1AF+34T?@%kMvmD^Rl zKNO_@ohsNrv4|8xe?|-b_IJBr|G`D%68Nd#@aOA3Y0K)n9n^sOFa5B;{rU7i9J$c{ zXc3`_D1X=R*Y6(Ci|L0Jk(dU=Y zlaWQ_Ht@aQ^4D+u6!CuyeZUm7|J?lJ-*jgjtAD~lJAj|?HxItw`2SX4`MVeeXV&Nb ze0lksd1vMFSKs$}u}rS2%=Q1wEGvKg_`lr3lJ00LUjJGld?8brpW3qW`ZGpcqxR=0 z{ohT2Z`*bYBbUm@pR@2~-51LIqK1|AC-@z=m9p};4<-NKlsoWB;wIsMKTIR2d4 zs50N{cYH8@PZ?jn{+*>`B z{rU3xC#j<{pPKz?!T%2&f643HmQ9FWPU4%R|Jx&pN#73a|IN3Dhi@zD$Qq9+B6p$u zGdPs>OTWv%{Ud!wrGKvDJy5^#a!1xBqllQm_ip6RcitYyhB}JKAnJId zhg!e4b{yNksfdgOpXlat;8(u>-PBM_Qoy&q97O+s`QmR2wSM#XIM(#uV)8ur&R2u* zD;yANe%_ODY*~w9@)G#QH2(bbr{mZ!1B=OP;Ag(cpP&6q9P2Ttn9Kv;tpYz|68MS5 z;EC9ET!f3-xmCD`0yo$H*pKBf9iC7j|n@fia+rSLH;BJsei2R!T*mI zlaHX^$w$Ae{$uaQv0cN9$zt%6-sWuozkTh$pJ6}EkIL;IR~7b8^*cU@`N=@J{bl}_ zuK#bt39MU``L>7uyZ;Bt_`de1?f5Osi}fFc`twh`>_02>jT0)jKZ9xZ-)EKaeeEyX zNniVOFTRkIt;~1#sI1?-&3C*%FYy223ViXniuSJy3IFp2=D#+U%KSi%Qd)^``}$Vq z{G;6d`|#x~KRto`iB<6Rzh0mI5pw;q{HML#i}lezMO|Z&|IfX|Bn`aUAE|fuW~XL6 zMYZE_{rf>4?GO3&=Yq$2vkOHNX(#Zr+H>K{^1n3y=nM>R{nO{qK>w%r{qOPjq|E=m z{7*c$u#7*;6tgW8=TnKhOH{YZsNzzfOsn!n$4PX>N$LaJ{+3JLU7g z_2Pa)7FZ{V^S|3y>=()?Vg7jsq`TpNAuY`R?u@i>{aLs^EzJKmSEQSq9%Qa+{(0@< za{j6cej}v)`HjW>K7L%qeu>`+X@7oKr2Y91SELpB7t8s_D)@IJ?ayx{?)ULKR_vGf zaY*~~yCCh)?^=;o;s^GB%uVCid-%@KY8Zd%KZU`J;>IigyPIMD`;}T`B>1)<>winX ztE%`DY;(O^p#H3TF#j6-QQ#M-z_%Ho|7tBV4ty45{clNMsPzl>|FEPMc>;WMkoC92 z#m}&Se^V5B2K=1I_{X2XuNN6blEF_M%AcRp6Z*lQ48G>RxlFP%uly(Kzd4GefUh6M zUw?9M=)Wb3JO@4*&Yv&puNFmSfS;@a-_kFRW!x4;UJ>*MS$|%Ni%{o(fv?j>ku>m) zLDoMH7vI(&`oVu4e65wg|3&?`N0E8pJ5=Bc`gOIVNV=eZq&oUDz<(Ef)@m-3{LHKT z5$%6R6qye`8N*+{en1?nTPKQq2)>&S|7OX?!n<*19DA!-6!{$d?2l#ouXR)s7EEDz zU;cal+cwO~a_|z)+b81s)?Y9^){cGNB#NvAKl2kApUeDPVg2uqTSk#};2Rf)pI^Im z6z)GAV&2+s5)Z|{q^0(@(El(ZEws0VHmA`4 zXpOXxSi63Zc>ie|q=oa1MgOI${s-Ehvi_f;O>g$p=|AY+naF?5=Q5mD+ye98{He%8#rNgVWF{evC{KQjnF`y=K4|Bb|-$frB#Y4DRC zSI+;ox5J}fc>d7oJ9f~2z)u~e%+E;=58pT#_P=KbjhuyR0ppeVr<(7e z8t@%K_{Ig{;inEo{I}Ub>w)imPFer4jUnU9#y`EEcVJ2JJE$If`y%D?S1Mma-TrpG z6UV$;9wfC;sj#yzGKmvd{!5>SfG?|mgy#>Q=(dA4g?{Y}W&1CECOp?)1^u31A0&4} zf7UK^r?8hdpoJze( z(ErD)B1708M*qwBrcIdtRpy}2r=b6T!e769{)zOPtJ44fEdOPEHV69GOr=+$KlRO7 z-1TR%9;~?RLDC2D=eocp{$%=1-}YsPevFA2^)A-GalXP`KN&uN_1OOsr4wQQ-mi1# z3+oT*mfjWd67=V6;jce$BJRH%yOi|02iN}{%J<*RtM`s*n=0eqOs;!F{+E@%w%^*Y zS!;ICwkUtCFDRG4sXvCS{*&?ZhR3m4>vm8R_~}9Td12xU&mSz=u!D92KRXCtza>oi zQUA@_xPx{EpS-AS|MW2Nt0#mv z?XMSq-a#$k8_y`uKU@_izA*k!3Vtu}lY{s_)*T-E3(x6M4t*N@jF*)4OZg(y z`Clx5>gUi&;OhszteF2o#jp49pW^xtOG|p17ad-$(TV94v(SfYcW|{P8tJz9|IA0@ znXvvt1Eg=kPHFvzhDf8UR6gGZ>p$p`eh6vd`-bBbYbliPm)3v4$FlAGJ3B@Gg8#*I zx$oF&%>^-C&W}U75NT<=UEmiXE%Ai)CoUpg4Y1#rV7*81y+{k=?N<*^VOOAszFU5L z?6O|s`V%rZ64Nu}{8TaR<3ESAKYu3D{`^@;x5Rk_z47?HFCs12YpJ`O|60ZIO8oi( z^$$B5$4+JLq#5wP?i82!la;?|m*ZHitvl&w;5+h_`KuPJWRO|q{A0lu*SiJkH@y+Z z*7uAe8>+!Dc4fYF{!r&X%{=gXMUjo*n^oYuz<2bGBAdZaRf%uv7e$=lXQ{x~z6JgL zqsWioyX%C%{0odf!TzR%D6$p&JQehd{vQ}cvcb20#y|coZ^QnHQRFx9Gj#mzFY*UR zkw3ssS3$on9sYkbitGYETP^-$QN#tlp?EHn%DKSyxAb|a%fCE9|A;8EAAIeH{NqpL zkBlORz-Jli@Ezd0!8d=zpRa!x_8%KXP6+xJ@#iOf4gQl+BoBP!N_F@S@K1xEqypc( z7W$uxBL9GISBdYK5JfJ4?^1!U`wse_i6TYdYgh62ziw+B)9$>DToLr&^Az{;FYV_z zmJWU?_?mC|>lgUiUAKuB+sqvJ1J~S6g#OCRSt;z9;mb6`kTxPc)-cRWhc43$uh`#b zWQutI#mI{NLK}bBuw@!nv48AeuP`r;f6{M%5z;vcTqFY(36(LWI*Cm`So8PKkrs%x?Fz$O>gjZ4=eM3uY#ZEcYFX+mRuy``|kg-8LKhZ zr4CH6?Ew67Jfh5>_ey2`hVH)OWx#;MVi{k4{hNG<`#(n%ljXSo)5YihPgzXn2>i#3 z$qMi->HPD*DFghG#bg!u4i)&CkK))MR!qJEzd!|kvcMlzOuhzRvuhNSLWfuTSK#jg ze+~GCcli51^%LkHQ%oG-=cvH9EQn)+#}E@C&AYR;m^Ao zvg;4B^1lG>ue0Ev0^b{iFO^IF^}qC)P=8+U7C8Qto(=o2EGGHj8-L;N|Lkqh4}Jmo zNhsldh|LZaS?{*ZE+rVer z`14Jq6LW7WCUwBqtl>ZYm>O$lqn*X%PVh5S&@ViHX>rj-q66Q1M+%e55nk;dkzag~ z#DJevM;(46&qWdozP7GPeD6il0DOl^{Kc0p5giGOfE zIVtFO^3VT<%Wc`f;`Q_j@}Is77yZ8RH&nLL^RM1SBi=dEpD!Q(b8mi6ESsxp|4VhY z()-pR<6q8k-Pop~UC69xlz*dn^nZQhe^_+l+VjWeLx0w@%KE$gSXqCb-|~fWA8YQSKY_1lphEt;6Z~4c=r7=#Rp9F%06%IM-3ESEBLDi&*%Ey1E}A3oRnX5` zbz)uX?4oM)0?Wu z7k-nl-FW_&=RfyD;4j}r&w=mO^Ur^}_TXpkqUXWa-OZn`z4{QF3w{y!+Iy7!UvB-- z+n>cl|B7AoGWh1cJmO#O{~U8CHh1MNS_-};mcRWqU7`QWT{Pkav_<;!*Pq%A`d9Cw zw}79Jz@KmH4*glX=&j%z>hrh1!+`bIn=dERo1^^i=imMzvg^O|S66QTNO|H$)?as6 zIHp)UUlEb#x=yJ!^b&s4C#b6rO^;lAZ$ChV{8uWbK1 ze}%{Xrhd@Bb{DM&{W&V=*9}7auir%*fuG)xfBdHn2LJnA)Bt|A3VddT{WtBREx|Wh z`IkTG&HAyyO?K1X;9KA3Z-09>;=k2$@;>6Y8 z`R&>7bJvh(?nC?2sI0$W{Krf7k6V9e%niG_D1MQbbh5Mg`?|eRGh2}G)>sEZf7WOYjTDo88_S-+#EUDNpoUcp7=Q3O4BNAwT>rOoX z*y18)=+9`L#DrsnjaU6IT>oiQa*;H{_`A6t|ME}dmtG_W@Uzt7mt7>y!Po25(Z85@ zNDJ`O)#6hRc>w%umH3Tr@(?5Vrf7BS-zd^UT7#dd7XM}sX#>74Mjic&Z}E_J;HRm? zZ=~@M6Zl@0_=~H1NC)tZkMOX6;Kf|omjj3Jfs`= z&LDh&Eo`CYyTM=A!b7?X{#Sutkl2^CyWc}B;HR$R-~TWS>C4uE-v@kqA7%fSTR-&n zx7-K+xAc$!;JZ}dXMz7fD-RhAzNIe@{gw0IhByxyCGfvj_P=4`Di)6T&)W77>(I$V z#(?h}$V0!p{jdM3FZ(LqL!JcRI7l6SOS6YO4ZdcRvi-vq|1ONbe$~Z8CV`)%f_{PD zva5$Y3%*MQejdi3hCSsW&w+1p@VCEp2>25`O{)AD`5B_W5JGt=v=0Chvjae(6zqJB=eA_ht{a*Q4zTf?CZ&qW{ z^QYE=uYXRNuQ^#i6p$%gUwGKMNc!_e{`P>f6F&s;~)Chd$2ms zj-qEkHniZ+x4r@XhHi}*b-+VuR{mD;uV)Ii+(NggB_wz4*OzAyX z%#2Yqaun|W;iA8C`*Ybhqi7WPN#Bfv70S23_|IsuT-+Dx{#V{tJ=jBQN6|XqI~w!1 zf5x{x*moO7(WZj_={(}Evi%=FJc>R9zAFfyjSZFkEAw@h{d9^Aet&eD=wtj>Y5cdz zm9NBoq4s}5hfZwg<@L1IRMda*{^dWBUH=w-ldy%FuPJNGc9yKCcY>d4=EA?VTnY4k zSdB^ZKYyl}|1!&;ub1gxd%SY}XYo5;I%ieye+Q}mG>>#)6TaR|)2Czn&BkT^%{BeP zZrXgUS%042 z@m1-TK06Uazhmh`EPwrGx(fOYFLBW?Ykzr{gTHArb%3A4h40t?UE#C;0odQVLfQUt zx6fySJ^jm{w0Ba(&xFr|ZD;kbqwCchB{3s$~`x|Kgw&qd)$;W>* z?ZD59h&T5B>j#`11=~J=mMuZi*NHzWzi0eCHVSf0I4rE%bkr zl6>(T*#48^+duxL&yaPldkeh&Y)=AzvWL6}zV=D}{Orl#r+CPR;M-K-XG{TqnumM@ zzTqhz`YX5pre}DF1N_t#%KQbZ!*l&7V|gd$0e=Jd312Gnr2q?c{N;V!k3ILXhinGl zxSBsdC$kfK?h_CB0erg(eCJx|U*I8Iz}J4oUw`rn=wIj|zkqL3fp1>fiCy~CL$-lm zpaNgee`%42YzLoZ@wb1%u^z0}j+-JzqyEXdc`B3g8L#r+y$br5ddME=&-$9bezK=6 zdv3XhKY0y*e%@->{|gT}0=`=XenA%U|4I)z3BK`L{`#F?LqGVZ zz_+Ww7vpc0hnxXlyN=D$`;I?fjK9?$QV4#kgFj#J|8rR$;srl@J%7IU z8^j;@SHL%I;LjK1|7#B^0bln$e?D6S`+wshWC*Umsla#H+pxjScGCpRzfVr*q2D+D zU|Z`O|2u(Blx?;0_(M{i`C{Gd-~KJ|J6@`{t9m~lWc(rT`A%%`J-g{(=-01&T4V_4 z;8p(@%mn}5-E=7UWEFpYh7J7tchj-pJN?FUcmMO~JzJ41{wj|@ z4ZH9c-3a|@8UB1CyZ+@~xsVC0s`xiD{%Emd{!!sy^hfZ`1tE#BLl1+W zeO{Tr;6!-zXZ+EL+4t|E$H2GV%fJ6`&jJ6y9(oe|bQSpKo!}qbL-WDczN&oxTj=~R zuYYalI`;*3}OGwCAu1$*di;Ja1Oukm(b4bShPw+r^? zqu&?*8>%r~S^50Oi->>Ax61J!sjD3Sx<$V7TJl>}@0aB9e~oYJQG;cbmh-*f7X;y3 ztKhSBzTaCFSNiO-0$h^FzB^|Z|_%Rd|&@p_+Dmqx&9LH zvx4w5Z-9SQ#+R2r)_pzL_B+~=?R7E!H=4`!*K7V4^xGG7V$*cBNfu^Bn0Nc)DKP)L zzF)|M<8QqE;Wz(Q;y0*G)`0Kcqs+H#3=dz6=MU#MuT9p0Z`iNQuem9F{0R@#ChNh^ z2*RHkCcg0e&3t2R@;&&exyt(2hKVo6--ETuX7KZZ@SAK7kNpMx6WY`!PVlVsIC`J3|(KGQRNq=lq1)WC!>KLHKQc2pL~i{_8h&ViShf zCc6dx->)*sHi6~8{m1a|4gZ7xN7N>J!8aXKw*S~I;p0yjS)1$!Uw2%YzdKBP(-!Dw zwaG#7(}M74ZViwA?CqV{m+#glXTeV>RMuZ}U�%`8Lg;;D1n?oWrMvNG|;^S^Os- z>csBPs7(sN*Pc|?pSnL}`el3}|K0y_ZBh(=UXb|@^Fzm%*Ozv@V+`11Z&@-OB6ug1ay*3T>V|K@j?&xBH=s`iiYd9dv^tSv2VvG}LX z^NB1mB@xq|5?Rfui7W}Pt$69DC9;`#&0R8tx$xd*dLm25>kM9&)I_!vFY;U>8;+L) zuVkF(cf1TU@EyF|c*V_3WEprB;gv88pW$2*TX@I(Q-t5ozXzw81VSnuuW&692 zhRXhOzR>=fbK(xt6a0c8{JA|o6?If)e{`L%dxQR7{s(9Gk7qdp>yoM9=cFj>HxCFE z-xq(jKdUh*{+c2FbQhH4?^wsm@t5XzyuYTv|8Mt;zxu?-7mjmP#Q*)^8;X_r_V~*D zK#o$nj*KrKe=x4a{D(Cj5-|kVe>bKu=^TOWKk4%j_+M83X9)bY9&$7Ib`|*6yngJ` zw;oareA_1e`o;M->pbLE@C#Jni}P>3^N^b0v(5bV=X~3Vl{h@)Ht=&);0yX^ZSasg zz_&X2>lfyqP5ItK>VluG0zdgX@Hcu$J@8FG@YkPysvn!O$wTe}KT`$1dl&To&qEr5 zpY|hv{aL#^u|lVZGzH(dg+D*Q5Bo6%4ApO5^)xQG2@OP}g2EJZ}{#W`w=>G%juYsSg62EW<);|NE z@ag}_{4bXOe|ktS@H185XYcRCuI%)X{@|wt>3@bR{zU#R4;cu)R|S4XF7)sAkVNq9 z)u%E^C%5)5_%r_UkRjk}gY>_p-*w~d@5=Lk3io=575suA{5mvL{V#d{!}LIZcE#l( zL&49e!QcL_mi^g`eI7C#d~;3y{G3xL|Mp}3J@B(s;Om~~&!!ykkn!N_Yw_1_eG2?T z9x@U9Y!&#a>pQVs59E@Y`k*hK~EdTqyu@C|GFBFu-Pw+ria0|4pWCu zXOE_*z)u^&pP#w)K}H&9(a6ade=Aj9|4H&oRsN^a&g*y&^uMk*{Qt^mdI|b77=Qf< zzvBMaoi{~1Jr9AokjwlZS^PWiv9MhSBO|^C-=yKMU*Hcq6dADz{7e=2S&ib^F7Tb; zyH()pI}KoM_TC(E41BMazy0-l9%NVF$)W?0{}K%2nUsZim4A6o3wv($EfK|n|9kM) zFFb$2`WcO9O^WwWJ@ngE@PB$qdp08v>rX>}rV9F#Z;oe+ zF7BaCq2Hx~e)Ac`|0xf#LBH-!{{D9f`n`MT{m`$ypFdxF7UN&gKL`5LRM4N(rUPqu zbq{R?{T7w<&p3_s$D!Y=g8qUU@PEl3YJz_Ahy2SwS8NY<1^QosetSLs@t1a}Khs6* zrDo`NsNjD=|BQSONrQf^j=z3Gt$3Dk^IqB)`V9~8=X(WyjlFaL_!$fN$6wwp9oURB z9x@O1FHph$Zj^sh&SL#R@U4ky-1|RSaq+BSuf6nL*xxmQzyAgOh0vc4{Tb2x`3dnT z|N8Ew??XR(nm=Fk|34n`F7#_+`11=MgZ^22=@#funE4v__!IpP{qvzeRR#Tm{~ONU zOMixb{c;}mm(RbG=Knntf%ZoS|M6$NZ2bTCSO0zdSsFVDd~X+I{vC^oXXnmg{ZH6G zPX+rMMWLTgJp= z{bv_F3;k{``YX@>m^{Ku%AnuYP+9-dC&M%U!?3Iu8#dKN&q2Q~OPMd#siD69XB!Lq z&vMaX@Qq*d=d-Ty>{;d|)gMLvdxC%YE9f8gqKjUFe#hp?+}odNO`(6Zm)r*Z>F@Hl zzhNr;Z*$R7=uc9?|8`S6J3rP->O#N$eg685)1m(*7o|4j|DX8#-|=K0_Usd05)1tq zAM)34e-8TRy67#?@A!s4Kih!#f67Z5L4W4Q{Q0gHh`)(mav%6vi}>@!`tLOtje`9R zYxwg``hl#_l1mSPpS*q=BNZF3>)!>@7B+6ViQIfA`X68LpZ~#P!T-WUZUetS1-`u@ z_+ObweeiQu@YgT$vrI$}zGfwVzOHdRJN}J{Gy^|X1wOgY!j7*ok^8{UQ-N=72L0q{8_%IT^+ z{KKiOR3zf>b;9>{L9C;MQK>UkPb|kzxOKm)^5stQ~G?7<=_6#_B*~R zuJqZ%GQNELi9H$5o@wqT^ZKCt8|%*}vhhFZT>gCNv;XJ(!&{~A+3wIV!^QIZ-`|9O zZ+CybeEiY*PG$W`J$%PY=d9|zyIjAI|9%aYd{Z~k{%?ct@;hJP`fEw=R_1Fh*T?S> z?Xx-NUtZ%2zm;u_6Zs#2pV!NGzCeD9uPXDa(puGLz5MjQ^|qVT!9ip1{?`1!>=l}~ z#dM1K_c4E%?|E^BCLQUv*uRxL#UfHxXci)U3mklAaW8Wd?Ee($y4WxHycYH^Lb_W; zx-a%G^V{DIY3!11O8PUPKfAZGenZxO*WcSuzl@(9#WIuHiT3{%eETcP{E0tS=DYlk zmx&BW43+y|W|NGEQ2+mAA|p`#y1wFH{yK+Q*n*$ilgZ#~hVsAump~rGH?MK` zzcVGCm4M$Je6of=KYLm{n>Eu*EZ{ph*nfJjt7u<6Wlm{4jlFp#Q!@wYIyA++bklV6 z%SD-*m&E;q9K(L0{WTBiJ75~IkAVGeA>9oLAsvBqy5Ih7mohc)R_u?!exd#KKGH&a zEpfpC^R)As8nl08?T_?@7B=K)2eJn7pVW+h{JXN_+3Y$cOq8 zAm2j2T_ydrZV6ck{b?%bPt|p1v%$B6pLgbUhENf=aJ7Hli7r9>Z!qs3_Y^yMHB++~ zY5(|NBBb#Pnrt~}{t5YGDbiB^;#I_ZCel*>Lx}$`ke2d?5dSNMU}_+MRd{MbJa zRT=+j37uKtgE3^)t+4+d{_!WqfAbQuSn&T^{^g$~x-+Bqm5^oNYv16aAC~rQqJHp~ z3;I7*<{KZ$V#2pVIsPD=PvFxQCFBe6ox%8jf69d8L%^4nzaszs60#C}ZxFt~7Pb)Z zW%kdD>C7UGCFD!+lNKr4zr~S|>953}1O8Xw+k^0PZVeA#w12A-@-_IbApG5-(=YRX zK`hGO_9bK;_=eAv?O*QwkoaH5PjAqfz1FdWYz99=1wL!onQ7um$dBM_7W3C{)OTjp zJC%@Mz&ESFCwIgC;Qt1GstSDjnAYs|2oh2M4U9jJd67wR7Owgq?N3?$*H4LO34`mB zRIGn#AEDg;`#ogqU&{H~z47ewvASd%_-SpG}=tkBp3YTj{Nxog7uii<{fUj?=tpCh6HxmCo$$|RydGRdsLOpT;d}|A3zN8@3`qKn{ zVLeg|zN;mFzNo*b9`S--VC2G=mH(L~@$CNBqDd`$YARK(f4slli2o(;RbGGET^i3; zy&g?&1K<9Ta``*6eyI8%zU#ljugWTmXD#MMliJ{0Ov?PR+ry(jk91}&-iju5!1peE zg-MnQEPotf;ya=`vu;_@!~lM32W9<5yTYU2aC>KFaYU2m;FCCI{@C4N z!e0<3KB)u!o1#fe@H2z(6MqelepB7f?BOlZqz(9Kos{k0CQSL?4*r&{(WD*t-XQ$Q zobc#Rz7zcHXwn{hW4yBdoF<_vf8_1o%zEJe8cpKBw+G?RD+-x@UuBFeXW4FI6ZS79 zW%r=}wMBXTtEJ=K5zD43>t8cYbe&uMfcB3#|FKstJ!-@F^9C;UpG<#V8;m~=$)#7o zXPfx*h37vlnO;hcV8Apr{YfU7F^WWnZ2nKOeE!8X{Wi0P>0U0Me{mdq>pT8@`TQU0 zclrB2-S2p5e^u|375Kuj68{AF{^tvvePKRr-Z%QP;a6|DmL**t%+%{?&5- z=L`DZRrdefEAyG~Eq{Jij&Ho6;*3?kO_l5S@o}^>wKHqnyp;R{e%gEfe0lt@Evd}c zo+!81zv-VQ=UVG~6KS%cGI?kW3{{j4C`)Eh- z$w~fv!xr#Q?4zB*PsroX&)y3D>3y^-_ywo=^KFv`uonO9qdmdbo#W3>dlvi)`)F_Q zlM49r-5CFEQMixx1wXZrKi@PR`iu6_{@`a9@#p95gZ|=ubb#Rhi~RYH{or5RM+bp# zzRaI*D(%l&c=pl3;2TT%^PLBv-@A`K3cfyqOZ!XK{$Pi|zr2q=27X#3e?D=8e`OyX z2EOZN{`}-4;Fs*9BL#kg*BPnU0^1+b=T){pq@CCC9$5doG5+47bRQjM!~HL{Co<_2 zy!ffdpucP%9Rt3m4u8Jw1o&h>9S6R(E)Ra?`~P(h@25|KPZE^lPjlr)uD{^i6&s#^ zC(D1r`n$Sr`{@K5@B@_jx=o)l;S@I>e^u}w*-xJa-!)K~pB7Gj_x*Gd_=ZGfzBiow z9{cID;Aah1=J(kgKKoB;noDPb@3kuP$(B&@<=6kTnvQH?aUpql5Za%Mo@JzB<5vEB zKY$fN{|nGxkQ79J#qYZD`1c!s7^q>w_?OUsu5}aU|CajqzvbgE8FBA3;V1a>4Q0OL zg?&ofD?#r6Nvq$JeZ9UTXG3BL1b{``Vs@E^#fAAoO2=Fj*3fc)1omwp6(*0cQi1`qVN z%B7!xZ=KAa?*+dQ{7=CrQ~2|n@d-MZ=1$ne-8X#*e;iT1%A$S{`}OY@V_aSeht1R zl|SFo4E6_q4fuH~@OAe^~(wm;MO8Z5Dt1;`Mj%e*)kAIDfvV-<(T-0pG~@ z^F{sO{|bJ_X#RXrf7e|4JNTw?{Q07O@OOZpsRCcr-z}H^3BGr{O8UXy4ZhXEpD*g~ zo=f+DpRNL5^gsCfz|U5JpFOM}o3t&3PEEr2_q10Tsn~e+zjZNv*e9%BM89{?|NQD@ z9{gJ+jka-^fAd@U_(w~Oe-zYw%8xG}|LAtQ^7s?0514;jG5!+={odPsdIIPF#Eq&v{!^9Ksyp{=%__`#Q59 zT+yUEJ~fzAnDqU?_;X#XY=7xkVf^ZPxBC9`Z}27I{=Yf#C1m@f=>G?~|0wOIMNDA$ zkADeiVY?wd<{x)+M-vP5o4Y9Mw|K&%KY2Iizu8O3U(j#=Qn~!isun)|TmOzGy`Voe zi2em((w}(_`adfnF6h^;R@SfAgi3$q{MY4ZH0cBVSwZw0yy5YGmKpQEmX?r%g8t>o z`j3T3e|e5k?=SMdZ2Z-DKgyqz(WF1@Z|$m_|D<0W>inMpewWkHWFYw2LHOoN;qiZx zwl`~KCXN6P$ni6sp`i+N_^;@Qg zXa0H81MvUZXkvwa%{t}#Pf{+2$N$=bHmvFT5^@6ilY;1X-;n=(SuQaDnOZ{s`Dii% z`gPru{U5^o=ld}@sk;~EpKdN8dC;#ttnB{~@}bnXxr~Va!f3+qsiT#${)DR`^M57% zOPnR-H1u0k(64U?|6hzIW1+twQCWXdNf`D2R6@=`zfA@G)`#GKZ!{SX{f5EH`ZtD2 zzp+PWwrocUIS2g)H~;w0=?MQ{jwTbJp9Rs+%EIG+O)u!*Swae-KSKrmnep)d)oAhz z^ydW8e(tw)sgvsxkJ%gSHj`9Jv$W5`VCFPNmvmpm5g_GdzW=s#UTN}xYIh<;5}c=Ts? z$M}2W7-EBd!%i;xW%kcN`Bw=39Pk+*K1jaJIso^doGT$WTk+XZW&H~bA+x`X?;Y5g zH7P71)xkFf;m^D`WPF+ZT_}I2G>ai`;8&SLd zKj?2BL*_%jb+@wqCXH{z{yvijw!iH?5&!qakPPtCgYZLWf8US6NyYW&?vEi0z|U5J z??nEa(lUnF!B756+5X8*!()F@zcGd^1wS(gKV0?~^|y{8ncyb`S^rPhEIj%}e%lz5 z1->^3-x(%;Rtmi@*J|PFUFN#iME0(eVF7{_|hO>z}y)-)+NKhzid? z66c@v$)(4^cdD@dfH?mI{5{E<5l91I6#|$U!Vqm z)Usx{?`qI|JecB0(`p){5*j_>HvKJe3uG*$8hjRAD~9?Ex+=&f58aw z#~+|3@ZC=Se0O!kU-AL^F!;7D{Q2II(4TUEb_ZYc6Mw#G5A;tvKzo6o(3XGsW0~EV z9T3+ryuqfal*Hc;XWFPG0h^Zgin!M&m#OaAt6(xfly-)H_CpDKZ?_#F2?`|LkU z!yLbt>ra4w%`ktyUN-;FKDn~}t2lj?AFU3e-_gU!3dS5E1EAmgfj^(f_|l21vj6{2 zzkL2p(rC2*<6_7bSj85k|DCtvMy~()TrP`0h%$`eE z!+|m668Prd`P-jh{kNn^bd_8wZQkPz|VONvXN2);pu{-;p?O&J|S8iUWc@GFo1PQIXt zn2Y#xEmV%bV^3x>!3Uvke+%|691}wf(4WCYzr6kLezP;Xf8JfBIryd^{ogZ#!V~`j z|4Z;&fUmoxoc~f2!^6*e8~We6i?jwm>9R6ET=`G`4)|~1McRSyQh}fJ0qnozF49HN zui_yPA3{Iwzk3*b3zz%vsze(V;B!9kq{BPzmWxh{M z)&Kn{)#UO|f06TjgF)CW+<&uVP$?OL z`A0b?`PYBK^XD2rT1tk3ugT-j7w59BgP*4YpDe-ryP2hAD){9bvFE8#-E>=U}Sec ze2Bgcegfg&|FC=l{oN1I_rZ6nz|R8z?w*I}C*Zp%fBnMs@4NdPq6@)yMDXBO9)GDH z@239)KPyt1ANk^q^#9A-LBij_>t9Jv7}-Mbw}GF1w=!QkL#W&T*7coP{fFK3ckoFg z{(Qp*@VmL`U*MZm;CltW#Z3=`pR593u>Zn7Zh8d#OcnUq--F-RP4mHbtH96L2>t*! zJqy0BG5`3>*#!R&bklR-C#b-;Z-##G&x4<)0^jvN=pW>!h2T3?;EVdfF9zSM62E?; zn|i=EHsK$CmLK7N@GpU%qyk^J1^yrGrdPqw9?F0GD-V4A5H~Fa->!oGw4Y#q@aY`1 ze^lV>2AbKzN8L0Md~H+y@#p;o`mJuN0pFqm-?$C&H`GmU1>dFuKj~NK2mcQ69V+m1 z_JaSoo7MxrKn1?t1^Y8MZ3w=h8ISm@-2Oh;{cqY4{G1^C1ZQ~K-`>AFvk^W1rd?7d!`kQtG-}n>{`^&FC3H*cLcL$%Tpx^Na?tk1on!Ys}?T_5qOzP)^ar|F4 z{_MD|C!@cNri;N(IKqSPH~zm^!wfsh$KT(@_Wd}k2;+G*k8r+*3kAI6d~g8zf?!)5=3*f{pV)>@=THN?Me z3X?dz>OaB$<35Tdq-r5FWnZ|8bwhlBdD92jNS8 zxzX}3a&0VWONN-wfVK4LA?6xL*P-QWNVj}{nWiSv-2lT!%h_b09OfeS4Xv3DRw`zr~{QOgnU$ra97eaqL>`e+c_u7WVt` z=OOLSe-mkceg@M1{EvnGe*7gB`z8J|qy_$}`=^WiRY?2uU;S3je+y}U{@Y0V^FKz~ zpT9uZ@5f(Ov0vgZM_S+~K2Xm88fkyNW}TdW8`A!KEz!31GnUxE*SF)(Pjj|m ze{YE;bHUG6fuDD}GdsB>mb?kR_Cfyo^=H8UGnTv!e)>TEeCOHD?1`PR10#uS?{wU*M136HDyiC#b-;d656WUjlxb3jDN7;O~tk%fL4d=5POGVrFGW zV#zA-ox}L^wQD=GW|^hr1I)ikP+|U!$X{1V?BJ)Vz)!~Y$Hp5=$rs=|Rp4uX=*%)V zmy(s>C!LwbDwa3lfA?f5`2lfNy?SS^wHF@kRUV z%ZLm7)F6EGy71{=b$1!r4}Mk<{`}DKW%1|yz|4MVRYnegZ|$aR{}9HXjGuWD&;NL^ zjQkCLwhDaRyAQK2ZOX_|@W~_m^}F-%{15O?fNz}4fBu2UZ(BxAfp1blf8M%2Y}K0< zqP+|LKhEX(pR)Kf?8W+D?;IiH`l9|@;D7y@a9RI~xxin1giHY6yO2NM_*YxjrP(nu z1N^l0T=*8LED_#C{)5NJi{QI9DD$)btbF}nIuC~1uX_s||Mo6u#daqiBd>s;vr(BZ z0YcFJk;Pxm{&sBlYsbg}@O9tt=Vxy3%yxfxjM%|XZ8(8RI(c1xOsoD7tGnemSpmMb z34gxf_SWqE{NrRj_?l*1_}ALMwm&t@y0IM-;`cAie@Srq`(Hl)hh3^1|6af2CBIem zu8r}1iuk|ACp&%oz2Mt_Q08kcSLR!O^d0XbRQ~UFIbRn4wzimmb$B#Ag!xBF=XuOO zlFxt3>)Mmud#WROzaGjW75Fw>fBKpL8Dnf4GcX20uv!esUr7KT<|Y!MCfxPx{Bg zF6WJ=Uc_I5hkyQ0Er$KOmyw9a(Ed7T`AEbr-ee8$K+b-ez75j&GPhp+Q@O`9(`4__eY3DOF zSbtYm{|M_JY#dWYYC*rbm$Lo?2STGike_Pr!1|3VBe#K{8ie2HV0ie(lFsap@vtHI zSwZ-gL!si!>tEA@W>$R#p1pTWB z?FRjB74+LoW;Uo@1pOBLw2t9le`lg2f(rTn*oarf{QoM_btv+G)DbcNrwM87FG|QY z3;F*wq^0>-LjIqJw2+^L@<7P{Zz3&~4?_Nb8)2{4}+hj z0zd7Tk&Wp6H?_<`{Ht*PTXuqlC0`m%8zKI(Z{i<+p*8r9VQy$;IFQqWy;+rCY&IR*OIUD9r|6w@)Sg zBaYHv!B0?&|M*e*JNQ{D&yOX)fS;oR-xLk|pN%EIf}c8)zx~a3f&Wh| z*$#d>Q;B~rmgIn+tpZ=Pe?ctS1wI+YU%$vdA4~RtpQ!@hQXl@m5KCO(CyeH=U*MO4 zzaRWG75J(5LVsZ_IS9T}Eq+lfaf5Fh!{7dPq5LV1B}c(eQi1Or+KRn+F_xSJ-=zZI zFsv0T^Td+V;9JJ>w}0BaF09NOOU{CCQ-Plvi~M&fmYf6Mp%VYa%dzA<_ysEPH4Od- zzYu)GIR5^(eb|M)cqNv2z-KD(tsf))uEvtf;Ag17PfvpVOJYeW_?q$j?Jqok>cyMt zlbdQ{{AnnEzHtA08TdDYpQb|p&-RF!#nh}%>VnS}^4Fix-ON6|tv;y-e%7a4_}AwD z+FTl@Kh##7e|-2RjDM8*=JN)wzn6Hm^88+ z+kax*f7jn4i2k&B{n(_JrqbLbv_F1-m4|+r{nL7&{L$7YG06Y=Maupcd?IXB#UCx- zbzOf0=O1Of(~8C1UZ2zlKkwO5Ogc#z{V&sR=n4I`>yx{|x2m9DtN`QZ9w9L_)~%J9b#q)4I7Yd;G357w}0M9Gt{^Cs{wfl{M2Lo`32zj*xP`-0lxmYGT-*1U96k_Tl>RT%YHG36K8tWZ3_o2INcd(|Rh;|1^FU zDt_hpSF`ROOUI2t{B2P7e?rYKZovNJ+7{@4Q(;fGwO}k=3VxdAC6OT<9Ip1K=Xove zH$q$Iq~tiOvl*%qi@y#7AtDD?=}->WOfpLCM{mj9%0 zSAPCn>S)Y=cI(ukLE{ZR$Jpnvb1M`?BN%?H)dzxTbP zv=;bTD)4h&XwTky^%!jger5~h@+VyWH>H?aRN67x6nx$N{P|g_;J@Dz{gYV_SuU!83J$Ql|!MC(jw*S?a>`aJ(Q0IRy)?es*=mc#IzN4KoKV0!=dD+ai zA3i}J0$*d|!LMxp(fKE6XYjKcEA!3Ygvb8Y*UW76nG>`t_~}n6^TTC-@9W^7JwdyH zpREF)yoFMvGuytVn&(8k)^`EEZ*MEHchSeFlrTqF+U+~T2{Q2_h ze-qRHJAa0pFY6N;KEwT|hi{E&_!ioKFU?WZFW5xbLJ=0{t(29s>O``|JKOvrF0<5zm5e zKf%TRGQKeW^GiVkvIgTnNxhWwUyH>zQvUgnf#VOFx4|!LK)wTC+gq7mb4hsk3G>Zt zo2LQ!ANZ+#mHFZFf7)U*yXpRhWIOmqD}TOWshPb5eh&C{75GWZ!Ee=&8~~pU<*(nA z3HzHGlEdJehw>rgWwy$*L}mE zpApfUwKM0D!TrG3@#mAS53%Bzr^qDm^)vkIKf-1GSJT4}v8idN$Q1C&O#Xbs_6}^2 z=R5k=6!iZZKEb4NHVQ-9zFI^2G$id0*=aRB+p@yP9dtkV$uD!^Uu*x6zG(lQ?!YMI z%|rV~pY3mddHZka50%?LR=?wY7OMQ;h9K=9Vf}@JSbw4y#@~~k;y?Z@u0K%k2(^Nr z$6@`01~AX>dlFg7_C(g=k3@D1uLV02@f_epR`bt9mW0<_ z!?>e#5A=Igxc^qX{xkh3Jq^B1h5Ijaic$Z(uO}T){^zaZU;f$;p#QrukA8{%r;Shl zQ&#>Ydr<#De;o8%zvHjp_BZ<9oAc<`&|jc}{=B+f*oY7GBp&*+RnV`A?83%7^XMAr zXB+w3-*IObb`bi_&~I|^=i3i=VX7r{q;X({TcNai}h!y$6rMM zL%#+3yK~F%Ux9wp z7yR`bqM?70p7e!&msq!FiJ5;FuSq%6~^kfkD1{Lbx zJWUs7dMuyLgZ=F*`Nvq-pg&VjMnZqK zTKXT)r|(0*j`A;mjbF892fxsh(a>)S(*6B&>juX8H5f6KiedjE^{->7{03G|aJ{`&2wF#hqS zo=k*(ww%9yvHTyMPd|lzw@Ug)tk#ofpx?QYzy73qQT~t3r=LN8!q@!$FSNf8ex)bR zLce_#fBo(sS~Ju5e7X$!y=v*t(vuV+{#WzYFUJ3q`7{&y?cb>6|8MkUI`o^r;;-Lm zK>Sb0rz@e~vPLESYxLxK=ueu%U%#0DzSWai;2SUT=VwI0{*&@)7VMv~Rwetd(-Rx? zyHwC`*Ft}CK3xO-=5KlEmyf^MF#qV_cX~1h`n8vp{lD?{&zR5#2}}EPaz6bQ`twxK zpZ*}me;j)9GW1)5=y%i(kAC|F)IU@5>3ZnTUdP}6tPS+9*OOPF-xfr_;g0a=H}pmP zPs^wOgZ||2)X{$s`d@>7M-crp!=yi9EcDOFr(2+3=is4VKK^WMi}u&|dNL3C3xenu z^1iTzI{#-siS_5oVhI)IKUw+DKd}6a=YM<}Ngo-C@@JoN`B$z!^!ml;@7N=05AgN- z`Sa5fTC;(RBWW-2)79dC9!dLxpREGll>`5;j--RYH|6rTfAT>y>%SqAJ_f#91-`9O z7uMeyNk@R6aDc!5gd@=Zb0lTpr>VftgZ_lyBk5@HohtC%Yg@B~J&`mCe6I?8QU8%h z`V9E?gW>o8vZCs;=kGa@7M{OX^Hlls_kIx4C~T$Y@BN5$H>8C*a>DcXenPr#MOt|N z-p@$;KYuS9Y4Q1;&>}p4b8p4*eeit0^5<{L>p$WCGZJ|#edGU#yBD}7tH*!f=giwO zO;oIDYBLZfLM{azc$ zDleecC+@GZ5bGDK4zqK^OSjGb6ejp}qEe77wBf$DTId=?}=e^zJYuT`CX06$BDuhf5? z>NFd^Lx5lD@wz_CUt^T{^0)cf-<8k5e1w&kp@U2gY_ib-g%nzjYUJ{h9Cl4`2V$e+xunr=?>|q# z@?SRptg7dT2KiY(|M}CO2uyxu|N9#)c?|gQQAEY(*|G(9e1@IjbeA9NE|6$XT zcj2px#OF7(LH_TwWHJ2AF2e=%Ki}<7vjOvOJGA6O_<0iY=e6y`v=22Q%isr5@#CNF z*-k85(}d*0*X?;pc>Sk6hy3-M5G(gp;`4Jq8~#f8OoDG5*Om>>X+rkHPv0xP{__s^ zV%C)ps}?T6{MT}e@b z`1Y6KuWCY$!*?6S=g*!Ce@zqOgwHyO_pPsVV!y6yLVkm9>mc6GdllQ?c}>V4@Qt0t z`)+*x%CDa{A%DTo?kL`8Z*^iP*Eb=B@H4xJ_tgtKG3SORZKKrT(xd`9X)xW=aVqko$9r^Q{kjwCG<@kw{0^+=*?3Uk`q^g!vEdx4ZEusSiJBu=x6S$F*XcZ$3&I!Z&so@ALNGeCtut z7{0lOc%SEQM?y#wp5G+iPw&@_jjKL^4#(#|1Z9bsfAQV_)hFZgC+bh2Yi15qK z|Iq5^NJGs3ILev-ne$v==6`JCda>uv^d>tW#`f=Y5&3=V-?|9ffAj0oU!TVKQ%`*V z_=Dg(B;+r66!{+vrYXGrZ;7w}^ibr7&v^Yy@HJuZ9}1?=!gopVUEFUN zOwI7^MEv>3nek}<#=&#~d;=BlTgP{1Kd0BHZ}R%@FW%3a*qQa3TAyaZ*A5WxEBWCs zfS)YExAkqwS~$*;;n@E&Eb@Q+-Md{<(eq!fNuAl#)9TYj$e$@8zxD<6Klty#x6AN9 z!T$I133Lngzg_FZ?|&vwLH-x()Ax~|B#H0;eEz2$4Iv@e;MVpPzy2w3wqY%t=g9Nu z|4s@0-*^=BU&tSZ{MiG<=MVY;zAA(?hi^#|?Se>7OM>* z1L1ol_)7jJA>?WJX$vLge>8*)hHqRf{`iBEKO}?)(!hasVr5u0y z`ik*qZ3$66fA?~m;l`;mmZ@JxIR<~;9M=f;Cd#k!=W+aIS?l3O{`tGFq3k{W)ApU^ z>NipLUjMZArDf{3P;PeA<5IZ`{b z=XZsW#mKKdDx&>;kN>Klfo~5X@56UV@Xdd)k7e*crcD{BylzpI z`O5d(&uMRe!@s5bpQ}b^Hne_YqUZNtSU!b$Ux?}m(DCn}JD-1%Rh5zJ(F}_l8H}&& zsn3@1wLZSiy+C=cWd4E@ugBZ{J{oE6JcaS+j?aHw?5E(rC4b)o#MhsG7yr(0E&qSM z{(sG?yeT8+3D%)W2eJZxqc(ds^Zus5)xWRr{JRYswe4HFa|-;q;^$vA7vOLImhOR{ zEWyvX1b^qZ^dNl0Jn{KGSK6=%$G@dl;M;bJ_ep|*tv|AbMyF%@^Pw@q`=2@y{*PN| zd-%y3@xHTNTlNX9ty=UJ`v3Rhmp^NF1B?E73+;mZhWg_3XV{`yi_gxJ4SjI_Pp zr>uYXgpk|^(EpB!SpWKtf3EcgHg<0aSpi>rT)eO3-xoqw!zU*s`TIl2I`~cre)%5~a0uA~-|>!k-;@Ub zXb9N`KiMGu_#gMr{SZQS!OxW7yGJ2^K?vCk-!8$=d>;9K4j~8NlUVWf?}0z&cnCQR z-z>p*K7{e-WC-~IzEgs4AC2+nw-E9ZZ-0~c^WV7t{OJ&K48A8$eESns?e>=r*|MUD|&QRh;ez%1DY++|MyI>_-iz^?{BxubaBVnzKQ2_x0v=Xa6h9}Ocl;p^hX``VSr|3et5 z4L?hQ?}i^!5Ju|3wRX^uYX&Ly5#p?4K9BDqVG@L_4+sa8jOF( z!$=c8{(T(y`mc{14cjEKqSz$nY?Z{?MJF+JR)3a-@0amqib-Ot@uhB^#D?SNHhc}o z|84kcxVS${=U;gL5qv*_?|MTLn~yISzT)vav+*?tzZcA1AElSSthLC0B8-G0zxk8E z=P&K^>;Lw44yEmJ0L~+!|10@VhLLdO*W`%LZ{O9K?d};$J0XAK<1aFAqlp^-l>YAw zBN51NlaSx=J@WSnrSZt0FDw7AVI&Iq)0T;E|13N5_YI{_Aiu7q`1ViU8qH#U3nML% z-+oK{{Ew3V$xv!S{wzuPHz5Dx$ZuILsr?6q(kGE$-Aa7>XMK(F|MxHwjr_V?@%c0V z?#_0zP@0VV=@Rn0hjeE#r@}}Z#k`MgF``#kYUK z`DnH`EtHNx{^V%!{on8nwtxQ!BOQ=mE8+9co%=eoy`w|vv&e6kkYD{R^8Xn|Iw8MZ zLVjiW9}`MPA-^F;eEXAi$nOdxU69`_;q%{}H=^0@v7vM<@>?b3Hyp$DmzO6{53aw| z+?pqR`?CQ3FXl`b>5BSyN~nLO|4j&`X4Jo?wfO#L-Gcsy{N0h?v{L-|tGSBx&%{tV z8Tm6LoR_CFg&dLqAmmH7OoYsfz(luku{kA(cL?~uPRjF^zWKtg_Jj~KRlS}2{4 z{Aq2(_kYti^#5~Vq(AaoR*P?c+jX@6^iVnr`3ofEcTSFF8{AO6KQZ7wm%z@IUmYjD|MBJT67nxX{^T(6KHC+;4!sph z-$njB3HjZFW7wrX!pVEcZ%oQ@-hyBc#r>migL;0 ze=AWgdHin`$|aBgtwEU||2yJ(RyqE+t@!o9IKFtd&tJ^v`Tq(hA0dB+fc$qm{&jF` zD7B&e&FunT|D}EBb*z65Poxd8{?UhsU;kv(LH(Z%CpoBpkA(WSb?d^8Y!9V7Q2+L6 z;_IKUf6t!}C(DsPF+#j=@7{$u?4i_-{NzRPzP@ftw(rCrG-fuoKii}W-~QLkGqPUJ zKWHp`(pbEoH^RXBo&KA&H=+NT#t6@EU)F_XahCoI-zmY@^@6|pET!|X{k27W{VV-1|17Ny-?CM_ zpZ^E)e|whJgRhgY|DAaT{?@a!A^a=}evqmaGweD`o5DA4lT`l)&eCS^T@w7v;4aK? z|Klv}20zg*-q&=8|JPaC z8@^kD@9qKr(pmZ>eB<}x^DE>3)w6UkeC;0betH!0S1P1q;cNDZ_Y)t3U%ik{fbWsu zJ52Cv7Sbv3v-gY7uP*4!KB-k(WqS+TpZjMs?^bl_?QieT@4Ef%ee!?!UV8gm{nZof zld#&Vi|}2J+06SZMETBtaQ#ErbM)kJ9Dj6+_X{5B!Ol#5j@B4~{hyX|gy+|Uz@PCP z4Tf)TCEm9V=)o@jHkyXPw{{orvq8PtJ1b3OSwrl9j}$-uW_ud>=@{A#`SUx7&!08~ ze&sQ=CwxyA@xHSDtzAfGVEnTj5I_DIQ;}aihW1DP#IEA=oBLt>f2feYjQl!>`1~1F zvHjnmkj{hekl;Iqq5kh5Lz7Ye>TcreU&-I7kiLfec?ZSUzxE5XzqXJrfS-Iwys!TX zet02W3O`Z8`S;q9X#cunXe!#@@Rs=YSL(l2A+;jE_CEjfkKXN)ir)TF`d?fjUCrBH zmfyaR=E2XD;9K$eiw0vM-2mS%!4Db$KfaJ|giorAZ~v^p@cS0hJ@Bm(eAoCM?9#(y z=qN0InoRM_pZ#yl|2|nr43@L@Q0KQW~{X1hY|CCxtPr^?gC_ca9 zKU+xufS)PB&ufkRV+!dx_?r90FMpXEW0+xTA^jJ=T|)kR1M<%-q^egi|1Keah7IG- z+(LREe47N{`ZfI53u#UG9tpmZ|II=g3_qx*`2MGC|1T<}8u%nx{PJ(#hWgJcq>bUL zYl+XVwEqW%^ilW*3Hg(2b!LW-3u!a>_8>|5KP{wD@XZqPEA79kkhX%KT~~a5e*WLs zzr)F=IR7SJ!udDK`9JViz}Gbwzx*lr-Qi>v{45E+I}+zV!Cwbo9VtG)Eeig{aPm3) zbP0auWAHD9lYICt3BCvZ*sI~>8~BFD#MeLX|6@JjWD9(&1mE5Q{`GM39ehm-@%b|} zJ=nN^!pU~{84`T*IPw>T6FYp51m6Mw{Ecw32Y#AfeEny)ME+ahWFPzj3BI}&^20v> zKS;v;Px$h8iR#Ef_!de2M3s&lhVPc(E7yO(KMJ2oxc`Xxvl!;CtRn^R9TI$XuP)48 zMMr*ypC{q|6Wljf)sbWHGbP;rpn&Ixe*!*{aQ(fKznYFX;hQD+`YAn_8~$(bof7=? zKDho&ts|%4nyOnnu>OI67JiU~>t9`c z;n&cS^YASad?kNP9dW~VOYrmiA^!t9atS_@aQ$gUfB3a@BBx*yOl0Y$N2ZMi0x0`&mZLXKRiAEJGuhCWv+kUG$M;(4R!bH5BL-RNX zPv#s03tPU8R-KCVZ=12q`)fp<|CE;tf8{n>2fo1|-p7Ytu-pyXXfycwIPt#5Wnc#z zY^S5(y9&koOpWzVZ5{as%b!ca^5^E`5Bwtd$r7%AO&);#pE^2n6TV%7Z-alnu8vd+ zLjRX={byzp+W$cvsS4jJ!B2dy3!A3Vk^A9$aLumh@kjGK{Q5dl6TYpz|MA!RcUAQH z7bL7b`v-mye0>M;e&#<||2Ec3(zSpKv+(g?m=g3srF#x~WF zN8mG~`1-evMSl2A;5#Jvnd6W@Oh-cC8#{^5&;9f8o5FWV@R_*_`%9-I;qbMc1E0T2 zluo(6_7vutPQAWNT@Ph`JuSap_6L+7EPlS>wK0r;{&WMB>*6`Qgz(RwZisR`3cSoe ze>x0hetj;#UjzUA>2Q>rWE9;LTGv&N(SV|1h$@@HfPK7VOHKe{tJ z55GBln*^UsK>pS`@)&%N1mD4ZgN{VQH-8}h_-pn=EPru2Vt}t-EWZ7f{Oxq41AO%p zbD6iZirW8C@^{dY&hWD(@2VpM;O9&5`S>@sn~ppQU-!QF`qwPz!csOzkjwD3FH9G{{H68i!W`d+(tZ5? zI}+}HVr<%u)xB1e46cUpzt2SB`5no~zdw{7M1HG;{EB}tlpckznJ&KnIR_*EkD>G! ze47NH&;QZ-P3iCO(_Rvv-?6w0s~Xyr{so_M6MXV~=>>lhcL$@M=?9 z6MkBOc;AuRg+2LtQyK){{pKj)%fG>DWR+qcA-~nY_&Zqq{f`Q)sQ>v*X&vM@o)KUF zivLDa8Vp~ZDZc()tC9b$rc?u8`?h$W=ii&zls4f0U*hXu$^Uj!+7P~Bf%yD<{LxK_ zpkeUIS@HSv4s~I=NfA^BKX195{IB$ELEFQ3UKF3-e5?z5t5*wZgs*8Se)})~*DkD9 zpBA(${0srUWl6Np{V(4~ncx3%S?-_8{V$jDGPcQnGQa<2jaJi@`(J)m{QC8y{=Dn`FM0nzVU4CK$gjtHz$g!4`@dJZ zFz3o>`V4%}O!0n@2mb14I+EwNi1)M47+FfDmPFJ<{?A3Me|?WXYu)e{Xh}=>`Ro1r zp?_sF-Z3ir_=j@+MP4CogY*CMgT>E3Dc4`DFQgsdJL-w|mHe9uX=nI(4~qBAle*yk zV}&#kzEdOKPwR>6|92G9UhqBjCHcDxX+QYM&(Bf%IPd48#y=(hzCt<>zWZSb`A4Gu z4;9iO@YRjP`^xh7OCcQv-|&cdUtJH^U!BJNm*A&05$`L@|CvJi0(@(-`0X$K6Rlaq z--UDl=%F{rSOXi=^OA(;o|cfe-&{58+fW$@L_#ploX82*Fj=vw$BO1z)-KquBL^c>v)-}9IV-*@|uZ~v!W zIY&3bH|6-Bf3_v%Fw{_mZ~u7~_GGD7&(W{pC$^E3e`Oap-OBx!<|r9?&eH4u%$IVM z=PG*p*S5P0TN&@B+u(bs`27#v_gz>-S2x`OKU*c<_rPBX-_Gm5l6ar(fuG=}d*B3;Yw34VS^Z#M3YNtC5w{U0ac{&N=i=O@uj_?C3>J_+i z3*R%+zhAH=K>mjYmKN$JZ=?tme_QGC*ZcE|u7A^216%jt1=6-J-~SjV+;{B5 z_|x4@f5h_dtR{Z^NqoCCi|p;DPWYDU;(en7>z_VudJ4Yoe(`?(!q#l1$xZ)+?~vdJ z9Yp*0b<@A#r`HglU-A37={fk?n&N%kyQu#pH@ym9Q%k&`QH1(`(oL_!w@L8LR^%V( zrbY16g2d<7??wKn+*Fl;`PbUw{h+$NS;QbWtp=af5$|W-ME)UeS_^)1uy~){!uZGB zv@U#7PrR>LjsBPFrVqilO7OEtJX<;3O&@{pc~E?QgDRdyjB?ZF@ZB2mzPb|p=iM|4 zepY?)e#Y9?Y{h6dZ2{ldK)i3P9M4vaann}tGar`YHyi7wG4Kry#rs-SPd0AhSZc%l zFRg9FpMUJB41e8NdIY|%t$07HYDYG%)i_E<;`r-x;(bF4d7=llf9i;z|H@y8^KZY6AXkI1{FQV5t?q1&Qa2U7|E0S>o;4firm@dH&$U#wnUJBke^KP@2d*~)Bc&f{mpLL9{CF- z&o>1@d=9e#;~N>mRM7Jnnt@E8G85Y!T!p@|(-apL{Nd@joCC z{&D!EHr9XT`1T6(edoXQHBtZL-83Hc@6bxB|E&>3h5XKP@|(|BRQ>zrSNh)sH%&nP z^d@rhA4mSm$gfHF?-vCyf3t~hnuz?`NB#S}@AF3>`hUuI5u_^eo65;Q`tKZ8F}`p6 zC+@)ZKk`3;{B}wCk0ZYt`N=EKDH(ar((}K^0+c_)j{K9{v={Q5LnO8Twg^%k`7_FC z|DNs~rEc!M|M|8*-~U`O*-iT(za~^p{^Q7B1Nm*`Y z5evH-K*`&%c~gLH=Fpe}5{t{Ga8fX5`OU8K`KR^F-?QA!ljQm0G`p>Vsp2K(_2*mRLlOuwJA-|)X z{0%Dwrv1|+=abUszZsfg`{$Pk(gJ?oeE;p= zv&y~rcj~;fZ+jf|Ki5rXp#Ifa;@jVh@$WeDw?zKrm;C#YRRfrRo}11>{&WfXt40{w!w{}TVccG6nL>!70BpRfO4 zv`5oPDcJv;<=+of{oCK`!pPoeIt9LSu6Up4kDe1tUx9C%C*IHM6whMk#nRW{t6vlE zr*(#(5li2MZ=F1qdE2@4{JZz(f#`onK8~gD!Z*(spWoOuo;h=3X%_s<4dQ*?{~o>& zOF!cIzZCBq@%hIg*J9~1o`0Ko-_$*x<-pH{PqvHq%_C#kgOhhq!!+doO#J!(y!}sf zi=%nSpRq%H{=Bi+{_Y+}zk;vdBHp)*ga1Sv-2~q(Vf-+pYs&m{Qd1GN8Far9^SSrU9c{_UOLk^T-py-)-r+J=pOhUC0ew|EeM4&p#(S zk^fq->LBuagyb(f|1eeapy~|#`G5G&kG&J+QPKIedd$CK{;56YpVHU(U;d2hz|6lXzB7Ut;U};4?@wy_ zF5?yOf6T8|Di8lODs}yN8s`57{TV@ez;~|m?|a|>fAqa?zpMX?D}wZaZ^{$z2gM@) zUlF7qe47M6zg;{#c{YM1!`FZ2KYxvgd+C4wHGi4+Q{^$Pv?NNd84W>41 z=*0+<24DAue?P57V0`ls%g*z1;iq@4Nm}uK%groXm#rD#y=nb1(V5e|_2Uk1zkfRB2A; z!A~w{{&Dly_cH$aU;Y%oYIE``{QPdu`|W?BvG^QfPD9G)c*s` z$rAYL@BH^agDEiiZ6n|ZH76gyPcO%J-jnbD__NafwVRV{UjOCH|1RqrnEZ-gr#Z=i zZzyN}*ApOLHxlDdaC4FiKX0J_{_kCaD|-CVS>oC6^_mkad{a5|zn1>@Qvcq+zU=tJ zkADu*G$$+J+sg61zv15V-|36|cUoSJXAK{UBwxT!zU+Vb3zTnqEuJlgzX5)xB)`5U zl6(cBLU&3FDve(~@-}hPZ>%IQx#bxg8!SgxQO8Ld*Bej!m`zUjNQpaK+<&yc= z@Ymy)@z?YEUyHJjU*h%nHRSUWW$uTnef_4zWv?HGGWX{jZ~IXwm-Jik*O&11D3|nG zm3Te(qf3;zUwZz*V2WoWf-cbf44nV_Tj0mP(!RAH{5lut7Wml`{KNt9>s_GR;InHY zwtsxr|N24k?BPk5=`Q&08zOw){Xc&Esogu5=~eidWHjS_hCfR0e@DI)nC&mas(9A! z-OJPi-x~H3Q}Da^-k(?W_Lq5eJlhQaANWoQzHtrw_b$_$@HOG$^QYU}u+57v)5@=6 z`&)v~zC-(ec$rp*pZtyg{uikBx8ICqi+@y;q$=otpPHH1Dc%3QKd~D(naty-V^V;xxe%(eGk4zh+lU6SsQna?t|~# z?>~RgL(2m){v^-G_W#3?WGm*M%mU`0O7DNAWx{V9Nw&eaO7PVSF#iUBC;Tj(|Mh>s z#$WC~5=rdvO;^S5|E4dBXAQKGWDk6s1V89&w11OGvLC)jf^Yc-{-cq^0bhSjeEplg zMf<})3_neR@7@AGB$E69zd)8B8cBYFALJ2V|GKTn-!zh(fS=b){PM4~e|RMM6~0A6 z{6v$6mAa6}|=!FNmWgY58|N0PJfb=SrBKi>WiM@EwK@UtZNO8rMg zk_+%15`3lpAB!ZH;j8}ck zyxTJTyZr$2w~QpD4$gn@$sa`3C0|(l|BBxKO*@GEts+Tf_<24)5#pNcY26^52JF55A#DeEnw~NB*{v zq&|GJ1mAEH?cXkvG=y)J;4Aq%L=r80rvzWg-!YPez}MUm-~MVR+P_mI(ZM$f@q?VFa<@JP2|6n5H$KU%Dzn=fiQFz{ja>?V* z15oD2tLK~;U^L+Qq~bC^U*c>0{?hXgre(PPC#xg9nu6`maPiy!naA+?d#5MUnxioO zUVMe&&r}|PTmSnW|J5!>{v{phKgh4X6!`u>VthR1=NFtxd4=t~VO3jD4yKcgN4B_( zb1z%fvv?WL^Y+^DuT}jr%HH;U1<%h#*?T^M3gvky^YfE^((#s6 zy`=c{OY>dE7cN-Kv_C)oym3K1eP{^Q{{r%t?thve&o6+#IG#QNKU0FQu4Z7irSY^0e9~Ebex?0CjHjXS&9eND z<7qg2<7M&VpVI%9#nWc+HC@ElKVSX_+2ZNr@YCYO`~3bN&+Lq+ZQ#4jW0-e27B&7G z|Hb*w@Z;cTjTi4bi{jZcyW(j(?hg}R|GfQw+R}q|hOd4`yl=UQ`nUC<@$gNP#n->- z7V3X%51Igp^?LcaC^Tcz)OYUD-3+d(b}Imylnn zfB602n?{PypIHm_zoQ3z623=5|L6Ii+0}zS1z-Py_~p-02fn=r9SlE1Lj5cL?jCd~ z{4`nlzwbeZ@%9&xfBVxWpZ$-MDD(Y~!dK5I`yWnT#!%?p|M(T`TJOpKNVc_Q885Iu(A#a`Aq8 z2>it+Ivu`8f}atN^N-#)(V6hma)sotjPCW{gCBo+plc*)j`<(`O`rYm|8~?1O8oq8 z`+weFrf>5UBfXwxyqv9?uYBkK$DW^6`Dm>R{hHd&EmCH(xxGnhB0sO|6UjIQh}_^WySOYoKaizCTe z`0Nq!`K`;4e+jNXgr6nBPt5JgHY|-K`S8_R@%b&E!v8RmY=&=?;Pdv6$;S1E@Y5yu z87q+g<4E!y{5%Q1ZdF$nlM_jH!%uD^zWvi1p#F0s$zJ%G5`6s{&mvmFMw~B;Ip~Nzb29#gKw4KlUI;`EzZA! z@08#>KS%y`k>oe{nh^2*FYgQF&%^mw@J$kY%X+MTKg0P~@G~U%+AmT6U*P;F`1(-s z^`HC|>VJJCal=oO;Pd+Lv>}pQf}btHH*J9bWhA)*Kd7nr`p=(*{`VEmzk;7A!7um* zetsmm3Ev{YPv6p&wfQ=dRKg^JE=+v=YqrAw2IoJ)&ywIfXTaYQNgjajkl+VB)suDn zGJ!0?{SQqG#ozxh1J}PDY_gqBoQn0&-(!XEf94-Eu!GIEQw#h8w|L)k5`NTn`U-r@ z1rdJP>u(-R+Cg3Lomc$(wtp8ZZBx;^9kc~}$2#%8V>tYYJLu!^)APjpd9!0#rw?|}?(oeYi1#z*!T)dv?E#;C zEW$5w{#o4pOug&&`DZRnBC>V<&p(T-x2VkWr(Qbgzwwfk^SD^z{If=w<|+A7Z8YY8 zKQz&o`TVom|MKsBPem{P{P=V7s3dv|eu0?zXP^A$wq4oqu}QS%Q0)J96~FzFI0F8- zBw7o;EkTZd3Vv<)+1?G-Nolm z9tD3=5^W6Ms5LY1axQBAKl3^Glapu@_~}o`$v=Eb5)Fl)C&B0KKYVHuZ3f@)sQCKV zpEs~m(~_v3`#r_if3_R`^duS$-zv+WnMB*cH}w*qKWz-!e^wIh2;U~bFBsR44SzX_ zc80I-Ek3{E&rYIU;b%+mgT^EOoFtkEKd6uR{E9y}iS~eRk>IBfie>jlUnFb#qWwED z;p4ydnt=_Umqhy@zgt3nUjL_FNuvGWGn1V5Kb4V0li)jK`L89>LGaW2iqD_;W>2>3 zV~uLf+n9g5C1U=m#QqmHc8vDh`(L$j!jtP;|NCEtjUOn>#@+URyxUCvzE`b(=b1*t z*DomE|BHohyYAmVc5BW5*>B+E`|kf)CU#|yb+|@zJde9Zyz`PsNwc5<7C-h!{MCBFYF{&o+guVMT11@ZN-_&Yqb z68x+LN&Zd`tpY#qeM#+a_t5*`t0nCJEA_wIL+^)gl;wZ#p*7(fhKb+)SMu-i&|2_a zLh_eA{x$Q9>r@NhSi>okqgf4H4m&ZGZKl>of+wxr6`u-#jxg?QeH>W$Gi>sR4dLtbd;j_CN0B z{PVnnu}uBrbs7ghW0<7+&ncoE;HSUm-(NqgqUyhF`!{RYOr?JZ+n*g?WlAOEpVIq3 z#}2Ggo~!8k&u-S29rHIh-kc|lom9E%e#K?}{>+Ih%iRAUV;jzY+8Rmf)W!Ng z+<*VW+m%N}*S~E$&i~mKNi^`&CHQP7^6$X?Z{X)i@EvyK-xEoi!q@5oU;k~Ky_Ej9 z`p9JC;{Ca5gHoPk%ZWWW`S@2(tZZEKid2hNuuBeb25ue|6 z1%8hx(igr#f}e4%D>L_wBFXU05`5it_%aYLyn8R( zpK5fj+mA-2#y?Vo{+|>@hQl|N<4+HepM3-U5B{_8Gs^MP-wRCsf}8N4j3T4q+sg6D z;=uS$lE5xJ6-6e&Pn+kz{k`p1(c6C-75qU_WGejZa{S1pfytj=34TfxnE}6`96zA> zhenav@Pl6QU;mB|0+>HFie$i7zv$l&RQ}{TsQ+i8$eZvr<*ffRKMG8KrT?czk;U+{ z-ZC?9&eHq8-k(==|93oy{Le*^54pceeEpj>@JC0H9Qf+hBK$kYe=VMB%%+NAeBWRY zj{jy>8C9bGwLbgbOGlMG|Cdy~^LlUl-0gc*iQ~WB*9`Qz|Hp8Y`Tai{p8iX@|HlYk z#xL>S|6?S|-u-QU|G`lx^ZgzEH}m@sK8G@@PAT*I4~|Be?=MC7o1xtQV`}m1i;nug z|3~;Y1L-K7e~^s#;8!URQT;EoY66ScI*>jO-uUjU^Pa89sz6GC2@C#ZdFxS|@bOHP<2|lm?H1lBk z4t$3YzwG?)h?%TXMwvj)CyMNugWdyCwL>r{UXD=uY_7PsQg~{H-Z;H++p%yq`V@ z`M*n{``~9t@bd=4-=0Db!1qY-Eh$+3cBIfl@Y5uWzxhLue`gB)5k9#rzWv=p;oDQ_ zG5AgizAhE@zbA#BfN#1YKEGo|EE}*dh5ioTBg8Me{!uS0qDCD5HXJlF?|Q!U{*UqH zidz5N#a~`TJHxk@QA^+`f z4Wz%Si1vnGaM-^;dTs#ouP&k{_*qB&`-8KWD9gsZZ~xw<|F0>c{oreV^zWz53t;}d zBAU$eAM@|Kmj^Ka=S6fdeCJ93zG+4P^M6r9hrmzH@<0A>-xffBeGz5wb-$OBe|rG^ z4MlVqeAg-ezAcdcmqm0qeCr?n{j?nc%>Pvp9SJ|%<=?*?NPlAyeU8`vS^vInR{-;G zDx#x#{h#yiuMedEbrBs4KkaY-zR@1Q{NEJO3GnkS`u8(;2hjhvh)#lUUhIGTF@GOG z-&RD^;cJ%o_icLu=x;5e)8K0_`LF+;djsfyS45}7PcFybTw%WN^-rG4J=wT8Gu<>2 z^FR4>{ceAIx6AK+`@`2aFNtNxzTZI^?mv^+z<>P*%2&UUz>Xc*L7#>1*(>7w|FYX( zVe59%nef#=`0xMg|EZ|$AK&_SY>8!Ic{}MW?qBrp2dw`0qW{e?({t#5ns3DSKlLB* z_n4^%J`0{Fy#Fip|K(2l7V1A}pZNMW{gc4P9UV{Op2haZND=wV_Wv_0cF{cKPhT?L zZ~ePp4ov?KYJlV4W21<*E_@-!zkQd#yhgp)xRc{)XVib*H3&H`OQ&e4f4Ar z!wom2z~t99hd(EZIN=wR;|D5#)}hDQ_}8LHA^iN${O1ppPo6;j`BCH| zeBI~%{k_KnQ~!n@=zniT5fA*Va{NH$&xU{D?I>~+zWNLQ`SX7ZOn!AC&VPP4id4r* zKdy58K;`G>zm8uVMQXvfulJun82U@t9gK|*-`ZT|gZwR0J7gNk1NxZvOTpap3P-?ZJoAE@@XjY0ko zTaa-0HVJ;_SmcM_jQgGa?|%d;zut`eAGILO;iv5oU;o^{k==qs!B5;_VcwjjkH30< z{(tL#-glQh|BGM$)i+E}4Dj=+%@ppdmn5*0o%CcFeAY(1Z+#zr7d;scKiweScP>p} zL*w;i6nvKi-_*Mg8`(Qlb$KDipFSDF+dr`<{Jx>8f8l2c@ypJCsJ9nU3+8|A<;?%O z_ub3-zvS|F7k@_)eHlKvZ1!9K)At9^-&I8C@%#?|<6qu^0Q$R&=xgvZ4*B<2{}Vue zZxPLe?>^$+Use=Ae}55O1m9K8{PX1-0rVY3Gz-47z<++-t-$zs4cf8q58a@j!q=Sl z?_aKbFWX-wmp|Y6Hw|gY1|GRVSHe#&^zVCrLq)HDb-K3f#~*LdweUUVZP~!%H|Uq}4d=xBT75kG@%I~aBYf9!5q{b6-~9It`VD;hY5)HE zU*A{O4He!0f;Po5xBCX&3O_ki{PvGwegZRJyg_%sCr#z}Zuq<48zlH<9RD<5xUuEjLF6|{$e;aGYxefx<0Jw1UotcsB|Lw@#8`F&=Rf~}^Plxs{f~dVP57gt$3N}D z1ZKLBLeIf>T^H}Wxqm5z{taLIj|ji)`sd{-Luf6A%Kg{BuiFur^-ubW1ory0A+!#B z!x8cGKZz^hzc_?G2w&S${P@H3-~ZAOS|5I<1YfVl{r6`Kp$*}aR^s#LZ$$mi973DG zw@UCe_jhHlTZYgO_)ZDFWk&+r{l!q)5`JR5`1;rGg1>$!jfS5u!Dp-5vfUeoQUiQl zSMmAN_9Fkrp|l-*b%J=`un+#Gp|k`1bRmA(@qhNSsdO)VL!$ru`QHU*|JxJVjRlWN zr4IO-X5#0+xxWbhA^0Wm$V1zcm8>m{fWUewqYd z?{3K!!9M{%TY{e$iTqI4|BeYTz#3h%>ULw*6RGM+_}b@0yw!EGkl?3Id}j&g>pKc*WkIH__;eTiB5>|mx!^$qgd^Ze&u^k-n&Uthl)JGell z+5(?65x@VV_zP94t?+Gn@qStZsodNKz-=^=jnb2<`O(o=e}5WcpX`1(&gn7}r_ z*^;~q-3z<74Lhtw`B=AEy-H=wrS#h*CFIz){=YyKl?@Te)3WH zxh=_;@Drzt_f7jz|DU!bo8VhMoXEUmsi^gz`vCkEEy))6`4aMben9=NYDvC>uX{;+ z{o8+pzq%#a4&OLKi2vXE*V0VQ%+Iz~w!hY4{hRmfG@guT->+Rpa2xA@hkD$yy@6PKVEq;FVv!fLMSCs4G zeO^E5JG>vSU({nJ1?*G-2oaFsqg3t3OoNY;dg`Yf6NdEuEKhj*yjA^&Wzc0|C z@}Imjo|WGJIAtrl|EU{z=k>fU{XL#4vH#icor_BUKXv~P#$gw&>i$Z3k}Znt=kHifAAR- z9BFavm1i%JP4KlN#m_(SW*Nt7XwIY?!iCo)-EPp<}t$jB( zd21_D1-{-c$G-x<8hpb(@xG@+Hh4zL5%}p6d@=~j-=0<^6ux_t|LtFIyHxc0C*yEC_QKv)Bn-ax zZxQ{^xBeZ-e+_0KqTxFw_~sPk_p~Ch@HH32 z=jZF+EB~}2ZQ+|F_)7o(w-sp*KSP3V9D@E2-w59(!OwrY9lKW4igbqWk>Cdn?Z&3u zXhjm>>o1D$e@^&UZnh%b;ipOP^^f;rkL;+gs=NT(KmF(VUH=AZ{O9dIg+`O!$RBh` zeElo^555V0q6FVLIhLgdN0WZ=b(h8G=jZ=<;17V$B>4RPGrRXhlR5B{+ln~dO1UD5yZwWi{{OzS67yfB z=ih@&xc}^p@pKUGKb!Hc|NiGSD!TvW_3g#Zp6pGQJ&f^hvUorHovv(L)d@6}-~aeM z@xGGZ*_&9ApS>X7HwMMAZm-+vG3@{9-w;3lmz~&|jnht`lTiPe?~BM^cKmHt{d-#H zMYKQhKmHW02+aH|dmYPP>k0IA#ebzr&v*Os9pnbFh`hQ}N@yt8U zm!AL1)CA`GdrLO@-$xVZ*QkH>I`R4QbK)3lx{vlieswSZ`4=?~O#ZY6acuDkHF>TI zwm+=m$6v)isU~CKdj$KIj%t?oeKh08(tgGEk1^B#_K&w;mfZeGFY$Ws^LP7hF6a6W z)-sMYbgRjG$nRP$zW$y4;@Ah|KC*?^|2px$XIeWJJT8@$PP4dw<5; z?|*%i-u~2N;QD9ye=w~7B={Ei!RA!zf}bzJ*Ug7NDV1J?pA{*-{xjh(f`1vlLxQhd ze>^#rUgi0li`f76-TqPh7gDJQzB)>L{hMAz{ZC1yMex%l`1Uv8PfevH703T2_>P5% zY|*q-s)A1*6Vd)KkdhrdLnIsl)w z5}!Y-75ooWs-y62Ekvw;eb+yZX!xI~R6oI2M@!0|t5ThWpDw{y@~={SW>_`6lAO7L|p#rw+ge^8}*0DeXr@%_)x2lancrK$(tCc#(o z|DsaWhp#t?$X|B<>+M~YR8PPUiuLbTZWoySub?B{SZ#YHRZsZpcm4ay&Q}2TzcfE| zV>NeIQuT(PF3Er6`%0?*@a^x3&+jfk{ymjcPr^53iTBfv!{1v;l?>l0!8f1m#@>KG z2)=2t`24*8y|J&7Dh0lNiFjXW|NWIz41Tr*Klu;jKTt_E0)FEA;`19;c4NsmqsaoC zf8&sF{tZ9>=MemN;H!to$zO0Qn!E?!D8Ua}gY%zo#o1!`=@NVm=HKk_m%`7J;A=nY z#`e${@*#Ye1fSco)m;d>ql*!~V~GHCvMt$gg=?LjOC{jlBxr3Ev~ZH=ITO2U?Tg;b#vLpWj>vzgBDFg6|kE z-nWg9WB<;sPL87gF}?ruFTLYpMW25Vw6Q(AuXby47Wsod5uZQrZ`6OC*5o|=L?OQK z`X~QFH}+H8HpC6zU5-C^T43fst-*=xftChx6+X)eeEpBlF_32HOog4t8V4Jft0$t& z@9)y^+8D;~e>4T_x?xOT`8M|as=MI zeq(>*-R^%>`uxX?*Wy_9cdL^t=>HjQ#rJ<(4$i+`J%R4R`PcTmc?_|YN9pYk@6RiG z`Li#F|MdiV7{2Cn3H}jWf3j}^b;9>Z@H4(|&xV{zrCo6Tg>`n|`+w>Fm$eV|e`Esv z1NjTS5MTfN{Ff8R-xc|t67rJ+?b(UbskA$M%^dOd&;22PrqW*UO%nXPBAowoCYAPq zpCQRV0lzPNn*`r=1O4x>RGI|eBf;1Gg#K5UN(aK%&lTVQxIg4vDt!umnk4@O{6X-u zCHVaM^C5qy(iHdw5`0%^A{%#h0=A)8{{r9mw50qqhSB5j^JMumhtXf* z+Xu8cj5dKM zIR7MH!ucnTzi|H3!Ah#<;Omz9U;lf@g?pWU;GaL`K7r4eiW|V}my%fMMQP76W{-A z;fbvO@ye==@a+h#{lBaqeYlG1C-@l;`EUO@<3CjD=3d92 z((`Y5uP3tTBUMz#;2W#@_q}6CMf=G&G5>dMB8^7>BRcW@&ov+Uk5*ARk>4dDzwNC= zw*H4Is^8$7f<)AR+5UHZWmVNV`1X4Keb=pu>i@pSUlX?^vg@m=sxH7+CyC$wcG=*s zsj9jJ-_Xr}{y_DA#a~-hbq&5#f}gcBk>z`;sUCR)2^WdapFSG*-+%rR+1U^KANTt| z{xsmmJ>CE6zd4W6`r8cqG~D~eA7GP>z}v3;bt{eBz%tq zpVxo>t!k>r;b*@qK7Y`>I96@UC9((oub`a%mvJ*N{g1bQK2@t?kU#M~@%cRm;a5_t z+Q4^9@(q>Ms#y40S>p4Px6uCPOXMipKfi|m@y9~$>Hb@O$DgdVec1QOQ|S}W;rPeK z4CY@t1}KCVy5@AGUbGOY}wF|BeN||5g2G29E#We3$v> zjC0qlP*+1ahDf2!Ed5Io_jHo+sq;&lzkco{uYj9xqXj_q0WsA0Mhz zTy9rf4n2IyI1aCGUtHeY<{#tj<3GOJpS=DnTP~4*Q2(ad{@Xt*G%)qA_%B}~s{UC2 z)$#A=H4Th!OiE<0EWAW&z&DNX@1uH^M@29HCQTw6vD`pzpb3M_Lq`> zgMqYwuhxn8Nptjn_$}dUSBr0dXAAgW8HfSCU6!A3AZ_6r)`-vVdK}B&*9OuBzEy&s z(F*my*+3HEJ0CHVRwiLCza zSn?9De+j-}bO+XOZ!DP!U(;B8{ih8@`@^3N-z32|r^4SKOJ0TVk>ID{{^JcDvE+65 z`bWgqKfnKZ!$Yy;4fxp-eAnI%Y$^Oq_yrPtYyaNtosUgqQA5nX3>Sa?iD41?-{DxY z0Qs}3y}*=>6#OG<{(*Gq&Cb_oq`J5O%YRSt`8A6Z*^|G-kq?pI94fy5yWsx-KL@^3 zf}im|{1b6x1^kSr;`7^mq`acRmO(9?SJxZ?f>u^L^Ss?aMf(UUP{AEs9#IfAtp~Qs_SI~AEQxNY{r=S~d8#UoKTh_aU;X^O9Dl#l(K52WItU~>>s_DY}AJ5-OTZ4>6e*KI7^Lv+zieCPb)laY{#>-?A@@MEL2+yDO z5w?F$$C0nF{ZSxc`@@lq?LYWm!%qwszx~5Mf2Zlvw&V=_pylHItl;h}Z+%-*_aW?m zRGT8a{nP4oXJH%Kl6vqRyT#{EU(%7ShW`+J?H&n!edPbLEvXM*_oEy?7yiS%{w4UX zhmrrQwxluqy#Ghsoq#t{G<*P`S*}p7a0uZJhc)0qRFptVNoj@9mNZG5-0L=YMNwQlk~^--XNg*NuxITvQl(+gc{ABiFh z;G0hH_uZY$EPZh%9gXcTwtp%8vp&T#|!_N zG};8dVH|(of#+}Ok~G>%&Y#Qw{(oxMK5W6VG};!ved0mEl;Cb_-qn?-@70F z^J%m*e4~}Wulg44zaov^246dwzc1H6U71F^!gmPpy?6Ct^o2Bf7kn~>e}307wEwC! zdJlY?AfK*DqxZuv5#Y=9zhG?|?FHX5RZRWUb!jw4uKxx6_kR{2+W$qohb;WUY5enR zk7N6LDUJ4rub$4|_rqVXF^vv@?-%6Lm(yq>`~o}!j=g}g@Vfu*ID!1|&G1#}f_!Hh z9R%Mlz*pM;l{7j8zE6-(UrnRK;HTOI)j#}H_(h`pO=)xle8Wus`PoVI|IKMM4Zc%= zUnKi)q|u4+^E3G8FZcud-#63fH2A5H^FRJrPa*%?X>n#5HJv9fg1zXbSO!&nD zd`B(#@1)UL@ZFhQ@`ud7Bi>%DWaw_nYT*9Y*x={?YKA=j=b68Z$p@zYW&X?7mdYVb z`A_-zKUQ3SxNE5-Bi{eWw}MN4)s4RfZQf!4J99=QJqDjq{^M_sQWMKKtCI5Jt0exu z`?dR7#yOSrANVc-zV{09UrYhl3s*gSew6} zO9!wFQde@qH`U?q7p(8YGNiiF8}OY1=3f+aK>k{FrT5@F1l<2NQX@MPQCIp1zUvPj z`@f3sfBM?#y3zsoy367Hk{6sz-f#Xd`+xcO0!#V*zr`|uz2>hgeFxvujer014;sMk z{Ijm~J^WGuzHSKe!~Yq+RWB(2xw_IX@QVfbY$)=>KL%eni~syb`TehFe;pxRh3~(c zfBoy97{D&=i;$$JasBfsf8Vdk&UbAWD}hw-P=nJloMZiu&-2su$MTT#{ff93k;-87n& zhV4Hq{P8F7cU847kAKql(r6C+0s+2W)sro7r_nj^9Ygu&x2kacxit+Rfrb75gZzC} z1pN2Y=sfsL!2D-py#b7VkVY56Hwu{ltbG2_M``pi_%;FOze@k#mWGeO!Tc)$^N*GB z|But?v+%6~=Km`BKS`s{!FT_(fcyThct{MRpQh2}@R@-5$L>bx|2xuX0eqE!`Nwkp z1@K>h?-JlE+uvttbTxb;VE(bEG3x*GG+GGXDZp3yUr`!v!D0UYkp*J<|IRe(gl`fs z|5*9_#V^xv3kJvkU-{=(`XBtw@QniIKg;*O=&m%}0>Jp2fceJ;J^KIdH2MyF!e#z( z#qp0WkzJ%-%W(bI=ZUcWf5+L^m338p{;9ef=RbSWa0-I$pG*GG_x~mzVgAY2Y19MX za(qG9{Ae9zsp|a3d(i&hq~Q>R@fQKUGXG_N8ZClfEMWe%eE*Ann?}EcpDSSgwKD(c zyEM87zV74#R@Thip8r?Q|GrN{7sUN10lsqn_d^=GAm*Q);-5d&8pYeqVp20lAM1HJ;SWVx1#WjL|5|pLYj!v%(sQH42}-hw~3E z_a8!!Kdx9je{(E~{0F{6Kz>(u9Dfd_(SxXekDvecujz~DAAM28f&BRbe9Qef|M)qL z9!7rk8UFd*amarniad|}#eeemRjFwIU()C?<&jsA}O?5u$L|6u_8=V&ykp~3v$m-vsr%jZ9t zN7Lvjw;5WZ7@ZyY{=WgbtXS5W_@7x~wJ(UAd+9FHbyvn;^eOKz@CMk)1n%=kLbh{P&WW{N(p&(hT|avHaU#zW&QR zl}2kLzwZkF{7xT^zsTPl`3nW)w;vzC{(`T8ukI_T{!gdT2-LsfD*yVI^UpmIO{@XzlXlE5DRBbszZepNjG_LuKJTsogdHOQ|MF#kD!81kQvCOYJI3CQmoiTO7d z@cc3Idj;gzJ&5h!A5HE+e(eMN+rKCk^?xRs+zsC$z}JpO{a;L@?NR?)0rS7D4<)d9 z=b}k>i>K+iH2_z;LGPf=Pu*Bg?&-MsJ6&7V!K*QAPsW zcC|M#%k}>t|Nd7nD}lxQ-J4k8>r(mq^6{VilSaFt{(VnQW29{1HU4DHMExWGP~`Ut z$nPG7_urY6MZduN-#E7N-~LNi#V|t0(R)$L=D@xy} z>iho%a|f_fXU5Sa`1Y6i_djiaBRh3&9JRn#jSrtcuw7J3{)^-25coy`zC8c<)TMDW zMXrAVeqrqg*r_YyXexY{0N-ITuv34Hqa)z^1o-m)_tf9x=qS1VzZt7+V{%{Pwf{9{ z8`wHzuh^2Exv6$od#bez}LJAzsqbUl2FDvt#mUi-h|bMXHhPhW=b{?*RiS6>*w zcAXthUxDutkiP`}j&tMbX85H7e8czfFN~+J!?)Ju-~Nh!aXfXwFBITwFC+h@@$?<| zrU?G|{jz^$Jbe$oTY#_B|6k+jR``AazOwya9Zx@m&+757f5rc2JlzhzK!ESZ^QW^9 zMM$lm#{NgZ^RGqgG5%W;A$5drT`1uA!wl@wFA-8C{6Yb~_eIqIkqD^^{9*yVY9suk z5z?LT)r3Z|FH3wFTwn$ z)u-!8dGPK2@IEP9s(SppkR-6xXX{Ce;ivw|-&axim+MK-z%LTu`|2mNH?*Ck*Pg@i zw^lw2)N?~l@4r$k=l`dk^c?cr&hW2)rvzWBFD-*#c#gksuK~YieW?Jx`aFMMb4x5+ zUAw-t5`L}#-&GU&RrRIS@O2mX=Qo_i_ye6lKgRX1s(v2#{;#Qp{1Nq~waD)kkYE2d z@=Fuwr^s&r9}#Q2#yw^>1s3 z<6qPI(rc*yd_MKB3e<)CUDG6i?Wj9}dXZn-AdksElb42^&cE{OVEb!PUveS8{tB1= z7n0v6=dVA3euMm}0`hxQ$ltQQ^fvMr3&^i+hWrgD(C?7nQAz&jSvPb2b)(A5Z-1qA zk-v3)$&LKEfAMdB&n?K`cmn+a`E3pJnB4c}g;)P)5y-EtFKt79zkvKo|8F{h{)GHa z0r~aykpI^D(kIBzuJUjH0u9=~#ROV{{3QbN8{WK!J>8|gv=jNgT=G{Of0^H6A}vLJ zPoq30_kDRO-~V;nE_M_4TDa$Z!9ffBQSTB(TMriS#n^>ssb9 z`EQh$^7*g*^xw}vXkg|4<9qr1^7}6zml{Z3_X(0WI{H{v!w|Sy^wm;1s=>Kgd z(wfL`5b*rHXLu}IbFP7O9QjSR&*t9#mOIh@Z70&Y$nPG>-!B@0{G|<~Q^;@W$-n<= z??V3e6KQ?qFA>oGwlT>6R|Dw`^5+Z4pV|%iwG(M09`6lGA-AHPP{KhQ)?Qgvo`8!Xft&!g?Aip2^Th?hLHAa3rm;4p?zkZFC#vs2h zK79Qff2^MUuV(=As~Sm7k>AB7f9U?#GB$zvTUn_Q`PKR1^OLfrs`tN+1oVI8Z;t#v z0r{;BdNF?+D~(6~Tmkuwf5oyDbsI?<HLoq}Isq z5RjiuK>m(aYC?Y96a4GnU`GG1*GSSLf02OvWD@dsveHC(`#&*(m2KwS#y<+>{0$mO zk;rez;a~p_bzkPc)k@9CUm&3UZOQ2W>PFHX$Zr#nKNa^MI+)Ip{X;PSq*Dg>_BSq% zV(Svlkz)A%&OH2z$N$cQ&yf@Gt$V}2|FcWCN~xQwKK|)zCA0KS*)(c0w!aIHbFY8@ zcL^;0TsHN<&o^mfVH)8L54ra{u?A8o2&$Ff}ND=>1<$^m1k0ztw->-wXHs z&Q>?pv?c26zWh_e=hyB(Z@~X+2hL&g&*Y{2{bx&y=a~HS|HU^}a{sw>n1yvMu#zX* z;rhSF6N(`_4Xf||>y7+UUFI#T|CTjz{?Rgg{TG@3_xkT2QvadnpN1^F{|AX7!%;`Z z;dwmr-?$lxdRAq_mtx2$_$~o{G5l>cV#rwdh7tVpJ9FUIjv?dVmk9D>>co%<@GT?x z=P$7%KYT0vd;z{@4t!M%nF_yDlwUW7%z$ql#lQZ2a{h=IG84XYAb;QeF#LKkBon^c zBFL{FLvrBT2lMyy=OTZD7%~^WV+DUd^%3}uV#oscWF>#!F%N#@7_tby<^}$~dM%DW zO=HLt@bd-ucKF+x#gHfAdj$AO|7#ILo`+w&ihunp{jX&VSq0y;n!lgB4(;DIhOB|_ z7T^~>)|YLAzYe}`4gdV^^~kS{AuqvKt>y3MZ$STt|1x~L06+Cb_#I-%Cisp*{`o!d zV>-r=*Wnx1@%Kw#g5N2IxZrEn^Y@E3!oM|!ybV8JfM4)3{Ky#cF8opfzA-(D{W&9s zd<5V0BLDg?#`xEYCXJ+fF#e@_OThe#r!f9@OC#xi_)Y=iZ~FfrfAdCCZ}=qw{37IE z(Xx>g3twaB-~Qxj_^lgBCioTszLLLPBPj{Khl^iv{P9o?wKN32b$0mrFa7QnMzH+b z_|whIe^5CR*r8f#X&8LNyzstk%gfFC74vtzsFpI|Yv$)M*^rm=<6riR)sw$ua{^lr zKL>v5!aN3AS<3r?pWl4`(D5(L>+mnBr8)467Ur>l!^`)*(3h>htd{1&FaDgrpYKXw z9j~aRdGOU=@b^7$qW1BWWx-;M)cGa{i9Av9tufPk>*t6~5G1dLF*x zOaAq5dLMp`#?lJ-hOhYhz7Np<;ID#j6W}ZTzh+};4g3-TzUDCMzgA;u1ANUc{`H?L z`*j*iPWbr(e9IB|bsI~Y;Clr4+N1Cz8cVOk_q`l^|CNM3|4XhdRek>D_V#5R>ou0% zhHu@?zx_*V+{ZdLXe_-4zfgd0KNH0|vvZ``Q26iin12y^{_8pmf9yHZ629p@9)88^ zkLc&mk^A90z2W`n2Uan;2Ud0eBUhr>#|7s|FZjhDh4*D!UaH!+!jD~Xjzq(EdHDOb z$(Vn3o0VEH|H><1{*}FcH2WC&jmTf}3IF`c{5zeM4ncm^;yfm|vApoQ{!{Az4l7NC zZx`VEmZJUdveJj(yF~eVD;){nC&1SaNB(=QbPRm$lX*;TdwJp3{`mYY|9w_E4t}Zt zU%NbkUFd106X83!_!am6S1z6-W99w-J+qin`TtV?_AS-3|Mw&R(P%53jQmA{@+Tde zO!MIzp2`cGzqHY-%DSpP{-lnHW{*qf$rRMTy+`=^N0TT^Rr|#|5?Ipjlj(ot{=X!T zT~qjNe>#TzHO`Z1^6^(de$yAoe{wQ?2KmWz{PVka!vAA3T>{^;l)qn!`ma;-Jh7qv zeFEw~^(*8*J((^=e)V$x`HObL_fMwJ%kBRgf8Vi1$>(TUo|0`ZPcA7+4BDX z_k|3#pe($OznTNce||DugZvg>9=oRV+yCTa{&&)a$#fljj{u(>gnwx=-3Y(%IRE^r zL-4OmrcU_k-}(FY68Kjq)6MX61^B6F;FBrT1>Y~g*PVr5V+ws6K0Cpq{wtpUeKF`f zc^uonJ>>Ut$saoY!p@=oRa58(@Kq;y)PJb2KM%j&6uJ$* zU4Tz6z;7^xehl9yz_+c2-)IW`6u#pR{`GIQMYI0H&XXnR|CXo2_kU8hRQ36{ZfP|8 zYWR7w8h$AUe{ud8(hOPVX5<(*{QZ*ZNtEv+nZ{|0@>$n?8&zvjj=+QpdHqiBM%6lb zJ<12M{tm2vr)<4E=VJI{8&&U>t#9^NK2v|aQS}wdw_x2W=WOGJJsVYJ)pq?`TS9I; ze{-ZZQ(wLI{LwDF!ntD-3%s!W^G7WHIb~gN{cAqE@%q5;{oD6pnA;Ut;D`K8g{8gN z+4LB)U7r87DUStS$Lsv3a8WFqWs4!7!1oLAOSdPmSu8=EJq|MOof&i}_n^&$VjH`V6v+rCErxIQGJCFUPo;$Q!!{m4I{ z4^hJ}t;s*X`&;Bs>_eKu*VW7~(|M}}BGGn(`aw~jxOL+gU zp;a~hRnhmrzYTstCBAo1_4uCpiOi#qC0*cqEAd@}tIs#y9ZPP9uWBB?{zla*`Z-^y5;j2c5_p7e{L;If>{x*5M zCCTs&qWsucG8n#7fUjzT<6m4X83w;Zlpi09_g=vKuQB}F-`^*ZZG9k?jD+tI;CqaT z%+NoUF!*}LKffau?Vk`!#=|cZ;1~79@i!@!Oop!>%Rj$7|8IT6#?t%GVE)nWJQg_4 z@w)!^{EGR1O&UvIz&GvT@9U1izooIX8-A_;-+KhlU$kf}?T7Cc;1~Xm_HWf#It1U( z$Bzi~vD}VznIW$ilh2=r)x`eKI+X?1l^_3#f9`*O|Czi>-hU?l1m=IXZ!Gzc-{YPW zpM4={O}7t;Gdt-MAq@P#?l4&+OPTNSLUDV8cU_{ zQ@Qw|*FW<6|BuLOEH!Z8{Ie2&?wG2&{tCVRD6W;rMr1dZ8o^f|;9vj7+KKE(_)XyF zit=+BOSi!H3-Dbk)0kzEd0{D!uz?a ztEc}P42kR|_;Ioy9o{Ep%gv9!gl>Pfo{8+%v?kI6@V$M+_%Ffl58n~X-!EMr$8H_h zL`r~fiR16*_D21WZz3hbclGD*dn|bW$67h`>&dwO7{KHG7b|XmPp@ezO+tnf?n!~4~>{T0uFU)WTd3SaXCf8Rbgku_Z3RI)%*_?Qc>JZ7>Dfe>#utFLeK}D#iSd##3k! z=6{e=dEDFIcnN;vNK1f(L3Q=62kkWY^mz=Pv3*^k58lb!q-=F{I4$Gk_!LyG-`ma*7MKr zc?kZcX|xY~M=$<98wvl)H2MJid;!-V1*70g(`f?yA_3?BHU_`ebeas`8qdG}UE|=Z zr_+(}$um6siu<3ln(1^L{L)JHKjSx5&;G|YJ&~PlIh{^`@8ps{^!!Ji4!_lOIthLW zAOHIJGr6-aQ>m`K|NPXN*#E2#KmL4j<#HzP1B3U!rl8l$>%uK7LdTzP`1-mm_5N#q z27K*H;eE2YqMsV{`f#@V^TIHG?!9$c{(aZ{+3*XU;r;O+R`k`c+<1Lu{>!1hD)_a9 z3DNBNS`A4~9qfNc%wmCcysm$=cKB@@k{4xvB@e%5-9Se9yMAsoi|pKxIN=*!2=>+0 z_5K$(`XBtFUeWB>**)~oT%3PB6zqrI|0uOr+5DRj-_Sdn`I_&ge)ztz;eFq;)#J0F z$gkN;&%sYk3-9MItsdX?Wp_5Q^tJJwa7Ke5MN+EVuCgwIbtsxm+1_#@B%GbYE9shEFZ;xPZB{~*k@ z#C~@vtgFv$R1HSC8E$|}_*tE$8&yNf){n&ct&29QMg^^p!1~cB$K$nu=TF9?d<)8d zwHapY8vBxJLRops)*;5sl`n;6#p~K)H;-@E7taLDe;XW2Y{>8DkiWd|9BE|6A+aPA zzAi0%{|o%V!RKFrpWV#-TXoNP<{27Ga^SN{eEZs)Isd*<<>m7${;*gw2Yx{%K3P{i zzHekSo7i_R?S$>GxRUKZP}fym|K9jS_R)w~vHmH6IAH!!&m{BP|azW>`~KP{F#1z$TpeEZkmTs{52SoX)ol4szj zR^t0!s~+FjAO84QvIM@P62H5vdVFV5EZaUImMn!&CWNnl>rLJN3*Y{-@0l1&mczGI z;_Ke7p8WFjkH#snqyWCN5`Wj0>hYEN=jpNJ1^C8SA6B+8c{?kA{i}JedVJ3U%zw4T zk~Q!(6T`Q^du#Rhx<}z>$CCB%^DFW5w^ff{{2cn<>{#*&eEp>G`Nw;z$1j!h&xs|Q z;1^cn%Y8y#{Hc&y6K-!8Zx;4UeJz=f#qD;O7ePoxkJxoB6TC4PQ5zfBoAYNB!rg7d$oSz-O9 z_0}lsZr%^Q{&Z(x{J+g~Iu+yp760`!b&dQoRW@7q`%rO(kj+-!MT*id4 znG^7X3}w}|HIv7W8T^1HDK_qb_%VHlkGb}nGqc8KWX}2TzZ%$H%YR?^?sO`T|J46( zAsc$ksVYFZ8Qy>7#gB4~i_SS!r{(n+&^Y<*LiX7er%HNnI&F&A%VQjmV|_Zx^7_t8 z7BUItM}yYyyoBE`TR#%()A8?1?&(w>AKEqKtTFpftbbqjQ;jF#%U+!iuK6|anuqav z70Q9}CE06$vh2(2=VN^%c|Cl2yh`?(1+ACM&CAxyub2JSC5a4@iB(e16Gw3JqHHJkD&895Xcl-(6|CiQ;zhVa6A@6?#_(iqg zubM$WhhMxu{P8bPFI9c~Ge*E)JA>|oZ|%vy{_XYPZhcdhyS% z_?u_Yeem4^e9t}{|Hej2`8fXNKF{O)Lw)`JYwnP`ta$&m_n-Oz_y1LUg3mv-|MmWJ z@aqHH$G?47RdWB|*8u(Rtr_$?)PF$~|MpK+!+&Q6{T{w5n!m5~Klcp!BYe96Uw(l8~_@$Hi=ePHMfTj0Lr}ZXc|2KudZ_^`xOgdG=FBae%?}i_rPMgA4PvxKAAB*}Q zkxtvd*UjSZyYEB(x#_eMeE)3zzEc15(`h7pHiy5T+5`EQq|>|L>lX0$)w`3~fr*jQ z3LJk_D|j4#LeKvSdLh3vo!&3!&*z_CwGQJy3uDP=82>R&;eY<`ehSaOY-%b!=D_|> z#PcufG5)qFmh41+pMd=N|3UuOno3V1f1!Z<&ePr5;hZ?)mGghbzx{R3ApaXpB?s~s z3&?NTn8*%497n!Ee#>6|`HLLL|5j6J8S<;2Hg7$x}sk9dPa|Ps=$A1n#9Y=mde$Ti3^ZQ>${X62w&vO66 zm|WociP!jx{QeXBZfhpJkNVd=#oyPxg8WP3$Wi3a#h4)P{GLw|**;w}=|kkVbml+) zQ;PftUyUQjkiX<0|NOd76WQP{&7^I}Uvh-MuYSK5JNSAW@gcwECqcd|j{Gife~0+{ z+Ilf;aMxziC#ZkTQT~3ur#m~iC61g#e)Z2h{EGJ<>z!#P?U1*>O7fpPb2IY~0(+H; z^B>r!$p3B}IfeYWT=Iur|0upYj`-pG1^7if64{dT&7`kT|Aw#Ta^L@!Wc6eRx5be& z$j?f6^uN&h*MFACnp|im?M8l2CH*hZgQ|S|e<$|;o;Y$|-u^!2pIT1B&;euyI!W7HnPfBZqtzXbUYAiw@s{_U^xCbFMS#gQ7w zpDXdtZ*OB{OD;8&zC(V^F8=!;->w+;lRu8sMt(P!{1uOXhW@umCCFb`N&EYnZ&LQn zRlWa_k3T=1izD(q8b6o(q5EI=oAJzGx)N)&;R_N9m4zH z4!A}775R00`RBKOgX^!q_)X$Td-%56{OjNFOCp=yy18@~^D7Mhpe~-=h5Uv+;r-NGtLOMHkN8Ygv_Z9JyY~zyC9t|D3We`20s*`^M|#-wC%Y$7f3gmh$uetR0frw5a*?r776{ ze&BNd^G1IBQHAd(vPa(AOQRk^|9>rf``7$*6_Yar=aIeBXtKh8hi6f1s=^&sY8c|9)HS=JCJR7u#2ue>W>q`Uv?gtExYL zdB6CnXl5APkbGVT&%dq<-~R%Ca20I-A^CldXyzW(kQ{{Xf1ZnfegBi&r4G}7eQp2W z2MwyLb7OyAe*Yg|RB`)bL9Y+g&%b?NQOW*ay9D(=t|2)h*FTr{{|W7X%J!ERDgBB5 zr#;W5|Cxg8NTar}acgu^gJszMuZH*M?tY!gzgN}$uV{ZV%lT*w`5haEqa?f^_?vIu z|CjTxd*VrV`TV<*^RLZScm8#~|I3*Q%KCo-`oFVp`2KHS_#Bg8|8M!_pI5f53F-f# z`8D%m*um&{(i{05pNBvH(A>6($;Q9=^1k^0yR;>tzSEEM|D<@*AAV_3cz>a;dVKYt z@JGiJ3w-ufct5^tRr#UYzv&G88S&&H_%;Fee+^d>+0jqp$-{E{FXn&#p@~gmM|Z@N zN8pnu`TOp^@IQ|y^X2*%;CtfX7sV6#GinTb9$|s)sQmeN;O95L{e|{FuL=I1c(Mq7 z=~Mjczc>NDH=aBWU;iKezGH9_+g}<_o`KH<%s(|fl*Iac(2uN<^DpI}Up?;uwtZVa zvL3#A8GqkB68Sy-$cylE1^E6^@IUECHo|uc^0$B5k2vA$mh-QF$CxCx{qufgGkhk% zH%)@SvmbdKzUz7Z`3vufV|~8tM_ll=1^j)NoFD#M@ErntdHko(u6|?-e6oUn{@fZC zc4hY%(yAS{|D!z4|3i;|xmMKw?ta9L{5ApkEt9eT@%AI{!!HrwEBz1thwv>c`L{ot zp2W_7*`Ijedsp-K^)r%K##jBxC-9AH#Q106?|`peE5^^*)t`J0-yz691HTA9DHN1{ zcYpFFd>aS9=Wr`&hNwHv4={fB_e-i?N;%UgUqc^2ISS?b@c##Y%V#^i8&&Zr%j20z zqvsg!*tb#DPkudKEWdvEV;fcdQ4WlMs=wZ-GL^l4m2t8i5iM=qPg){=b zuDuw)^~4s^DERv3IUMp=-2T2O&`7J{YxBbAcO0&s?a!T;#J*Umk=DXj|INSu=^lgs zf<{^g-z30S@~_fJ8{p>(@U2fE|7wl&5`4b^-+QzV`(lkodKtc_#(WO_KlJ*`^fdCX z)kv?v*Zsr4|0#Z zN$krHG?Ev7ssLZ^e_wvAk@mxPaPcdif4uonOX+*~mh<8FzxH~Ym3>21pa0sWf$Yr@ zEv19-{qa27zheH`FSV3@fzKWY?>B2yJ^8)$2C~^3TS`aZ8%*JSQnuWD{a4K2{Nt9= z1^CWNe9bM@lRq^X??1FDokmT>@#l%~{jcishn{~Z@Bi~=I*oy!D&YRN_8H{gl1}@= zFB0Xymrnb^Hwd`@t2v^mrvSfj8S4L|beaTTBjEnG;(we@li^zg_{#gweU?rK z!S@L8iyI-QP% zpPRwoSNh+9bUF^cGn>D!?0<{X=_EP-Z2rEI|HpJX8NTfi{=Sm`P&%Cs-<`|fH%`F& zzx|Ru_#OfEue|?h9UEN%-#d$cer5mD*hXJ~Z_niK7yW_l zubGXmgKvFr5%=StlE0OWZjgO5|NgI>|F*T!jqnQvCz%LZwyB+ZN^(WuK&)pC{zjoQp-2c5X z<)(c5ljTY5j)zU;XZRLpc)z;Nf4%TG!#^yy|111`RRR3DCh{A6^{f2-V%eW(BFE+S z7vMWrp#A5Y$O-st6aW0OzZw1?@Vx?j(+kL-Ya)NbH*V&iU-maIFp=}{T>^Z~D&)^I zky7~nr}^hs{DmfRMQ;CR`1|hF$iK)${)Vr8mcQ>`1OG7-snHsH*d_dZ&szBTCQ=7} zi2&d94*LIM6R8hhy^4Q+tsD8DF_9+l4adazo8dQu@7~S-{9oDR}Y;{~BX$!wtfX_Za{`f@F0lxZp_2+-@$UtTO`R4su#ub7aLVuQI_YQA6+_;ZC$icwOuY_^7t*e|9)8}qf_4qB+Hz?&BeovHx{XTLz$WKB! z*dK^;u%C=_z|T*iY;f87>;8#yzETeIQ4aCtavoJk8;2_w3FE2vh~;f)8%}n z9OR=M;>+b=ALS4quVxc@F{{G*4By5Tzn`2L#x@cC0Vx(&Xc%lJ#^_=Dod+UO_nbz2uP zY^KV>>;9wS$J^-V@Ug>TWjwe0pUU{N$wqg{%! z6dU~(KFQ{P{-gNAZL}D^KbimdztaCk+UOzps`nRh@Bg+f*#GRY(aZ1)n(>%_7P|k* zKZ*OlzuPF8g!XU2-`Aaj|A&oA@NEKolX@Ua-!+qVhi{p{KfhfY%hLDGr1!%&y~cn3 zzgL6&`({!De2;+q>NfCyoJo!F)sy(wzpowq!!zjv@N)(DsU6_|I+ON??-t-|`@{Fm zqzUl-0({*7_$Ox4Bsu?Z{_S6s0RPlXnhZa6B!Ax;+n=TXIg<{8Z({s?!$9OeH(@$$|2W3C)io%fUX% zAwJ3>KFR^VQ1;8#U-xe*=PTtPALS5VE(iN4hxjOm_$UW_qkR2ew*I=`x}2|+gM5@j ze7PL#qa5O+9O9!K@J;ggOWFGCe*1F1QV#M_4)Nu3u#a+xk8+5Qvh3sI)QJ=IKcsB^ zb-z&w+CAWXs`s@B}<$R?acj({$7*=^{=i$*f(YC1AdQtLVbf$ zzTx*oIoR(bmxKHyl!N_&CooUfFFe3V0cxg6}H9O9!K;-f74 zwbB19sQ+PQ>jVCKy+VDrQoiADMLF2tE|-J+T_^|pyHO7I_o6KOb>MrD|J$|40sBAyUAM7X&vI!j+TZvl|Mqtu!tr;QnG8gJ`x*ZGU;oeWA2gF>_^wXXKmJ+%`bYLR!5;)) z+gXf%d#afXf$tFD%je&l;17dOZWWY&xS2c%-zLc41b;aE5&^z){Wro)M!>g3@~?l{ z-voaYe2)NM-+3UreWaN%`1;%U=P!``QD!m@exU&0dMo@fW-$#{`5%AmT?VqL2h8LVG6Yw4I_0#$L`TddqM>AOhUp<4r@4)~nnaLXXnpymP zOZ$PW{U3rAIL_#TS@)llkNQdBKU{kC&D)f@Czm&|NE^Z3w)aZ-#QWghpnVx@Jj^vUfJK) zN*V!Q93V)(i1bGiG5 zy#txf*;;xEzQY&3{&93rma4x0RP2TSN^9w9_}&ft^Q-rv{oy|g-~J+hKUZU5@Atk) zCJe*&KbZghNA0($|4pr>WytR;726;DmGHIe_~&pMR`?INs&EyT_cQoNY{^m$Q`!~;^(~+O8;NSiQso4JzP5HLH+yJ^7obP5BYZ>f3AT1u64Nnh|i$UBfoJS|NP4N-*Gc3LVorLf8W0h?VpfA zS0KMjK>mUZ^#9+@d>$Zwp--)9AAe@g~k zjr6Gjr^n)|MP#c68VQ@(6z{K$m8$ZR>5DGL7nhDoA|fC%Z~a#WhURD z{!{1k_sLjne@|vm7xEWw=I=Wm!SUa3CWnyUnakf-uR;4imqFh_e)Vhoef@m2{~0s+ z1^M$A@b^pP{3|l(d&sYQoxktRMgFs9auoSX1>|?FMgCP8bSv@~2*|ITf1ERuW5{oP zlz;uZ7NP#nn~4v8p#a~q4)wo2gMNhix4*$Ze=e^7PaywEK8^au zr)FT?FV89K{_XyE;CI4(|50;eP5I}q)c4`}gQHW(Hsmi_&cFV(`RM-_&Ez!tzh6NA z_dEf=)J)F8XAAjnfAaqC#AP!%58o-^{8#@J_Pg`fHu|NPqLasT6QGofv8{!`4~m!JQgN|H$p_)LH=KmU6Ier@;#0(|-WXR4G; zRPc@8^RIv9{tNsF_;vxllD|eWsSn>Jz_%>L_7A@)e4hYc??L-VBohsM&q4m}Pd-L| z_^siW3h=$MUoV-og|GjKfBwQxQ2+IlNqhKK0e)`X7lL#NrKTN$PncM~6Si(Pl?ia}4Jela>+XeWRBD6pJ zd*HhS_}ZPw-y)fGhwl^M`{AE}-vhq(7yj+9`wG4$ne>F8D!`Z9e`?EQ5(VEOz*p)Y zehmB~0lw1zTO|`Cd~%q7`&;**{#z%LIQRwuz76x=r?yEZ{ova~_-@>Pb!N~{F#eY6 z;$Q!c7cu_#RtEhNzTr*&K6?rNyBTy3e5U|EcPHxq;|zKTe*Rnh^B3$!es2an0^j;J zf4^`~9P66or$0Q7^WVC2Szx4$*ZZF;`HM5?apYHT;h*1*=TFiPX3&%H{Q~^l{qT=u zP(OV34*&dqJb#kz%b;iE`rpXk*Z% zk^kdaw6PV>e>QlWyRW_kfA=if3Vulk{=Vxn{BLK`cJK>3@%MAD!2f<0)xs}rv4DI1 zTmFK7a2D+d-`$yi{`{-(56_~V;TMd2n0x-zzv264Q5}3$B>()nf8d{(MZ3bc3-BGX ze`*%J1HMau&%TOduMY83|Kqs+Xu$vY&xjeHKQoKogZz%$__u%Q`5x@dkK5>^e4={tJ7!@1$L+~v0`eCM%71EK8)*mf7gdsja$^VYLJ}CdY%Ij~m|9dD0>O*e-4^fuu zBhdaIm6f+_9b%N*e_L5OT>ktR^ncP;I*k0$yKrfsFakl#LpfBUBnNB)f#vIhBG0`eEeqy1a7mHt6~{XqWxkBvZnr-c+Ezjh)Q z--Oep>x=K3ICiRaTdC%AIRC9AziEt<$-h+9*FQ@BS1e>b@}~;Oue5*rwo)DBFBw)z z|G)QUuK!fm>$@$fIR5a-dBUEvXG5v{~|u^f1@$*XBDmM!+v0Gr4Go?o(`Wskf5sjzk6jATejIk zoXAfm@%N1k`=8e=WD|UY0AC$Bfc-G8t<(keuX=`mex?53u#ne~zeGTO$0RfR!P-{3 z3;FE=@+}n@|%{1&tF~pAL8uIa#ma<9}dI)m)H2e|Fe2?Z+2HNaPED>?rw+W@Qj_^-_WBAK)od`%Yt`CFs@Yh==B`1t~S`(VsJubWBZ;Oo2c z&tD+tub)XDfL|!eZ_96^3@CY=x8D!{jo zMgBvXG!K5U0N=3y{<%!L9KPGmzy1q`4Pfb4GHC&PzW|>-iu`|P(v|Rav-#&&e40g9 z!Dj+|vJm;}WKp~Y67dS~RhI{`Ne7;w=ceKO@BCsGxXx*aTfVA5A?SNmpMNRuf25mA z?rV?nk2T@P-vWO^wfJ{TCDHJm0({-P-fY|M|aM|LeL>B?-u1x|VuzlN{v#&_X_fZ=KBl_~VuR?H1yJUnsy=%{H?qKemuh;TH?=4WFCYV;>G7 z4RK?_@h$)QSA7A0#}LvSKKYKnZ!Chpe+X#}-ypzueF^{I5Yhp@O@L2M!ap{I+zP*N z2>;_>;UDl%4k2COdx{0L|7rMVhLAhpmkRLZ{r_VZhLCRXt>5#{Z}*$o6PJgOd*Bxf z@JnR>?;+$q_>NTm`E$>h+2Wc*i2;7@5Bz7DEO9#`1{&(X7)5mA-&=IpPt78 z=lQ&@Km4*Ur4S>0efxawzT<+K<=0Ljec@XL`11U>d{qjGhhO|u_~#D-?NZg(Uqu(q z?AeGE(hq*2fc)eV{Q4=xBz`*eDa0bT ze?}hn?a%lZ+P_T-83NxgAiv^kQ%DN@f)4!KzqCg(dp0tKq{4UL8Hm7k&TIc$WJqR< z?@A#L!S_~@KmXuO%|Ez4lm+Jc|I1kmdLq9*g^ZF{bmU+EUU~d4B8#ra_@8PH|KqRm zarh&$=r;J4FZugU*&m%nJ@E4d_$B%9$7Rt^;d=!5n#J&EWYI6->%Zb(|32Bz$fA4U zTLt*;C*ePmMfbxu?c$$5^*`{R%%X?jy9M~l{fB3=XbF730N=kG`Ilu;AAGi(fBl#4 zg}*9`o`hc@z}J5be_a;!!}kjCmHZpC=sEbRJ^brm>3^;)dKtb?fbTqj`hPcz{taKd zmw*2JAK;f{(TK^I|9*zQPkx4fJc~AkUnIa!J%#(f{w#V6d~%k5e&=E2Kbu8cz&8l+ zT}R|F6Wz$>XmkRJxrDT?_&Zf7+*PrL#{_bw^?5;(A`fxt>|5v9l`I<~#s_*)<;{11q zqrH@f`QL0=`21S?Ouh{=r zwCW&P;g?q8JLXqU|0ny*%-N=cGzGqT8~^@S_znEF9i(Y;{cqvF{i*iDZ`VPZ0pBek zzxIy-%-Oz!WP|VMY3IKEX=5K?&W;_VS@1nv>c3+D-=OX!<-ym#6TbcTZ>gUCZ|su5 z?rPjgS|sO}_>VuDCf&oj%{xubB;)?$rD@#T-%%r(z0stTl#l$S0`e<<(@xTp@U1oY z*MC7RTa$l&l?s0APSP6qZUMfj9_qhMC+Q{legVFw zKJsfjNiW0K)#6|O?gsEXb&}qOUm(EuH$?s4+DUo`zE^M zT_j<4?uo|J!$Tl0HFxS0(vt z`l{#nuWz5s?!B{`)|Yl9DZsY{{5e5k^invQW1QI0N)G$ZTMfo zCn_%aBLZzHf7gE0o1J*53E8JY{v+Y%Kk7eO&E(ftb^EJdjbjs=`bm}r20!Ucld<@ zd{P^}Hk;lLzgU28!}(wOZP~OheA5N~*Z=AW__t@%c=)PP{=N(6pXqmH(|+)c0(_GJ zIJe)nve0N*9R&&T;^dXH>65WY`(Y3_tY}|Nf`z3V&iY zeF(n$Du2IJ_9tgk2H!8hFS;H6jBGjyzV#IU`~`Qw&&;M%;A;ik|JBXI_Gizg)8SjL z@Xv4ShWrKDG#frKaykFPnbwWPsE7YTHnqdI3Gj>NqyD#M(>(ab2l(gL+>87lX46IR z?E-wC>~GJePr`Qz@KyKpW9d7x>C^Ci0{r~@kbh@3T@GK{kAM58-Vc9oHeCTfRe-Ow z|2NrmEqsRnUx)e6>BZUfW%xw`eElA5|37EbH{jd)^KXCo{ihz@cabFF`b(qY|M@%4 zeaQc7HhmNM{af=`V9(6!`qTd%d|x(w2fkB4{VV>-Y`PVGi2%PO5&hqvO+SRMG4bzz zg&i>d(yf!U8{;qRF8=Lr>xl6ueJ5!zd;_2HpV0GiO6y(1R z{{Z|FE`G)F-;~(S(y#D6b;I|6)7k17|MeB=*~GZc(re!*~AAr zODE;_7vSd(grCq^IxV-qC_kyQbOydAnScFT%*dbIS-K#%{|^59Kiwes!#Yc3Dds;| z_~&PX;ScXD)q-yo;CqL{AJtikfL|!USEaxo+gWM^zgU1@@@_viaYARQ8GQ91{_U^i zpWIn$3Ew2ZSMpEqEVYC07vQ^wqx~~FOIrAr&-icuia)Ef)DgaJF#q;1`WyW(tFv?~ zd?vuR*--yEou%907YOi+W#8Ue>I&a0z*mmH4|kTj!B-98-~P(+?~%^Z-SCZE{EFv) zpCw01L*V-=@hwTOGlHe6&%dl4lGp)Dq%;h^YYG4Qw>^@~h7F38hRgW{_(fy-vS+)e z5Qd5I#!8;QWFBv zQdRjw`@bz3&)*wUh!uY7UE#<74To>azgBtpZ~6K!mi@jdWC~XJD#>qccvIV7*!Fk! zh993oro-2E3cvj^byfMH^>2?s`i*AOjbY1&rjShd4gr2XKL4>`WD3cKub!310y!I&oBv{HT1ow1|E<7phyM=ddS8@Z zrTC*$h#f16D#@>DR*gPOA#>o9&f)uivs?tbt!7z)yYI%sz!*2*22z!vYmme*Yi%c~#fHetI(N`NL?k0X~_} zzx};4lG%p`N0XP}8wB|7?PeDJ(`fQCe47AY{`|}6pGT8d;X6h7C8Nn}@GZIg+rMN* zGK>CYG;zVt7vQ^ACNsm~(PRsJ4+lSDz!-e~IUzgF4>0QXZB*4mS^oU`n~`IbKmWZw%JFzTenjrT`c5d{QdX8f|NK^zTVSQUUj6k(l@4Y3^WX32__*@< z@7;r5-vsNMSVR4$D9irI1^J4vmDl6<1AYgTgZ)U9gZ6HF6s1rbYclEN1xAm4(;- z*EBYs{d}n_nS=bQE#dQbzwbpR|6%{z{{Kdmm#=^8>OpLvbvkiqasG7||M$OF<{w%-;hI(!S@RAOJqMPhaQLTvhvUGeg=M@9C`x2V={j~-vPgG z4*df@nZn;seHQ)$IrKFA5&^z7K9QxHa_AZOmZ|*nJC-1SVh%kA-y^^;dJeuhhhBuQ zpT>_3!4|AFrp;Oi~u|D$rKGzI(r8T|7X zE=T^cIkYx>uK-{5JpA!FGy=Xcoqv8cuK&`fyeEI%U`obLA8NQ24{|~+YDS!UO` z2EIBoeEqYGO2*%BH1B`?zw+1Lp3jommxE_hBYeA$$M#<_|N3? z|7kX{Kw0;{jXwnbRk{DGBd(YJs>A##y_h_9HBQ3yr)sid$m<&tZOG?8{xyB6vM$&! z4tl-(JK>hQTi#exzWz(*WB$p|NNF_YpJ<;8-~NGrA=nT6O#b`-ze{;vvmlurfIk*~ zswjV0q%8{VG{dni)MK>iW|`K?6;w(;Fh>0PsN{E3>u0{fBj z``^INt9t)qcmn&sQIXPYDz2Vea>|NQx1qyFJ9f^QPwv;C<5v`A?&{DP-=oPUMhe^UBC{Qtmr z3&^kZ|8bGhGw}TaeDW>oe|)601ir3-fB*B!{)9+rsoeeoe5L*2KM&t4z*ql(?Qc?~ zvcCjdyD`6$MHGFe}>GaeKG!Har4ig zx(WW!*)$%$M}S}AfuAy)_J?08z%SU8$d=8VLx;oHdHL5r*_q64$(Tb&z%St9R~-Lq z>3D=@z_))LKL3kLs%QLDe*SC){7m?sAH)0Ab^Tkk#>84a`v}c}Un;=Y|CP*IE_sB` zhOa+Z{rMmJXC7^a%53x0AI3$my`p*?WqJPJ<{1mv!^fPeLU}y~G@trwpYic?PSrYP zJt60Q$Y=Ah{)4jh@|fq&OHS2?D9iH!Ym}8gDl2#X=BzOtuisWy{;5%dvKakaNmjxT zhGG#7#V8DY7>Y$0lHcon-`BNW=kI6VpR@Zu=lA>E4|95*>pJ)AJn#2)UH5fe_jTXr zXff9Rd6&P*S7xh^fxl+2fBx>@1grdc`yYn?Dp`KPEWo$PS$Y;_a-^FNr!xV>r5|IOMC{;RUpr{G_( z?OxOU%X@>rPqtbD|E#mkKmNLZ-)!|6_!pmJzJGjQ@N3!XbMSYzwZQ-OVeII-g=*Af ztiSznq3QA062PC3t(Jnn)&hR5lao#Em#w}C|DtovKmO!@82&rpAJNWy|C0Xj@1L!{ z27m1t^Xq?gBK!wrt8bBilKK2>)(|#1DO-IT{#h3I*Ieyn#|CAq@4~;t0{^ms@E@G5 z?uCD~1^(3jWnPo5egOZdLAj>4KUL|&*d0$UR4+mMS3crC6a2mVUu9*B)Zy^2`riNi zPv*Bz>)$Qd*S|`33}XrR=c?K8uPrfy-@X6kx+ID1zoVn=dCY%QSup=m_66pD?(ArL z5&n^d{`;Q_--3Po_4%jFj<#3fpJRc)zWxCIufxC00)Kt|!L*LHUGT59z@Os3e|kq- zIsB`Zm>>U?gV(VAGdkMdrsIFV`TqL+YgR|wyYP2BV7|Xz{%3Zy?S+3*zWM%o{Neur z{7WtH*W15Y9c}yIU-6*%{QC8W*&S__@YgJO{*dxD>ffA>wol<-R%1TDJ=4ivdn8wV z9Ou89ZRVfx3 zHGlj|<$wQzj<#RmpZ}}*$G>FK05!tmNn z=JQ8wx{lqkW1R90{9T(H-~Y2|&GhGAG(~m${-QPZ&$(Xq%t+0C;TroF&^?gWs@GI@ zQ}i19H_)x2>3Y*I?bq0=DL=%-@?@qo;^J|}6$7Yv}Q+|Vg zyaoPr{Aa&DPWc1=85a0c{h$5DIOQ++7hB-Zo!(K;9q2ce~Hb>X2ZV? z{3|W+cQt|kyW^Bd_$M7QKmNo&YwtMaJouMdII3)`HH5T~SHgmF{J22&P_&dHg z|M-{No$Qy+Oz8>#A`ARW&v&w4FK3Dd|A-&V=g)8NWXCn8^rQG&;P1E)@$bi!tKrWM zo6nyb4gVyj41#}w1^)JqPF6dFDc8ck!UF$dtiL#x%#>m9&pKlM@sI56WPhYEWhDGd zEbwQqC$b%n9#fm=V*LN|WX8LHrma8IeoSO3Zyi%dz`r2lZqxmh^OM+ro{U%8v_bvb z{{3AaHX?uXSljvVPdU}Ue@$chw}`bx!9V^q|Ne9KH6njRtgQq5 zs{;5RZcP6(V{Os!FKh0ff7$*<j?j%)BXGR{-_cC+r-*p;O}bT-@m*O{WqQ+ zYwHYu*3!R!^2d$He@?6|j^clne}7ifc>WvP#@f2Vzczq>MI-vho*!$w6#kWc{PUL_ zZ9M+is90Nf_!p16$M5+!>gPuE?+|Od9R5jt{qtuwrhjy-Egt@^0RHWMX+-{*SX*!S zGtEE0^H?MLcaF97fqy{&|AUR`9~W!W;9n8I|IofC^|JZz*Z=wG|8G|G3{8Fa8@ZiM3q~|B?Xyu155a?GbAm4FCLo{`u$p-gx}6SH#+e zz+dU_-(RZ@mcRS@Tdmu0mfC5G(yKk@-_Km^xBbPp)3?Sb{~P0DZP$W7BLM%Npz-^t ze?4PuPWV>^@Q?Z_tCi;(mX3+dS;*a}pGKXZV`))`1w_yD}t^Yp; z|BvBcZh?QsQ1D-ut$qQ2Ww8I_&x?Q1pMP0(8~B~s>R0fOx4_?(2LEB%>LK`NSm00h zKV=TjR=c>AhTm2FKITrX+{l9f& zwt5u)Wfu6;{fD<+pRN7^f5#B>kH3EZ)2M9qH~1GH3()`L1>@hJe|@z7DcNc*{EIB$ z&q+u5zad*a4*yCE{PpwCm~6F48peM^&5u8ozhh&w)sx^~YKp&i|KpsOTi>f5n~f9~Wy&hkr)pTqZcp8vn#R z8qcbuYm^6^IREWRH{HK@Ydo9SuSR(u{zY$_?_YHC0M@PDQDyKjl>hcq&EP*(#Msrv z&Z0i=!Bo8Q5`O=nX3=euzx(eWl<)Wc{ezgC`ut*_zFx-$`2B;jWGCyqJXN`e*56#_ zzx@&W4R-&N{5P#gRTjd(_Hy(69i!mCDpgqw|C)I7{Zmt%Y{Mg|$^-DPxYB(8%F*C2 zOjRC&zt+=y|A;Z*U!AI~fPc}K{?Gr7RsP7o(-W!66Y#IFs zvH01;;9sArJPH4rrRMWH3gEvXRe2iz%!2;EUjK?ym96lvu)tqg3I2_#%JcBomYaY4 zBYI%`fyv)p@Q=4({GJ0zt$>$ zOnz3wKh>1+ulx8zFMmp!@)P_kt@3Z0ru+u~q*WG`KYN<;H~dSj@^7A|G`#@xKaW_% zACab<2LA%9{9C0dXTslJXc2#8nsN^Ov#j!Om!?F)zuGGQs5GS${8Lt&fBXx+AI65h zk*@p}1^>$XnCR!3HU3Y^=)>%@YL$MYu>QfE`CldH`D9jGn#@XGNM^k^C9`Ar+x%oQ zo47fdwR$@y{f)8vGS+ zPiE}dWEP2Z4g1~sVltcaQZnnlBbgn>-`baPgA3nqo3mZ~n_kP#>&xc#{9Abu{Os}R zOr)80{NtCP|FzGhj==n{We*M=zbF!4bUFvf9=UCvM^*Q`cxYPpp*IM9T@&)|=ajC1| zpL(|W$DjBs;lCRGMHcuIf2A@{eGL8)k>>N~9LMoj=c!M?Kgk0Bm=o}~%~RLH-(`V+ zE&MB+%v0CHzasf&)6YK+Wf-e$I#1mQ|56M16&3y`%~PL*e~l^r-q#=Zte&s#rQ?5& z|MH)@qH(T&6~zu?`yQLG?uS3?>fc}VOM*TBu3ZfOqWS8_@Gr2yKjoFdEcx;I>H#|b z7Wh}if&Yp5>Syq`cQgO^mvkA%lGn^vtKhF$;P2`R|F!egui&3$fqymp_rd=V{7WqG zFYN~Yb@SD4;a_cme~knF>*uTA!#~PlM)~t@|B^qLul@@E`~d!Jd*if!F*kt!!};nT z@UIwb2EY6G&vD~0Ht^&5>fi9UZ^<#?{Of)Et5z>mn@>jkhxq5udnH)M-`oFa$2_%1 zI{Lro`XB!!EeY2BAMVG$`r~2jwa0SR67bu%`{!@0^IzGg@L!v&z6}3r3;b(h`?9-| z4yXrQxc>5j`STC@{C9Mk(iQVxHdy1r9b>5AM;=S8Y})0KRDT-4Qa}J__HU> z_fI+u|IKO2{pA0*`TnjW@ZXxI6u`g20{_w z1^zKd;s0`)vKjtS|CrBT@C*E3OH-bKf4K$z6~|Ei-bhoPgMYkYe*16#4gNdRlv4O- zSl}OV<}kJ!{x8A5*aH75^52!FyaN9!3;bQJhOyV*OjCBk->I4(|I*gO*x=o1%A4?a z*v$8@X)}z)zmulC4gXXN{9_`AvC=(h%DeC{vcSKfE%+yIw?KmI%X4$e+ef|5d{WWO*ZpXi%(=hhp z*J;WrQ3!6c`xySOZ=U5(ydUiNlYdW4{+Qpb#_!KuuSNHqqeXw3to;hzL&?;}{AVHCe`1~8 z-VN!vA#2E}S=#Q3_4ZSs#qZ0+eX!nsI&^Er_&u5%7OuCqggzVj=^n0#_t)Fcgzf=R z*kKX-?Y;H(3wZv*m^s>+NI%bG{aOBR*RrA4rYn=d&u%gQ_$MvL`ortel??bROU?I> zTmk>#>B?R3&#=J1n*5W~mFe)WvcSLeVfbI4uFQhJbD8R&(BKYT9?pfpQr;|n14DljVXLH ztNkrnFpR|=|3n=N|CnZG%zt>F|04T+s@@9!l573@C+`T({KFURPSSsWGV#0N+NbzE z$tvg`IOfN0oWh=_-uYbyI z!`K~b7pmvMzv9S3CXSg|su#h(!~%cfzoU4e+6n&E z7WhY`dkA6RQ27V9s zBCeOcI6|ZLuOl?IhuxE=GHU-iLsNT3?H&F8Zdb|=k+?fqtAXwYE#^mlhj#G%qW!x> z`aIQb&-SnKXS6?0E>wGfUr9DU{!w?}_&>E!jfa1{1^#7s!hg#`^(y#hSm4hx;a{>) z?FavA3(CJ^8vM5{R1@Lv9BF?1E2g9V!+#+Bb1d*LT|12Jd2Nw;J^ZUyna^LlVHkV$ zjYaBc;(x?^|MKEttnaQx>P_%3GsWM#|JgGySDgv}h}Hi2TeT`-)PDW@`3GPGqTVaiYaF9)>ff9=NpE|c<8 zed#XgcaZMc|0+^@vU4i!%BYiY{@IYh=rgpLHU6@{IgFLPou}TIj`@dNGs>TL`+M}N zrRwM8fA3v&ObMP;> zz`wM6KQ=TsT`7fsb{XSKfqw#Czr+|BBC1|CgpKyW#J$%71yfvIqWb zulfAdhla7Mi_?{T@K4=mk^htFN+tX&E%49z2JwG7T{!^%r2XdemwgNWt?9}a@GrH% zzqT6w+tZap@Q?Y(e184-m!>P;P~%ISAK+lmIeOy zBk+GUUHJw6)fV^{{|NtG>B=AQFRwKJ_*eY||F_bWB>LwFSfwnbrk&X zq${@e7=Kyd??}In4ShFVISKyGPt8C6rLSWBYae!3+yV6= z7y2Jlr!$3bW{p20_GA9DFjrlR`LCE~%;%3-?PLk7bJY#-XBPNZ5&xsP>L&OXSm0ms z5&ZG|lg;qYw_yIgv=aW0=c?P_uWdI!{yCpu{ulnw!9U9a|CA?C{?_EGFT%gX0{{F2 z;9r-kz6Sr4XU#wUj&w3 z%;%3d4*mnV>fi8pn&R(W{>oj8RXeW#)duiidqd-tzoMSQ*(dibR$IV7@^ABxe`PQD zFIudg1%Ian{_$gnu}>B+RwLn`V}XCfRp5VMvDy~?Wfu5Xk$?VT^*s33THs&O2mTK& zRxhCVcgtm>2{UW_nVLR;9hx~(jT?vl-!*eh_jmk=-=Ca2QjLdyWwiP0AN2W$FVdBB zF#k~TnfdiU>D1xunnUSIJNRp#o8j->{vPWvMTv!f?U(-jGbabD{q^?Gyl{$gG5jmP z^6#It{VBa{2K)T)IAb`=jGm%&fq(oN{@0&~dKqm0in!tI82r1zKf@yb%!{Tdm%zW+ z0)Kl~@WcNy_*YrvpV@JW(gXgHXPO`XEXQzG9XmxC0RLJO{Ga_{n!f&R=dXh_yKTMw zIcWL$3%e;@Rg_kJ=IGB~cpF-*Z=>fgyaz4T!_o5>Dxl@(FMJ41&tKTlei2K+{=eY) z_q=_#&*v|cUN)Sa_xChq2>2^nn}7VHx({bw;SooJ);7{eRu>W+0!N24@ z^W#tc=M0#xOn`s2DgNI5k5yMsS0=%~IMP4==A6ds|Fj)AUAYzhRRR3ta~scp75s05 zzw;db{CSP&-!^Hwk_P{>0RGPV8j&CV>F{^7_0QjGapU>79W-5;3jd-2{zZ-GUkLv@ z;2&|We|}e9X|6w~J)YMldEo11p2|G+)W7Mw)Sfv0$~IGuzg@7oi@f0r&+ zJ7E6Tal-%nm-x=XKK@Y?G5^1OvDy*-sTTM8Sbq8RLhuzhm;$UhuEH z%K!Plv5tSlMEG~fQxo7H)7O0eq)G6J7v{(0u>YbojrMr{WQeie`oXGWfrn zr!w-l;Q4p)%i;fCo;m^kSr+iySHQm_PsJk`l@e3@z3bnJ>Ln^3fv7|!`7eJ-&oxf{ zt6nvnwfKICngRcu5;NK#_xfM@$Z&Q){O^Q+&2<0#jaC13{vVd8cm$)uW|;4vQ;6e# zc!@d({uLJZr>w^D|7nSO5B%*}=JS`qzs1i>RNMlrWLe;!|0w)_U83F(|7r{TYvF(Y z?@QE&;9qrt`NzNfG4TJfL|p;@l$qxHJBr}{*An#+_?KJYUt5af|MwF0QTWHtGM``f zKe0r89R4{`X83!be|ptEsBVORV1x8S~E%+{FZE|_2&CmEr$P{bCvb*FS@}Z|GVZY8{zL7 zZN9(r{^2YobFQ)({#j$p_s@9%{?q0vTi_pmlllHB`NLTy{I|lt$^!rV2jM?`uJR20 zOK&!x-}%ol_TH?y%5(597;nCR{L{nPd$Z>%FTg*4qWS(ACBxa!xpS45;a_`;`TpA0 z;q2Y)xyoyF{BJYgKPt(=zTdw{N$7z7XE$a-|IdB?#U43=eSdI~G6?=D4)gshH1L1D zNVyLFl@aFq7bU>IdXX{;{sm{6@1M~R{y!~J#!>vwGT&e85C7j5DYwGEyp{R>#pM6@ zB4sN4i(8xTpOpyzra8(C_~*1S-#=*p{7=hKvf-b4w)y^%SHu6z9OYj4S6bj-P5x)+ zD0%QNjWnM>Di{9euvM>izf_V!>1foZXbsE|4S@bf6?q3b|C8vTibkG z|M+OW>HUwQ`>_6HOk3s5)6o9>V*c@WJz+g?~k!MgAj} zs>k6Um1e$w$+zIYeyREo{EI9&{#AS6pR!bKG6nOWOU&oj{cl{VHiN%whxz`Mxc~C# zO-t2N;9qKiKmGpjuQxAMo5NqT;P}(;5C1x0soE0$Sr+(H`}^xHOVu;s&t5h^{v0l}F)!$5Iuy;44|Lm>>VhU*SJ( zsft^mmGV0+@}Id>?F@fqoB95!5!bMb?meN*#`^pG@BH__MF;xdUw`wy{=D|xW$LZq z&v_;Q|G+$bZ1nH_-REEP2Rqo-z01^e_-DkMKmOPK_bpTJf`63-{*EEw|74k(1%Kz2 z=JQt!h5zTv)Y%k&3;gp(!M|#mdN=&bEbvbn2mh~@sV?}}THxjo5zsLgrlnL|KIEX zj==wp!2gcG|Bk@_j==wp!2gcG|Bk@_KaK!?W>X&kH^FNQ{8gO%94o*1^;bvrJk#D2 zI)c(?*;pK2o%rj8zmxHIH~wg|<8KiD=qCQimd1FYOjQ!%p>6nU9_3(TpNP^jS||yS zA-8$*J9_!&$1MSM{Bt>p%%9Z6n?IiOr`p1UU+euGiy<}y-ZTCflGO3v3bF32Of92uZy~=-YiJ$&Wn;d^9|Gmtpi#OUu`L8_RDF2Qyi9bX9{nh_5 z;1%`%UY*{ZzwA=)_#bL%@aH6iNBr{x@K2QZbA9kfbob`p!OMSX|M1{13c#N#@h|bg zZ=XJo(c5zSU(NYr5<`>!=`T;m{Wi(kj(6s>=u@xPUV^6keR^MWgEls1jeUont|*7b z-pOu?USod?`YbRai}DM8?|Ki zUo${uA3}@$-9KWTeLpn$Q~vL|tg(LtE$;W3b?zGbr_i*&Ciu%o{sUZ7{wI-+m;ck| zdHyR25dX>8v#9^~a~HY&^A-PA?Tz|h5Tfz-=BN$^4~@ zjrC$V1=*Tt|69cw{6$}7Yx)O5?0=s8bpG?l@4$B#{2P7nJ60R(rDT4M^Ot@d9{drb z{qs}k1pkvh_{;K*_!q6LkN;%OUvVfr_@e^w$4LB}8^~Y4`K$jE9{dfh|4%iLe<$Zx zz6}rlhSvWVeejF=FPHxs&L3GF9{dfh|2ur}C-L^bbX9%*Z`XzQ|Gx_l{)X27mmA2R z#QBrH4-fu^*8f);$e+pi3w{U>{)X27cYN@R`Y)INBF=9=93K1)t^e=(;E#X6IR95X zQeXe~aQ>_?;csaDf3Jc3wVb~?MEP&sdsKh^!?CFSntHU@o~r9iZSBi5v`*QZ?6*OS z@s}-glRX2P#$Po4i$?mL(BgRurz3qDG(B%2v0y42iu4@l2mTI_#P^Y!+n&|?3Q_&&>_Y5#P%Plqmmrv1;s{%^(SH}U+G-Wut6`9E!*{r`rx ze|sAk|LCs9`7h;2c+~%fwtokG@Qe0OuK!NXUmhm>4Q>BE_rYJ$*J%H$3+vmzIh;TK z$MA@ML)*VE8pvPF`HRDZKT!Rb$NyCg68O8`}QWG>|`z^XIP!5B`R>e@7e0pThZz9}W-xhSvY%KKMobm&^YG&R>Q( zao%Kx)Qe~P7byPp#YOvf!Uuo(np8%4A|I=-|0SHi5_7_o7HXR(f1vow^S`Ij1t@It z`A@`O=0C{!qr#;Amjt-}LA)aVr~BZy?^(hYC!_usJ6swan^4<4~^`~Tg1@K-))^#99O*SG(NIDc7~@He#o?`R-@#3e@gcU&4C@y|Hv8L#yZ zNrR2`A5?cm``?3CWV!!SJj;lGMRY{n`q$E@yXxy-m1|okgj(IF@8enj1D*fn^WP;6 zjDK$)|DrI7e?@@vpFIC{X#@FFIe)}uVN(7B@OMXf5#>L@2ft|l<@RqG=dY>?kN!_X z+yDMP_$%)->VGj}kApc>`U(h`~%738xFVBBo-9Y}xOO5lN zy+?TPXZWxGYW25I*hT#x<%3_;|J=8m)~$a}mIDh`-;Sv8D|M6Gk@&D)s@)vS`<%;m&SD63xpK|}_#s>12bN-AF<){8D{Sgk` z{}mO0Uq1hj^}#R3zf}J5_(uIcv8H&Xjov#QuXOJimM`erqxYO)Z;pS_duJPODIeyZ zQP*}vUFKloeV!cj7f*f%=l|%+`upF+`tRyaE=|<`n*#6`0nn45-V4Ov#s~ip@Qe3@ z4$gP@*M?ncEBrgLLqx)NQ5)>Xq3QQWx{q7LelFc;KdabCKUOnHTXd}0-im7*J~QF$ z4ffX1V*SeQKZ@;bpvCAzn1gIgvt8%vH;irGbH{8 zcqyXxL)`!B>;4yw-~VDC5FXe6D+2ImO8of^v%-YGDgb|$#Q$Ie`3pFIb(rwi z1mK?|@jui+{+*mZTT?ga* z7e6pG%{}Y<}KfT8q{h!vSAsy#)(f?^f8tjv=`cunBf97mx zx&PA^TJHax3oZA5&V#1@&*t7t@Beh?>7xI0IZsc%is}8ItD)uo&p@t&)&H5<+?{_G zH1Qwe{L3j_;$Ok@3;u_pW&TyrGXEpcGXH95nSVRaFZiG3dgl-&f%<>Em^IqV%+o#i zq2>PXLzFJ@FXj0K|1xNqe*rk>i;rIm-v_S z{DOZ4v>QLP8$YxgKeQV^PZ#{p^7Oj+L%YSF>tMy-*Z7CtqfI>jBL~lasoXYL%fWl1 z|35;{;lBPSLt%{GW}WMwe-VA5(f+4C5t{A4Cx6Lg@9TfWPjf%C3I36WbYK6JWbhYX zTmSqUC+DvW6aI{wz0d!GKSJW4;DbL$_2!R=FyddjCN$&UYZI^k$3M`||GlB9{)_Yf zC`y;=e+thp>i-SUa{V6zE!Y3C&~p7B2Tk?A`w-*&KZB=>`ahGWFBoc^|L=pA>;Gb| zgH``u!v3f~lgIgYkiT^P|CrJx{z{%-@P7g=^B;tk`9Fh}`M-dc`G4p61%EBq$Jd$D z{(IK{hR%Q7-NdK>^7voO|I}cvN6ddz@c9odOzwYgD1UAM{#tE)-5l<5&Y$v4cwGNs z0p`Cc;-dY(&j-JAlkxnED6oq7$8WX@j`Cj5cQ zzkK~?xetC(|7Cs`=g;{6!1EvE@?RW)U#|a~Ie$)=JpUm-K>3&XH~Qcg_1_6rQU5DB zzrA;O)c-)`U#|bp`QR7jU*>Px!)X7C!sPiEMGcJq^FH{CyDef=MpD5l;_u-6C1DhQ zVxUco|LFRU{s#Uh&VRdn@YltE{Ohj@{xO`tG)$iVQFQQGul1k4u7ADhgFiKn>Bq?h zR>7ac`BSb6kNThA!1W(*`QVS~>dn8M^T+oI5B`X*+x^C0KL3~d;AiWN{+}HGD$XC- zH#GT^u3Tn3|3aCky>r@n`ygmB{@s6KoqZyuV{q20&m3)c#d`ZBp5KPH;3oTe`z_F7 z{CC5`_4dioH2$OUT*Uk9?di}o{u`1pLrbu&w@-zp@!z3a7&{Z`^LRS#?_}utJUtJ; zz215Idi(v*w7+AW=4c(EAK;qy9|w(>f3=lke>DC*#`$-XKgPeb{(<&@%s2XqkT=&oB7z;hN$>@&8xBZNP^;$N%}=yxae%dsTh@k70k} z{C6AQH+?~I{l8M1OIeiEPrj>b|Ft{1>FYmoO25}AEz~wo{)XQFk?5oS^R@oj#qa-* z36u4|RcxDA`(NBk(c@2R)kOS9PzA&$$6s4GmC<`eo|zaUwPgPMsJtwxuEX;m*%G%{FVKp68J|#>cx}a)y#YTU+^=0 zbHPu~!lq5;7wdmy{%X#ja&>s{)A-Nx`RAoAjQFR5SMbv_jA@hkQ&R6^^j^t>Tk7Wj zv=&DEOD{YlB;)_$Ed_Pg|BH8Rw7&!``aiV(@gqt{T^HB?Kj!(x{C6d^IRDXl#{%wAl=Ko)WpML!V>p%4P z)A!^3KjQz8(k1?VJip-I4=wY53N7;=fR_0`gO>S^@N~id6HjlIY{dTrv>g9`xDHnQ zUrhDjhbDe;{d+&9OZ*@4{DS{uXg7XnH-2b0erPv-o?ge#)9d)5-T1i<7Qbiv@9X++ zrH|{seNZQ9liNSnO?>>jss8%!9De<`{Hf5q{^`k2*MEsgi``iF`xk;g67P%l{~ChF zCi6!;?_&C!_@9{nNafdm9bt0)oAvR&{w?^4P4HjKL1lh%{;%F#AOB(=|DrJA&j`RD zk4h@|ef9r*@$cjO5g~g0-?RMZ2jJHv{$UM_e_XUN|6RU5JnDZ@0RBXYe|Q7=Q#gMT z+C=`5kb3cqzf$Tw{ulK>N#Y;TKz>Ct?*A_hQGR98O1J)x3N814+fh2WMgR9ao?o2* z&xe-J|LvjW^M40u`TQRZP3Ql$3yl76FP@IK^#1QvJblQ$M*n9hw0!=*mg``h|6RAZ z^Us5p`@e;hF7dDC`33)@&@%ty&@%rM&@%s8Xqo>do?r0q;JUEAYRdZ8a?H2M^MAXc ziJ#Vg>hqtJjxQ(Xf4}1S#r)sb(1M@lf2*O1pLl5g_d96f7xTYAKoh^1|NWci7xRB7 zxHfD4FR7P1{~&15|0VtjlrHg4q5s{~zOH{;w*>nE#URe?G?Vf2|79`(HizeO>={rW)%% zW&TTX{ArW>e`5ZF9avj8{}F$=asFpb=V|%}LhOH@{82vEe+qv3>Z1SGopZ?iV*O7% z=I%xReS>Hoo*cEl{nI$VGKw1uY=5B>g6 z2~Xc~`67M&(@W5_zvOj;_4Q9XxZeK42rU@nKi91u^B>T}FP{IhlG5?z#Qe`Ho?py= zJOVBF>3U}oG<{#D}78>(E??co6#P!b)xDML< zPpSt$w3z>(>whaLUFPTc>-eGF_@UkSq22hQ-S~Na!T%E1i5<+D|8d>s!4ECwKZySk zN|*Qxd49pa8rqE?+KnIDjUU>LpQj7{9X!1*{?Kmm=Q>#N_Z-Tj~Yc5k%z zgBIsMs{dmtU8?^#@%*CxkAs%$|9EJ*{!f6G>;EKZ{rornX8rjWGkLnG|Fe1ep7)IQ zKNniA|Mzhntor{N_DAD-y8o5TIN3lE%Vp% zbiw~8Pw&0g;6ME$cm5V!2a7)e`;+NBKm-uhu`33(tXqkUJw9G#NTIQbw zE%VRh`33(ht{0S;bN+h`elq{-^!@nt4=VqkQo6){fae$d2cc#DFQH}rub^fAL(npR zEzd9b|KQpz{)CS1{QaPbU#$NbL+KL#Se{?--vll5-wZADkB64|Cqm2oSv+0v&*JH# z{4ar~{fYkH{agpD{Cl4Ns$!q@TL0*{);RxDlP}JHqex(r+yAoR>5Sfs=vaULU%=ac zXK84*|DOE5&i};kdH%nFK(V>;e`=inv!1O#|Cez7vM}MN^FNhWilONL34VG0)7Scc zU+bSDZ!r3Q?4>Y?zqZw@|0DP*-lF_ZCV@?kf7BO7{PUlykN-g)|EQP4gTE{Qzr6lw zs)6suUtHzQZ%;7dpYcj)@}Izb0-gWF{Kr2u|G@h{H2-mSs{8y$Bx&Rq^B?Cxi}s)9 zKQ4f#_L|yrn*WJ{rux(be>DHo0a|bW`TR$Bo=*8`{^N3<9+zd@|8zAp?N7{q4CFdk z^B=RYKbe0v`Sbn{@voqCd^s`y^DxgZ_zR$A{z7P(e>Jqs{}{B)zg5al{M)$RbE-M_ zKdHC5^V^_B|A+Y7Qo6){F3&Ic+d<3x9iV0Y3!!EHi=buxE2R9yAJ4T}{4V&(@t;TE z5AolL=YJ9ZW0WrO7xDap|8Z!Ue;u^UzaCoVFNT)+U*zec{O{oDqWtfHmdpRUTnDTC zd!GMm5{>&mo?l%5{OhROY|Mc=m~rboO|<{%(6q_ze|4`#jNVHbTU@vPVKcw~E9v%m z8l{EW=Ezc*Nf^+PnTU zUjOMlAi;~= z^NapZ3AEh*c@|pk|2zjR_kT*EssD56n}z!GAKsAiQ~z%#*Jkzq+LXKVpA9YZccXNP z-@)?>{!5@`{>!0d{wttm{wtx0|JZ{roqvFopZKrl+ARKpJ?{J~p=JK9lrHgau zGte@BDYVT00<_Hk5;XC*`__p6ZYe+Uzs6CEEXF-ipcnU$OqH_}Zwt z>wiftjr+eN-UyHT-?hO$)_=A%?tdrbK>Rgt8U3H4-Szwt?;Gd8(lFuowfMXyrr*ynZkAA zMsx0eU%ubH{aXPow|`qG9bZn&e?86fi}tSsTJY2S-?Pwi`}Z8Q-2Rn96aNC<{=FgP z*U$f4Th;zm1(^Tsjqfe$zpwFs#YaZ{m*>B`^ZDNrToXZvLvCyRseAm}K+Ey(O6gMk zyYc)Y{tjq4{ym`O_+Jh!$3GsL;$L{sIREvR@>Bd1xwb0)N`n9EADR^ZX*`m?&VO?J z8IOPQ^Pw4k&+~so0Dk%Y-{}qH&*S_#;d1?tKmSHOe0$yXKXLyrA&dIo+Xuh6{!7nJ z5cfay=FdM!3DM_2wE5b-{+|sk*Z*#mF4cbr&oAo#CD3yHzZ_bw|5rfE_5Vs}{rvZZ zQU3=>`KkV2&9znaKPo`^m+$|c;UoT{|0~!3QeOURL$v%q{H=TZ3!vrrmr%MC|E)Z~ zi2pWdIsVT>%keLTmgD~-G{yfAkN;azeu{rN*H*>f5g`8Z`p>Ke#{UqHe?f>||8H~H zJ^p7y%kl3<=~Db1JimzlCD3yGFNc=ne+9H0|0|&>{@tS%8S@`fe!c#4ZB_iW0P%O? zdyDpeW&`6N(a#wFrG)7Ehlgw2<6i(R$G?QqrTA~<`9=JG-~4{C6MEFUEh1p#?vU_wI)# zelh-g0Gjy4`0qhz;$M5dvHtZ*o{qQl@!wNC{n!OJ>%aeYX`cJ~x68N=*7~=ze|3+4 zB(xlV2c_f7iSgehJimzlrO<+(#(!5p%khtgmgC2FSV48?g9-JYB^9e4c)&nGyfX zp=p0&{o@r}2P^&sf4IkgCA1v>t&}dse;dy);{Ob^;HUVPLd)@g0a}j#OVGqWq`lGp z@0RjY{NLu`sWquqx$uqId{&`I<{PIe;8Vh|I?H%#lM8-7xCW;E%+(^&q2%ae;!(n z{|nH>pLxi*|819)pW^=}*QUiE$J;Ib6d!5+ua?rK`2WH4i}?QuE%^2N5A9a}A8?Pq z4O)(WJ7{sd=>E6!xHc>P=QeYXe>-S7{@p2EihmEDU&Q}%Xu(hM?*%P*X#HPrXgU6U zpozcvg+~1!BIT#}59Qjl_~UrH#h>DX_>1-Le^R;>|G#*C5&z@Rf?tn6v|If1J>n1T z7Jr@&3;q0mK2NV}|DkDrb?rab!D{~}OrDmRIqA-EnUk_Ir`}W(#@%w~)bw!~ zw`Gl=cFVZL0nXtA`X?k0NF3MihH-v#-*VgJN#m{??lVKewTWKu-!&=Iu(|Wr@#7}m zoOv@4E!jNhzr^#8<@q1R*Z(IYNTUCL75}#K{9n;NWBxZX@2UFvAKw2j9brqb1n|F@ zPFnOB>bs&$yy_N4?f;$7tx*2=y*fjq^^bSyy1xIH$@3rnAdS)e&vSV?m0zm=+0b-s zPQhRE8Ko=-TGR(x|C`HobDVGJ{_p#^rq5IT$BU_(XZ(HL|3LBgT>saXe@i+3)!NOB z-mY@m>aKsL^7zLjhi3de`CS2?|0rMoaQfgE^I!7wPZj?B$C?m*{%7gBZFTEk_GE0b zzW{v_%75bSWNr1NP4*X|sea6PY%2Q=>2L7-2Zs*R@BiNkP0vE7b6mUFb?jqkD(_VO z&p2bfy%L&^F^vbQ{C~ppQ+co2tgugc{!l6ZbpK0Rd^c*t#QiU#{I|pVqWv3!f72$H z{{nvfi{2OW-^+OUuO1ni<^Sa^?(u&Gn&Q8`-*Rop9h>a0LW}s%gf8d#sn3uCy&GD@ zzwpzQ>>#up|IeW1_gRp^OT?ezD&imL`Ny@x>f66E9{-f< zLo@zYz33kQKF}imdlBEh&?5eq-nq%1#Pd`94gAj&~p55;`u4w zk$Y4&j^_`R_~!?Re+s^&h`+DrABgr}j(;M*|E)YkG)@(Zl33Vy8ksAjwPRU&_w$m zwa{4qM0rL0yYp`)xBue)kMVm`>-xV7GL7{=spEgp_(wwO#gjkZ$MYY=^Uo;mg5THq zF9-Lm5uE(|tI7QNS1#PoMQNe7b#8f)UcL`q^NsfA-^KQep~d)@%KrdLNBI@y|7xC} z$~Tq&fzYBpQ28GWE$Rc6|7)PBJ~YMtsr(OxruvY0_iX+752-wz{Hgrk&eNC8ovqJ* z&xfY{iSh3Ot_#(f+KJ=;zJ7Sce~tJ0KgQR;QJ+`DpO|Tr%fD#OJ^o{6ossZe)CT+A&=h}h{iA@=5ic?Sy^`mr@-X4-4fa*gBK{Qb z)zB0#>hF?%6q@2Mu74CkQ~W2l&(Pyv!qf4VKL4?er|&#-h93VN&~p4=<~msOAD;0q z3UK}#gD)xKA87m|pZ^Z?{!jd<(Cq(s@|OhQXA-}!=l_WEFY`zCH?DschbaHftU|r~ zi|4=Wf~N8>=KrfG9o(Y)f64QU`MTYG^9|3!KLFKXs;&A8+a9 z-^TT_(Kb__|GsmU2R}6Ni}kOcQM$zcInOWnzkrtc4?)ZP|AChIzlE0hmD%q6D%ZVl zG>IR6)W55XKQ!?lAGL_l^IyKCbcz2fo?q~P4K4G311{qJ08x&3R$bz`-EV*YcbwEiuF&wowC_Y&=&uldi4CyeKx$n&3xy#71Kg-QE2 z+57$n!H;56$M0+YFS3U*|CcqUe*Bxk`OCtDpXPsvQ=b13{1FnruknA>mMQvY>GNX# zCu+3O{%3?}`|o-Fi|X$^{~`E^OO$_K=f9+zjrdpHR3HCB9{vxmFAIP4Krs~8KLmdy-WU8y1dmPT_x1e8 z3f}$~yb~VrcO-iEe*{1A3VvU|e;I%d%l)5)lrEkB7V-Sz{FehQpZ^v^ z%jds5X!-niKQx{HT5U7>Kbv^EIR9~}e|6XN&UZ% zq2>P1&y+6l|HAVN{$tQG|L@Q;e=W4k|0lG}-=?jRU+|yJb>Uuf`afRh{{YYbklX(o zsWHSRxBt$kXE1ut?fD-a`R_j_w@;w7P}@BD6^Hlpublk(C-VBQF&sqZkJ#$XUmRgv z|EwMv9{eQ%;@=(2qWv51gI{^po4@1?gFk6>c<`46;E$L1Z}q`n`l?Z~jzX|I1RsgWqwD_xcA>|EbR-_v(c{$-p$-W4AFt^o0; zHc#-oe8k^Z`R{#}QU5Czga?0q0RD**|Ghr=OZR!lKb7;xFA5L-q5%A<68~Z!{J!FU zn3w;^oY3TtzT=SI|D*Lk!w+q-Uj$A4KYIRkZ|MG%j?NkN&uG0@BF}Gwru9Dqphf?$ z5Ar8LQ~xjejkXDYeX+$p2%7qT?eP0`Q@_D_Flg%kP5yiad*{n7_Um~%?Vr|vrSS9} z?;GoX#zWKon&WTM*IVopxZeJH+l0ng|5en}`2E{MH^2U>82`H>RCZR?s-t5IH`zt~ z*YJI4llwou);~seGWvgIM?*9IvyK%j2IFl#bwt^)C%CS& z%l-dV&~pF35SrpYWUVp&d4Z>k_`k%{4;35ZpTxh7{fY6<0Iq{I{yBpEwL%3?obk^Q__^`Z_e1>` z_rIU~k2`-e(h|QNTIN3mTIN3$TIO#KE%V3nbiscyPv8EO5&x^9X@4UA1Gx@b{INeb ze)0#uSpRgg^0-_1Z$?_?hj!zKcH@V3syEy;#<{&bEN%x72 z-Y#}DsbBxh`D?<2U#x$k7>e`1FMeP1-w`K__|q|0MDmj1r72y$oWq|kmzb}4Y z^S{m(;~9{Z2*g_Or`&AJe><)W5B{hC{0qP)%D=DmUzIJr`I}yC@Vk132fr48KS$zE zra)tp>%W-)m*el?{H#}a@H+$W%j=&;8u)ibF9{QVHrapsUm)?PG_d^V@bVvZRd~eT6(IhF62GtC zzx37qZRh;?VZu-SpGwSq$m{>@_ZrWCr#To={(b%aO~!5aF)9`Xuh&2SJ!_j${)+~+ z35))(GsAoSn<>WquXL^x{B+MZZSwiAc=QZL?^RuUvnKjKJAUWq|D`u;loo1RcCQPR z9?Ezv`i3l)_V_ycBhX^L&$Viuy^u7%w2Hr*qSx40LyPfVujTlCJZKu9wZz{<YKS7_zhv|O6Or)>jpQrRI9$05z%Rk?49n$1kafq$O# zBV*Rti}~kie=j5dM*ew9fAZWl_D%frG~f6t(lFi4Ql}PzN?6AhZukUVs zJbU~H9Q&z_|Z0 zLNoHy_ow;KGq^6iu8k?et`C`2;WhZ|Izq2ZF2ed)&5oS_D|^(n(cqve#U$T z&9~9~-?`8fe{uio<&-YP{|cU8%>Tth%kl38Eyuq%v>g9F(E9vGtMU5%uPHoT#D6qT zKZbOg|M>!%_9y1Qs<>|K`H$ljr`C;sD{nH^KX%0T5b>v1+T{30oiv`&dnq~f^B?6C zjrK1-KQ!a-S^j;^e+YhJ6a2pJe{&@n{23VQi}t_yK!d+HO!(>i--5?b%zp@eIu8i` zp>!~?$?-3981p~$zTl7N{7Fm0BmNOrd-s0@KXD0uU-y6K4>#f;kG4+mPvrb1%fo}; z5rDr~;tw?bllk*GfBuTl#^ndckXR(P%!?ab<)ZWKMj@PLF^9X5h<1M}aQwS~E zd+PtJhNkwJ(y9ORD74)FDWcEo`x~WE|L1Z3dC~uQf`6Vg^?%k#pQrxMI{tb3y{htl|^Q5W&Q_Mdv`aheX<^InWo}a!i^?y9uKNcYV+wmDu{sWDFSr8ult^oWyB>o%mZ`$PcU-bWE{+wG4{<1LP*HrKO zzq9!GHwV0;{P)-Cee>5QwW(|Wvto?v{}F52B=C=f)XTev+{ZufLCgK$?dzi#(!e{ z$7pD|{7<8F1Vfbn={&y}|IL6F<%7!qENHp>&xV%E|J~43zL)KqsE_|1;pr4_D*vl_ z`kt}I_^7W&U5F zW&SfhGV%-lGr4Y8*u<3ikBY1{I)A&oBU;Ue8}08y%lwBaUE)8&^9%kTp=JJ~&@%te z&@%rqXyQM1voZc}KGVoA_)q6L?lF`2;YabW>p-`o~E;zc~Nh0xkGy{o}3B^nJzp$5d$I7waEyhbF$fZu9l^kN5F(!Jo&| z3kRg>=f89J82c0JAKP&qto4r-IG%3tr{ji|S&;Qi;_@_KX z$N#UQKFRgJ3|h2*RR2Hb=~O?d{#SA>>i;LuBK}nWKZTa-{{d*Z{(lB7*Z;qHx~TvE z@bt-!`Fj0t_pW>WKacBR)ql_U=MVIr|DyQE=_R7R|2Khax&N0lcRZuFQ?b@Z%ztUO z8RI|4C!yK@^W-lIz`p=&qW_yppx9)7m&==fColgo2f~BDBmjR7cm@Ato!*__SNv-@ zzx`l%@RtSP&y)D?^1(0WKjiY?Zje#_vqF^r)x93=AGA3CQTz8PrK548_KDiR13bTI z{|-XS?cZn6a{Ko=wA}txLCfu*QemXi{%QPUgQj%R{#^h~`xE`2D6WIm{;l}j{rArv zh9>?YY!Rd1KY5zc@qNVa-<9zE;`fiXLJNNV_phMo`w|cR{?YT$#82l``u&F&powqd zpPBmaU+$9f>%V`+wOPM^;3<{d;ifY_iwbvKvVq}^B?^w9raa=e-e3q(f=O+E$Tmwf0Cf7{!@J? zJqViWzj*%jHPBT5_iQr8{}XtAyrs8)6S;18QBzaqKRW&6!4EC^zx4cDjnXCl1fE~; z_k))C2SUsINzgL?U}%|tJWsFV=jnNyjq(31Xxg6`|Ig++SmU2g>IV1tLyPkt@%N*2 ziN8P3FZdIo-T0y1_@UkSq22g-dL2Jcuj7YybNb z?VqpvA2Jl9{zp7ezy70^w|`n(Xx9IOAAO_8pN@a~nl1Lvphfwo{?9Qfo%%n&axMBl zzd?)m)A;XqXo{DZ|EYzh_>1|UKcOl9hr4F!^FPf#Hqu4>Pl2ZNLyjzc{MQv8QKmVhDL;|IS+UCh$bnscP^S|Jy?=JX#t^bXBFOyN82(XIre^hIOKPI|ESn&H= z|3&Seh_~SPHUCwKqjrt@zr_Cw zH1Ui6Z;O%c{4Gf%zu=F6mifN&fZ^r%4Kf}+BpS~aX z#r3b#u6O5ePFmtW9a`o;6I$j!3tHxH4K4F`;puh!JblQLNqYPTK-2z2{IBLZXz|DX z-1y0#pZ}@QLP8$YxgKeQV^&oB79a-ErJH|6~QGyL56>HC3ST>m*e z#ht$eX^Fojv>QLP8$YxgKeQV^PZ#{%czRv@q21!ob+F>^)&8UZ?>YW2_i_Hya13aZ z+kg9Y>5SfspSQ8@`p+ER{wvN8HA)M$&68iN*w!Ha{v1T+uWDwDe{%l$pzi*kOg{gS zKi!@XYV7oVJozh5^3PA@Ui5!_&HtocHI>mmW&UCj{~6)IpHb|6|CcELkrICrfnt;6 zUw*)we;?=12p4|L|1|>_)nPII7yRw;zKFlC_1`7giy5-$o9O>5*BJfZvaIlke^r3; zPhf&S(E8_+Y4*DDPaNlW%nT3yngINCo)i3m)<4VqMZEnh3KM?iWdH3S)p@~xBNYa0 za{U+AKV<$C9{-40;Sv9c0Q^J1EBFJg|CIR`aDG>a^8ZciH1+?skDjg1|6R<} zY5z3;)rF_WWiHVB|Gl7Tf6ehn&%f)r)W@6qF5 ze^s3S3Yr-6U$qZ@rBVJ++dTOl%e?zP#2<$*PWQYC{-r+n*~%0lM}KN&o~nE$u~TGW3k|C!KKKE?dcG-!GJHv^jL zzxe&ne4b8+lgj@?Jblh^vpS=?!5{BOPr2Qvo5q~=WpFG7#r})tMuNl|k{BMUA@u&0uDbN%zasEFQT0Z|b zho<-+oRF=b|2y(@5&syTzF=aue*W(ZP5Tq)e~s&4o&P=Szpwd!ZG!Rq7kU1l$^mWi z`7dSlY)0>8JY0YMM|r`Bf5xJ?1WF6Fty61NkN=KGjrhkv%kl5a(?$F>u0{M4pyl}Y zgO=mpA6kz80BDN;jx;0wjHiqEkLT%yla2V#f|lbyo9o7kzq9;V))YZ1yYM1S^nYA6 z3frF5My>w#iMr<>C-Fea@h@L%T>r~`yJ_A0U-E7q|EdF8sKuVXPhNlH{wMMLk0sC) ze{ubzn9>m(asJ=P^NaR>6SRmwo&TSLrg(|-{}yPu{V##0_z&UF|9G3{7x90G>wSIA zx&J3`fCoP`@r(OE)=|2|zn{)b|5MO1|I^Si|8AaN@W0LVzDvyE_iX>P z0QWy`MqI`DFVOSfoiqn>M-ri}SzCzk}cZpAn+`*+c00 z4&$|h=Z)9s`42AW9^h&>K8w-wA68I03MZ9My8riKJ-?yp`40uqqWshIA67zB`KR*( zJ^yMIG?o9j$Wi+99}1zV{AW7uVD$W}r=e;8l%JmePy$W+BTdhL*a}Vi6VHFx#x=Ds z^!%%5Bu&qMz}x?)&9nT|`VV^k+w+U-*MC-?uQJ+c&eX3pQU0fL7dif=i>K=Oisu&B zwf~iI#`rI5^4A*wNJzbS@;eH=$G^l+<6qhYe}*C5%70nD!CwMaG5&Ab#o(_F6MiiK ze^ZJ7jt25OIDdY6c*NfsfWNuKf0qw_B{hT5+j9JKIDaJS4yA?K=2`w(0DigupUFYw z`k&FuyZmqG{PAVs!JiR;pXLcf{h#K8KdFy5e--C14ikQw|DTG z;SW&$30d$z;Df(%=uAd$v$Xp2-$c$ISsotzH39gkUnck;Bv5Q}`tD|C0n>!T*p>@6KO4!kd4GsQ>ST2Y*BW{vi_oG9UcD;$O}A?R&z5-w}X6S>j*e zgFkY#cl@<(M*AQCUTE^O8Sc-2xEY$}Kg9K)Ih3x}&;Q)b^Nab9xzJ+#NAo}PplQ4& z=6~*imghefK-2h7JpZMTr{gXC`p=_0J#m6@|I-Ehc`{=DKZ@(dn*aB;{@vI8|JV75 zf5go3jNY!svo6K>XEMM4+x201-2X}Q-xq+PU{U?=zxd+UL6J{x|D(1{5pUPs|53pC zm5;-Nzaqf>ule8=?SCfzO`FUw=6~e--;?nN^xb-&n!oBP5mqJs0-qSWyI~D2ODIJx!>80t6?*H!1)7PGt zsdY|RXYa$)4{C%6EFGG`VYMPpEl3& zZ`48W^H%$X`4{tFmFFC)oByfd=f8q;4{7=bLhOH@{1uOQ_x}XHJpT9f z`$zWojPrlh+4cNI4nF_2JUsYa|9Hngi(mh2h1iMq&)58S&Rf}x!drVZuI~Id=St)G zpW5-zy#DDK|C%-apZ`-R@y{SoY;yVc)&3Xp_CNmf&^-TTE4aTM9OC|e7qr~}dxX-_ z{)p>;g*?CL|E-1=?IX2!MbL8p?{R3k|F;I3+Pls3jQjt0@N~ST_y1nu>BsLe`hN+k zu|LuO>&JDl`hPV|-1(0}6Ti6rcS=)t{!>Zgy9)l(pk@9DXqo>EXqo>kXqi8b=NJ54 zxE>N^&hrmy;3vobD1AThi~E00JIS5DIcbUibZ9qzXg7XnH-2b0ex5G)yYlqO>y7vi zfTsP4_+QO+u;TAo|HbcL%D?|3p8rvV?;+a1EAemINa+ZUsQ>$Teo_ASL(B26gqGv~3A7yl1JD$I@%)cpc)E!HuRMM8lScff|Lq?C z8C(Y|{+$$$=U+g}^<=?g5IRBTwd$_Lum$KKm{+~1Nh^Bua#QyitbH@FQ zJAWOd-~YQ5S}y-vC|!#G(>%Y3e+jf4|7W1(_-}`npH^_y3+*>dt=_wA}t(Oz9GT9M3QKyFknQmqN?@mqE+?J)mX&fjqz9 zPvY7v{)gb_7JvGFQvc^EN|*Sz@ce@RX=s^$8??;-47AMuEVRu37Ec%ayLq}O|DQt3 z<^KTJ!7Bfr?Z4>%$m?IK#@QG(+a=H16GZ!e7rlW^ZvVyg&y4x?_dl2L`=6?w50Cr5 ze9iw7f1H6^cmA8kwalNob`qnvk9uPOKDkGX^Q|4}FSM?&hw^ZZv6fZvI4F3SI7KKP6Gc=K;A=KSqX2@8J3?!Wve zOZ<=f;4j_l&7aKUA8}!L@E3jM{rgv<{?nYdi2oWN{P7=p^Sd~IMRaKLH~Y!s{y%8B z{~tx^YW@6Ad!AqPe>*_S{ohW|a{o65TJHaLhNk{+-Ti+&Ki<;kf3M=Y-7cFc&p-04 z|0NFZ=l_W7A7iBW`|AG`wQw;i7V`BErKfTIqjF}K1WF6FZT+Sub-({W_y28x7ULhf z|L-+QM{p=UbiMO+o}aEa(*5smK#Ta({eL^5DgNUAzg^H2e{ui+ThJ8$|A)P^fv;ms z|Nf~hPTxo=f+8wNDS{&U!h|3wLZdB;DOEvftS&)IPy}VOtGipfMYPpMTSS!&im0O2 zTT~Gg*;NGH6|1}d?kb+&Z|1sAt}|zPWdEC{XP)PoPt$XL=elRke9v{=@Au5CE~xab z|NBtvJU*}g{aEbN4z2XA|N9o2$LondUjM&F^oF|rt6`JW{9oSekAKMW2HUHcG z-y-3k9ufYUH2f8Y|M7P6Hw%A!Ks5Ycmxh0m;s0Yh`FmdG=l_a`@HeF4uQdGi?c{Hg z{!dF(`1en3|CMa*uYbxm{PRQj-8=mCKMl4067~P;o&EJc&HLs?qW*7An&>tCLN zW_wlFKQD&1{hw!`+5YYMqd))mw%GBJ*ZzH1?5|e)^M9X1^LV=cp+$5@jsNekcQXHu z(B#+ozXNGE`~xMu@*f0k`3FH;{=v|ee<-x&FBQA;j}ZIHJAM9(pe_G+(H+J=Aixhz zex3h2n0CW|h@@Bk0%*%W7~1j=fwugIL0kS)C4GWl^sBgETxZ<>IoSSnOH$WAYWbIk zIMnw4!+6ilw*SM*zZtvu;Dd<-Q@p)l3w%wLC`k;4}!M&e=xMo|3jf| z{x6mEn*UD~-C6m6hkXP5(B#+ke+SWS_z#x!%6|xS5ZT>d6yU@gEa#|ZmO^!qFa>h5UpyW>;)Kgw_CzfWiqNcI0j;V-#2 z8vJe=emnnL62jloEtS7U__KZ=4gQAu_2+-r`2Um;{;>T2s_<7wB>&f?S^qKC@Q(=L z*YQu={#h&hU}f4>lZch{?2B#GJa z|E0P9_(%QwnK}OP3{N<)5zYS5EV!Gj8M^r2 zAs@2uh#mDq?^FEOX6=$Vj+gR(``@P6k$rfM*KdKphOVjQpZb3`?Arg^Q_jTp|EqRS z^?$4QKj*{f_#c@6&uslq?h-pFHr(O!I`+o>Ll1`T1Nv8I9p~^zI7Bqv-DCS%@d7VB zu9yD7f7aX4V)x@U7CQ!-{Y0kkkK+|XbNoxUW5urNkAvp;mTt!f^ss==9^juB(+|P> zrF*w&JqBO%O*;L&0iP`jd>)Md)->^7ivwx=?-dgNc|W9%fA`(pFaKg6WoG>Ix5<9* z9+$6n%l+kDuGRW}z@lG;ey;Xq@809C!e5_9f92-mFY9(3r|BMd7~YrSbp>=eUZ+4$ zzvC`7v+4YIN)ALxgWQC!@svuKCk4lPjjjkp5_!kbDC#onugxzdhZ)HKh-Ija;B3#)lXmj=Q5}K z+0&fnt;IL2Vdu4AnPD-Yy0<6Xxsi>B$~}VwtpX!^xFP?UhLYQT?%d6zb`=B_U(%S z{Zc@8whMysUzuk7V?0hy<9}30`!{U-Ctt=t3Yw!a{#Tub->&~Yt)2Y2m;2*CwGrX3 zNy9(U`2X~F@|OsI_MfBS|GG5%6^8$ecJfaW{;G)ZH>BaW>%T|0lfPE@*G7cDF%5sE z@&B3awnLJw(FlOaoq{Xee|JAY1I|8}L=SHsTrpSM8sc)I@gR?!``{%P?& z$^1`4+x4$av>X2SB)#{iBBgtq)2L0kT2Xv_aUl3w}OiXQ)2w@z9Ay0|954{g`~ zy-mB}e@D_Q|GUtZeHKiK}$``>g~ePQDMCoSXr>p!QM z@^1*|b!PhirB4?o?te7~*K;p} zw&njPw440DO475x$Lqg8g|_*>1={BSFQ9Gy{|cJP+2=eEo;co%2@?X?W{*}UC&>9VX zHw}NQ;V*9||G+%o|I^n*gTL~C)b;N=|GmcWU)oN7SNJRb5e@#Z^-s#*70ep{SB3Dm zo}D`XpVi;@e^bBR3-R-1+!oCLb!p z@$v)l7ob`H>Gh8v(hgSb|9vFswf*}sw5|VELEHN8Q)pZNeGbj~Z%WA+um2aj%D409 zWdCmyXxh7$j`8|`+e7ns+W*@@bVs#+rxpdCe++H;@2B1H&yn=XKNs5aFMziE4?xq8&GN@CO)dYj_mcX5@60U!g8cbu_;U>ZJt6$f@l^gI z;jb7F4gT`i*6;sZ!#^{G-?==Mzg+kW_KgOA^Ptr0zqI|6XZYua@Q2m^GlV~Tzi9B+ zr15{g;je2a{~GmwPBi%I((n&7{EI^P!^*#$z5Vj9HX{5DY4{5a|C1s7Vevmq__KD4 zhW~R0uRs4ghJQ&2e|be}`8Qkm3reEFAKP(}dk!jf;tj$d$Nbj58FQ<~EP3{x>wCww z{yzwxbF=loGs9mKTwZrZqW!aMxj+8vJa&fT?T}&r1?zt&jsN+aJLP{V#Q%A9<6Pp| z@vlblfBq@a@PBz4{$j)br!fAI_0QSI`{iHO@M!S2rYZlhR43v8R`YB!`RmN-;V;D&Hs&y{PHim>byk$k00jy-?{NT$J-&p{tM>+k~I81 zaqh}LP&h1q%bThEuJBh(jRwD)hCkcz7liOPR8MgEvGxBd;m`giGx`59WRN%hwR)>n z&WqpI#{UV;@ei(l;PX#=4}~3ho%20>{^?fKc+c$5`vGqat>Yhj{^_>R9Iv3A>mjy- z=J?0>IiEXx{^|D69RC>b!X$6}YcH`6oBO%L@vi}5FM4s3H~w`9v>pE_5Iv*Il@6bO zibMZb+cBRd&wmv|lYi-1H@knYe;_`NcAT${|D7-Cb^faiTKUO)5j4+N*ME$Mw&OpS zK$BnRzbeJf-;4a$i+$bA{`~iy(3XFi=nXag(^~YnyED!u`_#7kpA?)Qb6HLt`)PKf z{c{8~x1{_(_-2=%o%2RnV*T$Zng5Jk(!G$jOxuFxU&B7B?O*Z_kQ3MP?`YAMKl@jH z{g-ob_r(176yYzKkeU38Us&Yj=M{(ltdR4+PeU{Q_5OEFw43;UPtt4rzYlHW|3hdS z{~tly_-}@0{FnYk=6@x<#{UnZr~YH(%>Pzyo_hUfaom6Y&nWm@{qKbMU*~_ThaQmd zf7P>o`#*Nb0T~(pPyO|A&;LWdy4E>;$GP#v&|3bp{Ck&n}F%m06g?kN7+uao&7fVTO6DeZ>; z1xc^`FG5@Xm!U2HpP()OtI(GJFOpvQKM|e#@6O5pwXFeuX!7g*|DL1W@Gp_{%KtpH z%{I5V;{y$54<^PN5PUHV3zzX1Vl3w{=fKK9vPU447;)hP+ z7rXL*BKAc5Lnp<*=#Gm2VEy0R|1t0SC;R;0+Fktm-}Zl44{)>ff5R#M_)pE{ZR`J5 zO8sB{LuS_hL4K}(V|hph9sg2(+y6Pvqfh3~`eUUlA19vwR`#Y}|22LW4gQjSQ`>*a zPd2UpPY_V+f35%P*0r_&23Gj|75Geln@oBQ`rl2%Z^yq+Y$v}f{4EjTcV15&|Izuc zauibP|L<5}VYB`(e%x>W+wsr3>wW(hM`Zl3JdOW{82*!d{3QOc_@65NU-o@8;=eKt zzn%XmX(xZZ@YiN&`F~;KAHDW(pR8}Z_WwoDw*7Y#?eM#ff7~qTwf?Vyw)OvQ(6;`c z3T^BEJD^$r5A1WkH~v#2>6x84{&An^)u;66l=Z(~;`>1e@zZKf@ z-v({@Z-=)0_ljNl?-Tp5ZO-?`{}w{q_TQtTJG1>4&+*%TcK(ZPBW||**ZV&^qucKP zyh`$a!N?wk{vMh2f3W@!yZ%G@dFERGg|&Yhw?E%y8n?7ZV*DfPO27WAjR-&6zgvKT zKGgOv`T0B9_J3IWC+z;uRdW4H@#)dkdA7=PRwv)d>_{-0V27gT& zezy74{~QbEX5&B1|Eq<+IU@W{n*3i1UghV#aJgB2ZU5W+pM8~I{+FB`4gZ&<;kV=e zXZrX*$zLS=4H4mY)9};h>i@Ia$zLw~d1w>JE*bR_Z2weOq|X0n`S0S)mH%v^_^J4x zA^g)L!e5hyf2`r>Z^7-S_?HQP#i^O;|DHMZUjJw5KaTbKzrCQ@|IzzDWKm8@W z_J8(*X1j>}7ta6h18w_1`$F6PPd+sJKPwOO`@ctuo%^%@dz9FR9q#vkPJy=lpW&iA zs{b=}*JS?Np>6;7e%cNH97(VIbD=H&0%*(sAhhLw7~1kLk@U*{yy!_wI;a2NvtKfQ zFKFBU-II31pC{>+zdy9)9{_Fn_kp(j`$1d&BgC%!MPgqg{vQEt{XbH4NBKWk{_*|? zT)VQ;&S`$BN1>K~7yC()^1t?fThDCk|K?on*Z<32%gp>A$xBcH+ z+sU6d$uIw65y}5q*RMbRZU5)?cJeO}{(}6Tg|bUVy#&ku@-+Om|8qw>`J05lHbeOz zp3e5q2uIt$bgd>-w*EMR!#D=i$2p{Lthdd%Mry zK)d08&P(6MzXaOyzX)ylUxK#nzn7ue{_A;%-~Mls^veI9XyunM+h8vbF9`5MC-Kv6 z`MvapA3BL2I*A`Ti65H$6RUmxcO|{@H;L{n{);|(!t4JH9NM#x>mSEMlVAIPH`8wT zt0cX)|8Ie|{8OPV|LxG0|Ci9@Ur-yi#KThV4QzO0dcZ0V4J)tdsFKElZCA8(wk@U*HtLQ1)_3D)Q-;3~l zmVZ3Y5B$3Ra|-Ro|2Il{<-ZBq^4|t+`KLl#{yU&8|Gi>Y{`z_`R63MpzV_mOy`LS*PPptIYKk;>$dHqX}KMVZ9=l_QB z4-et5+SKQ-zqRf9uOi34{;T@?Xz=H!;qMA&?f-BtfSdJy{#yU~FUwyp{8c|@CVy=A zEnE+T|Bc(ujUBvAn@$+yO?J4Aze}2}GHBy(rhh?OXX{}6SHG7U|9bxy+yBuAfm#1M zyZiCqT-kR2m*xUL{!8}z%;{{l_I%&1GjhH1f9m2ZyzAd?gJ${9>%VyY+XJ+taAtYW z>)+-{dY0F`{%tW5onhGD_Z>a&r4!o1v|%o zUl#kM!>;z~|B}1?<7xeWvgnSw{w?VL{P!2R**M?o5f3KH|E692>tDy>bItz;;5|3% z|CW&JzgiCU{hxC}X8Qk_Wt(oo`hWCQy$i3JFh5=lt@ZzqRS(6_7Q6b}6|MFE7-;qX zVMu=tH2t6Z{0@cRef&`TTxj~g@BPPl{h#xo>Hh)SUFW{?=ZE4~i=D@(|0j!mQucM8 z|9=I|<8kcmyiXpA|625-B|8*$#PyH2-Md*5|5Rx5v;9l{xwPZtl)qNeEB^z~mVX|! z<)062`5%NP|HQ3*{^!N6{4a=o<(L~h{uR)c|83D7#UG6S)&o-4zf_l{j{k<;|5eBT z8h7lKSpT$WvfutG-?>*IT$piNkiU9z>innj)6bg!Sr>4#`9F-mS@@eH!r$<#)ayT5 zb7L-9%X4}s=06T&z+$uf`uv;vxoz_wLw@i3zjC+Uk??;Kx7KEL(%N{X_m6cz)9U<@LY! z(Qf!>N_yp=1#S7~KwJK~(3bxJXv<$OcIAIk>_yq*z54$pXdX}7zsp2-)c8lYYm@oA zLu>no{JYa``1g?X%D*SH<wihF{Ch%M{yb>Q-yhoY?+tDFizL1BA0>L_}T8f8*lR4zgdq)gTK{H?f=yd_S?U_7oht8R0b?I%U^MBnaj^= z&Ur22|Ge*g|5w$&=FpaD+o9jC^q%)PcGt(8d#{-nALQwY4!QQcc3yli^g(z({TKtA3-~Qi-Egd;P!%jB=?8r&(pj2ocJhcEguRunG-)v_NTr2vU%~- zjXtmE9DZ%5ZinvjVKTp`G5=fky5sRf>-m#^2sHV5{^UOlx|{Hl-{Jny13!DsA%7t? z((-xoLxZ#~XAz zbU*SBcM|arP5z#_KL4?_%lVW4I4^yh|Br{Z{KKFv{|V5n|CIkE?l1gDp~*i<_+O^o@c+q6-^Tw6wB>&l+VZ~!ZTa8e z{)WF%_E-Kl&Hm(HE?W8D65V0^Lw){fJB;+ozbB!|zgqZTquubo?xk!K`)mIHKs56s^Z!cG+`lWz zqbG_2{GOiZjK0t>|DJ+YKF0rIX!3D?mVeJc^SL0@%>U0pYkAcCNX%Vg(lh@rh29K_ zng1F8FGBP8Q2v*wVdMFde;G8tpLUjiFGK71GyY$J=JzZA>(KiB@y0Ih8xxg$!TBtNrvIny?C1X%X~*&LFGl{CB>n1{$2sI*2Ccsj`Co?S`O$s??5{wR zm;00dHE5n6dDi0hc|+3E&iwx-^yU!cxdG|llJwLKC@GJ4Ik)V(3WYsJ^s(h6kq-?e!R-h zH+K`e(Z7eM@&9^a<3II(cYLA#CBAzjy}9ka!2BOH%Rl!2IsZ3@c9cgfpE%z=SJJcm z;`9G%p|$+u{O1GEEdO-=a~?G7Kb`+v0L}KT&i^eDJCD!t&!u9Y;`sBQP0&1EPyBKI z^F7fWHUC$5`SVHRUq?WbU&nvXq#Y-x<6mbq7H|DFp? z{=OeqdEr&@`4h9o9RzSz%kMUe{n?L@s?C7k- z`2Unye*eFE#MXsKl5yKrU;j1X|6N-#9}i9cbNrL>|7)?+KaBr7MXUd(L9726|G$B@ z@&8+B8~@Xx>HkHiU+vBR*NR>JKTqrfCQk9jf9s)b{68VOqvAj4|D2Vn<6o|f|Jdu_ z>2q$@|BWLraQRu|z|RxoAB`jZ@sHZWK6hx#v@OUV`uyMR{qe6oaPm6-6B_@gUg45& z`d#x9_dlL`gCG9|$7E$>{8wJs!#ii5ciOfO?dz!<|I_-f2M(owJnY8Yg8r{NZ=oBj zjKv&uQ1tq@@}V)8?d`SCE=b(}I_&;`&Q1RO?}~@6d{gH?hq!+H7ted$*_fQ``|cor z1NejE-{c=42hjKryZ?>y$M1hVk^f6&{Ifno`8R(fo>>1h^V0e8I5f+DUH`Nj?I@gC zKC}GKmGoNv?+$It|2?2>`M)Q$E&uyNv-~f*+h6}wAa)*~?VmwnA6Dbf{~ZZ!%l{(L z8>;+oOyhs%bM=4N{r|%JUn&02n;(t%Z%)I{x=#7S?*A9Yzd-n>M}$9ro7DPW^M6mn zKOFD5+4?_>ze)Jx3!>rw)-?XN^FO6N{!j9E{lPE)Dg z{O_dU&o%sKw3C04@YhC!-%Z0m!0?CN|0%5gtGnIr|5ZI44gZ&?;m9cFCxhVE>QLKVbil*Klh8w;AI<3CyZOmewv&c$ux zUtLf0`C~QF;CI0v?Efo&Pq1nGk84=CS^qcgo64Ur{0;X-gTFdW{%1@p|2ZCgGJjb4 zAM5S=zcNF|KZ5aJlZJnY;V%o}kB#xif9?2B{0_hVb0X6IuS>)482$@F__O8tkCuO+ z@Yh9zzab5OrQyG@o&2uw=R~Ca-!mwx%z5EcIWQt$tz{I>mfiu@k7{tx5NuJ-xMejN?}XCeNB z?H}d0?Z2?`FMa;6^?#A@7vC8T{+u-Yw*5CM#Q$YOQ{%r}_*;Gx4gUNz{8?bu{C`F} z`DX}!!SABM@1)_kYe)|*cH`*LT**I2Iut?Pfd z{(Tbdn4Eic_!|z_e@>S4y8iPT=py_MoWJAx&l{jQUq{XLpHrYY|3}UBpEp5!^MAuG zcBew$W72c|=e?qr{$shr^`F>ngKlRoPUb%g+T+iw^49;4r`_;hEa{d15@^dm0owAH zLtFlzLz92lHRpT$Q%rjD-zd7X_=EL7*MF?9{I}!(_lZ|*{O8|YCJhH4^`| z|C5>VA3x!2FaCM|$Gqip;@zNi{(CRzT-xEUNk6~BdAV^;e0NEYk75I0-ve6xf7(rR z;(J4@|Fhnl6CVIg|IfJe3g@4%&x!8~P5%$*ceA?{?1RM4`Si`8hloA*`YP}Gm!qM1 zJYN6H_20*cp8fb0-t{jq{a0Ji|2ZF}j(?PejQ?;ffSdJy-VlHMqv?UR@t>+Hzx~tv z(C3b~Lx%kq)=%WMZ#bGU}o~qTr$vG|2J&z=idFFWT zwB&u+VZ~uZTa69 zyYjCT`;hA=dFwy_2Cd~^FT}&wqBqq2zp_3~E&p1i{42)qr0w5>Br0wGFSyaq|I@!~ zEC2eO;rIVX{WCN3f3W;(SRTSJ>pv$M{=yLcSgp@ruxDOk{qyJ(eg2$%@^ly3Gc#U- z{LLln=bvKu!>)g?Sb334D$8Fb{0;kMCjS#(9_r=))myFd%Ks;!ZTbH;?I!=fBk48& zzYA^i|NGE3|9=2&^Z$p?%>R8J_sjn;CB5eVuS8EhwWU+a|3kk@<{t!2ey)FK`F9HK zhJU!ESN>9H%YPcQtA<`g_HLGiX=Tg^7?;AL2LQP{$DXP%PZR1|2r1i z)_=!Cv-}(QC%^t5Eq1N{&Jug+r+)o+0W^=N_dmN(^oFYcTANezfA$PN{&5d7OfBda}{&ybBO#W?u z^OhI?MSnlmIR*9icF>G}z5aK9+7YiB?*~YFt^W^%*7#@rKMD9|z6jY5jk`=nYl>bNqKZd|%$8w&$NsKii-Gb@92D z|6%?gwfs6J@%GjFfAM3!|7-eX=JkKU_^%n{kAK_se_4CPT;_LP1E>69>%YU+|E-q$ ze>(SP=KVi|{3So8*8k)mK*wTJ{?O_7PNUsW3oes@-C`LF!8{C61)*lhhbeP}9wk??2Diw1w=o$Kef?Y}WT z{!jAv+1`);)`;*or{U)~vBv*7?c^^P|GV>};eR(x`Df=p&uu6F4B>B#2!CZ7{=UZl zV?+4eqSXAqO!!AV7!Chdr{T{r{O5)6Pd_-7e~s{0M5O+&NyDFO_`}x!wjPLFZ+8m{Gao3>iSpZXP-{_f6-3KPL^pWB9KQ;}0qS*NOl0)|I;JF@1)@`2Cwp8>(K}JL;PPV{PBN8!~f-J`oF^re`P!QD}}!zD*S2uUuyWT z58)5%|2GN$sDDPp{}}(=32Zep+r~e&{u^cZUkKqJRd%Z@AIDf%a*Vj^J%0W#!1HX> zmPxO{@xQS9A1Xi3Tl4=ifw1LY_RW6#Ck9sK&lmpK4-xVIn8#g?a|Qk18=vvFQvTOM z_;vn|CgmS3{FM=@|69}Ke{w1R8x+{A|I4rS{a;Jby_}4z0>i=fpFE8IJ66K$hhQ9>N8vpNy@ayv*ZTuJ9>zDrx zmu4pa0l6=D^Pl?sw*#R$|H<{weE!$*v}1Bo@BceY(z9;k{f|$8X1+iYZ@<XwFya z{eMq_=KQDL|Mz5Q&VLU3$0gqS@AD)*_vifQIMM4S_1P%*|8?T2^Iy9Dr3~k&{(lJX zx!Lk>)O)GxU-EzM`@gJzG}gbAq~RYAUgfXz=#%;DKTPExE&RoMMT5UOP5!s*pFRxX z56l0HCI4q#mYMm#=z(XG^8ZoLy8egx-=*E;|1pwY^Zz-}HvgXoZS(&)Xq*4bpqc+i zFY}-Oca_*R|4$No-#_`!zpH}g@pS#qEuuT>`DaUUJkD!r`S$|9U)KMU|3lgh|3{Ku z`9FrX{HvfX|EJKF|8r=||1YsC|94^^|BBDwb6zrkFVP*v|LyEG9{=L%tinCcogZHV zt^8d7+T(uT&hz8-K0QS%e=lg|=lYi|pvkZ6U$%s{>tA|9d*%N#e$*<2pJezi$oYw!Yq*wki(8|yCeq*6+ z{GSJH;Ef1dA0uMSU5M!U;mEZ{x7&wkA37ksGmf8_6m&sYX2f7t!M!}|Y@_`hXRH2hz=NoxN$%>QBcKZ$?r`@iPOHvf+o z{@QDz!C#(c{reQ-|0nRCn~ndr_Fvoj_kzp({6A`+XtaMD)3pDqz^n29q(}eL{9}cG zSw#4ALfZct|F-|{rs22oUpL<`|7shf5&vQ1AIfjX|HrhGzwdp1{Aa(Jnf#y39P73J zhMaMg)3UNQz6zS{AHDv29qnkGj6U~o4zGXzUeZrpx7=ZS_y=fh|M2>UpUoQUwO81l zVSA`6G}}L8zy8v@{(UoOwtp6!d%ZXQv7<@P@sGZur(}K8Dc3&+>wh;*{M-4DbK2?u zV)1`fhWbCq-+Wl=_>X&h>h&K^2!Cvk$u2)G*tdV8{gZo&pZ^>3`WMPB8TE49Cp{9^ zKc02j{P^+E+Wu$%=RDdGuZ(BL`#4Fj?f>(kHU8QED}%QEp9`RE|K}oT#{bkW{OccY z6g!X4_`g}~!@lybe~hp4kEi{=ZlXJ?{}=Rs<8M;e|5jb)xBqi-j#~d6C0?}kf7z%C zmmgOwZoB@cVIDUwe6Fz!#VUf%fIcY@m}L0 z8(RI(@^43I`k!`|e|@3p{~6D=c;(;D(DZ-LqRC$Qw~yFI^GawfuVuTH~Mb{tPtZRp&pR zg|_1#&p|W(SMPYS7ypf7XMSP)FBkiwbN%NZeE@Caf2HURHU1HH{Zn>v7ngo!S*iXX ziuc^C|HH0-S}Xo9em^t)A1wdfpQZMH$v?oyP4E|rw)_>lU+nVZn)llJzqvF0_OG)t zGx?9W-H(4>|H$}1657W9S+tw@KU>mk{JYRL{?CQB@jn*Y#{W2I#{ZN({rJCH>>B@* z#a{ZR|NPV2pl$q572Q$szXZo)eWv`+^ZRA|m-+uA+7185l3w|np)LO>(3XD{wB`Q{ z+VX!V>6L$-=+R$p*(u|{OYR8pLz92$d4Bo#2JMEwQPL~_o6wg3ZD`B?4z%TOg0}pB zmGsL0H_-z=-l|jhgZV$K{40^?zuNNeaAtIDHvfl}el%Kp>{vSz! zEs6iit6lFyu9w-WK+bvxhxYw?-i_XV5f=ZJ zf42C)?B~(oZ~S1PyCvB29$Ao>|5E>xRrzmB!_R%S{A(0`cVaa7o53Hv|FQBDS@~~D z!(VcCTl}vR{>F˫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

6wrO=vs+v$=%x>ty?X3kjcgPi@ft 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⋙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

g>9!tE4g5GPx{dfL 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

Pbw7+3ieD8kMk3K>{VtR`ev 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 z×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%0A8Q+$kC#{)pQ;beC&zTlzhLr-1D_zo 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

{B?Ov;&+3!HHD+TdWC= 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

?E9A(aT&Z+4=&o}Bv3zNQ?btk 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

h|{lb&Xun=6vY>&$5`Q+Z#+b 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�{=?vJRrNhbh(*^YdMw{KP4a?u|?x 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 z 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

r&m%QW9& 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 z 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 z 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 z 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

7(2R%v34HB)+e91F7`Eo5y$t}E8tjs zUSD3{IELki!ym3!aV*5Nej)6di?O0hEK>@t&uZ+ z3a#Hi8e9M;w`%;CT@Owxr|@5IxCoOYwI7RWMW3vimZ~7e{OBbE=9q+>Q77&8423aJ z{m|*(4N)On7vp9r$R^@aay>Y0H9}5oOSo5KgfTi8^3V%$_UH8>-dnzpGvFV5q$VM! zu1{x0%m;9+<{vv`)fzbk&ZyDPvmU?KX>g*w6aa_NFI!?BBJ^wMexvZGEeL}2LQY*@ zyMDTQ^!r;QCl!}MUp$~bhqNv{$N(+DkRW-#BM9#CqF;Yn^+P_kpeUz%zG!5MFCEJH z!e>{W4!s{s<_&(6_fnG-_X}9O}OVaRV+~giKA9w>XYTl$@RruW{V#zxNL# zL%|+gGxxZ_73?{P3t#T2K>aSyaKvC;6rUB^Hn#B@15U>XKFq5%_MvbgmF)e{F*En% zVa;KZ&q1UF7b|+Gf0oB<>V9jyB(4z3`2lW^_b8aw!gFN*$Jy1uNj0_cDSb>VhE{D^ zj6PU|MOZ0K6pN)vTNbNs>0=``YH88OAgs5=q{WuX(3Y(hQ&u*j!D6tnDcMv^^lBtb zugYTaKF>Ypx%bT7GkeeO`Tcg!xp&V0{-3Y&anJo)7SdodA<5*_2C(~BhAs8}2XPTa zK4%a9UcX^4-j2BV4{GNteE{bMsV4lk>LB9wDDs8jK9=5qTROGRm5AHFSB=lh<$Uv$ z$6#I#7N|4l<76C+UrgyIF4r=SVB=mL&)F~X|1x`)#>(~kKTrN`Y##D$nEt9}Maytm zAQzs$w=L`NJmPXCa>{T%jvL;&Ul4I6int1nD}Un77Z6vYh>LREsI!k7@wpHv>4E6B*_QrYlo`kq^MO>KUDmuJ;GU9eB;u<(^^wcBzATIR_H91T6 zvGedY6K+2TahZy^9H@u-Reu(~6mbQLxLAPoXD8e`>>kAReOax&yXLd^^1rp}fPOuo zUXd?4YN|fQrxy183i(`Hn%V{K12i7-^WHG@sv8DfH~Q-9bBEmE9hx&J_v)e7j~;sE zmBWYRj=mh92)uqI`Ck^-g}k3ge`oJ=$d@hQli_BLV%Iw!se6AD;wr!|#6!6ZR}45j z=Q;9=*iOV%EAshAviliMT$H^7aa$E}+E#YmBD3EsI^Rs#Ciy6r$(i;O`;N*{o7d{N zGDTcpj$87}3qF){zap;JmrTy#>8o{|2ewH*%4KrqLp_{_M7w<11Nn*+ape%lI1l+N z|JXkeSE`5$gMK)ln4R^S-oNzUrY2_q>LIT0gbg~bQW59)is4@99@5)w7Hq>|5|Yd= ze*WFSf^I`|P`_LWj>e<8CoR{~Id<4X5yF3|g>3JISK*9i5{ zF2B9>Hk|Uq`}`+7r&;LC`EED!ys;rmE@zc+-YDZseI=yNUpjXg@gDLO*Q?nxIDoy! zWx}R0S0S!k5$C*EhWh}){jr+vkqvw85%H60N* z7_LF9$eHR~uD8DjiZ42VxSEKXUBb{FP62}3Hf{I|aXar(Px*W$`7UeS^*i+bVXM4D~ug#ZJfmdK%*P^lTbuD(%mC6zfmz+Fvp7 z;kfzqIi2SqU%5n1x^5pynXRvfWF0+Q^TD50AM3WPJv4Cr?uE z@Xnbt32_CFE^fjv;|m|l&inuPu;6);ukyaq1T6M!s;2L3=AVquw}{On z_rLU;K0Y{)Qqyn4LU!G-SKmq)Z&}*fX{knK%t_9OAgAk-SqXK-`cyX7myS2bTYr*u z+LborZ3N`R`R;&>Kd|}gsqy|qd(u4QAk0HzJPy5;_HxSXIg{J-&y~!ci+@#XM^z)% z>+k(JV$~2>&tj?C5^H2n_ZZXfeg%8VmMy;C%*pDdT@7Y2Lc+VU@h{{Dt=8Am3@ zwh?E4pQx36!St)1D%Wr0V{{ZVuImIplzrN|cxiz6#P!!{**E-13@%H|$n?v0vFor4 zzUj7raB&4(Wg4@~tUE`+IL(q~v5QK7P4OW1*A$=iW6k(<*4o>J`s)hlqjCM(1wN?r z$^AewV=l8xJ7|9>Q)xfnXH+-aVi%G#Yn&-(#gf+X)q(BscndDNXAer`w{W2h6xTUj zmTQ?)7!T@*zcrU+`bA-UK*xPu_`+q7d1QDQE}i#F`-blNE*Z{f552k=?ICoRT+Vle z_8{Ynft;xKh`z5Iacz}VCC-ZGFn%%4WPEXMm&nVRMtjiWiT#TV*O$l3q1iq|{lNbc zaddqpu*rN6RyZ-a1LniXwRFrAJZb7llK$17GBd8 z;2!vEk_^TFG5f*DG`Zj3xAFTPK8`tqWy65T(}WCm$n?trKXiiMUJUI$12PZ%HAym@ zV+VWA`~FXcAWl!kFn;i&p2=`7ZkOI4_Aufl!xArsU3#1CAv#@dmk(_0;^urud^h`i zQ8uwGlQWOETkrnPF|^#lPnwR?GTbdt+nRan)khh1A1iKix(@k8%Hu?DQsesGiMhYyRs)gQQJfY|0ez3D=T`5~nzBGK? zV5*zHHnF|S?2?hTT)*CN@n^g4BwTK)eVpwF9GV3^!XmMw^L<}CQGe2NKSN2{9 zytgi(@ZDUQoV9R#TxWkaf{a(evj^!Gu0G;x42A568}cTfFpLtvh9UE7u9zC)2;%J(F@ zpYO)I4uE;!I^~;*K1aL^mp6~i&pJQV^^nLRmJPd{Y~CMPcbz;wf3UHO7v#j_Ijeej zQKCFWIeq-Q>PP-Qe6=W>SeEIhal5Ra!t4@IGx#0Our!4@2BldzcR^l6QtkiaNthxhsSBhNv?(*&&TO`NAGbb4B|gY^{a#9W4v5G z@Lql0tvq{?M)fI|$r<8yS)9)768oUM36A=g%rdio@y}|VUBcWh=|xvQff_ej?iEH^ ziLc>)^FE!p0w0|}I1en;=)0_8I0hcGxg@iT=M?t-p4oRZIg5q+cIjBe=Mne{lC%fH zU`~E-F0RXdzFot*>G+Q)nVjVy7y5nP)W4!=PycsK$4!zmUyu`Hn;$l5CgY3pcsaLv z#>dDPme|GUC+451h5nqP^JG0B_rqeFej?7}#p5s3*A*Kid@?x;_9W0ZxicT%hWHW zEoJR5;Ge3cJ=i)q9W&TEUs1Q8_3P6a|1_0TB|d3>Vb|}LEN6CEd1SvA(Jq4}d=#IB za6U=)4<`A(uV@>YAIg9a`^~SrF#R+MAK5eWA?63yT(}=M$@fg{_{zC{M>&~(GbMba zUn#65l74yML-E+MvP{1a=L_9?i$3ouYld%+U{8!08Hc!!1WtDi* zZl9nb&MsayaQ%*-!St(>=x6jV?bD6^B@RBs<6F~S z*nP&q`BSxME7!r?obTD$y+PDA9_PPJ+aL848SqVC>L(f$+PjJ$s`+_=ogXqmPL$*3 zKYm2JcA ze}T@+H5wPNZz4UC<%Fx)7SbqATwv2=^=ZG+j_OY~&TkzTv-4c4L-{qr`K`>J`@zqs z-?Z}kf@seoiGBuO(WyqeEqX+*-wK;{>*et|JL8`dfzJ_=@X6$K!#db0AZOuu116Jh z4b|G+v6zCnwt-jU&VIYi<8Gz_@R%I8%Ek{d9@j6f=>9wUy`3Y`mM9{{XaAJtS_Pj61{LI_exm#!>vxMmM%O&K zoZJ+8Ci8pg@9aIn*Azdw1m$!~yk$z#2lj0;x!S6D@LO4FI zOO0;Rt^oN0&G0n{d_Dy}k~8y=DQEoW)}05qo@}eHv+vH?@Eh5_(jqIh2k$3ld=@D9 zo#ZSKSPqJKQPv>jwI?$-&)2|`ipMzl-=H7P}bj z?_RV0Y3tPKSK~Caxd}{JlE8wVqi9=oNufzYFr4_Y6zW{%}7;Q}R04yg< z)X!VzFF|2GLF+wbCz|sK@`L~ILXGTEUnP$hkz3XtA~3(kG33xw+b*NJxt8~bkUe99 zejWw8$oNw7*6ZhEy^0UyL4W4h+B@+a9AzN=^2G50=GY`(vYh1f|6uw(kFN(N!{C03 zvk>S+<20=!HisksH8)O^f6&I1WOk{8exf5(nEBrgE2v(D#Savp?Z7T5XF~w4>%3#{ zcd|>pV3({X?d?f^nE5-54`fFLoJ_xVE7*DXs^i)Fdv;p-T-2HPssuit0w3vDyw~)5 z8rX*Hm@Fs0{Q_T9flsEN3-rS{_;~R}S7BT?G^1bH?vPXA zUv`q~jiQZY`lWOK9UjWw+mtGKZxi_;OPqfyv|ExhUyw6E@g@ppDa+){;Bxli?}^Hk z$Z3qXmzvitik_3Vqjx0ZZTP<-WBjYDkmE#A$u0rGE}kUkIU-J`pW`mJKJi9MHBLi~ zRQQv*Za_cypECQi`uFVRr2dSa+YL=+&+WRM!h5BO(N6`8_NFNc*kfS#&TD#JN55wM z*OU?Wk(_DUdAogPs-`WlZ?`hOLio-IuJfI`qC*GbE3xpAAHu@>#2pIj-Xv$n4ko7) zuAzrNZ=IYP{|>;no3A+;Ef=-Oh_cJ{YlM2Zu0LwZXH{4u?T18LCd2iev{Zu=Vn;^d z%Vk&x(`4AE7x+IJUojlNEBt==>JG5p!_rO*rwo_6mwmV8+sN;;3Ad+x;uvqVzw9nr z9AXsfE&rT4*1YN z^;g!!@W`&18lMMn*iU@;c)dPu_EE%nIj;DstbdU&TM;)7>S0{Jm4D(W$n><>f|c3D zIirm}Kl8t|2i7&@Nrp@7$kr7fN;wajFMKEMM>V_5gnHQT)Rw+?i({{=xZFcfW;GhRff_aH;=vy?}5e6-oN`7%5lOWjPIRQV_lAm;4y5Hb=>qp zAD;=BY~j0XWIMa>mep0P*5h;D&b_mU*12-EMrF*ce12#P$Y=K*II>IGB2&L?1-n@J z0-SHI@Le{#PeIg=##{H-=DeKlLlgC}mJPp;G5zjN(qAvM>j(F+_CB%hx<`m70Q;zn zIr&E1mkzOb9PG%rbj9OXqr6k%8WGkdd&VFpNiR3tYlpuzm#p>-b9*|xUmD*jB)n)( z;>#26=kpe}oUe}a*~O<-&ZuIX$?O>h`{DWPzkBsNtMHiXXEOaVpJVq?kC|6K1mnyL z=Xh3LI#1mLwkN;26y%ig74!S&!>`_CbazFTXUK>z{ZEq*ZEBUvx=r@dEDKd0nAhn6dZHAexW7Y)UorvCz9PisBg z{zC8{#b;d5&sQ$TiN~5adcvg1h2y7TT?j4RMCC=o)fD2rW5^n)jfoZkuh z$>h|yJ>Px%f@0FiYq2NUr9!Yv-YR>$7;@fb%IQvm+hZf=WZo~ey@K^iSuh79c`29a zR}FT@_12YpJKTcy%s6$C63z?HdE+`*c+JG+bo^qAT@3xsHv6Sek=!mn2>Ovd9R+5b zRjiidh#Pa6euXEq_j#oJ_4*>L5qqUX6ERqRW5rqr-m_A3=xR@`ZQC z_GugKE!aK*%6$es?Kup;Ls3sMzJou9^z+7T@%tX5dcnp-U&wF)h%>b34GVpSJ+rqb z#P665R=*v2?(4}e&uL%R&NRpTt$j=hJ+yRiE~;_KTrQ9qeo zYWQ=ezukJqe!_Wn*vFZpJ>y&P^%J#(^IG`Go*}`Wo>1%T8Jx@J6Q>@SN2eu@ofbZs zemQB(5BG#FMYHND754F>p2={IXW6{<=I2A7QQaWiPeo45$t^)XI8R#PxdF}8iyO1 z43`1NM!wIh7Q99kH47i+D$s`rz@}L{9$zH7S+oSG_WETv-p>G=GW1xUvDZRmYVeZ}0iDkNp(+LJ~fi zJ%eCRobR17e0)D<6^A1Q?o*;N<}zF@93RhfV!uqsSSzK?FPWitI1L;J&i@Xt$~;0L(RL$Uq2;rQJE*Y(r<59>=wL+2Kl^T_=m194$) zoHt(DS@Vr$>sX;rZ%?R0^)I`RN^-lz`MA0Lw9BDCV<}|Ok^I;2K6@`m==0fH!wEi( z>L<&|E@2^Fq6+b1=+_V4ufgLa?M=Bo2MYSFx3q^hd3(TtC>7o>_Cb>NK>E2q8?CSF zhadK7We=$9mnK}N48A3oQ?!wx-|bxt{Theua&GDSY0u<0tP&gv+z= z$?W0={ZO&=AKqL{xYV7A<0i$YPw-z>E1&y}{l@P1Uj4#pe-fWHM>+8tg_vA@*!@{& z{Q=+mJV*S+EUR1x$~=o*hcXsl050Qm10Sy29GV8#N%+hzL> z+x|M2%nyEekJ2%Kule@80Vq*_Sm(gwiAjbF!ny{Y*xvDO-SdcxDB`?j?77y*wL_O8 zF8wDpJ|Eyv&UL$(oPGaVsEIOS`R!K|$J=*co92<;r`u@n!ZwY!_ukd~I+&l!dFw`| z-((5jfKVdeWw1@-dmivz0o$s40q_IbbIvGcmtqOu+ZMieI3JF;72Vcrk(Tgr{oXu1 zqR;EfC45r9bKLzStKLWd?Udl&UYlr_cVL_RkWt!Jdl$Ak1()1R^5Df3-aYy z)*|62*xNJ}a9r&l-Qjv1e8;x7>G|e6uO-U45w=lI9FN>E9(@AaGC5V+dl_$!*7k0d zbn!3jd+Z(G|M@nQ^Pr-BA@BqC<0pQ+>pzIoepPEnVZdQKnzrS$-w;=)isS2;rPF?U z5^=raYJ7E^@AFGPd|E)y-4S;QmGe5+c2e!$7 z=TB?Cy+^s6<2Ez9)Jo#z?Y9&8-hpl8!}b@(_6OTCz5(wf;x2=2!qo#V8@6RQnO)*s z&UY_i_KX}*^Mhj{^ZTE^x-7JK*8iH~-VP_q`3`K8JzXz5w0B`!RZbW1VSjeUHN#*A z0pIUX^t+qmuKn?D82({=nAx*p|upjs>?-z{LUgNfMmQ z4{nH0)bEkC+2DS-zrgYiWcUg8HcereFQJ?lENZLYM?Kf_Zec{U=dj8F%e81G8`r(( z*^lpUew=8Rw_uy%%-Mat_5p08T`*qrrkm~I(oYg`{b8HznF_e8U|WWh=~v6o!#~UV z?-OW&dWn8A+#YV1A!q)(3vn|Q-vb%vxSGz#ypFhWlK0xm_!>EG-Ej=JRf2nKYoc8? zz&6=4AI66dVVmr-Pq3$qFB9Sg``ww}y$kE?@E#t^H79iWfUgqyE`x32>jQqshHc_& zTWI=E#^+qj?(=wX`#ldMUzvn2>+3|mOJJM)o&|h^VOy0i75F-V4&JMOh4T&=A1wD~ zp?)$s-5huMRSZ|8i0i}k>$>=;96YkyaxD(|-uRa3H~DZWyDkdbs2`5snb4oT3EQgr zWpTbvix^+ZmZtsZ#nD8*EZ8P{4hDN(0o$s46>z^)2axlljQcJ}{YotNhM;~jduC2t zqt6SL|2lt~UgM|7HLNQp8Lpb&Z~ESQUyesy-j_}Fli|YM*?Cp&s&90h>;0zlEEz7s z`F@|jU&obyrN&p!aVc-%8-C%r7t1wf)KkV+2j}597kl!^uFwqOdy0yfpO@p7-~WN$9_lUE#t<*VErvCGyq5pK)z3z;#$d}DZ8BT|@L|9H^Q8XS zSO-(way@{~r?dYQ&l`Q3Ub&fnGC6m`{pEPSe#ylLFGM*TB=_sfaD_K5*Kv35tazCy zg9`VhZ-6?;SN_F11J~!M#PtFhUpCZ1z0*&Bd>Qfi6>wV0B7I%4Xz+QD5N;;yqcY|) zz6yArt0Vk2Ytm!O#kyiyhRfp5JI!t(t_o!83ns>IS*lZzGd88IF6W@nUK>L= zYc7*B#Gm_oZ&iAUwLWdjaGqn?de7^R?!BMtwL8Y%o*Llrdexg}5ARL5N);T~6Z`oW z8=!?GD(~WQ`XD`>NjJeD%#c*s~XZNnyeg@R=lv}ux;c9MX-|zVG zRj+Yh3D(^y;AMPXcS;T+Hhx@AJ{2)6t=?;zL!9rs-0tb6bf zm>R*xdV&9w=~oXplz)2Y`e&(b+Aa1t*YT|X{G#vbTM5?(_E8yg8Q(algM9tpediCV z>sP?#4=>Shj&yp@YxwFX-1lI?wdV)SxE$VRbul|HN=x#cJL1M%CTARujpJ>!zmsrz-$TYZoG1Pca3Y`vfNEf!upfCtQEnM`g@q zau#yjzN-7zQQfV#+Q)Sz;Lx7`dvf@8!bKGL9B@w@_Je~zJIaQU#0%9zXeYM~C= z=O?o!^NNuw!eeg{lloP`#gJG(dH7pUvgf! zL4yQv<+PEV5!D}qw%4ve!iCZ6`QZ7wXz-c?Z@IXI{M_xiElFO zqcY|)yM&<*w&$Nqs_&$_4GOq|OPPMZUh&Cf!UbU;l`)s`_2uvDx^@YBUssOgJy9}T zL09&@!7fV~ZmtA}{T8M&;eCe{J6m@iFcaj&b+dB` z60TiF;y6a<0l5C(0sh+Yid!B#&UrPIas7tk!I)ISKGH8P=$E$3UO&P)e>U%X%KF|O zN8@`jaL{>!;0aa6{Q96JUSxhx%VYPmKj@slKACJ^`wneWvMd}qdsbGN-8C|-)7F1A}Y;2jG61o`{RE7 zoYdS3u})>oDLxy7`1C3Gop9B{xKi+6`#7Witay(ZpA`yx6rWM3i}C3Ne5L}QN}SRA zN_>wtjk8klJIRNfqU~g5ikFapOH;s+oXz>2ec2ptQGp?W?*(LBhwo^g{-eMVVw};@boAWBV%uOpyW~`N0A6XW~Juj6>W^Iwy`$v1b$oM=k_Tu^GRq>5*J2iZ#@S#$T z%;x>Xfbuse>`6Q$m-#*S_xbvI zR{GK&+tKfhsY^8jzzY;-AtBDZ3Vx^axD7B5M*r!D>)>NKKejBRcq!O##!ImRAH_>n z5B8q*Ou$DK&fg7#wE;OfPlEy<;j#oAa>{fP_Yuw~;KB-gDse{g+r?S@CbmAYVRps> z^n3N}rtMu8FMS*4>+3!B%XeOnxUGt~gY#DE{mU0$K6C}yqEE@n1Y61Yq9+D)+&^pD zY}4Ztwh2$U4Ch$N?qjJMxHp2hI?LK1Vr94>zi+gl+xLgChNq$FeWNm5#&K+%?s!7& zSBR@s#AN{v+xtJWCf$d)#{a1Cc{uLl*$h{fkvJzvrk|hR-}BUp?yz15c2UGRN3!*^ z1q=Ro9C1#|HK1gCCBTRM;t8b;=TXF!0S?y=&ibqEv&a`x#D%ziW2--U7;$dPHK$~9 zW^@0I?85vPP{ieNKdkALRE zjW;t~8eE4$*~BD^>z#1F8~WkQo5!4id|pLd1K01Ar|;W}IR9HKG?5F-GQJ{i&)t{Z zuD6G|mTO$eaDI-f9LR7R6mjjAuzq6v#sS??qJxS!7vM0iYmYzU8^raoTvJOXXFA7S z-*@$1q$vTn|K@#3XA+LGT04Gp^{){FkeU ztKk02+{ye`qKK>JxLLaxF3obS5#^Q1Ig{Jvk#0Y{gf+a1I4}46ft6VY5O?s)5)C=T zB;zaPem{N2%qZegE!Q>?FT+)GIY*wgAdEHUD&nd+?$kaEw?PpX=KlNsIOe~Dinu!N zho@E-=>2ClT+cHHI)0j5Ma>-iu4el`4I`=xab|9_gE|7CVsqZ#W;uqFc4n@u#I zFNSXi5iSDf$jyS_N0PI-^F}(J-F&`)uNS=3{crtwAg|;*Ml%2T_<5uI*{n_IhrYjs zn#e7~74h@b1@k_C9dY9c| zoEpbzmU~o_$r%7#NBFVi(8q8+r;VdZ@w>S`xQ+({wBv^%v%d$NCm+^ukwZ)}y97Ay z`t!GZgnUI39K~6B`=_+*nh6>nGx8D3#p7GcGQM`O28HXpn^SAQM!rhRniL*GhKq1q z?XF)=#TxNLYVqQRYnff)m`}}^u@sLjOESI+@B?123T^xc;zgchxDdy!Z6U4{*6XmX z&Dt{~4w*;BDB}xq+-IX#!+0c5GF&gX{)g>9H8$u{$UHKn3>O{nx*lgYMEXD25}Xg# zlF$#OCx38`j0^Y4`1)ou+$pb3YHSIv8vKCmz2fxB7WpsC{kNip{)=$jnik^fIIgmV zxahC!ez04MS{B!nxjjdp(lS3Za=v{n^g}W5bptXYYxc6|4K8B{(nO zIs@RA%4?s)h?)%BR=h0EiaGAqU!J%JaaG@|jSrqZ?0Y>M!~edBxSgP{3SWrdck$s@ ziv}XDTv5(2;En}?-!C4opI3zyadn(8<4eZZpooidzMC#&d<}~F#i5_TX9bEMoqPi7 zmwG_W501;&{ch{`UIg7CtWW%)<_CY~8l7+7T*jBF$mimGC;pf5rCzP(zc{z&1tm{x zK{=y}ayphV|Bc(9_aWkPROJL5+Vknh7@v2qnqAynzYl+8eC3L`Ou!utd=tLfb{ooB zpeU!C%Q@p(_CCN&MSFTUZhJPvp`7D>RI`f)IMgq*VA;#Meu{iP z&bPY<(y>pPGIF;KO)1dE9|rsNV)fz95%#*j0?r z^OG81i1Yc!Fur<4zPuONdrEuGePkWV8B*l)Rk3;UnH+aek*|RBeg49*SCP+kjaqy6 zbG~gH*GCZ-2D@N?Jv?(8o)#LZ2Cl)-hHN~lo62?lCasyE;{u8}_ZHS}Fa4X@C8CI{ z=W;&yYn9IDu-sdoOus0{l@~F4W+~!4T)z+7?AQ6CpQ!a`*&KJ{hs>T8ihOa96GQlm zjy-l@yrfy~Nl&I<1K>Kqk4v1fn-J$!#5p!F+$o(H&ab%c=H$4299OQ$m(SOsk9aij zG0M495!VaaAD(ZXHf&26ajBMj?vvRiljABlE=Lj9pW~+A!1(4W;<5n;f#R4j@;d#x z%mzhVA9$Y%uJ3Ir8}J?K*T?egZ8H5d;6vQfg$$RyNi9BI;6IGBQ#-LZ^DFXsA+9mb zuF+V$R4d}rc)ZkdTwD>C$N8Qe!}u}=nByMW1e2`4p3LnMzU_)Mtf4953i$f`k}k{i zc2uT_E8_8TN>_%fQ^d{XxP2Vwyi85M0N^mr#=pM067};a;udqe9CLR(6LCd~xI*4; z0~{Ap#5v%-QW&4N+{5@{ia0lq&mk!+KHUS=?2^IbY~A@k>i)}9#AR|^)&&d~P{d_% z+!1{lE~1F@b9?UJ(eq0^f<0>bRq=RP_Mfp4#Q79)VUC+JkKrm5akV^N`u$w@Gx9Ym z;_5kW1IM+iQ|p&XxLqFoh4Fa@soBNDjB+4lTv`Z`g;P5dH>RDji%$qDdNg_oUP!v z#fmsL$cg>gU27TNRz)1V{X-vbk2#vfXUbqT{qlHx4x7mOm%)lSjpMd(+)PDW0mm&Z zV0=}IxIWx2zyEOyEStA+>{rBP@px%F@%Ubd>or8pE`vF4F3067;=CL;w1DxID&q11 zhw(Y~ix2hntXf4}Ighg;M|C<0^=o&fntlbqhjI21$MsjlErxm3@ql}^aNl*1>1nHF zu0`kl+5CO!SjoR>wx(BZ=AW#+m%?}s3rmjw{pVQYx=gKQjF;j1`xa?1L3VW8bv$Nz z@?5t<<3&A_;r0No8~j@Q%;{HC-Q2qpZ7Rd1LH~?$ruBEuBV1ogpN;D*nEYLR#(lpT z+cZtz*~~u~UpX8b*E=5AFau9p^t98$*B18TA6CFQHC}JRBt8#I@3Du)Y$M6|a-d&F z{oWk2X&F_VYw7Eab(Do&G6mG8mz4wkAde1?9DO#Sd%090ShZ?w@b1NtxY-~Dfm zxPx$-rB9RTHyLz6KXeQQ-yz&i1^tSkKS5m2jOXC|kEM{MkCE|ZPG|2E_~*{i-xJQ7 z%W!V!Pp}^-KHmKp)z7o^F*2OL1AC9z=x2%#60Wp|z5gO`Y_w-V$6*f;&T*AJE(qU4 z=>dR2?Wg@nxPvPb=aMoxeQ<2F=YVf|K1{d@1-@Rx+4HcDh35N8Jg|?Bfw_z?pA7DQ}i?msxx4%iZ zFCI;}S_MA;LiV1vbMITVjc_%u*!!VfE^F`qj?258aBkQ~Wz1#v%!4`@pU?dE_Zd{T zPyts7buiAhW?a94a1jMuZZ9@&{&>n=Q&6H{C{Z^&mQ2pv5zK$jy#6*`F42<@_VJ>g z$#4}=#|6KZ_gM5A)vZy$H9{TiKW8s0eS~mnBklRTPzP}-pH7%TxXB8*4YS#N{?9El zuP2-%Kar2dt>{j+uAes6r!~NzQ9nrm+Y2UVf1gJ0kt>3-zO$Ksgo~eS;xbOL$6*7* zza!ueofU$2qrf7F!|}qG9=s0^*TdlR@p`J*`=T+f5uXMeBxhMG_yYXBcY%+uHu#Vp zlZ>xU;B&fLu3wPzWea>1i!#3Y$L=!pD^lR2V=)cb|G{(E_p8F~gLv6PPnD-8wk5J> z2sp@|F$F%W|H529t=674+-CL3a9O<}cUBu~~KR zz!EV_b73EqF()}I1UaLvkTcHZj0&dH2Gtw^zI#GMCPGT4F09H9&T+WO>nNjgPlNNEHjWyY$68e-yX0kq(T8_kwOcmi+gO-b}Q2_$Z=PF$L!Ky5m&)+lkQ-4$y3CIw^r%bfyUmlEaAQ`=5h94 zCTEEA{dsPhZqGtRzG}eXoO<~Xks+}x;|l{0=l9-~N z!e|eZ+4-&W9G{kU$i6+$80DDSMawvw^$&<89x=c1EOQIbLosDehWEx?%IbTP;8;!e zpT-Q=NOOKxw5tVj`b;@BF0XieEayq&%n{@)QjnAMn=9bl7s>4+^2_`e<#CpGSJ$(t zZi&TzGF$;%zr}uVOyl!#3!6O2a52uea`W&$a+JJZ+5r7E&Z%!ayy7OpdB-Kj8TqeZ zgz3NVd9AZcCfr|#=WbJ;tQ|yr)?B8a2H)FtLd9zE91CJb`)zQm!o%L-z&qFbKI<-HyXI?35kB7>tpeG=64nR(54KY zBn25?%0#w4AKSgRcM_O%9P{w|Be(y1hQ354!&1Cd3++AQ#@5N10dnHpqq9FURK|t- zWcm%}`rUU!zh_&5(>UMNhi_?U32r9Gz35&xwBBP(M;$`~zGud+t?{67? zhgje9m^tT_;p%{|GXUPdyWK(&CzfTn5X2{*)1KS-Ne`+!E=hd)?=6w6Bf<8~7LNAc;+GUGF-6g+&gY-@^oMPn$F#YsiznQ(w@36D z;hJj?q_1cf@fdJuJ+%w6erb`r%DB#qKeU@<_DwQeJ^%h@_#*cG&A~^S{WLqWd>ku; z`>#>21tV_HrFxk6x8aK~Ve5k@p1IGMFBJ+HJcdlpY=~>L*RH>lzb8?KbAesZcAYwB zQFntB2}y>__Al4EL9NOEtC&TVs{^Jjai0vA4t!{rQRn(!BAhj+_7@S_UtA&1s6Eu@ zoAcd_%kAS+CZ~HT^TTHurXKf7EVw z0*-jf6#7rXH3+!KZ}xmD?Jtd=Ph(% z^2yq*w&MuxWT>}2z28?l0RFk4uc9*MGF-5CmHyoBZ0*H6gG~Lhq1=pW z`cGE_zkK4-Rf*JAtjPX3Dv`e_Q|W)uCUv+KT- zZ!+Wh6p4P+cT{&V*F(Hx)#WS$*{FYUUeR(txVfAq!u5BzL{3>h;hoY(Ur)aE%D?{Q zkR}<~vj}7(IYSC^%J>2gu=RpjSN|}m2@&66^+P7tFH;y-PUUrF?IIbEA@4vE5F{CFfSK%C3^-yHnL}=6>@sHoQnlHdrIUaKF1J~FAK_| zOtP}o5AGrCJg4ZeX_sEj@c9J3idOJxT)$j_uXi(iQGqY*%9iWr<9zO66OHTWr!~Xp z1rG9GaVz-Ty#E|5@SWZaUs&MFysG8;`MG`t0w2YO*pA5W&7G$f%$uO0s7@{~W^}9q zkd5pTY=xYe+%6@8oM&(zQBLBk7x-M+Ew_ut<2oepo!Jau#(855{jwGKNKQZ0CA(BB z;K&a&Zw+z(H3)LjMHZP|;sT#`b<6GI;eJTJ!E6t-I4ttX`a#EU3-$YxFX{No<6ue; zH)lddb}0kd$S!rQkTcBf;t}LLhck(C5})T9ldlNM2|`IWWcmfu*n5;pZ`xEWf#|!e z{;T71juYfOmxE<;h6Fj?*V@Zz<%@E@!r#sQnl6@zd@}vQ2j=Vd&HVW0-U8BZ?*Ha% zRK}d_nFq3w|H`0kh;?LTtDIgQXI?>0dPqQ&(~668{fY&9p3ezI9LbrLW6D{lASaz~ zhVvgX)aQ9EEHiSt-bQfkaNLelCuy6L5VcIMOfeI#WL{lzG*p8Lgu%zIVA6 zAIIjac@ypDtyVeRT+V}noEJ7DXR#n>SV2xJUnb{E8*cVX7d69|dA(_uAe56Dg#SSE z`9Q5XpLZ0r+%6t2XMaJ?izRZ(+FvHTFX(8f`$Fg4BS_w@!n=ZSANk!i)YPvU%2YpD zPWlxH?=^}m;H-Y|a{U~anCE|Vvw+zCWcoQ$p3?i5=Y0q7COIo$AC)ne;k1|7dh3NV z+W#!p70YCo46kXIGAN66WMx{DamV>}lAGcEOC#)YR=a52E<3YKyIjHv?d%d>&ip>@ z4JWK$!~1OxC9d`0VMsscFjK!GD07OWnarMpuVvqB{cpRAAl%?RAh2ycfK@;DmFzq~ z6XF^cne-&;xBc0U4qR_cb&T}v>%GkRHEd)2<9w#>(l**I*v9q2%9>oys9wvQP}CFY z7Zdc$yP;drW9gVKFr|a{Q7h=D@$qP`px>ojHc`Ku%M$gw1-4N?yzo#D`i+L| z=JbnzPBd<24R4)(e&{D~oSI(y#>1#zm4bdg9-pbg{kwSG3X`bch=qyzjf8E~5Brb4 z@0M$mVY@l~DnKXFFD| zn1X(WJ+CtD8BfxV&KB%x)i22Xmom`o&n}nfM{!+onCVy1!KYQS zygyR359wC~^Ce^c2y-T}4wcVnM!yh^N4e&F{t6Bh{YQL`k>-0YQAgqsbC1AB`elJ^ zq+dl6ImKfTU!9VF3;GS=U_1RBFyF;zs!lK5w3$PiWTan% zpkGj-zn1Ce;`8e(7OjmnA>uo%`qgp${DOX0^162V1>bI~;WfA;f8F#Y@s%Ezc%IXl z|B!KjwOhC5(=x`}`;Y9B4Q-s_+ON>wWp+6TD~q#+7krv`tXxhJXZ4@sZnmDaU+~}693cA7u*>zPT`;!AV^jG8iCtoXUGkFP z2#>kJm)}Jrf1{3K9V%Zg@LBb9as6B)%<gVSA^%eBHmV;&b1>k+u^xkWHC$-2!<#Q$aRX|FFhHF{A$nLX?H`E-5sN*cn*tVT|9Mk40=XJn$i zelos#;OhWKe!7M{V9*!^87_D%dymr4)fe7H6+^QU&jVz*C_le_!i#5}@+8A$!8=>< zo~5;aU-LSlCf}OKhie^}_D^TuA$Hz5TMNOTzO$KsGQOQK&%*mgOD;NSJXeQ@2wZ1! z%5dc%6UuSLy+1vH^)cnRS7>^H|C8Zjd|tQf*ppUM-H5=2`((JequBSP?woSz1i~GJ zeN@Jr;w8r4TaWwd6ymxwR)pl^<5Bi9h_Qm!#o5+VSLoLpC%h4y$c_rnI*v}1llVLb z+4$!JuDVv9zn6|-?_awA+nEMm>C{9%V?5HjXw=Si9Z5hTA1w4QGC$P9v2iW+*nvOq zLQi?M$29@27iG8@Z-1|B?Ebs8K5ffzUg%@61?{Q+`3REFcE)0D(+UpYEK%9o^sh8z_hlV|e!}!kQ3w_9|CuCWIJt;ojADjJIMG~BN5W4;s zg}QViRM}4jdH<3E<2xREc86@3zqIlAgmo-J z%IsMQafo_fSat8mc;tu>m(Ag_;P@`6aL4v1!jO63uSt^eIpDpFU7=>%?I+PKqmBxN z_iE+>AL7nl{PvzEM0|&gFAB#-qB*)3yxPi}QUyFn=4>v*t2fG3bKhZ9_>%2q*YX%&#wL8>T0=2N^Dt&j+_YK54X- zhqh(7n%(O(H&ke>T{(&BZ7sCt>(BXm-<(!TIBPEBbHX}iJE-`sd0EQ}la9B}d)T-# zZq-{a5}+6CqcY|)zHE>a{nzi&!oMN&z+aOj!}`&1HOk=s)p3_|jkgxrypmTHf6x!}$Vj+5N4qRY~t}mEjuU zJx196s?(Qxh;Q<}_WI>=KR9-dU5=KkQ0&h#_`3HF$1@)wu0|2J7;N4R1l&0Mi=iZE z*~~;ap@HdZcFpzkfhlYri!nsW7>|BQ)jU5=&~Sh8ewI@m%KJ{Il007gS3ak&FC9AS z>5Hjm{+87ml`*Gry67)9Kf`@dh38@0V?{{5#}{b@bJ(~Se4*2`d)jx$mHw=&-Qi(0c#GtJelN-B#|?t(QHQ<)9v|G?CJP&j7GealYX&6Q$J0C zkJ^#zG1iVkfX}hIt4z$WeYebaFQO$a>9)haGn<6`~t411-Qim4sDZ6 zKH5)mRtvZ?1-q#Do$PGaj>7-2aeDL2LFbTMdnP50N7Rn|LVQLP{H`J=_5Y%r6ra(1 z%=mObndD2BQ+%fUhs9?FV7xQzapZ>#z!8s6fsb&51srlFlaKZjP7`oh3OE&elKi4Q zW&Ki=`~CKzFPrx>+%ETfz2Nt-f<0w?zMgMrr-A|c9FE{Jnw~uK68XsQF6e8i-)&If zBfnRHJrNfy@@amB{+j$y2RPy>04x_TX-2sH0uDKo0{9PvbAsN)m#Ki0*|TT@d;Wdf zNf$0n#;X!9B!^wR^a7djy!euJsgDz1dXjj_{972u?z6WG^)Fffn7F`9dz{QJ!QJe= zsH+QhX(XpLr#Oqpf}G^{TEG!codO@>Vgk+soK}6T+cLX^ zAYO33)cez4;nv7Dj%v%fG#-Qa+Lf4c7Af!%uD^go+u$*qON7f4aAgX1QHg7^vt3*l z0yoBAX{X#LN!I)%?_((z;yR+>cZxITYi67^%(k}+;nJWk^@EOC_Be{qO3(>$QNV;1 z_{a~7UxhVl&f`Kb?18`pL*T@8O| z*S!1K@w|h&48r}GD9)mD7HMS_4@m5Z4d)raf%0AIaI=I$vJr85$lB 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

r6*9g~}<4ZGv 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

6bG>Y>Uu(e~8>GG08h&S{qP${_ zBmHRpSufrX2upTZ&De$0uO9Tn>#gs8F4ZmJFIuGNJCGs$f}j)Wmt#Xtj?V-A1ir`o z{A<4rmN}F>!=`5aqQdXnCH>Y2ueUfFje{o2* zg`6k-NHT??ThxNMGtnFgfuU`1Q~y!Z07~ZNxLxVb(7$^z%siJtGQR`OgLI zwk4D;S=9Yws^6TF|8ln(`UN0wE@$57^i#zAql~C zL5xtGmDz|FPR{(r4=T7`ynM$nXbR07-ZRS;vz#36AjF0X3a;}W-IL1u`zHI)te@it zZGEXk(r>*0%lgrJRupui^-tI9)_x$nG)i_U+HQ>_In#}QvG&^YL{3r`Qo_-=;s|Tc zM^;GsMHv0`^{lq-lp-;%=e)tod3J$8NczP{*xs zC+lgpr%SZ=ang4rHVJ^-pXqXD8Gd)X#mm{1k+T+LBRO+Z;AAdkjCsQ^|sKY3mb9PduGV6r@Lx2AoZT4x%AhRi*O&q)%gO0if7b@pf33IQ^_E;#&YSg9gnq@6 ze%0ypYj5a>*H&`fls})*uL#PLez6od!eh$m7lru}j;+NP&%0MHE9cGn1%-a)l72MV zV&n5vLqFfF`HEaOE(%ldJA zA#pvnH}L9RsrdB%`dvdm1@fuN({YZkLilgw>gzwJa^}>mUqXzVaY?@y1xVJ9udHOgBG*m%?u>qpdPBbeqfoI@a|`<}~{+ zD)d_-=@%7XSwE7~53*65mD!Nf%vUe?swKWx)9^(lzQ!i-Ij+*4Yu+jGZA-^D&*+zm zKD743QKGK7w=7n&Hf!su;c6`vr`Uw-83qorXUqnl*`5hu&rXw!{$+a_{ahazd_Kst z!bu0se2yQr>wcfa_j(#WX+<7r9eyWtG3PFGB1IGm%qL;c<3@CBQxOLDlnEKb65IM+|&_h^rbJ%fB9;43t7aySp*aDDTq zg1qsn1*Wc6*4e<--n3HnU*LzeJ4mncF)JIC{a~#=4iwfKs{9^9Q7}i?G`KXm$Z4O|7Gj>C&!o7 zR=Yl0mi_xX$QOluKm6%JLWaZndoNbyJo)r1^!3P`qt;vE!ou&na{~{mb^-kwZSWPf z)2?%lt~u#5#KmC06#lH_+y`Y&g+f0ssZ^g^D;os*!Jie*E81=Br`Kc1w-YdxHgJ1C z*Ph4xZ1S+v5a+qJLTR*tQ-H4n2(^B7H<+?Ea})t?0Q_0WS$BSgdjIdLDVM{25@<)0 zlVck3od1-QnydXpO`AbwSfU2FN^S53K~7N2@!E}Nz>Vf+4wt_|iP^w)g>u+`Rxe#N z6>&k>_rV_=(l<`dFz|JR5D6Zvum!?AJOcw?K3#vpD9U`E=&#fAUYj%=ll4|RZv*uX^#nyY@e;JdHCM!x72n{oE8cHiRY zZkNDw0{q75SO1bjy}wyJ<;6oh3Z*!FQ+jCq#FsrMetY;??Ffg90U!3O4=ESnw20j} zTpVymLuu!Yfd&=?2RU4Wz+Kj7X=XThJ{j-#U%K{{x=i@?f?W{z`HcRwM0*(AfAyfg z1N!zUxOzzMfqkwVdiB+PhV(8d=zW!MV4pz+{@!@BpwEzg!}=5!_=jA3m5%51YaU&# z&a*!F^vMb~ zdse9L6`YuL#Yvg)`oe8citX&_y)B5)Xnc&!|c@F1; z>j&&Vm#n_72bHbrYb|FS+Qabxm~%>tT*8@CjxPlIq2FIAWv)xjz%W+F@JN`>?Nf`QhD6a0$`B{FxzN z0qBSAd2_dJ8O6&&f$MdCX1MJFceE!n+(E#df_{js`#Tf6gihI_zE5)E_I2N6g4+Rp zz~_GV#3EZW!MWbk#-kgyw#4NPcH`nK1o48`sav1;ifu*-F`XZQKh@=EuLTQtRic+%DvNEJJ(N3*62OaXSUBV}^EV5V)}! z;@r?4Fs^5=>|G(Oc38sM#UpSBHfM$li*{7{R%SS_;5+_{%y1FGciF1UaDKtJy*e{o z&2yWTGr@x0=5&3P3|SXQzLw+c85MF4d^ZTjneo*KzS$Y_ZEtu=wdX^Z zWya@&_q|ZRXENk#fHf1mu1Yk1Fd9cz@03MK`OS+IIHYf!J%cbFVgG;b7v~jH!8SI= zqaetM@p4|j%=D`k`mN7UKlfm5-L2V#W2;cV&~>mrKh;{lgKJi*^Q@1>w=jwoSb3MFB{68b4j2C`NG30lp^?(p&YL8a*c1% zyP5HgyJoZEhRPe>i4`HA?|SeH{8{mZfDb3S)AqRM$z|m{CudaHv$Fk$iO9DDxGHS$ zDS>9{`pXZ8PR?juBdfnQ4>{|@@2*F_1aR%!V;!Fkcn=x%`})TW^#lKP1YAY_f#;Af zzpz4S34d00Q9w>N6ngTzTV6ukT)^ZsSj!mzIk7*xXiR3~bR6Ww{w(lVo!U=q1io?` za>n)4k)d6(;9b;K!1sEFa<&cc&4a+4=z%?!>#?EKWvf8_rTQ5?BW=r^@Ba$ z4~|8?CBQY(2HzC%{`-{~+NDz1rE4IyoY-D)OH4D?TkEIu*PB{N?LQYUjlhTf=SR2Z zWz>HvU>EE^Z_aDm4(+mTM1@iee;SkapX2kud!@)XV|HeIMS#Qm9U~Gguar6DJjYi! zP;2kAPx!VE%2{wj1$=(PT2B8zTAW?DwW9}d3jwq7o<)ikpZky&FQa!4#_mGh3Qx7> z3yL_KdUmt``MmjSlqwr?R*Uu4c5l2piumfTTdYtXQ_e2spdVg0Uan^*pY z-;FplQ&A75`PW>WEBiqEu8M2$ETyDyfhFz;z~SGK@Q3$|+y}MiVn_#f4w7HKC?_1*#dAQjOS4DY>EFo*sJh8^;pEH*8{v9+qRmWwy*$UA z9A{*gBCsLZCFHPV}D_SqP}SOz!Qf7Je(!}|vKo@o_u z#WINN$hr6H`o(R?N$n^Ee56-613rH@gU=5(QWZ+`kNl83bDrWJq>YzVkWT|qPZ2H( z92B3PBdz(!59#8?6`g+=KjFxKiRZ-c%GMeFBiqUTBV0N@vNIQ-K9GgHlVU{N^*urP1NJl3s|`fm!~$e1Nh2?UeP@Je9EgvdvLd~<|DhLYk!5YiK^UA zNno1Kdp3=O^ACYE*GQPK6=HmIzlzI&=UOGjz z=hlwy)$avXNH|D-C;?lLA0jsFV#g0;FU}8f;fLH4XDI>rOC=v2Cwm?Q9LZPv+I-u% zXfp#>c!GVtof0mT0dBw%248IkxP16MFw)PFfn91OKC~&>EmcbPj7hi#8-AyF@k2~f zyu@wraq;Q7P>Z>6?uJvFYu$ zv(aunt$06lmD(-o*C^>%eG-o&E==v{M{y*#KV8nV3^`*dKFNwMHl#)BF$4y<% zE{2@G6n61Qa&mE&2mK(97i05x4af1Q`Iy7UBb_hD;8R-jez?$r&j)tJE1J~6Oj}+nUC|I64KsZ+4|MH-=RH=);yrd7|h#g4`eSrI02{YcaEW7?a91; z7fbqaa@H?eseae}f=vT@l6;*OuT&_HDfzuY*d+v9xzL8>GF+bY>jEe787Y+?{wZ*R z)_3W5emwn#d#Mh(-t<1ET?drBc#F~ie{?=oO7T)N3dS+vHqmY_H~%Di$#KTTOLT;G zU;Fw^4?RP=tvfooZ{l!WZ`7WLKJLwva9K;+T3F+JfOA3Vlg=C4m0&?QMtMv*zSyHH zRoui|Hy@y~Qyxi*hPv@S!md}pUIK|%E>C%mFAjdk=L8=4 zd^WsqsBQH&_#7gxz4@)zq9#rySw^gh<0}GtV%*MwWjc-R@c$ex061)Fw>P`jcQ`^j z!r_8|!%NyxcR|Ys-KUnwuzZv1YU_tbIE6@Ux2X-jeonJ(B^~A1@jc;e(U)l z>xY9{Ke4I*YrRQ7bIRe0muvmmrvAD6RR66=wh7i@r=KsZ(Z*4^pFjVWSu@X{H0`D- zw~QNqeqhYBiPO)!pqod_iTyFf#WN?3y`^~ktZqfRxJQZHIJh6KuS1?@JsuHm34BY8 za2{CG)GJPr;p|e;UHiSIF8y14M6m3E$$d;)aiU6ESB%?`ljF<#k9PlP=aEm48V+}# z)k@R+BmMMw$exSH6oL-@je8`zjH$2D1 zX9(&*I~U(vT2J^|I7WF)$q!NKeq+52{W!jYfadpehxepv9RWDT@nt<=+%GOU!&*Oz z&vbF^t<&P#J;AUiCui0SP0kY=-k46Z`QaGlF(m~eQhYZ4IbXqZ={E9T;12k#%J7K*E=qq)j6I7WF)NlrzQv&x2?oL%BzTkHoOKl2l+ z*5R9#%t!r8u#3?zWp%c;3&$5eT6@0W-s#sDV`P-w^SFXK$s6@cyKk*f`z06fHrn8$ zcyZhYHWcL*N2wy$&E*LfkZ{oq__j;9qO+{+LiY4PS-O6&KH6GNJ8@RHL+dAGJxRZ; z62mTG8*&n^80Ix(PxOUcH10C zfwR*ds6IK)I6s8M?=3xdTmQdEE_2G^Dq!w@Din-%+hH!Q?{m0nz~MUVHN}fY=mkv~ z4wnF&3(Ec8c`Cjx#cmv~&7InP-zBB(e`Y~&@OV1Wqn(n~W4eO7Rp;{lyRv`^^Yf5} zMN8H92JgE1f8<`rxSN-%brMqN>uK=CTJv#sl?9(~skSavzUsT@sD5+G*=6TuZQbQpe4Jf8)!O>mg&!5ROoh|syu`3e_&nY&K1og;cd3DMb>ngUBpfH_0FV>gQLDH5 zjj@#TGJ`Leg6|p&z9Qhu0-}%m-?-V5Z?xgRL<+wC7JQ|^2QSz-9%xgtbfIbe zjKle0&F>TdbiVrZKL}?|Ib0BMZJ^-k!+M&F>-!we3F8Cmx2*Z3oArXG42Ns^yw?6M zy<$Td6!)4S>Mn=N5x7ZDt=h(6@EC`y*tte+@9`B~p#OyTKA|2np2I1E@0#;o{hx~a zGWi-c72jMahy6=n`tIe3D`)s4XTtZu z5-=C^K-xI@GjATG*e+0};4dqjvTSl5PODpXe2v;)FY2^P@2}mPtnKL*^OsTYj(V2r zGN*LiQF5WNj^gWKtsf_64D5;a`ugnN|Dtx)-yR+>blu^-*sy1{4L-9y-Q5p=e}(4b z-1`9u;K1v5C-5pgt@R^52z<>~>p$`0wNKU0tMvEW=sAdzxu1FAl)6#7bzQMUA-(Et z@R420p)9R4RNZY~&UEWp-0%94oHgI9(d9(j2sKhBg!8`sq>jt6p&!{Zot$JZ@*@ht z#u>SOd!Kv$Fl_efR&|v%uIdGC-L3lt*XZM|%M{xj z-xQc9p9CzOd%Xtz8NYG3GQhQh;v*jVB*CM2yHo-W+h3c>zlSry`I}d&_H0q}%`=(c zDglS{$a%|V+?NWMBTiJoGv4&Pcf5(udq?4WmDy0=ukq0L#8)wRu|j!FDbA?h^@!)- zgVJ;Getc*EHu?Pkk~8a4Lry>B)q-jM9mY3I`(2?*iEnTkzA}j~+5|rDLG3--T8VE+ z8oow}&vRK5^m|_GclSzs*QMbr0uJ(fxCwlIp`UA-@&0r{8orps=gP}mKSl6$m-vRJ z;qw6p=~vwZzJTB>l=y}*d|W?K>R+$Umr5S_;TsImz^7k&&7n$hosi_r>6N)%f=Kpu8k@l9_@6dz zPLcS=rs4BkY3Nr3dD(Vc-mITX@NJa%Zc4)!miS^#;ByPUgA(7kG<>eB4E=nN=X8>f znf3DsK6h^;UdE^43rc*|P2dZPc2p$sO-RF6-DvdJ2^)OWU+3f-c2OWN+knfP?GhGp zMkG0l(#TmZ@zpnh&oBJ2L*kp1hR@l@(9a8bPAB=8SwBVaWnXFdeR3MU5{WO;1ipaa z8z=GIoQAJK;&We}xqd;xw@%`ll7_FWOR3%u7TVyWIID%S)PFkqW-h0DiPoR_r0=oN zobgJB@x27I|H4AQtg8(FO-rL+F33i52AUveMDXQFeACnL#U;KhpS4}+{&e(i?f!JE zWsy?Vswm^QjtV(TB{>6W{6FZik?z8Puwq7q+Y6Zj&cUrI=PGt=;S z`WgBaL0;|?xV%}vsNl=ZH{xto8orps=ex$5k78Yx#ruo4e%<`ZOE1M0lkLoN;$}JH z!Vf`7&SFMRj?XXnt~^8I3o-8lQF{-9P82T*8~T~$Ob9tEB{^@gDW_+M_CD-~kIdhJ zc8N1~Avu-)hMe_~m+i~tIlCxe7hKU;qcAL-{FXy{k&uD-`niOD-6j1>Z0Z*l`h8k8 zUe~W^T(bW-IZL4o_WxrSc6yNHtTExta=L|_g_4}JZOR!OudTO^?R;NGI40xFc8QDr zr9raG9GiBTE9AW4gK4^)8%=VOUBX}svI~AgQkIF!bNVSyYjOSUz#j9_0&`*Cj5X`$ z6@K?zZS*g5ZR%Gk{JtP@!VAdfoOn2&u3wHZ-z|r4x|roM@2~skc*ogru;AkY@1pCT zc0LRH7lYEMx9>%V5`q15V5eqRLDKvEoLxGBT-e@^3QX!nJQ0(u98Q7nhB^Uo{P};r zLpT>aqe*#8Ib0pojpNFz|8~UNg6fu6WR05we0ab2%x~{`U%(tK=UC$kp>E_m?*q5a z7j2u|201ya@6n!HYd!zwr-{#TwKdLLr}gufO}RAXb2=Pft>C+A)^~RhUmZNJNqI~; zTws#szyBm|(EYa%j#=UAfe*){j^}<~M`gFev+VS`{3E7 z3f7r!1(G@oP@9E$D_$Ds1`o1 zoq})cXrujwO?;f3-W#;{Nx}nu)W=P)jd*bhzPh^%zLv$w@uKV3&(P0T$m@5rg??GU zhebYJHYiM%X!GoHh4Pqk`YE7aM>scUMfRUmHe%9Gm-8A!&gd{+&M6jhdW4+A*9;63 zUoE_cLwQU&IfEc4KInbZRU5FGsau0dP7YTp`iVEr>>Som4oCKF)_i`Li{OAV*-_I- zICI+V$P?6g!NP}!tMdX6?Dqg6#uZLiw!l0gANK9e3qt+0b~LTU2|t>7XrI+@l=fWg zNxgpCMCIxySnKB#@#%S2YJan>aoZ2BP@hNX_reEoodeh5uur^{a&l%(*5rJs)gfKZ zGB`#UOgWq%Pd~VT>Dj#@}=p3;X*7_BRc6(&j z`TF>9aG^DBAJmP{+uZlkx4PfER$Ai%B0it{^kIE`i2m0a=lNCpoyjSKR?N^9gp5z( z2^+$i+h?R!5X{iXolu|SYJa^g-i5AAb&wW5F7AO9vJ{esZ`aNO+p z*QSrCesjw4MTLI9%>IcxtyaOEC=uUP*?aAt1~U)sbGYW;XnqKk{>Yt9$rlp(U7YvC zSgPNgaut?CdqBsHeEU7!f8K|Z+XIIS10VJ;)5h$Ab#H!SaiabGv)6MDp=#GJR49+B zKCkQFPN9CKb}Zli?y#8G)d~NN-ut8O_u@s#`q6;uTL#}be0-iNOEu(CmUNpgr{9n> za1$@*JPSE%p>5;(%bZE)ZqqrdlI7&=SuO0jCG6Afx$og*oG#}OLr(uVUe2I}oKfJz zYsHnphC?LhxJQ!tI61RH7Z(6VoxkaF!WG!iuNL^QKP&iWRd2$XQ(eCTLqE@WUcWmn z^lOCv1@(LF>~*?+W%AH9??oyx7{ECXF|UUSk6Bd!ZxvR>y)2z$;QHbJ*% z?&HaPy8lKP`ngl|XQdYUDe(Py9H+OJf00G{l~yG4asG>femJlBr2CH{!Ub&TcM$YD z768Bfac2eLl%>ghG#~UWF~0xeE#m!0bzsWLS@wkXy#CnjTfe2U#g8TP;W{90wUdnZ zJ4$TuVgHKT4p<+<_d*H*pF7!FP8t|<;2TK9(_n*-aEgR;1E(rPnty~VmvAU+8i;y| zaCPuqCXzE^Lr%^Qju($m=bvBQw{0%*cHbXLl7afO#Y;8|Y&ULURgfF}-`tggkB2#Y4eXp8#qqRBIpy)p7)ndL~+$EZ0aY-F13=JMN_QpLb$kO z&)`&R9O)MZ4$?0Kx(e}9CY*kia1D$Dt?%?dLIkWbt)G#c?&}P{`)tTbaZTfNNQ~3m z^I-Bg&B^I|Qk&O3`p-}6NzNb~qdcY@F8qLod+T7?-pKLs*rrCQtFrTL-1WcQ9cLiNL8MW6K<}AQ!>DnOSps$yO7`0^=Bl% zRe!b-xN*E0`+n)Kq)))KE=7K*m;6_ffgfVov-S5I8-`l@f&3Q=82*dc;G=P~7OtDr zaTD;48TS3>SPb8z7CdgmT5RO^TnSg00WKin8f@ri$L}P+mERWvH@-Oi)){~5>q|Az zmSvU6?>PlVzZ9@xPa0nXyR_f4aTU)}f-9~2Px5=?OvCS0Hu%Wz1K@fR{q9FR{K>j- zdGcQo;D{$H16-+uLr#uEK1O^sTNdhkaU1%PU81NL=!bO{&9dgR6EFTx#;EmSowV7( zk-eQ{neijwMfz%(=y| zrw?M3&ZkOgUf_dR&J}(udfGa!DL%^|)#5V&T;;%>iieJqe)WJO`KoQmNjN85PZAC} zsoqp6;k*(qXai>_UPunBcqsvHjF;Lw3lb#fcIc}pk155Aa-p%V@4VGoKW_fAu(S5v z$!D`a-9Q{Z(>f9H#iaNwvB5|7%zny<&oGRI#FHwe_^iFnh|dNad?aW6SH|y%m9MfN zpV_b;fc;Adcymjv?MeC-0FLA<1Z*n3=s4jPN;u@C^Qlt8ZI^Iv8#p`hN%C98=Rx4c z_xrz|)AezZGXgP7c}&R{K0VU^=fLdqp8EgM>ab2_QK~>IW%hwLZ znR^WOQ8szwa5<-LQGd^-D-sBaczJP*U$DnzUmLu1-DqjdY!MUz`b?X&FeJO z;s13(q*E@qpM&dXhbsQvEgeqEa=2{3VVmiHVA;)7*z=0DeqOK(uEpG2xksOW7TLi0 z1a8~;-|M)r4V+)#s(&>2+O)4!NM=kq{k#LT=Mo-x%;4K+gKs4G0k6;c9kZ^V%pvDF zK37y*S3G6UX`AG-a-PE}Lccku8qZ7R%vhpW;fes)0t&4e>^(~^E9W`BfWWyARawt?oVL zvT~loEfo4qjK7Y{TIx0z>JnKs;c(@m-99wuf*+{tl5N&F1)j6Qb^8yVxGh1rIvcn$ z;lE>gojs9o>-JgqFCh_U%?F%yrH*^eTFydfM;K>&8wXxaICIL`B_y6B8+K{wbSj@4 zx8@5A+_k?}P9xkx8@Nj0hmS@s(yvztPbnv7RM_*9SLTJOT;T@m{-sv%9p!ENGvT~_ z*D939l;#DV=Z)WU4ntlp!{s?SbD+P*eyO(On@6X(7XHGf&x{Gn_!w!)L&E;vI!|fG*75 z#5JzJUh?<9hX~i{J8N8nXh+YV80t+pbIQr-x=-t`PyX*@eZJ)0W6f7q&`fQAiE}q* z)c)MShvW3t8-|U?5wg(4g)(z;<_I|-8#6M5CGu?Ias}UviMOkK#WrzXz#Rp$ESqV} zKi8SCoSaqPYxDUbw@tYob>TJ+=lN9o-K4prp043Ac#Ok&1@7&6ZBvf7cCJ^PFKO)` z+ZJscpL^m9>bSXN#cQ)rqJukDDpa0Q4(B*W8*i0~t5jV5d7;B_w5}0*b)I_NSpM2P zrFvV_`lWr<+I{;8eJ;Ys9n~$k#X7FtHQMuvc|D7KsGrM(!HPKj8l08t^Q{jKxba*p zvBUIjw^TR}@Zos-?u^TR!ZNhQUod3l_`HC_XC_{Lyy05HbT!F}^{U&9HcCwN??tt| zJty5yg^laY`U{Qg&8&N7DMkrC$I02f#nb9_AT(q_J{==fPU(6?*vemF99^-Is@tyTc z+m0*#Jad)jV zhwJpB*4}5H@e(!*b~{lVO}wS`FSzTj#LEeFYEolJcrvk;75=+6R6GVjlV;5!dg96DC&&xj~U8NR*O zfemn7@y|yeg6CA>cP33XK{Tgdo=f|V=l6FH)#Ee#!x{z4)5hUKAS;eHt@2%sSaagX zWDH_CTyt3Sa>2RM>)*K%OSnyIV5x8o8@1=w{<>@^^b_zq*_)DmkP5dB%Hf1y`s97k z@4|N^Y~q?WZ@Wg9=T#`(K%R&l)#-7$o4T|c(Q zDHp6&{rC4dFF!)K9X4C6tD377v#GM_#_TbZrUeHG99{CG59p;~ym?1j3K zuk4Ce^QmN~Pm}pLd-}z=@=o-KeuOip94-QNBj5I`H|(SG?wB=S9Of?_0B}L|p;rl4 zYy(&DnHDeC_I>jP!Yzbjl*d%J=X=>o*?XED!zt|fl!WB;bGOmtoN?`E8;N7PiI2m1 z1#arpA94v-`FXOO94-oFa6Zv+W9>PFYqWt2f1%;>-&%D(;aoed`PL2A?#oUust?^X!K$EO$O``9my{o#TusN}w0Yb6wqYjfHbb-m}Z|NZ(7;mj## z&)TE3>yAIF=3Iw0CvHvV!a8U^7|1Hp=LMeDMT)t8^FGHnK+Fq{yd=B;`HD<)0<43> zl|nh3FYGzgRbN-cvO&p*94-tv9N$|Uo2NhLI8wT%!a8W)6THZ{jw|}3RKauUHp1ol zjpyW)7p>HWR>{nmar>*sh`n}1G`z6Xe9aFg|;c!>!=;Q8uDt>xtW z5Kd_G>--BRc(5Mad?S+EE{CfZ-yL~n@npRG&^O;&BW5^UOnfh)VE%7)1PV$RJVyF? z6r&yGls8SkeV`wXoAI+h|C9K-{$|LC$LRW@Oz=e>o28V%AC*s)a{Bq8Zd_L@zhO>{ za6uCvhbzg}?o$@NaaASZ%&9&;e3Y$t)@kEHLkc-pDF#}{-PlecJED$82_v^mZ~c7# zsf^Ud=^cmm==xQg^rIVm3GgeeFBLw{^BK(2d_pngbf%CqEXk?s_pxD@&`12ZStV)B z`C$j>g4ZjHS`MJ$%F*)oM!@*JP%Qf*!k{^<+-dSx!uYoK^P zR7bUSn^(?UIFrhj+rUMk55@bir@y_vh;ZhVle77=+V$VtM|bH@<=w9(Uvuhy_{{J_ z?hf7$GLqvf1U_63xnu8Jw-aCXb{WOnB?P!O0663PgHs6i|C1hqjqou3aiY>`Jq<>W zRrDRmaG(l!N8SbJW(>XKIk~KyKgO-?os@F|TZdeh^4_r{6&-hWW;jmH1jGwAgusUH z3W;L}$WD1oIb4B=>&|r#EX5KD6DAeT_pU>|ANO^C!|pN{=6ibJJ0s3v-i=SrQt*3Z zyibqIl*g3A4S=~AwukYn{>rAZ`{r2V+@K#`aP%J3 zb1&gAt&qlCj<4Va?LPB_tKR5MxWZP(+8`d|a0|WK^O!Hsj(<$Jji&yS=4W{?J+9YxXy<%I6vt( z{9OIIzjVl2#bD$4HUbW>9~Nz2r?0nm+H1`hhPtso>(S%I<-{@42CfEhIIlTy!I3Wz z&i%7BUmldf`O=Ly-Z+qOAsaZam=`EVx0y`1bvAH;U$pDgP0J^*BwQ67qdcZuoW-FG zUWgqvvYRev_g}4Xg-A1-qlvwE;RTAY2{<@<}$l#>;b@(XbdeieI z&u5@`{T3FiP~&s*^XKaQMA^_4sw{-%{1*Yc90vvVjQC$T!6#Bi6<7z6Lq zuHzhw{z!YBN`8p6F#Hhs#@Y{rQ=A4aw%Z!V>DQ*~7WIB(@xgiM4tCSyZ1$;&XTd!R z7D^2GkD6j$-ui$yY2*0H;W-xU|8F1H{Z}eyPC1}9#amNd%AWVch>z!b)~X#ct(Ztm~uG3(66!e zx^gP(Z%D?G-y3%r?@g4fnx#QqE-O4(p-9@r>Sb6I(xlQXhIYwsIgtwuk1savwu-E(G1x_YHw7V8foLiwbL@JjoZbAt&~)_}35q&=!q@rz?;+!ru(> zo)0PZqaE=8Z13LDUSIFg=dF|Bx{Bf?g`9s$>&X-^)l$5~H(T42aQ<;doK@Mtkv%mH zwExb{T0gOB?T|<5`0f;bp!1kUAwE&>hhM~Bz-i_^c=6K;9+x+cFD~Nx*8%aJ7{Lck zF@|^!7ZUy1cfE&9#}Zl1lVc?n&I|1U8j#};H(QD|SLge2(9>b-sVQF1-u=P-)XH zF2G@bJ@cnxx~*}TWjMP8g`7j*%uLQIunS&jez@R->kcCl2RObm;KTXZtlWk}nczY~ z&bpIM;Hp)t;!czU4*QjwAD--;313*?&UDzNt?_ZcaaUx8_PV;@TdVjb*rv!+Au%bm5-I^m(~r;-qo2 zN*XuIs_l=ru8GEY8@+9T!pSBd^Ituv?|?zQ2lmPL54pDQklq6aTzggT0sh{Q>r>EY z$aVd?5A8RsPhkO^y-LP$`fUVV@OtILD=Ys5%X#Zfx*?wQbBs6S^lY)#kK=12<^})z z^n;lsTkf&e?XN`4>%yxa*2fjE>AIifER^IdvLPqoA`;HG)mlHA*Wq}8Z2;RjZb{$u z6W^QCCv|Y1vrAX73(gJy*+1`btOK`&HtgbjU+Z@dxmS2q5d3RMVHc+~A9T`ul0ZyK zc8N;yS@wmsT{!&;p#MZ0OuOY3-G93))+#bBhYP=-q2V&ja#_8vIQ(F(|@bQ>E zGG<(3g+lurE&W8}Y(^juz~iTV|SelDnUw(HYD#Ai;)o>k(# z31!{$$ac)#PH`v2l%pzOxkWe3;**EKF4w0ge`+6nKK(LRSu01ox5EgOor zXVfj{Z^H+8fb8k%ZuEnWmz$;g?gU_ErznBHzZs5cF=(9rOFkv^&E}j0-+EMWn z4>YhKIH=2cb328e6UM%mEB~2=oQ|`eRNMRUpFfz?f68@nau$pC8}~e2rr)=aF__oo zoZ3#IelzhZFX!hLa%O{^ZJ^Fz{lv%2JhZR#O*iR`h^8wF7V-VfZmhmjg)b6 zUgs+@_<||)+iAg9AoLr(|L18khn(m9koToF?`a=;b)H;S&T}}|GVQu!(%cCj%Vp&} zhYP_wzb&EAxcu!8$Ytd`hbzBJyYGAVRbz14$8NekXSY*mTyUr8&%U&-_fVHD93GG1Ity;Kpc6e8>+}^X>cKSs?97vC z-X+hIb^YcT`r#PJQGI2hUlr(w^NDVKd+g@$cueQ}yo2t)$ZI@b+=4Fv^E!;PBbQzU z>skE9#aZ3~?fKoOX56c;V-~``8O`B}p&a^e*Q}K{Q2ECHK9Gdva3R3qIM#dO#lWX+ zwI)suw_ET%e5vv_;j#}V%gW)R(2j7OD1X5}I89?W4i|^Iu|J!8;h^ON>i$1#K0lN} z-19jjbzG$lTolS+`x`dHGllq?FS53$(nfpVK7MEX5aHVVYb|Fnyl?0Rz_zmcF>KV$ zcgPwSzGI7m3upH(X@Sj5-GVl74w%HU$E&_hXb(Lq{-L;R(nNtjS z{ObaLcu%F-b8hd(4|jPXtKVz$R!miJ-}9Mv9P=DswRpau*IlP~#WLJR*MH^G^F4t& zeteMe9A90Fht%gdOO)OB$Ytd`hpXMG-FI5?%D;O5B4aSm;i8})_PZlbdVQg}JnfTy z2}wWa_mdSmpDN|}Y6ah}G<+P+w@6zjdh)mT@&2?Ua$<7ZLm5cU@HFE(Jo;|a{15|s zqFr8Uy#W$<4&tQ4`8YXU@LfObSh~$=z6@pJHj=YZmb0nrXTmN$JIqz>QfX7p2&@HS zyFK~&@BT*pYE5fyC^x6ycJW--=nwwx3njeGP4{k7;p)ZnJ9%K9n7}tqYdOwyEC$@g2J2pR)EMuD~W=y?DNE z=ciNa5tnO|Z>PX@?i7V)0nbC*IM_Wd3AXZGA$4EiO+ zUGQgSxFsT9cJ;~yyYSl`_kYkV-_gD|*54=otTPDvtsTYQ%9Yo6dw%(>^DaCOPDVf9 zv#&~@mvDY>0DI#2cl_IJUVy|4e}`=x&b3MVJ=1$?_5=aoJq!c~I9wydC;H*6Ju6{4 z+05ZT&R#!Q3FUB|a%Y!La2?Rh5wICA`$W84^6EPq5Z7pvFWg@H?$$4l%)E!w4Ue(< ziShlqU$^##B3>+K-Z)&LXh)r5F6ck)C(;qS1Gvr8u-=ZnIBI~yKQ%s>uT+ER;`v(MJzWxLII@d&=V zw`uVbgL>@ng~1Okpx{$)wjG0!5x2?b7W0Dh*X66YuE!tFS04MISsSRkbaVUO$AA5- z^D)@ZhxU$oV|#xb_HpdReXI7KBlup~3b(5OanPomxdL}dapXzF1vxoCGsy}2Npixz zT{)|TJvRuu>|pq^zR>vQZqe*=3hc{#?P1?8U!l-%|IlSepnfe+INT3tU-MQZaMMpb zDvY=s2A8$dBq!`A$qD;*mK^&hXv1y=zg<66QL9!;ORf8vDUf!xzH!Q8UL9o48tt>*jzv_o=#!uB)oSo`@^x zye=bLRN#hYh^rUl%2mBSzn$z?vn)B*IJ*RdT|V<{g?Q1ngRPR=5{JtZ{qE5n4xNtn zENY#M!J0T+j(9HNkJa^Fjm_bxYnzPaa0>9@#3=sxd+K#golXBK@O%OK{lQm0*PkmX zF!iAv-&`@iPn{Qnbq%=wW7_TiBkg+Ns~Z3RtwuxXVrgpC?VpxXLw}YQH;P5LC{0$K z(x3IU>e8yAa#Lw2Mx*JUi&ewQ(4R%P2#eB<#jv=DhG_K1B>X;~^E{t(o_qS-&e?v? z>$N@4IeXsE`}61df1Yzj>$t=$bG=zvHBBSEV#W0Q);Cq)0(+-vDPJzI#Sx!>q{$cl z+MbWoFXs~R9B9UK2jMwa16Mv=Tjk|&K6xHx(cZjel)tBCj)v`852v)&LULV;I?B6I z(ZjRNOG7`!o?1QiD*=6Q-n#I;N8UvJ${p&LBJ1aZU;gVsl6hK0+s4rE`*RKbf-(HQ zNYRh8XBOBK>*vL5tBv}ZXR#-Xi!agl`5G4baJ>mHp+w7wvU9j%I4_0s$R6)KY51?o z!bg56SN!1phW8)xP~iBIK(4bP!z0h%Ie_wEoT|uc@G12=^;>&B!j<~X_TZ`mF8($X zR~~WB7rM*D`5o|acJa!3cHH@*%9r}RgtFgxsUzVbu&jBC#Aqe9)K2P<5ewE+b^AS$9 z^A7o5!OF|_XVd)>OFe5R{}58_h@6x^R?P90%KCD{MW0W=9%!qju3%X(Vb^~KLyUb< zo!@&|(n6zlj=qN?P6+u*zdN9f+tmwlY9PP07}{=n-;+!%9w6_W3x zw-(JszI29!wD#vxzoUa_w~wNFFXHx*%ph4U&;bbYx2uR(|eSzm_AYioTW z|7nWwcqdWA_vsbiDIeTi7uW8LZc)r=d zJCIrbaX7EE=hnubwMI|XSZs*`a5%r@+wj`uGmuYn$d?X$xKQcv>E(m4XN?y^CE5*!}orN==QJ+uR(Zf4;Av-+8#LlvSfWZ zG`gZK@)a_C94;dJvo&*)8(3?{?e%)u&b- zy5{5z%XZYFnGfa@4ZPJ3?NSMR_}t>>&(<3KF7Z%&icAdc_Lx@w(s&IoBb!Am|HMX| zoEm&Xs|nFYu7yDtZqE1>pGHhedxqcFa5HBVUF? zzI@ov!u90W`JdxdNDoPg(Xw)UDZq#QOZ(h}pO7!dAzv1>2ek7SyX*GeXQ_PN_~qi` zhMYqk$mxgg$)TM0jCJ3Ka+W)kGXT%4@Ep>a|NYwrB0co9taUiM_@y5nEY!chj4p&P3;Qi+N=uY@brG9_)I>n3jOmfIq z27J&ETn7{D_Ixu8d{{qEe`$0Y^7$R|g{6MIt~l)#v_SGj(RCViFX#~ya<}Bz%d}%yma)J^2z~ z&5C}w0B*uj0Q?Uj>}Y3)fa^4(C52`iZvpZ`Q}Z z!%q2@i09hcSI>P*JRL2Z9G@H38R++W68~6?`gL=-?idI8u$~S0?zfi^S9|$tjd&@h z{R!+Z(T47Z;=6ag{VfMTC+NaW;0K)d{QB!BJy5?Umbor6P`%Dl_Aztoxxbqpd{JNb-*)iy3gpumJ{&*v zu)Kvl`lp5Odb_vOPed8`EQiBIB%kX+^LwLKP7dcfD&~Wy zH_P}1`8qn}D}_3R?V-!wrr2M*c3A3IEIB>Ehj#hx3D>8{m+6qN8p_A|SMflqvAj{y?S?X8$hB~CxO{o;DYW^)8q_cDl4ve0huT9(*{7|o=Xp#Il#l)R zS7*O<6#3Fl!si)fj<>v)&XSCTt&Yc2jeE;66ct9srjpZc1Z#`v7a74btbfT5yGE6 zp-~!RPCp;m1?%;C&oz%x-bI6=#|RcD>*pgKAL(o0V%Q~F`TrK$F?;>UE`G%>-oNc} zoSezhE>|3S1BWs_Y>OdhL^J&mUr)Y(tY@zkH!mT+d*-nrc9&k8Ny%Ak2&t^AHz`SEF*2YyJeSTX0n zCR;?kej@VnlZ4wB!=BsVTUYq}C*oIyp-ygKNYtJo#$KYP1ya*mVrdg`(749n-n_HKu+>QSh1(um7@_)teCTB z7K{(40^qXuHVhz~$MTK<@zpAR4>;g!CJQWsy!8I9w_*L{%#(gUb>EORBxgUVMI9EMTp;P0G0Q~ng=^ze!`JM==}S9uIMgU8J0{qgm* zOL38?XYIzE`3Lb~ymjRgjjlO4hst{W&wU4BUM@nhgL>@){czp1?5dQNgiEr#13~qr zSn)%t1N{h>95DTt@xua*cw)tzenHuv-SSO|an8dZLr&Md3ST4p`jRXKDIb@m<^C^A zm#CGZ$f+rE);f@r!6&~GU$$l5%Ha-!oQUf( zyWNw7TVy$>N_Htz)UqE!a)uN+E9<$> z;2A0GdDhH9&|Ng}7J;3Jmts!NV1oFbz>&&xKu&lb;1E{@`P@)&qoPf3BCggU&IfYh ze5m)&!R{p2hH$j3G_E90Hpdkoq$z)_m~f@1kt7l^%0^9b1e2!E@Hv4VQLw zjoywn9Nx7eibT0E_JtR>&?;ZOPs2ZX&Isr+rqyuw!{!wyXBhr}2kzCc{c^gJ)5Ktk z{LmTFxHqJi1HS_BLu=Q6NDdWLe&JM!=#HLsfHaN#k6FY~YQ9yPC;=5PtgqJP=n|4v-evw_2aKe%e?c`O;+q>0p`pWuISHxu>`$T$`T?{jiy0UsPlaIL-do9km?Ih=o* z_}=#3qNzXE1s9R^GiTDjed~mS{;V|sJOdkiQWu=7x%j`wosaLX6W@HW3+`**{ma#V z)`c%9{eJKKrvKIjw^jQ64%f1>y5RiKUt>S`Wo7cav2eyb zW$W$zyV;E}M}>te7OqCh*(hlbP7m~ud_lBbuwGz@PYf9QrdiE-zl)sWHz#Mdt3;P` z(|rM4H@XH|xDd(VG{}ej%Y{ud(?#jLLQvIjGA<782Jh;7%Yp!l|nvj z4?n#AKn~`?5Z5hQRu1QZJb0cV@=qb`o5J&V3kJ*Ka2b#f=Pw7^PdJWwFyvdX9IgcN z;Pdy-pZ{kQmRxSZU^yIaALK**o_K6z56puh=|X$`+}DbAoIlP7?H#_uW5HlK9N$pL zhxM#uNecKughduChbx9W==W!SZwftM1J^bS220{_5y*%7X}?$bF%O2s?)Lg+Lmq6f z=bzoh*w-&|fD1vM7J%C_WwDWad)y6J&Ou;gxVO?ZkqTsq`y2^q$2+qIhV1uR$&w*vBDec62KLv4_+%!0wP zI9vtf!*+XK!boEtsa+Q>D~Btbxkc*;xE2|mhGE$l%EmV)1DSae8|{Z}XPU zy5R6Dt$VbNoSZe1?=Q($=#Z~g;(nO8OP6zlLtK1V>?^)L`&%7X;LtAJ;CV52WMlHC zLcavx?RAKA10S}BoFLx>v_}9pYd$rSG@CGflLI zYKL-qC9c7Ify;HsSN)ARclh9gOJ-7ivBnLoH{d!qOYC1S-FQgX&(qRbdq|gZx_%M3 zQipQ-BrfNau+F!`Aubi_3(koP|5y49)|YCBxD3g6ZdlaoxB<@mt^p3`m;IXc{|fm$ z4sijnC)Ur%%)d3nWjMrT0UzQTt`oQ%hko!&IbT`+=1;)q&3DLG4ChhMp7&1vb~(yf z;t*F3`EWj1-M_)z5a}VaWR)h9dc@VU4U%v29fEJ4Lq3125}ohMekNb31HOUsJj&Xa z8+Sqdjzc-BjF{%+%$4@+`NNujDSy%x(RBvreHbd0b2F9oJU5ds`L#{pji^m7AX@plD_u;lQP7d66D%<=7jc8lZmcc%{gn)2;)z;|5om44pn8p2s) zj?XXscXOjF*Q1<0{XPv za8b0Z94@Z&T7AE6O2ISVq94-Wn(!2JIL}nEPc(ef2WgaV$A!^Y>OVurM;Omn{5|To zZtK9#=cn^oca$6Fvz~za z80^kx#f=p0FF9j0ZiDKf^sH#RaP|xj6W_boG3nzA2v;=P-hU-Wp3(hRGNcLgyCNhz z*e~!++@wFJJifNgW$5>!R?#wINo3E;lpHO!xA0qHpZfW)e7BfqU4N4Qt8Vo}O1F*r zIXTz-$%Y@Kimu}Q&l)3{G5&2*#=i^r@h{Clq1Gpco)t^<@!_=QQ-7qt`rsa=G3IdY zTg3UZaEH5wQr`Hs(Kh99wa_2nbM(Y9eGJL=9kcJx!q88ky*?l^8T*yKkmK`B7WMPp z+(fMEddP!&GO0%#u2POidnR3bK+UVBt^V^$|D|sqZ1|7LR{cl!)Upy`UV!7@rUtS3 zI9x>bpH)9S^toD|nx=YPeTiAGYwKCBt0mtV=ROmYkCW3Q^-FIQTR*EkebS!Uiajw8 z20MG!NI7@+t*n!rwG#K#v5)J7b3uE@`O*!^b>pj%Vr8kOX5fxc_?bw}2m3E9}PSHN`?2rf8Wywp#dx3^AqiGNMZvp$^l#AYiGU0eMg zUihls56<6Vwxc+i+0O3?z;`<8;5}_4m5*`WM`jE{6)K0sL7>~f=DQt_Ckc9hk} zY)6%lw&t^5b9~)^4~a&m{It}XpRPGvlS|j?{q+~A6QH|*?+n2;<)@g#Wy*bqb_+Yg zJlPD}9yR+ys~-Zg{S_;Iz`X+uc78~N`hq^|)yEjETw8aTKEN`_o@IRl#(0~2Y5m4q zkF1}KK3-X;_K+(5aCF{;yHF+!hb?k)_Dq)RxOaBejW1cs`F0&~Vem6fu$El#-|gu4 z1B~CT{tHU~)hPbMJ_>`K|GXe)BgnU|j{je6AlMVvRl8d~{S5MOfwO0pte<`Se_q95 z@E(WrN&jt)e=+8B84i~Y`e9ve@Mqn=3zrFe*uQl7dSf?~34`yG=z2}-0RJ22dzhjA z_3J0HB;Oa=KaUV>F4wl*(R`eKKB-@ccIMB7v&I}Q1oL7%|1xaEyDwAziq_G642R2+ z`%=#>ZS^7HtTE2}Fy#L#>=JA^UGt>Xuf1o0emGw`^6>qi>4n0tJc}PVIsJL!{UhH) zu0Dj@FxKn?@g9fEk@dQ2-w~@zcj=FE>Fr?d0`GM9bAVU;PL^7 z{Y&+bBLhfIYs|HWaw+GUmd*QPOLPAjts9m>bEttW)@tRl9fU5cUq4s~a^gH|K%|3J zJmZ>^Gbr_2`GL9LI?f_1hpPbnaD4x`;xl7ks>}hdSn_T7_1;4y*udIo+tB<48w}bW z^}-PKy##45tP2!4IZGwq-vj?0K>4gOhl@!4cKO>}L-}V}Si>|NU*iACx~K$?W6t9)}Ca z{hsPwcjXe!8gsZ1=!YwS-h1=Tqx=PbMf;t@9ubGQibHG_=4?84EM zzr?b?)Lj0d%qz~pd#(&&ye~`n?g0r6Z zJm;#WU%`3>zI#5QM03Jd2srfn7b9Q$i}Huz9;GoxyJ2u&Wqwzs2GaV?llSEGNYEBP!5Ol0uJYi{|g^_1aX;gZKZb7Pk4`r{csh_@s&!x!A%n%MZO&j zABU@kdukhjFgWr<_-fM+sRQdbK9tJ$ftp=5 z_D9tg`3f&5XGp%+li&Bfs|Z)FVDO$3Ka^c3>W|uAJHcffJ<)$OkF4%xJ})j!x38bH z?x=>m^u3_)_4YXGC$?U`R>%3l2U$bxal}`1qj)c}d~lAI0Y7BNSTWh95oEy4>fq_( zJFM=Uue@n+jpMH2s{mZcVBDh{5SIcL%eXbz%IF7&`l9P7)idv=2MoKUUQ>5DL!-s} z{WY29`~9MJz&^ux^ZkBfCulZ&|4jPLyEa=>#5R(b4KtFa&gLyw2=v49-YdHT+K~wR zZsGMS2A#<7nghRE{Sbn0I-~$aaklw ztRH&4*y1}ZgTrlud^pfvbJ4}+mPsa& zZzOxBIA{-?oIP(8{owZRzJ8Nr%Y%EA#+bup-6ZUiH}{ugly^Sdqcq0UZX+#4yDbEt z7v93_r{YLI-yl;z>c7-{)-)%lr@46Fe(bg1TuJ#eCr6Kg9L@{4)&R)=_NV=XYce!i zKUzQZgt;8qzee`6gyCY2udwH4tpjB4)Z?R12{X{b$Kk4niE;Yo{>d;8F@qQG(-rw) zoLBh4+b^Ky!VmpDR!sV3EBc`iW96s&oSbpcCtwGWb9Emys~*xU{RE9GHNDMoCH@9` zK9Vy}kuwqMj--hh(YnUfSMYg(E8l0&N8?I*AAyV92;<7;2W#yVGIHmU2RA0*fRO-te_VzUT-MK9^qkfg~{u?ojB{coO!04 zo*4Cdw2hpe_r$!X*}5NhQTf)GlQT49lYU-m;D%!tQ~qvKqwUGzwt;@Q;g*ovZvlEL z0@sA6n8Rgf2wby8z1ma05Zt3Q#vHCn;;y>?N&`3KR(qWG$!5(1Wj1cHq7#;lVZH<0 zRu~_UsQQJ)ItG7LjIie`FIcC)*V=3TS#Vxagn}jOG)iO4=@*fFNgH15PkEc%X3v)l zd9a`Fcjg@rV#xz7m{@$8oF`YE-*gM{VZ2XS>ri_yPBq)R*TK4j(=RO7{g<} zQ<}pK0UYixy_mfohea>tRbvj90{+AK^QF^negrL^1?8w1OmnzY`TXHyPnV@?{`m@? z!<9;V&g@ilt%_6A94=Yf^ZjS)hU+Q)KJw!pLE>-^iq_E>$3iVM_gFC>h-C2df?Jdc zg@Jq9#QARJal;v$cV4Cz*e>P~+K2pnLOs=D@V#U5g<|k!D16ipdXJjldkXL7`N&2X z8+`AYd}X)s`rWGVasEpOo8vzFcI~3RSfj>Se1Lo$E-3q#i*6|F0Xe(@hd9?KVt@CU zoq3O9*%VeNc#dzJtS>(-K8V|{Y~XP5lCS2T-3wR{+~ja>z~Q>0^7?hga~Uh1!+8LQ z&sxF_m+_*}wGscGu%7hnnW(^tgl{4yU6% z`M}|30pID6y=Ktt=BQr^;|C6xF8w#~{@+IMZ07&xN}n(0J>{cvH2-Mc4{8~-PEEaE z;5>j!)a-GFA6{#r<&G5jGXSfWP3a+u9}L_Fu&*d_$VqwCcqE5=-Q+_Z)%=vcPQh{Z z^vinI^Y@SRdRC;o_dsPBa&9&Gs-?V?hvMsP_|jqAJOwge-e5pO^m~Zm z^5w8SjKa|V)QllGoF2VY8JmtiGki!L~|2DRNuodEb7dgX~NZdKy+QW7<%m*Fz zOJx%G@JrXltS^S&4~uyS&Lybbt3I%%p`qx{tZ1Let%>IruFRdrJ`v`@pziB)b{Vo& ztf#BW=dKY5*k^BM{~SG~FiX1-0PWo$-AOoqT!BVuj5)s23h_Sk*I%qkSM#drWV%?H zrMaKV((p3nX%W+(xcCISjFEO3Y1)Nws$GaL0(|8w1W)2Bdp^P?Ka-`U2St7j(!>!f z=IpZd_a*v1L-_uj&j{!KV@Xt59Ij%^Cd~tYqvwR*BwX?#dz|)bL;ZU?746?JwsAEF zxI)N-_4c~E9$80x-ow#+RABn0x9QJUD$iV~6&Kmth3x5@2>ZK>MStXVupddd{P8(j z^*Dh;PLeNHY^^WeOGJHP-+NJ>|8ageobi}`E@9B1&t}Bp<8U6>k8B2jn~r>VZC!9F zfWtlFdwzcKKwWSjgJ#B1OdO|!?1ll$e%5A~cv zeAbxb+XiLhf+O7Ud}CiYFDIJs1poDv?R|IC0ZD+xc?AV^zntTX%xR#{Lta|B=U>8D zV-8mYGU0kM_p+Biq5QQLIXRqPJ`YGue|ZDptTBh%0c{Qa;QhB=e#kKaMqZ^)k<8~{b#&y%}>`HZr1nWdjgpg2N~zH z4m*%Dwqd5dU1ov*aJ}-!?ACi!4mHj3 zX>-K?$y%py&PN+4eY2zgcb8>ihGr?3#TS)~G_bM)}oX?U#a0#QU(`ck6!sWh>YY_c24m zKN+ZUbenD3)XJ9+bxiN1OPGGpZX5$XHxS+U_?&FwTcL2_J@Q|ze141f{FCkNN#k@e zJ=t+udB2$a9sxe`d)^d#IjwvFhx39HaM1S950Pzk_j|&@ z65S8s)(2s|VulTKOuuvWGaoo{KC!3fGvf(k$NNkSmPG#ZDbImY9JF_IljdEMZfFndd{nq*9Z3~jWLI-k$#^waAtt=9-e29 z%ghw>>j&@uW;)^W9LQPvkobR!Q~%l-B%C#-@m-VkEZAtSR_vfXP`iylUTU|Av+Ua+ z;XKpe|1HV-oDXTMT-IxA{dCLv=_)_@`4`R)Rp~vnu0Zg`)3+HX{{~vdYLc^DkrQoW zmCJf!dyVs%i8Joe4O9Cz=`AEeNVo9sZIpHR{R;g*T>nZSTrFi_7c!nU2?Hb%6gsXpxsjaEN?v8n3vP|ax$B8`sLM#=Z!l8kHmcbXSHWU z)@!z3vax4=qWE4=^|P6qV#&(MS+Y>{FZunSe3Eec;2xzh=5VQb;+*(vk4>6NdHryY z(ioFH^R6-b>*V|F>nFz-fwHl@iGMwvN*u>6d>k(OL2*9v!p2*kC0r5Qqcp}=KllSD zsn<61&-t)U#ra^nK9ye*N1A1RP5q}QUeq&Ob7VQF*PMQ}u+QEBh`zq}CqMD!I@ov1 zhx&JnAAg&CqRSc#%oNKGt$DC2#@G5J5y5?}&E#f_f3QvEl+zEkTm(NT7X?ng%)KRgJL>;#cVoW* z^OxLVVhQITyi)J4HRxM%7uxGb{gTUX_Dk^&=AYD3isd{xxfu5Q9I|)sQ6k-A&#e5T6P^G@0Bvr)50;4Fm0KQ;a^}MGsum#BNB-yGoSYd-m3IWlE~y|VjeEX%_Iz}nAqeM!=)8p= z$}m~X)HR0p%lmeYq7u7VCHScxdhTm zUH{QNqaaLVi1*IYI&OO+>b`P8ey;_c$nV%!C|TGf*~JIvg2?YFG4va%*oBo7o>RiX z5LZU0tM{m6e&yMy)h=%NoYHO`KytbsFy(Z^*rM`K`Zh&Q>d!o~f5ANIF>r*(_yjqn z|JZehQqMTMj=)rHdi=1}TH z|9PbU*maJL|MDA(_bomicRp>|m_#x~^~{wf_OtLdjY}tFR&H?hrK6mmh0^x^Kv_eU zGrWdfK7seEWWSpnV_uM^*oEp#HTVJROV-0VTKXd1p2UqYCub1sf^yuG+2m6-ubQ^j z7frVJ`uJg7k@!C<r``844LLuC^QN*L_#Wcryiy_L{1<{T7t6c%B>v-Y zJx7V>+N0jO|2?c3Nr6HQiirxz@~ReOqyEM1pq?4}ebz!Nmh+DksH0JZ%ZtmEdTrps zrd_aZbGU&vb}5zhdR86nl9wRP4?cTn&^5$6)Kd^81JxIrzj&qJ?Y_rp=vQglCHdP4 zQDqb70M0JEO}pgB7$0u8v5Ob_dX!^!9qkf&Tl_z;8P9EPrpO5vngW zOL+fL85mQ)8+_DUuLK<6xOyFuexFlE{ffcID97a&WE%UX+3im5cc1k84&`|O_8%D3 z`JmzVuS~z=98}L}`87!KJEz}J7*}v@c4KJbaD83u@VszX+U35J*oFGNh}?I>XDih) zJFoZ~B#a=vv+oG#}ghjI>tb7Xh`>6X=3&Lf+Y z?kmwKjWNfk$@+5ponIcp90RXfsU23{;fsZf`&)c};_#V`+Y(1+ZnRA~zHHz_zwa48 zy9@HgcP`OtI@!ya;uGK9x^Ab>n4iU+RiF_!#vEU=l+*olr$;Dn-hO+&Tq)<#LN9b% z@Et6$OWZk2H7WyRj&HuSXA8fuXYSQ2H81?w;Uc$)|M$7;$Xq-wpodD>^OZ?G;`mlb zIdf*^==RJ=U#WTE#}1bY_Qdww=fx&Q)_o4_88}D$AGlN9i^mZ#tenxodz_rbQqEw3 z`+Uq%0x~9EVDAUlaAB7lkD7Mb@rOMwB;V_~=E>LQAYT&fV)4Cn}GcpVAy(jy!+ee#z^A zhyTY8`?i#yV&Y4@Y@tT;fp9_n_Ipalnynfy%atyvwNRvFVVotyG z8Dbx$@ppUo5l(w1n$J3qbR~&(xVK-1vA=ZeKM~aTJ2*bqjbh$9uhV%n1#uNx_{g4~ zCr$nGAx-kdiaEYaxgXNK)%3lwa8~`?QoqDBQ@_6*>Zc7C&k_FVux~i=Wjq&cPtq@S zsi|Kvq$z)_nA6V({U?4u^72zI`jc?k=M-p^#+btehKv4eOGQmJ<;}OqX|;<-+9ge~ z%W;Qx$&!8;G^*N|w-PVKWS59y7hj>hU957ZNI5k{&VL-rS+rWThYo97z++B$FA}av zK8i`s5XeUDJ>@BTIXOQB!4KHb(*_O2X0M0Dl4wq=eqO2Hd_}*19qLyF`rvyEpN#z$ zB6wf>B>DwGC(_TotbY0>tP$U-*|=&qOrzobVz?Gsn!m03`J{fuihfeP|LppgAy7Wf zgF8Lz`<58oYoj^Ie*w^m^usZU^2drf|AoMRZ2;iC;uIh1m*qe|P3o7g{9hX4w9{`s zl-~j}59s&jPskT!_((r(xv8I4&+#Y%`eFSXSTp@rt3!}$s4yQr?i38EucfR}w@eO&%#_4v+ z13sT+f0y=YE9G;iyaVu_fP?3^9N$36*V;2d=gWCyrB-F(Yc9pC`9kiS?uF;7U-J5? z8gYC+$+zj=^CqAL%7HH*e(Z27pijW(M}241v{Um|D18OTmnr#j)(O6G!yec6Ip8aU za&cXJ`m)Bw#Mh+QUe4Oz#QXOB?ig%mdf_N{Hz}r5MO#yG!Es#kkzz6OMFf2pXA9{{DuF`*~J5LV*j#I;j6LmQF}NH zeE1x}^A>Q11TW7d?vkA8XBKF|V2*}&b*%Vv%-@`xA@E-_K)iMA;hqGH|9-tjX^g3# zKLgUJ6Rqpi=MN-DJOX4OInz!DIo}a_mAz}PA17z6^xuwz9uH9YP5MUrkHZCiYpB5n zpQ~}?)hxo5f!!#LF^6;ADC*e_aX%XMGwgt`YWNm?|14Nd#y<#Tg1F0Xoz zv!@r%8skpS#qVs3`5j2BetxN+=f)e2^(NIXcK`a81dZOS@~`IQe0i8DDJN&S?B_!( z4=hFh4S5Xa&G2KQ`1%r*@25W5E>fZ9Rnr__T$-pa$Hx4s^KAvLEDImDPd$K6^t`d` ztm&G(8#5w%o~+%*-y!TocE!RtIU~|8ZxyyI!W`osU#WG2AC=sgzwB>e_`$b^_rohT zemEfczWPt_l>t}4!pF(!X)X5kn_qYPFRE;6n#0vfzQg5$ugQ{?T7`wr(68FmFJ&#S z->WwI#l0z>lgzzP@OdvWA+*ax5Da{iq+T0b9_yIxPlHEsN97J5j6~FKbnRL#ZCzt^!Ra^@zij$oC>o zKeI8c|M+0Fi@S}mOM~2#p9eGi{*zg+t7Gh&Zer{b23wF_yf5(fR3+y0^EDOcU&8T^ zDGVygoQII#JyO5=oR``P;~#FkyuI%GO7>TdV(4q<-}|$KsXtOzOPr6VxyMfoLw|C;jq4C(_SVQa}B?P(IEldR+Gn z3|9?Yr3{}{Kd;o!?mP-tUxIO)^m*&S2Nr~pFK%IM{fa>+(l2pc{q%Fg{0!$WL;L+w z1AN}NX$2ZwMg>mJZs6nQkn8>(SuQ@fzwZeva#J(xB13c8K=&B zN<&@>q+b?{L!=*$N%Z$vF~=7MK3u;y?s=2(-ix>N3M;4(+9B$Dof^X!yu#qxXs|uRTrgNuFG(l{;t;9ii+N zK=j60BO=6?>3}aN`Mz2&_=W;s68umZ7;|#wO1|@E_5FeJmO9`ok$hb%$4thO{lHc1 zfUmk?fj<5{`QM@ri1Rcm(1@2}YVR4cy(e$Z(R^bTo{*37Q_Sg?0_`2koAV@&5`3`M z7fr5@>NDP!CgXVou7 z>Q|rk9+CQuio3&0e2K3`+mrMw1f58~Ebt}ej}>$J^@OrNAq4+^QvhM7nc3R-^Giou;ikp zE46I+vBTv_yDYzB6L!CP2wCjH@l{E_z0Y)o=ag_R0l2Ch@Rh$W{IDWD@-y+dKCqY5 zd!Mk&jOV+4X5cIdPR_7A@7811Xy}+4xYAa@c}4h9p&V}9RRwzcTl8zvcFH?skiGx> zpbPrFw9Ty-5w6&xAJuFBYi55Nfi&fh6?1ZKgR=3t;qG3)zC^g=7Cvje4p6^zPu=^a z0@&|~2ciK>)(#{-YfSq2UN`k~)lc1? zcYc!cZiRc4#+bvo-V*z}FTSzv7R-_U6s(is#|~EsW#jtjSjD5p`pEsEJ+6u5J8R}g z&>rADec&4BfX^@I6D^C)bGWLEnCA3L1U_7k#a%f7rXvkpO_sraxdXlxpbP3ZV~n{T zYx0r3ejO#>eci8KgM1qBCBqLCWdu%6*HrO+hRLnFjiHPK9q>h7OpBUq1BJ84mhu_c!9aaO?9XFGU@=K>boRtTAc5nIEd3ewjOjer*@zO(d=z zaF5a$Tl*!qobNWcx98p0O2zhK1H|;3!l|49%+~Q%p-%%#rxrRmVOo?zH$p6=@(J-^Sx6) z{q{lGSg)V)&o}1fNgqes)2d&J)UQ7C$YMDk{GfLW?4H;_`h`Fzs@GZX)=$4}pbO3? zf~Wp<1(8K;^z%yn>a$;-ex0b-H+?%7kM-%H0`AGA9&zxDCA(msrk2g6IlgYY#eQV}gO?cdo>~hZhud&{f&Tm<<+ln$&iEVb^{f3$%p?1i zetJI17@A^_^S&d_m2|r{E=ai2<{@F zefUh|udV|w;{$X4kq>F3;1~(2XY?GlhQ`}jCm(M~&T@q>wY=_pu6AO-$8H=WzLd}5 z|BT4@A+sPILoMSr;rt*Q&C81GA*Wl)X*V7bUqs1j}cs}x?!5LOE%=g=b~>U{d5iF@a8c%tDGVE-HQ6iStR+Mo!xdM z@`V^aPR_zh*6Q<+p~FsDM|xFW5bZw>w*&e!9A`e;m%5m6)|kUpO5By(mF1yt>Hg5p1sbI>ZYM8lfrs=$PI)_KM1CI(Ij~RRzLQA1ed>1-sr_YvJ*htDeK}F% zh*q7Xp1C@RdZx~MsIJ?+2UZ6E9}o488`ygl@s>kfpftwx03~Iq`8}3&2Yw*^5(`ZI zQlJi~WmCFH(U01D_*1jJ*Erx~{SNH`eNt94KbyD?z*$^MV@&D>Kb*T% z#^{%zC?jz8bbl(&&p%L*yp%F_+ZtUzljR?LFy>J`seYet?^FiH)c$BbQ7Y#X4bILq z-p`@@cKv*Lh8W+An?7tjza=ciRIhW-HUDqCYkEMVzsHKLa;Ee;$^V&DzRO5_iI! z-ZX$IyM>FUY7n`6Z?zhLF$Rt=5!w-A zulnhGf{e?9rqC12C8-ua983M_n1?CE}DriOSs zd-^0__g;4_B)%OMKC)-r3ugV)>iNEXA+$f7sto_4)=zwCZ}IkwfDOr>wK2Y5KxJUe z`7cB2m-ol6OVzw;+KD}rXXk2&v9o89>|b8`w4L!BXrDztqaQqMexIT88@_%P&M_tB z^z+GiP+TY2Whtt+3%Mmwbn`nnA=j?y>0i zJ~_V!zz;b7-G22*82=i$^4>m)AO1Au%#E?$TxBDtAKC-X=fA$<-FHb&YwV<+mHsL0 zq}DT<19-e*pRaI#mKI-~rCH0jUUPQI1G`|q`p&}x4F45bY-7}yTGK8W-}C+pDt4jy zXP&aJ5&sj9Q)T7kOx47E;*(cyUZUnz(;TkgZLweX?2os?^sIra^7E7UePLVUJ2kF- zyqwP}`f+>}P(N{gv7&PIFp@3nooG%Dx1z0hZ$9E%y^CyzzgVelP<+AR%GS@A&h2`jy(~7nJ_%lruLO?b+>6^c)0fi7x`? zfp9KYqA?zo$I$N;8#zm4`}=79!WU4^!_4?c?XOm8f0Z%%C6WR*b%*H}M8P&Xqn z`cD;S=-0s1uQgQ6eFxefTp-~JdlmamD~&u7K(!%l|pxWb1zs%3L&L%)Wme)ugq zF7GCVkJ`Hr@=|+uJ6Pusu2#Y2_7MAF94Fm#(*EfGoTQI5_d^W*8kzc)#`u3BWr}{} zKkskr4F9Wj26#ck>zGVE)*E7OnZ18zZ{Q`3Sqvpf( zZiUZ@AE;d_<}}8!j9(TSa=K&isrIL^o zVBB1ixjKF!T&KYGxa8Zs4Mwbv&y#=O0dtyB9nBL4M=iM1W=G>rhifc14a!wcNUM3cG{;vd_ZexpJ#1BWZE$Cw%e=@(p45I9wLw!}kL&8JpV`Wx`PL zW3;SByN$HasGUdt;M@BTN(1Eh<^$hZz;WFJZI7dzL5FgNr5`T6Y-=~fbz}N7j&CcJ zkA4VjUI`Jb!x=t9zwb=_LWg+$ezei=FqDt$)OYut9)d^@)nlXQXq=o?Qok+J?s$}N z;BfBs;++2-%^yic{nFP)W3Vhkzq1kz|6yGt9yQ)?qhA2ZNBxF29oq`|1{R;l z$H`eO_j^{fJo9IjPfc^USx`RK&;1>Cf?eQwF+9^yF_<>=JKNOH6{CLsWTRgV$cYX8 zuUmExu=3C~wlfSVGt6@Ww2l{l;eT`brF0bgb(gHm05ux8A~n%<1xqsYYiEv|+ELzr zpUyG4IX<7{`*F)8oiBx%ms7u#I#cN9=`vlT{Xnzy6H^@DIH=dS5X(8^rq5BoAq=0P zUwczOPc5(C9vl7qlJEX&Z|RGCSqvX1XAV5uX#sNXzvcDKs%9l{pRPGvKKvc)L-Dum zp#6!kPr=|F4p#+h9_$BQ&3`lABl3(Y(C`)o4wonOYk1H0iCA)w(U0n9o>D*aW7w0p zFy{Dzvc9zY{K!V#o`0OAes(bZ7oO|a)Uql4xsCtAEnn65uU}X<;|t{5%IHV+Grr24 z*ZIC#$np^{#+-g(`G4S+`5t|S@Fy@JhkNX3K~KUJ6i3TR^`-WRd44zJ&n%7d z$BH>QeUfkM+p7$|cncqg^Y0PgwXJ-y6sFg(UU`1)3H;5aAc@x&=<}tFf3vjI|LP}a z){Wx%!x-=B2T8y9k@oiVLLPh{VfT5RKO|h?+Gu-n`uXH{teaP^H^%p*(e`|~ASXU| z**Wno&t|_os9aDJu#Y( z!xc+hwt^dy6^*0yWZXRkTD+7m7;i5p;f8F7Z%CaY@~56^kK^PFNjb}2zrfHhBRg77 z4(F;7{nGGv-n^dt5F8SXBRRDJYqiKgaqcWPPsD`bVvf&umH0oXznp$3z+vznhw~m0 z--~V8E&W5n72Xov$FR6jYxVP(RY!-mBb+rh+EEYld|k$WIhr+}^_tpI`r?4mj(iW> z+lB0z59OJQ+sD6qjd0eO;|oK3Zvq)Zf86t%H9uXO>xb4_c|XzaaCb9jHO=ADpf62?OugRex`y&6i96Zx`|Z zMc)j!8%Vef$L(<`U>BU%m9Mbd-2}E4-+n_ z%3jXWf5g69&6g_)=Gp=Gj0;F`{>yuKt^QqyMmJskj+$3Zb2y)@FIh7-)~UXD{uSRx zY5x3K&l5))+@mzc9A8Q&(fDA3g~w_{O$PbuhKRWW{nCQt_sS>edxtC7mc9ILmEWelg7;;_&wz`F^|Yy zSwFuQ%YN{of6re*eAbwgGYe$G`uF|1C7G0eTk?91(in5NV0ZDInzIY9gkh6*W}@FQWknBxmg6MU;*zuVZiSz+O$`ckRXm+*@E z)tB5o;{V+JyzO6u&nhb?X9VPI0~yPn9zL4#Z)jxihZT2F;VBZ_Hx(cI3(t?I`c}=Z+9=N1VMq%Z9Dh`{f_J>s** zoL$P`d+;3~3acf+2|O?!Hljn}Ml;q_@Y z_S|;An4e7y-fhfZtmSa}MNVC%%URLlJDiRfVH@113l3KR_QdgF^PvSWPj2Aq2xAfD zryUl9aEarNQ`rRcsac1MmkKIQ@FU|0%?IIdf@>9&=dP1E-za}(kq|bW}oE}}r5X<4h&`#0L zCDkeaV2%S!yX9~l&k*yT^Zvfzd@LJ7HQdt^@)yd3AuHS5|4eC7KmV1>`QY?^mt7-D z6~8@-eK?dmP&6QiE% z3iCPkZ%6U^l5p0TGN^2drf zzDg(?`5m@V6T>w?0I9Yb<<5J8F?= z_G3vr-`O_xELVPyxbw;U8ih-uqrcofxCNG2|)jz!$@wBB%K6WPHFp z80^M}Ak?#tkgxA;tt)f@{7P>Vt)F4f^Gv^cTJiQwu(4;LuXr9XuG6$Lh%dQq48A0@ zUMG8azLqw88kCLw&a{iP9BkQz7A};5t7rMJUcu)NdycoIZVR)zn*6#>(-ZKE!-XYZ zMy~^}V~zt3`S!t?KO}l*Zj;GWer~nd$KySYucJropMA8T)$N2!=o)QLQot+w!Ho9P zwZa(oq%vahmBJe7O!(ug1I{@WCCUVT6@zJ`zO**|R}P%ke0bf;&VTTK&au4A-(RLF zkE^(SG$+|55#A}pb)&Z(oKvmmJhFQ3dVL*!YQ||lp?=;L%Qci!4aBG3i@+H!+;8pi zXHGKRPx?99f9>QSszE-oKgvq^W5pa_DcC&$0RQg!-#nDFn(+hfLtrTWe!emPOxZb0 z({G;Smy`a5oMG3$q_tb6Kj-@6?#agUqpA+k{xj-J%S5fLt*{5yQBK5jZR$%7@Zo;) z?yG%2qFqYh+FFjm*Ve3`@iFEFNj7}@p!`H2=(~B>4CG6))J^2({I^Z6H*Avb-mF zD6g77TWNzFE(`c@{9F25n;t4oO>;QE#LfAsZn&CGV&7){wddTaawMN`wqL5BuJ=Y7 z{h4<4gPNM3OH+S_^#jMQKp$t{ujBOF_DzYt&yXIT+mE=4g3)_7GysIpnxwhilQhg1 zf3}DT!^Iq5aI#o${`%k8b%e>>SE5lGW8zC}K1oYW5IjCet9iII$Cvx!T7CSx=SZUQ ze6t$vsdx?-S0Zq)y?cX!%Yl1#xX9!Jy}e(2TFZ|qZwUT}2&FOR_yP$p>ieHxe|G8H zYTh!qPuJA`Qu?ma{1=J#S1e=7!^Oty&eWSz!k$>1?Ml1Ux@Dwim=Txf8pfp zd24}QU(ydgirXT3$b)+_sYe{HI3o5#rjPz4=6J;6I^HPOW9ugO{*XAzezmtt!i(KC zY$tn)Mztnfli%!dTMvnIEPp+B-Cu<3`G-9&`G|O5t>v9*T?rS4dz8kQ(=T1>cYVt5 zS5e;hqxQJqe(`_VDzDJHdmUP8!CCu3U#jQ_?f&lvCui#TB7MIn`}~)T5w}T_+4f@T zmks)LfIsf|vC&nJ;l+f@bby=xLwBtU0FK>zOFrRp96S#QTnKw%07zK6e;eTz!Ja*(F_!N$-#&H9 zl<~LcOqx1n^tAC)#*Lmle%iD#6UUF9ISJl#zH7Wc`|i;bCQX?%EsL<6egV)A8^SBs ztR6`D;vMYMy5hw8?@C{I0pYAM$F~CZ%5eN1(P39N%Ae_gZ_yI*T;~2BAJwU!C<5H+ zKy=#NHg%dWg}^S@k$rn?ywU!eBu4vz(=YXO@x1ZR#Cskm{j4#E%k+rvZoPIv_Ihi6 zx~6$g#*OB8bW=+Hr_tYI#WenTdau$#o#*TM^G4dwcL|rF;5;e(_@{Ccu0+9=kG1D( zCJQMC4tnkz9B+@~>{*=nqQ2g|XIFS1_ORRFT9pyg)DNBkY1qVY#oi><1ymN=9 z-&B5ae6CwXJNo^txN(#<*-~Ffzv>ZrhJG|3Aq*Gec#Od_N#IJ8VPB)zx!?0r&3RAa z9rpGl|5Yitz+`(IXBW@Sar!yH-iNBEZ z>2tin>DO(!IIr*i->NEsg0pXMkJ1=h_4C{#^h@79*w7F2V6fBA5BlNSbLaL}aLz-7 z1G&*Ua&lG`iuKWrMX$kl)WB5>*Mz5-!zDh{K!4si=~30wgb=Z@UP*)VSp!A??v1ez z*7Y zsXU))74!egWI%p;&WKnw50|ETHW>bha~AG-Kkmg~Q1@F6KU`$m#T7%&wu*iR?sC&E zsWEWfIo!o2pFal9!{NLpUvUgv4-R*U$(Prcw`V&JH^Afz#lWQ~IP!Z)`aKaam6!5- z!W-guJ9*)Q{8Ud6tLEX-PW(<|0qggkrd?`d@U>U;GyHyqX_u53`d!4~dYOD#F>oC? z+?6I@Fb3{o4%ge{3-sgd*^$EyH2KP6;4V>c0t{GJYZsh%KK z&BLXg`2D2qy^m>^!Ze<*lcJyD_d%vz!ZC0?6&%^6Ry7BoW-^x1jWk|m1d+Nrg0S?y_$rseke_0aOynEen zeu;a&OWkm}5|>m*zJSENTt~h;{{{bvYpIM*37@bkD>gdAVF#J$mV#$|QEg#m}{;la~m`<>1Sq(3Uo34|w1*V4!H z%!p%n>g21JYOn@>u2J^y?ERO9PSzu=N`r5 z`YJfif3t>*b2^)v%zG5uZNf%p{Ywhu!;PN1bFM#zxNiRCn(6~g_sE($d3=w%;FGU8 zV|ol6KVy7$k4aM?osIGB+0)03?=dlZ(%1_x?w-H}=jKDy=+p&G98H61XaV-Ec!B z?uzMk!|iJ+&Yw+qam5Cb%NlcX4t-F3H*M#%#Lp;y!sZn)xE>vg{Ib;NaBB=q}rT7N^oq9S|!x-Ay|>;FXE5?y}pl*Ck;5-hFx8MBr(ci?eZ&mb|d#?P0N1n67%dms@25GNj18{^gMZc1I zorsBxi#h!QQorAp#MY1c`S@$i=T7BA?D=RtM*H3=XNva*Q=06p^LvA#9PzyI_-F5L zB;DdW+dpq~O&7SEKe~D~;k*uTWndTdU(y$=>(p*@q3l+GYkst_JMk4b;PZf-*bf#Q z`s@b66$PW~3+F#C*c6|eEvo$bL&8-)V~@)U7U<_Ohwa<<0^#PvJxXIt6Af<@@jNwo z`~ofO27AAAa?YRhxZY2^zb1A)qk3Hp_M&c1KXbd*WV?2qzF&XdL7eLQ?uoAmIEXLgfRD3h(i0*M9(&Q+o@O~~nx6PvhOW)Y zS*ys2z9*fmax-79v`a(w&G=<|d7uvcT1i1tPdA?TS3B4@O6|-8`%S5x)yg<(r5m0n zTd8$|pkq@wG5++Gd(`u4nZtFuXMS{F&`Ej8{qf3&a$;i{;!mfGJbb=J`-{uc`S$t7 zK&q_Z#=-lA&k*%Bi~YNMINZ=golm=i=i8#-F#cdFg}Ssaf%fr=Px$|wT@Hiaao+lT z@Y-QKO3`naA!o!w&aH}^)IRIl&p_=#eHy6yp_@myOMyi@dsE?SDHZ4j?F{Xb++ng- zHjTHZsw-!gL(t#RE>ACYV3*;BU2yNVdTlCiQ{<%nkf-dwc4hE5!edT;_W%d^J;ede zi64CbPSub@^#f;@7VX9NnOD5!z%C;VyQEt5qwR`aX#7h}m+v2(0Q-jF59O*Wkv)qQ zd%Ev(ZqHn>A=%UG0O!P>^gaqZdwQQ-8J)kJI`Mn`dB0g#&JRiO-WcpxhdLe_WUf!g z9Ik19@qOlJ?wz1fJ#)_CJk7=ay1N(s($!p_jyYT+}%%~X|7Ml9Bv=H$E68W*mYg*k5tc`bGT$_mp|s;Fxp(7jyYVK z)bHD4_0z9Let+}iv2^tlbB?dFi&$^nIp)OrbcVxKNnGQ4@|DYWJtMb%?b-|W#PNOg zEvI%Pxy(5y=VAFCo+}o*-!a#xV-Dx}L#(^aw`?u^JR}|D#CSa0+dM+oH|HE*e6i^7 z6+c<~T_68OEAxq!6E*Yo@i?T!Pl|)9l{i>6*gg)@xLI+P7&ile@!V~Xqc}+Sn>BLZ z_RMl)9}>lMb-qh-Htn)hqj+2FfRD3hw(Lhk>gY!_Ze{`p#rZ@B^H0*RuK5eS2gv>P z`(E-7>6fJF=W^f&;v;*yt`+;>1ByNA+MGRmDtx&P_&9s|r9GFIf4z|OG3O+Mrto2# zG1oI66RuFf1s#mHgbOR}8s~QA>zj|s??vEi@;l8p&2`md&Mu|${`S3zvsX~ved}ZI zZ^?gkwHIpd>b!vZUj*!ea^gLBjm3P4xG^WY90DBal|01WE`+Oq@3s-n^(r47h>zf`M~?WEKK zrwYsImsu&Ek6qH^(^u5GYMJ;nh0hIbMylMCY3mnOeIjuv7 zOT_a=cfuSkd4#>3q+dkgb3xx#ug#TpzxOlr%eBDW$mn-S;VW%E$Ci)!UtRH<`iUB^ zbve@wIn#&p`WbJP=jV|@_&yNwUowA+<^6-scNhGAob(&|g0o?N#xCw2OEv$4LcWlN zoa(i7zB>&4ycT?3g-^$INYsi>&56oaYr*&6BL*Y2m*Tq&IkO$KGo7!a!B=U4dr0AH zC8<60jrSL1KF#~jkkaV4s}(sDM%v?aIR_Z_OoC_k>b0qSGiT3X=jrzJS@0Dq`jI`u zikvkTIO4^e=1XNzm*z{=lX*E+oUY%dR=S*;g?LF)_ z;RoD9q3S~A9-JROJYUz(J(|b)>Zu>~OI1JJo_88@X7=LwdUA4JWb_A5HjkUG$jOcG zJ~@tk(r4zAWD|4F;ldElP^8?GzFJ_ePsbc?#BDD{zaM_)VfR;5ulo5?jmnsFxZ+R6 z{d<$9*8663dnOrnagE{aGSkK`rIPQt_NrvDWlqit`Mu9)U)??>wzhG^;rx>C*P9&Z zcd?;g;#gk4SvL9wB;Udt9q^4v)O@FjIA3JJ_lm+t{hj8!!CB(|cIMG6{W%`RAoc#1 zvrACQIf(#<8TFFxcg?U%t%aOLikuu@ndEDaHv|?*=No0%C3_t2hgCLw74Y6k>_?lw zT6whvo$}cAg&=u1825~Lj@nsW^E%H5Vt%j2U5>9>?#FzL$e5hNi2RO zNc0qki^z61&k6+RIb0F&Md$0s9@uLI<#3gf?{O=T1>aHmzJx{z?H?uRYLg#0zADN0 z1c8{G!+8gZ?_r*Df%*-ZSTKjHmVB0j7+iwG)!rnYbKP*-wl|0+>_ER7$yZDuCT}Ir zRjxMXpT!paNQHB9*2wnR)=69%YxLW)NqoOuXVY(MrG8E7STCoL?7!cbN4j!(K0Ezf zFb~1;VrdAI*11bcZ-6?U+8XVfIXve8cO|kNA8FU#Nk69?AEk1HQ!yANo-B6<6l^Lz3h> zqmK4T`jshsRSj&Pwb1_>gK(=}t?16li07!i)HNQFU+u=D3Xr)qTyw#+$Hx)h0S9rZ z8>~m-d}43Yr`HkgsPe96Jl9Hop!GNQ_ax;t%n!-n2eflWrS-mhy-B2c^m$~cfaiPF zCN8C4A)Xt)^36G?NHtt(y<_JE6qnLN6ZQMs(gy06D%Y>4UAY$B%O;9TZn%ez-cLUO z?{~M*PrU%wt~2C%@_X<9r0=hbq{DiNq9e7ly5f?nZH|UqrPtRTm%P${-XF(X>PP)3 z3)Yv&j@dyG_f&n%Wlld0^uzV_!<}zmX0A`iv>q91EZS!Z*t6DwJxR_IMb6@UzMT;l z=A4{Ir5|4Fp0`M?tCn@Xs|~xjKvuO5SJwN(K)COh>n^AxSNAsMzMuGl3SU8e)@=qE zd|?Z_q$zxyU5eq|I*B0YpHF0Bm=o#7*#5`iilCig{OtX6(z66J=Nv8_-uHy|n*YyvlP6Z=t_lx)NOju?;QRZ+-CyDoF&#w9O4!XWM=WwYvh<$)F zAKakJWyaAswr}f7&GU&^pUM4HB;`ITmAJ3C59`2HE!q&>Uw35FwT)phW3a)u`^(J_k-aDJ`TDi-@H2HB)(GE-%5PG zB6~h3_N@Ftj2CwHOptP(>A)`Q6*&W=8rEJCCEs;*v`@}|9*J9guXQ^kdlrv2?5WMM zwf2nOmEfZhC1?zObCys8IJ(Hzf;-^it9FI6TJyOoU z@6EYgl}#<{ajCB{U#fh9x98Ub4J60c3HWeAkl$%24gUr}mN;BW`*qRh0YA?;DVqRk zfwdZyF=uhoE*}lCwhP6X|=9e=HyJ4xLdkkdW~9F zEps?u^Vg!^BRYEHQ@ho=YMBfjY`QqAUo!a4_hiHL^Mah%9!CE6N=$pnO*7`$)UJcj zuE~yxk2j1jMYhj=@y2@(YHv5VP*37J0R5KuiW=CDywG0odTVQ3hw<86;{1>bI9%Ty zbn|m_I1HX6IpZ%h?1H|qs!!)RzMj%9Z)M&35!FlW$J@n~ZP+Eyz;>Mud^m<2d2+-* z#D}?0;pF5jU9>U!yOyJxox4oMsbxLB++oBQkHtRK9|jsojxS5f`B8fFYNKXsiNmGK zIPuh!B|Bnk8%Go;YM}2>oY0CJ=D%zy=j(kw{M%rNEjbzAslD5c?|Hz7argAyKNrNZ z7)KN*JkUN-zu;4owUlQXreDe%;=N7fduG8_t2kGAW^CI;R?ZJTkQ2wvzxE}ZZAcbd zqJGo{+BMl9WsR+M;t|>NB=`uoA*A0V*1ZGDzC2nbRM)*ZIn!ml{^R!NZ$6PpoFO?= z6gk}vq{EeRg)%HU6j41Xjss~?P>$}w6)&8#ArAv9c zWGQx`{+=oOdkADqUBKg1yO94@!}<~0vlejvZ2NgD^@j}T4`hGjRIkmI+sTvJ(3Z)L z$jQ}J&*^r#-{=oX&+@oK0}Ukky$_tiSj4>#p5lc1zF)G7aV3{4G+F$P(cU8;*V6ew zo5dQHG3Ri;&f!#1HS`zhLrO;UcX-k8d7t7rIN3p z4n7W71%7V}m)>^K2d@%C&qrR?sEj#>^8+8QE8a2H`hJD_Z8440;JeI)ynZSl^}k%` zf8_6=1HZF!%J!L_I^!ACB*e5&;tMEzUI%>C|7e`n{Z8o zG4+Qq*pSAD#6|Y@-XD0 zX;{cO{UVaDZ5@0Zt`dH4{zABB$MXvG_ulR6U_URYlzh+DVNdd3E%=Q5=U>e0XK2Uk z=ie&kAtRsJ{WjL9Wac59epOP=l@D9{o#f0+9Hqb!vBb?Op$ zFPx0mp)n1M*VUjO-rrtbM;xTMv`XK^y5RboMeyD=)g`h5N(vIEE*#yr~doWC;Cw3;mUe^nQ6>F3oPQx5M};Je2HTWyCgX9 zpUyWpQJ;5KTkvHnd^)bch=VEeKEkZm-vf;^I_^6fiK+0tMUt0t-7d2X zyQGepb3#3=KU9&E`d?k+AGKRGp3%Kl%|fvc&|e1oj5pcqr^`9mSYJw=#^e4ONZRrJ z&o@qdU*@czn)s<^i;l7580kmx#V6xS;c?@>@mvX3;|s;>nsLVbIw_}N@ml-m^62mF zHtn@VH(~9_r!P9CJB%U!K_y#k0ltFbn=N{6JrCRsF!}chvV(bX{ZG$=`o~w!_q7 zl)XJe$HebAEI2xStU$q@t5;%e!|^4&xiR{?xs}}pT}e29-`F@o`(kr9i2e}F8>3}T zwznt8S3Xp%4?eW@^RJ?Qe>+x2l!5%9O@iN5Um^NW1j;0zRnGBML3_b|`SUk7!tV#f zxq32udcU3F(Y&YUM0vCq`F?wb&tTVa_Zi;su)jo8z=+r0mw5fCD(0L${l7QT&V$c-wXFCEYaC+iNqj-zpz*=; zl|7%X-$X;d8u@)_RW2-VQS_t!S67@bZ7TelG;GIqx)!Hj2=v4I>2uHg71poeeg5y9 z*giR2O2Ovng6XNBH^@R-* z{qHHW^p9&D^uIDq?4v&J-}s-|9(1f+yPJq84r@;%iZm z=WF2;GUI=W6Tvk`oG5i5C*Aj#JuLQ5)IjcqYZzDNOVl4ajezfuNgj7SaH$FoIe8Z2 zEa_LE=;vNTfKv&BbJ+J^g}(KJqYti_`?s99oYX(A;TKSAKoPK#=1HAXn$yhjwYPPxC z-Y#kXigE0=t|bcym+8Qs-Js6d0GNAAA4Ma&g2*{JYrqe}a(HjX%4dD`aa zK9Aorl72F3#+Eo-(~rgPw)8%5?#EO+0_UiVIfwJl68&%VBY(6|>#AiA=N`5$>W5|* z{j-tkrp~taL$;hx94TD*I^lc{aG7((`vk7Ms_9;33OgHuF5sy=_`9%2br z#I{cwSF#@&qY;lE%2eMf=k)V5*`#>@@WPuNk7CP@KlH3-#?$yt>wL-G#eO2!r_H)! ztk=h5DBGv!V==b>crR~(mm8|BgG`a@nWEb!BF`70_ z*dur2Mp6YNpC#Ub?@)E^`dK;MzA`SIzIWu}jGp;y(5L!dI6NE(qtSjJa+X6_^3bBwLVCCyA?v6 zZ=S(dV8NHI@KJlo4H@_0388xE_qf5AWMR)S3Ln>xN{@?n{lwURH!CW+d;^VsL~;fe z8FFTBwU?9ZN#l`sj(Fa|zV~3HvEEAUI`(g2x|~lMawcx$ z?Q)+YC&!ocKe2!QjgliDp2#H5Q2)zpGfD4%mEa4j`gC5Gv)GWc$U@HXc5=#b`r*FY zy3_T|xz6{L!B=a+H^GK4S^D9J%jUv!AU^4QPaAyLM!DL#Hhkg!;yq?%-|w*3Z>mRc zpJ9vsH_?XgaBuOv_^GOiOF4P*Tr2rOy3*eZcJTVC*Em}qgejiwg1G&*J&tRi@%_c` zNgcWV^Dl4);DKY63(Fj?8`MKNDt0_F8ESYBIK+86#7EadM*dQJ9C5Az&iFDV-^tk- z@IALU@6jV`HIz+FoSb=pI~OW-eK-9O;@UXmD+b&-fNOW>nq z9))+>w=?Rup0~0zeVm0hN<3;l$EF|oWxt)`{?@YJa(=IY{aH93{o3I(x}8yJqh$_P zxLo{BZ@ZipXPf|#Cpes|i&(eW{nPjF5N=;aY}=-OTPE$94t+Mo!Y*_T%*mbwiamoC zabhlG&m52g=XJTj6><hN2(G=RdkO8t3o$ zY(kC7p_VzEOZwsVeS0naz~S;>Pbc=1aoM+(5=WY8pB0B&e80F)P5XMor-ZA3b5zEh z!>ykraG@8UgYi$K2%Mub<{U10ir6ppd|bP4)VgY!!+G*WybfRg(6>}KCEuPe1L|Nv zO6`)+3nj`mVencUU$+@zU&4F0y}uCaxcBb&Vy-3*mzyBI@B3Zuv$a^aJ%gkEUe|qG z+h#H&G=<4XlO@m_CWtzs8}b(jSQRIbuo9lHXQp?*Dum zp7Y8a%T|f(lKzrmm&y%7Pb&Jg=>DK2ri z9I!(Rpebtl$}E(qh_MTY>mq+2Hg!`$*Qh=Ft<%iXa=4J>Yj?|~Nb5CY@R-ASfe+hf z^Sj=}xa5Vu6B38ht`_f!$~~|7!4m-TgdVR`+iJc|!tddKL~h3Th8brFm)Ux#M*dDO z=i6t$K_}vZ3NFzCm#*MA{c>b{dEne79f;v@L2TQmepI$Zw9o4EXKSUK8rD9`Wt^Bj zZ~8XkGv}O~UTD`iA3S-@fKKN6bWHuP+wUv2+#|yN>HqS6APnXlUjg_X9vr#eJ+FDa z`cW19UMtGcWuNtXr8&MDz#-q>*7f6qw;e=rf3~&8(fUN?QRBUSwGFgOG5D_u$T=qG zq5Y7tsii#Iv_`!DECgK1z|B@xPI7ihK0~~hBdO2El}go^BKbWD_-fu4{RcT?DlrEf z-(t`Y17O;LA`BO7qJHb@YxH-&g?^6@GcLjLxuyRWTw(1$4woQtfj0HSB?1oZHKmSt z#_?tTCi>q6rzS*5qw-6ZX;j9X!@=)OMf>f$H~#sLT30PodnuIdCE=J)ONBqR4p(+E zfAPudsPh+!XW`+-d)9MDOtj_W^s5BBV888ibcX)CsxZyoF5w@<{?_;VzOe-@H*;sn z3H%&i`tFkGJf!RNvhNX>bzf|(Mmur1swc#}^|tBL{aB+*%hitfv>BI0zmITgc{gCmz3v>?@)=5^M7Au zWh1WCAuhh(s%U!|F>dTw5SL99KM$O?Rtu*TX;>-cT9LB=d6H{qrB{gezW#Cg=4%M+ zzH*gDWz0F8YrgpXoU}DA=+<#A|A!~~ua&$=+3UtUIla*|O`f*QNWaLQm0C#FFWWoW zG0y$IfvY^po{!TnTei<%UhVce>R0i@iTZK4Vz3L2H-oc3_!x0bt53u^iG$%bLTXM<@<%n~vC}VMfw1QTpYIred|3=1wU_W)E4AWNgx#t?b>3cP?lN#Lw|#qY z;y;qZPQT29CDC<;Et4`vp?-OAjCN5I>j&r?XG5hK`^W7;TzhB-DhA6OE-d-plzayq z^0|Hza&D8jHgN2OuXKS}M+r$>E`#emv~Tx}J_CCV9oR4J&f9wpy}e)GJ{kS`5ABti z(W~!(KK=R*P4CyIZwA!5y_d?#>DP3D7{^@GpP!2ssCa0(BROji3H`1}G(bqAP&#-Tw)E~-T zT&D#ai~9b0;ItoCYNclhoTsHdAH|n~@+>X!wEU>O%PiJEm+Pw)eETew_wSbltnbGf zfx+;vu5~b1tDLAD>i3=KzACrXG~J$&*3R{FEr8#BlhvcTBJ=n#; zbl}7Fg5qu$9WgYDEs=h%Rfb(c@Jt}KmN+`cXPl*elzgqxk3whL`<-w}dyM%@po-@+ z*!XrmLat}+Y5B|;wXRy$^;_c6a%KCiI!V}1t%v2yea0Cb_pH%AT^4fAvhjPS^h0-d zGu#%)vNgYWoh61(bJO;yEsUY9QxH@Y#~>$NwXoIVU-D z!4@QE=r4OYb$gZ?_QYpT=Ii6}Y#V!KOM5}9IzM9LlAuo8mwP)Ppg~Mp#>{%x5*~HV_vLA7{ zsz=3shSqmCevYo6RUEr!z~KV$+XeW%>c4IGAHyD#v(wppunL}|V?XIo@Fd>GM^n|I zwVEtOGmfuPt_xpM@PoY{));;W$?;6RK9m>*@ja@fzpDm{N9$cwP0w zWG(qezMYAh;yMv?twanq>!S^OEgi48@|1g#6Ry*)t5%>$`zjumj zGx{&&(0}O=Ke2&z{wp4rH=?PF>Ak(2oCQ+9zdt?Pm~iG???Q2wjWVDt3Aya-;@5~ z^`mQG&hh!cp19w6OVVn~@rdl=TAQfbGXQNAuW3$gea0EWRV((ywr$ifN{`#vvq+9d zM`k4B^qEbZexBzxYaO8W@0a|f+cRV0I!(O*hx0-EM90nFGgHT@7%X$RF!=ps_^i5) z`v9_wYtq@eJ!`9ZyPW4kCXoo|ecNcCUW;+_2^)JxWczeaYi_w-&goYH?ehWDczk;X=^269Dkg!i{YSXU;j?0U584p0dhvU6JhKT4%IRw}oBK_Zh6MWU&#AiAR}AeF$G^SD9=Kht ztCl%jIy~n>dv$#>zfi5KmUVl+o~T9667jRt!Y&@4f#moKZWX^H_Q@{~-byvIe_5+h z8FLP&NjcXqs?1UAs$~x6nkBwR+i&j47g61!XJXqYjkh)A_g~<9I=?o|?=|u{US!$5 zuMnR(*X_C9uxIrlp0AzHKy&)-gMNhTm_Kw`oM_aHEpfO~Ic`qdd-}oH+Qt!wtA+0= z;+(k2$dKiHg7iy$Cri`&57^YWvQc`VwwbAfH$f6%z=rhn9UlHsxMuRWkod1GRGq%Lx0c+cjMSbB@nFQ`qy!b*CRt>#Aklo|_DNrXJ+^ z+WQP7$5$flx#7<-8Ai?65{C;)dw%k0{p?vbU+mBFH;(^GXL&5PeR6ye*td=M?@JfQ zU#{a!1rApRaw4wNy8ZC|06uXz_b`ETcP+QXk>9J7b+@WG`};VK&kKIQ3G4f9udm>x z67OAbj;yg@azr8#X;NOxsB>!o~t~Q<8aAW zi+S=F^G>eU{3Qhb!}(HCs`Wap-XESk8@@Lv<{_TLe1GWRLup0gtdaNczB<|`&TH`x#~8Kx_k)xq(YMjvJTx_(@kcFJj*~pnC+vn&w>-OnHPHG2g zf7j()>e1V0wuK*7+sIiZ=Yw7Ej{6Ah!6k#wn70mk8s}9x}$^VV{aJad*pY%-(KP~H01hU72L1j zbI~KkTZU213Q|WhJFS;z|4-bnxZU|$ zDBiwZbA0agVtntEyQ-M@%(>nlb{hUmwBQTc_|GrLzZUyF^;)0Eg>@8sj@RqK!AH&V z(J{#x0=v-tTUle?E=z6XbVGl@`~F$8PNpzIG`1I?RZJ&l}^P zW)YWOwUKik#lZ<3(hP>!66g0CXj84A+INEoKTov_pNt(>2$urw9pij9=$3gZuOD3l zbHb_TN@X0(+tBq*^}Jfv?YY&kr_aKFoqPteoh&9mUFruYt5Jh5adH;JIs>+|1^)Uy zmnj9?;e@ZB zn0^~M-G7R8+QOTUSw6QQIX#M;MRGs2DwnxTa=P9&?CG*-FR$CknE-NP{JcD_fR;JT zbkVgC>=SjZhXh;XXb4p2Js7tzg~6WW2ih+#KH>j!?X1&-Vjsk!o~?sCO03z~$w}>i zo%g(B*t5W5U246JJ#*ptJNk9%u#vm09#Rm&u&ANJZ)yH2@>kGm?4 z<6AA~Su5Y^y+p06mN}evz`E%E&u{<9?W5LJ%N(u*aJZl7((7tgsdd#dhx5pIHmh%O zy`EdtB#Ci)WB+&lP&w2x#}}6EWzvUVDLqa_@$D=D=7YFq+x*Oz=fu`FjyS#~&=2Pm zH?{i8^7$r*tB`WOH014i?JG%^_FPa;d!_&m19kBw*7sGMoL?q;3!>UdLi{gA`? zipBR@&)(LlUh^Km)Nl8odQ0h1D(R~>1*~H;O64yH! zcIsFp4p#;38t14Z|G`4$Bqw&fDb$R!dasszQlPez)og7Cuga= z52$*ne)}%`@;T*`|1G-F%tOZSp_KMW0VhfqnO9iu%dG$?;?iGR|`PMa~ra5}t0B^F2n`#D`;bL$uCU zXz+z3uW@xzy3>Zw5B(40#DrHnT#0;L7(PzUbf|}M;@QI$S%_PlxlR*|#(xf%@Tk~V z@_S7){o^cn2fl$ao^vHE6@I8`k*{ejd3&lj{esHLB9Ifu+iPYuyB_6S!RV*kb1Lk^ z1uldmC+6mqX=BfQlJD;E&8`4GZ*5(C4;y?w3%+^B0YKOQqi5obt#*eu8!V~Su$vFaW7(bIrT7?kjafr*6 zxHr%0^cdp0ImBslKCyU1j}<`6CQi;`8DB0755ikDHgULJhgV1US?%t(b|ir^zF4DC z8FLPo3Ho4rX}P7(lWJYH%;5^bF4$grAAIvZwXRy`a8+`h_MGewW~+78a*{kqeP@hT z`SutM4}DO^yspIY6-haBeFycAi%mY%KTs~7B_S^Kc z#JJL9_|oXOlIF1Au9o^W%Kk%F9} zORR7>9_<4Ca9!oY(+=yyK+4qEK2Lt|DRLHBjJK)-b%QA|i1&w#yk$DZT~`qtE8;|p94_%o@&2U?_nmeV;zAB_nS+Hr zA9(ooPZ77zAudjM;&ld}+T7$<&N`EWa|QR|S;FL9rL`fe1LcG#I+ zb^#9KeB7QH^O4W*5VsF-IF6;?Soj0tDjni-7mE9%HLrwVy#Ri%{7+|cdTPb{HR5}o z6xA;ij)6WVarUhGrz9HZ2XudW0P-asafZuSD4xf)iQLfxap?|m`=A~^$9qBITKwyb zujl@ang?*t%=mdN^7$R&0#eSmHlG2s5GRg0<10NTeqZK?k7l2QxCk5reM~xA9{F~N zc@L5Et+}AGvqGor-)%mG{KbB{-aCfOtMVa`~isjqhG~e=Ev= zUFGNPk*^E9N0fLdr@&JQ`q93#%65Fb-hiD%CQi;Yc!y?7_`GJ+>T9k{pG$^*qivo;oA4#9PPK??id2Y1iUAzzq9+5h+H4+7P_(x&j#<%mmg${oH?g?Pm+vh_<68BZxl5bb(T8+w> zbNcxXH`1_=A0E8=HLTGk&bpnIfxV*7S31IehF)_uyk=dA<6ALM{Eqa|M>f5Pd|u{0 zyq&yg0C;peLb)z3{EXvswGeiBwd&4}Sfha9<8Xek%Xx6kmT3ncL|hJI7bo!(*Xl9Z z#n07n4~6~f-(BbRk7{C?%i}dDF1f;48udGDYxtQty(L&BGHgcxO{Y1a7OpC7D9EJIsP9zJgoZv5t@Bl>pHpKw1WQWl(}GUgmERmSliE;PUW&@tUI+&^k z*z=`B|HGCt^oIK{M!qhLU1(f!?>5#o+?Vq0I!Y}6ar$LQ{ay;*1s}(G(-}SvmmuTk zfQ!eMp`6twTOuWg(|`}x3p&rebR6oFPE z@VWufd3jzPey@bz^Tcs8_m;U@^5qTFZ>DT#H;zf(gY9LXL;Y%@9Nkg>3X|3hfN@$+foO5!f%JHv9QAPAVppuc3;%CwOM*Q?8^Kz=39AB|~j_~O9uLjk+YMJ=ljg8;C zcJ~{lsdczA$LE2#i+0W&e%qsjDR$8R4uc&~j-+WW+p z@JcL};!>5gr}xTy&2v@5?CA%4!UB)0=l#WqJzU) zZa`dyNjH>%!xhwu{$5k`h-LdE{fZU+v@3Z1cG>7x_Kk=W9e(ck6G{|j;vgqyI`|J3 zmRx`K>9H1dnYplacg)qq;dTKZ#=-l3J^gFsTg=##`d@-y>}SAhR^Q3%XUCU5P{^5g z&;HfOSHbXca#p@Cez)wlXB!Pf|2z*IUX_Q+9A8cMjnVeGHvCx?^5x#MM5FqY zb2#tC8>9Pa^ZR|Wg6fr-e9z&Ep`Bqo>-FRE}xfB-K}s{ ztZg{HD&WI7H)1A!1wPJI=#X!pY%k0H_}y6lB*kRT@wo;GIfL&%(G~eh9rC$Xi+26s zV>exFqR|gIzH*5>;iZ3wLfLK6B2= zxlhLHt1DMLi+t@J@_9fPjN`lK^zBJJnGW>xf*;WDOUsu`MLw@XzL0EZSC_p8<0iD1 zh_m?Om-FkSF@1o~d3?zNxe@^I)|Z!oxUlZ#P|hIKL;tl79Rokaxyl{l4$FQ!Yg>o( z`p8)=<=p*u|LFWBepzfAgKL2lCnmRCCo0{u`&#(adtwb9=Li4cyx^nJ=dZ>Z^Bl&d zD)1lT2LAZgMTlGP(0?J|!}#*pWls%3oX4Sl#n2Y>U}8e3=gU;`?rn-v4db-VWOfn>fBa zxIWrtbl~?Nk+0YxUm~;@ybo}FSwH=Dja(It6ECKWxRHchJZzOlWz0D_GY1OX@VlDm z>x1ow$Kuf5_=oqwjo~jI{xGTURndN)rQx|G{3jFkPfXd@i{Ejmggl|!G%b3vj(?n- zVQJ5&ySKXoH96qWo-V)e!&O6?{?Ce%xXB2y999= z4sot;#r);QKiA)dxLk+0^i0uj|6Pz*jktLZaRIpB#PyIbyB34X;#>iTxS+(P{Vj02 z9OBaD`o!5&C7;81=9Bsrf430YH9UWC$X5(Fj4$8aJ7`iA=a4Tbaiwb(L=bn>AzxGQ zANG%(*Y^AXaf#16YcEy6hw-{s^L;xJ*To?&QMQ-Y2BzH>mD8bq?WLU8#0`M{0Q+qm z^0gQso}(|?)H?bcC=q^x7{rcATz^QoOX!!sd*%C4{TSTI@+x_4*Jx$l*%}^3ZfIDX z@BknB{qrR=-bKC@4)se0yWsuwxWrzt-`hwb1<&c{m3%`BhIay#*FYL24%bcc1!q=N zP|aF}3(w)a4^!w2zm(LHpg~OSil3y^| zH-{?&KJ@El+xs8XL8bzS^TT`n5O-4Hn0ny?@VyWmm!9gsre5;`P5N*9Ked;c#M2Ks zIWuJcD_y(iDZQepz~QnX4&qok+f-LQZ_wnA*i!%Q({zTI_c>jd#uLTx-_rl!-B~HKe9vh?ata4`f zT&iczabAn5W>=p6z1GsV^R(#6I{u-(@vp9V9mQkRnUb#GBk;XzsUO;uK3DVMHv0KG zigtF@M@cYF^T~;v^n3TLoIXR&Qj7RG!bZ;YyM>&==GJm@{!3Uc?r&WW-rQc*u1FaN zIb2ZoztffvgZ&I5`QTbq#+<{2;JRnPXG>@7!EFuEROSQ+eAtdoyRIFKnJX5^&)Cge)4=x<-#&dgrg~RYrYofBjl@vvOH~>aeUtY#QTN6oQb~|X`});Pe;_Q z@qQ2IfK}jwWXR)seCfqaqcksqqAT#j3wqNgIg`PTBxg31v0h!t%vU4%Qg`>!`A8Rz z&#&;I59{K>&&+%-@Ez)xqwrxJOdMZAnxS9113#GgJd#fS8Tq-n zJ{@y7uaq-;)tB{>vmE$Z!iBr+y4*|GH|HE*{7Yh=f7iol`tacd=K&m!-yfcI#u0OU zI_CH?0e3c3==oD+71cB694--_zn=;frxsrLsJT8JbGTfvC-&i~E$&!B^~^bkD|tig zuN(FBiyGArY>kbd98QDhE6Df4yhbpugZ*H8o!yTW!+47hICT2kG50ydjXB2`1UYd) zDa^WW7uG0;W2~zt4(Cr1{o(qbn*|X!)1jO`uqVnn=C)n+lG8Iw{2u%Mwo~sW*{U4a z^C&!5#(h=?f2*2~a&Cp^|AeQU)2|rh#Ch_ju48c98=E*>HP{c^XV&Ev_aa~X7H52w zAQ$4!ZL|c&19)!eP|n3No=q8>ca#+pPI7X3KrWnk{&Y(Q$SG3#o3XNTxUKL!6Z>uE z=r(D1Wp6kZgID5ke(Co(lCB#ti&^uai|piQYCH7RkZUl8=e@!|7hX`RK@PyEmEPyVuGoZfmOGR)B-{1byQ+UCK6B2=SqyTX0~J5{@zGS|Tg~`^!zElR`up=a z=Zr^OwL>`r@_zI0`17IP@`>Z~$=^fS(DlZ2LM3mDZKE76S3cMNV!?)JJ1b6Dq7j~Q z4i^D?V!V#e#a7BE4i^Ud;rRa4Exr9{mje#%+07M*w$Cwh+W$ptd2o)(m~(vD@_E%* z@0gd=x~mmEIb0`LC&CHpZ*RW|{hd!7?$D8S(YTv*()Ha5HPhq=S_i9!eLDJkn+Eay zmac(0$G2X#mly6`jNO+_9L@z}2*$y=r~L|X9-ar7#uU5|-G?XNWxT)6-F=RRpVgH( zJ`L{saa?)zmp^)1VL6-^#=r9ca9@ja^?7Thg+09y!=6Q%4YOwztlKmOzUdn;xwSrW z9tN4PU2iz_R&*Ro*dE*W@LHUHRk9xiwDxPGewe&g!@6qXaGl`#I3CS@cQ)+bh4JX$ zb()I7GKb5C?=zzzUmei{+za!9Q%}5ar1n{=*s~Ja0A91M#POxbe$@5M@g-JR4mSey z!^m>@vU7(KuFcL^n>K^oN9`5+G9`}B2kV%4jTJvmy@l$Ta}KA; z-~StU{5M!sHnE7tGW z?lGl)DEfQSn0&2ZEH9_1DgJYO)zIHhfsecG=sZTPtCl%j4akY}>x>8PhT90(=i#vb zX)Y1ZLhp>+Lma8+$M!*rySeZ#KN=rALmH-Extu3wRD7&I4<}yAb-(Y1bw$}O!xntU z@n%vc&MvOOV%{@<-LBPWmtweYrTUa}xWbU=?}?$_DTphDW2#SiM=E?MzmEsUwTtFz zblNKC_$sAcE_>^nE9-+>4|3s+(SIFV%vW&{MPA*W|1<2FXwi@Uv$1Ca*c0bjZ$45{ zt@5d5iZ5jWW&E??Q*ln>C$&4f_!*Y#8htKqjorel@=%%cgX`gV4c7+mnB1WY)yw)l z*7v$S-!tr)ty%O3o4Aw=_i-3s=GHtvl=#d!#g~MC#6JJx5&2rpFbh5ftjpQlh@WA= zDpmC2`8IOa%I9OfZ@cWE4l)%udzORk@P1|BH9a4q>X|oK*t6WQr_VyaI2$=#e~I{+ zb9P2o;xp%*oFx#`aXhNHzwlGFez_9sIotv0w)ZP(py>X zPo{ob4K}24Gw^)F#)tGqfoPmxdVQ~TI3DG|G3iM;XBRj02b@Q)t>gE=DDKj8lJxkE z(dP((*U#(T4X`*Q7}qvRx;;-e>{+mk*Dv12p2c#$yRHs7b-teywIVs5U@QdjPDlkl z|4Yb*et2KQVoNd$yAmG^k6@m(iviPCZBQrLOy8n$M{7Iwv@~FH~{5elrYvx-IU`D6dfeYhl?!7<6Y4_fWc_0(E&(CY_ z=s=iVCOJ9%*30k1F6+2!58;l&{S1{c*Y&F~?3p=^*Y7?Xdj|T6{ceeM{9X_BqcCt# zKk``cv2uQ6$mz=A<(z6Gr#4GG=StqX>JQ>ru`AXt9pwi(?-}=hxfXnM4a{|W?lt5L zSm4In$XWcY7~dE5+6MCiK2bZXtN)RG*?x4ukTblJAKxFgku#Jn))_jrIJJ_b+-I^U z&6g7Pig6`%LcYH4Ll`dC?fKu?di+ct&-;CXjhu(y7W48K_Dr~kHPQNVIvgmV}FBk5Gc{!|u z!Lb?bq(9L6#nt}6@ht}1;eF%S&o2AH%tObzU78y9thJaIoW|MnQ^TH-T;2~8ZR}Z8 zuvx=+)wkt^TS%_3>3);buLSIe&t z2S1O|+&_)c@Guw3nAep!z8v}fkas#~4ne<{d=Sfp*VFw_Y1q?qKX1?bZS3iXb#}a7 z!kedjVI?akXYe}le0oIML|o?8Q`7eid38B|G~^6h$mz3@v$9&W&qlYrr}G_#b2>2; zI5|TgC(5ztvm5rRbu~`T&kQ+pC-L^2WFu!t#-+5vmtP>hvLEf`ERg$&hMijbCE?7u zZqLs=`uLET$ICg*Mou5h3ow4B-?I?ni%2yN#UBq(;&QTe2&hHV~K93Y-2GqK0S(o#WA*X*bZ_nvAa=L#Ka!xqo(mRR6 z3+JeeIgNkX1IqY!`?Q!kYJDnm`c+B&em!#O>r~I2>-v3R=$9&=Kbh-Jw$ZN~bisLf zVd_;w2;1#YtbUxFna9LB<}FwCgy#=@(&hZckh8`@&KWjxW`ay8r{~K7nZ#CXl9T3V ziJyr18LlOlf={TvRj$jq&yX|Wvpg1;ZzE@$pM{(qeq5`Mw}Ff8?b*Irnbr;jyy^5O zZy-72<6_4#UCv((Ia4j)^CkO!0Bq#yMMAG8sgm!~{ruOIdI7VsS} z#MOfT5~n-I32DUtty0cF#_SL1{9%)vx?R3B+I5wMoDbUACFOwl9@w@&nL78>Cd}Y`rxsaFhAsf3?Ws7;i z+Q)yNPWDK=E2vQ!bDi&WV;$OW!PiE)4JJx5BDFtIJ5yySzCgTJ^Se&R@pgbs z9IngIP1=P}`^=U7VSkTE-K^qgm0{1+sk}X>*w`~9{rhIzpvD&j5&vM-6YnR zN*dofnd;^)F4d@vIfsk?aCvlp@*5q#Z%lP-yR6Zuj5);@dj97RZHPYqs~K>IH`>;q z4sN2rq<)Wx;|pIb0bF3C&lMmTfM;gV-=iq7lSwQF<> z)$h^?{G=of*XEY_(RKZwK71^ds&-psZ_hMsRdl`Q=ccdzk8plCM`g@8zN&!u-pdJA)2hXLvq#6mAi(B^@(xU9gnCSTW!8Kp8z=Azx423 z_vllBnFqCu|u^7a2xOBiZfzQTmxfIL;`>!4162^<~eO`BKXZ^mh z{d4yHC`6Z-lM2D|9e)-3Q$u)6uxSn#qaD3U+ zI|*mbIb1gA=Z1<89_hKoT%V4qA63im?c(`J1N%|RS7M*)brt-t`}S>BY;@oYZw}l7`2=kHvW`)3_N5EY(P_0^r2Y z>Pm#$r{GZ5x-j?|;by{~I^y#>z;XW5WPEw+iqtj`A^&+-7;&)Jfjv3CiaSJ{ zfAGIQ_7Y$C_SiVzQhpEy4!p0*ErQ>*fj_EmmDk6A-n}RKFX4-&8tIkdfRFspNx`A4 zR`St#!lf!WmjfJU&-6>g_d9MJ_l2=eWZ}P3#ea!&?Bygsq(fcwL-yQ!t=0j~i66X+ z?-O?V^h7^s`(Uk9@`N1lkv(f~2ysD>eBtY-vN&FI}I+3lTGgX584qC zC#tm_+lim#Y;mI@XORQ_sQ=X{{!4w#UO%qAgtl$eE&zc#cMIw9Iy2U ze$>*(mQvj+Q|zVo;(2dU)Sf<&vGOH*Ims@`U>DL0vBYDQb8?oIisyd`?jice^IF>L zcL>@X+Ih}-&2_t&dG!k_AGr66^|Rlbmey-OyBBcCH~fk>&>d{z_&UM7^=zo!{on2S zeU2H-;ruRfpE|PtdK}84Df?`DyZB&V9=7kUA-ro6sk+GiJ}x*({C?x41803txD^{? z$7)W_BFWc26K55C;&8=s|6p0C#9s+j+I*2lWz0F8Rv`Aj>>BTTmg-hIuuB&B51%6} zzV75p31`kZzQbRN-wix%&*i_PM8V5reSp{Ca0S4J{cG-fsg-6PI_7X8Ilq1+_yjgL zHgUMXllfX_s6FeoAFd)$!ELd!a=3{6p45ht_Vuz$P`RA+}XcR#$7{u^y{0^D>Gy0oqccX+iy@`1$@DTO4@V($A-;`l-?vA#RyzP&dPU%3;%%lnSoj^`{VoH^(C zd~#gT_BVRTT%V3P+&sXcAO7z5*Y#A-oO8G`@H+<1XCI1mL<=m2cxuMccwQ`@=LF7w zOiO>gVdGJfHyB+9dot1m*7f0g>|dV9$H^H^o*x|_@-~%BK->X1Hp|K4KtGJskGyr< z^0@_z1G#Yj=PlkB2P0pN!{0AH066?!Pgzj=8*whvoB(A`!hew5C9uy;J{R*sIeM~= zf1I2Vso&aA{q$=Ca-n{Ok52jAiV{0C{-OPF?WF3l*P`o#u8z&Sw}E4tr$8}geUS7k zQ1lD7v0o1{^VLW`r|(g!R`@dK+uPI3mwU5#k5WV4Yjg@uUyd&uZKz1kL0XU*qL^aVG< z@8(`@-Og&CHT;)d>fC?ihhk}$;E^o-c>wwrlbxIz$c1t6nw=jkM>z}Ykkb#cQGcjx zfSj7NXTd33o{IO#m^l5CE;jm6zyTl0S*6ICxU~LuarF@M zp2Fise>hi&$;zpnYsi_j&Yq7O$L0+dzq`8jT0ewNc>g>cOG-WCa6x&0baYvkzV5cK zD)t_N!)*l|js!VgQf(onGSHJO~n4zKN8%4hTlgwVNeE6 z&MNu*;nJCYSbu@>{oAEl>Noas*2r~@@f~lt4{<#KmwRhaLmo;TpAW8$`rZ5ArVkLO z0j^YArx6Bo4i^S{o(iA+_1{eoV~rYJxCmSyW6`)dr^7l?oU8V>Seqa(#}|S3U*rAFnpd9w5$kY?!&S)p@Xrz}o+OO> zK&*}&&UKG?PWjBTo8Bf|i?mo-Ib4XRWl$IR68>|5m{B3AzU6oPP1&iFJ*v^#-mdtWDeDa!y(n-LEl! z?7m@CcLkiIGUgm#0`OtGPF+87l3G_SbGVB20{7tqbD=-*iNmGK-^ZKLtoVK&#miX$ z{Q>WZwmh|ZXnk<5UgG&!uivM1s}Ig6``<%Tt9AdG@iZR!CqAl$#yqOw=f&eiZmz2y zb9QMX{qXfv?Q*rQTIO(BupWv2`=*|_s-a?kU8hgGf2wk*WsWaNw$Euxe;laRRm&W% z3*c~MnB4qjwQ5Y6!zD}q`JY|+PfTUyfWsv~e8GE^QF|6Xpj3@1ayYN_L*VJpXT?-j z4me!xi1!bUP96ZaV(|OL z4sn^%E@xHmd>wHk9O6bu+^Zk&h~j(>ak&y#by(mQJH%zneO+_9ZmvQ(%N*h=pdQYX z6Fz?QCCI$+cS7R)R}AqC*LWHSN4y1@_XH4};BbXfzvs?;XcX3{aVTdP{El&=QNLN+ z5ZAP^v-T2{^UwAZ7JY-bB!{>nkQ2w-|N1|E2ys0f;z}g$vc`*V=WK%KIJ@{IZsgxx zYO#jqkS`+bGUcVYo8i)4yuLYce3gL1aV2T*q(;cs{*-0f%zXQKYnAMOH(Z79t%vub z0xn{bmE)_HxWpOhQCt?_-0-K$%He7x?#j4h-KlQ51Ket`C*Bv|@NSp$2xrbYzGN9E zy7*l;Q~h`c<6o_`=OZP}4ie6sb9^p{*XV~X)2wkcJ_MQ?`|?~ za8kd5zYIBHk{wN)|59Evp);X;04` zqrGiFK8!Ok*@`Ak&P-@q)NgSwgsf_rQCzB4z7Lza!QP(KUVKnD{Vh@7zr!BK#j~m@ zV!vDKo}YP1(CYrNF^$6|uNV8C0;|7lNjT4dSe*0&Y&h!Mt4Btketn1DlGeTVfT7** z%t-CkH=|FF?$MJy()z#=T?BHoA8IZV>(K0T?UBa5QBKavc8^8(XC-vJT9-4^BqxVU z0NY*$vdo|K>n;*4Y{FUTcYCh^1G@L_H54~t8OqaDjOX9pyT$iHf}8TSYWOp1@FlZd zBC>t5`ydp%m~lSY|6CU_`!y6CwKHvFzNWX!>+IvFm0jxV_hKohoqi7a2K4GbuvdS@ zv}U{bB_I2HS&Cg8@^w#3>o;g<_rCr5-gSGwI|txw;lxzqdo{YQ5y{`R6l-jqTB4b2 zndS6JzpMLE;w31c$VvVSfX~Q(-mkMyxW1W>;!>$>pZIz5mio8PC`<_LR|5%Hce&BIh<>@*r%G*D37RI-5lUN5?ArEmPH&jC^qyb&CE*h9jE#ewoL=B-3xH3CuiZhoumd?YiF>2yNoY|b9dLlFg8kkXLG^R) zo8E(P=?>)d$oF4oo-{d?a48A)e(*}%iu0a%jBvRQa77>!J_Ao$_|t8K+h>x~+#j@Y z;`^x;%6=4FOT(m&)0`hPkQ3*s|5WUzDXYsh#r{6d2Yx`nv5lJ-ArGc1lYZ1EeVfF6 zN79@5ns=LhKjP#(3fG2(7uSeKc50ACQAFEM(KpoBX%*UL5A^Cok=?`_rZqFtTH}g#KKC-UkJYNu~$bnr} zj~CDX4(Dx!^$C%DXW82`{u8l2|IpA?`w3^x$u1GF1=%HGYs2iaYl3(#dTWOlwh>R6 z135$Bcf9BO<% z{)%O*#PNCI`iTHIe}0Eck*|Q^<8ZDbVVBldw48>x5{Ec1#Ch!R;n}b0?WJareVh-% z_2CCNTu(GUNL!Fx#jRp}!O1xS-luZ`;Qs8~?0+a{xkEXtq29TG>-)zO%McfD;)0Lh z?1`xe_}angF*kRBX>Xj%;}GYWD(sTl{FnFXs{VoYcIgJ!M>#wH*zsM$VV#d<7EpDRvsSf;?{@`W}?@jMG<c_*wp9-1*PMQpz}E@n*fed=Ad)lbnpinGoG&9j+HYUkGxi(8 zVV-fef#q;pGevvpcJZQ{373>hK|E~@^_BY@La9Tv8<-JX~vN=yX1_?8+re*90SJ2mr`gO7zeAh=lfFC z^``cM&v!AEf(_|=rkU?Jx94eqZ47_ZuhjkJ)F0hQAQL|K7U>*~;)?fep0AN&7tRj_ z5GQbL=$#?27132!Uu)rq76xB|1z)_vr_0&Wz*Sq|8Y?(X&cofrxY_^FHlJdgPpMq0 zk-U`ae60*VkA)xH3ZITU+rSlD;F>5n>hFn4oDW;zNJh+czC?pBu4(C=A2)_hO6QU|yQ)WI8-8`d}0?cy=L-d(deEc5}~=SKMW zLfn{hc1i9b*7^3FbJgcmH)nUOJ&7;5Oz?%hW3?0q?Tp%IHM~=w-mCA~V=t#U&WElS z>zJ-9hwAH?B&)i1>c>7mV)RRd_DuSvLpdr~9skVj#nnx;mw@uUK^j{* z{fZPm>`Qe}ML#n0B}hJ}-;1nO_<|08Z^F#yk$iUFi==s-_Y37d?!*6M?R(&)n%@7X zS}ax;n>MYQve*birB#dRuTB4^+OlQSEyebSrdl<$GS#M~ttS1kk{T*Tg-ON6Vm=Cs zl_|wyeGQ^TG?Xm;@q3Uh`LEbRyvn3K+ab_LU0uc^hfp z_};7^?D2mswfhKOxJKL<(|WTEIB0#8-(*&dj3`fOWBGY``FT2zab|(g+3=_Nz)2|K zntsXVFJR;CHD`WVMVHG5uT&_Fv6h!`F|*A&_4#7^ts`MSi-jDxMrn*?I5)`P{eaH{ zUH>B4hy`3Fyk8#+?x&=$?<1TsmhpKpZ@O0>7*L$|Hkea$oLLIx#ND!rgu7M^EwXK zA{j2i_3ZTEh&xGew*@_Icd`2qSAA#G>RIP2%=H;1CU(N*FqX+J*CO%^<(=!eFO03uGZoT9al21=F z_e%}bYn-#ZvcAbN!Wm;3U-Ist%9r=(&06^-+z`u0^T_PpaNn>OTQ7PcZOq^JS;n^? z_|Tt2+P21FLJheFJ{isq^#$9*?_EydZ89~Sw6LD`!aM}~&w&#@Y*7E{c#sXq9f3OfKE>Qkxp6Y1~Au8(B)DZrNoxJAtqA0|GJVP9B=vz=z;e(T69wDlk1 zDVE`i`TXqZXYo9=JW#pUdrEuw~8xWF+TZ>e zr?v6HY2n;q2+o3Fe^&Tv<+r3;4g4kl@o@I(tiF8q zVaN4|E3k+Qf6L~{|C~&^6meCVNw?1Dn3qE~ z$8B%+u-0F@Ea2>8*mIH3zj2?F_=+vy^7!+`ckb*yiEzePX5XTF51wutz#5z}&ze7rfe+^)&97+Kdk<>BKAe}2xc}8R zjCRpynSG%?uc`YeNuM5ipX7|O40jCpaQt&sdUqM+>9Y)H`-$}vqaVw8p5(kq=H(aR zdQK{PPMcpBo@b6L8g4zS4i#`quwW!`>t4;CjAvPS*k>4}F&L zWdRPyhZ(z*50RWPmf^BF?(WPF3Q0bHSM2;nhD*MriQ2#XI{oh-2sfplxj&t}-@T;l z4)N#%WueA0KF>h*yy&$lum2MxEPRmRY<*e#`}f-NUj)&ZqzvccdLACsYF~`7@Ii)C zIBsjUcb*^`la%2O4r2Dbx8Yl@{l$RbgAC`)VYmw4_rr|x^jU^GIf6Ym|L%)lGzjPB z_TAq4@C?e|7|ZzFlbN1(&FU}vTFpZCMS$bRv^zKMczY37z`IfZJ)-dQa}}dr#?Lao z@%J;ojO=EM%O}J6pgrJ%qyMSZ+Bn^DsCj$v^LEs}q_>~+E1hbN^Fldb2YBBLuK0p|n0<^Z^FUi*IuS1`?-F9i1Cc>86)z1q6J>;ZFJ1;?cY zPiVM|ndZ1KFNZsYa!@SbBAoAlpl8i2b3Q-!%QMFYt|h-1V_AL4;r;xR_uT9y`J%_n z`4qt6_;mz@(^(}-;SZt0<1st}&@)@6K?XSQB&cVlr$U_HyBEFML%=t1o-==f- zX?*2AbDWdojy%z@^-&Qohu)WsT}65tV_EsRINzNcKG*cjc*0yy1#q}do%YaGJ&8xL zfXnB&PD%fi5U$h$E^{^Cr)_!-tdCgmEH~HF$Ne&O+QlabXN+Zj2?g1F>8tmhG<+Cg z()Qrp@~ZmWS<}25VSd)c=6clHx+BDKFMV*)n}{p6h_lzS=jLa z;X?d=@zHxOhI-b-nK3N3%rOrc&T%!nZ`l9eo?7`8Js4XSGF6WPH_kF~78$_u=&o!Fgx1^~z5(=I&__?wOV9^BvFh z=}uVU%Yx{`=Rx9r#E1%#(qX5Vf&Z;B25)W7K)Np80VzG@e%XM@&7M-grV zT%$C`GQRvF?7nZyM=JFFCAemW^A@xA-saaUE+bht*i31RWqdVo{}0>I4YzmI=DQ*$ z9?sACuJ2NIkmOHV;B$P;+U=|>PFz4ZV=U9t5950Z2!5Fx-fonq&oZ35g#A8jv(5vL zqX$ahGs#md!})M)fsZMTv5e0(k*)hT4EY47 zY-%`Wp?)Uw=Wn}SIHw)qjIoR_1^jXj2;ThBCtZy4^jU@rf_;~Ozzh9uO+!m6;WNoo zEW;^aAMP^@9aa7T$*q7rE=pr8!_`3k*bg4)bg9-)D5K1AZs5cEGU<_z*I?clDh+&E zN3gezV(+~`L7B*Z^6}x)W%w-%GCfbix&s&Pw>JN)l;n&tjYnbeIle~DKfS!ZRKE8! znyH40;pTqH;PoYUc;@YdGsZIeoG?DL0l^!0_rYa_8r-ng$dhVB8=THl`gu&6XNz*i zw2aRV^%MQsy<3abMtS<&f+tE~K9A==gGXj6;eCq~`aWJPR@_^iy!ss1DinaT9@b3LDZ;7e7{8i}4VTq>;N zuzxwy^qVV)A|WrfUdwO^lh|`154U&|x>0yO96l4CVruWDv-SC>H<_)wNk$gS_!K@r z^ZuOHkubRiPOU#{-%3e7oAJ0?%lS6UrCj9Y?ghTKAoA0v%dr`%VT*xJrsov!C+7G!V9wW96}V*Bp)xncMLvmKWl8k-T7ngAA8?~G4QDU-Ba(sf5P4BQ}?qb7UYk) zd&<-q4@{phL(GHvPuM`T;oK?=W#B-8!}@bs>; zOH44gk944HF;0Vd2+ltTBu~L^MjDLvMYw%t&t=K@HgNkcynW*WtQjHrY$TQ8#xG^> zU+Uq%_U zLfHX@(iqEdxu6%;&wxCfxeo{!A_c-p0Bcc-uX|>RPv8**!W&%{>*JRO9`LTIDeLdEofi+S?jcM zy5s$^_R+dy4cO;TWIUPYHI6SE^2T+*^u)Y*WZD`7pR61*A7pyomhk`%!CG*`b^0K~ z<-z(d5d@Y_JRc)zkl}J5UmPC_3ya+Z3J6?yO@_&;us_mvS2<1)cUs-Ir|-X{Fs zePEG-aeYC?=e(EopQFC}>=bGgmb5<^t^oAJd4YZQrGtqx-EfYD_8D@MW@*oTRzTe* z`FJtemtC#5cRS<}PoA#J^z`%g-px^k(=Rm?8QMFw2S4ZYbeW~(UT4ln{Vr~_oC$w4 z{}u1wCWa;}NSZyS{`dVxC$stP%$eJ3u^h6SFII7grJ#+|?OG`{JYV1cSpFnK@%p)x zlGn2gxF3gle>r&4btvI6lpUg}-IfXM7W*druD&2Ehf>~-3Ibni=Reb?>unG7qxzEC zT(2+GUo@1@&F_!Z`o~grs*{D4@}quHZ2U6&Hh_J&08dJJ*hfTegMBhwG2C}b0lg`&e=>U?v;3Xlb>5wfc~HL)<@-zF3t)V|uyO53iLmn%;~p8( zPSmfkLibMw{~`l;Xdg>~v?wo2Q+uFws*gV>W!qi<``w7IRNzA!WgOx)BcGr1N#7qL zc|Wuhd`R|1E$r7dw)~8Gx|Xu{XGzz$f}YgzWEbl5NY8>vrhbvNhm?hEyzO<%8tp#w zcA?DCuTtDQ?EYVq9bYdLeP0CE>9Y(s0KUih%Z+Cr`I+R72^hRa_C=29<8)?=oE!`#CYE<{gX`3MDPpt&EZF8zebYE|8(2%8tLg5%E4_xPwH5Gk51C& zFRAo473cTJ0wEkN9wC)O=0d&va`%~+pNuc`5j&sd*nQzAq-VjV z%?hP4mfgY2B#(Et9p93>oEt?_MtgFUyqY);x<#ATkhQ9%wdP&=~y__7jd z^_YU+DXHfDpiEESm+bv#a}PU*AYW>+HT!JeGhBzHc2UF?R9UmHgzxukkNj}EXp@+h z>FNKKor@jv$Lfbkwzx8uQ--T@Em!Nyy$gRGgL)o=&xEI#I;@&w`tu~ww0U*pNST-07o}AMw@KZmE34a@Xv;La*0laqN3VuusGFX{Gok7peZQeaNH6M*m+v zPrst!uGIN5+RE+QD)5nC6p$sq*kO-X&sm<*_%d|9(l~tE1U@VN40K@pQh#2h^CjBl zdhQVTnn={Q_haYQzU|O?q~vS$l4jr4I-e&F-|HrPq2}!QoHK%ppD^XSM(3-E!?#o5 z)AYQpl~Td$v+Hd|k?~w1t1naa_J@1>GTfU2AN6Nj-e&z-1j@>1p&e;@UaQ;ZJ3Uj% z_m;p%{mVh%qk4&)GCjp>O~em8oeTFslOdh!p8q?2?K9jLmEnr!vG=W2J-c`Z;VLZP zlIOGgT;I1Iq3>sTW9MixzPttOzQt$N3nvp_js=|UF?POZS+jzt3D*&HpftuZK0Dwp zh3`Jg=+=W|$6LUK{p{TKAK&+Qj&LhLcS>U{<4b>*-51TM)PI*I1I72CQD6b5@N&qR=hgOUw^+c1;rB`G zz<1{IZugL$Y3t4P^m4wg(9$}Qmh{Jq(!|Cjn3;k?8B3Z*fY)wBK2v-@f@*LIphvPmzP>*;%uwZGho zA!`WN+XBwLiPh^(H-&I|qJ}~XxS}oWy`fvTR`}796)%@446Xl{+2;ow-cLQz>5gHD zD~HcIf~91*Dv-MvzP@VC+7TpQ9E!!ta8Wovf&KUs%|BE3*^gP|OMZ#j_swlSUr>*GWVZC1Hed;X26~Z-2V@&?c zF%nJ31^ID zxFEkjUEFKjYNI@Tmf`jTAFf}1`=QsfB$s66JqsLn*2J+B3Fox%o`n$Ti3cZo47zX~ z;X+el%TK0f7;sqMhjjly)3fs`b6kYuCWj7cdKO#26~lesGlB2kimmC`-a`fq>MqmM z2RQ8D0}Xs%kQbikLfobX;&O*KRj^$SJ@sGQb2>6TOF>V>^*hlp++kin-;drp6FpFE z(Ju<L>gMU-W|r{aW$$R0SfNbGYKf7z6e5(m=tDRhn~biEum z6`jn3to)pCZU%K8`Ao;>NzNG4_#OaX(D)u{fL~Ar?8E5XfOwvW>=yS?s2ozkCgdxI z*l~m0K2cX$IS{9@94bcCEr;aNbqd*qoMPUxG?iaR0q3%S)5@=_UVc?^?3->%xJDJ-@{;aS3$X{alY4-i^Vx{W9Tm^MV{M@a^m=?ofn59$D zaGAPaGCIrkEHLp)7|x%e-LLMPkwWI?ZFImNtXX{u*y1YDT~oaWD)bbltoSwI=bEHi)d{?nCm{RZsewmco{OU#q% zSr~js^~{wi=M!}xf7Vye$Y0WW)=jq$&pL{EQ~E&@`=T)3qMvWNN&mei!cwgHv%Ah` zi_;Gln($SC|L{D@j=sB>QT|11V|^;?uall)>&a417|U>_AcK0=q;Av3&9DXBVUWS~?RRbN8HjmfNMCKvr$DGRjk76kGuyuHT?xTwL!%2#Iv7Uc2J~tm99{TnIZJinvxG+0frzY;#*Zm<2 z?N-JY0l(n6nXd*`spozVO8N=1uNF9{pYY!#Z?~ek)KB301lMkU;Br7*TBta&&~YB4 z>EwhDJZRVG0>mr0U*33i9xmgxP$T$8hVugsd9GXDX%T_!1{=wr`F^&qfpW>+%Y*X>k8s4H}n(a&urize({O(lfDcg58>`3f!BX%Ue1f{m z?DOqq=kn6edK8OP4Qcyg+aLL}CaTxZnvWaT9y0m4!>vgdW)dI9Mf-J5nVzYav+-eY z47Z)X571rmct;Y?*=nw* zAMC?9;o7bG?>hx7-~xcdwNlO3;|q!Jqy=2+t8ARUcwDVkepBEY<$Ea3(iaMYhwoj+Rb&+-dAN|n>RKa<%P z;^jB?8dqQ9^BeeNxJtlbJKA;OA9oS1$^x#6*R$lDD+dtH7|Zy=;7=Sk*IqgntG6`B zaAn+|pWb=#Tmp66Ze9)%UVe96G~$1R^IE`#fDaqqpq{(5=Pk-C;0|)XwA^1jn)r+{ z_4Cm`^nO0Pw{iV^nEU0?pVqD=o{SyleyIW+_JhUkH)AtYL!kv+0UuYgzaBA+a2RLr z(feLm`9(P2>j!q;E8@ho3>Ss+!vVA1)5EJoSurie@p9Nvz7ngqG~oPO4ez&5$p87v z9#;6(nCPy@^p7$=o5K2uZM~kkN0*FE$#8250_uA!ihf^mRjjoBNrsE^azAm#vL3o* zY)XbZ$^CNEl$*aH>9B=zPX_z2-R{1y%Ws6sd(FI_B_3k^OVZB>>#CRgOesQ{6=z&h$3HS$CFq3vB+WlKbQ9t*B)o2JpB-dy z-5C7&<8l=Q{|YSN9K61KQ`^c;xGffNnPqHUoRX2C^`CCIMtNW?v(L4Y>G{^{EBBLZ zFO-UtBVKF=0XmKAD~=Z?Na;E_-L$ zSA;XhGMt0s*0sph&Oungr9l0}y_Q?%Kk%GUo<7U?1^{0&2z32;+$fSOf@_qF=-ht3iVpu=eu{YR!lLVIDF-wvvS{D_CXoRms`+t%@=IH;JkT1YW;i} zT%$ZNmg!kq#nwmFld2by>~^?DX^dsK6<;#GXNuS0@h3F|;Tlh>kqqbiioN$Itz~8> zQC3XLaG{y(Jki)ii#{dU+S4Tpr7@P_>`-5@;pH8^LKKZj%WyS|O4M~@?#D@EG3UzV zv9@6bGF)v}_8!lt3O0AvNWPB6%5WXIo=>0Gt5U-m5;9x_^2T{-ZHG0#ka%jfIiCw; zQUI{1VBTM7$rJ+y^OEs-;XU$Lp}*>MHEegl`@JpVHh>)JIbnD5e8hz;;#|-#A>Zn* zXKClpQob>_&jB)MU$@g2;&z`JiY(y#AcK1L+56g^9A+!}&%B-m|M08*%e(J=8%3Ps z%ZQWk6wCbShrDs2vUZHJ3L+=Tim?o*@bReUkZV6^2yV^)v3_uUuXg`HIXKJUv&e;M z8K0Z;-FILy%zK(RE5TkXxG3b0r0;d~d4UcVP{Zi~1Y?w5O;{ra`B@OaR^)qaI zFUo3<({nXM47$qryz5v$|Igc3tsq<(T%$C`I8RZ-(Kd?njRgv(BQxiyF{Z`v!#(;Z z4fjkdCF3Wyj?2E^qv#TPY9P#>D9H5O&-Lv8>G{u-T-B4YddhHq?$2{}EozWIk3rrz zzJIv?hxNoazSNwr3}kS8-;>oztDjK|I6Kr&^jEJ)f6Z-KPn+{O0EY#><8uL&Lr7?SvjPC%={9#>daD-T>;l9jj;@u z1bX5+=Z>L^Mm|c}-!#Vhr z(Tek-)f*EF;WJL+F~8_dHsxXXjD7w9zv8?reZ4m1%J^!459?W|Y|5!Pd^9g;2KnP0(Ebp+f9uI<`2C}VN>+Z~w|heMOF*LM>@N*|fzRZZTJ#Hi zw(6HsI5&!Onb7RKbcnQI2R-P6%%6UK-gNlnAGGymu7E+T3>QgVrMBCaZ+Mnc{+(OJ zj(=3o6yd&ojfMNZGQQd}c7JorJ+betAntg2y6Q!=VzLyss94WK<`*CM58KYt@AqpXY~XaPPif$ffG_A=f@`&0Pn}IaUx%t= zo0F{{=zN3LnSq>4Pyeu|)&6X1r-I|ek^Jpuh0+*ne(9n6(>GGC=O)3QGQNs_i`D%Q z+mFLOBaYC2v3`-^+YJ8z~%CKeR^(?4ix{{tGde(!G2kU7V+mW2I+wCIE*X3w;|p^8z7A~H${}@+dHIC^hht%{gM+l1 zRc!$m=6rKryj-i-DW972r9*weHuK_*BS*%wQD$FqnC%xFZ*piN;X1-KN@Fa;!P6w_ z`)wj`>F;?~_L}2X>|=Zp`#LHnTd4(H6vkV;e{0*n;xUY5f%>IfMemnt$I08fh?m(H z;pMP*!lV?E-SU~aeZ|oJ(6CMkU%~#MJjnR=FJ#YY1P8yF~L($NyNzy3Dm<++4QJz$RO3^KSsar@5ysr$l+ zoniqO;C{I<^-zP#A#(+Lj;Q&D2R|e|jj^m8in*R2Ke+HVk`GzXGsyKEx#`QedQ$mm z^XuI^)bm;SpZrz#e59AywONYZCv-s<4vQMlRHT0fXuV_tq)fIA0> zI^F-~6yiH*z|r{N6vl@dzWyhSES8l+GM^8&Jl1IkVTyk-*E5^j=etWEZ}WdO$3>vs z;=p&g!~G=jZ6E%kLTQX;dagOl>UH8xqt=mZ#&70)PN<(ack27n9XArr7|ZzV+%JVI zf7RAG_9Nze4#43JgfphkT|+#(qvp6A?#~bNn!$XRg{nWzaZb*6%Z`C`uh$8*G*QW$_W=~!r&kBlHy&#=5rY<&F6L6e79MelKA^1m8a@~ zsZzd!!t6p;4(a^9(~E@{AHtH#X%<^{sICm>f^xtD7{4Q&i!!nx!|f0Hl~y3!vZ|{( z-`$WH_6y)Wg4>@~Vo}06uD|}CAky*81zL_hNA^cz&+k3)KCB zVurswMYcb;mST_@2ROh^NGie^7L7Ta|0jFmzp2w(S_uU@ofXf3?J05 z@8F>W$MhU9xL5x%L;LjYGqlg3UVVCx={a)Dh(1Ge`s9uomffRwpP?dF#utKj^x^nk zdG`2?qO6#f;X1>d5$kRK`H$6zvSM0>i}LzeezMzQQC3XLaM>^)M83N_EzA~W#k35U z1an3lPj@|?S1!tmX&J7Nm&0dWoP9-EF)hO--_Gh;?JsHTMOiT|!xaNxA_#r6tltn( zR!qxqsmbj8;GX!$=cVIq*4e96zkE^kb&lHJ;j_qvX&GPO9M*2Ty>#)fC{gnAMoYNe zfV%|pERIx;KwJbq!^fCF<4WZ9fRcFjJO#guoXg@ELBj``p1V)7_eyWcf9En1KfEaR zOo|K_+|AB2JhJD;TL@>2Nzd#z0*d!Cre8*SF`$^$CS3;68m<~W(2wxr4G z@AxfRvK`tVytk=C{Bke*GoUyxXMXe)G>$L-W_Et!^WWa8WmdrRw+mwZLgQGdzrNq< z>1bYlqX&qnL6xHqJWi_#sO|l`trL&XS2=Kv(iqEdhug4ohwe>BJE26t|G` zpH&vxkxbA1U~39EVaWsQI*Ps!(=yzOL9AY9mbcW-6NMj+t=BSK$FG@Rj=XPwK;#h9 zGF-_4wl9@^$KjcxteBSJDrU3!%eg0(y(h|wX&J5(&KTl8=8>scUy^K%;oM;c|04gg z$x3m1*6wO~Oc+@#f9<}YVm>AC@R!jK8q)CB*hDI#3VXtG${PkwFRc}}|Qwtx$O4BGe1JNIhs zXtxF2Nsz&LR;L%cYka9cnCt21=V@PEny0OgTo!P?Fndn8c1Mp>WZ#POW81FGFU62I z+V`aU`Q?P$V1ch1WN@FMXGvab!qr;9IS#V(8f*U=I*)Jz;2Nbdmg!jpGI$b7FL`Hu0{crWR9nEMz+N?u-xn7)!)B<40T%YJgS>vW z=^W7Zq024cI>LGd?R!Dlb0ep-jfZQL##rW;DBt&9+2@blB-`7DMO`!8$pAK|M&SCOiNXL_>>x2sdhH$kUPcpKY=JUV{My&Yz;l$^7MCZ$gG|JT%jC>(@whH;Azsq*$xkSo~`1}H2RU`N! z+&<~=t4a8hy}EtbkS2ZN#YX#VW0^nAewUl<^9p>?M)27=pV{wZ%i4pz2is>zdS<=W z?;7nSJu~L&eo-K8lrw%d`o+QZH2a-w;wu&S!j0f_az3-)ttP(2dAfa0NE_`jem2?{ z;q^LN*-vXnXK|3M9eD)4U?cckb6GvJ4;iBICDy}NBk7B{+p-y6ZhOP$oMjWgY0uRg3rhKJR@}b zaE!qq;|mCUsS6rzpP%y`zByO3kM3!Se6oIGf66L#oc=Rmg*JalY7sl$Qaf^iZseEZ zM(7#jdR7Q};y8st)RXu^0$*(-_`;m8=%ilmv{xqMb3Cfsmk()Gv3mX)`w7>et?KwU z#if@!IaS8z7x-L_7~iAZzWqYI#yJ-Tkxy3cP8c6>U#ijC{$QZ^JRY+;L5SLB^L+ zte3k2X;rYEe?~q#=kp4DDI723D;4;{jo@=|z8s-{!L=s_8DHXKx_wSatAh3XGur3m ze3e4^;anSojL#$R1slQV;(Sqo57&YiWPCLOpLgn5MHQ^)pV2;r_=f52HkIQ=J|oUe zei3lEhl4@HQN8v(u9rgvq*cLs{u%kaoG;~+Ua#?<7X}%hZIRBG329ZZo_|I@ALlDP zt@F|5l#I_U@C6#d=jVKWfe+U$7-W1AfiJbB;r0bN-~Mj;xOpj~lk&NMLmU4Z!589u zL4l7B8_Vnq34FDU;0trUDI@iI-L@Y49E)}P@*&Md<3`5%65)I$!o1ba(K7q|0$)`l z_@bQ8A@qao>fuXXqT81ZX)YQ!GTLXG&&Dy&e|mdpUk{&G;45ncpPSDo)(CubvsvcP zsKA%8wBhz8lYPf^`_k*NPXP{U52cOZvva;2f$#Eq_`(7o?!j=;xRJ5^9GuTS7WO~W;LJ4Q&bqtH z8p65YtTUxCmf05q8N^-s%sqeMI$(g|EOb1a{S)>(?%i%0`Vr=w?1(M%c(^tHvi;<3 z$98T*84O7$%=L^w8^txzjk~_6Q9hu;@s+^;tRFr!@7e_Vs+@zU?Hp9j;Lt zV;OEmGrw96J2F4j)~N{z=C}%wX#siucK=FRg4=S=FvoeJKBfR}P<@b+GQ7CV>zoH9haFO!`Z%O~?^Z@9OCYhmY+ z?JtsUVZ;3n8P30g{k~|zw$shfFLuMdTg*#_%d)d_@AyJFEmdruC5si}j)x1wGZ46E zcKZb@TqIj(2{O1gRi6AD ztDzcF+sE2>27U1!oR91=Pr;8K9@AH{SmqZm%wce^t>i>z6=CdG#`4j?=;7mZ;{RqT z9{3~qcrndG65r70Ax=oglc(!4Jv}4XbFIB^y7fVl!?;%Hdu6y;X^%4E*Po+xP8%DOx5z_j+T*GP4tg&@{?q1uG4@M-cqYpM znU;1OTle`!C$Y)fLy$iQc4^z;qe#-*MD7>cXS!diEa)jKhY06eGqH6!@s%3J6)Fe+ zUY#$x#@sJ5zR)A=d9{c3gs(>r*spq4Azq5fpEze%&s82D`K4CyO91MeCJ-kf z^NW4YtLi!b7Pr2j`XzjQY+sF8$#5S29N*6w2P=rK#KJfo2H#)@Up@L+ZC=;0eJrPp z&wf8Ezc-U_9!z}3ScY>CS**S{ro(ez!Ms2oWH<-#p`HuEe@~O6JJVrCHc;Vd58>`YGcp6G_5}PJK>D64Cm&0IzK!9JjsVF@TGx2vA^0? zv}g(8f}LaQr;M+n3!B${@WYdT5bhvcqcp}cT+WT`obmRoJD)}gH+&W`@o;|b&*haH z)nG|nUn8PIs^n?6>d{=xOEIUnIdAWJyZRmfVJl=;)ylFdKY z-~Pe>u>2}I#kO_Ki0o?yY3x6vP!|9~)#t#6z^4}$;j9-OC3Elgj*1D#`SLnCE=+0u*6=L2sx zS5O9nXX|1`P4IuDXN|CKtl8K&J&Ry`z=pS@-JVxPj-pJxO~~~00S?FBtC~J?HQ~wy z3|=EWL!v*YJ*bd;yjaGU5B(>WYj!*kT-Pd6X_}&Ro2;OyGW8KP#s&xEH~##h+Gul9rM?!G*Lxb5(nP0mtnwXO?b9c?{`2V|Ate%>B7OKIFgH zxO$!3hdqb+_U2}=AKAo~4WCs~;h#)TH}3~=of9um`}2Ik^b8$>`HKZT$-WA~zG4gO zX~Nk#AL^C)ZR7ls(Uc=hMcAd-eAvgg47^ zchA#ViSMMqmu-PhR({UetUp^n@>n-wm|}Q8W()p>0=nToLn*}0Epk064~%IX)7Hgs ztqA_S@JH+7+#eSx@X;1HEw051*@c`aS6?8$`s|~APPC8w84}8&)`ERn zxffrmc%7_%miC^j$aMT!Qa|g{lk67tq;}+hI)de%4{@@E`5^g4EQf=jWCZ@G9O%8e z&f#^-p$7Kj$REfFuzG{6Uvfi#js7a?Ql#A<8*g~u6WLe#Dzh&Panyo+RDRhYOYOn4 z&0J6NOMT@)c8lepjnj+o)c69s%=xtXGD+_z5}zBZ$eelKJpC%!m%;sl-&AZj=d)rT zjbl2S(C<#s^$cy4>p4x(lla7X22&546TYB&M&)TAQMaB|4OpyD|A%ES>Lg2R{=8q; z)BCbq&j$oOHQe9&dz7jw<$Q|;9M#X=uqTN1%!g&LLyi;mrFlUu>^D-qtg%o(2^RrA z!r3j9JK>7p-Yem98-P10@ToS6#z@k{mkjrHi7#luKC0K@*Yx*6c+1TFNw`e#J+*hY zg>ryuXgdCp{$hKlau0C6;@4&=weTl#Ma(7QGq#5ivH)dEgyf5-LqmmR0v z9}(Igm3u{*USAxqo9jvCHwEm&`jQM>74M9-Y+o_ph{tb%kNmPhz*RK>mjGv^h!1s@ zxIX3*@r4Awd<%S9IZW02&uARJBB30}pBb=bM1T6B?@a#0Tu*8b^^Lb=x7hwPJ>9yV z$&2LWS1jmBe8%>tz!%j1@(<^${&nA_w?DG4l-q}E;)*!yF|i=x@!17F8gGlo=zOle zgKiseTc4c1LwgMD({p%Vc!^n$oSYuLvIq7Vl;i4wS9AId?Ki?TbZ{>jUo*Ifdysy9 z9@FeTLI%$y2xk%KykQNb`Q^BgtY0c!z@86Z-0X#o1T0Q^F(xna3+Wl;dYauwAU*AG z>U!ovnt0;HM!pc|v-&)&PvEO)1Yel*nLQ6n_SwpH`!XRN&n~)dv@gQ>tUlN37We{< z;EQrTtIxGY1isX_8g8Ghh~0Ox`dq6EIH+D1H-ayj^I3haH6-xWHiFO2`K&(I>UdkX zFCWrWFXF|<`r_bxR-bG23w%|L;B#_5tIxG2zoXli4e5Ax(RHJJF3xB5xmK^hSJntV zh4Yy`*Gla@D)4258g8GP^I3g9RRIoa52cOZ^Kw3`&!>h3K0GT&hlTU{(Z9|4sNDVe^OVrN^HhI0ARW&ibX_*y`WCSJjjmAQ zFp>*j9(#X9hO2-xjd;Mg$t!>FAe=439G3|)DFFDiQ$b(CW;t9q|-dPYG{T>n%ZYOl?+23!^E7nz=ZkU@XC zKOMLY`7u;kz?EIi&QDC;*?Krb*=*%cnU`NCJjZ}`&rR7flyDgD7xwyOdM0&be6LQw zR=aQC8?K3Y$Z(|~gZ7PR`|z728@7N8fS!nZuFadL2v=<3+;-{H?Dw6@9=%9A@11^) zxt<=7!F5IZ&EL!*zMug|{fkG~SIqdJarGtPTISE`on9JDe0I1-X^dt5v_b!Z>#esR zC{a)bL#_d*t;aUDQEYtQ6WgFFZ20$$Pro4JO9noy*JayIoF+-1flr1z2r?}J@b--6 zR};>5U95f7{=(oxYJbIx=PR0goP>-o6Y|FLD`@e@#{|nU@X2tyIqr1Ff4(JL#DFu7 ze-YR#$Max`uQdETt)2VxSee~Ve5sCDzsU4-fehOBVz=?yor+=$xRmSJa~hN9yt$hA z9B_@&7|Zx_;k?aR@SS%~^1mdTZQ)$(_U9I><^JK9?_EZ?A`5&@@C(-4*-h6ggsZZE za{&&=u|rEgznyR$Z!ouSJjh`EY<l*U-b=LSCXXU_Fo6_mkHY5^Ap8SHoMf1SkRU1~UN zz-j$Ub{i#m>3ju+66doR(_)yqRR1K?)64aI%ezA%$#e_ncRe73_qW0{`$m$7-)$qlz1B3VCNqcp}cTn3!=#CALW_?XX0)|sx? zm3X-1bY@@Mao53qG7H&ojnWv)_@W?#<5WhQ6WLele@)Nn`hH~b zKVua^L`yCc^weKO4E=dg*S`Nh^~HAcWR)KdD{F!53k&wy!{&T6e@VTM z=^4nJuSE8m&<4Jt~`$QEOAC` z--0U0a7k`9FW>e>XtSthAzY`=O(B7Q^|f27N78otkKVs1aq7!j6Z=X&SgQ8B6Z5Ce zK}!Pgne?MrX5TUReG5FFmA|vuR+4iXd_(oqyF@=cy^^E$7JUAbM?Js%%ETs(o$gX%X)lVDVN9T4qJ~PLWo{x!KSA|D z+E1L&`-yNI`!);x1l3PJ_lteqIK|z@qmUot#ah2RQ}1`33FD-=mn3|)Nz5-53t=u% zW$qVQKhfL1M4h)zsd^Rq3Fyz}>-_`iEyGnLvftggW%YsoNX{5*_IY&sTodJbmI?OB z_#B07zo4S>)LxONrrjomKFe^${P%$_ANEyTJ!QC5xTl^B8Q-_`#PyVa#z*TkF1#kg zh57ufUxji5;dal6ZAUVkGMKHW`@NGGC0rP;Q5s`v4^_hWko(kp1;48=$oLXnjBnsG zx8p5wHF)3}PpXj&7X%p`P@bFk-isugHN+ejd5isC!NK=-t|A=99Ush&{i6!L%WNAi8J z*G=a0!TxMLop)}{<-}3=mHB>aehynVeqZ+LErcr`7OSVspT_`)^=QX!|C~*@AV2@xmbOT2?U z*R%G4ymXRv!Zk``EW_o24A!%m3qI;avMVg$f*^zKp;gpZdME|jReC>9eB7vbg5clJ3@&zd-+kPpg=LB>}D>lIvQRdnt1I`ZX8 z_6uY<_cYd@O=!08fXE@HWjN;*te@DM*XaS0^}sbsV@&;o&!_hjj!p9w{I0%0^Uv(> z_4#MO!a7H$XBON~#df)A_M$z+x!q7dTktPj5yt2L4&oN$6q1h@%lHP|$;!R|=oo4fL2kHb_sM%_e69+?zm9padeVBu)yJ=p|7)8!&M)I3Z}f9=#*F2}S7zYT`m?relvF4S zltbTOYzzmM=vQR+MImo|=k9wK%ot9RNu%ZVZ4m4WabCj6Vi}(TdE9Mi*d6Zr} z?Kt6#v5YVAF2?s%m-#J8-U-(zjj;^39qdPc)_yZ~Ey?B;o8#LxqkjIoT* z13F=QsBu1t%}Wg{40>wyvu7)Xo`ZE>I8Nc>G0_lh6qVa|82TWzugg6T-$TGk10VID z5n-NX`$^s&C=ZNf_IY_f-}HtHG|jvobAS5bz6|!q8z&vuNgVbu=D1vt!Fsmf|Mope zxB?5fll(mkcaI&IN4Tun=6s1?v-|xQj4Jz;a1{nVt^5l0@(aZA=P=Dna(~(s*4}SQ z5A`6vOt?mAjM07!sqj29?W1J;VqSivXGZ(Gl)$OE3g+QD&0#4XyovA{xmD2BXSL!NsMzWh9KY_Pyr-k04E=yU(5k%Y7L zHrKNn^2YVpr0e!xOSoDKd_@tq&;H-9t-m1LmIw8*53kAml6)JRf8KZG-?oGs57#J- zu?!dD_nGfle?XIUj5EjiVEk(ad3w(NuR;4#`H(mE<4vAE-U}i%6dCxapU)KL$)(%o zD@;26f0=#NU0FRlygftf2lEZ@sgdC-d$Re`(b{#t5#vb<<=*jbR_<+1o&1t;*>H{0 z7#rJr5cVdpy?c%|yuF8c`SqUnxq^9PSYzOm*>{k?cVu?L%i8>mq4obVoc9oWuh{7B zefE=N)B;~;xNn2|3};ra!D*WsT*AE^yddMt7|+_Dz5E-kU+N9l)C~AP8Lk%c#`*5> z78C9y*%Y@qt`PFZc3XSycYeb8ep#$g8e?Pmxp{x>{LC*-E zhvc8xwU%((E%?RTW2br_Z%wnx1%y*x*`QDwW0^m_FptD}&%VS(-++X(%AjLBT$JlM z!F6F4%3wHbMNjZ4@^z`m|5*j`f0+;IeW6TGr^4QE^U3`30fg&l*fWsfY>zVgw*7YZ z3xrFbU|wH53frfBt1Mv(;k*|3@*r=V?;bz$f!2Snu)ya7zu+9ILTI8&{I)ZIh_5&%29+Xw7|FKcQ$Vw z@ki%lgiE+5R!2gZ7T|z3sOxpGJH+55$&(OwWU$6ZU7G6A60>XS>%NXXo{7?PJaR5-!sM&cSh; z${+7VIJW_p!M~`5JuKSC$~`Kdw^AM$%j^q4-dGO7Q{HYQyW7Ag!<_^ftY;Ub_0;rC z&5!j9>FIrLp^^-Ln130MF&!@ut^#Z#`!bI;&OR6Dg!Xy+e_Tdsg;u?<&N%!N5oM1;8e<&-GX1?5pPX9jREGPkbp8W6Qy4Uzpox_S~n; zz5$STDOW>^A9$3u&!Ap?dXMQja!gL2 zVZ+As8PQ|F@E$q+1`irDEW1bVK0_fh@=FMOL4I)@Z=7FTyd2tGp!W-YgPumeM7Uqf zo==teMd5rWuiL7SU#bjzWS<{wBKxu}Jhvp{i_Bu{+x4Dbo+G~ff7L&)i*ozSo`;q3 zb)3Y;het0t@GS8~4SX_OQU6uyIDO#Lm*MLswsQDPc#6p{W#9|)i|5bAm3uIa-3LnD zc*Swb-?6;@_F#iO25j$U&+XE=)Lj0%&Vg*sVT{x!Fc{1QCN zqtNqhHIRydC6P@QX~(jsw{F>(>%bU59#R!)H`M3{`vD*t)=l^p@k4H`i@U z{0%;*z-P?QyLw~d@9?<=|9n^a`b0>o!Dye4+t--!A$SA({eY#tetm@U$GG!My^fM! zeBcZ6i|vGYeKG3k=X#p;^He_-8@sQK`UEWSk)CdlB|Re+aI*4CC}87s=k8Z&Upp^} zowpk83vv6*`fFTwVW>R`{R@BoFBQ`2#d`jceJ+qC`$86Qv@cvN@YTA^+pW>QFt^XF zzc%8Wygze&Q1^YmnsdQ!vd?i!w@>N)kf~pYufF?LU$kZ|I_tMw3*jy znVyFSviHR?g2%F(kaVPN{7_UBPtzWh};Y zydcxlp2~g)VDauEXzxvIt|8X^SzEyTxogYcOB=#heLA4tXCBb(;S+=_Uj3v(X^drh zDxl}3@ZB3D4|YU}aE>)SBV%@``&lbK&(!u!m7@U#c__&EJj2=VmU*^xx(fM%@R{T( zrg=ebj(*-dlF_(w*nI~(54QiMEw3WqN%%}W6cb-!))=k*`HJV&kt2DEW%hZwKet!^ zHWB%bjjYQj!&P>CQQa^2zh*D2r2OsIycnZ{3|AE1tlk&>=ldD`kOM-3lEZhBTn=2LG{!RA{=J*k{W{mPyP(|R_rTz@h>3?w_~mJ}e%4;o;yaS}{QPtb zR>tS~jPa#3Yc&D+R={V%Q!K+dTe0?cq&%Yo;v#ohD~H_ujPKU;(^ZHofX~E3v5c=0 z>M_=%3*W{lhIzvtHBx3Pa<&gH^$f0U1m z@9^)N)qRvd-n|s=BQ&v9JsUfBiKk~}zn9hea@)d_S5p2d_GJpC+wF!yKDU+n#gCC7@_5Uw{| zqcp}cJqu^Pq_*3IBfpA>vSQje{`vX5&g%P@?1}pLo-tvZBIYei8~L1kyfu6Ok`d?P zIIHhbsu1+Fo$YC`o(ku)`W~fB;GlVryAgbD&S&*KN&$f{(g;2;=d=1ArPOnD`&^Kg zm9==ySbl!aXZ1Zw#R6Zb5qu%eXZ9YY46byoz~?x(;r4|&U*M$vJKz`cyv5%=Ccb>& zp!(u(1Yd;nZ8)a$(VAPvS0(TzCpFx@DChGEd@1$Vmkk_bpSKZw$;E6vmLvR5eT#bd z$^^b>Blzr`uTm&Knv2Q&nQ@+Op8{#FTHMIk9-N#nD)8aGBn&dXQh_hr2tF6_4I85U zE_W)Ulkz1t*X?scnv2GbjP@zyPk|5bnP8CF=MnfarZjw9@p8VDQ+j*Avnd!vKBJy~ zjw?K^<61LV4365Z{e0aoxsc|faU&yNkn{NkzO;Jyd;(uZBlyCcZ-2L3t=w^qg+cTS z*=I}E?aPF;Dp=1yqkR$17Zmu~aJ-DqE${^z!DoAn^%GM@>h-#9J$w;?FZF_k+n3Dw zN`~ls_ImhSz(M_BaU=K~oX;WjgYD|!3kiI+jo@=~KF@!8duU$|pW{N^zI;e?(YTSZ zzPLEw8iDV!dieYTUsWUc6teHQZeMyme90H-_GLplu3`KOqkV49mm~09UJsvF;LDuZ zh<=ds*@xV#wRhUn6WgCrPd~@?7I3t<5^>Z|WTfbRQ6Sw=zXUm7zQ9L$%lJwKzHlS> zLY%Ke;Dg1u8f1KlEp+>wkmjOsBcngVoG&Qw!6uU$WPBchFW3ma27mXXq>`VQE{od|tTj#8d2Q-c=4z6dx-}?MTJ!b+LhH79>_jtnr>eZ(sF72s*Eo>V5j=L_B2=D`*g|Jl+ivXx6dWmcRh!g*_RIf#2xR^ ztFHShmPP+W_SrAh?aPI&^l3k;{8MB}dgg7v$ph6$|x@Hrqw}NY4sE z&&-Crzvt9N3cUv@)K+d^@_b!uV>!6Fo?8SxJ8^MQPnlnmQj>3&GD!HJ1S&fG3ZD3)mpHR?)z4?T%x_N32nsu>kFi3GZ4aaB|dK7F~Pnr zJOk0b^C;7jR$6^=UMAZy&d%_R;6;g|0 zqkVpEU+OS@K6oP+7VV>RPs#0AeL)c~q`7F^i0sP-S+cLp0*>^=ehB+osw?7qJn21L zi2^&}sQg0QzAVAMu3TQUkJ>|&+ZS%{QJhbXQ-rLgNwO~k|GpNZMbGU|(*!94Fc*YkyJjE$#)c`@^}9 zWOHv?rcfGVqkU0spCZ&xdU!&#PsZnef}Pt=_~O~GMGi4d}H@A=Utgro1 zxz^YIY>U`>vq-S7J6BM&kMzuZYMiELpaFVXX-A&F^mat`GYa)Hx0JQ>hy^~>`ByMy~P++A-EH%t6Ue7#`|AU<~k?5h>*%fHgRzG&@l zsowtZU5TO(DBVhEe@6S9+`fQNU+7_WvA)RKgKZ#tPI1A^lp-Ae?1pFGk)O)13T&eC z%g!*jPaFS0md^cpE#Qpyxww6mf_=Ag$B6b3uD zd+9*EW>)8 z0$&>K3-WU;Nw@0u^{mIf48cCdfe#t5eTH+`c@)zCIHBqY3x(#@V;wVfH-97au)9bhdmr%cgyR1eF8zgAs0@SFo=y2Z-e- zv#*?=ldE}ef>vbN@NO58kL>ej?#BHS;1+WeTUP7Xwt&1w`)nm_ zUbjK8?>4TWnSCzc!}j-j5C2T$EA+mO`3~#*Jj6 z#9&qq3X}tu`(rO2=XP&tIJ3B`M@S>54KK?D~BxTuM`bjB|N95hacI-C2G z^h^a=(zDnC&Zwt<0P8<9e{a_V4sC0DqGeNGP892i5$EIf`33t1N$eBz;9uJ!j@Q(F z_mXAn&!cNbm6U(lWqRL& z*NpasxnGh#)%`MrgT;Pc##dX!-e=W)N%oJ#H(-Ih+{0iK+2_e@oP7$6)3_(S;nCI# z@fl;IeGzV-L$Gfs2btNI1Ml3y@#xUTQf>ZHZsGaV!%*(nF8^uY@;xl~^hZ}IoKlOZ z+-txW@V*2iUoz*b zom8Q1b>dGhc5^|B!A*NDB=?FFQ^G@i0q~jd6wCBXc#_%I z;bNa=Ulv>=48}5C!67zJUUoDvo@9GpxkRBf#tHmGkiW+zvxi5Cz#qRHH=_AOYEOMW z;odRM6i4k(xy7TD@pe!O>9|Dv3uF5W^7d!zW9_{vVSz94)`s(iIG@>jPRKqdaFBhT zM(~9>pV|9Lh%YGc)ii=H!uibJA3}U~r*2;^q#Ig(VZKjm_C62d^9g(vjo`B_VdJ#f z`!$Hq25o@K58FgT?Xz<}v-e~WpIhL|XheI6aDSS;w?fuWq%UUAqu(&67T#ab#8$kv zZofq1nD+;L94m&l-%!7}ma=jP_502#t{atvK+L*Prl%8piu=>)6({Z|-qMA!{UGUC zCFq&o%Un+xpBwnF!@V-EY#Z@mTqtnLaL(53zV_~)bHnJ*qIGrsDZ_bz57!;33nt)g zcr_drxbOnm=QyaBgWrOE)L$2KoVT|}N$qa#7s6%!$oTx9!}ySGj?)IJ+*S(dhn%WW zhJU+8>K8QJ;Z{l&w+lIS2|blDN>6LJkvd;;9KPKGpR61<9AfY3UOo7`y*dND197ol z*JQXbub;bq=?F_*cwb4eE>HQ$aOoh2et!S;JBO28_?=j+3|GSSOkecp66Et(_N5+@? z|5&>oIH{)gKP4=}VzDJPYOzSBS~U^x#9}2iw6PN1Qd%sn3R9Ay)TU%qYE^1hTTOpx zN@XJq7K>ylEW*fQk=IgQi|~7%d+u}ZnY+*3dv-s+`}xeCbMHLg`+feMbI&>V&Rvj0 zzwAAH*@GxCK@k@LIUIlf8n|X9;zED>R6$5(6Ma%TOp19AR`)%45$DSV%m-due zzmyJq829o^zB1=v(wj-H*k&L4Ti?DH{d~jdkd{|5 zQZtS^793yst550g<#_CY67xQZ{RA8?xJ|@;)4Qdo*yU-T!*u}ru)V)@qNfkZWkyqT zjl;!_eA#ozu=fauWrfria=3ip!-;f{j4Kw)IJwT@iUEgyzH|5^!$`K!_O25SR|I~+ zdGYD@Zl<5?65K2)e!d+de%_t%{O6S|%g;*C6X*REwIj@aK6`npKMyvTz0XHA-%`Po zzN}?@X+JH}|9^lse$6)QC$eDQG|Z@Qe(}KXLa-k^dfOM9HVn!N&QRUTWehB9oRB| z&Nuk{D?j*>I0{yz@^N~0fc^#ja`A$zej=Q`g*(w}v!eH?`n@961i%C2rap5rz z7lrpSVmtc1>-J?J5h$_QhB(U4QYk+Z!Is6(*Gk-fsP^~H!gJG>ka#&gvyJOt4oF8PkzY* zU(kKS(!so*gu#;It1{*txBG8tkY(k%eVs2s?{7VQWXgJhjtN*uj&GO2H}siLue2mn zYaDJGOSMCL-zE8l z_$Ety=o^khKE~Ns3~|S}-ja9qN3yJ3C%#P*U&JAPGLGY`g8mN2yVrkF`6S5}^_inl z9ZTw$j(|GeJE!|5^6$CG&p3vnjoL%7&KlPh7PQPSN#i>GOLo_3bpG_!R$qqWok+vRDW!!CH)+wRGfch-a7^ao>>FUT+cyt8#+=8=7_4(R z&(mVuT6k^IA0+RGV^qhI!^OaNxW07q+h>JHcGUT)`N`qxjrVPzeZ@!Sx(4B?B!9-F z{45>XGJhsC@m|fps)AuUe@wwXkJd)(1b{_pKd&I1z2xj025W4%es)#;k*|>ad^kpR zEb01?d82iGNV~pe_D!e~@BjRGO~+3#QW4mfxv);xhtO7WeW)4+{}-c$eCy!+IMBW4 z+2Q?(r^?1j{a_sU$S&k0d8d-|XNfURK5^xSU!8E|&jR3}@u2^Pmht7kCE8zk(TEwu zHye&o9ZQvdm+nVA{AK3=VsPW^tAul-KYzR@cc3l=e{$YVZCi z9c$|TL5+eoF4Tei83P}ZKQm$N4Zmw@kVa&muUTn-Hj&Qi$U=LnbiXL7$ z6*X#L>@&xMH?`Afy*sS&`T3bN9_08k-VxWo-)45u@5}gL->xr*TQ_*Q9*2g{hQhQA zo||ECrkyWn!|Mk zTkyI#>bw`PBKc8H_ARpPE4Ycb?+X|E+P*9PA8k!>-gx56g=195lG8IeWsdHb_`_Rv z%Cd5u#XTVAD=W9WQYFh4gcoSE&*C)ke-2i>dT9ren{3n5jQbMHFaA-yU%qtlOMHjO zv$geEraEJ3@fe;<#4=sjKg(+^W*q4Hyj;< z5`Kn{uJ0va6J6ia=JEE)+#Fv%oFCVrj~e^Gy~tP0@TpvH>AsNL^>#L#A0KcWy}SX2 z=dC<3hR=*&)QVrtaNfSJT;f*==SP25?Hm3P@+BEQ&MyTpAH(_P>pgbGpkOx+cL2_h z{nFu=&b&ID3iLN8Hj|S^p<3O<~=Q;|qX&xbQiC z@je`$vm1xY-XO*=KaZa92Kuwq_8VwC5r^9Za_!)|XD3B(Mu}WF56a3Lhx1-3^qlSc zl3u~1Lo^9be(`Ly)_X#?@a;k7qj^W-t2tWf-9o;k$Q?)P^Ksyy{-sWVkNSy&KnZ=( zxx4s%PWXh>-{&N{oEq>+ijsYqM_O?&xYb=x>IajzS$c-=aL18-+E)1gzQ+HntGV4B z$Hi~h81X)`TQBW8flQjeF*WuaE)F;xC->Ul_5;FspLNIO!h7MckNxfJ-{%v~UUGbO zz;_Y|o^bP)|B}47aE?ZGEIHf+&ei`I(o6ApQO#Z*L#joL#l{069E{%sl_tv5;` z!T%*(@{6e1jv5^Jq`5kee2t4#p6W#sgCmP=r+kdYPadoR;m4Y3_P8iD^>EP(C{<1 z5!y^Wm$lQfzZL%X557mE@8xnJqo*HqBR$ieAIak6b8!Bgmj9gA1%!4Ee_}4l7H^8C zoQuPG9~Se!Slg}UedgH;xPXCs;c5$4sescA+&v>IOun4W?s{$q`%VGF>R;H}mF$~+ z%N$qx!Uo?B*%se!1-|GOF`o|g9{ULPFD198a-j~KKg&T5`?EjZpJ+az(eSOiecON! z=hN?9vuz8Wxd!%OH)Z4a62OP!>y6_kKZm&8ihAyc^W(s!)y7-@CX!LlrE+q7=^%r+ zk3RqBL*#2v}gz(eY7<$pngWi*y}3&1dWH}euBmYCFz1MSrO8LhBc zESQ)&j?_tnHhPt=(EjuJctM zbXA}^IL*+rSML$in}e%`aU}M;$2~XfdMBJ2zo)HnNYr6GKSqil<;%1^bIg44DdZ>i zTet=85pl<{V6`#765sHDY21@$;84n|FwarRm*PDlU(r{z5l(KmG{&ZOOL}LXW3^i@ zUwpCKG`z5%*0Ix0I{&czQjO|Za=5B>0{3*^8~#VK+F*BF;?vgp{oDOl_kM+N_LAe% zW{P#2%-#cjBl+1MF3_lsCB-ii67h>oggyyBE?Xmio|N7X`_$yhXVS=@)DISWkLgFJ zqdcpHwc7&V#N*!Ers*Ztoi@rBKj=pNOK_69o=x>HC67$ikQaXoiY0EGKS#yIde*%1 zj5R0`UcXw?g{41aU(Hm@zAD2`Nvu(o{MnSA?FVH>9Occ8{OgpA{dc5l^@yKVQi*t(E4*ryQ@5 zT~!WxX5K?y;^SWOk@#JCVA&d+nwy*NW6P&pzNEjrQD1laq5n0nnINcmUG7`>?i0`D z{ik)zoa#@QVR7NPC=M~hpLi@;$U94tyOXK2uNs30l~YM^3cUzHOai9U;F&{<6lArT4k($;EH-C*r+0YqnfeZZW_Z z435)2`K4;S;EV4cuLY*Gj4yqb_&@c7y2lQs^JCdiW$|%(mc#caf?URfQ=TGR^eqd6 z$H*^%1D0PxA@_XY_==ttzh@p)GOIJTn97qEX~atdzgnpLymNBp3QLRnOM& z1%7C}8-_N7Kyn}GD zSFHb69(%zZmu(Qo;F;avqasfd540>_!taUSlU&=jwkO$BV!P+T#i4J-0)5_p^ih?S z7{3XyPk1WHK23VgIH;hfJ$`|^#C(N)&%)?e;W-nrae4;e{t9-uyX?PXkZj~|dB%O2 zTcqD3G)Nd^B>M`b`zs9!_L=?C_)LxBorvG1;W_PF{r%PvihIRWEAF9(+~ZFDOZ7ow z9v)vG(!y{K>&$%39*4-koAq`izn>w^fW}Z2!Iyz07sm{R+5pqaFQq zh}Djk>`djOxkAFom+EQo`#**F+2f!Y?SXv{h!h9Pmu%pncxzBc+nd_#d~xt4_Me^s zBhB|&5nhfv@s&z^Xd}rwm3F>_!NR2A^C1LhU`XwY7ehoZ)UC z`6aW&YPV^#-EmxgX73XB-^cX2WEA-`7miUKOAhB5FUEsUEIUcRm56ea6>#Z*L%_ou zHvf(o+%_rT_JRzqYqWdvE^?bE?L&7xy}*a_w4X{IH}woC;CzOC$({qPae)FZVDM$m z*`I^9;TBiGb=bW?Ul)F9YoCz<1@8p;JoOsL#UW_uxgk5dfpB#Sd>Y`|0^rMEm*H}> zzC~>PAoVZBMt*9uU>yZMhPY#4Z+~Hd*6HJ zB*KkSz(oLu*M~5i z32n|a$E|x6a7n=7`16vLzn)Bdf!*$Wdkx&q6&7y30xkje;e4d-vIhqdU!4N3@8`yS zi{OpV5pDt;qdJyc+^c~P<9=V+?Z=XAl>#maIE?!PuXeH4&)|6uItP{?MaQ20af0!Tm$N?q`>$eGa$o74dvQRjZ31B{_S^;XJR3-`Si~-|bGj zJneJ1IM|2nZ^wT;uaca-j-w1q@(;CV4m?FAZ%N- zVgHI-0dSB%J&(KVslrEg%Y3GND=hnB4t(EA_8l+O^z3~@{C=}=VMt3`-{J??s z6+@Z1z#T{S$#KWv2jB}c?#AyAwfTDjhI(e)OJ0NPhG7?S()UiK>6cZOUwmLACtoM| zh4L&7eqT%N0DZ&ZDGn90MEk3I zd{2OEB){y2IFMb)N#8q_W*k;qai}llaX&C|$dclaRERspp$2?GaY%RIlXWJ)G!+N3 zn~Ospa3Eg=l-d)#eH@>?J%pt=(C?{>7w!oVmf|p=62^{(UC2q_JC%ehlyG4MoEg7? z)^(-Y!M>lQ_?ft^R@`Gtcs&nDIEr5>a8UdL3jLBw{K#K&{7gO9S$ftv@cqo_>0NB; zN$-bqiUA&{b{hf?v@Z^20i2^L41P!U+4ChK3gTr^yfy)pEVA8{wDd8@@&5Go{V}Jo7XwSLFT47M1h0iK;unW&R!?KG!+N3 zTaJTi-zLjG&0#(3cga5T=XS7<`aiVMu9tnE{8A5NXtXaIxWdMG+Ab^alV2(f9DY|l z*PTzrFZ7;9oR`o>ID4K2q&y?NV@vl02uFS?g*>CUp^fytQ)$Lwixr1#hwJShQXI04 z6Q-3}>kJ{NJMqwQlW&9coGPrr(D!mVcB-{UegQXla4sA-)+gN7ce(lPuCK&8*p4R> z({M&O?fc~#oHAu2`|2e73ZCNil!25lUXZ1B6j8w0?MoQ;xveJ?uBrA%&w-*3XiLecr3CGVf25e)9bQ%Ii^I&(X+_#R__oeKC+F z`!dVj?IXTIu#fnX3Vaj?%1_VT;(kZ^5X(Ml=bU|E$-bb1o@8GM$dY{x3OKT_MzSxV zfV10|ZrGPyVA+SyeBj2}w?wiJb4C|z;t$zZ2(n}!uGKaH(Z3@5x3weFpU4eR5KwFWyuugulj|(*Tg2tb*q2l@Iyyczy5uW3V zK#T`1mlU@Lv^RC0WA;KMvxuzz27W_`GGx?P_3iLY&~WnZX;_G!lRie2s>{XU)FUYh;HW~-mb zeulSilGIOd_7wu(K|pZ$NzHqo)imfQuw6w4EqG7XuNr(#`y5}f!T0Tn&V1BQWUjUP zi4v&Od7Vm*FL7;a4ddh6ko}hvj@m<0{RHKa+)tQsn9)w7=RSSwcs<*h!qz%UHslNT zgB4H1`ZYY0>7*YW=j_Xez677!KCb(TW`54L^)Hm4XyL;2iXowF~zUp$|D+N%}j^I&!?#V;<|*PzfIOqD;k?5lR@CpwtIl3$*) z`j_Me-oCI)|B{4Q;R9ns~>~~k>l704)?6Z$2qSAQ6{2kw_rpFTj;KT9f>Q7$x6HgZ8 zJ=L+K_D}%hQi_}3AwOjtXP*!H7aYI*^YVk{eeI9~-zI49#D_kW&&}02zADfe^W}le zJoEV;|2MpS>m>WCAeJ15e9TON=dE@deU`^fb7{8)#<=I8lgmFNjsrG5>30R5<3+m- zt(v6OJmfwu=loI);{v=-ee8c;Gvh$KRMNP>2R2c=Ep_P62!kcZ7l63q9HsXwpU)xL zl5bPvKzZHNxPbCOZnqp?0?v)k$z|vEzM1&8eV58-#&4SyzwjnLe$!pzR|Dt92dox- zar&*q7p`;Q`=Fgh{cXi`K7KE{@KwOMF|W@a_i=*wa=&-rd&#m-+sxZn;=-rFx$(LZ z?)vT?;tTwc%E!eabewp9Pgz;{uY|Lg9L{@?cz@3`73V!{m#2L*ey>>e1-9_^J?vuN zFt7#N*Nhvxna{ItSFkT^*!NU3?JI%z$YY*&+vPmZG3|TJvd{Y*Z{KVe`|7|JY!3r2 zv)Y6ANB8)}J{Hee`EPl@6ZzdLxiaor59fBq4|`Tpx}pJv#%YSq=x6V6_8_7%dpv42_H=XLYWLHf_Be5QSGS@vb$ z&D%HE#lEg^ZXB0(o^8$Cme}|>J&VCUysiuxzbXj@yKy+r2=QL3cc`yJ-i32GXQSfaZ(ZCCflwn9In{7zV9l%z0z{!{YtI-Cw?z9@F!rDfIIitg~SM^7*)9&HiPR zwDy9W9A5(XI>L8>S30dm8GW<$gB&jNFfq@mIQ{}NenB{9oIx)*+yH2|n4j;|K25_n zPxuG-{A|eZ=<7D0-FeqRGKXB}_>zV{zwI~Y1(MDE(VcHM*n-#FLEF9K2$ylVyM3Nn zB7PrTe(eszl`8OsjsCjb;BU-zn{5hwX>ff%6o^iKX4`4RXD>OwR7J$N=Z$9i(+l=t zyPbP|Dh`#+BWz~aw(!|xd2J#_HyBEnP2=@~WRcj|$^%=lF+@Oi;LYzW$nz8mQL z-jVKl#tr+b&a~_c9qEqqL%tjWL_chJb~D-+X4dC9`_>&L+WVmQzR4#&;|hHBkBjly z*3v6~LcR(`z9n~vb%y&pe7%(T{DVq0s$)s>{_37jXrb_f`gf7tqLk(Ab?-RSNIN>L&zz1N2D9Ip5(P2e0b*vUTC}jr^^cDtFyfW z1kb_YYCjWxnegTMcTvI*zvD$&dE;=}CE|TZcRl9Q?W-$M^Gn}rSL=Rh2%NTzI2tZk ztx+9IjxX&i;m>FGULj0-+(_eK@+1#27g9Z3qj zXg%NKc_Y+FFBEHSjt-^!9dCQc1aqA2J!v@!-s(`Dw8TJ(bj`TyU zezGS1kY6GaE~0=l0rDBvg#K8Q8NA?gr!nV#%xsy)#E^)p{G1}8A{ z>{Tnz>fhq+OJnk^M$$9g0oPnT$zNQ)tTWne1#oH5N6F{r>J*1sz>$84P-(>>1bwfp6V;E9;y`h?=QSoS)QXTk3Z8NX*_-*zZ3zVX_o>Y;mRc(>MHBR)d@FX#vGHcO2MCI z+^ej(`y8&D$4YTGaUWW^>i2m)yGS^Sd*%)+?m?(?Hp$0S;!b|%;_j;yac=;wsDphn zANjKZ;z0T#R+i!FT)ud2Z=xT!|QZK6Zw(>dJ(p-LVn+ez`O0Uy$JIuFhv%W!p-_>tXm{8Vt%@5neB??#QdYml31AGqsDai0b_ zva4RfzHGzjs(&BU(#{{J`=i)1RWFUN*n;?KBtF!Y6_yTic{cxlkLv4L7fhaW1?E{C z_9cj3CBFR#+*xYD^i?oi@ z$+f@qsT=g?bSA9&^KDK?JVtTI{LqR6^*L6qG(6q_KEkr8jr>{ok>$_ykKJ*kXH(<( z%=5*0*m>hm?X;SU#rJu+Jl~m8zR>k3{*G9ms7pe7*u&#wd&#~$u!-7j^_T8A75nIV zFUOC|7q2G9FLfuLVLs1L`>XqX-wyl4^C1V#yl@EFR0+qZjwQ!;0A$+3ciY+?gSV;m zEoZ+wE(kK{=b|m8Hybcdi2|-_>{cxc0Jk5J{UzZN3b;f_+;{qD+fn$KkG^I6=B{TA z$eaYyM{S$C#(;Uk|8vKc{x0tKUpwZ32EYXfE0>%F2#}$AK;y&Ebx-;QA{OOL%2N_&1zoOOh*@UZ9z$GCLc)xgG_h5g*75(MT z=jkZ!i@tp0oHESBj6WA>gr}18XE~f(f9~nP->;Ee#sPP}+$oRhd0n{aZE|9FSKuL{fOI8Vw+<8JQGE} zJU;Q+?}=lA0$*n9GCdBbZ0+R57m?gp7-;Jc@ap595a(SzJ^6>ZA&eqzWW z|Encj_QCGB^abMip4d^7UL>5o?(y zJ@NY1{>8m8UV{5$HjERl&GF(nh_!2m-+(f>Wn?Pw!T1cvdy%(FRv@1j&VyKaZ%mF8QaL%k0ysbR*JI8Iy@7la6#0DMPwc2K zJbWW|zxp;?fiGh4^-Mkp-ES+;Iz_%x(ak%_{#r@)6&zn6MC5mC+j^}Vuhy&`s{GZwn z?eetG;o?SnxT^b{Qj)Wm9IgiX5_~Sb{lZH-+vREB^ye>@KMQO5_>GtRN#pq_$WmUX zImCguu*B;>ZY411LYxoq38?D_oA|@omju6`2$*FR%Ra|AOzyU((RrvHH8qc;-^+OZ zyC(pr(>JoO!O#;A);Rb@AjDtdYid45^B#FVM(rpM+7Y#b?Ducd zw|7hNQ_+*!vplaNzm!Pxev;$#qhnnBGFmOv#|4w-9}WF{E6)JfCwVG4+%}NI{_3=Y z_LU%RzamaM!gwC@?d#{z`STA+<>dH0?b>K31K^Tho;SxYZTqa&=p0zm_|tdTRCD|p zy5{B-8Cjm{9AC}F;<>}w6}yy}y} zjxbGX<;m>(WTW%g^{h7Z3|wvL+09_(^vpiiieK>7@%4K@|9*uNC&w2xp5u(H8(GsFTo%lW@%j)S{Azx4aDHQcJELmGN6o?Q zhq)yV=-TFNT-zMncK992;Q-jzufpu^?0C*E^I^`0&u!1WYgfv+N5*ovc)VP159e(> zv{~2Nz^sEb?9)5l&^0J?$aRh{3+5&`PA+Pw8!7S2p4quv2yyqmb z_lKp;!PP)J!g*YqV{d3yJ4zVOQSY2sc1Lsg(vKIwRU7@;edkW6X-OkE zmoG`fpVME+yR8wxIKbgDLC-_s`;N0-&1()WeUO-^PN?$FXbvvfQS=k1zIDW0%=}{8 z7zEG7=@}gs(fjKG_s_kkIefXASZ6r>i14q?!4-gCa9oPPVeqL&+XBxSC5=N zy?dYAyGKrMU!R`6eLh^h;O#pA{n8Qe-FHJ*pREfqe|mQ7p40u@K0SJ!+w)w1pWc0X z_UP%)>D8lGPS2kHo;`Z^ITxt?Io4GoP80<>o)N1TMzzZu7BDo zIb8U#h5B{n&YHF_p(PctZ^!w%_4c3JvyZ=fubw^o^v=og_w@DY)&1OFy?o#&fA>Cq zbV+w#PM;oqdi2ccONcKAYl{4)8^%=^%ijP_4zD!9t&;yU)=*hQ1<^0d$K9RM8W=kS8c zog`;3Ib7Wl3-$i9^5{{wqn_IyU!$quyln+;%Ea%ULR>ml`1CNz?> z<2XGlk6fs)YvjxrG9CF2z`hD@+RytDKY>++U_tfP(d=Po#Z zCJ5{*-B*EpZI5Zp$Ke81d;Uel#T9YMM7f@4i^o@fjJR!smIH6<#`$I4aYE05E2ghQ z+%84?Y5|Aqbyc-fK0w@(!nIl|8y;o04AJlULe-a`L5E<~JP z5tk2gc)?sa^Y}f8D^|o!`*f*(AFt#0b7P20D&mTc7wvYy-i#rLD}j9#`@EgRIC9tW zFMmN?LJ^m7f{4Rechr1{xB;-Q!nga}C-wLpoO>KzuJvs|uhhPti^HxHg+I%8<-oA8 zl_&4o<(fcSe>vRlbn&~^RlP?2ha@wODNDg}xZpWrJU{%Yaxn-XuvBIn_4vr?TJ;Fg zztllp5@D+xpAU4xcAHa^Yx<>7LCbEAF7mK;e-pPmB>d`Zv~=SLq5 zvEG-^0BbUE$lN%-;%f1`-H-P>4hLC1CmXmUD~6lvyC#uQ;rKiuF^)WC+xSmOK0Di8 z&%DRP`1;!q(g@b5F>n0z%j51uT%{r|-@rYU-^q)(V%P`zl#TOe4CFFE>gmHzgYi6! zTNU{Z0PZBfefH{E#fYoOU#+E(!4Ah4gmpf|^&EUw040iGA9hnV4i`1vzZ81=x$6;E zqKK=8e&S#_d!PHBOj$3;mD&WyR|7blZ~l zYSz54j+~JX$Ec1a_FK5s00-T_4V^tv(+@WBr!{W2{}aC8rbf>tcmg0~ zY@D9+q5WYy`eOeF=DJPc*{OPRxOCveu6p{i=tFdVd&%K4;M|y>Z=Zc#v)1bxjQCx5 zRrCHIU%F3RSAK8j{Ch)APwxuRpFObW85p05t@<2yzeJ7xY;W{=7+;HRn9m(oxbIPY zyt}gaJbk_yw_)&1oSr^I&!@ln@@bTq2Imp1*55lGImL4>?9SePpVn{HinIq{KLbv7 zpu@;Oc+rZq2Voz_PI&$svzD6|4300-UF7wfzhpc`3{`N9>R56(e-DAXXYM;INj4vj zQ5{PT7c+2cdw;uxWDh9df<49f?9itgMiH(Ej!_*;jxPZ+*w0Ve_`KO}8x(K@a>O{~ zjSs!(YJDq&V@6dkIKFKlgY%r}6@8bH?0yAY-nl~0(xsN3VK_$Tz>?$J1v1Dt?5=?( zU)x^pxXB=c{ne=Wo1O98xOsn1%{7iM0y5~&*6}Z&(n0VitG7GfFpxn#=l-{csb@$5 zR|hi4cYDn0ciZ^g`3gV=aavysH$efn&cGdf&W&pUu5YypIDa3(cg>o|%sk77W5y}; zg7aq#WY8~*k7;B2C8>bRIZyCy`ed`&{(^AKjjtSJkk9i~uF1Ds0p~kk@U^|O!ECn! z;Fud<16-4l@2z&HntbywbjJmtAH?g?oN%dmJ!bc`DkZOk(w66oOt8X|y#VxyinMTj!A*X(@i9dwPm2e>i9L{I-ZNK&W zS(Sr*_YNgt>%9Q8VO(0!PUzQgq`RIpMUManjay@F-EkB@obMe1AM&OAz8UhDIS2tc z)4ty<`}_`kQzZLH&ti}zJu3q4dYXLyv-lDYetAIRQ?W1agvR`opGiZ{65#S3)mYAo zoTw3>oS&8ORRTVgpY&X1bY$cF+yr?>aSJ-wCz!-v%Fk*Ehq}r#T%B-xC0wQg&WywF zRve-ZetAfW1MyW#dF^#*53;_LFNMHC`I0=&-9Cy#Q+Z8(X7jqivJaoZmUW_fiDaJ& zAGK$e?+=SF=J310nGzq@U)RI`N5?i?@Z{I#ypeRJlEZ~g67#>D2WHli+;%udbu2kt z9mwE%YuUX17m=*DgFCJ-$g~H*&WS6{an=L{Tm)oryjyqgMK=&%l>)97WbpaA-@0b~ zPPqIx-N(uPlZBr5pE7SD;fmoH)v@IK5|}7{cQ$8pW(~5M|a1u{FP>ga^?0S?=9P1f7h$d{vt3xXVu&#r5Ajrn|CG?>cC`K9gm zVqJ00jK!0YuSk(E6L8pOX1-B00dZ~KO^uzCeQ{_Hhr*Zh6FL7w8QlERZ#!_G(=*2r7GlkEOXcfXVy{ygKsrC*^&2}Qr`200u- zj-B4?55zSn;_`Qh`QI#{8GGE@HGsbsBz<*6cFri z_ALP)V1GT~)`~|-zU_7Heo1d9@^ksYIlmAN%TaKg_Bp<;@ICe~HP>A>nBChqV8kIMQt60*XVL z;TM#PJMhstur&2--QJ8toda%zi=F}a-6xI{D|Q6U>+LX`o}54X8tv%aE*(CQb(8C4 zpC;MoHRffqoV{+^H{6PY{{lV^8zuYD4%}*_@h*)U#W(z4ny*AaHykJHb4G{xn0$uT zu!A3SzS8UK0Ny)_O^Kz^e5GR6SPc$&O2&R2z!EpkpNXyFzQyKe4?RPdxJYe1Byg{| z-ahbB?Nj3H9#064Q5{Q;ul_`_z7%?+O)f|T@)h}_Pl)^dzPZCb#4~GWH(uA^_zp~4 zr(bW^9JJ~h(k=5LcRf9A#k$SUFT4hkhUb^MHRhxE#a~{n$FFqaI4v}3oJKrOC8uYk z>{<u!DFFSLc-Y>oW()}TsuU^7)xTsJ3?(D6< z?=$Beh!0M+?sHOmDC}U(|ME`e+mXyodEM0fPy2U@CS$Np^VGiE)@XG@rs>~D$B)-b z{N8C(;iL1(7j4cj#brzMdB7d-U)!7bDxO@TQ5{R_m;BdQ*S~rNzYs23VBxYmy8DyU zGYNX)__Joq$?HhBT@HFiBt10+K8kzQ=~mpmUUxkS7wTl;N)`C1{dqr`r?~bn8UoswFq7e^bo#g2_;kHS*Y6U&XzVw`_=6Xmy)akrVrAmI9`b#I_;vShR;(o;6 z3l5NI+ogPd)=63JJp`f@-x6cdlkDlr7Px4Fb6f5qLX7JTUm*{-OfY0pg&PVYJ z%vh}z_MEDrA8L#e>rNZtV$gO-KR<9f$?z3_&D*< zaf*WD*L)IfrW2xF=uYt5)D6J&Pq=S~KjME#c5N zmPUMy_+k<+TR~5i{3JiSuV}JHecEx(qvIhD%s$)s{8I}68h(ex`ee0zB3@Wrg z?mC@wo6z&0JGz^y?RU_#RBA{5Z1*^*_>=l$H-DBGdUoHuCP<17gFb-jSdu^MB|T#b zdUAfL0^j2L*uS0Qorxm>I#3-;YVQqaSnWNjz(?)fS0vhd0`P?j;}?qi0KgGX5U{dN zT%B-*60W2fxTu6fT{#Z<81ZeBaG44?m3$$)-SVXdxUv0>`m0MB=@xRxmpo~nQ=ge9-_OR+z_ed7ZmitX~hhcEf1$i+`pym&Rih zzfHhL`c)|CNw{hWSKkcWUI~{CHj;i$CGn+=we&>aILXs-!evRgu!5c{`APnA%g+FC zWB;=9wO=t!^{w32zi{!3!M$|A9`qh`|JlRIY+ijvo&rcUXoxXP} z8}Y$2WIhz0dy~mWSowJ(;)_UpRW0BvHu&=1y4>U=pL2Ykb1eJ(P$%7-O1phwgRe;9 zLmAvSzL><9RNy1s#Tmt4->lVo|G7Od5pLhZ{Xf{3zsI^=&xoO?w%zgz<^*n>o|!(& zFF~m5f=&Ff^TiFmX%ZjhFvnLS@g-WomoWHZ5+C&?9AAUP7yHKjK9JqMYJ+dP#D~vr z;3o6gaY+MLFX0XquoN7%ha~7m?JwHhJr0Dc0a?PO_i)GA_4KT4+)o_Vgr0f8L44sB z@TD7k*#%a=gwF!vCi|1@tC0AD-!?yfUV|_G=P) zn|8p81C7NvzPQ9!*8;v`gRdxP#m~I{G4FTto@?1x0QDw9r+;OSU)bQ=CFL338^?{a zFCy`IdNrRfV(`Tzf6^dE=Hsp_Sr>}mon3X-nz!+~5@7CgQC|B&H;Q|43-pW{dY13E z;*Mh{++;n8FDCINTfi4L_`(t&-W$h_B?B?^;6W?H~ z-NN8U-()_r*?)-jdqeF!cRs?^Nx14fcO2J_(guk4xLh&isxF3#o?&o|>R58P?FO#& zrFm0Hw#}99xCtPGZ9Gxdr=D=@6mT5|isvd1z94r2;qu`a)v@ICtOOb4i?;doS&}`V zf`fSujv-!I(q}v2Dy~Z9qcLK{h(kf&iCT?9esX$NUtOkQPCk9o4!X2^<_}Kgqy8oB z{D~UnNdW4kpHtZyzQ7O7tGvd%$}``Z=a5d^yejhJD3dRwz(;z`9jUoaL<{-EP_zM#P;kIT~xVU8~jeFO1TE3{kkG4W%W{hN4>dc>?5=gY_C zI)^KMLOlPu{>Hz~Albc;LsZ9-!}&Le=VIp_^ubjmTa}-RqcNLDvz{l)ypZ?jvqR}D zJl}T6VH~sE^!m*AEXmXw#Wd4+elV6hQLF0D^T|lgzBXVBUYn=+dYb-B4soz=gk@j& z1fFk`i+z285Bv6yZXfuAteae?_K@9gq82lr%R(Dv8LrORx7+BKo;?4J7YVa{XsUf2 zZreq|FHfvJiH3BZ{cw!VfhC6vLz}=c_3OQT*T}MRox_c~SiFzr-sjiS5ZSW?j=A9? zz=wbzSB`m_WUF)Cacx1SJpejB^IVc}xeB-m5I-DSb-8TIZG^LzoPFs(3q9|D`{6p0 z?|Z4co<5&=55dM?X(mQ!tEBdjZaimPaPdUV-@<&^cCCne-Wl`WB8IMc5sm6twl+R= zeTYEc;=?aK`r4dt;x2CT_=WS! zNwnJ+HSBX+SLFEWjQ-{F{Z)TE=}GogflU;@Qs~>9w> z(Dk9j;d(1$Ir|b|AGU<6mK;$a%gS}LrHstb==T!%TLxK%>dz0Q8h?GLHuwhId6#)z zNw4U390$Q`K1>6=5_#>F~8P)j*ReBa=0aMZZxb% ztFi#e<=*Aary0Lr@$O&r2;uA{$EU%$@p@GG%NwY!zLhHQ6#*ZvLEipPmwpDUQNi(f z-WR`j+O+9(bDm=dayV_Gc+U8|LlU%fZHKYriKNl~&iQ+N56GxM;OBZ5ZH$k zqwP=ad#MqTae%|M1^W=UsPK%-WZW=`m%|l7zl8ljtJh|2l5ujK!({>=#^K)6Cwxw_ z^Cd1k#^I(xAA|wVIQqGZ31=_OeyMz@`P^Fka=zWlSeDPo&yyBj^^+_s*E!s<`^0!6 z=cNC3A=wZdqdJxxZa>(E^MJ?0-?W!ys_J3KIgB6srY)5wp}7RG%T%=^(_ZRXr+_Ag$TYmtsv5?`^zhdz~MxH`o>Pl|hm z0*?4*OME^B`zQ{09l`sil$-K5y`LZ*z|o3-Zfe;3GdGr(_CS<@mhNhhkrP^yvG$5-0}#raG2pevY>CGjlM{ zml$dxsXr@~`m=Zo{ZbEOP}F0@zD{&ni^!;P_C=uY!u8}MChfV709CgBjPkP%bffE7 z!BxC{bPg=(`d4q*7b%#iWk2qYQ^_-mtDI+?eYIcjR!F0AJXz4|#8Y9Uv^nmu>JJXo8R0 zLmk}XptzxpbY7>Dh!fH!;sWG<8XNfpXWvAe4+MN2sTmss~E!DXL3Wu^h>gxM*T{< z1Fp3`U=(P|&!(;q6j!(Q=ZCh2{lN5Yov$R_if!%B)N_m#ztU@X`(BsgXX3uH?5lUM z?;y!OE)L~`#rt=cJhb~z($ijYxbUfMv<@IRt?$c!l6)|n8h7envcV>bU+7xiJ~{`M zrhR)X`>GxM(nhk6;%Dz)!te$4FLl?4G~@_v|2lvrZk&Dj#{AFs&uMs>U^i3G%Q~3z z2mf`veQ$E{``WTE?%U!jqJ;W zcV3XZQ)$}wjb)$Dq2E1}vCp2LQ8_>B#Qdo0-KO)i1B}IRJ!|3L*MCcT`klsSg;xK9 z@AM#fxqNG=wa4XI$wV>lf8(t0OpA8IF$=}FqnvBR_2G*Smp(zVyWtqsvE=yrLVn^L z@~vmD9wf`kb;{2Yu!-VF>#nk#z0UCsm?Y*oZ5Q?`Bl&4?jOtiInDkFm`AO}=Ek7&n z75Q0mSHHQ$vCYP3=Go!x&Hkmp;eP5nF7eAV`m_6e?RFBMz2y87h4sOcK`{L3f6eum z0dOx$#&Wo}lg0J#$Peb5n&rYVH(byd&wqJHi77hDwhqnlWi5^9>#hB-*?lVkvlP~| zG=uNrC#-eoT{gbU1`N-?q#%FD)t3yvc+jA$bBFi4`s#ky4G;Fay5E2Smkbyl9CZ1> z{7bGLJRFMw#Lnk+`D3f~{`!!Q4w*xe4RDO=SaS9iUMBu;%aoEM*Q3NX*q1R*xcwhJ zt>4%F>EkinY4uZZUj$}u)lP+P@2}sOi+q9pYJC2stM&DQg8mDKBd!?sbrR_h#}__D zyw~BI9|l~ndtiVXUk8xG>)*(5+ZzySv6efE6&LO<@B6w=(*vmGcO`k`t7`){tnjqZpjFDJ_xVt^@#lJc0EcO zdj4m@jkGN0@xw9F8B6kKMAEZCK~K&vdEi@oPVVdpGtBXI;eu2?YJYh*S=aZ_C8IUe zrKyeM+dh1uJ|Ejt{znz&bzoL17oLyeuH8|l5l_uX^*EUKA3oTuKX>8wI~3xZEb*m- ztxee`>*`S6&Cs){@e7^LEnoT?zlSaT?W7FSH|CHpbyB`)qulMIJS*^8?V(fw z$HhJQi0CJN$^WDa>3P6G&%ntRU)pGQJt;pM3a$JMDBw6fOXdhY`)^v%ll07R=+8v>|G!JiED%PPhLEnm7-R2f)Wv$CBb#FX`#M*`1HtLpJD1 zeneg6b8~fyL-80Z4h0H)(lJX_5qt*Tr z3UN2>lk%lbp*?VUy%&6h_wAR?&bg6vD}-F9I+o^q?1AI8(&LKs?-CP5Da&Df#68v# zvd{aub-zD)i+lW3;y~@hEe^$>J*{8=E=s(8zol7fjq}U)xnll)T*fJI-4xq2n_tMj zs1(0&3;UNgdn5XMW$~b8N#Yv?V+E>XNpYWWaa0T3IYR#~y@h-Q^Tashj`OCP6q6wr z%pItZeGQU*^$L81i%ZwBP?3AwsXwc}&Fasxp)Tvh)u})8%oqJxDPRH$eB{p#fFmBn zavbt8!c~0}F>#s#P9?8N54XI|2c7Y`?WH}Yok6-~LC#VgONv9Vlhwb(75qYRC|+j8 zA$EtmUkK*`Sz4F!-tLa$+Mn0AL4VFMbJb&=Wt-$W#XaY75%((KDpt^w;+K8VLM=K; z^kaGVic&tmy-v6w@R41}X_vF_6Rt?YMHFx<`9gZQZd`T+!lj5+~7-#t*Z<6ql&&|~-UlL=je9445Co3N#z6_W*VV;!$#%Ii{WjTAD z;*j+t^tA>LV(oJFeZu*Gk8nW+oJ#!Yd~Wd@fZU*1o0so?oAfJ(m{J`}il0a7ccabl zOWG6g|1^wvV+`eUb9IVeCd`GYz0Vg6^1LuOjzkg6$syPYD9 zL%9B>Yd z#&O3FB0itO?{m@@iQl1ox^v%J!ew3Ju4mAAk9D7+Z|m!r^KBSB7pG@otJWH}=fi&- zh|QDTI9wZe{u37!wZ7a_@*jK@MCW-eh?|QWL zJBSOxvm7coFW~ULMe@(b79y^Apc*cH(sNp8zzrVsIG6$d*Gtj9IOv7z$wyrJZUgC; z_RVsQ>R57qX)|-Ko-e2FIP6_nR<3inU?=gssW#@J^JH1M&fy|g3O#Qc`h_{3moZr9 za8-cAxW6&>$ZV3Y=v=N*9ZL>ZKX$8j8hkhIgQ35XY~ris8r8Ana3!;ZUtZX9#^JK8 zT<35xh%+uIj!vwHehL0>ykgul2Z{UW&mW)nA#oIzr{)aDmwi!0#QlX~Cm~-soQLpK za=1k177hFHr(PKRG2$|UYPf9U_r={dU;ZNEG}~`Qk(1-w1af%4c=L?!&HJ$1o=oNB za9QyDC-!IEwq-}~%(2C(7$?4B=+Dr;oHHLW*LP7iDd9Q3$#X>9AO81`I+W)&^ZGZw zgO)u}T%Y52^XtNY54Fxf*OhR{x=zQ(@;D1+-S?&S-6+`R1A#!7+D8AUSGGy6)A=&M z=jf1d&yRZ3F)Rm2v7m8*2DagNqUv6F|K}uOr;M@J$-cC%VxE)v7d+Q&_{T0Q@3)2> z{K)r@=q3Q&KceThV<*-I2+P@5ZCuAP4j=G1$&Ff?nlm&$i=H9P#}w?N@uznSyx$aJ zi04P&VA<5h>FHT4^7Dk-Um7c8!;-EXE*)@f0dVMo+jbGIbQy17gJhpqK~EY-7Jw{` zBa0`y+edK^o+*ZClW{nBLzeYI2X=WQ4~7l%uN99~yWo_j+H%5WPE z7`#izX=&$=(@-X$P1Q@RJ8c}_CiuM*J{Pol&Gd7dgWGQWu5Qn&TDacw8^>3=Qe6MW zteU=`NAZ5CF@ERv;0^!wZ4OQ|`j>|f+kSgF<*J%`C+I_BmX1khqSu`r?YcBxf%DMz7W0)YiT5VizbsE*N zl`i#eAwQn%|FJxA7=-0xC!gUbDY8B zw2)n%_BmWEF5>Xg(*JZNIeW?Bs)mU7C*QE*x%chzw9ny67j4yWyuE()*@H>WUUIlF z^b;LHa8dt3OYHKr&*7>jis$({cN*{=$=OQ|S8v4Om1p04%q~y+<~S>>y%yXU((riw zbbh?_o^_keLkW=wvN+BPLz$SNJ|Amp+?v>NtF8z2(Wn!Rvznae82s^5v-%+hH#$ex zQy$Z59ujt;uKJfv{4xEqtDWhW>KQ!lWyvol?o`X4ff63~zJ#N3s|Fl2Zf*E~@+aAi z*KXRB{Av8&H+H(^Pt(4SEWbo%^7g$V*~jH)x6?p zWj)C+P31M&E&G%5y20Qp1ly`+yXQ6W$#EzLg`)7W$05|UaU3#t!T(J%>_Sd}HMvpz zawMEj0cXacvlWN>M|i%sq&SdYvge36#8`f`fT;W zZwc4dwr@jhs!nQn;X79{VI|Tta8VNKnDHkuPwscs`}=Qx#J2z2Jef0a;NpX!A*xerin9% zznq?xtHpZc^zGfub)v)?cfM(BMV@WSUIKXrzmtM}nG5S2UkKU}w&OOThrK9+Ti11| zSPqvs-lMe!*<-jb^|SDNVaON69otOYG~;)CTh7a!Zk*n;>1lU8W35|j2LYh}5&t$T zKO=@;)_7}Y5ntdLcfKUNKLq=^mkyaSoN#`aV^bYV&h&b~;r*591A`WkY|#dHT>5Ik z7i)MGyLx>q+~|(;oxfSvGd^YD)r8A?)*a^sK3tzz*YCU;gsV`%MIi2n0N}2Y{#k^> za_=UKlk-a{;Bb6$cNQB|q-ak!Y#9$q``@$U$SWgEE1MEe|W6W|U50so#OUXj{dEC6?oYZUy+@p;#X z>%*>N+T*ZS-~2D7>Phj_mRNb6zSuo}l-GG6i+NoSWtu`eqBzL;i8jmmN$VQ%zE*y6 z_U$TLt1m<)XL8~1wPKc!~k)Bvu^!BynVrLl-KjOiRalPz^f^YUnpO;1CI1VEK4FC z@HDYpsQ3)QhCJ+q|e z*$Wk(gICd$o{x9aGXUH;Z!8NR2$F6Z{62!}SWAD3qZV;1WD;JvHD`*DOi0rrWPN)G4SA%2&9MZXdANiOSc_q?v`_?XV8J@2`R zaMcd>CH}GOt5UF!@;W5tbz+r!+$pb7F9Ro~IfsgWRHjcXu zo?-<)!o?&Uayscp#|f8|aDD}xN?w!xZh4*gvdHWG&kU<4y}Y({1~Y!r@6mlRcl)^f z>`=H+ABPNn-2?X#T6z4iPrOu`aevy1dtnRtd+=k9>{LD_D~1h*v|)l`6rL`Duf)OI+oNP5>mdTLF{E2u1@wX zfqbES#+>0~|*uT@fPxx+#=rdwP(e3i?Q7{RIbyA zmrAm4mtHE4_E5DBe#Z{yAbp%l(lZ^_i;1TIuuk%HoN##( zF47EKSi+&MbY7>D_$nlvR{^Ke9>{LD_D~Pp*dDgr_sjRBXN^Oi6-#**H0Du+;Yw;p z6%E(x*J+eVyJM<`WmB7qebm0(?A!a6Xh-urlb$8cV%t1`^sJKXODNdKwcEDUVtf|w zy75io8)h4yQG3XQIT(&#P>$xMgyBkR5Bb|gd#G6t?`=|;cTk?q1|0De0+!>Dj}fj? z!bO{bJ0RguSNYsro%nKK?nZk06mVP|radBl$G&)8uNl~%WmPrq&p2GgoQ3-Hg9jF0 zUWmB)U#4CgP;U;mZskI~9Ua%<)J0_51UN=@EIHivwa@5$ziRncl58CuqdJxxE-SK7 ze}1BP`sp{IL;&_>j1z9}l~3y9v+Ni4-hsHZfloHVQG2L3&w5W{;fv!M$=UhNDI9zI z=yS%69XWo&h;wpB-#xkr9^iv|5ticZmt){@zq5P5%P+BV&X`fRjDv^zIQu5FTctlI zFm3Ivc$-?^rX9aZGpc&Q;XK{Ndfja^BL_%!)9b5KaAaS#G+&7;jO#eQZ9j!)ZQb{TJ60~fsfkz{P#tBF95t}lX^Rf1CDrfEGg(vQv2I3;k?M{vZ?gf zq=#F7-R1+)e?IfW9p-(tTBR$;Ww->l^UVL%oTdF} zSuEkw6>uu;f&Asx9%chKwujZhZ3U$7e1|+Mk*;HD33dB6L7q`N2q@qvuagpANC8Lr zQZ4b-9Il?%o>#5Bjw|p{J8Jk|bxB(I_ z(hOXoghLyh^rPdXXH>$~Dfm+*ugPC>UYp~=E81)H9CZDsyq*j2VQyoi_$7_FM=K|4 z;n#T_VX&lrun^?wdYk#0JC5u#pUZ=D(L=lRyCr%q&l9N)AQx_=X9;j1UjvkR3VKo; zD&e`wVz3d)>4d3{`a^ZjR$D&D?> z&8K9o`&@<6bAa^<`9gVJ0kV|Wu{!tl0u_H!{>lC%z5=j`__Q~8`((dx{?tZ_-*;TM z_pm{-?5N+YH9~4fIi1A(HVL)`-gM_9`&S?)DMiZi%l>fsg#sR6F8+CqjJbOD+4n4tXv6hj4ikF75wG zPl}J6pJw~Zu-aetySzUSm)akfpY@Of$AU4}2D9HFo7&pedpO)=kip-Jd^hCH-Gtj@ z!%^I0Z&`8ARERsrm-U+X9pAorJ+~6yFgQkaELGx8c`N&qt zDj&7mVNqkgvK^j--@(U$&VeOeTN6eec7t zeVJUiZz*$Oo%re`zQT9h?aMY!6a`so=jmXhaoDjSJ}>+Rmh7uh;G?+X0u&CTis82p z_$dY{+L;a*p{2{(9$)6PpIJ zZrNw{B~tvT{bjx{`j_m_pdHooe8M~8FU{jJS6J&P{*T>pq(cbWI9P4Qc_;m{U2-B11Htg{wKnsmqD^6Oez+s zLA1PKA}sG>5bsjB{a@ZqL&c~t6c%Ahvy(+bN>v*8SIgK$KReRy9ACfpHE$P)6KJpO1XhA zK<5wO3wXqtJb;R?fSyz2=P>_w+?R`FTUiHRvEYlfldm)JvEk}ZuAVMAWF34n1Yf9~ z_ADTK^6}RG`@ml$hpgNEwu>{LFxIO5*G189<@}R_#h^d;d1L4vXa1@3L(r15&$|=t z`$naVTu1+Fw)#8oD}PTdCx3^{*6-`C2A-cydEhF=dALshL;TsDfk;*QWvIXNq0ig= zQ4zP8s_5^?XY1)aj`K@y&DBQa{Wj?LjiX;JVWGb)ZxQ+-&W3$Y>tL2WN<47#7%Khh zNk8__k{8xcn&}W&s?ZO7alywr%44hQI({g!^1k$g?e|8#|JeXGJQvxS@u9`PdO zRoNvRnwg(pU-In0er%V5Rr9ve*OoKv^uL(Lc+^ewKO6V0qhH)3UT#z9*Zs$NMwK=1 z%zE(o=@%h=g4AfcmB*ZnwrQ7+=(lN-4dZ6$1Ao8U`hDlpbAbJ2rm?uB=Nx^xM_cA8fz1AznIL_tVx8CVrg%y0`83Bb@$F>#=Uy zUG#?@mI8%jL(J!x6MA`-(63nZ2cAoMwa0$M8EoEsmicUb>Wi}@)Y${u(;s5$t!um4 zp@#mDAvw_>!t4C`Y`Yxp#7l<8LdYY_I~4KK+B_0|wS^S2%i~6^_hfVl4C{vd(YMt7 zp^@T+^(!IYRcY80w!(3_O!YMHuY0KO`)}Bq3uo%xcUWxA>o%{x{{xHvg z{aIGoMpakI8KL>h4%GOUp`X94!tg%um7M#i&DWsecNJfW#W(En17lu%cDx+r^rPm_ z)cWlw`jL%0(z$L?@8Q2YMVvvuA)+7EdyKbIW|e-!$bUOgqeTk`V7Vl)-W6x)M+NJh zeiWy=JhrNC>sRdPm-fIVg?{Mot@R_skzYT`S$X&1727vM#vncCfI62LR~jw-D#>>Z z**56+Pe;GxCu-bGg?@5e;RF_87PC1u;h?jxX|KPVe z4>@rRE^YrE=ja#vRIT4Ep&$6l1YfZSPV%YZa}(Vo%Ilxsubsx>kl!M7AFEZ(7vP&H z_-ZuxZ2bl~`b9nZ?Oh7}l7g?$11IHF=@+#8SNO>_ygZ!Wa<2DCK);28k7Lwo?pfIS z4R-Vkd&Ko@g?@E{uS_FeRQheO-e2(jqT6~x(B=Hxq}XgZk9P8Bp~rg90jm62;^@ck zrV@v?t9J|iY`)_izT{78TtC65(l5E(d_Tjscdoe^WE*H7>Rcj!7SpvH%tLTKAltd? z@O$cgy8mT{DIdQ()ZNbg8MuzU=sngJE~tUC?Na2tud?7vHQ&e699A25n85u{joV(V z#=tH`UpV86L3QWI>e@E6oBvuHAE37!ACTv(EWVPBqm8(Sev%n{?tGo0fIz;+`^=;B zocE2w4}CtM>wlJB%qfqps@wKF$gyYOE45ud6@Gv{i>WQ*EcJ~VCwYNOlP!R2Y=d1| z^8@r&`60By-3?+ zSEhlp{eH0H_i_*aeIfh~yR_zq;E$%<(hu-^f?^VWuhH-W`cc-3voOin;32293*>b7 zBks)TN1;pOdHWVT?D$WWcl+FJKG%BxtYNf%-62pypCuR9;fJZ@2k2G#wZ8wB9yHU& zW!iwN5`4{Vz%3Oxwy9em_h;x=FK|%}K0D41apKJQR?XKa;tYPTqP83_RkRkE_Q>;6 zR>WCO#96RW%_ni-i!_+$w?)KT?;)qe!7jrH2cComA8>JjE866ruYpSoT&@j#s|C(z z17F8=j(#N?e74{3bKbX|+^F_LPWauc-)2O=t-sRjw{?#={T6c3x_@W124xa<-ZWEj!6Ph&W4Ia+a}8Hu=j5K6gHg2)iJk1s`|pf_O=i|6q@h zhaaSUfLkbVd0Ay6MIE?0fos(8gB>q@oIH{FUTv2q5ij8Dyndd6`A4${PKt|oDJI)v zJc_l!53Ttfc2@bl#^S3a8N)xQ^^cGtqxU7aB?07lUiI~zcJ{*1g-LUT9PFGpph4fAq$UP>wA zGrM@}`0W2NjVsoCvDPZxvdPcTFDh^>t8AmH16L_<2@M?VGWVOu@^)#SJNN5-;zF>?YkFBbs|GDEcA zS=eceQSz(5{~+fmA!kNIKgj8h&yy$*(f!wLkh3u7@EIC>@Lys@!uGqdtGYi(d4Y>ta`JaY8aN&Qr6-$q z;`^Mj0q4#Wp>3V@EZ8acnlsO`$CXo^{#W>i+7CyG{%7OP>t-Z(Fvs`uQ`Pr*TqSVu zyYVUAhh*8GeF#0gO5mmnT+Sme$z#ASt@R_spX?8|e#bg_upp@RdpD5>5uY``oAFsi zK5zE0rP86ygqjLAy@SUWhm1ylQ1KPU%-<6pb;?aWz|r}C zE%{Wq;{VLdzej0&yjMMNH`wz6jks3HS@M%<&+p4mcpq{$ zxa35CDEQlq&ro2p5hIz=-m6scMU0LHk0CGrRZ|OGj$}Zc%WbSbcYfg?_QG`%j4PFO z&bXrDEBcw9NulFi@z<^U^RaoGO8fE^>mTB!k>az;vSXu1-jz5N-}DL38cZ~F%GFGp z-xhbPte}0RPm+hp1E!Wcz&lZt_3dQ;W` z@b!1)3G~0L=zpQz#u#YtRjT-+bZowX<@+`B^6xFIaB=ambo4{~`RP|p$LHs#ADG@F z#Ml2ekiPV>#io*T*o`v{?$5?2qpQ)l|90~Y)VYM5?*5k${SVjs6RVv5hkmq>;uCgE zw%4BBpUVGEOy3^2ZD#$Vf6Z$lBg?7MZ|ynH=YQYux4nM&joa|n^mj`va4RQD)+pF{ZF+P0hx#n}9Yxlp%jx*+(E_{LhXIS&Byeu@= z%9pMDV?B7w9_GAPtiVG~v!(eTaot*eK|IL*2b}B=9jyanJZfw-=ex<3&V1Ll=V^{T z0|jb(hJ`)(em~ygq!Y&XMh*RJzJEJ>F%Q0hf)Dyp_s&1pT2HzYfzv9Ck|KWTNZB!-t?Lz9e0V__*+AuHQAaFGr zaRxsmEji=okUuo$k%;Rsotwgc4IbyIQcv4|rwjjC^LN>f>-~lQRDRe*xrE1u-KPFM z!;Qsfn{TMYm!NlH;d@y|eE6c@na>-JeC3S)Nt~?1F3}wwyI?$*?c8;henGl!(TN%k zp8X2K!VR;>vDW%K;z;&)6<=uE`T6^BpDy3@@m56E4$PBN^v)&rJFg9fsqWPt`&E2N z;^X(9Rizd@iFWQ1_RLZ&BhGT|Jg+h)Z=0W&?_B+hwrOPZggL(v?qe9vSx`+!QGM zmh!UL&>zx!oBoR*G}%ab@CjG|<3ps#86V1aQOhZDHXofsbG&4Nla1i+{y3F>opzm{ zf1mgvWu0pzhpfX7?*5SK=$xnGIflY_o&KQWE2a0TcBO;Au>KA{Y<`x1t`2uma zWz9ST>jX&+yTG1R!k#s|`r8G3(X|d=Km(`JZ!p=D{nP7{bN-Y%$vXHd1YfM3e8cD+ zer(VE>OMOX9JLJC=(!A4xF?3qbzlOJ!FKXmvjXj|g4C-@R%3-IMM?1K0# zImpSMMSJ+miG0@Dc!azo#}$=+n=E_IZN;9**9OVP`X%?AY-BzB2ODt-yVM9jRJB1r zcfQUj@^x;FldmCXuWjb%;6`4#vr(peujjQF5eybZW=!Iy3WZnofS zYy)n(;0uutrLR=E}XI&d`orQk&8gT}`fr5`? zM#`kB+xcv?lh49?k5S^z7WoW(WrD9j!+$#cy{_@nJiq)gV;vmqEb|2VZFDaupEXlm zWed4am0uQ;uKW(6C11WXSGJXP9XSz4Qce|L<`(n$@S)WkZwJSyb5jQDT&i#zEIF?} zecK0RTUkeb3DR>moCgbNz8vb_KD%`9XxinNU%c&tcxj-xhW#4~+s9XI@vW*m>LIC< ztb?yf@FlvokIxum`eDw#KZd|D`~6u4>RhV)5VPdGE#~b9$eAENz%I2KasoG3;EFWH z2bG*zl5=m;;mF-8UWZN@*P1f;Y6V}F1|Q}Hl>?o5L7ZX@JYJ>ES2WYM3&*Hed+b-~ z*DGkwTR&@MUI4zq^jr`8P~Oh?oW8wj&uiuleGYOpyX*D3L$QNH)v|>)Ie^Yx6qTS>{35rTADUUTXI7 z_dD`gF|}nm8}^%QH1F$=Q`u#}AIq;NZ?opy5olXX`%vf7o_{WM zp6{sXrMBnAV*Uv~M2>UvM5J7elYEHJ_4ND$)^!Ve`{PvlEu3w>|7=WOZ$BW;>M6Dm zX9fGWk1xCC>HPJFHO58nN}Xg~C(h6>Wj{jxEbD3I&;7?3@pj6YBRN^`p4T4to0Lt~ zVV6eYfL$uv>4)U4&*b^;zH{ASl0(*Y?2`V*Jn!H+J~ox#JIyoStNHLNzopU6U4qX& zPKPJ}F+RY)RUbR!gNiSH?(_Ng1r=|I+~(%NXB956){K`I-#q8vXy-1`AG*_XXNb!N z^1ZvA`?HF#jQRtw&p)&IT~6c5O@#}RoSX-Kjeqf^5=1-gJh9lx6X65Y{b;1f6Dqzw zyUfqumoRSAX=}XrV3%f*CsH1K@)#<<65``^(<7ev`!U&8*3lm_)CbTXa2-arbJr1P zt&N-TtL*P8ITIu&p9kE%__1HyJos$;VTt310=mY6?`3(3j~`ZdeLnxb*!#En?pKME zb@-uB_<^tK$Tq6FO26!RWv$@@K&g4&xaF1I zI(qTJf9^bCkmBw<5&N|DJQ1?``-)|opYh^T$r++oG_#$bK60-gy>ReDmhuGRl5OMF z9{W{%b1BX^PZWJ#a|qhGOYm(Ge2Jc840k*CXBA(q)!(!4_xRb}9-r;F9_y@wm3geQ zkMoJ^B;`S#pNzXWQjX)hOX!yoah=ncN2>HIc*lI7TW@;}<$1wp<0>5e>Q7PYcZ8;;qWyi~9PP}A}P}_61B3@dHYuH)FwH+^{ALp0InPZG_e>I=f6aHIDxa47G`{Kj> zaVooH$u4~Dt#nQFM7GPQC0pACeD#7aroji?CV{JI1Fm2%N55Ys(8GT!dqxB< z+6LS(fny)aW2@>aKh%=lc^>)P^8Y@~epsvUgB_pao%l?7#LELBKH-PuUFRD`R{m@7 zz)5*A&nl<37;l3|`o|gaS!?|PaVz_StzXR1uhxTaoK2UV5m(#?7XEez?`thWqngn~yjYZ5uUk-48Uc zuY5N8V|#r!bbvo!$a=4IL+7GO@VQHsel^6$>w}$xqn+QWpnVdn!UcMm>+D50oVtlE zSGIKPaax7T6q))}e0!yR|HOLQ=f_uZ^xXXQ;{7vM%g~ZAl49#EOm^XT|Kh91=Chp5 zE-pr>aIxM`<=6H1Ib+xW9Cg$iRR-!@s&L(B*XEzc`>}Dh{k*osc;OljGS{Vcd4K-f zXdgV--!6Tq4L`RtKKJB1z>U(t&9Ht4;OY?%J_Ve+ROz?$koo!hVo&&DrF|dLTn)Z~ zhnmlK6i)tW1b8;lu~6qy#aBi+UKf6MPGkw%CTSn)T&i#jsSU65t=KT*CbZq4f$RRv zoV-12?|SMsK61^ziwxjVs`vtZO+W0h;`CW)S4{g*=Te0mLTxxt%p7z~Z?v7Efvcf5 z+;1OTw=q9ITkgW}u~d8!>JR)J(H)JO7g38yRudPsaDy9mc%N}wG;y_OnCt8_-(UO% z%Y?14pJN-9oHNJ|oUccIvTHZiq=r5Ni&BNF>~H>F$OqfJZRd%o;9@MU-_|a;z#cb4 z$NP_)D!$Mn)1G}RSDgvD(q}rlNxq_P&h_H*w<`>^_bRzx^A@Z&Yjnw}(y!Y3y_du9yJ8e@)h>Iga4GUbM*M(`3>h|sW9bC ziziH+*4Lf|^lP@{e#b;Rg}RR(`7`O7S=uat#Kzl5dV`-A?4v>b@J_*A$IjhigzbN$ahoFk*cl{;Ag z6|T|p`<@>^v;sn|cVShy9O3x6_80%zwm54h9Ovspu4-G}4IF94*^jHrAAy|iQYB{= z^YU$<97-056rC~O(7^>QzG=UAnIYR(3frjo3JJ&kX!+u?j{;Za;>7q6-p&~x0;j0^ z1CGI^im&=?b6$7Q{RjMlwi()oI+qBfk^+-2OI(#D?c+-gH`kNDe09=};Al9fC7<2@ z?&@YhFXlx17A2B9?NsSkf3B(D9xr^F1g_5z559T(*nBY$z79ToY4RWE@p+{vepopB=(w;he zc#oRAkJI-11xl{Q2gB zi+%~qwz96{KiEt9&$f%<*rn`rwOy|9u}h<6m$$cjel28M{mo1RbuJMvX|e^|rIBrN zhMG^}pr4GF>C_-We~6djm2rbU27-HR9WPVqzGc`y&&ds2*;IZ=9TCWnW9buKX6pP_ zxz}BWRm~T+J*PVMjGn31?>ZlQ4(xBP+bp>Ch%#`L(LU6T-_1Vy6&_{IThG|#n@y0dV`Izl!REW(;VU>ttzV@NU!}$O(hlLC z;LFfH)VZ|zZgBYc-CME^>bLmtg$J1H(ACp-Lb?l-(mvq1wE3nvd?AnbL*MGd*FeXn z1=_&9iP?98qshgm8Xr=V&HFqi54vD);AYU=5_K+BxaHKQD}8t4c3s{=+d_Iq2z4%1 zxc<~;FZ%AIiGBK_ZKVdT+Is%z$&zPw1g`TxH25YzXM_mQuxHVmz?Ey@$}HUA*Vlgo zT!RK~?JlN%^@j~UhAlAr%SR31QL5~cqW6mNQp=QY2GDIcbRNEIOWhc&!c|c_4zSF# zqb}z*yw$s~DqJLJ`tO|%qiRhQtxwWE)VWmQ8mSG(*=eW#yaa7S^eh_cT&i#rsZD44 z?uh}Hor|^$HE`W`H|;q!ar8#uVzdu+E>(P4YQyUY!@urx584*);g6eY`F;NU8=eBL zQUjN=a5sJ5Z3p0*HE_!<+}nq|I0?A&&i-;{sNeFrWv6#n*!gpr2CigJ^SbW~$FAqw zyYgFt_F2_@p|WQQy+@Jz?R8K8R*ANun_A{;6)tQ&2Yu0hjXQuVr+uh%slqi;o89TV zOFzikat7%dlk-*#Nr(?0VE=6@Am0nJG` z&Tc8`kU`sm8UA*eO*qb+gc7q14jQSee^T*@8 zpHsBQqpO_zL((4i&1CGe9<`iFi!Xkb24917e^1EczL{-rgtlVbj5~4$FIJD!ulmRt zpgh6x()Gu+a~y`2HQO%h961vnd^-s_RsI`d@ipDJ&XdocFbp&2b*YOc8#xa?DXEHY zhQ;?z_fI|fFdsaS4#tCP{y6k6M3X=FygVD~JqVnbCpUMa`!OxQ)sW2i-m6r}xrOB9 z`0O*>J6^!od2ffW@WS@-^{3p-d=HKG=j%0ZrmbJHVvOOX7xt_4s~|p(v-g*L;pqnz zuG+$tJnM~vT}p*r!W1)*$E#HFh3WY*KA(Jd*t+YyaNsK!d>o@*?Xh3Qx1RLle74W& zt8PU*cL~1fg0HxpaaQuO`JCI6FZTY?&4bT&e}CKQ@0n3*{Z{$pm(DaMbAP@vT1xj( zt2dkPBZn_}m6~st8=YgQ>>071|2zBfLH2z?4#KQqy`ac&&Ks+!?r!J)j6BiWdI9o) zJa1IVX;^ZOddpi*C(k24`sMko<-hl5c>53b%vt)y$#-=c_Eg1Zl*V^H0l(lMm$4ek4f?s~yL{uC zd%jzDfHU7!@#RRrPQ;jwSQh=$Tq6F zO3qPqj?eSYe;Xg$>uw>}c_ZW;EaYTgs5s<4p1<){CEmjm((oVn48doN_2+|Kve!BN zp=6vt&dw9>IPv_-y}8aq@hWY$FbB zSF^%@;A^Do&(N>X17{zAD!?Vl55Tc6WE)l8mh%or&aj97zEH?nD(n)_unYX)&SzOV znMXdu_!JWP47k?(2fbyUxAhy)#fUx?&)XvuQ`=>O&`*_@Hjr&Oe|+`U0V80`8rSs) z_@O35*YT|Rf6{{w$KVoqDJSw$tww)9|Jy`)iThD{Jn441T0hALT;UaF|0|<&xQxd2 zIOtcfFFoUA$(PfR6aBr8Y=Qn>beX@L;Oiy$3=JIgYo_aF%oiuSG_q}cHtQg@E)EbXqXPM8?k7A?~`cX!M zPnFMt<7)ExY;)n6_I0&p*Y!;uyC4rpIg!swj(6^ht<;dy_TT%C{|q{3QQ7lHh5zhv zrDyL*)2_WE87eWZz<(tNKODjF;J@V}U-LN_mH{U>3Ywz-Tyvt`d`RnefJm9|Ipu4qQ5t4#5MHGivE}Kn14cME`bXkPxsSW;|b4U zWE)i-{WeXqA%9|?rfQFUDtjjXX+BTc^wEEZqg}o0_bGM!j(#cq4trMaJk*x6SmS)m z_TPt&{{kMk--Q2Q&lx{2w(VJ<;Xj)%wU0f&jz2!efIVcn$BoV>l|5?)n&P6z@QHoP&BFwWtg>=*g;7X<{4ryd)>p~` z@lr|GQxor*{;qve?RR+qjAJzmO?!qX(|gY~>{2qt%uCHn#~8V1+b3tQFUfl$wC78_la%HKWz3i0m&7^Fx+3JPwd5>VImSr7?k}eoUsl0aS?2J;e~F$H zXT-^3)-Lzwv-3pC$rHv@b-z9KMn0;!*|>QQuHFN8vI@?Ui_vF^;kpV}W8tRWd%?NfVv7QYJki=ZALe^9f2#OOip}}%$mEC#kZXyg?sV zzU2aYK3Jo{x1A+tg+aD>(Bw&2rPRk=$Go87dK!j&FO{jiVq#x^)&KF9aTyc6HTK7;n5&L#A#BAuXL z!E}GSz@9ZCJ|h}9w|-emzY3urx8coCzeW6&2EC7@Kp%? zVj4KNenCsW8lfMKtlIX9*2C zp>AD(m!*5~i-Vj+!~;3&sqV#t z{cd|2mOYEg9DDM;Q@lxgs^W9gcjo%b0gs(?EzcMyUjLYp2a12tZ>rF*R>PjqFT(z_ z{E*hLC-iHr-@?v_8x|Kh^rM(%m-O$$>^S3N^5$okW#L+5e`zYX6>IIG_lYvA1aB`y6n9b0Dm59gLrKlIxTr<(n?`40M>7>&FH|7C@K zQNnuZh5hIc-A|iuK(9g#oLj$?rC*)UkIxTyllp-#Cip5f_@G~g+M@pzQ%=kiwDJ#p zHG+?A+6pB9m0Q2GrQh@|PX9w}sPxMUzM3|~OKW)o{wWZ`yXDMSa#lp0e#F<3c$0Ff z@@IPH^F}XfcT?Fl7v=%09)CHZU%@O#zc|(N1g-o-KdPqtbf8y61LxK+XX#hnUuRQ2rG5#zw*!1h4L;~sM{UvnV&r>^ z!n1%q%jh~C_=+`fZvBFmenZ4KjaZcaQ{|V!AI$4&Z|`+^70=Hq=(Ag3$Qh$`Jjlth z?QZA(47+5hE$mWBebL>{{TY1a$2olU?dZ25%Py-$zeNu6vr9GEf!9&CzyG6AY?t*4 zyTA{vjSsL_flv~5$#7n>=B?!#c>;Wxe}*mnazZ~o7v#-Pzs^6J>(HnEqn^f<4uNv| zoCk`3uvNhc;(V+P`MQC0f_^0$I8}VEr}eBtk}3H3qxSXNiLQC1+b$8<uL!n^#fnw zV8?%1jdgG6S4FZxzsSA*`eD3H(t1ATo;BCY%PuZG ziQ{@yZtJ*4Zfv~JoX>|y-dG##k|v#C7ru6ZxbP~G&pJ}v!XC`&)gJrZc8OVbnfjMw z7tT?!~uXq9!ywvNeR2~br0VB>|#)V--p`usa}Osqd%0niV)}41PejSC&GaW_Qq@)Z4g1dgor-zi-#wM}iz@Vk{}Oy%&05#M^)M9=_Nn;F ziI4lt+&*I`GGC>F5Bg;&v>YP{!3GQ^4izkcb{vEvzFFz!Nn!``U}4L zcJg&5+wnQ(cQ?QMH0xL2ihfbS$3A3PTH9;|M5BpTyo~s5SL%PxRxW&~!etLM^XFCN zNB_=p4*YrR@m7Tk6q)m^4x{J)#klHU^l-^V3-kAf+;G|+_dv?*;+Er>if`~v&*j%! z4|%!wQs!H)$=C7Ih573%@hg6M7<>b1AL?AH_{uLdpD+G!<$Z^7i_%}W)~{dr_;I8A zT`_*dgo(rZ4IX{v=nA^gkm?m&nl~JdrP~q@J-lzYA6NQ~9XEO$-F>LyOIq(sFZ%0F z;xo6^=gl`z=h8iH)?4Fd$&p`02GaNR7@2)+$$_|D+ntU_&tg)uK$gZPE?e8=G0-k; z$+_j$>h;(+@!u`wRN=DL_)uL@GZ#26=ZZcEIdekJN{w+-#n-*e?0;SE`}%6|4WWIg zb7_x9#m@XXRqbyV$k~aWJA*y>UL<*JRb3@#jAY{Z!nk{8d;?64OHQ}n0}bYSh~NDa zkaMb#v$&mpUvA0y!+B>P2RXO6b9{0Bk*6agMIQN6aA64U~-UxOl zUnl;YWt9D3wl}&=F`O3an#vDlubcO?FZyk$eV$siqGi0Oa2e_kJg#h>x$I1^tv}x% zS5N1p9DlE7H{cW?u=a);1IOSJ^NFfQocTnye|d{GvOVf5IhR?#1J@;V`)_DBx5KO! z$5P<}Q_Sl?L$~?kSl}l9+H$N$e71HTfPNy+15|wVmOY=_^oDKE)CKq~W)80MM_Fob0^TUP6@B31ty@Mb2 zK--0M{S0+3Rebf7YgoT2UGCWpZ6}VHXQ0ld3YR6nvz?nCzU3>lt=EtFTQ_GettIM)Hg0h+y0~c<;+>}nfq>o9iOwW@aJ1jGVvP7(sQdvfNzV2 zoPovW`$j+dvEJ^t9Vhtng;VDHSQc#_x)^+Qu70bsOOW_D?~Hlor9Qw7)Zj}{Ut|5Q z-}~b?ftz0QsDV0{9jy=L)_7a{^kk#p8FikQIF+2`4d(pp#zW`Y>md@ubrmi|`f|B2BWDykp82?J(9rd#_T(HzWFd{yjCvWw(m~H)Ki6{HeliA(?o5 z*njwY8-eRTNiAn?Aw9otjkDQ6`{bNR_T>D%-xK%Qd9biYOFosH;VaGja_{B=Z$Zv- z+J`!qDxC4%!n}S1<1bF<7FG0FVz`cR1?xmnis>+aQQZ1{u`0gI+os=-{qmqPJ_K)- zI{I1h($)BZ`aAvZxJx%aj*2h5znKTGoV6;$ZFn2}jKAOeTxI(Gk>9UwFj4e-3A7J& zF5Px9EW7y42UT*;rDO9t!V%ZrbrCq$y7nG&ZreH2QG-( z{kACHQa{+UChgd>@#-54@OYIfyVR0QJkb7n<`VlokU5u}oJV+z?&zH7R4!?s|I!;5 z=EwJbr*xzBR=OYT{0EKv!Notf9}<=y{O%W4>DTE}Q@_)Oq)S0jMEg+Z(w?7XI~%Fz zO}$E9Q0sRI4{p|`;xp*jLHgcUw$B-8SLNcvc~1B#XI@^kRLzHDaOt*7(z1)+ea0#| z7tVUl=t0Lkf9J*adE+LRoNm4Z#b!Q#E*ibndO;w<5}F(0Gf3kz#uXl`@x526lC$H9 zv-0t|YU5`%zSn=|+jTyc3Rg$xD}0aQiQlbW&TX(w6@AIAU&^wl-+j$0zF{O2Uoh-= z+^Yt-(i(EEB{_NBrFPXd_WXLOkdcoCdm0oYuxF6QZ2qpbO(kb&hIu}=s-n-cz;>*d zZ=lX4`g@J&?{STJmfN0b%btGsQLE$}NHTFhT4X#w60#*-a-u6X*E;GL!za%&Q0Ef;z3f>>&M3(&+oJsF3!d&L#K)J30LbKx+fDQe&&a!9COLRW>ihsXV$(eoI zoPQqp+xJ)C`0HKzfiGQZ+B5#gWCL;mqbi{v&T~Rmo@mc}DRbL1`T6yNB@b-|S9p9& zzuWVr+1>2eP^B6bZ^6^6j>Bn*V;E>0Dg??M+ zwB&<5Q`YaUa=SVYJ{*Hfm3~#$b;|ely5M`+R@POxW|EWbGW4^nxyWyow9l&M3xsNr z`Z%t?H@@rdcRQ{t9eZ-FkjF;-Z6AAv?=|Hd(fzpzz^r%4i9C@w%Z$(Rzb6~z88sh{ z!KKPBm2__g_lJLe^LK@8E9)v;(UMtt+~@=Md#F3nPQ={{C?7j$Xn>6GMlAN3%MjL;nf!iQtz&umG0nZG76gVz7 z9qsr+g^SEE&mSfnbe%n4swLUwG0@+eMSrht=eQXpIa$A=Pj}%Wzs)|TC7(*pPWPL6 zck`Z|W&u}3`%vc+<7R8~0`x06FMxhE2Rq|Kb34~}Q`dIP-+y-PJ6l#mHp3++`g`_l zldt$sniss*zWzS(db9uad1iQ5@VQHsJq_|ZU(Xr4-8p^GzRD%13OAMdHYePv_ns34 zZj-COt8kII=K1s!fBe&)57uk&70ou+q00+v=76twN=v`1_=enI#>>|;M+3H1slp{J zyS%Vh!9D=QNp{q^M7#v7c^&U7T-iSV8CHK-`qeypeBk5BO(kcF$ z$!X`^yPbJmvxl7j!C*;8Qt@TaF|S*6{nsb<^&^YcE>yURhs^oJvU#W3_X*TI*wUUV zT!Qi-i&Xd0hF?Jt)9`!2{oCZ&M9;LdG4|Ak4L+#hMXxnkK=jz zxtsp}8#s4q`{9;u2J%Yyb#=VF=QI8_keqzJxqREp)_|vp_My%t;u)vd#u`)vYWEm0h)dp7_FPW=kL9S}@>-kXdel6#->z8|d^dk^ z`d9wLECY2eZF_$1tnW5&R@<{e#I=pP)$v1Zof@~s#}7sG&3tzF+qc{2D+!Wa%Bix; z?DHQtx>BQ_)8D?GEm!w;OAO;7a@m{Cyfxt=rypOI{J`ho!S^n-=Svd9b(NeM$}ipN zyZF#?_I0OPmwr6YoMuhO>XBFCOJE7Z96eeAjX_gVRQ>svpJ4uNl}%bqIzLKi%q z@9%#Pdh273s51HtJWA*{UHGA>oqlL0KX87D?DF0bIKI17$=PIGCz-zQ^PKMT+a{NO z$b+rTBN0b(9;xD6O>^7biRJ6h?;yLFTcgH&H%0Nnas9ui?jHzT!Gie)>RhV$($;y- z`iimkI3_V(xWGVjT={iGy}iy*O#38O#n*Y6`FohJys>lz+LqEj)VWmQG9)KmFbw?b z-8Bcxwz96mEw|)sG#ojj$NKYSt@%);Sf(LoWSTjjzo_5HNvuhoBCb_()?4Rs z{TA*$4SeoWg)2SIjF$oL{@ae1WwcLXRk*^to-;z!sKZ(B+4CjiC4XG4wGRE(OKqDk zWj{3MXV0g5egxT;M*R7Pykd^;D_0$3=j(b6IXkW~udA(j;-Lum+$H8c*~gvpxXd#N z!`;sP8FQR6YkiRK?J0Uuoj)a3<%huS=Kb@NruJTqwlUHfbuLx7AnC`s+Y%A+3T!`f4^S@4~HUEsZg|GU{+1>KP?>BF=2{?CIWbKI4S{v?{ z3cc4pd*-Zl_KQY*_cVB-E;;S-Z~i{^`gNhl{S4)pT+zWW9+m#M&?uj0#z}m@^#*vn zN{kQNQUlImIqC~xZhUOp??Vc_W3Gq1fBs>Y@*#K&E^p}vh@7E0F4i%Ne)qR0{LoDI z%)<}mPx#|h@ltJFk9%;@bo>0hXhlmoZ9k0J*Jyt4DuZ<~=1j|%T$kI$7YXfeEz}2(?S0iw&qf$7r6LKyWxPS&uC(d9mzc|Yh zcUO{W$IJH{0MVvW&Ox0^#7kVnSy&@pRQV;AH1o@#(KjuzIcT3 zqivOkoW-4--%)AMkQ4ePMSm#x%-?@1IV&wWU+j0^d5|+ieHnEw!B;Qr8T`bb4|&)4 z)XBRg8aVX7!GmVy$M+(_*VCVrNmWODmX_1+?pQpv8hpT&3tX-Zxak7NvZ`d0`@okH zxP%6uPCtU)e*I_}ad#!5I^X&4F_3Mbhu@1%cJgjSBhC;njUqlXhx_Mw#7kY)iI=zr zAL6BuVwum!l7x?auJ4Bm!hxqzgAe{|7Pt^`!j4`gaGlBa;45nbE_tehV;#MCupfK{ zcR0AThJHG62KoKsth<%3U%liX*F&yqvK#7L+UKb+cQXptR^-3S>@hB1^7nEpj60tY zX9*FXgt_0ZojaBv;bjGD0jDjgGjxBjmSIJpsoj*J=b<9Mx>*#U*Q2Y8=`+T!} zrGGwC@nsIJ%CBo&^Z7H6fUoGWmUdC$5}z;5-w$@#J*(Ta9+|e@%W>_E8)K`-&Rwc-hK2j0=Gm;fJwB^&F$=ffjwzWk0m+vtT>o25 zyL4W9`tTNw#RnBGMfb^dqBgrc@bv+rX^W}~*KG0qcfrr=S~M0PbjF9~9%lZQ%BuLL z-)3GneEy-NJ)aj;`Kk)nM7X`^+ffJC?ci>Y&njGMjJeK!TmL71Xy^i9>t8i%xH>vZATixyPS%u54 z+$MjY+-{F_zmX+c9jG$U9;H1_KS%d3S?^P+_jsSjUqgWk1Ta5~(mmchKP&%^p0lF5 z(?VTCoV9lUOQ1ZKKTgrwuOc`K<~@af%rbCad6+oyy;q6(XR{?Iw@YmF$3f24*1hpQ zJHCel8{~{HptTdr9&8(Y?^OafTi_}+?5Xm5vO|@@c=!3ctgiX=;n>BzO;un?rt9$yrBoamTy#^&{x(4uK5{Il)&;J_BFw|H*&wkIZL? zYh#niS9j7_BYH~v<^@}N-Ic$ObDuLO{~~Q6>xeU*{*e4&>;ABs;sy4oCz<83RdvK! zqreq-_+8?GtDyb|zDOHz9jhHV*{1T?s=6JYOPu%&S??QixBptiC+yi;zYYCj+DZCd z2M4_+&X)5jN6x~W+7FwAoQSigE#`Vi73JK5z1lb5?Nx0)xBJ_ii}ROA-S*+n;0yd{ z#&r#s9&$=N>>}fHIyFepA76~yiT>&qlp9n8%GYfjpQWTooeChsy{Qag^PIvA%4M$t@*?xc8@q4p}J%1E_hn&kF zo^QWDEBrryyC4sim5TEf4V=oJ)!UlqEBEjC*KM44GxS;7lIym9OC9}!KdI&XMWJ7b zct2Q)2TpP#K2xL<=lKRI6B;;Gd~%Rv=nwH(d)s(}J_f2j-a0-veEFDBZrPDJxm|0U zZI@>pyF{AQxXlW?j1qQ6=cvGSrtgoWzh!gA80jtx z3i$nAN0Jar?;T@MHPF-gJbRg$(|8|mDmeoq9?zdo4|y{b$v3k8b*KIKtiol^>6pJS zJ=1jSPkiLc1N8Ju7F6Y*n`o*kp2E21Q|_>NTI0)Fd^7$L>(97Ew}-aE6+EbmF==ZN`s`YrEgxL;cozA3%AtI?l$S(~$(Irl>9YU+_0IP6}-E z&2jh|JoqjH2^~O3zvk`Cd8JanFP!H)N<8EoFZeJ%lrA=}%OnU>|9czst8(NnTn zD|lDUH&O7}a=z~PkDvWyx!l`r0;kG@_11G|7xE3L9-9i+ILmzR$n@hEpXUKn=Ibo+ zalG$7Ak(oexJFCP%F~_m6*pcbXO3{&Q^Otqe&9iOdwjO-`C2yv?;nVH*z-zZPa9X~ z_@QoF_4(}#6>ho1$It3R9$Cf(PNiRBiFyD0(*q8=fX9_4${`ZZb>y>wlg)hA{1?q% zCXC&xog0U|G?8%V=TXAC+qpjj7og`Xfvao-uDigotnTBxKkM{AJQqFk{_F1m9&!#5 ze1#f(DnCT8c`E;$>0T2v>A;BR2wKpkk3j2>NtaLTms7=8v7@;j@^x|!-M`c!Q1ax~ z_Eh0Q1I)bi`S{YqA*Z`k;YzLNCSJPypR?WV@mYl{vvAM+T>UcIxl0u;xv_)632?#- zb)L`rs&Jz$zI|^v_)s?wKC5sA3G;f~@E+GUp`E)_;llKuFFs$|a&N&1cYAzR;c{s+ zFBN=u?zd>?E|Hhg6eAqhA+EB8B@ThuD@84i&lTfh%EuTjZ|eXvVw@dCY7eh6=G@-BeBoK1+t{qu*ZvnlUd?UNdE zqTf~tTwNP*O9ie>1BZOpYW}q3m-$oGA42~%pWE&F&5ibbEPcqQuq~H}m!!CVzOa+O z|A5QNIMeWhN=}31q#Gv!iI?}C3E4_KsO|TRhMX$C28y$;MD+FMbOL zr3x3h+dS{M>4De_Xj@PIMV(97B|g;Yx6K-IBCZ?$;ly>A>hjpCI_58B_n7C?DZ-TO z;*UdIPb3_87^~ut`+!RdT)75LC$1rfUtHG__Z}qFXIl^XIX*&k~6oMNQNm*DX#;lH}w z9RH=;z!$RmUy|^F-TnFChZ=ehDR@GR_1S=1E^uXSz%{?<@a1LI z`)!5^T(k|ixWL6U?QrD8aHPXH_wxQ*#F`8pyv?Rb0P41LiG3W&HDb^MExCk zn)^I>yh`MWg&8wX1PPPSz`^eu2v^?OT!7}Yz%gfQ7>VmHa48Kw9sfZN z=|A|PLHHr(vCbf6hklWjjvt~L{ZADy%Sl&`m+3pNK(`L0G|sES1D?*G-~RD*Ss$Lk z)g7|+`6lF?EA9*8djX{`sycAB0vGkT|4icT^Y>c1u4diu9rw8JaC`f#+*t>UP+Oem zG3p1)x^V_j*y-P_-uz=aAe{Rme>e^M7! z9s0@j9-gcl^oR9UtVd>gd>z3t;J@f2^9|TBN!<9}s|2poU$bmnT^n!}f-j(94$tL%~o~`*E_EPyhZt*ozne>oT#pm{4R^h+OqOJY6jO+=$m{T5GRfiuM1TL+C zv;FXnxFWTjeFYBwt0NntzZ)KTSL&(bKiEt9Pu2fI)c-os!Ds#B zylc4sbw5VG|M3MP%nQ)}N)F!If14-|La&;T+AdN*_^(gRd>fZ-1Fl5i3O)R%;!6lz zOoPw%d%ffL@cwH3Lc;IJpTizE=XHStrx?ZbCuLIA5iiZ86XK=ZgHPgh;sySZ@nY-u zuA^U~r&`XQ3jNlSJz35mVR9ZgDJT41@b@eOdNpY12V9Q$fMZU1Y*ih&PBcFQE~UYz z>PNwE&F8#N+P23@+>f>>`jKtV_Z)lH_fpGwps*+8Z2tW*1M`7`-fEoG6Y)|+9Ecag zgHPgg;sy4S@q)M>Y@M&vJ~h^eXvhiu48lP^#!8t~b=#g@_q5Odq8{_)gBA9i(cv!J zp2-9B?b-0S^V|~V^(y(WPZckQ6)$gnvg{0wm&`x6&bumH$)ZL1=L$YNe9Rk+tL>zR z3tpJapZ5>{=^i@$?-0oDa<>8bP^$QhL(Ti=8~^>LF8$TJgAa0PRA~!V@{}i@iuUzJ@^_0U)f^+I72_ml5FTl;e-6+MI~oJ zKlAtMzUlwz&5+Yws&HjbnfCl_Xs;1yUq|~;=TfKN;&(2K1W?7de#CP|h}ztre)mqh z>C-Lw?Ed$@lh3k!)pqGG`k#s~GW~gj=ZA?;QiH&^+{LHDWv$->J8EFgj!)oGs&M7x zzeB0P594=x8|^BV&Noo!5`IrnTlhVAuv$Nf8+-A%;g?)?@yPL)O&lGcc=4D^E*o|6 zgz=NE7&-dl5m#S4X3}LNCtN&f!ssh59yNU8Z~@fuANq;RyDI(CbbloGuctrwn4Wu4 zZ^+k?KBj&#@?AnhKNVm3Gv<4xZ#<{V9I&NmAL?Afp7n<~_RO`DZy6n%*Hc%eJJ{E` znmqUn!I$ah??07(!Dmgrclr&qe6 zCB}#36LhbW6(^xX+vmS{t-0>~!p7={a?SL-Kn_5sDt z{&Z}%=V2qBe;m7;U3@zE41V>?XSsFe{eyR`d215*I(^hqKihvFI{wQYI?X_PS^m?< ze?hDN?Xz9apMk4#@u}=mPi=Ty{A|O`djr?&hiuqou89zW-15W2Yk>=` z_qR*J=$QX~ygfE{x*WI}5BuY0({ma-5n$q?ecuPpU8?M|l+JbeKDjT~zG}zIbXu>J zSQRd8>9@A{5nI3RpZMbfQ%(PEcU#lP;E2$95b9j2_>5xn`ITPZHMZ&bmDoGx^Wmp1 z-gYQBqT955?}&=8m~;seAb#T1M}doJ=ocaV_9MWwE!_?Su8hVx)VWmgMJ#*H?eExg zxdxv>eBJ4o-=BW-vEYc-`}1v~V{@LkWas`L*|<;raS4lW{lFLPd|j!-cimn2dGh6x zm)Pey84bSj$#>=Bv-FD>X`R8``d{tuzx8x%9#_r`ExQZ2@Mr$|mA`Aw2QN7A>m7kh z(LU6<>>xi_^{AES)5m`_3|~*z;G6rN$#=;Y-FgGppuv}-{?6A;&OdK&d!7tDN|l_Q z)>!XvZO;CNc15%gbuLvn!_x1y8y)>dW&LqgbZkC9dgO$Tr-LI!K1H2N6<>__cA@XG zgXauD+gc62Wmdd=^XyYM0Jlj)zl7EQo;+))J&xrx_~L8L`NX1Vk9zQ>X&>rbs`N8H zH}lJT`xJeTwpFwbbuLx7Cen|`qrS0~N1|<`246iLo97b`fBn}}z!iMq&lmW>oL`@O z-ilSgCExeQrRmtr_xbk^+T(QSOMhI9_&8oZ8L}hY-(zkyv=4PIJID`KeIOmXkm@fV z{>MOkJyC;illA+shdgy)7&v#S;>(gu?1$vc0rq?;`k}v^b(Wla+_uZvHqQosTm>DQ z`OaU}Ed*S(24B*O>j&@e%kcab)8I>4dH&N+54Z@p^%{IL=-9Nd8+dm3yeoj);^Jff z@>W>w{4PyHkLgB!XDk0yeklCPjI(Yt7VH3Ml=h*{r3yE_!R)uYzMizF`z{E(}nxcI!cE?1APV_rAp2|-eVhE?Zy8j6I*9PWvQM zg$om3kQ!Zj#;k;FTPl30!UYQ#(x=Mw$4DD2#?UlnQJdH*OnHlKG? z_iVfq9CKZKcE{X%PowMvlcyx6=1bYLF0~(ux|;U<=cS+6H>lopEsN477{WKGeBX;cBht`&aZo^JUpq*5UVr@H_k=+qvs1z7X{z)@AaC znRC!Sts&=XYO^~5wts5(QNRt{dx3#Em+)VMC1+^z6r=9@u`Sxj_Nc4mj2&&h$K{V) z;R$HxF5y494&BjebSjm6K92iQiqH5uVtu9bL-ju9@6E!5Rh6~XO0+ZukR*KZeJb@y=0D?Q`YZs7dSF+wB*y#ud1gxKlIZt^LI98>hAD^%BR$OP^FBKttBmL!fw(<|xbA}KOJOypQ#RQHyTcOH-1-=;q zSFfR;R-9SK@r$z>;%2|ze(h=e`pEn?oBEbj%@^={@*-!xRHor~_^;qX$A5+Y^0y0c zvC|w}QiBhEUr+s#ujdpKK1+X67gZg8XeOM^(*|7URSu3hRUC33_`(8Lr=g#Y-yy%B z-^+=c&pT%QFycGN*70?<-y4PBqZHd81!(7H$Jk1(>z|{&Ib9(88{lKjixQqrL`d|EEXPqH>p#M69PP{;Gzj(=! z%q&OK6QA1G1C~?nfNoqu&d9}1o~YIELkD>ftDZaQ>HK}vSA83~fyakor&k&7X0T@! z#ToKS{7ip8AkON~aN;bdAt&Ox(+V@rst6y^;DelvlvlxH5Z0}a`!jG0sb2!eobGn+ z&%kXExFQXlPP{-4zjzr;HsW~ruzb+|kS|3!2X!tHFI6I5(rvKkQsMWSv;6G>zXzx- zuJ<=;@WJl|-vf=W&q3&+o+>&2{0TS3XaA$*CG2rdQvUpT8Wv&$61f;Cjt7uQxVs9DHwEa9Qho z?5Cz5?gp;<4Rw6R#Q9M|!|(9JCJ~=JX9AB`iTJEP*NM+s4L-!@`c2k2M);h@c`@W{ zCLDN*2Ic!Sgk*-o|{(epsxj)qjn)HNW}eQn#D$F^ksD zx(~QfyDczK=TgO&A>4lS-M0Pqq;)=XYy7&U50$vx%Z^VC{VsxBz5cbpK%GmK zoLNiG3+8;#jazg&PR}j|`C(r==8$K;tpi8J84C>5xm59WA7WkydU(ppm$^kTede}u zQ{jeCJ6>n+m(E_vxR@rc@Lbb>bq8Pd3*-9JXUWBN6<`t!f6d_*n>6h*Z0Cjf zb?Cq5tfO(dL!fHh0)si^rs7*l?O4Cs%RbNRw@DKhIo|x;tCxy~(s~G;Z_;PU#dQ^5 z?Z>8^>mNAO&PzJD*dX)w4Tm4F!`po18T45P*Z&0bcT{%E+&r6cQTnWdTfgn1{CeyB z>rPFgeQC!Z%P!W362n=a2wmhqe^JR9dD+a@E64uHmpJpALGw4OnlCUvi(Tx@ z&ywxr%aI*A(@_(BU-*jc(&?nF?Sgq-nry-6x3$B|jVy6XnN)T7eKp~1`PzVM6gcKo zamaltdm53a^Y~i*dmBKD6T;M13dgGBBzW*Hhxl0wUm~b3t=Nyu<`;iVV zOy^a6o%pTBFrTU_Hx*xo^!o?3zA3$)_&NmYHT4@pauyQqx&bB6f~=h8`>1mXKQs&f z1xNV%&+fP5oPHZ0rH`u`>EKE<_|R`Fe>VGVjxa@Z45^E%j(%HBIPlbJ@Bx<*IObGw z$bG;y3tU122YVXAE)flT>h$-5BV&2FZ~bil2xQg4!CroOB1L(E=jDG~blRaf{&ZKI zsp2|*a#emFa?+!Z(EZ8u`*HLcc$A3G=x`@bq&4hz{NC=;2kW>=HWg*?gWq@sou#U+NHORM-V^wwCxHUy?Yzc(5P1 zPQN-hmKEQ7mB0-axH1i#PMkr0zc?F4_tWi70uHD>w-|E9D954BCE}$<#7kDg574iF z!2$z$EOCjyT@WwjwuUqHU3B6o)sdlITuiuy0`83+{&Juk)PMi`f7SpTlk{H$MAu=Sh%ho*R^T>S=DGhNA&%B8|`(e zDjEkQH{vsN$*T}m8G5<_z@L^t1VXf=e5vG`qA$3vJZ8-@C z9>%KL%6&R{3CELp3HB@#{k_om|KY>yzhW$sZp!2K2n7t4j`7vrpnic75tA;PVD|9qJ#om%?@-^St=&C* zqQVvQljjeq_Y{a~KaV2{l$3|2c?D)3njH8?<4ZI6hxrp=WAe=Sd=!^XhlK?3AXc}D zs}s(n;nE%8%y@oj#WOIA=d04+~4aFTb*5103>_A>9O;9EF`e|lIc zp80?y`=So)B%EKvA*X(9u1>g>8m`I#pP7g6to#++&hx#X<-x@L)Ya^_I2LlYS-&P{ zje{QGp!}uW!Sm_IV&~0s4>Qh>j=c2UYMiG%J=Y(??12cJ^xpHCvRtMoIFHT z9wz>UzRM``lC*cpCbOU5(nE}n08v4y1ZEE#O0{*dfoJ>jHXQ-1VzP3xB$ zu#NbF5Ab$cR%-q=TJ0L2k<)dk{#u-P*7pt>_Z=>~`uR_Ay}J*#UA97T2>=J#nK_r| z)1hV_ez5FJ_wu;c(CALtNiK)O#`M^@n{_N6FdgnkW7H{K1Rhdjwfl+Me^K@vIWYC2E(xt!0ArV@ZzB z3w+%H@K1-MXAv$1#&fEp59H1>f7-FtKn$l4Krk9kLn1+|DIn8+G-< z@%h0{{9dN(VJD@MZfaUcP#q=3r9q2JSxI8;tOV@B>lOuDKZNV1@I9<^OKI#i)pELKf^g8v&8-`FR=zZ-SSPiZ+Op$>-&tNdkme&+|& zsAh09?p8rtrg69GzQppE4D+TNY}vngT{`k@W%xKd-H*Y>6v)AI9B` z$t{kp^H80$Gu&Q|6Jg(+-$}3FmX_CwIGpb^ISzJv@1>gwhjJ0@M~Q{v8PVcN=i^d? z|IhK2f=xK?zFoUZ5GrW1llYP+TKP*|kXSn#Qcz)hk9Whq3~IivdK({SXXN4+jr$;G zby%>J?6gaBoVdv?0%i9Y{`l_U?VO+;h2u+Wx5lt@Sl?S3iKhX+*QYv44%huHd7tq= zzwDnuy4^d31l3VeJcSm|aDwrSs<`-nlYuejgPr-;6!nTgVI?ZFbz(@84OXKqq zE}-F3z*hV5?b|fIWZoj5H}qwcirh;|~PUFjRz(+XOv6g=rQ@dUEZ7!Z+h+h{_ z%sX};-Ue!vGMN8W)eyv&sqqy!h$qdPN5fH$fIk{f_4gN0ev&mp&d$g^tBv!HnxAL9 zig`cy+e)E9j4FqVwwL#VJ=AZD(Ow#u_QK-8S6mlt`~K~EI}dGhxFN@`F>u{C)wT)O z40at42mb2alVF+L&edsJ%N!sl$CrJav@?13l{jp(g~petdz`s02+k=Jtg^O~<115q zqpuhklaIrBz@Jn&_O@w{U5%cMaOhuiZ@CWXd-E}Xlcm#|AyCV#3)ahwFa2^l#bh|D)m6l@DXFj^%KrU?<+c z`+NISTYNuVp^e!Tmy~>Mp1wc+I6=6oRb$Nd((C}o*_p5W8#J=hVDf3D%|GHRzQE%1 zwB@?SrJY6N?kPsh3i9qSByo{^shDbfKk`8SaBc7VYSb=Evt^C*Z>{og?JfIgm~?Ho z`A74E>j~*!`pz;DSnNCx1zP_6i{j%rJH5)kVI4=-xAe-|q6XObkTt*8MEUb73&qE? zAVpp$O22r|ce<`#=j<#691bk^zn%x*7t0caeX42*4wnMwWVqfNo4Lviw~oO&wX?7m z&pHQr;P~=$%8mYa+`k_gX6K=84(A3tJAy*Vm}A$Io?UXdn&ag--*w>!<~;2L*Q9Xo z9bG}`wZqtXB{wSHzgry0$8NzE&Q8C&f2reH$Bkk^u+v%*@CH14!N!GmL z1FWvY)hV8R;6u7*LTkd|un!hKuDTsF1PE7lZtK?v`}dLa<|m6cn*OCjtPo3u?DT1N zmc?jigh5FIdESHybDYN5=sH}T%R^G*69VlR`qsYPI8wUDJ%7k?I9#Xo(!cY9N8LtT zLu~$;{b+#O>_<4akiIUTF1EHPE_GU5vX&IEI16Rv-G8f<_n?FJ!ui*9x4b{{isBU) z>KuBV!<9nbPeY{}I&3CgVT%h5bSaN$^BB}gKb9n1?lKGKcYx#UtWtK4yY(j1&JvrQ z)E` z*zBZnq6Fee?IgK8zMYhZj^kDv@$?NU72(10uNQFfEWS`)FaN*U>(3`U?UKV)Wy#-F zn7UbSSuK$qt{V8df!f2z{V{~JBeu9u{vulbT+8FP7wUg?TK~&^JU)){-daC0^Fv01 z)N1UAk?lbNH20p%Y|3hS_U2-@t zT#s~vVz)OMW{`eGZT$0FmpZ?Fy#C%N31^oaUl`txi3`@Nejj=TM!eHMj|e9???3W; zyrcZ**8$GE*JdLggX61K@BiHR=iswYV^_D3KwZ6XxUhO(`umR!4Un#{dq_|nC5Q7) zknLssonLk#-6{vTLiM{lKWCo%DB+?Ga1pQ*=l!_@UNP4N;T|DD$3V&2dBl2w2L60e zfV!Ehq0YUemPJcnSJR}B0Clr)xU3ABhbi5%dXeG?2YjxV!XY@wowqC#Zh+%9)_y6*dgwXx#O$x7JH3>!%6)thK`NZQm@fW4_%ien5-% z<%fj*7#yzREqT4JDfI#~E{IFsVzpBa*KxaiPw-=|yEhTf2AhxMU$wfvgnCu0;?J9e z%f4P)XH~|>QOESGD-dp_U+rKW$@y1(zkGfr6n*X%^3N_gT*0;F#&y~|W*&J2>F2@P zgz6|cTo7<6_}M4(W|3|!?4vqLY`<7ipOWoGTrgeG`MUgs|IhI?f=!)3{qgrcdy-H| z7lj1XQF6Fk(7|=$n|1YlNH<`^(LgTFo^GB8M4(Rku_VV=2ggRglV41w^tyK0_&8i& zxDM78a0P|4vxzS=GbE^vlEW@R;m zVBMaS?@2cu_E8-rhbsY{F7Vls=a=12x@p(9^pC@(-z@vztmM7_heuAk%Nmd9I2>*- z@L|0AFZiOK^pXdJ1l3V;I05UW9`M-}M_jgzbc-F}wt_F1zdv4_Kap^a4siW1ljkc7 zjv0)%>KLU6_Q{(3&)K<4;f^VvV~!KuFOQGg0y^E`uvfkC^d90k=m6JgpzIGrs=vIH za3f$J)lqVG_8lb0iPt8!dyI7RVIS2|a=04M!TfdEcDRppn;hVTnx_j3&+rhg_{NZ+ zI?BVktJp3>? z2L93YT|f9{IJN&4Z+F;FejruV?x&JbVj(`)(-xl(>c)qy{Il}~6<^_d!%aTa!J_k# z9lNx621dq@C)ru0*_rxG+wH7Yc8aZ*oiu3cc5>~k?*e&$!H}{mp}Dnl<-@k&p!SdK z%m&*ie`N{S8CG_dYId4!ipgJC<7-ZUuj#)p811D>ZaUuU)mDYNx?*G$uje;lr zMm&?Xcv3s-1N&lKXQ%sc!w+9Hkf3CHHzetBlFNI=pu>#kpr>55 zbP0#SeH^YC&f89a&n{YUgcmhNzgh{7OH9p@~`-` zb)s(A-NtABs`&lkiV@>R4jXpu(428u!$*u9mpyvql|u*T48MNpxSXN6IoFLII&L&< z54`4z5ktpabG^k#d1&pr6xpHYkMqx+A>Vtq;p6Vm_1d|j?>LK#Z^w(q`O$_q&TFy0 zP99_7&zU`Irun9c@kLYnoeM9T0EvIoXUy=;m@sA1#G+fqPb``-^GyiE!$mdUv8Oq4wv&og)#r_ zylnoL#C8z&Q5_}u=U!utO980sI$Ry+RV>j0>%6MY0gl=W%}1^caz1j88fDH8)K2vA zh4atzmRv9SmKe7v8}{T42nnO2{*iyKwU&QAsOvghoz6ST*2(V!P$$y?&hB4|@-O8& z%Rd~iu;~8L_3{X;*YW#@RNyUmKE9pgUsUri8?XjJEB|PmXoB@R`GuUVK#Y&<{<)QZ z>A9AF_#Gz}-9O^n3;q#bm4kSae_^nV=1q@-xR9N#jZ0()wKuexaMV6M%D?IZd1m{> zV`9<$!A6}!vqWedDO;aqs`j_L|N&fl4HuA5@ft}RVM?}9cZU$p!SKwUG5tx|soX#KCw0nYB9U-?&ne;%Klfk`?MW0B5*Ao&6kAt|7ovrmh^1HSEm#zFO`P=fZ8{;3>{~Ezp%xlSnx2~ty zuY~c3>L|&-AoxW7;dcVM4p*oCSEcp8EC)D>3-v#t{0nOS;r9Yq^!7=7SyQ$1zqjJs zN&fl4Hu5jm!T0af|B~OZ`d>`~{`r)D+b^-s|M0sxEV_Tx|Eh+m`R{d@|A5<2Y~>%t z#dU)f7x86$9QB7Sz(;;n0B0*y#z$N`J2*jpulCTuDFX?gIx!@uj*|EeYJBMl@-@PD zVK|0e{_L^85J%EYAwhMN)XrM#f8@8`|2Y5L6XkmyCeFU%IpWB*@o~6}D`fvW?})>0 zBAk0@NKhRmhYP^5(ZA2#r;Z`rm5;QXSIoSR)#kr&V)^ref2ROZ=1D(|B)&Qa{&~X^ z=ki^bL%4mm`H%Cj`xxop=#T$Jmm*!FyrqBC|H?L7{V(&)#QZBbu12`Q!0ktV^AXwU z0~@H0lKNle#cKWo-U0{X3+LY!I5v*a)gm&0I1bwQs6T{(kNipnPSTGhIlchg=hzDX z7p$6i58;xRwu~q7BKpyE9*!Zabd9~}2HCqzP zUo9LPk2iAhW#)YlIm=t-kNASx{8!VyM38;4BtChXmD8ayWmX zy#M94rJF~PZc0u|J2_ky92@N)HemR4!sXle$iE6Lo)vE=7SEM%>~28xzk#oQM|?Fl zKF-dx+46UqvX1Drjc|6!;TEa!<@W_!>Pf%jxR9VaN*d1^-?7HCWT@*pT%F^qSN;9! z|J{25VTRcFXgm|s9r4B&FB}{B9_jEzd*aBm@o{#RgH9I!e7Eh`{e;`<0GB*n z-UoR08E=^LE#XOWd_t{5M!Vi@BE6*XAwhMN94<}qExz&0d|g+sbGZI+Z0wgKPP*+| z(#>_im#6q9mG#LboLzE!0XTM7P<(T8;hUtt)&buxW#^!o#Xk_v1#42X4i%0s51v1A z!)G5qH8G8J(*}eD)lqV|OgJ{?{k`pHUP8J#Ha;59a<%nYy@T%!IX=J2d)jYlcN1Tg zjgP}MzbEhCZGL&#KZLVO8Yk-Cm*bN6LwIk@NAde@x;ju0aP)p>e0P)m`1Wn;x7g8) z?}>J(`@v4wZGJySzEn-x{089(*9UgsqS4TSe_{AwIBes0zTv;m+)sGL(M~w(<<9@wxxV@l=4L;&`e!DAnZ$XVA zX)Wi>Sh&Jfj~n+3PuccwXrExGLtI|EeE#95(&SMlszPTtuZriL9eTB( zDF^#$2lc-c^&WEEUkq)VK9402S0DKMg@i}7XY3QP^l3kRCy}b&W9Ir8t~WU7N7ycm zlH5%Mlz#Z~$wKXIA=;0%Ho18AKSQ?bO&^cM>DnyOK3482E@3S$#A^bW3awx2z(#uS zT}>8mrw*sM_*7iNpTl|8f8xgzy0tOK9}V&d_)Ag;)!%DG`GLl27Bij);Jw+DH^_yl zpjCb`SNDAT%zjM1Ke_YC=La=diz=6g=4&?@zdLvTkq=L4p{#9ixPWTc=e|F4fu`D` z%He{5!~EQQ??y^f3k+^>IPZ`0zVxp@Jge*wfZD;~s+FCU{nuRB7TgHnI|=}&-`}N8 zc2=D!$EAUvov^ztd||K?=a^GdE9b?+neFAzu4ezM*~Yh*U$yo^^JWm*GWG{QU{Ye> zbZ%Xao9rSlI4}V#C@NVbr+^^+<_|jn>rtzq$4RH|=3yMqQsQBZVlep0MrjJX6 z)ANp<(hVO_-W$gh3k+q}C5Ps{Q{Rvv`;ueCMN5Nuz15@PA`bFy=HVYJ4;44?arr~b zgNf^?&0{du>o!rngEo&*`)mZCC=c#Wc^u(UQaoF0pJu!?Aobf^;6T0ra((8U&z?W8 zmcN<@Lf33xn?AP11nfLZq z-pgX-{V%P(ILRONXPuAomkJyhmu!%c80}M!3-Q_W=hyN__v^bZJ2ZdwkUxqea_YzC z>SkO9bT;P|Pd$(OM~jPzJJyP)C&u`hto0-EueJP<{dzo2z9THYYFanh9BZfXaqEJ; zFa~3OHvW1UUQRKJ_neTBHTj>z6~cE#cs||rxpilgZW-*OI!X@L06MtPJ>v8F4AO0O zfD89dGMH4j8^x*c*^Wu`CX=pzQbkDos-Mkw^g6b$~t&*$0Z!G?Mt_b|Yw`(1jt~R27!26xm_mgD@oa2&rSU4}#^<#5& z>JRPVLtFz!e^J*Nnh$;M?6MnA^3pNL&SH(PIsv{W#h0Z$cSbSi_!>1ncSGC#bNwp) z7UGeR-^SKotcb_=Nmwej4%)Dnh z;G_QM16^t_RSs}=JH5(I?tW;_&Zx$h`d!=OlCAi-`;$4oY~UdO$`arc#HZa)o2nWY z#~0T4niJsjQ9Lz1y138rdA_&&D}Xw+`&iPRKfmJR?x*GWf*N0a0(=3*$KBt`@ulpx z{L6xREWc>K-M^sXLjN4=9Bu>X;raW-e&>IS8Wr!Y7pSWj4%hIJd_Me- z0gHb^oabX_e9@ofb^Xkgak_l|X!7Nc82-6!T(NM$Gvx0rJ$Kl!TH*+w6%tfO$?^HXKfM08 zX!?bx>AI!ItrfJ*;Y#7!7GAJ9{q(bDklsGnM|G4OF1%RY7u)y!uh*hR`rME}UA=I) zntt;AOOw+w79uX?Tg=@EGy<=k`sDn$*SFC%>a4s+W9a1>| zI+e?K{(bLP1CcLiyH^+w!r|(`AADwWMSkQXooE;Ar)>_G^4KQP8x;24xjYk(oPC?6 zPq@QXCF4Q(9b&jPg`175;-4RJd^K}6iPHi9uL}k*L%#ei4%+p|7mfGZ)Q#DF$ouYf z4!w>xV%c)9ydUNBn~uWETxN;h8xpi}lB#&lwVn^~{}g}Tae3-;IDR`< zGZRl*U)TJ3lW~2%qH?l`{G1qH@?6;;zKE=X%dYKQwI^BQ82QK98EBCA+q}22&pgtz zOAfca%UY2Nir1fWI$Y^)=W2ZC(EOR#%SXcRv8yJKAee5AY~ zXG|jX!Es79f-Zeu^uxU$G_IT@1XC?u+388 z_%dOfNCSo7wU>8CK0m|9;XJB+im4BrfVd_G=fqBmb21qTlH>D3|2qpld!=yENvI); zLIO5h6v~5lt!yv&q1Ycke;i+~@~`*S`(Ql*_n$F*9IkJfyuWq)zqZsMZbRdt{pgBu z!-m7FoCfCPj2=Gdx}2fot{!>aH8}$Z!M?!*uNil3&cM+*J7Q_ADu-T$;xUd>u26gQCHXga-eId~T z1REUAJ7JlNDc2#c`yC+xn=Q(TYAbi0)&DY|Pi!0% zif`|I)9*sQMGPNn=lyd1DcWCRP9JDi9_&Yng~Pd39zJMVkY{MjSS1W)?H?U5`FAHzjzBZ zQs#t&9nax{%D-_L+n%-S(>90mLx1QA3i$*6s6@VehR||Ois!oj;d}XEJ;Cr%yKWDr9}9mG zb-kzXM(h0r7$Yq4uJ@F~{F4HDf1iIQ%ny8F^PtuR;qy*>6zvpqL&A=xHJ9g4>v~;1 z)a`oqZH{j%*oo(VkFNcT``9=H_d&rf`8&3|?_5-icGkkSozEW6sEX$z?R|i51&SBX zB$!7qo{O6=YEwKtFU#Kxxv2lBo6yb;t;ExR(28gJUx~%DKiG-!eDIWt!EM}efb{w9$!srQ#^B&ok>4jZ`he!5)yU? zseMKuhV*>^-pgXwvu|^8sZ;UX`17L}R<>}sD%FqbKW?6ZdG|7Q+T-c^OOSB z#HorgUOZi}e!%v*;_jSJSR-L4XJ-WL#Cdc?``f_3cCKQ^PKswE#E{|{ad7>b<8uY% zI_vAJKe!(Gsu@0eTvAkAR%&sfNjF|xwuc`w;xcmm*fzx_NA=rIkrn5mosEp0v~I1| z-p}9~Rw81>pZ0Tcse=4r1N-oo+eee0U2?c$=nuU>G4ggN4S7jkr>#10 z?o`q*fqhg*$?-*1JB!Ym+NOA}RQ>jpd1GJ3BfA~i8P1pOWk$!t7Lsihw}b@MQF3-3 zRPhYw9}n$}FC4DyF?qe<`$em+!Xx*0Xy;zA3D4u+Eq}3u*u1xf1l3V;d>ODV#(q0J zcSW1x8NN(@AF!eHV(Ol*%)3GY4rLaOuNrLX3L3*Eo&FLjZgpVi-qf{5``mLurwN3! zOODUCO+LS};EPPt&Zq-Ba|>iV15cm&HSq*sAJtKEe3cMS%tOcLvSyR6XJ$xH9VLf5 z2sYt*&%6A@Q%N^ten?OqC5H?M8KG`^*bl1W@s-vWFqFH;szxwdR#)-Om`CL!$ z&+mxn9D1Fza~If@3QF7SZiM+rl}AE?swg?!mRIEWTpxVd{Xe>{UgvPz!A?9sdMx*` zfUc|8Ib0^#bTTMC_w(vP(#>&TXDOTyp?@c=Ja7u(B5#)qs-xui8X(8WH*H~O^HS6Z ze@MVCvv9aY%FacP&sjr?RW>_MQXga&TGutIIwY3&l)I&!t`oa1Aik_^@%@W}O(e%e%P5!rT`>2?&7_wN z`>2kR!zFcHYxwun!v!yrZo$lupgKwp=ZAQ9gU=$jjq;-omhG?)B^3@=1~y?k+py=u za?-1`*-3e?(()cWGO@h7VZDS6`sTbV{wBVLr$U12C^L@w?YQZM#@572VzD~OJHaj_7A>G9kU6=d!?p37U z;gFC!Ae!xV~Vg8x(tbFL;9Vw>q%1<8nE^^n7c`4TMXF zeN;!u@vVh*IF7p)T{)%)>27t9_hvZ1?G1pPbEcTrKXacA2|5N!j!%G1*v=lzA7YLZ zB{n-L@3~rkFFP)=yk|o^dja3sZ}@Q8WR!pdJ0r@@s}Alk^PXH067mT0Kj&Y=M%mvN zRX)rM&(3FA@vM9d6@*JpkKaDmf=!(OFyzRg z=D1X6vy<|kJl&e#i%(1}@5OL^2@~+`8$YimJ8M^m1l3V;d2l@{<5_>}L&Hh8JM5!6 zN)9&y@{Z@XnO9CjTDEYwEoUw@`t4V*oNJ!vWSkX0o;hF>Chplwcb-9HJ_mLdz_}NW zyXz``D!giMT;b*m^TWhnE@}4ro z8t28yiRC@4;(2$270;XxLV~zaa(3AHHI z!}(M^JOB9E`=pz(H6*BxlEY~ZXVE;Fhda(&o=mu;86iP+lpJ5V z>hJ4!PU%3pojwc+s-xs^E5Rm=XP($pN4hmOJ1Or%JCDolmRR2RflaAEw8Z`E<;0iu zQAki7C1+=ovh&wJdYbc5$5kPL`cybv$|jkIUyob(BP6ox9*W7(O>2G&n z=Mb<7*Ar8gUidlTgabSCVVuW2q}}}XF@($Xg#^`6a&|T;J8K_VXYqX;5~xpw!&QJy zn1}Uydc0108*Fw`-fOhHXZJ`f?P58*O%SIKRq!j`x?Bbq>AG;kH8TuzlV) z`F(S}L@wBikBp=a_qPy(oK0WB&d#(!_}zyecij!M@V;z13P_S6Xx}_r(PURxJ5QQDetL1 zYhBlTO=5X>L*7pTqLokgY$U$2PeOv~C^`SOfK8b9q?@jKl60dsJ2_m(f6H+Y@0ifeImcLUhRT3_u*)nQU-<@UXXnp%&ovco6%N-7 zHgyHPpTw$CQXjEBB&d#(!xe%}*x%nd@_F+*Uzr0ttHDl;%NI92F&&T16^_rV@_z8Y z+b$YqeZF4x+BzfOj^SWEnT%+VWnE$%JBHL$oe_EU3nFq1!1T5eG zI_+Ua=PGv)PdC`v9RR})-`$sRD;?OG19l?c^ULSINjSUY;vyzXz6XvPw~zFzehUez zqvUYg!KQBT*~bNsyidAK4(wc{;(6&AqD}FPf=!sXPfHuCh%a@2NKhRmXJ>G`%=^H9 zj=K^y#J-9am{_>Ipm!2{7=7a%AL87{u6KkJ9p!rja~3AoA}*u(P`<;F6iU`{D@00k zn!tMY0V%N_t8o5h9jGwY1@GM70O!-~Ty=L>3p<{}bvi~~r(M1H3Ro|}bC@M9&yDaH z94=*%ybgWB9Q=JCxPSi7L;d4$nSkp9$Gmub3Y@35bM1AAOFJn2^ZYUj9`|nNDtYQq z|I7;)pLG^htL6%{-F44>QW_i9zmJQpI_07GrwWnXZn~kLo+PEEb!d%ng~zNgam@;U zsJ69-i%Zb8!Wefq*5Can`d9c&EBrqzT8_(hSF3|E$e3@GQ+#VjM8-1MGNCpndpEm}dj-zr)oZw72RJhisn&CDbusMBWb)wC@=)J5zMYhZ z0B}$qnlj?!oaBMxrRTx)?_|rr%yW6Zi#7jDT%T^D_(G{)a0!pQj>C1e_^M*?U83PA zE>X~>xTIge^Xd6F?d)dpxzzhdbUmzJs_{9ACykGKJh^c zlJAKMoi%nD;)Fw73Fw^w2W{vc-h{`-Qgv@gfG`VZXAt;0g2sF8&U^^@Djf3FsON;e zcm3aF#BFeh+X6Vu@q(WRk0-;59}WqsqvY(2!0}In&$`e1zB_8{b;wr@{$ablXl`RZ z9ve&2l8``2h2u*Gn~=}vutJJ(xk@Sx-yoZo1EpJT^!xP7ojNCCxHzxl4WU7xnid8M~C|9N7}e^+Yr z3gsc~iKS*9svWdz>PLNH{Kx*#d~u10I>;aKr2vlFNf}_tk64oC+f>k{{uhklpMDH# z*VtiVt>j=dtbUZu*T>%QvhRR7Xkvl|!E-|H2OZBV4tH!C2d zhuUWra3G%_WV$+k)Q@kk6Q4c~(yE2V!N$fJ0&$to@Ajg^LV4(44}Deng`CERt^70N zIl+pjE5`bB6cf)Xh&{#AyC6OvR};eq3!_Kl^!j-phnTxdHamHir|3$?GAF3kJgc z0Pp4K@9esp`$9QREc~ zT%<1K2$z*}wm1WDk>h`Wp%LC6ndHpQ4KK;_fZw0F_zHjPVD`9S z0|yTs2RjWo$LEFb$1pAj2R&xa)5WmQ0H}W)u5{p1W8M1t?GMb?b@e)j+X~0-21>OX z9*UA~(#s)1b(9>gLdB(1+RO>Mu3qPGMR069A3J{R<{wCRtpmP@;_I-i<1K`v#tB!Ghv^O<#1J?gLVczwI*NG0nYoX}{*RF95B~%&g zqdH0s=N}~RhyLr&@8NnRUpQQ|;=6WuElwLo@zjKbtjYfzt{nWs{+=;rWTCFB*Ew7% z92?v9QE7LY?X%Va-&VzUbKlY0m1muek4xW8vR$Wt_5e0-qvXRrS(E=cJCkbVeFCRF zyXP}qSFdxpCO9_6<=a4`iA#qz8xQ9X%W-$fsQO=ZUA@lnC7(FmI4Aqy{L@wfTF^NWKFc0ka=Nao*EyW)HOY7Bu#Zi?v>{7HJY3F`^7_lW_g^|h*VXGBp9kJm zgVzAQ{?%{xqvoyg`F5#zp1-8;>pF*Cr!{JFt~?L-&Mpzv@Tco=b893B?ZJMwir*M2Zz=r{;itg_h3r>95S6F;utj8%F-y-GTl#yd&`bXyh zbloOfy=TaE!1^7re^ja3{gk=n<@mNJ|E~OetS6SaIECX2hvhh!?ycw^ z3vTyMDE|W5@0JlZo_|r`>jBFC`u9r+W0&M#%5clS8mz}DoPVx2rGGo8J?Yp#pYo6U zUAB1sxq%P;JN4sp=f^Uav(x>lwDY=}G2nhXSHls9&MOp`^ee5nRA4<$;rP7D&ZHCS z!m;4?y!%yLxZjV97Z;)Uo=HCEtyp~IU-DI!f5ljjQ#k)z(Zh`AOsk{!nd?aVVeI|| zlz-gs)y4DA5B~K8g3+Hh71()boBXTR{Bw_p@1Nbypt6(uox6B;X1p%fOCL^K59fb; zAv*(T8@-3@>iBkYc_;+FlYr)ywG*cCY}W7e()d}e{NsLCFP?vuiZ40z-i%m$%#FZ&wHzcAM06fS?k zcjY?du9siThy}O%7g7FkzZ)3OKhGO-J@M>)qXrRQ){7xQb(G|vXQbs{5bJRYwnHpF z?Y`}-?D#mle^KQh_dA8Uf5hjRWqt3IJUTuf`ImyWsrKo2U?-Qqtgu`!eKqmwI_W)J ziyYQ+9clNkN%_b9E+Xe&ofglEQO^Bq()<$+aIAj~(!bNTZCgqHmF@@$s-v{~=h`pd zkIDTGqwXKaSMsK8p95yzHlH~B5M!#Nr2IwDCzU_1gS=CFNf~Fo|E19Z&hB4|@{jx7 zN8LZ-E7RI%RgUxgRikanKlioqaa=sNZkGA$Ir!OkDTW&$##BdX_s^~T<9=t7^RGaQ zXJ#Ax3!qQRKbHd>=U>OKWP6!E>Vvz;r`kB})1&<3eh*XkkK=P~k$fG$40j~Hq_;wX z>L{sw`p_rkU(|tr)Lz`TS>svRb@B6V&!1QM$Nm1M?jP|*wf32HLwr8+FB@%B{)HXb z$;C6{ZP`9YOrK${TlY4s6&Ob&_8cw>A%@~=trPdKoXi)T7~f71j|gq;$HMvNpJ1(* zQrqC44}DVpMHBQd8kPPnY1p@1S_tociqk&B%0KS+Z*~8;cb?@crNLz?Y- zO3Gh0#zOhm>>w`GUdkp~@eGcQpLcuyBFaDR_jYyvh_6CxpN$X4=i}m%+DU$|efoD3 zAP?|6ey~mXAW3m4K%Z1x>K*vU@s)ik^FE{Zi|gq4-M{<-1$8D20wY|{(-NIe(EVydIG``1M6TJ!H@1h$|;fJYB!b^EmEzh;=@SOZqq~?-f{&Q|$hwC_e6Yh;=^BKk=Eo zALaGAM>k;mEP-u1J=q!2>`WGIx6`fcDpm*Mza6Dnb#@o~RT!tq5lzSN0r_b;IMxZnNY__C2h^@nf*d_nSWzxDeobg^CM zN4;aEk@{`3W~V2=?QwChl=qkCXm%2*ZYS{-Acu-eFaf@56&LrY zTfI2991efCmQtoZtCd>6ICmxUb4KYs#z z5yj`aIM~&j%pz? zm1%t81o#3JPmOO#D}2owpJ!&<{R=9-JdJN?D|`jWLGxb%eASB2ukj6Qg|A-YOPSSn z|H6u|QscX#6}~Lwp!qKWzKG(h)A+Jl;j7X3niAlPD!#oM-|$xW(u*wr1lHpedw*zB zd@0vi{o%@1_$oBMNCJGW19JY$(D>k?3!`x3OETWWuJVWXv@6w^!tP&+;>*?eMkqAL zSFG_x6>m&3_`uHRR(vHI-_;BseNQ6P{radL$~_?=Yw|ybOTMI?=l~ygz4q+>x~^X5a5Zr3<3Xvu;?9wz zJLJcZpgKwpCqM^rchp$84GwS-gl%(rt8rbN`>j zEqA|nJ>iOAAJtKEd;x{KfAH&hq`S)j&h?YzyX>$P;|aG2_E8-r$5*9rk9B+2#HIcm z5~xpw!)1UD#%1uvGbWKCi(o)Een(WCR_pRqdH2CuM~8Uug8ST%=^9TZ8!(( z$cZzi7fmWI(iV|1`1ZlE@j0R`SC4oQgi*5o7ZS22|8sWcgAP9LG&A}{m~?9#;I@NK zCji`V&+>Z0rT-EVR7c724FR3b@L7l2qS2&V;Q+S*bkNQbvu+C$F8SAxpgKy9&kH)3 zhkw2N@ix*ecYxcfa1ReYXx;}{@Iy$@F;H@RwV;E1X%kBRL%M10Dh1V1ayT#OU|jaE zDZPMn%N^iKPh4i)&;I4&F~E(S*-OTp!aak~4<2=P46!$~n_`;Lqed%LQIk!k^!F|>a z_ySMK_c@OE&yNL!JLmwHwq3qY^}4@%?;xCAa&~$EcQh#OesAo_q~GKq4-H9`Mt{gj zy%bIv+qs%yoA4w#zS6@hjXX5}_x8o47leION6F!QYTopfJ@BTktJgW)%I}^q-m5vW z|G*IG=Ji-6sE(4u`GM~U_-x$=m7{cBz0TpbA5m%Wg)W|ZFX?vd5Z}K5@U;iP{{Q>u zAHvxst(P!gXj_s}(BH2}?*mHKz_?B^O1kyF5`5Q?+S@|hG}hWQaTj+J-utC~T`7;d zo5P)D@wsBWS7nTbqXDFNf%SfkMyOjB@ii_F;k)GXM@Nmjs+3U8UxozLQF1uX4*A^m z#RqPkK)ONLM|G4OE~@xGoA*wXbW<8ag6b$aoNK-uC&pL&@4uw$cYqUcPZi!DlInRi zpK#k9;7R~@5&(uT`>rEeQ~}$BC&}5l0rYTwIQhs^;Xl0p%poor?x)3pW$(6)v+4Mi z{|yPMqvZI)&n-2^m;0Yt{XA;q!EsPmFC0$5`=zkmp7F*zOGr2H{8B-6lpL-Yj*oFU z=I0u?gxStj?vSq<^iBZWdkbHiiO0rL6%7fLR5-pyz~Or7A(aJk?1?tr*m4sky9zOL;ZW?xKp8B+5RqBI~}&Y6tz+ z$#_=qknI2Zc!qH^%7u#WUU=VVjB$xnQDXbW5&&I#e@`Z0jh(IhL@u}SR@(0PqOdjA2*`L2pc9At^o8>;lpdj zMc{ftJ8!8&T=T}I#(N!Jum18Bh=r`wME5OLn`LV`F+a{jITUbgG|K6&#g z(z8nr*F9&Gz*{qgo)=l|v+O}Wp7XSLnz*A*5}D^t zH;!LdFQtBbtY3AfwTH9QH&34TU;V(>bcx;7aB`)vP}ce-3T+GL+f=ZzIfk7&j^@oi zu#?skNlJm%6OChv1?~#`WvwR;S2|S?Lu${+sdmQ{oPYi#IS%GTjz3EWW?XBvH#44@ zRvuDgoTtv$^1$&Ge<$aop-&CI4cn(1+MUjeby~l8V2w%Z7g}%Hb@gqEXKU*aikH3) zq4j4*qkNxZ5P0j=`c^-_y-s;31030hSi7EmoBT^zZ24CfBc3|eiGMX}U74-{**x@< z&!Jp(LgO=}+Hi)IbKJ+_N{6j5=G%*IK6N>2)WSC5NpiUGMe_IKHobQM&d1uhf@dCz zGuzpb&~HDv+c>UINjf&kE93OrEsJEo{cwI0OxN)K$oro(jz@TuPU6{=G2OuF?S=Di z%dwKL|Mv8Ek+10NL;d4$jpOBex6XR%o1v%a#%cA5<0sFYF>cnR!bua0#@zx}{>P0T znmq#E6ggzvpc}^>`spp>Cr&~*`G?o9j)gz(PI(`7BF}3V1?2U}k`1R78XA{lWwPPLW1fjIh;7Toxt(ic3(7OK@p|?FI4xCw{K*S9hO59Qh9X z3xBfOxK5OD@MJ&X?2_#CYwbFHd17`770;6kvmPLxS_kp;gD+hHuWMrk&!Ckf39rJ^HN_?S4y*q~63ky%_4k!yulknw(hh_K)lm{(z1Cjb zD-z2?RQb0o+*Z^NjLY;kf1tB7WbBHFVVm)J4m|6BC5H>nPcoh_UUJqOPmpf^ zqUQzGQIdbvnt$1k#m@r`SdGV38s|CgAe?uE;^R0w^P!J+16zjO*V)Wp7<`6ZW+6M1 z@3h*BXJvdoI?r*ZR0@iJ&;gFK)3rp-?~yT+sxji(e}#l;psH}VMT3?Z`Ew5}zKism zWB4aD|FRyB?;ppPakRXDqU@YS=MW#tO3hx1OPv-Me}a5X$5a~mD=V1sFXHpq?kl1G zPy-xvUhJQFhamk}lJXw7*Lq)qSQS4mm`gurD9VM5)g1_Z;hQmJ}K1bIrh5fWmajDVTi}wlVaY=>s3B{$@0gm{J zkG1-r`-G{cJ!F?%a{g_AxZrs9bJe>TW}{R=A5m395MRn1i?7jvos{=%%|9HQ^kZ{% z$~&EJR&SH{#a8rBAJ`uNbd5`5Ew9MV0?kerjQJdgzK`rI)a)#CFzymA>#|Bg{U`iX zd_K!!%L)PWdw1CU{okeLdLjb3u{5mfS((~A=5a92Q(VGYTv8p_NqK0k|3y?k*886m z9JO~H$Hk=y&d2at=BG_?J41}Z;esljH)mab6T$Y{;z@Byoolu0VE6d_=omWSz;2?d zqtwr;#NeZ2pyc8bRdK1RblpI@ z$*^vqI!ankWc8S8%nwaJFBIud^Zw~LjxX(ad42HvTT1>S-D22Bb(HeTQ}M(J<7UmC zi5H#5O`JJte9jP|9DKwr*`oFfQ&b@_wS< z*Ze(`2zJ4IOm&oI-UnHEPd$}yFN?Ljlbv;1JBv7oC*?g~8(#v?#?J%I@7{6AiZ_-DO@*xz&Rt^lTepL_P`fS$pU}TX^i8cF zSR%EPaEnft>+58QYc>3}hQZG$E`6YG&RNh&qA;=1_cHXmfyI5(2h#Dle&kvrzo&d@ zcS8f|EwWudqxLdlK&7C(89ovqhNO5FYw^r<5EtUBg1Auos%isnrPi)<9jptuxRk-1 zeKPpo=M(vu`jWI%E?54Oxw78@`=REJN&6|`Ty+2Sqw`lRiw$_@B z_!+g&z#j_@|FYJUh!h9s4-^+a=u=$E9QeoOA^S^tJ@S|HW*FDK3t`)CH`#d*)|bea z0=(`e@%^K?ltR0vym?kT$L%{2`mOS-pbfa7#usb@E(NZ26JLEBaJ3p=q&GjW=rN_Z zWNCaDQ(cFv6E0uFH9N>V;r3~Eh8^H&9Bi#WP`vd1V9vLLt@$>6E$`p*GRsr0efq)I zE}+uo!}aEMw+(-;6BbIF-zRrA*L5lX<@2yI4xig2zXuw6!uqR;W6^Id`vhlaEqp(Q zF)01oJA-g`$>H3)ZxlGEymRG$xsQ!Qa36?AUluqH40~hePq<z+x1;TP{Sc81#v_sZiq@ZzU)|G;BoNltFL&f@rrzL(#R-F?Q+O%mmD<)p^P1=W4` zZ}yFS-#y0{RrdjAe|0-t*Kg+v06+1P{eyE~cPE>1?+-t-Wgg6UjXjuX$Q z%KIfFzkZkaqWxO(QQrM!GVk@nri!KnpVw|ue4G21Uq*bT=d|SG;u7syDetGf>l!l; zh(8GX={OwD^{0GJadFSm4W!rcTnmHy%y?eiO;CTuwoUrFd?ZdhvoDZ#CS5nDhHy#e zx8&pOOaVKw|J_sYP=s)v3*+Pb7gZY1uiWXn48A9kWjpMnI!e>O+d2ymWPhj1w) z;``SO{$M-1IC;Mh{i}Bv&wZeG0^sI9dAG5y8!^45jc5aBryufw@m%ob7v}mi@0$2_ zc2w>2>n?wPjK`*uqO}>k?vEwqMmeu!h2eMV-{i+7sVV={d|R*PBivi@Z|AtGGHZR7 z{Azq$x+0GN2fe4n>i|ddrsqECU)5_RqR|2FFyO;KxQuArj~Rp;U<=< zNt@r0HS7L@tVNO!_lLU_3i>>jB>$?xHuBG18$T{=dr{-=;Wtd_qw}rQ@^1I9TKT8{ zJ|$r}|7!Y=Gp}dWIk1!b3xF>9=Ym`iM=Z(t7o0Ee(+S!9p^x__vHMb96{ z7gqh@oo}AHN+J&ZZ^mVGH$m+gbAPBN{Eoa97rUKqWvBjopN{QR?fQx0UFJF~<aXadanM%&k)1TodzF9s@1S!2;dufU z0d0h?>sN1%&qwoSftqje81?VO$B~__UEihiL5d+Bo9hp*zvQ~S^ZK(UqYhWh{xH3> z*&o8t_c`6CwEn>HmBU&E*LA1WKNltZRtM{slGEgR>6dA4XfEx%6|hZsk{q88a)|4t z^EQ>Gl3q@BODyHj{g#$Lb^V4goaFeLQeDRV6S)(xrSru}{;1t1YlqrQ`U3mt#uwJot6Uw=40 zj{j$Wwcng?o89qoHE?WEv#X}f2Zqn!c9P8zSn+IU^_Exa(OSko zTJQR9lIJTa6Q>Gqg5zKv93R_R;GL55kgw^|)q-pxY0fL}cNG*zrx0@$g!{BFJT+;eIZ(K(?Vd5WqP$R<3?`C^hb&AMcu|VLl%D%Y6kXYAC zO~BgX_-g*Q+Q>uUfwTIOW)tkAI!X>#@ylvsoQNzq(ztH30k(BaEL`5+)rNn+6g>jx z9qnA66I+f+v2dN5ByQo?_k2M-TYhTE$=SIpWsPy4&Z;Bt`kHW=$FC7oN6F!~fX>PA z+0hT)Z(d(I=m3{{!zOVg;JS?-h08m(aC~JatP$AW-&*nGWCA7UwTumiYX%(lqu&~z z`~f}5vtjU99L{s%8e`ne&*`xaHAcWT>gt8V1wjwn`|}(7oK3os&MmPVZXe(<*1I<>^$v8ca?3$6R|3OE^x&<QELeUs>DeWRtLQG{`Ag}?=8O=5eLB`0 zC!RS)xZaZEgZ~|VoY<+26LcO>-Dt(r-D!4c3GNfHVenWSU&iAP8}0M-H-|z$;)@y2c|Aq* ziiHBTQXZ7jj_Ci0wTI5b4{G<<^kI5Dt>t8P1@7)V@-q~`~3Q{ex z-S18Puk1qWI;Q(S@%tYa&*&C;Ju;(qE~eiodu`vxQ9JW(v(7hj9q{3Jhb8YZc|Tt! z;G^(o>}=&97>1o-|^Z@P(2^e zcgM!X6w-YOb;D2ceYpD;Z*@~#?2_6`9r7vrJiuw!vu_j51@}1+4sEsT*|#}63t>F#28vtn z?cLk1Pus-TUE^zZ5KkxVjO>rs&KjYeodyPVe|pBFWY>lm?JRS?)n1ws%%A&hIWBd1 z;GRCj*K|hwbyl{z5B|)D&opOb%O z%a;kNqa?mY%}#HEd^u-IzSpu!Dv2ZQy!i19s(2Rq$}Br$+`r`YTX}DEU?=&Pti8W3 z^~=QK*`)0JX^H<~@-N4B9}@9ZXm;k-C&pI}>vtTluH2E^NPLl4^X3=UI2driN8@1K z`Enf01bh_!h$oh$al(~R33oLr{Wjn-H5_ur;-US-m!sk8h?kTY>113Y`{RvE-bdtf zFP@oSnk(Z)G4kG|_HOkH{Jx(_5+-I|s!$k*G8rKU-pLpa3Jfle+ z+;YrCZt^dv`Ir7xV*VwKmDh#CFMMiVe{tepI*eWTh0{O3FE1zkQrrE5WM{KxXCy&8 z{VES%cP@L4`0SF4r-1X7?x5J=m(e{*f2HkyMY1#d9;>~0cP19k0N9D=lmBYxy@dGe zlKOk#YpcH(JK&@KUJdsn;(9k1@UCclJE^}n0*-hZ9qmbvTZx~otT-E zrsq$ZIca8#ABrKq9F4Eqft^mq7qUOz_!3m-x4$&>I)mIAVwHKKZTfa=cHTN;!W4K-;P{CXC(W8Q8O+r(Pkci(zOw&1Z`VS@6-49P z=_D@Xw;mVsI#HJO{8;o?o^O4b6`2-s;eRI--<}AMrE5U}IM-ghOXU0AR%Kt7Mhv;O z_x^CWEO<{80(w83vzKsn16$5594;H?A8hZ(cfJSipKs?XW9B0cR|$G}0rQkwr^4xK zJ8!c?T&E%O{)z5a3><_w4{VdYBsso}FXZ|Ahp&t@u0xM-h}-+yGUIxA{op+>pno+( zo$(DBCjGmo`s7a$Ct#cGBgxsh0rWb7!hILz?L%CI!O?Z^>UB36<9z1n^F;Kx!b6Tv zJS1s;i0qK>S@6TNhE;p{_DL9&oSl15ljker_M{#p-9iV?kGV$4`;$ZeOxTP^cCQKw z!jt6qveftC)Azrd#pvI` z(#op)(PHV38;hmUMe3H~rj<+K_D9_kE|O6gB}2Gn7>cPdjJ~hed7sxg?|b$-JE#4A z=keIy?|bg+d7iI-?|K2T0OBqAzmsuJtNxn+ab*^oJ4Y1?vQvXU+T2`aKon; zDp^0+_n#b}XRjEKe*16$ba!xn$p4)Avj}{L?S1&>CvTDU3`jnuaWf>{FC1>7o?g%s zuTK}pz9D(5lJiRv9J@ULKD~6Rdi~aI;=*I;Coa-w}Y-{f{WAI4r4HvN0chA&UE@5}e@ z0e`}Kf*JdqjGNxud@8>@ZgT!qv^;yD|FmpbRmEr6sM~itjJH~zs4>$})(!J%lkHyV+NyT+r@Ra3sCk|H&$40*8%};oc z_$uK(PpV_d;gaD#F2ogH_RH-gTL$+=P#sGSw-sdYf_8Ax$M=$KaCTzf#Np!iiFwG% z(2-Syi``+*w+Cdf9mQI9C?Z_WSbJOn$RKX%!(ZuX5psYlAG%QW%SjJCuG^PhV9&P; zWH67Kg$^A-&v}l#q>#Q;I+@qOdxxgnmGGmSh6XU~mr{#Tz5^3<6c&Oy!Fc9SM z`upMQ`>ZFqz@3R$4mTZe827g}#GgRE82E|sRC2f=;LtC#Z`peZ;?_IVvl8U6KkigB z>MS~b&3Jn~_iMNoe^%msv94qj29L$**#+d#FZcHN8!od#{2bz14HbH({`QsXml2Z} zDaavj9N!2yKDIw^*}dvKve+Tte2{AkxV{4>jgUDa5}x`q*Q3VyiMWIQ4E>E;>aWIm zhU~8V_#h<3f5IvA1Yh=Va9$C|PMeL!2fCjx0DXK0V!o>J^n;=${E_dd#INN#e#Wg3 z=7T6dZD&VVckmmBtAKF}?{n;g4rT|!OLbS zfpq)()^xs^hMpLE z;h#hX@R#HlPS4fQS7Q5n_klxy5w=sIeZQ0iGT6Tq7Ub*d_#EI;Cx~(Exu=hOLVSg= zkLp-*dhP)k)N}eX2X#H$PPE5m&lK;Y9&!B7PZCFo1Dwk*uBSda==A}F+u{HhfZsnl z2LO-OO?`!MY0{hy_i^@lV4Z<^8_VqeHA>W+__Bhs^2Xst01n&x`khNxBd*xtdd2<8 z%j)^-@GG6vam6*oSwBA?j*tEEL%m$OKl7inkHd)MP3n7ij--9LjBH8|+2iI96ZTzx z!6*L^F6l;loEv1&pa1>y)enTLaDa2&B=T&^!Q1qCT`ugSV_?a}!3Q$!;JXQr<;PG4 zx3B|TW}awA8?V_jL!jWESJ+2&EIGb{o5geGKb$$^H3&&Ou5-9#E$(?|Wj#c)OYXMUGZ%iJ z8P{HSr7k+1aORTZ^J>pYZCF0I6Upy#z^4EXpFdjiMXBD?2Jf-g)2H#dR$Z&}MT+fl ze!#T`zH295bpz>{G}RvGDi-m(>8B)uH7Gg1RKT%u9UhPVHJSjO?zQLJ3NnZb7X-0; zQn%D;_PF@PVqI0T8M_%czXW-p!S#aEGobn9u0zYNCBdBOiC7L7xqqSBPoyuMzn5^W zX4>OC_X+#5KioA6^(=gCp)vyY(J`>(_&Sv=RM&AMFFU7{WOHF3)v@GoMbLNQ^~U)> zDBq&Q^vW^?W#x^<`NcYC;J9%&k?d;NM|CVYTm{Hr;5u&^^R6yC%N~~nGN|WAcf0id zy37GC4l+2tUvurRcN1Uc{q}t6B_a+F)aBu@t8RYSr&ZO0v#)Ztn1{qax&C63-4FYy zjwOf7dr0_Y^rK7aNHzfbsE(zBdGgr1ZoPY4(Nz2E9pO?j-d@yt|3k#F74}gbOHR*- z)-T=FzD)0z{B!Mbon8{{A^csPKF=z8G!aMZoW}0o%?M3Ubxhv-p$B!ujngv#$Hso* z%cQ5Kt3vQEcU~eNhbsdaT)$8KGGD(AwABGFru7q3A56mKmAcgh?D_nUi+s7bICcf$ zcELWXW69~c{|OPlOFjSXB-t+W?QyXU3)TA^kF7W`iEtSk?fVJWwc=%cg~DKaq5#atYzKIIyo^yh~{TfR)#D z!{YyWI|3UW1V%>AMEcq&&pAmkJ^;uqPB}g?DBWc>x~5z+QYnDH%Dy)%?yQ?tJV%yy zd{lA6!Q1cIz8BT0GR^7WD_2VtfGy>!bcYJV^KL^&DjZ*_HZQpTvQKnBh@%_-Ib0mt z5ib0?47yaGzqntu&(GQx;yK!P&;LOmr*|!~Zx5{&i}pV8we;W7FKO`E&`{JkJqLmu z_AgJ(d*yt@6=uKe2p74ryZU@b|7kzpgSd=Oo#E;=`_639y1%U7bV*-M&tzC1VLNhd zyIJoi_DdN2iq3;65KDRwL5+jw@hB%VeB$||(g`z^f{FI$Lva0sn|qz$tNnh4l69;- zj?*arzh1uiDRESo8^S)SW2v7=*wH~DyOfhBCdiQdUHYsNqtkFp2Y+G*KV;CM zu>5WDQ%2r!xGZg*y7zvoyY>kra>Lo_(a36>3v{dvHd)|KJYQiZo z`+liR!xF$($CAT^j$5UU@9DEL^>tMh?6bqU zT8s6O=YwILNj5JpG1oZ0{M|3B=jVGRop&>8bohv~^+VfV#Q8ISsK+hD=Q`eA&#ZMD z)aSD1Y@GKo@=bs0*#z70Se%~zrxvOG_03(oEJcYZd`4M$<8bb2i`4$*qJux|LR{ML z#26r+!zJAz_)fh0e!csVxvX%$q3hIj_{2l29)=@(^58g5aDKqy`GV5P9dpd`^qJFh zwWep*cZCzsk_v`z_u6A!ec&KPTgEFtp1wS}7CyIygOw<`p65C)PyP))W83cX_Ylt- z_}nPpE8_hO{SLN=`B^hp{IwSplBbf>Qz;VXUkYb=nv8i&BXI|lP8KJM<3qTP-FIim9xpSV!&O3_VM6a2v=uHvHFK4Lf1Thw?uF|4-7#e|-#5$CXBx-i z^Nn#V^@OI44;7kyBfjohO~((wKB{9$d=-xweDUL(#+N%vtaFx4{r&)PR9o=5A2;~i z;|dj$w<<|b&vVB64l`OcP0ujs*%pXWrhM0e_R57d_d%R7F{^#s_n<_*!?^Fb zUHIk2qK@h%OFVwR{6s#ouUPU+fdl&p7nJ-GZe#D4)~Ez*%1L4#g7uICKAOMm87=M; zuRU>wQVGXEd}Et$=drGVu3QiLb=w)slc(Tk_<-j-u>YI}pZmb)@<|gFx&J&)J7^v7 zk$&00sqMBb2-j9Ia8U=i8k3#}OnM%&(KAEhL*G~`sC_|tD(5cL?Mrch_6`vfA(zRsyDSG%FjwEuRX2p{lf80FB9!{z}%Jk z^_(J8JEFXHK^vfTT(JW_%IoY~MP3I|W+*-f?TF%+4>;nfall77zl6&JPV%Ew$@#@~ z%{ukE)7UN(Hd*0_Z;8Z*Hd@Kke!@j1T*QHWoSw-8nkmP^fj2htI}T3rll*L#pD7yO zckdhLp~x;ODL(@%jd3OQWP865F6&8S97~;QKaO#Jsk+Cd`lW9#(yC!ec^w1YD6d14 z?fEEv!P}r8)Z}Z6oa6ROIIjc0IEf$WVHdw-7&oz99)9uSH_0Pj7ze11CB-4_2_p`^ zVtf0zICvfrYpeNoxc;t?xjwD+EeIwPeBt5GnJ^gL%^Niz* zzaySI3k27`OC0kZ=otbWUbtO0KzWvMHK04yu_Qe+r1@vfsZG;!39MJ}I>xxponA-J zg~m0UClg;lYDd}UHI2`=L!8%`etyer*(SNp`ExalA$ZDb*H;bX}sld{nm-NpL+HUYTWb3TgSar$}?9J*B$O{BCofvZxtcy0x#O1ms+i@ zk6P}$ponmJ4(!VY`|$i{LHWn}c}&7n$@#^-M!aVzBRoYt|I+q_B?`$?$>H`d6Z!eu zV=w(ga^{l51z=u)>*9~z+tnG{pK@ozIB>Y+`QkpSYoias`6YhiaM>Hg`H71A+W&}r zWe(44_^%b`d!G7q&|bu4O?0MbK*Rk!XAMk4o4LwAcv&%P%jsG5=L_oj!TP0Ndq{ps zUE(H+PkEqvS&-~}} zsfgP%C$XzVsj7b9QxagQm4r;_G9t4A+VGWJbW zzfY?cCCP9lXJ2I2BDLRDuD(S*U$+B3o3R`&>HbCPydeGOoMozC`Zm;)#kCQ?BewWm z|D}lQ2gh;37XY~qAb88hGe;qAwL@HbRzw{i9{X?ocEk;Yb(Rx8-;oXKdw33?(pT;0 z`vn^6N%KLR_hVn=eoefGwf2VV^xuEL9KbF7!?XI7kn@XoYRPy2NtR4 zrH1Eheh(#rot@=NJ=`0NKKx+s)p>~XPH+}K|5VZM?pxU%%z)=_OB%+H(=!9^)x|t( zw*S{5h%5T^Sp_~OY#dJ6E#|GqevLo>2zvhKtiM*ai+RuTcF|7|x8q%BdQJ!2$)MFw z|9-iGl-m#csE#G4XXp|!pSU1t{Ff+EGP@xk&0AgP81KFF?JP|=w#-9yjxQQrsOov_ z$L&MNSN?cIJ`Pt7{=7z@kVCtduD?-@ zU*1X1;unDV66SuJy`TMvdZw7}Nr12Pbw}D3<2|0K=i9ei>gU~XFJ<0IV%=AJvid(9RR zclT=$b9kqKp%Gux`HBrb_c=Unzr?5G<{G#>3*0Xp?hyl5VS%gVa4Xs=Y43@A4p`hD z(n0DcbUhz6`0!l|oHq_ie62MBAIQ>qzLbiiXh-u5zR(_iJUT4#Ihnsiv^+?bl;`qO zd0dR|R58P^sXXr@rw5nQgxO|Yoc~;?VZv{y<$#2hB5qL>mSKYIE!zYC6^w>)Z)v@IG zO4G&tJ@0PX`Z~#mzgVVF9ZL=uEfMpc$1*Ryi)4!*wAVBJQE`9rtahzon1^+o>7H#X zK4qSG4m#fb@>Pgi?+{o0n7H2m&ZcgYNlz?&j~nxP8poz@fP0U$c97!W{22vOs3^{0vZ zV&}}=Il?SYpJ{w|T_DDzQqVCDb^6|_db^Nn_@DZhdWbbW$BZ^MluX>i@hK38 zlR>Oz@EFUyrt#ei95lX%dNhr%8rl(#NADi^@$p3Mj8Ejx6JQsdeAIopb55IN@+Uoi zpJu>Z17je>6K zdJJMv+(f@bP8R1|bIM26%N%l@>~qp?YkN1|ZetqX(la0bSLTrGl%Iu=pXC2Ei#(HY zT-?1aHmLsmW$`=z$+B`?&+7+_ybfpbaZeg$AUQt&WrDBlK$d0v@H{+j68s|0Ky_?48J5OA9>R$bfW&AijYc)OZ8@=;C*(SM8 zc^v@VFt2?OgVH`t)6)-nqTR!`_kT_1kn2wJx@LH>f|%kyjpw!Nlvh-~(l#6QbdtHS zPI(=Jye9vnjb=IXXU?Ai&AwM}${1yqr_aQJGKe49DeR@!{^rGFztcsa5}}x2T^lxRB?Q55U={K>vcr zd+ELRZwASl?4^16EeLWSanHnPIf zPBwlT-+RLkERaMKs(OCTHrhkvBA&11CpzR8GxbJ2|GO@c|C9B#eF_f*+w(n>=<0$gLzJ|=@r)E?rO@b<|_jxVCM_v<^{ZkeByFO9Va zimP3F2tFjPTiiJ${c2n(tcTCCj#%gPEQI+du0ek3J8idFo<8ewf6$0~z+#+kWfS*G zhy$LGN^W=9ave_dU7s}Hbu}>#$?&W+^8It?U6aTjbE(_+kYS(Cg0HoWeIDS$c3aTr znlsHj^qJ;8vDqWlJWIO`-Y-=+L80%hN-loIz=s|D;;Ub-u)^u~l^XWNEY1_Pk?hlP zD?2LWf7F%Z=_TQ)-`%oO+-K|su26p-Cm)NmuLkVH_1}(+-TK#^OwZ|4KUf8P)LxNO zJ~mgUJo79NaX^^@2YTv$S!(z*dMVF$isTpK3oSJGJRTk=>#G|s?JR`;4o@VnYB%L! zX?H@E`makk1eJN{ji6tf-TIkm73B50*?3?=`yj z_%~r(f%m_ZHtYu}Uy49a@(1cF>%`UdxIfoUKc9u~hT~-0N^y5$AL$|6r}M2a=7Xsg z>wq2-AD1ryuodI8EqKD&q;H|=y%jp&Ge%z5bmQ%7C-G5U2c>pY)5N@v-Yees^yDY^ zTb}2m{LHxC$m`e@yq;t$mYiSw@b0mW@ZA~ZAL!?Iqo((f5nn;C*?K#w>281Bo^avI z4L$P)G)+&pUtB-Rzq-p0XbWz&COxVBRR9OJzbxR*`@K+6g&X3 zXqVewOgI+hwLafH`y9{V*5`O)P||!ixLw#A>G!;cj>GX4!h8140)a&bN6jTUC0wph z9ZPDrWeeaw2+faZqb$SKIX;hH{BHc z#21HsRL7FT1;8(z;k#*V-Wx}50{tn;Q%QMN3GbJ{Jgd77&X;?e76(O}&)*rCHw*cSO|~H?wWG8_Mmq`(Y#QHu zI6lt5UZ3*BWn@q8sze*fzP4~33+;<+yoVLf=kLfE7DxLcjD3{X8Nf$& zAt&i)RdVqQXzzX9`03%N2WtzFdOny3Pf8;N__O}&|kL{uL=4r4Tfcxv1IBfvN#P%MCIN$}!FY5LmM7|`GZOF&z>6x%lJzr3^FE@x1{wa?s zC@XK&Ph|Bq#_6<7`*E7%%f4Hzs~%Zd{4Mh3KI|;+1&bG{*T-_!+;axvLhxDE5$haZ z3cRNR*QrmP(0nyYz5(U{j@VacRw-yJ+-&p?TD*(h})VHRM(q3 ze6zkoT+T9Qe7TQ^_kaXexvCJi#UU=Fz0b;j%HEBLOMkW@-|e@KyKB4*4rdo3j3&zr9Lme?@T3Q_CxA-p{x1vq5l&GlH;3S zF5Yue^;a$ogK+=L;|<%9&gVDyQgV2{%WU|PA}^|W{b|b|;eIK|Pxx$TC~7+2EQ2rG zf^UGtr{nIIa4RM^I6ksmA>qJqb&Fgg?rV-5c}PiKbHAePwk$Y*D#hY`a=mw~%0~N? zCmZIcuIH<#>+wr{k>?vM>8azEovHXWf1s|Mg3~1&r)SCW;y!^(R!uAB@VJk|rLNhe zbcOH6x!o0n%bl7SLk<^sNL+V1v}VXBc;vjdoXtPiehCu(sP44f7yE9-#D#jHx9StkC6IYLGsi=m$D$( z$>Cz)7o11V-dvV(G`MiHWvYGOmPD>S8eF_o+&`axVGfK({MM^`?~Go3vif9P)a#;) zGBYy!T$q)a(X;PG7xm2SlL__S7iRX#=zC#C&z>1QGqbWT?3IfOS(2SsWRG=K3(^OvxL`3vEa;Jslq@4>YWubr`%60j6xas7bb z)Lbh{L#kozTy575(35agaE_y)Wa1tt^W;=UZznj?`{8dodx({bUksjq!2B#6ab8Hx z;9$dkko=h^`7`2RUFAeiijUnopkj*9^Vu{18H9RfY-p$_XI~NMjMuBS?sEM{eyB3t z=ScJNI%!_+zrj9!9ACkE;<;q^uw}OpUtxv)IxYn34!rR2)QK-)x2p)Mk&;PW6iwv{3kJ>}>jT3afv|M`}t-}?NrS?$i07vN$ciL zCE3)c6LF-cYmpJZyc_M~K)5O??pZh4<2XH2?iSY@H$NSmhL%)0Y=3dc>rPT!VF!8= zuJjorex-R$i$gWMHyhj6!scf_NV;X3t_Kib@?wL}+eAJ^^Jn~&XI><}l=l<;!sScd zLZN5YAKPaWE(h)%r#hCTry}WD=Ri-w#U+1M-P|;P`k+rhe}4X5v94zfbVvPYBfhAl zXQ+vMAJ=Zo_ioo_Gwiga7= zAP%W7iSw<){+;_dT9OlXHV@eY?-M}%AFlZ!LVV_u^NZ&l5%<$}PSgFFV$pww!p3`| zJR|JmNB*pl;$G|k$LSf-^xXVbny#l}@+a}dr1;f1;G=m+figp%Pq;_g+sEnIZ=3Mv z@U@@D$^X+W^h{l1w11epG`A+-w1E*&-=!yRNvwgdVNY5SMW2$3G z{`5(D`bOFNh34}`zXlcZW7q+X)6@U_BJrNR&+5Lz_OJv#%Q|A6!)3iI?CbE+P5&eL zB(Rz4Sdx7el6_wAsVu|Q$-XTR2eJ=i!O6<|I6ccWJ^MencsR)xne^mvwcrOl!LaG$ zH6Nk}TD{QFFJzy4sgY+HkmJN-Rg!%HDSj0W@{`kZ`emYD+A*p9J63!gF0T1S>HpQ0 zgbSGbLiQC)_EkBskJbT=UB9Kc+N~SCu=YYdzWBbQK3@uh?xZu8q-Uk1r~g*_IBZ=q+JG@p+;SpVtgU)I9&x8sCeX?83xi96kIXBYQ^7e(B?*WOIShieP$GpytL zrNba|G6FYZl7gQjvw!qpiJRUYUWVWEE)wl0YYg8WJW_k${2AXZ z*0*2OO+E+h+w)SxafQQqGDZBVmc4zg&gIj=kUe#X7=eu1<^v#~09k z2lc_`u5`kgOAhC{HAy{RaLLKzo0ELuNA`S`pNM>U<&N=J5ze#I9_NpU_Zl5o`_K&Z zXB0jYo=Q$n-=~7_$$8QHNG=ZhsE#Fvi}}TQz6q1BzJ_E=zO%b^z$0Z z=ZQEP$5Pf9^9kP#vlZg8DmgvlexYaj>C0E3CH|^JE<6^8i-H`^gTH8dFbid9tCjGi zXXzY6&u9VP9te-+aoUHZeQ>|9){X*KKCEcFEeq@?ar56JjblUXah!d{Ux@ch9dpjM z&Elxye+2f^XT80zGsfG3XL$PxrS?vGdP~JRE?y45`=a$jbZoAq0j?Ni>3pkiDbFY4 zIs3Bqi1DFx)kMAh$r!A2xb<|u)WJugpXWE-FKZ0HL@nl7V(zuVY+kn%z9uW3D2 zqxr=*ZGsYqKVCayFY$GST~_@(Jr5Lr)ad64*O;E!TAs^JBHXdScM|-0;WuzHP@PN1 z>F=S#kGRS2q0{}ju%rI|moy(A_fB&J9{&?}R-y5`LSd*I5`2w|`-o0K^}K1_#$0Ni zu7X#Mwtz=6+vn5l%YJW&ZXX?6wvX~U4!TiZdnefIN%p0JEd6d0{`M7bm9dxfY%G5C zo)0&G|PqMF0vd?#{J&yF0^BNno8zwPB zKsUS&NbfI*2hJOS`r<}7vM-?7r|dA|hu`5Q+eZnpe?z%KaSKhf*OSJFjO&f@Ay#CM zBfgB2gF0Ud_*7M_k$=P&%r*E@pSH&lU-Cx7KIK09{)KW~Rw?;S@qUIkH&1}efH0po zo#R7U4i^PEoS&V1WBTQEylDOkh3Z(6o+BhZGaSTW+o*K)cZKGI4~rI-Cw~o}@gBhR zWmkE2&n-{>20mjBqh6!B7{4o|_e(*eU#hXl>&{ZY#M##cuBqdEKJrfA4p6Au2-v4p z)q=wnE)wTy?>Y8t56Om1{St?(eM9^{W$^Sn||G_Y-TZ!p>IkmsW`Xy>#a=*m!`L%o*zS|$y=v@6iNc5*3zr{xU3a0S(b+L)x zYB)9;cHMs8_rzCi;^XuTK>Rub;NhpQ*VikVX9g8I29_Ky_d}5{H~u$L&zCUllX2AV zW=$6HtAoBJ`)=Mo8OQOZ!rBC{8)lB2axTewP3skkUsn)l34iKw;Ge?uyU{0%ewX7b zhht-Vs66)$-M*NKkJ@_;w0FwOR0sVh$5#i(#``B$M7Qem-Hggae-dBqDM6jDw26EX z7+bJ?C7nOzTPW16-!7id9X0I37;55{1+CSSdx`mV)$|!k?F@Sy+1F3v3q$T$5@}y> z{tUtIuC{>h_k8yHV}$Pnb8f0*skgt)M*DN!%k!NlwLh8{q(Cmyc zE6yg}%1!N$@|xxamD;=jeoR51*AZ5p7f}Bh1>LCsOuL7-kMLNMeYKK(iUSBSUnSrue#OQ1ejz=(!olSJ#V_?Qm3J2_ z$W`;C(Z3Lm?5ox6vzxb4d#Hf+KyiyW(35KqvC*s4^Q||g-E<-9$88k%8sH$m&F87Fl-sS|FTHB?OUd`~_H}3ar7+k;_N7kaak787e2GH8gmcg(TOUzyBrSXD zWhfIjvwd#OzOZB;`A)Wv`Xw*uM*ULEfu0nKx!m&&K*CYF~}@OBtGdJ0$z) znNvJc13M6WmeL_YQbANeul07rhIe#xWRS1Z|v zV<>L2eZ*HL@ufHz-^spgkR|&<7V}-fD*h8+Zu_8aU(^Ag**>pkpZhxFcLylmvVB~8 z$S4!{>o1<%t3S4fv^N$hvW{3MJ;RcoX%Ks}ocS}Yi?ePRskeu$S@t;Mi%Wc%Yv$vd zKXdl&Pu`@ySNfG74t61VpJ~2Cd|RcsXE?|+j?V?>@Y?{9Ql`F=P^Ii-Iwh}t z%P#0oiI++a=Z74{{_&T(3)hldy-82%KLgOGQ2*(2kS`ox=57&(q`Loz&gF%D`Uj{` zJ8G=|q<)9m6XH3(BFHnGJGJ=Y)OSz@w{+>61%9UfGYmGNeRcQ4y0L_hJId2WV`)HZ zN40>doNbTe^c)E78?WDX3!PVimMBbnC%>5IgE3}4=wEEi2RXhvt^JL!GumI=qWz_A zhWKdlE(PC^{Z=LQyD^ZZekH@A9m&U__FkR}=L0l8jD;-2)yXe3u7tFH*Y#}U>lNbL zBk`p=;3NA&U=!Jw;vir2{$-0X&nkY9x9=jUe=*w^(d@HZuW)g%g?<6gGyFCD*U!k8 z{Z2?6TgW~?*hKbWZj-!KN&Q3=WT~G>bI=~l_Qf>&?A9xUYpkE3JW7_7Ci@i7jqLL} zh&%NYLBOGX$q>7|hwS}AdQyJIHT&$=9fUKt_qf#F^S+y{#-(_P(cWo%uaU-gU#Y#G z)E){>gLRb_H?&c59b4t{EUBd!-vfP({>A%MVn469hu4hukY%CgB~p9f_{yL^!|NQ& ze|b*7PoUN3iF_O`vQs>#c%t&$UD)rodMy!y26MQe#&_JY&+B~CO?=cIDj-LwJ!H*m znm@}mzE4_*b-w*3KFXKI+JhcfDUzIh5#YmdbIw=AzmRCZFB5&E$M1C`eyMYK`}#}q zqjA%tU6)CjJ42~*aNUB_GY#T}>&EQ&p02@26)tJGZsc$&T7DiZH1acMm7nhz^T9d` z`!190qy8lZvefP}9_IZ*zQvN$b2`|E^VXg#Z_v*Rmn==Rk>XDMONvYU-kEE8vebCPWYT3mnc-nlEZ}_7SARB_V$2VQ6gz`;#|TC7liw| zaJ{m2Uj)vV!|$Cfd{IGJdE@w$;)uGgYQ8bo8+qP$AmOQZh>Lxpy@%k+9*>xL=rhN+WTkjN!|qLo{vf$p*hh6NIb81V z+Ix*geE%{^l)UE5zU%FEYHa! z_3=IIV0@?c-q<)@_49a@2cNN|jqW3>J4Nut7S2$-0sDSe?DauFCMITg!jh9;`ns;hf|P`Ag0h zibDiqhHVP{MDQ}Yh~x#5c;@EO;EbiZ3*o3SpYIK&_h#af;qCx|z? z>3-R6__KHyAHT7ZU%2+*suSbby{pHj5os3eqdJz*SZl+AY~F z#{uW3xCM$vs(e{DO;S>Bn53vX8~MlC7aP_?IUg`{_rEropgxm*x<5ZK+IxHfABQ__ z{8`}@>(m#2eY+>|nM;Guh@Th6PO}_-o?ycl(|)(J=8sYDa(LXQ^L=R8hhsG-KgotK zJb#nY1%QQf+YTap+{&L{y7l(%x9I2pXT!JTl@03sS*7)V{7ihMeBF$yWMsDVO}S;B@S@P7vlZ9=giq#O1OaOJSNBIKIIq%+sWzm zM|XXt8jg+kOKn~kfOUY_Y8~j=sg?MB^vv`6?m!P@!Dqr#$?2I3a>#e;HJiUioX;W7 zuleQE!5Pcx_|<>f$DtmMkLOX|X<4!t`3C-;h{0oVdKL~9zr&cZJK72*6oGEo3I>TyoGp=XSW}3T!?&yJC`enl{XIO?k4i(jjki}5VzjMg?O5``q$o~ z_q#OTl8zv7LnperPa$WDwJ~HM7af@}%{Wkqe0oa3iy}xh4aI~+4v5)2jHJ}@g ze-$_fS<3gHvYs@)yCL7n|0-4%V(K*B`oJa{Z%ZAlS2%xmg7bwc9ppNsUNR7r{ z`J)FusvF5v+#>S2_SlI^V7a}X6o+bfo{OGWLL0TiS{9sr$}Vw!eq)QDVI2_+za!6ve=)`5N0 zj-nt-?I>*-Z=Xy|`AO?(A9Mbba#6OAa3{dQaE(ba^6yMi{>k%QvQGis$i7MkdQ!U$ zf-Krs46$=NXb+?(+2_~nlkZzY8QeJgJ+udk8``J~SX9jR1vLBQ>zm|%**@a)RvUcD4*1Bvf@3D?_F>;-p`N~5Z+~yK z)8Cg+VG+N(r1nR7U3}a`J+Etzx92naC8GIdmvo-Ut!XFwh2|l#HKN}|k%E@?e7b#a z8}|7u`oYPPeLC*@j(Y!DWx;ok)PHjQi)XKR&NMLi#Ah_qT*a`D>R9T0uNeIxJ`*d; zP`yafljEy_W1~u|b3fDPFK!rj2#=-Cx541^z_X*W4ArOD@MS^U!1xr7ob?xBe6Ww| zSaN#CK?eJe_pT{^oMclW@2QR@hl~2e`+omeddux3oBq8$E)KbN5&&Yqyi-oNatC}h zv&4EczuC{f5N?SBzB)KI#-U9{uR94>;N(+6oF=|ni7zc|&&TCU zH9W74eeL7@u9!%Ab}_X-vz{rMp6vBTX+A-E20=ISOY-wg)3a84KT77W2fimg`j7r#!CEm@oIAoL^jUZyT=DMxJ^Ah8=ic$v25PhB}aaQRv&rK92+Y2p0ia!nt2) znqLCd;&~lH5 zne}vmZ5g0b>b4&}{h*|^211yJ&K(1k2r?#k#HvnimI9#ertZ$ERcJkt*!L8Q(GBNY~tBwYj zle3@yRVN1*9qn!*hja2aOj&ygDV94(2*BTYW3pL;Pz;KxnTM5F-L=|)Z*T~ zUH^SYgNs4@u-`pls#|JtiAUh#*Y-eE_2!D-zTjBKntod2`daQ08-=Ezpd6)Bxa_kCq z-jgwX?HVgS4(HRx&5I7@ZnMJCy4cmuSQnR8^Lon1;P~8H+`k#sQ=iYv7_4)+^20$R-Xul2)kel|`+)?c%s_pU(H4 zu?~+}oR6Gh!{^uL6O&Jl!TnkMrt{Spe5n@kn`Xn8rNwXCsOtVa8y~+VJH>UU3qM)Z z0VTFVzi7sD@r%zA&&U0dG4xBs)xvR{;MVUF6XVG65&tB<6 zT=J*Ra1oG81%lm&PJ#0U@H=-7afQH#xHS)_s<@=x&iLFQhwb5}h0CC5<|>Edz{iA* z^JgC5P6Mf%Kic>l;))#ddFq4eb-efQzv8O|66pi=6OoO^x}$PK)B1@zum|cPdZPVTN@PTX@NH{YR^aW*6ai23hCzotYivXC0xFQD?SRGU&19jz|p)M$Ghh6 zM{8jDyf^8OeH?9E+?N11&L{F)Ebx$ATX?@R)v@GoN#~0Da4%cey*oy&31uNryg+GHO;%9p?&B41KB10Me5V{>&*&#mAG z>?(hc_f`E8XZ%9>;`%eFkbYqYdJ<0g1>&R0$BzOxUBaP_oK5mR;#)7_d=B_Hzmz_< zNjVn|-uv7)W?{ahRyE8QieC)<57$>vmnw)QmW^#r+C#i>l7h#u``x5W(5oZJwfb}M zo2s6R9#?UQrOgQ+#mBDw#orb8Gj!OtHcrQ14e$S^I+mP2{r$yzJjYgypNSG)#-G&w zYNhsJ=RRYb7udpu)hC{ z+Jj5u^Ff*VX4CxA_VY#R_e-r&~6!3}zK8oLn z;}%J4d zyKN)J-4CD5yu_C&>4~v0%b7nD&MVr)R4##dvgFtDnxnd`W}PW-!Hl5AczGH4gM7T%CkNUCqZgexpch`Bb-(Zt9JU#p-)N{Ohl?E$=lMp=90utN>j3y{=HzhM+r@dC z-zI2%@jG|4 zUN@u~);Rk-`;SrQb^fI@u13GOzY8d4B!|mLaVgC~uqty!G08`NP4p>;OIabV+lRBu zD+!m@W0^vAEXki)n+$(eZntlLgiE{4@JrnU`#2CTe!GDSO>~aSkZ{UT=;>QDO3#;+ zhxoY5e&PJ-?zv2zC!ciWEIiGtZqu(%^e45ynjP?dh7!T!oo&xY{Sw`WtGp%d&tmU; z`r%o*f?A&w1*ZTnYDLjuLb~Z2Zx*P6Tdsxe#AsC;VNMt)v@GoJBnAS z=Xb}=zHk!BW=>1Q(RdVsF@ffRsW4WPyj98Zg}xBa18w}f$9BS1tWJyt@da9~(D`s~ zK=M{4%LmW7;Q8yP4)q*`9?0#H$c4uuzSvy&P8(;#AKLRd$rn1FUA|O-p4fj}HTFNf zA58xzaX!!4w+D2_aeC{Fw?a^;TeX96x*#W_UOzg1$Kc-Rm&45SK-8b*l^gRq<+8bo zMq^oUdd9T4pYzqivB;O*t6?07ui`m_FS64<4jf+`_|5{(bxI4r04Hn3!$x2<7c@DqFcC_n4lu26j63i;$F`lYH& zT!(F6v-v_8McumtDo{`SctEN&YO5{8_x0#~CQ&J+oEdL)D){<|?T>?BmDfOBwWM zDRA)Lwiw8AAKm!2EGyT^ zpN++j{3XYa;~NNiwt<89T)6hI%pun)?tw3bUrND0?vL%`&hc%9c8lX}^n%l-$Q*K= z>@(*}jLDbMG$UU)zBuq$yeJGu0xmW&1e3{TkmL4*0U4GW>$EmygZWIX(sQ4Ci&%EPv!r4ukv1 zpLvo$T@L)IxA%QUdoQqPw_&NhQ=T=}j%Xfi*N&!xeK;QN8~^quEBkakzcut!;=Dg! zko2VXSNDaOpJhQG?_D=nvErfqgiHBGwA)%JgBE;*!IJ!9ZhsgcbAPRLYrOqsz3Eag zt`kxVYh@0(&gF|o!$lgwQNC0|zEo-P4(_(^mk8&AbsXX9cG}}OJ-wi3b1-J6(teg~ zlUUTwrZu#b=X%TnC+@#w0#`gj!ix@mew7Kr;>?{L3&v#gt3=j_YV;_%(tSN@V^ zqulK6a(FXaE^@0{yd3hMyU6W0RrvAMdQFZD*gL@nm!>!p0*?DM}T?(_Jw zV9a^MRsUGxI)LWH6`zaq<;vnoN+tY}yj4klIV{D&{l2|ls9%bMKXIOgYq;bu?EOM~ z^M6|ezda`OOI>K+4-zi__lQzaD|o!s_I!FAel(sBNNd6SWxDiy0Pz*}T%q&TIpCxC zrF<-|!}^;~Qi4C&>q-6f5C{~mY3i;MI)?UL@96=bv40|+KA71-AIfN7siddN!8%p< z%ZbMGhLL36FEb^-P=8k8pQQI^Suf32K)psc(sT8}MM~OC!BcY|&nF*<{Lze#-ZxJhk`Vne@=l6}Q^59zA=^CZKc(eL@VKOp&2$NggDXRQUU zgv0%6;PQ^)`DRNvvad0JQha28QeKn2SeA|#*H`-fHu@#nUkiCpbu4LoNPcyso-fJ& zo0}jb%Tt}==RaVq?t=LTlBZqjhEf(@#H7wBtzP_{ZUbke}*(s(<~by z@Hu5irKhj6IG_C7rjq?;9{SAjB~KN8X|G&&RD6EmYXt{h^VO6m==kQ6@5q;^7NVFuD1vHA~^c3H;xVTPp0-j{b2mV0uSLR&$2RBD3s5!pPlDtI*jjx%h>N6 z7dZje?+=Obq(Uo6C$1ztvn9TQqu|Sx>`Q?@isO*?QG2ff4r=dF2RMpDW9=_vpl0_d zs-X0@ zcRn9%to`ZnkqmW`XVhPDc@~~5<^{OssQXMjM2$n-h=k}Lb%}Sk$V3b>}lWrI6aH!iSxAIFWB0P z^sKkg)Blcf|5?T%dp$Y6{B&`?e8x8qmk?j8bNTZVyZ%_D_~#0{(#o10Z7)U6QryA@sg!E!v4lyl4)g?Oms^z?zAc)erz^9O$?xlXW; z>R6HiRgynz9q38@QW%bh^Md$!U?k?yKtT@1toSG0$aHZogHvSIK?BL$*?XmU=dff0};CN#9$QT>L!mAFG@WfSgTF zw;)_59GB`?l0Qo&e?}bGM|##n{3tKub@qDdaR6DG57s!~qd26TBl5)s_^<;$(lZ-y z#FO`@y`F^2mvDijz)go|KZq}QS=0KLT3G)zhZwck^ZN%Bv&>@>`xnx4iKM67fu59~ zjg9Z5zuoxf*YfPXBkl7@Pp?IuWvw#WZQi4E6_U3q$-Y8()|2wg`Y68baJGwMK3 zuKiU4UpfTf$IQZc6o;584&Fi649*#RW$vKs2MoRP@?nDpU3vY0+}r_IWDmXanq2Py z+?#vl^+Rs-UVrTsbPOyh4jyTqT=TEJUpPH$JBjy^ox1$qI-DY(wBYZzyTlON+evxQQ)>n zI2Y*Jm{0IK;;WKyc@FrT^e<$$UH@_zxbeR2=9`M~wkdUsLVUHVT5x$bP;2LzYxgMyfq4( ztWnZVC-%|%=+h(|=~*G^i8e|iY?W};5-!7mefs&OR-F`j4{mZ2&o_6JL9OFXF>u8e zxYZJl{8!Dt@#*V0_|kkHGfL+z@_+IW zmg3;*2={+#b_It!pBK0)A_mTZU-USfXv86_Iq%PTQXIH;TlCN>^|{v9A31U_*<&ts zzEcf8p9SB`Hhl44#dV;LAAR(Q%rm`gl|r8>U);wT`H}~9`rfK^(*7tuT)qT|4{Qrt z*e7!npObuX-_bB%vLIh{yBzRQo^9E>NXJz;@QWTlKQk6Z9PF2zsBwKw8kc^jYC zYa|@SFBCMc`+8g0$4}=w$>6KAz&$DP(fE*ax|sK*fsX!`_I!jZ1rF>dVo(+&+vB*n zmqTKN;E%2wQa|A>Xc+gc5O?wiassT;P4~+nBYssDdM=dwLithveo57M&^L{e!Iygc zfP?z$r~`kJUmEML$!@v*>GriY;+|r`w@9*2$9WCEWLw~ta<~+OPdT2C!!ij+ehK6o z=N0L_>5ci6@~jqgLw}|LSI~k_J`VX)?qBfcKsWqRp4AL5RuGeRXTv

;&r$%^%2# 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

$L{jCvzI} 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%0Amp?w7pg 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 z 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 z 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 *J)nHc-fr(Vd4I@hdQYcoqR?w zT5W6~eI(D#3`^pfH0~zl4KkjxZ@QOZQkQv#NnMt%32jK~pOK!y`hZ}vO0W%`$9*%KOxs|BTK(kIP#f(8aMe30Sz*5S4p6gZBaWTdw(Wb>!&x zhZJD1<@Nub_H7Q1A_pnQ=sFI)pCiW(0bB8ElY@ER5fK#>pd@p;jHMm$r>ez@cqVy}`t9ViMm7IQ3-l3-cu&zc44bymI)m zg!;a;KJh}ay}8akH(t4`;5FWYLW9`FEhRJ;4ev$73IQFFewDwKGXUib3 zdp3-%H)(8N1V+~*wli!7bSH75dP&he1#O>*wwo(2D{T89!;);LxqPu4>>p@#4_Cg` zv-9j-T1RdJ*K_ahOugj4u1~G_Jf7niT@iGd!0GIZ$;-9w=y!vFUobu!gFK?)@;rvk z14~_=z!M)pcKs~>y=QAav*1ZIoF~WD0vkx=iP47cUd`9Hy40W#O*9dn3>yJ9&3JO3 z@jR1bs$SSH*LfZD8I62cT^7=&eJH)GPaU;!fUnJA`}&j6lk~7x|3`I*$9SFqPkM$Z z7~8&%8}P(x#o|{z-ti5^-|^86V^2S%9(i{hOIH~CQeVI`to4ht59=^H2Ag(Vt3PSI zy2`z#((?3sC%2|tW8pigsc+OOEpry%czCh#i{n`+MsrVGp~}8x=oWrFq=sJ~r7J&b zu+;G(H6^h0Zw#isHmD{aHFbfL=Pz2iUt?~epqu=?!KN3n*76N^Xq_G1$Z3l~UYWoO z*|3<6&Q zgkub&_Mx(OYxk!9j=rkafz~Rs`*)@L+!*)u0;7{Wm!(4+BvzV$RV84GVX__DnSk-S zCxf*ENoB=*{iga#f=#{5_2l`Pz9L#@t*8vkk*r_J879kn za{@NbFj>-`;stc-=AvxpGxQanN+4Z=Ka#tkzVO_YWZ_+ zQDr!xdy33=HaMP1aY(|F>H?lGGqx^Jsa>jNohd7%106M+Dir-LdhssRZpW`3R;c{N z#@WRAn#U-;%_; zCcWJ~y?0vQ-MW>nuIBz+VDCcwnm5O6=P}}RsoJnEp9dYsPW|$I%IPyZl#cP_{^WGL z-ksTT8NQEapD9lbsli_dIaoY?v^HJySgn>Z273pEU(VEaF3-Q=by%loG8=zJ@0@)uZFj_aI``{mfb2e!xN z9^^tgPrl<@V05u}pNvk<$vDk0Iqtn|A=D*l&oO#O$?Yo#&t{y?cJCqM>(P09zx;|j zR4Mp6to-LDwq^f@XFOo!7hw7*`h~&hpKgK8TCDt6c*YYL_os|I$EGYD@t6KQ&al+? zqhmUY3>*7#6kA>w#MUc$Jc^YuOun~J%-0g@WOOpNhZ!d0H_I>?zf%m8bfZiciY@oq zs*Rz2^WTkP?F=J%ey!O9Y!Y*+iZ8fJk)LrSj%$qlTV(#ywW!e|GcR;MM1O>@sthU)IkCVnNw=&%^oxv<;uz*0aDVP(SS$_#Pbp8@=xcUb&k+ws&t9+zH_0vEf1#iY<9FmH)jchlFqft`zBZCCB%hAp9g3}6=YNUsaD+Lb%b3rw1E{kO zf-maU6wxDJv<=x-@+juDlS{MqMatJreLc8<{tRd~qdj(XzQtNF4o26B7Y-wjVcwh3 z{^4|V+;(0k%QDss8qEOy@Rj;&#sESuau!n|)7e@??^1!~o99RZ?^ZD%HilF}V%D%l`dA7fl z`w#5@0vhTw<)d@Hq~EfB*&D{sli$8L&g_$MSY()t!}6xUK2OG>lVL6B?{a@~Jy$&u z#p)Q{>{&e#y2A{UebZTn$@raOn2cX>b7+GcXIRBBIhMd}kiK?U8T8)`+1z%XFXZd& z1`Nz}U<9+RuPZmu+qbT@KlsSZ{6{WV#H;*w+m(Mh`ktAt&kPNl8X8|M#tXi=(@GCA#=5Rr^5!3lCZ7aXw@-wuB!)Mzl^*gvg=y$ zupeyU9S*zc*pa{goMT8yarkrO3+Ea085=~(TvefCG=XsD9x z|8MwA>dE~%`$FT-aro?%@L6%I@n>e`E>*fY?$1JN94I~$^p5>dzHxmF>egWWY4297 z7L8VtdX1Q=J%hERTkMKZieDX;Q`B9Ot*xxUo~n2nyr!BY;W?n228wm98_;!GI$I~_ zmB`C&`frVW#ILMA+ArVCFxk)I?K?g9bDkWN&p;d_d3@~f0Q#l_e7x?P=PA;w_&3-e zGkoSUeQ$OaCskUFtc&Fw&F7p-RS~kUZ*R`c_XLHjs{_ z9}aCpAv&o`%x8?}Ja~>kS7*Ct=Q)=C7URpI4aR2-J3&}Bq${M09DgYXjkW+kNKens zSDb-7;%6}}k9^i#LmT*Hn<~~GmkuU zH8wP68+9p()aQ)u2XYThHH^p_%Gs*Ts80DbHcy@#5FqiioBd_ES7*iGUJcbYxZ5juv|0qbORh3xY_6MaS>3wg%&X*y9UaRhtqVpLo2x60F5EAcpZ+Ds5(dG~;c{)nUWUmroe73Xe=h9^dD6Sc zLb|LG*gWG&V>4u5Jq?%Qs}~K8_#k#e{d%V>=Q+US$@q;hOpd=CWSA@~P7eK+K64n2 zzofv!|AC30`fseY3~exRXIL883Ec1E=l{^q&47-sTfUl(+sAV-CB7?Lz9pcG>DkOM z8QUDgD7L9eGv~7G$9-zmv%_(l!SDPq&2`zs=w#eaGfc*zWNWCWjKdm+$v9*fCgZ^U zQu2?5`+RcDv77Of;^ zAMH~oF$aW~zh!R;{UUv~lVQ?lqYRTiJH#;QGj1Qvtzhr}GS!V6Ynz(TfezmOp{{)T zS?baa%dE=bnDGX)|B-!l7?L{Qmi^r|D)Yx>h2IUvNxVVG@@6hnGoV`rM$vbJ*j2fJ zG@t0+dx6Rx?@ zu`ZX-GThgcgPiBYbyypZ)9FI|M_|X``Ol2`ny?wXYrW-L&&=n~hRQ3do3qry=h{R zo;;+Q-z~8A-bg#vU2n?R$YXt~{G$6KWsKW5IsAIv52?gwn6AKpRUJB5$aoSH9R5+* z{(`ve+-K!qjn2d6*y#j}>r#yM2z))>FxKNu;dD6>TQh>4CUV#pg7yv2W4Hyzy?y&E zI{NcL&CePZ%iW_d2**@uzdZleXDhllbLwWb{DHte(^fH_nI3#M0%t)zF<76qJ6QPk z8Fmos4T*;M<1joKwg{}OH{^+#%XsPBg_jeRy}fo%=lU)>m;U|^q}TELTNxGp>gd7jC4XQ`Lm?&$Q|B$rF()41#f3Yc@A%eDvduwg)S zu1YDxWIu%KLhZE2Y^Z?^KC_+6<8*RPjbifT8oy;vd?c`s^c;Po8H@E_woA>u&Da26 z>u*z#g)5Ml^CPubUa4m zUs|JvJ1P|UqWERI)V$S&^rVB+nJd`e zCe}jx%m30HJP%T2ZBxG1$Wz4g zr?BA)HiIwr9EJnb7Y``l5AIW_8?L0*s0elz;L zTFf=}ogJgw3A)ljQ%}^~`|Gr(YwE~hKUi$KXdLR^^trugDkyhF!q7gm5u(7Go|j%> zY#)5iF0~-+o6l7!^2zkecd3-EBb{Hy{?1^8&p=1|?XcM!4VFV&by8r17aDoRh*8mv zQM$>?3|8`rU23JklFGyI<(BTkU23zSi@b`S3G~;ukj4T3T|ZAANE~Dgh)W%#EXo)>E*jrTFCP+GMLu+ ztx=z4Y&-2e7wgyshBmdTVG}l9#w&^DHG|>G~KCe#TB#d-Bi+)Mix`%@vXU_4FHzE>kOasXeT(NVJ^i?#pjibd8P$ z@Z|oK_HnuuOc&YL=-wIB6N&9#X?jht=YwghD6enm8tA00r`tR#hjiBBJO}64^LHuy z@&G*TFpo`?Sz-$lFuoT#<13~l$vtbdoEq}YQ zZ}3-lM7|qQb5Z!rJf3<(xZhJA`*_@Wd7w2$LYIi`oNm=Sf;i}TPl7IDJEv=Bbj3Xt zQeMO_oNgbZqx=-|B0l4ED@H;+Wk1>ZIhdEe=UheCMsMAr##ii9-7mdM=aRn9j)_m5 zw@ddu^)=TwWmq%H5w)w7gLF@!pS4SSH^LB)BF95r-=%eB>e9u6`3 zmWcN&Q>MpW(x--3?o%cE!WfaAbh`S*eYb_yoTqBk$Pw2Cht7lv(!5qKh2TN zUb~|UgE~FgEVc{i>KWLAyzkkNgJTgPx6l51QLo`d4AuTx^IwlTJpF;ux>=Sqjq@^{R*99G|=|qhVYgC$MN^7iGqeYiZ z)Trp9qGpcG=$CDAqDIGD+}IY~_x(BN+3t~%!l?U`J3f&4$hanLdALB*m*ZIomi#mmtHoYW?ynx zt$pd?FbAuyuF=@sm2Xlz-*ZI&9ps>Y+tc*_tDYE8CqZ+8=nCmlRfe$=8B2f38uj3* z|G-zr>I&R9C(UthO1mJ=MK_U>0J-?oiYcpo6+ z_CkY0j}uY8WHAFTGnmWv?(Q--u&>P(ls%gh%ySgFEaQajDY=j7SQmF5M9)a5i|5X9 z86iwPH*ViNVHIU@Y~^(iDbYa=nOEZ5wz2+Y_i7ytQhcn-eLq(E)<{qH{n&cKTpQ{M zb8R?Gm}|o{VPXUO^E6@ZyEFE6v3F-~9F~Zu`<{9A+alXt8x&!#4f_dm-%qoiGLOao z2UA~H?K_~3y(5%YdbZ;WpJUsZZlN|FcgEazri@8hkuoZ01I|@At6p%g!Y^;`KwgyCWe#syeDUD$U2ccb>fzwK7#(iPJ) z=qHPPtmo-H538Mj9QB1+9{X(g?wevcm>LaZ^hreD(V3_O+%yTN=f4>OxeX z$rzwZr`}_HEp&x+k-T>4f;hNz-u;oD#p=khp7_|dgh!6B&qsAgBkG>>IH5yI?(xr< zxTkN%dy=SLa_iP!bkRDnUq2IBax3o2l4YG56{By|*Xdido@(e4w z#1P?U@Q$5HLlA%DzH^82fANgOJ7K)n?%#bU-ihtb_TnobEA>m2hQZNxi8 zN6*R^M}4r<4i-}-&QjJvlRx7i+qV++U?=#(XQ|4+MBVyBWBVd(m+OJ;E6%;Kgt6KO z@%)EV=wu9{knJ;Xir2g2ps_r4y~}jx2rE|CrS7{)`Tu0}Y`+`hyAhq<@0WRU8&Ish zb>#&*hV|zUjJ%3lus+AF&j{Nv@UR;Glc*ka>jK&i*Yp36&9hhG-4bZ5OjAb^b_m$1 zB0S~w`<{-yz48SKf5GrnLl`%8c>YiQ!aNtjGll+*#9j1t?UShop)P-KbeV%LLL>L% zF!m8P1Wfu&0nb8umZOdH9x^;VjCGZsom85m<;iqyG#;XQs$+DuKLj1{eDV$wU9tYB zJD-p9%v~>&Bc8+E4JxpcqgU{Q3Yf6pF--yI9m84-;*zu&|! zhxkbhjD{vBJlhYM-g&Pc|0{&eV{GsY><{AS+5W_WjDJRc(Rt>Pyh_NMDL}W3>ucT> z@r>;2?aS>O%HZ>Uu*@8V{37FuzLhr#T||~8(Yi3*2xM7Ik1H}=1+WRyh3QTZos28` zhmAkWsxUVu!V>b%N0=UiXPz8)cdp9ecSm|k+?lSPF!!DQX~LxZF`ZACln2IEAByC; z<*%GEVu|4=ug09PLna*`}-RT%%+qg9HOv;Ja zg~Qb4A22yM1FSTPtto#**9f{{*b$W5LVCLIWloXp;xnJ*)!+ZHI#hsX`+Gw@^*f@d zOz++|5QRq@Qb-pWOZPu$?5n88^IxQkwlAJb68p%Xo^8XI;TN%63(C`0ag4NmByS~b z7{YlmpT+BBvG4AV>^?gPCW1+qDd=*Hc*bpz@~{^@f1_<7zes+1wy)6xzX(4=VRE7n zo#ZFeRsQLt>LAX*KL10;*Aw7*7Ch(r9tyESJmvjnJhs{1;2Qv<6VqLQEUTxk2fYa+ zuXGdUkwKQlbZm$3G;L~0H@?+i>vHI+59WDhJmOibY>LkoEYB(M%v!p9JUJ)ieIv_b zO#C_Vid&Q@)iae-GY-#qY$ZRV*s|>l@JkxBK^*E|v`Op^*cpRq5{)3bfIdBjL! zC$e#9pT*;l>mTfmmQ)t9L2}-E*u=p{97GSz@gikKe9gL?gf1h{HLxLWJAWP+ufIuN zBWUJ{&a-2A_0UE5u`a%)E3d&?dXq|NA34X{V$3Nj)&QyFc8qI9`roy2u)wBPM?1@QcV|pLup%aT@*)qM;z=CJ_L}lu*^4y?Hnw5TlMRPq!|?)oE)q|P z(W2$K0G>N77Vykq*krrBh|E+sVMFS+YMClxho)Fhwn6$K(|tzI(Kq574-QZ9ZSKV@ z)I&G!v0|d}EQ+nfHPg}AiQfC(UHw@ZBa7?8t5Ez$Ol(VPF)keCi)r5>ui`%-uP!N% z>E=K;^nob0kvuF`z_u0Dje+HOhCOQJO+lW}K!hBjyh_OX!C!VK>|?rPpgT+Q0_)mj zPGTU^@Qt+(>}x51a?1?H`F`;E?! z9=up1RfQ6AR7 zr|?}$Waj1BYj{pro^s!kwa@q*7d~uqX{-+Yo+w79Z=?6?igeWq3KJY9uP}Pfg0A+6 zi9^7%knNIZb}njQKC{$$AUxm({f^IT%qjfoP5wOo-N55ko?w!LdJeMQI#D+%;2BM^ zyVMw!JQC%SOjfYImRy>*aZp>) zRylFt*scbqaKfgP*im(piJ$zPvbu=9`uK>+32!sTnj>H9oS3w9bCB0wgl;3SA)JA{ z|A~Fl9*ItJx;e4%qj*l7wYrG@(;u(66eZ5Tf=@{)c zjic-^E1!<(yx#c4^~=OZB46u1gCR=~V6UsL!NJ&cTlOdGDP=R=W_&i&bU=+dK8yOM z`!INxi;d3c*rprW>+rep_APZy5{jTk^KIG8ZAM=)%6VNj89N57bTTS`{-i0>r40x4 zb!)k%D`bOw+nDLrgI_)IWV%jV54>65i*eycjl6ou6PiNu4o8?L-+X2|AJ{Zb9=vP8nafH)36Z#q#Cn_@kjNiSI~r{N#OyEn{i3EpNPSVO`D@;i(9d++FH7diLCj zInTE5mQT-hk41W>4#vkrjypVA7q-Fu{&WfP)P257%^U($Mpi5Wj&?Vw0sgim^$uL2`nz1;WN&8-Hh${aEB{`5p?>jS{BX<8*9;yN3qbo_;j0 z=LX{G?hnm$iSNb}oz$PKXT{@@4U*T4ogq5ccD6zCjOj**XCd2Vf1;z{&vYkZKD z4N!YA25;-~pbe01!Yp`MO=EW^x@JPLaipesW=KD07Pr{}cQ-M+o9 zsU{pV4E&;hKW&A2*P2(^OVJqMqU{$5Q11A8v^A~d`YiekRi7|rEQka9^N_{l-id*D z*<@c!e|L13iS1|;#y=gNOBNG8Qx4X?+t4k8?v#Uh|7QA9W$(u`-d~1wfu5hm*!pii zq*gv*`b+A016BAQ(Ovtxu+d`!#^h@H_hL5t9J;tmqas%^ZpSffHv!Idt&e&%uoJ}7|7Sy2b;kjHo$1)uV-I~i;F(xo#r|~5*!oY0x_I6n z#&e>cFxM}K36t2eF4Kg`8Y9M77b#;&pM_JbJ+^%wJ~>Z*@s^BVrr;O3&VFHR3A(I) zGKx_lU0lD^g2wVp_(c)s)=T?~U~`1I_0qW_Sjlvx%f|*UE<-}nBz)(ge-v_Z^`^sV8I`D-q zDUJV&$%zHnF4ry1Z)E$%&xCZITVJ;m=Gu3RFtc)~q>wrSJ z>*~T~OxL^QmzB^Zg){IO`C8<4;j?C;yM0TS-g!XNus<2A{4Dmd##w-;@WYD63?@W? z!!JyXM!{2Pm?vWgft@6tg=}}{qF#u2>Nb_>(tjSx^V}G*&*T}F{L+!j!7Wx%`Q=+1 zmSKbFXd#_vj4c2gh0MS&tP9I?%ij#?>Be@=iBMiq8=SfoU&wZh_*WB$p5MoKWF$}9 z;1PBdSR-TxHjrO>`!I4UDJqSf_KT&P+;%|I#QZ{75BNjbtM&k2DI$@obXYd_=kOXHWZ_o3~eXA2!i!peau;^|w=dkF7{9J)e&adZB7 zMCVDH!*p|mxpe0UbIVHA=c1f&%loi>&Jo)rC#FuDHm1%GYpvcr)O&ZAAr?XQ zU|(}tDS!8C@E!<@p-{m0;$!Xuy~8)~UWiP$;pW3C;8$64gBjDo2U+meLiU4i*wnhA zeus5W?A=oM(z_S0Hd;Mi+p_;b?5Tz|7h&%5JE@RvkD>dK&E31Pw-0EnF1kGQyv01< z&h5oMN*_0v#6}LE=+4eyZ?w-x^4LE1%ly~sV)>Z^jb?@)?mC;3gt_Z%nCIkQ)oC6T zk6?W1hG=|g9eBz-2$b8{x;l&t^>ytw)ACDpY|^yDeFs#fl^5E#X#6q@zld#MCx@vg z2x|kj;R})N{*Mh^a( zPh=B+WMb6bkNKunUSI?B9Qnz^fiB+g1NE^uEJu1K;?VfT(1yf%`yRp;9G(+|$y)C2 ztdu`%MEEpmyu*5OY-Npf)rhgr%VC{{W1s&M7`bfe?7s{U=phS9t5ENcCdFGih2Cu9E1^Dtp{? zEi0?P6xra8U)K`0_-U!L@Xk8OGd9lg*?yukvBgx2{sGL|y)WS#w!w|9_(0CEp1<3OO&PlJV+Yhi5xNDd zi|8Zu{MZwQZt7!bb1ct5p7$xM%f~S%-@(`~Go*{`=Q01Jp_`dPU0#Hab4mK2rJpf$ zWlv(S>Pw`PGClQKLst&l&lI6sCOu`3km(bKZsHRdkNlePXJ9+qS79;jGsK87wqZGQ zLkycII=4)Z5a#X$Rr*&^Y~6iFP86YIU8KEbJI2xG5*wLr zJ?Y|)U$4CXHg$5@@BvLD_v6szmgzc+(A5L;apseE*rD^Syfowqjh2>2-suSQL{Fxh z2DXGVpS;zlLY}|Tm~k!9i9gwPMVPzS&VIt&xQ`R&)-UV69_cCb-B{in(McbLv7JQc z&PymE%x%XefAvt{YtNNeMRaaEc8V}J=NAccby@k1$Ue7?OA+SMZ6r+kJ#2eBVJ_Ve zVebA!V}!YM#|V?Uj^)h~=K74wrqp#zclHwL(r=IE)Z}a5k>8%24LDcfAjGkuUx)9uCWcOUHe%iCvpC-SmBUuKK2lk=!qbOUK{eocj|~x5|CF-++$&!akGs zy_mchos}oDrTkqgUD;fegHrxnI`${aOB0=xBbSc-=|AOiC3?;N_MOUWc(48&|IOQ{ zWjdCp{`KL2F7Mt&{QYUB>-kn>pOnp@-_yE%6P6!sspGB>(@hYal+E(bnb?;64aPWa zyCOEr!F2Nu-Rz8^OU+|loyGFem3}+YQ_AMt7YtqHckWXsiqO>)om)0Jm)v%mF}G~4 zC!TJ7-B|?l36u7S{c`C1!%8~~KLpE|JrrbO48BI0+0!+IsU>!f57SK-;kiVZv`4(> zQFBuhzOoXnE@PgnzZ3b|ZO3XI%-IhqV(Y|RIdt0AzrI6#@t>|t?3Kj2j5~DEen>G< znjO>45uL2(~<2`U&r<}azrxSBE?VIhn(!o__Ax%7ZedRep#nDiu+-+u zkE>>}PvEX^_LRhOF!m(_tc4P~>p}NV0o~==-LlW~3j8JKrSuD?_8(BV)yuu|hQwZh z+~$PkkJg(Bog9I@2K+5K&uwFs=y?P5{8132q@MZcit%J$i+nkPy_t&9`L^HFb1$AB z(C5*F1=?G-f$27)JXFj_&kx=T)0e9J!vp$yF`nEfa`j}4dGjiXJ7ZE8;4@x((a_5Krh7BH zWP>~5W{yHUW$$Rv4PvxjW)R9w)dS|ugQ45ivHQ-!9BOF!5EjOj2eGv>z7w%qUXd}+ z#fgtAE6S7aKKhTX(*K`(`JhU}FQYgE`{a9W?l;@;akovaV8A>lnvFkmKfoTv`1YFc zFFp53b^0CQH{0ZrKA0}J7L+5;?t8abi*FpgKdg6k-;}WvA9+;m{9aTZf_b>%T4&zm z%V?zFvwOz* z&_!s39}Z(5VJpu(sy5;b;^5i$W7D9M>zc~au{_Q*S-Zp7SVX7S^)Pmfu!Qa359KAE z!`Biv<;Y`Q1WUvSTOI{_q_8eb=gyyJ%$*~@veo!{9=@&>Uz5+;Vc!tW(4Y35TlxK1 zvlZE%$O)ErF8`0*^M68~2|arVE2gKcRq(Gg?cW^q6g^na zLOyf-!nTV%=D7@>BhV+X&o4FdN*=&-W2C3f7slp+ooBiiUZHiX0-aoEJ$=GT7x4W* zoPj*=DkE6YZJbX)+dOOCDK*Ky4 zs|B{7c+Oa#&72=l2VI{%%jnq-o6_>r5x#-KpEO-9E0?wX`&2 zhn1F1`WB`;2fC7fh-@#EyYBj@GEW?-a9DP3)7cr9ZesHGHf$u|Ggqa`Tr|@5I?t4G1sxfOcs{@vD zJvahA<-2TpLmkqxQsmuojcRzjcf~3Yu)KgSBno%>z%$n~J>}gBJwfN{>FUCZxdWc8 zOTe~DblG@~x@qcCbcr6mf_2{cjGy__txEjR^CwupVslA+D97XJMrA;=;FOUvf+e-Eu>AGqyBwB9e!=R&FQgp z=?AeNnM3E=N2sqx(3`U zWwYWv2NZrK_L$&$Y2t9au4Am^1L#lOZrkbQ0kzuN7vwzGpK8(MgvfK}NA4%g9Ty%a z>^GRtuIKXO$q*apo7vR9UCTE5eyo3gBGe_(FJSu;^FK)!ciw2pk3*h`^-YozQdHU+5Z?&OScvNKDy}1K05^arf>%Sq`AvRmuRUF z8q8Hnw5m_tr)i9a_W72uv#@>bPxJB=>zJeGTe_aZm^%p?=E+zkupII9ZQSQUC)b(o zQhjzZqD$oNf`j=xOnG1U3q0FfU*{|D>2skjiJZt5!8o>h?m5|a5V}m_3}WOho1Cxz z0LIxPJx$-6uu;f6iZh_2*ba7e4B#bDxD3VfE!{MD3Jv>{u^C{?#Pd>p?b_%4hq0mj zg9kJ}mdDtdpFOI2a0WIMlIPZ06QHp?6R|x{m|JdHPpOm1XL^kd#_05VA(7!8;h7RNtP5j4u<0T^WoKzi>v{ia zVl)h%Lc=@@#o=Q1xi(#KHx#@dj`UCtL7hxV|rky!dCtZ#y@ce@hjvPHl&5F?n&@<5=9jI2PBF<;_FhGIWLQsq9x9swy8fF&c($GmZ_u)pH4Y z3XQeH>`h_k!Pg(fKBZ1xdxVWZp4cezgue7$M&7)SXFR+Ylxx8Bk?P%~?4RCw>z4o< zwsfU$IiN~^8K>j;jlb+j$fG=Uvs$opV}W1v zcZEE{a=;X1!q-K=f8?%187Dp6IiAM}bNw<$*hD(+mv#Rh`Nj2F6=AN=N;ib|>F-SL z?(fc`YU=33T4iZB@J*M%E3xr{;9~IJ(6{fy%Mf>YZ*6hit}u2Ou{{KR#Ao`R%k0?i z2)?Tj>1o;{!lr3t`xCAWXNjlVN9kmq^3L=r#@F*-MqLnLMf)Lcp0O^H zXUuaYbgBH0D7Il4lXv>T2cfKyzSX7lE0|LX8hiPFr3>>s2%aYk>0*oiP%zD4rEOQB zi_rYP&?RPjZlHgtf46M0t`FbJ^C2(&pO-EVWyX`U0p}{5({Jxr_~rR8{iiDC=_9r? z;EQ`xg2!~pVzF#iwtdIi!$E*gHMUPf7om~+ahUQ)*qZ;s`gfcG&r8kE5zuIk_~GW# zJYjB~#d#L1uO*jc)C0SH1xEN*&+%EzMU8lB8yM>WR(c__A@qxU=3o~bb7yZ~ccARk zj9=!!Q)ujE;}^o#1M4K7h5RCIDr1Kuo(aD!5mwAE(#C~0h+iBVe5+^GSJ5YncwV%O zF`W;(@?RD3*_~ZoIlLMS2g9Cjd^QYuLKE{DVG7uIKAvKO!_&8Pi{L3V%#*R>z|Ixo zDPM%{>dVOdoNRx$$8q31ll=5c?ep!|@ILO>XsiDC{b9~~CC0unU~-*xVQeSphH>UA zE2H20ctEG)9*duRHmHAJ_-yZ6d6j>Keb2#<Ei*N=k7CGOIZ7Zh3Abf{y`JUw6si_ zzK*?JnLPvjd-2|+L)X<%isf{QRQNb{pMY(V0sSgriP|ktc`5j-cpC3;krnT)z&rEwc(#eTSJ)jgxK&%oqG!G z>+0LLR~tE)>Fw(c6CQUJ<7u##>ep7cv{c^_$r9!o!@kf7MFjk&@r$=^RAtvZt{R^m z`9;&!)o!WV+*rLO-K;;k5g4JdhSofmTX_Yrz@OneFkT03b*Y3dqKBx5L)XaxT@a&S zj%U6Y1@lxH%O}s}8O%2ox=TIEMJ(XOE>w~9ZFk>A1*e0{D8(pm+s82{^71p zlle|g2>q1IH?2+1H`V)j)OHPZ^vZ%^y-|p4pP>(vFLiAgd_W90Z*QuRmBc1}^VvTC z?K@TdQ&9HjOupn0qZ6+?qH3S(;jF%d334LkC+*kHYr$r0rs7O0b>z zu?oRd62l%g9eZ=xu5BHIce?A?11#M!gek)Ebpe~WkY#*Uy)E5Xx2?MMwkUCdu??b^ z9OAQMu=7&sI6q6$w=i8A8`adc$PW8O%8JNbK-@`Qf=*)v>Q3%&4IgWYXHaU@g(WuH@9j|x0vvr-_U7NEV-APiN*Y@(= z4$JOrLtkgtaFPi6bZ48eSx`qdAE@^zsOj$?=uD#BS+i+T60td<+dj0p+e}**G{&RP z`;78F@dEYc`*!HYg!eP9`1T6rU46BB^XLx!+{p8ubd2;SyPNarLK}={#yo{`##>QU2e)zfGz*6!Mp{G1vywn4fM=jr`~*UhqnfNSkKZ0EAJl; zs0oLz{oE!ca?8(R{L{g>JaAsSYy3)A89jxMthuXy*=5SBhb~8Vc(>vj@AJ$&*E@8K zbrR;T4fF|f*VQc%CUusbs3^UVOiNuWzJ^v;n`x-cY-(tWmG{-Z71`j<*()c^9sjH? zg0atJO;g5pKs&p3?d#6$LAe+dm+7NezDWG#Y{0n+XTJ96|I0Rx<@F%8a~;j96!zB>KUwik+xCWSDU|&nFG(tUCru=sU*)~$)!)eK;7`EH+WY-441J=DSvHi z)f1n2gC|-r#<^7fiTb2JEQ)kWoA?mCbMs?QG@V&9V8^=$cJG|3|ZocUr zwYWOWm(rOl@2&FA7_6dURIR?|akU>O{E-s5-R66-Sm1)aM*Fb31&dq)eQ*!-j$%9Z z(orRt=;GVDwHwBn!*4M2X7FD#{zBLiu(MZ0&tqH6+pn7Xx|-Vz&$_TtU7Gro@@lVD4}R?m@1|XXx$25 zxkK}lALZ{s+@Jd__2AzpdCo(g|E??575{jJek;g1F(L9cL*9?B@K$SXQSN&88^4q^ z4k~X~+%FhQz%KZ`yEA+D4RsA?_Vvk-mepn+JpE6vQV;&}3h(K-#`5@mRS(`DP0)KM zH||`pv(M$)=Bf8QbVf|le zlxN;L!*lK!+A90b4I*@Y?zW#)isn4iVkn|ZU-_6CA)a#|-=y^vT~FY;{1$)c<61K= zwJ7sOEr#n_Ud89PDsvOsWrwb)Ux;T9=+5JWyp-_b*mC_M?;pJ97~9+5g*6q9E=<>X zm9atiEqr!MjIJJ-k28=bcFLKrePEufi(h}cVr=%lBML0^QEU$eH?A#-g8a-ym#XrZDhO7r9$##3|{?wljiCDE#|RUdEyT_3ekx_1@|#W z;#L2YoFh^CGlS2gk2!paJjI{Fvux^sy5s8CB<5BW(nb1%DDSzBd;0RuyI{K1nkYun zS4@^^X(i2fv{Bckt6$q>=Ur@WZn;ggGY9i*cX;|X4l{=isH!M_Iu2FeHS;b;VPmO{ zQ9fTEBc9U#WS&R&A5pWwL6;J3SeJ!o8~cQR73OQiu<3UyxnBZ*1n zI`@16b2Y6lfu4SuDJ!M##T=B#*NL(+@?4{*@NmDW#CnQf{OMI%o@yCX8+#6`A)G;s z;=Zn~sfoHTp6Dd!Z&F8!KNoBq=Am2K`ZKUE;MoAaQlIho65GBOe#wFs_or}MEbe}p zv0eDfccEOK+-LB9+txil!rULL3)pFY#%)j6wQLhf=D1XzJ&3~zoPnMde`Cr~{S#<6 zZH$DM94=3O4k(mo@;yw()NdQxg@5TcKW%cbskvoabz`D3XSz=7GtonGB5wN)n;NzV zVvdENj>L2EsUme`t<^=SB<{YoeHyy0xAFqpSr^Vv_nGpXv`qP-V7SWZ! zhGCoq^lZkcPT(?6*JqcIOYBd1&z!S1R2|29d+W2n2G(<>)l&qzacEm>Y!Dt}-jgP; z@q|{>+}u*@WH$3WOFSihP8^!I)kTH6?4P$Pk-hxeBWmdq^Hat(W~_Zv&@E-<1@;tn?!KDAu1)yHs>{?Q5%TXp!r3Fi(z= z_`39OO`fGbbwGJmUSLBZI=4I=eZGm2@K|>tuICi=%zT!< zBOA1@y}vU#k%Rm-R?mDkxVglBIc;qa9+PKnxi$OGJEgX8e+n=yYkFwdJ_+N$I~ z_0JnoYn_~6`$l2k3D^oC_%Knsz!vbtrxeIx1^K1e>6MiBaN1pPx zEv6^a9fn_)a0a?eSYM}~M8EQ_N0czUn6FbWjJH+mUTAa?9>c$i_f3_xLHJ63#_NfO zrXAId0_lU}S7LbzAaPi-dd@&bt>t+!J(nCkPg$PAqom`>JkK&x51KeQdbUz^=6P#N zmFQLalLOk9@;440hpO+H+^v{KAMg_O6u+?T$F4R06do6zF|C$&S1A#&_}zQd(7=23 z-xsqznY-952h+iYk3PtTa_Bh>-+*UIurX`H1mqvGJ`3atUh!vmC-t`EJE>$|@50{r zLJ==x2d^{s3IEQWPb$Hygy#cEp1#%7hp$CPxfe&CoOkA|_&SF($fX$@ze)IF z!Nx)2C+jAP+2C8A>Zj<3MDfd$^YQ26LN*lIJ4N&wLE9*CPf0F)xOm)4ZEWR!$tC$c zA^GxHak@^T<2InSIn&hKhPNKo=}b+1Lt{`mO$pD(i}S2~aj|@fKR1e=Gs5$U;ylNR zC+ACRU3E)MeFpFK>xGp*u&)Xx2DE4Jfd84Vg1nx`8RS{Ov$d_Zd3#%?tr=Us?8r22Z?sM8g7Exol4qfON!Anb=SIxe$lU%L&#Lk$MjUtOiKSU_J(E1|7XKPw$Ho=mGkP{m(8*_m^60{4nq!- zbV;^x`*LS{j%CyAJc+0dMQ(xJt|6lei)bkdTdZJ>-?Nv;7 z4*7ZPCCRu4^7xs{dx4Qxa_)epVR>;qZW~r_H+$|4vo{rpGkcC zK4YoSYNpOKQ}3nu!KIlZ=Vsw*K+ul=P-OG{PacJzQ^^vr+26)lk3fO4az;7^PFc= z@5XJ9_sf}X^ktzuUAG4E^0*}?Z-(f&jG3G$+`k@KAIX#UHjsz4PO=|lCfnPGN)0iA zecjoXu8vO13yK5VaDsSB8Jnu9Q6Trm*N&(SR?ooKOvgTxIx?>=Izi$wx_}s^!52JJ zA}8+acz?H$JgMvM=^v0451G#10o38x2veBZgXz})ZsfD1ujBnsrduL9@wN9NQ#N~^ zI-<*o6;*ol{LU)WJ+hl-US~5;_L=zF`vUml@X_Z?jULf|2fjAfkE?IYCffinWpr6Y z&WkVQUL3lw!FnEqucu*$_*(WXmYXU*jCSQzlINCId9_s2)0^#V?Hbyb3%)BZG*YH9 zEiGy~s7F}HK8aDuNn_viGS=Jwp3yU~FTs;0s4>quODB3r{B$2oj|QZxTV!Oku4Qx3 zlVrL>FAx2qpG7C1b(<0%RnH$$6E^1qU6{^|Q8B+H+Z9=LD7&Y2dcMt<`lpTP7>H~f zrScs(-^Oq3XLv4-?9=h9`jYXP+Bs9_tUzy^Pl z$!qWD7(0QEVjm9e7vI`G4Ba+bEFawvu(hxQSW1Z5zOow(PvN20WY-vZ3y>!?azBn( zpFLkc(j&Sy&>bXsb5_qqiIL?Q=*hYmQRb(V6~@-s=SJZXzL&xLkcK9#Y~L=ECtIa9 z*V8AN?m}dPC+~WKI27t*Dya*;o2(0%XWIHqG?n+MDf@iX{$F@La_mc#X=vGM4P~B3 ziRbc{Dr2_KTib=djNK=AO1I83CHoS6)B0zdJo8>Kf<4DgZ1ct8gq0_1sxMcnihnWh zQ)eN6#_E}m?mW@S`&+he)IMtq4;izHVVE~#U6R-jm+Kz)`$vqq>uA?+h`M+h#%Hl_`k9D+`+mubh_5+)SO!zD%cCzhkL+Nwk z>))41PuGUpS48#|v!U`?b8v(3^n4xf$0B*!29L1Q!1hCCV1sY5 z3DC)Pu?vT>ov?9W$BC|x?QZe`fMFxuFr-EbA5J*F!347J4IN& z@9HhQ^G+qkFRs2S_Pqj*t(&{U?>VArgigx4ccY2JJp3vClIu9MKUo*%>G~}7%8)MM zvyFtgei=W^NH%pj17hsgIi^bNBpI*pl9moD`gAF;HLEL@o>uLB} zuCuQhn}IH8a0Yaj8izHvggg^*n0Q}Q##~=F65a3vx5mnQ4`FT`P7vmnm3hM2e;9uk za-J|ZMy0n#Hn=fbPuRs`}Dy7&{JK=5PjdYy;P=ZarUF{|v27>pl4EPzqs(4xpV85+AJ=A% zq_uw+|Kxsk{8b;5+bo?K_TOU{?qgmj5IvW>9v@5lGI$rZs45;phacwIM1n7fC~Ny5~R;&cmy zxpndd!rVMdS4H-@d6p&2t&>Lyn{{+KN|?L$YKE}NpTuoALzv73=NK&)!PZnqHe7P< z>UxP1SCWJB#e>h*;tX<-btzWA^pGxY9Wp|g8{3H@*a^ZsCtv0Xb9u6!>hE3^^XGY@ zOZ{|H3|qe`@~2y8)f49C(qY2fT$(1#t+P%OmiuWuCzc3vb7|}YM}ji#^*DYhuZe7M z>1qkP^nB^rH`LjGPoJ$s;hkbV zwo+)`g2BiPUd?Z-Zp#G2qyAS6T~+I-TK}@gRVU6sUa-Hu{w4wDTeXp%^5@J?o=|OH z`>2Qeaje!qgC8?bd`g{uGWl&J!I%E?lj`(z5|eK+ZE4yrpI@rUU`|yleOmxF)HFBk zXvSv}a5Zy7ZD@h)li!+Y+}wK822eJ&$r8`jKn;(}SnWYG$3=tq_UQ8ZjY|G*ziv>C z-gQ|2ZET5;3CKPA$n`1tJ$;j*n|%JDDjkf|=`l`>gH_kGHSDOvO7E72O~D#s|BI_M z{Zjj&8oS%jfnDiT^=~J>5jTx7SzumC*ZZnOCpjB%uEJUW;z5O98e{uL?hSc*qd(gi zD}Qo-aJcjQgX=RN+N0!ef2YxN9P{T_zv-|#hZFKs8ly2|g|Xj7jE@GG_dB*t{SWMK z6OC=_wwSTCoALaIGobS=-SWy2eO=_>Fl{(tZJ@~!9ox?JlG{I<1dZm1A2WXyuM18R z=I)=oKv)j%30U3*!WL)a*vifC4&}Me7G+x^UCMqHZ;#SNuqqPV+#uroyG z_T82VTXb|;Qy=N+ViknRy8!l!H+v+sed1^F=YSrfbK7E$pB}q-vB{OF7u1W$dieXOUOXQd61&)mM-{GCyZ zT&$kx-2Ch$%*{`qFgHIB6XxdUG+}NIo-Tqd5$5J#?bgV4H_sGdZZ7RFf{hdA=Gk$= z+&r5j%>AasIl|l=EV(VR!Nt}U!K#X2oG+5sJ!hgkJO4k-vtg3w=F%a;+}KVP!Or$a z`RV4;BGI|Iw6ZbsnJX_<1lvfMn@eMaxw&+VFgKTGi(qF7b92et7TMtD(ptjYT&g6@ z)upWnmLtr~GdEu@weC4cJl&j_B+QM`$s*VSVQ!2zG(|phW0WS$^-H!0HcHt4E595i zo~{kcgt<0cY8?EvH=FN(x3%bfmooL4jBPf;Ut>>Oq4s57WB*?gUawj(@5*P*qS^Rb?vuXTn5FYpji?@r<)b@qF}Y9PB`;XIO8kGK2;KU$ktg@byWNVvH+oLu z|MNxYIxU^tC+|h8www2q^-q73Dz#WXJr7$! z@c(j)<@3vNi^+XGk36YL|Iz5VjQ^`5bU}j2eRG$^-|Yriu&;w(Zu{)d9#Li6A5$A} zLYI^})lk))=@{JI+l%>2-MvF*?~;Jr^Il@;=0GPj7AP&g)mFypQHd}j3s_pM+(&%tNwT8w=gv;Coc!+8v> z{Qg!guVVFx8h3o{TiZ*XGotxfnR@^E(RaQ<(~UlJME5TPOnx)Avh^{w5vTZCusN*X z_m;0!k6u&lU4{Si{vq>%UAR`gB$dP#1Y2{Rdh~@!Y*DbX>(ooGOJYlcO+((gB(^Nr z46qj`G4C9(wcz=ZBvvBWNzlDCiIobL0^Rx~7UWs)poxU|BRI;0ZXN9V-6Wl7b5|h; z#g~>wKO$y0LjS%LJpH&d%zC)QH%%x+$xbO6*zJ5geQEZTTGvWIqe832wW*)SkhZERiJ@p0q z!|fLYSP&!MzDG!X3wvW@{BtA54}&u8eR7qO`)3dbiGlo$!#u-Qn)uJK=vDotVh^IRioBBp*gXhlIP((orL*ze13lEfTrO%*gfM~n`>^XYm?!}raFx3H8%x1 zPyC-d)RxYxE_Tz^Zeo`zIoT4_wBqHj=g4xS=9GiMK9TrFTC)2)0R>4JHAxyvt8-fh>Y zuk5+%G8xC@Hje2w5}oAdu+TMvuDdwhS)!Bju3oxAdD}qObJb-sI$cPf_xearcb?o@ z!rZa7Ho~M{s<_O|=bQXC-bLD+M-J+P?K?W%)Z;7wzc6Jj-@Q zzLvR~l`D-6qTdFK<+D9abdnPjmaY=EXN%A+&qX#!P9#h(kn`+o8Fx$iEFxt4dVW8$ z&uy!g$p-g*{|M1ZPB2f_MdF_R)m9ys%3s3QHV*lG#&lALFwYYt&y8&(VXh79-w@d+ z{$!q=gt_&+PngT|a1m^pFt_}jCajpx+;JQBi}+J~Cuajrsh1{iHSb<#cib4hmw7R+ zUyf7z89&5uww-y3Ut;gh%tx=Qv9uH%%&~;F?m^Zc!t`>n@xLE`q!A}i0e$py0CrTwykRMzg8&kwbx)?(;JJ<8DhFQ z&@BmFJLqnCWASf&ckIe`HSFow-DNcLt)4#gJm=^c|Bkc}S}X92>2{tzq7JFZ_Gw#= z3si*V;Dj-|kZ>t7l-l z`unIITe~an7w`FoZuUIpcskgE!rqy0d8Yd2?`0Evb^8DMOs$vtF4jXte$h6tU#34C zJy*$oa!l9$*GJSr$b_CLv9XwazV%uA`Vmbd_v6s=>8W`f`T(S6Z&b#v` zPTd;K6-&RPITqUuyTcfH@=YwS&ctv07kG|~`V0x%vqa~9FY72_GiSHOD_7#_y%#{__5FY7VJxLtFgWE zcSqC(n=e5en68KPtnV#6hUCU!g6Z70kudk$Wb=f%ZR&Z#+&FZ0#r?@P945^DZdvKy zhQ9XZP==U}ede~QOT=?_M@>Px#53NWNKaW)SV*4x{HKUcp5r)vZQnhjM&O%#aUUl- z-KRy6XVKs9KX{cDU1C!$UMJ7xp;H(ieX#bKiRUr4;oRRv{!AUz`{;(xYHcmejhStA zt*zBtbVEHS&mG;@s4ME8S@ijVBjF6VG^S)nb>nxOdYm?<%zEsM9+V? zT3u29%*1n*>^vi%`{>1Rtn6M)O{2FcbpHsth9q4fc~Ul)gsumE*_!l=dWEUy7g0~t z+8C{{5uCM{{C8uI@k@ZQyjhFMed3pjn+(tP8%I>TL+Aa2nZGoV9mW3AVcnXjBhL~~ zcbtL!Df@eiPI5Njl(up9d!}uiX}_`HdJ?G%=ow*Xpg+6K%wRRo32fim-Y6#|U&gI{ zGq1pV6URQLYa=?zCGVBSFHq6TSuF5pkHzXMM%1K(MbAJ9H9eNce#zHQ=01b#Gxf+H zE742(6E0SD*o<#h?YyzNSbn;6^S?fzd5-_|7gdGytXSNdh+oBfE>1TNx?(&FVM6EX zSutsB7d>5U{sEIq`LMueg8fhW8uFZ)kY{}+abO!J?u>FUpU*h9Ot(H8(G~NV`^+`} zny_qo((f6szFo)C!*Tr2Kd%24-Q^e_Xjbw&)i$bnHpk!fEDjlL`4qmh>|C5Or6~jFHy(OVrZr!N$oW2(CDV^_kRNY~)s&#nBx7YYAu#f%8WlY^1 z|BjKebm9x?(=y$0!rZo>dCGfq*LJqS#q!x6KKs&lwp_Yk58C>xlm0A!BB%W%7~8;l zy0$Zx&xU+@Ho#9(UkBe}k{IcnsI8M(ui<)R+@cTHhCojp+pBHe`a5XHocL7)&p^Od z_Qzwp{9;2__Tmwha@b&W-uxZI&GfUf0~5 zG~b)}4EApLb&@B(pVQH8KC9&H)Pg-XUSi~>e&p6X!!A9Hh?BrnM zX-oII5tVkZ$`*rFW=B-k!K&H}RXIL(`>GF7eRxx1ol&HJk>uD^4^$<4tP`n--DS}N9Ch~&!N3yq8 zMsH0ko6+1e(2x*FHUodT>_{^>6+n)Z2lIwD~ z@(vSE_q$1}hax@YxgT@uWp+QlKAG82E8CB?8lLi#Z7(M}d3Iu~wg{#egFL3&Uj!Rx z%#nAz2sX!dt8dal>kE=5{Q8%Vsf1bYm-Ab+n z^X}O%ha8@aaT%L@b7P`?ulz=b=F5GXe06eAUpGJpX*Ywt>6tFT(%((;ycDchJ6#O> z|EoNX16-z$Abzeti`iEUt9(O`62=mT*`20NUP7I`T%=CsoT$1jUhhuc6XmsA_na(( zEfBWo^gk~Y!ODgU%iB-{OB3eG%ND^#33Kf`S_GRR%$0Yh2)0a^Temje8`y zjqkv5E{znyCJ1xefD=WqdBR+I=Zj!vS3aWiPjb+exBkA!K9^^G5zHq{czWkd9ohcw zQFXd0?4KpZZ4Nth>@&{!*|)qB`|z}MVPC;6d{!-;?da=@dXZv@=S`u%dur`pdQwh< z^=jX_|EiLp-2QLt$YRe`#W1c5&=#X94!8g8-}T050%f3Q1GJa=n(17um^{WZnO*yO zvqQaond~0y)IT7e2@bW*Jfl~><^gr;i}7c4j>FL%@pcS0U?CnhH^qLT@^N5HooQ@t zi8>bPC9E5K>akcHMCM$xkym!}18VkUVR;8X^IjF`IQr99aQ|gnb$h082HS^8fAP+)dk1kN+aAyb?`U~$=&6>+RH`-qxVKA(`8{pouf~RL z4cIS^dSH0=w{x3P82^;_Cze*175RJNiR0?g8>_89ODr6xYXsfcA4Ix%FD+Ga<1ps1 zijML(4$afI?|Nn-PiQn^F{axH>@4y0Ezi_*NAz{3W1n%kb?0NY{b49CG4C)(n7e<- zNy6MUcMF6S8~c@c#%#k{&{g6@4yCj$FEc(X!`xoEeku03@159ow{ErkqPfc??*inN zy*bjwx7hgWF>f2!Sr?Aqti+FONWIAPC*~^g{AcN;jL5+}M}ZwBdERsrAeKMCsrHbQh6%!=DC-&e*)+znXhjCviJ)-R8a3AX_yp!7bfo#!v9_!x{ z>f(vd^42{=_vYl?4a+-CbmGsvdS-5`yThStf5D+pPyMbAcGffr#|N{Cc^)SV9C1@xc=lhTc77K49Gv}qtl-Em1;U$6aN2G0hebq0}}bd z^K|+L81hEf9+e1UjodxdU|ibTCd30y1kvTbUE;>EJAk- z^4fq0_IWQixl{?Ba$V%&&^+1pS@N~KZ!Bgz)18cXdh#t$m+rQ%XbOzuGlsmW2IH5W zS79x;Yv0z$XX&@aeTMn^Lj#$fj={_zHVp3_Hs+b1X*;Gm51v_vj{R~F@+NTxJ}agt z+kSy;&$ZrG)OMzu9u4E*&4X^KF|zNdqi1AaZlKGtPko|B1@<=naojJyjr%0xF1FeG zOn>mKStC|bg*MKiL%+PXZqxQHndVJfF_T@UI#dTTnCA@ioB(a$Gq$hO+9&+wyOu#+ zhmAMtTGGvp`m-6Cn(dn!YP_`7Wf=FKaCBjwfevz?tZ%e2YUms48p!o$^(%wm9WBLGWwX|7{Y!ixX9G@o_6_D_ zOzqoVE%aO>5og`1nbRiquZ%`U`cs@O}N6Ftzw@5rCC%nx@mom)d zkbbw^k0YT=>g^$B`iexiAAa5lTzoCWEN_C1RU>Fw{lY zAxyUbx-#JTVtbV6Bu2iKSBg12LQ}{-_KU=i>C&JZC3#yi)vYxR4Vl`uW*KnUw0(1? zwc&Mox?3#In5R3>aXHe(lk(27T?_l#aOSgb&7Xue=)J#vn-irS=)V;4XCu+M^Xp=I zI`cnAh|c|%`2=C^Gx`a_+F3lJc(`zHk5;JATM8CVEGo# zPszdKtF-*7oAEw8%FjgE948yxTngmKZ?_$rBRV%<&JpIe9VPD!{i2`kIVaW;=ISy< zn42#<33K-ZS|rTPmqUcPdA;&ok)FRvE^Q<_ch1)kVZzh>92aoJshj`Px-+y;`&AW z>Hp1DO75BQN7d>bkE`Q2gWT2gds^x?*R|9&)zqaMtDEZN6@=dYtr#Z!rZB(f)cW|l z3Ax^#-JIPw*wfN6h|aL{LWA{`d*ul1)ABYqZf~t`scw}49oJ?;n{y6y}Sb3s+2@#8b}j zeNK^iYl*pH7^~Tw$BaTYlvKpuwXzLM$WN_j0iFS-UyroO@-V#mv5xyqY^Wc|DVVF@ z7t8O|B;wbejGtf?f~h1Hy$9;;xbcQeM`velQ0|vwO9o$4-CmceZ*Ht@#pmiUqs##I z=a`hE^T~1~aQf;e)ak$bn?xC#dxLq-DY*-Cx9q!Qv00AE4*LuQtnV$%&ueX`lNC zu@{YFLwS$EW`;1g@K59R&E09RiG3I!bg=rI!RqfGQTrXNm@Z=blGr|(v|ZEHai|v-xb>T zcC_Otw<#fJd6PsZ{aq>BayH;xg)?}zm-PWN*#E^xfAJ-^S9?#__g#*k=3t%+#8dhj zG?uWtW3X%Y-dsQx*M)P!?I$y)_oUoz`nyZ$zld#?qmEIs-zuM5vv&|(CG;$Ne}2EP zJhy*#?lm6>0$(zWcT)x)y`KDiuIi(TLguD|(xA^JTaQylb0VJMlK-Y*fU!I+3o-zj5 zVB$AhJ)&s}+0Jor_mp8wuT$J%c&c3(E2$1+l(4V#1Cd|cXN!8m+~o#Jd;E`wa++TCXh?>lxIwL z9CYU{L7wcDQ;<<7n#B}_8 zqT3H$roi`NKJ(_|Hmn29PNMT|*<7x{yWOb#X@C0G_B1e|DWoUINZUtrDcI1C^J02R zJ;=J0K;A~8^KD(wQ;TvN`6W?Std3zEm~IwyXPM`PRobRG#6f&{DfY>Df%j^Y6H{Bz zt~k2*#B&imD<95pdmFA>c{(SU=NNeA3ec4uiRi>25}I_man=@z4qJBv?)*`m&~!%_|tm_<^@Hz z>o~;s&k95)>CVH3^+)6KCh+cX-viGox|W;mlYQ^P{oS&?7%l1RGL!b~#2JeF(pw(E z9E(UE=k;OeVKvk-@-5vk@aPsirlFx@cGNe=QFcPAra&j=h_8F#A^8{P&R4n8Zf#@*X#>Vit-pyUz9D4)Dw zE)MI-^4v0J`Gsu&(=C#H68B{MqRBtL9sis{E}es)%l{~Pcg8$Z9|>(Rb@?5pj4gsr zXxKicJ4drv>h94SwSx8gXP&v`j`I3 zEyb@B@tcBA^X1_F$aZi3vOdK;IexN7k8kUxWxR(KepaR~x0mV{=DCdb@+@zXeCEDe zxa9{@XM32HMT*n$&v4Q)3x0nGO_J>0PlULF;@(y z#82i0u?yCgtx!X&`p3&Xyh7>QYmA;&6hFc%YN8ibs%aR{oRHx4ZjFKO?8pJ zzPqmA)Oa+;>An|b``nyh%-whS*yEutUa>rL^TqpkL??UtvV9xDa|~zTGmcRk(fMzW z=imZidJagZ@!2SRCj2hNXR`i*<+1IqUk)KYmZ#^|A;I-a$tCagMo+H`^9duKI_G_| zAqV?T;>_olGgF~`o_u@F>oPoNV7t&*eJ)y#m~Iq2XK?0|$9|D9K=#?1PlWP3*JpuW zf_k3m0xX};P7qIBx4y>M*MoUT@?3u@_Q_b6M|8_*Hz&Y1urFFSv8fu{9XHiRPljId zxr!#4LHN|KR;ah!uotZ4C^5h6&lzAVwj?p%>asA3x*)Po$4E$Lg|4AE-8|?zpNMRz zscvX#4n7>0*;c)^xh2x2%J{78e!NozjRit^=~o|DE4J=kVT>Rfi0&}xPLsT1@pE)( zXd+#hj&n)sCDBVkm$&56h3V8MLmNEZC$i-zhjKK9a&(I7Pgj?kmS$^y{9VYp;}K6i zc8|MKBcD<$ZcF-wb#ZMl@;2k^ci2*(HB%o7!ymr&XZq&-+Lsm!<1mM~-@h$S+=*^A zY~Kl8gWNUp>Z@Bbn``iW!=^S8$a)5sgEA)nuYi5`Hzn=!s!hI(B3}+cR_Tuph4Q?e z2AhPhk3*Nrw?=Ih>C#qA7xtO7E22vkbh*4asSDfC{;4QNdd%PIQuWxIR0`P9x8>7i zi=FW;vomA|^Hz^}juB7U4^VVTi(f9H%UPn69E@zo%BwAPnbz$so2zS*a|;iCI?D^!b6TAmq?eUEt$yA z`ljEvb+mp6?A9Dsdg3z2&J(mkvifz4E@BDMl@I zHO(!x4e(B&66-Pw{m+mM!gx&l(vtKG_dkV3E0L!^Xs_#EGR_disC7rAg}IAu;J626 zb3*)*M;E3$AN6TH`Cf7)Z+k0-T4Oa6)2;tZXoG(47mcRG_SU5BOxHVC-&PQ?SroPjmqW6NZ#}xyt1Hui}TenZ0)sws`+W2 zRoGt`$ILHQs1MH!i)b8CpD$e3(~9*{I~r>0(3fmNgC@PnU=3Vt*WJClyS8=o;T!b> znjX5|wNcqWy$h4k7?NBYd!6|fn!jgIr5}xB3l>w|gR1Q>Ouks9ys@>|8~fd*>cLk( z!|sjUP*nkb*{?QKO%6u#>OUIi$-b`0J+4HD>CcYp@1)7!6|Zks53YTN_f+{0+0Jxj ze;MVjJ0_QQFw9dO=;+?t)i<;ao6HViyV>4wwkq@F91QxqIhjXxCOMCc>9m^o5wy4R ze_!a%Ch5G7m~oV4)IIxA{^oxc_1*N`G#L<2V}8@#E~vWa?oiP;*z(Ygch{g188~!# zNYeF&blurF!;l|{*#@><=54!lAw$qPSmew+7}G86zfIv5FLxiF1IFXI#Jb2ma)kaQ z+h-8lWt_;tl-$E~Y=g}A&J*`go#Fe9E@f{*{qng>*TuKGOdt-Thv9#M52RCG>KHu_YUpz;pHIBl~=d zmG+G2>xS~;zAmN<^PGdMb0n{r?Vd8eu7@r{!@77sxk~?kcoAiK;BhsMGssV-tNH@Q z9B~HN(u2mIJ^Mjtd0xz)Ze6zsepVMx*8KQQM$gLk4`Q75u$ua6)Gzm~4L)oTJuIEh z7sjT5ZTw=SXCZ$|pF!6>L7oNGt4%eg8v?&TPoYctx*^OnrVD7~x2(Udc&G81{|8w6 zZ*2&C=6!yZlKUoMdkXS~9?$=6xwey$F0Mbh4skKzEl1T;`_x&nr^EQVychFyBKx#I z8EXf25Hf?f7qdODKW%kh$S?BzP;$ulWfc2rde*+cFHFbw6;Uzw+tqFez5ZkpDUzi&=z~2#U5EDpYx1e zGIPNkOm`-d7xrnFq%AHjPPgXEp`Ia~_ZaBPiqi!;$Z!3=7{5z}E|sK{ds2dxCo#66 z^ed4rl7m85A#@eR>FOQ2?rcL}XV-90Dr0L0SRUtu_*&;@LsM;CJ2t7QYiX!%jMjcI zo#-WpgxV0?Y>U<98=+SrI@!COW4r(02h=cp3je3XZlQMiuB|9=G*N z5F?p$*;d!umf7Cc(1>>-{B`(Z@Z#38T&Yv8aONBF?pc{dd^_DkdGD1I_0-=W)6 zh_3vb5uMZ%+AlTR8ymytquL!o0j)o3>|6f)h&u1+sXkyZ_3((QaIh&$Cq6j*jktY1 zA2M{gqo{WstnAMsd8ZwWZ5O`5A?1OwPD>}a%v)=F&$ROPU#sreRpZ@?Yftem4@mK@ zwPSD)9~Z+e`I)`u12P#bUc#0rc0FDJznps3XOvfUow}p5#(RasQ*EnNB4F$jc-KmP z`Os@$T2eq>-@d&VgRr`Y0{bxOOLzo_*uMO5!kwIJ~jOy9vBF4n4qfewW0))7PrM-CN_m+>y5>Q`^ugOMtOI2VNGm0S=F1 zHjpku*w?3HcTcnieirqIR}O#PRpYJE+@d_w|NSWH0zX+71UxARLtW&LQlT47(#?sy z_1CGt9jNi1hx^#}Xq-qd3=R6rdZ;XqyiC_{P7kX_bY_5s$JV^N%`?#Am+-6|^-*+x z$)yVirNjWD`@iJ94Rl;py*_*j1wyGXK!u?F!zkq%wO0c~4H$LOCT(KVWJuByy!Flw zP1*#e&5%jjpaqZE))cEotrE3BgsM?0hwE<^zZRmbSX9vG8Z|TAyyD(?ZfJo>yi!@qj|Y6y^zhC>@?Bpx*V+tG1NduCujem7fxhGmUpI zAKDOp_p-LVySFE`w!atKNB5=H_236iiNN1kWp$o-n@+@|b0ORNc!dz#2Hxfq@%nnw zAY$;+3z3WW)8`JHh?nWHs%0lm`cBAO*PTwMdi&WysY9gi<`d~l%L6mIJNmkeq2;8n z0FUqluyfyWQZjFVBSxf?B$+4VZRo}bZz_#qW9oZB`rdgWeH+^QdV_ljW{9_?7>_o7 zrjzsfbxu%b>imKM=XR9dkVt2Y;(1Fknc21N=}wu;Jg4;^L*#n_9>F7I=dHzL_8|jh z>4=?>+%b}Q5`F9#XZ{E3c?ujp8ZCuT@-pTRQNng=g#>*-}6z z`8P@axnX^TO%tyOmM7l3!#rh6N9VeB)Tjj#X_EZAEzBc*vF*@T08=tmf~RPovhEI4 z5`OhtPQ3SoWhx#Kde>i{T1)#)kQ(nwfOqcJC|;($4;kJsC5k!?A3juoM`)5{ZVSsK zEDv78_QKdu>_O4+-Y}+o$k2A2y>v3O^uHt1P4eXR7RcODl-IGY2+@U|4YwELWjA5| zVL^pM#Cu%?vvnUI@b9tloir9ax%P) z>p5?lc%KUMVu+>Fa-ryZ{+QgUi$7ZsKTo`S!n{yi&|U8Bdxx*`%i!I661>gb8?U^= zr^Sf3=OlOoYp*w~kS!g(?VD-GA>5!azpp`CA7fuLLv;kD!)L?#=!OK@G8)EIUwBFF z^7=+hWLetK;z?6~%%Bgw;S0t3(AU;CVk4-QR{u!C*iePdf_OeV7r;=nob)DGoF}{bn#)m0rWB}uxRCkuSHeDUnWay7&tp!>{yO1wsb{sapJANOU*jO3)i^c_Y!FDapJ; zVQr6N9kiBdcu{#G@lM4fxeJ&~`ah=Us!Tv;gM}sE<@08JeeO?w-c=HJ71s3&>~q3- zUwt+~HqoaZA347ConC=Iov|%HOJpeT%HA=xH?n;|MkW-#U!Y<=_J*vedQi=!!q+Nh zr3#w?HoA0|IPlPJ0UdGT@$@^6@98_b>RwVMIJWpnFCCoBg+Z+1VV^hqZ15c7o$)at z1>y(I=Tog8PBJhJL`(h3WP?|foRQWxalvKJh30i7ss6m~LUF;rJSXGA>reN-c~VE) zwyg9`>yy57A9$W0_ygvwzeL4l^mmvW^X1)QH$H{pl9{(h$|t!o@ceW@XCafqh+T(C z7012nJbCZThi(_gecz=m?p|eQ`CwMef5eNK!t|KV6y`Oz-S5RZgss84hriPhS_o1%dkl| z==%i2k~@R3=04C|{_vWn_O)v}GqN^t2UNbUL(C{9GSPKiz_A&^e*4eItP&h8)3NhQ zE5qz~W*BD2>;S{;m`yXxj>~a|+4;sL^XJ-hPnLR$xGq-dFtjr(#=f#!bf|iFgxW^7#|vH~$jQrrM~Erxqw&)3 zpRdDLqU7OcaIY3k^-#=>$zLbFao&Q^ek@)&!b>Zf5iOflz2%Cx7e-i|Gfn$>eE4Ef zeg1;b{wOxj?AJl&%n*#>+t7PA#(#Z|J=~k9?tzkvY8Kc7cDT%wlOo`)YEm^pBo@a?eeU zRYYKiH>r4%K6|cFlJV^MJvoNi^VSYCjP}*!w#-IgfpnMqak9L-7F!~dk^15?IgiRp zF)VpYFlL-L4$OI{O82sznBVHR#j@YZu^Hr-t$9DcgxVuk&fN4Ff=upuM^;pRbvM@9 z_|GfO7G0k$>X-7gYf2x(Mxg6hls>%f@b-PZMai6g5_46+;WCTG#V)rzE>vzECNuU7 z)`a3?%1X%hY+p}CD|K}F8~WZB$>FweY&YZ`ijvu#O|{E~pfp~f{3}J7CJvYRKlP8x z%tK}w+7{!V?Av$^M`&o&sXXfx@tdm_Xw`n-CQ$EEv!VMZWG}Z<+wYz8!`nErL*p_} z$bLa}GMQ?q#yr(JGafB(;WB5x<~^r6bdJOH5#8o|Yfvm6@as<^viE9gpP`m3m#x-2 z4Y@-q*5#OwGWJbRrnH4)2Z8NUZE@U_S!7;b;sIsL^cT_g|48{qbzfngzjh!trg*bo z+A3yrU4Ak=lAGC!xg*ET+>yPBF0>oec1&xTbr0e^+G9amcs!54^e#bi=%TvL{n0!@ ze^1T&5Mt36$_sW`nNuPToeD*8V+!u~KL0TKjR>ludu_ z2MJD4SvgV|OA>Z8jIB@C-~~rBoy$_2?xeM${sis#<0>wBAgQLfn$|o_F{$qvVHkr>jwgB^K1-Ph- z;v{GE1*I?dd+ckpWRIZlsGg#$?LlAPu%$2HUwtDE^Qf;$A>*v7Zg2wFvU{;wt%Da=fuxU5gfZ6?TH*b~i0~f#=sGT*li8Uixo- zTmtEi-Gf`@TijJGWQ(hxWu_0KO$CR(!zJ}~>9~~s32na>mnh#8`<0#XvTb5e%S1fo zySifO&^C&Fi62qC*fFg0_Ic8v674(v)Ae^{XQ4DYUhzR83HU+%!GP~AtClXU)te^+ z=e8WvGKp(HGsphn#l=a!ulO@;4n73*H8$Z)-IYzv*O64r*Tef~`t8EM1uKH(b|1>f z5xk#m#e3KT_*CE>=pKCNes1TuwuNL+e~IO@O?`Uq0CDKzyfWuLLEnvoM{6oLHeX|e zlgz~Ll%09pTh|b@lk@0)bJ;S5mPs<~^$*9+yjK{WJtj~xN7*T!+bUu|3fgHnv{!B( zb_HT>+7&bo&Gl`8e7y&G=`cRXFL9DFt^FH@j*tpiY>LYRHe06&4Davr)r)Yu5TY=b`&3DXZfWn9ZH_Z^O%mO$@7kW z)-K08Z{kQR3)nf-r2HcpZLl+7i`BQ`GS|SrUHBMVbUy3r-hfJ(k7+=0K&D9tHT}YI z^tf>Bm)JK=$IQgj{k`&UfNaxtdj2uq40u(i__pwL*o*JUcakyWJRHc^t*0t%3|Q%@ z4-3at?U)N&NFMQUh1(;{VXaA-)(CenULSZ9%$E33<--hg97qQ9QXpn&oY*JTsUO^j z1KLiKvFP~2!8E$IxxTg5H^$YrSiFZdNd;|P4-8ho&aTr`Tq?mE z_?uN$OujDA|Ez0K=}tbmo39dMuT^$tASb4=LUwM|`iM93bg*5Covv&l871w(e9ikW z^iIEE`P2P*od;Fg_HV?w@}x~)<;u?T({2&v+7@GH;tzAg^!HYXA0JTtPd-0{r_s2! zlVlt}dtB6ge}ypOk2MF&L%>e!*d*J8a+E)1n@F64Iyt85As8~Yb?~rVD44# zjVA5s_mGx3g)+X^lIi?Py~itcwuxLs-8yoe$`d5xAhpGeHw2jrVGsFE`lhwM^1o~q zj<&Oq4?OQCe-M0!xl{8<-sG<;gJq>LI3`g3oQhc&^kpLS9n(J0eaEW3{3&DB)t ziCC)JK^oBx+6&Lpp3#c|Hd_Nf*h&CGDKlaf$sE&zl-E>A-nuV27EV zJfBTzeI#S}@80u@jG0>5?1!yz8B?dxC(#}`FS=O#`0!HaY-!?|@+bX>Kd;iS4mxHn zJ9%8ZmDE{9<#yJ+Ncm1O#{51Jw{u;4cUmTIPU~}V?}+x##6@5n#o4ex{P-7PI|KUO zrpg1!IKDQRmvmgReW>*MU~25o%D-{k8`E|geQgw%7~(Rm^zn9D5OyB0Uxl$itgZ1E zq4njV&$aY%AH>-zW^~`dw<9k#V&2T@FA+aJy3{#GhS*Od>|cjzovpMcErWSWcng6= zcOBKuOK=~TsZs{(IWYz|N;0>p{OO|2p**H>nLkJMI0JoG&c+1dmB$jCw*YCh1-2q) zak@9)yEP`j+Z?Q=^cx%^ZdbO9!xoZ9U*QUuY3sS4^Y(#Pg0|Dx;>@bFbsp*$!&)Y# zZ5{S=itOCWp@*-e(}cwKx_tDr=n*#diop4uAwr?YLge34iD%~@fb3z>Y3Rk2) zIcI_KCWv>gpY9=jnI3PNfUDcaS@=gBsqF;%PBecatgpAbr&q00bhVwM@GoQO<5=wK zyTo*q51Tt_(?e;ltJ{_GUt{dhk}1bZ>RTGCS7NPbjd^3JyyU#&;8mPgBxY$WBu!<# zpt-u9C_T7Ea(K+-o-0d}^iIC9R_=Fh%@ug{9C7-*7wfE3qN&~-$kqT=qbMtDGg!B| zaU*SmjmsC9u&M0q>0kc&%$QOFc`1 z^UvhGgrHc@KbLIz6l7MtxWIfxtSJccJab}X%RS(|sSwX1v3ZVzr0-tv-W>L!Sh=OS zO{wJp2ZM7Ui$l)vZ7B1&2Fm(H$r{z(Qawml`NB5~`3HWCFHmL7U?cyzLSpW3@SJ5~ z5vDlHTf5Np>gen!Fz+!%JvI%I=r&FoQzvpQEl-8iCelu`B(N^JX2bB zW+s#mBxd-=(3Hl;z}sbE zL*Gy_n=aob#(c~f-cnKU{3CNVi>urI5!7dUP$!XIT(S+|*d*dP_d>tUa?LaI54Xtg z6;1Kh_hQlXy8d(ui{f=nqG3EgFkT$;s+i1TWrfbXLo9k7J~d%j_dtO8uD0`ns-mC3ZEhN1bg|)+n#2M_R5cUSIoE zV-ES^*ks=B*LO!s!pdlF}s;(N(5JciW)>tH@1d-?00VCzCMTcj&^n`TV`L~FXeGtIJO(SJhP>kKKp%Y*+S1hrwe(7^R_T-(!zKh zLNbHt(4NV3VxZ9U+25~xs6)L=HU@lP*nH^QhmT2HGY4xOR{dkro~#Wpl}^%w`l!Q4 z%CZvUK5#p2|2RheIUi7VmS7+2N!ZcK(vJjZFxD{s_Hdm=bq~F!LLJ$HT`RFOfWL~R zjN0Oll#0rK51026YH#;mEXGq|%$#!|H%eOG+_WkwT~j|6sJYTJ|FvFpeKxokzTrtq zigozFto&Y+FjCfhFgU-}oSm?|x2Hc7=+*h>Dzx-r`vI$#bpNjADO`ev$hy z+xz<;3d=n{D8JXbW%;`yi|W1S`Ww(=m+88xJ>9R9FHrAxeZ=ecIO4BOl+S2SF0~T` zCU2N!S0tOKyYVx5_c|f}*5!Tj)NOKXSL3RFVOSf+KPxZs^PsEirTA&v6H8=h#g~C#=^Kv=f^8ddGLI|ZZ%$L zTy1CObhO33Oz8v1wgOxH@)P@D+t~q5F&~mY{h)`D4?5Pp{TsQ3itXw)ZW?xy9a^Te zvsgTBTXA4H4)fY1a>e2 zn_-x3%iPO~`w(ZCs1Clj59A4|3qG#WVdy(}SLeqpl+SefIBlnIRB6R{li*cBr_Ei;stG7;F$2y8S08&0eDYNXT7gVPZ_W1~sG(q~r)^IfIp!FPGN46AsB z^3P!0cODn}EZ(%{k-$Oht;~6Y46}XM!!VndW0=i5Y+-T?cjc;vR?JRnTiS$^{4TFA zbO!n?0qbdj4lr& zCEG+&=ND5RoR9sxp!>@n!#XLy{DtZ|uFvlC4Kq7!Y+nR6$uPT5dz4}JS>GkE_G4zp zdQAj2z%Ve3s(}nv+-V>bLb+=UDV~AesNzX^B6rm>{SGtm z-p~`x^|k)1;*kuR2dLir8eZ_7slu9)wV1Zs)SPNriq&k5T56CNd{3G9yRvf(I{Nf` zQL^*U4Lyn2S62uUk%7N)hS7K2&ONVDc9IO5ceox?B5)X8Dx2wCE7yVDM5`c(h4H1Y zE1BY75f|+r>7#4#8w#7cVw>1$VeS{zIML`E@XprS1B~0k%aNT2r?pJdRgw(W1;-gi za}w41fX#Trh$*FkRUzj6yBF&w?AX>&t>?&dTaH_KVp_*~_N|!T%KW1>{G4~}wJM%; zAI+V#(zd3$83&q^6SydL^r^>()^^6P?h*JUFB==hI|Bl`K71@;W5Z8u@G#{&y$TAs zj&+}YI*h`H1NcBzoaAyJqSB#D`$wG2bHQirtqk+ip|CAtsmi-;HCU&i^C0;(_Vbq~ zxGl$;RXpiFn&WB3Q?EQEYr^qNtWxnzd^8-hnb)a!7Q#$C3FEf#xWxV*e1_%NG%%-I z^=V5hx5+pw3)NU`F`2H@Ac|qhISm1s4T$x4dExZib*DduBKl}Y;4UM6@OAQyhp zxMCX99Q)#A*%!)@VM$rbmB1U^P)v2++I38v8iI7XSBeg_#w z=~ql<=FA3NXVJpjun*3SI-c-h4PIPXNvm`iN31Dc#jrMDJE7CWQ{~T0f3_>No`#z> zPyPCms*}s!h<4MrQ}!_(hK&N7W-{Fk%9dg9=zDGp$BqLleVuO$j|=yG0R07y4T7U( zI#GF7uD9E$Y$>VQCUtRJxJ<6kPIr#UbZ0UvV9OrngN|oUMujug*MrG8{k>~xgw)l% z0oXzuZp-Yss6%nh02{nZ^-YmR@|rkLVf0VK>lM#nR-3c5p|%<`?)4Q{`7`;eL9y4$ zFL~WJZF>{OBQ2RcE{orw^wE6@tbw!iwKT12URtZwC09uc}|@K3eBy z*;!pv<7XEh>*R=+U!44B8pW8_Czc?FmOe{n3-*klg`Y~WeukX{&tcE71af_Q^|K+} zN9)`ynR1j3o2*Ega@?)Ro*nDcEuH8^cC`22EDu$>vV(2%0`?^B%dsfus94RH^30EE z!WI|CCeQk!I9L(Ju)j_A=8bEy-OP=hy@7+6Fh?T245JL$E_p`?Ti&^mQL_xk9wD7+ z9K&7+#@VV__B~_iy^^Y1u4`Pnk{<7x2{bcHWz33T;h6cS(n;R3`o{W}I?3iTdHV6P zIoWV!pbh8P=vU~BBP)&8`Dql!d|N_Tx6h;Wq>p)qoownAl&+I~`x4TJWK#o{{UbKq z1I*j$Qga|@UyQok+5^S;!#pWt=EGT0cNlw$;sYIVlIy%&)vaAmVqct3-H-kG{r+H- zzOWCze-po7AxL!Hh1SFC0y;_ z2>gq^`986g`R6>X?5un#+D%{(A?48TNsZNAjCSlTL5$~@nx6-s0}9ybIT6PEgtvX* z`%-azi|_I4Gq*WG=~&cvnSMBVu24zhGI_pEey&Nae=ou-;DhHM#Vz>-)IDuE9min3 zBnT6Qu?%5dVa%MpmZa0Lu=y+P-P1sdaG7(&3S+X`EChjvJ-L?l^z?Rw;j+1^-&%JW z`ee7O=Rb-uUFD}MYzS*5;?>3T1dnI_Prxs{g(>X$x-(fP1EjV2gozYjRV zu+TW)_=g1PqAT|-_QtmBtbV@$7Qno;wey)dua(M}jhVBC3t_R_ZxUn+Vcfr{nC)Dm zVof|dX44G&XMNYHFYA%1OI6xVHEt8fYW%e2dy2jS`p?8?&ZUtQ6zPw#>&=+mU%!R!scTtLxPBG*srO+-?n*TQX;ou$^HndA8Pf$u_Zo z#hN&|n8yBPo7ie$&N<4z+y@55QTVrLkKa}a{k%E267M4{UWrcIa-{8)g^|wq{jhU1 zY$ss}!o~|@Ny2hrEL4vCrYhXVUGEjK$TbHhpLuzZjKh~BC`1M`?Oz__DFn}6{<^?C zcwWZry@#v*L-ntT=PU@0_tY%&%U_p;4KW_=FKpW~aKk1+BFPpT8%wD1a8g|Nv@1D-8rZm73EUlv_ex%wv@&w)E{^my(eRUVRV7Vlnmi&=bN zUmPxm(xH6bJ3OB4L&($%j{8ep+D(?&%c?rfi>-=#r_w$NZi7^8Dp7V;; z^VE)UUKMz4OeV=lVE*g6+b+-|O0-z?EotuSyo{OEh#i3wTaiOmG?I@5j^jJ=WmcNwE&_7-pwm9mDK-avcnF&JNn?GA#GK;F&JF8D^hP z;xZq`zaD%S!qaaMc5G>& zp2#zd`XMQ7YueG#o9av9JY}4^5}Zf|!F8vI_x$TCwD=NIC9kFFemb_eRc%d^?CD7x zgvMrSH+C%RZC_7YL$`EcC3UZV%KPDYg6>R=WJTHUcME}!@nL?z%Dj1bUOZcxmbH2^lcy*tlwiMF0SL>tuYR(zA^sNpQ2-nEOn%=nP8JY1{s#uR9 z){7$ak!^J4A%phoYI~L94K?FEo+VT7$=r^!+c7b=T|F!-x?}ksn0pYrLdkS*#2nKO z6;EmB{brsj%hzlUf%}$Pp~X83ul0Gf?~kR=ykeHOD-7F?*JIcA>K2^iyQ~_s@EPXm zGp~^)HmTz|4m(?!K7l=fhF-0FsBFRbwG|hhUvh2APLe@$B*bFHn+9*1$s~oA59W0+ zv(xvXv8hq#>JTsRPCtH{&S%hnfayEv?Q7)u9(Xs;eb|4U@*xiy1?FT(o(WvAJOuNn zoes;J%?#FpKBUY$_KfzSERFduI-ZnYVymuE@9IqZpoe%(p|Ij9?KD9hsZ!~XYsLF` zCX<5AeeZai@||?k+>w$uDPGqqjDPC5m@;Pj*RpC!vc65dMzL%OyhpdN;QR0=RJ#(p zBP-H>+>LXU{C0)gDKiOv2-rz;PAr*$_u=uR@?rb~s0-Hm<%rIZQFD~MBJJ(XPVz08 zf%)G5L|qV=yPVPStXqvS;}gV_m)j}LE4vnL+`sug6tFWecUk#xQspQxN7v>> zMcFyihP-spx3f?>@cx8zlN!e?%Wf0H*Q@jcCze0H#`Yo5XW+awYcMwYb~QGdZ@I?i z6>a+YGW|E0oPQIYX3$Wu|MX&2YGb~onO#zZM85z{ft~CPyXyt=`h>9 zO_aah^IeTYGt7a^QG8%$oOs22&&{a~#B*BPLL7VUWJSu;7dcmx=0EyAcvB`xq`X`` z-?aP&v~kckKJL#mrW?cqcz+c8hK{lSuDqBJgXdr@)|@BR*weeAJ&h(s>7t*Uw}<&a z{>k=F&oyeKV^CQ@!i2H`YYybN0PR$ot;CNybETRN68u4Ij3` z9+S3opGz@|hhygIJkf<%6Nk&>*a)yGCX>gEmz6lyVM-rl3suuxeQk9!x&t4EiN6V|G-%=7RG(=TCZf% zee_(c_k(X}TJE3QVRYoR%-ETjlN=#)zm`e&(Q_)3iH&xfTT@Hw8>{ufLPL68q>FnS zG|%|J?TmFPJLx`p{$ny5>M@snX?2VD9A5qpHE%nQdq*N1vr`9>!xLWFFEo={{OJz-3C`xljbw{p%OSp-=2}l+S*jD6Yq1Cn2X!%PbU^vThX@ zx{uZs1oSlpeaLBlm01?7$r*oy$xxUha|rFH{~lZ-DXIHUxN~JkNP!jOW}M;Dz!v=e6Ca;z=G% zmAsDor|e{Tm-B`gkJiVrxU^ucOrRWb-UQ>(+!)3SK<1%@=(|cIX!?A1C^nS!#*qcdimYd4p6;O)S*NKA)|daWo&|B2P};Hx0A(;@)F06Gi(au9UMz;@MAsN z7R1sFi&_^+@pSH1{p8q3(Kp?MXG478L!9=!bv5P!qwlq^F~YblcFZ`IW42HkD}O=7 zZ1fh4?^#q@A z+Rmx%7!!!Fh4U!=GO=r<56NHb5PLU2ApbT#=zYb~J^171jGAIcKFI5nDvgG2$GfFh z`RPDdF*}oq;9MMTi|o5Fnfu|x;vT>6&1|{8e;rnVqaUm{w=e!T?1vvU^`OM5Q z7ua~DOtu04ZslJFGKs@w7W1#- z45PSkeY+SIHD{gn)D9IqmA3Y-+;0{#1&*Q`h7w zm6zzhN}WdJGhHLA6&Cvd#xb=%gBA0^?xS#9D2;eJB;j8gAIKb;gT41%oknFJ+a|wP zRyeY+fx3Y8>-@He?r|&57W6y$5zNK+^OU7_R?ss(=E8m6ZIM%nZu?}D^ z|XS zrDu8i=1kY}&YlgOeZ4n(ywVDlMkRfC9@Ot;Od8E-jBc*ktn4(HdS`>f5*t#@t8g0o zwK(6ezHzyfJ9fHyA3gw?!s2l|7rf$bK?J(b-`l{KS-ZNnG1a72LvvpKA3^_|GnBq~ zKiWo1pBm4?jPG=+w;#(6_{$#sKGg%I@%o4DAGgK%s;UceXp2YQbDxN9RrLhTkq|ZN z{m~F?DH#aHEXo#z$^BihWkpBlrtY=gz?-Yz=i_85j|(p=$=3zT z^xT`hd=`2~)W$G-442EKyrS%+_mt?sbfz|Ucl34XkU37TZjau9IRvm#f3MmjhRwi- zA?P$d#9y!S;3Rl^wJpJX)==MAi$~35YRRfr|0U5#y&4NjplyuBls?1bamlYzrEcp`Vbvd3bsy@?sH-o4jlJ_KUsd`+c$7y42pPum*v=L~tgfbTqJJfF3_zd{V^JTU}+ z4_I-D@}0}fz0=S0B-6^fh?|Kj>T;bw%ifKCmR}xJ%ouhUG8?w|d6(SZ@^k%!=vA`m8z^HZo|GYTBgaL;wpvFea9?}<-xZ$VW4j%_D5}| z8*ysTgRX;c8l`C=;ORY8l(HHGA8x$3^QWt>-V7SM97?ftI`*z`>Zn7 zda9SNaa?ItAlAw&oDT|~RaPjRfx^OlSYV~m$;ND-wv+Ty{b}>K?_A$e#-sdc^Om5| zY0%Da9#13Ul{VB0dD~Xxi3@`DAS){&-+8&MK)xQt2WcCpvyt4aD$`|nwxIm3%~0im zVI}XnPprX*cyv!OJ13AgId%{nx}UD7Hb>_7JCrS%zYU6p?|XB>l`UUZSji6Tf9A^! zVFSSCy1t#xBZ}9CXCV3>X3!;h9E$_1Vm$7{R^JxK?t9NK_3A;{25?^d3f1o+g?3$V z#J9y6eOEAM&bvK3Lo#`up!aHiUAF;SUG}22#&1%H%hkS5z<2UZeyM%uSR1fP=rn2T zd_~2q5@Rg%J?C-%Y+E?C)8~cWGmkRNj>~a|o#-7Vx3d+z3_ivOSNkvuAL#p&@nN{E zT5w+JZ8-lAA0w0d$9EgB&OQZ6aRu|QGB3p{doSCW?vsb00{@iIhL}oHrXK~)4%lv*; zWx`s=$FP#>AjaboH4fc{b?jUp=VfBSSTDZ(lO|@Ny}xaq`)ajzCyw`XhaWBOALm8c zGIoB@7S4;pNT$13*)n$K4sqm0zLMAa^pft4 zayr|UY&Qgj@$rdc7)yw;F#*Qw@OM!N$y{e+&ZkuUA~5Db@)Se0V@zhZ&0|>B##}9P z><+Yz@3m#N(oy#t`}l?@lz+}W zDsAJ#7@P6^lXa`)VXlRo{&;2m>Of=|Z*&lQgW^+IUy$Z%-VpQ=M~6$*)VCT*QPN?!*0h{N^e{$24# zM=-}lV}*E!fi1Y*_s`Wbry-NR=Q4R-;`zny4{r5&P9_^16CYt%)cB{J&tmWMYze)m ztYg?n?^SxvtS(1Ztc&>&_1>4>9|hCT%1bO}4e+lEACq5-=_CK5WICT#X`B26o^$+| zov=IvWLk6RC@rV{I7j^GSIcy=mgwJDr82{X<(#Y`gnny~uSXkSQidX(g%yF?W_eaY2$@?&${gYn0$LLv&WQ~09LGk+684nI*V<#c@xYcZIe z6c@aE!LsUJI+eVydt<*hu1$J_`hw};j4J;!u#ak~s~T z^u3f=NT!u_Ij?jG&wu!sG|KBVs{HIWafJC!vWw;2$({z08&GLGIEwLd$fNsB+H&3= zjS+6=`2`>Hd~hhwa~>}%lV8L8qwg!$EExp)boBkWn4IR3|QTVi|GsIU9OM&m%lg|m)(#j4Z)AW2ZLu`&i{yy z<$(ptO3TUVYkP}4j~3-Gg=0lA2cl;~syo|L`TFw9rCKS|tFNsN_Cb|jMi3YBTiYq) zGIX=byHhCdIVb}j%a)=tD?jGPv+P$@BL5+kwgPQj)khU((zflx z3M1V^78cYO?40H_ZxS;1T0Ccqk~y#!{Us|eO=_$Ta}OMCr?G{{UrCiAE>gDL|sm?BtLPh@H|m=@J)fb z+&$fY-x2>#m6czDF|*WM1`@RQxR)YjP+&TNiz}Fu$ z`yt8wEi1=fQtfJ6T-ZYLa4TJfYzgE+&g%egoY@lPJC7$XWA5f)tPikQ+kKR>Pk44Z z#0&bqEMOV)zVIM;7v(+hXfG_A_tH*okVV$(E=z;&$d?Cq1XbmN?nR<3j(-E3;APzi`t& z@wyuyHD$$o?Kr5x0EPvp+>dB>i(rzDlSKD!x{RPg+l z?ZdVgsVlEAG^gY+WacgvPab%5PCLHkGE0HwzC2f)GWF=3xfWJVyhnijER59wO8~p= zzr$GWWv7T7@qQl0q)~4_RV=%)iKyemygYmEnP1cpL)q-b6yPO z6c!h{GY|ZmsmBzJ@d$H|L1rQ>GnHD>uwrRr>+360t*O@Ql4iaTaZ;&eEeego!pzuV zm9`|~__=->(f>Suc08xv1JRf_VRVV-z9jb6hV69q+@Be&C!_fT@@8E&$zl4K_Ne5S zS&7el<|WmoztFb)cUH`v7qmsaZ&Y*O=m0006{qDoTwen3^tayamoew-s*Q7dG2ay5 zYmTfZaz96&*gsdy9(v5=rRoWcO?>##F67Up4NXf|)YpW=>2R6HATu`N>vOff(M@_h&W-SThTF74zpJ0R0#`efacY;0|=$2e|7ZObz3 zLg#JOmeao9j6KzCTNri-*!)j1A2gQ1S{nKucF-klp+Cgg4~c^#{~5~j&g065@!w~~ z!gD_;=w4isN9Un5U4H|%pk5-Ee)yZ^IgUzO>eglZueUbfb(t+?u%(9C>3l=^H|}Du z7R%1{>E)e$Tw(VnPbJUSGZ(0QMuz5|K>lMgCn57F)8}ezdMo%=W!20^1sajYME}tW`bO-n$l$xa-^dx;L>=aaYGW({rng zGcSJ}OCv5*&}q^^$?WY+r)aBHw49~@;ro*t&dW><7GT#rMCHc7rFg}RywOrM{Gi(d6 zVa8jZ+O#g43hdtN?NIM(eff{~NKQZ|!}dYm(P)|ej=+1Be^X;<jnJdUjaHo$nwKMb)T9X7UaU^yNVzMx~h@K(v;GC8&j@(zY%Qp~X5 zZ+m~bPZQ~vt7Vp5a;xNUnH-yey!hvR|D5}kE#((%mfv$8$Ev_-<2>A$!?_E0ZMslb zi6xq;Gxf_QHXV~BN6x*wzd6dGC$tW1zU zr^-(e&i`46^LR=_=S@t|xe-6RSnLO8ueYBhEDqk1FfW0*sw6!Bb-e#WOz3arCps~D ze1g8)d0!A4(AYS5qZUSd`k3bjcSly>Unle4;^#k%zh-%$y$#g6uPu)K|DEURJRg4# z+8mvJ2(_xS7R8$&lWhwu$kL~^Z8=;`!dVk7wn%cW|*BPT!zK1ytJEP;}-|d2pDHr za&d4T=OKpK=Lh5&Hg#K&$72>bPY3%?@L11(!1ukRCK%5$hS|PvVVLdvFvBL@;&w*u ziD0MuJ|@#n_eqA?>3)=9<(CH2p=8YW-S%${!)*Ts7}gdK%G|}V6~TCpG3>G5HnKe@~k=_|&w^AeXi`|aSK7S0#_xY+rul3{i}Yh{>SzhoF@=fRx}3;D+| zJB^Mr%+7z4|K+4al(fA{KShw^8!_I7r#@EKe*CQBDjhw@kZ@2dtr^#*Ia zJot`i@`&m)Of1?iX1=C;ARD}Qk$QfXwdJ&9&aA;;^7_sctwqHMVQO8^dT@samCO>n z-`x2@UnbdE_msj)|7E+#>9_>+nRl3$!phqfPy7(?&h`am2Hpo)JkptY3iHHs;d$bO zxr9v=#)b%+ER2m1HdPoKBWya1nRAbET4-N?Z)eM@#x^oRUeX73p0M6km0u0^!rtwa2`d!$I27M;^JIWd=AL;)xmdX?t^}rrg(Ch zlMne=;-i;)<@Obb(wX=~o#{C;*)AxU_L-$eEtyb?8}q7(0+=c71$mqNdcu}@eQ``LaUt%M z_C5bNo`H0%P5z9EXWLCzOaF%tV;#dIDlUeHy0y9?Sy!D}iCymkr_E!I%R?&G13$;Q zEQ@FK70OHbam9=O0&Uz^g8HI(Lyst4{s&km{7>+P_bXlo_2DA_Y~H3)^>5s!jg|FEOGXB5!3n1#IsmAvd_D&WBJpy>f{cF+2=ZsGtAy2>kz~2 z_eZ?^(RtU!>`bh<;-4y;QD<87^XBbz=jUBh*_@`bSyQNN%Ja%A`mbNziK8tCuJBr0 zDq}Y06{8S#CF5ZZL4S7|)5kGhKG4_Kv$?&ugKVJ7mU-p6kjyLBDO0#e!}Bqp225>A z?}Mf$AbmFG6aDkpukchF)W<3`R^fSA2s6BrpQ*fC8QU%v>-=K!E}zfWin(bOnAZj@ zPH|D=-ZX@qLd;N4X6ajXxq2Sp82ZV?(O;|a9yXSq$5{G&HlAE857IN2^Bpx7)YZ6I za=1*+>-)N=Pp+Hiyf$D%_!u8JZ!hE7b9gFqzD$~@!+E?M(S8XW%P^ijj2Q9v70y zeHewE)A$rhTh1%nc$F}Dw;R)il{NlXD-|}N7W37D{ z!@D}Nk^8`ThZv7y?K0jJcrI`g7tZ5$QaU&j%J;f)%yIE$O5gQ-;dD>Wjr|!_-F0-D z7J~7{!OJs!u8x`WVeI{F`M|LlI5h`+JDndZTc*LI@44?B6Tr4GUNQgdbC&n{G94S6 zWEhndF7qhE>^d^>ZO=}}&hu*+X6N}`45RalRoTq;_4eF|7plFTn4aamzUH>@^dp|D zV-~}_ZHftxSuvhHmUocZlKXwFaCO?o`)?Ixka_5%h0FU4<566k@2d23k(Y>5%$C0I zcy@+jHpH;}4}$L)xbM_HaD8*ZtHQ_Rc^;Qx_%H@r4W?o(x2Ursjq#)8d};T@udz>Prf z#Nl>wTSk4%vGaB5gvSe|QIcVlMqJ-c$UK0Li8a?Z$ar0^#eAuEoh@w}M}8qrF+1&a z=Q24)<(A8=fW9<7g>2cwY@ziQu8vtAwh*V7Er)$f#*FiFz-I9&q;KnYJ()6|&f_YL z%D#+s6TVED&$xg48IRU?aE$wI&$r>2UH6PInNd7DPfRhM-6!Ju?0V4sp6@%&8FCIO z-z$HEHK<7U{IBmW7_)K4BRgHq8~?$rl2a^=xGluvu`Y)XUHF(Za&(>bitZx}HndD?W{XTVgLRR6}#?Ams0myQOldn3I=kk?NXFZWyQX>akcnJDIL zrBiFW+IulV-PxNpB>ZN)`QOJJ&x3wCtWO2?b;<*!6*thPT2E`Pmf1CfJf>_#Z3xuo zXEEPtKONRDuyRYV&pvJW&eNd}zU^iHaebvf3dW4;2~6L_%yX4Ec2zMmIY%_rHE7pL z^l!)M`l=ecpf3`?y<5<4RhM8L-`5m2j=1d6`V7WxAr4(;UY=#is>b?Ob%Xi&yO@}F zNu#c0WoXm^Zyr^L!svtf`;dms*?d&KNcH+m?A< zYb}Qz=f7g&_9w$KEna*cREMETB5?d;Riify-7UfHsmPxW^pbKY-HD03AT>gw|6 zY`PU^31MCy(!%63sdox8e;<~qd?&B%o_@%8sACIzexb^HzG<`6rF~O%7XEQb-yg&J zthkU5Oel!xXU=;z%yXE&#gC%>!^ik%$%M$)S7>|m7@71hRF335zk$9#hxNHyU&$kA zAD~OiQ)T*cwIA8kn|FxBGxrBD%NFv_Glt8Y{}`Sd@i9J3d_|R&N~GT;z9)UAtXMK@ znpQ1o@Nyw5e@87I$#8xP|K^yo;^+BFT{bIwGGft>BlRJVnw`I;M8}29+vkR5T6Q)q zd28*`)>N{(wNCMz8Q5~x33)B`%Nwg(S9x0~J1+6gJt0q5Us@OadJ4Q3pO9Bq-B{zt z6Ev52FAejYD^$9Vrfw4lk?vK0y5CDbQs7KPWw)gc}=i}y=!iVy( z4`g%Vo7ah#UlGP;ZkZ#TH7^$%&#Q3Gm%g1zx2vmC*_m0oL#&y#>}1#gumj9aB9Ba7 zC+@jAtS^;nsefB-)3Q{uwT@0LNUdCjc?~JqNKjnqQ;!eLZ#CyC9R1fz`aJtbJq?r_g8p!I^_XM+Yvg)$Z1ws;-fp{_Yg~0?59`Z{G;-7 z1^qMeu^nRYr>Y!znC4a9u|w>!FrK#YdOxIr0R?>*jn;3;;*^#ijGFRkk=)JH+BCocqWy zSM#QURi1G#&Z3j)E_r&N?p`c(!=8w~9VD~tud2QtSh!u3ANA|cx^F+1nAI5Fw;THC zH|0sH7t|im%bL*5QmbZCsv|)61m<+BEl}5W>!p#gv(y;~Gtf8g%XH-#T>Dg8Jmzc{ zrN77CefW^?bgl`H*}#7*TSx}&;cfao+P%QO*<>$$OgS=hvj=v*uG)?ZHXqLRkps9! zb1E)FU%|7C)vgSDLt%8^zMuJVq5q5Nb3X98YTHgy=NbE;@_h!rliwr@mpl_B%FfBN zRXp4N&vr4N*)sE;=L*)zbRX?eZtV2tNRT#snZUs2kyI(>E*%SsC-6ov9Wd7;hB3!$0@yI%NyRIJLR6dwrK*NuY10 zc|*`g94(RSlf>ZLu^?~3FR(TOANUZ@;fEa;lMZD^3dH(`O;RUeWrtK;$cFJ7M&$P- zi>|UK6gKrYy#IqP`i?NF=fzJHR{C$7#T3Kn9_Bl_z;X-r6VQp&f4v$a?CI_B7Tg!} zVdmFfJzp>`mAPet^tvy@Tw5JalGXKt=Mt4uzJIY_`aaP8QFF)>b5;tvhpyd>SMsCh z67h3XeVvECypOpb$GK3vOdmntjrepQwQ)3vSZrRps_R--ElJk5)i$J>nrkpf)x3NO z@rR#OK1`!-9ep}j9=N_i^b_fRx~T7#(RPZLqg|N}`fg%vmv?G#R1&SHGn`WGY4pum z-_-EDGOgE1P5(BW&s<&J3FCJ1x|QZ3xw<|R3$}|bu=7CMCk6Dx$q#M|JAsj)P@Xq+ z0qJvosmk;)WRg5d&~1S2gK0aW?ChfXlcQ&(e_$UQHk9*I5fAxy+eA zseDFxhx!@?^XHP~&7?P{^Vvw-cCpXTXR<#S(ASM!S%{#o(%&iHOJ2NP^jZG#^;}!O zaGw~#$Hc6Fe_l2X=jH&$MV*MED;uw!hDDN_vtxqEF z;uB$~pM{ye3^>z_=S(YGGO&~6aa#iZb@T?;a%-7+_(1YFkIO7Qg7<&;7&~>H9LO;1 z((UWB5a2SINpSWs-s~S#`c1>m9KI)gChrF9v{vX${L#`SUjFabPrv0ALU&xa~5`XfqOE(dp@jf--u=IfmKEY%fo6_VY}Lg zvVY*+nYI(=NFQP`<--)p%0it+GG-S(pBT=oxD3MXt(JcU^1MtUD%o7$e()Cm#`llM zWy^0>tVuVWQy=iJllD-NVUs_`9`@^=4#=Y~P1-tNRB0sOAL$|tm-Mf2TvSCNwC}O& zwu?GTre{lmMw$DdR6!YJ#Bip(vt0GBhhfWn?Vqtl#SDADu&#!w38VTU1%1$MG1phM zVMGi=r^!pMj>{x$q3^Y=GAy)i2QbEOE>)M{Tf$^qDkr zzogPAfoIV^jRBUnj56LX*inqP>xEB?v5=jz3l_3d$Fqy(&}I8>4h&EfjOS{VCt|0l zepVgQvqr}ZKFGF%r+ea>JEWatYh}!w%~CjRXXg5Sx1qmy{Uw+7FQ0x+#VmQrc5%@1 zU8O@||CA4P7(!3Av|fipC~In$Rj+DjC40ta{dA}}?&%}QA4ie(M`~U7#_nvFL`>Ss z@t2kcdfDX^~CRjX~g5w@HeGz3itVEp)r~DtSfm1tx zU!1q-bpIKlvN^bRr?1&BW5e;{V-R#M4VSt2X)pa8I){p5yuU;k#fLuT`N8bBoqOOB zdi3xv&ZDtr0?N<9{$Pj0`-55Uda4_*^TfzMTzW@)Y4{zA#amL{q6>@WQ;6U?x4C&wU+7Hocm&qRFni9)Pz1(palb};um{q?f960C ziuo{z@!Mip+jmfxvA7&WTxM9zEPZQxGB@jRBONp^mcLbUcsdl*mpNG67E!lMaGB0C zI2!^V)8<&V;Khw+iW7TJQqX@>Jv+pLd8!_yx@gzO-dN(~Rl0W}-ANwZhfC(cVs_el zzVmdT^y4yjLgqBH)7AQ>ppU+n+D@SFgmGaqEB=IcFZdLROQy3E6Y$L>v}cs>u{_RA z0_T6j7Kh2)1DS`5+tPta^qwiM=H-!Ji1WW;3zu2`ES~@HDH50NEbZ-tPFi0lH2+D( zr4Df+&i{rjT;_hrJQisSonq3Cv#)y{SKH#k7UFPQI97KIYaH+??%(z8+3vN9{;cwE z95RW+WjYMo4eU^)%nj`~Urzx;dDpze83U5TWpXSJd1cQ<+1cLP+pg=8W6I7v>?97C z=`gGY*p^6{ef{PYuB&-v&tQFkC6i;rz$TeY=Q(AI0FS;8*ut=*z)GHv@=w>%Bw$v_ zO#JCq$qC40*doYVQ(R_Od$vnckq(+S3_FR#WpZo)*jRCyoj3Kjr#+!BC_5)1lQ>+a z!?1(E=Kk6DJ&7%3o6z%EPA97`uWiK^xYaE!n*A3gbKp!!BulbCZcZ=1#c0Je! zo|fj=*aX9_jePN^47ui18w($0$fWCFzz22*9$N8&@ zOMKCG;mmsesXh_I5|@8QWPleb@3er`gvN0-ZwNAp!+qe`PGAQjWTsF%Zpdo(ab>4- z8J-O-nGVCIft9{c)J`0U;F;;TnwNo0;soquSOu_jahaG_!_I&Do3e8nGKs@wIt&{G zmSZxLm~GKhyKy}#;g&AU++Lb)&l=aQ{6dpNyh@AbvxdKT`kazv@wL?x?+!jY4W6N& z@nEdIFGm-XNf^@Kp^x`I=hDj($IiJdk;89;nP;xj-`yl|tK63(gzZ)DXlc(5p~q=Q zUb9`aeLFaxw(A-7e4BqQ%7eCrWYJakyut=9#~9sTmG1`QapC2`_ODL!NS=*#L|`t% zXulG!Z+8SX9)TT-z{-yMX>0HGQ4@iQ2y9CPHq0=44~=~h7>~8hI~u{8`*+{Je|BFE zzJG|F&;H-Q_}&e+zLUjNTSc4Tr>a|9)j9#ngLLt{bl@MsxX5|bOPd;+ny%%S2#1 zBQQH(N2LR|bNZiH|kIMDhNgVp0A@VaA72)^^yo zaBNzS`FB-q7gai+(fxD{p0393E35I2Z;opJ4CX#RPtZMypWG;hUv;NAiVv_jeMk4u z$JoN-8HJ54s1~3(gG;uHE=ynR9A!&M_jWO5VI>!;GbP$?K>KH5Q!i1xnGD*$Q-VGW zEL7M?AL;@N8^1(h zqwk+BxBp*~S*&c*UP&BVc)FjLY^*W@+sQEd8DTU6<9UL3Clj-iNq1hC+cHlU<8k43 z+Vxp7;u$DyVN}l~H?)bDp7LksH2TLWkw58&d+u3+epg=9Ck9{Roj0MLr~jeq^2{Hz zqQW{KD6n2szCK*mP`$i`M9FLV#a|MK-V$D;N#JBH)~_VOYetIsPW#0!Pt~`imNwVc z;6+V+bp!tP$4WZauTS;Jvu-e6+JmJdY*jL?nS5JA{gTwurj^O&+Lo54W^dW#a<$sk zf|dR9=lr*cyIU>_trc3IdPlnZdU;eK79?hSdYQtIHYTp?MW+a-Z=txP^`g+8?;##@ zFhe}&5^;9{-g>+WO=GbPMnt_+3yjL;Z-bdjaiF5Il0Tw5vOlOgY~uT^WkeT=0Nch|e6yiPQZNA_LDdi_Y@vC33hW?e2l(g`I`3Pz9B0U4nx`P$hvgW7KZ#g+c%Ib%DcYY7QHbE$9q zd5+G*+V|(MAK)*%=P^~L8MbBKUa<>48au=J+J8;tYF@r(yX0t{QYOd7Aa91rEatnt z&t81KAM2ql!Tr7a7&duh@O&U%N0Lmhyw}u*O1vp68`t%)5^JJ|v_n3uO<$x<_UlMq zPjIn@nM6I&c~`ie(0RTP#TlWpGWQbkYw+en5Px4>fM<%BGfKQo3q|MM1$b26YdYx& z)li9-^`|ViVRL4w{GA3{Ak#i?VvO{C{36jg62`^}I|DpmwhyYT6gDP#n(EI}{A%*S z`B`!OoKv!FyQnx@<%u~u(6ZbX7KuFr^nAA#JX>72S1iT{yg1Emin7HyMYVs^@jlV; z`a4AzKE#u23g@XcX_Jsi^0XPT%IeowI}96yorm!;Jf7z@$D4!fjH|LKYO&w8U%#lb z$*?5km7fzTn;k55>0n+dKKX^Eg8rC!>YbuQ%QP`_wam&otbv0(x(}Ds$L-|hh{_-5 zHGnt5Y>MA+V zYC2BH7Dk;WA1=B?oO6HJ77{#E^+j>P_y3^J7xn8G%ND<31ZRe1z65cBOgk=_7pZbI zTaV{(owg?3#WSjHB)wbC4VI(PvlXutykQF~mM4a-Gb|=GkK{X_O$g^7D%J_aI`)P; zMIAn{B~EZE5YQwhXZs5$A|T9LQ+CEyVE(*i=ghf&9kS-UpnrqsE3EGSviCONaa`ru z@WdFRfCC#ape9bd5QhkGV2KS;5(iecWUq)UZDiR|f~k%y$(F)e+Q{ozP7E14#!{#Y z0t~3c0R`MdfK8TQK!5=i45+PX#aq*g7qu1CP*L2Xwx$Sb+V6hOIWy;(GqWRwpZD$e zUEf^S>Syn{pTF~*pP4!540wGO7N?KwqRia--D(E#y!qbznyU0d3@l$ zFXOyL!M&#{8D_r&fww&oV;m(Tk5TA*$(pAx zw%gr|8Ha@C(6uuxl-DeGZJ86e4$!v9`mV1!=s8dAT5Q|Ug17S0bqJl4-kp`_78@QG z?a3$Q-(H`?V|}4b?V&*&aosJVWnB+mf6ySC9xv0MOyz1`>UzxWw`6kc9I$0q89RA>C?7Cw*7&s;Phca5ZEY=h5oj-M!ndny zM{i+gYo9ch^F|;~eu*D_i%Y+AkFJ@W|5m;a!%nh8^OWxls|0qM*-7UO_unbDzdxbx zE1LSpZQ*^fJ@==4nXfN2M=8g!`Q|9O+Rg#YYbG1H4<&8EJsr-Q25$g5y>TnaXkM{M z+_1A=i!)<(_tjN`zH}>)pW05Z9jttr8K2Er*s#WC!CQK@veV;{yrBt4yyK|XOwAw9 zk&2BXf4$L{vSdy&?4X62dH(WdY75_tZC0=0n0W=pAr_CvGjomdfzCTM^Euq7^>(P! zGTCNqgU`QPkdMu;#Pv#y%%fT+oj3J2VVPKLmwPX5#`4>ToYQ~9L}Av^l_O*EtAe$44H2CWrFM}e`ijV=RY7W{B+Q-w?!?p6Z5mu znimz9#V=8Dq4SnR#5%Bv+ly3OCUNeO7@2FdOggUuvCe8<2J^vYVt9j^N9RpP$r}%ekrHKp?wl=Z{@_$49QdeSzJx4WD-`r*gL(iN&NF1Chw zylv%qW{)+Z^m*+k=N*JD8BqM7KGo*&HZpbHZT`8lHR@V4DnB#V8JSV#z}rD?3-^J> zJ+>`;GsHj{nPm~u6`RM~Ggp^U9%V#vmIRD<2Sqs6d~->$ty!HrSP&PgOZ(1!h>9m~ z&r10o6*JyuaUbg7!zkj7a!4Njcs`V8yv;H(Yol4qUEB9+@A1oyS)g6I@ebwtYu+I) z7N3-Vd*x0N#8oFn`U_V$>N_=d8@~5VX=kyj57US>*+}Q&NK9-C$C|fUrQ#A5Pu?z- z;!!-gE&E<}T&%cW$Lx+B=``|QTDA)Jf^?hZ`DbEA)48|x^yE5dIiWmUNBK9=c}R|* z_1AI`Tgn#lp%g}Ta+zmff z;Mgdzab}B=8F-wb1TRuDlb8!f9QCETrYz-yEF;D{2i~%m8{fnF%o?$lb-CRI>}s>N zqqFtCuAbe!)g9PMRNd(1`nJB-w?)pA>%4x0w5@Cpd|#w6uiO)_R9LbP>lk1M`QTw( zCa>=_S0(lEo$}ndcNau5rR43>JO zv6JS)IlXFZ+V`HEIEJz57(R$ul6>So)LA@^9kj6KTGQtgOgu?sK<2Q;<1$ahV3RS} zg&2&NyFCwZ#420L8~Q9{F4h0n=FknctA2Chk%Abh_3MLk$$i0Vr^2`2ClDfeP<=?e zPPNJTy|^xjsec!>Op;Ig9?agNcw_qy32{TP-lkr!u)#xk{%2u4UwGNtb#p@V$WR+Q zAA^;>%G4Em9mfqanLH*T;HUHdA={C4~U&J`%m`@iWRNL^JIGE&Uq7WP;FiFBbY;A zwRJ6dTEy5wFO|T{)7oz&dEUW&NURF_=M+@`-u%H1aq!;Yvn9?OwRn?N%9epgaZgpp zg>0vzyhdS}5923fu&;~&9V49m{hZXN57VgFAHb9O0g_5|*=tyVHU|N8c5-%sM6 znT5^lRoL7&u@9DoHSbec;!n}XSs3?$=dRrcaBO6EaNgmNmPs+Rc@r_%`53Is8hdj) zSHxgx3v+c2X5W{StVzr;yC`o9pVNM6~hxSwSB97r!o;FI=WR z-J$bn-#fL3l-X`AVvj5XdSv_#$h^tqJk9$J*~#`e=IFHAL_N))- zW96s(qbV_JtFNy6JA5xfJXS^_jKz9X&&M1=44bW3FEpMzJFsa=+b-XhiZWFff9m_{d4J}_gHj%J(Gh#Ut^#uoOXboa%|~Q1 z1#CRY?A%a`eS^BN74hE9-93A{JKEXY!w5UuJFow zUfG)CVkexolr47o4T2*j;)m_SIfjuBrDRgMN5s?Y zjq?MQXNeu?SBy;QgTt@_uw}1*`aU#)F(0FH zcm6?@-zaP$U7Gis`OakKAajcO;A(6Z`sjPEk7KFyaZ!iQyuLpx_&(@^;Aoj4-zOOs zm-F(S3g>iOus1K+!R_={BGT@H_jj~(_Z0l+OQp(a-h5&DI-&0ZKA!Kc#+tFWD}B#x z;aGdsapB_Q@k-e;i}g1g8wE$p48?58T7$*Kteo~8{-KIl2ID8PgWJjV@wzf^T$s$G zkXZqHJpWvcm2JZ{rLj}BpA6dvY>4qn*)sI(U|c4Q%urlbm@$zP7Z*83e(@DD7WsDE zi#0N1>zHgq81E!_Y3THPS8ehx?92dv0sI_1jF z6vlk?Jug3wodHH;LeG|x@%&Y=T{`~t$32;$cgL>5SW)Y9?Dt5I>+2Q5>0QyTe%6}J zVO|8D8){x`JZUVPS1Sy4T8%&44Kmlfyqn6518pWKs~$z1)-$Hf@rMwbIj@!vceya&N!=KP?vzPU7VSL+j( z?G;Nm92axY8Lf|eX9~-d@0GoWBxfOII}u}xsN#F_w97Dcy`8lf&4^&WXe{SQK9!fZ4LcertECSoD8xvP8DzGM|4DG~#d8cB`f3m>Z70otvE~J7J1g<*x?p6gu?EAozWy<>tS+kDrA(BO z_7K0^tCjB~kV%|{_&(pfATF~KGV>*ELG#J`={dFLwfuhU8@fPStNUDE?2h9!4~2y)E3S=2HsRjeZjuCRDGDY{F2Jf z&Ij;JqyD&9z4QI0{bSvq`x3>Q1dlii^{c012J;r>`Rb`8ukjLmAwH}@RDc%vp%2q4h_y+Vj7Ut@`Fp`i-`(Q|6n3_&|XvlT* z+16e>Vh=9-$4Rsvy#(ZpyjJO(yaUe|EPZ`?P88{BZVcMV>*nHp{Rb<&rswGopK<66z)aa*!Y z%0D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 z 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 F?| + * Based on clutter-list-model.c + * Copyright (C) 2006 OpenedHand, by + * Matthew Allum + * Neil Jagdish Patel + * Emmanuele Bassi + */ + +/* + README + + This is a ClutterModel subclass to proxy GObjects, instead of holding the + data itself, like ClutterListModel. The model has to be constructed so that + the object is held by column #0. All other colums can be mapped to the + objects' properties in any desired order. +*/ + +#include "foo-object-store.h" + +typedef struct FooObjectStoreIter_ FooObjectStoreIter; + +static void +foo_object_store_object_property_notify (GObject *object, + GParamSpec *pspec, + FooObjectStore *self); + +static void +foo_object_store_detach_object (FooObjectStore *self, + GObject *object); + +static void +foo_object_store_attach_object (FooObjectStore *self, + GObject *object); + +/* + * FooObjectStore declaration. + */ + +G_DEFINE_TYPE (FooObjectStore, foo_object_store, CLUTTER_TYPE_MODEL) + +#define GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), FOO_TYPE_OBJECT_STORE, FooObjectStorePrivate)) + +typedef struct +{ + GSequence *sequence; + FooObjectStoreIter *cached_iter; +} FooObjectStorePrivate; + +/* + * FooObjectStoreIter. + */ + +#define FOO_TYPE_OBJECT_STORE_ITER foo_object_store_iter_get_type() + +#define FOO_OBJECT_STORE_ITER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FOO_TYPE_OBJECT_STORE_ITER, FooObjectStoreIter)) + +#define FOO_OBJECT_STORE_ITER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + FOO_TYPE_OBJECT_STORE_ITER, FooObjectStoreIterClass)) + +#define FOO_IS_OBJECT_STORE_ITER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FOO_TYPE_OBJECT_STORE_ITER)) + +#define FOO_IS_OBJECT_STORE_ITER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FOO_TYPE_OBJECT_STORE_ITER)) + +#define FOO_OBJECT_STORE_ITER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + FOO_TYPE_OBJECT_STORE_ITER, FooObjectStoreIterClass)) + +struct FooObjectStoreIter_ { + ClutterModelIter parent; + GSequenceIter *seq_iter; /* NULL means it's the end iter. */ +}; + +typedef struct { + ClutterModelIterClass parent; +} FooObjectStoreIterClass; + +GType foo_object_store_iter_get_type (void) G_GNUC_CONST; + +G_DEFINE_TYPE (FooObjectStoreIter, foo_object_store_iter, CLUTTER_TYPE_MODEL_ITER) + +static void +foo_object_store_iter_get_value (ClutterModelIter *iter, + guint column, + GValue *value) +{ + FooObjectStoreIter *self; + GObject *object; + const gchar *name; + + g_return_if_fail (FOO_IS_OBJECT_STORE_ITER (iter)); + g_return_if_fail (value); + + self = FOO_OBJECT_STORE_ITER (iter); + if (!self->seq_iter) + return; + object = g_sequence_get (self->seq_iter); + + if (column == 0) + { + g_value_set_object (value, object); + } + else + { + name = clutter_model_get_column_name (clutter_model_iter_get_model (iter), + column); + g_object_get_property (object, name, value); + } +} + +static void +foo_object_store_iter_set_value (ClutterModelIter *iter, + guint column, + const GValue *value) +{ + FooObjectStoreIter *self; + ClutterModel *model; + GObject *object; + + g_return_if_fail (FOO_IS_OBJECT_STORE_ITER (iter)); + g_return_if_fail (value); + + self = FOO_OBJECT_STORE_ITER (iter); + model = clutter_model_iter_get_model (iter); + object = g_sequence_get (self->seq_iter); + + if (column == 0) + { + /* Set "master" column. NULL is legal since append() does an empty row. */ + if (object) + { + foo_object_store_detach_object (FOO_OBJECT_STORE (model), object); + g_object_unref (object); + } + + object = g_value_get_object (value); + g_sequence_set (self->seq_iter, g_object_ref (object)); + + /* Hook up "changed" notifications for the object's properties. */ + foo_object_store_attach_object (FOO_OBJECT_STORE (model), object); + } + else if (object) + { + const gchar *name = clutter_model_get_column_name (model, column); + g_object_set_property (object, name, value); + } + else + { + g_warning ("%s Cannot set column %d on NULL object", + G_STRLOC, + column); + } +} + +static gboolean +foo_object_store_iter_is_first (ClutterModelIter *iter) +{ + FooObjectStoreIter *self; + ClutterModel *store; + FooObjectStorePrivate *priv; + FooObjectStoreIter *cached_iter; + gboolean is_seq_first; + gboolean is_first = TRUE; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE_ITER (iter), FALSE); + + self = FOO_OBJECT_STORE_ITER (iter); + store = clutter_model_iter_get_model (iter); + priv = GET_PRIVATE (store); + cached_iter = priv->cached_iter; + + /* Go backwards from iter looking for non-filtered rows. */ + for (is_seq_first = g_sequence_iter_is_begin (self->seq_iter), + cached_iter->seq_iter = g_sequence_iter_prev (self->seq_iter); + !is_seq_first; + is_seq_first = g_sequence_iter_is_begin (cached_iter->seq_iter), + cached_iter->seq_iter = g_sequence_iter_prev (cached_iter->seq_iter)) + { + if (clutter_model_filter_iter (store, CLUTTER_MODEL_ITER (cached_iter))) + { + is_first = FALSE; + break; + } + } + + return is_first; +} + +static gboolean +foo_object_store_iter_is_last (ClutterModelIter *iter) +{ + g_return_val_if_fail (FOO_IS_OBJECT_STORE_ITER (iter), TRUE); + g_return_val_if_fail (FOO_OBJECT_STORE_ITER (iter)->seq_iter, TRUE); + + return g_sequence_iter_is_end (FOO_OBJECT_STORE_ITER (iter)->seq_iter); +} + +static ClutterModelIter * +foo_object_store_iter_next (ClutterModelIter *iter) +{ + FooObjectStoreIter *self; + ClutterModel *store; + guint row; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE_ITER (iter), NULL); + + self = FOO_OBJECT_STORE_ITER (iter); + store = clutter_model_iter_get_model (iter); + row = clutter_model_iter_get_row (iter); + + if (clutter_model_get_filter_set (store)) + { + /* Look for next non-filtered row. */ + for (self->seq_iter = g_sequence_iter_next (self->seq_iter); + !g_sequence_iter_is_end (self->seq_iter); + self->seq_iter = g_sequence_iter_next (self->seq_iter)) + { + if (clutter_model_filter_iter (store, iter)) + { + g_object_set (iter, "row", row + 1, NULL); + /* self->seq_iter already points to the correct row. */ + break; + } + } + } + else if (!g_sequence_iter_is_end (self->seq_iter)) + { + g_object_set (iter, "row", row + 1, NULL); + self->seq_iter = g_sequence_iter_next (self->seq_iter); + } + + return iter; +} + +static ClutterModelIter * +foo_object_store_iter_prev (ClutterModelIter *iter) +{ + FooObjectStoreIter *self; + ClutterModel *store; + guint row; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE_ITER (iter), NULL); + + self = FOO_OBJECT_STORE_ITER (iter); + store = clutter_model_iter_get_model (iter); + row = clutter_model_iter_get_row (iter); + + if (clutter_model_get_filter_set (store)) + { + /* Look for prev non-filtered row. */ + for (self->seq_iter = g_sequence_iter_prev (self->seq_iter); + !g_sequence_iter_is_begin (self->seq_iter); + self->seq_iter = g_sequence_iter_next (self->seq_iter)) + { + if (clutter_model_filter_iter (store, iter)) + { + g_object_set (iter, "row", row - 1, NULL); + /* self->seq_iter already points to the correct row. */ + break; + } + } + } + else if (!g_sequence_iter_is_begin (self->seq_iter)) + { + g_object_set (iter, "row", row - 1, NULL); + self->seq_iter = g_sequence_iter_prev (self->seq_iter); + } + + return iter; +} + +static ClutterModelIter * +foo_object_store_iter_copy (ClutterModelIter *iter) +{ + FooObjectStoreIter *self; + ClutterModelIter *copy; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE_ITER (iter), NULL); + + self = FOO_OBJECT_STORE_ITER (iter); + copy = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", clutter_model_iter_get_model (iter), + "row", clutter_model_iter_get_row (iter), + NULL); + + /* this is safe, because the seq_iter pointer on the passed + * iterator will be always be overwritten in ::next or ::prev */ + FOO_OBJECT_STORE_ITER (copy)->seq_iter = self->seq_iter; + + return copy; +} + +static void +foo_object_store_iter_class_init (FooObjectStoreIterClass *klass) +{ + ClutterModelIterClass *iter_class = CLUTTER_MODEL_ITER_CLASS (klass); + + iter_class->get_value = foo_object_store_iter_get_value; + iter_class->set_value = foo_object_store_iter_set_value; + iter_class->is_first = foo_object_store_iter_is_first; + iter_class->is_last = foo_object_store_iter_is_last; + iter_class->next = foo_object_store_iter_next; + iter_class->prev = foo_object_store_iter_prev; + iter_class->copy = foo_object_store_iter_copy; +} + +static void +foo_object_store_iter_init (FooObjectStoreIter *iter) +{ + iter->seq_iter = NULL; +} + +/* + * FooObjectStore. + */ + +static void +foo_object_store_finalize (GObject *gobject) +{ + FooObjectStorePrivate *priv = GET_PRIVATE (gobject); + + g_sequence_free (priv->sequence); + priv->sequence = NULL; + + G_OBJECT_CLASS (foo_object_store_parent_class)->finalize (gobject); +} + +static void +_detach_if_non_null (GObject *object, + FooObjectStore *self) +{ + if (G_IS_OBJECT (object)) + foo_object_store_detach_object (self, object); +} + +static void +foo_object_store_dispose (GObject *gobject) +{ + FooObjectStorePrivate *priv = GET_PRIVATE (gobject); + + g_sequence_foreach_range (g_sequence_get_begin_iter (priv->sequence), + g_sequence_get_end_iter (priv->sequence), + (GFunc) _detach_if_non_null, + gobject); + + g_sequence_remove_range (g_sequence_get_begin_iter (priv->sequence), + g_sequence_get_end_iter (priv->sequence)); + + if (priv->cached_iter) + { + g_object_unref (priv->cached_iter); + priv->cached_iter = NULL; + } + + G_OBJECT_CLASS (foo_object_store_parent_class)->dispose (gobject); +} + +static ClutterModelIter * +foo_object_store_get_iter_at_row (ClutterModel *self, + guint row) +{ + FooObjectStorePrivate *priv; + FooObjectStoreIter *cached_iter; + FooObjectStoreIter *iter = NULL; + gint r = -1; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE (self), NULL); + + priv = GET_PRIVATE (self); + cached_iter = priv->cached_iter; + + /* Work the cached iter to defer object instantiation until success. */ + if (clutter_model_get_filter_set (self)) + { + /* Count matching rows. */ + for (cached_iter->seq_iter = g_sequence_get_begin_iter (priv->sequence); + !g_sequence_iter_is_end (cached_iter->seq_iter); + cached_iter->seq_iter = g_sequence_iter_next (cached_iter->seq_iter)) + { + if (clutter_model_filter_iter (self, CLUTTER_MODEL_ITER (cached_iter))) + { + r++; + if ((unsigned) r == row) + break; + } + } + } + else + { + r = row; + cached_iter->seq_iter = g_sequence_get_iter_at_pos (priv->sequence, row); + } + + if (r > -1) + { + iter = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", self, + "row", r, + NULL); + iter->seq_iter = cached_iter->seq_iter; + } + + return (ClutterModelIter *) iter; +} + +static ClutterModelIter * +foo_object_store_insert_row (ClutterModel *self, + gint index_) +{ + FooObjectStorePrivate *priv; + FooObjectStoreIter *iter; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE (self), NULL); + + priv = GET_PRIVATE (self); + iter = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", self, + NULL); + + if (index_ < 0) + { + iter->seq_iter = g_sequence_append (priv->sequence, NULL); + g_object_set (iter, + "row", g_sequence_get_length (priv->sequence) - 1, + NULL); + } + else + { + GSequenceIter *seq_iter; + seq_iter = g_sequence_get_iter_at_pos (priv->sequence, index_); + iter->seq_iter = g_sequence_insert_before (seq_iter, NULL); + g_object_set (iter, + "row", index_, + NULL); + } + + return CLUTTER_MODEL_ITER (iter); +} + +static void +foo_object_store_remove_row (ClutterModel *self, + guint row) +{ + FooObjectStorePrivate *priv; + FooObjectStoreIter *iter; + + g_return_if_fail (FOO_IS_OBJECT_STORE (self)); + + priv = GET_PRIVATE (self); + iter = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", self, + "row", row, + NULL); + iter->seq_iter = g_sequence_get_iter_at_pos (priv->sequence, row); + + /* the actual row is removed from the sequence inside + * the ::row-removed signal class handler, so that every + * handler connected to ::row-removed will still get + * a valid iterator, and every signal connected to + * ::row-removed with the AFTER flag will get an updated + * store */ + g_signal_emit_by_name (self, "row-removed", iter); + g_object_unref (iter); +} + +typedef struct +{ + ClutterModel *store; + const gchar *property_name; + ClutterModelSortFunc func; + gpointer data; +} SortClosure; + +static gint +sort_store_default (gconstpointer a, + gconstpointer b, + gpointer data) +{ + SortClosure *closure = data; + GValue p1 = { 0, }; + GValue p2 = { 0, }; + + if (a == NULL && b == NULL) + return 0; + else if (a == NULL) + return -1; + else if (b == NULL) + return 1; + + g_object_get_property (G_OBJECT (a), closure->property_name, &p1); + g_object_get_property (G_OBJECT (b), closure->property_name, &p2); + + return closure->func (closure->store, &p1, &p2, closure->data); +} + +static void +foo_object_store_resort (ClutterModel *self, + ClutterModelSortFunc func, + gpointer data) +{ + FooObjectStorePrivate *priv; + SortClosure closure; + gint column; + + g_return_if_fail (FOO_IS_OBJECT_STORE (self)); + + priv = GET_PRIVATE (self); + column = clutter_model_get_sorting_column (self); + + closure.store = self; + closure.property_name = clutter_model_get_column_name (self, column); + closure.func = func; + closure.data = data; + + g_sequence_sort (priv->sequence, sort_store_default, &closure); +} + +static void +foo_object_store_row_removed (ClutterModel *self, + ClutterModelIter *iter_) +{ + FooObjectStoreIter *iter; + GObject *object; + + iter = FOO_OBJECT_STORE_ITER (iter_); + object = g_sequence_get (iter->seq_iter); + + if (G_IS_OBJECT (object)) + { + foo_object_store_detach_object (FOO_OBJECT_STORE (self), object); + g_object_unref (object); + } + + g_sequence_remove (iter->seq_iter); +} + +static void +foo_object_store_class_init (FooObjectStoreClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ClutterModelClass *store_class = CLUTTER_MODEL_CLASS (klass); + + g_type_class_add_private (klass, sizeof (FooObjectStorePrivate)); + + gobject_class->dispose = foo_object_store_dispose; + gobject_class->finalize = foo_object_store_finalize; + + store_class->get_iter_at_row = foo_object_store_get_iter_at_row; + store_class->insert_row = foo_object_store_insert_row; + store_class->remove_row = foo_object_store_remove_row; + store_class->resort = foo_object_store_resort; + + store_class->row_removed = foo_object_store_row_removed; +} + +/* + * The destroy function is called regardless of NULL data. + */ +static void +_unref_if_non_null (GObject *object) +{ + if (G_IS_OBJECT (object)) + g_object_unref (object); +} + +static void +foo_object_store_init (FooObjectStore *self) +{ + FooObjectStorePrivate *priv = GET_PRIVATE (self); + + priv->sequence = g_sequence_new ((GDestroyNotify) _unref_if_non_null); + priv->cached_iter = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", self, + NULL); +} + +ClutterModel * +foo_object_store_new (guint n_columns, + ...) +{ + ClutterModel *self; + GType types[n_columns]; + const gchar *names[n_columns]; + guint i; + va_list args; + + g_return_val_if_fail (n_columns > 0, NULL); + + self = g_object_new (FOO_TYPE_OBJECT_STORE, NULL); + + va_start (args, n_columns); + + for (i = 0; i < n_columns; i++) + { + types[i] = va_arg (args, GType); + names[i] = va_arg (args, gchar *); + } + + va_end (args); + + clutter_model_set_types (self, n_columns, types); + clutter_model_set_names (self, n_columns, names); + + return self; +} + +static void +foo_object_store_object_property_notify (GObject *object, + GParamSpec *pspec, + FooObjectStore *self) +{ + FooObjectStorePrivate *priv = GET_PRIVATE (self); + GSequenceIter *seq_iter; + FooObjectStoreIter *iter; + GSequenceIter *notify_seq_iter = NULL; + + /* Find corresponding row of changed object. */ + for (seq_iter = g_sequence_get_begin_iter (priv->sequence); + !g_sequence_iter_is_end (seq_iter); + seq_iter = g_sequence_iter_next (seq_iter)) + { + if (object == g_sequence_get (seq_iter)) + { + notify_seq_iter = seq_iter; + break; + } + } + + g_return_if_fail (notify_seq_iter); + + iter = g_object_new (FOO_TYPE_OBJECT_STORE_ITER, + "model", self, + NULL); + iter->seq_iter = notify_seq_iter; + g_signal_emit_by_name (self, "row-changed", iter); + g_object_unref (iter); +} + +static void +foo_object_store_attach_object (FooObjectStore *self, + GObject *object) +{ + guint n_columns; + const gchar *column_name; + gchar *signal_name; + guint i; + + /* Start at column 1 because 0 hold the actual object. */ + n_columns = clutter_model_get_n_columns (CLUTTER_MODEL (self)); + for (i = 1; i < n_columns; i++) + { + column_name = clutter_model_get_column_name (CLUTTER_MODEL (self), i); + signal_name = g_strdup_printf ("notify::%s", column_name); + g_signal_connect (object, + signal_name, + G_CALLBACK (foo_object_store_object_property_notify), + self); + g_free (signal_name); + } +} + +static void +foo_object_store_detach_object (FooObjectStore *self, + GObject *object) +{ + g_signal_handlers_disconnect_by_func (object, + foo_object_store_object_property_notify, + self); +} + +void +foo_object_store_foreach_unfiltered (FooObjectStore *self, + ClutterModelForeachFunc func, + gpointer user_data) +{ + FooObjectStorePrivate *priv; + GSequenceIter *seq_iter; + + g_return_if_fail (FOO_IS_OBJECT_STORE (self)); + g_return_if_fail (func); + + priv = GET_PRIVATE (self); + + for (seq_iter = g_sequence_get_begin_iter (priv->sequence); + !g_sequence_iter_is_end (seq_iter); + seq_iter = g_sequence_iter_next (seq_iter)) + { + priv->cached_iter->seq_iter = seq_iter; + if (!func ((ClutterModel *) self, + (ClutterModelIter *) priv->cached_iter, + user_data)) + { + break; + } + } +} + +gint +foo_object_store_remove (FooObjectStore *self, + GObject *object) +{ + FooObjectStorePrivate *priv; + GSequenceIter *seq_iter; + gint row = -1; + + g_return_val_if_fail (FOO_IS_OBJECT_STORE (self), FALSE); + g_return_val_if_fail (G_IS_OBJECT (object), FALSE); + + priv = GET_PRIVATE (self); + + for (seq_iter = g_sequence_get_begin_iter (priv->sequence); + !g_sequence_iter_is_end (seq_iter); + seq_iter = g_sequence_iter_next (seq_iter)) + { + GObject *o = g_sequence_get (seq_iter); + row++; + if (o == object) + { + foo_object_store_remove_row (CLUTTER_MODEL (self), row); + break; + } + } + + return row; +} + diff --git a/object-store/foo-object-store.h b/object-store/foo-object-store.h new file mode 100644 index 0000000..39f65b4 --- /dev/null +++ b/object-store/foo-object-store.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2010, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + * Author: Rob Staudinger + */ + +#ifndef FOO_OBJECT_STORE_H +#define FOO_OBJECT_STORE_H + +#include +#include + +G_BEGIN_DECLS + +#define FOO_TYPE_OBJECT_STORE foo_object_store_get_type() + +#define FOO_OBJECT_STORE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + FOO_TYPE_OBJECT_STORE, FooObjectStore)) + +#define FOO_OBJECT_STORE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + FOO_TYPE_OBJECT_STORE, FooObjectStoreClass)) + +#define FOO_IS_OBJECT_STORE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + FOO_TYPE_OBJECT_STORE)) + +#define FOO_IS_OBJECT_STORE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + FOO_TYPE_OBJECT_STORE)) + +#define FOO_OBJECT_STORE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + FOO_TYPE_OBJECT_STORE, FooObjectStoreClass)) + +typedef struct FooObjectStore_ FooObjectStore; +typedef struct FooObjectStoreClass_ FooObjectStoreClass; + +struct FooObjectStore_ { + ClutterModel parent; +}; + +struct FooObjectStoreClass_ { + ClutterModelClass parent; +}; + +GType foo_object_store_get_type (void) G_GNUC_CONST; + +ClutterModel * foo_object_store_new (guint n_columns, + ...); + +void foo_object_store_foreach_unfiltered (FooObjectStore *self, + ClutterModelForeachFunc func, + gpointer user_data); + +gint foo_object_store_remove (FooObjectStore *self, + GObject *object); + +G_END_DECLS + +#endif /* FOO_OBJECT_STORE_H */ diff --git a/object-store/foo-test-object.c b/object-store/foo-test-object.c new file mode 100644 index 0000000..e3fd109 --- /dev/null +++ b/object-store/foo-test-object.c @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2010, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + * Author: Rob Staudinger + */ + +#include "foo-test-object.h" + +G_DEFINE_TYPE (FooTestObject, foo_test_object, G_TYPE_OBJECT) + +#define GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), FOO_TYPE_TEST_OBJECT, FooTestObjectPrivate)) + +enum +{ + PROP_0, + PROP_NUMBER, + PROP_TEXT +}; + +typedef struct +{ + int number; + char *text; +} FooTestObjectPrivate; + +static void +_get_property (GObject *object, + unsigned property_id, + GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + case PROP_NUMBER: + g_value_set_int (value, + foo_test_object_get_number ( + FOO_TEST_OBJECT (object))); + break; + case PROP_TEXT: + g_value_set_string (value, + foo_test_object_get_text ( + FOO_TEST_OBJECT (object))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +_set_property (GObject *object, + unsigned property_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + case PROP_NUMBER: + foo_test_object_set_number (FOO_TEST_OBJECT (object), + g_value_get_int (value)); + break; + case PROP_TEXT: + foo_test_object_set_text (FOO_TEST_OBJECT (object), + g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +_finalize (GObject *object) +{ + G_OBJECT_CLASS (foo_test_object_parent_class)->finalize (object); +} + +static void +foo_test_object_class_init (FooTestObjectClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (FooTestObjectPrivate)); + + object_class->get_property = _get_property; + object_class->set_property = _set_property; + object_class->finalize = _finalize; + + g_object_class_install_property (object_class, + PROP_NUMBER, + g_param_spec_int ("number", "", "", + G_MININT32, G_MAXINT32, 0, + G_PARAM_READWRITE)); + + g_object_class_install_property (object_class, + PROP_TEXT, + g_param_spec_string ("text", "", "", + NULL, + G_PARAM_READWRITE)); +} + +static void +foo_test_object_init (FooTestObject *self) +{ +} + +FooTestObject * +foo_test_object_new (void) +{ + return g_object_new (FOO_TYPE_TEST_OBJECT, NULL); +} + +int +foo_test_object_get_number (FooTestObject *self) +{ + FooTestObjectPrivate *priv = GET_PRIVATE (self); + + g_return_val_if_fail (FOO_IS_TEST_OBJECT (self), 0); + + return priv->number; +} + +void +foo_test_object_set_number (FooTestObject *self, + int number) +{ + FooTestObjectPrivate *priv = GET_PRIVATE (self); + + g_return_if_fail (FOO_IS_TEST_OBJECT (self)); + + if (number != priv->number) + { + priv->number = number; + + g_object_notify (G_OBJECT (self), "number"); + } +} + +char const * +foo_test_object_get_text (FooTestObject *self) +{ + FooTestObjectPrivate *priv = GET_PRIVATE (self); + + g_return_val_if_fail (FOO_IS_TEST_OBJECT (self), NULL); + + return priv->text; +} + +void +foo_test_object_set_text (FooTestObject *self, + char const *text) +{ + FooTestObjectPrivate *priv = GET_PRIVATE (self); + + g_return_if_fail (FOO_IS_TEST_OBJECT (self)); + + if (0 != g_strcmp0 (text, priv->text)) + { + if (priv->text) + { + g_free (priv->text); + priv->text = NULL; + } + + if (text) + { + priv->text = g_strdup (text); + } + + g_object_notify (G_OBJECT (self), "text"); + } +} diff --git a/object-store/foo-test-object.h b/object-store/foo-test-object.h new file mode 100644 index 0000000..5c53e3d --- /dev/null +++ b/object-store/foo-test-object.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + * Author: Rob Staudinger + */ + +#ifndef FOO_MODEL_OBJECT_H +#define FOO_MODEL_OBJECT_H + +#include + +G_BEGIN_DECLS + +#define FOO_TYPE_TEST_OBJECT foo_test_object_get_type() + +#define FOO_TEST_OBJECT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOO_TYPE_TEST_OBJECT, FooTestObject)) + +#define FOO_TEST_OBJECT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), FOO_TYPE_TEST_OBJECT, FooTestObjectClass)) + +#define FOO_IS_TEST_OBJECT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FOO_TYPE_TEST_OBJECT)) + +#define FOO_IS_TEST_OBJECT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), FOO_TYPE_TEST_OBJECT)) + +#define FOO_TEST_OBJECT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), FOO_TYPE_TEST_OBJECT, FooTestObjectClass)) + +typedef struct +{ + GObject parent; +} FooTestObject; + +typedef struct +{ + GObjectClass parent; +} FooTestObjectClass; + +GType +foo_test_object_get_type (void); + +FooTestObject * +foo_test_object_new (void); + +int +foo_test_object_get_number (FooTestObject *self); + +void +foo_test_object_set_number (FooTestObject *self, + int number); + +char const * +foo_test_object_get_text (FooTestObject *self); + +void +foo_test_object_set_text (FooTestObject *self, + char const *text); + +G_END_DECLS + +#endif /* FOO_TEST_OBJECT_H */ diff --git a/object-store/object-store-example.c b/object-store/object-store-example.c new file mode 100644 index 0000000..b8d78a3 --- /dev/null +++ b/object-store/object-store-example.c @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2010, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + * Author: Rob Staudinger + */ + +#include +#include +#include +#include "foo-object-store.h" +#include "foo-test-object.h" + +typedef struct +{ + ClutterActor *view; + MxEntry *entry; + ClutterModel *store; +} ObjectStoreTest; + +/* + * Look up item by index. + * Returned object needs to be g_object_unref'd. + * May return NULL. + */ +FooTestObject * +store_get_object (ClutterModel *store, + unsigned index) +{ + ClutterModelIter *iter; + FooTestObject *object = NULL; + + iter = clutter_model_get_iter_at_row (store, index); + if (iter && + !clutter_model_iter_is_last (iter)) + { + /* Column #0 of the model holds the actual object. */ + clutter_model_iter_get (iter, + 0, &object, + -1); + } + + return object; +} + +/* + * Add object to the store. + */ +static void +store_add_object (ClutterModel *store, + char const *text) +{ + FooTestObject *object; + + object = foo_test_object_new (); + foo_test_object_set_text (object, text); + + /* Column #0 holds the actual object, the other cols are mapped to + * its properties. */ + clutter_model_append (store, 0, object, -1); + g_object_unref (object); +} + +static void +_update_clicked (MxButton *button, + ObjectStoreTest *app) +{ + char const *input; + + input = mx_entry_get_text (app->entry); + if (input == NULL || + input[0] == '\0') + { + g_warning ("Please enter text"); + return; + + } else if (input[0] == '-') { + + /* Remove item */ + int index = g_ascii_isdigit (input[1]) ? + atoi (&input[1]) : + -1; + if (index < 0) + { + g_warning ("Invalid number, can not remove"); + return; + } + + clutter_model_remove (app->store, index); + + } else if (g_ascii_isdigit (input[0])) { + + /* Update item */ + unsigned index = atoi (input); + char **tokens = g_strsplit (input, ":", 2); + char const *text = tokens[1]; + FooTestObject *object = store_get_object (app->store, index); + + if (object == NULL) + { + g_warning ("Failed to find object"); + return; + } + + foo_test_object_set_text (FOO_TEST_OBJECT (object), text); + g_object_unref (object); + + } else { + + /* Add item */ + store_add_object (app->store, input); + } + + mx_entry_set_text (app->entry, ""); +} + +static void +_dump_clicked (MxButton *button, + ObjectStoreTest *app) +{ + ClutterModelIter *iter; + + for (iter = clutter_model_get_first_iter (app->store); + !clutter_model_iter_is_last (iter); + iter = clutter_model_iter_next (iter)) + { + FooTestObject *object = NULL; + char *text = NULL; + + clutter_model_iter_get (iter, + 0, &object, + 1, &text, + -1); + g_debug ("%p %s\n", object, text); + g_object_unref (object); + g_free (text); + } +} + +int +main (int argc, + char **argv) +{ + ClutterActor *stage; + MxBoxLayout *vbox; + MxBoxLayout *hbox; + ClutterActor *button; + ClutterActor *label; + ObjectStoreTest app = { 0, }; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, 320.0, 240.0); + + vbox = (MxBoxLayout *) mx_box_layout_new (); + clutter_actor_set_size (CLUTTER_ACTOR (vbox), 320.0, 240.0); + mx_box_layout_set_orientation (vbox, MX_ORIENTATION_VERTICAL); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), CLUTTER_ACTOR (vbox)); + + /* Create model */ + app.store = foo_object_store_new (2, + FOO_TYPE_TEST_OBJECT, "foo", /* column #0 */ + G_TYPE_STRING, "text"); /* column #1 */ + + /* + * Create view + */ + app.view = mx_list_view_new (); + + /* Use MxButton to render the model's items */ + mx_list_view_set_item_type (MX_LIST_VIEW (app.view), MX_TYPE_BUTTON); + + /* Map column #1 to attribute "label" of view's GtkButton */ + mx_list_view_add_attribute (MX_LIST_VIEW (app.view), "label", 1); + + /* Connect to model */ + mx_list_view_set_model (MX_LIST_VIEW (app.view), app.store); + + mx_box_layout_add_actor_with_properties (vbox, app.view, -1, + "expand", true, + "x-fill", true, + "y-fill", true, + NULL); + + hbox = (MxBoxLayout *) mx_box_layout_new (); + mx_box_layout_set_orientation (hbox, MX_ORIENTATION_HORIZONTAL); + mx_box_layout_add_actor_with_properties (vbox, CLUTTER_ACTOR (hbox), -1, + "expand", false, + "x-fill", true, + NULL); + + app.entry = (MxEntry *) mx_entry_new (); + mx_box_layout_add_actor_with_properties (hbox, CLUTTER_ACTOR (app.entry), -1, + "expand", true, + "x-fill", true, + NULL); + + button = mx_button_new_with_label ("Update"); + g_signal_connect (button, "clicked", + G_CALLBACK (_update_clicked), &app); + clutter_container_add_actor (CLUTTER_CONTAINER (hbox), button); + + button = mx_button_new_with_label ("Dump"); + g_signal_connect (button, "clicked", + G_CALLBACK (_dump_clicked), &app); + clutter_container_add_actor (CLUTTER_CONTAINER (hbox), button); + + label = mx_label_new_with_text ("Enter text and update to add item\n" + "Enter : to change item \n" + "Enter - to delete item "); + clutter_container_add_actor (CLUTTER_CONTAINER (vbox), label); + + clutter_actor_show_all (stage); + clutter_main (); + + return EXIT_SUCCESS; +} diff --git a/object-store/object-store-test.c b/object-store/object-store-test.c new file mode 100644 index 0000000..8a9b050 --- /dev/null +++ b/object-store/object-store-test.c @@ -0,0 +1,364 @@ +#include +#include +#include +#include "foo-object-store.h" +#include "foo-test-object.h" + +typedef struct _ModelData +{ + ClutterModel *model; + + guint n_row; +} ModelData; + +enum +{ + COLUMN_OBJECT, /* FOO_TYPE_OBJECT_STORE */ + COLUMN_NUMBER, /* G_TYPE_INT */ + COLUMN_TEXT, /* G_TYPE_STRING */ + + N_COLUMNS +}; + +static const struct { + const gchar *expected_foo; + gint expected_bar; +} base_model[] = { + { "String 1", 1 }, + { "String 2", 2 }, + { "String 3", 3 }, + { "String 4", 4 }, + { "String 5", 5 }, + { "String 6", 6 }, + { "String 7", 7 }, + { "String 8", 8 }, + { "String 9", 9 }, +}; + +static const struct { + const gchar *expected_foo; + gint expected_bar; +} forward_base[] = { + { "String 1", 1 }, + { "String 2", 2 }, + { "String 3", 3 }, + { "String 4", 4 }, + { "String 5", 5 }, + { "String 6", 6 }, + { "String 7", 7 }, + { "String 8", 8 }, + { "String 9", 9 }, +}; + +static const struct { + const gchar *expected_foo; + gint expected_bar; +} backward_base[] = { + { "String 9", 9 }, + { "String 8", 8 }, + { "String 7", 7 }, + { "String 6", 6 }, + { "String 5", 5 }, + { "String 4", 4 }, + { "String 3", 3 }, + { "String 2", 2 }, + { "String 1", 1 }, +}; + +static const struct { + const gchar *expected_foo; + gint expected_bar; +} filter_odd[] = { + { "String 1", 1 }, + { "String 3", 3 }, + { "String 5", 5 }, + { "String 7", 7 }, + { "String 9", 9 }, +}; + +static const struct { + const gchar *expected_foo; + gint expected_bar; +} filter_even[] = { + { "String 8", 8 }, + { "String 6", 6 }, + { "String 4", 4 }, + { "String 2", 2 }, +}; + +static inline void +compare_iter (ClutterModelIter *iter, + const gint expected_row, + const gchar *expected_foo, + const gint expected_bar) +{ + gchar *foo = NULL; + gint bar = 0; + gint row = 0; + + row = clutter_model_iter_get_row (iter); + clutter_model_iter_get (iter, + COLUMN_TEXT, &foo, + COLUMN_NUMBER, &bar, + -1); + + if (g_test_verbose ()) + g_print ("Row %d => %d: Got [ '%s', '%d' ], expected [ '%s', '%d' ]\n", + row, expected_row, + foo, bar, + expected_foo, expected_bar); + + g_assert_cmpint (row, ==, expected_row); + g_assert_cmpstr (foo, ==, expected_foo); + g_assert_cmpint (bar, ==, expected_bar); + + g_free (foo); +} + +static void +on_row_added (ClutterModel *model, + ClutterModelIter *iter, + gpointer data) +{ + ModelData *model_data = data; + + compare_iter (iter, + model_data->n_row, + base_model[model_data->n_row].expected_foo, + base_model[model_data->n_row].expected_bar); + + model_data->n_row += 1; +} + +static gboolean +filter_even_rows (ClutterModel *model, + ClutterModelIter *iter, + gpointer dummy G_GNUC_UNUSED) +{ + gint bar_value; + + clutter_model_iter_get (iter, COLUMN_NUMBER, &bar_value, -1); + + if (bar_value % 2 == 0) + return TRUE; + + return FALSE; +} + +static gboolean +filter_odd_rows (ClutterModel *model, + ClutterModelIter *iter, + gpointer dummy G_GNUC_UNUSED) +{ + gint bar_value; + + clutter_model_iter_get (iter, COLUMN_NUMBER, &bar_value, -1); + + if (bar_value % 2 != 0) + return TRUE; + + return FALSE; +} + +void +test_list_model_filter (void) +{ + ModelData test_data = { NULL, 0 }; + ClutterModelIter *iter; + gint i; + + test_data.model = foo_object_store_new (N_COLUMNS, + FOO_TYPE_TEST_OBJECT, "object", + G_TYPE_INT, "number", + G_TYPE_STRING, "text"); + test_data.n_row = 0; + + for (i = 1; i < 10; i++) + { + gchar *foo = g_strdup_printf ("String %d", i); + GObject *object = g_object_new (FOO_TYPE_TEST_OBJECT, + "number", i, + "text", foo, + NULL); + + clutter_model_append (test_data.model, + COLUMN_OBJECT, object, + -1); + + g_object_unref (object); + g_free (foo); + } + + if (g_test_verbose ()) + g_print ("Forward iteration (filter odd)...\n"); + + clutter_model_set_filter (test_data.model, filter_odd_rows, NULL, NULL); + + iter = clutter_model_get_first_iter (test_data.model); + g_assert (iter != NULL); + + i = 0; + while (!clutter_model_iter_is_last (iter)) + { + compare_iter (iter, i, + filter_odd[i].expected_foo, + filter_odd[i].expected_bar); + + iter = clutter_model_iter_next (iter); + i += 1; + } + + g_object_unref (iter); + + if (g_test_verbose ()) + g_print ("Backward iteration (filter even)...\n"); + + clutter_model_set_filter (test_data.model, filter_even_rows, NULL, NULL); + + iter = clutter_model_get_last_iter (test_data.model); + g_assert (iter != NULL); + + i = 0; + do + { + compare_iter (iter, G_N_ELEMENTS (filter_even) - i - 1, + filter_even[i].expected_foo, + filter_even[i].expected_bar); + + iter = clutter_model_iter_prev (iter); + i += 1; + } + while (!clutter_model_iter_is_first (iter)); + + g_object_unref (iter); + + g_object_unref (test_data.model); +} + +void +test_list_model_iterate (void) +{ + ModelData test_data = { NULL, 0 }; + ClutterModelIter *iter; + gint i; + + test_data.model = foo_object_store_new (N_COLUMNS, + FOO_TYPE_TEST_OBJECT, "object", + G_TYPE_INT, "number", + G_TYPE_STRING, "text"); + test_data.n_row = 0; + + g_signal_connect (test_data.model, "row-added", + G_CALLBACK (on_row_added), + &test_data); + + for (i = 1; i < 10; i++) + { + gchar *foo = g_strdup_printf ("String %d", i); + GObject *object = g_object_new (FOO_TYPE_TEST_OBJECT, + "number", i, + "text", foo, + NULL); + + clutter_model_append (test_data.model, + COLUMN_OBJECT, object, + -1); + + g_object_unref (object); + g_free (foo); + } + + if (g_test_verbose ()) + g_print ("Forward iteration...\n"); + + iter = clutter_model_get_first_iter (test_data.model); + g_assert (iter != NULL); + + i = 0; + while (!clutter_model_iter_is_last (iter)) + { + compare_iter (iter, i, + forward_base[i].expected_foo, + forward_base[i].expected_bar); + + iter = clutter_model_iter_next (iter); + i += 1; + } + + g_object_unref (iter); + + if (g_test_verbose ()) + g_print ("Backward iteration...\n"); + + iter = clutter_model_get_last_iter (test_data.model); + g_assert (iter != NULL); + + i = 0; + do + { + compare_iter (iter, G_N_ELEMENTS (backward_base) - i - 1, + backward_base[i].expected_foo, + backward_base[i].expected_bar); + + iter = clutter_model_iter_prev (iter); + i += 1; + } + while (!clutter_model_iter_is_first (iter)); + + compare_iter (iter, G_N_ELEMENTS (backward_base) - i - 1, + backward_base[i].expected_foo, + backward_base[i].expected_bar); + + g_object_unref (iter); + + g_object_unref (test_data.model); +} + +void +test_list_model_populate (void) +{ + ModelData test_data = { NULL, 0 }; + gint i; + + test_data.model = foo_object_store_new (N_COLUMNS, + FOO_TYPE_TEST_OBJECT, "object", + G_TYPE_INT, "number", + G_TYPE_STRING, "text"); + test_data.n_row = 0; + + g_signal_connect (test_data.model, "row-added", + G_CALLBACK (on_row_added), + &test_data); + + for (i = 1; i < 10; i++) + { + gchar *foo = g_strdup_printf ("String %d", i); + GObject *object = g_object_new (FOO_TYPE_TEST_OBJECT, + "number", i, + "text", foo, + NULL); + + clutter_model_append (test_data.model, + COLUMN_OBJECT, object, + -1); + + g_object_unref (object); + g_free (foo); + } + + g_object_unref (test_data.model); +} + +int +main (int argc, + char **argv) +{ + + clutter_init (&argc, &argv); + + test_list_model_populate (); + test_list_model_iterate (); + test_list_model_filter (); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/odo/Makefile b/odo/Makefile new file mode 100644 index 0000000..c46cffd --- /dev/null +++ b/odo/Makefile @@ -0,0 +1,14 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` +CFLAGS="-lm" + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: odo + +odo: odo.o odo-texture.o odo-distort-funcs.o + $(CC) -g -Wall $(CFLAGS) -o $@ odo.o odo-texture.o odo-distort-funcs.o $(LIBS) + +clean: + rm -f *.o odo diff --git a/odo/README b/odo/README new file mode 100644 index 0000000..487cebc --- /dev/null +++ b/odo/README @@ -0,0 +1,8 @@ +This work has been superceded by the MxDeformTexture widget in the Mx +toolkit. Mx is available from git, + +git://git.moblin.org/mx + +The effects here are all included in Mx, along with tweaks to improve +their function, and the MxDeformTexture widget itself is better structured +to allow for animating properties with clutter_actor_animate (). diff --git a/odo/grid.png b/odo/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..e72560addb40de302006a298f988a3f7bcd07404 GIT binary patch literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^PeGW24M?szX&?rq*pj^6T^RlYAw%ze4>_O+XMsm# zF;K^K5N34Jm|X!BWH0gbb!ETKF3H6#*0({ijDdmail>WXNX4zUw+?zb2a32}6t~{M z>uVXc^lgT$rsA{-jVEqS*m^AeOXA_*1^W5dZy&FG@cj4J*MF;i|9O4v+_`rfr!z0< z5OU#!;Xm!C|IXQco?)SeEdPz0rDgNhKbS8hpxOb)5d{~Sw`#Vq?UMS)hE zH*bFZ#wPxty{dwj02EgU^|3DyTl$#MdiS|=pGE%!Gc95Xgkx^KDxhSy+%S+_#4_im zqn=lKSy|cKxzDwKEN5}yTm;4bhdwe~SyW<^kbeDU<-VqRFNY}#aGY?^l^-a1F?mQx eI!rn6lXbq3)ygF~6Q=`{JcFmJpUXO@geCwM9Z4hr literal 0 HcmV?d00001 diff --git a/odo/neghand.png b/odo/neghand.png new file mode 100644 index 0000000000000000000000000000000000000000..48e7d6aa68d4a827e90925b5613610dadbedde6c GIT binary patch literal 8315 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 +#include "odo-distort-funcs.h" + +void +cloth_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data) +{ + OdoDistortData *d = data; + gfloat cx, cy, rx, turn_angle, height_radius; + guint shade; + + /* Rotate the point around the centre of the curl ray to align it with + * the y-axis. + */ + + cx = (1.f - d->turn) * width; + cy = (1.f - d->turn) * height; + + rx = ((vertex->x - cx) * cos (-d->angle)) - + ((vertex->y - cy) * sin (-d->angle)) - d->radius; + + /* Calculate the angle as a function of the distance from the curl ray */ + turn_angle = ((rx / d->radius) * G_PI_2) - G_PI_2; + + /* Add a gradient that makes it look like lighting and hides the switch + * between textures. + */ + shade = (255 * (1.f - d->amplitude)) + + (((sin (turn_angle) * 96) + 159) * d->amplitude); + vertex->color.red = shade; + vertex->color.green = shade; + vertex->color.blue = shade; + + /* Make the wave amplitude lower as its distance from the curl ray increases. + * Not really necessary, but looks a little nicer I think. + */ + height_radius = (1 - rx / width) * d->radius; + vertex->z = height_radius * sin (turn_angle) * d->amplitude; +} + +void +bowtie_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data) +{ + OdoDistortData *d = data; + gfloat cx, cy, rx, ry, turn_angle, height_radius; + guint shade; + + cx = d->turn * (width + width/2); + cy = height/2; + + rx = ((vertex->x - cx) * cos (0)) - + ((vertex->y - cy) * sin (0)); + ry = ((vertex->x - cx) * sin (0)) + + ((vertex->y - cy) * cos (0)); + + /* Make angle as a function of distance from the curl ray */ + turn_angle = MAX (-G_PI, MIN (0, (rx / (width/4)) * G_PI_2)); + + /* Add a gradient that makes it look like lighting */ + shade = (cos (turn_angle * 2) * 96) + 159; + vertex->color.red = shade; + vertex->color.green = shade; + vertex->color.blue = shade; + + /* Calculate the point on a cone (note, a cone, not a right cone) */ + height_radius = ry; + /*ClutterFixed height_radius = + clutter_qmulx (clutter_qdivx (ry, height/2), height/2);*/ + + ry = height_radius * cos (turn_angle); + vertex->x = (rx * cos (0)) - (ry * sin (0)) + cx; + vertex->y = (rx * sin (0)) + (ry * cos (0)) + cy; + vertex->z = height_radius * sin (turn_angle); +} + +void +page_turn_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data) +{ + OdoDistortData *d = data; + gfloat cx, cy, rx, ry; + gfloat turn_angle; + guint shade; + + /* Rotate the point around the centre of the page-curl ray to align it with + * the y-axis. + */ + cx = (1.f - d->turn) * width; + cy = (1.f - d->turn) * height; + + rx = ((vertex->x - cx) * cos (-d->angle)) - + ((vertex->y - cy) * sin (-d->angle)) - d->radius; + ry = ((vertex->x - cx) * sin (-d->angle)) + + ((vertex->y - cy) * cos (-d->angle)); + + if (rx > -d->radius * 2) + { + /* Calculate the curl angle as a function from the distance of the curl + * ray (i.e. the page crease) + */ + turn_angle = (rx / d->radius * G_PI_2) - G_PI_2; + shade = (sin (turn_angle) * 96) + 159; + + /* Add a gradient that makes it look like lighting and hides the switch + * between textures. + */ + vertex->color.red = shade; + vertex->color.green = shade; + vertex->color.blue = shade; + } + + if (rx > 0) + { + /* Make the curl radius smaller as more circles are formed (stops + * z-fighting and looks cool) + */ + gfloat small_radius = d->radius - (turn_angle * 2) / G_PI; + + /* Calculate a point on a cylinder (maybe make this a cone at some point) + * and rotate it by the specified angle. + */ + rx = (small_radius * cos (turn_angle)) + d->radius; + vertex->x = (rx * cos (d->angle)) - (ry * sin (d->angle)) + cx; + vertex->y = (rx * sin (d->angle)) + (ry * cos (d->angle)) + cy; + vertex->z = (small_radius * sin (turn_angle)) + d->radius; + } +} diff --git a/odo/odo-distort-funcs.h b/odo/odo-distort-funcs.h new file mode 100644 index 0000000..ea8dcf6 --- /dev/null +++ b/odo/odo-distort-funcs.h @@ -0,0 +1,41 @@ + +#ifndef ODO_DISTORT_FUNCS_H +#define ODO_DISTORT_FUNCS_H + +#include +#include "odo-texture.h" + +G_BEGIN_DECLS + +typedef struct +{ + gfloat radius; + gfloat angle; + gfloat turn; + gfloat amplitude; +} OdoDistortData; + +void +cloth_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data); + +void +bowtie_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data); + +void +page_turn_func (OdoTexture *otex, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer data); + +G_END_DECLS + +#endif diff --git a/odo/odo-texture.c b/odo/odo-texture.c new file mode 100644 index 0000000..aea5bea --- /dev/null +++ b/odo/odo-texture.c @@ -0,0 +1,641 @@ +/* odo-texture.c */ + +#include "odo-texture.h" + +G_DEFINE_TYPE (OdoTexture, odo_texture, CLUTTER_TYPE_ACTOR) + +#define TEXTURE_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), ODO_TYPE_TEXTURE, OdoTexturePrivate)) + +struct _OdoTexturePrivate +{ + gint tiles_x; + gint tiles_y; + OdoTextureCallback callback; + gpointer user_data; + + CoglHandle vbo; + gint n_indices; + CoglHandle *indices; + CoglHandle *bf_indices; + CoglTextureVertex *vertices; + + ClutterTexture *front_face; + ClutterTexture *back_face; + + gboolean dirty; +}; + +enum +{ + PROP_0, + + PROP_TILES_X, + PROP_TILES_Y, + PROP_FRONT_FACE, + PROP_BACK_FACE +}; + +static void +odo_texture_get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) +{ + OdoTexturePrivate *priv = ODO_TEXTURE (object)->priv; + + switch (property_id) + { + case PROP_TILES_X: + g_value_set_int (value, priv->tiles_x); + break; + + case PROP_TILES_Y: + g_value_set_int (value, priv->tiles_y); + break; + + case PROP_FRONT_FACE: + g_value_set_object (value, priv->front_face); + break; + + case PROP_BACK_FACE: + g_value_set_object (value, priv->back_face); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +odo_texture_set_property (GObject *object, guint property_id, + const GValue *value, GParamSpec *pspec) +{ + OdoTexture *texture = ODO_TEXTURE (object); + OdoTexturePrivate *priv = texture->priv; + + switch (property_id) + { + case PROP_TILES_X: + odo_texture_set_resolution (texture, + g_value_get_int (value), + priv->tiles_y); + break; + + case PROP_TILES_Y: + odo_texture_set_resolution (texture, + priv->tiles_x, + g_value_get_int (value)); + break; + + case PROP_FRONT_FACE: + odo_texture_set_textures (texture, + g_value_get_object (value), + priv->back_face); + break; + + case PROP_BACK_FACE: + odo_texture_set_textures (texture, + priv->front_face, + g_value_get_object (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +odo_texture_free_arrays (OdoTexture *self) +{ + OdoTexturePrivate *priv = self->priv; + + if (priv->vbo) + { + cogl_handle_unref (priv->vbo); + priv->vbo = NULL; + } + + if (priv->indices) + { + cogl_handle_unref (priv->indices); + priv->indices = NULL; + } + + g_free (priv->vertices); + priv->vertices = NULL; +} + +static void +odo_texture_dispose (GObject *object) +{ + OdoTexture *self = ODO_TEXTURE (object); + OdoTexturePrivate *priv = self->priv; + + odo_texture_free_arrays (self); + + if (priv->front_face) + { + g_object_unref (priv->front_face); + priv->front_face = NULL; + } + + if (priv->back_face) + { + g_object_unref (priv->back_face); + priv->back_face = NULL; + } + + G_OBJECT_CLASS (odo_texture_parent_class)->dispose (object); +} + +static void +odo_texture_finalize (GObject *object) +{ + G_OBJECT_CLASS (odo_texture_parent_class)->finalize (object); +} + +static void +odo_texture_paint (ClutterActor *actor) +{ + gint i, j; + CoglHandle material; + gboolean depth, cull; + + OdoTexture *self = ODO_TEXTURE (actor); + OdoTexturePrivate *priv = self->priv; + + if (priv->dirty) + { + guint opacity; + gfloat width, height; + ClutterActorBox box; + + opacity = clutter_actor_get_paint_opacity (actor); + clutter_actor_get_allocation_box (actor, &box); + width = box.x2 - box.x1; + height = box.y2 - box.y1; + + for (i = 0; i <= priv->tiles_y; i++) + { + for (j = 0; j <= priv->tiles_x; j++) + { + CoglTextureVertex *vertex = + &priv->vertices[(i * (priv->tiles_x + 1)) + j]; + + vertex->tx = j/(gfloat)priv->tiles_x; + vertex->ty = i/(gfloat)priv->tiles_y; + vertex->x = width * vertex->tx; + vertex->y = height * vertex->ty; + vertex->z = 0; + cogl_color_set_from_4ub (&vertex->color, + 0xff, 0xff, 0xff, opacity); + + if (priv->callback) + priv->callback (self, vertex, width, height, priv->user_data); + } + } + + /* We add all three attributes again, although in an ideal case, + * we'd add only those that had changed. Because we provide the + * ability to change each, unless we had a 'changed' gboolean * in + * the function prototype, we have to upload all of it. + */ + cogl_vertex_buffer_add (priv->vbo, + "gl_Vertex", + 3, + COGL_ATTRIBUTE_TYPE_FLOAT, + FALSE, + sizeof (CoglTextureVertex), + &priv->vertices->x); + cogl_vertex_buffer_add (priv->vbo, + "gl_MultiTexCoord0", + 2, + COGL_ATTRIBUTE_TYPE_FLOAT, + FALSE, + sizeof (CoglTextureVertex), + &priv->vertices->tx); + cogl_vertex_buffer_add (priv->vbo, + "gl_Color", + 4, + COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE, + FALSE, + sizeof (CoglTextureVertex), + &priv->vertices->color); + cogl_vertex_buffer_submit (priv->vbo); + + priv->dirty = FALSE; + } + + depth = cogl_get_depth_test_enabled (); + if (!depth) + cogl_set_depth_test_enabled (TRUE); + + cull = cogl_get_backface_culling_enabled (); + if (priv->back_face && !cull) + cogl_set_backface_culling_enabled (TRUE); + else if (!priv->back_face && cull) + cogl_set_backface_culling_enabled (FALSE); + + if (priv->front_face) + { + material = clutter_texture_get_cogl_material (priv->front_face); + cogl_set_source (material); + cogl_vertex_buffer_draw_elements (priv->vbo, + COGL_VERTICES_MODE_TRIANGLE_STRIP, + priv->indices, + 0, + (priv->tiles_x + 1) * + (priv->tiles_y + 1), + 0, + priv->n_indices); + } + + if (priv->back_face) + { + material = clutter_texture_get_cogl_material (priv->back_face); + cogl_set_source (material); + cogl_vertex_buffer_draw_elements (priv->vbo, + COGL_VERTICES_MODE_TRIANGLE_STRIP, + priv->bf_indices, + 0, + (priv->tiles_x + 1) * + (priv->tiles_y + 1), + 0, + priv->n_indices); + } + + if (!depth) + cogl_set_depth_test_enabled (FALSE); + if (priv->back_face && !cull) + cogl_set_backface_culling_enabled (FALSE); + else if (!priv->back_face && cull) + cogl_set_backface_culling_enabled (TRUE); +} + +static void +odo_texture_get_preferred_width (ClutterActor *actor, + gfloat for_height, + gfloat *min_width_p, + gfloat *natural_width_p) +{ + ClutterActor *proxy; + OdoTexturePrivate *priv = ODO_TEXTURE (actor)->priv; + + if (priv->front_face) + proxy = CLUTTER_ACTOR (priv->front_face); + else if (priv->back_face) + proxy = CLUTTER_ACTOR (priv->back_face); + else + { + if (min_width_p) + *min_width_p = 0; + if (natural_width_p) + *natural_width_p = 0; + + return; + } + + clutter_actor_get_preferred_width (proxy, + for_height, + min_width_p, + natural_width_p); +} + +static void +odo_texture_get_preferred_height (ClutterActor *actor, + gfloat for_width, + gfloat *min_height_p, + gfloat *natural_height_p) +{ + ClutterActor *proxy; + OdoTexturePrivate *priv = ODO_TEXTURE (actor)->priv; + + if (priv->front_face) + proxy = CLUTTER_ACTOR (priv->front_face); + else if (priv->back_face) + proxy = CLUTTER_ACTOR (priv->back_face); + else + { + if (min_height_p) + *min_height_p = 0; + if (natural_height_p) + *natural_height_p = 0; + + return; + } + + clutter_actor_get_preferred_height (proxy, + for_width, + min_height_p, + natural_height_p); +} +/* +static void +odo_texture_allocate (ClutterActor *actor, + const ClutterActorBox *box, + ClutterAllocationFlags flags) +{ +}*/ + +static void +odo_texture_class_init (OdoTextureClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + + g_type_class_add_private (klass, sizeof (OdoTexturePrivate)); + + object_class->get_property = odo_texture_get_property; + object_class->set_property = odo_texture_set_property; + object_class->dispose = odo_texture_dispose; + object_class->finalize = odo_texture_finalize; + + actor_class->get_preferred_width = odo_texture_get_preferred_width; + actor_class->get_preferred_height = odo_texture_get_preferred_height; + /*actor_class->allocate = odo_texture_allocate;*/ + actor_class->paint = odo_texture_paint; + + g_object_class_install_property (object_class, + PROP_TILES_X, + g_param_spec_int ("tiles-x", + "Horizontal tiles", + "Amount of horizontal " + "tiles to split the " + "texture into.", + 1, G_MAXINT, 32, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); + + g_object_class_install_property (object_class, + PROP_TILES_Y, + g_param_spec_int ("tiles-y", + "Vertical tiles", + "Amount of vertical " + "tiles to split the " + "texture into.", + 1, G_MAXINT, 32, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); + + g_object_class_install_property (object_class, + PROP_FRONT_FACE, + g_param_spec_object ("front-face", + "Front-face", + "Front-face texture.", + CLUTTER_TYPE_TEXTURE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); + + g_object_class_install_property (object_class, + PROP_BACK_FACE, + g_param_spec_object ("back-face", + "Back-face", + "Back-face texture.", + CLUTTER_TYPE_TEXTURE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); +} + +static void +odo_texture_init_arrays (OdoTexture *self) +{ + GLushort *idx, *bf_idx; + gint x, y, direction; + GLushort *static_indices, *static_bf_indices; + OdoTexturePrivate *priv = self->priv; + + odo_texture_free_arrays (self); + + priv->n_indices = (2 + 2 * priv->tiles_x) * + priv->tiles_y + + (priv->tiles_y - 1); + static_indices = g_new (GLushort, priv->n_indices); + static_bf_indices = g_new (GLushort, priv->n_indices); + +#define MESH_INDEX(X, Y) (Y) * (priv->tiles_x + 1) + (X) + + direction = 1; + + idx = static_indices; + idx[0] = MESH_INDEX (0, 0); + idx[1] = MESH_INDEX (0, 1); + idx += 2; + + bf_idx = static_bf_indices; + bf_idx[0] = MESH_INDEX (priv->tiles_x, 0); + bf_idx[1] = MESH_INDEX (priv->tiles_x, 1); + bf_idx += 2; + + for (y = 0; y < priv->tiles_y; y++) + { + for (x = 0; x < priv->tiles_x; x++) + { + /* Add 2 triangles for a quad */ + if (direction) + { + idx[0] = MESH_INDEX (x + 1, y); + idx[1] = MESH_INDEX (x + 1, y + 1); + bf_idx[0] = MESH_INDEX (priv->tiles_x - (x + 1), y); + bf_idx[1] = MESH_INDEX (priv->tiles_x - (x + 1), y + 1); + } + else + { + idx[0] = MESH_INDEX (priv->tiles_x - x - 1, y); + idx[1] = MESH_INDEX (priv->tiles_x - x - 1, y + 1); + bf_idx[0] = MESH_INDEX (x + 1, y); + bf_idx[1] = MESH_INDEX (x + 1, y + 1); + } + idx += 2; + bf_idx += 2; + } + + /* Link rows together to draw in one call */ + if (y == (priv->tiles_y - 1)) + break; + + if (direction) + { + idx[0] = MESH_INDEX (priv->tiles_x, y + 1); + idx[1] = MESH_INDEX (priv->tiles_x, y + 1); + idx[2] = MESH_INDEX (priv->tiles_x, y + 2); + bf_idx[0] = MESH_INDEX (0, y + 1); + bf_idx[1] = MESH_INDEX (0, y + 1); + bf_idx[2] = MESH_INDEX (0, y + 2); + } + else + { + idx[0] = MESH_INDEX (0, y + 1); + idx[1] = MESH_INDEX (0, y + 1); + idx[2] = MESH_INDEX (0, y + 2); + bf_idx[0] = MESH_INDEX (priv->tiles_x, y + 1); + bf_idx[1] = MESH_INDEX (priv->tiles_x, y + 1); + bf_idx[2] = MESH_INDEX (priv->tiles_x, y + 2); + } + + idx += 3; + bf_idx += 3; + direction = !direction; + } + + priv->indices = + cogl_vertex_buffer_indices_new (COGL_INDICES_TYPE_UNSIGNED_SHORT, + static_indices, + priv->n_indices); + priv->bf_indices = + cogl_vertex_buffer_indices_new (COGL_INDICES_TYPE_UNSIGNED_SHORT, + static_bf_indices, + priv->n_indices); + g_free (static_indices); + g_free (static_bf_indices); + + priv->vertices = g_new (CoglTextureVertex, + (priv->tiles_x + 1) * (priv->tiles_y + 1)); + + priv->vbo = cogl_vertex_buffer_new ((priv->tiles_x + 1) * + (priv->tiles_y + 1)); +} + +static void +odo_texture_init (OdoTexture *self) +{ + OdoTexturePrivate *priv = self->priv = TEXTURE_PRIVATE (self); + + priv->tiles_x = 32; + priv->tiles_y = 32; + odo_texture_init_arrays (self); +} + +ClutterActor * +odo_texture_new (void) +{ + return g_object_new (ODO_TYPE_TEXTURE, NULL); +} + +ClutterActor * +odo_texture_new_from_files (const gchar *front_face_filename, + const gchar *back_face_filename) +{ + ClutterTexture *front_face, *back_face; + + if (front_face_filename) + front_face = g_object_new (CLUTTER_TYPE_TEXTURE, + "disable-slicing", TRUE, + "filename", front_face_filename, + NULL); + else + front_face = NULL; + + if (back_face_filename) + back_face = g_object_new (CLUTTER_TYPE_TEXTURE, + "disable-slicing", TRUE, + "filename", back_face_filename, + NULL); + else + back_face = NULL; + + return odo_texture_new_with_textures (front_face, back_face); +} + +ClutterActor * +odo_texture_new_with_textures (ClutterTexture *front_face, + ClutterTexture *back_face) +{ + return g_object_new (ODO_TYPE_TEXTURE, + "front-face", front_face, + "back-face", back_face, + NULL); +} + +void +odo_texture_set_textures (OdoTexture *texture, + ClutterTexture *front_face, + ClutterTexture *back_face) +{ + ClutterTexture *old_texture; + OdoTexturePrivate *priv = texture->priv; + + old_texture = priv->front_face; + priv->front_face = front_face ? g_object_ref_sink (front_face) : NULL; + if (old_texture) + g_object_unref (old_texture); + + old_texture = priv->back_face; + priv->back_face = back_face ? g_object_ref_sink (back_face) : NULL; + if (old_texture) + g_object_unref (old_texture); + + clutter_actor_queue_redraw (CLUTTER_ACTOR (texture)); +} + +void +odo_texture_get_resolution (OdoTexture *texture, + gint *tiles_x, + gint *tiles_y) +{ + OdoTexturePrivate *priv = texture->priv; + + if (tiles_x) + *tiles_x = priv->tiles_x; + if (tiles_y) + *tiles_y = priv->tiles_y; +} + +void +odo_texture_set_resolution (OdoTexture *texture, + gint tiles_x, + gint tiles_y) +{ + OdoTexturePrivate *priv = texture->priv; + gboolean changed = FALSE; + + g_return_if_fail ((tiles_x > 0) && (tiles_y > 0)); + + if (priv->tiles_x != tiles_x) + { + priv->tiles_x = tiles_x; + changed = TRUE; + g_object_notify (G_OBJECT (texture), "tiles-x"); + } + + if (priv->tiles_y != tiles_y) + { + priv->tiles_y = tiles_y; + changed = TRUE; + g_object_notify (G_OBJECT (texture), "tiles-y"); + } + + if (changed) + { + odo_texture_init_arrays (texture); + odo_texture_invalidate (texture); + } +} + +void +odo_texture_set_callback (OdoTexture *texture, + OdoTextureCallback callback, + gpointer user_data) +{ + OdoTexturePrivate *priv = texture->priv; + + priv->callback = callback; + priv->user_data = user_data; + + odo_texture_invalidate (texture); +} + +void +odo_texture_invalidate (OdoTexture *texture) +{ + OdoTexturePrivate *priv = texture->priv; + priv->dirty = TRUE; + clutter_actor_queue_redraw (CLUTTER_ACTOR (texture)); +} + diff --git a/odo/odo-texture.h b/odo/odo-texture.h new file mode 100644 index 0000000..5c2aae0 --- /dev/null +++ b/odo/odo-texture.h @@ -0,0 +1,84 @@ +/* odo-texture.h */ + +#ifndef _ODO_TEXTURE_H +#define _ODO_TEXTURE_H + +#include +#include + +G_BEGIN_DECLS + +#define ODO_TYPE_TEXTURE odo_texture_get_type() + +#define ODO_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + ODO_TYPE_TEXTURE, OdoTexture)) + +#define ODO_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + ODO_TYPE_TEXTURE, OdoTextureClass)) + +#define ODO_IS_TEXTURE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + ODO_TYPE_TEXTURE)) + +#define ODO_IS_TEXTURE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + ODO_TYPE_TEXTURE)) + +#define ODO_TEXTURE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + ODO_TYPE_TEXTURE, OdoTextureClass)) + +typedef struct _OdoTexture OdoTexture; +typedef struct _OdoTextureClass OdoTextureClass; +typedef struct _OdoTexturePrivate OdoTexturePrivate; + +struct _OdoTexture +{ + ClutterActor parent; + + OdoTexturePrivate *priv; +}; + +struct _OdoTextureClass +{ + ClutterActorClass parent_class; +}; + +GType odo_texture_get_type (void); + +typedef void (*OdoTextureCallback) (OdoTexture *texture, + CoglTextureVertex *vertex, + gfloat width, + gfloat height, + gpointer user_data); + +ClutterActor *odo_texture_new (void); +ClutterActor *odo_texture_new_from_files (const gchar *front_face_filename, + const gchar *back_face_filename); +ClutterActor *odo_texture_new_with_textures (ClutterTexture *front_face, + ClutterTexture *back_face); + +void odo_texture_get_resolution (OdoTexture *texture, + gint *tiles_x, + gint *tiles_y); + +void odo_texture_set_resolution (OdoTexture *texture, + gint tiles_x, + gint tiles_y); + +void odo_texture_set_callback (OdoTexture *texture, + OdoTextureCallback callback, + gpointer user_data); + +void odo_texture_set_textures (OdoTexture *texture, + ClutterTexture *front_face, + ClutterTexture *back_face); + +void odo_texture_invalidate (OdoTexture *texture); + +G_END_DECLS + +#endif /* _ODO_TEXTURE_H */ + diff --git a/odo/odo.c b/odo/odo.c new file mode 100644 index 0000000..91e0fb6 --- /dev/null +++ b/odo/odo.c @@ -0,0 +1,139 @@ +#include +#include +#include "odo-distort-funcs.h" +#include "odo-texture.h" + +struct distort_data +{ + ClutterActor *odo; + OdoDistortData data; + ClutterTimeline *timeline; + ClutterAlpha *alpha; +}; + +static gint func = 0; + +static void +new_frame_cb (ClutterTimeline *timeline, + gint msecs, + gpointer data) +{ + /* Set the turn value to the alpha value and redraw */ + struct distort_data *d = data; + d->data.turn = clutter_alpha_get_alpha (d->alpha); + d->data.amplitude = d->data.turn; + + odo_texture_invalidate (ODO_TEXTURE (d->odo)); +} + +static void +completed_cb (ClutterTimeline *timeline, + gpointer data) +{ + struct distort_data *d = data; + + /* Reverse direction and start again */ + ClutterTimelineDirection dir = clutter_timeline_get_direction (timeline); + clutter_timeline_set_direction (timeline, 1 - dir); + + if (dir == CLUTTER_TIMELINE_BACKWARD) + { + switch (func) + { + case 0: + odo_texture_set_callback (ODO_TEXTURE (d->odo), + bowtie_func, + &d->data); + func = 1; + break; + + case 1: + odo_texture_set_callback (ODO_TEXTURE (d->odo), + cloth_func, + &d->data); + func = 2; + break; + + case 2: + odo_texture_set_callback (ODO_TEXTURE (d->odo), + page_turn_func, + &d->data); + func = 0; + break; + } + } + + clutter_timeline_start (timeline); +} + +int +main (int argc, char *argv[]) +{ + ClutterActor *stage; + ClutterColor stage_color = { 0xcc, 0xcc, 0xcc, 0xff }; + struct distort_data data; + + if (argc < 2) + { + printf ("Usage: %s [filename]\n", argv[0]); + return 1; + } + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + + /* Quit on key-press */ + g_signal_connect (stage, "key-press-event", + G_CALLBACK (clutter_main_quit), NULL); + + /* Make a fullscreen stage */ + clutter_stage_set_color (CLUTTER_STAGE (stage), + &stage_color); + clutter_stage_set_fullscreen (CLUTTER_STAGE (stage), TRUE); + + /* Create the texture and set the deformation callback */ + data.odo = odo_texture_new_from_files (argv[1], (argc > 2) ? argv[2] : NULL); + odo_texture_set_callback (ODO_TEXTURE (data.odo), page_turn_func, &data.data); + + /* Make the subdivision dependent on image size */ + odo_texture_set_resolution (ODO_TEXTURE (data.odo), + clutter_actor_get_width (data.odo) / 10, + clutter_actor_get_height (data.odo) / 10); + + /* Put it in the centre of the stage and add a jaunty angle */ + clutter_actor_set_rotation (data.odo, CLUTTER_Y_AXIS, 15, 0, 0, 0); + clutter_actor_set_rotation (data.odo, CLUTTER_X_AXIS, 15, 0, 0, 0); + clutter_actor_set_position (data.odo, + (clutter_actor_get_width (stage) - + clutter_actor_get_width (data.odo)) / 2, + (clutter_actor_get_height (stage) - + clutter_actor_get_height (data.odo)) / 2); + clutter_actor_set_depth (data.odo, -300.0); + + /* Add it to the stage */ + clutter_container_add (CLUTTER_CONTAINER (stage), data.odo, NULL); + + /* Fill in the data required for the animation */ + data.timeline = clutter_timeline_new (5000); + data.alpha = clutter_alpha_new_full (data.timeline, + CLUTTER_EASE_IN_OUT_SINE); + data.data.turn = 0; + data.data.radius = clutter_actor_get_width (data.odo) / 18; + data.data.angle = G_PI/6; + data.data.amplitude = 1.0; + + /* Connect to timeline signals for progressing animation */ + g_signal_connect (data.timeline, "new-frame", + G_CALLBACK (new_frame_cb), &data); + g_signal_connect (data.timeline, "completed", + G_CALLBACK (completed_cb), &data); + + /* Begin */ + clutter_actor_show (stage); + clutter_timeline_start (data.timeline); + clutter_main(); + + return 0; +} + diff --git a/odo/oh-logo.png b/odo/oh-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..677aa529422a5b8b75e9fd7dafbcbee9a26c9e52 GIT binary patch literal 11993 zcmeHtcTiK?`ZnsZ9V?=M(maA9QXwFACJ;J-&>@gOzP0`CICJLS`DX6??*0DyF~elBH`#lYcRla(JnxFQZK!+X z=QBTZad92dyPFa8NPw=yO zy%GaH4tm`%_vPX`@eKOi^=FBgDY&@bPtQPmf8RcVqaw#gV$Vr&ah>JT)4FyyU|@bY zFvN7NdV1UQ#DRmq9F%*o?JpZTd{_Np-raQpJ>0bdpXx3N zav2=V>=~Os8@cC7!=K?r7jJt%y4-%{fY{X=Nqh9tHABYF6m1ype)zP8nxB}T@Tr$V zto9%BM&JJi`|$Sd+Y6vW8hd6mc5`uE{T;M-|MagK$It%b*54YxbM4~dg0B3%@za5S zT=`q$>{ajx=*r(4yTFUTU-{RK1INL)pj&@yeD5iAR$5`-dn|lW_vWyvBs$$T zV)#WR;wtOf(y$yOJkDY*yJ$XJNRoC8!!kITC>5Sy{(;68wv9}AMmf`(Y%jDHED3|* zX|%cmB)#|DyLaJe*1EQbhsXHDgf?DyIMbF`6Z7(A;9bOBQ`5T0Q<8}7tuzK5GsEtly`!U!jg3vQCsk%^0~VQ@ znwq&&RpK#xMn6#opQhHFk&$t(vrFzA3S2GO!|F_zxGG9Yc~*9PuAe804;B#{+X;32@&02vIc6U+z&JWSxh76i zsx3dvQ$ty4_iI7|M?ffV5ESiIh z=T495sGCae7M2WEW~8xlRNI%&E=iyldERWlD;8`sJfYzwoift2yl zfcmYOH}NFNz$734xM#nsyV|?oZon6N!bH{Q8;)M`99X?}E9tUqZ=SWl`_S`B?gR3M zYVHrQf`NhdPD(NXM+KFScfD;5-&~m@)u34>*bcFMhxw0Z>O^C~n02C!t*wP%HB6tX z^?|vIFqlz=bx=^y>MYU+dq&}kDsr}ax}E-^loIh$jt~_a8yi0eW!W(yOf35cI)kk&64xTgoPoZ zTw$_3={fGY=(&s#P8)Nl#WExNZFXBpoh4swI3-ahw1^!Zo>Vp-kyH}mlQy62l5JNFIf;mU0*Bdetpw-71kA3DdoWx~neMebYkgQ|ZAP_0hp%sJXt5Kj)P^hWI_J z*H9-vBNI4+hABj)7j9_@NPr)#fulR-n4Nrb3XBj_qr>$Db>M<(XX_=GH;WUyz4l} z*5n>mQgU)~z|5P(F&HLL`R2`=nKi`yLzVuXxmM+u4Aqf0;L8mNWT=g0iCgsOx3JB< zy9AX|AMF)XqV&TxCn`LTmP?#F$D7Ej>tISt8<|a>y>C@`xndF>V9{KeLcO__8g-Lb z%fZya-qF6k<~qyH{1J1r0o;j%ZB!J0S#VgHY+Y&)9iwjxtZShdL#H>WoU5sUlOM}y zk+0&fx7Wxzm8khx4_2?`Lam9B0k%4LL(v5b#+;#V>AHWl|e3^xX zg}uv7O-=loI|a&SiCTuq^5>hHP#2ixn%u1Q`IWs~KZWDDMvA(gU%p{vq#2@{oghso z#&yL@n7D4YZsUX;WCNGG)-+^bFr}Xl1?#3Ly3Y=;zqn@;rQq7zJK&62?O0l46gxRN z>E_#r>xLZ_nyqd_%yc@)I<*a1e7PLTMy%CaI669lJt9}(H)FMc6b4Hsi=17xXa>>1 z{pQW!9Ss>#QBiPHP(64(cSGg@YhwXV62WBj76z_Ru;=v?-iBCNSXlT?|MknyhYn?$ z=9tw;eLmQ%aF&Y@v-R~Xh(;Y;l@tVuAJT@bD^YdW)9t+jDx9)oh>?P_?e)QPv~QwP z?`3|{WX%=X)rLo%)70cF7J|3c(({Sja!zeG18y1_7#P5}rV&eV1op)%a&m~-?imUH zfvCu>x>NV8gy#oKH3fzD9~BJurvxg!y%nhHeD_v5+i!J#P~4)_LnxoPqa$Tob8dzo zbRZ%pui{Dtl741pMq~#)0C2^wF7m}vEe}ryNKB(+j_sl9`;H18fBLi!>TUf-#r>gnlOnk#BQFEsY(P+OG9&f@-#Ox=xdOWaGN?#|FWr}^(F8>+m) zd?i5uTh!i$4G({B;v}XX>Dwf+J=Ug%5!BY+K1$N94by!Wv^p)U$sRpM0}s>RI+F!r z33>s01txYRFVDKN7V3cVO3MQz<4@Duw~v!;G4848b@LiH;BtR@ySTVylm!@nMV>x= z+WXrPa!>Gp0bn7_rh7XQGh0s&MFBv5szPd)4_%Vhg@@j%^b*@2JpdH04 zKI|-_IEPi9N-Z*h7O%N%^jW@c*INUgJkBESjw`_Y;e+H2kQ+dBR+$Ba+%YpVv%+kD z(nGkkCVwh$?%H4AF2H|t<5SF*z3^-xu?d*Yu_1*3drjKB!IRBPu^gWlTk~`hGQqm z2EgyWR)N^GG@*MoDwmv(zpc35_u?Kd60o))(hYt6DA&BxDSq22o^3`!{`r6t;MV5{ z6&_**Jjy7E2LM$j<;+OFtre2(P3=CiLRnn!cL4`qru*d~~!e zO${;CmUfW5Mki-oQ=8}bvqBFh-n(~CJnawm>$sq|aJ%Oh{bD7gr47oe3{n(3z;4p1 z!q@0g{R>_1gHX%>9P@~9=Jl|nda!YrgoJv=21lCN><#{-^o{6cEHT5%T)PPBO%8y859B0!K) z-pK+qfF57qpg(+i&VN4p#+j3A!!wsU=r`rVZWPKU%R8R{Uu0g{&3P`kYnP$2KoeCH z)o$wTmY!2lq3Znm>xzV5`rBL)3hO0#@9S^ysz#%&LD=bOCfdgx6>gk&jAK&jwxw4%Ck#=nd z(+OjBBfye7FZUPEJg(R7cy@#kTKk4yv_IH+jy?dEw3BOdTohw>f-%&)=7s)>S>+?RLF9DM; zo#H44IYtDH&|O@lQ(3?55`T>=PaC7w1o*R&-8`~e@vih}e0X^1{1&M-Ygjn0z6~o7 zMmf`OP>AoRH#Rhc?`%h%$W!wgxe8I!IVw?e!q*Mb6o3lMY<>OuHD0ZWN8Av%L9u-9 zgI!);=2!9v=`_iN5>!^I&&^H}aq+8uLBLXMJi=|TM4C~(;jg!FSkb;=L}$2weghBz zDOKdn5dAS}%Mw8QdE!Eka*GJR;8$XFKxyJ283G!KtW~2eUn(H5P%oOy>7wU&r7Z*@ zVbZy_XMZ~F(6Ix@epodt+%fJGasghCmey(qf0Mfa@z@;GcZ zH${{40s4w~wc;y);IbjikJEp>LU%?i0rfKW$NnA3^bnt4zY5WTW(-(v%sMA0C#UMq zh+iZ;_}0d3*|9EX(xPJXAdbkMR3b*Vrj&}YrLqjugj19}4YxGf)Hmh;#Se#tE`5Ei zxiQgvuh!as`x1zan9H{a;L&jA$aRUwA75p8?+UR|-g`*-!RsuCT8zMYW?9f@GQM%; zRPi)F2iY&Wl%LO*vawnjGS;+Blu1JXbf&#@a=c(=3z9C_B>0%bM84q)WHiXy_4`HK zZ~z(Kuq~HYS69mz6|QIe=Ia1X(i+7HkxuC^0|T%CDEmG>Kve7grh~7!Vp05%o0}U^ zkHz)mkj1Je$JfYHwW%sA83@v&htwMM+;AlfV$=r7_FC7jg`ct7HM-LGVOo50IR%lQZPtcvbAohc;L0&P?tF#eYv-=F9f05S zUmp1;%9Eyw#KJI}v?STF{wIjJK4V@C^V@buhIZ6+?+4f7haKk>-3LyB`P2*i>4Lbp zcs=&?eAM^YNF=1Kz`V_=`9fV&EiSRAh|Eq*ZM)682w-fe&Q4W=wE-#JyGc#Q6y(I} z1krw9pjQ=2Jfxi$5vT=BDl0NPO3yr0 zoCwRuFkU#N2P)R%w%z=*b-{F*jlt2n=hqq_O)-% z?xX&at8qOn-9qxfE&zE>4{v{YUbc-D3C%{>D>Oz{!gkQ|uCd7O_8zboLZ;M|gxBUx zK$7QyI!$uRQZyeKLJfY1iHnQ#+U_gJ9Lp_wCekGfh;*FciN3x@)*bc9vF5PDrv=GY za*9Ah;AVo&OBvhv?IE>#>C%v_YyN8b4$MV4&6P|oE>bKQ=@@0+iG8uNYnCeeAvYU) z{!Nsf-b}`QvkGMk`$-)lYCH4Yu!Oe{ow62o-D8S>m@~j%I>HfLb7gd8U1n6Rh|4;6 z#=rJAzWLU?$Whj3+<_EA;*4Fnas?tLG+GqwW_cGi*SrW?Fn)NzZLA0f5t4ZuHh_1dtKu0C7g$q5$dg!F9X*<46CYz$qiU z;TWWc9P#&~{6v)`<8uT!V56ZMkQ)^|H_o4W$7EnMW*Ai=%HEG*v5#qjTrL4V6 zMZO#b3#U@OO*oaG-7f1e6IUSFSS1=A^Ww!RXtwqp6FzAKmwk0jZ2`S?vcBgYKBD)7 zrIJhT(9qB~-#cO{MKsajN`HI-LRS~?o-=GV^l$B<>v2g}99#hTDh2dv0xSqgWhzxD zidQ;MK{W8%wQGlk;U7EN{dYE}>W9i#Tw3d52m}$QG^AsiyX7aB)1^bpX-NQ=Zlx%S zf>=k_E@UFg&^^zjPUCO6Qf?+1oogZFcSFKb!; zp1JsRKZ|U>PDo@El&e=h#^Zyh(^zA#N*D06$=zyoo95DERGBKZw&~cdhOg?L>|l6# zKuFs03Koq6-Uw2_}Q>RYFq^EOlZU%O|HJ}3|viwl41;`Ptd@3Ce z@|tjsq$!$*3(_UCJ+5{@y=yx=JI@V#l5A?0gwjN^QacXl+1{7=uL}#W08Ww#pp;(? zy;MExWmpRS&s^WD35Yya5u0sy$c=H{mNa-+Dmv2n~I#9gL-x#}b5i|8d& z!?CO5ALDdoC;?u`Iu$3BrANx=4s72fMSTw!|njQm9% zY}v(RB~QwSC=%@{v# zX=&lVV()cWL_;cQeeN`%&bWIvf%6E0!xWRUQ6nh~M&*_9Q$x5-Vl5|lG(XP6*85L* zy3mrMFOUPfm5HwNRx2{Kw@+l=q%l1?j5rIF-oPc3^-Z8_&fxn8^ z+*$e(z+Muk5BF1xolPFwwv*-o=@Q1U8_O1IG<$=i4S-M0Ucw)%N8r^vMwrZoWChnV zp9Db(LNIJV-ZRl>n-)tG4P~5PgO{KU!+3U9K4fP{IuX)NAA>L2>P<}~$vH7NL|@`c zIO(OFlgAKx!!wq#nh%^o&@sw4o-@J`ke>h(-6vn|JS)`pI2a$0TfGKX zl*^p)<^+NO6I)(cp$|1m!~kAE>iuvYi5dWzhmLkbp-_)698U!!N)tT}-W(yMhU(@l z=oC2~Nwy9Jx^)Q{ioF)=vpM+yCUU?xpn#js2;|aOVs(Q82y8&XlTScWQE+Faq(Q)Ft_S`+tvB@9}~XG zESu?a(gM{HV038!))E2cCktE5Evf@95~uqL&O+%BJYWeBz&c>-^!=&48w3sMJNUm#=?>rP8`l2Ox1f-sn$FcfRojAaizyJry?g_?X6x z<0fHtv)#_#W6@OH@A&d-TwF&DptAstaam$VUKpmS)+-SMulr5kW(5%@TT@8pPDk+9 z9`CEK-q>m5juR*S{e99TMNBB6r4Q{f3cbrqAvJ$49jM zY&H(LZU?U985H=imgDi8^&Fr?@cQWMp3xbo_eR7ZM+cGA_a$6H*nMsnE(Y)YbxZzd9f~hDKy#tAQwOO^MSTf1h>K zd67RbFt8>S)KitY*W8dkeys~OuKla0Ozvo05LFjtRE`@hrFD521*)12PR`SmY-?aO z=-E~YLVk9|CC9u})DRjaP6)Y^S+W3BLMQUnsmc>F3;)-?87lYftVEoz&=5P9p^ImL zN<-kvq#oWLBw8^m3P{Qgjg3oB_b}tj4hSjdrBcVDWIetRj&cHNv81utUAFi~yh0{A z4W&laDs6P{2UTU0<@Zb6opbw2uAn#f^Rlm88`|E;4dN*Jcr6=4%F*a!8gaBIg{q9<(*>#WD)`A(M2MWk0)g| z8=f5z;F0m{FMI=&{wxk@&OE<|#>Wx+t?s$@V^0~8a(miCW)U3PCrpHUus&xLvrk1O zLVU~;@cpq_w7h$=^3_X{l3?d5Dlr3(3d8wDLY^zvSbREh7FtaP8nGB1Lof{{F*tz} zn0k=8jNDs@H5<2EtQ3aBM7a0vjqo(EymRM-XO(Q$wf2JG4MxC1^ef41(v^ za=hOHMZFHk>b@wUr+&@e!2!(L=j+B674r*Q8W0!j{lEjvGsty^at2Ef2vYn#TeS3O z1s03Fc@e_w4S%v_Af2t07E?YYyqF*4Rx)Dgz>9olWlxXYUVFuyn8QR@QkkXi z^4=Sk&s&OAohBO!BAEpGg;43x%PYP7wrnrKT#bNV(SWR!MgceXyp=!5kYy|eRZRUv zp({C$*=#F}1I4qD)I20e&SKU|pq>JiW_WCVvoSS2)ec{AgSfy2^*cUWGg;awR02%$ zvp5v09_S6M8YppQClx(dA9Z+P`eJD%aRFN{;7IzAh0#=#8+aSnqC z@()?+FDmIRdWCkZ!T`i}j;!y*YQXfecg)Lj<)4&F`i@z3jtR?J;3hQ zD)w>?CheM=RhD8ZhD9zpi=KsA%%SY)*h(FIRz@ zKLPSy^brBYdT1Bsx;b@Dxr6$;m3Q3@+dB~G-RSJ<9OJXy!ZSr+I~OVUZCUb3Q)cQs zuzd6{d2<+~m4$NQHGg7uc3z~vVmqD`DS{)Di9szkQ-$tPW3YvtdqaK${zggdHP^$| zAxEu#ys>fWfrNwvDA~tCB#=Ojzo{QZ&#Sx;x|UNJM@jH+Pggg#s=5dShypV(zuYl5 zQ{+43D0n9GaAawkW17^e(q8si;7=VnOcBd#F zH50*hs=p~fdpb)Emncu>Vx&=~jIFyiQ&rKPske8X;PwVWOvl^X8yr^HDhm|>b@AwC z7*XoNt$^7iICXKLXWTT>#}BqMAFO(GiSHoVtc`1kjQ6r4a|8TFGQu4H z;Aqydc}_R!hAdLI38^O>Lo4q*%2_y~WF>;xrk7=gKQE3)2yU|;CKa^{3qz$JKHCrp z;8@|AfzOVrE98~Yd~9$2ewQ=6&dntb6>#M*;L}dqim>O~hu3%?A9@x#izs&KximT+ z2-eI%r6}-Rf4@1T{x2Wa*s+3C2y4C+VhZpKb7EX|9zZUIb@c0?7E)pspb+(l!A9CKE^cUvhK@NTDNnvE3;nA!!!>k+$Z~Z7 zGYZzxov@`0#S8G!-W9PkqH2;ZUzqi6Q*r7sN7bLs(k0>cA~VLn*M&GtqIk7huQ=o@ z4wSgZd0`=iuFZ#j&uA~vj^bDLx|&HPEslOWCn}oRTL>hG@))*@?luU5nAvC)dJ>fU z4V(H$G(AQ>?^-G%Y|8^lK7Q!HUtG=#N79@RjwpXBaYI&Z?dU^k@8Yn@iNW;*tr<$E z@}dNRw?`)HddRDlkC2_BL!VP5GzO~&EZ%NOTDn!Wy{^_#6^Kej4LC!~FVxWy0U0%; zPZRBcl>qdkFz{r~@L74;K<7nf5TM3nH(ariSyrYD6>=sfCZMVUuv37RG6U=}2RLH! zkTACg$6T~(*_)nqx#ln}kSS9`mh}MtI@OV9JqV$ttnZ|60h)!I?#K+ro=|6ci?8iB)|Kho~|2=s4W0wCPjsIN$t{+Ds|G5FQ*S|Wx`X4y8 o`eRA{cLDyr1sGWw;p|z>8XJ9c_UvC^b-47j4Yl%q{q52J0qVNMr~m)} literal 0 HcmV?d00001 diff --git a/odo/redhand.png b/odo/redhand.png new file mode 100644 index 0000000000000000000000000000000000000000..c07d8acd33d54996512f6e2b6ca4d17b5ffc4f20 GIT binary patch literal 8250 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 E2il-`3jhEB literal 0 HcmV?d00001 diff --git a/opt/.gitignore b/opt/.gitignore new file mode 100644 index 0000000..c58cb6f --- /dev/null +++ b/opt/.gitignore @@ -0,0 +1,17 @@ +/Makefile +/Makefile.in +/aclocal.m4 +/autom4te.cache +/config.h +/config.h.in +/config.log +/config.status +/configure +/depcomp +/install-sh +/missing +/opt +/stamp-h1 + +*.o +.deps diff --git a/opt/AUTHORS b/opt/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/opt/ChangeLog b/opt/ChangeLog new file mode 100644 index 0000000..5a9d28f --- /dev/null +++ b/opt/ChangeLog @@ -0,0 +1,365 @@ +2008-10-13 Matthew Allum + + * configure.ac: + Use clutter 0.8 + * opt-show.c: + * opt-slide.c: + Dont hardcode number of channels when setting texture data, + use gdk_pixbuf_get_n_channels () + * opt-transition.c: (fade_transition_frame_cb): + Fix fade. Timelines start from frame #1 now. + +2008-07-01 Emmanuele Bassi + + * configure.ac: + * opt-config.c: + * opt-show.c: + * opt-slide.c: + * opt.c: Update to clutter-0.7 to test out the code base. + +2008-02-21 Øyvind Kolås + + * opt-config.c: (opt_config_load): permuted arguments of memset + to make it correct. + +2008-02-18 Chris Lord + + * configure.ac: + Bump clutter version to 0.6 + +2008-02-08 Chris Lord + + * configure.ac: + * opt-menu.c: (opt_menu_new): + * opt-show.c: (transition_completed_cb): + * opt-transition.c: (yz_flip_transition_frame_cb), + (zoom_transition_frame_cb), (flip_transition_frame_cb), + (cube_transition_frame_cb), (page_transition_frame_cb): + Update to use 0.5 + +2007-08-07 Matthew Allum + + * configure.ac: + Update to use 0.4 + +2007-06-19 Matthew Allum + + * demo.xml: + Include cube transition + + * opt-show.c: + Add png compression parameter and set at maximum + + * opt.c: + Call clutter_init() with args + +2007-06-08 Matthew Allum + + * configure.ac: + * opt-menu.c: + * opt-show.c: + * opt-transition.c: + * opt.c: + Update to 0.3 API, thanks to Johan Bilien (#366). + Print error if offscreen stage unsupported. + +2007-04-16 Tomas Frydrych + + * opt-menu.c: + Changed scaling gravity from SW to NW. + +2007-03-29 Matthew Allum + + * Makefile: + Remove. + * Makefile.am: + * autogen.sh: + * configure.ac: + Autofooify. + + * demo.xml: + Add a simple demo show with instructions. + + * opt-show.c: + Improve export to generate simple XML. + +2007-02-28 Tomas Frydrych + + * Makefile: + Put clutter version requirement back to 0.2 + + * opt-menu.c: + Animated menu + +2007-02-28 Tomas Frydrych + + * opt-transition.h: + * opt-transition.c: + * opt-config.c: + Added new transition type 'page' + + * Makefile: + * opt.h: + * opt-menu.h: + * opt-menu.c: + * opt-show.h: + * opt-show.c: + Added simple menu + + * opt.c: (input_cb): + Added 'm' to bring up menu, explicitely Right to advance, button 3 + to retreat; ignore Up, Down, Return and buttons 2, 4, 5 used by + menu. + +2007-01-26 Matthew Allum + + * opt.doap: + Add a doap file + +2007-01-17 Matthew Allum + + * Makefile: + * opt-show.c: + * opt-slide.c: (opt_slide_set_title), (opt_slide_add_bullet_text_item): + Update for 0.2 API changes. + +2006-07-03 Ross Burton + + * opt-slide.c: + Remove unused constants. + +2006-07-03 Ross Burton + + * opt-show.c: + Use somewhat better filenames when exporting. Should really count + slides to use the right number but this works for most + presentations. + +2006-07-03 Ross Burton + + * opt.dtd: + Allow slides with only titles (Wouter Bolsterlee ) + +2006-06-23 Matthew Allum + + * opt-transition.c: (zoom_transition_frame_cb): + Fix zoom transition as to not leave next frame 180 degrees + +2006-06-22 Ross Burton + + * Makefile: + Use clutter-0.1. + + * opt.dtd: + Add zoom transition. + +2006-06-21 Emmanuele Bassi + + * opt-show.h: + * opt-show.c (opt_show_update_position_label), + (transition_completed_cb), (opt_show_toggle_position): Toggle + an overlayed rectangle containing the current slide and the + total number of slides. + + * opt.c (input_cb): Add binding for showing the slide number. + +2006-06-20 Ross Burton + + * opt-transition.c: + Don't hard-code frame count anywhere but the creation, get it from + the timeline. + +2006-06-20 Ross Burton + + * opt-transition.c: + Add a define for the transition midpoint frame, and hook up the + zoom transition. + +2006-06-20 Ross Burton + + * opt-config.c: + Scale background images to the stage size when loading to avoid + scaling at runtime. + +2006-06-19 Matthew Allum + + * opt-config.c: + * opt-show.c: + * opt-slide.c: + * opt-slide.h: + Integrate Mr Burtons per slide background patch. + Pre-realize textures before a transition. + Correctly bail on error if image cannot be loaded. + +2006-06-19 Matthew Allum + + * opt-config.c: + * opt-transition.c: (yz_flip_transition_frame_cb): + * opt-transition.h: + * test.xml: + Add new zoom transition. + +2006-06-19 Emmanuele Bassi + + * opt-show.c: + Add support for the PgUp and PgDown keys, for skipping 5 slides + backward and forward the current position. + +2006-06-19 Ross Burton + + * opt-show.c: + Marshal the background property as a GdkPixbuf object not a pointer. + +2006-06-19 Ross Burton + + * hirez/oh-present.xcf: + Title the layers and remove empty/duplicate layers. + +2006-06-19 Ross Burton + + * opt-transition.c: + Change the rotation of the cube when switching. + +2006-06-19 Ross Burton + + * opt.dtd: + Image tags have no content. + +2006-06-15 Matthew Allum + + * opt.c: (input_cb): + Keep Tomas happy with support with mouse button + slide forwards/back. + +2006-06-14 Matthew Allum + + * opt-config.c: + * opt-show.c: + * opt-show.h: + Fix bullet symbol color. + +2006-06-14 Emmanuele Bassi + + * opt.c (input_cb): Use clutter_main_quit() instead of + calling exit(). + +2006-06-14 Ross Burton + + * opt.dtd: + Remove img from and set valid enumeration for symbol + and style. + +2006-06-13 Matthew Allum + + * opt-config.c: + * opt.dtd: + * test.xml: + Add new style attribute to bullets. + Update text.xml with wrap test and code example. + + * opt-show.c: + * opt-show.h: + * opt-slide.c: + * opt-slide.h: + * opt-transition.c: + Fix wrapping with bullet symbols + Add optional blank bullet + Increase FPS to 90 + +2006-06-13 Ross Burton + + * opt.dtd: + Add a DTD describing the OPT file format. + + * test.xml: + Use the DTD. + +2006-06-13 Matthew Allum + + * opt-config.c: + * opt-show.c: + * opt-slide.c: + * opt-slide.h: + * opt-transition.c: + * opt.c: + Update for new element -> actor naming. + +2006-06-08 Matthew Allum + + * opt.c: + * opt.h: + * opt-show.c: + Add command line opts. + Fix png exporting. + Make transitions work backwards and forwards. + + * opt-transition.c: + * opt-transition.h: + Add a direction parameter. + +2006-06-05 Matthew Allum + + * opt-config.c: + * opt-show.c: + * opt-slide.c: + * opt-slide.h: + * opt-transition.c: + * opt.c: + Sync up with ebassi's clutter API changes. + +2006-06-02 Matthew Allum + + * test.xml: + * opt.c: (main): + * opt-config.c: + * opt-show.c: + * opt-show.h: + Add support for default tag. + Attempt ( non working on fglfx at least ) slide export. + + * opt-transition.c: + * opt-transition.h: + Add another flip transition. + +2006-06-01 Matthew Allum + + * Makefile: + * opt.h: + * opt-transition.c: + * opt-transition.h: + * opt-config.c: + * opt-show.c: + * opt-show.h: + * opt-slide.c: + * opt-slide.h: + Redo transition handling. + + * opt.c: (input_cb), (main): + Handle back button now. + * test.xml: + Add some transition examples. + +2006-05-29 Matthew Allum + + * Makefile: + * opt.h: + * opt-config.c: + * test.xml: + Add initial basic XML config file loading. + Regret using g_markup. + + * opt-show.c + * opt-show.h: + Add props for default show 'style' + + * opt-slide.c: + * opt-slide.h: + Add font and colour args. + + * opt.c: (main): + Remove old manual slide building, use XML files instead. + + * bg.png + * hirez/oh-present.xcf + Add new OH template presentation background. + diff --git a/opt/Makefile.am b/opt/Makefile.am new file mode 100644 index 0000000..6ce7cbd --- /dev/null +++ b/opt/Makefile.am @@ -0,0 +1,24 @@ +bin_PROGRAMS=opt + +AM_CFLAGS = $(DEPS_CFLAGS) $(GCC_FLAGS) -D_GNU_SOURCE + +opt_LDADD = $(DEPS_LIBS) +opt_SOURCES = opt.c \ + opt.h \ + opt-show.c \ + opt-show.h \ + opt-slide.c \ + opt-slide.h \ + opt-transition.h \ + opt-transition.c \ + opt-menu.c \ + opt-menu.h \ + opt-config.c + +EXTRA_DIST=powers.png opt.dtd demo.xml bg.png + +MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + diff --git a/opt/NEWS b/opt/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/opt/README b/opt/README new file mode 100644 index 0000000..9ba9a4c --- /dev/null +++ b/opt/README @@ -0,0 +1,6 @@ +O.P.T - ' Openedhand Presentation Tool' +====================================== + +An experimental toy clutter based presentaion app.. + +For more info, run './opt demo.xml'. \ No newline at end of file diff --git a/opt/autogen.sh b/opt/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/opt/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/opt/bg.png b/opt/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..91a0d0e9f86e9d3a2e16db7bfc80fef9926ca748 GIT binary patch literal 122701 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

    !A9p>z7=N5%3a_-$mhHaCaH39kseCW1FU@P(Vm? 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 CYE!CWgZnGFdICUDo*+nIlV(vpROAKc%d0D_*Q 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 TfA0NX%J+ZT`ybEu*SY_9Lh}Em literal 0 HcmV?d00001 diff --git a/opt/kitten.jpg b/opt/kitten.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6232fb7ff6419f2d1fd41a9ed7a67727f1ad2d8d GIT binary patch literal 3941 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 V2dAsWU@-{g{phkp#Rtdl{{tbMM=<~Z literal 0 HcmV?d00001 diff --git a/opt/kitten2.jpg b/opt/kitten2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfb445317445b11b11f3e11345c56aa7b3965a96 GIT binary patch literal 22802 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%0AX31qbgI{9F8Y>x5%` z)<`Y*ehZHgb(`&9&fZ0w~_$ z5*J6{tKjD(VP~J3nd=_klDaMPQZOMKw6e;S$s)-&f&%{+4gwMl1%ldx@1jP`0&blR zng1ztk0%{PLj#Qze}JqG4q|aR&pLHijnc3oY|7brhYlfz4u#vAHC%5YdvVe1Qfmn7 zXlr;9tr&oM{86@*t(6vKs^^P$`PGF{<2Z26I{y%zpY?V6rYD-F{6SDZ9lkESE-{vL zR)kKv+{e0|pBmR~Q<`)e($ z?4t!5;i=lF%MoALk*fb<#{*;I!v~5cRpExPn?W}t&yekZA>ryvpZ-1-j4Gm5X z1Z_t(?)JsYr1c{2izOfDYAT6uebPYSrvY_mm+Z3j>;xC1*dt@|3p>Ru7ABUY z-FL^gH9FVIbCUh_A4gHO(7PGM!jQ9UOH!9t$&}qe579UUe!|8Kl`ejqvZKB2O@zNF zt3yVPLyUDRu?+$Wv)!jc1U0y{Y$=3kt;K^ibz z%7K>Dk;%0>@C}>=4gSfUQ?29_g!!O9wILVz+hA|wn|lpCy^v|L?j>MraXJsfA3~fD zeQ7&DqhZ3tGpGC^^a2@#1tFLiIt|;ViQi!+bmij(30a5hz~$%7oErJ|oH0T0r@)qK z7k68;{53DmUhT@rJhmpWotd*)jm8f;R>I=Z^`b(TY6jk(Lw}?cK02}O0y+>mZx5*R zwvFU^zeRcz>>Nz2jJD`NyTx53U#TZBjORbk3`qMV#8dli`CmV zgt`6#;ynz5a34HEoM(knwXoC@!eX}A&Tk>;K`?h|-e=*k3Ea$U7B6A935^b++UQ!b z>2jZDycO)3eo{#!z}>}qKS@6V_UW_750c)DqIPip>m*V=E1Y!3cUIT zj)%zpEUN}r_Knd6n@sKIF^qLW+_SLJ%f;h!ZEF2Fe||s8=In;w{C1Y{QQ+>rChpm@ z`A<@!;yU$N$9-O7MAKAem2T}6T==i&yb#6K#>Laqo3UX7FjRKg8OgAf;%=8p_^zb! zu+-c=d7h{!Ol7`ichS9tY)n0%wuz2N$^1MlBrXX@RN1b%pPdvqwDW=q3D6eP?Z;YO zd@!UjeF`KJeT@|R!uW~dX>vRN%aDt$D_>PvP&|1u(Dd%y=#O32$5PKyy9rkT`la0v zt#9c{nTnXQEJOC!s*br@o__)VN<2>XFLt?wrH7si1#BK@SJKw@wZn|FiNzcRJLF8f zN@b@v*JNR#^>WY$7p?P%#EOcSvLb>6NhI4mkO-O{v)Sjt$zU_aOgwI&6ZAJZNd7tc4^8+fb*Ou@jRX7Pm@ znKD?`mjqhZ!}Y@T%@PUm$%d~+O7i zFG%{8jfYO^0*b9ebnnaAjLqWkTgp{4s0>klR{L*w1SlSDiFP>dQe-S+NQPybCZj)h zrLKB&dSuohPa9X)VUj7AfdoVXPS>c1c`Mo)p1?2?CB_JlcZd5SRxNfgtNPk8hIBu5H!fl&(2B;@ z&pJ_sH6mPL-Zjx&u|-}I(jZoJIaye03sv<@3Aag@pQ2Y~Gh7QTq>lG~-r!*HuAUxT zS`!$Bmm=k(nSy8u*M(-@= zoP}oQnUqq8#9WSA-m*Qfh9BA z+Nlm@s4ZM}z667vp5dTGHH@C;%KD4@L=oNsM?+wdAM~nB1NDUZPBzG3rN}@*3S5z6 zlqf|7Oj}hXA&WE9Z%Tz)(gX{NGm#F}Zq(8)*xzJw%%8mJ9ab2QKuM%I0NL?V8yq@y zamJ1XB(E6BE)V_%h^a)*olsA<`sL`bYijEgJe>-HPdeGCXFd0j^D4E}iSb(tgyaxJoMZQidOd2)~-y->h+kKV0To$ zzZt}K7cy=DtJC+59x1G#r8hiYYHH#vcG!|F8kL%`Hx<}7>poc_XfwOuuMKZq2ps2j zV#{oQ`y+5h)@MixNnLKX?Q;~Zz-GDDpRL+kWUI*;rHJ(r5_qzPPDo_k)<)Ot@cWwo zdyARZgstZHa+KUL``JDzP6e|nBN*l0N@_E_GNBV25Dk9tx8UQY3s#L0`>exi-l)`F zMn_df3*N1UA;#F~rkoJ$L{F*J3S`?%j(#k#0DIB+i~NY}LEy{fLTcu`4^%_wE}1G$NH zF$Au>Ot9kLfOHu4iR*1L_Ao!i%RG6@Ej(|g)ut(O#2&zEt;FdZzQlQBys6>xq@^X> z;$!G?@wnmgfgdxzXVgW5TM1>sEX{It)urbz;8>?A`N@wHbw~Bedm6Ic#p$~&>b6j#P3o#%spG|1dqu_yH#Wdbs`wexQRvZQHxr0E}QJeD|?J2n+ zN~Cu3zZ|4>YfD`G&=^WL)gK>&LlN$6!?8#6WSImH&p*9tK!hpbbT7NxpQsPg%Dn^l zgz`nKv}?=vza?s#{PY?#=$UP;FahXaB}2JH^(+?YKT0>Zxl84_C0>;F#R_M9sl=Z6 z_62hW16?yaZWn<2>-OgM=v0KHa5*U%@cV=^;i6Lz`E(1KyYyVJI7#U;g zMa|65AnO*#A-oXu%$5`Q`WHZ)MleB6P*4{(Wn_WnUQ5@=I`3tF`@1(=d&(0wQ*2fOBLs7Xu|*l^ylM6t%eEH4k~a%bKx`JH^e#1k z;mP@w7%6!1!J7nh?Ko6~ce74aL=?Q-N`WQ1$dUSZ`6FkdzP^jt6>6!IHQr+iqPTIl z8Ktv|@7C8gS>U#6qCq(()BX~pI!wD5q1?$h-uFZ&e*wTibmPeb?U~+sv1z(?*HX&5 z8{X^F*Sw(ZYAu6}!7qridym23pzr_=qM2HhfGNzz14Z40A=RKN1V{KEDPEeBt6#~> zRO_q_57a>@n^81Be#TAh%hQE7g{sGz-`>=pICEjQe*q^W7c(<6 zE7+cA)0CsAF|tW%XreAN4FfY_k&HT@D6|fnHJ+$4iNhV6j;zA`%xeS(Tmm^R8KB$I zxq`{>-UBw&ED01Q1&~AC5;m*-aB2%zHdn|YQOn;2hILp|^3;uRer|mdtTFGb`_;dQ z7hl)@qc>4Ci67{Gu>0v_z+F#*O4qDk-A zofCdEU)#?+PHhR7r}kbWPrkEV{7VqeyIN3kW&3V~AdySY*7FzY(GI`vK=Mn}y2_WY zwqEg_(bj45O>q`~0Yt6vM1z|jdh)Jr@B8Ot9(;3)i;jKYMV)^n5u<35Glv-q!~8u? zxL*Sxu&xKq;x${@Z8M0K1zXX_Be&mZXLErx(+*o1H`-yR2L4#1Vu$#-8zE@NpNtH0 zN+UtqeEW0t!HADhD#F)aUs!!yH`fK782sD+jVcVK(sd<@MMPdTbXzX8Up$5pehXe- zs?gtvus zD0c)CSCG)s#l;T-df2nGBKmL|G0vuHMg;I*f&BPL7jJz9yohfhVkxWTiG~avQjr(C zb?WuiPK=tbDvdokQ{em|g5_DoNIzD-tilg1w)P8fDkDnc&3)sFN*ee?g)ScHJ2&5W zisCR>U8qC`j(>&P2Zj6vEYlp+K)C+RyJGt|D^@==Ln~8QlHY`%$W_}(WQoC|O4UCH zg2t|NC&X1`d}dtQl9zL$mzRRVZ%I!yJlkLnRmaHj%w+k^LT;{PLq#l3#w>6=)#->eX4!hFZyP>!V~y&)%rYYOzJ>O+h^Kxg<-y1-O54zJ^cR%b~Q2~P#y0gsQ3cJFnm%pWhfsXw0^hYR`Ixs57Rg0dFu zPkTF{f=SllQ;K^YqIgEYkeh2f{=y%`~cjSX*SZ9B)&R_uF*MV=8P5r6!QNBiznz(*vZ)oD{()0DxbuBW(2dkP>>+Y_EmJ z8+(1vp@cj>&cwz43hfsX=swlg=n!a&8S?GoL5!4zwlVc%wC5h=j{Mh?R$R~CN2M63 zXpNm0LAI83Nv_^>kna#Xw2Rl4QqB|GDm&L>d88^v%^sf(x~TbBDs>|qVM(ff7}Bl8 z%O>_l+BZ02G6zh#B({Ce=UtR-Z+9StQfYu*Nlpj+2%bKbo3kkSN8*%sHu|wizesQ4@F*Se%$ZlQZ<-}24GiyDqbIVf}5z02Z{f?oa?dsyPPLJ!V^8UFx* zWPe)lo69@R2U=MnM0ZU2ghA%-0FJIe0QzlHk9yJ4=8ch2ugcG)JQ1YoP+O$2_=ZUo zD+A`L%g%j6FX$`OG+jRKG>zrFiPeBAqz*?tIXq_-;y(_4B3Vfsaa~(QZ^L}PX7&e; z3k(dA*nTzY(D=UHtxuK%WBprj*!++G09v`DhO^Wv)|8dvcQPfiAQCbS!#zh8^LOnt z;GYg^&_1Q7+^iau1y$lz0T^@Xj(g_2{{RsDK!(EI=DNB>P^X?dbAm}6kPjH_eJkhh z9C+hX@gseUNwl5fTxM1{1-hI7Ju&*%T_`xoHKBznSJF=G^KXV4WvrethAZ~l6jP~@ zcVL_zS0|2oSLh$Z&2LPXMzf06KP5zJm;;5!AFo>Yx5AzRzL(9raeTLU!UT-Qs^m8; z*~tTp41C!{3OgIv}@~ZoGRopZ9PcFKDDh^%~47^n>-u#ZZcLr!(FGG z=RGmrs%p1Z)^_qsD}-3ku{*I|LE*2AHy3N<-1vJ{f?y7JMtc5K?OON5-Yb>jvyN+M z9BnG-8yV@>1Xh)5sYcIp%lfm7z2~9he;zg6Q^lSoxYD%C4?f;EXz+`Y+2bT*n)I*P z$Kg%Bi>1Y>-P%iQaNE>G`*OVX>Gk~UvG7;J8(S-rf2brca`-t_BPYLF^!Q+o2tvl8 z0PHIoarTyqS|aOW64E9$&WUX)IcZ~K!6^7OiK%FMU7firZEQ*C&kAlQ-Lbnq`5#)| z)%9yjQdQ(slLRO&jl^~ywdOu5@pa_a5?H0Xv~EaJ>KPRNRfS$yyCSgaa@IzFiZv}4 zOr52kOSqvzv9$YISXG#CK5qX2N8{4CO@1jZ?n3FyCG;j&F&lT^9Heqc80bH|0R#KT zw*B^na^Z^~gUc+)IRl_w6CdvvR>$EW5o~hu_buWFKzyb>9%(<~In@M5hnAagW2c zdT??0)-@)chg2f>L$xhSUtwt8QpyzoS)+bgduIo)vFDn-YZja0yHTgie!;2Qu2x4F zW^YbFKdn+eeY&ovq_fX$G6L}AoS*h{kPkI)NP^PpLv?#Ox0$$Ir)!2iJB-&AM4;}D zxXHDtMh!nu&}1>{aL*(Qmh%84U_k-HfOxa(6sWX9dj0t;y^cSmnnq2l-+98{JZ90 zItr{5o&f7!y*Sw(J!vN`32kICzu(xs$QiD$!}`UAk}Q%z=E;;hx#083FeoS z^fs!n2`7>`2s{nhk%9DF@sCrEzSU(OB|z~Yj4lC{$uA~4k--bd`t#SVDaA;1=HhxT zmvq{kV(A#g2qYOCgp)5Rn*&fg>+#IaL5`=XCxEXsZbA3_pryHuM(SCx@Ox8 zv-K z%n2ZH0s4&p05e`Nx7RVoB1`FZ44D9blrBE#AKvxHJvsF2v@aUWiY>*vy2BY)p5jt> zA8ropdsIbAI}N1uDr-Ih`z)L6(WaE0sv~TJ>;US2Pg>H^{5h*YixtaU?!XK;g#$k0 zw^5Pxu7WQe*|?2%yz^s~2)mEh9D(gynr5YKa?wPJ9(f37oMZQ3o>Xo7r1boFnD&Yw*7JQM(e|6Lk_W+S5$g+r~x#029Y<-D}l6FYwn%)BL%lhkKmz&7ASq^vBY! z_)_66rj`Uvu|pFozIi*FkA8r4^yiXmthBgcbAmD#q3PR!OPcyKH(FHw9msTV3F)?A zG*-Y!1`8A1R`sr(Z4e?j(+9RGQgk3TKsfwqR%UE6qYU>a71ISyJq|jRs?>h;h+jw3 z+Fj<>Jo#n zU`QT=HP7oB+@c~O!h%Q6LE^f1iCAHPHJ_+OYKmFoPzO_r%A_hsO_8k`M*C`cwxxTe zWxn4tF=LX5PS4h<>YgCcY^@W^AVz~`U3+5yay^AF#JkNJ$`&7I5wwa(o)z7<(SLjatFQ$IQ8pTHa;Pk zUzDA40p(e8ab8D%tC4sFF7bjhg%}6$>04SnvfRiKRz@Io=m*xSr5mkFr!{lEovp6# z*UKkhVo;A${VLwGs+H4!v-Jyj%a#osfpL-Oe_G1Zjk=_8&U}_V2t563Z%x%Sk#;RL zXc~B1gqI+IasL48uR5~j)uXDq_{+pKaA zoNdS|!>4+5f(SKl_?F8ce=`Cm`IVP7Yg^N_JxUUjH}-w=DclI!!Liq`J-Mt>k1}lO z<>f}thI~Z7+2Y?>wvWvKv{LQJBhb|=IsEJPyU|n0l*yHikIKY#9P|d0!aMZ)0dK5Y zeYVApKGFTt_|$r=c6x54vuPI$n?~TFvZvF(6_nwtu}Sr@cf^{$m#JC94b72FK{B@r zGmPV?{HqoXF5)Q?Ps3i=pp9{ zxfmc+8ly#f9^2H28~Zmv0E=T+VgXf_i{Kj(yX>Hnr)okzjF&h1KWX|64mBDBD-HPk$C32 z{{Rtc4QpgjB4BaJ(#3 zSnR-lw99*AHVAL1#ckW^Zqe=wkOf4IVILsVrMSpKPq`=jE2Pr(ceap5auc&-B>uIL z4YYQ|JhKD?_zq9#DowU>VO7|maz85SwJ5~UG-r(Q zpTfB@;bmzzG>4yDXY;Qvy?HrV9n>KNuJ=4o#9kfNB)O25Dv}&JGj->;y?O79Z68gw zmJv34kVic_8uzb={veyeN+P|o^Q{V;Tmnb8JRfh)zI6D9;#*C6;pB!SXpVdQ!;hsp z3Ub$>(u8G|%Wi>*J3!72bUrqc zV>7`7XB)d8Pg>@5`@4Hfjn^uSqpGOjS0tk44NkgmmFjQFq$RzH)^v%IM#6A1DsA{_Aq+4({{ULZ)8rTWnbU5g z7VjV2l!6Xx&y(%Y?~632{?gIsj@oBQY{xRJWRvyh6>9$gK()Brt7y^|jGk54_4MYb zO=)wZYQBD^j_^3bx#e?@#=0v_23y-XuDm-t7^Pp|KnMdkJvkWSv3hEY=CKxyW2WmW zwmQ^aRDj_mL*G1eR?e_=U_*6Ig{jli=E`g(g*x(={3CKeiN z=a2WthQa2twL6P@8RVDACCY#edJ$JQ(45qk z+Lon#9KrUiWbu>Da{ed2xsKXIeoi?2tG1mx=y6r6W1I24(l{!zl6dHAg^^_Boa5_S z8nn-GBM`ow>Z%vnhF*QE+@l|76X)y8+DNHR1cQ)BKGfPPq~r=!1mpplN+<)M(Id1* z%#tqbea1K+pRIKEa(Rp+jv==L8%77`-ndOZGbG!}?)I-p@Rh9d#0Wcp#z5l&u&bgv zDLb;3ucTbaM2QJJbx=q(m1k`9~fK_meS zp3HhzG;4G^y_$O$z8>m!mXh0~`yxA+jDp9HexE^J-KJ~yf+&PiBgu||zrwyqx|Z`u zyWYniHVmZlPhg|dHM^$x=1npWDP%u6%aixt`T<#0qs;DyPJFsE>@6BiI&tPs@yjC| zvk*T4T@97=NLAu>5w1Y_hFJRk74e#URJ_=#vPP@^%ASAv)qdCGCDL09Xq*O>uw0H! za?1}pn!2%jpJdCc!18e-9Gqky>sy*^#l}b7Jvq&Mcj4cPvdwh`tg?ksC--~jALCx@ zq4@R@YY=A}xyd54<(wHZrxv}_*i$&-s$bs4YC}lqqX#1*xqTnSvE4%Waq^$j6@lZQ z5az{|T#TtBk80Lc!=2rczJ zFXIoy1L8XgBDK1XKostYurvBsi0P5s$*BB_V^(35>JKz&!hKg!-w(>+x@Uu4vEg3{ znGz;3D#*CW-PBi1>;Ym<1T*fz5RCJ6L|vBYRD2_tKrT zOX(LM>ml919{9~%(2=eqf9(Pyk$zInaB_cI;q+}{OB>@hnh%;!0nZ2U72D|AxAxS+ zElSN{myOI1Pu93GP;u1n!_7%ER_YyjL~z`@UDyMak%xaw;MVtsXO;fvg2bP7K z0RI3#darYRtaxfKEgCD!7auPGuqLQ!HqU!_xA4lg*F)w*?_4hI=q>6OH&3fb`qI2= zA8-t#2kBi6j*qR+5t~HSwpqE#uKxhKa55_kTGut%AzeQH+9#87UolsP^)&rH3v{;& z9;+-s6O~?o{#2~`lG)13ra=wyA80I8e-RZ9r5uu3W64QKJai_ut~5CH7=GN7G);}f zdwN$Hb#Z-TaAAt$b{mb|G4!tbYoB3CS{&ZFaBS_}L_S+%p4H|aD!mS*`M)tIE1K^- zd#>+u8^AYU5pEu!&Vm5?5906H?MR{3(1~q z#|t5B1I7TXTkiuwdP%onQy`oWc&+PM?JrjaWl#qgP(Q77ns$)!AZvF)fyrWWbIo$f zq@$`evU{V*HQ$H2k`n3WZN>mm{VSSp3hGwVERtKwsUI0D#eHv}=}w?+glAmUyI+w~i4s>$!~McLXVZ zxCb?t<4+v@t{E-kmkgYfxb!16gQECaacd)snDElFq}9$dTh(r-cZqj0JYa6gIIN8h;`-L;h}GM3Wrj_9?w|1bIU$Zlnj%TZAfDBs zVeszKD~TE8jP2tAO;W@`Xpo&I_dJ^F*8b(!V#$NfMtB~+_0f1+!1p(IC>}h<;N&(4 z&$V`wY4(B`LJJUQ_C*G!pb z3hIA{AbMAz>6USQnS^K+&~e9FwW-+6Y~?)I*%yK~^{MS=jtgy%7U0p05!8R2*A%BI z>dvlJ6=R<9G#7Ukzv$@lV~#rgE6j$2t4pbaf2YeDmmoU)z>ib;*Rg2Qf5gd>LA_LD zf_m3atwUiBl_kNp1(aun1Jboq(2b8HvC-|}x7=VGz{e^-m2-YDX$UaI8mjPkUIkn6 zcZlxoFD67EyH_iL*11c4PHk53iCL6mvGlE=o7Bp0p$>(j%W4DyPSus7_=amOVPYGe+ylBY z1_{P /* for scanf */ +#include /* for strcmp */ + +/* + + + + + <offsets border="" title-spacing="" bullet-border="" bullet-spacing=""/> + <background img="" | color= "" /> + <transition style="cube|flip|fade" /> + </defualts> + <slide> + <background img="" | color= "" /> + <title font="" color=""> + + + + + + + .... + + + */ + +typedef struct OptParseInfo OptParseInfo; + +typedef enum +{ + INITIAL, + IN_OPT, + IN_DEFAULTS, + IN_DEFAULTS_TITLE, + IN_DEFAULTS_BULLET, + IN_DEFAULTS_TRANS, + IN_DEFAULTS_BG, + IN_FONTS, + IN_OFFSETS, + IN_SLIDE, + IN_TITLE, + IN_BULLET, + IN_TRANS, + IN_IMG, + IN_BG, + FINAL +} +OptParseState; + + +typedef enum +{ + TAG_UNKNOWN = 0, + TAG_OPT, + TAG_DEFAULTS, + TAG_DEFAULTS_TITLE, + TAG_DEFAULTS_BULLET, + TAG_DEFAULTS_TRANS, + TAG_DEFAULTS_BG, + TAG_SLIDE, + TAG_TITLE, + TAG_BULLET, + TAG_TRANS, + TAG_IMG, + TAG_BG + +} OptParseTag; + +const struct { gchar *name; OptTransitionStyle style; } _style_lookup[] = + { + { "cube", OPT_TRANSITION_CUBE }, + { "page", OPT_TRANSITION_PAGE }, + { "flip", OPT_TRANSITION_FLIP }, + { "zoom", OPT_TRANSITION_ZOOM }, + { "yzflip", OPT_TRANSITION_YZ_FLIP }, + { "fade", OPT_TRANSITION_FADE }, + { NULL, 0 } + }; + + +struct OptParseInfo +{ + OptShow *show; + OptParseState state; + OptSlide *slide; + + GdkPixbuf *default_bg; + + GString *title_buf; + gchar *title_font; + ClutterColor title_color; + ClutterColor title_default_color; + + GString *bullet_buf; + gchar *bullet_font; + ClutterColor bullet_color; + ClutterColor bullet_default_color; + OptSlideBulletSymbol bullet_sym; + + OptTransitionStyle style_default; +}; + +static void +color_from_string (const gchar *spec, ClutterColor *color) +{ + if (spec[0] == '#' && strlen(spec) == 9) + { + guint32 result; + if (sscanf (spec+1, "%x", &result)) + { + color->red = result >> 24 & 0xff; + color->green = (result >> 16) & 0xff; + color->blue = (result >> 8) & 0xff; + color->alpha = result & 0xff; + return; + } + } + + g_warning("unable to parse '%s' as a color in format #RRGGBBAA", spec); +} + +static OptTransitionStyle +lookup_style (const gchar *name) +{ + gint i = 0; + + while (_style_lookup[i].name != NULL) + { + if (!strcmp(name, _style_lookup[i].name)) + return _style_lookup[i].style; + + i++; + } + + return OPT_TRANSITION_ANY; +} + +static int +expect_tag (GMarkupParseContext *context, + const gchar *actor_name, + GError **error, + ...) +{ + va_list vap; + const char *expected; + int n_expected = 0; + + va_start (vap, error); + expected = va_arg (vap, const char *); + while (expected) + { + int value = va_arg (vap, int); + n_expected++; + + if (strcmp (expected, actor_name) == 0) + return value; + + expected = va_arg (vap, const char *); + } + + va_end (vap); + + if (n_expected == 0) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unexpected tag '%s', no tags expected", + actor_name); + } + else + { + GString *tag_string = g_string_new (NULL); + + va_start (vap, error); + expected = va_arg (vap, const char *); + while (expected) + { + va_arg (vap, int); + + if (tag_string->len) + g_string_append (tag_string, ", "); + g_string_append (tag_string, expected); + + expected = va_arg (vap, const char *); + } + + va_end (vap); + + if (n_expected == 1) + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unexpected tag '%s', expected '%s'", + actor_name, tag_string->str); + else + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unexpected tag '%s', expected one of: %s", + actor_name, tag_string->str); + + g_string_free (tag_string, TRUE); + } + + return 0; +} + +static gboolean +extract_attrs (GMarkupParseContext *context, + const gchar **attribute_names, + const gchar **attribute_values, + GError **error, + ...) +{ + va_list vap; + const char *name; + gboolean *attr_map; + gboolean nattrs = 0; + int i; + + for (i = 0; attribute_names[i]; i++) + nattrs++; + + attr_map = g_new0 (gboolean, nattrs); + + va_start (vap, error); + name = va_arg (vap, const char *); + while (name) + { + gboolean mandatory = va_arg (vap, gboolean); + const char **loc = va_arg (vap, const char **); + gboolean found = FALSE; + + for (i = 0; attribute_names[i]; i++) + { + if (!attr_map[i] && strcmp (attribute_names[i], name) == 0) + { + if (found) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Duplicate attribute '%s'", name); + return FALSE; + } + + *loc = attribute_values[i]; + found = TRUE; + attr_map[i] = TRUE; + } + } + + if (!found && mandatory) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Missing attribute '%s'", name); + return FALSE; + } + + name = va_arg (vap, const char *); + } + + for (i = 0; i < nattrs; i++) + if (!attr_map[i]) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, + "Unknown attribute '%s'", attribute_names[i]); + return FALSE; + } + + return TRUE; +} + + +static void +opt_parse_on_start_actor (GMarkupParseContext *context, + const gchar *actor_name, + const gchar **attr_names, + const gchar **attr_values, + gpointer user_data, + GError **error) +{ + OptParseTag tag; + OptParseInfo *info = user_data; + + switch (info->state) + { + case INITIAL: + if (expect_tag (context, actor_name, error, "opt", TAG_OPT, NULL) + && extract_attrs (context, attr_names, attr_values, error, NULL)) + info->state = IN_OPT; + break; + + /***** Top level, just defaults and slide *****/ + + case IN_OPT: + tag = expect_tag (context, actor_name, error, + "defaults", TAG_DEFAULTS, + "slide", TAG_SLIDE, + NULL); + switch (tag) + { + case TAG_DEFAULTS: + info->state = IN_DEFAULTS; + break; + case TAG_SLIDE: + { + OptTransition *trans; + + info->state = IN_SLIDE; + info->slide = opt_slide_new (info->show); + + g_object_set (info->show, "background", info->default_bg, NULL); + + trans = opt_transition_new (info->style_default); + opt_transition_set_from (trans, info->slide); + opt_slide_set_transition (info->slide, trans); + } + break; + default: + break; + } + break; + + /***** Default tags *****/ + + case IN_DEFAULTS: + tag = expect_tag (context, actor_name, error, + "title", TAG_DEFAULTS_TITLE, + "bullet", TAG_DEFAULTS_BULLET, + "transition", TAG_DEFAULTS_TRANS, + "background", TAG_DEFAULTS_BG, + NULL); + switch (tag) + { + case TAG_DEFAULTS_TRANS: + { + const char *style_str = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "style", FALSE, &style_str, + NULL)) + { + info->style_default = lookup_style (style_str); + } + } + info->state = IN_DEFAULTS_TRANS; + break; + case TAG_DEFAULTS_TITLE: + { + const char *color = NULL; + const char *font = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "font", FALSE, &font, + "color", FALSE, &color, + NULL)) + { + if (font) + g_object_set(info->show, + "title-font", font, + NULL); + + if (color) + { + color_from_string (color, &info->title_default_color); + } + } + } + info->state = IN_DEFAULTS_TITLE; + break; + + case TAG_DEFAULTS_BULLET: + { + const char *color = NULL; + const char *font = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "font", FALSE, &font, + "color", FALSE, &color, + + NULL)) + { + if (font) + g_object_set(info->show, + "bullet-font", font, + NULL); + + if (color) + { + color_from_string (color, &info->bullet_default_color); + + opt_show_set_bullet_color (info->show, + &info->bullet_default_color); + } + } + } + info->state = IN_DEFAULTS_BULLET; + break; + case TAG_DEFAULTS_BG: + { + const char *src = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "src", TRUE, &src, + NULL)) + { + GdkPixbuf *pic; + + pic = gdk_pixbuf_new_from_file_at_size (src, + CLUTTER_STAGE_WIDTH(), + CLUTTER_STAGE_HEIGHT(), + NULL); + + if (pic == NULL) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unable to load '%s'", src); + } + + info->default_bg = pic; + } + } + info->state = IN_DEFAULTS_BG; + break; + default: + g_assert_not_reached (); + break; + } + + break; + + /***** Slide Tags *****/ + + case IN_SLIDE: + tag = expect_tag (context, actor_name, error, + "title", TAG_TITLE, + "bullet", TAG_BULLET, + "img", TAG_IMG, + "transition", TAG_TRANS, + "background", TAG_BG, + NULL); + switch (tag) + { + case TAG_BG: + { + const char *src = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "src", TRUE, &src, + NULL)) + { + GdkPixbuf *pic = NULL; + + pic = gdk_pixbuf_new_from_file_at_size (src, + CLUTTER_STAGE_WIDTH(), + CLUTTER_STAGE_HEIGHT(), + NULL); + + if (pic == NULL) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unable to load '%s'", src); + } + + opt_slide_set_background_pixbuf (info->slide, pic); + + g_object_unref (pic); + } + info->state = IN_BG; + } + break; + case TAG_TRANS: + { + const char *style_str = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "style", TRUE, &style_str, + NULL)) + { + OptTransitionStyle style; + OptTransition *trans; + + style = lookup_style (style_str); + + trans = opt_slide_get_transition (info->slide); + opt_transition_set_style (trans, style); + } + info->state = IN_TRANS; + } + break; + case TAG_IMG: + { + gchar *img_path = NULL; + + if (extract_attrs (context, attr_names, attr_values, error, + "src", TRUE, &img_path, + NULL)) + { + GdkPixbuf *pix = NULL; + ClutterActor *pic = NULL; + + pix = gdk_pixbuf_new_from_file (img_path, NULL); + + if (pix == NULL) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unable to load '%s'", img_path); + } + else + { + pic = clutter_texture_new (); + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (pic), + gdk_pixbuf_get_pixels (pix), + gdk_pixbuf_get_has_alpha (pix), + gdk_pixbuf_get_width (pix), + gdk_pixbuf_get_height (pix), + gdk_pixbuf_get_rowstride (pix), + 4, 0, + NULL); + + opt_slide_add_bullet (info->slide, pic); + } + } + info->state = IN_IMG; + } + break; + + case TAG_TITLE: + { + const char *color = NULL; + const char *font = NULL; + + info->state = IN_TITLE; + info->title_buf = g_string_new(""); + info->title_font = NULL; + info->title_color = info->title_default_color; + + if (extract_attrs (context, attr_names, attr_values, error, + "font", FALSE, &font, + "color", FALSE, &color, + NULL)) + { + if (font) + info->title_font = g_strdup(font); + + if (color) + color_from_string(color, &info->title_color); + + } + } + break; + + case TAG_BULLET: + { + const char *color = NULL; + const char *font = NULL; + const char *sym = NULL; + + info->state = IN_BULLET; + info->bullet_buf = g_string_new(""); + info->bullet_font = NULL; + info->bullet_color = info->bullet_default_color; + info->bullet_sym = OPT_BULLET_REGULAR; + + if (extract_attrs (context, attr_names, attr_values, error, + "font", FALSE, &font, + "color", FALSE, &color, + "symbol", FALSE, &sym, + NULL)) + { + if (font) + info->bullet_font = g_strdup(font); + + if (color) + color_from_string(color, &info->bullet_color); + + if (sym && !strcmp(sym, "none")) + info->bullet_sym = OPT_BULLET_NONE; + } + } + break; + default: + break; + } + default: + break; + } +} + +static void +opt_parse_on_end_actor (GMarkupParseContext *context, + const gchar *actor_name, + gpointer user_data, + GError **error) +{ + OptParseInfo *info = user_data; + + switch (info->state) + { + case INITIAL: + g_assert_not_reached (); + break; + case IN_OPT: + info->state = FINAL; + break; + case IN_SLIDE: + opt_show_add_slide (info->show, info->slide); + info->state = IN_OPT; + info->slide = NULL; + break; + case IN_DEFAULTS: + info->state = IN_OPT; + break; + case IN_DEFAULTS_TITLE: + case IN_DEFAULTS_BULLET: + case IN_DEFAULTS_TRANS: + case IN_DEFAULTS_BG: + info->state = IN_DEFAULTS; + break; + case IN_BG: + case IN_IMG: + info->state = IN_SLIDE; + break; + case IN_TITLE: + opt_slide_set_title (info->slide, + info->title_buf->str, + info->title_font, + &info->title_color); + g_string_free (info->title_buf, TRUE); + + if (info->title_font) + g_free (info->title_font); + info->title_font = NULL; + info->bullet_buf = NULL; + info->state = IN_SLIDE; + break; + case IN_BULLET: + opt_slide_add_bullet_text_item (info->slide, + info->bullet_buf->str, + info->bullet_font, + info->bullet_sym, + &info->bullet_color); + g_string_free (info->bullet_buf, TRUE); + if (info->bullet_font) + g_free (info->bullet_font); + info->bullet_font = NULL; + info->bullet_buf = NULL; + info->state = IN_SLIDE; + break; + case IN_TRANS: + info->state = IN_SLIDE; + break; + case FINAL: + g_assert_not_reached (); + break; + default: + break; + } +} + + +static void +opt_parse_on_text (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) +{ + int i; + OptParseInfo *info = user_data; + + switch (info->state) + { + case IN_TITLE: + g_string_append_len (info->title_buf, text, text_len); + break; + case IN_BULLET: + g_string_append_len (info->bullet_buf, text, text_len); + break; + case INITIAL: + case IN_IMG: + case IN_OPT: + case IN_DEFAULTS: + case IN_DEFAULTS_TITLE: + case IN_DEFAULTS_BULLET: + case IN_DEFAULTS_TRANS: + case IN_DEFAULTS_BG: + case IN_FONTS: + case IN_OFFSETS: + case IN_SLIDE: + case IN_BG: + case IN_TRANS: + case FINAL: + for (i = 0; i < text_len; i++) + if (!g_ascii_isspace (text[i])) + { + g_set_error (error, + G_MARKUP_ERROR, + G_MARKUP_ERROR_INVALID_CONTENT, + "Unexpected text '%s' in presentation file", + text); + return; + } + break; + } +} + + +gboolean +opt_config_load (OptShow *show, + const gchar *filename, + GError **error) +{ + GMarkupParseContext *context; + OptParseInfo info; + char *contents; + gsize len; + gboolean result; + + const GMarkupParser parser = + { + opt_parse_on_start_actor, + opt_parse_on_end_actor, + opt_parse_on_text, + NULL, + NULL + }; + + memset (&info, 0, sizeof(OptParseInfo)); + + info.state = INITIAL; + info.show = show; + /* + info.bullet_default_color = { 0, 0, 0, 0xff }; + info.title_default_color = { 0, 0, 0, 0xff }; + */ + info.style_default = OPT_TRANSITION_FADE; + + if (!g_file_get_contents (filename, &contents, &len, error)) + return FALSE; + + context = g_markup_parse_context_new (&parser, 0, &info, NULL); + result = g_markup_parse_context_parse (context, contents, len, error); + + return result; +} diff --git a/opt/opt-menu.c b/opt/opt-menu.c new file mode 100644 index 0000000..5560dd2 --- /dev/null +++ b/opt/opt-menu.c @@ -0,0 +1,496 @@ +/* -*- mode:C; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ + +#include "opt.h" + +#define DEFAULT_FONT_SIZE 20 +#define DEFAULT_FONT "Sans Bold 20" +#define ITEM_HEIGHT 24 +#define TEXT_BORDER 4 +#define MENU_BORDER 1 + +G_DEFINE_TYPE (OptMenu, opt_menu, CLUTTER_TYPE_GROUP); + +static void opt_menu_up (OptMenu * menu); +static void opt_menu_down (OptMenu * menu); +static void opt_menu_activate (OptMenu * menu); +static void opt_menu_select_item (OptMenu * menu, gint slide_no); + +struct OptMenuPrivate +{ + guint height; + gint current_slide; + gint active_item; + gint item_count; + + ClutterColor color_normal; + ClutterColor color_sel; + ClutterColor color_bg; + + OptShow *show; + ClutterActor *background; + ClutterActor *selection; + + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behaviour_s; + ClutterBehaviour *behaviour_o; + + gboolean size_set; + gboolean hiding; + guint timeout_id; + gulong button_release_signal_id; + gulong key_release_signal_id; +}; + +/* Set sizes for background and selection -- called once the + * menu is fully populated + */ +static void +opt_menu_init_size (OptMenu * menu) +{ + guint width, height; + clutter_actor_get_size (CLUTTER_ACTOR (menu), &width, &height); + + width += 2 * TEXT_BORDER; + + clutter_actor_set_size (CLUTTER_ACTOR (menu), + width, height); + + clutter_actor_set_size (CLUTTER_ACTOR (menu->priv->background), + width, height); + + clutter_actor_set_size (CLUTTER_ACTOR (menu->priv->selection), + width - 2 * MENU_BORDER, ITEM_HEIGHT); + + menu->priv->height = height; + menu->priv->size_set = TRUE; +} + +/* Input callbacks + */ +static void +opt_menu_key_release_cb (ClutterStage *stage, + ClutterKeyEvent *kev, + gpointer user_data) +{ + OptMenu *menu = OPT_MENU (user_data); + + if (!CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (menu))) + return; + + switch (clutter_key_event_symbol (kev)) + { + case CLUTTER_Up: + opt_menu_up (menu); + break; + case CLUTTER_Down: + opt_menu_down (menu); + break; + case CLUTTER_Return: + opt_menu_activate (menu); + break; + + default: + opt_menu_popdown (menu); + break; + } +} + +static void +opt_menu_button_release_cb (ClutterStage *stage, + ClutterButtonEvent *bev, + gpointer user_data) +{ + OptMenu *menu = OPT_MENU (user_data); + + if (!CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (menu))) + return; + + /* Allow a mouse wheel to control the menu (cannot handle + * buttons 1 and 3 here, because those are used to control the slides). + */ + + if (bev->button == 4) + opt_menu_up (menu); + else if (bev->button == 5) + opt_menu_down (menu); + else if (bev->button == 2) + opt_menu_activate (menu); +} + +static void +opt_menu_finalize (GObject *object) +{ + OptMenu *self = OPT_MENU(object); + + g_object_unref (G_OBJECT (self->priv->behaviour_s)); + g_object_unref (G_OBJECT (self->priv->behaviour_o)); + g_object_unref (G_OBJECT (self->priv->timeline)); + + if (self->priv) + { + g_free(self->priv); + self->priv = NULL; + } + + G_OBJECT_CLASS (opt_menu_parent_class)->finalize (object); +} + +static void +opt_menu_class_init (OptMenuClass *klass) +{ + GObjectClass * object_class = (GObjectClass*) klass; + object_class->finalize = opt_menu_finalize; +} + +static void +opt_menu_init (OptMenu *self) +{ + OptMenuPrivate *priv = g_new0 (OptMenuPrivate, 1); + self->priv = priv; +} + +static void +opt_menu_hide_cb (ClutterTimeline * timeline, gpointer data) +{ + OptMenu *menu = OPT_MENU (data); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (menu)) && + menu->priv->hiding) + { + ClutterActor * stage = clutter_stage_get_default(); + + clutter_actor_hide_all (CLUTTER_ACTOR (menu)); + clutter_group_remove (CLUTTER_GROUP (stage), CLUTTER_ACTOR (menu)); + opt_menu_select_item (menu, 0); + menu->priv->hiding = FALSE; + + if (menu->priv->timeout_id) + { + g_source_remove (menu->priv->timeout_id); + menu->priv->timeout_id = 0; + } + } +} + +OptMenu* +opt_menu_new (OptShow * show) +{ + OptMenu *menu = g_object_new (OPT_TYPE_MENU, NULL); + + /* TODO -- maybe allow these to be customised + */ + menu->priv->color_normal.red = 0xff; + menu->priv->color_normal.green = 0xff; + menu->priv->color_normal.blue = 0xff; + menu->priv->color_normal.alpha = 0xff; + + menu->priv->color_sel.red = 0; + menu->priv->color_sel.green = 0; + menu->priv->color_sel.blue = 0; + menu->priv->color_sel.alpha = 0xff; + + menu->priv->color_bg.red = 0x7f; + menu->priv->color_bg.green = 0x7f; + menu->priv->color_bg.blue = 0x7f; + menu->priv->color_bg.alpha = 0xcf; + + menu->priv->show = show; + + menu->priv->background = + clutter_rectangle_new_with_color (&menu->priv->color_bg); + + clutter_rectangle_set_border_color(CLUTTER_RECTANGLE(menu->priv->background), + &menu->priv->color_normal); + clutter_rectangle_set_border_width(CLUTTER_RECTANGLE(menu->priv->background), + 1); + + clutter_group_add (CLUTTER_GROUP (menu), + CLUTTER_ACTOR (menu->priv->background)); + + menu->priv->selection = + clutter_rectangle_new_with_color (&menu->priv->color_normal); + + clutter_group_add (CLUTTER_GROUP (menu), + CLUTTER_ACTOR (menu->priv->selection)); + clutter_actor_set_position (CLUTTER_ACTOR (menu->priv->selection), + MENU_BORDER, 0); + + menu->priv->timeline = clutter_timeline_new (10, 26); + + g_signal_connect (menu->priv->timeline, "completed", + G_CALLBACK (opt_menu_hide_cb), menu); + + menu->priv->alpha = clutter_alpha_new_full (menu->priv->timeline, + CLUTTER_LINEAR); + + menu->priv->behaviour_s = + clutter_behaviour_scale_new (menu->priv->alpha, + 0.0, 0.0, 1.0, 1.0); + + clutter_behaviour_apply (menu->priv->behaviour_s, CLUTTER_ACTOR (menu)); + + menu->priv->behaviour_o = + clutter_behaviour_opacity_new (menu->priv->alpha, 0x00, 0xff); + + clutter_behaviour_apply (menu->priv->behaviour_o, CLUTTER_ACTOR (menu)); + + return menu; +} + +/* + * Adjusts the postition of the menu if the selected item is + * off screen + */ +static void +opt_menu_adjust_postion (OptMenu * menu) +{ + if (menu->priv->height > CLUTTER_STAGE_HEIGHT ()) + { + gint x = clutter_actor_get_x (CLUTTER_ACTOR (menu)); + gint y = clutter_actor_get_y (CLUTTER_ACTOR (menu)); + gint item_offset = menu->priv->active_item * ITEM_HEIGHT + y; + + if (item_offset < 0) + { + /* attemp to shift the item to the middle of screen, but no so that + * the the menu would detach from the top of stage + */ + gint screen_itms = CLUTTER_STAGE_HEIGHT () / ITEM_HEIGHT; + gint shift = ITEM_HEIGHT * screen_itms / 2 - item_offset; + + y += shift; + + if (shift > 0) + y = 0; + } + else if (item_offset > CLUTTER_STAGE_HEIGHT () - ITEM_HEIGHT) + { + /* attemp to shift the item to the middle of screen, but no so that + * the the menu would detach from the bottom of stage + */ + gint screen_itms = CLUTTER_STAGE_HEIGHT () / ITEM_HEIGHT; + gint shift = ITEM_HEIGHT * screen_itms / 2 + item_offset; + gint max_shft = (menu->priv->item_count - screen_itms)*ITEM_HEIGHT; + + if (shift > max_shft) + shift = max_shft; + + y -= shift; + } + + clutter_actor_set_position (CLUTTER_ACTOR (menu), x, y); + } +} + +/* + * Selects nth item in the menu + */ +static void +opt_menu_select_item (OptMenu * menu, gint slide_no) +{ + if (slide_no < 0 || slide_no >= menu->priv->item_count) + return; + + if (menu->priv->active_item != slide_no) + { + /* Plus two, because the first two children are the background + * and selection rectangles + */ + ClutterActor * active = + clutter_group_get_nth_child (CLUTTER_GROUP (menu), + menu->priv->active_item + 2); + + clutter_text_set_color (CLUTTER_TEXT (active), + &menu->priv->color_normal); + + active = clutter_group_get_nth_child (CLUTTER_GROUP (menu), + slide_no + 2); + + clutter_text_set_color (CLUTTER_TEXT (active), &menu->priv->color_sel); + + clutter_actor_set_position (CLUTTER_ACTOR (menu->priv->selection), + MENU_BORDER, slide_no * ITEM_HEIGHT); + + menu->priv->active_item = slide_no; + + opt_menu_adjust_postion (menu); + } +} + +/* + * Callback to automatically close the menu after given period of inactivity + */ +static gboolean +opt_menu_timeout_cb (gpointer data) +{ + OptMenu * menu = data; + + opt_menu_popdown (menu); + menu->priv->timeout_id = 0; + + return FALSE; +} + +/* + * move one item up in the menu + */ +static void +opt_menu_up (OptMenu * menu) +{ + opt_menu_select_item (menu, menu->priv->active_item - 1); + + if (menu->priv->timeout_id) + { + g_source_remove (menu->priv->timeout_id); + menu->priv->timeout_id = g_timeout_add (5000, opt_menu_timeout_cb, menu); + } +} + +/* move one item down in the menu */ +static void +opt_menu_down (OptMenu * menu) +{ + opt_menu_select_item (menu, menu->priv->active_item + 1); + + if (menu->priv->timeout_id) + { + g_source_remove (menu->priv->timeout_id); + menu->priv->timeout_id = g_timeout_add (5000, opt_menu_timeout_cb, menu); + } +} + +/* + * Jump to the slide represented by the active menu item + */ +static void +opt_menu_activate (OptMenu * menu) +{ + int step = menu->priv->active_item - menu->priv->current_slide; + + opt_menu_popdown (menu); + + if (step) + opt_show_skip (menu->priv->show, step); +} + +/* + * Called when we mode to a different slide + */ +void +opt_menu_set_current_slide (OptMenu * menu, gint slide_no) +{ + opt_menu_select_item (menu, slide_no); + menu->priv->current_slide = slide_no; +} + +/* + * Adds a slide to the menu + */ +void +opt_menu_add_slide (OptMenu * menu, OptSlide * slide) +{ + static gint y = 0; + + gchar * text = NULL; + const gchar * font = DEFAULT_FONT; + const ClutterText * title = CLUTTER_TEXT (opt_slide_get_title (slide)); + ClutterActor * label; + + if (title) + text = g_strdup_printf ("Slide %d: %s", menu->priv->item_count + 1, + clutter_text_get_text ((ClutterText*)title)); + else + text = g_strdup_printf ("Slide %d", menu->priv->item_count + 1); + + if (!menu->priv->item_count) + label = clutter_text_new_full (font, text, &menu->priv->color_sel); + else + label = clutter_text_new_full (font, text, &menu->priv->color_normal); + + g_free (text); + + clutter_actor_set_position (label, TEXT_BORDER, y); + y += ITEM_HEIGHT; + + clutter_group_add (CLUTTER_GROUP (menu), label); + menu->priv->item_count++; +} + +/* + * Shows menu + */ +void +opt_menu_pop (OptMenu * menu) +{ + if (!CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (menu))) + { + guint width, height; + + ClutterActor * stage = clutter_stage_get_default(); + + if (!menu->priv->size_set) + opt_menu_init_size (menu); + + clutter_actor_get_size (CLUTTER_ACTOR (menu), &width, &height); + + clutter_actor_set_scale (CLUTTER_ACTOR (menu), 0.0, 0.0); + clutter_timeline_set_direction (menu->priv->timeline, + CLUTTER_TIMELINE_FORWARD); + + clutter_group_add (CLUTTER_GROUP(stage), CLUTTER_ACTOR(menu)); + + clutter_actor_set_position (CLUTTER_ACTOR (menu), 0, 0); + + /* Connect up for input event */ + menu->priv->button_release_signal_id = + g_signal_connect (stage, "button-release-event", + G_CALLBACK (opt_menu_button_release_cb), menu); + menu->priv->key_release_signal_id = + g_signal_connect (stage, "key-release-event", + G_CALLBACK (opt_menu_key_release_cb), menu); + + opt_menu_select_item (menu, menu->priv->current_slide); + clutter_actor_show_all (CLUTTER_ACTOR (menu)); + + menu->priv->timeout_id = g_timeout_add (5000, opt_menu_timeout_cb, menu); + menu->priv->hiding = FALSE; + clutter_timeline_rewind (menu->priv->timeline); + clutter_timeline_start (menu->priv->timeline); + } +} + +/* + * Hides menu, if shown + */ +void +opt_menu_popdown (OptMenu * menu) +{ + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (menu))) + { + ClutterActor * stage = clutter_stage_get_default(); + + if (menu->priv->button_release_signal_id) + { + g_signal_handler_disconnect (stage, + menu->priv->button_release_signal_id); + menu->priv->button_release_signal_id = 0; + } + + if (menu->priv->key_release_signal_id) + { + g_signal_handler_disconnect (stage, + menu->priv->key_release_signal_id); + menu->priv->key_release_signal_id = 0; + } + + clutter_actor_set_scale (CLUTTER_ACTOR (menu), 1.0, 1.0); + clutter_timeline_set_direction (menu->priv->timeline, + CLUTTER_TIMELINE_BACKWARD); + + menu->priv->hiding = TRUE; + clutter_timeline_rewind (menu->priv->timeline); + clutter_timeline_start (menu->priv->timeline); + } +} + diff --git a/opt/opt-menu.h b/opt/opt-menu.h new file mode 100644 index 0000000..91ae7ca --- /dev/null +++ b/opt/opt-menu.h @@ -0,0 +1,55 @@ +#ifndef _HAVE_OPT_MENU_H +#define _HAVE_OPT_MENU_H + +#include + +#include "opt.h" + +G_BEGIN_DECLS + +#define OPT_TYPE_MENU opt_menu_get_type() + +#define OPT_MENU(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + OPT_TYPE_MENU, OptMenu)) + +#define OPT_MENU_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + OPT_TYPE_MENU, OptMenuClass)) + +#define OPT_IS_MENU(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + OPT_TYPE_MENU)) + +#define OPT_IS_MENU_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + OPT_TYPE_MENU)) + +#define OPT_MENU_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + OPT_TYPE_MENU, OptMenuClass)) + +typedef struct OptMenuPrivate OptMenuPrivate; +typedef struct _OptMenuClass OptMenuClass; + +struct _OptMenu +{ + ClutterGroup parent; + OptMenuPrivate *priv; +}; + +struct _OptMenuClass +{ + /*< private >*/ + ClutterGroupClass parent_class; +}; + +OptMenu *opt_menu_new (OptShow * show); +void opt_menu_add_slide (OptMenu * menu, OptSlide * slide); +void opt_menu_set_current_slide (OptMenu * menu, gint slide_no); +void opt_menu_pop (OptMenu * menu); +void opt_menu_popdown (OptMenu * menu); + +G_END_DECLS + +#endif diff --git a/opt/opt-show.c b/opt/opt-show.c new file mode 100644 index 0000000..50fa126 --- /dev/null +++ b/opt/opt-show.c @@ -0,0 +1,695 @@ + +#include "opt.h" + +G_DEFINE_TYPE (OptShow, opt_show, G_TYPE_OBJECT); + +#define TITLE_BORDER_SIZE 8 /* all round */ +#define TITLE_BULLET_PAD 5 /* between title and bullet */ +#define BULLET_BORDER_SIZE 10 /* sides */ +#define BULLET_PAD 5 /* between bullets */ + +#define TITLE_FONT "VistaSansMed 50" +#define BULLET_FONT "VistaSansMed 40" + +struct OptShowPrivate +{ + GList *slides; + gint current_slide_num; + guint num_slides; + + gint title_border_size; + gint title_bullet_pad; + gint bullet_border_size; + gint bullet_pad; + gchar* title_font; + gchar* bullet_font; + ClutterActor *bullet_texture; + GdkPixbuf *background; + + ClutterActor *position_label; + ClutterActor *position_rect; + guint position_label_visible; + + ClutterTimeline *transition; + ClutterActor *bg; + + gulong trans_signal_id; + + OptMenu *menu; +}; + +enum +{ + PROP_0, + PROP_TITLE_BORDER_SIZE, + PROP_TITLE_BULLET_PAD, + PROP_BULLET_BORDER_SIZE, + PROP_BULLET_PAD, + PROP_TITLE_FONT, + PROP_BULLET_FONT, + PROP_BACKGROUND +}; + + +static void +opt_show_dispose (GObject *object) +{ + OptShow *self = OPT_SHOW(object); + + if (self->priv) + { + + } + + G_OBJECT_CLASS (opt_show_parent_class)->dispose (object); +} + +static void +opt_show_finalize (GObject *object) +{ + OptShow *self = OPT_SHOW(object); + + g_object_unref (G_OBJECT (self->priv->menu)); + + if (self->priv) + { + g_free(self->priv); + self->priv = NULL; + } + + G_OBJECT_CLASS (opt_show_parent_class)->finalize (object); +} + +static void +opt_show_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + + OptShow *show = OPT_SHOW(object); + OptShowPrivate *priv; + + priv = show->priv; + + switch (prop_id) + { + case PROP_TITLE_BORDER_SIZE: + priv->title_border_size = g_value_get_int (value); + break; + case PROP_TITLE_BULLET_PAD: + priv->title_bullet_pad = g_value_get_int (value); + break; + case PROP_BULLET_BORDER_SIZE: + priv->bullet_border_size = g_value_get_int (value); + break; + case PROP_BULLET_PAD: + priv->bullet_pad = g_value_get_int (value); + break; + case PROP_TITLE_FONT: + if (priv->title_font) g_free (priv->title_font); + priv->title_font = g_value_dup_string (value); + break; + case PROP_BULLET_FONT: + if (priv->bullet_font) g_free (priv->bullet_font); + priv->bullet_font = g_value_dup_string (value); + break; + case PROP_BACKGROUND: + priv->background = g_value_get_object (value); + + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (priv->bg), + gdk_pixbuf_get_pixels (priv->background), + gdk_pixbuf_get_has_alpha (priv->background), + gdk_pixbuf_get_width (priv->background), + gdk_pixbuf_get_height (priv->background), + gdk_pixbuf_get_rowstride (priv->background), + gdk_pixbuf_get_n_channels (priv->background), + 0, + NULL); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +opt_show_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + OptShow *show = OPT_SHOW(object); + OptShowPrivate *priv; + + priv = show->priv; + + switch (prop_id) + { + case PROP_TITLE_BORDER_SIZE: + g_value_set_int (value, priv->title_border_size); + break; + case PROP_TITLE_BULLET_PAD: + g_value_set_int (value, priv->title_bullet_pad); + break; + case PROP_BULLET_BORDER_SIZE: + g_value_set_int (value, priv->bullet_border_size); + break; + case PROP_BULLET_PAD: + g_value_set_int (value, priv->bullet_pad); + break; + case PROP_TITLE_FONT: + g_value_set_string (value, priv->title_font); + break; + case PROP_BULLET_FONT: + g_value_set_string (value, priv->bullet_font); + break; + case PROP_BACKGROUND: + g_value_set_object (value, priv->background); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +opt_show_class_init (OptShowClass *klass) +{ + GObjectClass *object_class; + + object_class = (GObjectClass*) klass; + + /* GObject */ + object_class->finalize = opt_show_finalize; + object_class->dispose = opt_show_dispose; + object_class->set_property = opt_show_set_property; + object_class->get_property = opt_show_get_property; + + g_object_class_install_property + (object_class, PROP_TITLE_BORDER_SIZE, + g_param_spec_int ("title-border-size", + "percentage", + "percentage", + 0, + 100, + TITLE_BORDER_SIZE, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_TITLE_BULLET_PAD, + g_param_spec_int ("title-bullet-pad", + "percentage", + "percentage", + 0, + 100, + TITLE_BULLET_PAD, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_BULLET_BORDER_SIZE, + g_param_spec_int ("bullet-border-size", + "percentage", + "percentage", + 0, + 100, + BULLET_BORDER_SIZE, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_BULLET_PAD, + g_param_spec_int ("bullet-pad", + "percentage", + "percentage", + 0, + 100, + BULLET_PAD, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_BULLET_FONT, + g_param_spec_string ("bullet-font", + "bullet font name", + "bullet font name", + BULLET_FONT, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_TITLE_FONT, + g_param_spec_string ("title-font", + "title font name", + "title font name", + TITLE_FONT, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE)); + + g_object_class_install_property + (object_class, PROP_BACKGROUND, + g_param_spec_object ("background", + "Pixbuf source for default show background.", + "Pixbuf source for default show background.", + GDK_TYPE_PIXBUF, G_PARAM_READWRITE)); +} + +static void +opt_show_init (OptShow *self) +{ + OptShowPrivate *priv; + + priv = g_new0 (OptShowPrivate, 1); + + self->priv = priv; +} + +OptShow* +opt_show_new (void) +{ + OptShow *show; + ClutterColor col = { 0, 0, 0, 0xff }; + + show = g_object_new (OPT_TYPE_SHOW, NULL); + + show->priv->bullet_texture + = clutter_text_new_with_text (show->priv->bullet_font, "•"); + clutter_text_set_color (CLUTTER_TEXT(show->priv->bullet_texture), &col); + + show->priv->bg = g_object_new (CLUTTER_TYPE_TEXTURE, NULL); + + show->priv->menu = opt_menu_new (show); + g_object_ref (G_OBJECT (show->priv->menu)); + + return show; +} + +/* bullet hacks, needs redoing */ +ClutterActor* +opt_show_bullet_clone (OptShow *show) +{ + return clutter_text_new_with_text (show->priv->bullet_font, "•"); +} + +void +opt_show_set_bullet_color (OptShow *show, ClutterColor *col) +{ + clutter_text_set_color (CLUTTER_TEXT(show->priv->bullet_texture), col); +} + +void +opt_show_add_slide (OptShow *self, OptSlide *slide) +{ + ClutterActor *bg, *stage; + + self->priv->slides = g_list_append(self->priv->slides, slide); + self->priv->num_slides++; + + stage = clutter_stage_get_default(); + + bg = CLUTTER_ACTOR(opt_slide_get_background_texture (slide)); + + if (bg == NULL) + bg = clutter_clone_new(self->priv->bg); + + clutter_actor_set_size (bg, + clutter_actor_get_width (stage), + clutter_actor_get_height (stage)); + + + clutter_group_add (CLUTTER_GROUP(slide), bg); + + clutter_actor_lower_bottom(bg); + clutter_actor_show(bg); + + opt_menu_add_slide (self->priv->menu, slide); +} + +void +opt_show_run (OptShow *self) +{ + OptSlide *slide; + OptShowPrivate *priv; + ClutterActor *stage; + ClutterColor col = { 0x22, 0x22, 0x22, 0xff }; + + priv = self->priv; + priv->current_slide_num = 0; + + slide = g_list_nth_data (priv->slides, 0); + stage = clutter_stage_get_default(); + + clutter_stage_set_color (CLUTTER_STAGE(stage), &col); + clutter_group_add (CLUTTER_GROUP(stage), CLUTTER_ACTOR(slide)); + clutter_actor_show_all (stage); +} + +static void +opt_show_update_position_label (OptShow *show) +{ + OptShowPrivate *priv = show->priv; + ClutterActor *stage; + ClutterGeometry stage_geom; + ClutterGeometry rect_geom; + gint label_width, label_height; + gchar *pos; + + if (!priv->position_label) + return; + + stage = clutter_stage_get_default (); + clutter_actor_get_geometry (stage, &stage_geom); + + pos = g_strdup_printf ("%d/%d", + priv->current_slide_num + 1, + priv->num_slides); + + clutter_text_set_text (CLUTTER_TEXT (priv->position_label), pos); + clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->position_label), + &label_width, + &label_height); + + rect_geom.width = label_width + 50; + rect_geom.height = label_height + 20; + rect_geom.x = (stage_geom.width / 2) - (rect_geom.width / 2); + rect_geom.y = stage_geom.height - rect_geom.height - 10; + + clutter_actor_set_geometry (priv->position_rect, &rect_geom); + clutter_actor_set_position (priv->position_label, + rect_geom.x + 25, + rect_geom.y + 10); + + g_free (pos); +} + +static void +transition_completed_cb (OptTransition *trans, + gpointer data) +{ + OptShow *show = (OptShow *)data; + OptSlide *from; + OptShowPrivate *priv; + ClutterActor *stage; + + priv = show->priv; + + from = opt_transition_get_from (trans); + stage = clutter_stage_get_default(); + + /* Remove as to free up resources. */ + + clutter_actor_hide_all (CLUTTER_ACTOR(from)); + clutter_container_remove_actor (CLUTTER_CONTAINER(stage), + CLUTTER_ACTOR(from)); + + + /* Reset any tranforms to be safe */ + clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_X_AXIS, 0, 0, 0, 0); + clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_Y_AXIS, 0, 0, 0, 0); + clutter_actor_set_rotation (CLUTTER_ACTOR(from), CLUTTER_Z_AXIS, 0, 0, 0, 0); + + /* If needed, update the position */ + if (priv->position_label_visible) + opt_show_update_position_label (show); + + /* Disconnect the handler */ + g_signal_handler_disconnect (trans, priv->trans_signal_id); + priv->trans_signal_id = 0; +} + +void +opt_show_step (OptShow *self, gint step) +{ + OptSlide *from, *to; + OptShowPrivate *priv; + OptTransition *trans; + ClutterActor *stage; + + priv = self->priv; + + /* transition already running */ + if (priv->trans_signal_id != 0) + return; + + stage = clutter_stage_get_default(); + + from = g_list_nth_data (priv->slides, priv->current_slide_num); + to = g_list_nth_data (priv->slides, priv->current_slide_num + step); + + if (from == NULL) + from = priv->slides->data; + + /* Nowhere to go */ + if (to == NULL) + return; + + /* Add next slide to stage */ + clutter_group_add (CLUTTER_GROUP(stage), CLUTTER_ACTOR(to)); + + trans = opt_slide_get_transition ( step < 0 ? to : from); + + /* + * Make sure any textures are loaded before the transitions is started . + */ + clutter_container_foreach (CLUTTER_CONTAINER (to), + (ClutterCallback)clutter_actor_realize, + NULL); + + if (trans != NULL) + { + if (step < 0) + opt_transition_set_direction (trans, OPT_TRANSITION_BACKWARD); + else + opt_transition_set_direction (trans, OPT_TRANSITION_FORWARD); + + /* Set up transition and start it */ + opt_transition_set_to (trans, to); + opt_transition_set_from (trans, from); + + priv->trans_signal_id + = g_signal_connect (trans, + "completed", + G_CALLBACK (transition_completed_cb), + self); + + /* lower it out of view */ + clutter_actor_lower_bottom (CLUTTER_ACTOR(to)); + + clutter_timeline_start (CLUTTER_TIMELINE(trans)); + } + else + { + /* No transition just hide current slide*/ + clutter_group_remove (CLUTTER_GROUP(stage), CLUTTER_ACTOR(from)); + clutter_actor_hide_all (CLUTTER_ACTOR(from)); + } + + /* Advance */ + priv->current_slide_num += step; + + priv->current_slide_num = + CLAMP(priv->current_slide_num, 0, priv->num_slides-1); + + if (CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (priv->menu))) + opt_menu_popdown (priv->menu); + + opt_menu_set_current_slide (priv->menu, priv->current_slide_num); +} + +void +opt_show_advance (OptShow *self) +{ + opt_show_step (self, 1); +} + +void +opt_show_retreat (OptShow *self) +{ + opt_show_step (self, -1); +} + +void +opt_show_skip (OptShow *self, gint n_slides) +{ + opt_show_step (self, n_slides); +} + +static void +free_data (guchar *pixels, + gpointer data) +{ + g_free (pixels); +} + +gboolean +opt_show_export (OptShow *self, const char *path, GError **error) +{ +#define HTML "Slide %i\n" \ + "

    \n" \ + "

    %s%s

    \n" \ + "" + + GList *slide; + OptShowPrivate *priv; + ClutterActor *stage; + gint i = 0; + + priv = self->priv; + + stage = clutter_stage_get_default(); + + g_object_set (stage, "offscreen", TRUE, NULL); + + clutter_actor_show_all (stage); + + slide = priv->slides; + + while (slide) + { + ClutterActor *e; + guchar *data; + GdkPixbuf *pixb = NULL; + gchar name[32]; + gchar *filename = NULL; + gchar html[2048], html_next[512], html_prev[512]; + + e = CLUTTER_ACTOR(slide->data); + + clutter_container_add_actor (CLUTTER_CONTAINER(stage), e); + clutter_actor_show_all (stage); + clutter_actor_show_all (e); + + // clutter_redraw (CLUTTER_STAGE (stage)); + + data = clutter_stage_read_pixels (CLUTTER_STAGE(stage), + 0, + 0, + clutter_actor_get_width (stage), + clutter_actor_get_height (stage)); + if (!data) + { + g_warning("Failed to grab pixels from stage"); + return FALSE; + } + + pixb = gdk_pixbuf_new_from_data (data, GDK_COLORSPACE_RGB, TRUE, 8, + clutter_actor_get_width (stage), + clutter_actor_get_height (stage), + clutter_actor_get_width (stage) * 4, + free_data, + NULL); + + g_snprintf (name, 32, "slide-%02i.png", i); + + filename = g_build_filename(path, name, NULL); + + if (!gdk_pixbuf_save (pixb, filename, "png", error, + "compression", "9", /* Really compress */ + NULL)) + { + if (filename) g_free (filename); + g_object_unref (pixb); + return FALSE; + } + + html_next[0] = html_prev[0] = '\0'; + + if (i > 0) + snprintf(html_prev, 512, + "
    Prev |", i-1); + + if (slide->next) + snprintf(html_next, 512, + " Next", i+1); + + g_snprintf(html, 2048, HTML, i, name, html_prev, html_next); + g_snprintf(name, 32, "slide-%02i.html", i); + g_free (filename); + + filename = g_build_filename(path, name, NULL); + + g_file_set_contents (filename, html, -1, NULL); + + g_print ("wrote '%s'\n", filename); + + clutter_actor_hide_all (e); + clutter_group_remove (CLUTTER_GROUP(stage), e); + + if (filename) g_free (filename); + slide = slide->next; + i++; + + g_object_unref (pixb); + } + + return TRUE; +} + +void +opt_show_toggle_position (OptShow *show) +{ + OptShowPrivate *priv; + ClutterActor *stage; + ClutterGeometry stage_geom; + + g_return_if_fail (OPT_IS_SHOW (show)); + + priv = show->priv; + + stage = clutter_stage_get_default (); + clutter_actor_get_geometry (stage, &stage_geom); + + if (!priv->position_label) + { + ClutterActor *rect; + ClutterActor *label; + ClutterColor rect_color = { 0x00, 0x00, 0x00, 0x33 }; + ClutterColor label_color = { 0xff, 0xff, 0xff, 0xee }; + ClutterGeometry rect_geom; + + rect = clutter_rectangle_new (); + clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), + &rect_color); + + rect_geom.width = 102; + rect_geom.height = 77; + rect_geom.x = stage_geom.width / 2 - rect_geom.width / 2; + rect_geom.y = stage_geom.height - rect_geom.height - 20; + + clutter_actor_set_geometry (rect, &rect_geom); + + label = clutter_text_new_with_text ("Sans Bold 20", "0/0"); + clutter_text_set_color (CLUTTER_TEXT (label), + &label_color); + clutter_actor_set_position (label, rect_geom.x + 10, rect_geom.y + 10); + + clutter_group_add_many (CLUTTER_GROUP (stage), + rect, + label, + NULL); + + priv->position_label = label; + priv->position_rect = rect; + priv->position_label_visible = FALSE; + } + + if (!priv->position_label_visible) + { + priv->position_label_visible = TRUE; + + opt_show_update_position_label (show); + + clutter_actor_show (priv->position_rect); + clutter_actor_show (priv->position_label); + } + else + { + clutter_actor_hide (priv->position_label); + clutter_actor_hide (priv->position_rect); + + priv->position_label_visible = FALSE; + } +} + +void +opt_show_pop_menu (OptShow *show) +{ + opt_menu_pop (show->priv->menu); +} + diff --git a/opt/opt-show.h b/opt/opt-show.h new file mode 100644 index 0000000..27cfdd6 --- /dev/null +++ b/opt/opt-show.h @@ -0,0 +1,83 @@ +#ifndef _HAVE_OPT_SHOW_H +#define _HAVE_OPT_SHOW_H + +#include + +#include "opt.h" + +G_BEGIN_DECLS + +#define OPT_TYPE_SHOW opt_show_get_type() + +#define OPT_SHOW(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + OPT_TYPE_SHOW, OptShow)) + +#define OPT_SHOW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + OPT_TYPE_SHOW, OptShowClass)) + +#define OPT_IS_SHOW(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + OPT_TYPE_SHOW)) + +#define OPT_IS_SHOW_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + OPT_TYPE_SHOW)) + +#define OPT_SHOW_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + OPT_TYPE_SHOW, OptShowClass)) + +typedef struct OptShowPrivate OptShowPrivate; +typedef struct _OptShowClass OptShowClass; + +struct _OptShow +{ + GObject parent; + OptShowPrivate *priv; +}; + +struct _OptShowClass +{ + GObjectClass parent_class; +}; + +GType opt_show_get_type (void); + +OptShow* +opt_show_new (void); + +void +opt_show_add_slide (OptShow *self, OptSlide *slide); + +void +opt_show_run (OptShow *self); + +void +opt_show_advance (OptShow *self); + +void +opt_show_retreat (OptShow *self); + +void +opt_show_skip (OptShow *self, gint n_slides); + +gboolean +opt_show_export (OptShow *self, const char *path, GError **error); + +ClutterActor* +opt_show_bullet_clone (OptShow *show); + +void +opt_show_set_bullet_color (OptShow *show, ClutterColor *col); + +void +opt_show_toggle_position (OptShow *show); + +void +opt_show_pop_menu (OptShow *show); + +G_END_DECLS + +#endif diff --git a/opt/opt-slide.c b/opt/opt-slide.c new file mode 100644 index 0000000..fd62491 --- /dev/null +++ b/opt/opt-slide.c @@ -0,0 +1,319 @@ +#include "opt.h" + +G_DEFINE_TYPE (OptSlide, opt_slide, CLUTTER_TYPE_GROUP); + +#define PERCENT_TO_PIXELS(p) \ + (( (p) * CLUTTER_STAGE_WIDTH() ) / 100) + +struct OptSlidePrivate +{ + ClutterActor *background; + ClutterActor *title; + ClutterActor *bg; + GList *bullets; + OptShow *show; + OptTransition *trans; +}; + +static void +opt_slide_dispose (GObject *object) +{ + OptSlide *self = OPT_SLIDE(object); + + if (self->priv) + { + if (self->priv->trans != NULL) + g_object_unref(self->priv->trans); + self->priv->trans = NULL; + } + + G_OBJECT_CLASS (opt_slide_parent_class)->dispose (object); +} + + +static void +opt_slide_finalize (GObject *object) +{ + OptSlide *self = OPT_SLIDE(object); + + if (self->priv) + { + g_free(self->priv); + self->priv = NULL; + } + + G_OBJECT_CLASS (opt_slide_parent_class)->finalize (object); +} + +static void +opt_slide_class_init (OptSlideClass *klass) +{ + GObjectClass *object_class; + ClutterActorClass *actor_class; + + object_class = (GObjectClass*) klass; + actor_class = (ClutterActorClass*)klass; + + /* GObject */ + object_class->finalize = opt_slide_finalize; + object_class->dispose = opt_slide_dispose; +} + +static void +opt_slide_init (OptSlide *self) +{ + OptSlidePrivate *priv; + + priv = g_new0 (OptSlidePrivate, 1); + + self->priv = priv; +} + +OptSlide* +opt_slide_new (OptShow *show) +{ + OptSlide *slide; + + g_return_val_if_fail(OPT_IS_SHOW(show), NULL); + + slide = g_object_new (OPT_TYPE_SLIDE, NULL); + + slide->priv->show = show; + + return slide; +} + +void +opt_slide_set_title (OptSlide *slide, + const gchar *title, + const gchar *font, + ClutterColor *col) +{ + OptSlidePrivate *priv; + gint avail_w, border; + gint title_border_size; + ClutterActor *stage; + + g_return_if_fail(OPT_IS_SLIDE(slide)); + + priv = slide->priv; + + if (priv->title != NULL) + { + clutter_group_remove (CLUTTER_GROUP(slide), priv->title); + g_object_unref (priv->title); + } + + if (font == NULL) + { + gchar *default_font = NULL; + g_object_get (priv->show, "title-font", &default_font, NULL); + priv->title = clutter_text_new_with_text (default_font, title); + g_free (default_font); + } + else + priv->title = clutter_text_new_with_text (font, title); + + clutter_group_add (CLUTTER_GROUP(slide), priv->title); + + g_object_get (priv->show, + "title-border-size", &title_border_size, + NULL); + + stage = clutter_stage_get_default (); + + border = PERCENT_TO_PIXELS (title_border_size); + + avail_w = clutter_actor_get_width (stage) - (2 * border) ; + + clutter_actor_set_size (CLUTTER_ACTOR(priv->title), avail_w, -1); + + clutter_text_set_color (CLUTTER_TEXT(priv->title), col); + + clutter_actor_set_position (priv->title, border, border); + + clutter_actor_show (priv->title); +} + +void +get_next_bullet_offsets (OptSlide *slide, + gint *x, + gint *y, + gint *max_width) +{ + OptSlidePrivate *priv; + GList *last_bullet_item; + gint title_bullet_pad, bullet_border_size, bullet_pad; + + priv = slide->priv; + + g_object_get (priv->show, + "title-bullet-pad", &title_bullet_pad, + "bullet-pad", &bullet_pad, + "bullet-border-size", &bullet_border_size, + NULL); + + if ((last_bullet_item = g_list_last (priv->bullets)) == NULL) + { + *y = clutter_actor_get_y (priv->title) + + clutter_actor_get_height (priv->title); + + *y += PERCENT_TO_PIXELS (title_bullet_pad); + } + else + { + ClutterActor *last_bullet = CLUTTER_ACTOR(last_bullet_item->data); + + *y = clutter_actor_get_y (last_bullet) + + clutter_actor_get_height (last_bullet); + + *y += PERCENT_TO_PIXELS (bullet_pad); + } + + *x = PERCENT_TO_PIXELS (bullet_border_size); + + *max_width = CLUTTER_STAGE_WIDTH() + - (2 * PERCENT_TO_PIXELS (bullet_border_size)) ; +} + +void +opt_slide_add_bullet_text_item (OptSlide *slide, + const gchar *title, + const gchar *font, + OptSlideBulletSymbol sym, + ClutterColor *col) +{ + OptSlidePrivate *priv; + ClutterActor *bullet, *symbol = NULL; + gint x, y, width, symbol_width = 0; + + priv = slide->priv; + + if (font == NULL) + { + gchar *default_font = NULL; + + g_object_get (priv->show, "bullet-font", &default_font, NULL); + bullet = clutter_text_new_with_text (default_font, title); + g_free (default_font); + } + else + bullet = clutter_text_new_with_text (font, title); + + clutter_text_set_color (CLUTTER_TEXT(bullet), col); + clutter_text_set_line_wrap (CLUTTER_TEXT (bullet), TRUE); + + get_next_bullet_offsets (slide, &x, &y, &width); + + symbol = opt_show_bullet_clone (priv->show); + symbol_width = 2 * clutter_actor_get_width (symbol); + + if (sym != OPT_BULLET_NONE) + { + clutter_group_add (CLUTTER_GROUP(slide), symbol); + clutter_actor_set_position (symbol, x, y); + clutter_actor_show(symbol); + } + + x += symbol_width; + + clutter_actor_set_size (CLUTTER_ACTOR(bullet), width - symbol_width, -1); + + clutter_actor_set_position (bullet, x, y); + clutter_group_add (CLUTTER_GROUP(slide), bullet); + + clutter_actor_show(bullet); + + + priv->bullets = g_list_append(priv->bullets, bullet); +} + +void +opt_slide_add_bullet (OptSlide *slide, ClutterActor *actor) +{ + OptSlidePrivate *priv; + gint x, y, width; + + priv = slide->priv; + + get_next_bullet_offsets (slide, &x, &y, &width); + + priv->bullets = g_list_append(priv->bullets, actor); + + clutter_group_add (CLUTTER_GROUP(slide), actor); + + clutter_actor_set_position (actor, + x + (width -clutter_actor_get_width(actor)) + /2, + y); + + clutter_actor_show(actor); +} + +const ClutterActor* +opt_slide_get_title (OptSlide *slide) +{ + return slide->priv->title; +} + +GList* +opt_slide_get_bullets (OptSlide *slide) +{ + return slide->priv->bullets; +} + +void +opt_slide_set_transition (OptSlide *slide, OptTransition *trans) +{ + OptSlidePrivate *priv; + + priv = slide->priv; + + if (priv->trans == trans) + return; + + if (priv->trans != NULL) + g_object_unref(priv->trans); + + if (trans) + { + priv->trans = trans; + g_object_ref(slide); + } +} + +OptTransition* +opt_slide_get_transition (OptSlide *slide) +{ + return slide->priv->trans; +} + +void +opt_slide_set_background_pixbuf (OptSlide *slide, GdkPixbuf *background) +{ + OptSlidePrivate *priv; + + g_return_if_fail (background != NULL); + + priv = slide->priv; + + if (priv->background != NULL) + clutter_actor_destroy (priv->background); + + priv->background = clutter_texture_new (); + clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (priv->background), + gdk_pixbuf_get_pixels (background), + gdk_pixbuf_get_has_alpha (background), + gdk_pixbuf_get_width (background), + gdk_pixbuf_get_height (background), + gdk_pixbuf_get_rowstride (background), + gdk_pixbuf_get_n_channels (background), + 0, + NULL); +} + +ClutterActor * +opt_slide_get_background_texture (OptSlide *slide) +{ + return slide->priv->background; +} diff --git a/opt/opt-slide.h b/opt/opt-slide.h new file mode 100644 index 0000000..dda8893 --- /dev/null +++ b/opt/opt-slide.h @@ -0,0 +1,94 @@ +#ifndef _HAVE_OPT_SLIDE_H +#define _HAVE_OPT_SLIDE_H + +#include +#include +#include "opt.h" + +G_BEGIN_DECLS + +#define OPT_TYPE_SLIDE opt_slide_get_type() + +#define OPT_SLIDE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + OPT_TYPE_SLIDE, OptSlide)) + +#define OPT_SLIDE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + OPT_TYPE_SLIDE, OptSlideClass)) + +#define OPT_IS_SLIDE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + OPT_TYPE_SLIDE)) + +#define OPT_IS_SLIDE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + OPT_TYPE_SLIDE)) + +#define OPT_SLIDE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + OPT_TYPE_SLIDE, OptSlideClass)) + +typedef struct OptSlidePrivate OptSlidePrivate; +typedef struct _OptSlideClass OptSlideClass; + +struct _OptSlide +{ + ClutterGroup parent; + OptSlidePrivate *priv; +}; + +struct _OptSlideClass +{ + ClutterGroupClass parent_class; +}; + +typedef enum OptSlideBulletSymbol +{ + OPT_BULLET_REGULAR = 0, + OPT_BULLET_NONE +} +OptSlideBulletSymbol; + +GType opt_slide_get_type (void); + +OptSlide* +opt_slide_new (OptShow *show); + +void +opt_slide_set_title (OptSlide *slide, + const gchar *title, + const gchar *font, + ClutterColor *col); + +void +opt_slide_add_bullet_text_item (OptSlide *slide, + const gchar *title, + const gchar *font, + OptSlideBulletSymbol sym, + ClutterColor *col); + +void +opt_slide_add_bullet (OptSlide *slide, ClutterActor *actor); + +const ClutterActor* +opt_slide_get_title (OptSlide *slide); + +GList* +opt_slide_get_bullets (OptSlide *slide); + +void +opt_slide_set_transition (OptSlide *slide, OptTransition *trans); + +OptTransition* +opt_slide_get_transition (OptSlide *slide); + +void +opt_slide_set_background_pixbuf (OptSlide *slide, GdkPixbuf *pixbuf); + +ClutterActor* +opt_slide_get_background_texture (OptSlide *slide); + +G_END_DECLS + +#endif diff --git a/opt/opt-transition.c b/opt/opt-transition.c new file mode 100644 index 0000000..89b5d82 --- /dev/null +++ b/opt/opt-transition.c @@ -0,0 +1,459 @@ +#include "opt.h" + +#define FPS 90 +#define FRAMES 30 + +G_DEFINE_TYPE (OptTransition, opt_transition, CLUTTER_TYPE_TIMELINE); + +struct OptTransitionPrivate +{ + OptTransitionStyle style; + OptSlide *from, *to; + gulong signal_id; + OptTransitionDirection direction; +}; + +static void +yz_flip_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + OptTransitionPrivate *priv; + ClutterActor *stage; + gint n_frames = 0; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + stage = clutter_stage_get_default(); + + n_frames = clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + if (frame_num > n_frames/2) + { + clutter_actor_hide (CLUTTER_ACTOR(from)); + clutter_actor_show_all (CLUTTER_ACTOR(to)); + clutter_actor_set_depth (CLUTTER_ACTOR(to), + -1 * ((n_frames * 2000) - (frame_num * 2000))); + + clutter_actor_set_rotation (CLUTTER_ACTOR(to), + CLUTTER_Z_AXIS, + frame_num * (360/n_frames/2), + CLUTTER_STAGE_WIDTH()/2, + CLUTTER_STAGE_HEIGHT()/2, + 0); + } + else + { + clutter_actor_hide (CLUTTER_ACTOR(to)); + clutter_actor_set_depth (CLUTTER_ACTOR(from), -2000 * frame_num); + + clutter_actor_set_rotation (CLUTTER_ACTOR(from), + CLUTTER_Z_AXIS, + frame_num * (360/n_frames/2), + CLUTTER_STAGE_WIDTH()/2, + CLUTTER_STAGE_HEIGHT()/2, + 0); + } +} + +static void +zoom_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + OptTransitionPrivate *priv; + ClutterActor *stage; + gint n_frames = 0; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + stage = clutter_stage_get_default(); + + n_frames = clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + if (frame_num > n_frames/2) + { + clutter_actor_hide (CLUTTER_ACTOR(from)); + clutter_actor_show_all (CLUTTER_ACTOR(to)); + clutter_actor_set_depth (CLUTTER_ACTOR(to), + -1 * ((n_frames * 2000) - (frame_num * 2000))); + + clutter_actor_set_rotation (CLUTTER_ACTOR(to), + CLUTTER_Z_AXIS, + frame_num * ((360*2)/n_frames), + CLUTTER_STAGE_WIDTH()/2, + CLUTTER_STAGE_HEIGHT()/2, + 0); + } + else + { + clutter_actor_hide (CLUTTER_ACTOR(to)); + clutter_actor_set_depth (CLUTTER_ACTOR(from), -2000 * frame_num); + + clutter_actor_set_rotation (CLUTTER_ACTOR(from), + CLUTTER_Z_AXIS, + frame_num * ((360*2)/n_frames), + CLUTTER_STAGE_WIDTH()/2, + CLUTTER_STAGE_HEIGHT()/2, + 0); + } +} + +static void +flip_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + OptTransitionPrivate *priv; + ClutterColor color = { 0x22, 0x22, 0x22, 0xff }; + ClutterActor *stage; + gint mult, n_frames; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + stage = clutter_stage_get_default(); + + clutter_actor_show_all (CLUTTER_ACTOR(to)); + + mult = priv->direction ? 1 : -1; + + n_frames = clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + if (frame_num > n_frames/2) + { + /* Fix Z ordering */ + clutter_actor_lower_bottom (CLUTTER_ACTOR(from)); + } + + clutter_stage_set_color (CLUTTER_STAGE(stage), &color); + + clutter_actor_set_rotation (CLUTTER_ACTOR(from), + CLUTTER_Y_AXIS, + - (float)frame_num * 6 * mult, + CLUTTER_STAGE_WIDTH ()/2, + 0, + 0); + + clutter_actor_set_rotation (CLUTTER_ACTOR(to), + CLUTTER_Y_AXIS, + 180 - (frame_num * 6) * mult, + CLUTTER_STAGE_WIDTH()/2, + 0, + 0); +} + +static void +cube_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + ClutterActor *stage; + ClutterColor color = { 0x22, 0x22, 0x22, 0xff }; + OptTransitionPrivate *priv; + gint mult, n_frames; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + stage = clutter_stage_get_default(); + + clutter_actor_show_all (CLUTTER_ACTOR(to)); + + mult = priv->direction ? -1 : 1; + + n_frames = clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + if (frame_num > n_frames/2) + { + /* Fix Z ordering */ + clutter_actor_lower_bottom (CLUTTER_ACTOR(from)); + } + + clutter_stage_set_color (CLUTTER_STAGE(stage), &color); + + clutter_actor_set_rotation (CLUTTER_ACTOR(from), + CLUTTER_Y_AXIS, + - (float)frame_num * 3 * mult, + CLUTTER_STAGE_WIDTH()/2, + 0, + -1 * (CLUTTER_STAGE_WIDTH()/2)); + + clutter_actor_set_rotation (CLUTTER_ACTOR(to), + CLUTTER_Y_AXIS, + (mult * 90) - (frame_num * 3 * mult), + CLUTTER_STAGE_WIDTH()/2, + 0, + -1 * (CLUTTER_STAGE_WIDTH()/2)); +} + +static void +page_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + ClutterActor *stage; + ClutterColor color = { 0x22, 0x22, 0x22, 0xff }; + OptTransitionPrivate *priv; + gint mult, n_frames; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + stage = clutter_stage_get_default(); + + clutter_actor_show_all (CLUTTER_ACTOR(to)); + + mult = priv->direction ? -1 : 1; + + n_frames = clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + if (frame_num > n_frames/2) + { + /* Fix Z ordering */ + clutter_actor_lower_bottom (CLUTTER_ACTOR(from)); + } + + clutter_stage_set_color (CLUTTER_STAGE(stage), &color); + + clutter_actor_set_rotation (CLUTTER_ACTOR(from), + CLUTTER_Y_AXIS, + - (float)frame_num * 2 * mult, + CLUTTER_STAGE_WIDTH()*3/2, + 0, + -1 * (CLUTTER_STAGE_WIDTH()/2)); + + clutter_actor_set_rotation (CLUTTER_ACTOR(to), + CLUTTER_Y_AXIS, + (mult * 60) - (frame_num * 2 * mult), + CLUTTER_STAGE_WIDTH()*3/2, + 0, + -1 * (CLUTTER_STAGE_WIDTH()/2)); +} + +static void +fade_transition_frame_cb (OptTransition *trans, + gint frame_num, + gpointer data) +{ + OptSlide *from, *to; + OptTransitionPrivate *priv; + gint opacity; + + priv = trans->priv; + + from = opt_transition_get_from (trans); + to = opt_transition_get_to (trans); + + if (frame_num == 1) + { + clutter_actor_show_all (CLUTTER_ACTOR(to)); + clutter_actor_raise_top (CLUTTER_ACTOR(to)); + } + + opacity = (frame_num * 255 ) + / clutter_timeline_get_n_frames (CLUTTER_TIMELINE(trans)); + + clutter_actor_set_opacity (CLUTTER_ACTOR(to), opacity); + + /* clutter_actor_set_depth (CLUTTER_ACTOR(from), - opacity/10 ); */ +} + +static void +opt_transition_dispose (GObject *object) +{ + OptTransition *self = OPT_TRANSITION(object); + + if (self->priv) + { + opt_transition_set_from (self, NULL); + opt_transition_set_to (self, NULL); + } + + G_OBJECT_CLASS (opt_transition_parent_class)->dispose (object); +} + +static void +opt_transition_finalize (GObject *object) +{ + OptTransition *self = OPT_TRANSITION(object); + + if (self->priv) + { + g_free(self->priv); + self->priv = NULL; + } + + G_OBJECT_CLASS (opt_transition_parent_class)->finalize (object); +} + +static void +opt_transition_class_init (OptTransitionClass *klass) +{ + GObjectClass *object_class; + + object_class = (GObjectClass*) klass; + + object_class->finalize = opt_transition_finalize; + object_class->dispose = opt_transition_dispose; +} + +static void +opt_transition_init (OptTransition *self) +{ + OptTransitionPrivate *priv; + + priv = g_new0 (OptTransitionPrivate, 1); + + self->priv = priv; + +} + +OptTransition* +opt_transition_new (OptTransitionStyle style) +{ + OptTransition *trans; + + trans = g_object_new (OPT_TYPE_TRANSITION, + "fps", FPS, + "num-frames", FRAMES, + NULL); + + opt_transition_set_style (trans, style); + + return trans; +} + +OptTransitionStyle +opt_transition_get_style (OptTransition *trans) +{ + return trans->priv->style; +} + +void +opt_transition_set_style (OptTransition *trans, + OptTransitionStyle style) +{ + OptTransitionPrivate *priv; + + priv = trans->priv; + + if (priv->signal_id) + g_signal_handler_disconnect (trans, priv->signal_id); + + switch (style) + { + case OPT_TRANSITION_CUBE: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (cube_transition_frame_cb), + trans); + break; + case OPT_TRANSITION_PAGE: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (page_transition_frame_cb), + trans); + break; + case OPT_TRANSITION_FLIP: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (flip_transition_frame_cb), + trans); + break; + case OPT_TRANSITION_YZ_FLIP: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (yz_flip_transition_frame_cb), + trans); + break; + case OPT_TRANSITION_ZOOM: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (zoom_transition_frame_cb), + trans); + break; + case OPT_TRANSITION_FADE: + default: + priv->signal_id + = g_signal_connect (trans, + "new-frame", + G_CALLBACK (fade_transition_frame_cb), + trans); + break; + } + + trans->priv->style = style; +} + +void +opt_transition_set_from (OptTransition *trans, OptSlide *slide) +{ + OptTransitionPrivate *priv; + + priv = trans->priv; + + if (priv->from == slide) + return; + + if (priv->from != NULL) + g_object_unref(priv->from); + + priv->from = slide; + if (slide != NULL) + g_object_ref(slide); +} + +void +opt_transition_set_to (OptTransition *trans, OptSlide *slide) +{ + OptTransitionPrivate *priv; + + priv = trans->priv; + + if (priv->to == slide) + return; + + if (priv->to != NULL) + g_object_unref(priv->to); + + priv->to = slide; + if (slide != NULL) + g_object_ref(slide); +} + +OptSlide* +opt_transition_get_from (OptTransition *trans) +{ + return trans->priv->from; +} + +OptSlide* +opt_transition_get_to (OptTransition *trans) +{ + return trans->priv->to; +} + +void +opt_transition_set_direction (OptTransition *trans, + OptTransitionDirection direction) +{ + trans->priv->direction = direction; +} diff --git a/opt/opt-transition.h b/opt/opt-transition.h new file mode 100644 index 0000000..629fe16 --- /dev/null +++ b/opt/opt-transition.h @@ -0,0 +1,94 @@ +#ifndef _HAVE_OPT_TRANSITION_H +#define _HAVE_OPT_TRANSITION_H + +#include + +#include "opt.h" + +G_BEGIN_DECLS + +#define OPT_TYPE_TRANSITION opt_transition_get_type() + +#define OPT_TRANSITION(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + OPT_TYPE_TRANSITION, OptTransition)) + +#define OPT_TRANSITION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + OPT_TYPE_TRANSITION, OptTransitionClass)) + +#define OPT_IS_TRANSITION(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + OPT_TYPE_TRANSITION)) + +#define OPT_IS_TRANSITION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + OPT_TYPE_TRANSITION)) + +#define OPT_TRANSITION_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + OPT_TYPE_TRANSITION, OptTransitionClass)) + +typedef enum OptTransitionStyle +{ + OPT_TRANSITION_ANY, + OPT_TRANSITION_CUBE, + OPT_TRANSITION_PAGE, + OPT_TRANSITION_FLIP, + OPT_TRANSITION_ZOOM, + OPT_TRANSITION_YZ_FLIP, + OPT_TRANSITION_FADE +} +OptTransitionStyle; + +typedef enum OptTransitionDirection +{ + OPT_TRANSITION_FORWARD, + OPT_TRANSITION_BACKWARD, +} +OptTransitionDirection; + +typedef struct OptTransitionPrivate OptTransitionPrivate; +typedef struct _OptTransitionClass OptTransitionClass; + +struct _OptTransition +{ + ClutterTimeline parent; + OptTransitionPrivate *priv; +}; + +struct _OptTransitionClass +{ + ClutterTimelineClass parent_class; +}; + +GType opt_transition_get_type (void); + +OptTransition* +opt_transition_new (OptTransitionStyle style); + +OptTransitionStyle +opt_transition_get_style (OptTransition *trans); + +void +opt_transition_set_style (OptTransition *trans, + OptTransitionStyle style); + +void +opt_transition_set_direction (OptTransition *trans, + OptTransitionDirection direction); +void +opt_transition_set_from (OptTransition *trans, OptSlide *slide); + +void +opt_transition_set_to (OptTransition *trans, OptSlide *slide); + +OptSlide* +opt_transition_get_from (OptTransition *trans); + +OptSlide* +opt_transition_get_to (OptTransition *trans); + +G_END_DECLS + +#endif diff --git a/opt/opt.c b/opt/opt.c new file mode 100644 index 0000000..7962e28 --- /dev/null +++ b/opt/opt.c @@ -0,0 +1,225 @@ +#include "opt.h" +#include /* for exit() */ + +static OptShow *opt_show = NULL; + +static gboolean +key_release_cb (ClutterStage *stage, + ClutterKeyEvent *kev, + gpointer user_data) +{ + OptShow *show = OPT_SHOW (user_data); + + switch (clutter_key_event_symbol (kev)) + { + case CLUTTER_m: + opt_show_pop_menu (show); + break; + case CLUTTER_s: + opt_show_toggle_position (show); + break; + case CLUTTER_q: + clutter_main_quit (); + break; + case CLUTTER_r: + case CLUTTER_Left: + opt_show_retreat (show); + break; + case CLUTTER_Page_Down: + opt_show_skip (show, 5); + break; + case CLUTTER_Page_Up: + opt_show_skip (show, -5); + break; + + case CLUTTER_Up: + case CLUTTER_Down: + case CLUTTER_Return: + /* menu keys -- ignore */ + break; + + case CLUTTER_Right: + default: + opt_show_advance (show); + break; + } + + return FALSE; +} + +static gboolean +button_release_cb (ClutterStage *stage, + ClutterButtonEvent *bev, + gpointer user_data) +{ + OptShow *show = OPT_SHOW (user_data); + + if (bev->button == 1) + opt_show_advance (show); + else if (bev->button == 3) + opt_show_retreat (show); + + return FALSE; +} + +static void +on_fullscreen (ClutterStage *stage, + const gchar *filename) +{ + GError *error = NULL; + + if (opt_show) + return; + + opt_show = opt_show_new (); + + if (!opt_config_load (opt_show, filename, &error)) + { + /* Cleanup */ + g_printerr ("Could not load presentation:\n\t%s\n", error->message); + g_error_free (error); + exit (EXIT_FAILURE); + } + + opt_show_run (opt_show); + + /* Connect up for input event */ + g_signal_connect (stage, + "key-release-event", G_CALLBACK (key_release_cb), + opt_show); + g_signal_connect (stage, + "button-release-event", G_CALLBACK (button_release_cb), + opt_show); +} + +static int +usage (const char *msg) +{ + g_printerr ("Usage: %s [OPTIONS..] \n", msg); + + return EXIT_FAILURE; +} + +int +main(int argc, char **argv) +{ + GError *error = NULL; + ClutterActor *stage; + gchar **opt_filename = NULL; + gchar *opt_export = NULL; + gchar *opt_size = NULL; + + GOptionEntry options[] = { + { "export", + 'e', + 0, + G_OPTION_ARG_STRING, + &opt_export, + "Export PNG slides to PATH", + "PATH" }, + + { "size", + 's', + 0, + G_OPTION_ARG_STRING, + &opt_size, + "Presentation display dimentions.", + "WxH" }, + + { G_OPTION_REMAINING, + 0, + 0, + G_OPTION_ARG_FILENAME_ARRAY, + &opt_filename, + "Presentation XML filename to load", + "FILE" }, + + { NULL } + }; + + if (argc == 1) + return usage (argv[0]); + + clutter_init_with_args (&argc, &argv, "- OH Presentation tool", + options, NULL, + NULL); + + stage = clutter_stage_get_default(); + + /* Need to set this early on */ + if (opt_export != NULL) + { + gboolean offscreen_supported; + + g_object_set (stage, "offscreen", TRUE, NULL); + + /* Actually check offscreen works - recent Mesas appear not to + * like rendering to Pixmaps. + */ + g_object_get (stage, "offscreen", &offscreen_supported, NULL); + if (offscreen_supported == FALSE) + { + g_print ("Could not export presentation:\n" + "\tOffscreen rendering not supported by Clutter backend\n"); + return EXIT_FAILURE; + } + } + + if (opt_size != NULL) + { + gint w, h; + + if (!sscanf (opt_size, "%dx%d", &w, &h) || w <= 0 || h <= 0) + return usage (argv[0]); + + opt_show = opt_show_new (); + + clutter_actor_set_size (stage, w, h); + + if (!opt_config_load (opt_show, opt_filename[0], &error)) + { + /* Cleanup */ + g_printerr ("Could not load presentation:\n\t%s\n", error->message); + g_error_free (error); + return EXIT_FAILURE; + } + + /* Connect up for input event */ + g_signal_connect (stage, + "key-release-event", G_CALLBACK (key_release_cb), + opt_show); + g_signal_connect (stage, + "button-release-event", G_CALLBACK (button_release_cb), + opt_show); + + opt_show_run (opt_show); + } + else + { + g_signal_connect (stage, + "fullscreen", G_CALLBACK (on_fullscreen), + opt_filename[0]); + + clutter_stage_fullscreen (CLUTTER_STAGE (stage)); + clutter_stage_hide_cursor (CLUTTER_STAGE (stage)); + clutter_actor_show (stage); + } + + if (opt_export) + { + if (!opt_show_export (opt_show, opt_export, &error)) + { + /* Cleanup */ + g_printerr ("Could not export presentation:\n\t%s\n", + error->message); + g_error_free (error); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; + } + else + clutter_main (); + + return EXIT_SUCCESS; +} diff --git a/opt/opt.doap b/opt/opt.doap new file mode 100644 index 0000000..ec82f85 --- /dev/null +++ b/opt/opt.doap @@ -0,0 +1,41 @@ + + + OpenedHand Presentation Tool + opt + 2006-21-11 + + 'OPT' is a simple application for creating presentations. + + + + + + + linux + C + + + + + + + Matthew Allum + + + + + + Matthew Allum + + + + + + + + + + + diff --git a/opt/opt.dtd b/opt/opt.dtd new file mode 100644 index 0000000..f8a9329 --- /dev/null +++ b/opt/opt.dtd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/opt/opt.h b/opt/opt.h new file mode 100644 index 0000000..52ba5bb --- /dev/null +++ b/opt/opt.h @@ -0,0 +1,22 @@ +#ifndef _HAVE_OPT_H +#define _HAVE_OPT_H + +#include +#include + +typedef struct _OptSlide OptSlide; +typedef struct _OptShow OptShow; +typedef struct _OptTransition OptTransition; +typedef struct _OptMenu OptMenu; + +#include "opt-show.h" +#include "opt-slide.h" +#include "opt-transition.h" +#include "opt-menu.h" + +gboolean +opt_config_load (OptShow *show, + const gchar *filename, + GError **error); + +#endif diff --git a/opt/powers.png b/opt/powers.png new file mode 100644 index 0000000000000000000000000000000000000000..25c0423fd73145b55195f3e6f8ef9efba9d6959b GIT binary patch literal 29901 zcmXtg1yEL9*EZeV-7QEwv~+g}NOzZlbayuhNJw`#NOwqgNuz*tH~gFTpKsKGVMgwK z&e?mdYh7_7RFtGqk%*8WARtg>Wh6d=ufq@!kZK5U;5+YF@iOoQ&O}~X0^;@UPfka1 z68H(CgN(Kl1Ozhn+doK%^h^TqLwILdMM?NYXi_XL%EiG2H3$d_2w4eHb@!DceK##N zO>*D=5Gap2c%Z1LD8iwbctsrI_z%~08c$XhRBbC4w4ZYg-vWp45r!+1>BP%xg!rAOw zVSYsu4tKiie*P-DlIOEgj@8_CPCtYgz9>KXza^KJr*jge4&gu|3)BstYh09?;$LtkYK zpE6`Zaa56TuwXyZ$Q9FBf;I6Xl_Rqq5AuGSiqf5*fGKCx+Ix7n;Zt^4hVhLg+;$ot z(~#g@lNSY6_}gFXk(~Gf(WE?4sYp0`KGLhXh5?a$Q8qR9Qz{w!U~$2J=Rq3+?c+$8 z^7MiqZitxYTAl1I7wgZt-@*7Ix}EXZ*R z%^=Wou1{|s>#-wNET(8(GX6b6Xa>7x&E>$UiEVXp5sOl6Cj=BiNeRo)pJAsK?9-sY zGJ&e+IjetnqdO2XFjywY`It%M5n8PL zi!BM6BM~Q~PM>4kCn^R$mCZ|%DlZb?{8d}ubHz}xrOf$@od)4_u@O; z*`5ixe?ABNYqh!S*OMgdz+s)ub|f{eu#03Av@|Lh(7Kwbg9aBvSckHA>rW$W_N^G% z#ommH@KBGNisq6wF%p}<-;2V{WnjUrW$Xe4>|yG10cgTM2PG!zy`M(O&{~zI5*D#b z*UmEC>^;c~udphR^9==J6>P% zt5c61BvZEA8+Ep2g$k!<+?`6gOFN!MPQs|u@xgmX9tW;}P!m#_FbN|4A?G|H99taA z3N4upA&Jo(WD0)kTm%2287kg)4-OsHoSlr}6+`hQFSp?NAkO;GQB<+%Y&z|~BZ_=( z^|HF^PeydBsoU@br?yvO870N$(|7X^&KZ6N@NAaTO$f^{UrwL6fD(BfDlOWyJesvmhCd7Pu5>rO?7p zf}Z#k%>TY#0NUw`a^HLj^08Qar{{ZK?h9shYnyS`v4f7kn`2Am?&%i@v|IyPuV>QW zvGvT35rf}yEx zBI<&x-13a*)hW7Zf4~;1UDWxlsVRys0VT`4SV@&13B5ifN-5jiQk@pbcZ2pJnk!)R zjP4S*g3Hr*r`sON`(E~pgE(Ti9lgYSW?FufOeCmY?fag_z@6Jh!_4mcKxewA>#rG8 zDTD^RB(3D;S06hcWiShks%$7z4h@!1=>u*n!GZn}Z8 zfg`eSH${Gd0}FxLiN%!0L?Vjt>N+wvgF}M&+!jSaO4_KvPjx92-lzy3HokDypSHNr z3c8~PQVAjWG?_u1Lqe95TMj{jsFMi^M@3AC%^}~zO%pbi0;gCua%dNA#f0iKiCqJ? z9}&Ee8!Z{fHz#c*AyAv*2D}8!p-ZbiDGvl(V?^)KuNKcZiDPg1zDU}1b>-?Np)GzR znXKV<;QMYz2Vvw{{qwt>p#HAcHrKyzGx920`u=(U#3o+N3#_IRXG0r{P`{NjW%@M! zadzP! zRICy8?>|g>ny-~z=nu$Q7Jc_sn(Y(l5~OWP`%UQX_ABP0_9ubp8^2B>6P(2w` zlkb)4gK1?*%h9G`69goQXGTBPKD|Iy?QxBG5`k5RbiSk>^eo*zuok2ia<`#_>dlki zL-1LM=# zrbW$NQKJ>nWv#T3ap~3*-oUcm$~D_S#}zCAPFz7C+MZ_z9f?SbF&a_ePYNd&~NztT41*%>w z`p>Pq@Av^f-HIriIl}gwrKY%VyVfI0c?QpD!kRMC{w}fhj*r}KS#ZKoj}JAalfqB*TmEo`;Ujj0I<4DiDvM!~qJ8nKMGcdF>T?qog!NI8!HLkSgV;3v4D*$# z{+6Um=j-vp(miOf(UTXzu)Het~FYnvj_<}7H zHW8CswKz{0y8FwuA=$;WQ4*%l0HvO>FokEb;eB|L!9(fGhqM0 z^YCg*XIJ@v584;8`RB^7@?Qg)t7`5B5xlyz-PEC7 zo(O8+F2jW$HERe>42Ngwl*J|JH{Yh^Dd{DY#{IrV4w(IiN%_~V?Ws%vfQbRl4DIog z9UC@?uQ(o^DRm2*YK~L@F5Io$3yz2GNR63C2(JFOHI!hGf&@x8O)3o~O};g=x}hLG z^FcjSij5!)he-RRM^t~F`_shjPwk_}`u&KoRXZjKx(AnNWnIe{pE@Y62?8Zp>q2cetpHhPjE1XW~*X`MT zDDnk<$P+V*Mn}dSOT`1ID!hgE2E&{_D~Am6X`=AY;)_qV8nsTska*X_gLdNB-qK5v z&#V|o`t23}x9CvmagLd2amR^FVYZKzU3*j>wC2wQqZDdo&mp}wCl=7lnRwtL;+l|U*P%W7L+S5hl(-yNd z>^;i!9`NmK5B-;E6;M5Ya7y<(F#ofmOj2Qw5xa`MCM+(Y20)KtU}%t*&f5C!`UbLQ zEvf#lrG-Wa7Kz4E!PAy;;FSK_|H7-X*k4a zG|!x_T;h|#jqQhyNY#jW^pp#lzw;4pKdFAO%vZ2Yw^CNW_72U)Q^^I4SO6GRGwa$7 zS#27R$MIS)UZk~}Z6B&Urjd(vMa)79zi~A1&%Y2V?K7=DUuj`TU2p(`e zLYZM--(ZeOuNzPi6tFip=rLIWNtJjX-iHnD zdB1JV-x+wpLaomjS=gZiw|~R+?Ub2e&STmlx|LrlZFVF*YeXW+;pC*Sj!Dpk*S;j| z_R+MXS&ifsu@plSvy5oOKCD}CYxZ9*mPI~w8?ndhCq&%!YI%=EiCB2RF%janU^>Ct zLZ>3)G;PR_qGhbPhpo*PnAI*6imJS)x)lVC;=Fm09pyjb08r?)Hb3Z>eCLY5rU9rI z43YSw10;TKC9(v4ivSbJH#p&Z!r#-SgMoTX_KeG4o84$bK@pihLu$e+bmk{hfF!=;a z$_Ve~-@iyuIL`eGTXC}r1tH6`Le74>)u$nAOrn|FzV z@~L&r+&QU{T!aQKDgM1&r&nqe&F5Ng(?Wp2z=FDF%$h3`70%&LArHJRiQ~zxJj~a|(kWdKm35i<@&1Q^WmxSEW9}e1@)^HBrCeI{j5p4OPMU_0J zKG{WWlOOeossWmWPtqm1MSUVPG8244xx$iwqQ{c(M$2 zFs2mep=Q0tdqhvM-FYu@eVsM}z;wp;i8~~)Ax~s?>CT-60BxP$tbd%+#nfMu)~TGyT8(2hJjXuDHTrYAEE;!q5s^IXcH*@#oOmrtm95 z->k%9eGrZsw_*R~?!QHmYwi-v)p<4xby#E*Ac;0w<11JoW}OlM4LR>#*DTwA@FlImJ@VvsZD0B| zO_std+8JGoNiVlQ;GQ(lRW~D&-vdtQUBVL)j#i`8Yxwch? zOma6;rz3ph@DaB60YCq>GCf^6(EhR=jsJKdTXM;+<>H?H5dKA93a%V)F^|1PB$~^c9jgEF zj0rX-@1Z<*!aq^umqOo%Dyj&U2Dpibs__L3=3IQICvC>UY_Qo`)K_Cjg{f}!lUf?S z2QmP}7AjcX5_NG$|3FpCkY$^Zl!Xk?RYtgMh1(j8m%VhsH}78I(>S>libVBCfG!8? z8-|Wo_|`2ttf@XvEzDNDOW1RyFyjeSBfr#ZNQy8+;Xb!g3*@~>Q1ncDiQeh+NF`m# zlet~AU17bnj}3i}DObg>`ExM&-Ps4nVl6#*b8bkHDr@=rh)&5uTAv;RktWz%114F9 zV!QYyLxd*Y0dzx_l#b792vj}s$f8Bsi6J^wPH~*mi;3~PcT^$XqOHz(66vw<$<{48Z03x`IvCk{~5gDjuD0g z&9tbw88hC0{5^oI_&i{cN+K(KZ<=?_S!EBXJ21!KOwML+``qXzsH00t+E^oflve}u zCme)GauFP{qAmuaMDEU}L zCNQ+{RGjaEEd!=gYF01(zPnixB}OFy*6HW=aORa>dd#!Vlo#U({oS_b742A~Aq`<5 z=dbDTye3KnFfWqP3U{}hV0S(64;%Xp8@32+af5+1hq62ZAi@YeaWey$x_2D8@5>|T z8POfz-RP9htM^BMfihRIv{J}YkrE|2+C!&(#+~K|sfU*c^Ime{aBl3tCX)8F+EiGw zr?SLur?`hbVJcT;b(T|o*%RQpzMt0Mco`mxNSu6Fvbn|+79|RElf^7>Ouyz51r;q* zEC~i<)A%3DH+x+zJKqcJ89B89yp7pq$L%#^=Hp9h1&y%;-GrEmNCm(=_H^9onj~2l z#xt;KHcFtQ5^LEmb<5?`U*V#Fdw}_aJfhIo3G`YOm1K0n($M(3>L4*stE=6N0sdbm z0%*ZUgXcBk<8s1{=@c>9L~rJECnwZC;9*FeJ-@nnnsEM-=i0xhPTfmex{F71@%gNK#@*sT|LDrVJk? z>?Z%8Ww5)2xcxJoaEj0n7*fULZWD*>K#Rie7vQ4(!1#N;JCzd#CD?K6JA^|&fYym>T~sAoOpe^ zU%A7;{S`uF*K$0l{g>WUn)5y*!5K1!OM7m4%3O z$~d_|J=s$HTaI=v+4%7k(Th}i$@)4J?7xB$b(N7BZ`m=E`grZEmu1te=x;M-1<7>O zg*1eK{Uc4Ku){Mbg3pipEPUkEk@U{MX0lw^ILB;E^Ryfgf(Pb|GVkxNmicjm02&QA zT~>*>MWB*-#{W6#*+tDfNWsg607%1-)44EI3lm2n8ub6ZkRYwm*KVJpCqV;hRM|UZ z42;{&$f6}?OrAC?y-KT)H!Em03pJRs!_g8nJt`vvfRradIB|FZWko>Q3#tpoFss-5 zI3}CC5-x^nl_stzR6B_F)?&viV|o9}e(1#tM?rESWd|p$HCP?1qPVDwZ~26MiCJ%u zvj#Yvxb85jc}%96^E6;3VZ_s#Y}20U?udD`#W4mtH+tgVcvU~DMNd^MdS6Da#e^Ec zTiZsdrf)+ei1ezcDMvS_L)oGdM<~Z}nsKoM)@D#wQA)=e=?U8h0Kj)D^cXw1HC1eL=?t#K-454vQBXCytHKj!EIbob@5F(@~Y9q&U`_YY7~t?n4zGvfa0 ze$oHEU$qWxtLGc=VCg5JYn=7GO_x?M4y*hy_y_^<&HS70cQTIL@*H%k00bXcXa+S6 zm5~w=!2H}HaxC?$<^A|${VyL+vYJ-oC=}52fG^&j_!f3o`f9Pyw4d7{N`tXgvWl@Y^u)0lNs;d=j@} zSmU%=rU<6?=Gbn|v0B4m+l_mZoCGtcd15E?x_5OeW|2IjpM?gs6}N-$ovK&E4fTnM zy9DnE0Sg=yBdDXUHc~b0zm7lR7h_=<5lumAoUWm+h5!{nky5>I%U!?q;hNH7mBo%b zt2kd&*8smw0L`RpQ8mKC2ae{xN4Q6G`*v1s77v-!R|K^l&Nt%sp3~fMRKd1{nWov- z@W(D5FFsG>z;BhKOq1I)x}TXZQ?zjC)3EHIqv1qDnW+=xR7Aw7G$if$CZ}Kl%sYhk z!zq>7U8LT^Yd!`=D0~9R^7+N#?gZ_<_Z@sOwNkixTnITB)E%H;X(Jrh=mWv5VBU>Y zg|i;9FncDRtwG>ojqnMUIRp^f?Gx@3jQ^ACY{v~)nzHp1Mz{uSGV2Pzc_)q`P>H8( zy<1z>nX5fKW4MQ$+;Hu@BXta!uC(b&O(A_B-L_mha$YE!>$pN&QIs_i!V~(2K7U9si38U@9haU(vVbE-_yFhqs0*}3Y#;0(15=#vdadsG&+(j z5z*K5S6_c^RG8`H#Z(ee08QLO$)k|B_>A?en^f<~YxfHGnJ(qj&5v&RBgr2sY&0Yb zW250DIX_a03E04{GGU!*P*fNEh zcLYS#5iZKi?u*Z=amJH~0=j`&y-oh8hnwajmz7lV9FFO8AGsu+G8iKRqISN>nIX+! z)^=~f0~JXlZ>2ZT9~3OrW>zrue{tLZ>Xw7eSRo!VgT|u9mieGl3lR#=zW6QMy$~G1 zPbYiZ=zW)|18TxRz?7S$y?O^<#Oq;}R03+H7|P zBYsjl8`>1a(g?LfY|`lfT8k;b`7A|Dpc^94R9`V4Bif`nqu>~MCL1P)#r?!|;CX0n z=V{9dc`EY;z!1#Yn8KnLOis1kZk`$a;exh!OCP8| z83ke3$!0}_p22~YtQ!?7BwHpM(jw$k6@ zww@}>bHcLqczD|UlnRZoihgl05GIAXmM1)I8K z{1U*`c*NUBK999%5wVv(+*f|N@yKKl zpTJB22fLzZQ!3hFoA?1K6pAn88W)v)+ybw){MtW6=hgxh##Y}?((EOS4$8Uc*BT7n zhp6$lxpKqh&jfx~ezOvJRpJJZX;olPS%_P+YUVFk6Jk-ct~J(L0Srfz%28H=IWg4! zS0>-1W;B2h#Yok(^dZn8y$vE~A_*3Ks9MW!H*E!zC`UKHROi>IKQ_aVr^$S#dR-y; zR`QF$njJ6h{#!=p**WJ$`9+P>zHimBCACtZ42AJ8d?CDA44Pa9r94Tl0oX5>(*$3* zenugB7iIaOEx((~d)65I5A-z}6>`iulxo1BB;~Uj9p?P_Zr_YSFQtzW*)nTqv9zw&E9;rd*<(WsaDTXW72=P8cod~ z-WjA34%jPsH3xX44~V8PE1HoEuwAFwM)sR^c(@F#iY>INYk{oilsqIE*_>wCHp4bK z(FUP`|GX7y(xW|YVD z`kvOyTQe}^cY}|BF&C9rf`3L`OTY8kMluD$7$Fd=6%P3FBdQDMVIo+g|IC%{mjDyP zkegtU^R+i+&7cRg(BBYbbAR}ZmaAI3Bh4)iMfLrY4dJ&8!6wB@qz?A zz;1)dKBzytQw3)1%buR~U6v`9Mgz|wnHQut0tyS2bTYQomb9o)2wHoswSB{o$x~6l zQxTQkN;Fru4@6VdQ4^6LMUd3Aru&RUG7S`QIq`IAwM&kC3$RsIj)q{0Hzcp_DV@eo zP)mR%C!>W21Zu_|iO$R2Am=ikE=G)YGrjRf4RvLD749OAaoVdu6_QE&f(-az9c!B~ zy71I{hR(15B}#$bWnkVe;{KUn-LlJGH8fO$MpV;)ylJIlYt5bpjCn9+tnU#~*hpZ+ zX-%`Zggd32eQAJKB{citOK58a-Gq07-;8uKc@x?S~$Qy^f)saXb_fNGO?V!Se5dlqwx>9r;X8Y%S` zbfaG}?0`AWQ_S9J$oemY-$M6H%FgFOzT8%mX|$wUwfReZmls09H#gQT?oYoBhczT` zZO@Rx?QlgS%aB(kaujh|h|uinAGUys+$6XftQfZ_Uy)-?4dlg|H^I)nPlv&@)sNo! zAkYi3`TTj@5h|*gD@^0rciXyQzkDw+3u-r`{!p9u;s&Bg=(%vfrVYgro2HGbyicjR zy)DKj=@KxoCJVS+wCuf~<0zR1T!iDHv zhKX!8`Ol_<;X~uqO?{U455lS51z**t{_X+ za`dAV!liE-^;wVXh((S2)HKp+2Btqn98_2?ei9Ea2q1rp#fFp5S##IF!6FKOe_(W2 zI&}#?JpyNUYwj`s`_?6?39`;!C`K9uAdZz#!(&5p=?t)LY1y<;DiHNTgY#NkI~M5~ z}>6&CumFBU7Y
  1. R(-tAm;S>bE$-VLUz5PHzuR&y>9+6b;6`9a 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 literal 0 HcmV?d00001 diff --git a/opt/test.xml b/opt/test.xml new file mode 100644 index 0000000..f47ff31 --- /dev/null +++ b/opt/test.xml @@ -0,0 +1,59 @@ + + + + + + + <bullet color="#444444ff" font="VistaSansMed 40" /> + <transition style="flip" /> + <background src="bg.png" /> + </defaults> + + <slide> + <title>Hello slide 1 + See test.xml + q quit, r or left back + Any key to advance. + + + + + Hello slide 2 + Checking wr-wr-wr-wr-wr-wrapping, check check one two three four Checking wr-wr-wr-wr-wr-wrapping, check check one two three four + + bullet 4 + + + + + + Hello slide 3 + Some code + clutter_label_set_text_extents (CLUTTER_LABEL(bullet), + width - symbol_width, + 0); + +clutter_actor_set_position (bullet, x, y); +clutter_group_add (CLUTTER_GROUP(slide), bullet); + +clutter_actor_show(bullet); +clutter_actor_show(symbol); + + + + + + Hello slide 4 + Foo foo + bullet 4 + + + + + Hello slide 5 ( colors! ) + Foo foo + bullet 4 + and fonts + + + \ No newline at end of file diff --git a/packaging/clutter-toys.spec b/packaging/clutter-toys.spec new file mode 100644 index 0000000..b3f99cc --- /dev/null +++ b/packaging/clutter-toys.spec @@ -0,0 +1,86 @@ +Name: clutter-toys +Summary: Clutter sample applications +Version: 0.1 +Release: 1 +Group: System/Libraries +License: LGPLv2+ +URL: http://www.clutter-project.org/ +Source0: %{name}-%{version}.tar.gz +Patch1: fix-colors.patch +Patch2: fix-image-path.patch +Patch3: map-escape-key-to-quit.patch +BuildRequires: pkgconfig(clutter-1.0) +BuildRequires: pkgconfig(gl) + +%description +Clutter toy sample applications. + + +%prep +%setup -q -n %{name}-%{version} + +#make color easier to see +%patch1 -p1 + +#set image path to installed data directory +%patch2 -p1 + +#map escape key to quit apps +%patch3 -p1 + +%build +cd arc-clock +make -j8 +cd .. + +cd circles +make -j8 +cd .. + +cd courasel +make -j8 +cd .. + +cd foofone +make -j8 +cd .. + +cd pong +make -j8 +cd .. + +cd ripples +make -j8 +cd .. + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_datadir}/clutter-toys +mkdir -p %{buildroot}%{_datadir}/clutter-toys/courasel +mkdir -p %{buildroot}%{_datadir}/clutter-toys/foofone +mkdir -p %{buildroot}%{_datadir}/clutter-toys/pong + + +install -m 755 arc-clock/arc-clock $RPM_BUILD_ROOT%{_bindir} + +install -m 755 circles/circles $RPM_BUILD_ROOT%{_bindir} + +install -m 755 courasel/courasel $RPM_BUILD_ROOT%{_bindir} +install -m 644 courasel/*.png $RPM_BUILD_ROOT%{_datadir}/clutter-toys/courasel/ + +install -m 755 foofone/foofone $RPM_BUILD_ROOT%{_bindir} +install -m 644 foofone/*.png $RPM_BUILD_ROOT%{_datadir}/clutter-toys/foofone/ + +install -m 755 pong/pong2 $RPM_BUILD_ROOT%{_bindir} + +install -m 755 ripples/ripples $RPM_BUILD_ROOT%{_bindir} + +%clean +rm -rf "$RPM_BUILD_ROOT" + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%{_datadir}/clutter-toys + diff --git a/patches/fix-colors.patch b/patches/fix-colors.patch new file mode 100644 index 0000000..59e6935 --- /dev/null +++ b/patches/fix-colors.patch @@ -0,0 +1,24 @@ +diff -Naur clutter-toys-0.1/circles/circles.c clutter-toys-0.1-new/circles/circles.c +--- clutter-toys-0.1/circles/circles.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/circles/circles.c 2012-03-20 13:48:21.092969742 -0700 +@@ -16,7 +16,7 @@ + static void + circle_paint_cb (ClutterActor *actor) + { +- const CoglColor fill_color = { 0xff, 0xff, 0xff, 0x80 }; ++ const CoglColor fill_color = { 0x00, 0xff, 0xff, 0x80 }; + gint i; + gdouble angle; + guint radius = clutter_actor_get_width (actor) / 2; +diff -Naur clutter-toys-0.1/ripples/ripples.c clutter-toys-0.1-new/ripples/ripples.c +--- clutter-toys-0.1/ripples/ripples.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/ripples/ripples.c 2012-03-20 13:49:20.216971928 -0700 +@@ -19,7 +19,7 @@ + float radius = clutter_actor_get_width (actor) / 2; + + cogl_color_set_from_4ub (&fill_color, +- 255, ++ 0, + 255, + 255, + clutter_actor_get_paint_opacity (actor)); diff --git a/patches/fix-image-path.patch b/patches/fix-image-path.patch new file mode 100644 index 0000000..a919175 --- /dev/null +++ b/patches/fix-image-path.patch @@ -0,0 +1,56 @@ +diff -Naur clutter-toys-0.1/courasel/courasel.c clutter-toys-0.1-new/courasel/courasel.c +--- clutter-toys-0.1/courasel/courasel.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/courasel/courasel.c 2012-03-20 14:05:16.361007303 -0700 +@@ -10,14 +10,14 @@ + + struct { gchar *img; gchar *title; } ItemDetails[] = + { +- { "accessories-text-editor.png", "Text Editor" }, +- { "applications-games.png", "Game" }, +- { "dates.png", "Dates" }, +- { "im-client.png", "Chat" }, +- { "preferences-desktop-theme.png", "Preferences" }, +- { "tasks.png", "Todo List" }, +- { "utilities-terminal.png", "Terminal" }, +- { "web-browser.png", "Browser"}, ++ { "/usr/share/clutter-toys/courasel/accessories-text-editor.png", "Text Editor" }, ++ { "/usr/share/clutter-toys/courasel/applications-games.png", "Game" }, ++ { "/usr/share/clutter-toys/courasel/dates.png", "Dates" }, ++ { "/usr/share/clutter-toys/courasel/im-client.png", "Chat" }, ++ { "/usr/share/clutter-toys/courasel/preferences-desktop-theme.png", "Preferences" }, ++ { "/usr/share/clutter-toys/courasel/tasks.png", "Todo List" }, ++ { "/usr/share/clutter-toys/courasel/utilities-terminal.png", "Terminal" }, ++ { "/usr/share/clutter-toys/courasel/web-browser.png", "Browser"}, + }; + + typedef struct Item +diff -Naur clutter-toys-0.1/foofone/foofone.c clutter-toys-0.1-new/foofone/foofone.c +--- clutter-toys-0.1/foofone/foofone.c 2012-03-19 13:20:31.285711498 -0700 ++++ clutter-toys-0.1-new/foofone/foofone.c 2012-03-20 14:06:26.841009909 -0700 +@@ -277,7 +277,7 @@ + rect_color = { 0, 0, 0, 0x99 }, + black_color = { 0, 0, 0, 0xff }; + +- button_texture = clutter_texture_new_from_file ("button.png", NULL); ++ button_texture = clutter_texture_new_from_file ("/usr/share/clutter-toys/foofone/button.png", NULL); + + xpad = (CSW-(3*clutter_actor_get_width(button_texture)))/4; + x = xinit = xpad; +@@ -301,7 +301,7 @@ + + app->dpy = clutter_group_new(); + +- a = clutter_texture_new_from_file ("display.png", NULL); ++ a = clutter_texture_new_from_file ("/usr/share/clutter-toys/foofone/display.png", NULL); + clutter_group_add (CLUTTER_GROUP(app->dpy), a); + app->dpyx = xdpy = x; + app->dpyy = ydpy = (y - clutter_actor_get_height(app->dpy))/2; +@@ -393,7 +393,7 @@ + clutter_actor_set_size (a, CSW, CSH); + clutter_group_add (CLUTTER_GROUP(app->screen_dial), a); + +- a = clutter_texture_new_from_file ("call-background.png", NULL); ++ a = clutter_texture_new_from_file ("/usr/share/clutter-toys/foofone/call-background.png", NULL); + clutter_group_add (CLUTTER_GROUP(app->screen_dial), a); + + a = clutter_rectangle_new_with_color (&rect_color); diff --git a/patches/map-escape-key-to-quit.patch b/patches/map-escape-key-to-quit.patch new file mode 100644 index 0000000..e5a8ab7 --- /dev/null +++ b/patches/map-escape-key-to-quit.patch @@ -0,0 +1,142 @@ +diff -Naur clutter-toys-0.1/arc-clock/arc-clock.c clutter-toys-0.1-new/arc-clock/arc-clock.c +--- clutter-toys-0.1/arc-clock/arc-clock.c 2012-03-19 13:20:31.285711498 -0700 ++++ clutter-toys-0.1-new/arc-clock/arc-clock.c 2012-03-20 14:41:44.137088242 -0700 +@@ -128,6 +128,17 @@ + { NULL } + }; + ++static void ++on_key_release (ClutterActor *stage, ++ ClutterEvent *event, ++ gpointer user_data) ++{ ++ if (clutter_event_get_key_symbol (event) == CLUTTER_Escape) ++ { ++ clutter_main_quit(); ++ } ++} ++ + int + main (int argc, char *argv[]) + { +@@ -179,6 +190,11 @@ + + g_timeout_add_seconds ((hide_seconds ? 60 : 1), update_slices, NULL); + ++ g_signal_connect (stage, ++ "key-release-event", ++ G_CALLBACK (on_key_release), ++ NULL); ++ + update_slices (NULL); + + clutter_actor_show (stage); +diff -Naur clutter-toys-0.1/circles/circles.c clutter-toys-0.1-new/circles/circles.c +--- clutter-toys-0.1/circles/circles.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/circles/circles.c 2012-03-20 14:42:22.033089645 -0700 +@@ -42,6 +42,17 @@ + } + } + ++static void ++on_key_release (ClutterActor *stage, ++ ClutterEvent *event, ++ gpointer user_data) ++{ ++ if (clutter_event_get_key_symbol (event) == CLUTTER_Escape) ++ { ++ clutter_main_quit(); ++ } ++} ++ + int + main (int argc, char **argv) + { +@@ -98,6 +109,11 @@ + 0); + clutter_behaviour_apply (behaviour, actor); + } ++ ++ g_signal_connect (stage, ++ "key-release-event", ++ G_CALLBACK (on_key_release), ++ NULL); + + clutter_actor_show_all (stage); + +diff -Naur clutter-toys-0.1/courasel/courasel.c clutter-toys-0.1-new/courasel/courasel.c +--- clutter-toys-0.1/courasel/courasel.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/courasel/courasel.c 2012-03-20 14:32:09.885066996 -0700 +@@ -188,7 +188,7 @@ + break; + case CLUTTER_Return: + break; +- case CLUTTER_q: ++ case CLUTTER_Escape: + clutter_main_quit(); + break; + default: +diff -Naur clutter-toys-0.1/foofone/foofone.c clutter-toys-0.1-new/foofone/foofone.c +--- clutter-toys-0.1/foofone/foofone.c 2012-03-19 13:20:31.285711498 -0700 ++++ clutter-toys-0.1-new/foofone/foofone.c 2012-03-20 14:36:49.769077348 -0700 +@@ -264,6 +264,13 @@ + + return TRUE; + } ++ else if (event->type == CLUTTER_KEY_RELEASE) ++ { ++ if (clutter_event_get_key_symbol (event) == CLUTTER_Escape) ++ { ++ clutter_main_quit(); ++ } ++ } + + return FALSE; + } +diff -Naur clutter-toys-0.1/pong/pong2.c clutter-toys-0.1-new/pong/pong2.c +--- clutter-toys-0.1/pong/pong2.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/pong/pong2.c 2012-03-20 14:38:27.749080976 -0700 +@@ -309,6 +309,10 @@ + case CLUTTER_m: + data->down2 = FALSE; + break; ++ case CLUTTER_Escape: ++ data->down2 = FALSE; ++ clutter_main_quit(); ++ break; + default: + break; + } +diff -Naur clutter-toys-0.1/ripples/ripples.c clutter-toys-0.1-new/ripples/ripples.c +--- clutter-toys-0.1/ripples/ripples.c 2012-03-19 13:20:31.309711495 -0700 ++++ clutter-toys-0.1-new/ripples/ripples.c 2012-03-20 14:43:46.533092770 -0700 +@@ -104,6 +104,17 @@ + return FALSE; + } + ++static void ++on_key_release (ClutterActor *stage, ++ ClutterEvent *event, ++ gpointer user_data) ++{ ++ if (clutter_event_get_key_symbol (event) == CLUTTER_Escape) ++ { ++ clutter_main_quit(); ++ } ++} ++ + int + main (int argc, char **argv) + { +@@ -124,6 +135,11 @@ + "button-press-event", G_CALLBACK (stage_clicked_cb), + NULL); + ++ g_signal_connect (stage, ++ "key-release-event", ++ G_CALLBACK (on_key_release), ++ NULL); ++ + clutter_main (); + + return EXIT_SUCCESS; diff --git a/pong/Makefile b/pong/Makefile new file mode 100644 index 0000000..3555e3f --- /dev/null +++ b/pong/Makefile @@ -0,0 +1,15 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` +CFLAGS="-lm" + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: pong2 + + +pong2: pong2.o + $(CC) -g -Wall $(CFLAGS) -o $@ pong2.o $(LIBS) + +clean: + rm -fr *.o pong2 diff --git a/pong/pong-ball.png b/pong/pong-ball.png new file mode 100644 index 0000000000000000000000000000000000000000..d80af4c278be2cc4cd0565cc6b6c2f7b83c016ac GIT binary patch literal 1089 zcmV-H1it%;P)7l)g5=8-Sq?SVV`$q z-tV*X{(PP>9LJ$qvKb=G1KEtx1H1rU0fSK$Hpm|E z26$)L&QT*bG~_@wV+;fHz*N0!QhkuV23Pta*(>EzuhbnJLd7kAOHlX?<$otOxePq9 zY-guw2eKLCK9B{{!MbEG+!})P0Q9F$YpRw~845-Cu`7;gC;*maJKs)v&WR3WGsZLE zJ%It*lYp@saC-z2iD<%uRI9L=hulv%s)nj7z^r9EAM4#;*8x}j2f$G6L)T$q?6`Zh zii1N~&B5-kP?ZBbujho;0k_+HA@I-N9fdnLTOqeT8{4q96*5FaS&D8kCRbT8EmOa%wFss3=M%6S3v2G)rKrygM4N zc#rgev>jjyS&Mx9F66GTIg~|e=sMiLcb+m&=iB$tz}^GKycJu012&5Io`lRc?Pg+3 zv?vTBS^@VBxEr%Al)cUPD2$);jMFIV+pxY>W7-EsE!+9yy@97F;*-6yNOcOgM?{mt zWkj>zg=W;+TSLvSu&pGK5KRGQ0F3#!q<|vIqV;ex`rhWeDV5>#N{y)k44BAC$`_yN z>pbxwno@l=rX=v#M2>+z>1#2niik$rw27QyeXjJ!B_}!>Z6hYf2X7!W+B*u3w&9EC zK&$uptwf`3IJlYXI!q+kKw2;0*$td;Xq!s{4K>LCpsE!c@qh= z`V@Z0B_}!>ZC_1b5!o045-}?^9W!n{rE(~mR{<7H_h`1H))a~{Dr*pprX|aE%HBG# zpw|4@4TUt?O0_DQ0xZDsf#wr(Oao-JZ{|Zcw2jStXa?FxG>Zdna$!!rBKNa17PW&z z(Gp6xf z;AZYU5*PJZ+iK6OR48hLyvx8l)llPro7Q=P1X6ug*5h@;3+@KZNYp#V>mFU5 z;PB|`6q83+C;2?OI?bv$(Y=Xom9G8NAV}AK?4hHbpWFNg!)m}sMBP-p00000NkvXX Hu0mjfZk6*j literal 0 HcmV?d00001 diff --git a/pong/pong-bat.png b/pong/pong-bat.png new file mode 100644 index 0000000000000000000000000000000000000000..1415dd3ba7324e61dbe133a0fbd4be09e342372f GIT binary patch literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^YCwFLgAGW&+mbvVNU;<$JvmMZ|R7$(u=iiABX}&+Q8HLMrw>wVeFWe>x%hT{i(AFMYzwo~o%A%zIhL;eT8vT*tG{hgo0 z6sMD1vqcLimiD0hfqBAX@upX`EbExUPf6IDw1q0pVf)9x$0Hf?p7VpZ5tv`w#r+WvWUFw z34VFTC;8+7p*36&Z3@=?J5_ri@t6IIu*<(np6&bdZD)#N%sac;^8%~4*D?5Q_@gVE z)_oxN!Pir3`8I54IQDu)>4A-6flD^`Py9Qzm+>*HLEwE$j+|`4uRC)y!oBBq1|5GF5?c07H z{=JAN*x2W+f$8BZLyGZxS>pRDajARxCRdD%?~9h?b4O*>^%^jzofA9Y^Zu05hqPRq z32D0PV&-W!to-%r^Ecb(G+)sJDYd0i6}Q*1U+Q`J=UNKmou$?87lXJD*lx=Icp=Ki z*eL!FU%_^b-P4O=SH0iICbxy7+Toj!dV_ar&&KbYHh3CckAKTvmsW8-zLrUj$^Y~1 z`e}xK2R^aCVa<})eA%#nrEPH7%^a)M{HrGO9Qa=FKAQjC?cJK|*}q?XFLvgiu)n?y yOGrt+pG=wj<(utA8b9RTuRp_Z{mZfQ{~3Ij+|e^-cxemFc?_PeelF{r5}E*{%B +#include +#include + +#define PADDLE_SIZE 48.0 +#define PADDLE_THICKNESS 8.0 +#define PADDLE_SPEED 4 +#define BALL_SIZE 12.0 +#define DASH_LENGTH 12.0 +#define ARENA_WIDTH 320.0 +#define ARENA_HEIGHT 240.0 +#define FPS 60.0 +#define MINPOS (PADDLE_THICKNESS * 2) +#define MAXPOS (ARENA_HEIGHT - PADDLE_SIZE - (PADDLE_THICKNESS * 2)) + +/* + * NOTE: This is a completely brain-dead way to implement pong, but helped + * me familiarise with Clutter paths and such. + */ + +static const ClutterColor green = { 0x0, 0xff, 0x0, 0xff }; + +typedef struct { + /* First paddle */ + gint score1; + gint position1; + ClutterActor *paddle1; + gboolean up1; + gboolean down1; + + /* Second paddle */ + gint score2; + gint position2; + ClutterActor *paddle2; + gboolean up2; + gboolean down2; + + /* Paddle independent */ + gdouble angle; + gdouble speed; + ClutterActor *ball; + ClutterActor *arena; + ClutterTimeline *timeline; + ClutterAlpha *alpha; + ClutterBehaviour *behaviour; + ClutterPath *path; + ClutterKnot start; + ClutterKnot end; + gboolean pause; +} PongData; + +static ClutterActor * +pong_arena_actor_create (PongData *data) +{ + ClutterActor *group, *actor; + ClutterGeometry geom; + gint i; + + group = clutter_group_new (); + + /* Top border */ + actor = clutter_rectangle_new_with_color (&green); + geom.x = 0; geom.y = 0; + geom.width = ARENA_WIDTH; geom.height = PADDLE_THICKNESS; + clutter_actor_set_geometry (actor, &geom); + clutter_actor_show (actor); + clutter_group_add (CLUTTER_GROUP (group), actor); + + /* Bottom border */ + actor = clutter_rectangle_new_with_color (&green); + geom.y = ARENA_HEIGHT - PADDLE_THICKNESS; + clutter_actor_set_geometry (actor, &geom); + clutter_actor_show (actor); + clutter_group_add (CLUTTER_GROUP (group), actor); + + /* Dotted line down the middle */ + geom.x = (ARENA_WIDTH / 2) - (PADDLE_THICKNESS / 2); + geom.width = PADDLE_THICKNESS; + geom.height = PADDLE_THICKNESS * 2; + for (i = 0; i < ARENA_HEIGHT / (PADDLE_THICKNESS * 2); i+= 2) { + geom.y = i * PADDLE_THICKNESS * 2; + actor = clutter_rectangle_new_with_color (&green); + clutter_actor_set_geometry (actor, &geom); + clutter_actor_show (actor); + clutter_group_add (CLUTTER_GROUP (group), actor); + } + + return group; +} + +static ClutterActor * +pong_ball_actor_create (PongData *data) +{ + ClutterActor *actor, *group; + cairo_t *cr; + + actor = clutter_cairo_texture_new (BALL_SIZE, BALL_SIZE); + cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE (actor)); + + /* Clear */ + cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); + cairo_paint(cr); + + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); + cairo_set_source_rgba (cr, 0, 1.0, 0, 1.0); + + cairo_new_path (cr); + cairo_arc (cr, BALL_SIZE/2.0, BALL_SIZE/2.0, + BALL_SIZE/2.0, 0, 2*M_PI); + cairo_fill (cr); + + cairo_destroy (cr); + + group = clutter_group_new (); + clutter_group_add (CLUTTER_GROUP (group), actor); + clutter_actor_set_position (actor, -BALL_SIZE/2, -BALL_SIZE/2); + clutter_actor_show (actor); + + return group; +} + +static ClutterActor * +pong_paddle_actor_create (PongData *data) +{ + ClutterGeometry geom; + ClutterActor *actor; + + actor = clutter_rectangle_new_with_color (&green); + geom.x = 0; geom.y = 0; + geom.width = PADDLE_THICKNESS; + geom.height = PADDLE_SIZE; + clutter_actor_set_geometry (actor, &geom); + + return actor; +} + +static void +pong_ball_path_calculate (PongData *data, gdouble ax, gdouble ay, gdouble w, + gdouble h) +{ + gdouble x, y, dx, dy, angle; + + x = clutter_actor_get_x (data->ball); + y = clutter_actor_get_y (data->ball); + + data->start.x = x; + data->start.y = y; + + /* Work out destination */ + if (data->angle < M_PI * 0.5) { + /* Travelling up-right */ + dx = x + (tan (data->angle) * (y - ay - (BALL_SIZE/2))); + if (dx > w - (BALL_SIZE/2)) { + dx = w - (BALL_SIZE/2); + dy = y - ((dx - x) / tan (data->angle)); + } else { + dy = ay + (BALL_SIZE / 2); + } + } else if (data->angle < M_PI) { + /* Travelling down-right */ + angle = M_PI - data->angle; + dx = x + (tan (angle) * (h - y)); + if (dx > w - (BALL_SIZE/2)) { + dx = w - (BALL_SIZE/2); + dy = y + ((dx - x) / tan (angle)); + } else { + dy = h - (BALL_SIZE/2); + } + } else if (data->angle < M_PI * 1.5) { + /* Travelling down-left */ + angle = data->angle - M_PI; + dx = x - (tan (angle) * (h - y)); + if (dx < (BALL_SIZE/2)) { + dx = (BALL_SIZE/2); + dy = y + ((x - ax) / tan (angle)); + } else { + dy = h - (BALL_SIZE/2); + } + } else { + /* Travelling up-left */ + angle = (M_PI * 2) - data->angle; + dx = x - (tan (angle) * (y - ay - (BALL_SIZE/2))); + if (dx < (BALL_SIZE/2)) { + dx = (BALL_SIZE/2); + dy = y - ((x - ax) / tan (angle)); + } else { + dy = ay + (BALL_SIZE / 2); + } + } + + clutter_timeline_set_duration (data->timeline, MAX (1000/FPS, + (guint)(1000 * (ABS (dx - x)/w) * data->speed))); + data->end.x = (gint)dx; + data->end.y = (gint)dy; +} + +static void +pong_path_end_cb (ClutterTimeline *timeline, + PongData *data) +{ + /* Figure out the new angle of the ball after a collision */ + gint x, y; + + x = clutter_actor_get_x (data->ball); + y = clutter_actor_get_y (data->ball); + + /*g_debug ("%d, %d, %lf", x, y, data->angle);*/ + + /* Work out new travel angle after collisions */ + if ((x >= (ARENA_WIDTH - (BALL_SIZE/2))) || + (x <= (BALL_SIZE/2))) + data->angle = -data->angle; + + while (data->angle > M_PI*2) data->angle -= M_PI*2; + while (data->angle < 0) data->angle += M_PI*2; + + if (y <= PADDLE_THICKNESS + (BALL_SIZE/2)) { + if (data->angle < M_PI * 0.5) { + data->angle = M_PI - data->angle; + } else if (data->angle > M_PI * 1.5) { + data->angle = M_PI + + ((M_PI * 2.0) - data->angle); + } + } else if (y >= ARENA_HEIGHT - PADDLE_THICKNESS - + (BALL_SIZE/2)) { + if (data->angle < M_PI) { + data->angle = M_PI - data->angle; + } else if (data->angle < M_PI * 1.5) { + data->angle = (M_PI * 2.0) - + (data->angle - M_PI); + } + } + + while (data->angle > M_PI*2) { data->angle -= M_PI*2; } + while (data->angle < 0) { data->angle += M_PI*2; } + + pong_ball_path_calculate (data, + 0, PADDLE_THICKNESS, + ARENA_WIDTH, + ARENA_HEIGHT - PADDLE_THICKNESS); + + clutter_path_clear (data->path); + clutter_path_add_move_to (data->path, data->start.x, data->start.y); + clutter_path_add_line_to (data->path, data->end.x, data->end.y ); + + clutter_timeline_start (data->timeline); + + /*g_debug ("%d, %d, %lf", data->end.x, + data->end.y, data->angle);*/ +} + +static void +pong_key_press_event_cb (ClutterStage *stage, ClutterEvent *event, + PongData *data) +{ + guint key_symbol = clutter_event_get_key_symbol (event); + + if ((key_symbol != CLUTTER_p) && (data->pause)) { + data->pause = FALSE; + clutter_timeline_start (data->timeline); + } + + switch (key_symbol) + { + case CLUTTER_Escape: + case CLUTTER_q: + clutter_main_quit (); + break; + case CLUTTER_a: + data->up1 = TRUE; + break; + case CLUTTER_z: + data->down1 = TRUE; + break; + case CLUTTER_k: + data->up2 = TRUE; + break; + case CLUTTER_m: + data->down2 = TRUE; + break; + case CLUTTER_p: + data->pause = !data->pause; + if (data->pause) { + clutter_timeline_pause (data->timeline); + } else + clutter_timeline_start (data->timeline); + default: + break; + } +} + +static void +pong_key_release_event_cb (ClutterStage *stage, ClutterEvent *event, + PongData *data) +{ + guint key_symbol = clutter_event_get_key_symbol (event); + + switch (key_symbol) + { + case CLUTTER_a: + data->up1 = FALSE; + break; + case CLUTTER_z: + data->down1 = FALSE; + break; + case CLUTTER_k: + data->up2 = FALSE; + break; + case CLUTTER_m: + data->down2 = FALSE; + break; + default: + break; + } +} + +static void +pong_new_frame_cb (ClutterTimeline *timeline, gint frame_num, + PongData *data) +{ + if (data->up1 ^ data->down1) { + data->position1 = MAX (MINPOS, MIN (MAXPOS, data->position1 + + (data->down1 ? PADDLE_SPEED : 0) - + (data->up1 ? PADDLE_SPEED : 0))); + clutter_actor_set_position (data->paddle1, PADDLE_THICKNESS, + data->position1); + } + + if (data->up2 ^ data->down2) { + data->position2 = MAX (MINPOS, MIN (MAXPOS, data->position2 + + (data->down2 ? PADDLE_SPEED : 0) - + (data->up2 ? PADDLE_SPEED : 0))); + clutter_actor_set_position (data->paddle2, ARENA_WIDTH - + (PADDLE_THICKNESS * 2), data->position2); + } +} + +int +main (int argc, char **argv) +{ + PongData data; + ClutterActor *stage; + const ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff }; + + clutter_init (&argc, &argv); + + data.arena = pong_arena_actor_create (&data); + data.paddle1 = pong_paddle_actor_create (&data); + data.paddle2 = pong_paddle_actor_create (&data); + data.ball = pong_ball_actor_create (&data); + + clutter_actor_set_position (data.paddle1, PADDLE_THICKNESS, + PADDLE_THICKNESS * 2); + clutter_actor_set_position (data.paddle2, + ARENA_WIDTH - (PADDLE_THICKNESS * 2), + PADDLE_THICKNESS * 2); + + data.up1 = FALSE; + data.down1 = FALSE; + data.up2 = FALSE; + data.down2 = FALSE; + data.pause = TRUE; + data.position1 = 0; + data.position2 = 0; + + data.timeline = clutter_timeline_new (2000); + data.alpha = clutter_alpha_new_full (data.timeline, CLUTTER_LINEAR); + data.path = clutter_path_new(); + data.behaviour = clutter_behaviour_path_new (data.alpha, data.path); + + data.angle = ((M_PI * 1.8)); + data.speed = 2; + + clutter_actor_set_position (data.ball, ARENA_WIDTH/2, ARENA_HEIGHT/2); + + stage = clutter_stage_get_default (); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + + clutter_group_add (CLUTTER_GROUP (stage), data.arena); + clutter_group_add (CLUTTER_GROUP (stage), data.paddle1); + clutter_group_add (CLUTTER_GROUP (stage), data.paddle2); + clutter_group_add (CLUTTER_GROUP (stage), data.ball); + + clutter_actor_show_all (CLUTTER_ACTOR (stage)); + clutter_actor_set_scale (CLUTTER_ACTOR (stage), + CLUTTER_STAGE_WIDTH () / ARENA_WIDTH, + CLUTTER_STAGE_HEIGHT () / ARENA_HEIGHT); + + pong_ball_path_calculate (&data, + 0, PADDLE_THICKNESS, + ARENA_WIDTH, + ARENA_HEIGHT - PADDLE_THICKNESS); + clutter_behaviour_apply (data.behaviour, data.ball); + + clutter_path_add_move_to (data.path, data.start.x, data.start.y); + clutter_path_add_line_to (data.path, data.end.x, data.end.y ); + + g_signal_connect_after (data.timeline, "completed", + G_CALLBACK (pong_path_end_cb), &data); + g_signal_connect (data.timeline, "new_frame", + G_CALLBACK (pong_new_frame_cb), &data); + + g_signal_connect (stage, "key-press-event", + G_CALLBACK (pong_key_press_event_cb), &data); + g_signal_connect (stage, "key-release-event", + G_CALLBACK (pong_key_release_event_cb), &data); + + clutter_main (); + + return 0; +} + diff --git a/ripples/Makefile b/ripples/Makefile new file mode 100644 index 0000000..b92ab06 --- /dev/null +++ b/ripples/Makefile @@ -0,0 +1,13 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: ripples + +ripples: ripples.o + $(CC) -g -Wall $(CFLAGS) -o $@ ripples.o $(LIBS) + +clean: + rm -fr *.o ripples diff --git a/ripples/ripples.c b/ripples/ripples.c new file mode 100644 index 0000000..bdd9a17 --- /dev/null +++ b/ripples/ripples.c @@ -0,0 +1,131 @@ +#include +#include +#include + +#define RIPPLE_S 3000 /* speed */ +#define RIPPLE_W 8 /* width */ +#define RIPPLE_G 2 /* gap */ +#define RIPPLE_N 6 /* Max amount of ripple circles */ +#define RIPPLE_MIND 500 /* Minimum delay between ripples */ +#define RIPPLE_MAXD 2000 /* Maximum delay */ + +#define SCREEN_W 640 +#define SCREEN_H 480 + +static void +circle_paint_cb (ClutterActor *actor) +{ + CoglColor fill_color; + float radius = clutter_actor_get_width (actor) / 2; + + cogl_color_set_from_4ub (&fill_color, + 255, + 255, + 255, + clutter_actor_get_paint_opacity (actor)); + + cogl_set_source_color (&fill_color); + cogl_path_move_to (radius, radius); + cogl_path_arc (radius, radius, + radius, radius, + 0.0, 360.0); + cogl_path_line_to (radius - RIPPLE_W / 2, radius); + cogl_path_arc (radius, radius, + radius - RIPPLE_W / 2, radius - RIPPLE_W / 2, + 0.0, + 360.0); + cogl_path_close (); + cogl_path_fill (); +} + +void +ripple (ClutterActor *stage, + gfloat x, + gfloat y) +{ + const ClutterColor transp = { 0x00, 0x00, 0x00, 0x00 }; + gfloat scale_x, scale_y; + gint i, n; + + n = g_random_int_range (1, RIPPLE_N); + + scale_x = clutter_actor_get_width (stage) / RIPPLE_W, + scale_y = clutter_actor_get_width (stage) / RIPPLE_W; + + for (i = 0; i < n; i++) + { + ClutterActor *actor = clutter_rectangle_new_with_color (&transp); + gfloat size; + + size = ((RIPPLE_W * 2) * (i + 1)) + (RIPPLE_G * i); + clutter_actor_set_size (actor, size, size); + clutter_actor_set_anchor_point_from_gravity (actor, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (actor, x, y); + clutter_actor_set_opacity (actor, 0x80); + + g_signal_connect (actor, "paint", G_CALLBACK (circle_paint_cb), NULL); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor); + + clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, RIPPLE_S / 2, + "scale-x", scale_x, + "scale-y", scale_y, + "opacity", 0, + "signal-swapped-after::completed", + clutter_actor_destroy, actor, + NULL); + } +} + +static gboolean +stage_clicked_cb (ClutterActor *stage, ClutterEvent *event) +{ + gfloat event_x, event_y; + + clutter_event_get_coords (event, &event_x, &event_y); + ripple (stage, event_x, event_y); + + return TRUE; +} + +static gboolean +random_ripple_cb (gpointer data) +{ + ClutterActor *stage = data; + + ripple (stage, + g_random_double_range (0, clutter_actor_get_width (stage)), + g_random_double_range (0, clutter_actor_get_height (stage))); + + g_timeout_add (g_random_int_range (RIPPLE_MIND, RIPPLE_MAXD), + random_ripple_cb, + stage); + + return FALSE; +} + +int +main (int argc, char **argv) +{ + const ClutterColor bg_color = { 0xe0, 0xf2, 0xfc, 0xff }; + ClutterActor *stage; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + clutter_actor_set_size (stage, SCREEN_W, SCREEN_H); + clutter_stage_set_color (CLUTTER_STAGE (stage), &bg_color); + + clutter_actor_show (stage); + + random_ripple_cb (stage); + + g_signal_connect (stage, + "button-press-event", G_CALLBACK (stage_clicked_cb), + NULL); + + clutter_main (); + + return EXIT_SUCCESS; +} + diff --git a/script-viewer/.gitignore b/script-viewer/.gitignore new file mode 100644 index 0000000..514a634 --- /dev/null +++ b/script-viewer/.gitignore @@ -0,0 +1,2 @@ +script-viewer +script-viewer.o diff --git a/script-viewer/COPYING b/script-viewer/COPYING new file mode 100644 index 0000000..b1e3f5a --- /dev/null +++ b/script-viewer/COPYING @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/script-viewer/ChangeLog b/script-viewer/ChangeLog new file mode 100644 index 0000000..5d9b665 --- /dev/null +++ b/script-viewer/ChangeLog @@ -0,0 +1,48 @@ +2008-08-11 Emmanuele Bassi + + * Makefile: + * script-viewer.c: Update to use clutter-0.8. + + * behaviours.json: + * test-script.json: + * text.json: Update examples. + +2008-02-08 Chris Lord + + * test-script.json: + Change 'angle-begin' to 'angle-start' on rotation behaviour + +2008-01-24 Øyvind Kolås + + * alphas.json: changed duration. + * behaviours.json: updaed scale behaviours properties. + +2007-10-25 Øyvind Kolås + + * behaviours.json: updated the names used for properties to reflect + the new naming convention of foo-start, foo-end. + +2007-10-25 Øyvind Kolås + + * script-viewer.c: add the error label actor to stage and show it upon + errors. + +2007-10-25 Øyvind Kolås + + * alphas.json: added illustrations of all alphas going along a + horizontal path simultanously. + +2007-10-25 Øyvind Kolås + + * behaviours.json: updated with path, bspline and fixed ellipse + after updates to ClutterScript. + +2007-10-23 Øyvind Kolås + + * behaviours.json: added a sample animating text labels using scale, + rotate, opacity, depth and ellipse behaviours, with some BUG comments + sprinkled around the code. + +2007-10-23 Øyvind Kolås + + Initial import to svn. diff --git a/script-viewer/Makefile b/script-viewer/Makefile new file mode 100644 index 0000000..ac0e1ab --- /dev/null +++ b/script-viewer/Makefile @@ -0,0 +1,83 @@ +# A generic buildfiles to build single executable directory projects depending +# only on pkg-config ability to build. It automatically names the project on +# the toplevel directory you're in. +# +# Setting additional CFLAGS like $ export CFLAGS=-Wall -Werror # can help you +# track issues down better after compilation. +# +# 20071008 +# Øyvind Kolås (c) 2007 placed in the Public Domain. +## + +PKGMODULES = clutter-1.0 + +# you only need to change the following if you want to change where the +# generated tarball gets scp'd to: + +SCP_DESTINATION= + +BINARY=$(shell basename `pwd`)# +PACKAGE=../$(BINARY).tar.bz2 # you can use both .gz and .bz2 as extension here + + +## +# end of template configuration. +# + +# This makefile uses the current directory as the only target binary, and +# expects a single of the .c files to contain a main function. + + + +all: $(BINARY) + +# The help available also contains brief information about the different +# build rules supported. +help: + @echo '' + @echo 'Available targets in this make system' + @echo '' + @echo ' (none) builds $(BINARY)' + @echo ' dist create $(PACKAGE)' + @echo ' clean rm *.o *~ and foo and bar' + @echo ' run ./$(BINARY)' + @echo ' gdb gdb ./$(BINARY)' + @echo ' gdb2 gdb ./$(BINARY) --g-fatal-warnings' + @echo ' scp scp $(PACKAGE) $(SCP_DESTINATION)' + @echo ' help this help' + @echo '' + + +LIBS= $(shell pkg-config --libs $(PKGMODULES)) +INCS= $(shell pkg-config --cflags $(PKGMODULES)) + +CFLAGS+=-Wall +CFILES = $(wildcard *.c) +OBJECTS = $(subst ./,,$(CFILES:.c=.o)) +HFILES = $(wildcard *.h) +%.o: %.c $(HFILES) + $(CC) -g $(CFLAGS) $(INCS) -c $< -o$@ +$(BINARY): $(OBJECTS) + $(CC) -o $@ $(LIBS) $(OBJECTS) +test: run +run: $(BINARY) + ./$(BINARY) + +../$(BINARY).tar.gz: clean $(CFILES) $(HFILES) + cd ..;tar czvhf $(BINARY).tar.gz $(BINARY)/* + @ls -slah ../$(BINARY).tar.gz +../$(BINARY).tar.bz2: clean $(CFILES) $(HFILES) + cd ..;tar cjvhf $(BINARY).tar.bz2 $(BINARY)/* + @ls -slah ../$(BINARY).tar.bz2 + +dist: $(PACKAGE) + echo $(PACKAGE) +scp: dist + scp $(PACKAGE) $(SCP_DESTINATION) + +gdb: all + gdb --args ./$(BINARY) +gdb2: all + gdb --args ./$(BINARY) -demo --g-fatal-warnings +clean: + rm -fvr *.o $(BINARY) *~ *.patch diff --git a/script-viewer/README b/script-viewer/README new file mode 100644 index 0000000..3b0fb6a --- /dev/null +++ b/script-viewer/README @@ -0,0 +1,56 @@ +ClutterScriptViewer +=================== + +ClutterScriptViewer, a minimalistic hacker editing tool for authoring and +experimenting with ClutterScript. Compile by typing make, if that worked well. +You can now start using script-viewer. The main use of script-viewer is editing +and tweaking layouts in your favourite editor whilst script-viewer provides a +live preview. + +Documentation +------------- + +The core documentation for script-viewer is the usage shown when no commands +are passed in, default values are shown in paranthesises after each option, +by adding -h to the end of your list of options the script-viewer will show +the parsed values for different options. + +$ ./script-viewer -h + +Usage: ./script-viewer [options] + + -s stage size (640x480) + -fs run fullscreen (FALSE) + -bg stage color (gray) + -id which actor id to show (root) + -timeline a timeline to play (NULL) + -o write screenshot, then quit (NULL) + -h this help + +Examples +-------- + +Load the file foo.json and show the actor/group with id 'root' on stage. + +$ ./script-viewer foo.json + + +Load the file foo.json and show the actor/group with id 'bar' on a stage +with a black background. + +$ ./script-viewer foo.json -id 'bar' -bg black + + +Load the file foo.json and show the actor/group with id 'bar' to a stage size +400x300 and save a screenshot to the file screenshot.png, note that the stage +itself will appear transparent in the screenshot even when it has a color on +screen. + +$ ./script-viewer foo.json -id 'bar' -o screenshot.png -s 400x300 + + +Load the file foo.json and show the actor/group with id 'bar' to stage +and start playing the timeline with id 'baz' + +$ ./script-viewer foo.json -id 'bar' -timeline 'baz' + diff --git a/script-viewer/alphas.json b/script-viewer/alphas.json new file mode 100644 index 0000000..7026a27 --- /dev/null +++ b/script-viewer/alphas.json @@ -0,0 +1,186 @@ +[ + { + "id" : "animation", + "type" : "ClutterTimeline", + "duration" : 5000, + "loop" : true + }, + { + "id" : "root", + "type" : "ClutterGroup", + "x": 0, + "y": 0, + "children" : [ + + { + "type": "ClutterText", + "text": "linear", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "path" : "M 20,10 L 400,10", + "alpha" : {"timeline" : "animation", "mode" : "linear"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "ramp-dec", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 40], [400, 40]], + "alpha" : {"timeline" : "animation", "function" : "ramp-dec"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "sine-inc", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 60], [400, 60]], + "alpha" : {"timeline" : "animation", "function" : "sine-inc"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "sine-dec", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 80], [400, 80]], + "alpha" : {"timeline" : "animation", "function" : "sine-dec"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "sine", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 100], [400, 100]], + "alpha" : {"timeline" : "animation", "function" : "sine"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "ramp", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 120], [400, 120]], + "alpha" : {"timeline" : "animation", "function" : "ramp"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "ramp", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 140], [400, 140]], + "alpha" : {"timeline" : "animation", "function" : "square"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "exp-inc", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 160], [400, 160]], + "alpha" : {"timeline" : "animation", "function" : "exp-inc"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "exp-dec", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 180], [400, 180]], + "alpha" : {"timeline" : "animation", "function" : "exp-dec"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "sine-half", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 200], [400, 200]], + "alpha" : {"timeline" : "animation", "function" : "sine-half"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "smoothstep-inc", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 220], [400, 220]], + "alpha" : {"timeline" : "animation", "function" : "smoothstep-inc"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "smoothstep-dec", + "font-name": "Sans 20px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[20, 240], [400, 240]], + "alpha" : {"timeline" : "animation", "function" : "smoothstep-dec"} + } + ] + }, + + ] + } +] diff --git a/script-viewer/behaviours.json b/script-viewer/behaviours.json new file mode 100644 index 0000000..816f919 --- /dev/null +++ b/script-viewer/behaviours.json @@ -0,0 +1,140 @@ +# there are inconsistencies in the naming of the nicks of the +# properties: + +[ + { + "id" : "animation", + "type" : "ClutterTimeline", + "num-frames" : 300, + "fps" : 60, + "loop" : true + }, + { + "id" : "root", + "type" : "ClutterGroup", + "x": 0, + "y": 0 + "children" : [ + { + "type": "ClutterLabel", + "text": "Scale", + "font-name": "Sans 30px", + "visible":true, + "x":50, + "y":100, + "behaviours" : [ + { + "type" : "ClutterBehaviourScale", + "x-scale-start" : 1.0, + "x-scale-end" : 0.5, + "y-scale-start" : 1.0, + "y-scale-end" : 0.5, + "alpha" : {"timeline" : "animation", "function" : "sine"} + }, + ] + }, + + { + "type": "ClutterLabel", + "text": "Rotate", + "font-name": "Sans 30px", + "color": "blue", + "visible":true, + "x":250, + "y":100, + "behaviours" : [ + { + "type" : "ClutterBehaviourRotate", + "angle-start" : 0.0, + "angle-end" : 359.0, + "alpha" : {"timeline" : "animation", "function" : "sine"} + }, + ] + }, + { + "type": "ClutterLabel", + "text": "Opacity", + "font-name": "Sans 30px", + "visible":true, + "x":400, + "y":100, + "behaviours" : [ + { + "type" : "ClutterBehaviourOpacity", + "opacity-start" : 100, + "opacity-end" : 255, + "alpha" : {"timeline" : "animation", "function" : "sine"} + } + ] + }, + { + "type": "ClutterLabel", + "text": "Depth", + "font-name": "Sans 30px", + "visible":true, + "x":100, + "y":200, + "behaviours" : [ + { + "type" : "ClutterBehaviourDepth", + "depth-start" : 50, + "depth-end" : -1000, + "alpha" : {"timeline" : "animation", "function" : "sine"} + } + ] + } , + + { + "type": "ClutterLabel", + "text": "Ellipse", + "font-name": "Sans 30px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourEllipse", + "center" : [150, 200], + "width" : 100, + "height" : 100, + "angle-start": 90.0, + "angle-end" : 180.0, + "alpha" : {"timeline" : "animation", "function" : "sine"} + } + ] + }, + + { + "type": "ClutterLabel", + "text": "Path", + "font-name": "Sans 30px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourPath", + "knots" : [[300, 200], [400,230], [300,150], [300,200]], + "alpha" : {"timeline" : "animation", "function" : "sine-inc"} + } + ] + }, + + { + "type": "ClutterLabel", + "text": "BSpline", + "font-name": "Sans 30px", + "visible":true, + "wrap":false, + "behaviours" : [ + { + "type" : "ClutterBehaviourBSpline", + "knots" : [[100, 300], [200,300], [300,300], + [400, 400], [450, 400], [450, 400], + [500, 400]], + "alpha" : {"timeline" : "animation", "function" : "ramp-dec"} + } + ] + } + + ] + } +] diff --git a/script-viewer/redhand.png b/script-viewer/redhand.png new file mode 100644 index 0000000000000000000000000000000000000000..c07d8acd33d54996512f6e2b6ca4d17b5ffc4f20 GIT binary patch literal 8250 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 E2il-`3jhEB literal 0 HcmV?d00001 diff --git a/script-viewer/script-viewer.c b/script-viewer/script-viewer.c new file mode 100644 index 0000000..afaa84e --- /dev/null +++ b/script-viewer/script-viewer.c @@ -0,0 +1,239 @@ +/* ClutterScript viewer, a viewer for displaying clutter scripts or fragments + * of clutterscript. + * + * Copyright 2007 OpenedHand Ltd + * Copyright 2010 Intel Corp + * + * Authored by Øyvind Kolås + * + * Licensed under the GPL v2 or greater. + */ + +#include +#include +#include +#include +#include +#include + + +/* Global structure containing information parsed from commandline parameters */ +static struct +{ + gboolean fullscreen; + gchar *bg_color; + gint width, height; + gchar *path; + gchar *id; + gchar *timeline; + gchar *png; +} +args = +{ + FALSE, + "gray", + 640, 480, + NULL, + "root", + NULL, + NULL +}; + +/* using global variables, this is needed at least for the ClutterScript to avoid + * possible behaviours to be destroyed when the script is destroyed. + */ +static ClutterActor *stage; +static ClutterActor *actor = NULL; +static ClutterTimeline *timeline = NULL; +static ClutterScript *script = NULL; + +gboolean +parse_args (gchar **argv) +{ + gchar **arg = argv + 1; + + while (*arg) + { + if (g_str_equal (*arg, "-h") || + g_str_equal (*arg, "--help")) + { +usage: + g_print ("\nUsage: %s [options] %s\n\n", + argv[0], args.path ? args.path : ""); + g_print (" -s stage size (%ix%i)\n", + args.width, args.height); + g_print (" -fs run fullscreen (%s)\n", + args.fullscreen ? "TRUE" : "FALSE"); + g_print (" -bg stage color (%s)\n", + args.bg_color); + g_print (" -id which actor id to show (%s)\n", + args.id ? args.id : "NULL"); + g_print (" -timeline a timeline to play (%s)\n", + args.timeline ? args.timeline : "NULL"); + g_print (" -o write screenshot, then quit (%s)\n", + args.png? args.png: "NULL"); + g_print (" -h this help\n\n"); + return FALSE; + } + else if (g_str_equal (*arg, "-s")) + { + arg++; g_assert (*arg); + args.width = atoi (*arg); + if (strstr (*arg, "x")) + args.height = atoi (strstr (*arg, "x") + 1); + } + else if (g_str_equal (*arg, "-bg")) + { + arg++; g_assert (*arg); + args.bg_color = *arg; + } + else if (g_str_equal (*arg, "-id")) + { + arg++; g_assert (*arg); + args.id = *arg; + } + else if (g_str_equal (*arg, "-timeline")) + { + arg++; g_assert (*arg); + args.timeline = *arg; + } + else if (g_str_equal (*arg, "-o")) + { + arg++; g_assert (*arg); + args.png = *arg; + } + else if (g_str_equal (*arg, "-fs")) + { + args.fullscreen = TRUE; + } + else + { + args.path = *arg; + } + arg++; + } + if (args.path == NULL) + { + g_print ("Error parsing commandline: no clutterscript provided\n"); + goto usage; + } + return TRUE; +} + +static ClutterActor * +initialize_stage () +{ + ClutterActor *stage; + ClutterColor color; + + stage = clutter_stage_get_default (); + + clutter_actor_set_size (stage, args.width, args.height); + + clutter_color_from_string (&color, args.bg_color); + clutter_stage_set_color (CLUTTER_STAGE (stage), &color); + + clutter_stage_set_fullscreen (CLUTTER_STAGE (stage), args.fullscreen); + + return stage; +} + + +static void +load_script (const gchar *path) +{ + GError *error = NULL; + + g_assert (CLUTTER_IS_SCRIPT (script)); + clutter_script_load_from_file (script, path, &error); + + if (error) + { + ClutterColor error_color = { 0xff, 0, 0, 0xff }; + + actor = clutter_text_new_with_text ("Sans 20px", error->message); + clutter_text_set_color (CLUTTER_TEXT (actor), &error_color); + + clutter_actor_set_size (actor, clutter_actor_get_width (stage), 200); + + g_print ("%s\n", error->message); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor); + clutter_actor_show_all (stage); + + g_clear_error (&error); + + return; + } + + actor = CLUTTER_ACTOR (clutter_script_get_object (script, args.id)); + + if (actor == NULL) + { + ClutterColor error_color = { 0xff, 0, 0, 0xff }; + gchar message[256]; + + g_sprintf (message, "No actor with \"id\"=\"%s\" found", args.id); + actor = clutter_text_new_with_text ("Sans 30px", message); + clutter_text_set_color (CLUTTER_TEXT (actor), &error_color); + } + else + { + clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor); + clutter_actor_show_all (stage); + + if (args.timeline != NULL) + { + timeline = CLUTTER_TIMELINE (clutter_script_get_object ( + script, args.timeline)); + if (timeline) + clutter_timeline_start (timeline); + } + } +} + +static gboolean watch_file (gpointer data) +{ + static struct stat stat_buf; + static time_t previous_ctime = 0; + + g_stat (args.path, &stat_buf); + + if (stat_buf.st_ctime != previous_ctime) + { + if (script != NULL) + g_object_unref (script); + + script = clutter_script_new (); + if (actor != NULL) + { + clutter_actor_destroy (actor); + } + if (timeline != NULL) + { + timeline = NULL; + } + + load_script (args.path); + } + + previous_ctime = stat_buf.st_ctime; + return TRUE; +} + +gint +main (gint argc, + gchar **argv) +{ + clutter_init (&argc, &argv); + + if (!parse_args (argv)) + return -1; + + stage = initialize_stage (); + + g_timeout_add (1000, watch_file, NULL); + + clutter_main (); + return 0; +} diff --git a/script-viewer/test-script.json b/script-viewer/test-script.json new file mode 100644 index 0000000..52c81f2 --- /dev/null +++ b/script-viewer/test-script.json @@ -0,0 +1,70 @@ +[ + { + "id" : "main-timeline", + "type" : "ClutterTimeline", + "num-frames" : 600, + "fps" : 60, + "loop" : true + }, + { + "id" : "rotate-behaviour", + "type" : "ClutterBehaviourRotate", + "angle-start" : 0.0, + "angle-end" : 360.0, + "axis" : "y-axis", + "alpha" : { + "timeline" : "main-timeline", + "function" : "sine" + } + }, + { + "id" : "fade-behaviour", + "type" : "ClutterBehaviourOpacity", + "opacity-start" : 255, + "opacity-end" : 0, + "alpha" : { + "timeline" : "main-timeline", + "function" : "ramp-inc" + } + }, + { + "id" : "root", + "type" : "ClutterGroup", + "width" : 500, + "height" : 200, + "children" : [ + + { + "id" : "red-button", + "type" : "ClutterRectangle", + "color" : "#ff0000ff", + "x" : 50, + "y" : 50, + "width" : 100, + "height" : 100, + "visible" : true, + }, + { + "id" : "green-button", + "type" : "ClutterRectangle", + "color" : "#00ff00ff", + "x" : 200, + "y" : 50, + "width" : 100, + "height" : 100, + "visible" : true, + "behaviours" : [ "fade-behaviour"] + }, + { + "id" : "red-hand", + "type" : "ClutterTexture", + "filename" : "redhand.png", + "x" : 50, + "y" : 50, + "opacity" : 100, + "visible" : true, + "behaviours" : [ "rotate-behaviour", "fade-behaviour" ] + } + ] + } +] diff --git a/script-viewer/text.json b/script-viewer/text.json new file mode 100644 index 0000000..c1b0514 --- /dev/null +++ b/script-viewer/text.json @@ -0,0 +1,102 @@ +[ + { + "id" : "animation", + "type" : "ClutterTimeline", + "duration" : 5000, + "loop" : true + }, + { + "id" : "root", + "type" : "ClutterGroup", + "x" : 50, + "y" : 40, + "children" : [ + { + "type" : "ClutterTexture", + "filename" : "redhand.png", + "visible" : true, + "x" : 200, + "y" : 200, + "behaviours" : [ + { + "type" : "ClutterBehaviourRotate", + "alpha" : { "timeline" : "animation", "mode" : "linear" } + } + ] + }, + { + "type" : "ClutterText", + "text" : "Clutter", + "font-name" : "Sans 60px", + "visible" : true, + "x" : 100, + "y" : 100, + "behaviours" : [ + { + "type" : "ClutterBehaviourScale", + "x-scale-start" : 1.0, + "y-scale-start" : 1.0, + "x-scale-end" : 0.5, + "y-scale-end" : 0.5, + "alpha" : { "timeline" : "animation", "mode" : "easeOutSine" } + }, + { + "type" : "ClutterBehaviourOpacity", + "opacity-start" : 100, + "opacity-end" : 255, + "alpha" : { "timeline" : "animation", "mode" : "linear" } + } + ] + }, + { + "type" : "ClutterText", + "text" : "Script", + "font-name" : "Sans 60px", + "color" : "blue", + "visible" : true, + "x" : 160, + "y" : 130, + "behaviours" : [ + { + "type" : "ClutterBehaviourScale", + "x-scale-start" : 0.5, + "y-scale-start" : 0.5, + "x-scale-end" : 1.0, + "y-scale-end" : 1.0, + "alpha" : {"timeline" : "animation", "mode" : "easeInSine" } + }, + { + "type" : "ClutterBehaviourOpacity", + "opacity-start" : 100, + "opacity-end" : 255, + "alpha" : { "timeline" : "animation", "mode" : "linear"} + } + ] + }, + { + "type" : "ClutterText", + "text" : "Viewer", + "font-name" : "Sans 60px", + "visible" : true, + "x" : 200, + "y" : 170, + "behaviours" : [ + { + "type" : "ClutterBehaviourScale", + "x-scale-start" : 1.0, + "y-scale-start" : 1.0, + "x-scale-end" : 0.5, + "y-scale-end" : 0.5, + "alpha" : { "timeline" : "animation", "mode" : "easeOutSine" } + }, + { + "type" : "ClutterBehaviourOpacity", + "opacity-start" : 100, + "opacity-end" : 255, + "alpha" : { "timeline" : "animation", "mode" : "linear" } + } + ] + }, + ] + } +] -- 2.7.4

  2. j3(LwY1kAE8_7HF7P5! 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%0Do<0D}@Sg}>BF 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 wLGvSg`nx$j!v6nk=XQ;I0srmAxFx + + + + + + <bullet color="#444444ff" font="VistaSansMed 40" /> + <transition style="flip" /> + <background src="bg.png" /> + </defaults> + + <slide> + <title>Hello! + This is a simple 'OPT' demo presentation + OPT is a simple presentation program built with Clutter by folks at OH. + Presentations are built with simple XML files. + Press any key to go on... + + + + + Navigating with OPT. + Any key to advance to next slide. + 'r' or left arrow to go back. + 'm' for menu, 'q' quits. + You can also use mouse buttons. + + + + + + Features 1 + You can embed images; + + And have different transition effects. + + + + + + Features 2 + You can display source code + clutter_label_set_text_extents (CLUTTER_LABEL(bullet), + width - symbol_width, + 0); + +clutter_actor_set_position (bullet, x, y); +clutter_group_add (CLUTTER_GROUP(slide), bullet); + +clutter_actor_show(bullet); +clutter_actor_show(symbol); + + + + + + Features 3 + You can change + colors + and fonts + + + + Thats all folks. + Dont forget to check the demo.xml source for making your own presentations. + And send patches to improve OPT further! + + + \ No newline at end of file diff --git a/opt/hirez/oh-present.xcf b/opt/hirez/oh-present.xcf new file mode 100644 index 0000000000000000000000000000000000000000..1525386294379793b9fecfb740288efa748fd1aa GIT binary patch literal 1474567 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 %AOabgvZ7M)a7}C5LhSoH9?JBri;- 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]X*yA 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 z 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 literal 0 HcmV?d00001 diff --git a/courasel/tasks.png b/courasel/tasks.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ea953cbd04d20cc46d65b3af61aae52c0a6d54 GIT binary patch literal 5053 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 z z2_x$WZia72i$GJcg<*5;ao0w0@ugALMuaH{GZ2~)P9l7Qa0%gZ?7tr&yp9gZ9*6MA zOQX!^8`K_Gh3LI{!3aK62?(29`Ypd@wzo6A4 ztxwSu{{isJf!t*23H2rPM$N@!a2S`L$P=C1DFfKPUjpe)flh%{btjT{C8vVA6Y6e( zEt3ABUSH36DabxqfX<+ilQk;6Kp&4FZDz)W50}`he$K$eb55ln@2B0JSgNYkd^tjq?CrxYx4KnYI55eH=_S z%nf8a>{-bRzze{Npp6d+y}kZ5bpv`U(-PpX5^ zYM5%KHY%HlFr`Km5joXYGTD2sQc>hszNvlfZ~yw%b**(@_r2EhtaU%nkChk1^w+@Z zV*vorU;UP=xj2D^-I0SeH!XHt5@&JJtvm>K*5Whp8M7CriTzYBBDN~t6rFWacqxyy3BT>x z<@;lQ91yVHuO((WxYzKbqkCVM3##YtBxv)K>bk;~8;AC!_e=rfgUgpJggVZca#g0v zaoXDJD68=)-yt|^AGQe@4zvNb(17Se;SXy}T0KkqBUi*+Q`^Os z9ALB#aD+CpvQ$=(*(P8N*T0HLm|53ec8KQWfp*h0z^ZU?3?EmIPycegVOlRLzvk&X znrX&cEYvs$dk7uWp=K*fwL%SEz}#?$qRhD2U_F9$H$EGYH}TbPwi)?DC1rBSNu#&R zuX>`OB+0o>Uw_Qg`pvr^mt+?cJXj-!xS_K-pb|G|q z+Sy2z^RywJh9f?PTlN6gSX?v4&!C;@OJ4r~vqN+Z1yi}==_iRBcllHvma#sgyFZfhDZMwZ^Vq)w3)(w{hef`TlyH@?h*+L&C_HxkM1Fg2e!4S5AYIiS zF6mgd6))XWt$@~jBEMX8U_K#{HzZE&qSHkwB_x^kD_m&I#TtY~6qkKNqPt!4xpL>^ zAU?J8z3x7vCU6D)oSyzTLV~HZS!!Dsn%!(1r`@#flhpZ*#}|VpUTI#d1l+H8+8UKW zm#BT*0jJd4R`|)v*`sz6=L{>X&nMzcl)WLl9Kp&$2Dn>^R^ z%uG%Cgmaa%6V^xPw~|>S23dLp?CS1lji}{{Fn~)h#bpr#OCF0g*&6S+#40 z#QSp0Oirzu=p!d!IiUIRcP_tlrJ_?^rS@-_x3J}?HdLmUY_GqcC+zJ*ZQd|R3d7+{ za;Ix1t?LX=OW#U>WH9P$QVBIDt*A1$xF5B_)z?P%aNOq6ky@?mS^Qf_$ANj#)tAQh zD`a-|o)wTlF^^Ye`8~XK(CR!@G&zosob@s)pE>Kgt2|?*&^rh7} z=I<3}bTIgBH<8^9sOjnAbGHqJaOu(9{-0mk+b`_l_bhBL@xS+r-Do$4*Z=a+^NFO2 zzz42~dyjQuE&s#*8DC>$5p-->J(yeb-i_z;$cvB`_EX`o+gxz+S-Q=MZR4)55e#pd zn*GX#amsTrSkMSXMqy5KkE!~#r^UUVC&h10swITt=S7e}z)#C7o7u=b6z|l!8m()o zGN%pcZ!1>lkyHK%zvB98IjpaHV&`mw@*D;{BB2fHwDuMqj;4yDVl>$ZOY^xZU}j^q zp`tkDAt?zq4Lh)8Pc~DEb|(Cf^*P4vbocLUCQ!^goiOUiY|R10-A#~Qr>@kw7LX;P z$c4Fp{2yVoHU{D1nthw7^=gXjhS2L2(7x{~fuqeb&;(^Oq`q&F-{3q#ztaa!bi+6n z+WZBUT-l7)K7*}LfgJl6FocQWVE*6CMCxn=eP^M-{}L(#lf_DqthfhYbJ4%OwT*%GZv%27v>)y%HpBHnsAH<+o99}m;K zd&ThV8t_BL?pS~)*(5|!Oq`z{R80YTpaEi=bKRM_<9w%Vw}6Dl3qI1{r2W+@3HElU zmVi$9Q%F%~6dR_sf<3fNLD2cG&48tjKw=kT)D+%@irNkYX;k7!ZQ-EFz3mRU_D+KY S1Dx^~1{idvZ>{&ftp5Um$YYNH literal 0 HcmV?d00001 diff --git a/courasel/web-browser.png b/courasel/web-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..1df505c3e500c839aaf45059d09ed8b1d96c01b5 GIT binary patch literal 10151 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 VI|7OY0?7aX002ovPDHLkV1l`A!qor( literal 0 HcmV?d00001 diff --git a/foofone/Makefile b/foofone/Makefile new file mode 100644 index 0000000..1a7d3d4 --- /dev/null +++ b/foofone/Makefile @@ -0,0 +1,14 @@ +LIBS=`pkg-config --libs clutter-1.0` +INCS=`pkg-config --cflags clutter-1.0` +CFLAGS="-lm" + +.c.o: + $(CC) -g -Wall $(CFLAGS) $(INCS) -c $*.c + +all: foofone + +foofone: foofone.o + $(CC) -g -Wall $(CFLAGS) -o $@ foofone.o $(LIBS) + +clean: + rm -fr *.o foofone diff --git a/foofone/button.png b/foofone/button.png new file mode 100644 index 0000000000000000000000000000000000000000..e643c30976bb17d5d4dd41eb0faeedca32f774a0 GIT binary patch literal 683 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νv==O?Z!G7 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 S5&)0@0000gcyqV(DCY@`?%n4&#h z978JRyuG_H?^S}tv5(7J8xj;ATsSo`L?Iw!(k`(`r$f92iX0}_52%`~)Lq9Z)#@&?$AUzAv7Y`?8B{j|cb zm43^G&1Umndu`gJaG+>s$h_oi0`zOs<)_F6BjX{HtjoG5_^UI}=KXx3x&G`JY z<@>)K`+Qf1IDK8&<+XIt8QJ3p6ATt#FNoy(BQu-!goX723^ zyYH?u^0_>veSY2CyRZ2&XK8KD+s=J=lTKX2=eMOsUNH3yZkv8u_59q9 zqT=dproOxDSd}JqF;2+fX>dtqP?2I*xG2HUd5posgw0`*A%jpa^`vZ1Pswfy)DV%| z!gaCs?!31;rx)aJk4}xKUG;3IFvxx1%67Nzi&{G+acx-hMUzi=x?jBOS=Jb}cG;P* z)uLU2B8etan*34cbxr=8RQhWDt@yuNO_X7g#;$uJ_Vds0-=jU_#r7y2F^T@;*BM@Y zwK`<*B=@6=6EwhM?3>j*o9g!S-~TSZSNdY?&wc%M`} + * Licensed under the GPL v2 or greater. + * + */ + +#include +#include +#include + +#define CSW 240 +#define CSH 320 + +typedef struct Button +{ + ClutterActor *actor; + gchar *face; + gint sx, sy; +} +Button; + +typedef struct App +{ + Button *buttons[12]; + ClutterActor *dpy, *dpy_entry; + gint dpyx, dpyy; + ClutterActor *screen_dialpad, *screen_dial, *dial_label; + gboolean dialing_state; + ClutterTimeline *dialing_timeline; +} +App; + +/* An alpha function that goes from 0->1->0 along a sine. */ +static gdouble +alpha_sine_func (ClutterAlpha *alpha, + gpointer unused) +{ + ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha); + return sin(clutter_timeline_get_progress (timeline) * M_PI); +} + +gulong ALPHA_SINE; + +/* A boolean 'interpolator', switching from 'a' to 'b' when 'progress' = 0.5 */ +static gboolean +boolean_progress (const GValue *a, + const GValue *b, + gdouble progress, + GValue *retval) +{ + gboolean ba = g_value_get_boolean (a); + gboolean bb = g_value_get_boolean (b); + gboolean res = (progress <= 0.5) ? ba : bb; + g_value_set_boolean (retval, res); + return TRUE; +} + +void +on_call_deactivate_complete (ClutterTimeline *timeline, + gpointer user_data) +{ + App *app = (App*)user_data; + /* reset the now hidden dialing screen */ + clutter_actor_set_rotation (app->screen_dial, CLUTTER_Y_AXIS, 0, 0, 0, 0); +} + +void +call_deactivate (App *app) +{ + int i; + ClutterAnimation *anim; + ClutterAlpha *alpha; + + /* stop the flashing text */ + clutter_timeline_stop (app->dialing_timeline); + + /* clear dialpad entry ready */ + clutter_text_set_text (CLUTTER_TEXT(app->dpy_entry), ""); + + /* rotate screen_dial, and hide it at mid-animation */ + clutter_actor_set_rotation (app->screen_dial, CLUTTER_Y_AXIS, 0.0, 0.0, 0.0, 0.0); + anim = clutter_actor_animate (app->screen_dial, CLUTTER_LINEAR, 150, + "rotation-angle-y", -180.0, + "visible", FALSE, + NULL); + alpha = clutter_animation_get_alpha (anim); + + /* reset positions of dialer actors, needed back for flip */ + for (i=0; i<12; i++) + { + clutter_actor_set_position (app->buttons[i]->actor, + app->buttons[i]->sx, app->buttons[i]->sy); + clutter_actor_set_opacity (app->buttons[i]->actor, 0xff); + } + clutter_actor_set_position (app->dpy, app->dpyx, app->dpyy); + + /* rotate hidden screen_dialpad, and show it at mid-animation */ + clutter_actor_set_rotation (app->screen_dialpad, CLUTTER_Y_AXIS, 180.0, 0.0, 0.0, 0.0); + clutter_actor_animate_with_alpha (app->screen_dialpad, alpha, + "rotation-angle-y", 0.0, + "visible", TRUE, + "signal-after::completed", + G_CALLBACK(on_call_deactivate_complete), + app, + NULL); + + app->dialing_state = FALSE; +} + +void +on_call_activate_complete (ClutterActor *actor, + gpointer user_data) +{ + ClutterAlpha *alpha; + ClutterBehaviour *behave; + App *app = (App*)user_data; + + clutter_actor_hide (app->screen_dialpad); + + /* Setup the pulsing 'calling..' text if need be */ + if (app->dialing_timeline == NULL) + { + app->dialing_timeline = clutter_timeline_new (1000); + clutter_timeline_set_loop (app->dialing_timeline, TRUE); + alpha = clutter_alpha_new_full (app->dialing_timeline, ALPHA_SINE); + behave = clutter_behaviour_opacity_new (alpha, 0xff, 0); + clutter_behaviour_apply (behave, app->dial_label); + } + clutter_timeline_start (app->dialing_timeline); + + app->dialing_state = TRUE; +} + +void +call_activate (App *app) +{ + gint i; + gfloat x, y; + ClutterAnimation *anim; + ClutterAlpha *alpha; + + /* zoom in the dialing window */ + clutter_actor_set_scale (app->screen_dial, 0.1, 0.1); + clutter_actor_set_opacity (app->screen_dial, 0x66); + clutter_actor_show_all (app->screen_dial); + + anim = clutter_actor_animate (app->screen_dial, CLUTTER_EASE_OUT_SINE, 150, + "opacity", 0xff, + "scale-x", 1.0, + "scale-y", 1.0, + NULL); + alpha = clutter_animation_get_alpha (anim); + + /* Set up effects to shoot everything offscreen, synchronized with screen_dial animation */ + for (i=0; i<12; i++) + { + clutter_actor_set_position (app->buttons[i]->actor, + app->buttons[i]->sx, + app->buttons[i]->sy); + + switch ((i+1) % 3) + { + case 0: + x = CSW + clutter_actor_get_width (app->buttons[i]->actor) / 2; + y = app->buttons[i]->sy; + break; + case 1: + x = -clutter_actor_get_width (app->buttons[i]->actor) / 2; + y = app->buttons[i]->sy; + break; + case 2: + x = app->buttons[i]->sx; + if (i < 3) + y = -clutter_actor_get_height (app->buttons[i]->actor) / 2; + else + y = CSH + clutter_actor_get_height (app->buttons[i]->actor) / 2; + break; + } + + clutter_actor_animate_with_alpha (app->buttons[i]->actor, alpha, + "opacity", 0x00, + "x", x, + "y", y, + NULL); + } + + clutter_actor_set_position (app->dpy, app->dpyx, app->dpyy); + clutter_actor_animate_with_alpha(app->dpy, alpha, + "x", (float)app->dpyx, + "y", -clutter_actor_get_height (app->dpy), + "signal-after::completed", + on_call_activate_complete, + app, + NULL); +} + +void +on_button_effect_complete (ClutterAnimation *animation, + gpointer user_data) +{ + ClutterActor *actor = (ClutterActor*)user_data; + + /* reset after effect */ + clutter_actor_set_opacity (actor, 0xff); + clutter_actor_set_scale (actor, 1.0, 1.0); +} + +void +button_activate (App *app, Button *b) +{ + // Wait for the previous animation to end + if (clutter_actor_get_animation (b->actor)) + return; + + clutter_text_insert_text (CLUTTER_TEXT(app->dpy_entry), b->face, -1); + + clutter_actor_set_opacity (b->actor, 0xff); + clutter_actor_set_scale (b->actor, 1.0, 1.0); + clutter_actor_animate (b->actor, CLUTTER_LINEAR, 50, + "opacity", 0x00, + "scale-x", 1.5, + "scale-y", 1.5, + "signal-after::completed", on_button_effect_complete, b->actor, + NULL); +} + +static gboolean +on_input (ClutterStage *stage, + ClutterEvent *event, + gpointer user_data) +{ + App *app = (App*)user_data; + + if (event->type == CLUTTER_BUTTON_PRESS) + { + ClutterActor *actor = clutter_event_get_source (event); + const gchar *label = clutter_actor_get_name (actor); + int label_val; + + if (app->dialing_state == TRUE) + { + call_deactivate(app); + return TRUE; + } + + /* retrieve button id (stored in the Actor's name) */ + if ( !label ) + return FALSE; + label_val = atoi(label); + if ( label_val < 1 || label_val > 12 ) + return FALSE; + --label_val; + + if (label_val == 11) /* 'dial' key */ + call_activate (app); + else + button_activate (app, app->buttons[label_val]); + + return TRUE; + } + + return FALSE; +} + +void +make_ui (App *app) +{ + gint i, xpad, ypad, x ,y, xinit, xdpy, ydpy; + ClutterActor *button_texture, *a; + ClutterColor text_color = { 0xff, 0xff, 0xff, 0xff }, + rect_color = { 0, 0, 0, 0x99 }, + black_color = { 0, 0, 0, 0xff }; + + button_texture = clutter_texture_new_from_file ("button.png", NULL); + + xpad = (CSW-(3*clutter_actor_get_width(button_texture)))/4; + x = xinit = xpad; + ypad = xpad/2; + y = (CSH - (4 * (ypad + clutter_actor_get_height(button_texture)))); + + /* + * screen_dialpad (group) + * +----dpy (group) + * +---- (texture:display.png) + * +----dpy_entry (text) + * +----buttons[0:11]->actor (group) + * +---- (texture:button.png) + * +---- (text) + */ + + app->screen_dialpad = clutter_group_new(); + clutter_actor_set_size (app->screen_dialpad, CSW, CSH); + clutter_actor_set_anchor_point_from_gravity (app->screen_dialpad, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (app->screen_dialpad, CSW/2, CSH/2); + + app->dpy = clutter_group_new(); + + a = clutter_texture_new_from_file ("display.png", NULL); + clutter_group_add (CLUTTER_GROUP(app->dpy), a); + app->dpyx = xdpy = x; + app->dpyy = ydpy = (y - clutter_actor_get_height(app->dpy))/2; + clutter_actor_set_position (app->dpy, xdpy, ydpy); + + clutter_group_add(CLUTTER_GROUP(app->screen_dialpad), app->dpy); + + app->dpy_entry = clutter_text_new_full ("Sans Bold 32px", "", &text_color); + clutter_text_set_editable (CLUTTER_TEXT(app->dpy_entry), TRUE); + clutter_actor_set_position (app->dpy_entry, 8, 8); + clutter_actor_set_size (app->dpy_entry, clutter_actor_get_width (app->dpy) - 16, 32); + clutter_group_add (CLUTTER_GROUP(app->dpy), app->dpy_entry); + + for (i=0; i<12; i++) + { + gchar buf[8]; + gchar label[8]; + + app->buttons[i] = g_new0(Button, 1); + app->buttons[i]->actor = clutter_group_new (); + g_snprintf (label, 8, "%d", i+1); + clutter_actor_set_name (app->buttons[i]->actor, label); + clutter_actor_set_reactive (app->buttons[i]->actor, TRUE); + clutter_actor_set_anchor_point_from_gravity (app->buttons[i]->actor, + CLUTTER_GRAVITY_CENTER); + + if ( i == 0 ) + a = button_texture; + else + a = clutter_clone_new(button_texture); + clutter_group_add(CLUTTER_GROUP(app->buttons[i]->actor), a); + + switch (i) + { + case 9: + g_snprintf(buf, 8, "#"); + break; + case 10: + g_snprintf(buf, 8, "0"); + break; + case 11: + g_snprintf(buf, 8, "*"); + break; + default: + g_snprintf(buf, 8, "%i", i+1); + break; + } + + a = clutter_text_new_full("Sans Bold 32px", buf, &text_color); + clutter_actor_set_position (a, + (clutter_actor_get_width (button_texture) - clutter_actor_get_width (a))/2, + (clutter_actor_get_height (button_texture) - clutter_actor_get_height (a))/2); + clutter_group_add (CLUTTER_GROUP (app->buttons[i]->actor), a); + + clutter_group_add (CLUTTER_GROUP (app->screen_dialpad), app->buttons[i]->actor); + + /* need to remember positions for anim - sucky */ + app->buttons[i]->sx = x + clutter_actor_get_width (app->buttons[i]->actor)/2; + app->buttons[i]->sy = y + clutter_actor_get_height (app->buttons[i]->actor)/2; + clutter_actor_set_position (app->buttons[i]->actor, + app->buttons[i]->sx, + app->buttons[i]->sy); + + /* Really we should use a Clutter*Box here.. */ + if (i % 3 == 2) + { + x = xinit; + y += (ypad + clutter_actor_get_height (button_texture)); + } + else + x += (xpad + clutter_actor_get_width(button_texture)); + + app->buttons[i]->face = g_strdup (buf); + } + + /* + * screen_dial + * +---- (rectangle:black) + * +---- (texture:call-background.png) + * +---- (rectangle:semi transparent) + * +----dial_label (text:"Calling...") + */ + + app->screen_dial = clutter_group_new(); + clutter_actor_set_anchor_point_from_gravity (app->screen_dial, CLUTTER_GRAVITY_CENTER); + clutter_actor_set_position (app->screen_dial, CSW/2, CSH/2); + + a = clutter_rectangle_new_with_color (&black_color); + clutter_actor_set_size (a, CSW, CSH); + clutter_group_add (CLUTTER_GROUP(app->screen_dial), a); + + a = clutter_texture_new_from_file ("call-background.png", NULL); + clutter_group_add (CLUTTER_GROUP(app->screen_dial), a); + + a = clutter_rectangle_new_with_color (&rect_color); + clutter_actor_set_size (a, CSW, CSH/6); + clutter_actor_set_position (a, 0, (CSH - (CSH/6))/2); + clutter_group_add (CLUTTER_GROUP(app->screen_dial), a); + + app->dial_label = clutter_text_new_full ("Sans Bold 32px", "Calling...", &text_color); + clutter_actor_set_position (app->dial_label, 10, (CSH - (CSH/6))/2 + 10); + clutter_group_add (CLUTTER_GROUP (app->screen_dial), app->dial_label); +} + +int +main (int argc, char *argv[]) +{ + ClutterActor *stage; + ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff }; + + App *app; + + clutter_init (&argc, &argv); + + ALPHA_SINE = clutter_alpha_register_func (alpha_sine_func, NULL); + clutter_interval_register_progress_func (G_TYPE_BOOLEAN, boolean_progress); + + app = g_new0(App, 1); + + stage = clutter_stage_get_default (); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + clutter_actor_set_size (stage, CSW, CSH); + + make_ui (app); + + clutter_group_add (CLUTTER_GROUP(stage), app->screen_dial); + clutter_group_add (CLUTTER_GROUP(stage), app->screen_dialpad); + + clutter_actor_hide_all (app->screen_dial); + clutter_actor_show_all (stage); + + g_signal_connect (stage, + "event", + G_CALLBACK (on_input), + app); + + printf("\n..Press '*' to dial..\n\n"); + + clutter_main (); + + return 0; +} diff --git a/gps-globe/.gitignore b/gps-globe/.gitignore new file mode 100644 index 0000000..f73f324 --- /dev/null +++ b/gps-globe/.gitignore @@ -0,0 +1,23 @@ +/Makefile +/Makefile.in +/aclocal.m4 +/autom4te.cache +/config.h +/config.h.in +/config.log +/config.status +/configure +/depcomp +/install-sh +/missing +/stamp-h1 +/src/Makefile +/src/Makefile.in +/src/gps-globe +/src/gpsg-enum-types.c +/src/gpsg-enum-types.h +/src/stamp-gpsg-enum-types.h +/src/gpsg-sphere-vertex-shader.c + +.deps +*.o diff --git a/gps-globe/AUTHORS b/gps-globe/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/gps-globe/COPYING b/gps-globe/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/gps-globe/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 of the License, or + (at your option) any later version. + + 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/gps-globe/ChangeLog b/gps-globe/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/gps-globe/INSTALL b/gps-globe/INSTALL new file mode 100644 index 0000000..8b82ade --- /dev/null +++ b/gps-globe/INSTALL @@ -0,0 +1,291 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008 Free Software Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 6. Often, you can also type `make uninstall' to remove the installed + files again. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *Note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/gps-globe/Makefile.am b/gps-globe/Makefile.am new file mode 100644 index 0000000..af437a6 --- /dev/null +++ b/gps-globe/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/gps-globe/NEWS b/gps-globe/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/gps-globe/README b/gps-globe/README new file mode 100644 index 0000000..a0aeabb --- /dev/null +++ b/gps-globe/README @@ -0,0 +1,13 @@ +GpsGlobe +======== + +GpsGlobe is a small program to display a GPS position on a 3D model of +the earth. + +Data +==== + +The image data for the earth is taken from the NASA Visible Earth +project here: + +http://visibleearth.nasa.gov/view_rec.php?id=2430 diff --git a/gps-globe/autogen.sh b/gps-globe/autogen.sh new file mode 100755 index 0000000..7784749 --- /dev/null +++ b/gps-globe/autogen.sh @@ -0,0 +1,14 @@ +#! /bin/sh + +PROJECT=gps-globe + +AUTORECONF=`which autoreconf` + +if test -z "$AUTORECONF"; then + echo "*** No autoreconf found ***" + exit 1 +else + autoreconf -v --install || exit $? +fi + +./configure "$@" && echo "Now type 'make' to compile $PROJECT." diff --git a/gps-globe/configure.ac b/gps-globe/configure.ac new file mode 100644 index 0000000..8aff462 --- /dev/null +++ b/gps-globe/configure.ac @@ -0,0 +1,20 @@ +AC_INIT([gps-globe], 0.1) + +AM_CONFIG_HEADER([config.h]) + +AM_INIT_AUTOMAKE([1.9]) + +AC_PROG_CC +AC_PROG_RANLIB + +PKG_CHECK_MODULES(CLUTTER, [clutter-1.0]) + +AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal]) +AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums]) + +AC_CONFIG_FILES([ + Makefile + src/Makefile +]) + +AC_OUTPUT diff --git a/gps-globe/data/visible-earth.jpg b/gps-globe/data/visible-earth.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f656b4320aac52c55372c54a24be520be890e6c2 GIT binary patch literal 67099 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 $@ ; \ + sed -e 's/["\\]/\\&/g' -e 's/^/"/' -e 's/$$/\\n"/' $< >> $@ ; \ + echo ";" >> $@ + +gps_globe_LDADD = \ + @CLUTTER_LIBS@ + +ENUMFILES = gpsg-enum-types.c gpsg-enum-types.h +STAMPFILES = stamp-gpsg-enum-types.h +BUILT_SOURCES = $(ENUMFILES) + +gpsg-enum-types.h: stamp-gpsg-enum-types.h + @true +stamp-gpsg-enum-types.h: $(source_h) Makefile + $(QUIET_GEN)( $(GLIB_MKENUMS) \ + --template $(srcdir)/gpsg-enum-types.h.in \ + $(source_h) ) >> xgen-ceth && \ + (cmp -s xgen-ceth gpsg-enum-types.h || cp xgen-ceth gpsg-enum-types.h) && \ + rm -f xgen-ceth && \ + echo timestamp > $(@F) + +gpsg-enum-types.c: gpsg-enum-types.h + $(QUIET_GEN)( $(GLIB_MKENUMS) \ + --template $(srcdir)/gpsg-enum-types.c.in \ + $(source_h) ) >> xgen-cetc && \ + cp xgen-cetc gpsg-enum-types.c && \ + rm -f xgen-cetc + +DISTCLEANFILES = \ + $(ENUMFILES) + +EXTRA_DIST = \ + gpsg-enum-types.h.in \ + gpsg-enum-types.c.in \ + gpsg-sphere-vertex-shader.glsl diff --git a/gps-globe/src/gpsg-enum-types.c.in b/gps-globe/src/gpsg-enum-types.c.in new file mode 100644 index 0000000..b8d63bd --- /dev/null +++ b/gps-globe/src/gpsg-enum-types.c.in @@ -0,0 +1,41 @@ +/*** BEGIN file-header ***/ +#include "gpsg-enum-types.h" +/*** END file-header ***/ + +/*** BEGIN file-production ***/ + +/* enumerations from "@filename@" */ +#include "@filename@" + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static volatile gsize g_enum_type_id__volatile = 0; + + if (g_once_init_enter (&g_enum_type_id__volatile)) + { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + GType g_enum_type_id; + + g_enum_type_id = + g_@type@_register_static (g_intern_static_string ("@EnumName@"), + values); + + g_once_init_leave (&g_enum_type_id__volatile, g_enum_type_id); + } + + return g_enum_type_id__volatile; +} +/*** END value-tail ***/ diff --git a/gps-globe/src/gpsg-enum-types.h.in b/gps-globe/src/gpsg-enum-types.h.in new file mode 100644 index 0000000..a8870d1 --- /dev/null +++ b/gps-globe/src/gpsg-enum-types.h.in @@ -0,0 +1,26 @@ +/*** BEGIN file-header ***/ +#ifndef __GPSG_ENUM_TYPES_H__ +#define __GPSG_ENUM_TYPES_H__ + +#include + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* !__GPSG_ENUM_TYPES_H__ */ +/*** END file-tail ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; +#define GPSG_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/*** END value-header ***/ + diff --git a/gps-globe/src/gpsg-main.c b/gps-globe/src/gpsg-main.c new file mode 100644 index 0000000..61f8ccf --- /dev/null +++ b/gps-globe/src/gpsg-main.c @@ -0,0 +1,111 @@ +/* + * gps-globe - A little app showing your position on a globe + * Copyright (C) 2009 Intel Corporation + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "gpsg-sphere.h" + +static int tex_num; +static int n_tex; +static char **tex; + +static void +on_paint (ClutterActor *actor) +{ + ClutterGeometry geom; + + clutter_actor_get_allocation_geometry (actor, &geom); + + cogl_set_source_color4ub (0, 0, 255, 255); +} + +static gboolean +set_tex (ClutterActor *sphere) +{ + if (n_tex > 0) + { + GError *error = NULL; + + clutter_texture_set_from_file (CLUTTER_TEXTURE (sphere), + tex[tex_num++], + &error); + + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + if (tex_num >= n_tex) + tex_num = 0; + } + + return FALSE; +} + +int +main (int argc, char **argv) +{ + ClutterActor *stage; + ClutterActor *sphere; + ClutterAnimation *anim; + ClutterVertex center = { 240, 240, 0 }; + + clutter_init (&argc, &argv); + + stage = clutter_stage_get_default (); + + sphere = gpsg_sphere_new (); + g_object_set (sphere, + "depth", 3, + "paint-flags", (GPSG_SPHERE_PAINT_LINES + | GPSG_SPHERE_PAINT_TEXTURE), + NULL); + clutter_actor_set_size (sphere, 480, 480); + g_signal_connect_after (sphere, "paint", + G_CALLBACK (on_paint), NULL); + clutter_actor_set_position (sphere, + clutter_actor_get_width (stage) / 2.0 - 240, + clutter_actor_get_height (stage) / 2.0 - 240); + anim = clutter_actor_animate (sphere, CLUTTER_LINEAR, 8000, + "rotation-angle-y", 360.0, + "fixed::rotation-center-y", ¢er, + NULL); + clutter_animation_set_loop (anim, TRUE); + + n_tex = argc - 1; + tex = argv + 1; + tex_num = 0; + + set_tex (sphere); + + g_signal_connect_swapped (stage, "button-press-event", + G_CALLBACK (set_tex), sphere); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), sphere); + + clutter_actor_show (stage); + + clutter_main (); + + return 0; +} diff --git a/gps-globe/src/gpsg-sphere-vertex-shader.glsl b/gps-globe/src/gpsg-sphere-vertex-shader.glsl new file mode 100644 index 0000000..46d4f50 --- /dev/null +++ b/gps-globe/src/gpsg-sphere-vertex-shader.glsl @@ -0,0 +1,49 @@ +/* + * gps-globe - A little app showing your position on a globe + * Copyright (C) 2009 Intel Corporation + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see . + */ + +/* 'flatness' should be a number from 0.0 -> 1.0. If it is 0.0 the + model will be rendered as a sphere, or if it is 1.0 it will be + rendered as a flat model. Otherwise it will be rendered somewhere + in-between the two. */ +uniform float flatness; + +/* size of the model when it is rendered completely flat */ +uniform float flat_width; +uniform float flat_height; + +/* radius of the sphere */ +uniform float sphere_radius; + +void +main () +{ + vec3 sphere_position = gl_Vertex.xyz * sphere_radius; + + vec3 flat_position; + flat_position.xyz = vec3 (vec2 (flat_width, flat_height) + * (gl_MultiTexCoord0.xy - vec2 (0.5, 0.5)), + 0.0); + + /* Linear interpolation between the flat position and sphere position */ + vec4 lerp_position; + lerp_position = vec4 (mix (sphere_position, flat_position, flatness), 1.0); + + gl_Position = gl_ModelViewProjectionMatrix * vec4 (lerp_position, 1.0); + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_FrontColor = gl_Color; +} diff --git a/gps-globe/src/gpsg-sphere-vertex-shader.h b/gps-globe/src/gpsg-sphere-vertex-shader.h new file mode 100644 index 0000000..4df21af --- /dev/null +++ b/gps-globe/src/gpsg-sphere-vertex-shader.h @@ -0,0 +1,30 @@ +/* + * gps-globe - A little app showing your position on a globe + * Copyright (C) 2009 Intel Corporation + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see . + */ + +#ifndef __GPSG_SPHERE_VERTEX_SHADER_H__ +#define __GPSG_SPHERE_VERTEX_SHADER_H__ + +#include + +G_BEGIN_DECLS + +extern const char gpsg_sphere_vertex_shader[]; + +G_END_DECLS + +#endif /* __GPSG_SPHERE_VERTEX_SHADER_H__ */ diff --git a/gps-globe/src/gpsg-sphere.c b/gps-globe/src/gpsg-sphere.c new file mode 100644 index 0000000..bfb9181 --- /dev/null +++ b/gps-globe/src/gpsg-sphere.c @@ -0,0 +1,940 @@ +/* + * gps-globe - A little app showing your position on a globe + * Copyright (C) 2009 Intel Corporation + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "gpsg-sphere.h" +#include "gpsg-enum-types.h" +#include "gpsg-sphere-vertex-shader.h" + +#define GPSG_SPHERE_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GPSG_TYPE_SPHERE, GpsgSpherePrivate)) + +G_DEFINE_TYPE (GpsgSphere, gpsg_sphere, CLUTTER_TYPE_TEXTURE); + +static void gpsg_sphere_paint (ClutterActor *self); +static void gpsg_sphere_dispose (GObject *self); + +static void gpsg_sphere_set_property (GObject *self, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gpsg_sphere_get_property (GObject *self, + guint property_id, + GValue *value, + GParamSpec *pspec); + +#define GPSG_SPHERE_GOLDEN_RATIO 1.61803398874989 /* φ = (1+√5) ÷ 2 */ +/* Amount to scale a vertex using the golden ratio so that it will + have a radius of one. */ +#define GPSG_SPHERE_NORM_ONE 0.525731112119134 /* = √(1 / (1 + φ²)) */ +#define GPSG_SPHERE_NORM_GOLDEN_RATIO (GPSG_SPHERE_GOLDEN_RATIO \ + * GPSG_SPHERE_NORM_ONE) + +struct _GpsgSpherePrivate +{ + guint depth; + guint n_vertices, n_indices; + CoglHandle vertices, indices; + ClutterColor lines_color; + GpsgSpherePaintFlags paint_flags; + + /* A shader program use to render the transition between a flat + texture and a sphere */ + CoglHandle flat_program; + /* Set to true if shaders aren't available or it won't compile */ + gboolean shader_failed; + + gint flatness_uniform; + gint flat_width_uniform; + gint flat_height_uniform; + gint sphere_radius_uniform; + + gfloat flatness; +}; + +enum +{ + PROP_0, + + PROP_PAINT_FLAGS, + PROP_LINES_COLOR, + PROP_DEPTH, + PROP_FLATNESS +}; + +static void +gpsg_sphere_class_init (GpsgSphereClass *klass) +{ + ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + actor_class->paint = gpsg_sphere_paint; + + object_class->dispose = gpsg_sphere_dispose; + object_class->set_property = gpsg_sphere_set_property; + object_class->get_property = gpsg_sphere_get_property; + + g_type_class_add_private (klass, sizeof (GpsgSpherePrivate)); + + pspec = g_param_spec_uint ("depth", "Depth", + "The number of times to subdivide each " + "triangle. Higher numbers mean better looking " + "spheres that consume more resources.", + 0, G_MAXUINT, 4, + G_PARAM_READWRITE + | G_PARAM_STATIC_NAME + | G_PARAM_STATIC_NICK + | G_PARAM_STATIC_BLURB); + g_object_class_install_property (object_class, PROP_DEPTH, pspec); + + pspec = g_param_spec_float ("flatness", "Flatness", + "A value between 0.0 and 1.0. Zero paints the " + "texture normally and 1.0 paints it as a " + "sphere. Other values mix between the two.", + 0.0f, 1.0f, 0.0f, + G_PARAM_READWRITE + | G_PARAM_STATIC_NAME + | G_PARAM_STATIC_NICK + | G_PARAM_STATIC_BLURB); + g_object_class_install_property (object_class, PROP_FLATNESS, pspec); + + pspec = g_param_spec_flags ("paint-flags", "Paint flags", + "A set of flags describing what parts of the " + "sphere to paint.", + GPSG_TYPE_SPHERE_PAINT_FLAGS, + GPSG_SPHERE_PAINT_TEXTURE, + G_PARAM_READWRITE + | G_PARAM_STATIC_NAME + | G_PARAM_STATIC_NICK + | G_PARAM_STATIC_BLURB); + g_object_class_install_property (object_class, PROP_PAINT_FLAGS, pspec); + + pspec = g_param_spec_boxed ("lines-color", "Lines color", + "Color to use when painting a wireframe of the " + "sphere.", + CLUTTER_TYPE_COLOR, + G_PARAM_READWRITE + | G_PARAM_STATIC_NAME + | G_PARAM_STATIC_NICK + | G_PARAM_STATIC_BLURB); + g_object_class_install_property (object_class, PROP_LINES_COLOR, pspec); +} + +static void +gpsg_sphere_init (GpsgSphere *self) +{ + GpsgSpherePrivate *priv; + + self->priv = priv = GPSG_SPHERE_GET_PRIVATE (self); + + priv->depth = 4; + priv->vertices = COGL_INVALID_HANDLE; + priv->indices = COGL_INVALID_HANDLE; + priv->lines_color.alpha = 255; + priv->paint_flags = GPSG_SPHERE_PAINT_TEXTURE; +} + +static void +gpsg_sphere_set_property (GObject *self, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GpsgSphere *sphere = GPSG_SPHERE (self); + + switch (property_id) + { + case PROP_DEPTH: + gpsg_sphere_set_depth (sphere, g_value_get_uint (value)); + break; + + case PROP_FLATNESS: + gpsg_sphere_set_flatness (sphere, g_value_get_float (value)); + break; + + case PROP_PAINT_FLAGS: + gpsg_sphere_set_paint_flags (sphere, g_value_get_flags (value)); + break; + + case PROP_LINES_COLOR: + gpsg_sphere_set_lines_color (sphere, clutter_value_get_color (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, property_id, pspec); + break; + } +} + +static void +gpsg_sphere_get_property (GObject *self, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GpsgSphere *sphere = GPSG_SPHERE (self); + + switch (property_id) + { + case PROP_DEPTH: + g_value_set_uint (value, gpsg_sphere_get_depth (sphere)); + break; + + case PROP_FLATNESS: + g_value_set_float (value, gpsg_sphere_get_flatness (sphere)); + break; + + case PROP_PAINT_FLAGS: + g_value_set_flags (value, gpsg_sphere_get_paint_flags (sphere)); + break; + + case PROP_LINES_COLOR: + { + ClutterColor color; + gpsg_sphere_get_lines_color (sphere, &color); + clutter_value_set_color (value, &color); + } + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, property_id, pspec); + break; + } +} + +ClutterActor * +gpsg_sphere_new (void) +{ + return g_object_new (GPSG_TYPE_SPHERE, NULL); +} + +typedef struct _GpsgSphereStackEntry +{ + /* Index of the three edges that make up the triangle */ + guint16 e[3]; + /* The recursion depth that was needed to add this entry */ + guint8 depth; + /* A bit for each edge. If set then use v1, otherwise v0 */ + guint8 direction; +} GpsgSphereStackEntry; + +typedef struct _GpsgSphereVertex +{ + /* Vertex coordinates */ + gfloat x, y, z; + /* Texture coordinates */ + gfloat tx, ty; +} GpsgSphereVertex; + +typedef struct _GpsgSphereEdge +{ + /* Index of the two vertices that make up this edge */ + guint16 v0, v1; + /* Index of two edges that subdivide this edge, or -1 if it hasn't + been divided yet */ + gint16 e0, e1; +} GpsgSphereEdge; + +/* Initial edges needed to make an icosahedron */ +static const GpsgSphereEdge +gpsg_sphere_ico_edges[] = +{ + { 0, 2, -1, -1 }, { 0, 4, -1, -1 }, { 0, 6, -1, -1 }, { 0, 8, -1, -1 }, + { 0, 9, -1, -1 }, { 1, 3, -1, -1 }, { 1, 4, -1, -1 }, { 1, 6, -1, -1 }, + { 1, 10, -1, -1 }, { 1, 11, -1, -1 }, { 2, 5, -1, -1 }, { 2, 7, -1, -1 }, + { 2, 8, -1, -1 }, { 2, 9, -1, -1 }, { 3, 5, -1, -1 }, { 3, 7, -1, -1 }, + { 3, 10, -1, -1 }, { 3, 11, -1, -1 }, { 4, 6, -1, -1 }, { 4, 8, -1, -1 }, + { 4, 10, -1, -1 }, { 5, 7, -1, -1 }, { 5, 8, -1, -1 }, { 5, 10, -1, -1 }, + { 6, 9, -1, -1 }, { 6, 11, -1, -1 }, { 7, 9, -1, -1 }, { 7, 11, -1, -1 }, + { 8, 10, -1, -1 }, { 9, 11, -1, -1 } +}; + +/* Initial triangles needed to make an icosahedron with all the + vertices in anti-clockwise order */ +static const GpsgSphereStackEntry +gpsg_sphere_ico_stack_entries[] = +{ + { { 17, 9, 5 }, 0, 2 }, { { 8, 16, 5 }, 0, 6 }, { { 14, 16, 23 }, 0, 5 }, + { { 21, 15, 14 }, 0, 2 }, { { 27, 17, 15 }, 0, 2 }, { { 11, 21, 10 }, 0, 6 }, + { { 12, 10, 22 }, 0, 1 }, { { 22, 23, 28 }, 0, 5 }, { { 19, 28, 20 }, 0, 4 }, + { { 20, 8, 6 }, 0, 2 }, { { 18, 6, 7 }, 0, 3 }, { { 7, 9, 25 }, 0, 5 }, + { { 24, 25, 29 }, 0, 5 }, { { 29, 27, 26 }, 0, 2 }, { { 26, 11, 13 }, 0, 3 }, + { { 0, 4, 13 }, 0, 5 }, { { 4, 2, 24 }, 0, 1 }, { { 1, 18, 2 }, 0, 4 }, + { { 3, 19, 1 }, 0, 6 }, { { 12, 3, 0 }, 0, 2 } +}; + +/* This helper macro is just used to abbreviate getting a vertex out + of the GArray */ +#define VERT(x) g_array_index (vertices, GpsgSphereVertex, (x)) + +static void +gpsg_sphere_ensure_vertices (GpsgSphere *sphere) +{ + GpsgSpherePrivate *priv = sphere->priv; + guint n_triangles; + guint n_indices; + guint n_edges; + GpsgSphereStackEntry *stack, *stack_pos, *max_stack_pos; + guint stack_size; + GArray *vertices; + GpsgSphereVertex *vertices_pos; + guint16 *indices, *indices_pos; + GpsgSphereEdge *edges, *edges_pos; + int i; + + /* Don't do anything if we've already got the vertices */ + if (priv->vertices != COGL_INVALID_HANDLE) + return; + + n_triangles = 20 * powf (4, priv->depth) + 0.5f; + n_edges = 0; + for (i = 0; i <= priv->depth; i++) + n_edges += 30 * powf (4, i) + 0.5f; + n_indices = n_triangles * 3; + stack_size = priv->depth * 3 + 20; + stack = g_new (GpsgSphereStackEntry, stack_size); + indices_pos = indices = g_new (guint16, n_indices); + vertices = g_array_new (FALSE, FALSE, sizeof (GpsgSphereVertex)); + edges = g_new (GpsgSphereEdge, n_edges + 100); + + /* Add the initial 12 vertices needed to make an icosahedron */ + g_array_set_size (vertices, 12); + vertices_pos = &VERT (0); + { + int unit, magic; + + for (unit = -1; unit <= 1; unit += 2) + for (magic = -1; magic <= 1; magic += 2) + { + vertices_pos->x = 0; + vertices_pos->y = unit * GPSG_SPHERE_NORM_ONE; + vertices_pos->z = magic * GPSG_SPHERE_NORM_GOLDEN_RATIO; + vertices_pos++; + } + for (unit = -1; unit <= 1; unit += 2) + for (magic = -1; magic <= 1; magic += 2) + { + vertices_pos->x = unit * GPSG_SPHERE_NORM_ONE; + vertices_pos->y = magic * GPSG_SPHERE_NORM_GOLDEN_RATIO; + vertices_pos->z = 0; + vertices_pos++; + } + for (unit = -1; unit <= 1; unit += 2) + for (magic = -1; magic <= 1; magic += 2) + { + vertices_pos->x = magic * GPSG_SPHERE_NORM_GOLDEN_RATIO; + vertices_pos->y = 0; + vertices_pos->z = unit * GPSG_SPHERE_NORM_ONE; + vertices_pos++; + } + } + + /* Add the initial edges */ + memcpy (edges, gpsg_sphere_ico_edges, sizeof (gpsg_sphere_ico_edges)); + edges_pos = edges + G_N_ELEMENTS (gpsg_sphere_ico_edges); + /* and stack entries */ + memcpy (stack, gpsg_sphere_ico_stack_entries, + sizeof (gpsg_sphere_ico_stack_entries)); + stack_pos = stack + G_N_ELEMENTS (gpsg_sphere_ico_stack_entries); + + max_stack_pos = stack_pos; + + /* While the stack is not empty */ + while (stack_pos > stack) + { + /* Pop an entry off the stack */ + GpsgSphereStackEntry entry = *(--stack_pos); + + /* If we've reached the depth limit.. */ + if (entry.depth >= priv->depth) + /* Add the triangle to the vertices */ + for (i = 0; i < 3; i++) + *(indices_pos++) = ((entry.direction & (1 << i)) + ? edges[entry.e[i]].v1 + : edges[entry.e[i]].v0); + else + { + /* If the stack is not empty then add four more triangles + to split this one up */ + + /* Split each edge if it is not already split */ + for (i = 0; i < 3; i++) + if (edges[entry.e[i]].e0 == -1) + { + g_array_set_size (vertices, vertices->len + 1); + vertices_pos = &VERT (vertices->len - 1); + vertices_pos->x = (VERT (edges[entry.e[i]].v0).x + + VERT (edges[entry.e[i]].v1).x) / 2.0; + vertices_pos->y = (VERT (edges[entry.e[i]].v0).y + + VERT (edges[entry.e[i]].v1).y) / 2.0; + vertices_pos->z = (VERT (edges[entry.e[i]].v0).z + + VERT (edges[entry.e[i]].v1).z) / 2.0; + edges[entry.e[i]].e0 = edges_pos - edges; + edges_pos->v0 = edges[entry.e[i]].v0; + edges_pos->v1 = vertices->len - 1; + edges_pos->e0 = -1; + edges_pos->e1 = -1; + edges_pos++; + edges[entry.e[i]].e1 = edges_pos - edges; + edges_pos->v0 = edges[entry.e[i]].v1; + edges_pos->v1 = vertices->len - 1; + edges_pos->e0 = -1; + edges_pos->e1 = -1; + edges_pos++; + } + + /* Add each triangle */ + + /* Top triangle */ + if ((entry.direction & 1)) + stack_pos->e[0] = edges[entry.e[0]].e1; + else + stack_pos->e[0] = edges[entry.e[0]].e0; + stack_pos->e[1] = edges_pos - edges; + edges_pos->v0 = edges[edges[entry.e[0]].e0].v1; + edges_pos->v1 = edges[edges[entry.e[2]].e0].v1; + if (edges_pos->v0 > edges_pos->v1) + { + gint t = edges_pos->v0; + edges_pos->v0 = edges_pos->v1; + edges_pos->v1 = t; + stack_pos->direction = 6; + } + else + stack_pos->direction = 4; + edges_pos->e0 = -1; + edges_pos->e1 = -1; + edges_pos++; + if ((entry.direction & 4)) + stack_pos->e[2] = edges[entry.e[2]].e0; + else + stack_pos->e[2] = edges[entry.e[2]].e1; + stack_pos->depth = entry.depth + 1; + stack_pos++; + + /* Bottom left triangle */ + if ((entry.direction & 1)) + stack_pos->e[0] = edges[entry.e[0]].e0; + else + stack_pos->e[0] = edges[entry.e[0]].e1; + if ((entry.direction & 2)) + stack_pos->e[1] = edges[entry.e[1]].e1; + else + stack_pos->e[1] = edges[entry.e[1]].e0; + stack_pos->e[2] = edges_pos - edges; + edges_pos->v0 = edges[edges[entry.e[1]].e0].v1; + edges_pos->v1 = edges[edges[entry.e[0]].e0].v1; + if (edges_pos->v0 > edges_pos->v1) + { + gint t = edges_pos->v0; + edges_pos->v0 = edges_pos->v1; + edges_pos->v1 = t; + stack_pos->direction = 5; + } + else + stack_pos->direction = 1; + edges_pos->e0 = -1; + edges_pos->e1 = -1; + edges_pos++; + stack_pos->depth = entry.depth + 1; + stack_pos++; + + /* Bottom right triangle */ + stack_pos->e[0] = edges_pos - edges; + edges_pos->v0 = edges[edges[entry.e[2]].e0].v1; + edges_pos->v1 = edges[edges[entry.e[1]].e0].v1; + if (edges_pos->v0 > edges_pos->v1) + { + gint t = edges_pos->v0; + edges_pos->v0 = edges_pos->v1; + edges_pos->v1 = t; + stack_pos->direction = 3; + } + else + stack_pos->direction = 2; + edges_pos->e0 = -1; + edges_pos->e1 = -1; + edges_pos++; + if ((entry.direction & 2)) + stack_pos->e[1] = edges[entry.e[1]].e0; + else + stack_pos->e[1] = edges[entry.e[1]].e1; + if ((entry.direction & 4)) + stack_pos->e[2] = edges[entry.e[2]].e1; + else + stack_pos->e[2] = edges[entry.e[2]].e0; + stack_pos->depth = entry.depth + 1; + stack_pos++; + + /* Middle triangle */ + stack_pos->e[0] = stack_pos[-1].e[0]; + stack_pos->e[1] = stack_pos[-3].e[1]; + stack_pos->e[2] = stack_pos[-2].e[2]; + stack_pos->depth = entry.depth + 1; + stack_pos->direction = ((stack_pos[-1].direction & 1) + | (stack_pos[-3].direction & 2) + | (stack_pos[-2].direction & 4)) ^ 7; + stack_pos++; + + /* This is just used for the assert below */ + if (stack_pos > max_stack_pos) + max_stack_pos = stack_pos; + } + } + + /* Normalise every vertex. The initial 12 are already normalised */ + for (i = 12; i < vertices->len; i++) + { + gfloat length; + + vertices_pos = &VERT (i); + + length = sqrt (vertices_pos->x * vertices_pos->x + + vertices_pos->y * vertices_pos->y + + vertices_pos->z * vertices_pos->z); + vertices_pos->x /= length; + vertices_pos->y /= length; + vertices_pos->z /= length; + } + + /* Calculate texture coordinates */ + for (i = 0; i < vertices->len; i++) + { + vertices_pos = &VERT (i); + + vertices_pos->tx = (atan2 (vertices_pos->x, vertices_pos->z) + / G_PI / 2.0 + 0.5); + vertices_pos->ty = asin (vertices_pos->y) / G_PI + 0.5; + } + + /* Fix all of the triangles along the seam. If a triangle contains + vertices with texture coordinates that wrap the long way from + 0->1 then we need to duplicate one of them to extend the texture + coordinate past 1 so that it will vary across the span + correctly */ + for (i = 0; i < n_indices; i += 3) + { + gfloat min_tx = G_MAXDOUBLE, max_tx = -G_MAXDOUBLE; + int v; + + for (v = 0; v < 3; v++) + { + gfloat tx = VERT (indices[i + v]).tx; + if (tx < min_tx) + min_tx = tx; + if (tx > max_tx) + max_tx = tx; + } + + /* If the span is greater than half of the texture then it would + be shorter to wrap around instead */ + if (max_tx - min_tx > 0.5f) + { + int n_left = 0, n_right = 0, left, right; + gfloat tx_diff; + + /* Find the odd one out */ + for (v = 0; v < 3; v++) + if (VERT (indices[i + v]).tx < 0.5f) + { + n_left++; + left = v; + } + else + { + n_right++; + right = v; + } + + /* Duplicate whichever side is the odd one out */ + if (n_left == 1) + { + v = left; + tx_diff = 1.0f; + } + else + { + v = right; + tx_diff = -1.0f; + } + + /* Duplicate it with a different tx */ + g_array_set_size (vertices, vertices->len + 1); + vertices_pos = &VERT (vertices->len - 1); + *vertices_pos = VERT (indices[i + v]); + vertices_pos->tx += tx_diff; + indices[i + v] = vertices->len - 1; + } + } + + /* Create the VBO */ + vertices_pos = &VERT (0); + priv->vertices = cogl_vertex_buffer_new (vertices->len); + cogl_vertex_buffer_add (priv->vertices, "gl_Vertex", 3, + COGL_ATTRIBUTE_TYPE_FLOAT, FALSE, + sizeof (GpsgSphereVertex), + &vertices_pos->x); + cogl_vertex_buffer_add (priv->vertices, "gl_MultiTexCoord0", 2, + COGL_ATTRIBUTE_TYPE_FLOAT, FALSE, + sizeof (GpsgSphereVertex), + &vertices_pos->tx); + /* The normals are the same as the untransformed vertices */ + cogl_vertex_buffer_add (priv->vertices, "gl_Normal", 3, + COGL_ATTRIBUTE_TYPE_FLOAT, FALSE, + sizeof (GpsgSphereVertex), + &vertices_pos->x); + cogl_vertex_buffer_submit (priv->vertices); + + priv->n_vertices = vertices->len; + priv->n_indices = n_indices; + + priv->indices + = cogl_vertex_buffer_indices_new (COGL_INDICES_TYPE_UNSIGNED_SHORT, + indices, n_indices); + + /* Make sure that we allocated exactly the right amount of memory */ + g_assert (edges_pos == edges + n_edges); + g_assert (indices_pos == indices + n_indices); + g_assert (max_stack_pos == stack + stack_size); + + g_free (edges); + g_array_free (vertices, TRUE); + g_free (indices); + g_free (stack); +} + +#undef VERT + +static gboolean +gpsg_sphere_compile_program (GpsgSphere *sphere) +{ + GpsgSpherePrivate *priv = sphere->priv; + CoglHandle shader; + gboolean ret = TRUE; + + /* If we've previously failed to create a shader then don't try + again */ + if (priv->shader_failed) + ret = FALSE; + /* If we've already got the program then we don't need to do + anything */ + else if (priv->flat_program == COGL_INVALID_HANDLE) + { + shader = cogl_create_shader (COGL_SHADER_TYPE_VERTEX); + + if (shader == COGL_INVALID_HANDLE) + { + g_warning ("Failed to create shader"); + priv->shader_failed = TRUE; + ret = FALSE; + } + else + { + cogl_shader_source (shader, gpsg_sphere_vertex_shader); + cogl_shader_compile (shader); + + if (cogl_shader_is_compiled (shader)) + { + priv->flat_program = cogl_create_program (); + cogl_program_attach_shader (priv->flat_program, shader); + cogl_program_link (priv->flat_program); + + if ((priv->flatness_uniform + = cogl_program_get_uniform_location (priv->flat_program, + "flatness")) == -1 + || (priv->flat_width_uniform + = cogl_program_get_uniform_location (priv->flat_program, + "flat_width")) == -1 + || (priv->flat_height_uniform + = cogl_program_get_uniform_location (priv->flat_program, + "flat_height")) == -1 + || ((priv->sphere_radius_uniform + = cogl_program_get_uniform_location (priv->flat_program, + "sphere_radius")) + == -1)) + { + g_warning ("Shader is missing some uniforms"); + cogl_handle_unref (priv->flat_program); + priv->flat_program = COGL_INVALID_HANDLE; + priv->shader_failed = TRUE; + ret = FALSE; + } + } + else + { + gchar *info_log = cogl_shader_get_info_log (shader); + g_warning ("%s", info_log); + g_free (info_log); + priv->shader_failed = TRUE; + ret = FALSE; + } + + cogl_handle_unref (shader); + } + } + + return ret; +} + +static void +gpsg_sphere_paint (ClutterActor *self) +{ + GpsgSphere *sphere = GPSG_SPHERE (self); + GpsgSpherePrivate *priv = sphere->priv; + + /* If the sphere is completely flat we can just use the regular + texture paint method */ + if (priv->flatness >= 1.0f) + { + if (CLUTTER_ACTOR_CLASS (gpsg_sphere_parent_class)->paint) + CLUTTER_ACTOR_CLASS (gpsg_sphere_parent_class)->paint (self); + } + else + { + ClutterGeometry geom; + CoglHandle material; + gboolean backface_culling_was_enabled; + gfloat sphere_radius; + gboolean use_shader; + guint8 paint_opacity; + + clutter_actor_get_allocation_geometry (self, &geom); + paint_opacity = clutter_actor_get_paint_opacity (self); + + sphere_radius = MIN (geom.width, geom.height) / 2.0f; + + gpsg_sphere_ensure_vertices (sphere); + + backface_culling_was_enabled = cogl_get_backface_culling_enabled (); + cogl_set_backface_culling_enabled (TRUE); + + use_shader = (priv->flatness > 0.0f + && gpsg_sphere_compile_program (sphere)); + + cogl_push_matrix (); + cogl_translate (geom.width / 2.0f, geom.height / 2.0f, 0.0f); + + if (use_shader) + { + cogl_program_use (priv->flat_program); + cogl_program_uniform_1f (priv->flatness_uniform, priv->flatness); + cogl_program_uniform_1f (priv->flat_width_uniform, geom.width); + cogl_program_uniform_1f (priv->flat_height_uniform, geom.height); + cogl_program_uniform_1f (priv->sphere_radius_uniform, sphere_radius); + } + else + cogl_scale (sphere_radius, sphere_radius, sphere_radius); + + if ((priv->paint_flags & GPSG_SPHERE_PAINT_TEXTURE)) + { + material = clutter_texture_get_cogl_material (CLUTTER_TEXTURE (self)); + + cogl_material_set_color4ub (material, + paint_opacity, + paint_opacity, + paint_opacity, + paint_opacity); + + if (material != COGL_INVALID_HANDLE) + { + cogl_set_source (material); + + cogl_vertex_buffer_draw_elements (priv->vertices, + COGL_VERTICES_MODE_TRIANGLES, + priv->indices, + 0, priv->n_vertices - 1, + 0, priv->n_indices); + } + } + + if ((priv->paint_flags & GPSG_SPHERE_PAINT_LINES)) + { + int i; + CoglColor color; + + cogl_color_set_from_4ub (&color, + priv->lines_color.red, + priv->lines_color.green, + priv->lines_color.blue, + priv->lines_color.alpha + * paint_opacity / 255); + cogl_color_premultiply (&color); + cogl_set_source_color (&color); + + /* If we could set the polygon mode this could be done with + triangles in a single call instead */ + for (i = 0; i + 3 <= priv->n_indices; i += 3) + cogl_vertex_buffer_draw_elements (priv->vertices, + COGL_VERTICES_MODE_LINE_LOOP, + priv->indices, + 0, priv->n_vertices - 1, + i, 3); + } + + if (use_shader) + cogl_program_use (COGL_INVALID_HANDLE); + + cogl_pop_matrix (); + + cogl_set_backface_culling_enabled (backface_culling_was_enabled); + } +} + +static void +gpsg_sphere_forget_vertices (GpsgSphere *sphere) +{ + GpsgSpherePrivate *priv = sphere->priv; + + if (priv->vertices != COGL_INVALID_HANDLE) + { + cogl_handle_unref (priv->vertices); + cogl_handle_unref (priv->indices); + priv->vertices = COGL_INVALID_HANDLE; + priv->indices = COGL_INVALID_HANDLE; + } +} + +static void +gpsg_sphere_dispose (GObject *self) +{ + GpsgSphere *sphere = GPSG_SPHERE (self); + GpsgSpherePrivate *priv = sphere->priv; + + gpsg_sphere_forget_vertices (sphere); + + if (priv->flat_program != COGL_INVALID_HANDLE) + { + cogl_handle_unref (priv->flat_program); + priv->flat_program = COGL_INVALID_HANDLE; + } + + G_OBJECT_CLASS (gpsg_sphere_parent_class)->dispose (self); +} + +guint +gpsg_sphere_get_depth (GpsgSphere *sphere) +{ + g_return_val_if_fail (GPSG_IS_SPHERE (sphere), 0); + + return sphere->priv->depth; +} + +void +gpsg_sphere_set_depth (GpsgSphere *sphere, guint depth) +{ + GpsgSpherePrivate *priv; + + g_return_if_fail (GPSG_IS_SPHERE (sphere)); + + priv = sphere->priv; + + if (depth != priv->depth) + { + gpsg_sphere_forget_vertices (sphere); + priv->depth = depth; + clutter_actor_queue_redraw (CLUTTER_ACTOR (sphere)); + g_object_notify (G_OBJECT (sphere), "depth"); + } +} + +gfloat +gpsg_sphere_get_flatness (GpsgSphere *sphere) +{ + g_return_val_if_fail (GPSG_IS_SPHERE (sphere), 0); + + return sphere->priv->flatness; +} + +void +gpsg_sphere_set_flatness (GpsgSphere *sphere, gfloat flatness) +{ + GpsgSpherePrivate *priv; + + g_return_if_fail (GPSG_IS_SPHERE (sphere)); + + priv = sphere->priv; + + if (flatness != priv->flatness) + { + priv->flatness = flatness; + clutter_actor_queue_redraw (CLUTTER_ACTOR (sphere)); + g_object_notify (G_OBJECT (sphere), "flatness"); + } +} + +GpsgSpherePaintFlags +gpsg_sphere_get_paint_flags (GpsgSphere *sphere) +{ + g_return_val_if_fail (GPSG_IS_SPHERE (sphere), 0); + + return sphere->priv->paint_flags; +} + +void +gpsg_sphere_set_paint_flags (GpsgSphere *sphere, + GpsgSpherePaintFlags flags) +{ + GpsgSpherePrivate *priv; + + g_return_if_fail (GPSG_IS_SPHERE (sphere)); + + priv = sphere->priv; + + if (flags != priv->paint_flags) + { + priv->paint_flags = flags; + clutter_actor_queue_redraw (CLUTTER_ACTOR (sphere)); + g_object_notify (G_OBJECT (sphere), "paint-flags"); + } +} + +void +gpsg_sphere_get_lines_color (GpsgSphere *sphere, + ClutterColor *color) +{ + g_return_if_fail (GPSG_IS_SPHERE (sphere)); + + *color = sphere->priv->lines_color; +} + +void +gpsg_sphere_set_lines_color (GpsgSphere *sphere, + const ClutterColor *color) +{ + GpsgSpherePrivate *priv; + + g_return_if_fail (GPSG_IS_SPHERE (sphere)); + + priv = sphere->priv; + + if (!clutter_color_equal (color, &priv->lines_color)) + { + priv->lines_color = *color; + if (priv->paint_flags & GPSG_SPHERE_PAINT_LINES) + clutter_actor_queue_redraw (CLUTTER_ACTOR (sphere)); + g_object_notify (G_OBJECT (sphere), "lines-color"); + } +} diff --git a/gps-globe/src/gpsg-sphere.h b/gps-globe/src/gpsg-sphere.h new file mode 100644 index 0000000..0ff8b91 --- /dev/null +++ b/gps-globe/src/gpsg-sphere.h @@ -0,0 +1,83 @@ +/* + * gps-globe - A little app showing your position on a globe + * Copyright (C) 2009 Intel Corporation + * + * 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 3 of the License, or + * (at your option) any later version. + * + * 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, see . + */ + +#ifndef __GPSG_SPHERE_H__ +#define __GPSG_SPHERE_H__ + +#include + +G_BEGIN_DECLS + +#define GPSG_TYPE_SPHERE (gpsg_sphere_get_type ()) + +#define GPSG_SPHERE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), GPSG_TYPE_SPHERE, GpsgSphere)) +#define GPSG_SPHERE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), GPSG_TYPE_SPHERE, GpsgSphereClass)) +#define GPSG_IS_SPHERE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GPSG_TYPE_SPHERE)) +#define GPSG_IS_SPHERE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), GPSG_TYPE_SPHERE)) +#define GPSG_SPHERE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GPSG_TYPE_SPHERE, GpsgSphereClass)) + +typedef struct _GpsgSphere GpsgSphere; +typedef struct _GpsgSpherePrivate GpsgSpherePrivate; +typedef struct _GpsgSphereClass GpsgSphereClass; + +struct _GpsgSphere +{ + ClutterTexture parent_instance; + + GpsgSpherePrivate *priv; +}; + +struct _GpsgSphereClass +{ + ClutterTextureClass parent_class; +}; + +typedef enum +{ + GPSG_SPHERE_PAINT_LINES = (1 << 0), + GPSG_SPHERE_PAINT_TEXTURE = (1 << 1) +} GpsgSpherePaintFlags; + +GType gpsg_sphere_get_type (void) G_GNUC_CONST; + +ClutterActor *gpsg_sphere_new (void); + +guint gpsg_sphere_get_depth (GpsgSphere *sphere); +void gpsg_sphere_set_depth (GpsgSphere *sphere, guint depth); + +gfloat gpsg_sphere_get_flatness (GpsgSphere *sphere); +void gpsg_sphere_set_flatness (GpsgSphere *sphere, gfloat flatness); + +GpsgSpherePaintFlags gpsg_sphere_get_paint_flags (GpsgSphere *sphere); +void gpsg_sphere_set_paint_flags (GpsgSphere *sphere, + GpsgSpherePaintFlags flags); + +void gpsg_sphere_get_lines_color (GpsgSphere *sphere, + ClutterColor *color); +void gpsg_sphere_set_lines_color (GpsgSphere *sphere, + const ClutterColor *color); + +G_END_DECLS + + +#endif /* __GPSG_SPHERE_H__ */ diff --git a/nyancat/Makefile b/nyancat/Makefile new file mode 100644 index 0000000..ac0e1ab --- /dev/null +++ b/nyancat/Makefile @@ -0,0 +1,83 @@ +# A generic buildfiles to build single executable directory projects depending +# only on pkg-config ability to build. It automatically names the project on +# the toplevel directory you're in. +# +# Setting additional CFLAGS like $ export CFLAGS=-Wall -Werror # can help you +# track issues down better after compilation. +# +# 20071008 +# Øyvind KolÃ¥s (c) 2007 placed in the Public Domain. +## + +PKGMODULES = clutter-1.0 + +# you only need to change the following if you want to change where the +# generated tarball gets scp'd to: + +SCP_DESTINATION= + +BINARY=$(shell basename `pwd`)# +PACKAGE=../$(BINARY).tar.bz2 # you can use both .gz and .bz2 as extension here + + +## +# end of template configuration. +# + +# This makefile uses the current directory as the only target binary, and +# expects a single of the .c files to contain a main function. + + + +all: $(BINARY) + +# The help available also contains brief information about the different +# build rules supported. +help: + @echo '' + @echo 'Available targets in this make system' + @echo '' + @echo ' (none) builds $(BINARY)' + @echo ' dist create $(PACKAGE)' + @echo ' clean rm *.o *~ and foo and bar' + @echo ' run ./$(BINARY)' + @echo ' gdb gdb ./$(BINARY)' + @echo ' gdb2 gdb ./$(BINARY) --g-fatal-warnings' + @echo ' scp scp $(PACKAGE) $(SCP_DESTINATION)' + @echo ' help this help' + @echo '' + + +LIBS= $(shell pkg-config --libs $(PKGMODULES)) +INCS= $(shell pkg-config --cflags $(PKGMODULES)) + +CFLAGS+=-Wall +CFILES = $(wildcard *.c) +OBJECTS = $(subst ./,,$(CFILES:.c=.o)) +HFILES = $(wildcard *.h) +%.o: %.c $(HFILES) + $(CC) -g $(CFLAGS) $(INCS) -c $< -o$@ +$(BINARY): $(OBJECTS) + $(CC) -o $@ $(LIBS) $(OBJECTS) +test: run +run: $(BINARY) + ./$(BINARY) + +../$(BINARY).tar.gz: clean $(CFILES) $(HFILES) + cd ..;tar czvhf $(BINARY).tar.gz $(BINARY)/* + @ls -slah ../$(BINARY).tar.gz +../$(BINARY).tar.bz2: clean $(CFILES) $(HFILES) + cd ..;tar cjvhf $(BINARY).tar.bz2 $(BINARY)/* + @ls -slah ../$(BINARY).tar.bz2 + +dist: $(PACKAGE) + echo $(PACKAGE) +scp: dist + scp $(PACKAGE) $(SCP_DESTINATION) + +gdb: all + gdb --args ./$(BINARY) +gdb2: all + gdb --args ./$(BINARY) -demo --g-fatal-warnings +clean: + rm -fvr *.o $(BINARY) *~ *.patch diff --git a/nyancat/nyan.json b/nyancat/nyan.json new file mode 100644 index 0000000..f52eda8 --- /dev/null +++ b/nyancat/nyan.json @@ -0,0 +1,1204 @@ +[ + { + "type":"ClutterGroup", + "id":"nyancat", + "x":300, + "y":100, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"body", + "x":0, + "y":0, + "width":200, + "height":125, + "depth":-1.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#FAD695", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + }, + { + "type":"ClutterGroup", + "id":"head", + "x":100, + "y":25, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"back_head", + "x":0, + "y":0, + "width":170, + "height":100, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + }, + { + "type":"ClutterRectangle", + "id":"left_cheek", + "x":30, + "y":60, + "width":15, + "height":15, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F7A4A3", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"right_cheek", + "x":130, + "y":60, + "width":15, + "height":15, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F7A4A3", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterGroup", + "id":"left_eye", + "x":50, + "y":40, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"back_left_eye", + "x":0, + "y":0, + "width":15, + "height":15, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"front_left_eye", + "x":0, + "y":0, + "width":7, + "height":7, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#ffffff", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + } + ] + }, + { + "type":"ClutterGroup", + "id":"right_eye", + "x":110, + "y":40, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"back_right_eye", + "x":0, + "y":0, + "width":15, + "height":15, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"front_right_eye", + "x":0, + "y":0, + "width":7, + "height":7, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#ffffff", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + } + ] + }, + { + "type":"ClutterGroup", + "id":"mounth", + "x":50, + "y":70, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"left_lip", + "x":0, + "y":0, + "width":8, + "height":15, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"right_lip", + "x":67, + "y":0, + "width":8, + "height":15, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"middle_lip", + "x":35, + "y":5, + "width":8, + "height":10, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"bottom_lip", + "x":0, + "y":15, + "width":75, + "height":5, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#000000", + "border-color":"#000000ff", + "border-width":0, + "has-border":false + } + ] + } + ] + }, + { + "type":"ClutterGroup", + "id":"legs", + "x":-20, + "y":0, + "width":0, + "height":0, + "depth":-3.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"back_leg1", + "x":0, + "y":140, + "width":50, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":-45.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + }, + { + "type":"ClutterRectangle", + "id":"back_leg2", + "x":50, + "y":140, + "width":50, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":-45.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + }, + { + "type":"ClutterRectangle", + "id":"front_leg1", + "x":150, + "y":105, + "width":50, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":45.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + }, + { + "type":"ClutterRectangle", + "id":"front_leg2", + "x":200, + "y":105, + "width":50, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":45.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true + } + ] + }, + { + "type":"ClutterGroup", + "id":"tail", + "x":-60, + "y":50, + "width":0, + "height":0, + "depth":-2.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"tail1", + "x":0, + "y":0, + "width":30, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true, + "clip": [ 0, 0, 25, 30 ] + }, + { + "type":"ClutterRectangle", + "id":"tail2", + "x":20, + "y":0, + "width":30, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true, + "clip": [ 5, 0, 20, 30 ] + }, + { + "type":"ClutterRectangle", + "id":"tail3", + "x":40, + "y":0, + "width":30, + "height":30, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#A7A5AA", + "border-color":"#000000ff", + "border-width":5, + "has-border":true, + "clip": [ 5, 0, 20, 30 ] + } + ] + }, + { + "type":"ClutterGroup", + "id":"rainbow", + "x":-380, + "y":0, + "width":0, + "height":0, + "depth":-4.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterGroup", + "id":"rainbow1", + "x":0, + "y":0, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"rainbow_brick_red1", + "x":0, + "y":0, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#D91A12", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_orange1", + "x":0, + "y":20, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8960B", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_yellow1", + "x":0, + "y":40, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8E501", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_green1", + "x":0, + "y":60, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#54FE01", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_lightblue1", + "x":0, + "y":80, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#3BAAF2", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_darkblue1", + "x":0, + "y":100, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#6D3DF4", + "has-border":false + } + ] + }, + { + "type":"ClutterGroup", + "id":"rainbow2", + "x":100, + "y":10, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"rainbow_brick_red2", + "x":0, + "y":0, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#D91A12", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_orange2", + "x":0, + "y":20, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8960B", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_yellow2", + "x":0, + "y":40, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8E501", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_green2", + "x":0, + "y":60, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#54FE01", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_lightblue2", + "x":0, + "y":80, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#3BAAF2", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_darkblue2", + "x":0, + "y":100, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#6D3DF4", + "has-border":false + } + ] + }, + { + "type":"ClutterGroup", + "id":"rainbow3", + "x":200, + "y":0, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"rainbow_brick_red3", + "x":0, + "y":0, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#D91A12", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_orange3", + "x":0, + "y":20, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8960B", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_yellow3", + "x":0, + "y":40, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8E501", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_green3", + "x":0, + "y":60, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#54FE01", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_lightblue3", + "x":0, + "y":80, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#3BAAF2", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_darkblue3", + "x":0, + "y":100, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#6D3DF4", + "has-border":false + } + ] + }, + { + "type":"ClutterGroup", + "id":"rainbow4", + "x":300, + "y":10, + "width":0, + "height":0, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "children":[ + { + "type":"ClutterRectangle", + "id":"rainbow_brick_red4", + "x":0, + "y":0, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#D91A12", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_orange4", + "x":0, + "y":20, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8960B", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_yellow4", + "x":0, + "y":40, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#F8E501", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_green4", + "x":0, + "y":60, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#54FE01", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_lightblue4", + "x":0, + "y":80, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#3BAAF2", + "has-border":false + }, + { + "type":"ClutterRectangle", + "id":"rainbow_brick_darkblue4", + "x":0, + "y":100, + "width":100, + "height":20, + "depth":0.000, + "opacity":255, + "scale-x":1.000, + "scale-y":1.000, + "rotation-angle-z":0.000, + "anchor-x":0.000, + "anchor-y":0.000, + "color":"#6D3DF4", + "has-border":false + } + ] + } + ] + } + ] + }, + { + "type":"ClutterState", + "id":"legs-tail-states", + "duration":200, + "transitions":[ + { + "source":null, + "target":"legs-up", + "keys":[ + [ + "rainbow1", + "y", + "linear", + 10.0, + 0.000000, + 0.000000 + ], + [ + "rainbow2", + "y", + "linear", + -10.000, + 0.000000, + 0.000000 + ], + [ + "rainbow3", + "y", + "linear", + 10.000, + 0.000000, + 0.000000 + ], + [ + "rainbow4", + "y", + "linear", + -10.000, + 0.000000, + 0.000000 + ], + [ + "legs", + "y", + "linear", + -10.000, + 0.000000, + 0.000000 + ], + [ + "tail2", + "y", + "linear", + 10.000, + 0.000000, + 0.000000 + ], + [ + "tail1", + "y", + "linear", + 20.000, + 0.000000, + 0.000000 + ] + ] + }, + { + "source":null, + "target":"legs-down", + "keys":[ + [ + "rainbow1", + "y", + "linear", + -10.0, + 0.000000, + 0.000000 + ], + [ + "rainbow2", + "y", + "linear", + 10.000, + 0.000000, + 0.000000 + ], + [ + "rainbow3", + "y", + "linear", + -10.000, + 0.000000, + 0.000000 + ], + [ + "rainbow4", + "y", + "linear", + 10.000, + 0.000000, + 0.000000 + ], + [ + "legs", + "y", + "linear", + 0.000, + 0.000000, + 0.000000 + ], + [ + "tail2", + "y", + "linear", + -10.000, + 0.000000, + 0.000000 + ], + [ + "tail1", + "y", + "linear", + -20.000, + 0.000000, + 0.000000 + ] + ] + } + ] + }, + { + "type":"ClutterState", + "id":"head-states", + "duration":100, + "transitions":[ + { + "source":null, + "target":"head-up", + "keys":[ + [ + "head", + "x", + "linear", + 100.0, + 0.000000, + 0.000000 + ], + [ + "head", + "y", + "linear", + 25.0, + 0.000000, + 0.000000 + ] + ] + }, + { + "source":null, + "target":"head-right", + "keys":[ + [ + "head", + "x", + "linear", + 110.0, + 0.000000, + 0.000000 + ], + [ + "head", + "y", + "linear", + 30.0, + 0.000000, + 0.000000 + ] + ] + }, + { + "source":null, + "target":"head-down", + "keys":[ + [ + "head", + "x", + "linear", + 100.0, + 0.000000, + 0.000000 + ], + [ + "head", + "y", + "linear", + 35.0, + 0.000000, + 0.000000 + ] + ] + }, + { + "source":null, + "target":"head-left", + "keys":[ + [ + "head", + "x", + "linear", + 90.0, + 0.000000, + 0.000000 + ], + [ + "head", + "y", + "linear", + 30.0, + 0.000000, + 0.000000 + ] + ] + } + ] + } +] diff --git a/nyancat/nyancat.c b/nyancat/nyancat.c new file mode 100644 index 0000000..8fde7b8 --- /dev/null +++ b/nyancat/nyancat.c @@ -0,0 +1,181 @@ +#include + +#include + +#define SCALE_X_VARIANCE 0.3 +#define SCALE_Y_VARIANCE 0.2 +#define ROT_Z_VARIANCE 0.1 +#define ALPHA_VARIANCE 0.5 +#define ANIM_LENGTH 10000 +#define ANIM_VARIANCE 0.3 +#define OPACITY 0.60 +#define OPACITY_VARIANCE 0.33 +#define HEIGHT 0.85 +#define HEIGHT_VARIANCE 0.2 +#define HEIGHT_DROP 1.7 + +static void +legs_state_completed (ClutterState *state, gpointer data) +{ + const gchar *state_name = clutter_state_get_state (state); + + if (!strcmp (state_name, "legs-up")) + clutter_state_set_state (state, "legs-down"); + else + clutter_state_set_state (state, "legs-up"); +} + +static void +head_state_completed (ClutterState *state, gpointer data) +{ + const gchar *state_name = clutter_state_get_state (state); + + if (!strcmp (state_name, "head-up")) + clutter_state_set_state (state, "head-right"); + else if (!strcmp (state_name, "head-right")) + clutter_state_set_state (state, "head-down"); + else if (!strcmp (state_name, "head-down")) + clutter_state_set_state (state, "head-left"); + else if (!strcmp (state_name, "head-left")) + clutter_state_set_state (state, "head-up"); +} + +static inline gdouble +get_variance (gdouble value, gdouble constant) +{ + return value + value * (2.0 * g_random_double () - 1.0) * constant; +} + +static gboolean +create_cloud(ClutterActor *cloud_texture) +{ + ClutterPerspective perspective; + ClutterAnimator *animator; + ClutterTimeline *timeline; + guint8 opacity; + gfloat cloud_width; + gfloat stage_width, stage_height; + + ClutterActor *stage = clutter_stage_get_default (); + ClutterActor *cloud = clutter_clone_new (cloud_texture); + + stage_width = clutter_actor_get_width (stage); + stage_height = clutter_actor_get_height (stage); + cloud_width = clutter_actor_get_width (cloud); + + clutter_actor_set_scale_with_gravity (cloud, + get_variance (1, SCALE_X_VARIANCE), + get_variance (1, SCALE_Y_VARIANCE), + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_z_rotation_from_gravity (cloud, + get_variance (360, ROT_Z_VARIANCE), + CLUTTER_GRAVITY_CENTER); + clutter_actor_set_y (cloud, + g_random_double_range (-clutter_actor_get_height (cloud), + stage_height)); + + clutter_container_add_actor (CLUTTER_CONTAINER (stage), cloud); + clutter_actor_lower_bottom (cloud); + + clutter_actor_show (cloud); + + clutter_stage_get_perspective (CLUTTER_STAGE (stage), &perspective); + + animator = clutter_animator_new(); + opacity = (guint8)(get_variance (OPACITY, OPACITY_VARIANCE) * 255.0); + clutter_animator_set (animator, + cloud, "x", CLUTTER_LINEAR, 0.0, stage_width, + cloud, "opacity", CLUTTER_LINEAR, 0.0, 0, + cloud, "opacity", CLUTTER_EASE_IN_CUBIC, 0.15, opacity, + cloud, "opacity", CLUTTER_LINEAR, 0.85, opacity, + cloud, "opacity", CLUTTER_EASE_OUT_CUBIC, 1.0, 0, + cloud, "x", CLUTTER_LINEAR, 1.0, -cloud_width, + NULL); + + clutter_animator_set_duration (animator, + get_variance (ANIM_LENGTH, ANIM_VARIANCE)); + timeline = clutter_animator_get_timeline (animator); + g_signal_connect_swapped (timeline, "completed", + G_CALLBACK (clutter_actor_destroy), cloud); + + g_object_weak_ref (G_OBJECT (cloud), (GWeakNotify)g_object_unref, animator); + + clutter_animator_start (animator); + + return TRUE; +} + +int +main (int argc, char *argv[]) +{ + ClutterColor stage_color = { 0x1C, 0x41, 0x70, 0xff }; + ClutterActor *nyancat, *stage, *cloud; + ClutterState *legs_states, *head_states; + ClutterScript *script; + guint source; + GError *error = NULL; + + if (argc < 2) + { + g_warning ("%s file.json", argv[0]); + return 1; + } + + if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) + return 1; + + stage = clutter_stage_get_default (); + clutter_stage_set_title (CLUTTER_STAGE (stage), "Clutter Nyan Cat"); + clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); + clutter_actor_set_size (stage, 800, 600); + + script = clutter_script_new (); + + clutter_script_load_from_file (script, argv[1], &error); + if (error) + { + g_warning ("Error while loading '%s': %s", argv[1], error->message); + g_error_free (error); + return 1; + } + + /**/ + nyancat = CLUTTER_ACTOR (clutter_script_get_object (script, "nyancat")); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), nyancat); + clutter_actor_raise_top (nyancat); + legs_states = CLUTTER_STATE (clutter_script_get_object (script, + "legs-tail-states")); + head_states = CLUTTER_STATE (clutter_script_get_object (script, + "head-states")); + g_signal_connect (legs_states, "completed", + G_CALLBACK (legs_state_completed), NULL); + g_signal_connect (head_states, "completed", + G_CALLBACK (head_state_completed), NULL); + + /**/ + if (!(cloud = clutter_texture_new_from_file ("star.png", &error))) + { + g_warning ("Error loading image: %s", error->message); + g_error_free (error); + return -1; + } + clutter_actor_set_position (cloud, + -clutter_actor_get_width (cloud), + -clutter_actor_get_height (cloud)); + clutter_container_add_actor (CLUTTER_CONTAINER (stage), cloud); + + source = g_timeout_add_full (CLUTTER_PRIORITY_REDRAW, 1000, + (GSourceFunc)create_cloud, + cloud, NULL); + + clutter_actor_show_all (stage); + + clutter_state_set_state (legs_states, "legs-up"); + clutter_state_set_state (head_states, "head-up"); + + clutter_main (); + + g_source_remove (source); + + return 0; +} diff --git a/nyancat/star.png b/nyancat/star.png new file mode 100644 index 0000000000000000000000000000000000000000..c614e7990dae07be3b332e164231286ea9fd0440 GIT binary patch literal 1538 zcmV+d2L1VoP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph) z5Gopl5DfSL00n|cL_t(|+U=Z8NE=%efN#nRsl`RJ5+N1G+8+GAEXoHYNQEXKZ3>HDtKq8aLoG#vb zKKqO&lT0!<&ix>ZZ04T(aVEKQ?wN}a#<*NAK!nt&uC4}-yZX0mCrBm$z@< z5`hRIG&nd2sX(&uAA-Rkq{`^%sI&z>eE1O3fn{0H>2%VSxW2v)=`u1hB29sfjg24# zEX#sctCgO_FJHcZPz(Z0=Vxpjg+hT=R#wpN?k=pYt)bP`)&0-E-&a;vWI~Q9=*8@IJJ@VCWHOl$MN!CP zG9jf>iQQeWv$OMu-2Z)K85d}`+u@)jilR_qVd07RiHSy|Xk%j|u3VqbC*vhhtyTj? zQOImIBeU6zD2hTxqY<4xeOi)FPXK@dfxy1dg@uK`1yU4sD5JDmEt1RSq~3M}TU%SG zy1E*nXV0Difghnz2rgW>@ZZ1vix)456&~^`D=QB#l}IKgCK8Fj<;$0kUS~di`jl8Y zf@m}fH*VZWyhtAy7$COdbVRhYv?Tw8{J-QC@S$`iE5;?t*3vdPIwtT%&-i;MB@jnQZ{SPQgTt%6=pCUk(| za2WFP@~{;ciA2zuGiPL2W}r%?!df0e2<7GFAt7In5LBR6tIdf`@v^cqLs%3QvK!uK^Eo@#00mN}yV;28BYAGXhIXOYzFUT)BOP{v9L&iNMsLC<-ruB_$;p znJCM$8M&@Pp+F{+39u2U)9D1A;NIRI>hJGIa=BbqTU(137Z(MWSYBR^&n+QjA(f`- zxFvUo!vV|7%YuzFI5>z$Wm==r2r?nR-w&5AT}n8qTeoh(>gsCR<4sRb<00_s)vIYu z`{{8zY_Z<%n4W&Jao}M1q+1W`chJu0u@g+Wg z{+xHb~Ve1JN2br-fdt`tt%YxVIg~Gx@Q35p>3_#QL zklq##p-go_5%rr!{BzibK>}snwlE;`t>US063ja@nU}Y^5uSiaV{RgWw{L3vG(Pyhe`07*qoM6N<$f*{4yng9R* literal 0 HcmV?d00001 diff --git a/object-store/Makefile b/object-store/Makefile new file mode 100644 index 0000000..73f083b --- /dev/null +++ b/object-store/Makefile @@ -0,0 +1,36 @@ + +PROGRAMS = \ + object-store-example \ + object-store-test \ + $(NULL) + +example_SOURCES = \ + foo-object-store.c \ + foo-object-store.h \ + foo-test-object.c \ + foo-test-object.h \ + object-store-example.c \ + $(NULL) + +test_SOURCES = \ + foo-object-store.c \ + foo-object-store.h \ + foo-test-object.c \ + foo-test-object.h \ + object-store-test.c \ + $(NULL) + +PKGFLAGS = `pkg-config --cflags --libs clutter-1.0 mx-1.0` + +all: $(PROGRAMS) + +clean: + rm -f $(PROGRAMS) + +object-store-example: $(example_SOURCES) + $(CC) $(CPPLAGS) $(CFLAGS) $(PKGFLAGS) -o $@ $^ + +object-store-test: $(test_SOURCES) + $(CC) $(CPPLAGS) $(CFLAGS) $(PKGFLAGS) -o $@ $^ + +.PHONY: clean diff --git a/object-store/foo-object-store-test b/object-store/foo-object-store-test new file mode 100644 index 0000000000000000000000000000000000000000..45bb03f659ce75e75579e7b101d68d51405b7fee GIT binary patch literal 12855268 zcmb5XS#o4c&L);^nz}W&=Gm_Ol3HEeUDuLR4v#VO+>EJWNG9*gu^@R!#?4?vR1BHP zeCq{hE82q0^rjcRXa!nedv@`!UjNU3 zJ^l9o{;ya6_y2eQzqL01*T3=R|M=gx|N5W&GXE>S+Y#A?q{doEI-POCxs}GlF=a=uU zE>YI=%fGiIAAULe&%yaWW$sjUozD$aduMh%YEwP@*D7mjjc~g8$5< zE{4UdQw|!l>vA;g-y-?jz`Hk`x5{y2*1GO@K6m;+UJ>%2a?*CE_3jcWzgX56AFimp zrnRQm6SOEd%fR(=dyg2Xw zFGxWhr!42ia7L_Vx8n{(SZ&r%=AYwwzkFI(55FwehkpXne}~Ce%k}ZcFK5(8yr387 zWoJAs`lBHjoOS;EuHF5|!2jEv;J99bp6bNp=Or|q`0U-qhfC_Flto!Gd*VXOO(&d+ zPIz|yo)A15x}(Xg=-!so(R|YC{Bj<~!L<0jGwPNo7&u*0)>N-3>a;T{`;8{*dOYcL z3+mRMT{)e#(VIupS%;eWj7FVF#u8sQreN5m2Bl`y6+kT|hULYF^FPthGNX?>XwjoY zSN{W`W+-#V3YGTj*~jy@AJ0F&t^WMJ8#gCdm%m*6dhzc3>@C{!;_M8x7gulJoxiL8 z%*{z--P9KP4VuIBjgP;6WpeCQE^)WOS^#-cuvh;QJmwC~dmBR*i3F@1ae>v%NhOhj$n-SMRHTdGYoGHD%lpsGm?xVs0Bdr^L zD#5C8`QHF%=TDQf8o(D9ZJr@axwxwNAKR_Y&o3_CpTE6$_u=aD{rjsAZ{PR(R7OK? z8;JgtJOC5a4UJ4cHchJDmoH_bS(KkUlW8#;{&M#A?K$;oYWTAB3r+i`G3lO{t!_~^ zrUNstgaIW7;o14spF$s_MyGxdH9J?=`LE~aS8v~AhW&s)=Woww!Fc;2bVpmF@d$Eb z20>R1lY{FLs=tTvfOh2p)GXR1CM>K3Bn9DhySsKnv!d=PYtv~aonC<%X%Z%^AePHI z^rtX9ha=2Z{bI<2BlJOt6EA0CU|i6^pnT0t&1wV2svG^6gfe5swi3$ncbC6j{(ALy zG}r%|`2Ui5P^0-Vfyq&IuCuFlJL!J1DHee$DFi zyObo<4wY=uX!8Pa{;$AEEKNezU*CSXJco+){`~U8)z#a}%ZtmmXVst2KK8?u;QGdF z(k{AP)2k^Xu^gMp^X$Vv1DHCFn<=LACaEo?TyXQh{q-&VXGd?)&4OAdS0y(`s*Xo3 z9i~tku3k5}V7<|2 z@jaa*stz3M#FoVuu%>ezMqK-q7SrtHaJyKDq^P2*Z)M1d(MvhKK^M_#~ zGzQZ(Fz~LZiA>$FQiV)Lyk3b#!|I2=OTVX1V_8}?!OMkJ@C;bduBr+ze#Iv1>?8IU zXCFSCV|)1S?fKOOsiaqD{V-*-VvYHigfM+*>}E^T1yQcI!1=imL-%h@J(y^?Pm}OQ zJYOHaWEYpzU_$t)&e1K;#AeO*w4m)^D;!o%u21|Umev2~EA3g{y!jVpx!iB=KYlD9 z_xFqSqW~n|G2mO0sk$L;7kGwo)*I% zu*I;|pSL@xMASoj)SA=YKz&4|>a>d)^F{R;LIsJad!y!W9hAM%YIUa50`f5L6kN9Y zjj53$gQVsN1lOp@3Dmex%*%h}C|I0K%CZ=Y`%!WNMdAnE1#NUmbqtAo1uzwTMX90V z_6$A$O0eU8hiZE?VV;z|{f;T8vWG$v-Twek4To>lB!>I6OzX8CBkB_Dd^NZP9#BIU zs@J9Vl?8yP7y9tUcH9TWv?YJ*OrXS%#--_3j!MGnsY?uK)HWss^mWLgQdyi%t#h$` zIdmuRu&{`;hH9SU{=DZTpx+v6wl+aV_Z?G-*$7fhI_5i1RZcr*q)JM_H1)L8$4GVa zAV{a9)~Arrd__rSm{uhBsRP7xlTKs6vqo!#-J+dgkOxmCt~O*Jna>I{K0!pkHAC1Q z=VoMm>fB=Q297Xc!MtInRx{HD6ed7Bw*(lftkakpCjG`OHj~Xp>r-zsnh#BK18g;h zpBrXgGJpc#{X&uq+69-u;78a6;+KGoN8>q`AM`mxaZ|K0pDDnwJ-T6l@A~vZl$k&E zEGT;~r}FbaC!>MR+rVcd4b7L|SdDX~Gv?%^V95~m;tWW}Njd83e2377 z%GPz!Z|6~TvVx(XB%AlmY14DjbEX2<)DSfGD9;g;F4Bhj zruIyE8QAYk%&dSeL+3?UCjE45K;v=0fF|eWXak%~?A&2K=d%&12mQ{>%xw&9HTqB) z8@8VjdoizB3hq@w9NO>+aaz}%)~B*Lf@+P4%p_qDG#IG=vySaY%zMF8sTU` z(2x4_!LYpUG};z%$)sKD`hHo!8A%o|X1MNYbAgYw2zRt(2; zm}1O1py}#?BU^@tFy%$!$u*R@@O%-{rSk-}BCnp9-gKM!eSl%aJ3Lq4wBL*RCUw`4 z5qDnIhMDd>GV`s@cI;Gp&X&GNmkFF5q%?a@ClN6b9TU@1qc>@cuVupN^ky_^mtGq( zIgk>8dY00UC!-!|Hqcx|bB*WI>#{kY&E$9>yDkP<7MdyYq|=5PL`F2T{s!?T=!Q`X zVE#!4^<=KPG}bdLgIZ1t)73f^DkztG+Mzm96TuYfm+YU@F|0;$(WaOxV?jwfoljL| z1^ttAGdo*M&Z3PhEI)Y}WUdBg9rzB6VEoQhF9tHKE^>y_jXfLnXm1{uX*L=~b;yue zVYEwA0vslW)|%l<=-5m#AATB+Zp2*qx#--CVbKi9#5mTw0{<25P{mdu*(X?lULegz zf$T1yjkp%Ti=MSqSkPpkzMJ!@QKbx;*Cj=OEkI-5H>EK&fXs(2332;lF0vu&3~7I2 z^m+^Vg1*@%s3c>cqU&PSU{i}AW0<0X&A9lTCRfw7Ocpe?7TrP-LPf#a%^k!p;g(ix zJQSpa3S>8o2A)ix1`MM(rYSl-(3O4EBR0cDPs3y!_#qSaOY@Pua=0%f_!6>fN&Tv{pJ z!rD)ZzmVFR&Y~Is7u8dy^D&Jo*lvPK<}^2xBc1tA$xbPF&nD=q-dJbou%nzo?~@(p za}kVbmIx4M1 zp_8!TH|GAiF)1*eMci+4y^ji94xE{t>#a#9p9VGqwB-prJeX<`bF7)SbP7gc{Mp4* zBQXuZ)YYm>>(O=TSqseP%cv+_t6z+uXn3`BM-h756j5lS8ndpeF1 zCnS8-pe@i0QZ{IFP>~!JFu2AJ%{XsZHqubm9u$nqfs_grNWcgjPZ8p1y+3S|mwm0|3 z7fb4Xd&q@vRx?>0(h}~!s%ggsJg4g zQ(%6u0x)g=PGd!*A)1kt~Z-4 zRSn7AU%Z;S8Z7q=pufJD!_8=G>Wyf_SB9XwxQAe`n$7|}dEjM!MF_#e;N$e;)$xgP zpuaxtc(*}Y9bQ|{i}h0_n%^NlFILBjD}I6=03y@)lj;c_%82ZKd#00W#Uq4rbH5X$ z9SRPQ&xFL)`($G>omMNzV8@&P@C`WK+2h)pF~yr*Fk&Le0Y&0Ha!B zepvD#qQAZ@+-gM5KMbd43+9d~xw(INgWv4}p7`b`t4#i5HX+L*qu@@AMo93u} zi+@J_H_dq$TO|A;8+fmes}I-!myPzM(Fd9N*_llECoN3$^A^@qSdd^NX*G(;2&Uv2 z44?(O4x7Dk42KQsHX&xEAf|*tn{`l2-GnFR5If3Ne`+E2fDewwG^4c*;hg297%o2kYYJ9Q$EkW-<$xWJlxk&2rRsECYg8N!ps4>HwU4Vw-UD zjvxi;snBf|T^Hx28q#ab;iG}>r|5d4k;s{HAYLL9GFMNr$stoKx>?I54{+nqnZifS zenD0Pn;#|MCT`58^CE$Ey||w6FLS8gzbBNlk?YNDOJ|;R%^@K~1!6>r?9HA5YBc;l zQ*cxcc3f_pc|!C3A^M*5nj#OTaeGUb0|P+^H_oefS2{hw=a&}bh68!qcUw5H!k)+Q zV8|?nI8B?)U(goa7-esLa!!Fq*#t+zt_27_Zg+D~%uzWmW4H+-% zV|{bOFMx3NXJz!T7F;--hylo_kInhSHBN+SkKle0bHe`r6Lue_zI*~$N?pY&7>r-3 zFhmR=u^f+bG|%%PXOScUJmx#-t$tMctUF)et4H@h;v}$Jv|;QCUBf52p3;#XS?Hpo z5#riUy^0>EwD6FHHPKC?3Ol7`%A7$*EYq^HNNKgQ0eRd{*k@`fS3%ChCd%FlmNc#1 zSjN;NnAoyaW^T^K_4UP9A?_x^QL~S;ZJdL_+F}?R=zIdR9GoWvjE9Z}4aj&WK^SO5 zv+@zO@6zBIFm!?k6R_tTFw+tFBjpfkh9qkP+(u08jYCh3;Gq#B1kT}HCnk$CR8MO< z!mSZ~ z+SZ~I2`(%pIj^}nGD4HSHu6({gd`vDyg;nh)u6Z!)Zr#DF4yDyA`l6JQ;oUr;}OnU zb5%?6L6@P^nGHKVOi>tRE%cnIjbPks%_r(e&JxPUH%8JPXc>{}JmfvTmE-Gd-_%mcg%M;7}oZ`X=x+DTq zNSJ-3aKR*?64K@&m;V=U6tL$iyv&r{ext{Z#JG{`hOWI9YPr}iSbF%fhbfu^y7k6= z4;sJuWz)k7IMYPT_)1d*gS9^t)g?B-FyANe(sD5sMssTcLl#+|-oR-9D=F(Ut^ODb zP4`QAK8EgY{*o5Z$6k{BPciTI;Pr*W%655PTAJ%dAAK3b^rMdYZHfIaXy`!7{;ea$ z#v6o|`M9VfBLXPM?6u6N#cXUN5QX+&T!5e=-+*#}(!t(FHmYJcr}+(E?fGDAf6~n% z`|}fd?->Ftv13Ppvwiy;CvUA!U;uA=?5=4G+JT9LK5-6-c@!QX$v1LtOmNm3k>Pso zjfKJYi*D4EEx6y&HjFet=844yjvE7))_rP@IC7;mNhQW662iR&8}kd*Yky&4vcE3E zuk-hB%f{-^I_~x`@_PaX9}a5`X)f-`R;z)=2tK{vRaHdZ+H7AVTF$1)ryMFTlfSV} z>m+TMuMgD?&UPaB(VQt&8r*^1IVwkIx7b&RnGq2Zv{-MChY0>7Cq;KztsVx8-B(Rq zJdlxFmED{fWS(9A0_Qqj|b5rRN-SXLb)a~fP^Ayy76ieRq=R-8;7~p_{$MT zR*F3=;z_kmsy$8vG}-d$ITm$tgymjQ;eg;66?|6h1FK6_;2_$X?N0}RY z9!LAgP?rprst5{v-Qj3eg~ftkKH`MS47n0ZgID~7kW{{ z0K$rE0b#|pfUx3PKv>BvAS`GW5Y{yd2+NxVgjLQ0#A0UzTP#IkENE3dh5`oI%i`<) zxLd@iyXrXx-EUrA61s;)P_3*q4~tct^kI=r3LyL&65{YnQBcle_kXt_q=%dnFz_ia&fnjqu8{ILGj>;D~C~= z^&-=n7WIAcy(Uqn`Zx`oBC1`MV_IL&)pPlJ__RlYsm_e-MKtFBL4)8}+y~I-e zk#hf<*811QKJA?h%rx-V3i8GIe9g4TYLSTZvUqq{l~2#d z^*ZSY+f-yY2;Ixgf$fxkO{?dxa1|o|obpBPFD!jpal2ib**+b@d$}F6%=XpG@_vIT zh;jYypQ+|jXpYD6>oHA#L~-}`yXE#!=6d1&`|@y~wCW)pW^h{jURBBDgT!f}4_Oc@ z5e|e&Sun+1@V89f zpR%w_O?r_fWPNTw1CztEHDjM zDeyvEFQoQo2gYK%fdl4d`&^}&E`(z5`Md^emuG$_3|#>z3`rh{H8#yhO|(|72c=wC zU`EF3$Gu+nEa_v0_7Qqf87W4V9C}cuuun_54qDRZWmv5Mt z-Kw8r)RJ#y-DUXhvoJ`;Zp5)RVHshiPjlQqSNrEohoEIQr9NcpPpJV21IxEaTTo=^eHfUNLDbUX&hZF}ZR0Q`SPXg*`ryXMeN8P>VL? zVOge#G;mw<#jxLzA;LjZ15&etIOGK)K?e>F67%qIc;Av!i=9|K2Uv>$Kb@K}y;LUSm0l;Y!Djdx4`jGTz*pTf1u$oKZ4%tx301U+h$JhK$lwLz znu|Vf^(S0@16IVeHb;~-NHvmh1ON-P4TVh})isIu46_D@(@}DX5|TtFa1_{D#p4zW zh)kXK=aaGnCqVKScgzuZMf?`B$3-5&uI&q^imWh^?7&4$4@gEdK;trcP=b!Ktp0SVC zU!torc=6G9T>9bfE_kC630P@?%4*GVF;Inz=r%6$Q@q6;75x?t9WeEU04?# z)QgdxI)#I%SRhZE87Sm}VB+xz)&|1V=6b%wA;^aw0?ymbdIgwWAVOBmM!1qhH=%v% zr2n_Hb-%ShZx7ax)?&La`?v-cINUF!ExmPLJuFwNpy9QGML(ojRg0kJwl)vdQXQ_h z$nG@7qZ=Uw?uhL+D`C>7TVn(XicV{H{8=q`8=dfV2XSD{Zv)Wwx%Pp#>%m~y8z6gO#^jgOd(YSo0de|@rJ5?0& zO?Lyya|yGkm!Ky$*b+!4tdxVWI(TAoV4q?&&QYI|FxYoIt0Gfv#VBQ5V4tH7emn@`B@?n4663()JT*ucf6=fOAd8t5~M~ zr*N##H>FT$J@1*=5qMx&8w04ewdSx?>=xu{lD2Wc6gqe2_a?56uW9&KU!lSTWo*A`VUh zotWW0-TG8fa`P{4PbV$#B=+GxI{@>&LKr$c@$=%89M6m013e3s<{V5|p4GCpD=#w@ zx(o&j&p{Z$JnU1xXIV7Fmidp_xI1=GqOu_Q=om8c2NP& zH5seYnfl*v9uN7(5-uB__dyuTJWwd;uA?4nTlIKif(p2Ng^A-~pZRO1wh$O0BhzaJ z_A}GRvV$AIOqUO~D7fm=>vGXPRY4;?SL0Fz9MStJXsH{$xKC%Unk5Q1-L#vG5c+9E zPo0Sbd`aAdISZ84q|kipBB>_gh4^^FO;M&%K70<5%^}Y{&pG8vQYfPU=f%)WjS@VqPKKs+N#JZn zG9sx(f~EzuP+@lS0%nRx)Vhq?s%9pyXrNkPIzM&j;)v_qbQL0e3G1Z^M$h*^@c!rQ zx}!QYN2)h>yB#NrAwidVVPU7aC@@XNbVu*TJBf!~M-Tc=X16V15w}2`;p@Hnw40sa zrX21BTpxRM?vHBTK?J4PldltHp&2jt$8!3-d<@!thd_tT6NSq0%@ghII_u!6)`=Ya zI(SG%C?=gla5w2h!XG1hLgz=N96iJCyc^sDyJv5`T-`GXKNs)|@%vKzz7oHKcVPD{ zI0kmlf=^)gEVu)91^aU$!nqLPT+#>;DB^_epWSmI!nqLPT!?TkL^u~B2$mN@gbN`8 z#l~=1T}XN%!i5k)fCW^@CBza^3874&6^hO4u7%cgoFY1A zFpTYaf;Q+XR61=NG} zaMwJoN7+#ULw5Y)o&(qMrl%m{;!zAy5x3ZnQ;sdFZ+pQpa2&FBS{$q%+(wb?zUyB?Tk^2SU?TCbr<_P|{mKaXya-yCPoEWD*x&-8FnI;wCc`pU z@ISH={gJDVuQ}P_9GDzfKj*J-TENA$P)h+8d203;)0FoX4G4$N zQF49`GJ@GRR`bwoR%uRvWGQ=%!5}U|0Z*PNGXiDP6C&LYnbH|tbm_^UK4CqK^S~AM zrtr`qxG0-cqXB}cL_`eBmSHrY@C3tzo}t+k43Jy60^w5*0ScHJpROj8TkQXq>wHx$UcyniYoltD8E)D3&v)s(NELB1zthd}KB7~_%`S|*(U$2*GFpM`&0ZjSrf zis8N**A@e_6~mZ(n=&ffI*iE|-=K2Ch%vdY&4_I8X3U8WKH0o1(khzbM(T;4lM`XO zt?rlN+N~WdJR0-M2BWgW=EV4BRJMaKCMy|s&B@dt+Sg(GJb9{kYw21B&)k{jI+FNQ{J};@7q)lxlMT|`3vVdms|bJ8mXvA z@OAMuD5%#NJKc2!Ti^FGPFbzCVX#(UBbIOeEC*1_0?Bf>fU!&{bQVy4LUaqH78t1e zAzkEQ!4Inle`fPN@${j>aHko^=q8%3-6IDOAKlA49|8qqI-(3ybk#JO2?rMrl|(Z4 zTBJ(l1DASM^ayNper;Zcwca=S#73dgGXWNLJaSLkD^~)IbK#P`94I5+7ZPPOfXE`u zOhA`03Ij#QX!-<20#BZwfH34eMW9(+7p!)reM`pIAz|RLzFZ%%bd+;)Bu8Ys&^-ze zwDGvj-=gWfz)-MX3ZE`Y*-??~2-02P+`vT2E0w2DjHK9dssJ+OL^;{UN#|kUFpAGA zdb^E??H0lH)d4~>dD&mckPiYbZyE%!_68t$pNgAi9l&YMRPa(pC}chez_dEg$kQjp z#R)_#sZEd(l{j71aRMUC=_+!8U}0m*0fNhveRQj|$pb2CwIQCn$<$l`rviExx#*rD$x-bTq;w9 zPlZA-L(4c#EO2qc*o_c=fF>YeJaI8xI35^61R;wiSWAcNQNrBmi8EKX2v-*`k8#pE z?*N%xIaZpA>?oswJMHCBmp*Nuq)mwj=z zukRCEc=V! zcx$c_lVKYiwpFqKPSZr*@W?;wVhXr%_lcaGB6!MQ_|iz31UOA&UxjcgGThqenTV85 zD&>;7gy&MlD)*E;m{<)@sjdH3?4plyYfOF0Xgzbu0M4W-;8{jDT*Za}IeBQBf?i_^ zhJ1*Xq-H=SA?1Si&xBL3OU=+Ug?B%UuTUUej7w9G$q5lx!H1dDc&Mc@D5v8NJyOC? z|Ae*|xM+)m*yJJI9J@@h9VDFa-hqVqbtAlS8@4*wFWHB0(^5?FPFOG)fGq=Zbmkqu zP!99>K&)pNXeNDUMxJDm?ualYIyz!n+K@y%xg%AWXw>TsL@^k*AX^u#n;fQGU zw2@a_Ei9%^T(%1B#a<-7>xK5|Dl)d9B6Yebv=e%voY3*stva49)_Yv|4&p}+=7shm z|IHKrmXRg6?tbdrHt`Aoy*R1v1ppp}vmi(u%i_~mgsjC!aB{@QxfcN+7xLp$eq70q z;MIsU!KD!&!JiQy!I=>sjfZediO;5rodG}_W?uLR$ZVpEN<_5$wiG5eg2>BC_?F)N z{3#>(6X37#mz0?Z?|h(zqda}7`sk_(xt2CO&_)dph}y;C+a8>}%G_x;Ex*TjLOCfD z1I30Jybz#YytDv--bDg1t+o`zOH=9iB}8?+!;NXYx$Gusz@+H|pE6?@G4)RR6G5~o z1E4>afggR9IO%@c1S4!>5d9RpQ-0bYX3Dy}5gv45;qHeH+!q%r`k^cLL&Nn$tMx-C z?uRbi4;{E4x^F*pUZ+hF7N{Zm&mn(4gY@ zHVL3Oo1hM5a^Y7>WH_F_o^RQvR^yS}Pv+vjcBt*gJwS~fGF?3)CV40VZ0qW>K|ivh zhoBeyZVtJXo7WPp-k`NR{^FWtebqdJ>M2p_Dhv_3wWS;jJPDgZN9`!G5wylAtPvnl zOd~)pqdZ6LD4G##pT0u)D{4*yOIy;wm4X^TSsp~2>3B$0bPJ$#_24S5aG@I{>+}FY zl;D%RT$F7Q@*zNbBJ@Roe#$~0#GULw`y}qB2k2J?t;$au;q)|E?DwymP@k3X+Zw=a zNSw&68UMgps^113@}{8!*Zxc z`7j>k!|MC=x%z9RD^RV9Y;dlbR)$)g8XjNt@)V8|h3i1Pqw=*7Bch>@pwp2x()BTd z593bETBBqZ9O?QQWwby6i?|2k4Bwhtnu43sV+CB-=_pl*M-Q7L;#Ee{Xf1i9xx=G# z9qO6BqSORROF__t?{1y)j%0q(O8IDWw^|}rYLH+L&;H=VHj0uX76zU~I*a4DjST!e zhL1hp+O4?QPwRcSKqO#3i{`DHf|>6wB4 zty;+dn+<+mQ)dQfO@@TYawkNR14o1t0U5^xP#2UKlDsTrpXZGCOL+7ThD+Rsif&GN z_@sl73SkF5PS&neL65cb@d7h_s114wORFm54IbCRNiZ)2cyK{@P&ridcsOj2bC??WAawJv zR%?fs-QegvFtm(q2DO9q39zkH8mL6*y_Uzo{UcL1fM)6i&`g~GnyC*!Gj#!Iz8;JM zL2)RPqGn5!FOAssxdP6&+4S>m#DUIYYu0OOfV_(wzc?2JR@>XZcz95{CZVb)Vh=bG zm+B{Hq2ecJp}Hq$p^_(Op=u|BTu=*QK^yjuldylBg#F_r>>s_+GZdr74C*N}y0)2_ zppq2ymL&P5AZDk1kW4V9=}QvHgDlLj93ew#>yyr3=JZ;yQ#LCS(~*5YCkUt#2E|xmx?wlfg`*rI=dCc zB3rp}5%X01Tyz)VdDJc~%MfhmL5r{?*;0?h8Vx#pmas&J{fCA1JKdR-j_4*u?>Yg} z+vTnjV}pHUt4*nZB-(GuLKAa#)W;)`p41GJ=)6P%bE7jZLvoM;27qO%dQNZs z>UK*s%c-6rr+S8*#xvwJ?EXSYaTI|!1eBv#^bqZ|+TGEW^tQ03c$kP->0lW$8Lrfk z$!MhxHk*oAunzbjY%m@soE9A{LnfmTIx-oA(7_IPi6T@9#Rn3$8@5$PHN+%AwWxDa zpW@-h+#)nR;9cI=EQVgRl9}_j$O*B+C)HoQuwfcB=WZc*dlbJRMoT~67>7*p1NaqeNrdsGd-J*_X3+JB64PN_z~1rN*+zm3~CpoS(>P=`%85=8runS>u5ZrEnq)Am!>M!20Q7flzLg z2F}is>IGo|53$}ud09xWzH>_kWz?pXPL>9g`cn$HG`VXqtSTbVxWFa#;oK^5h^%Fe z-71-h_eqRsy{n^sK1QcO_&@yyOoWcz93wQ@qw2Da{1l^<+7HnnbB=}{lXEqc$k7B| zic-6A$nf??B&mP!BZ6mK5e+ZljOYNh%)R@eX0AL8BUI{L$hl;F2rWkX2^x^{E()NG zm!L%^eu54jy>Y-`<@Tq=uXp*gDWz*)lr;G7HG+n>Z6i$Rp#GrpzgS)f-$f>}xyCoGSU1-9=y%tFyW-|{y(2b~4zeGoBPI2i= zC-M8M*tL)o)}D4)EV&-)(++{qryT;JPdh9kp6&TOVwkLJ9-L`49SUX&%t2;wkh7~{IRi+w(wUc=TOlPI-P%Nvl!Ng=_qZ(6&Dyf`OQU^g%+zGSl@vIs$TfD8zh zmY9V!VB}Kpu0Dr|%m+qRWh7uwv?0@+Ft zvQiuk4z2*>exqeqF?tG#iB2W7yP~u>VLK7wlC1)D2e1Cu43Er2L7>dgr&5 z2m{V;xEuGdIRuHc;bj&ZUS`$q1rd!76*4bbly2D=6LiZC*Udh<0VT`j&c;p-wC8Zhmu z`idt`MB7q>04PFgIXaX`}a)Wr4UV949_%X6Sk76Nke>ysW{Afrz^WK&WrrRgY>c!11!h@*upX9H+x#iGGpf zoF&~wLjf#b5e_A){ucz0(EQ*+ikM6h4B0N8myx{d&00hnWEla9l5UcowIxB;>rEuz z7I730apAVlc>g&bzYI+J2cYN*ppH7{cC(Eebccrlqf(2K z_aMS^#Bt4nU3mgXpOVZIpRu{V<1x=1lgv|>wt3E_ZLVF<=F061U*hDMzar7HE^SPh z@QqyBm`MAi&A(zO!DV(`;)Ok&(8Hl?KBh}wp=LZqk%M(IKoNW;@Ta%1zGIRvk6U%P z9w@@l60k5X1MpQ-viMp!28lB!O3ScFG=^okiDM$4ROb4k9RU$uBMgaobT>!1yvz}| zE3B(?-4vgFP4f9TqN4ZP_D*aTqj$P8jot9*tx$$Q?uatzXk#QPXpjZVa_j_ezv254 zlw$`|sh~Z_5!F9$mJid{m%B~4O%u*QZuC&N$qd4qbP(R?ae>Pp%3UMK7`=k@CDGx7 z`8s+W=~fGNn@k_K8BuRjQE#=Vw`yv*)%_(rQ2o0$0sNlG{ks-&UkHY_Ok<>>b;zG}_<}>C3H?Jzgiom+!OmbCw2BfQSk!ckH zi?R>IsSE)Z2@()mngEYQQWckW5fP_*5#^<=n$pb-549h0uc*nl$XH?~-nFhu5>U zrf`RVz?%a+7WR9ezl`~NSKTX5+Pf8cb)eiJWYU3pQ<#75His2r_u$@JC1SZ)=>D&F zJIEmRX%2CGK`kxCRuzaH#WzYBF*wV~U~;U2+6cb<%A%t}Os92qFR$p4h=@xg0xvOy znTMjAawKFZTSADdDR|jZ*BlfHg2Lt@Zh|780DUX-^5AgJEQv3&w3k`vRTdgtDJ9?c zS=tX-=*Jv%pD!K2*@6%}TNXxS%VRLvLRnO{XbzVxp+{y*>aeGfr`WzfmGA`aL^Onz5plWKPCPN>Fb3* zA$zUpwWI2?w!JRv+Y6{#@d#Hh##McZFYDV2s1q#fQMK)Lc|!hE;-8SdzCupOUMqTS ztJF8ji8eXaBqv&=zClj3$5m~aYFneeF;28aeN)u7M14cl$y~QgUDS=Ii`wx7OkD*K zs!nLe)ryCNCvYct)>Z}btLIo>fD`i9x8cR*3F+&FKOuXq=yl`iqP|g1w8@F_1cvoO z)Rw7!JYCc`M{R4=H^zy!s296d>iUMLtAe^=Q#)$v2hE8wL#SE_>f5J&0Xnh%)DM@- zy7sAGe1NHyyS9BU>)PkCo>^Tkb;G1~l++KB6Kzo61hp$p{Q#*QA9dAVJ38tszqan{ zs=l`7Ybw5GpH#O^I&l9*4JnJfm@~h`qUx2zs1;5&6 zC0u=8^}?T!y_Q{VtJF72?a(^M8dERBi596FU0`^EUu~IcTcf@)PRL!~6tyi;FLa&E zHS5oL?Wn0AG_=U%jUnJxU(ORFrgr@S!`hHe*f2*X(oZmYLdBrhbtj zOpUaRsuQe!ydYUU!@3GUqS~Bl8jMzu{6Igkw$v{z7j@$Wh+5I=5H;hac2`3yM@?Dk z$4mW|2J1#0x7xDQ)_+~~*GgPFUM}j!%SD~IwbIs9e9byiw~U|@=j*9{P!Ogr^V<2V zc0|-KAhqM6ZuzJk4fTsht(sLg6lzC8-NI2b4(h7Cb`;cCdTpK84T0Jfqiz7ybdkF5 zU)w$EI)6>yuj^&9^WiXA^xw_bYAufs!yAhC$zkNZJ}|~9d$kEq=F#WDbJj=j_wi@- zfb+3%o_-&Wivx$41`ojm@J}F z8v;DjvH_VM{|lU`xB!h#{R1MEl*Q6V?S`BR?VEr>naYg)*A1Ny52w>V;0dA7dziGQ zXgP;Drq{j>3{w6M79yPI7@{8cWk{}uB2NgWgS*6XzePCSb#M?f2)t<=f%etQ^4n&K zIw|*?qwuld1d*Ez!!q?=!+_%#Zz-yjsM9ArS{*)@i|CbTR4yDy#c)|ZEf4!GyZ}U^ z*w5hsQIPl2Vc`K$AH)mp)HHW^+lB_Q8ZDWyeWn@XG0B7ocktKa=1{4L=mCMT5Y%w< zJ;(eA@+zD zzN->cBvLdjRVv7MbqJ9rtEe0NxW^mfp{V>xqs4=QTJo5TgGUU_Rkhbnn2#dG@<~;d zsVMRrf}>DWB!i>o$Rntu)ur-qEjjlOk2{8|M32jF75Cid&>;!7U;a46prp$)A;nRV zJ^m3+>5mBXB2xpD4j3Zb=TaY@m4fqlT;D67u+U+il6H8~D#MeWeV*b4_$f0T>FETE z2K@GdR%XBHDuV7>Pe-cc7vuNl`;3QbH81o++=ANa9{ik<>A8~cn?9RIGST6-f{_K{ zzJSl&65fe{7(hu&;RE_JV+q<01=cAi+EbTRKZ^{05eeG+-d3LMK%k{74EBe{o9gZjuBCaEihC5 zOwrR){}qm>aRu!vu{2ozxbsxqCzJ&JnnH2KD&~1ugqh5;#3iqyH)Gg|5?(E1fCjSCNV;F;5V;jg<)m7pc` zRV-;?U06PD)~nZL=n6|cRW6m91b=7s8q4x!yIP8k>~f8r^8=JGQAh(4IYMh#FArgF zoA?o$K%GD7^^D z#{6P-*P|$X#4pPIQ^fvLB+jRpK4SkVVn2xZ4I+Mnh~FUMH;DKRb!mnXd-2c^*Tyhn zKaAK9BlZz`60sK#S~2@c#C{T|kJwKmej=nd^P9%4H;ouhBZlGuP-Y-vGMev5KoJ4l z;1h;X2GOT@gPhafMDmGu#2J4Z<0F0x-JJKU%^t=o@{yO0{me=mf-GqL2kUjhYQl)H zvh(L7b_;vlsnnS*_2*%k<*Z3_f3 zN?&T5Ae?Cy*e6%7#6GkvA*nU6A<-L7La^0FDBJ|wL4T906~UBMg8^hKg-#xuNeCBI zSpJgM4zUVPVB)*rOX#>S$JJrEU4;et1-H9VACKsb zf}Uaf=fy6J+px;77q|rDiPySUlle+q|5?W!79+Syw~_`LZA8~$=&U!;i56e=K5LCj z+3{5^z*3710hJX2fK-D5aKC&K#nej2`uGCFy{0(6z?82*VanR*dO_e4^?b=D8R{Ed zbDNB6BVZBtK%C+0Ep}Sn6Wo;IC*ZmYHmQ!eG4n?xO_(VnMQ#&Gp!0>29jYJi3B?ba zFeoh_5hi@2Ti~2DDor#P5$D1fQhe72gbg7Q@Qkq{zsaN}%?n7wrWZ+*_IIL+Ehm5- zo|od}Y7@V-LQ`(Ws>G(XgRoiKso5BxlpRT7gcWJCdw>B9s=CiC zP971`x0;f|%&|?TL3&LOEhhH9d_9onTwiYt(MA`54iC%6N7((b`w^QTLg4!WhOBQ` zRfS4|Ddir-fh*a%!d{hUoCl%+PXVUbJS<>(z_(qAnU+5E+`Gm0o$bovajf`M zJ?L|iEh$iXPW!8u6dfxFg!gv#%7o?ss&#qke7FnKCIeKhGDO#EFpXi2m-levMSG_w zC{(OIuifDpO1j`GDw1=`>L&)H6ch$&4TV8>B41LagN|hxn&HH3*>~$mTb*1m)O5fi(Q%?4sOBs~*}3;xVWOdc88H~Up(ifyp^5lj7`n(I z=?0{#3q9%(w>zmh2!P?rb6aKz#Z3x1UxD=;uR z8DN-Q14CzGXj<_W994aK_Z)kR#7+blO=P?(h>Q$0o~bNxdb!*ok_iC_9;PXOGt!d_ z?=C?)w*Vs=cC-B(*VJimq&vQcV0);~`3`zXK78NA&G8*Um*Rs>kR|;cFjh7~Rfavn zQO`i|SHakloAaYKP#!ar&M{RLk2zKGs1>)PQV8)S`Xqlvq7gwVUaAms+LX6eX^xRX z2$u$}<1k>4!4(G5aV^*RW2EjL(VgV+{&B09wQ7&*KNBf`YT173x&0??B9l>T zpwV3U)7ct0S}z3s>kH1pxK=nXj*Y7JLUA(@1tHhUBCQOpJnJV|b1 zSmr{wl(>gSV^QMyc#IlDwVbAQ?^KYRR{hP+^v>uPA(i(wblDzk~@OY*Y;m7Ow z_x}cierI|@x*-C?pJ0wa=8}Ceh>tyy4cQhD|A?545|*YxcQBn#QFMl! zS?3Faa3j_)Lds(n7~`;k+Dvo@{waHup>UDyxuMHRV@RQ$DXBwrNAn3n>=)w_v5JQs zTS*S`!zj-q@xQeip8W1?iI)NV)W6VP*2oMw+eK}8n zUXHiuiZ7jhR6kAx5m`MaAwTRR5q?fZ96a>EcF~Gk_;Y9rw$Z>foUxwV;Fj~qU(?75g3thf_HNGDH#c)g?Ti`8&R4RV6liA*?1M_c!hz% zpkbG0Loz6otdU6gj3w8VJTA&}DF?nU<@aCY2WbY0{L%+Y!Q>Ijj{LwF(=F9ef zqultB5wx5<-iw__3uVPE(k{R|Nq_*8n73W|+!vNhyivrfr&>94c(L;2&~oL>;^oSj zBaka+9`9Dp99FEHS+rU?Jw>f1wjF2@5)ZtUzjw&%f_gPCQTCa+^4!iL3V2~B8U<{S z4*voFWw>}8-eR?rrA|A%&84EZ;OaO!TphdNCzrLCzoPD{A@wB^-1yCBE8QpIJ;;?)xSCSTacLE)npOih|e zqg^zHQ|jf|rQ+pMyOay9$ZTVjUT3sGGtRnrm5Ov^!%t$MQ$vTc@V`uE1?|?#v$rMG zYI-3u#$44Q{EF;UG62dOC=Ip{4s2dTq`?v(Wn*Y*@5&ShJ?( zFkvCcVf`F0kb3f!2xzs~yV>_Wed*)~iEBcP0>Q|2v6$MyF|w(hp-IszHZW0?eXI{w z$Ku+e5k=bx`~DNjG9ThazYcUY`(Uquxj}Cp@gCwcs4*WCP2-zj-_wRn;_Y<7d{0KXl1A84`-|7jF$HM8jx1&Q zkj^2^%kTXOdI z0L^iQ$Jg~*)C!T8!PP+0iyYvAPwaGV9V|R zYJzW3sC;x0RsC&pl6cV>OPI|e`Aop{9Q03`Wh`Mmt`IV`+!>Sw>s@`rx{+cE+e<(>95(!b@=2Zv&2Yx6N>+SJi z`kUhH*&|+-w{Kk1W_a-^c>Y0KEVsy@i9#h4HpGe zIarL)aRWpX!b_19wk*(>qHn2Id9tV+0}4Xm1m_Pm-B5O(Gk++q4CyZ6`M;CPm;tBC z48sc$`wWRa0aC66jb$b39BjJT9ise~kIQN&d%ysGz|pETdVGYBVO6d56cT}zXb~oCEix6RSPd8~;7sZ*0480QzwD~h0|u7oLmygJf<)6TC$X@UIL?t6AVts)I5|Uf zofF{=lynMxW6K#px*;QWheYN>B{s{PS0ommC0V@s5l!y@9W z0LI==?!0IUmc39-$)Dk0NRfnsrG|c)=qQKEBm<2j*~mYP1DKh|X-Y zb4eMJaKFLL8!stHc_IPp(cK@sJ;qO3)R;H@Kvt{C(TY5Vrj4TRUTBH}OQg+t2sat_{l^c20PV?KSLQLG5rn%JEIfsMc%|UbgUqEvfUCjXl_K zBet95_|SVpf1OJQ{T?*n_2Lj@j5WY7bnXM+1OMrN!@Yt@ilHLGCzEtqXXhV64(2mt z;=YlO|0xra_lCo0meY9?rt<+@yDZJcxy%M%G8g{jOw2Er2Ys0=%r5~?GI)0>Gr*V3 zfIm3{^UE=!FOz}!CE!U0aJ{sR(rMvnnTpn#U60zR0i1`>1N9TOkGEkjCqEFljndEY zWJE_%bjsCeUB7AH;6&j~dxhbFz!RNbuPmmeIoXC!<_IUn85rEz8aT}&OhPIFHFPD; zu6RnWz!O@$lCaVx%t)pz%0 z?a@ewhyVz%Nk?$gv=n6bVAhIHc_8EURfL z36A+mT*`2Q>+v+lgyD@Dmt$TnR(pWMhvOR{o?9EEs_ z&kka-phMC(n`0kwnBA+e)5Im`9Ympnbd3#F;1l44=y}7lQidLOk`vrM^B&n`F@RkQ z`+M~vifPfo+-ZgbiSAJBxxnID$Tij>Oj65gg|Q$gRh?K`Gw2Nwl_wO`l&@HSv;GK< zm7#J_C8|cL?8q<}c)PmELqvmu@P}bvhi&a=L zsG6n>3xZFNcUUj0HUdG@;t=|RMRX7frJ~cV1S9h{OwhM*(niM6gxGhPPw?RzjEg?p zUEz7(GxI1_DI1H@uS z))d?O$OcBpsy(>1KS)6%$N+lbv-x>bRbL+*{1z)bz}4OHiMG1Ac5oMbWt!SfQT)ebYg9S<*IRf@uS-By_5@CcGH-ec3T128%g|fUe)uhCqMYdeA`MaTv^|DNa_5 zOouT{+?QbCK#GBB2VzCPBsER-mKSePmgxJ9BUa4b={AnXIz;vQ1$?#`#4qamn zJ)D#{sAjHLDUgtB|B4t7FJrtMu&lm&4oD^@AZD*Yfdk;OY>rmK95HoP`P+^+J}dC^ zLD>G7A$V>7Ozd9-9S^_kihT_r|KtP3-ZeH_Z}?wUqAfXq{Am^871az;T5UH_X|NAZCyW^u3y0}|!-vJd?!~vLEY5uf zY)A)ONC$J4Oy@prI(&w7=EGuCD)ZqmA%)0?ezI#SZkzUs5q37v0kP5WKkY1vZ|nmQ z2bE^yV&tLxgC-`1{x~4Wx+8HPV}3;eiR^H|57q|FU(Auk2&PoB@A_Z1qhTV#)Jmw` zZ<{+p%WucUO|@>?VmjV%2R8iahi);_E54cA=wG{t6$pjZczB=#Qg90&j$wcVo`6j^ z6uMF+R3MRD!37g%9dULNFA%C8dj9KtjezpBAP|9sc-~^B71Kb97MUW+XJ|;Yt`zW| zr7d#Ui+b%G14&p`JlL$D;?r4MphVDY_@-xn*gj*wY-i}x&EX#Xiz^Qks4D*F7{A+{ z=DbG+*v6o(J||6lcD~F?>iqDopThB{i~Dy(RWw`WdHL4=I^$nu>$=nWM2_B5*7886 zI{^W%8=rBVp${`$qr5iB7&N_|VwAubY=MKuZ=;FkH7Ht>Q4E3!U4zILI_km(hzk@X zX=wrUr<^I!=TU*1w-z*`t5~VLkPGET3JNZpwqJvdd@*~g?mfi#iX%ZOj<`~#~O0f?h z(yTLpfgba7*C0OQ@?MW>H_U_KizY(;vNNIk&G7PU3==&J|CFu$nD&Y(eVtRcD$kjK z&S{v$eR?8BpK0`2>Cs;}=mFZ1d6jg@lbPezH<(|vyI)EUj)|b^So=K;PdM-?o}(d? zE(~EMLgG@WH=1qB?w1*Laxg&`>EjZx`0XzHFf8PHd467^v*UIWuGyIa5lH-;bUx=O z2<)hAb~1}gT}kfK)q?r<5M5dwsSDxMnmT zP}T4cdkL1WYJ;!jO#i=_h(-dX<*vTP~sNHNNG^w9mWqBa|oNr97B8WN#6eViwfMvzNE#+rVIBGlNr2N!##%#SO& z%+8fZKhDm@&yWXUXn8cF{_GvrQQIP%=v@(!&SOA?FQ;^3?ipU3Ylau+I{n3Y#PHH5 z#YwoClKFn$2M_H>VQ5OhoJ8huFMkYr~U`dM})#=f;!?plLXdr+p1rH^2)f~f35Ywo{vO&6x zownf!K!@bGlpaw6t|_OjhAfG0H*+ZKx%%6nAtMG&I;3(SYr5%p%i|GD%}_RxhZsvS zh;Vlgr|x4eM({zCdOb5XKg$N%rCoHpa~!i1$3YuQ|9Vfp%;eu$KJaZQi+Ld9 zUAf_NLPt$bnWa%8_9e`2bed!MkXfO8s@C8^#s&w5!JbY*X%|qwILnJkvBxPUMK~|- z5tI)OQ6*?gtC6_mIH-cDyo6-}(F0dy^9M{ui>%XD5K=n6uI7EAK5Flvv zQ2Hzpb?K?C;tPg;1aHYZ27Q=14?-HT*$drog8T^Ry3#vzQsw}tU zy=01Fh!DT`*|tuJI*@!f><(3Kk8m3^=ar82?&+?Cwifb2jKA^@Mq$C3Y~DwNDlNa+ zot;bUnjp$8v;abLn)YG|ZFO_uN+VLpS0N*Y7Plo6+2W9%fmt26K;RnYMueZYZj8K^(+5^n?N?#-^jTJqyDYMqo4~yDHjZGCOi( zAh&7750O=Q3-4Mj zoYHiar|r=aU!|b(ar@5mps4Gm7{ZQRz;*NBsx6K&o*bS1%#_BrmYF|%mDB8MW^FMq zpfvD%gui6DrDxUboJ~-ARw3*hX&f*}&dq>r?(Z?-(3TN?`Jo;nu$fpu&a;)1LX3Sv zkx>s)ke?~6$X;v%-*0!zARH?H+vY23BkIDt&E0W-z$EWen-XxFh{`k2o$V`uST07W z7eD;=70Gp|+!|pd59!PTb%z0gDH?AIgl4jfN&AMss zQCV37%2*igFd1MWS2LTF+V)J{C$h*Aixooe*djU-VZAtkD(|)jA#rN>*ga+NP)%fS z@L5{8Sf|lU4qL6im5T@86cP+sF>UzvQz*K{N#Sav;t{up&EX=3tL4ZsdV-5HooARi z$w6P1bYh36jdvAXuY4PNbUNT2YK`H&-F!#WZ5~U+S&ljL(8nT>6qZ&JbN?rjW#{KH zmj@aZ9?OgK<1*%shmd~$H1;c+g%0qG-s#yUXc|t}3*94C13iC2Z8um4%?#+^2!Kr5 zYJQed`pF&i5SL0JbT4)&vsS*l#5@tD3Q9BzXvwn!!s4Pu(?ZQW5V1bs(kYDBs9WxY23QNAKZxH+wX2C0@kDmGi-|nI)&>roqmUd$&x_@ zhQ>Lz=WfHvX%*gt1y*?LpKK%fxV<1JwJ3@T23Kc?n%)ju#yY`aou*+M$C&E^4%cJ^ zi{OLCBS66QH?x$# zY~2zCXihT%m?%wewEfv-hxa{~e7KHD0(53!=3Uyss3neYyN-5DpmwsWEe+r_nCm2Q z1D$3vI{}*6%%&p~bePQq(9B!q#%+FpawCfNM^fPvC^OiSO-7)AD+-o-)5#H;jt@i7 z0m*O_3`o8^va3D}M8+&MHI;)9!q&XudL_rLvK`+Zf;yX$MDgK_wKXX?g6|+yUIxSN z_zFJ7<$+J6{#hd~1=undELgbt7qimOzpx>{G5=!b#Q7If>vLGJ+30M_f=?5x%2{`V zy+zyfor(W?OxZLcgZm4Ma(CuGj3`rOq#$ZKT)}Xg9QXCb3S8Fb&N$+9r3si-;wD2NA^AOExBeamCPzNOETEoAe*BRoqm?|*R8kw z`*WwolYsw-u{_v>d^i09%(qmP4J<3)BvQ)SS)9CTMV`;nnIUXy;8S8vV5!w9Q zW6=~x9!D6s8RJezECR%1V{21@C{tn?&SC;(X_Nylm64e!z3+-IiGW6&t&$PTJLPb= zI2S>XxDiaPw@Ha;0TB7}dSK5Atb8_}U}i0H1XGIpAL@Hf-$6bYtvkcdB)Zjonsb1L z^8uZ$y7MAqJZH>gL>Hnk|9nvi1lR~El9*74iag~_?<+va)LfP_2 zBsZyW;$?zv`ePh@To!2?7HMLm@+Cz|Cvvl*+AV-bjdAh-R>M|@wG)oX?;xzFCw(73jPd5 z;LjjGe+J<{kNS9NgHA2SW11RSAiMmx2DhKQ;zJ*9*=P;hZ{2{zZ~t@D>6!uNoH@9| zU$A;(k7pSI7Y8Uj5@J?KoN5&OI*6T2+&IDpk86_HqD#?!Pfyf>&@BvNhggsG{ZnvO z8$_AZ)rz1s^Sx_Si9r7=izc6{N*;ZJTm378#)z)Jq?s*p#WFdwyF$?H3=q~Ygy5#-n0fQ(S=5XM7}b#hYH1mkOB}Tw z(?#{dFyn@0MCp%uP^1uO*bC=^KBo})7qrC8;Rxx`CtR|pM~Wm9=#23X#S6wGB4Fu8QJFU2!vGjc#NdlXqFjm@Qp(ozgb z!ON!C*j##YX3XX6;JGw@=PN~JV3t~TO;e5R;1>4<&knejk08jV2tiq0dc5?RjgK!NOT{JWmj8>2ia| z6s2szX{eqRuz6PGTF39-lxBY#aV>_K?6GNOjW?nlz(z@9I|7?_j)9=d2^4HT5R6*S zj(E2tR6wtRSxV!}=MqL(Ya()3vOYyjg+U5b2tER@-PF$8_7q>+IdF})C05}9g8g&(1Sj7$ zQXHig>a0(V2`!SFrZ_V>PkQ+riGpxeX_mYUT=ozv<%I5qa6@?jJGfBO1qhqdBT%Ml z(1+pLIi9un9fUz01zjKD3kYe}jdFT{CY+d(D$m@EVCH&jnOAzLIS&YuKpCjqz z3+Rg$^^2)TWQS~w&Se}pq`hj2W{q>Cmd;I3L~FA@)=qtr+T~K;mC4*K0}u4 z`Ak+Li({Ybjdq!^FRsLsc!ZT>i)}^TAcSLo_Vk_tGVK;_b{oPNjtrt zyc&Y&b*5#^Z`mXg5?b6r-OzR4Gk+MX_z82Z&CXhIOLKsULq--tm|7JisBn@lC~^{- z2j+Sh%MV_l?LRpgKBB*wn8jp4%7Y9JW^fIv&evm45 zkScbNDt3@6c91FtCz+9Fs#q%SZK~MYRIyZ(RFPDVRE<=NREbarTvAy;0GTHNP?qor zv;)++D)i4kr3Vkw6##PGRSV$ ziP7uVE~d0c3S*sN*)CGY@D-2EnsF*ESsj9Wi_3`YJf)N zx7`e)1>UyjEa!MV1*yPqwR0n|yOE(^Y%TL?0Cfx36bBJ1VbbqLVujmnW(U=DuV&Ga z_Z3k00t8^Yq)ftj~@9BEAWLY;dXU`DT z_;2VPAW872Fks9rtx%DZqv%m|YI??W^PJ6&=Fo8Vvl%kwTpGbm_^B!Nbhz zt1%zSglecbYHH@sxjS`dc$)1EH*(fJ z(UV!KGw1EiaASexfYvKGLFes({z4!UV@*%kDufS(#e96y6iRdR!R2(g5XVJZP^_XC z@S>Up2t?e*B;Vm+h_jPydIbyh#R&FvzHr5GFE?pFEIXWk)XXD#x;v!J6-H$j(qOej zMpd?_5UbUam@jc_SZP0K>0Nt69D%U}NZsT$og*M~H-kZdCB}Y`B4nYL+!@rXYIgiKD#lkP6gf@yUOmA{XjzE`-=m`;DQ(8sSqo_-J*DLK^-2(trJz&orw2G8$DPrqE(cuwm%nu*z^CKrmVfadtZ6MhP zlAxgh)J-kW_@Y!`e61Vui7{mYbT}22Y@}>>LGjpB0+H`+X$-ZH!H$4lR;*~EQ;nrc zZ-%T`=h{-s;uk2TnBm`IWU0&mGns`~(*c|>8Z|yH1W@kHX|1p9-?V0p&O4E7?LW zMpSecaP=8L_7fdN)(zb65HnnzdPHw7@$k~<_Hu2e$!$X7R*U>@8SU=<(M6dwJA~un zB4B>&l3D@sacINEJCKhy73_V^?Dj}C*Mg`xJEG$5@TvqiWT;Chh^hofR3$iks08Vs zp#r+g)f_*;QbKyHMTuyl5UH*yF=Q)UWL(2jWj%SZDmjzx^Rj# zd;z62^t6gEw{bAHS1bhM2Zxl&6DV2Vu2i7v`>nC^1;;OSoWfdIQ>C{oHB#4=8k|;v z1{vP9baDA@OHC3Ut_+}T6|B+aQA!`<`RIA~DS8fHz6cKH-J$nxsKSxsFdjd37@=8u zd^$FjnORwcdvG7HR8nWyNAP_fdH7Ox?fvqYAlJ;%z4o#~(%1T&QEXPf}J}h2j-)dKzI)!Sy5SLhvFRG4JT(!!=dWIdaNq z34>jkuTSt3S_&*MuxF#I4y_E4;CU*}Qo99S;`yPC`J`JRv)O4e5S0VBlnJ8nAj<5t zI}FWayMuZ+%+L(EJGllk4Oe2g4#QO#u7Meqw{r6m0)CnB0TwU|jNR1ZW~8_m+J71)qmlDfd@!!(&+U$U|_rSh^uEhkJGC<22;4 zQk?o_P}emJbK)HAE6_ZjkKZ#C4pzQh{gq+Q6h!Ds{Ob{GxPbh=|MT%4 z@rU;2CXwOa{{GLEWfcd6l-0a8G6|dy!W;fg@`h5fASM)|Aj8v40m1ziyw$;t8Jxv@ zyDf0|D^%|+4tu%355Co?IQ3Wf`0{WAADSFygvJvHb{Gg(FvR)l8gXo&jZO4vqvH;G za#83`>JlkCd^E2&&gIMFS8*h0v|N4lkMtRF$$Ie0e;rjcW-A_=YRt1L;|Sh!0LXB- z`7;NA*<+ny#TOGF;|TNzqWrMeN~cl-Hqrq-+yaJuB`wsu9m}xQx)IFWmPI2zLhj=Tj zI42b#dl4_Y|4*5s}Wm-}xtOy#gPXw_n9KU(5*KdDyS6d}NJWeP6l9#F!^9 zVU~k}BfdO+u4b%ZbBZQyp0 zrQl*hZ^{lgWESm$4Vw_+yr1$>sA!0^D(CFU1`2+?HGPbmHM-vytc1kIvQKWm^#bpB zHajx!TlU+orNd#aM%mNK8crt#YQ!EkwLVNFZ@#RG^VtHb8^u!s zHaH()Y7`+mcZ^hrve)C4CD#bHBo*wP>%L&f-T(xHm>8d}40 zbMAnOQ%W^a68}( z0Z&ze_29Oe=&e3C$E=N+p=7VfLOr2RfMIeZ#R@&hh8?h|HFdW-9S<#Cy14rF>TBAR zvC0&sR<{V%rHyg$1+`ZN*30yB_n~5^*XcVo;Hz_WMpj2FyXW!Nb;mN5rxZzxRcG&Y zz2@umsA8I)BIkToGz{Lz8G$FwMuROrbj3gq!!piDdbT7~PlnsBPXKz0W|?r)B5pef zVb(D8Tm8o(AHSXnAX$_nLM|g(NQd$qFQ`e2W$JX8Kw4F>t**6RWU|RlAt1Dnvq@|3 z8VfeP)s|Nh*kRuB|5s}Ni~ zBSCGHQlBW~9v;oH{kVc34>8Ni9pUq)9>4qo#ydh^YGAcsBdG>%R%iNk*c`EJZl2Fp z{bpI$aB(tTCtfETq{w{~W}$t)bp;3NT|OASd>Ep$$4O0%#5Oxkel^#wyVAgNQ{a80 zV3RYf;tD>(*MEU;4X=BBDIF&XLm2PmQJy7nHDuPka{cJOU=q*a zgi<=(=lGn3fA|dQqPj%Aas%NJ6fuxF=|RSLv22`BE|X(tMRsJ7qbvA0KY0oATB$sD z#J;_^B!rS9<#@?LDeintSn}ng;iz;!Rl3oRm(O>|kZ8){KQfRl@hjtWh6yznQF)AQ zp?Za1_2PM8+yhmQA35u&Yr_sarjv8NMep<&<2!JFjZ`y)9ttWqykt_nSoop>Dpl|I z)#{7{`Yj&q1^Mo5#)t%Qc?O;;q-6YH2T`t<#1p!$zt2YWd88~zfTY~#|1rIvmiOV- zLV|3z@O}%Mg6KDd1vDIExlDREK$i8M326*!%gx!<^M9-l z@Wd6tj_G~z{2cZWR7eGKv8V^9-sNwtMkY9$QNilLOz2K#EBIf;ThZ`vj7@4vtvUn^ zQrxcDw(U#{*gozaO1s)o`ew4>7T^uLh^zUT;4bp67h~W7x!CDMI+fwjzA*7t4iFWk zsnKe1T`gsTD3CGwu;(I;^?V8yKAM&akBFup64FaF%NYqszd*c+DQiF^jgHu^sJCVM zaL{`2F)JJdBtOKdj!hr^OWyH8KcO}XYkccNZl#kwH-e%~`w#S#_(c)P)=t)*!uril zKLtSNAPvTv0QNZvkX~TPTR4d3rA&NOb?8;0XB~^y2oGI9$)!Fn9iL!rVL>}V$~c60 zq3CDduAcrQS8gY}`2vqnajih&5EcrK4J6ZoBYF762dBgkmBM|P?j?YunTmqlvW?TM z>7}Zcl#PFY$Smil!zBYfBu4*nW<1z*9X7q*G+P^f$!WQf zIo3^~B}hx>UUdqgxDxf=;SWi-&(nD_Vm>{GO@W*4>@{NEx5pca#0s<+2zbad9_I59 zhtW)PKx#L|dTaBfVgz$MQ0BaZR?uHK#gs5~nT*4+M){yx0;WPwh2_rZlVoJ5+$yR6z(F z$Pp>(+-%sNfH+sCw4H<0omLkoA45MMi{Lo@b~B26-bcmbob-`Zg=5g?Oybfa!T7w} zLde3i)3cz4NTNP7;&9Q60QGZ~z*xpRVC-PDrpmjxNUw+$h9M7sk3%oFbKuV8{Ma?YAC6@NfVmGIg=?Kk!C7bs! zok>&U6wYTU&IWK+E6xTy;giZPIrz3ihL^udg6nAK>!CnsXV{5?hZ#!JEmuD5bneCk$(d#RYKx(SS^a$VIzQ-5l|`FMp^5G>Q0$Rs?GvPTL6 zsNBp8F#2s5NUcDxprp9U#d?M!JEu;!3ol_L>ax;>h|DB$-2@$-BLoPa$`V&5Bsazh znx2r)m&Y*2!8Mx572Cfq-gkY=+ngDo~uwCL5UO&{tmE45-kCKQ6P$Z(QM zwB?GHsQA8C!gPdWnFL0`PYw&kug7K4a1!`K5{rRAx9b5rbo&k6C#5QqPZ3|4w2-$4 zEx)%1okHFvR{n0;YxX|j-?v=fcbIz6hQg*(@1}L)WCT;p&nuq4pyV)CAz=G5l!s7t zp45kHb`+rZ$i!Cwy!YAZtpYd1~Q)Z=7H*%;`2U#@2qO_UitRbpinMp47j6pVaSk^$7 zW+w5^sr?e9sha3f*AUNjy6+1_w!$HJ?D&u;G|QmkB9`h{AbsAwZV!37y!WB&>$-wp zzz&v4-QLMskA~GmY@=g)@(3ASxl4$&I&$iyq=V_SlE$yDU_H`SY98xuu5uVCtEZ0* zd|KirSZk@LIt(3cI>wAQppca|uYhygH)#Rgg}e| zggA^TS+E~wGd^!EV1kT+L0u?3VKmR}V~m|(VGy!{Tby%tUX~1q<%}!yM}9-kd9nI{ zjYW&2;j!C;1%-L#>&^w1e%rSecs9sX^kVTJ{)=5XbrXB+=w=L!6aWfT6z z4i5MiD&o1RQmSub9EI8x6H?pX1Wbap+v0d`HPMliBMG8wiPswQB&7Etzr+-#(RQci zyfO1Kd`xta<2!yV!3=aHv&69}rtb2Kwq|pMWOT4vqnL!WCMZ#9Gsj3YEG1y9?$=04 zt!|@KA*q)j87GYgTOCbitNALZT)qSwedVNZtwX3g)c9*S(lf`H zE!4kp@LGzdo@x<5wuseW{qhK0<`aG|RuZR+5u&AbugeVEoUP#3(3-WEq~A9QiCmo( z8of$`Pk4w+tksWnSWnKO_YdUjxqR?cIXVvGGpn0e!(%%eTx@J^jcZJ~LZU2%Q?n(R zNUHH?z_=4Oz~C>@BhRpI;Bd0xolg?-5?Pc6bTF6JVNTkKmr-!)3564Ml0K1F;$lF) zF?^vYq_fsnXloxE)p@40>PrqMECJcOrHTGO#a9g@K@CQEi|-dg~1*mc_Ru z{mfSC^{bz*0<0Xb0#IvO^E7ZQopmSE!0rUIn&A7^3Z7KMa@RI-M)|(}Wbz zo1#K+28L#&x4Ku_pDh{eTbUIVG1+_qxr5xq$Io2S7oZGwTc;X)<=;y~m zLRYxW7)r%^W5erE)Jv2S9aWdbh<+^{Rp%M3na`@TiMxHo-NbUf-N6<)tcL{{m&LQm zzacM$+jNLIZ;&mUCNofE1pY8NeX_>s`h(BT$NaG@USt0d^3hT7(>1tL%thB z{xXIf!HrdCtTtnn8LP{$BX#-b2=4s|?q3mi(3{5x5Hcvjtqt`7BGA?ISYg#XK7gE| zA{C|q6wGW8q4W4)-_B#euzS+0);y1ExXt4lZqu`dm#SCu_`uGo4Mk@jJ8^Fw*T^)F zYh;=@H8Rbd8kwd}jZAZ=M&@x&U*uSI#%eQGnX$U0d0f>q&EpD}=5d8f^H}x8``sR| z3;jJY=Aa=i8U)XAotoHHcbik}Y2@-AH*k86r~IVWfsTo8fmNT?M~arYk064GFQ*nMy6D=WeuZP&n|FBb+B}KxQ6gdZ# zyI4)T8&FL{#7}rv#wp$(o@&}XN@^McX37t5k0}l5Fs0$0F{SHdtUSeZio_JvDW$8* zQ)H)vuPRT`of5vPJVkg)_^R>;RpsmA^*%y+hT=X&W)%4;rR!vDc~$YUrP6>`tuR+k zQf$>Ed;KiPs(t3rNsv`ztG1dDD73QnqXl?BoZFEwc72)}o+!v7ZG?ed=?~{;-D^hM z*YQnTmlfXjGY?%(AcZhB1F$mbefaIt2v++#C_2iJ;Xoh+-nhH$aO39W4V z;&`;;%-CWcXL=Xr%s5_9)sJb5MV<8CE#deYkrYDH58~WhmeWgg{PKv6>dEUJ8UOIC z)1y2U3Y8@p1<2Ol<6t^XefXtsT{SD~LNDg)EjbeHQ@H;T??K`y?m`NPB{5V&<68_P zVpq$Q)XCmy{1BdIfpw73*ig&OP$-?_UmuZ!K0e7{9~|0q3DWAf}MSXZ;w*^+rGBQ3OxH7_nSeqk7qsnNaMu~Gw3 zoFqmRl|MjW+ouuW#VbXJs=_-712M)U|B)gk#+5?8QLp}lto3|M!n3X}EVeY#V)gLv z>4;VWbl7s3_a4UmL$%PhLc>##ZK0jRn?O#8Xb8U#G%_U2Dl#%E%4=abab3*Xmp%F-{Z6m ztto7d+0YH)V=oNSgdNyvZ1}=En_j#7uW_W?^wp1j-<{>#OY6{dYu=;l)gBLX=zH63 z&v#^FsKJ|jyi2)#x_;RMw7v3eI_3%O#Tt5~W-Up#QXR5hePH|Wi7v}afn9DLvcOGE zyk(h=i(44k1Xi_mCCA93VH1~c{vdrLq&45`)6}6udH1YNC^~r|h@Hd~4RTg&5MRxc zKaHLY87+&ZD||?_by1G^VYAVG;BM7jox?#Ks|n}}g#7Ct0GWQU-{iC~57VnT%1=@A z8v65;7-qRD{i!Uyidg@0chhS+KebWcZ>OiM(u=#F#5LfNBN5;FOT!&RbN|q*akiW< z)vYvS03Cgi5GCSN*wt-mG8_5z4AukK)p9K*t}L!dcG%s+;KY^~jTk9iJH)AQ^wv-(>?5HwB8hbT3(%d?q>9c6j@R9>MPZA|El+y$u%Trw zKszmDoe^C?kB`js@lO+P#}Ty*dkZZ25U8~+BoKJLdWF3*D%c5NU{+pi&@N_kKjJzy zFp&nYTPY;)AP>H=NkqLbfwrXA=7rFVPly2lD%bztFl(bzL|D;n-52{$$YAV>K3@=A z!ivU%v03Zm!M2Z$tsS5!!<&p@Gw)y}%M&jMIF+EH$+$@g2vP_l#C}ApT%v3cp{EdU z8XwmF;{>WraxaSsY2BpKgV`1z9br<(=~r}c&b9baSj7V>er-K;_-YJYLf1=O!X0yx z%rbqLz=r6~7~vLBy&6Vz`CyFiVnvsG;yNK#(ctkzw>(5QS;B}L`pxrCJ&ImOb{0fq zh>;gZh_MC?Obvp+ln-*)A?Z7`r66$jC@S_$qHk*}=hEeqcX8Y)$dIT1s)y@2o}n|@ zel|nu(Kgd&M!PaSQ7&(j1}apO{y%aa??7k%Q%&tq|7>jv|4^Z{TDXS=>IcWji*nLJ zk5(0KDPU6xCt~)SEH}gYI;PL+er*A&e;|hsmy32$^)FCsVq5nk1E_W zcfO;)G&7XJ1zoefa-^@Rdgtd%(;nYD`2L|i6OI+N#a-Q587tLJ2sG-%m7}dkVafEl zA$dC#opJCPh(?wR6)nV&WmZ>Zv;-qX^k)}X(0x_8lhCqlPL{HNjwtMGq(LILU8PqQ zfNMnU>eqU1VJ|5@h=JxXo zhY(>X0;Amh->tr^es)e0_6BicBCWj|_J|h{U>Ys^7m-t~cw0^Q4TZUD>C2YcL*lW~@h-el1i##OOIG1e)NI>SFq3)~{2 zL{wvg36}AuxXZe5IH(vCIp}RmRSbiis+a>gs2Bk`sF?mZs2Kb>s2Ke?sI7y48ihvH zWlhtQs90lzd6#ht7G4f&J0{q9IaS*+!P?8I+Kve}UryC_OtAcNs-|Ot#g`EUqb~C`)|0;_8Bbv;Rf=@C>E_P{=i7 zgHpGQ1##g&)%R<-D&bOtZ_c+z$FdUyn0-qD1k@qKU}2dc8~qMXMb(Dj;=EdG`1$VJV`>v!5#b#$?xV13tEU{Te?mpmxZbtW z61FzNkCoVXaCd$>pTZgq*BZ;@aZ?q#PJx%lqxe&BhSSb-F)#{mFzrdGnN!iLKD;M2 z+l(4*=^EcW`ZU7!)u%?7M=)*I|Pndt>Il_ z+HWhgUTn56q*h}+&XwZ2X!~dq^W^0zVXUiTdCAXHqLw$CA}_QEn*4aqqw++;)46@I zfKps-Pszpxu4|gMD0&F)BO0qK#Wq>AHoXSYH`vfee*s!|nxFQ$NQt=73>oQu)4p-X zS9K&B8`G`7k6%LiAu&pr={wTpYKy4xqL3|ov8Ei+og$OsbU`N=EJzg7w_I27Qbl(f zge9#p)*?HxiQN4Y6kaCypxe~nwv~(Jl05(NxzbuhhaHo`%Pq4mmsB0chFe+v;DH^o zrJ^!JLHtPW^$YSkd2>hMVz2JuL<^xspB#bkuoC$5 z$72b2iRv zCH1*Pf<*x0eT?jgyd!muD2-)lL5Y#^@%sAyQz& z0PWN5S4)YXy$c$_URtCK^fRQ2cpA5)$V zbKxfp5DbKC&Bo+je)=QZoffZ{9b0wlPN*o_lIJ9eh_tN2kRqYcL7-TRd$aatCZau=vJ==<@v~``6yTcxf{*> zV&bO~btwG7W7V(IDPBpEjRj`YRz2meGEnVc#EUK*+U{qVkuDApfShq^baUlvaeMi?#mC@(_}F!+fo^+}=w0j+z7@aIb{lpW622=rF) zW}w9eq-x|+7X|bXe5AzT;>OA(Xiw_!bjC9lE58qh=&Pg8VCr6aY(HJE zaL&Y%a)iTYfFG?8w%H4V?~$$h{{a_RYVFAz7QCDm8eACScpK6%>j+6)EG@9#DN29;&k|fOC!{UeZ`J@OZLLZ+=_H z-hurk)RcvYLVb`SfN022C;=8R2lh}$ulY+O{{r#@S^~b`WsNDiP(ukZ(q4POkH$Zo zK>)s~fb{Ijsv%^yFtaIB%_AXknKY6W_ex{fG7~z*zA1C5hb>d9hy7)=++Rnr{~X1- zQz*5b$i4Be(Y#|wTt1C-74D(Nu%jJ`+o`d7^=fK0*=Bbr#loAHbI(;Whvl1zYy2vYX<{#cUl}rMo@F=7A7QvOgz~ zJFaANS9!TBmaiJR5*r2HY8Lz0jKm_=B55AklO~7<6rX^ehN;JAK#tGE10?p(A?U?q zzF-#z{akEu9#C|Lutb;$FrKrASb2MmvdH-a-v>@tYZA`s3`q8D+?S~6Zta^SsOiX! zs+t(>y?8R;f4h6W-jnw5nX>|-N{s?LUEv0kjpa1{`8h)@F{if;suJi#CzU5&eBp$O z;0DD@=Zta_HSvzo!3?+riGgkG!(>{&SYYANUUmCy%rqqG>M=c2oM1-LGbQr1l`$c5 zPAZqLeD+XU$d}CJ6qs9MmiKRmM9g7VYFLN(goyd!V<8q;hj`wphQNl1t7T795aX2~e5vxJ_CXO?O$=FBum1DM z!n%UyYhl4_n#}Yr&<-fllt2wOYrJK}iLANGdrOEb20eVhRs3xE@C|D2`7vOv3v@rwDNZ zI6L2-_VO}TM3OZZ z%O^mhW-vV?c_h8e<}!HTRuEHUU8Y~Y!gAuswEVavi5~5xhCQqg8RtKq;OmE6 zINO}A79~i%WbYtf&F#ZI#Gbya&>G*gn4Z7e%0;@=g)z{{c#rU=#9A7?8_0CI9+taP zIB864rr6**Op6LA76oYAA_@5%*t%bP&C2N_fJ)=xuw6_Lm59?-O#~*MMkSnJC`FJe z{{^1=H9KT5!Jjcj;$JO3ovgGE_-C17lBDlIN|Cf`-%Gp8?F$}{D+=?6vN zwwH4Vi=xW$7Ed#4j0ayJyh0zW|prTRV%{0>DD3O2m7*2n=Xrj9&AULGb1dxp@TeZ(sUUZ zay0jFN0#{%`%x5kMHr2JC0FD8o!TKs&x17WW$&X7)y*2C(jyxqklqm6-`DA!0#P}k zGC5l9VB4t*miT6o>^jLG=Fv{vDcF9fVDcppLGUu*!XfTO=Bu5^E&AIxW=mW5S=t&c zhM2l5uhFqEdgSip(Tsq?GEn)jCd$GNJIw|3h++zgP+G>dhDSaPu41=`uk;#(UfM#p znAnruEdg;RQ=jP&LC%u1cXVGX@ZK|r0ZiRGPs)KeLvMyP$%dW~(%clxDTtCND6aRdEJ|jsQ z0!vZ2=^&I-j(qbn1q-yEGXdjEq2$3Tfp-o5O32y@Fsc3rze;)cuinorQ-AVzr#)7t z6I_PpDLFDkuZ@l1hX(~0^VoiLDlBLnjKix>(X=n^VVZmk6)=1mifJMSqB|0-tnRBz z-Chu@qV!z`y126@YWG;Jg+);2J1U!(+@oZ6ZxZ$=#OVn3% zDOz4&nBV%&sE^5A6Y`bWpZUqK(j}%yMyWiB4x3AYZg8LuhUwQK=oG6mVjS4gy;gVR z3r`eB${uZr#D&c*DUo3_94_1;y{TLkyFW~WJiu00bJyIq!Z2Zd3gZy4-OZsyV99x1e>++F=2c>rcC-{*9PM8eU!P_X`u9}Gd+inKA{O}Xx))P|3;&O#Nj7fKQQM$3z8HaMQzcLwD$r7)4 zOED2@vqb2d8Yv*v!vq7l_?C>a&z2%|-&Nru((L_Sxuy0S=aetEHnfqi9oKK(9Pdx) zpTjr*;8(sGVpD4Uh9eo`j}raLdM~7R_M?PlTfaeYyD38WUf};a^a6W#Eb)LFI4t05 zVtsj>7;F(Hcsjs@a6@@&-Z71Md(@Zfw+GS^ilrxj{mI+?;Q{}CFaHVxk@F-OnvCeg z2$u6Zoo?qi9IyG5w{D=`pDjjao@6P9kKK~qET2PTrH@V}3DFtutJ(ut!_qK&3Po9ryElDu}|jpF!3 zIaR6v^VRv8+ChnRhrVou0!8w`j+J$G0N__?T2Tjzszz>e^tY`)l%z!wfeDqHB_kuU zN)00~me~*vOj;4Yp)yyBqtH67#t?QDn4FEObrP1o z@);CPw!AbP^*GzlgJ}0|(vk`jo$^pwB9e-!h}mSN?CwKjghovv)l?^CFQ{&{{X+`P zKVHvZ?8c^^Fb!(}1m%V;`e7d=NxWdy~ zslP=lSF0Tbl93OY+hV1}g*_h%%@c%6Fk%W+Q;|GO7Cs^(E7yi-6wB}Hh8Sdc=`FEK zI-4Jn%an=;rUqo|6QJa@0ZJ(Lgk?>RFny{A$yF?TConE03r)O=5^{wf;Ryv)DkF%p zooN>85-F-?RxnK_NMb88g2P+Yss;rUGVz6>Sg~kz1ElmBJ>5t?EHHRz%t;W0aPo$_ z-Ft33!M2$eTv)R5VQ9_fhwBrStnpXmQ2Y?_5xl@eC+`(u zqUs4wWz;-w+zDGr!esQ#KQv9dw+Olf#BVEDQr-cKwXYQk&*Kjhh^rhG=!dq5e!28P zaIGEvioCtOK$Q5{%rcRsw#1^nXAVOYZRGckqF;ek={F!!iSM*${4oHy;KciOJ5>Zf zs|OGp@*4x;XJGD61wf_4a%kg%AA!tOE2i(6QAn@=knk@GIhd zco1ve#)p1}0YcJ7h<@hWJ~e#Y_=z~S_OrF%$Hk>D6&G0_kaFK5C@NQy86=N1FX{D z9iTxjZUVr*Lu06RG^hZ*=>n?yr~nIH?h0>psd#MSzMQ$pVxAZI(yt1LS<9knoaJK= zLq9(`Wi1rz**0(Y&u_&ihHPK!y(q6s%09FNQB`LRvjJ`3^fZ6Pt|SLgot)h~0<7yK z%5G!L%52^=5~Qkgt@5sEIdo92vuDv-XwQe7LETLq-^ZZ#ZCyxLTV)|o+fpbLN%Por zC@L2)oqXLa{r(h{yVV}bcAazv3AcL=ave{G*h`!WT6G<1$z$tTYhD$aHR%mCKlnWU7r`G-?;mf)sDES^WdY3t1R8+1ETu8|4T*IQmu{3dJk`UU~HRKMi1EN2r042vrp%20O96 z3UTk2(pma+%CA-{XfDuLRAqHK&_GpV94rr|Ll0D#p?vOtSnKK87*XY-!3jll#)?5w zm#S|grfM#u;@pJ>4-r>-RCRTkP^y}HHXvHglA+>{CxfIRsH$zynpn+aLT|XmOe&8) zafk$gP9ddhaU|l?B{@Wujh%L8IOwz%(LT+lYiuosn(+OsY~Q#MI$rHeP3$n5z^9W1 z?gUtU?C|Z!m4oJ+4W7m6izryxNOGmjB}sm0xbAqbvP-(@wG-@0dw}qde^B(QeT4#2VNmsw=li(?X-9n5|s6IolEBb`0+8^vZ zSDlR3+4Pb9GWbcscz)Kr3|B&1GRng|9rf$LikX4@_3*R$jeWdhPTFU{x1v%*)6VPE zNL^UrO2?2{5m~;eJjc;RB<h|XA?LaQ^j`*(OcK>+Oz~BlHPW2Rgxxae;`{6pL@J<@;1HZzdWCiC=bJ*v5 zIOg16-GBe%3O)V+-;R#DzPg9Q$EU0Bf81S@XG->SS+MtUd@i9(efab7{)OEWUR__m zJY8M0J4ag4)mi8FtLJApT6+HR^g^CAot1h5EioE6&lfm``~!X($+e=Bl4H)tFJGQ- zOKt)^qpr7wNb8C@@b!-$cMo49=G*Q6JwBE`x%+zm_$c0=zFdh*P%i!M8=O$W+2`F~ zxAnxm3~jI}L@?CzKCyTTgsezn&i5D>IB>jsguBVoL;ZpjdUr1xYR>=t@&50J$8UFV zs`}-N&5TR4Nn+Bt=8_0^NI$y5eKx={h+GyzrKUY7WCW{nvS-6Y#8$ua?WdfTL=m5*9GsKmay^4}%waqlijU{bmDxLtD zt>c#`5WR{lgh^;=pGxGrrl?!rSk??a=!4((!S4)=TQeN}r&IVE*ZZiA_c_luPra{_ zG9m*|uY1Yff`mh6tK)3niD&oR{s>pze(u@uT`p~_H^(gjzeVEmjS1zZ-XV90&+$JR#{Vd$s?iEJvk&4 z5ESyceG16s88DT{js{CblP^MJ-n0*PHB_EWOKx*?M7Y5z1)Z*6l_bvL1{R+3^1(V# z_?H5=L5Kz;TiiJU3S(0c<0lRqJKb&Z7@8|gQDpsDheIr`tN`eJ_kME8?wM>GI5%MN z^|2Ay>=TH|&lWZV-!%lqcP0%or?$} zKS^MK7Zh{7W|k@iTH3@};pYxO8yqW5G~8T0 z27)fCRn1j*7m0GQEPqsK)nR~~;*^Cz*dihm`CWMi*EQq(@0vpWc01*k4=r%K4mS^b)_M_Cxt7$E~{JCANqRK*Rz#WWX0x0>|iLE(`?{G zjvc`*Sa$b|W`kojz97|dgTR4-WcUEbXHCInY`O4cSqvCdmJ3f-6oBh;!4#AX6m#4) z^2f;Mg82HG)Qv!5dpO^$dkG z`LUd%f3Al-+Y|^{yQ1BZGZDd2hdRm zy6(feq%BVv|F0eT3Cr;m?uF?gk9U6plHAYn18g&4EUpspK3k8j1UV*SaPARKEhZB0 zcq6GDp4Wg8+$tU+gqpmEVbsa_t{|)^XG8rY&*gcY2#4RfO#cPzxZ|Xfq-C!n^c(9VUK!m`EEfIMgR*T~8IJ)Re zcsv>7_xAExbW!C=v0fQ;XhjLb9TrO$uuUiCjwkdBeTdL0yMrAoK9E;6XfUY~(cnPn1UUgIZQ zS*kh+0=%fdG|j?-{f>lWhM6f7DNchK%chvd2tt0wzLg>7>cHW4g=P7|^5VHc&dY{| zhK0Ff#_Oj)q)OUKbE+! zhE0s>emsc%SfasN-q??DRGDjh5c`qdlce?>#C|-e`|%+5V~HGV<;H$IsQd9C_9MMV z$>mn**ub~3A4`x~E%j~e#}aSWuod6fHFeL#j;Z@4c1ztWu~X`~6}zPFk=P-1f2g&d zwgM@%LvQnInC}qsl@o3CswL#Wev4zC;r)quL(yR5=GN%UU@m+bxZ9OF*7X70%Cr4d zYYI$dR~PsPOxt$ke5EB$(X>Qt;H)Irzzx){JViI!cSn4g4?PGAxCQJiI;a{XIw-pu zHy#CAcb{PFz9G}|R-Zp4K1x__IXPUV*x`j}>LzBle>$v>lz2qdy}I zpXXG84s*n)@^?^oQpg+TO==)cuymTqb8fh#JWGs!Ip^2?pt4Oh7&+fit<6rcS6{=S zrmWDd%MJKyeXz1K#jAYk>7xBcCa4fI#o1h42}cfbF9at1u?XPbO~-h$lp!YrT{HaY zUFs}*sn_%{A?k03S@b@g@~p@UXAuq3F#MLM0tL>x1AF4L!1FTCHAf+YF14;=|Z)`8r8k%n5r+> zDO8*1O}Ct^NX;E?dCDn6zM}}QXNKYAhFkpaU*@JrRhuqEMPR*WxwWsiKB`|sFvNvkm6O(~SGM8Wyc*<8z9MLta&COf$WpDI;yG6~8*?v~*RDvR ztG_O}1MEGPgD$DfeDI23!P!AOP<^AZz!6k3p)8|Tn8(=SgZOMd*(0Na^+2TYE;)G< z78{Te^jMqQiBsCdg4sx?NOOh;rc$SX501+igu=hxLuy>V-qnP`TL`-q^e#|XGiM9D zo|p+Un6K^&%f*%pa0I!}A3=*AzgddP{yE zY>C*C4|Z2U4;B(ghFanz{q8F0*9$4iM4QCcAI_!UT?PGmA;aCZ!R5sQn?oEC1O_6@ z7`Cks9x2#x&L2!F3Wx46FOOnt>=OUw zD!02SfE6NGyAEv8J;hAXw^WCWg2?-n`OS$vX|Sfc*cs~2fDMs5A3##_)?8f&-gssX0N?5E`{xdDd+BEo1{6;+-~Q;|<%nZVd@O$f!p6g?Wu|b7q9` zLQG5Eck&4C&M~K;I2)FZ+yj#}^y3<=eruKo2B$U(q^=V~)6`;!3nJtM@r2zb>6BA5 z7YZ7H%XF|ihfi-=u@nT$O=$ldggJJ0&a;c+3?Syyx#?O$+N*^C)*o=Fgw4*SNgEMV z0yAjGVKv#1JdT}N>g<5y+3bkS`nc!@3VRZiap=m0EI>$8HneS*7g*?=)H}W`wV_E{yF!wfu}QSQLLNuU062QG={r ztL^z@XA^XghtRy*-M)SfGD<7yIMr+Q#&;&~UCK974?mNQQI2mZm*0%2Qj zwVM(X2ypuPMb}C1k6qq1w&fpsg==FrO_Wfau%`Ld9tfd=Yw3*RN=%TkwB z4ffUFP4N6OxEx^>B+<}vExm1#oaviB^V%3`} zKS33}UI$#pjF~Mq@E$i`i<1^5N8?0+s=hyKuqhx6j-fdGgh^SR0|ZRj8Wp&q$C+GF zT?x1z0b13NF>IpW&|?xbu!|K`Td0d^l&w?`g3Z2iswQkc;&8=nkbWlDeD;*sPjiGX zXebj1us_(p#eay2)}jb;FaR!%R5yUtQ(`X_D$m3MX@9C5i2%Hq;X#`0%q_-VyS5m6 z@ES3{!pKm}sw-&A9;5>W3#M1FV0s1H1L9ch`=J6D(c{mE9(y=iKi*Tk2Ks+JXz1D+ z-wqSgkiT~PFAuI{H&iz#tXkjKqq!&GAT>!3tg46|B3as@z+{w);on~4e%b$v|9b`3 zt;~BW6dC&!dXFaHzou;pAK)n1UTp}o;r~&QotDZl@n6^@l)<54>I{x-ALhC< zRj{C>x0)GK6Lk9^5OpiZ+t*s%Hg(IlksmDI2u8~X(Rlf_q3}>$nprefFPa*!;YaHw zMxx!i49qL*@M1{X&284C?bhM0M@QzS6+*LfuziD5H|BbN;oe=1JQ zko}uq_HWw7UvY%(ZVrb3Wl#UrOTA#ys9K_!0j|I7f8Fzw ziY6D}11+F+Fv#|?Cuv(8>NY}AuZ?9*y^2UiYn)n-`SZtPKbTyq74lo}q4w%*yrd)FhGb3?;xrTIrxvgdZw%D{AW}w{)>i3b6a(uJV$vD2O zu5!^CsRysf#F*89hX`-b1{cBChU+aa8V)MufQc{5+#%^td<#6aN|Kj=kR;n&tkk&Y z;ZLt%`0EeJK|=oU3*oy#LY}UL@RtF?gFU}UGD0K=2~*o3RSpoo%^Z;&BupIjTx2!D zL5XLw^fFe1RL^(b(>QwL)mV5z2nK+q_k#i|i+@Z*Lv}INH$SN>(~~d-;{b4O?dOGB71g1jhM=2x?&^SgO~4# zpN~p^Llq4_WBpzgTy0p8SSJ$MlRNl9ge^d0c{IO(t=C$20IcVFXD_o2PNx_>#$mQ3F~_#qhJ&KVI6!w}kqLWE zR`f{kb{FQ@$|7+OHMCHS)l^rdAtttHscO2{n0ncXwdB=jEU(}GbU8D2toHSK6U*jh zXQXV>^3UC4NiHAfJv`~RI4K?6bTvChjGhsSqtzLLO^uS^&KdIe7!&Eg!BX%begyYg z9S`=e*6~1`GmI9~ts}l41Z~T`kIN2ocFOnD8V^)^m#-!|@VOryWa}Uy7%^Don#1(& z%ENFCSiE!O>ewB#Nn~lKF(h2wFWAW!SI?BEUYziCB6cG58qom0TYRx{RXs?T9KXq2EH;+=CvJF*D1gn~(Q@Q0vQ4114#Y2HMcv-l0 zq#SHz;wZ37Imi9jddJaPJ^Dy49Wf;6_={J7mEfan>2bhf3`ci;dBsZ^LV|dwxMktbiJ3oZD4o6x1+(rA|U=sGi zfJd`cCH$B`fXh2ak*pBjDD+4=4A1BETqYu>lXHH~hdpm`1Z(k+*m^WP=`h)jHAG`% z6zh7F4-<&j*j_msbs+|e@Dps8JrYFlp|E8eR0gWVvSV{E$pd73TNr)PshEjUV#M#4 z6OCDkUJNj)t5S1N>jNug_K~W_DRfAYNv9zmBx1hXKKFxb0~T8At-Wd`UrI0PcYq2g48{NwzW5r*r(Ow9_7B2NfigZ zJW*cLJRA5*hL{G2*p>mqC4Pvbr0@}=_5F{>2e`3^M|=$)K)~nkx7RQCS5FkSf;yCK zl*PS)`C#U!>lP(mr=P$qyn0D_E!YQb6Cpjx?2@aYkqI+^v>sI=+Xyb@Fmq|?Pt(K6 zr|J6rggy&9DFQfM=kR_4GI0Yb%ETm60FvNDmJMtU!b$nkGUVO6ipFzTjedXk>CM6K z@1}?JF9KXzdadbLQNuCq6cqb+C_rkIaKe%a@bxRfub4Up_RjP3-H$JKxA!;5^ZD`d{`TsDe*OL97Jsf0 zjYR**ROKimM9M$D;K$A5i^LJQ{dzzDcJ=jkH6v@2+Xwc+_~rib>Iag4T-|>W4)lv# z{m0eA&Hb$a5wZeA`1jX$_E%~S(Dxry1^J=W?8))*>V_g1%n|Mb_>h`w_>9M|#|Y^{ zxUY-bKX31k@2|c-Bl-P_gON~BkuawOo{FKr)z{!ht z(Tmib{&3~xhtwWnLxky{H{Y*bHZM<9Gj9B!k9X+Bv#Yy@=_A5*{DqP!v3Pv^PQSi? zzr8s|tPT48^q-gS)5m*?vaLdSl!sy3=0L@Heq8@CfB5o< z?6=>hf4n>(It+eYY$YTFem*|^J%9NA@?-Pk>6YTQG@$7{La21$=TCQkB4&p$fC zA;9+O3Qkj>Zw>PF?dl#M3dR6AR5wnpKIY<$(qVMX#tyPu6hwcJot^KmejtX-H6pQK zYVv&_iVdj=>qqt=KxVF|Eopa82GXV}SR|{rymXMpRt};rjg;FuhFHQ3GR0xoeU! zHp6u=E(7Bk3$l)^`nN|iRu|wpV;i|BMUTly9SqgWHe6;~mi35#mIernDdHNo(y(|q zWav}R1Z{U`e5Wy)psly#pRvVbFM8hhDjZ-==PiwpvmTPB49FG&J-&P3Ek$-1ft}p` zIDdM?9{uC*2;MYc1RDb%{JX&%eZiKw`c6GLdBXX~e<};cxU3}D*~5>gzl~HSE5(qQ z6?5v&F4&W&#}^1}l0b88gN%|4&_M{Yo(Le{e42I5JE5SCR$koc8=N3PM_~GSXmWpm{B?`%*wa%!2$ZBqf1WD%4&GYhrn{#)l=0r;#tr<2Gz4j9Kr`j<~lz(b6+pCZ$r;|wH~`|Sni zlK(mR?dA3b<*#v+!@sv!S|6_^&-(T&NxuAN`uOcT4l_Cl7^L5r{QmRmeyWEt&2e^x z6N=N{tB4Lk`|%!QOGNTZTV+Y-Dp+qK>urwLI0KW(WJ!^~OHScaatwY)xPEOQTyO+| zP07w#N|JLWc9vkw_0(N4^I7B?mJ5rDvJV?f|{8xC%mnIL`NSg1CL(5 zefwL#41*aXV@kx|um1Zm{p0Tb1|Q$cccmbpeRlNQ8vFF;_Uh>?&s3J^&qPTD!w$eJo1_P8Fzd zrI&DaM}GVZQ9^!Dw>*A@c)xu7arXsZ&h`;YzjgxsWT6A#r>lo&tjRi4k$nCG!%m~` z+8_B`JjqkqQp)k^mMZXqr4|!YVGy0BRto(V>5-89a|%_Hl?vF=?dKQ!GKt29g?_#~ z+(5_kK*Otb$xxBdC|CUTjCez|T?!m~rD%v#k~NDuXOLaAi;_ithgzTCzkI!e&X5?$ z?*>Wx?>%HS$beE@sgLGRf?QX@?H*ouqC5MYC3P>OOx&TWu_ZAdPa9ptiD?o(G%XJ} zXZ!P`^9;k48woR!j6r_8-^0x(Zx8x#l6os%u}GD+ltSe#O1(YEO|Y~z0qLd*1`AC{ zpsEQOSDH}6tqB=^`To~^2jh(cb!eQVtnzrxna0P`0nd#K4FO33RSn6w(vTW%)y?qO z5MV;3C1sV$RhE?FLN4ME;Vw1r7Asu-mWG!klXKGeSb{M)8$r2z2aT?;fNqPZrd$cryn8u5=2;x0%Q9=Ra^j&BN7 z46CjUQc^j5L?_wm{`>viXIgxoAa0RFnbVpf1EKBzMz?eXJ-WTFGDnDJM?_8b8j43C zWKjPun*2K=^d<4g1n_{~0jo{MX1`mL!_|_F%AJz~M+Gh>aN|y) z(b(TX7ntgq>G!D_2)j2&KQ4D?#79#Ibn2<;a=Ye6FzyJ3CEW9p+QN|`9LVmD)nHCJ zAbi(3T>}&2gar@(&gn4&N8lKK&YdcMG? zD3N~AwhkdaJeuTPoMw;cj}zF?l~NG9nxZX{nO9+vX+i;P%~Yp1cq|4RHD$mg%#qys zFi!z}g2PN62yzI*M&dx5kum>-f#G7I-|Upk4JGAW8DX*i0LN%kAa`OjU94b!2j8va zu7nJn2?%GPpo&ZKYA`w0YHFIAgBYbk0k5^|84Mq((^H$+Vh|Y}su|e) z4sSMf9q~L^Uf@Ic)c7hHKgNoz<#|>`6?enJP(C|&56AMCSXAF*okPB-G6vp~m@f~6 zlPvL0RYI0}yVn-o(!bMEVEz(KkQlLHCU_Ye<3jxfAQe^f)VXFnlDaTzQ+y4PYpCZ4%l=V%bZj0}xIK)bsmT#{g zzgLLVX+khI4X!auz|1Y9VxyUzPD}P;BrjXi);>UUN`9q%{~sV)%(q+G+f7V}WXst{ zTF=-OGlb?())1{uLQiQm8_W#*$pxOk4-*)c%x>2dA)ZK)*q!WHw&xU0?W2iSgM9KH z?f<=7hihJ~^CYrozJ?izPX8g@je}<^K4HPX!{{2@~1EL`J9}xe-{uX!9eBca?(B3$$cO zj0zQsCa46THLP1+%O(!yewI3SdBYn9qZ(wD6c0CJ9_`9`~F_lEZS!Vlq;TFW6qVHGwU4CY2ba?`a=UJ zNuL)%pG#C~p2{+H)LfI~2{f#oKARbKp4}z#PH_mthtK^DcaGhOL?yrv=>YP4Lhc|> z=XjelyPUI=k2q*hGdP|Hj^BB7C|1j39H_g)AUtN5GX$~MhaxS55eyx#M;ODYE6(79 zjM2xU5Xb`}m4Y9dvpJuQHe*Ft7mn1zNCqaF6bC_Uciycl`KL!P#a;EysN4EnbzZ~q zZikm1QUr)o&zeX)eZq(9DMjdz9@mwzO6C>bR?l`fsWF}1s3GB5kEw+S9$|7BS+fZm z;uPu$Is)^fv7^}r!Yc$=KEm=x*rk)NM|DucWKgQj)~X{Mqhd8n-Bqb#m{=-V&^O(! z6SRf&l!!K6UopFcdU_bHkn|+x8BPbIwc0>lEdoimux1T5Dpmw=Kh{MsruqOm6y1_S;icSaQE9MO)9^A(V-T`pSYZ zbo2@OL|h-Lpn~`grN*wg7w#co089`1%${oOFEjp1k562&fPA z{(P8-jF3l*(Y1Y;0~8E4S6W6V7snf@1E(Lb!?akOABgWDVyK5$a+*?H!;et^AUN0s ze~?uj0~PIy10|6Vrb~F0AJ^4OiT_R$b4IaO+L~q}PQ6BSzFLqBJz5&C;Xg%$F9z56 zvVFh8as|7t@nUz&S6hI~sXequW1KMeu|m!#vP1Jh4cd@7T>uQ$u-df7NclwLyU8HO zKsGS;a-Vv#UhO&^BS^9~IM^ z8u%6+RmI+k?6$MUQ;)Rl!dx^oOiKduBL@*2*d6QU&PYUjPFSU!Un4rKBH_Uy$F2R0TFtudSf zBI7!V?+n!yQtj;aq@gbb@rRvcMKvVFz4%4=&J?P~RrnU80-395>L6BoRFHI1!|lH) zj?jeqnC3TD!hlS7WPP)C;=D+p6L{pzAY9_nAvEN}?F*k%1IRBm5=^WQ0|=j~3rJER zt7$X)Iho(aOdIHWGH9_X(y8z{qYRmdHd90lCQI-N(V@lk^@%7Pmn*p!3^iFI&Ky~t zCD7*F7kA5ulSoaqZQ8KBtQ$%bDCaw$v-&QSw_Y7rytkLz!wso!nTp2U^iB+jG7$aF zGln6}Tu~Ef$xlZfQw0}DCr`4FRLTOYc?3+$iwpiV2CjnMIqNj zlR3Kqp=O}q39ewMcJ)m56G+^$L(9kRS8Z4-9(mW#NYQEdI-QZ}@S0ILML=tmPGp%t zkwsiF^ib!e)ys(K$|j$o4a0_>vQzjJO$Jfc83~w&B%_*&!L|+N(tK1OT;dZ=S?Cch zkD@!N5dlvM20<i5QmAy9JvaC2(~BV8H`?p#^|}w>6xhJVJ>x2{1KV zf^p0hD6dlX4X!8UT20Dl!cS+1D?D-_zkj~da$!aN32HLsjP`EAw}!?6X>iqu5IzlA zVVS@+&x}k=`98$go09UgUInuAA`IsF*&6h%6Y4Qds{l;<2SMNyFx_Dr8flzry$G0bHw8>