Simplified / cleaned up code, fixed close window behavior, changed status view text to show identify string
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4212 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -17,22 +17,53 @@ int main(int, char**)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define WINDOWS_TO_IGNORE 1
|
||||||
|
|
||||||
ShowImageApp::ShowImageApp()
|
ShowImageApp::ShowImageApp()
|
||||||
: BApplication(APP_SIG), m_pOpenPanel(0)
|
: BApplication(APP_SIG)
|
||||||
{ }
|
{
|
||||||
|
fbpulseStarted = false;
|
||||||
|
m_pOpenPanel = new BFilePanel(B_OPEN_PANEL);
|
||||||
|
}
|
||||||
|
|
||||||
void ShowImageApp::AboutRequested()
|
void ShowImageApp::AboutRequested()
|
||||||
{
|
{
|
||||||
BAlert* pAlert = new BAlert("About ShowImage",
|
BAlert* pAlert = new BAlert("About ShowImage",
|
||||||
"OBOS ShowImage\n\nRecreated by Fernando F.Oliveira", "OK");
|
"OBOS ShowImage\n\nby Fernando F. Oliveira and Michael Wilber", "OK");
|
||||||
pAlert->Go();
|
pAlert->Go();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowImageApp::ReadyToRun()
|
void ShowImageApp::ReadyToRun()
|
||||||
{
|
{
|
||||||
int32 count = ShowImageWindow::CountWindows();
|
if (CountWindows() == WINDOWS_TO_IGNORE)
|
||||||
if (count < 1)
|
m_pOpenPanel->Show();
|
||||||
OnOpen();
|
else
|
||||||
|
// If image windows are already open
|
||||||
|
// (paths supplied on the command line)
|
||||||
|
// start checking the number of open windows
|
||||||
|
StartPulse();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ShowImageApp::StartPulse()
|
||||||
|
{
|
||||||
|
if (!fbpulseStarted) {
|
||||||
|
// Tell the app to begin checking
|
||||||
|
// for the number of open windows
|
||||||
|
fbpulseStarted = true;
|
||||||
|
SetPulseRate(250000);
|
||||||
|
// Set pulse to every 1/4 second
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ShowImageApp::Pulse()
|
||||||
|
{
|
||||||
|
if (!IsLaunching() && CountWindows() <= WINDOWS_TO_IGNORE)
|
||||||
|
// If the application is not launching and
|
||||||
|
// all windows are closed except for the file open panel,
|
||||||
|
// quit the application
|
||||||
|
PostMessage(B_QUIT_REQUESTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowImageApp::ArgvReceived(int32 argc, char** argv)
|
void ShowImageApp::ArgvReceived(int32 argc, char** argv)
|
||||||
@@ -49,39 +80,31 @@ void ShowImageApp::ArgvReceived(int32 argc, char** argv)
|
|||||||
message->AddRef("refs", &ref);
|
message->AddRef("refs", &ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (message) {
|
if (message)
|
||||||
RefsReceived(message);
|
RefsReceived(message);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void ShowImageApp::MessageReceived(BMessage* message)
|
void ShowImageApp::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
case MSG_FILE_OPEN:
|
case MSG_FILE_OPEN:
|
||||||
OnOpen();
|
m_pOpenPanel->Show();
|
||||||
break;
|
break;
|
||||||
|
case MSG_WINDOW_QUIT:
|
||||||
|
break;
|
||||||
|
|
||||||
case B_CANCEL:
|
case B_CANCEL:
|
||||||
if (ShowImageWindow::CountWindows() < 1)
|
// File open panel was closed,
|
||||||
PostMessage(B_QUIT_REQUESTED);
|
// start checking count of open windows
|
||||||
|
StartPulse();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BApplication::MessageReceived(message);
|
BApplication::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShowImageApp::QuitRequested()
|
|
||||||
{
|
|
||||||
// Attempt to close all the document windows.
|
|
||||||
bool ok = QuitDudeWinLoop();
|
|
||||||
if (ok)
|
|
||||||
// Everything's been saved, and only unimportant windows should remain.
|
|
||||||
// Now we can forcibly blow those away.
|
|
||||||
CloseAllWindows();
|
|
||||||
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowImageApp::RefsReceived(BMessage* message)
|
void ShowImageApp::RefsReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
uint32 type;
|
uint32 type;
|
||||||
@@ -99,54 +122,6 @@ void ShowImageApp::RefsReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowImageApp::OnOpen()
|
|
||||||
{
|
|
||||||
if (! m_pOpenPanel) {
|
|
||||||
m_pOpenPanel = new BFilePanel;
|
|
||||||
m_pOpenPanel->Window()->SetTitle("Open Image File");
|
|
||||||
}
|
|
||||||
m_pOpenPanel->Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ShowImageApp::QuitDudeWinLoop()
|
|
||||||
{
|
|
||||||
bool ok = true;
|
|
||||||
status_t err;
|
|
||||||
int32 i=0;
|
|
||||||
while (ok) {
|
|
||||||
BWindow* pWin = WindowAt(i++);
|
|
||||||
if (! pWin)
|
|
||||||
break;
|
|
||||||
|
|
||||||
ShowImageWindow* pShowImageWindow = dynamic_cast<ShowImageWindow*>(pWin);
|
|
||||||
if (pShowImageWindow && pShowImageWindow->Lock()) {
|
|
||||||
BMessage quitMsg(B_QUIT_REQUESTED);
|
|
||||||
BMessage reply;
|
|
||||||
BMessenger winMsgr(pShowImageWindow);
|
|
||||||
pShowImageWindow->Unlock();
|
|
||||||
err = winMsgr.SendMessage(&quitMsg, &reply);
|
|
||||||
if (err == B_OK) {
|
|
||||||
bool result;
|
|
||||||
err = reply.FindBool("result", &result);
|
|
||||||
if (err == B_OK) {
|
|
||||||
ok = result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowImageApp::CloseAllWindows()
|
|
||||||
{
|
|
||||||
int32 i = 0;
|
|
||||||
BWindow* pWin;
|
|
||||||
for (pWin = WindowAt(i++); pWin && pWin->Lock(); pWin = WindowAt(i++)) {
|
|
||||||
// don't take no for an answer
|
|
||||||
pWin->Quit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowImageApp::Open(const entry_ref* ref)
|
void ShowImageApp::Open(const entry_ref* ref)
|
||||||
{
|
{
|
||||||
if (ShowImageWindow::NewWindow(ref) != B_OK) {
|
if (ShowImageWindow::NewWindow(ref) != B_OK) {
|
||||||
|
|||||||
@@ -16,18 +16,17 @@ public:
|
|||||||
virtual void AboutRequested();
|
virtual void AboutRequested();
|
||||||
virtual void ArgvReceived(int32 argc, char** argv);
|
virtual void ArgvReceived(int32 argc, char** argv);
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
virtual bool QuitRequested();
|
|
||||||
virtual void ReadyToRun();
|
virtual void ReadyToRun();
|
||||||
|
virtual void Pulse();
|
||||||
virtual void RefsReceived(BMessage* message);
|
virtual void RefsReceived(BMessage* message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnOpen();
|
void StartPulse();
|
||||||
bool QuitDudeWinLoop();
|
|
||||||
void CloseAllWindows();
|
|
||||||
void Open(const entry_ref* ref);
|
void Open(const entry_ref* ref);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BFilePanel* m_pOpenPanel;
|
BFilePanel* m_pOpenPanel;
|
||||||
|
bool fbpulseStarted;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _ShowImageApp_h */
|
#endif /* _ShowImageApp_h */
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
const uint32 MSG_CAPTURE_MOUSE = 'mCPM';
|
const uint32 MSG_CAPTURE_MOUSE = 'mCPM';
|
||||||
const uint32 MSG_CHANGE_FOCUS = 'mCFS';
|
const uint32 MSG_CHANGE_FOCUS = 'mCFS';
|
||||||
const uint32 MSG_FILE_OPEN = 'mFOP';
|
const uint32 MSG_FILE_OPEN = 'mFOP';
|
||||||
|
const uint32 MSG_CLOSE = 'mCLS';
|
||||||
|
const uint32 MSG_WINDOW_QUIT = 'mWQT';
|
||||||
const uint32 MSG_OUTPUT_TYPE = 'BTMN';
|
const uint32 MSG_OUTPUT_TYPE = 'BTMN';
|
||||||
const uint32 MSG_SAVE_PANEL = 'mFSP';
|
const uint32 MSG_SAVE_PANEL = 'mFSP';
|
||||||
const uint32 MSG_CLEAR_SELECT = 'mCSL';
|
const uint32 MSG_CLEAR_SELECT = 'mCSL';
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <algobase.h>
|
#include <algobase.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <BitmapStream.h>
|
#include <BitmapStream.h>
|
||||||
@@ -15,53 +16,49 @@
|
|||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <TranslationUtils.h>
|
#include <TranslationUtils.h>
|
||||||
#include <TranslatorRoster.h>
|
#include <TranslatorRoster.h>
|
||||||
#include <Locker.h>
|
|
||||||
#include <Alert.h>
|
#include <Alert.h>
|
||||||
|
#include <SupportDefs.h>
|
||||||
|
|
||||||
#include "ShowImageConstants.h"
|
#include "ShowImageConstants.h"
|
||||||
#include "ShowImageWindow.h"
|
#include "ShowImageWindow.h"
|
||||||
#include "ShowImageView.h"
|
#include "ShowImageView.h"
|
||||||
#include "ShowImageStatusView.h"
|
#include "ShowImageStatusView.h"
|
||||||
|
|
||||||
BLocker ShowImageWindow::s_winListLocker("ShowImageWindow list lock");
|
|
||||||
BList ShowImageWindow::s_winList;
|
|
||||||
|
|
||||||
status_t ShowImageWindow::NewWindow(const entry_ref* ref)
|
status_t ShowImageWindow::NewWindow(const entry_ref* ref)
|
||||||
{
|
{
|
||||||
BBitmap* pBitmap = BTranslationUtils::GetBitmap(ref);
|
// Get identify string (image type)
|
||||||
|
BString strId = "Unknown";
|
||||||
|
BTranslatorRoster *proster = BTranslatorRoster::Default();
|
||||||
|
if (!proster)
|
||||||
|
return B_ERROR;
|
||||||
|
BFile file(ref, B_READ_ONLY);
|
||||||
|
translator_info info;
|
||||||
|
if (proster->Identify(&file, NULL, &info) == B_OK)
|
||||||
|
strId = info.name;
|
||||||
|
|
||||||
|
// Translate image data and create a new ShowImage window
|
||||||
|
file.Seek(0, SEEK_SET);
|
||||||
|
BBitmap* pBitmap = BTranslationUtils::GetBitmap(&file);
|
||||||
if (pBitmap) {
|
if (pBitmap) {
|
||||||
ShowImageWindow* pWin = new ShowImageWindow(ref, pBitmap);
|
ShowImageWindow* pWin = new ShowImageWindow(ref, pBitmap, strId);
|
||||||
return pWin->InitCheck();
|
return pWin->InitCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 ShowImageWindow::CountWindows()
|
ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap, BString &strId)
|
||||||
{
|
|
||||||
int32 count = -1;
|
|
||||||
if (s_winListLocker.Lock()) {
|
|
||||||
count = s_winList.CountItems();
|
|
||||||
s_winListLocker.Unlock();
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap)
|
|
||||||
: BWindow(BRect(50, 50, 350, 250), "", B_DOCUMENT_WINDOW, 0),
|
: BWindow(BRect(50, 50, 350, 250), "", B_DOCUMENT_WINDOW, 0),
|
||||||
m_pReferences(0)
|
m_pReferences(0)
|
||||||
{
|
{
|
||||||
fpsavePanel = NULL;
|
fpsavePanel = NULL;
|
||||||
|
|
||||||
SetPulseRate( 200000.0 );
|
|
||||||
|
|
||||||
// create menu bar
|
// create menu bar
|
||||||
pBar = new BMenuBar( BRect(0,0, Bounds().right, 20), "menu_bar");
|
pBar = new BMenuBar( BRect(0,0, Bounds().right, 20), "menu_bar");
|
||||||
LoadMenus(pBar);
|
LoadMenus(pBar);
|
||||||
AddChild(pBar);
|
AddChild(pBar);
|
||||||
|
|
||||||
BRect viewFrame = Bounds();
|
BRect viewFrame = Bounds();
|
||||||
// viewFrame.left += 20;
|
|
||||||
viewFrame.top = pBar->Bounds().bottom+1;
|
viewFrame.top = pBar->Bounds().bottom+1;
|
||||||
viewFrame.right -= B_V_SCROLL_BAR_WIDTH;
|
viewFrame.right -= B_V_SCROLL_BAR_WIDTH;
|
||||||
viewFrame.bottom -= B_H_SCROLL_BAR_HEIGHT;
|
viewFrame.bottom -= B_H_SCROLL_BAR_HEIGHT;
|
||||||
@@ -81,9 +78,10 @@ ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap)
|
|||||||
|
|
||||||
BRect rect;
|
BRect rect;
|
||||||
|
|
||||||
|
const int32 kstatusWidth = 190;
|
||||||
rect = Bounds();
|
rect = Bounds();
|
||||||
rect.top = viewFrame.bottom + 1;
|
rect.top = viewFrame.bottom + 1;
|
||||||
rect.left = viewFrame.left + 160;
|
rect.left = viewFrame.left + kstatusWidth;
|
||||||
rect.right = viewFrame.right;
|
rect.right = viewFrame.right;
|
||||||
|
|
||||||
hor_scroll = new BScrollBar( rect, "hor_scroll", m_PrivateView, 0,150, B_HORIZONTAL );
|
hor_scroll = new BScrollBar( rect, "hor_scroll", m_PrivateView, 0,150, B_HORIZONTAL );
|
||||||
@@ -92,11 +90,11 @@ ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap)
|
|||||||
ShowImageStatusView * status_bar;
|
ShowImageStatusView * status_bar;
|
||||||
|
|
||||||
rect.left = 0;
|
rect.left = 0;
|
||||||
rect.right = 159;
|
rect.right = kstatusWidth - 1;
|
||||||
|
|
||||||
status_bar = new ShowImageStatusView( rect, "status_bar", B_FOLLOW_BOTTOM, B_WILL_DRAW );
|
status_bar = new ShowImageStatusView( rect, "status_bar", B_FOLLOW_BOTTOM, B_WILL_DRAW );
|
||||||
status_bar->SetViewColor( ui_color( B_MENU_BACKGROUND_COLOR ) );
|
status_bar->SetViewColor( ui_color( B_MENU_BACKGROUND_COLOR ) );
|
||||||
status_bar->SetCaption( "ImageShow" );
|
status_bar->SetText(strId);
|
||||||
|
|
||||||
AddChild( status_bar );
|
AddChild( status_bar );
|
||||||
|
|
||||||
@@ -115,10 +113,6 @@ ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap)
|
|||||||
// finish creating window
|
// finish creating window
|
||||||
SetRef(ref);
|
SetRef(ref);
|
||||||
UpdateTitle();
|
UpdateTitle();
|
||||||
if (s_winListLocker.Lock()) {
|
|
||||||
s_winList.AddItem(this);
|
|
||||||
s_winListLocker.Unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_PrivateView->pBar = pBar;
|
m_PrivateView->pBar = pBar;
|
||||||
|
|
||||||
@@ -127,19 +121,9 @@ ShowImageWindow::ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap)
|
|||||||
|
|
||||||
ShowImageWindow::~ShowImageWindow()
|
ShowImageWindow::~ShowImageWindow()
|
||||||
{
|
{
|
||||||
if (m_pReferences) {
|
|
||||||
delete m_pReferences;
|
delete m_pReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s_winListLocker.Lock()) {
|
|
||||||
s_winList.RemoveItem(this);
|
|
||||||
s_winListLocker.Unlock();
|
|
||||||
}
|
|
||||||
if (CountWindows() < 1) {
|
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowImageWindow::WindowActivated(bool active)
|
void ShowImageWindow::WindowActivated(bool active)
|
||||||
{
|
{
|
||||||
// WindowRedimension( pBitmap );
|
// WindowRedimension( pBitmap );
|
||||||
@@ -177,9 +161,6 @@ void ShowImageWindow::UpdateTitle()
|
|||||||
|
|
||||||
void ShowImageWindow::LoadMenus(BMenuBar* pBar)
|
void ShowImageWindow::LoadMenus(BMenuBar* pBar)
|
||||||
{
|
{
|
||||||
long unsigned int MSG_QUIT = B_QUIT_REQUESTED;
|
|
||||||
long unsigned int MSG_ABOUT = B_ABOUT_REQUESTED;
|
|
||||||
|
|
||||||
BMenu* pMenu = new BMenu("File");
|
BMenu* pMenu = new BMenu("File");
|
||||||
|
|
||||||
AddItemMenu( pMenu, "Open", MSG_FILE_OPEN, 'O', 0, 'A', true );
|
AddItemMenu( pMenu, "Open", MSG_FILE_OPEN, 'O', 0, 'A', true );
|
||||||
@@ -191,11 +172,11 @@ void ShowImageWindow::LoadMenus(BMenuBar* pBar)
|
|||||||
// to from the Be bitmap image format
|
// to from the Be bitmap image format
|
||||||
pMenu->AddItem( pMenuSaveAs );
|
pMenu->AddItem( pMenuSaveAs );
|
||||||
|
|
||||||
AddItemMenu( pMenu, "Close", MSG_QUIT, 'W', 0, 'A', true);
|
AddItemMenu( pMenu, "Close", MSG_CLOSE, 'W', 0, 'W', true);
|
||||||
pMenu->AddSeparatorItem();
|
pMenu->AddSeparatorItem();
|
||||||
AddItemMenu( pMenu, "About ShowImage...", MSG_ABOUT, 0, 0, 'A', true);
|
AddItemMenu( pMenu, "About ShowImage...", B_ABOUT_REQUESTED, 0, 0, 'A', true);
|
||||||
pMenu->AddSeparatorItem();
|
pMenu->AddSeparatorItem();
|
||||||
AddItemMenu( pMenu, "Quit", MSG_QUIT, 'Q', 0, 'A', true);
|
AddItemMenu( pMenu, "Quit", B_QUIT_REQUESTED, 'Q', 0, 'A', true);
|
||||||
|
|
||||||
pBar->AddItem(pMenu);
|
pBar->AddItem(pMenu);
|
||||||
|
|
||||||
@@ -283,6 +264,10 @@ void ShowImageWindow::MessageReceived(BMessage* message)
|
|||||||
SaveToFile(message);
|
SaveToFile(message);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MSG_CLOSE:
|
||||||
|
Quit();
|
||||||
|
break;
|
||||||
|
|
||||||
case B_UNDO :
|
case B_UNDO :
|
||||||
pAlert = new BAlert( "Edit/Undo",
|
pAlert = new BAlert( "Edit/Undo",
|
||||||
"Edit/Undo not implemented yet", "OK");
|
"Edit/Undo not implemented yet", "OK");
|
||||||
@@ -385,5 +370,12 @@ ShowImageWindow::SaveToFile(BMessage *pmsg)
|
|||||||
// detach so it doesn't get deleted
|
// detach so it doesn't get deleted
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ShowImageWindow::Quit()
|
||||||
|
{
|
||||||
|
// tell the app to forget about this window
|
||||||
|
be_app->PostMessage(MSG_WINDOW_QUIT);
|
||||||
|
BWindow::Quit();
|
||||||
|
}
|
||||||
|
|
||||||
// BMenu* pMenuDither = ;
|
// BMenu* pMenuDither = ;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
#include <FilePanel.h>
|
#include <FilePanel.h>
|
||||||
#include <TranslationDefs.h>
|
#include <TranslationDefs.h>
|
||||||
|
#include <String.h>
|
||||||
|
|
||||||
class ShowImageView;
|
class ShowImageView;
|
||||||
|
|
||||||
@@ -15,14 +16,14 @@ class ShowImageWindow : public BWindow
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static status_t NewWindow(const entry_ref* ref);
|
static status_t NewWindow(const entry_ref* ref);
|
||||||
static int32 CountWindows();
|
|
||||||
|
|
||||||
ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap);
|
ShowImageWindow(const entry_ref* ref, BBitmap* pBitmap, BString &strId);
|
||||||
virtual ~ShowImageWindow();
|
virtual ~ShowImageWindow();
|
||||||
|
|
||||||
virtual void WindowActivated(bool active);
|
virtual void WindowActivated(bool active);
|
||||||
virtual void FrameResized( float new_width, float new_height );
|
virtual void FrameResized( float new_width, float new_height );
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
|
virtual void Quit();
|
||||||
|
|
||||||
status_t InitCheck();
|
status_t InitCheck();
|
||||||
ShowImageView* GetShowImageView() const { return m_PrivateView; }
|
ShowImageView* GetShowImageView() const { return m_PrivateView; }
|
||||||
|
|||||||
Reference in New Issue
Block a user