rastinfo.c
/**
* rastinfo.c - Very simple application allowing user to select a raster and display basic
* information about it.
**/
#include <mgui/appmain.h>
#include <rvc/dialogs.h>
#include <rvc/raster.h>
#include <mi32/xdefns.h>
#include <mi32/texted.h>
#include <Xm/Form.h>
#include <Xm/Separator.h>
#define PROCNAME "rastinfo"
//=====================================================================================================================
// APP_RASTINFO - Begin
class APP_RASTINFO : public MGUI::APP_BASE {
public:
APP_RASTINFO () { }
private:
Widget m_toplevel;
Widget m_InfoXeText;
static void OnCmdSelect (Widget, APP_RASTINFO*, void*);
ERRVALUE ShowInfo ();
// Overrides from APP_BASE.
virtual const char* v_GetProcessName () const;
virtual void v_ExitInstance ();
virtual bool v_InitInstance ();
};
// Callback invoked when user presses "Select" button
void APP_RASTINFO::OnCmdSelect (
Widget w,
APP_RASTINFO *pApp,
void *
) {
ERRVALUE err = pApp->ShowInfo();
RVC::OBJITEM objitem;
if (err < 0) MdlgShowErrorCode(pApp->m_toplevel,err);
return;
}
ERRVALUE APP_RASTINFO::ShowInfo (
) {
ERRVALUE err;
RVC::OBJITEM objitem;
if ((err = RVC::DlgGetObject(m_toplevel,MISTRING("Select raster to examine:"),RVC::OBJTYPE_Raster,objitem)) < 0) return (err);
RVC::RASTER raster;
if ((err = raster.Open(objitem)) < 0) return (err);
RVC::RASTER::MAKEPARMS makeparms(raster.GetMakeParms());
MISTRING str;
str << "Raster name: " << objitem.GetObjectName() << '\n';
str << "Lines = " << makeparms.GetNumLines() << '\n';
str << "Columns = " << makeparms.GetNumColumns() << '\n';
str << "Bits per Cell = " << makeparms.GetNumBits() << '\n';
XeTextSetStringUnicode(m_InfoXeText,str);
return (0);
}
const char* APP_RASTINFO::v_GetProcessName (
) const {
return (PROCNAME);
}
void APP_RASTINFO::v_ExitInstance (
) {
return;
}
bool APP_RASTINFO::v_InitInstance (
) {
Arg arg[20];
int n;
n = 0;
XtSetArgI(arg,n,XmNtitle,"Raster Info");
m_toplevel = MxInitLegacy(LEGACYINIT_LockShellSize);
n = 0;
Widget form = XmCreateForm(m_toplevel,"form",arg,n);
n = 0; // Create the information display area
XtSetArgI(arg,n,XmNleftAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNrightAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNtopAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNcolumns,40);
XtSetArgI(arg,n,XmNcursorPositionVisible,FALSE);
XtSetArgI(arg,n,XmNeditable,FALSE);
XtSetArgI(arg,n,XmNeditMode,XmMULTI_LINE_EDIT);
XtSetArgI(arg,n,XmNrows,6);
m_InfoXeText = XeCreateText(form,"text",arg,n);
XtManageChild(m_InfoXeText);
n = 0; // Create a horizontal separator
XtSetArgI(arg,n,XmNleftAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNrightAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNtopAttachment,XmATTACH_WIDGET);
XtSetArgI(arg,n,XmNtopWidget,m_InfoXeText);
Widget hsep = XmCreateSeparator(form,"hsep",arg,n);
XtManageChild(hsep);
n = 0;
XtSetArgI(arg,n,XmNbottomAttachment,XmATTACH_FORM); // Create the "Select..." button
XtSetArgI(arg,n,XmNleftAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNtopAttachment,XmATTACH_WIDGET);
XtSetArgI(arg,n,XmNtopWidget,hsep);
Widget PB_Select = MxCreatePushButton(form,"select_",(XtCallbackProc)OnCmdSelect,this,arg,n);
n = 0; // Create the "Exit" button
XtSetArgI(arg,n,XmNbottomAttachment,XmATTACH_FORM);
XtSetArgI(arg,n,XmNleftAttachment,XmATTACH_WIDGET);
XtSetArgI(arg,n,XmNleftWidget,PB_Select);
XtSetArgI(arg,n,XmNtopAttachment,XmATTACH_WIDGET);
XtSetArgI(arg,n,XmNtopWidget,hsep);
Widget PB_Exit = MxCreatePushButton(form,"exit",MxcbSetExit,NULL,arg,n);
XtManageChild(form);
return (true);
}
// APP_RASTINFO - End
//=====================================================================================================================
// MAIN application instance class
class MAIN : public MGUI::APP_MAIN {
public:
MAIN () : m_pApp(new APP_RASTINFO) {}
~MAIN () {}
private:
APP_RASTINFO *m_pApp;
};
static MAIN MainApp;
//=====================================================================================================================
©MicroImages, Inc. 2013 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010 USA
Business & Sales: (402)477-9554 Support: (402)477-9562 Fax: (402)477-9559
Business info@microimages.com
Support support@microimages.com
Web webmaster@microimages.com
|