230 likes | 366 Views
AGL Theme Engine. Sponsored by Azingo Soft System. Project Title : AGL Theme Engine. Internal Guide : Prof. Rekha Kulkarni Sponsored Organization : Azingo Soft Systems India Pvt. Ltd External Guide : Mr. Rajith Noojibail Mr. Sourabh Yerfule. Problem Definition.
E N D
AGL Theme Engine Sponsored by Azingo Soft System.
Project Title : AGL Theme Engine Internal Guide : Prof. Rekha Kulkarni Sponsored Organization : Azingo Soft Systems India Pvt. Ltd External Guide : Mr. Rajith Noojibail Mr. Sourabh Yerfule
Problem Definition Write a clutter theme engine for theming buttons, scrollbar, image and other widgets by making use of libccss and inclusion of animation using the json files.
Background • ThemeEngine ? • ThemeEngine is a library of components which allows to change visual appearance and behavior of an application. • ThemeEngine allows to use more than one theme in a application. • ThemeEngine includes an easy-to-use non-visual component which can automatically adjust the Color properties of any components. • In this way you can easily adapt any components to the new interface.
Continued.. • Toolkit ? • Toolkit may refer to an assembly of tools. • Like a GUI toolkit is a set of widgets for use in designing applications with GUIs. • Clutter Toolkit ? • Clutter is an open source software library for creating fast, visually rich, portable and animated graphical user interfaces. • Clutter uses OpenGL for rendering with APIs which hides the underlying GL complexity. • The Clutter API is intended to be easy to use, efficient and flexible.
Continued.. • COGL ? • COGL is a low level OpenGL abstraction library developed for (and part of) Clutter. • It is used primarily by Clutter to provide a common rendering APIs. • COGL works across OpenGL >=1.4, OpenGL ES 1.1 and OpenGL ES 2.0. • Tidy ? • Tidy implemented on the top of Clutter, Tidy provide high-level classes that Clutter won’t provide. • Tidy is a simple library containing some useful features, different actors and interfaces which can be used by applications developers.
Modules needed forAGL Theme Engine Module Version • Clutter 0.8 • Tidy 0.8 • Libccss 0.5
Capabilities of Project • It is able to provide run-time theming for tidy widgets. • The theme engine is easily pluggable to any kind of library (currently targeting tidy library). • Also the themes have capability of installing themselves at appropriate locations. • Tidy painting does not get affected as our agl_paint is called before tidy_paint. • It is capable of handling states like button press active/inactive.
Continued .. • The theme engine will switch from one theme to another using css, json files and images. • Our project has come up with a combination of tidy widgets plus css and json styling. • ‘css’ is used to give the look and feel to the various widgets. • While ‘json’ is used to give animation • Just simple change in the css and json files will change the look and feel without recompiling the whole program.
Requirements • Hardware Requirements: • Desktop • Embedded systems having ~500 MHz processors with graphics acceleration (should be portable on handhelddevices, tabletPCs etc.) • Software Requirements: • UNIX OS (UBUNTU) • Clutter toolkit • Area of Project: • Middleware
Internal working: • ccss • The libccss library has its own parser. • Every css file for a particular theme has a class for individual widget. • Parsing this css file and moving the content to the global structure is done by libccss. • tidy • Tidy library provides various widgets • Each widget has its own class and applying themeing to the class gives themeing to all the widget derived.
Continued.. • cogl • Cogl functionalities are used in painting of the themed widget. • json • Json files are used for the purpose of animating tidy themed widgets. • You can apply timelines and behavior like rotation, path, scaling etc.
Block Diagram Parse css (using libccss) Extract the properties Pass data to respective widget Input Output css file Themed Output Apply properties (by AGL on tidy widget) Apply Animation to individual widgets Paint (using cogl)
File Design • Every widget has its own .c and .h file that is been accessed by the application program. • With every theme there is a css and json file associated that keeps track of the theming elements. • As a whole the output agl comes as a installable library.
Scope of projectTheme able property of widgets targeted • Button • Border-width • Border-radius • Foregroud-color • Background-image • Foreground-image • Scrollbar • ScrollBarBorder • Foreground-Color • ScrollBarFgImage • ScrollBarBgImage
Scope of projectTheme able property of widgets targeted • Fingertoggle • FingerToggle-Border-Width • Foreground-Color • FingerToggle-Bg-Image • FingerToggle-Fg-Image • Fingerscroll • FingerScroll-Border-Width • Fingerscroll-Border-radius • Foreground-color • FingerScroll-Bg-Image • FingerScroll-Fg-Image • FingerScroll-Border-Image
How is AGL usefull for 3rd party applications? • AGL provides complete theming for 3rd party application . • Application may have a css file and a json file that will provide • Easily platform changeability by simple changes in library. • The css file is in standard format so no extra knowledge needed to write it.
Use Case Model For getting data For selecting theme
Constraints/Limitations • The libraries change with the platforms. • So the libraries turn as a limitation and need to be upended with change in platform. • Eg : Fruity is used in the Mac OS. • Tidy 0.8 is not compatible with clutter 1.0 which has many pre defined animation functions.
Application • It is designed to use OpenGL as a back-end, so applications can benefit from hardware accelerated rendering in Desktops. • OpenGL for Embedded Systems (OpenGL ES) is supported, making it a choice on slim-CPU mobile devices such as Nokia's ‘Maemo’ tablets and ‘Moblin'snetbook Linux distribution. • AGL ThemeEngine includes hundreds stable and easy to use components for create great-looking applications.
Conclusion • An improved visual appearance can be provided to GUIs by providing a theme switching architecture. • Theme engine is designed to manage a GUI using a theme described, at least in part, according to a theme file. • We can provide the theme engines for the linux based systems as well as linux based mobile phones too.
References [1] For clutter : http://clutter-project.org/docs [2] For Cairo graphics: http://cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image [3] For Gtkapis: http://www.gtk.org/api/2.6/gdk-pixbuf/gdk-pixbuf-creating.html#id2674681 [4]For clutter tidy: http://www.clutter-project.org/blog/?p=41