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
|