From: rhester Date: Sun, 11 Feb 2007 20:25:14 +0000 (+0000) Subject: Removed beos tree as deprecated X-Git-Tag: 0.8.0-beta.1~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c0b2ecafcae40768a4747a1c86350fdfd4460110;p=handbrake Removed beos tree as deprecated Updated documentation Minor edit to DownloadMacOsXContribBinaries.sh to make hostname handling more consistent git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@290 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/AUTHORS b/AUTHORS index 744cdf8b7..1e85043c7 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,6 @@ -$Id: AUTHORS,v 1.5 2005/03/23 13:14:50 titer Exp $ +AUTHORS file for MediaFork -AUTHORS file for HandBrake +Originally forked from HandBrake Eric Petit + Core (construct, multithreading, BeOS/OS X/Linux ports) @@ -22,3 +22,40 @@ Laurent Aimar + Gtk2 interface + wxWidgets interface +John Allen (?) (johnallen) + + Core enhancements + + Threading enhancements + + Simplified Mac OS X GUI + +Joe Crain (dynaflash) + + Mac OS X GUI enhancements/rewrite + +Rodney Hester (rhester) + + iPod firmware 1.2+ 640x480 MPEG-4/H.264 support + +Benjamin Lake (benlake) + + Mac OS X GUI enhancements/rewrite + +Chris Long (chrislong) + + iPod firmware 1.2+ 640x480 MPEG-4/H.264 support + +Philippe Rigaux (prigaux) + + 3rd party library integration + + Mac OS X GUI enhancements + + PAR/anamorphic support + + Universal binary build process + + Conversion from jam to make for compiles + +Jonathon Rubin (jbrjake) + + Massive core enhancements + + Significant improvements to H.264 support + +Scott (sr55) + + Windows GUI + + mpeg4ip patches for cygwin compile + +Unknown (maurj) + + AAC audio improvements + +Unknown (mirkwood) + + Windows CLI port diff --git a/CREDITS b/CREDITS index 4310c76d1..dda23acc9 100644 --- a/CREDITS +++ b/CREDITS @@ -1,6 +1,4 @@ -$Id: CREDITS,v 1.7 2004/04/24 10:49:56 titer Exp $ - -CREDITS file for HandBrake +CREDITS file for MediaFork HandBrake uses many cool libraries from the GNU/Linux world. Thank their authors! diff --git a/DownloadMacOsXContribBinaries.sh b/DownloadMacOsXContribBinaries.sh index 93be47cd6..b8df22270 100755 --- a/DownloadMacOsXContribBinaries.sh +++ b/DownloadMacOsXContribBinaries.sh @@ -10,9 +10,9 @@ if [ -f contrib/DarwinContribVersion.txt ]; then fi fi -HOST=download.m0k.org +HOST=download.mediafork.dynalias.com FILE=contribbin-darwin-$VERSION.tar.gz -URL=http://download.mediafork.dynalias.com/contrib/$FILE +URL=http://$HOST/contrib/$FILE # Check for internet connectivity if ! host $HOST > /dev/null 2>&1; then diff --git a/NEWS b/NEWS index 3c8eea0a1..9434f4411 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,19 @@ -$Id: NEWS,v 1.28 2005/11/04 16:01:19 titer Exp $ - -NEWS file for HandBrake +NEWS file for MediaFork + +Changes between 0.7.1 and 0.8.0 + + MediaFork project forked from HandBrake source + + Updated libraries (meaning better quality, hopefully fewer bugs, and increased speeds) + + iPod 5.5G support + + Revamped graphical interface (Mac OS X) + + Anamorphic encoding with pixel aspect ratio + + Brighter color reproduction in QuickTime + + Lists disks by DVD name instead of by drive name (Mac OS X) + + Titles output movies based on the DVD name (Mac OS X) + + 32Khz audio output + + Constant rate factor encoding with x264 + + New preference item to turn deinterlacing on by default (Mac OS X) + + New preference item to select the default audio language (Mac OS X) + + Bugfix for reading straight from a DVD Changes between 0.7.0 and 0.7.1 + Universal Binary for PPC and Intel diff --git a/THANKS b/THANKS index 81b04f46c..287867c34 100644 --- a/THANKS +++ b/THANKS @@ -1,11 +1,14 @@ -$Id: THANKS,v 1.16 2004/08/05 17:03:05 titer Exp $ +THANKS file for MediaFork -THANKS file for HandBrake +Originally forked from HandBrake -Several people noticeably contributed to HandBrake development without -writing code (submitting/checking translations, DVD samples, etc). +Several people noticeably contributed to MediaFork and HandBrake development +without writing code (submitting/checking translations, DVD samples, etc). Let's thank them here! +Chris (audley) + + Inspiration and example of patching mpeg4ip for iPod atom support + Omar Ahmad Bhatti + Intensive beta testing, suggestions. Convinced me to port HandBrake to OS X, which finally was a pretty good idea. diff --git a/beos/HBApp.cpp b/beos/HBApp.cpp deleted file mode 100644 index 702c74d94..000000000 --- a/beos/HBApp.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "HBApp.h" -#include "MainWindow.h" -#include "ScanWindow.h" - -#include "hb.h" - -int main() -{ - HBApp * app = new HBApp(); - app->Run(); - delete app; - return 0; -} - -HBApp::HBApp() - : BApplication( "application/x-vnd.titer-handbrake" ) -{ - fHandle = hb_init( HB_DEBUG_ALL, 0 ); - - fMainWin = new MainWindow( fHandle ); - fScanWin = new ScanWindow( fHandle ); - fScanWin->AddToSubset( fMainWin ); - - fMainWin->Show(); - fScanWin->Show(); - - SetPulseRate( 200000 ); /* 0.2 second */ -} - -void HBApp::MessageReceived( BMessage * message ) -{ - switch( message->what ) - { - default: - BApplication::MessageReceived( message ); - break; - } -} - -void HBApp::RefsReceived( BMessage * message ) -{ -} - -void HBApp::Pulse() -{ - hb_state_t s; - hb_get_state( fHandle, &s ); - - switch( s.state ) - { - case HB_STATE_IDLE: - break; - - case HB_STATE_SCANNING: - fScanWin->Update( &s ); - break; - - case HB_STATE_SCANDONE: - if( hb_list_count( hb_get_titles( fHandle ) ) ) - { - /* Success */ - fScanWin->Hide(); - fMainWin->Update( &s ); - } - else - { - /* Invalid volume */ - fScanWin->Update( &s ); - } - break; - - case HB_STATE_WORKING: - case HB_STATE_PAUSED: - case HB_STATE_WORKDONE: - fMainWin->Update( &s ); - break; - } -} - -bool HBApp::QuitRequested() -{ - hb_close( &fHandle ); - return BApplication::QuitRequested(); -} - diff --git a/beos/HBApp.h b/beos/HBApp.h deleted file mode 100644 index 042a791b9..000000000 --- a/beos/HBApp.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef HB_APP_H -#define HB_APP_H - -#include - -#include "hb.h" - -class MainWindow; -class ScanWindow; - -class HBApp : public BApplication -{ - public: - HBApp(); - void MessageReceived( BMessage * message ); - void RefsReceived( BMessage * message ); - void Pulse(); - bool QuitRequested(); - - private: - MainWindow * fMainWin; - ScanWindow * fScanWin; - - hb_handle_t * fHandle; -}; - -#endif - diff --git a/beos/HandBrake.rsrc b/beos/HandBrake.rsrc deleted file mode 100644 index d9f87ee44..000000000 Binary files a/beos/HandBrake.rsrc and /dev/null differ diff --git a/beos/MainWindow.cpp b/beos/MainWindow.cpp deleted file mode 100644 index 5b2741bb9..000000000 --- a/beos/MainWindow.cpp +++ /dev/null @@ -1,986 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "MainWindow.h" -#include "PicWindow.h" -#include "QueueWindow.h" - -#define MSG_TITLEPOPUP 'titl' -#define MSG_CHAPTERPOPUP 'chap' -#define MSG_FORMATPOPUP 'form' -#define MSG_CODECSPOPUP 'code' -#define MSG_BROWSE 'brow' -#define MSG_QUALITYRADIO 'radi' -#define MSG_SLIDER 'slid' -#define MSG_PICSETTINGS 'pise' -#define MSG_QUEUE_ENABLE 'quen' -#define MSG_QUEUE_ADD 'quad' -#define MSG_QUEUE_SHOW 'qush' -#define MSG_PAUSE 'paus' -#define MSG_START 'star' - -static int FormatSettings[3][4] = - { { HB_MUX_MP4 | HB_VCODEC_FFMPEG | HB_ACODEC_FAAC, - HB_MUX_MP4 | HB_VCODEC_X264 | HB_ACODEC_FAAC, - 0, - 0 }, - { HB_MUX_AVI | HB_VCODEC_FFMPEG | HB_ACODEC_LAME, - HB_MUX_AVI | HB_VCODEC_FFMPEG | HB_ACODEC_AC3, - HB_MUX_AVI | HB_VCODEC_X264 | HB_ACODEC_LAME, - HB_MUX_AVI | HB_VCODEC_X264 | HB_ACODEC_AC3 }, - { HB_MUX_OGM | HB_VCODEC_FFMPEG | HB_ACODEC_VORBIS, - HB_MUX_OGM | HB_VCODEC_FFMPEG | HB_ACODEC_LAME, - 0, - 0 } }; - -MainView::MainView( hb_handle_t * handle ) - : BView( BRect( 0,0,700,475 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW ) -{ - fHandle = handle; - - BRect r, b; - BBox * box; - - SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) ); - - /* Source box */ - b = Bounds(); - r = BRect( 10,10,b.right/2-5,135 ); - box = new BBox( r ); - box->SetLabel( "Source" ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,15,b.right/4,35 ); - fSrcDVD1String = new BStringView( r, NULL, "DVD:" ); - box->AddChild( fSrcDVD1String ); - - r = BRect( b.right/4+1,15,b.right-10,35 ); - fSrcDVD2String = new BStringView( r, NULL, "" ); - fSrcDVD2String->SetAlignment( B_ALIGN_RIGHT ); - box->AddChild( fSrcDVD2String ); - - r = BRect( 10,40,b.right-10,60 ); - fSrcTitlePopUp = new BPopUpMenu( "" ); - fSrcTitleMenu = new BMenuField( r, NULL, "Title:", fSrcTitlePopUp, - true ); - fSrcTitleMenu->SetDivider( b.right-130 ); - box->AddChild( fSrcTitleMenu ); - - r = BRect( 10,65,b.right-120,85 ); - fSrcChapString = new BStringView( r, NULL, "Chapters:" ); - box->AddChild( fSrcChapString ); - - r = BRect( b.right-119,65,b.right-80,85 ); - fSrcChapStartPopUp = new BPopUpMenu( "" ); - fSrcChapStartMenu = new BMenuField( r, NULL, "", - fSrcChapStartPopUp, true ); - fSrcChapStartMenu->SetDivider( 0.0 ); - box->AddChild( fSrcChapStartMenu ); - - r = BRect( b.right-79,65,b.right-50,85 ); - fSrcChapToString = new BStringView( r, NULL, "to" ); - fSrcChapToString->SetAlignment( B_ALIGN_CENTER ); - box->AddChild( fSrcChapToString ); - - r = BRect( b.right-49,65,b.right-10,85 ); - fSrcChapEndPopUp = new BPopUpMenu( "" ); - fSrcChapEndMenu = new BMenuField( r, NULL, "", fSrcChapEndPopUp, - true ); - fSrcChapEndMenu->SetDivider( 0.0 ); - box->AddChild( fSrcChapEndMenu ); - - r = BRect( 10,90,b.right/2,110 ); - fSrcDur1String = new BStringView( r, NULL, "Duration:" ); - box->AddChild( fSrcDur1String ); - - r = BRect( b.right/2+1,90,b.right-10,110 ); - fSrcDur2String = new BStringView( r, NULL, "00:00:00" ); - fSrcDur2String->SetAlignment( B_ALIGN_RIGHT ); - box->AddChild( fSrcDur2String ); - - /* Destination box */ - b = Bounds(); - r = BRect( b.right/2+5,10,b.right-10,135 ); - box = new BBox( r ); - box->SetLabel( "Destination" ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,15,b.right-10,35 ); - fDstFormatPopUp = new BPopUpMenu( "" ); -#define ADDITEM(a) fDstFormatPopUp->AddItem( new BMenuItem( a, \ - new BMessage( MSG_FORMATPOPUP ) ) ) - ADDITEM( "MP4 file" ); - ADDITEM( "AVI file" ); - ADDITEM( "OGM file" ); -#undef ADDITEM - fDstFormatPopUp->ItemAt( 0 )->SetMarked( true ); - fDstFormat = -1; - fDstFormatMenu = new BMenuField( r, NULL, "File format:", - fDstFormatPopUp, true ); - fDstFormatMenu->SetDivider( b.right/3 ); - box->AddChild( fDstFormatMenu ); - - r = BRect( 10,40,b.right-10,60 ); - fDstCodecsPopUp = new BPopUpMenu( "" ); - fDstCodecsMenu = new BMenuField( r, NULL, "Codecs:", - fDstCodecsPopUp, true ); - fDstCodecsMenu->SetDivider( b.right/3 ); - box->AddChild( fDstCodecsMenu ); - - r = BRect( 10,65,b.right-10,85 ); - fDstFileControl = new BTextControl( r, NULL, "File:", - "/boot/home/Desktop/Movie", new BMessage() ); - fDstFileControl->SetDivider( b.right/3 ); - box->AddChild( fDstFileControl ); - - r = BRect( b.right-90,90,b.right-10,115 ); - fBrowseButton = new BButton( r, NULL, "Browse", - new BMessage( MSG_BROWSE ) ); - box->AddChild( fBrowseButton ); - - /* Video box */ - b = Bounds(); - r = BRect( 10,145,b.right/2-5,395 ); - box = new BBox( r ); - box->SetLabel( "Video" ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,15,b.right-10,35 ); - fVidRatePopUp = new BPopUpMenu( "" ); - fVidRatePopUp->AddItem( new BMenuItem( "Same as source", - new BMessage() ) ); - for( int i = 0; i < hb_video_rates_count; i++ ) - { - fVidRatePopUp->AddItem( new BMenuItem( hb_video_rates[i].string, - new BMessage() ) ); - } - fVidRatePopUp->ItemAt( 0 )->SetMarked( true ); - fVidRateMenu = new BMenuField( r, NULL, "Framerate (fps):", - fVidRatePopUp, true ); - box->AddChild( fVidRateMenu ); - - r = BRect( 10,40,b.right-10,60 ); - fVidEncoderPopUp = new BPopUpMenu( "" ); - fVidEncoderMenu = new BMenuField( r, NULL, "Encoder:", - fVidEncoderPopUp, true ); - box->AddChild( fVidEncoderMenu ); - - r = BRect( 10,65,b.right-10,85 ); - fVidQualityString = new BStringView( r, NULL, "Quality:" ); - box->AddChild( fVidQualityString ); - - r = BRect( 10,90,b.right*2/3,110); - fVidTargetRadio = new BRadioButton( r, NULL, "Target size (MB):", - new BMessage( MSG_QUALITYRADIO ) ); - box->AddChild( fVidTargetRadio ); - - r = BRect( b.right*2/3+1,90,b.right-10,110); - fVidTargetControl = new BTextControl( r, NULL, "", "700", - new BMessage() ); - fVidTargetControl->SetDivider( 0 ); - box->AddChild( fVidTargetControl ); - - r = BRect( 10,115,b.right/2,135); - fVidAverageRadio = new BRadioButton( r, NULL, "Average bitrate (kbps):", - new BMessage( MSG_QUALITYRADIO ) ); - fVidAverageRadio->SetValue( 1 ); - box->AddChild( fVidAverageRadio ); - - r = BRect( b.right*2/3+1,115,b.right-10,135); - fVidAverageControl = new BTextControl( r, NULL, "", "1000", - new BMessage() ); - fVidAverageControl->SetDivider( 0 ); - box->AddChild( fVidAverageControl ); - - r = BRect( 10,140,b.right/2,160); - fVidConstantRadio = new BRadioButton( r, NULL, "Constant quality:", - new BMessage( MSG_QUALITYRADIO ) ); - box->AddChild( fVidConstantRadio ); - - r = BRect( 20,165,b.right-10,195); - fVidConstantSlider = new BSlider( r, NULL, NULL, - new BMessage( MSG_SLIDER ), 0, 100 ); - fVidConstantSlider->SetValue( 50 ); - SliderChanged(); - box->AddChild( fVidConstantSlider ); - - r = BRect( 10,200,b.right-10,220); - fVidGrayCheck = new BCheckBox( r, NULL, "Grayscale encoding", new BMessage() ); - box->AddChild( fVidGrayCheck ); - r = BRect( 10,220,b.right-10,240); - fVidTwoPassCheck = new BCheckBox( r, NULL, "2-pass encoding", new BMessage() ); - box->AddChild( fVidTwoPassCheck ); - - /* Subtitles box */ - b = Bounds(); - r = BRect( b.right/2+5,145,b.right-10,190 ); - box = new BBox( r ); - box->SetLabel( "Subtitles" ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,15,b.right-10,35 ); - fSubPopUp = new BPopUpMenu( "" ); - fSubMenu = new BMenuField( r, NULL, "Language:", - fSubPopUp, true ); - box->AddChild( fSubMenu ); - - /* Audio box */ - b = Bounds(); - r = BRect( b.right/2+5,200,b.right-10,320 ); - box = new BBox( r ); - box->SetLabel( "Audio" ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,15,b.right-10,35 ); - fAudLang1PopUp = new BPopUpMenu( "" ); - fAudLang1Menu = new BMenuField( r, NULL, "Language 1:", - fAudLang1PopUp, true ); - box->AddChild( fAudLang1Menu ); - r = BRect( 10,40,b.right-10,60 ); - fAudLang2PopUp = new BPopUpMenu( "" ); - fAudLang2Menu = new BMenuField( r, NULL, "Language 2:", - fAudLang2PopUp, true ); - box->AddChild( fAudLang2Menu ); - r = BRect( 10,65,b.right-10,85 ); - fAudRatePopUp = new BPopUpMenu( "" ); - for( int i = 0; i < hb_audio_rates_count; i++ ) - { - fAudRatePopUp->AddItem( new BMenuItem( hb_audio_rates[i].string, - new BMessage ) ); - } - fAudRatePopUp->ItemAt( hb_audio_rates_default )->SetMarked( true ); - fAudRateMenu = new BMenuField( r, NULL, "Sample rate (Hz):", - fAudRatePopUp, true ); - box->AddChild( fAudRateMenu ); - r = BRect( 10,90,b.right-10,110 ); - fAudBitratePopUp = new BPopUpMenu( "" ); - for( int i = 0; i < hb_audio_bitrates_count; i++ ) - { - fAudBitratePopUp->AddItem( new BMenuItem( - hb_audio_bitrates[i].string, new BMessage ) ); - } - fAudBitratePopUp->ItemAt( - hb_audio_bitrates_default )->SetMarked( true ); - fAudBitrateMenu = new BMenuField( r, NULL, "Bitrate (kbps):", - fAudBitratePopUp, true ); - box->AddChild( fAudBitrateMenu ); - - /* Picture settings */ - b = Bounds(); - r = BRect( b.right-110,370,b.right-10,395 ); - fPictureButton = new BButton( r, NULL, "Picture settings...", - new BMessage( MSG_PICSETTINGS ) ); - AddChild( fPictureButton ); - - /* Bottom */ - r = BRect( 10,405,b.right-10,435 ); - fProgressBar = new BStatusBar( r, NULL ); - AddChild( fProgressBar ); - - r = BRect( 10,450,b.right-370,470); - fQueueCheck = new BCheckBox( r, NULL, "Enable Queue", - new BMessage( MSG_QUEUE_ENABLE ) ); - AddChild( fQueueCheck ); - - r = BRect( b.right-360,445,b.right-280,470 ); - fAddButton = new BButton( r, NULL, "Add to Queue", - new BMessage( MSG_QUEUE_ADD ) ); - - r = BRect( b.right-270,445,b.right-190,470 ); - fShowButton = new BButton( r, NULL, "Show queue", - new BMessage( MSG_QUEUE_SHOW ) ); - - r = BRect( b.right-180,445,b.right-100,470 ); - fPauseButton = new BButton( r, NULL, "Pause", - new BMessage( MSG_PAUSE ) ); - AddChild( fPauseButton ); - - r = BRect( b.right-90,445,b.right-10,470 ); - fRipButton = new BButton( r, NULL, "Rip", - new BMessage( MSG_START ) ); - AddChild( fRipButton ); - - EnableUI( false ); - fPauseButton->SetEnabled( false ); - fRipButton->SetEnabled( false ); - - FormatPopUpChanged(); - - fFilePanel = NULL; -} - -void MainView::HandleMessage( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_TITLEPOPUP: - TitlePopUpChanged(); - break; - - case MSG_CHAPTERPOPUP: - ChapterPopUpChanged(); - break; - - case MSG_FORMATPOPUP: - FormatPopUpChanged(); - break; - - case MSG_CODECSPOPUP: - CodecsPopUpChanged(); - break; - - case MSG_BROWSE: - if( !fFilePanel ) - { - fFilePanel = new BFilePanel( B_SAVE_PANEL, - new BMessenger( Window() ), NULL, 0, false ); - } - fFilePanel->Show(); - break; - - case B_SAVE_REQUESTED: - { - entry_ref ref; - BString string; - if( msg->FindRef( "directory", 0, &ref ) == B_OK && - msg->FindString( "name", &string ) == B_OK ) - { - BPath * path = new BPath( &ref ); - string.Prepend( "/" ); - string.Prepend( path->Path() ); - fDstFileControl->SetText( string.String() ); - CheckExtension(); - } - break; - } - - case MSG_QUALITYRADIO: - QualityRadioChanged(); - break; - - case MSG_SLIDER: - SliderChanged(); - break; - - case MSG_PICSETTINGS: - fPicWin = new PicWindow( fHandle, fSrcTitlePopUp->IndexOf( - fSrcTitlePopUp->FindMarked() ) ); - fPicWin->Show(); - break; - - case MSG_QUEUE_ENABLE: - if( fQueueCheck->Value() ) - { - AddChild( fAddButton ); - AddChild( fShowButton ); - } - else - { - RemoveChild( fAddButton ); - RemoveChild( fShowButton ); - } - break; - - case MSG_QUEUE_ADD: - AddJob(); - break; - - case MSG_QUEUE_SHOW: - fQueueWin = new QueueWindow( fHandle ); - fQueueWin->Show(); - break; - - case MSG_PAUSE: - fPauseButton->SetEnabled( false ); - fRipButton->SetEnabled( false ); - if( !strcmp( fPauseButton->Label(), "Resume" ) ) - { - hb_resume( fHandle ); - } - else - { - hb_pause( fHandle ); - } - break; - - case MSG_START: - { - if( !strcmp( fRipButton->Label(), "Cancel" ) ) - { - fPauseButton->SetEnabled( false ); - fRipButton->SetEnabled( false ); - hb_stop( fHandle ); - break; - } - - EnableUI( false ); - fPauseButton->SetEnabled( false ); - fRipButton->SetEnabled( false ); - - if( !fQueueCheck->Value() ) - { - AddJob(); - } - - hb_start( fHandle ); - break; - } - } -} - -void MainView::Update( hb_state_t * s ) -{ - if( !LockLooper() ) - { - fprintf( stderr, "LockLooper failed\n" ); - return; - } - - switch( s->state ) - { -#define p s->param.scandone - case HB_STATE_SCANDONE: - { - hb_list_t * list; - hb_title_t * title; - char string[1024]; - - list = hb_get_titles( fHandle ); - for( int i = 0; i < hb_list_count( list ); i++ ) - { - title = (hb_title_t *) hb_list_item( list, i ); - fSrcDVD2String->SetText( title->dvd ); - snprintf( string, 1024, "%d - %02dh%02dm%02ds", - title->index, title->hours, title->minutes, - title->seconds ); - fSrcTitlePopUp->AddItem( new BMenuItem( string, - new BMessage( MSG_TITLEPOPUP ) ) ); - } - fSrcTitlePopUp->ItemAt( 0 )->SetMarked( true ); - fSrcTitle = -1; - TitlePopUpChanged(); - - EnableUI( true ); - fRipButton->SetEnabled( true ); - fPauseButton->SetEnabled( false ); - break; - } -#undef p - -#define p s->param.working - case HB_STATE_WORKING: - { - float progress_total; - char text[1024]; - progress_total = ( p.progress + p.job_cur - 1 ) / p.job_count; - snprintf( text, 1024, "Encoding: task %d of %d, %.2f %%", - p.job_cur, p.job_count, 100.0 * p.progress ); - if( p.seconds > -1 ) - { - snprintf( text + strlen( text ), 1024 - strlen( text ), - " (%.2f fps, avg %.2f fps, ETA %02dh%02dm%02ds)", - p.rate_cur, p.rate_avg, p.hours, p.minutes, - p.seconds ); - } - fProgressBar->Update( fProgressBar->MaxValue() * - progress_total - fProgressBar->CurrentValue(), text ); - - fPauseButton->SetLabel( "Pause" ); - fPauseButton->SetEnabled( true ); - fRipButton->SetLabel( "Cancel" ); - fRipButton->SetEnabled( true ); - break; - } -#undef p - - case HB_STATE_PAUSED: - fProgressBar->Update( 0, "Paused" ); - fPauseButton->SetLabel( "Resume" ); - fPauseButton->SetEnabled( true ); - fRipButton->SetLabel( "Cancel" ); - fRipButton->SetEnabled( true ); - break; - -#define p s->param.workdone - case HB_STATE_WORKDONE: - fProgressBar->Update( - fProgressBar->CurrentValue(), - "Done." ); - EnableUI( true ); - fPauseButton->SetLabel( "Pause" ); - fPauseButton->SetEnabled( false ); - fRipButton->SetLabel( "Rip" ); - fRipButton->SetEnabled( true ); - - /* FIXME */ - hb_job_t * job; - while( ( job = hb_job( fHandle, 0 ) ) ) - { - hb_rem( fHandle, job ); - } - break; -#undef p - } - - UnlockLooper(); -} - -void MainView::EnableUI( bool b ) -{ - - rgb_color mycolor; - mycolor.red = mycolor.green = mycolor.blue = b ? 0 : 128; - mycolor.alpha = 255; - - BStringView * strings[] = - { fSrcDVD1String, fSrcDVD2String, fSrcChapString, - fSrcChapToString, fSrcDur1String, fSrcDur2String, - fVidQualityString }; - for( unsigned i = 0; i < sizeof( strings ) / sizeof( void * ); i++ ) - { - strings[i]->SetHighColor( mycolor ); - strings[i]->Invalidate(); /* Force redraw */ - } - - BMenuField * fields[] = - { fSrcTitleMenu, fSrcChapStartMenu, fSrcChapEndMenu, - fDstFormatMenu, fDstCodecsMenu, fVidRateMenu, fVidEncoderMenu, - fSubMenu, fAudLang1Menu, fAudLang2Menu, fAudRateMenu, - fAudBitrateMenu }; - for( unsigned i = 0; i < sizeof( fields ) / sizeof( void * ); i++ ) - { - fields[i]->SetEnabled( b ); - } - - BControl * controls[] = - { fDstFileControl, fBrowseButton, fVidTargetRadio, - fVidTargetControl, fVidAverageRadio, fVidAverageControl, - fVidConstantRadio, fVidConstantSlider, fVidGrayCheck, - fVidTwoPassCheck, fPictureButton }; - for( unsigned i = 0; i < sizeof( controls ) / sizeof( void * ); i++ ) - { - controls[i]->SetEnabled( b ); - } - - if( b ) - { - QualityRadioChanged(); - } -} - -void MainView::TitlePopUpChanged() -{ - int index = fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() ); - if( index == fSrcTitle ) - { - /* No change actually */ - return; - } - fSrcTitle = index; - - /* Get a pointer to the title */ - hb_list_t * list; - hb_title_t * title; - list = hb_get_titles( fHandle ); - title = (hb_title_t *) hb_list_item( list, index ); - - char text[1024]; - BMenuItem * item; - - /* Update chapters popups */ - while( ( item = fSrcChapStartPopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - while( ( item = fSrcChapEndPopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - for( int i = 0; i < hb_list_count( title->list_chapter ); i++ ) - { - snprintf( text, 1024, "%d", i + 1 ); - fSrcChapStartPopUp->AddItem( new BMenuItem( text, - new BMessage( MSG_CHAPTERPOPUP ) ) ); - fSrcChapEndPopUp->AddItem( new BMenuItem( text, - new BMessage( MSG_CHAPTERPOPUP ) ) ); - } - fSrcChapStartPopUp->ItemAt( 0 )->SetMarked( true ); - fSrcChapEndPopUp->ItemAt( hb_list_count( title->list_chapter ) - - 1 )->SetMarked( true ); - ChapterPopUpChanged(); - - /* Update subtitles popup */ - hb_subtitle_t * sub; - while( ( item = fSubPopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - fSubPopUp->AddItem( new BMenuItem( "None", new BMessage() ) ); - for( int i = 0; i < hb_list_count( title->list_subtitle ); i++ ) - { - sub = (hb_subtitle_t *) hb_list_item( title->list_subtitle, i ); - fSubPopUp->AddItem( new BMenuItem( sub->lang, new BMessage() ) ); - } - fSubPopUp->ItemAt( 0 )->SetMarked( true ); - - /* Update audio popups */ - hb_audio_t * audio; - while( ( item = fAudLang1PopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - while( ( item = fAudLang2PopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - fAudLang1PopUp->AddItem( new BMenuItem( "None", new BMessage() ) ); - fAudLang2PopUp->AddItem( new BMenuItem( "None", new BMessage() ) ); - for( int i = 0; i < hb_list_count( title->list_audio ); i++ ) - { - audio = (hb_audio_t *) hb_list_item( title->list_audio, i ); - fAudLang1PopUp->AddItem( new BMenuItem( audio->lang, new BMessage() ) ); - fAudLang2PopUp->AddItem( new BMenuItem( audio->lang, new BMessage() ) ); - } - fAudLang1PopUp->ItemAt( 1 )->SetMarked( true ); - fAudLang2PopUp->ItemAt( 0 )->SetMarked( true ); -} - -void MainView::ChapterPopUpChanged() -{ - /* Get a pointer to the title */ - hb_list_t * list; - hb_title_t * title; - list = hb_get_titles( fHandle ); - title = (hb_title_t *) hb_list_item( list, - fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() ) ); - - hb_chapter_t * chapter; - int64_t duration = 0; - for( int i = fSrcChapStartPopUp->IndexOf( - fSrcChapStartPopUp->FindMarked() ); - i <= fSrcChapEndPopUp->IndexOf( - fSrcChapEndPopUp->FindMarked() ); - i++ ) - { - chapter = (hb_chapter_t *) hb_list_item( title->list_chapter, i ); - duration += chapter->duration; - } - duration /= 90000; /* pts -> seconds */ - - char text[1024]; - snprintf( text, sizeof(text), "%02lld:%02lld:%02lld", - duration / 3600, ( duration / 60 ) % 60, duration % 60 ); - fSrcDur2String->SetText( text ); -} - -void MainView::FormatPopUpChanged() -{ - int format; - BMenuItem * item; - - format = fDstFormatPopUp->IndexOf( fDstFormatPopUp->FindMarked() ); - if( format == fDstFormat ) - { - /* No change actually */ - CheckExtension(); - return; - } - fDstFormat = format; - - /* Empty codecs popup */ - while( ( item = fDstCodecsPopUp->RemoveItem( 0L ) ) ) - { - delete item; - } - - /* Add acceptable video codec / audio codec combinations */ -#define ADDITEM(a) \ - fDstCodecsPopUp->AddItem( new BMenuItem( a, new BMessage( MSG_CODECSPOPUP ) ) ) - switch( format ) - { - case 0: - ADDITEM( "MPEG-4 Video / AAC Audio" ); - ADDITEM( "AVC/H.264 Video / AAC Audio" ); - break; - case 1: - ADDITEM( "MPEG-4 Video / MP3 Audio" ); - ADDITEM( "MPEG-4 Video / AC-3 Audio" ); - ADDITEM( "AVC/H.264 Video / MP3 Audio" ); - ADDITEM( "AVC/H.264 Video / AC-3 Audio" ); - break; - case 2: - ADDITEM( "MPEG-4 Video / Vorbis Audio" ); - ADDITEM( "MPEG-4 Video / MP3 Audio" ); - break; - } -#undef ADDITEM - - fDstCodecsPopUp->ItemAt( 0 )->SetMarked( true ); - - CheckExtension(); - CodecsPopUpChanged(); -} - -void MainView::CodecsPopUpChanged() -{ - int format = fDstFormatPopUp->IndexOf( fDstFormatPopUp->FindMarked() ); - int codecs = fDstCodecsPopUp->IndexOf( fDstCodecsPopUp->FindMarked() ); - - BMenuItem * item; - - /* Update the encoder popup if necessary */ - if( ( FormatSettings[format][codecs] & HB_VCODEC_X264 ) && - fVidEncoderPopUp->CountItems() > 1 ) - { - /* MPEG-4 -> H.264 */ - while( ( item = fVidEncoderPopUp->RemoveItem( 0L ) ) ) - delete item; - fVidEncoderPopUp->AddItem( new BMenuItem( "x264", new BMessage() ) ); - fVidEncoderPopUp->ItemAt( 0 )->SetMarked( true ); - } - else if( ( FormatSettings[format][codecs] & HB_VCODEC_FFMPEG ) && - fVidEncoderPopUp->CountItems() < 2 ) - { - /* H.264 -> MPEG-4 */ - while( ( item = fVidEncoderPopUp->RemoveItem( 0L ) ) ) - delete item; - fVidEncoderPopUp->AddItem( new BMenuItem( "FFmpeg", new BMessage() ) ); - fVidEncoderPopUp->AddItem( new BMenuItem( "XviD", new BMessage() ) ); - fVidEncoderPopUp->ItemAt( 0 )->SetMarked( true ); - } - - if( FormatSettings[format][codecs] & HB_ACODEC_AC3 ) - { - /* AC-3 pass-through: disable samplerate and bitrate */ - fAudRatePopUp->SetEnabled( false ); - fAudBitratePopUp->SetEnabled( false ); - } - else if( fVidEncoderPopUp->IsEnabled() ) - { - fAudRatePopUp->SetEnabled( true ); - fAudBitratePopUp->SetEnabled( true ); - } -} - -void MainView::CheckExtension() -{ - char * ext = NULL; - switch( fDstFormat ) - { - case 0: - ext = ".mp4"; - break; - case 1: - ext = ".avi"; - break; - case 2: - ext = ".ogm"; - break; - } - - char newname[1024]; - const char * oldname = fDstFileControl->Text(); - memcpy( newname, oldname, strlen( oldname ) ); - if( strlen( oldname ) > 4 && - oldname[strlen( oldname ) - 4] == '.' ) - { - /* Replace extension */ - memcpy( &newname[strlen( oldname ) - 4], ext, 5 ); - } - else - { - /* Add extension */ - memcpy( &newname[strlen( oldname )], ext, 5 ); - } - fDstFileControl->SetText( newname ); -} - -void MainView::QualityRadioChanged() -{ - fVidTargetControl->SetEnabled( fVidTargetRadio->Value() ); - fVidAverageControl->SetEnabled( fVidAverageRadio->Value() ); - fVidConstantSlider->SetEnabled( fVidConstantRadio->Value() ); - fVidTwoPassCheck->SetEnabled( !fVidConstantRadio->Value() ); - if( fVidConstantRadio->Value() ) - fVidTwoPassCheck->SetValue( 0 ); -} - -void MainView::SliderChanged() -{ - char text[1024]; - snprintf( text, 1024, "Constant quality: %ld %%", - fVidConstantSlider->Value() ); - fVidConstantRadio->SetLabel( text ); -} - -void MainView::AddJob() -{ - hb_list_t * list; - hb_title_t * title; - hb_job_t * job; - list = hb_get_titles( fHandle ); - title = (hb_title_t *) hb_list_item( list, - fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() ) ); - job = title->job; - - job->chapter_start = fSrcChapStartPopUp->IndexOf( - fSrcChapStartPopUp->FindMarked() ) + 1; - job->chapter_end = fSrcChapEndPopUp->IndexOf( - fSrcChapEndPopUp->FindMarked() ) + 1; - - int format = fDstFormatPopUp->IndexOf( - fDstFormatPopUp->FindMarked() ); - int codecs = fDstCodecsPopUp->IndexOf( - fDstCodecsPopUp->FindMarked() ); - - job->mux = FormatSettings[format][codecs] & HB_MUX_MASK; - job->vcodec = FormatSettings[format][codecs] & HB_VCODEC_MASK; - job->acodec = FormatSettings[format][codecs] & HB_ACODEC_MASK; - - if( ( job->vcodec & HB_VCODEC_FFMPEG ) && - fVidEncoderPopUp->IndexOf( - fVidEncoderPopUp->FindMarked() ) > 0 ) - { - job->vcodec = HB_VCODEC_XVID; - } - - int index; - index = fVidRatePopUp->IndexOf( - fVidRatePopUp->FindMarked() ); - if( index > 0 ) - { - job->vrate_base = hb_video_rates[index-1].rate; - } - else - { - job->vrate_base = title->rate_base; - } - - job->grayscale = fVidGrayCheck->Value(); - - job->subtitle = fSubPopUp->IndexOf( - fSubPopUp->FindMarked() ) - 1; - - job->audios[0] = fAudLang1PopUp->IndexOf( - fAudLang1PopUp->FindMarked() ) - 1; - job->audios[1] = fAudLang2PopUp->IndexOf( - fAudLang2PopUp->FindMarked() ) - 1; - job->audios[2] = -1; - - job->arate = hb_audio_rates[fAudRatePopUp->IndexOf( - fAudRatePopUp->FindMarked() )].rate; - job->abitrate = hb_audio_bitrates[fAudBitratePopUp->IndexOf( - fAudBitratePopUp->FindMarked() )].rate; - - if( fVidConstantRadio->Value() ) - { - job->vquality = 0.01 * fVidConstantSlider->Value(); - job->vbitrate = 0; - } - else if( fVidTargetRadio->Value() ) - { - job->vquality = -1.0; - job->vbitrate = hb_calc_bitrate( job, - atoi( fVidTargetControl->Text() ) ); - } - else - { - job->vquality = -1.0; - job->vbitrate = atoi( fVidAverageControl->Text() ); - } - - job->file = strdup( fDstFileControl->Text() ); - - if( fVidTwoPassCheck->Value() ) - { - job->pass = 1; - hb_add( fHandle, job ); - job->pass = 2; - hb_add( fHandle, job ); - } - else - { - job->pass = 0; - hb_add( fHandle, job ); - } -} - -MainWindow::MainWindow( hb_handle_t * handle ) - : BWindow( BRect( 0,0,10,10 ), "HandBrake " HB_VERSION, - B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) -{ - fHandle = handle; - - /* Add the main view */ - fView = new MainView( fHandle ); - AddChild( fView ); - - /* Resize to fit */ - ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() ); - - /* Center */ - BScreen screen; - MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2, - ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 ); -} - -void MainWindow::MessageReceived( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_TITLEPOPUP: - case MSG_CHAPTERPOPUP: - case MSG_FORMATPOPUP: - case MSG_CODECSPOPUP: - case MSG_BROWSE: - case MSG_QUALITYRADIO: - case MSG_SLIDER: - case MSG_PICSETTINGS: - case MSG_QUEUE_ENABLE: - case MSG_QUEUE_ADD: - case MSG_QUEUE_SHOW: - case MSG_PAUSE: - case MSG_START: - case B_SAVE_REQUESTED: - fView->HandleMessage( msg ); - break; - - default: - BWindow::MessageReceived( msg ); - break; - } -} - -bool MainWindow::QuitRequested() -{ - be_app_messenger.SendMessage( B_QUIT_REQUESTED ); - return true; -} - -void MainWindow::Update( hb_state_t * s ) -{ - fView->Update( s ); -} diff --git a/beos/MainWindow.h b/beos/MainWindow.h deleted file mode 100644 index 1558556f0..000000000 --- a/beos/MainWindow.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include -#include - -#include "hb.h" - -class BButton; -class BCheckBox; -class BMenuField; -class BPopUpMenu; -class BRadioButton; -class BSlider; -class BStatusBar; -class BStringView; -class BTextControl; -class BFilePanel; - -class PicWindow; -class QueueWindow; - -class MainView : public BView -{ - public: - MainView( hb_handle_t * handle ); - - void HandleMessage( BMessage * msg ); - void Update( hb_state_t * s ); - - private: - void EnableUI( bool ); - void TitlePopUpChanged(); - void ChapterPopUpChanged(); - void FormatPopUpChanged(); - void CodecsPopUpChanged(); - void CheckExtension(); - void QualityRadioChanged(); - void SliderChanged(); - void AddJob(); - - hb_handle_t * fHandle; - - BStringView * fSrcDVD1String; - BStringView * fSrcDVD2String; - BPopUpMenu * fSrcTitlePopUp; - BMenuField * fSrcTitleMenu; - int fSrcTitle; - BStringView * fSrcChapString; - BPopUpMenu * fSrcChapStartPopUp; - BMenuField * fSrcChapStartMenu; - BStringView * fSrcChapToString; - BPopUpMenu * fSrcChapEndPopUp; - BMenuField * fSrcChapEndMenu; - BStringView * fSrcDur1String; - BStringView * fSrcDur2String; - - BPopUpMenu * fDstFormatPopUp; - BMenuField * fDstFormatMenu; - int fDstFormat; - BPopUpMenu * fDstCodecsPopUp; - BMenuField * fDstCodecsMenu; - BTextControl * fDstFileControl; - BButton * fBrowseButton; - - BPopUpMenu * fVidRatePopUp; - BMenuField * fVidRateMenu; - BPopUpMenu * fVidEncoderPopUp; - BMenuField * fVidEncoderMenu; - BStringView * fVidQualityString; - BRadioButton * fVidTargetRadio; - BTextControl * fVidTargetControl; - BRadioButton * fVidAverageRadio; - BTextControl * fVidAverageControl; - BRadioButton * fVidConstantRadio; - BSlider * fVidConstantSlider; - BCheckBox * fVidGrayCheck; - BCheckBox * fVidTwoPassCheck; - - BPopUpMenu * fSubPopUp; - BMenuField * fSubMenu; - - BPopUpMenu * fAudLang1PopUp; - BMenuField * fAudLang1Menu; - BPopUpMenu * fAudLang2PopUp; - BMenuField * fAudLang2Menu; - BPopUpMenu * fAudRatePopUp; - BMenuField * fAudRateMenu; - BPopUpMenu * fAudBitratePopUp; - BMenuField * fAudBitrateMenu; - - BButton * fPictureButton; - - BStatusBar * fProgressBar; - BCheckBox * fQueueCheck; - BButton * fAddButton; - BButton * fShowButton; - BButton * fPauseButton; - BButton * fRipButton; - - BFilePanel * fFilePanel; - PicWindow * fPicWin; - QueueWindow * fQueueWin; -}; - -class MainWindow : public BWindow -{ - public: - MainWindow( hb_handle_t * handle ); - void MessageReceived( BMessage * msg ); - bool QuitRequested(); - - void Update( hb_state_t * s ); - - private: - MainView * fView; - - hb_handle_t * fHandle; -}; - -#endif diff --git a/beos/PicWindow.cpp b/beos/PicWindow.cpp deleted file mode 100644 index 6b30f27c2..000000000 --- a/beos/PicWindow.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "PicWindow.h" -#include "Stepper.h" - -#define MSG_PREV 'prev' -#define MSG_NEXT 'next' -#define MSG_CLOSE 'clos' -#define MSG_WIDTH 'widt' -#define MSG_HEIGHT 'heig' -#define MSG_RADIO 'radi' - -PicView::PicView( hb_handle_t * handle, int index ) - : BView( BRect( 0,0,10,10 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW ) -{ - fHandle = handle; - - /* Get the title and the job */ - hb_list_t * list; - list = hb_get_titles( fHandle ); - fTitle = (hb_title_t *) hb_list_item( list, index ); - fJob = fTitle->job; - - /* We'll start with the first picture */ - fIndex = 0; - - /* Allocate a buffer large enough to call hb_get_preview() later */ - fRawPic = (uint8_t *) malloc( ( fTitle->width + 2 ) * - ( fTitle->height + 2 ) * 4 ); - - /* Create the RGB BBitmap we'll use to display */ - fBitmap = new BBitmap( BRect( 0, 0, fTitle->width + 1, - fTitle->height + 1 ), 0, B_RGB32 ); - - /* Now build the interface */ - BRect r, b; - BBox * box; - BButton * button; - BStringView * stringView; - - /* Resize ourselves so the picture fits just fine */ - b = fBitmap->Bounds(); - ResizeTo( b.Width()+170, b.Height()+65 ); - - /* Now build the UI around the BBitmap */ - SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) ); - - /* "Size" box */ - b = Bounds(); - r = BRect( b.right-150,10,b.right-10,105 ); - box = new BBox( r ); - box->SetLabel( "Size" ); - AddChild( box ); - - b = box->Bounds(); - - /* Width */ - r = BRect( 10,15,b.right/2,35 ); - stringView = new BStringView( r, NULL, "Width:" ); - box->AddChild( stringView ); - r = BRect( b.right/2+1,15,b.right-10,35 ); - fWidthStepper = new HBStepper( r, 16, 16, fTitle->width, - fJob->width, new BMessage( MSG_WIDTH ) ); - box->AddChild( fWidthStepper ); - - /* Height */ - r = BRect( 10,40,b.right/2,60 ); - stringView = new BStringView( r, NULL, "Height:" ); - box->AddChild( stringView ); - r = BRect( b.right/2+1,40,b.right-10,60 ); - fHeightStepper = new HBStepper( r, 16, 16, fTitle->height, - fJob->height, new BMessage( MSG_HEIGHT ) ); - box->AddChild( fHeightStepper ); - - /* Aspect ratio */ - r = BRect( 10,65,b.right-10,85 ); - fRatioCheck = new BCheckBox( r, NULL, "Keep aspect ratio", - new BMessage( MSG_WIDTH ) ); - fRatioCheck->SetValue( fJob->keep_ratio ); - box->AddChild( fRatioCheck ); - - /* "Crop" box */ - b = Bounds(); - r = BRect( b.right-150,115,b.right-10,260 ); - box = new BBox( r ); - box->SetLabel( "Crop" ); - AddChild( box ); - - b = box->Bounds(); - - /* Automatic */ - r = BRect( 10,15,b.right-10,35 ); - fAutoRadio = new BRadioButton( r, NULL, "Automatic", - new BMessage( MSG_RADIO ) ); - box->AddChild( fAutoRadio ); - - /* Custom */ - r = BRect( 10,40,b.right-10,60 ); - fCustomRadio = new BRadioButton( r, NULL, "Custom:", - new BMessage( MSG_RADIO ) ); - box->AddChild( fCustomRadio ); - float width = ( b.Width() - 30 ) / 2; - r = BRect( (b.right-width)/2,65,(b.right+width)/2,85 ); - fCropSteppers[0] = new HBStepper( r, 2, 0, fTitle->height/2-2, - fJob->crop[0], new BMessage( MSG_WIDTH ) ); - box->AddChild( fCropSteppers[0] ); - r = BRect( (b.right-width)/2,115,(b.right+width)/2,135 ); - fCropSteppers[1] = new HBStepper( r, 2, 0, fTitle->height/2-2, - fJob->crop[1], new BMessage( MSG_WIDTH ) ); - box->AddChild( fCropSteppers[1] ); - r = BRect( 10,90,10+width,110 ); - fCropSteppers[2] = new HBStepper( r, 2, 0, fTitle->width/2-2, - fJob->crop[2], new BMessage( MSG_HEIGHT ) ); - box->AddChild( fCropSteppers[2] ); - r = BRect( width+20,90,b.right-10,110 ); - fCropSteppers[3] = new HBStepper( r, 2, 0, fTitle->width/2-2, - fJob->crop[3], new BMessage( MSG_HEIGHT ) ); - box->AddChild( fCropSteppers[3] ); - - if( memcmp( fTitle->crop, fJob->crop, 4 * sizeof( int ) ) ) - { - fCustomRadio->SetValue( 1 ); - } - else - { - fAutoRadio->SetValue( 1 ); - } - - /* "Misc" box */ - b = Bounds(); - r = BRect( b.right-150,270,b.right-10,315 ); - box = new BBox( r ); - box->SetLabel( "Misc" ); - AddChild( box ); - - b = box->Bounds(); - - /* Deinterlace */ - r = BRect( 10,15,b.right-10,35 ); - fDeintCheck = new BCheckBox( r, NULL, "Deinterlace picture", - new BMessage( MSG_WIDTH ) ); - fDeintCheck->SetValue( fJob->deinterlace ); - box->AddChild( fDeintCheck ); - - b = Bounds(); - - /* Next/Prev buttons */ - r = BRect( b.right-90,325,b.right-10,350 ); - fPrevButton = new BButton( r, NULL, "Previous", - new BMessage( MSG_PREV ) ); - AddChild( fPrevButton ); - r = BRect( b.right-90,355,b.right-10,380 ); - fNextButton = new BButton( r, NULL, "Next", - new BMessage( MSG_NEXT ) ); - AddChild( fNextButton ); - - /* Info string and OK button */ - r = BRect( 10,b.bottom-30,b.right-100,b.bottom-10 ); - fInfoString = new BStringView( r, NULL, "" ); - AddChild( fInfoString ); - r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 ); - button = new BButton( r, NULL, "OK", new BMessage( MSG_CLOSE ) ); - AddChild( button ); - - /* Process and draw a first picture */ - RadioChanged(); - UpdateBitmap(); -} - -PicView::~PicView() -{ - free( fRawPic ); - delete fBitmap; -} - -/************************************************************************ - * PicView::Draw - ************************************************************************ - * Calls the inherited BView::Draw, plus draws the BBitmap preview - * and the horizontal line above the info string and OK button - ***********************************************************************/ -void PicView::Draw( BRect rect ) -{ - BRect b; - - BView::Draw( rect ); - - if( LockLooper() ) - { - b = fBitmap->Bounds(); - DrawBitmap( fBitmap, BRect( 10,10,b.Width()+10,b.Height()+10 ) ); - UnlockLooper(); - } - - b = Bounds(); - SetHighColor( 128,128,128 ); - StrokeLine( BPoint( 10,b.bottom-45 ), BPoint( b.right-10,b.bottom-45 ) ); - SetHighColor( 255,255,255 ); - StrokeLine( BPoint( 10,b.bottom-44 ), BPoint( b.right-10,b.bottom-44 ) ); -} - -void PicView::HandleMessage( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_PREV: - fIndex--; - UpdateBitmap(); - break; - - case MSG_NEXT: - fIndex++; - UpdateBitmap(); - break; - - case MSG_WIDTH: - case MSG_HEIGHT: - UpdateSettings( msg->what ); - UpdateBitmap(); - break; - - case MSG_RADIO: - RadioChanged(); - break; - - } -} - -void PicView::RadioChanged() -{ - int cus = fCustomRadio->Value(); - for( int i = 0; i < 4; i++ ) - { - fCropSteppers[i]->SetEnabled( cus ); - } - if( !cus ) - { - memcpy( fJob->crop, fTitle->crop, 4 * sizeof( int ) ); - for( int i = 0; i < 4; i++ ) - { - fCropSteppers[i]->SetValue( fJob->crop[i] ); - } - UpdateSettings( MSG_WIDTH ); - UpdateBitmap(); - } -} - -void PicView::UpdateSettings( uint32 what ) -{ - fJob->width = fWidthStepper->Value(); - fJob->height = fHeightStepper->Value(); - fJob->keep_ratio = fRatioCheck->Value(); - fJob->deinterlace = fDeintCheck->Value(); - for( int i = 0; i < 4; i++ ) - { - fJob->crop[i] = fCropSteppers[i]->Value(); - } - - if( fJob->keep_ratio ) - { - if( what == MSG_WIDTH ) - { - hb_fix_aspect( fJob, HB_KEEP_WIDTH ); - if( fJob->height > fTitle->height ) - { - fJob->height = fTitle->height; - hb_fix_aspect( fJob, HB_KEEP_HEIGHT ); - } - } - else - { - hb_fix_aspect( fJob, HB_KEEP_HEIGHT ); - if( fJob->width > fTitle->width ) - { - fJob->width = fTitle->width; - hb_fix_aspect( fJob, HB_KEEP_WIDTH ); - } - } - } - - fWidthStepper->SetValue( fJob->width ); - fHeightStepper->SetValue( fJob->height ); -} - -void PicView::UpdateBitmap() -{ - /* Sanity checks */ - if( fIndex < 0 ) - { - fIndex = 0; - return; - } - if( fIndex > 9 ) - { - fIndex = 9; - return; - } - - /* Enable/disable buttons */ - fPrevButton->SetEnabled( fIndex > 0 ); - fNextButton->SetEnabled( fIndex < 9 ); - - /* Get new preview and copy it in our BBitmap */ - hb_get_preview( fHandle, fTitle, fIndex, fRawPic ); - for( int i = 0; i < fTitle->height + 2; i++ ) - { - memcpy( ( (uint8_t *) fBitmap->Bits() ) + - i * fBitmap->BytesPerRow(), - fRawPic + 4 * ( fTitle->width + 2 ) * i, - 4 * ( fTitle->width + 2 ) ); - } - - /* Update size info */ - char text[1024]; - snprintf( text, 1024, "Source: %dx%d, output: %dx%d", - fTitle->width, fTitle->height, - fJob->width, fJob->height ); - fInfoString->SetText( text ); - - /* Force redraw */ - Draw( Bounds() ); -} - -PicWindow::PicWindow( hb_handle_t * handle, int index ) - : BWindow( BRect( 0,0,10,10 ), "Picture settings", - B_FLOATING_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, - B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) -{ - /* Add the PicView */ - fView = new PicView( handle, index ); - AddChild( fView ); - - /* Resize to fit */ - ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() ); - - /* Center */ - BScreen screen; - MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2, - ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 ); -} - -void PicWindow::MessageReceived( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_PREV: - case MSG_NEXT: - case MSG_WIDTH: - case MSG_HEIGHT: - case MSG_RADIO: - fView->HandleMessage( msg ); - break; - - case MSG_CLOSE: - Lock(); - Quit(); - break; - - default: - BWindow::MessageReceived( msg ); - } -} diff --git a/beos/PicWindow.h b/beos/PicWindow.h deleted file mode 100644 index 9fe5d3131..000000000 --- a/beos/PicWindow.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef PICWINDOW_H -#define PICWINDOW_H - -#include -#include - -#include "hb.h" - -class HBStepper; - -class PicView : public BView -{ - public: - PicView( hb_handle_t * handle, int index ); - ~PicView(); - void Draw( BRect rect ); - - void HandleMessage( BMessage * msg ); - - private: - void UpdateBitmap(); - void RadioChanged(); - void UpdateSettings( uint32 what ); - - hb_handle_t * fHandle; - hb_title_t * fTitle; - hb_job_t * fJob; - int fIndex; - uint8_t * fRawPic; - BBitmap * fBitmap; - - HBStepper * fWidthStepper; - HBStepper * fHeightStepper; - BCheckBox * fRatioCheck; - BRadioButton * fAutoRadio; - BRadioButton * fCustomRadio; - HBStepper * fCropSteppers[4]; - BCheckBox * fDeintCheck; - BButton * fPrevButton; - BButton * fNextButton; - BStringView * fInfoString; -}; - -class PicWindow : public BWindow -{ - public: - PicWindow( hb_handle_t * handle, int index ); - void MessageReceived( BMessage * msg ); - - private: - PicView * fView; -}; - -#endif diff --git a/beos/QueueWindow.cpp b/beos/QueueWindow.cpp deleted file mode 100644 index 2b0319e32..000000000 --- a/beos/QueueWindow.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include -#include -#include - -#include "QueueWindow.h" - -#define MSG_REMOVE 'remo' -#define MSG_CLOSE 'clos' - -QueueView::QueueView( hb_handle_t * handle ) - : BView( BRect( 0,0,500,300 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW ) -{ - fHandle = handle; - - BRect b = Bounds(), r; - - r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 ); - BButton * button = new BButton( r, NULL, "Close", new BMessage( MSG_CLOSE ) ); - AddChild( button ); - - fScrollView = NULL; - UpdateQueue(); -} - -QueueView::~QueueView() -{ -} - -void QueueView::HandleMessage( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_REMOVE: - break; - } -} - -void QueueView::AddStringView( char * string, BRect * r ) -{ - BStringView * stringView; - - stringView = new BStringView( *r, NULL, string ); - fQueueView->AddChild( stringView ); - free( string ); - - r->top += 20; - r->bottom += 20; -} - -void QueueView::UpdateQueue() -{ - BRect b = Bounds(), r; - - if( fScrollView ) - { - RemoveChild( fScrollView ); - delete fScrollView; - } - - r = BRect( b.left+10,b.top+10,b.right-B_V_SCROLL_BAR_WIDTH-10,b.bottom-45 ); - fQueueView = new BView( r, NULL, B_FOLLOW_NONE, B_WILL_DRAW ); - fScrollView = new BScrollView( NULL, fQueueView, B_FOLLOW_NONE, 0, - false, true, B_FANCY_BORDER ); - AddChild( fScrollView ); - - hb_job_t * j; - hb_title_t * t; - int i; - char * s; - - b = fQueueView->Bounds(); - r = BRect( b.left+10,b.top+10,b.right-10,b.top+25 ); - - for( i = 0; i < hb_count( fHandle ); i++ ) - { - j = hb_job( fHandle, i ); - t = j->title; - - asprintf( &s, "DVD: %s", t->dvd ); - AddStringView( s, &r ); - - asprintf( &s, "Title: %d", t->index ); - AddStringView( s, &r ); - - asprintf( &s, "Chapters: %d to %d", j->chapter_start, j->chapter_end ); - AddStringView( s, &r ); - - asprintf( &s, "Pass: %d of %d", MAX( 1, j->pass ), MIN( 2, j->pass + 1 ) ); - AddStringView( s, &r ); - - asprintf( &s, "Destination: %s", j->file ); - AddStringView( s, &r ); - } -} - -QueueWindow::QueueWindow( hb_handle_t * handle ) - : BWindow( BRect( 0,0,10,10 ), "Queue", - B_FLOATING_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, - B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) -{ - /* Add the QueueView */ - fView = new QueueView( handle ); - AddChild( fView ); - - /* Resize to fit */ - ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() ); - - /* Center */ - BScreen screen; - MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2, - ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 ); -} - -void QueueWindow::MessageReceived( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_REMOVE: - fView->HandleMessage( msg ); - break; - - case MSG_CLOSE: - Lock(); - Quit(); - break; - - default: - BWindow::MessageReceived( msg ); - } -} diff --git a/beos/QueueWindow.h b/beos/QueueWindow.h deleted file mode 100644 index e9b86e3a7..000000000 --- a/beos/QueueWindow.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef QUEUE_WINDOW_H -#define QUEUE_WINDOW_H - -#include -#include - -#include "hb.h" - -class QueueView : public BView -{ - public: - QueueView( hb_handle_t * handle ); - ~QueueView(); - - void HandleMessage( BMessage * msg ); - - private: - void AddStringView( char * string, BRect * r ); - void UpdateQueue(); - - hb_handle_t * fHandle; - - BScrollView * fScrollView; - BView * fQueueView; - BButton * fCloseButton; -}; - -class QueueWindow : public BWindow -{ - public: - QueueWindow( hb_handle_t * handle ); - void MessageReceived( BMessage * msg ); - - private: - QueueView * fView; -}; - -#endif diff --git a/beos/ScanWindow.cpp b/beos/ScanWindow.cpp deleted file mode 100644 index 615731f11..000000000 --- a/beos/ScanWindow.cpp +++ /dev/null @@ -1,320 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ScanWindow.h" - -#define MSG_RADIO 'radi' -#define MSG_BROWSE 'brow' -#define MSG_CANCEL 'canc' -#define MSG_OPEN 'open' - -ScanView::ScanView( hb_handle_t * handle ) - : BView( BRect( 0,0,400,215 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW ) -{ - fHandle = handle; - - BRect r, b; - BBox * box; - BStringView * stringView; - - SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) ); - - b = Bounds(); - - r = BRect( 10,10,b.right-10,130 ); - box = new BBox( r ); - AddChild( box ); - - b = box->Bounds(); - - r = BRect( 10,10,b.right-10,30 ); - stringView = new BStringView( r, NULL, "Select a DVD:" ); - box->AddChild( stringView ); - - r = BRect( 10,35,b.right/2,55 ); - fDetectedRadio = new BRadioButton( r, NULL, "Detected volume", - new BMessage( MSG_RADIO ) ); - box->AddChild( fDetectedRadio ); - - r = BRect( b.right/2+1,35,b.right-10,55 ); - fPopUp = new BPopUpMenu( "No volume detected" ); - fMenu = new BMenuField( r, NULL, "", fPopUp, true ); - fMenu->SetDivider( 0 ); - box->AddChild( fMenu ); - - r = BRect( 10,60,b.right/2,80 ); - fFolderRadio = new BRadioButton( r, NULL, "DVD Folder / Image", - new BMessage( MSG_RADIO ) ); - box->AddChild( fFolderRadio ); - - r = BRect( b.right/2+1,60,b.right-10,80 ); - fControl = new BTextControl( r, NULL, "", "", new BMessage() ); - fControl->SetDivider( 0 ); - box->AddChild( fControl ); - - r = BRect( b.right-90,85,b.right-10,110 ); - fBrowseButton = new BButton( r, NULL, "Browse", - new BMessage( MSG_BROWSE ) ); - box->AddChild( fBrowseButton ); - - b = Bounds(); - - r = BRect( 10,b.bottom-75,b.right-10,b.bottom-45 ); - fBar = new BStatusBar( r, NULL, NULL, NULL ); - AddChild( fBar ); - - r = BRect( b.right-180,b.bottom-35,b.right-100,b.bottom-10 ); - fCancelButton = new BButton( r, NULL, "Cancel", - new BMessage( MSG_CANCEL ) ); - AddChild( fCancelButton ); - - r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 ); - fOpenButton = new BButton( r, NULL, "Open", new BMessage( MSG_OPEN ) ); - AddChild( fOpenButton ); - - DetectVolumes(); - - if( fPopUp->CountItems() > 0 ) - { - fDetectedRadio->SetValue( true ); - } - else - { - fFolderRadio->SetValue( true ); - } - RadioChanged(); - - fFilePanel = NULL; -} - -void ScanView::HandleMessage( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_RADIO: - RadioChanged(); - break; - - case MSG_BROWSE: - if( !fFilePanel ) - { - fFilePanel = new BFilePanel( B_OPEN_PANEL, - new BMessenger( Window() ), NULL, - B_FILE_NODE | B_DIRECTORY_NODE, false, NULL, NULL, - true ); - } - fFilePanel->Show(); - break; - - case B_REFS_RECEIVED: - { - entry_ref ref; - if( msg->FindRef( "refs", 0, &ref ) == B_OK ) - { - BPath * path = new BPath( &ref ); - fControl->SetText( path->Path()); - } - break; - } - - case MSG_CANCEL: - Window()->Hide(); - break; - - case MSG_OPEN: - SetEnabled( false ); - fBar->Update( - fBar->CurrentValue(), "Opening..." ); - if( fDetectedRadio->Value() && fPopUp->CountItems() > 0 ) - { - hb_scan( fHandle, fPopUp->FindMarked()->Label(), 0 ); - } - else if( fFolderRadio->Value() ) - { - hb_scan( fHandle, fControl->Text(), 0 ); - } - break; - } -} - -void ScanView::Update( hb_state_t * s ) -{ - if( !LockLooper() ) - { - return; - } - - switch( s->state ) - { -#define p s->param.scanning - case HB_STATE_SCANNING: - { - char text[1024]; - snprintf( text, 1024, "Scanning title %d of %d...", p.title_cur, - p.title_count ); - fBar->Update( fBar->MaxValue() * ( - 0.5 + p.title_cur ) / - p.title_count - fBar->CurrentValue(), text ); - break; - } -#undef p - - case HB_STATE_SCANDONE: - /* If we are still here, then no title was found */ - fBar->Update( - fBar->CurrentValue(), - "No valid title found." ); - SetEnabled( true ); - break; - } - - UnlockLooper(); -} - -void ScanView::RadioChanged() -{ - bool b = fDetectedRadio->Value(); - fMenu->SetEnabled( b ); - fControl->SetEnabled( !b ); - fBrowseButton->SetEnabled( !b ); - fOpenButton->SetEnabled( !b || ( fPopUp->CountItems() > 0 ) ); -} - -void ScanView::SetEnabled( bool b ) -{ - fDetectedRadio->SetEnabled( b ); - fMenu->SetEnabled( b ); - fFolderRadio->SetEnabled( b ); - fControl->SetEnabled( b ); - fBrowseButton->SetEnabled( b ); - fOpenButton->SetEnabled( b ); - - if( b ) - { - RadioChanged(); - } -} - -void ScanView::DetectVolumes() -{ - BVolumeRoster * roster = new BVolumeRoster(); - BVolume * volume = new BVolume(); - fs_info info; - int device; - device_geometry geometry; - - while( roster->GetNextVolume( volume ) == B_NO_ERROR ) - { - /* open() and ioctl() for more informations */ - fs_stat_dev( volume->Device(), &info ); - if( ( device = open( info.device_name, O_RDONLY ) ) < 0 ) - { - continue; - } - - if( ioctl( device, B_GET_GEOMETRY, &geometry, - sizeof( geometry ) ) < 0 ) - { - continue; - } - - /* Get the volume name */ - char volumeName[B_FILE_NAME_LENGTH]; - volume->GetName( volumeName ); - - if( volume->IsReadOnly() && geometry.device_type == B_CD ) - { - /* May be a DVD */ - fPopUp->AddItem( new BMenuItem( info.device_name, NULL ) ); - } - else if( geometry.device_type == B_DISK ) - { - /* May be a hard drive. Look for VIDEO_TS folders on it */ - BQuery * query = new BQuery(); - - if( query->SetVolume( volume ) != B_OK ) - { - delete query; - continue; - } - - if( query->SetPredicate( "name = VIDEO_TS.IFO" ) != B_OK ) - { - delete query; - continue; - } - - query->Fetch(); - - BEntry entry, parentEntry; - BPath path; - while( query->GetNextEntry( &entry ) == B_OK ) - { - entry.GetParent( &parentEntry ); - parentEntry.GetPath( &path ); - - fPopUp->AddItem( new BMenuItem( path.Path(), NULL ) ); - } - - delete query; - } - } - - if( fPopUp->CountItems() > 0 ) - { - fPopUp->ItemAt( 0 )->SetMarked( true ); - } -} - -ScanWindow::ScanWindow( hb_handle_t * handle ) - : BWindow( BRect( 0,0,10,10 ), "Scan", B_FLOATING_WINDOW_LOOK, - B_MODAL_SUBSET_WINDOW_FEEL, B_NOT_CLOSABLE | - B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) -{ - /* Add the scan view */ - fView = new ScanView( handle ); - AddChild( fView ); - - /* Resize to fit */ - ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() ); - - /* Center */ - BScreen screen; - MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2, - ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 ); -} - -void ScanWindow::MessageReceived( BMessage * msg ) -{ - switch( msg->what ) - { - case MSG_RADIO: - case MSG_BROWSE: - case MSG_CANCEL: - case MSG_OPEN: - case B_REFS_RECEIVED: - fView->HandleMessage( msg ); - break; - - default: - BWindow::MessageReceived( msg ); - } -} - -void ScanWindow::Update( hb_state_t * s ) -{ - fView->Update( s ); -} - diff --git a/beos/ScanWindow.h b/beos/ScanWindow.h deleted file mode 100644 index f46c1c14f..000000000 --- a/beos/ScanWindow.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef SCANWINDOW_H -#define SCANWINDOW_H - -#include -#include - -#include "hb.h" - -class BButton; -class BMenuField; -class BPopUpMenu; -class BRadioButton; -class BStatusBar; -class BTextControl; - -class ScanView : public BView -{ - public: - ScanView( hb_handle_t * handle ); - - void HandleMessage( BMessage * msg ); - void Update( hb_state_t * s ); - void RadioChanged(); - void SetEnabled( bool ); - - private: - void DetectVolumes(); - - hb_handle_t * fHandle; - - BRadioButton * fDetectedRadio; - BPopUpMenu * fPopUp; - BMenuField * fMenu; - BRadioButton * fFolderRadio; - BTextControl * fControl; - BButton * fBrowseButton; - BStatusBar * fBar; - BButton * fCancelButton; - BButton * fOpenButton; - - BFilePanel * fFilePanel; -}; - -class ScanWindow : public BWindow -{ - public: - ScanWindow( hb_handle_t * handle ); - void MessageReceived( BMessage * msg ); - - void Update( hb_state_t * s ); - - private: - ScanView * fView; -}; - -#endif diff --git a/beos/Stepper.cpp b/beos/Stepper.cpp deleted file mode 100644 index 8f2733ac5..000000000 --- a/beos/Stepper.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include -#include -#include - -#include "Stepper.h" - -#include - -HBStepper::HBStepper( BRect rect, int step, int min, int max, int val, - BMessage * message ) - : BView( rect, NULL, B_FOLLOW_NONE, B_WILL_DRAW ) -{ - fStep = step; - fMin = min; - fMax = max; - fMessage = message; - - BRect b = Bounds(); - - fEnabled = true; - - fControl = new BTextControl( BRect( 0,1,b.Width()-14,b.Height()-1 ), - NULL, NULL, "", new BMessage() ); - fControl->SetDivider( 0.0 ); - fControl->TextView()->MakeEditable( false ); - AddChild( fControl ); - - SetValue( val ); -} - -void HBStepper::Draw( BRect rect ) -{ - /* Why do we have to do this here!? */ - fControl->TextView()->MakeEditable( false ); - fControl->TextView()->MakeSelectable( false ); - - BRect b = Bounds(); - BRegion region; - - SetHighColor( 128,128,128 ); /* Dark gray */ - region.MakeEmpty(); - region.Include( BRect( 3, 0,10, 0 ) ); - region.Include( BRect( 2, 1, 3, 1 ) ); - region.Include( BRect( 10, 1,11, 1 ) ); - region.Include( BRect( 1, 2, 2, 2 ) ); - region.Include( BRect( 11, 2,12, 2 ) ); - region.Include( BRect( 1, 2, 1,18 ) ); - region.Include( BRect( 1,10,12,10 ) ); - region.Include( BRect( 12, 2,12,18 ) ); - region.Include( BRect( 1,18, 2,18 ) ); - region.Include( BRect( 11,18,12,18 ) ); - region.Include( BRect( 2,19, 3,19 ) ); - region.Include( BRect( 10,19,11,19 ) ); - region.Include( BRect( 3,20,10,20 ) ); - region.OffsetBy( b.Width()-12,0 ); - FillRegion( ®ion ); - - SetHighColor( 0,0,0 ); /* Black */ - region.MakeEmpty(); - region.Include( BRect( 6, 4, 7, 4 ) ); - region.Include( BRect( 5, 5, 8, 6 ) ); - region.Include( BRect( 5,14, 8,15 ) ); - region.Include( BRect( 6,16, 7,16 ) ); - region.OffsetBy( b.Width()-12,0 ); - FillRegion( ®ion ); - - BView::Draw( rect ); -} - -void HBStepper::AttachedToWindow() -{ - if( Parent() ) - { - SetViewColor( Parent()->ViewColor() ); - } -} - -void HBStepper::MouseDown( BPoint point ) -{ - BRect r, b = Bounds(); - - if( !fEnabled ) - { - return; - } - - BMessenger messenger( Window() ); - - r = BRect( 2,1,11,9 ); - r.OffsetBy( b.Width()-12,0 ); - if( r.Contains( point ) ) - { - SetValue( fValue + fStep ); - messenger.SendMessage( fMessage ); - } - r.OffsetBy( 0,10 ); - if( r.Contains( point ) ) - { - SetValue( fValue - fStep ); - messenger.SendMessage( fMessage ); - } -} - -void HBStepper::SetValue( int val ) -{ - fValue = val; - if( fValue < fMin ) - { - fValue = fMin; - } - if( fValue > fMax ) - { - fValue = fMax; - } - - char text[16]; - snprintf( text, 16, "%d", fValue ); - fControl->SetText( text ); -} - -int HBStepper::Value() -{ - return fValue; -} - -void HBStepper::SetEnabled( bool e ) -{ - fEnabled = e; - fControl->SetEnabled( fEnabled ); -} diff --git a/beos/Stepper.h b/beos/Stepper.h deleted file mode 100644 index 2b0493f6e..000000000 --- a/beos/Stepper.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef STEPPER_H -#define STEPPER_H - -#include - -class BTextControl; - -class HBStepper : public BView -{ - public: - HBStepper( BRect rect, int step, int min, int max, int val, - BMessage * message ); - void Draw( BRect rect ); - void AttachedToWindow(); - void MouseDown( BPoint point ); - void SetValue( int val ); - int Value(); - void SetEnabled( bool e ); - - private: - int fStep; - int fMin; - int fMax; - int fValue; - BMessage * fMessage; - - bool fEnabled; - BTextControl * fControl; -}; - -#endif