Exemplo n.º 1
0
void CCueSheet::OnBnClickedButton1()
{
	CreateSheet();

    CUStringConvert strCnv;
    CUStringConvert strCnv1;

    CDInfo& cdInfo = m_pDoc->GetCDInfo();
    CUString cueSheetName;
    DWORD cdID = cdInfo.GetDiscID();

    cueSheetName.Format( _W( "%s%08X.cue" ), 
        (LPCWSTR)g_config.GetMP3OutputDir(),
        cdID );

    CUString strFilter = g_language.GetString( IDS_CUESHEETFILESELECTION );

    CFileDialog cueFileDlg(
        FALSE,
        _T( ".cue" ),
        strCnv.ToT( cueSheetName ),
        OFN_OVERWRITEPROMPT,
        strCnv1.ToT( strFilter ) );

    if ( IDOK == cueFileDlg.DoModal() )
    {
        CUString strFileName = CUString( cueFileDlg.GetPathName() );
        FILE* pFile = CDexOpenFile( strFileName, _W( "w" ) );

        if ( pFile )
        {
#ifdef UNICODE
            BYTE btBOM[] = { 0xEF, 0xBB, 0xBF };
            fwrite( &btBOM, sizeof( btBOM ), 1, pFile );
#endif
            LPCSTR lpszUtf = strCnv.ToUTF8( m_strCueSheet );
            fwrite( lpszUtf, 
                    strlen( lpszUtf ), 
                    1, 
                    pFile );
            fclose( pFile );
        }

    }
}
Exemplo n.º 2
0
	bool CUIndexFile::Load( char *prefix )
	{
		Close();
		char buf[1024];
		sprintf( buf, "%s.uidx-key", prefix );
		if( key_file.OpenFile( buf, "r" ) == false )
		{
			return false;
		}

		sprintf( buf, "%s.uidx-value", prefix );
		if( value_file.OpenFile( buf, "r" ) == false )
		{
			return false;
		}

		info_map.clear();
		while( true )
		{
			CUString line;
			if( key_file.ReadLine( line ) == false ) break;
			CUStringList list( line, "\t" );
			if( list.GetSize() != 4 )	{
				fprintf( stderr, "Error: Invalid format: %s\n", line.GetStr() );
				return false;
			}

			if( info_map.find( list.GetAt(0) ) != info_map.end() )
			{
				fprintf( stderr, "Error: Duplicated key: %s\n", list.GetAt(0) );
				return false;
			}


			CUIndexFileInfo info;
			info.start = atol( list.GetAt(1) );
			info.end   = atol( list.GetAt(2) );
			if( strcmp( list.GetAt(3), "0" ) == 0 ) info.enable = false;
			else info.enable = true;

			info_map[ list.GetAt(0) ] = info;
		}

		return true;
	}
Exemplo n.º 3
0
void CLanguage::ReportMissingID( int nID, const CUString& strEnglish, int nType ) const
{
    if ( g_nReportMissing )
    {
        BOOL		bAdd = TRUE;
        CUString    strWrite;
        CString		strRead;
        CStdioFile	cFile;
        CUStringConvert strCnv;

        switch ( nType )
        {
        case 0:
            strWrite.Format( _W( "#%04X# \"%s\"" ), nID, (LPCWSTR)strEnglish );
            break;
        case 1:
            strWrite.Format( _W( "#M%04X# \"%s\"" ), nID, (LPCWSTR)strEnglish );
            break;
        case 2:
            strWrite.Format( _W( "#D%08X# \"%s\"" ), nID, (LPCWSTR)strEnglish );
            break;
        }

        EncodeTab( strWrite );

        if ( cFile.Open(	_T( "c:\\temp\\missing.txt" ),
                            CFile::modeReadWrite | CFile::modeNoTruncate | CFile::modeCreate ) )
        {
            while ( cFile.ReadString( strRead ) )
            {
                if ( strWrite.Find( CUString( strRead ) ) >=0 )
                {
                    bAdd = FALSE;
                    break;
                }
            }
            if ( bAdd )
            {
                cFile.WriteString( strCnv.ToT( strWrite + _W( "\n" ) ) );
            }
            cFile.Close();
        }
    }
}
Exemplo n.º 4
0
void CMP3ToWavDlg::OnTimer(UINT nIDEvent) 
{
	CUString strLang;
	CString strTmp;
	CUString strTime;

	strTmp.Format( _T( " (%d/%d)" ), m_wCurrentTrack+1, m_nTotalFiles );

	// Update the time statistics based on the percentage completed
	m_TimeTrack.Calculate( m_nPercentCompleted );

	// Call the default dialog timer event
	CDialog::OnTimer( nIDEvent );

	// Update progress bar position
	m_Progress.SetPos( m_nPercentCompleted );

	m_strFileName = m_strWavFileName + strTmp;

	if ( m_strFileName.GetLength() > 65 )
	{
		int nPos = m_strFileName.Find( _T( ":" ) );

		if ( nPos < 0 )
			nPos = 0;

		m_strFileName = m_strFileName.Left( nPos + 2 ) +
						_T( " ... " ) +
						m_strFileName.Right( 60 ) ;

	}


	// Get time estimate
	strLang = g_language.GetString( IDS_ELAPSED_TIME );

	strTime.Format( strLang, (LPCWSTR)m_TimeTrack.GetElapsedString(), (LPCWSTR)m_TimeTrack.GetRemainingString(), (LPCWSTR)m_TimeTrack.GetEstimateString() );

	m_strTimeInfo = strTime;

	// Update the controls
	UpdateData(FALSE);
}
Exemplo n.º 5
0
BOOL CGenreEditDlg::OnInitDialog() 
{
	CUString strLang;

	CDialog::OnInitDialog();
	
	// translate dialog resources
	g_language.InitDialogStrings( this, IDD );

    CUStringConvert strCnv;

	strLang = g_language.GetString( IDS_GENRE_NAME );
	m_List.InsertColumn( 0, strCnv.ToT( strLang ), LVCFMT_LEFT, 130, 0 );
	strLang = g_language.GetString( IDS_GENRE_CDDB_NAME );
	m_List.InsertColumn( 1, strCnv.ToT( strLang ), LVCFMT_LEFT, 100, 0 );
	strLang = g_language.GetString( IDS_GENRE_ID3V1ID );
	m_List.InsertColumn( 2, strCnv.ToT( strLang ), LVCFMT_LEFT, 70, 0 );

	m_nInsertPosition = 0;
	
	// Fill Category
	for (WORD i=0; i < g_GenreTable.GetNumGenres(); i++)
	{
		if ( g_GenreTable.CanBeModified( i ) )
		{
			CUString strNmbr;
			strNmbr.Format( _W( "%d" ) , g_GenreTable.GetID3V1ID( i) );
             
            m_List.InsertItem( m_nInsertPosition, strCnv.ToT( g_GenreTable.GetGenre( i ) ) );
			m_List.SetItemText( m_nInsertPosition, 1, strCnv.ToT( g_GenreTable.GetCDDBGenre( i ) ) );
			m_List.SetItemText( m_nInsertPosition, 2, strCnv.ToT( strNmbr ) );
			m_nInsertPosition++;
		}
	}

	m_Spin.SetRange( 0, 255 );

	m_List.SetCurSel( 0 );

	SetControls( 0 );

	return TRUE;
}
Exemplo n.º 6
0
void CRipInfoDB::SetRipInfoFinshedOK(CUString strRipInfo, ULONG crc )
{
    CUStringConvert strCnv;

	// Open file for append
    m_pFile = CDexOpenFile( m_strFileName, _W( "a+" ) );

	if ( m_pFile )
	{
        CUString strOut;

        strOut.Format( _W( "[%03d][C] : %s CRC=%08X\n" ), m_nTrack, (LPCWSTR) strRipInfo, crc );

		_fputts( strCnv.ToT( strOut ), m_pFile );

		fclose( m_pFile );

		m_pFile = NULL;
	}
}
Exemplo n.º 7
0
void CRipInfoDB::SetRipInfo(CUString strRipInfo)
{
	// Open file for append
    CUStringConvert strCnv;

    m_pFile = CDexOpenFile( m_strFileName, _W( "a+" ) );

	if ( NULL != m_pFile )
	{
        CUString strOut;

        strOut.Format( _W( "[%03d][I] : %s\n" ), m_nTrack, (LPCWSTR)strRipInfo  );

		_fputts( strCnv.ToT( strOut ), m_pFile );

		fclose( m_pFile );

		m_pFile = NULL;
	}
}
Exemplo n.º 8
0
void CLanguage::SearchLanguageFiles( )
{
    CUString	strSearchName;
    CFileFind	fileFind;
    BOOL		bFound = FALSE;

//    PVOID pTest = (PVOID)m_strLanguageDir;
//CString str;
//CString str1 =_T( "CSTRING1" );
//CString str2 =_T( "CSTRING2" );
//CUString str3( _W("CUSTRING" ));
//    str.Format(	_W( "%s" ),str1 );
//    str.Format(	_W( "%s" ),(LPCWSTR)str3 );
//    str.Format(	_W( "%s\\lang\\*%s" ),
//							str1,
//							str3);


//    CUString* p1 = &str3;
//    CString* p2 = &str1;

    // build the filename search string
    strSearchName.Format( _W( "%s\\lang\\*%s" ), (LPCWSTR)m_strLanguageDir, (LPCWSTR)m_strLangFileExt );

    CUStringConvert strCnv;

    bFound = fileFind.FindFile( strCnv.ToT( strSearchName ) );

    while ( bFound )
    {
        bFound = fileFind.FindNextFile();

        CUString strFileName = fileFind.GetFileName();

        CUString strLanguage = strFileName.Left( strFileName.GetLength() - m_strLangFileExt.GetLength() );

        m_vLangFiles.push_back( strLanguage );
    }
    sort( m_vLangFiles.begin(), m_vLangFiles.end() );
}
Exemplo n.º 9
0
HRESULT CLX3DViewer::OnDraw(ATL_DRAWINFO& di)
{
	CRect& rc = *(CRect*)di.prcBounds;
	CDCHandle dc(di.hdcDraw);

	{
		{
			CUString str = "left/right/up/down";
			dc.TextOut(0, 0, str, str.GetLength());
		}
		{
			CUString str = "left/right/forward/backward";
			dc.TextOut(125, 0, str, str.GetLength());
		}
		{
			CUString str = "rotate";
			dc.TextOut(315, 0, str, str.GetLength());
		}

		/*
		CUString str;
		str.Format("%g", m_currentSpeed);
		TextOut(hdc, 0, 0, str, str.GetLength());
		*/
	}

	{
		m_slider.Draw(dc);
	}

	return 1;	// ??
	return S_OK;
}
Exemplo n.º 10
0
CUString	CLanguage::GetString( const DWORD nID ) const
{
    CUString strRet;

    DWORD	dwIndex;

    for ( dwIndex = 0; dwIndex < m_vStrings.size(); dwIndex++ )
    {
        if ( m_vStrings[ dwIndex ].nID == nID )
        {
            strRet = m_vStrings[ dwIndex ].strValue;
            break;
        }
    }
    if ( strRet.IsEmpty() )
    {
        CString strResource;
        strResource.LoadString( nID );
        strRet = CUString( strResource );
#ifdef _DEBUG
        ReportMissingID( nID, strRet, 0 );
#endif
    }
    else
    {
#ifdef _DEBUG
        CString strResource;
        strResource.LoadString( nID );

        if ( 0 != strRet.Compare( CUString( strResource ) ) )
        {
            ReportChangedID( nID, CUString( strResource ), strRet, 0 );
        }
#endif
    }


    return strRet;
}
Exemplo n.º 11
0
UINT CAutoDetect::OnStartDetectionCache(void *lpParam)
{
    const int bufferSize = 65535;
	// create the stream buffer
	BYTE* pbtStream = new BYTE[ bufferSize ];

	// Read one chunk
    for ( DWORD loop = 1; loop < 100; loop++ )
    {
        DWORD numSectors = loop;
        LONG  sector = 0;

        __int64 startTime = PerformanceCounterGetTime();
        

        while ( numSectors > 0 )
        {
            DWORD readSectors = min( numSectors, 20 );
	        if	( CDEX_ERROR == CR_ReadBlockDirect( pbtStream, bufferSize, sector,  readSectors  ) )
	        {
		        ASSERT( FALSE );
		        return CDEX_ERROR;
	        }
            numSectors -= readSectors;
            sector += readSectors;
        }

        double deltaTime = PerformanceCounterGetDelta( startTime, PerformanceCounterGetTime() );

        CUString strOut;
        strOut.Format( _W( "sectors: %d  bytes: %d time(ms)=%10.3f transfer rate: %12.5f\n" ), loop, loop * 2352,deltaTime,(double)loop * 2352.0 / deltaTime / 1024.0 / 1024.0 );
        CUStringConvert strCnv; 
        OutputDebugString( strCnv.ToT( strOut ) );
    }
    delete [] pbtStream;
    return CDEX_OK;
}
Exemplo n.º 12
0
void CWebSite::OnRescan(GUID* iid)
{
	ATLASSERT(0);
	try
	{
		WCHAR sql[256];
		swprintf(sql, L"INSERT INTO files (filename) VALUES ('%s')", L"test.htm");

		_variant_t	va;
		m_siteDataConnection->Execute(sql, &va, ADODB::adCmdText);

		m_siteDataConnection->Close();
	}
	catch (_com_error &e)
   {
      _bstr_t bstrSource(e.Source());
      _bstr_t bstrDescription(e.Description());
      
		CUString msg;
      msg.Format("\n\tSource :  %s \n\tdescription : %s \n ",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);

		MessageBox(NULL, msg, "", MB_OK);
   }
}
Exemplo n.º 13
0
	bool CUniString::TokenizeAsciiEscapedUnicode()
	{
		CUString tmp = GetStr();
		while( true ) {
			int idx = tmp.Find( "\\u" );
			if( idx < 0 )	{
				for( int i=0; i<tmp.GetLength(); i++ ) {
					char ch = tmp.GetAt(i);
					if( (int)ch >= 0 ) {
						char buf[4]; sprintf( buf, "%c", ch );
						unichar_list.PushBack( buf );
						enc_byte += 1;
					}
					else {
						return false;
					}
				}
				break;
			}
			else {
				for( int i=0; i<idx; i++ ) {
					char ch = tmp.GetAt(i);
					if( (int)ch >= 0 ) {
						char buf[4]; sprintf( buf, "%c", ch );
						unichar_list.PushBack( buf );
						enc_byte += 1;
					}
					else {
						return false;
					}
				}
				CUString uni = tmp.SubStr( idx, idx+6 );
				uni = EncodeUTF8( uni );
				unichar_list.PushBack( uni );
				enc_byte += uni.GetLength();
				tmp = tmp.Mid( idx+6 );
			}
		}

		return true;
	}
Exemplo n.º 14
0
    void CLineImpl::Prepare(
        IZ_UINT8* dst,
        IZ_UINT pitch,
        IZ_UINT ascent,
        IFontHost* host)
    {
        IZ_UINT code = 0;

        CUString string;
        string.Init(m_Encode, m_Text, m_Bytes);

        string.BeginIter();

        IZ_UINT x = 0;

        for (;;)
        {
            if (m_FontHost->GetEncodeType() == E_FONT_CHAR_ENCODE_UNICODE)
            {
                code = string.GetNextAsUnicode();
            }
            else
            {
                code = string.GetNext();
            }

            if (code == 0)
            {
                break;
            }

            IZ_UINT id = m_FontHost->GetGlyphID(code);

            SGlyphMetrics metrics;

            if (m_FontHost->GetGlyphMetricsByID(id, metrics))
            {
                x = this->CopyImage(
                    id,
                    dst,
                    x,
                    pitch,
                    ascent);
            }
            else
            {
                // TODO
            }
        }

        string.EndIter();
    }
Exemplo n.º 15
0
    IZ_UINT CLineImpl::GetLineWidth()
    {
        if (m_Text == IZ_NULL)
        {
            return 0;
        }

        CUString string;
        string.Init(m_Encode, m_Text, m_Bytes);

        IZ_UINT width = 0;
        IZ_UINT code = 0;

        string.BeginIter();

        for (;;)
        {
            if (m_FontHost->GetEncodeType() == E_FONT_CHAR_ENCODE_UNICODE)
            {
                code = string.GetNextAsUnicode();
            }
            else
            {
                code = string.GetNext();
            }

            if (code == 0)
            {
                break;
            }

            SGlyphMetrics metrics;

            if (m_FontHost->GetGlyphMetricsByCode(code, metrics))
            {
                width += metrics.advance;
            }
            else
            {
                // TODO
            }
        }

        string.EndIter();

        return width;
    }
Exemplo n.º 16
0
int CGenreTable::AddEntry( INT nID3V1ID, const CUString& strGenre, const CUString& strCDDBGenre, bool bCanBeModified  )
{
	bool	bAdd = true;
	int		i = 0;

	GENRETABLEENTRY newEntry;

	newEntry.nID3V1ID = nID3V1ID;
	newEntry.strGenre = strGenre;
	newEntry.bCanBeModified = bCanBeModified;
	newEntry.strCDDBGenre = strCDDBGenre;

	newEntry.strGenre.TrimLeft();
	newEntry.strGenre.TrimRight();

	newEntry.strCDDBGenre.TrimLeft();
	newEntry.strCDDBGenre.TrimRight();

	// check if entry is already in this list
	for ( i = 0 ; i < (int)v_Entries.size(); i++ )
	{
		if ( GetID3V1ID( i )  == nID3V1ID  && 
			( 0 == strGenre.CompareNoCase( GetGenre( i ) ) ) )
		{
			bAdd = false;
		}
	}

	if ( true == bAdd )
	{
		v_Entries.push_back( newEntry );
//		Sort();
	}


	return v_Entries.size();
}
Exemplo n.º 17
0
CUString	CLanguage::GetMainMenuItem( const DWORD nID, const DWORD nItem )
{
    CUString strRet;

    strRet = GetSubMenuItem( nID );

    DWORD	dwIndex = 0;
    int		nStart  = 0;
    int		nStop   = strRet.GetLength();

    for ( dwIndex = 0; dwIndex < nItem; dwIndex++ )
    {
        nStart = strRet.Find( '#', nStart + 1 );

        if ( -1 == nStart )
        {
            break;
        }
    }

    if ( -1 != nStart )
    {
        nStop = strRet.Find( '#', nStart + 1 );

        if ( -1 == nStop )
        {
            nStop = strRet.GetLength();
        }
    }

    if ( nStop - nStart > 2 )
    {
        strRet = strRet.Mid( nStart + 1, nStop - nStart - 1 );
    }

    return strRet;
}
Exemplo n.º 18
0
UINT CAutoDetect::OnStartDetection(void *lpParam)
{
	bThreadActive=TRUE;
	int nInsertItem=0;
	int Endian=0;
	CUString strTmp;
	CUString strOk;
	CUString strRead;
	CUString strEbl;
	CUString strEnd;
	CUString strDens;
	CUString strAtapi;

	g_pThread->BeginWaitCursor();

	CAutoDetect* pDlg=(CAutoDetect*)lpParam;

	CDROMPARAMS cdTest;
	CR_GetCDROMParameters(&cdTest);


	CUString ReadMethodDescr[]={	_W("MMC     "),
								_W("Standard"),
								_W("Nec     "),
								_W("Sony    "),
								_W("MMC1    "),
								_W("MMC2    "),
								_W("MMC3    "),
								_W("Read C1 "),
								_W("Read C2 "),
								_W("Read C3 "),
								_W("MMC4    "),
								_W("????????")};

	CUString EnableDescr[]={		g_language.GetString( IDS_NONE ),
								g_language.GetString( IDS_STANDARD ),
								_W( "????" )};

	// Write header to Log file
	dbgFile.printf( "ATAPI\tREAD\t\tENABLE\t\t%DENS\tENDIAN\tRESULT\n" );

	for (int atapi = 0; atapi < NUMATAPI; atapi++ )
	{
		if ( 0 == atapi )
		{
			cdTest.DriveTable.bAtapi = FALSE;
			strAtapi = g_language.GetString( IDNO );
		}
		else
		{
			cdTest.DriveTable.bAtapi = TRUE;
			strAtapi = g_language.GetString( IDYES );
		}


		for (int rm = 0; rm < NUMREADMETHODS; rm++ )
		{
			strRead=ReadMethodDescr[ rm ];

			for (int en=0;en<NUMENABLEMODES;en++)
			{
				strEbl = EnableDescr[ en ];

				for (int ds=0;ds<NUMDENSITIES;ds++)
				{
					cdTest.DriveTable.nDensity = CheckDensities[ds];

					strDens.Format( _W( "%2x" ), cdTest.DriveTable.nDensity );

                    CUStringConvert strCnv;
                    CUStringConvert strCnv1;
                    CUStringConvert strCnv2;
                    CUStringConvert strCnv3;

					// Log what we are doing to file
					dbgFile.printf("%s\t%s\t%s\t%s\t",
                        strCnv.ToACP( strAtapi ),
                        strCnv1.ToACP( strRead ),
                        strCnv2.ToACP( strEbl ),
                        strCnv3.ToACP( strDens ) );

					cdTest.DriveTable.ReadMethod= READMETHOD( rm );

					switch ( cdTest.DriveTable.ReadMethod )  
					{
						case READMMC:
						case READMMC2:
						case READMMC3:
						case READMMC4:
							cdTest.DriveTable.SetSpeed= SPEEDMMC;
						break;
						case READSONY:
							cdTest.DriveTable.SetSpeed= SPEEDSONY;
						break;
						case READ10:
						case READNEC:
						case READC1:
						case READC2:
						case READC3:
						default:
							cdTest.DriveTable.SetSpeed= SPEEDNONE;
						break;
					}

					cdTest.DriveTable.EnableMode= ENABLEMODE(en);
					cdTest.DriveTable.Endian = ENDIAN_LITTLE;

					CDEX_ERR err = TestDrive( cdTest );

					strEnd = _T( "-" );

					if (err==CDEX_OK)
					{
						strOk = g_language.GetString( IDS_PASS );

						if ( ENDIAN_LITTLE == cdTest.DriveTable.Endian )
						{
							strEnd = g_language.GetString( IDS_LITTLEENDIAN );
						}
						else
						{
							strEnd = g_language.GetString( IDS_BIGENDIAN );
						}
					}
					else
					{
						strOk = g_language.GetString( IDS_FAIL );
					}


 					pDlg->m_List.InsertItem( nInsertItem, strCnv.ToT( strRead ) );
					pDlg->m_List.SetItemText( nInsertItem,1,strCnv.ToT( strAtapi ) );
					pDlg->m_List.SetItemText( nInsertItem,2,strCnv.ToT( strEbl ) );
					pDlg->m_List.SetItemText( nInsertItem,3,strCnv.ToT( strDens ) );
					pDlg->m_List.SetItemText( nInsertItem,4,strCnv.ToT( strEnd ) );
					pDlg->m_List.SetItemText( nInsertItem,5,strCnv.ToT( strOk ) );
					
					myDriveTable[nCurrentDrive++]=cdTest.DriveTable;

					ASSERT(nCurrentDrive<=nNumTableEntries);

					// Log success
					dbgFile.printf("%s\t%s\n",strEnd,strOk);

					nInsertItem++;

					::Sleep(0);

					if (pDlg->m_bAbort)
					{
						pDlg->	GetDlgItem(IDC_ABORT)->EnableWindow(FALSE);
						pDlg->GetDlgItem(IDOK)->EnableWindow(TRUE);
						g_pThread->EndWaitCursor();
						return 0;
					}
				}
			}
		}
	}

	pDlg->	GetDlgItem(IDC_ABORT)->EnableWindow(FALSE);
	pDlg->GetDlgItem(IDOK)->EnableWindow(TRUE);
	g_pThread->EndWaitCursor();

	return 0;
}
Exemplo n.º 19
0
CDEX_ERR CEncoderLameDll::OpenStream(CUString strOutFileName,DWORD dwSampleRate,WORD nChannels)
{
	CDEX_ERR bReturn = CDEX_OK;

	CUString strLang;
    CUStringConvert strCnv;

	ENTRY_TRACE( _T( "CEncoderLameDll::OpenStream( %s, %ld, %d" ),
				strCnv.ToT( strOutFileName + _W( "." ) + GetExtension() ),
				dwSampleRate,
				nChannels );


	DWORD dwInSampleRate = dwSampleRate;

	m_strStreamFileName = strOutFileName;

	// clear all config settings
	memset( &m_beConfig, 0, sizeof(m_beConfig) );

	// set the number of input channels
	m_nInputChannels = nChannels;

	// Divide sample rate by two for MPEG2
	if ( ( GetVersion() >=1 ) && ( dwInSampleRate >= 32000 ) )
	{
		m_dResampleRatio = 2.0;
		dwSampleRate = dwInSampleRate / 2;
	}

	// mask mode, just to be sure (due to an old hack)
	m_nMode &= 0x0F;

	// Do we have to downmix/upmix ?
	if ( BE_MP3_MODE_MONO == m_nMode )
	{
		if ( 2 == nChannels )
		{
			m_bDownMixToMono = TRUE;
		}
		else
		{
			m_bDownMixToMono = FALSE;
		}
	}
	else 
	{
		if ( 1 == nChannels )
		{
			m_bUpMixToStereo = TRUE;
		}
		else
			m_bUpMixToStereo=FALSE;
	}

	int	nCRC		= m_bCRC;
	int nVBR		= (nCRC>>12)&0x0F;
	int nVbrMethod	= (nCRC>>16)&0x0F;

	m_beConfig.dwConfig						= BE_CONFIG_LAME;
	m_beConfig.format.LHV1.dwStructVersion	= 1;
	m_beConfig.format.LHV1.dwStructSize		= sizeof(m_beConfig);
	m_beConfig.format.LHV1.dwSampleRate		= dwSampleRate;
	m_beConfig.format.LHV1.dwReSampleRate	= m_nOutSampleRate;
	m_beConfig.format.LHV1.nMode			= m_nMode; 
	m_beConfig.format.LHV1.dwBitrate		= m_nBitrate;
	m_beConfig.format.LHV1.dwMaxBitrate		= m_nMaxBitrate;
	m_beConfig.format.LHV1.dwMpegVersion	= (dwSampleRate>=32000)?MPEG1:MPEG2;
	m_beConfig.format.LHV1.dwPsyModel		= 0;
	m_beConfig.format.LHV1.dwEmphasis		= 0;
	m_beConfig.format.LHV1.bCRC				= nCRC&0x01;;
	m_beConfig.format.LHV1.bCopyright		= m_bCopyRight;
	m_beConfig.format.LHV1.bPrivate			= m_bPrivate;
	m_beConfig.format.LHV1.bOriginal		= m_bOriginal;

	// allways write the VBR header, even for CBR file
	m_beConfig.format.LHV1.bWriteVBRHeader	= TRUE;

	if ( nVbrMethod > 0 )
	{
		m_beConfig.format.LHV1.bEnableVBR		= TRUE;
		m_beConfig.format.LHV1.nVbrMethod		= (VBRMETHOD)(nVbrMethod-1) ;

		// is this the ABR method ?
		if ( ( VBR_METHOD_ABR + 1 ) == nVbrMethod )
		{
			// get the average bit rate
			m_beConfig.format.LHV1.dwVbrAbr_bps= LOWORD( GetUserN1() )*1000;
			m_beConfig.format.LHV1.nVBRQuality = 0 ;
		}
		else
		{
			// no ABR selected
			m_beConfig.format.LHV1.dwVbrAbr_bps = 0;
			m_beConfig.format.LHV1.nVBRQuality = nVBR ;
		}
	}

	// Get Quality from third nibble
	m_beConfig.format.LHV1.nPreset=( (nCRC >> 8 ) & 0x0F );

	m_fpOut= CID3Tag::SaveInitialV2Tag( strOutFileName + _W( "." ) + GetExtension(), GetId3V2PadSize() );
    //m_fpOut = CDexOpenFile( strOutFileName + _W( "." ) + GetExtension(), _W( "wb+" ) );

	if ( NULL == m_fpOut )
	{
		CUString strErr;

		strLang = g_language.GetString( IDS_ENCODER_ERROR_COULDNOTOPENFILE );

		strErr.Format( strLang, (LPCWSTR)CUString( strOutFileName + _W( "." ) + GetExtension() ) );

        CDexMessageBox( strErr );

		bReturn  = CDEX_FILEOPEN_ERROR;
	}


	if ( CDEX_OK == bReturn )
	{
		int nReturn = m_InitStream(	&m_beConfig,
									&m_dwInBufferSize,
									&m_dwOutBufferSize,
									&m_hbeStream );

		switch ( nReturn )
		{
			case CDEX_OK:
				// do nothing
			break;
			case -1:
				strLang = g_language.GetString( IDS_ENCODER_ERROR_SAMPLERATEBITRATEMISMATCH );
				CDexMessageBox( strLang );
				bReturn = CDEX_ERROR;
			break;
			case -2:
				strLang = g_language.GetString( IDS_ENCODER_ERROR_INVALIDINPUTSTREAM );
				CDexMessageBox( strLang );
				bReturn = CDEX_ERROR;
			break;
			default:
				strLang = g_language.GetString( IDS_ENCODER_ERROR_INVALIDINPUTSTREAM );
				CDexMessageBox( strLang );
				bReturn = CDEX_ERROR;
			break;

		}
	}

	if ( CDEX_OK == bReturn )
	{

		if ( ( GetVersion() >= 1 ) && ( dwInSampleRate >= 32000 ) )
		{
			// Add multiplcation factor for resampling
			m_dwInBufferSize *= 2;
		}

		if ( m_bDownMixToMono )
		{
			m_dwInBufferSize *= 2;
		}


		// Allocate Output Buffer size
		m_pbOutputStream = new BYTE[ m_dwOutBufferSize ];

		// Only expect halve the number of samples
		// in case we have to upsample
		if ( m_bUpMixToStereo )
		{
			// Allocate upsample Buffer size
			m_psInputStream = new SHORT[ m_dwInBufferSize ];

			m_dwInBufferSize /= 2;

		}
	}

	if ( CDEX_OK == bReturn ) 
	{
		// Initialize the input stream
		bReturn = InitInputStream();
	}


	EXIT_TRACE( _T( "CEncoderLameDll::OpenStream, return value %d" ), bReturn );

	return bReturn;
}
Exemplo n.º 20
0
CUString CTimeTrack::GetRemainingString()
{
	CUString strTmp;
	strTmp.Format( _W( "%02d:%02d" ), m_dwRemaining / 60, m_dwRemaining % 60 );
	return strTmp;
}
Exemplo n.º 21
0
CUString CTimeTrack::GetEstimateString()
{
	CUString strTmp;
	strTmp.Format( _W( "%02d:%02d" ), m_dwEstimated / 60, m_dwEstimated % 60 );
	return strTmp;
}
Exemplo n.º 22
0
CUString CTimeTrack::GetSpeedString()
{
	CUString strTmp;
	strTmp.Format( _W( "%4.1f" ), m_fSpeed);
	return strTmp;
}
Exemplo n.º 23
0
CDEX_ERR CEncoderFaacDll::OpenStream(CUString strOutFileName,DWORD dwSampleRate,WORD nChannels)
{
	CDEX_ERR	bReturn		= CDEX_OK;
	bool		bStereo		= true;
	CUString		strLang;

    CUStringConvert strCnv;

	ENTRY_TRACE( _T( "CEncoderFaacDll::OpenStream( %s, %d %d" ),
                strCnv.ToT( strOutFileName + _W( "." ) + GetExtension() ),
				dwSampleRate,
				nChannels );


	// setup number of input channels
	m_nInputChannels = nChannels;

	// setup number of output channels
	if ( ( m_nMode & 0xFFFF ) == BE_MP3_MODE_MONO )
	{
		bStereo = false;
	}

	// mixer setup
	if ( ( false == bStereo ) && ( 2 == nChannels ) )
	{
		m_bDownMixToMono  = TRUE;
	}
	else
	{
		m_bDownMixToMono = FALSE;
	}

	if (  ( true == bStereo ) && ( 1 == nChannels ) )
	{
		m_bUpMixToStereo = TRUE;
	}
	else
	{
		m_bUpMixToStereo = FALSE;
	}

		
	// try to get a handle
	m_handle = faacEncOpen( dwSampleRate,
							(bStereo == true )? 2 : 1,
							&m_dwInBufferSize,
							&m_dwOutBufferSize );


	if ( NULL == m_handle )
	{
		CUString strMsg;

		strLang = g_language.GetString( IDS_LOADLIBRARY_FAILED );

		strMsg.Format(	strLang , (LPCWSTR)CUString( ( g_config.GetAppPath() + _W( "\\" ) + m_strEncoderPath ) ) );

		CDexMessageBox( strMsg );
		
		LTRACE( _T( "CEncoderFaacDll::OpenStream Failed to get handle" ) );

		bReturn = CDEX_ERROR;
	}

	if ( CDEX_OK == bReturn )
	{
		// get current config
		m_pConfig = faacEncGetCurrentConfiguration( m_handle );

		// set settings
		if ( GetUserN1() & 0x08 )
		{
			m_pConfig->mpegVersion = FAAC_MPEG4;
		}
		else
		{
			m_pConfig->mpegVersion = FAAC_MPEG2;
		}

		m_pConfig->bitRate = m_nBitrate * 1000;

		m_pConfig->allowMidside = ( GetUserN1() & 0x02 ) ? TRUE : FALSE;

		m_pConfig->useLfe = ( GetUserN1() & 0x04 ) ? TRUE : FALSE;; /* ? */
		m_pConfig->useTns = ( GetUserN1() & 0x01 ) ? TRUE : FALSE;
		m_pConfig->inputFormat = FAAC_INPUT_16BIT;
		m_pConfig->aacObjectType = ( GetUserN2() & 0x07 );
		m_pConfig->shortctl = SHORTCTL_NORMAL;

		switch ( ( GetUserN1() >> 8 ) & 0x0F )
		{
			case 0: m_pConfig->bandWidth = 16000; break;
			case 1: m_pConfig->bandWidth = 18000; break;
			case 2: m_pConfig->bandWidth = 19500; break;
			default: m_pConfig->bandWidth = 19500; break;
		}

		// set new config
		if ( FALSE == faacEncSetConfiguration( m_handle, m_pConfig ) )
		{
			CUString strMsg;

			strLang = g_language.GetString( IDS_LOADLIBRARY_FAILED );

			strMsg.Format(	strLang , (LPCWSTR)CUString( g_config.GetAppPath() + _W( "\\" ) + m_strEncoderPath ) );

			CDexMessageBox( strMsg );
			
			LTRACE( _T( "CEncoderFaacDll::OpenStream Failed to set config" ) );

			bReturn = CDEX_ERROR;
		}

	}
Exemplo n.º 24
0
void CLanguage::ParseLanguageFile( const CUString& strFileName )
{
    BOOL bResult		= TRUE;
    DWORD dwRevision	= 0;
    FILE* pFile			= NULL;

    CUString strFullFileName = m_strLanguageDir + _W("\\lang\\") + strFileName + m_strLangFileExt;
    CUStringConvert strCnv;

    pFile = CDexOpenFile( strFullFileName, _W( "r" ) );

    if ( NULL != pFile )
    {
        CHAR lpszRead[ 1024 ];
        int nStart = 0;
        int nStop  = 0;

        CUString strRead;

        memset( lpszRead, 0, sizeof( lpszRead ) );

        while ( fgets( lpszRead, sizeof( lpszRead ), pFile  ) )
        {
            bool         bHasNumber = false;
            bool         bIsMenu    = false;
            bool         bIsDialog  = false;
            bool	     bHasString = false;
            DWORD        nIndex = 0;
            CLangElement newElement;

            strRead = _T( "" );

            for ( nIndex = 0; nIndex< strlen( lpszRead ); nIndex++ )
            {
                if (	( lpszRead[ nIndex ] != 0x0A ) &&
                        ( lpszRead[ nIndex ] != 0x0D ) )
                {
                    strRead +=  (TCHAR)lpszRead[ nIndex ];
                }
            }

            TranslateTab( strRead );

            nStart = strRead.Find( _T( '#' ) );

            if ( nStart >= 0 )
            {
                if ( ( nStart + 1 ) == strRead.Find( _T( 'M' ) ) )
                {
                    nStart++;
                    bIsMenu = TRUE;
                }
                else if ( ( nStart + 1 ) == strRead.Find( _T( 'D' ) ) )
                {
                    nStart++;
                    bIsDialog = TRUE;
                }


                nStop = strRead.Find( _T( '#' ), nStart + 1 );

                if ( nStop > 2 )
                {
                    CUString strID ( strRead.Mid( nStart + 1, nStop - nStart -1 ) );
                    swscanf( strID, _W( "%x" ), &newElement.nID );
                    bHasNumber = true;
                }

            }
            else
            {
                if ( strRead.Find( CODEPAGETAG ) == 0 )
                {
                    m_dwCodePageID = _wtoi( strRead.Mid( CODEPAGETAG.GetLength() ) );
                }
                else if ( strRead.Find( LANGTAG ) == 0 )
                {
                    m_dwLangID = _wtoi( strRead.Mid( LANGTAG.GetLength() ) );
                }
                else if ( strRead.Find( SUBLANGTAG ) == 0 )
                {
                    m_dwSubLangID = _wtoi( strRead.Mid( SUBLANGTAG.GetLength() ) );
                }
                else if ( strRead.Find( REVISIONTAG ) == 0 )
                {
                    int nPos;
                    nPos = strRead.Find( _W( ",v " ) );
                    if ( nPos >= 0 )
                    {
                        float fVersion = 1.0f;
                        swscanf( strRead.Mid( nPos+3,4 ), _W( "%f" ), &fVersion );
                        dwRevision =   (DWORD)( 100 * ( fVersion + 0.005 ) );
                    }

                }
            }

            nStart = strRead.Find( '"' );

            if ( nStart >= 0 )
            {
                nStop = strRead.Find( '"', nStart + 1 );

                if ( nStop > 2 )
                {
                    lpszRead[ 0 ] = '\0';

                    for ( nIndex = nStart + 1; nIndex < (DWORD)nStop; nIndex++)
                    {
                        lpszRead[ nIndex - nStart - 1] = (CHAR)strRead.GetAt( nIndex );
                        lpszRead[ nIndex - nStart ] = '\0';
                    }

                    newElement.strValue = CUString( lpszRead, m_dwCodePageID );
                    bHasString = true;
                }
            }

            if ( bHasString && bHasNumber )
            {
                if ( bIsMenu )
                {
                    m_vMenus.push_back( newElement );
                }
                else if ( bIsDialog )
                {
                    m_vDialogs.push_back( newElement );
                }
                else
                {
                    m_vStrings.push_back( newElement );
                }
            }
            memset( lpszRead, 0, sizeof( lpszRead ) );
        }

        fclose( pFile );
    }


#ifdef UNICODE
    TCHAR* pTest = _wsetlocale( LC_ALL, GetString( 99 ) );
#else
    TCHAR* pTest = setlocale( LC_ALL, strCnv.ToT( GetString( 99 ) ) );

#endif
    SetThreadLocale( MAKELCID( m_dwLangID, m_dwSubLangID ) );
    setlocale( LC_NUMERIC, "English" );
}
Exemplo n.º 25
0
void CMainFrame::OnLanguageSelection( UINT nID ) 
{
    CDocTemplate*	pTemplate = NULL;
    POSITION		pos;
    CDocument*		pDocument = NULL;

	int nLanguageSelection = nID - ID_LANGUAGE_START;


	if ( 0 == nLanguageSelection )
	{
		WORD nLanguage;

		CHyperLink myLink;

		CUString strVersions;
		// FIXME
		strVersions.Format( _W("cdexversion=1.70&beta=8&cdexdir=%s" ), (LPCWSTR)g_config.GetAppPath() );

		for ( nLanguage=0; nLanguage < g_language.GetNumLanguageStrings(); nLanguage++)
		{
			CUString strLangName( g_language.GetLanguageString( nLanguage ) );
			CUString strLangVersion;
			strLangVersion.Format( _W("%s=%s"), (LPCWSTR)strLangName, (LPCWSTR)g_language.GetRevisionLevel( strLangName ) );
			strVersions += _W( "&" ) + strLangVersion;
		}

//		myLink.GotoURL( _T("www.cdex.n3.net/lang/langcheck.php?") + strVersions , SW_SHOW );
		myLink.GotoURL( _T("cdexos.sourceforge.net/lang/cdex_v1.70"), SW_SHOW );
	}
	else
	{
//		nLanguageSelection--;

		// Switch to selected language
		CString strMenu;

		m_pPopupMenu->GetMenuString( nLanguageSelection, strMenu, MF_BYPOSITION );

		g_language.SetLanguage( CUString( strMenu ) );

		// get document template
		pos = AfxGetApp()->GetFirstDocTemplatePosition();

		pTemplate = AfxGetApp()->GetNextDocTemplate( pos );

		POSITION docpos = pTemplate->GetFirstDocPosition( );

		// Loop through documents in this template
		while ( docpos )
		{
			VERIFY( pDocument = pTemplate->GetNextDoc(docpos) );

			// update all view attached to this document
			pDocument->UpdateAllViews( NULL,WM_CDEX_INITIAL_UPDATE, NULL );
		}

		g_config.SetLanguage( g_language.GetLanguage() );
		g_config.Save();

		SetLanguageMenu( );
	}
}
Exemplo n.º 26
0
	CUString EncodeUTF8( CUString &str )
	{
		CUString ret = "";
		if( str.GetLength() == 6 ) {
			ret = str.SubStr( 2,6 );
			unsigned long index;
			index = strtoul( ret.GetStr(), 0, 16 );
			if( 0x00 <= index && index <= 0x7F ) {
				char buf[4]; sprintf( buf, "%c", (char)index );
				ret = buf;
			}
			else if( 0x80 <= index && index <= 0x07FF )	{
				// 2byte;
				int enc_ch1 = 0xC0; // 11000000
				int enc_ch2 = 0x80; // 10000000

				char ch1 = (char)strtoul( ret.SubStr(0,2).GetStr(), 0, 16 );
				char ch2 = (char)strtoul( ret.SubStr(2,4).GetStr(), 0, 16 );

				if( ch1 & (1 << (3-1) ) ) { enc_ch1 |= (1 << (5-1) ); }
				if( ch1 & (1 << (2-1) ) ) { enc_ch1 |= (1 << (4-1) ); }
				if( ch1 & (1 << (1-1) ) ) { enc_ch1 |= (1 << (3-1) ); }

				if( ch2 & (1 << (8-1) ) ) { enc_ch1 |= (1 << (2-1) ); }
				if( ch2 & (1 << (7-1) ) ) { enc_ch1 |= (1 << (1-1) ); }
				if( ch2 & (1 << (6-1) ) ) { enc_ch2 |= (1 << (6-1) ); }
				if( ch2 & (1 << (5-1) ) ) { enc_ch2 |= (1 << (5-1) ); }
				if( ch2 & (1 << (4-1) ) ) { enc_ch2 |= (1 << (4-1) ); }
				if( ch2 & (1 << (3-1) ) ) { enc_ch2 |= (1 << (3-1) ); }
				if( ch2 & (1 << (2-1) ) ) { enc_ch2 |= (1 << (2-1) ); }
				if( ch2 & (1 << (1-1) ) ) { enc_ch2 |= (1 << (1-1) ); }

				//dumptoBin( enc_ch1 ); dumptoBin( enc_ch2 );
				char buf[4]; sprintf( buf, "%c%c", enc_ch1, enc_ch2 );
				ret = buf;
			}
			else if( 0x0800 <= index && index <= 0xFFFF )	{
				// 3byte;
				char enc_ch1 = 0xE0; // 11100000
				char enc_ch2 = 0x80; // 10000000
				char enc_ch3 = 0x80; // 10000000

				char ch1 = (char)strtoul( ret.SubStr(0,2).GetStr(), 0, 16 );
				char ch2 = (char)strtoul( ret.SubStr(2,4).GetStr(), 0, 16 );

				if( ch1 & (1 << (8-1) ) ) { enc_ch1 |= (1 << (4-1) ); }
				if( ch1 & (1 << (7-1) ) ) { enc_ch1 |= (1 << (3-1) ); }
				if( ch1 & (1 << (6-1) ) ) { enc_ch1 |= (1 << (2-1) ); }
				if( ch1 & (1 << (5-1) ) ) { enc_ch1 |= (1 << (1-1) ); }

				if( ch1 & (1 << (4-1) ) ) { enc_ch2 |= (1 << (6-1) ); }
				if( ch1 & (1 << (3-1) ) ) { enc_ch2 |= (1 << (5-1) ); }
				if( ch1 & (1 << (2-1) ) ) { enc_ch2 |= (1 << (4-1) ); }
				if( ch1 & (1 << (1-1) ) ) { enc_ch2 |= (1 << (3-1) ); }

				if( ch2 & (1 << (8-1) ) ) { enc_ch2 |= (1 << (2-1) ); }
				if( ch2 & (1 << (7-1) ) ) { enc_ch2 |= (1 << (1-1) ); }
				if( ch2 & (1 << (6-1) ) ) { enc_ch3 |= (1 << (6-1) ); }
				if( ch2 & (1 << (5-1) ) ) { enc_ch3 |= (1 << (5-1) ); }

				if( ch2 & (1 << (4-1) ) ) { enc_ch3 |= (1 << (4-1) ); }
				if( ch2 & (1 << (3-1) ) ) { enc_ch3 |= (1 << (3-1) ); }
				if( ch2 & (1 << (2-1) ) ) { enc_ch3 |= (1 << (2-1) ); }
				if( ch2 & (1 << (1-1) ) ) { enc_ch3 |= (1 << (1-1) ); }

				//dumptoBin( enc_ch1 ); dumptoBin( enc_ch2 ); dumptoBin( enc_ch3 );

				char buf[4]; sprintf( buf, "%c%c%c", enc_ch1, enc_ch2, enc_ch3 );
				ret = buf;
			}
		}

		return ret;
	}
Exemplo n.º 27
0
void COpenFileDlg::AddRecursiveFiles( const CUString& strDir,int nItem )
{
	CFileFind	fileFind;
	CUString		pathAndFileType = strDir + CUString( _W( "\\*.*" ));
	BOOL		bStop=FALSE;

    CUStringConvert strCnv;

	// Iterate through the items in the listbox and populate the listconrol.
	if (fileFind.FindFile( strCnv.ToT( pathAndFileType ) ) )
	{
		do
		{
			bStop=(fileFind.FindNextFile()==0);
			CUString strFileName = CUString( fileFind.GetFileName() );
			CUString strFileRoot = CUString( fileFind.GetRoot() );
			CUString strFileType;

			if (	TRUE == fileFind.IsDirectory() && 
					FALSE == fileFind.IsDots() &&
					TRUE == m_bRecursiveDir )
			{
				AddRecursiveFiles( strDir + CUString( _W( "\\" ) ) + strFileName, nItem );
			}

			if (fileFind.IsDirectory()==FALSE && fileFind.IsDots()==FALSE)
			{
				int nPos=strFileName.ReverseFind( _T( '.' ) );
				

				if (nPos>0)
				{
					CUString strExt;
					strExt = strFileName.Right(strFileName.GetLength()-nPos-1);

					strFileType = strExt;

					strExt.MakeUpper();

					if ( CompareExt( strExt ) == TRUE )
					{
						CUString strFileSize;
						CUString strFileDate;
						CTime	fileTime;

						// Get the data/time stamp of this file
						fileFind.GetLastWriteTime( fileTime );

						// Format date time string
						strFileDate.Format( _W( "%4d/%02d/%02d %02d:%02d" ), fileTime.GetYear(), fileTime.GetMonth(), fileTime.GetDay(), fileTime.GetHour(), fileTime.GetMinute() );

						strFileSize.Format( _W( "%10.2f" ), fileFind.GetLength() / ( 1024.0 * 1024.0 ) );

                        CUStringConvert strCnv;

						m_ctrlRequestedFiles.InsertItem( nItem, strCnv.ToT( strFileName ));

						m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_TYPE, strCnv.ToT( strFileType ) );

						m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_DATE ,strCnv.ToT( strFileDate ) );

						m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_PATH, strCnv.ToT( strFileRoot ) );

						m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_SIZE, strCnv.ToT( strFileSize ) );

						m_ctrlRequestedFiles.SetItemData( nItem, (DWORD)fileTime.GetTime() );

						nItem++;
					}
				}
			}
		} while (bStop!=TRUE);
	}	


	m_bSortAscending=TRUE;
}
Exemplo n.º 28
0
void CSVGGradientEditCtl::OnButtonDown(UINT nFlags, POINT point, int iButton, BOOL bDblClk) 
{
	if (point.x > m_previewRect.left-8 && point.y < m_previewRect.right+8 &&
		point.y > m_previewRect.top && point.y < m_previewRect.bottom)
	{
		if (m_canEditStops)
		{
			POINT pt = point;
			pt.x -= m_previewRect.left;

			CComQIPtr<ILSVGStopElement> onStop;// = NULL;

			CComQIPtr<ILSVGStopElement> stop;
			m_gradient->get_firstChild((ILDOMNode**)&stop);

			CComQIPtr<ILDOMNode> beforeNode = stop;

			while (stop != NULL)
			{
				double offset;
				CComQIPtr<ILSVGAnimatedNumber> aoffset;
				stop->get_offset(&aoffset);
				aoffset->get_baseVal(&offset);

				int x = (int)(offset*m_previewRect.Width());

				if (abs(pt.x-x) < 8)
				{
					onStop = stop;
				}

				CComQIPtr<ILDOMNode> nextSibling;
				stop->get_nextSibling(&nextSibling);
				stop = nextSibling;

				if (pt.x > x)
				{
					beforeNode = stop;
				}
			}

			if (iButton == 0)
			{
				if (onStop)	// Already used
				{
	#if 0	// Have this
					CElement* pElement = m_pElement->m_pDocument->m_pTree->FindDOMElement((IDOMNode*)onStop);
					m_pElement->m_pDocument->SetTargetElement(pElement, 0);
	#endif
					m_activeStop = onStop;	// hm instead of above (change this)
				}
				else
				{
					if (beforeNode == NULL)
					{
						m_gradient->get_firstChild(&beforeNode);
					}

					CUString str;

					float offset = (float)pt.x / m_previewRect.Width();

					CComQIPtr<ILDOMDocument> document;
					m_pElement->get_ownerDocument(&document);

					CComQIPtr<ILSVGStopElement> stop;
					document->createElementNS(L"http://www.w3.org/2000/svg", L"stop", (ILDOMElement**)&stop);

					CComQIPtr<ILSVGAnimatedNumber> aoffset;
					stop->get_offset(&aoffset);
					aoffset->put_baseVal(offset);

					CComQIPtr<ILSVGStylable> stylable = stop;

					CComQIPtr<ILCSSStyleDeclaration> style;
					stylable->get_style(&style);

					str.Format("#%2.2X%2.2X%2.2X", m_colorSpread[pt.x].red, m_colorSpread[pt.x].green, m_colorSpread[pt.x].blue);
					style->setProperty(L"stop-color", _bstr_t(str), L"");

					str.Format("%g", m_colorSpread[pt.x].alpha/255.0);
					style->setProperty(L"stop-opacity", _bstr_t(str), L"");

					m_gradient->insertBefore(stop, _variant_t(beforeNode), NULL);

	#if 0	// Have this
					CElement* pElement = m_pElement->m_pDocument->m_pTree->FindDOMElement((IDOMNode*)stop);
					m_pElement->m_pDocument->SetTargetElement(pElement, 0);
	#endif
					m_activeStop = stop;	// hm instead of above (change this)
				}

				if (m_activeStop != NULL)
				{
					SetCapture();
					m_dragging = TRUE;

				//	OnMouseMove(nFlags, point);
				}
			}
			else
			{
	#if 0
				if (onStop)
				{
					m_pElement->m_pDocument->ActivateElement((CElement*)m_pElement->m_parent, 0);
					onStop->parentNode->removeChild(onStop);
				}
	#endif
			}
		}
	}
}
Exemplo n.º 29
0
BOOL CLanguage::TranslateMenu( CMenu* pMenu, const int nMenuID, BOOL bTopLevel )
{
    CMenu*			pChildMenu = NULL;
    static CUString	strMissing;
    BOOL			bReturn = TRUE;
    static int		nPopUpIdx = 0;

    if ( bTopLevel )
    {
        nPopUpIdx = MAKELPARAM( 0, nMenuID );
        strMissing = _T( "" );
    }

    DWORD i = pMenu->GetMenuItemCount();
    for( i = 0; i < pMenu->GetMenuItemCount(); i++ )
    {
        pChildMenu = pMenu->GetSubMenu( i );

        int nItemID = pMenu->GetMenuItemID( i );

        if ( MENU_SEPARARTOR != nItemID )
        {
            CUString strLang;

            if ( bTopLevel )
            {
                strLang = GetMainMenuItem( nMenuID, i );
            }
            else
            {
                if ( MENU_POPUP != nItemID )
                {
                    strLang = GetSubMenuItem( nItemID );
                }
                else
                {
                    strLang = GetSubMenuItem( nPopUpIdx );
                    nPopUpIdx++;
                }
            }

            if ( MENU_POPUP != nItemID )
            {
                CUStringConvert strCnv;

                if ( !strLang.IsEmpty() )
                {
                    pMenu->ModifyMenu( nItemID, MF_STRING, nItemID, strCnv.ToT( strLang ) );
                }
                else
                {
                    CString strTmp;
                    pMenu->GetMenuString( nItemID, strTmp, MF_BYCOMMAND );
                    ReportMissingID( nItemID, CUString( strTmp ), 1 );
                }
            }
            else
            {
                int nPosition = UINT( pChildMenu->m_hMenu );

                if ( !strLang.IsEmpty() )
                {
                    int nPosition = UINT( pChildMenu->m_hMenu );

                    CUStringConvert strCnv;

                    pMenu->ModifyMenu(	UINT( pChildMenu->m_hMenu ),
                                        MF_STRING | MF_POPUP,
                                        UINT( pChildMenu->m_hMenu ),
                                        strCnv.ToT( strLang ) );
                }
                else
                {

                    if ( bTopLevel )
                    {
                        CString strTmp;
                        pMenu->GetMenuString( i, strTmp, MF_BYPOSITION );
                        strMissing += _W( "#" ) + CUString( strTmp );
                    }
                    else
                    {
                        CString strTmp;
                        pMenu->GetMenuString( 0, strTmp, MF_BYPOSITION );
                        ReportMissingID( nItemID, CUString( strTmp ), 1 );
                    }
                }

                TranslateMenu( pMenu->GetSubMenu(i), -1, FALSE );
            }
        }
    }

    if ( bTopLevel )
    {
        if ( !strMissing.IsEmpty() )
        {
            ReportMissingID( nMenuID, strMissing + _W( "#" ), 1 );
        }
    }

    return bReturn;
}
Exemplo n.º 30
0
BOOL CLanguage::InitDialogStrings( CDialog* pDialog, long lSection )
{
    short nCtrlID;
    CUString sText;
    CWnd* pWndCtrl;
    DWORD	nIndex = 0;
    CUStringConvert strCnv;

    CUString strLang = GetDialogString( MAKELPARAM( 0, lSection ) );

    if( !strLang.IsEmpty() )
    {
        pDialog->SetWindowText( strCnv.ToT( strLang ) );
    }
    else
    {
        CString strMissing;
        pDialog->GetWindowText( strMissing );
        ReportMissingID( MAKELPARAM( 0, lSection ), CUString( strMissing ), 2 );
    }

    // test if the dialog has child windows
    if( pWndCtrl = pDialog->GetWindow( GW_CHILD | GW_HWNDFIRST ) )
    {
        // lool through all controls (windows) and replace text
        do
        {
            nCtrlID = pWndCtrl->GetDlgCtrlID();


            if (	!pWndCtrl->IsKindOf( RUNTIME_CLASS( CEdit ) ) &&
                    !pWndCtrl->IsKindOf( RUNTIME_CLASS( CListCtrl ) ) &&
                    !pWndCtrl->IsKindOf( RUNTIME_CLASS( CSpinButtonCtrl) )
               )
            {

                if( nCtrlID > 0 )
                {
                    // check if the Id is in the range of common strings
                    if( (nCtrlID >= COMMON_IDMIN) && (nCtrlID <= COMMON_IDMAX) )
                    {
                        strLang = GetString( nCtrlID );
                    }
                    else
                    {
                        strLang = GetDialogString( MAKELPARAM( nCtrlID, lSection ) );
                    }

                    if( !strLang.IsEmpty() )
                    {

                        if ( pWndCtrl->IsKindOf( RUNTIME_CLASS( CComboBox ) ) )
                        {
                            CUString strAdd;
                            int		nPos = -1;

                            // remove old strings
                            ((CComboBox*)pWndCtrl)->ResetContent();

                            while ( ( nPos = strLang.Find( '\n' ) ) >= 0 )
                            {
                                ((CComboBox*)pWndCtrl)->AddString( strCnv.ToT( strLang.Left( nPos ) ) );
                                strLang = strLang.Mid( nPos + 1 );
                                nPos++;
                            }

                            if ( strLang.GetLength() > nPos )
                            {
                                ((CComboBox*)pWndCtrl)->AddString( strCnv.ToT( strLang.Mid( nPos ) ) );
                            }
                        }
                        else
                        {
                            pDialog->SetDlgItemText( nCtrlID, strCnv.ToT( strLang ) );
                        }
                    }
                    else
                    {
                        CString strMissing;

                        if ( pWndCtrl->IsKindOf( RUNTIME_CLASS( CComboBox ) ) )
                        {
                            int nIndex = 0;
                            int	nItems = ((CComboBox*)pWndCtrl)->GetCount();

                            for ( nIndex =0; nIndex < nItems; nIndex++ )
                            {
                                CString strTmp;

                                ((CComboBox*)pWndCtrl)->GetLBText( nIndex, strTmp );
                                strMissing += strTmp;

                                if ( nIndex < nItems - 1 )
                                {
                                    strMissing += _T( "\n" );
                                }
                            }
                        }
                        else
                        {
                            pDialog->GetDlgItemText( nCtrlID, strMissing );
                        }
                        if ( !strMissing.IsEmpty() )
                        {
                            ReportMissingID( MAKELPARAM( nCtrlID, lSection ), CUString( strMissing ), 2 );
                        }
                    }
                }
            }

            pWndCtrl = pWndCtrl->GetWindow( GW_HWNDNEXT );

        } while( (pWndCtrl != NULL) && (pWndCtrl != pDialog->GetWindow( GW_CHILD | GW_HWNDFIRST )) );
    }

    return TRUE;
}