#include "libgfl.h"
#include <iostream>
bool verify(const char *act, GFL_ERROR err)
{
using namespace std;
bool v = err == GFL_NO_ERROR;
cout << act
<< ": "
<< (v ? "OK" : gflGetErrorString(err))
<< endl;
return v;
}
// use a pointer to a GFL_BITMAP pointer in order to get the real address
// your way "loses" the pointer
// this is actually a wrapper function
// and IMO arguments for wrapper functions that are simply passed thru should have same type (pointer-wise)
// than the underlying function excepts ;)
bool gflLoadMiniature(int iWidth, int iHeight, char *szPath, GFL_BITMAP **GFL_Preview)
{
GFL_LOAD_PARAMS load_params;
gflGetDefaultPreviewParams(&load_params);
load_params.Flags |= GFL_LOAD_PREVIEW_NO_CANVAS_RESIZE;
load_params.Flags |= GFL_LOAD_METADATA;
load_params.Origin = GFL_TOP_LEFT;
load_params.ColorModel = GFL_RGB;
load_params.LinePadding = 3;//4
return verify(
"load",
gflLoadPreview(
szPath,
iWidth,
iHeight,
GFL_Preview,
&load_params,
NULL
)
);
}
bool gflSaveImage(GFL_BITMAP * GFL_bitmap, char * szPath)
{
GFL_SAVE_PARAMS save_params;
gflGetDefaultSaveParams(&save_params);
save_params.Quality=100;
save_params.FormatIndex = gflGetFormatIndexByName("jpeg");
return verify(
"save",
gflSaveBitmap(
szPath,
GFL_bitmap,
&save_params
)
);
}
int main()
{
gflLibraryInit();
// Same here... use a pointer... gflsdk will allocate the bitmap struct itself
GFL_BITMAP *GFL_Preview;
if (gflLoadMiniature(100, 100, "test.jpg", &GFL_Preview))
{
gflSaveImage(GFL_Preview, "t_test.jpg");
gflFreeBitmap(GFL_Preview);
}
gflLibraryExit();
return 0;
}