IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

 

JAPI for C++ BUILDER

Latest  version: 10/30/2003 (see changes section)

During the many software projects I had to implement with C++ Builder, I had to deal with many gaps in the VCL that required months of development efforts (sometimes with the help of some friends).

With these developments, I progressively gathered the functions and classes I was led to write (strings, images, vectorials, and so on...) by topics.

Being brought to answer very often people in the forums that the work they intended to do had already been done and was available in freeware with the sources, I decided to promote the API which was mainly the result of my work.

This is the reason why I wrote this article.

This API belongs to the middleware category. It was created by adding and sorting the various functions or classes I had to program by myself to fill out certain gaps in C++ Builder.

The API is broken down in many files, each one dealing with a programming aspect (image, memory management, string manipulation, and so on...).
These functions are grouped according to the following specifics:
 

jAPIbezier

allows to very easily handle Bezier curves, same way that you do in Photoshop

jAPIdirectX

for 2D games creators, allows to handle Direct2D in the easiest possible way using a jDDraw class connected to sprite objects.

jAPIgeometry

handles lines, segments, points, vectors, curves and allows to carry out operations between these entities such as intersections, parallels, etc.

jAPIimages

contains several functions gathered in an extension of Graphics::TBitmap, which allows for exemple image rotation of an unspecified angle, image shading, or jpg loading.

jAPImemory

contains functions making it possible to easier handle memory resources

jAPIresources

functions to save data in the register base or to easier handle a treeview (with a string using "/" separators  for example)

jAPIshape

contains the jShape class allowing to handle an unspecified geometrical shape, a function of which making it possible to determine if a point is inside or not, other functions making it possible to turn, move and resize this shape

jAPItexts

offers the majority of functions available in Java and not in C++ builder to handle character strings (replacement of a character or a succession of characters...) and makes it possible to list a directory recursively or not, to parse strings, (with the key=value syntax or not).

jAPIvectoriels

contains small functions to easier handle a set of points (obtention of the frame containing the points, rotation, translation and resizement)

jAPIcomponents

contains a component "lists of anything", which makes it possible to do the same thing as a listbox with the difference that each line may be composed of 1 or several components of the VCL

jAPIsystems

useful functions for system management

You can get a detailed explanation of all the classes, functions, class
members, files etc. in the
documentation.

 

Using the API

There are two methods:

  • include all the .cpp and .h files to your project with the "project/add file to project" menu item.
  • build the library by opening the .bpr file and click on the "project/build all" item. then open your own project and include the generated .lib file to your project (with the "project/add file to project" menu item), in the "project/options" menu item, ensure that the directory of the jAPI is present in the "include directories" section.

 

Conditions of use

My goal is not to make money with the jAPI, but rather to provide a library of common functions enabling developers to save time and effort by quickly performing boring tasks through the reuse of jAPI.

However, any voluntary programmer willing to improve jAPI by adding new functions, turning some objects into real components, optimizing code, even adding comments into the existing code, or in summary willing to make jAPI grow bigger and better and make it an essential tool for any C++ Builder owner is welcome to support my effort and submit proposals. This will allow the developer community to focus its efforts on architectural issues rather than on developing code that has been developed several times.

 

 [ Download the lastest version of the jAPI ]

Examples

 [ Rotations and zoom of images | program ]
 
[ Rotations and zoom of images | sources ]

 
[ Sprites management | program ]
 
[ Sprites management | sources ]

 
[ Shortcuts creation and external program call | program ]
 
[ Shortcuts creation and external program call | sources ]

 
[ Persistence manager in a binary file for variable size entities | program ]
 
[ Persistence manager in a binary file for variable size entities | sources ]

 
[ Listbox of image and memo | program ]
 
[ Listbox of image and meme | sources ]

 [ String manipulation | program ]
 
[ String manipulation | sources ]

 [ Images sliding list | program ]
 
[ Images sliding list | sources ]

 [ Text sliding list | program ]
 
[ Text sliding list | sources ]

 [ DirectDraw programming | program ]
 
[ DirectDraw programming | sources ]

 

Changes

30/10/2003 --> bug solving in jAPI collectors, removal of obsolete files "jAPIintelligence.cpp .h" and "jCMPresourcesManager.cpp .h" thanks to jeannot27

07/08/2003 -->
modification for compilation with bcb5 or less (thanks to Greybird) and addition of zoom on bitmap functions

06/03/2003 -->
modification and addition of functionality for jCMPbitmapList. thanks to Paul and Sylvie for having submitted the request

  • jAPIbitmapListBox.h: modification of jCMPbitmapList to allow the component to be either vertical or horizontal.
  • jAPIcollectors.h: correction of a bug in BitmapVector remove method

12/11/2002 -->

  • jAPImemory.h: addition of new a generic class jMEMdata that can carry any type of data (stream, Ansistring, TBitmap, int, TDateTime so far) that is  serialisable into a stream. addition of a generic class jMEMdataBundle that associates the string keyword to jMEMdatas. So you can easily load or save a structure of heterogeneous types
  • jAPIcollector.h: addition of DBMapDataBundle, a simple-database for jMEMdataBundle
  • jAPIarithm.h: a class that can provide the result of a simple arithmetic expression passed as string (example: (((1 + 2) * 3) - 4))

    addition of some functions implemented in CGI
     
  • jAPIsystem: jSYSconnectedToInternet(), jSYSopen
  • jAPIvectoriel.h: jDRWtext

28/08/2002 --> correction of a bug in the jVCTinside() function of jAPIvectoriel. Impacting jAPIgeometry. Thanks to Jean-Charles CARRET for having submitted the bug.

  • jAPItextListBox.h: (new file) a scrolling listbox text like a movie rush
  • jAPIbitmapListBox.h: (new file) a scrolling listbox of mini bitmaps

27/07/2002 --> addition of some functions implemented by Rémi VERNAY [ srvremi@fr.st ]

  • jAPIsystem: jFILcreateOpenWidth(), jFILcreateTemporaryDirectory(), jFILlistSystemInfos(), jSYSrandom()
  • jAPIcomponents: jCMPalignTStringGridCell()
  • jAPIresources: jREGread(), jREGwrite()

 

(Thanks to Bernard for the English translation)

Jean-Etienne GOUBARD
jegsbond@hotmail.com