Beispiel #1
0
void
CannyGradientImage::PRIVATE_CannyImage(double aSigma)
{
  // When we start this function, we already know by construction
  // that _dxImg and _dyImg contain copies of the original image
  // to be derived.

  // Create Gaussian masks
  Mask1dGauss   sMask(aSigma); // smoothing mask
  Mask1dGaussD1 dMask(aSigma); // derivation mask

  FConvolImage* dx = new FConvolImage(_dxImg, dMask, QGE_AXIS_X);
  FConvolImage* dy = new FConvolImage(   *dx, sMask, QGE_AXIS_Y);

  // This was _dxImg
  _dxImg = *dy;

  delete dx;
  delete dy;

  dx = new FConvolImage(_dyImg, sMask, QGE_AXIS_X);
  dy = new FConvolImage(   *dx, dMask, QGE_AXIS_Y);

  // And this was _dyImg
  _dyImg = *dy;

  delete dx;
  delete dy;
}
Beispiel #2
0
void CVarDefMap::ClearKeys(LPCTSTR mask)
{
	ADDTOCALLSTACK("CVarDefMap::ClearKeys");
	if ( mask && *mask )
	{
		if ( !m_Container.size() )
			return;

		CGString sMask(mask);
		sMask.MakeLower();

		DefSet::iterator i = m_Container.begin();
		CVarDefCont * pVarBase = NULL;

		while ( i != m_Container.end() )
		{
			pVarBase = NULL;
			pVarBase = (*i);

			if ( pVarBase && ( strstr(pVarBase->GetKey(), sMask.GetPtr()) ) )
			{
				DeleteAtIterator(i);
				i = m_Container.begin();
			}
			else
			{
				++i;
			}
		}
	}
	else
	{
		Empty();
	}
}
Beispiel #3
0
void CThread::MakeList(CString scString, TPStrList& aMasks)
{
	if (scString.Empty()) return;

	CString sString(scString);
	sString.ToLower();

	WORD wStart = 0;
	WORD wPos = 0;
	while (wPos < sString.Length())
	{		
		if (sString[wPos] == TEXT(';'))
		{
			CString sMask(sString, wStart, wPos - wStart);
			sMask.Trim();
			aMasks.Add(new CString(sMask));

			wPos++;
			wStart = wPos;
		}
		else if (sString[wPos] == TEXT('\r'))
		{
			CString sMask(sString, wStart, wPos - wStart);
			sMask.Trim();
			aMasks.Add(new CString(sMask));

			wPos += 2;
			wStart = wPos;
		}
		else if (wPos == sString.Length() - 1)
		{
			CString sMask(sString, wStart, wPos - wStart + 1);
			sMask.Trim();
			aMasks.Add(new CString(sMask));
			break;
		}
		else
			wPos++;
	}
}
wxGISFeatureDetailsPanel::wxGISFeatureDetailsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
{
	wxImage img = wxBitmap(small_arrow_xpm).ConvertToImage();
	wxBitmap oDownArrow = img.Rotate90();
	wxBoxSizer* bSizer1;
	bSizer1 = new wxBoxSizer( wxVERTICAL );

	wxFlexGridSizer* fgSizer1;
	fgSizer1 = new wxFlexGridSizer( 1, 3, 0, 0 );
	fgSizer1->AddGrowableCol( 1 );
	fgSizer1->SetFlexibleDirection( wxBOTH );
	fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );

	m_staticText1 = new wxStaticText( this, wxID_ANY, _("Location:"), wxDefaultPosition, wxDefaultSize, 0 );
	m_staticText1->Wrap( -1 );
	fgSizer1->Add( m_staticText1, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );

	m_textCtrl = new wxTextCtrl(  this, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxGenericValidator( &m_sLocation ));
	//m_textCtrl->Enable( false );

	fgSizer1->Add( m_textCtrl, 1, wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );

	m_bpSelStyleButton = new wxBitmapButton( this, ID_MASKBTN, oDownArrow, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
	m_bpSelStyleButton->SetToolTip( _("Select location text style") );

	fgSizer1->Add( m_bpSelStyleButton, 0, wxRIGHT, 5 );

	bSizer1->Add( fgSizer1, 0, wxEXPAND, 5 );

	m_listCtrl = new wxListCtrl( this, ID_LISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_HRULES | wxLC_VRULES );
	m_listCtrl->InsertColumn(0, _("Field"), wxLIST_FORMAT_LEFT, 90);
	m_listCtrl->InsertColumn(1, _("Value"), wxLIST_FORMAT_LEFT, 120);

	m_ImageListSmall.Create(16, 16);

    wxBitmap SmallA(small_arrow_xpm);// > arrow
    wxImage SmallImg = SmallA.ConvertToImage();
    SmallImg = SmallImg.Rotate90();
    wxBitmap SmallDown(SmallImg);
    SmallImg = SmallImg.Mirror(false);
    wxBitmap SmallUp(SmallImg);

	m_ImageListSmall.Add(wxBitmap(SmallDown));
	m_ImageListSmall.Add(wxBitmap(SmallUp));
    m_ImageListSmall.Add(wxBitmap(field_16_xpm));

	m_listCtrl->SetImageList(&m_ImageListSmall, wxIMAGE_LIST_SMALL);

    m_listCtrl->Bind(wxEVT_LEFT_DOWN, &wxGISFeatureDetailsPanel::OnMouseLeftUp, this);

    //not work on GTK
    //m_listCtrl->Bind(wxEVT_SET_CURSOR, &wxGISFeatureDetailsPanel::OnSetCursor, this);

    m_listCtrl->Bind(wxEVT_MOTION, &wxGISFeatureDetailsPanel::OnMouseMove, this);

	bSizer1->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );

	this->SetSizer( bSizer1 );
	this->Layout();
	m_pCFormat = new wxGISCoordinatesFormatMenu();
    wxString sMask( wxT("X: dd.dddd[ ]Y: dd.dddd") );
	wxGISAppConfig oConfig = GetConfig();
    m_sAppName = GetApplication()->GetAppName();
	if(oConfig.IsOk())
    {
        sMask = oConfig.Read(enumGISHKCU, m_sAppName + wxString(wxT("/identifydlg/format_mask")), sMask);
    }

	m_pCFormat->Create(sMask);

	m_pMenu = new wxMenu;
	m_pMenu->Append(ID_WG_COPY_NAME, wxString::Format(_("Copy %s"), _("Field")), wxString::Format(_("Copy '%s' value"), _("Field")), wxITEM_NORMAL);
	m_pMenu->Append(ID_WG_COPY_VALUE, wxString::Format(_("Copy %s"), _("Value")), wxString::Format(_("Copy '%s' value"), _("Value")), wxITEM_NORMAL);
	m_pMenu->Append(ID_WG_COPY, _("Copy"), _("Copy rows"), wxITEM_NORMAL);
	m_pMenu->Append(ID_WG_HIDE, _("Hide"), _("Hide rows"), wxITEM_NORMAL);
	m_pMenu->AppendSeparator();
	m_pMenu->Append(ID_WG_RESET_SORT, wxString(_("Remove sort")), wxString(_("Remove sort")), wxITEM_NORMAL);
	m_pMenu->Append(ID_WG_RESET_HIDE, wxString(_("Show all rows")), wxString(_("Show all rows")), wxITEM_NORMAL);
	m_pMenu->AppendSeparator();
    //encoding
    wxMenu *pEncMenu = new wxMenu;
    //add encodings
    wxString sDefault;
    for (int i = wxFONTENCODING_DEFAULT; i < wxFONTENCODING_MAX; i++)
    {
        wxString sDesc = wxFontMapper::GetEncodingDescription((wxFontEncoding)i);
        if (!sDesc.StartsWith(_("Unknown")))
        {
            wxMenuItem* pMItem = pEncMenu->AppendRadioItem(ID_WG_ENCODING_START + i, sDesc);
            if (i == wxFONTENCODING_DEFAULT)
                pMItem->Check();
        }
    }

    m_pMenu->AppendSubMenu(pEncMenu, _("Encodings"), _("Change text encoding"));

    m_currentSortCol = 0;
    m_nSortAsc = 0;
	m_dfX = 0;
	m_dfY =	0;
}
Beispiel #5
0
static bool localUpdate( const char * pDest, const char * pSrc )
{
	bool bRestart = false;

	ASSERT( pDest[ strlen(pDest) - 1 ] == PATH_SEPERATORC );
	ASSERT( pSrc[ strlen(pSrc) - 1 ] == PATH_SEPERATORC );

	Path srcPath( pSrc );
	CharString sMask( srcPath.directory() + "*" );
	FindFile ff( sMask );

	// make sure destination directory exists
	FileDisk::createDirectory( pDest );

	// move files
	for(int i=0;i<ff.fileCount();i++)
	{
		CharString dstFile;
		dstFile.format( "%s%s", pDest, ff.file(i) );
		CharString srcFile;
		srcFile.format( "%s%s", pSrc, ff.file(i) );

		bool copyFile = false;
		bool copyUpdate = false;
		if ( FileDisk::fileExists( dstFile ) )
		{
			// make sure date of src file is newer
			if ( FileDisk::fileDate( srcFile ) > FileDisk::fileDate( dstFile ) )
			{
				copyFile = true;

				// attempt to delete the old file, if it fails then use MirrorUpdate
				if (! FileDisk::deleteFile( dstFile ) )
					copyUpdate = true;
			}
		}
		else
			copyFile = true;

		bRestart |= copyFile;

		if ( copyFile && copyUpdate )
			FileDisk::copyFile( srcFile, dstFile + ".upd" );
		else if ( copyFile )
			FileDisk::copyFile( srcFile, dstFile );
	}

	// recurse into subdirectories
	for(int i=0;i<ff.directoryCount();i++)
	{
		if ( ff.directory(i)[0] == '.' )
			continue;

		CharString newDst;
		newDst.format( "%s%s" PATH_SEPERATOR, pDest, ff.directory( i ) );
		CharString newSrc;
		newSrc.format( "%s%s" PATH_SEPERATOR, pSrc, ff.directory( i ) );

		bRestart |= localUpdate( newDst, newSrc );
	}

	return bRestart;
}
Beispiel #6
0
bool FileMisc::CopyFolder(const TCHAR* szSrcFolder, const TCHAR* szDestFolder, BOOL bIncludeSubFolders,
	const TCHAR* szFileMask, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	if (!CreateFolder(szDestFolder))
	{
		return false;
	}

	if (!FolderExists(szSrcFolder))
	{
		return false;
	}

	// if a file mask has been specified with subfolders we need to do 2 passes on each folder,
	// one for the files and one for the sub folders
	int nPasses = (bIncludeSubFolders && (szFileMask && lstrlen(szFileMask))) ? 2 : 1;

	bool bResult = true;
	bool bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);

	for (int nPass = 0; !bStopped && nPass < nPasses; nPass++)
	{
		CString sSearchSpec(szSrcFolder), sMask(szFileMask);

		if (sMask.IsEmpty() || nPass == 1) // (nPass == 1) == 2nd pass (for folders)
		{
			sMask = "*.*";
		}

		TerminatePath(sSearchSpec);
		sSearchSpec += sMask;

		WIN32_FIND_DATA finfo;
		HANDLE hSearch = NULL;

		if ((hSearch = FindFirstFile(sSearchSpec, &finfo)) != INVALID_HANDLE_VALUE)
		{
			do
			{
				if (bProcessMsgLoop)
				{
					Misc::ProcessMsgLoop();
				}

				if (finfo.cFileName[0] != '.')
				{
					CString sSource(szSrcFolder);
					sSource += "\\";
					sSource += finfo.cFileName;

					CString sDest(szDestFolder);
					sDest += "\\";
					sDest += finfo.cFileName;

					if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
					{
						if ((nPass == 1 || nPasses == 1) && bIncludeSubFolders)
						{
							bResult = CopyFolder(sSource, sDest, hTerminate);
						}
					}
					else if (nPass == 0) // files
					{
						bResult = (TRUE == CopyFile(sSource, sDest, FALSE));
					}
				}

				bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
			}
			while (!bStopped && bResult && FindNextFile(hSearch, &finfo));

			FindClose(hSearch);
		}
	}

	return (!bStopped && bResult);
}
Beispiel #7
0
bool FileMisc::DeleteFolderContents(const TCHAR* szFolder, BOOL bIncludeSubFolders, const TCHAR* szFileMask,
	HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	// if the dir does not exists just return
	if (!FolderExists(szFolder))
	{
		return true;
	}

	// if a file mask has been specified with subfolders we need to do 2 passes on each folder,
	// one for the files and one for the sub folders
	int nPasses = (bIncludeSubFolders && (szFileMask && lstrlen(szFileMask))) ? 2 : 1;

	bool bResult = true;
	bool bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);

	for (int nPass = 0; !bStopped && nPass < nPasses; nPass++)
	{
		CString sSearchSpec(szFolder), sMask(szFileMask);

		if (sMask.IsEmpty() || nPass == 1) // (nPass == 1) == 2nd pass (for folders)
		{
			sMask = "*.*";
		}

		TerminatePath(sSearchSpec);
		sSearchSpec += sMask;

		WIN32_FIND_DATA finfo;
		HANDLE hSearch = NULL;

		if ((hSearch = FindFirstFile(sSearchSpec, &finfo)) != INVALID_HANDLE_VALUE)
		{
			do
			{
				if (bProcessMsgLoop)
				{
					Misc::ProcessMsgLoop();
				}

				if (finfo.cFileName[0] != '.')
				{
					CString sItem(szFolder);
					sItem += "\\";
					sItem += finfo.cFileName;

					if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
					{
						if (bIncludeSubFolders && (nPass == 1 || nPasses == 1))
						{
							if (DeleteFolderContents(sItem, TRUE, szFileMask, hTerminate, bProcessMsgLoop))
							{
								if (!szFileMask || !lstrlen(szFileMask))
								{
									bResult = (RemoveDirectory(sItem) == TRUE);
								}
							}
						}
					}
					else
					{
						bResult = (DeleteFile(sItem) == TRUE);
					}
				}

				bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
			}
			while (!bStopped && bResult && FindNextFile(hSearch, &finfo));

			FindClose(hSearch);
		}
	}

	return (!bStopped && bResult);
}