--- a/main.cpp
+++ b/main.cpp
@@ -1,7 +1,3 @@
-
-// PTLens, Copyright (C) 2004, Thomas Niemann
-// email: thomasn@epaperpress.com, subject=ptlens
-// 
 // This program is free software; you can redistribute 
 // it and/or modify it under the terms of the GNU
 // General Public License as published by the Free 
@@ -19,205 +15,344 @@
 // write to the Free Software Foundation, Inc., 675 
 // Mass Ave, Cambridge, MA 02139, USA.
 
+/**
+* @file main.cpp
+* This file is included in all four plug-ins (PTAdjust, PTCorrect, PTPerspect, and PTRemap)
+* Includes the main entry point for the plug-ins
+* @date January 2007
+*/
+
 #include "main.h"
 
-SPBasicSuite * sSPBasic = NULL;
-StaticData *gData = NULL;
-ParamData *gParam = NULL;
-FilterRecord *gFr = NULL;
-int16 *gResult;
-
-int display(const char *fmt, ...) {
-	char buf[100];
-	va_list ap;
-
-	va_start(ap, fmt);
-	vsprintf(buf, fmt, ap);
-	MessageBox(NULL, buf, "Info", MB_OK);
-	va_end(ap);
-	return 1;
-}
-
-static void initParameters() {}
-
-static void initData() {
-	memset(gData, 0, sizeof(StaticData));
-	memInit(memStatic);
-	memInit(memDynamic);
-	DLL.initDLL = false;
-}
-
-
-static void lockData(int32 *data) {
-	bool init = false;
-	BufferProcs *bufferProcs = gFr->bufferProcs;
-
-	if (*data == NULL) {
-
-		// create handle
-		BufferID h;
-		if (bufferProcs->allocateProc(sizeof(StaticData), &h)) {
-			*gResult = memFullErr;
-			return;
-		}
-
-		*data = (int32)h;
-  		init = true;
-	}
-
-	gData = (StaticData *)bufferProcs->lockProc((BufferID)(*data), true);
-	if (gData == NULL) {
-		*gResult = memFullErr;
-		return;
-	}
-
-	if (init) initData();
-	
-	return;
-}
-
-static void unlockData(int32 *data) {
-	if (*data != NULL)
-		gFr->bufferProcs->unlockProc((BufferID)(*data));
-}
-
-static void lockParameters() {
-	bool init = false;
-	BufferProcs *bufferProcs = gFr->bufferProcs;
-
-	if (gFr->parameters == NULL) {
-
-		// create handle
-		BufferID h;
-		if (bufferProcs->allocateProc(sizeof(ParamData), &h)) {
-			*gResult = memFullErr;
-			return;
-		}
-
-		gFr->parameters = (Handle)h;
-		init = true;
-	}
-
-	// lock handle
-	gParam = (ParamData *)bufferProcs->lockProc((BufferID)(gFr->parameters), true);
-	if (gParam == NULL) {
-		*gResult = memFullErr;
-		return;
-	}
-	
-	if (init) initParameters();
-}
-
-static void unlockParameters() {
-	if (gFr->parameters != NULL)
-		gFr->bufferProcs->unlockProc((BufferID)(gFr->parameters));
-}
-
-static void lockHandles(int32 *data) {
-	lockData(data);
-	lockParameters();
-	memLockHandles(memStatic);
-	memLockHandles(memDynamic);
-}
-
-static void unlockHandles(int32 *data) {
-	memUnlockHandles(memDynamic);
-	memFreeAll(memDynamic);
-	memUnlockHandles(memStatic);
-	unlockParameters();
-	unlockData(data);
-}
-
-static void DoContinue(void) {
-	gFr->inRect.top = 0;
-	gFr->inRect.bottom = 0;
-	gFr->inRect.left = 0;
-	gFr->inRect.right = 0;
-	gFr->outRect.top = 0;
-	gFr->outRect.bottom = 0;
-	gFr->outRect.left = 0;
-	gFr->outRect.right = 0;
-	gFr->maskRect.top = 0;
-	gFr->maskRect.bottom = 0;
-	gFr->maskRect.left = 0;
-	gFr->maskRect.right = 0;
-}
-
-static int DoFinish(void) {
-	return 0;
-}
-
-static void checkPrefs() {
-
-	// force dialog box if requested by script
-	PIDescriptorParameters* descParams = gFr->descriptorParameters;
-	if (!descParams) return;
-	ReadDescriptorProcs* readProcs = gFr->descriptorParameters->readDescriptorProcs;
-	if (!readProcs) return;
-	if (!descParams->descriptor) return;
-	if (descParams->playInfo != plugInDialogDisplay) return;
-
-	PAN.initPrefs = false;
-}
-
-static int DoStart(void) {
-	
-	// if scripting, check to see if user wants dialog box
-    if (PAN.initPrefs) checkPrefs();
-	if (panTools()) return 1;
-	return 0;
-}
-
-static void DoPrepare(void) {
-	// we'll allocate our own space
-	gFr->bufferSpace = 0;
-	gFr->maxSpace = 0;
-}
-
-static void DoParameters(void) {
-	PAN.initPrefs = false;
-}
-
+SPBasicSuite   *sSPBasic  = NULL;
+StaticData     *gData     = NULL;
+ParamData      *gParam    = NULL;
+FilterRecord   *gFr       = NULL;
+int16          *gResult   = NULL;
+
+
+/**
+* Display a message box
+* @param[in] fmt formatted string to display
+* @param[in] ... additional items to add to string
+* @return 1
+* @todo error check for memory overflow on buf
+**/
+int display(const char *fmt, ...)
+{
+  int  BuffSize = 0;
+  char buf[400];
+  va_list ap;
+
+  va_start(ap, fmt);
+  BuffSize = sizeof(buf)/sizeof(char);
+#if _MSC_VER >= 1400
+  vsprintf_s(buf, BuffSize, fmt, ap);
+#else
+  vsprintf(buf, fmt, ap);
+#endif
+  MessageBox(NULL, buf, "Info", MB_OK);
+  va_end(ap);
+  return 1;
+}
+
+/**
+* Init Parameters
+* @return none
+**/
+static void initParameters()
+{
+}
+
+/**
+* Init Data
+* @return none
+**/
+static void initData()
+{
+  memset(gData, 0, sizeof(StaticData));
+  memInit(memStatic);
+  memInit(memDynamic);
+  DLL.initDLL = false;
+}
+
+
+/**
+* Lock Data
+* @param[in] data pointer to the data to lock
+* @return none
+**/
+static void lockData(int32 *data)
+{
+  bool init = false;
+  BufferProcs *bufferProcs = gFr->bufferProcs;
+
+  if (*data == NULL)
+  {
+    // create handle
+    BufferID h;
+    if (bufferProcs->allocateProc(sizeof(StaticData), &h))
+    {
+      *gResult = memFullErr;
+      display("lockData: allocateProc");
+      return;
+    }
+
+    *data = (int32)h;
+    init = true;
+  }
+
+  gData = (StaticData *)bufferProcs->lockProc((BufferID)(*data), true);
+  if (gData == NULL)
+  {
+    *gResult = memFullErr;
+    display("lockData: lockProc");
+    return;
+  }
+
+  if (init)
+  {
+    initData();
+  }
+  
+  return;
+}
+
+/**
+* Unlock Data
+* @param[in] data pointer to the data to unlock
+* @return none
+**/
+static void unlockData(int32 *data)
+{
+  if (*data != NULL)
+  {
+    gFr->bufferProcs->unlockProc((BufferID)(*data));
+  }
+}
+
+/**
+* Lock the Parameters
+* @return none
+**/
+static void lockParameters()
+{
+  bool init = false;
+  BufferProcs *bufferProcs = gFr->bufferProcs;
+
+  if (gFr->parameters == NULL)
+  {
+    // create handle
+    BufferID h;
+    if (bufferProcs->allocateProc(sizeof(ParamData), &h))
+    {
+      *gResult = memFullErr;
+      display("lockParameters: allocateProc");
+      return;
+    }
+
+    gFr->parameters = (Handle)h;
+    init = true;
+  }
+
+  // lock handle
+  gParam = (ParamData *)bufferProcs->lockProc((BufferID)(gFr->parameters), true);
+  if (gParam == NULL)
+  {
+    *gResult = memFullErr;
+    display("lockParameters: lockProc");
+    return;
+  }
+  
+  if (init)
+  {
+    initParameters();
+  }
+}
+
+/**
+* Unlock the Parameters
+* @return none
+**/
+static void unlockParameters()
+{
+  if (gFr->parameters != NULL)
+  {
+    gFr->bufferProcs->unlockProc((BufferID)(gFr->parameters));
+  }
+}
+
+/**
+* Lock Data, Parameters, memStatic, and memDynamic
+* @param[in] data pointer to the handle to lock
+* @return none
+**/
+static void lockHandles(int32 *data)
+{
+  lockData(data);
+  lockParameters();
+  memLockHandles(memStatic);
+  memLockHandles(memDynamic);
+}
+
+/**
+* Unlock Data, Parameters, memStatic, and memDynamic
+* @param[in] data pointer to the handle to unlock
+* @return none
+**/
+static void unlockHandles(int32 *data)
+{
+  memUnlockHandles(memDynamic);
+  memFreeAll(memDynamic);
+  memUnlockHandles(memStatic);
+  unlockParameters();
+  unlockData(data);
+}
+
+/**
+* Do Continue
+* @return none
+**/
+static void DoContinue(void)
+{
+  gFr->inRect.top = 0;
+  gFr->inRect.bottom = 0;
+  gFr->inRect.left = 0;
+  gFr->inRect.right = 0;
+  gFr->outRect.top = 0;
+  gFr->outRect.bottom = 0;
+  gFr->outRect.left = 0;
+  gFr->outRect.right = 0;
+  gFr->maskRect.top = 0;
+  gFr->maskRect.bottom = 0;
+  gFr->maskRect.left = 0;
+  gFr->maskRect.right = 0;
+}
+
+/**
+* Do Finish
+* @return 0
+**/
+static int DoFinish(void)
+{
+  return 0;
+}
+
+/**
+* Check Prefs
+* @return none
+**/
+static void checkPrefs()
+{
+  // force dialog box if requested by script
+  PIDescriptorParameters *descParams = gFr->descriptorParameters;
+  if (!descParams)
+  {
+    return;
+  }
+  ReadDescriptorProcs *readProcs = gFr->descriptorParameters->readDescriptorProcs;
+  if ( !readProcs 
+    || !descParams->descriptor
+    || descParams->playInfo != plugInDialogDisplay )
+  {
+    return;
+  }
+
+  PAN.initPrefs = false;
+}
+
+/**
+* Determine if displaying dialog box
+* @return 1 if displaying dialog, 0 if not
+**/
+static int DoStart(void)
+{
+  // if scripting, check to see if user wants dialog box
+  if (PAN.initPrefs)
+  {
+    checkPrefs();
+  }
+  if (panTools())
+  {
+    return 1;
+  }
+
+  return 0;
+}
+
+/**
+* Do Prepare
+* @return none 
+**/
+static void DoPrepare(void)
+{
+  // we'll allocate our own space
+  gFr->bufferSpace = 0;
+  gFr->maxSpace = 0;
+}
+
+/**
+* Do Parameters
+* @return none 
+**/
+static void DoParameters(void)
+{
+  PAN.initPrefs = false;
+}
+
+/**
+* the main entry point for the plugin
+* @param[in] selector
+* @param[in,out] filterParamBlock
+* @param[in,out] data
+* @param[out] result 
+* @return none 
+**/
 DLLExport MACPASCAL void PluginMain(const int16 selector,
-								    FilterRecord *filterParamBlock,
-								    int32 *data,
-								    int16 *result)
-{
-		// update our global parameters
-	gFr = filterParamBlock;
-	gResult = result;
-	*gResult = noErr;
-
-	// handle About dialog
-	if (selector == filterSelectorAbout) {
-		sSPBasic = ((AboutRecordPtr)filterParamBlock)->sSPBasic;
-		dlgAbout((AboutRecordPtr)filterParamBlock);
-		return;
-	}
-	sSPBasic = filterParamBlock->sSPBasic;
-
-	lockHandles(data);
-
-	if (*gResult != noErr) return;
-
-	// do the command according to the selector
-	switch (selector) {
-	case filterSelectorParameters:
-		DoParameters();
-		break;
-	case filterSelectorPrepare:
-		DoPrepare();
-		break;
-	case filterSelectorStart:
-		DoStart();
-		break;
-	case filterSelectorContinue:
-		DoContinue();
-		break;
-	case filterSelectorFinish:
-		DoFinish();
-		break;
-	}
-
-	unlockHandles(data);
-}
+                    FilterRecord *filterParamBlock,
+                    int32 *data,
+                    int16 *result)
+{
+    // update our global parameters
+  gFr = filterParamBlock;
+  gResult = result;
+  *gResult = noErr;
+
+  // handle About dialog
+  if (selector == filterSelectorAbout)
+  {
+    sSPBasic = ((AboutRecordPtr)filterParamBlock)->sSPBasic;
+    dlgAbout((AboutRecordPtr)filterParamBlock);
+    return;
+  }
+  sSPBasic = filterParamBlock->sSPBasic;
+
+  lockHandles(data);
+
+  if (*gResult != noErr)
+  {
+    return;
+  }
+
+  // do the command according to the selector
+  switch (selector)
+  {
+  case filterSelectorParameters:
+    DoParameters();
+    break;
+  case filterSelectorPrepare:
+    DoPrepare();
+    break;
+  case filterSelectorStart:
+    DoStart();
+    break;
+  case filterSelectorContinue:
+    DoContinue();
+    break;
+  case filterSelectorFinish:
+    DoFinish();
+    break;
+  }
+
+  unlockHandles(data);
+}