- the information about each shape will be hold in the CShapeWrapper class which will lie underneath CShape;
- no COM Points will be used for storing shape data internally;
- COM points will be created on the fly when they are requested from the outside (Shape.get_Point).
- the loading of shapfile into memory becomes 5 times faster, saving to the disk - about 2 times faster;
- certain increase of speed will be noticeable for drawing of in-memory shapefile and MapWinGis.Shape/OGRGeometry conversion (GEOS methods).
Switching between old new code:
As changes are serious I preserved old code completely using conditional compilation. To use old code it's necessary to define SHAPE_OLD in MapWinGis.h file (defined by default). When it's not defined the new code is used.
When SHAPE_OLD isn't defined the new drawing procedure, I'm working on now, will be used also. It's far from being finished and is good for testing only.
In most cases no error codes will return for reworked methods in Shape class - will be done later.
The shapefile types without Z and M values were tested only.