Overview .. Features .. Design .. Technology .. Downloads .. Support .. | .. Store .. ..
 Technology    



E/OS Cache Kernel

EOS is an operating system developed from LINUX and FREEBSD, this means that it has all the characteristics of CLIENT-SERVER more compilant POSIX support, which makes it possible to carry a number of native applications any UNIX system into our system, almost unchanged. Moreover EOS has its own c library, the same UCLIBC c library is a very small and very powerful, allowing us to use a few system resources, as well as gaining speed stability.
On the other hand one of the objectives of this project is not to use the resources of the regular GNU environments, such as may be the GNU C and the GNU LIBC, both projects are replaced by the compiler and C library TINY UCLIBC, however provides support to be able to work with the GNU C compiler, which it is possible to link files developed in C + + (CPP).

Features of the system EOS

EOS as previously defined has POSIX features, however has developed a kernel itself on the theory-CLIENT SERVER, this implies that there are different servers that manage and provide systems resources, such as graphics, hardware control, output signals, tokens , semaphores, and so on. And on the other hand we have customers who are using the resources given by the server, which then sends information to be decoded by servers who were ordered to return the result of the operations.
In the case of EOS we find a kernel acting managing resources through clients, who work as independent modules that are stored in the cache system to be able to access their data from other programs, for example would allow from a box that can call other programs box, or remove data from a box to another, thus bearing a fully interactive multimedia.

Features Cache Kernel

The kernel EOS is a virtualized kernel, which acts and works as a program, it is charged with being a cache for programs giving all virtualized resources for the implementation of applications for BOXES emulation, where virtualiza system processes the CPU that will be read into the system. Therefore we can say that EOS acts as a resource manager, apis and emulations, which gives each program so this is necessary, without putting processes in 2nd tier, which means everything is at the same level under the same cache system.
EOS itself works as a small kernel, which in itself has no drivers and extensive resources system, they are granted by the GNU Firmware which is a sub EOS project, it is a program that emulates and simulates a Smart BIOS, allowing EOS start in his machine natively, taking control of all resources.

Features graphical environment

The graphical environment (GUI) is characterized by being integrated into the kernel and EOS having control of resources and tasks, we can change our taste, on the one hand we can change the appearance of the graphic environment to develop libraries that altered as seen and feels the system. On the other hand we can modify functions as EOS is managed, or the ability of the system to initiate programmes to that end we will develop our own emulations, and virtual desktops that may make easier the task of developing low EOS.

Operation of emulations

The emulations EOS are encapsulated in BOX working as virtual machines that allow optimized to run a pseudo operating system under EOS, which makes it possible to run applications from other systems and architectures natively. As well can install peripherals EOS not noticed but has drivers for another system. For example, you have a webcam EOLITE and wants to use it but not the EOS supports, but you have their drivers drive, simply start WINBOX be able to install the driver in the BOX and then use your webcam in the BOX, Through programs native Microsoft Windows, without the need to return to work with Windows or having to take the operating system on your PC.
The operation of BOX is based on open source code from different projects, in the case of this WINBOX developed from the project and REACTOS WINE, allowing use a BOX that looks and feels like Windows, with high performance, without losing speed and allowing drivers to install their own windows, without the need to have it installed or having to continually update their Windows or run the risk of bugs or viruses on your system.
Some of the features of this system is the possibility to develop in them, but this will depend on the SDK each operating system, in the case of BOX need to have more sources of EOS complete compilers ported for each operating system.
You can also use the QBOX sources to develop native drivers and utilities that allow access to the hardware and not the actual emulated.

GNU Firmware

GNU Firmware is a sub draft EOS based on the source code of Linux, QEMU, VIRTUALBOX, BOCHS and OPENBIOS, it tries to be a replacement of similar programs grub and initialization of operating systems, such as XOSLD, it is an initiator operating systems fully configurable and with a graphical environment.
Although in this case only EOS start looking at any type of machine, regardless of architecture, which has, allowing to have a unified architecture for development. This would allow you to start a machine EOS PowerPC, SPARC, ARM, etc., without having to make changes in their programs or changes in the configuration of EOS.
GNU Firmware works starting their machine, loading all drivers and modules to operate all of its peripheral machine, and then sends the data to initialize kernel you want to give it "generic data" that will have the kernel to boot, this how you can get support multimedia, 3D acceleration, and other routines of his machine with optimal performance. And not only can configure GNU Firmware to initiate and install EOS, but may initiate other operating systems, and even do not have to restart your machine real way, because when you restart each system, the GNU Firmware this again, however may a real restart your computer or simply turn it off.


GNU Firmware Features


-- Accelerating 3d
-- Detection and installation hardware
-- Setup and installation of new operating systems simple
-- Creation of virtualized and memory units for virtualized operating systems
-- Support units particionacion
-- Protection of networks
-- Hub virtualized
-- Services pppd, ipx


Introduction to UNIX


UNIX is composed of three parts that make it functional, they apply equally in EOS.

1 - The Kernel:
Is that manages system resources (terminals, printers, disks, etc..).

2 - The File System: (file system)
Is that organizes data.

3 - The Shell:
It is a shell of UNIX. Although there is more than a utility, is the part that the user sees UNIX (the user interface).

It is believed to UNIX as an interactive system, multitasking (in every sense of the word) and multiuser; processes can be sent to many users at once.
Planning for the CPU becomes priorities by using an algorithm (although some versions as 4.2 BSD used a paging system on demand). This system is identical to the functioning of multitasking in EOS through paging on demand.

Introduction of EOS SCRIPT


Within EOS there are various forms of development, one of which is through SCRIPTS, the same source code are to be interpreted and permit applications, games and utilities, and it is even possible to develop drivers or external modules.
In EOS 3 systems may find that SCRIPT below describe as their usefulness and importance:

BASH
HTML JAVASCRIPT
FENIX

The language interpretation given by BASH allows small programs bacheo that allow you to configure your system, running various services as well as putting different environment variables, the system is generic and does not employ functions "general" EOS own, but a standardized UNIX.

The HTML-JAVASCRIPT is granted by the program BeLinks, it is web browser officer of EOS, where you can make a few small steps programmes for their system. They were developed from a plane in HTML language through classes and definitions specific to the HTML language, some observations are that this language SCRIPT has many limitations, the first figure is not entirely as it is a mixture of text with images , and on the other hand does not allow callers to develop applications without binaries "extension" so that you have to have registered all extensions to the time required to run an application.

FENIX The language is a more complex script, it works with 2 sides, a compiler and an interpreter. This language does not generate binary, but an intermediate code is then interpreted, and allow you to develop graphics applications, utilities, games and configurators 2d and 3d.
It is a very simple system development based on the language Pascal and C, which makes it very practical so that it can develop quickly in EOS, albeit a novice in the world of programming, allowing hear appeals UNIX and learn advanced programming. This language has no limitation, since even make it possible to expand bookstores domains, and even develop great games. Only limited to the use of a single code without compilation withstand multiple objects, however it is possible to have multiple inclusions codes external sources.


The Functions Primitives BE (BASIC EMULATION)



Within EOS will find primitive functions that are responsible for controlling all functions graphics and peripheral functions within EOS. Therefore with them can generate programs that use less memory, or are faster. As well may access the core of the system if he wanted to make changes, or put a task with greater dominance within another.
Within these functions will have available sources truetypes control, the control of images bmp, png and xpm, basic graphics routines (such as lines, vertices, squares, etc.), mora imeti routines hardware control (you can control the system exits on your keyboard, mouse or other peripheral), controls rendering (in the case that seeks to make visual effects), and alpha blending routine and collision detection (useful in the development of games).


PRIMITIVE FUNCTIONS


Within the graphics system found a number of headers (inclusions), which will detail below explaining their functions:

AppServer.h
Head to access functions within the server AppServer, utilicelas just in case you want to make changes in the administration of tasks, or graphics native of EOS, you can also use it if you want to improve or add new functions to the system server administration .

B.h
Head principal, allows access to all functions PRIMITIVE DESIGN, which allow to control functions KEYBOARD, RATON, VIDEO. And given the functions required for access to drawing functions, control areas, block detection, detection of collisions, search paths, writing on the screen (using truetype), features images (PNG, GIF, and xpm) functions networks (SOCKET, PIPE), functions sprites (PNG and XPM), cursor functions, features windows, scroll functions, and functions draw 2D. All functions are encapsulated in this EOS HEADER the same works in a similar way to Direct X, as it is based on providing services accelerated write on the screen, the more useful functions for the development of 2D video games, you may want to use higher profits SDL games if you want to get further development.

B_.h
Head functions that gives access to service customers via sockets provided by the AppServer allowing access features PIPE and SOCKET.

Helper.h
Head of the project which gives HYNTH functions native drivers for graphics, mouse and keyboard, are all the controls and functions necessary to make drivers alter functionality AppServer, or optimize.

Ini.h
Functions reading INI files in the style of Microsoft Windows, very helpful for the development of applications that can be configured by ini files, it is easier to use the functions of state ini owns header "Bh.

Mem.h
Functions control memory, allowing back segments and duplication of memory segments. Very useful for developers looking to optimize their programs or games.

Oskit.h
Functions Primitives drawing on the screen in C + + based on the codes of the project XYNTH.

Png.h
Head including the extension of PNG image, allows working with PNG image formats and coding of images, besides serving as the algorithm for development of graphics functions.

Pngconf.h
Functions configuration used by the PNG image format.


FUNCTIONS OF GRAPHS EOS (list and description of duties)


DEFINITION OF KEY


Then list all keys that provides support EOS, how to use them is calling them directly by the following variables:

B_KEY_ESCAPE,
B_KEY_ONE,
B_KEY_TWO,
B_KEY_THREE,
B_KEY_FOUR,
B_KEY_FIVE,
B_KEY_SIX,
B_KEY_SEVEN,
B_KEY_EIGHT,
B_KEY_NINE,
B_KEY_ZERO,
B_KEY_MINUS,
B_KEY_EQUAL,
B_KEY_DELETE,
B_KEY_TAB,
B_KEY_q,
B_KEY_w,
B_KEY_e,
B_KEY_r,
B_KEY_t,
B_KEY_y,
B_KEY_u,
B_KEY_i,
B_KEY_o,
B_KEY_p,
B_KEY_BRACKETLEFT,
B_KEY_BRACKETRIGHT,
B_KEY_RETURN,
B_KEY_LEFTCONTROL,
B_KEY_a,
B_KEY_s,
B_KEY_d,
B_KEY_f,
B_KEY_g,
B_KEY_h,
B_KEY_j,
B_KEY_k,
B_KEY_l,
B_KEY_SEMICOLON,
B_KEY_APOSTROPHE,
B_KEY_GRAVE,
B_KEY_LEFTSHIFT,
B_KEY_BACKSLASH,
B_KEY_z,
B_KEY_x,
B_KEY_c,
B_KEY_v,
B_KEY_b,
B_KEY_n,
B_KEY_m,
B_KEY_COMMA,
B_KEY_PERIOD,
B_KEY_SLASH,
B_KEY_RIGHTSHIFT,
B_KEY_KP_MULTIPLY,
B_KEY_ALT,
B_KEY_SPACE,
B_KEY_CAPS_LOCK,
B_KEY_F1,
B_KEY_F2,
B_KEY_F3,
B_KEY_F4,
B_KEY_F5,
B_KEY_F6,
B_KEY_F7,
B_KEY_F8,
B_KEY_F9,
B_KEY_F10,
B_KEY_NUM_LOCK,
B_KEY_SCROLL_LOCK,
B_KEY_KP_7,
B_KEY_KP_8,
B_KEY_KP_9,
B_KEY_KP_SUBTRACT,
B_KEY_KP_4,
B_KEY_KP_5,
B_KEY_KP_6,
B_KEY_KP_ADD,
B_KEY_KP_1,
B_KEY_KP_2,
B_KEY_KP_3,
B_KEY_KP_0,
B_KEY_KP_PERIOD,
B_KEY_LAST_CONSOLE,
B_KEY_LESS,
B_KEY_F11,
B_KEY_F12,
B_KEY_KP_ENTER,
B_KEY_RIGHTCONTROL,
B_KEY_KP_DIVIDE,
B_KEY_VOIDSYMBOL,
B_KEY_ALTGR,
B_KEY_BREAK,
B_KEY_HOME,
B_KEY_UP,
B_KEY_PAGEUP,
B_KEY_LEFT,
B_KEY_RIGHT,
B_KEY_END,
B_KEY_DOWN,
B_KEY_PAGEDOWN,
B_KEY_INSERT,
B_KEY_REMOVE,
B_KEY_PAUSE,

The following keys are using shift key pressed:

B_KEY_EXCLAM,
B_KEY_AT,
B_KEY_NUMBERSIGN,
B_KEY_DOLLAR,
B_KEY_PERCENT,
B_KEY_ASCIICIRCUM,
B_KEY_AMPERSAND,
B_KEY_ASTERISK,
B_KEY_PARENLEFT,
B_KEY_PARENRIGHT,
B_KEY_UNDERSCORE,
B_KEY_PLUS,
B_KEY_Q,
B_KEY_W,
B_KEY_E,
B_KEY_R,
B_KEY_T,
B_KEY_Y,
B_KEY_U,
B_KEY_I,
B_KEY_O,
B_KEY_P,
B_KEY_BRACELEFT,
B_KEY_BRACERIGHT,
B_KEY_A,
B_KEY_S,
B_KEY_D,
B_KEY_F,
B_KEY_G,
B_KEY_H,
B_KEY_J,
B_KEY_K,
B_KEY_L,
B_KEY_COLON,
B_KEY_QUOTEDBL,
B_KEY_ASCIITILDE,
B_KEY_BAR,
B_KEY_Z,
B_KEY_X,
B_KEY_C,
B_KEY_V,
B_KEY_B,
B_KEY_N,
B_KEY_M,
B_KEY_GREATER,
B_KEY_QUESTION,
B_KEY_F13,
B_KEY_F14,
B_KEY_F15,
B_KEY_F16,
B_KEY_F17,
B_KEY_F18,
B_KEY_F19,
B_KEY_F20,
B_KEY_F21,
B_KEY_F22,
B_KEY_SHOW_MEMORY,
B_KEY_F23,
B_KEY_F24,
B_KEY_SCROLL_BACKWARD,
B_KEY_SCROLL_FORWARD,

Now with the alt key, in theory is combined with alt "in theory eye:

B_KEY_CURRENCY,
B_KEY_CENT,
B_KEY_HEX_C,
B_KEY_HEX_A,
B_KEY_SHOW_REGISTERS,
B_KEY_HEX_7,
B_KEY_HEX_8,
B_KEY_HEX_9,
B_KEY_HEX_D,
B_KEY_HEX_4,
B_KEY_HEX_5,
B_KEY_HEX_6,
B_KEY_HEX_E,
B_KEY_HEX_1,
B_KEY_HEX_2,
B_KEY_HEX_3,
B_KEY_HEX_0,
B_KEY_HEX_F,
B_KEY_HEX_B,
B_KEY_USER0,
B_KEY_USER1,
B_KEY_USER2,
B_KEY_USER3,
B_KEY_USER4,
B_KEY_USER5,
B_KEY_USER6,
B_KEY_USER7,
B_KEY_USER8,
B_KEY_USER9,
B_KEY_USER10,
B_KEY_USER11,
B_KEY_USER12,
B_KEY_USER13,
B_KEY_USER14,
B_KEY_NOCODE,
B_KEY_CODES


CALL THE VALUES OF MOUSE

B_MOUSE_RIGHTBUTTON = 0x00000001,
B_MOUSE_MIDDLEBUTTON = 0x00000002,
B_MOUSE_LEFTBUTTON = 0x00000004,
B_MOUSE_FOURTHBUTTON = 0x00000008,
B_MOUSE_FIFTHBUTTON = 0x00000010,
B_MOUSE_SIXTHBUTTON = 0x00000020,
B_MOUSE_RESETBUTTON = 0x00000040,
B_MOUSE_WHEELXBUTTON_U = 0x00000080,
B_MOUSE_WHEELXBUTTON_D = 0x00000100,
B_MOUSE_WHEELYBUTTON_U = 0x00000200,
B_MOUSE_WHEELYBUTTON_D = 0x00000400,
B_MOUSE_USER0BUTTON = 0x00000800,
B_MOUSE_USER1BUTTON = 0x00001000,
B_MOUSE_USER2BUTTON = 0x00002000,
B_MOUSE_USER3BUTTON = 0x00004000,
B_MOUSE_USER4BUTTON = 0x00008000,
B_MOUSE_USER5BUTTON = 0x00010000,
B_MOUSE_USER6BUTTON = 0x00020000,
B_MOUSE_USER7BUTTON = 0x00040000,
B_MOUSE_USER8BUTTON = 0x00080000,
B_MOUSE_USER9BUTTON = 0x00100000,
B_MOUSE_USER10BUTTON = 0x00200000,
B_MOUSE_NONEBUTTON = 0x00400000


VALUES OF CALL OF EVENTS

B_NONE_EVENT = 0x00000000,
B_QUIT_EVENT = 0x00000001,
B_KEYBD_EVENT = 0x00000002,
B_KEYBD_RELEASED = 0x00000004,
B_KEYBD_PRESSED = 0x00000008,
B_MOUSE_EVENT = 0x00000010,
B_MOUSE_OVER = 0x00000020,
B_MOUSE_RELEASED = 0x00000040,
B_MOUSE_PRESSED = 0x00000080,
B_MOUSE_CLICKED = 0x00000100,
B_MOUSE_ENTERED = 0x00000200,
B_MOUSE_EXITED = 0x00000400,
B_MOUSE_HINT = 0x00000800,
B_MOUSE_HINT2 = 0x00001000,
B_EXPOSE_EVENT = 0x00002000,
B_CONFIG_EVENT = 0x00004000,
B_CONFIG_CHNGX = 0x00008000,
B_CONFIG_CHNGY = 0x00010000,
B_CONFIG_CHNGW = 0x00020000,
B_CONFIG_CHNGH = 0x00040000,
B_FOCUS_EVENT = 0x00080000,
B_DESKTOP_EVENT = 0x00100000,
B_TIMER_EVENT = 0x00200000,
B_REMOTE_EVENT = 0x00400000,
B_MOUSE_HANDLER = 0x1,
B_KEYBD_HANDLER = 0x2


STRUCTURE OF CALL BFONTS

This is the next call for the structure of BfontS is its definition and method of linking data at the time of using the function BfontType.

Typedef struct (BFontS
Int yMin;
Int yMax;
Char * str;
Int size;
Int ascent;
Int descent;

Int height;

Int lineskip;
Int underline_offset;
Int underline_height;
Unsigned int RGB;
BImageType * IMG;
BFontFtType * FT;
BFontType);


STRUCTURE OF CALLS AND FUNCTIONS OF MOUSE


The following structure corresponds to the calls made by BmouseS through it is possible to access vectors and functions of state of the mouse on screen.

Typedef struct (BMouseS
Int x;

Int y;

B_MOUSECODE_CODE b;
Int clicks;
B_MOUSECODE_CODE Buttons;
Long Long Time;
Int PX;
Int Py;
Int PB;
B_MOUSECODE_CODE pbuttons;
Long Long ctime;
B_MOUSE_CURSOR cursor;
BMouseType);


FUNCTIONS OF MEMORY


Bmalloc void * (unsigned int size);

Replacement of malloc function, its role is to place the value placed within malloc.

Void * Bcalloc (nmemb unsigned int, unsigned int size);

Function substitute calloc, its variables go by sector memory and associated value.

Void * Brealloc (void * ptr, unsigned int size);

Function substitute realloc, functions as its original role, function call and associated value.

Bfree void (void * ptr);

Function release memory, frees functions used realloc and calloc, it is very useful to save memory and optimize systems.


CHILD FUNCTIONS


BChildAdd int (* BWindowType window, BWindowType * child);

A feature that serves to attach a child.

BChildDel int (* BWindowType window, BWindowType * child);

Function to destroy the chid created previously.

BChildsInit int (* BWindowType window);

Function to launch the child.

BChildsUninit int (* BWindowType window);

Function to download / des-start the child.

FUNCTIONS CLIENT-SERVER

Int BClientInit (BWindowType ** window);

Launch the program as a client system EOS, their use is fairly simple, you simply have to use the variable name with the type of window you use the application.

BClientUninit void (* BWindowType window);

It destroys the function itself, and download the program memory as a client server.

BClientExit void (* BWindowType window);

Close the program and leaves quickly.

BClientQuit void (* BWindowType window);

Function to remove customers, can be used to draw or close to other programs.

BClientWakeup int (* BWindowType window);

A feature that allows re launch an application, it is important to be able to re design the box on the screen and avoid frezadas pages.

BClientChildFind int (* BWindowType parent, BWindowType * window, BEventType * event);

Function for searching child within the client.

Void * BClientLoopEvent (void * arg);

A feature that emulates and simulates an event loop, it is important to provide this feature to C language loop as a continuous loop.

Void * BClientLoop (void * arg);

A feature that allows an infinite loop within a customer.

Void * BClientMain (void * arg);

Principal function to launch an application, lets put a name to the application and variable, as well as taking input values that arg for passing values to an application, which is very useful for programmers.

BClientAtevent void (* BWindowType window, void (* f) (* BWindowType, BEventType *));

A feature that allows an action to determine a specific event, such as a click in the window that can produce the same moves, or a loop in a cycle produces a specific action.

BClientAtexit void (* BWindowType window, void (* f) (BWindowType *));

A feature that determines a value of output for an application, for example call a particular command when a program ends or is terminated.

Struct (BConfigVarS
Char * name;
Char * Value;
);

Struct (BConfigCatS
Char * name;
BListType * variable;
);

Struct (BConfigS
BListType * Category;
);


INI FUNCTIONS FOR READING AND CONFIGURATION OF DATA


Char * BConfigStrip (char * buf);
Int BConfigParse (cfg BConfigType *, char * name);

Define the config file editing and variable regentear.

Int BConfigInit (cfg BConfigType **);

Start reading of the role of config files, this variable must not call BconfigParse.

Int BConfigCategoryInit (BConfigCatType ** cat, char * name);

Select a category to read within the config file.

Int BConfigVariableInit (var BConfigVarType **, char * name, char * value);

Select the value of the category to which work in the config file.

BConfigVariableUninit int (* BConfigVarType var);

Download the value of the variable config.

BConfigCategoryUninit int (* BConfigCatType cat);

Download the value of the variable category in the config.

BConfigUninit int (* BConfigType cfg);

De-function initializes BconfigInit thus is liberated from memory.


TASKS FOR THE PURPOSE OF ANALYSIS OF APPLICATIONS (DEBUG)


Void BDebugDebugf (unsigned short flags, char * file, int line, Govt char *, char * fmt, ...);

A feature that allows placing a flag, and variable that defines an output of a program to monitor its functioning as a debug, if it works as a sprintf but gives a better view of what was happening in the program, and provides for autocreacion a log file in / tmp.


FUNCTIONS OF SURFACE AND VIDEO (HYNTH)


The following functions were provided by the project HYNTH and SDL basically allows about drawing functions native screen.

Bpp_setpixel void (* BSurfaceType surface, int x, int y, int c);
Bpp_setpixel_o void (* BSurfaceType surface, id int, int x, int y, int c);
Bpp_getpixel int (* BSurfaceType surface, int x, int y);
Bpp_getpixel_o int (* BSurfaceType surface, id int, int x, int y);
Bpp_hline void (* BSurfaceType surface, x1 int, int, int x2, int c);
Bpp_hline_o void (* BSurfaceType surface, int id, x1 int, int, int x2, int c);
Bpp_vline void (* BSurfaceType surface, int x, int y1, int y2, int c);
Bpp_vline_o void (* BSurfaceType surface, id int, int x, int y1, int y2, int c);
Bpp_fillbox void (* BSurfaceType surface, int x, int y, int w, h int, int c);
Bpp_fillbox_o void (* BSurfaceType surface, id int, int x, int y, int w, h int, int c);
Bpp_putbox void (* BSurfaceType surface, int x, int y, int w, h int, char * sp, int bw);
Bpp_putbox_mask void (* BSurfaceType surface, int x, int y, int w, h int, char * sp sm unsigned char *, int bw);
Bpp_getbox void (* BSurfaceType surface, int x, int y, int w, h int, char * dp);
Bpp_putbox_o void (* BSurfaceType surface, id int, int x, int y, int w, h int, char * sp, int bw);
Bpp_putbox_mask_o void (* BSurfaceType surface, id int, int x, int y, int w, h int, char * sp sm unsigned char *, int bw);
Bpp_getbox_o void (* BSurfaceType surface, id int, int x, int y, int w, h int, char * dp);


FUNCTIONS OF CALL OF EVENTS


BEventMouseState int (* BWindowType window, BEventType * event, BHandlerMouseType * mouse over int);

Lets call states mouse.

BEventParseMouse void (* BWindowType window, BEventType * event);

Allows editing, observe and track the actions taken by the mouse, it is very helpful if you want to identify the states of the mouse for programs that react according to the actions of the mouse. Ex. If elevates the cursor changes to an image below.

BEventParseKeybd int (* BWindowType window, BEventType * event);

Allows draw events made by the keyboard, for example, if the press had recorded h and produces an action that you want.

BEventParseExpos int (* BWindowType window, BEventType * event);

Interprets values exposed by the events defined and returns to active efflux.

BEventParseConfig int (* BWindowType window, BEventType * event);

Lets start a configuration of the event to begin. The role tabaja through the definition of the type of window and type of event.

BEventParseTimer int (* BWindowType window, BEventType * event);
..
Define the values of action of the events through a temporary remedy, defines the type of window and type of event.

BEventChanged int (* BWindowType window);

Define a change of event within a window and modified.

Int BEventInit (BEventType ** event);

Initializes an event and defines it, this function should be used every time you initialize an event in one application.

BEventUninit int (* BEventType event);

Download the function implemented in the event. You need to define the specific event that initially use.

BEventqInit int (* BWindowType window);

Starts the controller of events.

BEventqUninit int (* BWindowType window);

Download the driver of rapid events.

BEventqAdd int (* BWindowType window, BEventType * event);

It allows a driver annexing fast, it works with the value of the window, and the value of the event.

BEventqGet int (* BWindowType window, BEventType ** event);

Lets get status of a fast event, with the kind of functionality window and type of event.

BEventqWait int (* BWindowType window, BEventType ** event);

Expects an event for fast action.


FUNCTIONS OF SOURCES (FONTS)


Int BFontInit (BFontType ** font, char * name);

Starts functions sources on the screen, this would burden the source to be used, a source with the command name.

BFontUninit int (* BFontType font);

Download the source and the same variable.

BFontSetSize int (* BFontType font, int size);

Sets the size screen showing of the selected font in BfontInit.

Int BFontSetString (BFontType font *, char * str);

He writes on the screen with the selected source, this variable is used as the printf function.

BFontSetRgb int (* BFontType font, int r, g int, int b);

Sets the color display of the source, the default color is always is black. (0,0,0)

BFontGetGlyph int (* BFontType font);

Set up and get values glyph on the screen.


FUNCTIONS OF WRITING ON SCREEN (PIXEL PUT)


Brgbcolor int (* BSurfaceType surface, int r, g int, int b);
Bcolorrgb void (* BSurfaceType surface, int c, r * int, int * g * int b);
Bsetpixel void (* BSurfaceType surface, int x, int y, int c);
Bsetpixelrgb void (* BSurfaceType surface, int x, int y, int r, g int, int b);
Bsetpixelrgba void (* BSurfaceType surface, int x, int y, int r, g int, int b, to int);
Bgetpixel int (* BSurfaceType surface, int x, int y);
Bgetpixelrgb void (* BSurfaceType surface, int x, int y, int * r, g * int, int * b);
Bhline void (* BSurfaceType surface, x1 int, int, int x2, int c);
Bvline void (* BSurfaceType surface, int x, int y1, int y2, int c);
Bline void (* BSurfaceType surface, x1 int, int y1, int x2, y2 int, int c);
Bfillbox void (* BSurfaceType surface, int x, int y, int w, h int, int c);
Bputbox void (* BSurfaceType surface, int x, int y, int w, h int, char * sp);
Bputboxmask void (* BSurfaceType surface, int x, int y, int w, h int, char * sp, unsigned char * sm);
Bputboxalpha void (* BSurfaceType surface, int x, int y, int w, h int, char * sp, unsigned char * sm);
Bputboxrgba void (* BSurfaceType surface, int x, int y, int w, h int, unsigned int * rgba);
Bgetbox void (* BSurfaceType surface, int x, int y, int w, h int, char * dp);
Bputboxpart void (* BSurfaceType surface, int x, int y, int w, h int, int bw, bh int, char * sp xo int, int I);
Bputboxpartmask void (* BSurfaceType surface, int x, int y, int w, h int, int bw, bh int, char * sp sm unsigned char *, int xo, I int);
Bputboxpartrgba void (* BSurfaceType surface, int x, int y, int w, h int, int bw, bh int, unsigned int * rgba, xo int, int I);
Bputboxpartalpha void (* BSurfaceType surface, int x, int y, int w, h int, int bw, bh int, char * sp sm unsigned char *, int xo, I int);
Bcopybox void (* BSurfaceType surface, x1 int, int y1, int w, int h, x2 int, int y2);
Void Bgetsurfacevirtual (BSurfaceType * s, int w, int h bitspp int, char * vbuf);
Int Bcopybuffer (sb char *, int sbitspp, char ** db, dbitspp int, int w, int h);
Brotatebox void (* BSurfaceType surface, BRectType * srect, void * sbuf, BRectType * drect, dbuf void *, int rotate);
Bscalebox void (* BSurfaceType surface, int w1, int h1, void * _dp1, w2 int, int h2, _dp2 void *);


FUNCTIONS OF CALLS AND MOUSE TELCADO (HANDLERS)


Then we define the functions of call, depending on their structure and data so you can understand how this shaped the structure of each function.

STRUCTURE OF CALLS FOR KEYS

Struct (BHandlerKeybdS

Int flag;

Int Button;
Void (* p) (BWindowType * * BEventType, BHandlerType *);
Void (* r) (BWindowType * * BEventType, BHandlerType *);
);


STRUCTURE OF THE MOUSE LLAMDAS

Struct (BHandlerMouseS
Int x;
Int y;
Int w;
Int h;
Int Button;
Void (* p) (BWindowType * * BEventType, BHandlerType *);
Void (* r) (BWindowType * * BEventType, BHandlerType *);
Void (* c) (BWindowType * * BEventType, BHandlerType *);

Void (*) (or BWindowType * * BEventType, BHandlerType *);

Void (*) (ho BWindowType * * BEventType, BHandlerType *);
Void (*) (hr * BWindowType, BEventType * BHandlerType *);
Void (*) (oh BWindowType * * BEventType, BHandlerType *);
Void (*) (hoh BWindowType * * BEventType, BHandlerType *);
Void (*) (rh BWindowType * * BEventType, BHandlerType *);
B_EVENT hstate;
);

STRUCTURE OF HANDLERS (CALLS)

Struct (BHandlerS

B_HANDLER type;

BHandlerMouseType Mouse;
BHandlerKeybdType keybd;
Void * user_data;
);

Struct (BHandlersS
BListType * List;
* BThreadMutexType Mut;
);


Int BHandlerInit (BHandlerType ** handler);

It initializes the role of callers and defines the value of the handler, this is important in linking widgets and functions through actions and reactions in the code, do not forget to initialize otherwise your code will have no functionality.

Int BHandlerUninit (BHandlerType * handler);

De-initializes the callback function, downloading the handler previously created, it allows you to reset, change or delete statements.

BHandlerAdd int (* BWindowType window, BHandlerType * handler);

Annexed call (handler) within a window and the value specified handler.

BHandlerDel int (* BWindowType window, BHandlerType * handler);

Eliminates a call handler that has been previously initialized.

BHandlersInit int (* BWindowType window);

Starts function simultaneous calls.

BHandlersUninit int (* BWindowType window);

Download the role of simultaneous calls.


FUNCTIONS OF USE AND BURDEN OF IMAGES


Then defeniremos fields that are used to load and place an image in bitmap formats, xpm, and gif (compressed without frames).

This is the structure of code used for the reading of images:

Struct (BImageS
Int x;
Int y;
Int w;
Int h;
Char * buf;

Unsigned char * MAT;

* BRectType Handler;
Unsigned int DeLay;
Unsigned int * rgba;
* BListType layers;
);

Int BImageHex2int (char * str);

Spend the value of the image to an interruption to be read into memory.

BImageGetMat int (* BImageType img);

Gets the image data.

BImageGetBuf int (* BSurfaceType surface, BImageType img *);

Put and image data obtained in the output buffer.

BImageGetHandler void (* BImageType img);

Take the image within the handler, it is useful to make links with code widgets.

Int BImageInit (img BImageType **);

It initializes the role of image loading, it is necessary to define that image will be charged and under what variable.

BImageFreeBuf void (* BImageType img);

Libera buffer used previously by the image loaded.

BImageFreeMat void (* BImageType img);

Libera data from the materials obtained in advance by the image (similar to get_pixel).

BImageFreeRgba void (* BImageType img);

Libera RGB data (actual colors) and the color palette of the image loaded.

BImageFreeHandler void (* BImageType img);

Libera value associated with the handler for the desired image.

BImageUninit int (* BImageType img);

Download the role of image loading.

Int BImageLayerInit (BImageType lyr **);

Initializes layer reading of images.

BImageLayerUninit int (* BImageType lyr);

Download layer reading of images.

BImageLayersInit int (* BImageType img);

It initializes the burden of multiple images.

BImageLayersUninit int (* BImageType img);

Descara loads images.

Int BImageImg (char * file, BImageType img *);

Function and cargo handler association of images, is the main function if searching upload an image and display it.

Functions read GIF files

Int BImageGifIs (char * file);

Defines whether the file is in gif or not, it returns a value of 1 if the format and 0 in the case that is not the type of file.

Int BImageGif (char * file, BImageType img *);

Loads a GIF image in memory.

Functions reading files PNG

Int BImagePngIs (char * file);

Defines whether the file is in PNG format or not, it returns a value of 1 if the format and 0 in the case that is not the type of file.

Int BImagePng (char * file, BImageType img *);

PNG load an image into memory.

Functions reading files XPM

Int BImageXpmIs (char * file);

Defines whether the file is XPM format or not, it returns a value of 1 if the format and 0 in the case that is not the type of file.

Int BImageXpm (char * file, BImageType img *);

Load an image XPM memory.


FUNCTIONS OF LISTING FOR USEFUL LINK FUNCTIONS


The functions performed sisguientes functions to link variables are very important if you look lists returned by state programs, or just looking to read the contents of a file or variables.

The data structure of BLIST is as follows:

Struct (BListNodeS
         Void * next;
         Void * Element;
);

Struct (BListS
         Int nb_elt;
         BListNodeType * Node;
);

Int BListInit (BListType ** l);

Initializes function, should set the value of BLIST.

BListUninit int (* BListType li);

Descara the value that gave BLIST.

BListEol int (* BListType Li, int i);

Initializes EOL counting on the list, you must define the BLIST and shall list the values to work.

Void * BListGet (BListType l *, int pos);

Gets BLIST values within a particular position, its role is to define the BLIST and place the point position.

BListRemove int (* BListType Li, int pos);

Remove BLIST the beginning and its position listed.

BListAdd int (* BListType Li, void *, int pos);

Add a new list within a value and position.

BListFind void * (* BListType list, node void *, int (* cmp_func) (void *, void *));

Look for a list within a BLIST, in a position and function.

BListGetPos int (* BListType list, void * node);

Gets the position of a given LIST.


FUNCTIONS OF OBJECT


The following features allow you to have control over the objects that will be presented within a program in a BOX.

BObjectUpdateToSurface int (* BObjectType object, BSurfaceType * surface, co BRectType *);

Declares that the object can be updated within a given area, this feature is useful when working with sprites.

BObjectUpdate int (* BObjectType object, co BRectType *);

Updates the position and status of the object.

BObjectMove int (* BObjectType object, int x, int y, int w, int h);

Moves the object in a given coordinate space inside the BOX, can never move outside the BOX.

BObjectHide int (* BObjectType object);

Allows hide the object, therefore behave so invisible.

BObjectShow int (* BObjectType object);

Allows viewing the object, is the only way to make it visible, if not declaring may never see their objects on the screen.

BObjectInit int (* BWindowType window, BObjectType ** object, int w, int h * BObjectType parent);

Starts the role of subject, object that defines the use, it can be a function of native drawing, or a section of the screen, and defines the initial position where they submit, as well as the size you will have inside the BOX.

BObjectUninit int (* BObjectType object);

Download the subject of memory.


FUNCTIONS POLL


The following features allow you to control the functions POLLS within their application.

Int BPollfdInit (BPollfdType ** pfd);

Cargo and defines POLL in memory.

BPollfdUninit int (* BPollfdType pfd);

Download POLL from memory.

BPollfdType * BPollfdFind (BWindowType window *, int fd);

Defines the type POLL employed within the BOX.

BPollfdAdd int (* BWindowType window, BPollfdType pfd *);

Annexed a new POLL.

BPollfdDel int (* BWindowType window, BPollfdType pfd *);

POLL Remove an existing but not erased from memory.

BPollfdsInit int (* BWindowType window);

It initializes the role of multiple POLLS.

BPollfdsUninit int (* BWindowType window);

Download the role of multiple POLLS.

Structure definition of a BPOLL:

Struct (BPollfdS
Int fd;
Int (* pf_in) (BWindowType *, int);
Int (* pf_err) (BWindowType *, int);
Int (* pf_close) (BWindowType *, int);
);

Struct (BPollfdsS
BListType * List;
* BThreadMutexType Mut;
);


FUNCTIONS OF DRAWING RECT


Then defeniremos the operating structure of BRECT:

Struct (BRectS
Int x;
Int y;
Int w;
Int h;
);


Int BRectIntersect (BRectType * r1, BRectType * r2, BRectType * r);

Functions drawing rectangles with intersections.

BRectClipVirtual int (* BSurfaceType surface, int x, int y, int w, int h, co BRectType *);

Function drawing clip virtual space must define values and height and width.

BRectClipReal int (* BSurfaceType surface, int x, int y, int w, int h, co BRectType *);

Function definition of rectangle with actual clip, you must define the real values x, yy width and height values.

BRectDifferenceAdd int (* BListType list, int x, int y, int w, int h);

A feature that lets you attach a new definition to differentiating between 2 rectangles.

Int BRectDifference (BRectType * r1, BRectType * r0, BListType * list);

Define a rectangle differential.


FUNCTIONS SOCKET (NETS)


BSocketRequestNew int (* BWindowType window, soc int);
BSocketRequestDisplay int (* BWindowType window, soc int);
BSocketRequestConfigure int (* BWindowType window, int soc, B_WINDOW form);
BSocketRequestStream int (* BWindowType window, int soc, co BRectType *);
BSocketRequestShow int (* BWindowType window, soc int, int id, int show);
BSocketRequestEvent int (* BWindowType window, int soc, BEventType * event);
BSocketRequest int (* BWindowType window, B_SOC_DATA req, ...);
BSocketListenEvent int (* BWindowType window, soc int);
BSocketListenExpose int (* BWindowType window, soc int);
BSocketListenDesktop int (* BWindowType window, soc int);
BSocketListenParse int (* BWindowType window, soc int);
BSocketListenWait int (* BWindowType window, int timeout);
BSocketUninit int (* BWindowType window, int s);
BSocketInF int (* BWindowType window, int s);
BSocketIerrF int (* BWindowType window, int s);
BSocketInwF int (* BWindowType window, int s);
BSocketIerrwF int (* BWindowType window, int s);
BSocketClosewF int (* BWindowType window, int s);
BSocketInitUds int (* BWindowType window);
BSocketInitTcp int (* BWindowType window);
BSocketInitWakeup int (* BWindowType window);
BSocketInit int (* BWindowType window);


BASIC FUNCTIONS OF SURFACE ON SCREEN


Listing SURFACE native functions based on the SDL library.

BSurfaceInit int (* BWindowType window);

It starts a surface, you must define the type of BOX.

BSurfaceCreate void (* BWindowType window);

It creates a surface, it must be defined before BSURFACEINIT it will not take effect this function.

BSurfaceShmAttach void (* BWindowType window);

Annexed a new surface to existing within a BOX.

BSurfaceLinear void (* BWindowType window);

It generates a linear surface, giving an effect of SCROLL.

BSurfaceUninit void (* BWindowType window);

A feature that removes memory function BSURFACE, rendering null and void all actions on the surface.

BSurfaceChanged void (* BWindowType window, changed BRectType *);

Allows states and modify properties of BSURFACE online.


FUNCTIONS OF MANAGEMENT OF THE FUNCTIONS THREAD IN UCLIBC


Then define the functions that are used by THREAD UCLIBC in EOS, in this way can create processes THREAD direct and employ them in their own BOXS.

Int BThreadSemCreate (** BThreadSemType week, initial int);
BThreadSemDestroy int (* BThreadSemType wk);
BThreadSemWait int (* BThreadSemType wk);
BThreadSemWaitTimeout int (* BThreadSemType week, int msec);
BThreadSemPost int (* BThreadSemType wk);
Int BThreadMutexInit (mut BThreadMutexType **);
BThreadMutexDestroy int (* BThreadMutexType mut);
BThreadMutexLock int (* BThreadMutexType mut);
BThreadMutexTrylock int (* BThreadMutexType mut);
BThreadMutexUnlock int (* BThreadMutexType mut);
Int BThreadCondInit (BThreadCondType ** cond);
BThreadCondDestroy int (* BThreadCondType cond);
BThreadCondSignal int (* BThreadCondType cond);
BThreadCondBroadcast int (* BThreadCondType cond);
BThreadCondWait int (* BThreadCondType cond, BThreadMutexType Mut *);
BThreadCondTimedwait int (* BThreadCondType cond, BThreadMutexType Mut *, int msec);
BThreadType * BThreadCreate (void * (* f) (void *), void * farg);
BThreadCancel int (* BThreadType time);
BThreadJoin int (* BThreadType time, void ** ret);
Int BThreadSelf (void);
BThreadExit void (void * ret);


FUNCTIONS OF CONTROL OF TIME


Then defeniremos values structure possessing the functions BTIMER.

Struct (BTimerS
Long Long timeval;
Long Long interval;
Void (*) (cb BWindowType *, struct BTimerS *);
Void * user_data;
);

Struct (BTimersS
* BListType timers;

* BThreadMutexType Mut;

);


Int BTimerInit (BTimerType ** timer);

Start counting function of time.

BTimerTypeimeval int (* BWindowType window, BTimerType * timer, timeval int);

It details the type of time interval to be used.

BTimerUninit int (* BTimerType timer);

Download the role of counting time.

BTimerDel int (* BWindowType window, BTimerType * timer);

It eliminates the variable of time to be using this.

BTimerAdd int (* BWindowType window, BTimerType * timer);

Add a new condenser and controller of time, its functionality is the type of BOX and the kind of time to be used for administration of the same in the application.

BTimersInit int (* BWindowType window);

Starts the multiple role of meter times.

BTimersUninit int (* BWindowType window);

Download the multiple role of meter times.


FUNCTIONS AND CONFIGURATION CONTROL OF WINDOW BOX


Then define the major routines for loading boxes box on your desktop, these functions let you control what happens in one area of the screen, and from them to begin to develop an application.

BWindowSetCursor void (* BWindowType window, B_MOUSE_CURSOR cursor);

Puts and shapes the kind of cursor to the box.

BWindowSetTitle void (* BWindowType window, char * fmt, ...);

Sets the title to take the box.

BWindowFormDraw void (* BWindowType window);

Set the type of BOX to use (format).

BWindowHide void (* BWindowType window);

Set BOX invisibly, or is not visible to its processes, however it is possible to access it through the taskbar.

BWindowShow void (* BWindowType window);

Principal function that shows the program itself, in this case shows BOX screen without this variable is not showing its programs.

BWindowSetCoor void (* BWindowType window, the form int, int x, int y, int w, int h);

Set position on the screen of BOX.

BWindowSetResizeable void (* BWindowType window, resizeable int);

Sets whether it is possible to modify the size and space of BOX, the values are 0 and 1, where 0 was identified that BOX will not be resizable and if the value is 1 will be possible to alter its size.

BWindowSetAlwaysontop void (* BWindowType window, alwaysontop int);

Displays BOX continuously on the screen, it is helpful if you look BOX make a primary task, which is continually shown and that other programs can not superponerseles, it is useful if you are looking to make a SHELL alternative to the system.


BWindowNew int (* BWindowType window, B_WINDOW type, BWindowType * parent);

It generates a new BOX screen, you must define a variable BOX, the type of BOX (B_WINDOW) and the kind of courage that will have the BOX.



Features graphics native (SDL)


The functions SDL is a graphics layer that owns EOS are based on the original SDL libraries, with the proviso that have been OPTIMIZADAS to the point of allowing access to hardware acceleration, although there are some limitations such as the inability to change the icon Cursor, or modify tasks in the system, to perform some of these changes we recommend that you read about the primitive functions that previously we have set out.


OpenGL in EOS


Currently we have a small port of TINYGL in SDL, the same permit recompile few codes made OPENGL but bring many disadvantages, allow development in 3d and obtain high yields, but are placed on the primary task, which generates some of relentizaciones system.
We recommend using this PORT carefully, and to read more information about the port in the section of the SDK / SRC / LIBS / LIBGL.


GTK for EOS


At the moment is in development, however it is possible to run GTK Under the Xserver for EOS, therefore you can see all your old programs in a BOX. However, this has serious limitations because it runs in a BOX rather than a table DIALOGUE.


QT for EOS


We have no PORT echo except that operates under Xserver in EOS.
 
     
     

 

 


Contact .. Developers .. FAQ .. | .. Fund us


Copyright © EOSLX 1995-2008

EOSLX is licensed under a GNU General Public License, version 2.

Linux Kernel, and the Linux logos, are trademarks of Linus Torvalds.