Free Open Source SoftwareThe Ecere SDK is released under a revised BSD license, also including the eC compiler. Documentation
Cross-Platform API
The Ecere SDK provides you with a uniform object-oriented API allowing you to write an application once and deploy it across multiple platforms.
The API is accessible through the eC programming language, and we hope to eventually provide bindings to other languages as well.
Code written in eC can easily be mixed with other languages such as C and C++ in the same application, and as such it is also currently possible to write bindings to most languages
through an eC glue file which can export C functions.
Supported platforms include Windows, Linux, OS X, FreeBSD and Android.
Support for iOS and the web is planned as well, and development towards that goal has started. Graphical User Interface
Our GUI toolkit allows you to build interfaces with clear and concise object-oriented code.
Layout and styling is done through setting object properties.
Look and feel can be implemented and customized by overriding objects' virtual methods.
Handling notifications from controls (widgets) to their owner (typically the form) is done through overriding events, a special type of virtual methods.
Events can be specified directly on the control without a need to create a sub-class, thanks to eC's support for instance-levels virtual methods.
2D Graphics
Our 2D graphics API centers around a simple Surface class, offering support for easily drawing pixels, lines, areas, bitmaps and text.
For integration with the GUI toolkit, a Surface object is automatically passed in the OnRedraw callback for a control or form.
It will run on a number of drivers including the GDI, DirectDraw and Direct3D on Windows; X11 on Linux/Unix as well as OpenGL / OpenGL ES on all supported platforms. 3D Graphics
The SDK also provides a 3D rendering API, which works on top of either OpenGL, OpenGL ES or DirectX.
The library provides a linear algebra mathematics library including vectors, quaternions, matrices and planes. Networking
A Socket class is included for writing low-level networking code, supporting either TCP/IP or UDP.
The Service class is used for listening on a TCP/IP port.
Incoming data will automatically be buffered until enough bytes have been received and it is ready for processing.
The sockets processing code also optionally queues all incoming communication to the main application thread, while running in a global communication thread, or can be processed individually and manually by the user (e.g. in its own thread). Database Access
The Ecere Data Access (EDA) API offers an object-oriented approach to interacting with databases in Ecere applications.
A database schema can be laid out in code which will automatically initialize a database and provide the mapping to any eC data types.
An object-oriented syntax (record.field) can be used in eC code to access fields of a table, and walk across tables through chained foreign keys. Development Environment
The Ecere IDE is a complete development environment for editing code, managing and building projects, as well as debugging applications.
It is written in eC with the Ecere GUI toolkit.
It is a general purpose text/code editor, but at the moment it is mainly geared towards C, C++ and eC development.
We hope to improve support for additional languages, as well as extend its level of customization.
The IDE can run in either GDI/X11 or OpenGL mode, and is available in English, Chinese and Spanish, nearly fully translated to Brazilian Portugese, and
partial translations in a number of other languages have also begun.
Code EditorThe code editor features syntax highlighting, context sensing, auto-completion, auto-indenting, parameters and instance members tooltips. One of its interesting auto completion feature is automatic method overriding completion with prototype correction. Space errors in code are also highlighted so as to keep git repositories happy and clean, with a menu command to clear all trailing spaces. ProjectsA Project view will let you add source code and resource files, as well as organize everything in folders (either mapping to the file system or virtual). Multiple configurations are supported, e.g. for Debug and Release mode. Build options can be specified per project, configuration and platform. Additional projects can also be added to the workspace, e.g. for dependencies. When building a project, the IDE will report errors in its build log where double-clicking or hitting enter on a error will bring you the problematic line in the code. The build system is described in more details below. DesignerA property and method sheet accompanies the Object Designer, which is used for the RAD Ecere GUI Designer, but is also an extensible framework which could offer IDE integration (within property/method sheet and Object Designer) for other toolkits, including your own. Methods can be overridden, detached, attached and deleted from the method sheets, while properties can be edited in the property sheet with instant visual feedback within the Designer. Similarly, editing through interaction with the Designer will have its changes reflected in both the property sheet and the code editor. DebuggerThe integrated debugger is currently a frontend to the GNU Debugger (GDB). It supports comprehensive stepping options, breakpoints, expression watches, an output view, a call stack panel with frame selection and a thread selection panel. Additional library projects used by an executable can be added to the workspace for seamlessly resolving paths according to the selected configurations. The debugger also supports breaking and resuming at errors reported by Valgrind under Linux. Documentor / API BrowserThe IDE provides integration with the Ecere Documentor / API Browser (F1 from the IDE), a tool for documenting and browsing documentation of eC class libraries' APIs. Classes within modules are automatically organized by namespaces, and an hyperlinked interface for browsing through types (classes), data members, properties and methods is automatically generated. In Documentation mode, text can be added to document all descriptions, parameters, members with sections for usage, remarks, examples and 'See Also'. The IDE integration and Documentor itself will see a lot of upcoming improvements, including Search support and F1 lookup on keywords within the text editor, generating HTML documentation, and highlighting documentation differences against newer code revisions (removed/deprecated API, as well as new APIs). All documentation information is kept separate from the code (typically header files in C/C++), first because eC libraries are self-contained and are not packaged with header files, to avoid cluttering the code and as a mean to facilitate contribution to the documentation by a wider range of people, including technical writers and API users, while at the same time staying in sync with the code. UtilitiesThe IDE also features some useful utilities such as a Find/Replace in Files tool, a color picker, an image viewer/converter, a 3DS model viewer and even a built-in rubber duck for Ruber Duck Debugging.
The Ecere SDK offers a comprehensive cross-platform build system, evolved from the Ecere IDE's project files (.epj).
The .epj format is based upon JSON and describes all source code and resources files required to build the project.
It also describes a project's multiple configurations and their associated build settings.
A matrix of files, configuration and platform, with strict inheritance and overriding rules, establish the build options for each file node.
The project settings also offer pre-build and post-build rules as well as install commands.
The build system supports building projects including any combination of C, C++ and eC, and will likely be extended to support other languages.
|
|