* cleanup
* sync against the preview driver * fixed totally broken multiple pages on single page preview git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26812 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
6ac63f933f
commit
6e758d67b9
@ -1,139 +1,164 @@
|
||||
/*
|
||||
|
||||
Preview
|
||||
|
||||
Copyright (c) 2002, 2003 OpenBeOS.
|
||||
Copyright (c) 2005 Haiku.
|
||||
|
||||
Author:
|
||||
Michael Pfeiffer
|
||||
Hartmut Reh
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#include <InterfaceKit.h>
|
||||
#include "PrintJobReader.h"
|
||||
* Copyright 2002-2008, Haiku. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Michael Pfeiffer
|
||||
* Hartmut Reh
|
||||
* julun <host.haiku@gmx.de>
|
||||
*/
|
||||
#include "BlockingWindow.h"
|
||||
#include "JobData.h"
|
||||
#include "PrintJobReader.h"
|
||||
|
||||
|
||||
#include <View.h>
|
||||
|
||||
|
||||
class BButton;
|
||||
class BFile;
|
||||
class BMessage;
|
||||
class BPicture;
|
||||
class BScrollView;
|
||||
class BStringView;
|
||||
class BTextControl;
|
||||
|
||||
|
||||
// #pragma mark - PreviewPage
|
||||
|
||||
|
||||
class PreviewPage {
|
||||
int32 fPage;
|
||||
int32 fNumberOfPictures;
|
||||
BPicture* fPictures;
|
||||
BPoint* fPoints;
|
||||
BRect* fRects;
|
||||
status_t fStatus;
|
||||
|
||||
public:
|
||||
PreviewPage(int32 page, PrintJobPage* pjp);
|
||||
~PreviewPage();
|
||||
status_t InitCheck() const;
|
||||
|
||||
int32 Page() const { return fPage; }
|
||||
void Draw(BView* view);
|
||||
PreviewPage(int32 page, PrintJobPage* pjp);
|
||||
~PreviewPage();
|
||||
|
||||
void Draw(BView* view, const BRect& printRect);
|
||||
status_t InitCheck() const;
|
||||
int32 Page() const { return fPage; }
|
||||
|
||||
private:
|
||||
int32 fPage;
|
||||
status_t fStatus;
|
||||
int32 fNumberOfPictures;
|
||||
|
||||
BRect* fRects;
|
||||
BPoint* fPoints;
|
||||
BPicture* fPictures;
|
||||
};
|
||||
|
||||
|
||||
// #pragma mark - PreviewView
|
||||
|
||||
|
||||
class PreviewView : public BView {
|
||||
int32 fPage;
|
||||
int32 fZoom;
|
||||
PrintJobReader fReader;
|
||||
int32 fNumberOfPagesPerPage;
|
||||
int32 fNumberOfPages; // physical pages
|
||||
bool fReverse;
|
||||
BRect fPageRect;
|
||||
JobData::Orientation fOrientation;
|
||||
JobData::PageSelection fPageSelection;
|
||||
PreviewPage* fCachedPage;
|
||||
|
||||
float ZoomFactor() const;
|
||||
BRect PageRect() const;
|
||||
BRect PrintableRect() const;
|
||||
int32 GetPageNumber(int32 index) const;
|
||||
|
||||
public:
|
||||
PreviewView(BFile* jobFile, BRect rect);
|
||||
~PreviewView();
|
||||
status_t InitCheck() const;
|
||||
|
||||
BRect ViewRect() const;
|
||||
PreviewView(BFile* jobFile, BRect rect);
|
||||
virtual ~PreviewView();
|
||||
|
||||
bool IsPageLoaded(int32 page) const;
|
||||
bool IsPageValid() const;
|
||||
void LoadPage(int32 page);
|
||||
void DrawPageFrame(BRect r);
|
||||
void DrawPage(BRect r);
|
||||
void Draw(BRect r);
|
||||
void FrameResized(float width, float height);
|
||||
|
||||
void FixScrollbars();
|
||||
|
||||
bool ShowsFirstPage() const;
|
||||
bool ShowsLastPage() const;
|
||||
int CurrentPage() const { return fPage + 1; }
|
||||
int NumberOfPages() const;
|
||||
void ShowNextPage();
|
||||
void ShowPrevPage();
|
||||
void ShowFirstPage();
|
||||
void ShowLastPage();
|
||||
void ShowFindPage(int page);
|
||||
|
||||
bool CanZoomIn() const;
|
||||
bool CanZoomOut() const;
|
||||
void ZoomIn();
|
||||
void ZoomOut();
|
||||
virtual void Show();
|
||||
virtual void Hide();
|
||||
virtual void Draw(BRect r);
|
||||
virtual void FrameResized(float width, float height);
|
||||
virtual void MouseDown(BPoint point);
|
||||
virtual void MouseMoved(BPoint point, uint32 transit,
|
||||
const BMessage* message);
|
||||
virtual void MouseUp(BPoint point);
|
||||
virtual void KeyDown(const char* bytes, int32 numBytes);
|
||||
|
||||
void ShowFirstPage();
|
||||
void ShowPrevPage();
|
||||
void ShowNextPage();
|
||||
void ShowLastPage();
|
||||
bool ShowsFirstPage() const;
|
||||
bool ShowsLastPage() const;
|
||||
void ShowFindPage(int32 page);
|
||||
|
||||
void ZoomIn();
|
||||
bool CanZoomIn() const;
|
||||
void ZoomOut();
|
||||
bool CanZoomOut() const;
|
||||
|
||||
void FixScrollbars();
|
||||
BRect ViewRect() const;
|
||||
status_t InitCheck() const;
|
||||
int32 NumberOfPages() const;
|
||||
int32 CurrentPage() const { return fPage + 1; }
|
||||
|
||||
private:
|
||||
BRect _PaperRect() const;
|
||||
float _ZoomFactor() const;
|
||||
BRect _PrintableRect() const;
|
||||
|
||||
void _LoadPage(int32 page);
|
||||
bool _IsPageValid() const;
|
||||
bool _IsPageLoaded(int32 page) const;
|
||||
|
||||
BRect _ContentRect() const;
|
||||
void _DrawPageFrame(BRect rect);
|
||||
void _DrawPage(BRect updateRect);
|
||||
void _DrawMarginFrame(BRect rect);
|
||||
|
||||
int32 _GetPageNumber(int32 index) const;
|
||||
|
||||
private:
|
||||
int32 fPage;
|
||||
int32 fZoom;
|
||||
PrintJobReader fReader;
|
||||
bool fReverse;
|
||||
BRect fPaperRect;
|
||||
BRect fPrintableRect;
|
||||
bool fTracking;
|
||||
bool fInsideView;
|
||||
BPoint fScrollStart;
|
||||
int32 fNumberOfPages;
|
||||
int32 fNumberOfPagesPerPage;
|
||||
PreviewPage* fCachedPage;
|
||||
|
||||
JobData::Orientation fOrientation;
|
||||
JobData::PageSelection fPageSelection;
|
||||
};
|
||||
|
||||
|
||||
// #pragma mark - PreviewWindow
|
||||
|
||||
|
||||
class PreviewWindow : public BlockingWindow {
|
||||
BButton *fFirst;
|
||||
BButton *fNext;
|
||||
BButton *fPrev;
|
||||
BButton *fLast;
|
||||
BButton *fZoomIn;
|
||||
BButton *fZoomOut;
|
||||
BTextControl *fPageNumber;
|
||||
BStringView *fPageText;
|
||||
PreviewView *fPreview;
|
||||
BScrollView *fPreviewScroller;
|
||||
float fButtonBarHeight;
|
||||
|
||||
enum {
|
||||
MSG_FIRST_PAGE = 'pwfp',
|
||||
MSG_NEXT_PAGE = 'pwnp',
|
||||
MSG_PREV_PAGE = 'pwpp',
|
||||
MSG_LAST_PAGE = 'pwlp',
|
||||
MSG_FIND_PAGE = 'pwsp',
|
||||
MSG_ZOOM_IN = 'pwzi',
|
||||
MSG_ZOOM_OUT = 'pwzo',
|
||||
MSG_PRINT_JOB = 'pwpj',
|
||||
MSG_CANCEL_JOB = 'pwcj',
|
||||
};
|
||||
|
||||
void ResizeToPage(bool allowShrinking = false);
|
||||
void UpdateControls();
|
||||
|
||||
typedef BlockingWindow inherited;
|
||||
|
||||
public:
|
||||
PreviewWindow(BFile* jobFile, bool showOkAndCancelButtons = false);
|
||||
status_t InitCheck() const { return fPreview->InitCheck(); }
|
||||
void MessageReceived(BMessage* m);
|
||||
status_t Go();
|
||||
};
|
||||
PreviewWindow(BFile* jobFile,
|
||||
bool showOkAndCancelButtons = false);
|
||||
|
||||
virtual void MessageReceived(BMessage* m);
|
||||
|
||||
status_t Go();
|
||||
status_t InitCheck() const { return fPreview->InitCheck(); }
|
||||
|
||||
|
||||
private:
|
||||
void _ResizeToPage();
|
||||
void _UpdateControls();
|
||||
|
||||
private:
|
||||
BButton* fFirst;
|
||||
BButton* fNext;
|
||||
BButton* fPrev;
|
||||
BButton* fLast;
|
||||
BButton* fZoomIn;
|
||||
BButton* fZoomOut;
|
||||
BTextControl* fPageNumber;
|
||||
BStringView* fPageText;
|
||||
PreviewView* fPreview;
|
||||
BScrollView* fPreviewScroller;
|
||||
float fButtonBarHeight;
|
||||
|
||||
enum {
|
||||
MSG_FIRST_PAGE = 'pwfp',
|
||||
MSG_NEXT_PAGE = 'pwnp',
|
||||
MSG_PREV_PAGE = 'pwpp',
|
||||
MSG_LAST_PAGE = 'pwlp',
|
||||
MSG_FIND_PAGE = 'pwsp',
|
||||
MSG_ZOOM_IN = 'pwzi',
|
||||
MSG_ZOOM_OUT = 'pwzo',
|
||||
MSG_PRINT_JOB = 'pwpj',
|
||||
MSG_CANCEL_JOB = 'pwcj',
|
||||
};
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user