TNTmips

HOME

FREE PRODUCTS
  TNTlite
  TNTatlas
  TNTsim3D

DOWNLOADS
  Release Version
  Development Version
  FTP
  Language Kits
  Sample Geodata
  Reseller Resources
  Promotional

DOCUMENTATION
  Tutorials
  Technical Guides
  Quick Guides

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. 2008 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

29 August 2008

page update: 13 Jun 07