tsrc/consoleplayer/player/inc/playerwindow.h
author hgs
Fri, 03 Sep 2010 19:37:02 -0500
changeset 33 e1b6d78dfe6a
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 * Header specifying the abstract Player Window.
hgs
parents:
diff changeset
    16
 * 
hgs
parents:
diff changeset
    17
 */
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __PLAYER_WINDOW_H__
hgs
parents:
diff changeset
    20
#define __PLAYER_WINDOW_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <f32file.h>
hgs
parents:
diff changeset
    24
#include <w32std.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include "testappbase.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
enum TPlayerWindowOperations
hgs
parents:
diff changeset
    29
    {
hgs
parents:
diff changeset
    30
    EOperation_PauseResume = KOperation_FirstCustomIndex+100,
hgs
parents:
diff changeset
    31
    EOperation_Pause,
hgs
parents:
diff changeset
    32
    EOperation_Resume,
hgs
parents:
diff changeset
    33
    EOperation_StopPlay,
hgs
parents:
diff changeset
    34
    EOperation_SeekBack,
hgs
parents:
diff changeset
    35
    EOperation_SeekForward,
hgs
parents:
diff changeset
    36
    EOperation_SeekStart,
hgs
parents:
diff changeset
    37
    EOperation_SeekEnd,
hgs
parents:
diff changeset
    38
    EOperation_Rotate,
hgs
parents:
diff changeset
    39
    EOperation_Autoscale,
hgs
parents:
diff changeset
    40
    EOperation_IncreaseHeightScale,
hgs
parents:
diff changeset
    41
    EOperation_DecreaseHeightScale,
hgs
parents:
diff changeset
    42
    EOperation_IncreaseWidthScale,
hgs
parents:
diff changeset
    43
    EOperation_DecreaseWidthScale,
hgs
parents:
diff changeset
    44
    EOperation_ClipRectangle,
hgs
parents:
diff changeset
    45
    EOperation_Extent,
hgs
parents:
diff changeset
    46
    EOperation_ResetToDefaults,
hgs
parents:
diff changeset
    47
    EOperation_IncreaseVolume,
hgs
parents:
diff changeset
    48
    EOperation_DecreaseVolume,
hgs
parents:
diff changeset
    49
    EOperation_MaximumVolume,
hgs
parents:
diff changeset
    50
    EOperation_Mute,
hgs
parents:
diff changeset
    51
    EOperation_BalanceLeft,
hgs
parents:
diff changeset
    52
    EOperation_BalanceRight,
hgs
parents:
diff changeset
    53
    EOperation_BalanceCenter,
hgs
parents:
diff changeset
    54
    EOperation_BalanceMaxLeft,
hgs
parents:
diff changeset
    55
    EOperation_BalanceMaxRight,
hgs
parents:
diff changeset
    56
    EOperation_FrameStepForward,
hgs
parents:
diff changeset
    57
    EOperation_FrameStepBackward,
hgs
parents:
diff changeset
    58
    EOperation_IncreasePlayVelocity,
hgs
parents:
diff changeset
    59
    EOperation_DecreasePlayVelocity,
hgs
parents:
diff changeset
    60
    EOperation_MoveWindowUp,
hgs
parents:
diff changeset
    61
    EOperation_MoveWindowDown,
hgs
parents:
diff changeset
    62
    EOperation_MoveWindowLeft,
hgs
parents:
diff changeset
    63
    EOperation_MoveWindowRight,
hgs
parents:
diff changeset
    64
    EOperation_ChangeWindowSize,
hgs
parents:
diff changeset
    65
    EOperation_ToggleWindowTransparency,
hgs
parents:
diff changeset
    66
    EOperation_DrawWhiteBorderAroundWindow,
hgs
parents:
diff changeset
    67
    EOperation_DrawRedBorderAroundWindow,
hgs
parents:
diff changeset
    68
    EOperation_ClearBorderAroundWindow
hgs
parents:
diff changeset
    69
    };
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
class MPlayerWindowObserver
hgs
parents:
diff changeset
    72
    {
hgs
parents:
diff changeset
    73
public:
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    virtual void PlayInitiated() = 0;
hgs
parents:
diff changeset
    76
    
hgs
parents:
diff changeset
    77
    virtual void PlayStateChanged() = 0;
hgs
parents:
diff changeset
    78
    
hgs
parents:
diff changeset
    79
    virtual void Error(TInt aError) = 0;
hgs
parents:
diff changeset
    80
    };
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
class MPlayerCommands
hgs
parents:
diff changeset
    83
    {
hgs
parents:
diff changeset
    84
public:
hgs
parents:
diff changeset
    85
    
hgs
parents:
diff changeset
    86
    virtual TInt ExecuteOperation( TInt aOperation ) = 0;
hgs
parents:
diff changeset
    87
    
hgs
parents:
diff changeset
    88
    virtual void MoveWindow( TPoint aNewCenter ) = 0;
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
    virtual void SetOrdinalPosition( TInt aPosition ) = 0;
hgs
parents:
diff changeset
    91
    };
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
class CPlayerWindow : public CBase, public MPlayerCommands
hgs
parents:
diff changeset
    94
    {
hgs
parents:
diff changeset
    95
public:
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    enum TPlayState
hgs
parents:
diff changeset
    98
        {
hgs
parents:
diff changeset
    99
        EStopped,
hgs
parents:
diff changeset
   100
        EPlaying,
hgs
parents:
diff changeset
   101
        EPaused
hgs
parents:
diff changeset
   102
        };
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    enum TAutoscaleMode
hgs
parents:
diff changeset
   105
        {
hgs
parents:
diff changeset
   106
        EDoNotAutoscale,
hgs
parents:
diff changeset
   107
        EBestFit,
hgs
parents:
diff changeset
   108
        EStretch
hgs
parents:
diff changeset
   109
        };
hgs
parents:
diff changeset
   110
    
hgs
parents:
diff changeset
   111
    virtual ~CPlayerWindow();
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    // inherited from MPlayerCommands
hgs
parents:
diff changeset
   114
    virtual TInt ExecuteOperation( TInt aOperation );
hgs
parents:
diff changeset
   115
    virtual void MoveWindow( TPoint aNewCenter );    
hgs
parents:
diff changeset
   116
    virtual void SetOrdinalPosition( TInt aPosition );
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    void StartWithFilenameL( const TDesC& aFullFilename,
hgs
parents:
diff changeset
   119
                             TAutoscaleMode aDefaultAutoscale,
hgs
parents:
diff changeset
   120
                             MPlayerWindowObserver* aObserver = NULL );
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    void StartWithUrlL( const TDesC& aUrl,
hgs
parents:
diff changeset
   123
                        TAutoscaleMode aDefaultAutoscale,
hgs
parents:
diff changeset
   124
                        MPlayerWindowObserver* aObserver = NULL );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    RWindow& Window();
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
    void WriteAdvancedText( CWindowGc& aGc, TInt aColumn, TInt& aRow, TInt aRowIncrement );        
hgs
parents:
diff changeset
   129
    
hgs
parents:
diff changeset
   130
    const TDesC& FullFilename();
hgs
parents:
diff changeset
   131
    
hgs
parents:
diff changeset
   132
    const TDesC& Filename();
hgs
parents:
diff changeset
   133
    
hgs
parents:
diff changeset
   134
    const TDesC& Url();
hgs
parents:
diff changeset
   135
    
hgs
parents:
diff changeset
   136
    TPlayState PlayState();
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    TSize VideoSize();
hgs
parents:
diff changeset
   139
        
hgs
parents:
diff changeset
   140
    TInt PositionInMs();
hgs
parents:
diff changeset
   141
    
hgs
parents:
diff changeset
   142
    TInt DurationInMs();
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    virtual TInt SetVideoExtent( TRect aExtent ) = 0;
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    virtual TInt Play() = 0;
hgs
parents:
diff changeset
   147
    
hgs
parents:
diff changeset
   148
    virtual TInt Pause() = 0;
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
protected:
hgs
parents:
diff changeset
   151
    
hgs
parents:
diff changeset
   152
    CPlayerWindow( RFs& aFs, RWsSession& aWs, CWsScreenDevice& aScreenDevice, bool aSuppressGraphicsContext );
hgs
parents:
diff changeset
   153
    
hgs
parents:
diff changeset
   154
    void CheckWindowLimits();
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    void DrawBorderAroundWindow();
hgs
parents:
diff changeset
   157
    
hgs
parents:
diff changeset
   158
    // These functions must be called by subclasses
hgs
parents:
diff changeset
   159
    
hgs
parents:
diff changeset
   160
    void BaseConstructL( const RWindowTreeNode &aParentWindow, TPoint aTopLeft, TSize aSize, bool aTransparent, TRgb aBackgroundColor );
hgs
parents:
diff changeset
   161
    void PlayInitiated();
hgs
parents:
diff changeset
   162
    void PlayComplete();    
hgs
parents:
diff changeset
   163
    void CheckError( TInt aError, const char* pDescription );
hgs
parents:
diff changeset
   164
    void Error( TInt aError, const char* pDescription = NULL );
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
    // These functions must be implemented by subclasses
hgs
parents:
diff changeset
   167
    
hgs
parents:
diff changeset
   168
    virtual void InitializeParameters( TSize& aVideoSize, 
hgs
parents:
diff changeset
   169
                                       TTimeIntervalMicroSeconds& aDuration, 
hgs
parents:
diff changeset
   170
                                       TInt& aMaxVolume, 
hgs
parents:
diff changeset
   171
                                       TInt& aCurrentVolume,
hgs
parents:
diff changeset
   172
                                       TInt& aBalanceCenter,
hgs
parents:
diff changeset
   173
                                       TInt& aBalanceMaxLeft,
hgs
parents:
diff changeset
   174
                                       TInt& aBalanceMaxRight,
hgs
parents:
diff changeset
   175
                                       TInt& aDefaultBalance, 
hgs
parents:
diff changeset
   176
                                       TInt& aCurrentBalance ) = 0;
hgs
parents:
diff changeset
   177
    
hgs
parents:
diff changeset
   178
    virtual void SetDefaultAutoscaleMode( TAutoscaleMode aDefaultAutoscale ) = 0;
hgs
parents:
diff changeset
   179
    
hgs
parents:
diff changeset
   180
    virtual void PreparePlayerWithFile( RFile& aFile ) = 0;
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
    virtual void PreparePlayerWithUrl( const TDesC& aUrl ) = 0;
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
    virtual TInt DoExecuteOperation( TInt aOperation ) = 0;
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    virtual TTimeIntervalMicroSeconds Position() = 0; // microseconds
hgs
parents:
diff changeset
   187
    
hgs
parents:
diff changeset
   188
    virtual TInt SetVolume( TInt aVolume ) = 0;
hgs
parents:
diff changeset
   189
    
hgs
parents:
diff changeset
   190
    virtual TInt SetBalance( TInt aBalance ) = 0;
hgs
parents:
diff changeset
   191
    
hgs
parents:
diff changeset
   192
    virtual TInt RotationAngle() = 0;
hgs
parents:
diff changeset
   193
    
hgs
parents:
diff changeset
   194
    virtual TInt NextRotationAngle() = 0;
hgs
parents:
diff changeset
   195
    
hgs
parents:
diff changeset
   196
    virtual TInt ResetRotation() = 0;
hgs
parents:
diff changeset
   197
    
hgs
parents:
diff changeset
   198
    virtual TInt NextAutoscaleMode() = 0;
hgs
parents:
diff changeset
   199
    
hgs
parents:
diff changeset
   200
    virtual TInt ResetAutoscale() = 0;
hgs
parents:
diff changeset
   201
    
hgs
parents:
diff changeset
   202
    virtual void AppendAutoscaleModeText( TDes& aString ) = 0;
hgs
parents:
diff changeset
   203
    
hgs
parents:
diff changeset
   204
    virtual TInt SetClipRectangle( TRect aRect ) = 0;
hgs
parents:
diff changeset
   205
    
hgs
parents:
diff changeset
   206
    virtual TInt SetScaleFactor( TReal aWidthScaleFactor, TReal aHeightScaleFactor ) = 0;
hgs
parents:
diff changeset
   207
    
hgs
parents:
diff changeset
   208
    virtual TInt Stop() = 0;
hgs
parents:
diff changeset
   209
    
hgs
parents:
diff changeset
   210
    virtual TInt SetPosition( TTimeIntervalMicroSeconds ) = 0;
hgs
parents:
diff changeset
   211
    
hgs
parents:
diff changeset
   212
    virtual TInt StepForward() = 0;
hgs
parents:
diff changeset
   213
    
hgs
parents:
diff changeset
   214
    virtual TInt StepBackward() = 0;
hgs
parents:
diff changeset
   215
    
hgs
parents:
diff changeset
   216
    virtual TInt SetPlayVelocity( TInt aVelocity ) = 0;
hgs
parents:
diff changeset
   217
    
hgs
parents:
diff changeset
   218
    RFs&                    iFs;
hgs
parents:
diff changeset
   219
    RFile                   iFile;
hgs
parents:
diff changeset
   220
    RWsSession&             iWs;
hgs
parents:
diff changeset
   221
    CWsScreenDevice&        iScreenDevice;
hgs
parents:
diff changeset
   222
    CWindowGc*              iGc;
hgs
parents:
diff changeset
   223
    
hgs
parents:
diff changeset
   224
    RWindow                 iWindow;
hgs
parents:
diff changeset
   225
    TBuf<120>               iBuffer;
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
private:
hgs
parents:
diff changeset
   228
    
hgs
parents:
diff changeset
   229
    TRect Rectangle( TInt aModeIndex );
hgs
parents:
diff changeset
   230
    
hgs
parents:
diff changeset
   231
    TInt Seek( TTimeIntervalMicroSeconds aPosition ); 
hgs
parents:
diff changeset
   232
    
hgs
parents:
diff changeset
   233
    TInt UpdateScaleFactor();
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
    TInt ResetToDefaults();
hgs
parents:
diff changeset
   236
    
hgs
parents:
diff changeset
   237
    TFileName                 iFullFilename;
hgs
parents:
diff changeset
   238
    TFileName                 iFilename;
hgs
parents:
diff changeset
   239
    TFileName                 iUrl;
hgs
parents:
diff changeset
   240
    MPlayerWindowObserver*    iObserver;
hgs
parents:
diff changeset
   241
    bool                      iSuppressGraphicsContext;
hgs
parents:
diff changeset
   242
    
hgs
parents:
diff changeset
   243
    TPlayState                iPlayState;
hgs
parents:
diff changeset
   244
    TTimeIntervalMicroSeconds iDuration;
hgs
parents:
diff changeset
   245
    TInt                      iDurationInMs;
hgs
parents:
diff changeset
   246
    TInt                      iCurrentVelocity;
hgs
parents:
diff changeset
   247
    
hgs
parents:
diff changeset
   248
    // Video attributes
hgs
parents:
diff changeset
   249
    TSize                     iVideoSize;
hgs
parents:
diff changeset
   250
    TInt                      iWidthScaleIndex;
hgs
parents:
diff changeset
   251
    TInt                      iHeightScaleIndex;   
hgs
parents:
diff changeset
   252
    TInt                      iClipModeIndex;
hgs
parents:
diff changeset
   253
    TInt                      iExtentModeIndex;
hgs
parents:
diff changeset
   254
    TPoint                    iWindowTopLeft;
hgs
parents:
diff changeset
   255
    TSize                     iDefaultWindowSize;
hgs
parents:
diff changeset
   256
    TSize                     iWindowSize;
hgs
parents:
diff changeset
   257
    TInt                      iWindowSizeDivisor;
hgs
parents:
diff changeset
   258
    bool                      iWindowTransparent;
hgs
parents:
diff changeset
   259
    TRgb                  iBorderColor;
hgs
parents:
diff changeset
   260
        
hgs
parents:
diff changeset
   261
    // Audio attributes
hgs
parents:
diff changeset
   262
    TInt                      iMaxVolume;
hgs
parents:
diff changeset
   263
    TInt                      iDefaultVolume;
hgs
parents:
diff changeset
   264
    TInt                      iCurrentVolume;
hgs
parents:
diff changeset
   265
    TInt                      iBalanceCenter;
hgs
parents:
diff changeset
   266
    TInt                      iBalanceMaxRight;
hgs
parents:
diff changeset
   267
    TInt                      iBalanceMaxLeft;
hgs
parents:
diff changeset
   268
    TInt                      iDefaultBalance;
hgs
parents:
diff changeset
   269
    TInt                      iCurrentBalance;
hgs
parents:
diff changeset
   270
  
hgs
parents:
diff changeset
   271
    };
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
#endif