#include "c4d_gui.h"
#include "customgui_fontchooser.h"

static FontchooserLib *lib_FontControl = NULL;


static FontchooserLib *CheckLib(LONG offset)
{
	return (FontchooserLib*)CheckLib(FONTCHOOSER_GUI, offset,(C4DLibrary**)&lib_FontControl);
}

#define FontCall(b) 			FontchooserLib *lib = CheckLib(LIBOFFSET(FontchooserLib, b)); \
															if (!lib || !lib->b) return; \
															(((iFontData*)this)->*(lib->b))

#define FontCallR(a,b) 		FontchooserLib *lib = CheckLib(LIBOFFSET(FontchooserLib, b)); \
															if (!lib || !lib->b) return a; \
															return (((iFontData*)this)->*(lib->b))

#define FontGuiCall(b) 		FontchooserLib *lib = CheckLib(LIBOFFSET(FontchooserLib, b)); \
															if (!lib || !lib->b) return; \
															(((iFontChooserGUI*)this)->*(lib->b))

#define FontGuiCallR(a,b) FontchooserLib *lib = CheckLib(LIBOFFSET(FontchooserLib, b)); \
															if (!lib || !lib->b) return a; \
															return (((iFontChooserGUI*)this)->*(lib->b))


BaseContainer FontchooserCustomGui::GetFont() { FontGuiCallR(BaseContainer(), GetFont)(); }
void FontchooserCustomGui::SetFont(BaseContainer* bc) { FontGuiCall(SetFont)(bc); }

BaseContainer FontData::GetFont() { FontCallR(BaseContainer(), GetFontData)(); }
void FontData::SetFont(BaseContainer *bc) { FontCall(SetFontData)(bc); }
