home products news downloads documentation support gallery online maps resellers search
TNTmips

HOME

PROFESSIONAL
  TNTmips
  TNTedit
  TNTview
  TNTsdk
  Prices
  How To Order

CONTACT MI
  Resellers
  Consultants
  MicroImages
  About MI
  Visiting
  Prices
  Send Email
  Reseller Resources

SHOWROOM
  Gallery
  Technical Guides
  New Features
  Testimonials
  Reviews
  World Languages

FREE PRODUCTS
  TNTmips Free
  TNTatlas

  MI/X
  FAQ

DOCUMENTATION

SCRIPTING

SITE MAP


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;

//=====================================================================================================================


Back Home ©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

25 March 2009

page update: 26 May 11