/* Compiler settings for axvlc.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
#ifdef __cplusplus
extern "C"{
-#endif
+#endif
#include <rpc.h>
/* Compiler settings for axvlc.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
#pragma once
#endif
-/* Forward Declarations */
+/* Forward Declarations */
#ifndef __IVLCControl_FWD_DEFINED__
#define __IVLCControl_FWD_DEFINED__
typedef interface IVLCControl IVLCControl;
-#endif /* __IVLCControl_FWD_DEFINED__ */
+#endif /* __IVLCControl_FWD_DEFINED__ */
#ifndef __IVLCAudio_FWD_DEFINED__
#define __IVLCAudio_FWD_DEFINED__
typedef interface IVLCAudio IVLCAudio;
-#endif /* __IVLCAudio_FWD_DEFINED__ */
+#endif /* __IVLCAudio_FWD_DEFINED__ */
#ifndef __IVLCInput_FWD_DEFINED__
#define __IVLCInput_FWD_DEFINED__
typedef interface IVLCInput IVLCInput;
-#endif /* __IVLCInput_FWD_DEFINED__ */
+#endif /* __IVLCInput_FWD_DEFINED__ */
#ifndef __IVLCLog_FWD_DEFINED__
#define __IVLCLog_FWD_DEFINED__
typedef interface IVLCLog IVLCLog;
-#endif /* __IVLCLog_FWD_DEFINED__ */
+#endif /* __IVLCLog_FWD_DEFINED__ */
#ifndef __IVLCMessage_FWD_DEFINED__
#define __IVLCMessage_FWD_DEFINED__
typedef interface IVLCMessage IVLCMessage;
-#endif /* __IVLCMessage_FWD_DEFINED__ */
+#endif /* __IVLCMessage_FWD_DEFINED__ */
#ifndef __IVLCMessageIterator_FWD_DEFINED__
#define __IVLCMessageIterator_FWD_DEFINED__
typedef interface IVLCMessageIterator IVLCMessageIterator;
-#endif /* __IVLCMessageIterator_FWD_DEFINED__ */
+#endif /* __IVLCMessageIterator_FWD_DEFINED__ */
#ifndef __IVLCMessages_FWD_DEFINED__
#define __IVLCMessages_FWD_DEFINED__
typedef interface IVLCMessages IVLCMessages;
-#endif /* __IVLCMessages_FWD_DEFINED__ */
+#endif /* __IVLCMessages_FWD_DEFINED__ */
#ifndef __IVLCPlaylist_FWD_DEFINED__
#define __IVLCPlaylist_FWD_DEFINED__
typedef interface IVLCPlaylist IVLCPlaylist;
-#endif /* __IVLCPlaylist_FWD_DEFINED__ */
+#endif /* __IVLCPlaylist_FWD_DEFINED__ */
#ifndef __IVLCVideo_FWD_DEFINED__
#define __IVLCVideo_FWD_DEFINED__
typedef interface IVLCVideo IVLCVideo;
-#endif /* __IVLCVideo_FWD_DEFINED__ */
+#endif /* __IVLCVideo_FWD_DEFINED__ */
#ifndef __IVLCControl2_FWD_DEFINED__
#define __IVLCControl2_FWD_DEFINED__
typedef interface IVLCControl2 IVLCControl2;
-#endif /* __IVLCControl2_FWD_DEFINED__ */
+#endif /* __IVLCControl2_FWD_DEFINED__ */
#ifndef __DVLCEvents_FWD_DEFINED__
#define __DVLCEvents_FWD_DEFINED__
typedef interface DVLCEvents DVLCEvents;
-#endif /* __DVLCEvents_FWD_DEFINED__ */
+#endif /* __DVLCEvents_FWD_DEFINED__ */
#ifndef __IVLCPlaylistItems_FWD_DEFINED__
#define __IVLCPlaylistItems_FWD_DEFINED__
typedef interface IVLCPlaylistItems IVLCPlaylistItems;
-#endif /* __IVLCPlaylistItems_FWD_DEFINED__ */
+#endif /* __IVLCPlaylistItems_FWD_DEFINED__ */
#ifndef __VLCPlugin_FWD_DEFINED__
typedef struct VLCPlugin VLCPlugin;
#endif /* __cplusplus */
-#endif /* __VLCPlugin_FWD_DEFINED__ */
+#endif /* __VLCPlugin_FWD_DEFINED__ */
#ifndef __VLCPlugin2_FWD_DEFINED__
typedef struct VLCPlugin2 VLCPlugin2;
#endif /* __cplusplus */
-#endif /* __VLCPlugin2_FWD_DEFINED__ */
+#endif /* __VLCPlugin2_FWD_DEFINED__ */
/* header files for imported files */
#ifdef __cplusplus
extern "C"{
-#endif
+#endif
void * __RPC_USER MIDL_user_allocate(size_t);
-void __RPC_USER MIDL_user_free( void * );
+void __RPC_USER MIDL_user_free( void * );
#ifndef __AXVLC_LIBRARY_DEFINED__
#define __AXVLC_LIBRARY_DEFINED__
/* library AXVLC */
-/* [helpstring][version][uuid] */
+/* [helpstring][version][uuid] */
-typedef /* [public] */
+typedef /* [public] */
enum VLCPlaylistMode
- { VLCPlayListInsert = 1,
- VLCPlayListInsertAndGo = 9,
- VLCPlayListReplace = 2,
- VLCPlayListReplaceAndGo = 10,
- VLCPlayListAppend = 4,
- VLCPlayListAppendAndGo = 12,
- VLCPlayListCheckInsert = 16
- } eVLCPlaylistMode;
+ { VLCPlayListInsert = 1,
+ VLCPlayListInsertAndGo = 9,
+ VLCPlayListReplace = 2,
+ VLCPlayListReplaceAndGo = 10,
+ VLCPlayListAppend = 4,
+ VLCPlayListAppendAndGo = 12,
+ VLCPlayListCheckInsert = 16
+ } eVLCPlaylistMode;
-#define VLCPlayListEnd ( -666 )
+#define VLCPlayListEnd ( -666 )
-#define DISPID_BackColor ( -501 )
+#define DISPID_BackColor ( -501 )
-#define DISPID_Visible ( 100 )
+#define DISPID_Visible ( 100 )
-#define DISPID_Playing ( 101 )
+#define DISPID_Playing ( 101 )
-#define DISPID_Position ( 102 )
+#define DISPID_Position ( 102 )
-#define DISPID_Time ( 103 )
+#define DISPID_Time ( 103 )
-#define DISPID_Length ( 104 )
+#define DISPID_Length ( 104 )
-#define DISPID_Volume ( 105 )
+#define DISPID_Volume ( 105 )
-#define DISPID_MRL ( 106 )
+#define DISPID_MRL ( 106 )
-#define DISPID_AutoPlay ( 107 )
+#define DISPID_AutoPlay ( 107 )
-#define DISPID_AutoLoop ( 108 )
+#define DISPID_AutoLoop ( 108 )
-#define DISPID_StartTime ( 109 )
+#define DISPID_StartTime ( 109 )
-#define DISPID_BaseURL ( 110 )
+#define DISPID_BaseURL ( 110 )
-#define DISPID_PlayEvent ( 100 )
+#define DISPID_PlayEvent ( 100 )
-#define DISPID_PauseEvent ( 101 )
+#define DISPID_PauseEvent ( 101 )
-#define DISPID_StopEvent ( 102 )
+#define DISPID_StopEvent ( 102 )
EXTERN_C const IID LIBID_AXVLC;
#define __IVLCControl_INTERFACE_DEFINED__
/* interface IVLCControl */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCControl;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("C2FA41D0-B113-476e-AC8C-9BD14999C1C1")
IVLCControl : public IDispatch
{
public:
- virtual /* [helpstring][bindable][propget][id] */ HRESULT STDMETHODCALLTYPE get_Visible(
+ virtual /* [helpstring][bindable][propget][id] */ HRESULT STDMETHODCALLTYPE get_Visible(
/* [retval][out] */ VARIANT_BOOL *visible) = 0;
-
- virtual /* [helpstring][bindable][propput][id] */ HRESULT STDMETHODCALLTYPE put_Visible(
+
+ virtual /* [helpstring][bindable][propput][id] */ HRESULT STDMETHODCALLTYPE put_Visible(
/* [in] */ VARIANT_BOOL visible) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE play( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE pause( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE stop( void) = 0;
-
- virtual /* [helpstring][propget][hidden][id] */ HRESULT STDMETHODCALLTYPE get_Playing(
+
+ virtual /* [helpstring][propget][hidden][id] */ HRESULT STDMETHODCALLTYPE get_Playing(
/* [retval][out] */ VARIANT_BOOL *isPlaying) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Position(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Position(
/* [retval][out] */ float *position) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Position(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Position(
/* [in] */ float position) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Time(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Time(
/* [retval][out] */ int *seconds) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Time(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Time(
/* [in] */ int seconds) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE shuttle(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE shuttle(
/* [in] */ int seconds) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE fullscreen( void) = 0;
-
- virtual /* [helpstring][hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Length(
+
+ virtual /* [helpstring][hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Length(
/* [retval][out] */ int *seconds) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playFaster( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playSlower( void) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Volume(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Volume(
/* [retval][out] */ int *volume) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Volume(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Volume(
/* [in] */ int volume) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE toggleMute( void) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE setVariable(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE setVariable(
/* [in] */ BSTR name,
/* [in] */ VARIANT value) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE getVariable(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE getVariable(
/* [in] */ BSTR name,
/* [retval][out] */ VARIANT *value) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE addTarget(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE addTarget(
/* [in] */ BSTR uri,
/* [in] */ VARIANT options,
/* [in] */ enum VLCPlaylistMode mode,
/* [in] */ int position) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PlaylistIndex(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PlaylistIndex(
/* [retval][out] */ int *index) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PlaylistCount(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PlaylistCount(
/* [retval][out] */ int *index) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playlistNext( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playlistPrev( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playlistClear( void) = 0;
-
- virtual /* [helpstring][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_VersionInfo(
+
+ virtual /* [helpstring][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_VersionInfo(
/* [retval][out] */ BSTR *version) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MRL(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MRL(
/* [retval][out] */ BSTR *mrl) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_MRL(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_MRL(
/* [in] */ BSTR mrl) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoPlay(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoPlay(
/* [retval][out] */ VARIANT_BOOL *autoplay) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoPlay(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoPlay(
/* [in] */ VARIANT_BOOL autoplay) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoLoop(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoLoop(
/* [retval][out] */ VARIANT_BOOL *autoloop) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoLoop(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoLoop(
/* [in] */ VARIANT_BOOL autoloop) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCControlVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCControl * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCControl * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCControl * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCControl * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCControl * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCControl * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCControl * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][bindable][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Visible )(
+
+ /* [helpstring][bindable][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Visible )(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *visible);
-
- /* [helpstring][bindable][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Visible )(
+
+ /* [helpstring][bindable][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Visible )(
IVLCControl * This,
/* [in] */ VARIANT_BOOL visible);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *play )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *play )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *pause )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *pause )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *stop )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *stop )(
IVLCControl * This);
-
- /* [helpstring][propget][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *get_Playing )(
+
+ /* [helpstring][propget][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *get_Playing )(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *isPlaying);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Position )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Position )(
IVLCControl * This,
/* [retval][out] */ float *position);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Position )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Position )(
IVLCControl * This,
/* [in] */ float position);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Time )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Time )(
IVLCControl * This,
/* [retval][out] */ int *seconds);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Time )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Time )(
IVLCControl * This,
/* [in] */ int seconds);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *shuttle )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *shuttle )(
IVLCControl * This,
/* [in] */ int seconds);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *fullscreen )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *fullscreen )(
IVLCControl * This);
-
- /* [helpstring][hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Length )(
+
+ /* [helpstring][hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Length )(
IVLCControl * This,
/* [retval][out] */ int *seconds);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playFaster )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playFaster )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playSlower )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playSlower )(
IVLCControl * This);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Volume )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Volume )(
IVLCControl * This,
/* [retval][out] */ int *volume);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Volume )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Volume )(
IVLCControl * This,
/* [in] */ int volume);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleMute )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleMute )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *setVariable )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *setVariable )(
IVLCControl * This,
/* [in] */ BSTR name,
/* [in] */ VARIANT value);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *getVariable )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *getVariable )(
IVLCControl * This,
/* [in] */ BSTR name,
/* [retval][out] */ VARIANT *value);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *addTarget )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *addTarget )(
IVLCControl * This,
/* [in] */ BSTR uri,
/* [in] */ VARIANT options,
/* [in] */ enum VLCPlaylistMode mode,
/* [in] */ int position);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PlaylistIndex )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PlaylistIndex )(
IVLCControl * This,
/* [retval][out] */ int *index);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PlaylistCount )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PlaylistCount )(
IVLCControl * This,
/* [retval][out] */ int *index);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistNext )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistNext )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistPrev )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistPrev )(
IVLCControl * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistClear )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playlistClear )(
IVLCControl * This);
-
- /* [helpstring][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VersionInfo )(
+
+ /* [helpstring][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VersionInfo )(
IVLCControl * This,
/* [retval][out] */ BSTR *version);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MRL )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MRL )(
IVLCControl * This,
/* [retval][out] */ BSTR *mrl);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MRL )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MRL )(
IVLCControl * This,
/* [in] */ BSTR mrl);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoPlay )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoPlay )(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *autoplay);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoPlay )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoPlay )(
IVLCControl * This,
/* [in] */ VARIANT_BOOL autoplay);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoLoop )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoLoop )(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *autoloop);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoLoop )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoLoop )(
IVLCControl * This,
/* [in] */ VARIANT_BOOL autoloop);
-
+
END_INTERFACE
} IVLCControlVtbl;
CONST_VTBL struct IVLCControlVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCControl_QueryInterface(This,riid,ppvObject) \
+#define IVLCControl_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCControl_AddRef(This) \
+#define IVLCControl_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCControl_Release(This) \
+#define IVLCControl_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCControl_GetTypeInfoCount(This,pctinfo) \
+#define IVLCControl_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCControl_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCControl_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCControl_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCControl_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCControl_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCControl_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCControl_get_Visible(This,visible) \
+#define IVLCControl_get_Visible(This,visible) \
(This)->lpVtbl -> get_Visible(This,visible)
-#define IVLCControl_put_Visible(This,visible) \
+#define IVLCControl_put_Visible(This,visible) \
(This)->lpVtbl -> put_Visible(This,visible)
-#define IVLCControl_play(This) \
+#define IVLCControl_play(This) \
(This)->lpVtbl -> play(This)
-#define IVLCControl_pause(This) \
+#define IVLCControl_pause(This) \
(This)->lpVtbl -> pause(This)
-#define IVLCControl_stop(This) \
+#define IVLCControl_stop(This) \
(This)->lpVtbl -> stop(This)
-#define IVLCControl_get_Playing(This,isPlaying) \
+#define IVLCControl_get_Playing(This,isPlaying) \
(This)->lpVtbl -> get_Playing(This,isPlaying)
-#define IVLCControl_get_Position(This,position) \
+#define IVLCControl_get_Position(This,position) \
(This)->lpVtbl -> get_Position(This,position)
-#define IVLCControl_put_Position(This,position) \
+#define IVLCControl_put_Position(This,position) \
(This)->lpVtbl -> put_Position(This,position)
-#define IVLCControl_get_Time(This,seconds) \
+#define IVLCControl_get_Time(This,seconds) \
(This)->lpVtbl -> get_Time(This,seconds)
-#define IVLCControl_put_Time(This,seconds) \
+#define IVLCControl_put_Time(This,seconds) \
(This)->lpVtbl -> put_Time(This,seconds)
-#define IVLCControl_shuttle(This,seconds) \
+#define IVLCControl_shuttle(This,seconds) \
(This)->lpVtbl -> shuttle(This,seconds)
-#define IVLCControl_fullscreen(This) \
+#define IVLCControl_fullscreen(This) \
(This)->lpVtbl -> fullscreen(This)
-#define IVLCControl_get_Length(This,seconds) \
+#define IVLCControl_get_Length(This,seconds) \
(This)->lpVtbl -> get_Length(This,seconds)
-#define IVLCControl_playFaster(This) \
+#define IVLCControl_playFaster(This) \
(This)->lpVtbl -> playFaster(This)
-#define IVLCControl_playSlower(This) \
+#define IVLCControl_playSlower(This) \
(This)->lpVtbl -> playSlower(This)
-#define IVLCControl_get_Volume(This,volume) \
+#define IVLCControl_get_Volume(This,volume) \
(This)->lpVtbl -> get_Volume(This,volume)
-#define IVLCControl_put_Volume(This,volume) \
+#define IVLCControl_put_Volume(This,volume) \
(This)->lpVtbl -> put_Volume(This,volume)
-#define IVLCControl_toggleMute(This) \
+#define IVLCControl_toggleMute(This) \
(This)->lpVtbl -> toggleMute(This)
-#define IVLCControl_setVariable(This,name,value) \
+#define IVLCControl_setVariable(This,name,value) \
(This)->lpVtbl -> setVariable(This,name,value)
-#define IVLCControl_getVariable(This,name,value) \
+#define IVLCControl_getVariable(This,name,value) \
(This)->lpVtbl -> getVariable(This,name,value)
-#define IVLCControl_addTarget(This,uri,options,mode,position) \
+#define IVLCControl_addTarget(This,uri,options,mode,position) \
(This)->lpVtbl -> addTarget(This,uri,options,mode,position)
-#define IVLCControl_get_PlaylistIndex(This,index) \
+#define IVLCControl_get_PlaylistIndex(This,index) \
(This)->lpVtbl -> get_PlaylistIndex(This,index)
-#define IVLCControl_get_PlaylistCount(This,index) \
+#define IVLCControl_get_PlaylistCount(This,index) \
(This)->lpVtbl -> get_PlaylistCount(This,index)
-#define IVLCControl_playlistNext(This) \
+#define IVLCControl_playlistNext(This) \
(This)->lpVtbl -> playlistNext(This)
-#define IVLCControl_playlistPrev(This) \
+#define IVLCControl_playlistPrev(This) \
(This)->lpVtbl -> playlistPrev(This)
-#define IVLCControl_playlistClear(This) \
+#define IVLCControl_playlistClear(This) \
(This)->lpVtbl -> playlistClear(This)
-#define IVLCControl_get_VersionInfo(This,version) \
+#define IVLCControl_get_VersionInfo(This,version) \
(This)->lpVtbl -> get_VersionInfo(This,version)
-#define IVLCControl_get_MRL(This,mrl) \
+#define IVLCControl_get_MRL(This,mrl) \
(This)->lpVtbl -> get_MRL(This,mrl)
-#define IVLCControl_put_MRL(This,mrl) \
+#define IVLCControl_put_MRL(This,mrl) \
(This)->lpVtbl -> put_MRL(This,mrl)
-#define IVLCControl_get_AutoPlay(This,autoplay) \
+#define IVLCControl_get_AutoPlay(This,autoplay) \
(This)->lpVtbl -> get_AutoPlay(This,autoplay)
-#define IVLCControl_put_AutoPlay(This,autoplay) \
+#define IVLCControl_put_AutoPlay(This,autoplay) \
(This)->lpVtbl -> put_AutoPlay(This,autoplay)
-#define IVLCControl_get_AutoLoop(This,autoloop) \
+#define IVLCControl_get_AutoLoop(This,autoloop) \
(This)->lpVtbl -> get_AutoLoop(This,autoloop)
-#define IVLCControl_put_AutoLoop(This,autoloop) \
+#define IVLCControl_put_AutoLoop(This,autoloop) \
(This)->lpVtbl -> put_AutoLoop(This,autoloop)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][bindable][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Visible_Proxy(
+/* [helpstring][bindable][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Visible_Proxy(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *visible);
DWORD *_pdwStubPhase);
-/* [helpstring][bindable][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Visible_Proxy(
+/* [helpstring][bindable][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Visible_Proxy(
IVLCControl * This,
/* [in] */ VARIANT_BOOL visible);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_play_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_play_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_pause_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_pause_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_stop_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_stop_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][hidden][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Playing_Proxy(
+/* [helpstring][propget][hidden][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Playing_Proxy(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *isPlaying);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Position_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Position_Proxy(
IVLCControl * This,
/* [retval][out] */ float *position);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Position_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Position_Proxy(
IVLCControl * This,
/* [in] */ float position);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Time_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Time_Proxy(
IVLCControl * This,
/* [retval][out] */ int *seconds);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Time_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Time_Proxy(
IVLCControl * This,
/* [in] */ int seconds);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_shuttle_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_shuttle_Proxy(
IVLCControl * This,
/* [in] */ int seconds);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_fullscreen_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_fullscreen_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring][hidden][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Length_Proxy(
+/* [helpstring][hidden][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Length_Proxy(
IVLCControl * This,
/* [retval][out] */ int *seconds);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playFaster_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playFaster_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playSlower_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playSlower_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Volume_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_Volume_Proxy(
IVLCControl * This,
/* [retval][out] */ int *volume);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Volume_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_Volume_Proxy(
IVLCControl * This,
/* [in] */ int volume);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_toggleMute_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_toggleMute_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_setVariable_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_setVariable_Proxy(
IVLCControl * This,
/* [in] */ BSTR name,
/* [in] */ VARIANT value);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_getVariable_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_getVariable_Proxy(
IVLCControl * This,
/* [in] */ BSTR name,
/* [retval][out] */ VARIANT *value);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_addTarget_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_addTarget_Proxy(
IVLCControl * This,
/* [in] */ BSTR uri,
/* [in] */ VARIANT options,
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_PlaylistIndex_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_PlaylistIndex_Proxy(
IVLCControl * This,
/* [retval][out] */ int *index);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_PlaylistCount_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_PlaylistCount_Proxy(
IVLCControl * This,
/* [retval][out] */ int *index);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistNext_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistNext_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistPrev_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistPrev_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistClear_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCControl_playlistClear_Proxy(
IVLCControl * This);
DWORD *_pdwStubPhase);
-/* [helpstring][hidden][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_VersionInfo_Proxy(
+/* [helpstring][hidden][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_VersionInfo_Proxy(
IVLCControl * This,
/* [retval][out] */ BSTR *version);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_MRL_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_MRL_Proxy(
IVLCControl * This,
/* [retval][out] */ BSTR *mrl);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_MRL_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_MRL_Proxy(
IVLCControl * This,
/* [in] */ BSTR mrl);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_AutoPlay_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_AutoPlay_Proxy(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *autoplay);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_AutoPlay_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_AutoPlay_Proxy(
IVLCControl * This,
/* [in] */ VARIANT_BOOL autoplay);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_AutoLoop_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_get_AutoLoop_Proxy(
IVLCControl * This,
/* [retval][out] */ VARIANT_BOOL *autoloop);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_AutoLoop_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl_put_AutoLoop_Proxy(
IVLCControl * This,
/* [in] */ VARIANT_BOOL autoloop);
-#endif /* __IVLCControl_INTERFACE_DEFINED__ */
+#endif /* __IVLCControl_INTERFACE_DEFINED__ */
#ifndef __IVLCAudio_INTERFACE_DEFINED__
#define __IVLCAudio_INTERFACE_DEFINED__
/* interface IVLCAudio */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCAudio;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("9E0BD17B-2D3C-4656-B94D-03084F3FD9D4")
IVLCAudio : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_mute(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_mute(
/* [retval][out] */ VARIANT_BOOL *muted) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_mute(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_mute(
/* [in] */ VARIANT_BOOL muted) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_volume(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_volume(
/* [retval][out] */ long *volume) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_volume(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_volume(
/* [in] */ long volume) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE toggleMute( void) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_track(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_track(
/* [retval][out] */ long *track) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_track(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_track(
/* [in] */ long track) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_channel(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_channel(
/* [retval][out] */ long *channel) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_channel(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_channel(
/* [in] */ long channel) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCAudioVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCAudio * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCAudio * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCAudio * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCAudio * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCAudio * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCAudio * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCAudio * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_mute )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_mute )(
IVLCAudio * This,
/* [retval][out] */ VARIANT_BOOL *muted);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_mute )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_mute )(
IVLCAudio * This,
/* [in] */ VARIANT_BOOL muted);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_volume )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_volume )(
IVLCAudio * This,
/* [retval][out] */ long *volume);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_volume )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_volume )(
IVLCAudio * This,
/* [in] */ long volume);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleMute )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleMute )(
IVLCAudio * This);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_track )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_track )(
IVLCAudio * This,
/* [retval][out] */ long *track);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_track )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_track )(
IVLCAudio * This,
/* [in] */ long track);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_channel )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_channel )(
IVLCAudio * This,
/* [retval][out] */ long *channel);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_channel )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_channel )(
IVLCAudio * This,
/* [in] */ long channel);
-
+
END_INTERFACE
} IVLCAudioVtbl;
CONST_VTBL struct IVLCAudioVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCAudio_QueryInterface(This,riid,ppvObject) \
+#define IVLCAudio_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCAudio_AddRef(This) \
+#define IVLCAudio_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCAudio_Release(This) \
+#define IVLCAudio_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCAudio_GetTypeInfoCount(This,pctinfo) \
+#define IVLCAudio_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCAudio_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCAudio_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCAudio_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCAudio_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCAudio_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCAudio_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCAudio_get_mute(This,muted) \
+#define IVLCAudio_get_mute(This,muted) \
(This)->lpVtbl -> get_mute(This,muted)
-#define IVLCAudio_put_mute(This,muted) \
+#define IVLCAudio_put_mute(This,muted) \
(This)->lpVtbl -> put_mute(This,muted)
-#define IVLCAudio_get_volume(This,volume) \
+#define IVLCAudio_get_volume(This,volume) \
(This)->lpVtbl -> get_volume(This,volume)
-#define IVLCAudio_put_volume(This,volume) \
+#define IVLCAudio_put_volume(This,volume) \
(This)->lpVtbl -> put_volume(This,volume)
-#define IVLCAudio_toggleMute(This) \
+#define IVLCAudio_toggleMute(This) \
(This)->lpVtbl -> toggleMute(This)
-#define IVLCAudio_get_track(This,track) \
+#define IVLCAudio_get_track(This,track) \
(This)->lpVtbl -> get_track(This,track)
-#define IVLCAudio_put_track(This,track) \
+#define IVLCAudio_put_track(This,track) \
(This)->lpVtbl -> put_track(This,track)
-#define IVLCAudio_get_channel(This,channel) \
+#define IVLCAudio_get_channel(This,channel) \
(This)->lpVtbl -> get_channel(This,channel)
-#define IVLCAudio_put_channel(This,channel) \
+#define IVLCAudio_put_channel(This,channel) \
(This)->lpVtbl -> put_channel(This,channel)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_mute_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_mute_Proxy(
IVLCAudio * This,
/* [retval][out] */ VARIANT_BOOL *muted);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_mute_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_mute_Proxy(
IVLCAudio * This,
/* [in] */ VARIANT_BOOL muted);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_volume_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_volume_Proxy(
IVLCAudio * This,
/* [retval][out] */ long *volume);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_volume_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_volume_Proxy(
IVLCAudio * This,
/* [in] */ long volume);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCAudio_toggleMute_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCAudio_toggleMute_Proxy(
IVLCAudio * This);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_track_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_track_Proxy(
IVLCAudio * This,
/* [retval][out] */ long *track);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_track_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_track_Proxy(
IVLCAudio * This,
/* [in] */ long track);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_channel_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCAudio_get_channel_Proxy(
IVLCAudio * This,
/* [retval][out] */ long *channel);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_channel_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCAudio_put_channel_Proxy(
IVLCAudio * This,
/* [in] */ long channel);
-#endif /* __IVLCAudio_INTERFACE_DEFINED__ */
+#endif /* __IVLCAudio_INTERFACE_DEFINED__ */
#ifndef __IVLCInput_INTERFACE_DEFINED__
#define __IVLCInput_INTERFACE_DEFINED__
/* interface IVLCInput */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCInput;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("49E0DBD1-9440-466C-9C97-95C67190C603")
IVLCInput : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length(
/* [retval][out] */ double *length) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_position(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_position(
/* [retval][out] */ double *position) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_position(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_position(
/* [in] */ double position) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_time(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_time(
/* [retval][out] */ double *time) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_time(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_time(
/* [in] */ double time) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_state(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_state(
/* [retval][out] */ long *state) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_rate(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_rate(
/* [retval][out] */ double *rate) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_rate(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_rate(
/* [in] */ double rate) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fps(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fps(
/* [retval][out] */ double *fps) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasVout(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasVout(
/* [retval][out] */ VARIANT_BOOL *hasVout) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCInputVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCInput * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCInput * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCInput * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCInput * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCInput * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCInput * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCInput * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )(
IVLCInput * This,
/* [retval][out] */ double *length);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_position )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_position )(
IVLCInput * This,
/* [retval][out] */ double *position);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_position )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_position )(
IVLCInput * This,
/* [in] */ double position);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_time )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_time )(
IVLCInput * This,
/* [retval][out] */ double *time);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_time )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_time )(
IVLCInput * This,
/* [in] */ double time);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_state )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_state )(
IVLCInput * This,
/* [retval][out] */ long *state);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_rate )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_rate )(
IVLCInput * This,
/* [retval][out] */ double *rate);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_rate )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_rate )(
IVLCInput * This,
/* [in] */ double rate);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fps )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fps )(
IVLCInput * This,
/* [retval][out] */ double *fps);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasVout )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasVout )(
IVLCInput * This,
/* [retval][out] */ VARIANT_BOOL *hasVout);
-
+
END_INTERFACE
} IVLCInputVtbl;
CONST_VTBL struct IVLCInputVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCInput_QueryInterface(This,riid,ppvObject) \
+#define IVLCInput_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCInput_AddRef(This) \
+#define IVLCInput_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCInput_Release(This) \
+#define IVLCInput_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCInput_GetTypeInfoCount(This,pctinfo) \
+#define IVLCInput_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCInput_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCInput_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCInput_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCInput_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCInput_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCInput_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCInput_get_length(This,length) \
+#define IVLCInput_get_length(This,length) \
(This)->lpVtbl -> get_length(This,length)
-#define IVLCInput_get_position(This,position) \
+#define IVLCInput_get_position(This,position) \
(This)->lpVtbl -> get_position(This,position)
-#define IVLCInput_put_position(This,position) \
+#define IVLCInput_put_position(This,position) \
(This)->lpVtbl -> put_position(This,position)
-#define IVLCInput_get_time(This,time) \
+#define IVLCInput_get_time(This,time) \
(This)->lpVtbl -> get_time(This,time)
-#define IVLCInput_put_time(This,time) \
+#define IVLCInput_put_time(This,time) \
(This)->lpVtbl -> put_time(This,time)
-#define IVLCInput_get_state(This,state) \
+#define IVLCInput_get_state(This,state) \
(This)->lpVtbl -> get_state(This,state)
-#define IVLCInput_get_rate(This,rate) \
+#define IVLCInput_get_rate(This,rate) \
(This)->lpVtbl -> get_rate(This,rate)
-#define IVLCInput_put_rate(This,rate) \
+#define IVLCInput_put_rate(This,rate) \
(This)->lpVtbl -> put_rate(This,rate)
-#define IVLCInput_get_fps(This,fps) \
+#define IVLCInput_get_fps(This,fps) \
(This)->lpVtbl -> get_fps(This,fps)
-#define IVLCInput_get_hasVout(This,hasVout) \
+#define IVLCInput_get_hasVout(This,hasVout) \
(This)->lpVtbl -> get_hasVout(This,hasVout)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_length_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_length_Proxy(
IVLCInput * This,
/* [retval][out] */ double *length);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_position_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_position_Proxy(
IVLCInput * This,
/* [retval][out] */ double *position);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_position_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_position_Proxy(
IVLCInput * This,
/* [in] */ double position);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_time_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_time_Proxy(
IVLCInput * This,
/* [retval][out] */ double *time);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_time_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_time_Proxy(
IVLCInput * This,
/* [in] */ double time);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_state_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_state_Proxy(
IVLCInput * This,
/* [retval][out] */ long *state);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_rate_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_rate_Proxy(
IVLCInput * This,
/* [retval][out] */ double *rate);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_rate_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCInput_put_rate_Proxy(
IVLCInput * This,
/* [in] */ double rate);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_fps_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_fps_Proxy(
IVLCInput * This,
/* [retval][out] */ double *fps);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_hasVout_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCInput_get_hasVout_Proxy(
IVLCInput * This,
/* [retval][out] */ VARIANT_BOOL *hasVout);
-#endif /* __IVLCInput_INTERFACE_DEFINED__ */
+#endif /* __IVLCInput_INTERFACE_DEFINED__ */
#ifndef __IVLCLog_INTERFACE_DEFINED__
#define __IVLCLog_INTERFACE_DEFINED__
/* interface IVLCLog */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCLog;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("8E3BC3D9-62E9-48FB-8A6D-993F9ABC4A0A")
IVLCLog : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_messages(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_messages(
/* [retval][out] */ IVLCMessages **iter) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_verbosity(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_verbosity(
/* [retval][out] */ long *level) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_verbosity(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_verbosity(
/* [in] */ long level) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCLogVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCLog * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCLog * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCLog * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCLog * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCLog * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCLog * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCLog * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_messages )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_messages )(
IVLCLog * This,
/* [retval][out] */ IVLCMessages **iter);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_verbosity )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_verbosity )(
IVLCLog * This,
/* [retval][out] */ long *level);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_verbosity )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_verbosity )(
IVLCLog * This,
/* [in] */ long level);
-
+
END_INTERFACE
} IVLCLogVtbl;
CONST_VTBL struct IVLCLogVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCLog_QueryInterface(This,riid,ppvObject) \
+#define IVLCLog_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCLog_AddRef(This) \
+#define IVLCLog_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCLog_Release(This) \
+#define IVLCLog_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCLog_GetTypeInfoCount(This,pctinfo) \
+#define IVLCLog_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCLog_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCLog_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCLog_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCLog_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCLog_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCLog_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCLog_get_messages(This,iter) \
+#define IVLCLog_get_messages(This,iter) \
(This)->lpVtbl -> get_messages(This,iter)
-#define IVLCLog_get_verbosity(This,level) \
+#define IVLCLog_get_verbosity(This,level) \
(This)->lpVtbl -> get_verbosity(This,level)
-#define IVLCLog_put_verbosity(This,level) \
+#define IVLCLog_put_verbosity(This,level) \
(This)->lpVtbl -> put_verbosity(This,level)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCLog_get_messages_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCLog_get_messages_Proxy(
IVLCLog * This,
/* [retval][out] */ IVLCMessages **iter);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCLog_get_verbosity_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCLog_get_verbosity_Proxy(
IVLCLog * This,
/* [retval][out] */ long *level);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCLog_put_verbosity_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCLog_put_verbosity_Proxy(
IVLCLog * This,
/* [in] */ long level);
-#endif /* __IVLCLog_INTERFACE_DEFINED__ */
+#endif /* __IVLCLog_INTERFACE_DEFINED__ */
#ifndef __IVLCMessage_INTERFACE_DEFINED__
#define __IVLCMessage_INTERFACE_DEFINED__
/* interface IVLCMessage */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCMessage;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("9ED00AFA-7BCD-4FFF-8D48-7DD4DB2C800D")
IVLCMessage : public IDispatch
{
public:
- virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get__Value(
+ virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get__Value(
/* [retval][out] */ VARIANT *message) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_severity(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_severity(
/* [retval][out] */ long *level) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type(
/* [retval][out] */ BSTR *type) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name(
/* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_header(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_header(
/* [retval][out] */ BSTR *header) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_message(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_message(
/* [retval][out] */ BSTR *message) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCMessageVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCMessage * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCMessage * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCMessage * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCMessage * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCMessage * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCMessage * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCMessage * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__Value )(
+
+ /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__Value )(
IVLCMessage * This,
/* [retval][out] */ VARIANT *message);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_severity )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_severity )(
IVLCMessage * This,
/* [retval][out] */ long *level);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_type )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_type )(
IVLCMessage * This,
/* [retval][out] */ BSTR *type);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
IVLCMessage * This,
/* [retval][out] */ BSTR *name);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_header )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_header )(
IVLCMessage * This,
/* [retval][out] */ BSTR *header);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_message )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_message )(
IVLCMessage * This,
/* [retval][out] */ BSTR *message);
-
+
END_INTERFACE
} IVLCMessageVtbl;
CONST_VTBL struct IVLCMessageVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCMessage_QueryInterface(This,riid,ppvObject) \
+#define IVLCMessage_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCMessage_AddRef(This) \
+#define IVLCMessage_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCMessage_Release(This) \
+#define IVLCMessage_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCMessage_GetTypeInfoCount(This,pctinfo) \
+#define IVLCMessage_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCMessage_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCMessage_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCMessage_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCMessage_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCMessage_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCMessage_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCMessage_get__Value(This,message) \
+#define IVLCMessage_get__Value(This,message) \
(This)->lpVtbl -> get__Value(This,message)
-#define IVLCMessage_get_severity(This,level) \
+#define IVLCMessage_get_severity(This,level) \
(This)->lpVtbl -> get_severity(This,level)
-#define IVLCMessage_get_type(This,type) \
+#define IVLCMessage_get_type(This,type) \
(This)->lpVtbl -> get_type(This,type)
-#define IVLCMessage_get_name(This,name) \
+#define IVLCMessage_get_name(This,name) \
(This)->lpVtbl -> get_name(This,name)
-#define IVLCMessage_get_header(This,header) \
+#define IVLCMessage_get_header(This,header) \
(This)->lpVtbl -> get_header(This,header)
-#define IVLCMessage_get_message(This,message) \
+#define IVLCMessage_get_message(This,message) \
(This)->lpVtbl -> get_message(This,message)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [propget][id] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get__Value_Proxy(
+/* [propget][id] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get__Value_Proxy(
IVLCMessage * This,
/* [retval][out] */ VARIANT *message);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_severity_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_severity_Proxy(
IVLCMessage * This,
/* [retval][out] */ long *level);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_type_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_type_Proxy(
IVLCMessage * This,
/* [retval][out] */ BSTR *type);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_name_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_name_Proxy(
IVLCMessage * This,
/* [retval][out] */ BSTR *name);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_header_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_header_Proxy(
IVLCMessage * This,
/* [retval][out] */ BSTR *header);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_message_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessage_get_message_Proxy(
IVLCMessage * This,
/* [retval][out] */ BSTR *message);
-#endif /* __IVLCMessage_INTERFACE_DEFINED__ */
+#endif /* __IVLCMessage_INTERFACE_DEFINED__ */
#ifndef __IVLCMessageIterator_INTERFACE_DEFINED__
#define __IVLCMessageIterator_INTERFACE_DEFINED__
/* interface IVLCMessageIterator */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCMessageIterator;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("15179CD8-CC12-4242-A58E-E412217FF343")
IVLCMessageIterator : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasNext(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasNext(
/* [retval][out] */ VARIANT_BOOL *hasNext) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE next(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE next(
/* [retval][out] */ IVLCMessage **msg) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCMessageIteratorVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCMessageIterator * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCMessageIterator * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCMessageIterator * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCMessageIterator * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCMessageIterator * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCMessageIterator * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCMessageIterator * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasNext )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasNext )(
IVLCMessageIterator * This,
/* [retval][out] */ VARIANT_BOOL *hasNext);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *next )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *next )(
IVLCMessageIterator * This,
/* [retval][out] */ IVLCMessage **msg);
-
+
END_INTERFACE
} IVLCMessageIteratorVtbl;
CONST_VTBL struct IVLCMessageIteratorVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCMessageIterator_QueryInterface(This,riid,ppvObject) \
+#define IVLCMessageIterator_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCMessageIterator_AddRef(This) \
+#define IVLCMessageIterator_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCMessageIterator_Release(This) \
+#define IVLCMessageIterator_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCMessageIterator_GetTypeInfoCount(This,pctinfo) \
+#define IVLCMessageIterator_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCMessageIterator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCMessageIterator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCMessageIterator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCMessageIterator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCMessageIterator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCMessageIterator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCMessageIterator_get_hasNext(This,hasNext) \
+#define IVLCMessageIterator_get_hasNext(This,hasNext) \
(This)->lpVtbl -> get_hasNext(This,hasNext)
-#define IVLCMessageIterator_next(This,msg) \
+#define IVLCMessageIterator_next(This,msg) \
(This)->lpVtbl -> next(This,msg)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessageIterator_get_hasNext_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessageIterator_get_hasNext_Proxy(
IVLCMessageIterator * This,
/* [retval][out] */ VARIANT_BOOL *hasNext);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessageIterator_next_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessageIterator_next_Proxy(
IVLCMessageIterator * This,
/* [retval][out] */ IVLCMessage **msg);
-#endif /* __IVLCMessageIterator_INTERFACE_DEFINED__ */
+#endif /* __IVLCMessageIterator_INTERFACE_DEFINED__ */
#ifndef __IVLCMessages_INTERFACE_DEFINED__
#define __IVLCMessages_INTERFACE_DEFINED__
/* interface IVLCMessages */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCMessages;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("6C5CE55D-2D6C-4AAD-8299-C62D2371F106")
IVLCMessages : public IDispatch
{
public:
- virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum(
+ virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum(
/* [retval][out] */ IUnknown **_NewEnum) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE clear( void) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count(
/* [retval][out] */ long *count) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE iterator(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE iterator(
/* [retval][out] */ IVLCMessageIterator **iter) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCMessagesVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCMessages * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCMessages * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCMessages * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCMessages * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCMessages * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCMessages * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCMessages * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
+
+ /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
IVLCMessages * This,
/* [retval][out] */ IUnknown **_NewEnum);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *clear )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *clear )(
IVLCMessages * This);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_count )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_count )(
IVLCMessages * This,
/* [retval][out] */ long *count);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *iterator )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *iterator )(
IVLCMessages * This,
/* [retval][out] */ IVLCMessageIterator **iter);
-
+
END_INTERFACE
} IVLCMessagesVtbl;
CONST_VTBL struct IVLCMessagesVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCMessages_QueryInterface(This,riid,ppvObject) \
+#define IVLCMessages_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCMessages_AddRef(This) \
+#define IVLCMessages_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCMessages_Release(This) \
+#define IVLCMessages_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCMessages_GetTypeInfoCount(This,pctinfo) \
+#define IVLCMessages_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCMessages_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCMessages_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCMessages_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCMessages_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCMessages_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCMessages_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCMessages_get__NewEnum(This,_NewEnum) \
+#define IVLCMessages_get__NewEnum(This,_NewEnum) \
(This)->lpVtbl -> get__NewEnum(This,_NewEnum)
-#define IVLCMessages_clear(This) \
+#define IVLCMessages_clear(This) \
(This)->lpVtbl -> clear(This)
-#define IVLCMessages_get_count(This,count) \
+#define IVLCMessages_get_count(This,count) \
(This)->lpVtbl -> get_count(This,count)
-#define IVLCMessages_iterator(This,iter) \
+#define IVLCMessages_iterator(This,iter) \
(This)->lpVtbl -> iterator(This,iter)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [propget][id] */ HRESULT STDMETHODCALLTYPE IVLCMessages_get__NewEnum_Proxy(
+/* [propget][id] */ HRESULT STDMETHODCALLTYPE IVLCMessages_get__NewEnum_Proxy(
IVLCMessages * This,
/* [retval][out] */ IUnknown **_NewEnum);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessages_clear_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessages_clear_Proxy(
IVLCMessages * This);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessages_get_count_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCMessages_get_count_Proxy(
IVLCMessages * This,
/* [retval][out] */ long *count);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessages_iterator_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCMessages_iterator_Proxy(
IVLCMessages * This,
/* [retval][out] */ IVLCMessageIterator **iter);
-#endif /* __IVLCMessages_INTERFACE_DEFINED__ */
+#endif /* __IVLCMessages_INTERFACE_DEFINED__ */
#ifndef __IVLCPlaylist_INTERFACE_DEFINED__
#define __IVLCPlaylist_INTERFACE_DEFINED__
/* interface IVLCPlaylist */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCPlaylist;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("54613049-40BF-4035-9E70-0A9312C0188D")
IVLCPlaylist : public IDispatch
{
public:
- virtual /* [helpstring][propget][hidden] */ HRESULT STDMETHODCALLTYPE get_itemCount(
+ virtual /* [helpstring][propget][hidden] */ HRESULT STDMETHODCALLTYPE get_itemCount(
/* [retval][out] */ long *count) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPlaying(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPlaying(
/* [retval][out] */ VARIANT_BOOL *playing) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE add(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE add(
/* [in] */ BSTR uri,
/* [optional][in] */ VARIANT name,
/* [optional][in] */ VARIANT options,
/* [retval][out] */ long *itemId) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE play( void) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playItem(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE playItem(
/* [in] */ long itemId) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE togglePause( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE stop( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE next( void) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE prev( void) = 0;
-
+
virtual /* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE clear( void) = 0;
-
- virtual /* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE removeItem(
+
+ virtual /* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE removeItem(
/* [in] */ long item) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_items(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_items(
/* [retval][out] */ IVLCPlaylistItems **obj) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCPlaylistVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCPlaylist * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCPlaylist * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCPlaylist * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCPlaylist * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCPlaylist * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCPlaylist * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCPlaylist * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_itemCount )(
+
+ /* [helpstring][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_itemCount )(
IVLCPlaylist * This,
/* [retval][out] */ long *count);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPlaying )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPlaying )(
IVLCPlaylist * This,
/* [retval][out] */ VARIANT_BOOL *playing);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *add )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *add )(
IVLCPlaylist * This,
/* [in] */ BSTR uri,
/* [optional][in] */ VARIANT name,
/* [optional][in] */ VARIANT options,
/* [retval][out] */ long *itemId);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *play )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *play )(
IVLCPlaylist * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playItem )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *playItem )(
IVLCPlaylist * This,
/* [in] */ long itemId);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *togglePause )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *togglePause )(
IVLCPlaylist * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *stop )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *stop )(
IVLCPlaylist * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *next )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *next )(
IVLCPlaylist * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *prev )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *prev )(
IVLCPlaylist * This);
-
- /* [helpstring][hidden] */ HRESULT ( STDMETHODCALLTYPE *clear )(
+
+ /* [helpstring][hidden] */ HRESULT ( STDMETHODCALLTYPE *clear )(
IVLCPlaylist * This);
-
- /* [helpstring][hidden] */ HRESULT ( STDMETHODCALLTYPE *removeItem )(
+
+ /* [helpstring][hidden] */ HRESULT ( STDMETHODCALLTYPE *removeItem )(
IVLCPlaylist * This,
/* [in] */ long item);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_items )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_items )(
IVLCPlaylist * This,
/* [retval][out] */ IVLCPlaylistItems **obj);
-
+
END_INTERFACE
} IVLCPlaylistVtbl;
CONST_VTBL struct IVLCPlaylistVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCPlaylist_QueryInterface(This,riid,ppvObject) \
+#define IVLCPlaylist_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCPlaylist_AddRef(This) \
+#define IVLCPlaylist_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCPlaylist_Release(This) \
+#define IVLCPlaylist_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCPlaylist_GetTypeInfoCount(This,pctinfo) \
+#define IVLCPlaylist_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCPlaylist_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCPlaylist_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCPlaylist_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCPlaylist_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCPlaylist_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCPlaylist_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCPlaylist_get_itemCount(This,count) \
+#define IVLCPlaylist_get_itemCount(This,count) \
(This)->lpVtbl -> get_itemCount(This,count)
-#define IVLCPlaylist_get_isPlaying(This,playing) \
+#define IVLCPlaylist_get_isPlaying(This,playing) \
(This)->lpVtbl -> get_isPlaying(This,playing)
-#define IVLCPlaylist_add(This,uri,name,options,itemId) \
+#define IVLCPlaylist_add(This,uri,name,options,itemId) \
(This)->lpVtbl -> add(This,uri,name,options,itemId)
-#define IVLCPlaylist_play(This) \
+#define IVLCPlaylist_play(This) \
(This)->lpVtbl -> play(This)
-#define IVLCPlaylist_playItem(This,itemId) \
+#define IVLCPlaylist_playItem(This,itemId) \
(This)->lpVtbl -> playItem(This,itemId)
-#define IVLCPlaylist_togglePause(This) \
+#define IVLCPlaylist_togglePause(This) \
(This)->lpVtbl -> togglePause(This)
-#define IVLCPlaylist_stop(This) \
+#define IVLCPlaylist_stop(This) \
(This)->lpVtbl -> stop(This)
-#define IVLCPlaylist_next(This) \
+#define IVLCPlaylist_next(This) \
(This)->lpVtbl -> next(This)
-#define IVLCPlaylist_prev(This) \
+#define IVLCPlaylist_prev(This) \
(This)->lpVtbl -> prev(This)
-#define IVLCPlaylist_clear(This) \
+#define IVLCPlaylist_clear(This) \
(This)->lpVtbl -> clear(This)
-#define IVLCPlaylist_removeItem(This,item) \
+#define IVLCPlaylist_removeItem(This,item) \
(This)->lpVtbl -> removeItem(This,item)
-#define IVLCPlaylist_get_items(This,obj) \
+#define IVLCPlaylist_get_items(This,obj) \
(This)->lpVtbl -> get_items(This,obj)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_itemCount_Proxy(
+/* [helpstring][propget][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_itemCount_Proxy(
IVLCPlaylist * This,
/* [retval][out] */ long *count);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_isPlaying_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_isPlaying_Proxy(
IVLCPlaylist * This,
/* [retval][out] */ VARIANT_BOOL *playing);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_add_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_add_Proxy(
IVLCPlaylist * This,
/* [in] */ BSTR uri,
/* [optional][in] */ VARIANT name,
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_play_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_play_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_playItem_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_playItem_Proxy(
IVLCPlaylist * This,
/* [in] */ long itemId);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_togglePause_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_togglePause_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_stop_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_stop_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_next_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_next_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_prev_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_prev_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_clear_Proxy(
+/* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_clear_Proxy(
IVLCPlaylist * This);
DWORD *_pdwStubPhase);
-/* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_removeItem_Proxy(
+/* [helpstring][hidden] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_removeItem_Proxy(
IVLCPlaylist * This,
/* [in] */ long item);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_items_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_items_Proxy(
IVLCPlaylist * This,
/* [retval][out] */ IVLCPlaylistItems **obj);
-#endif /* __IVLCPlaylist_INTERFACE_DEFINED__ */
+#endif /* __IVLCPlaylist_INTERFACE_DEFINED__ */
#ifndef __IVLCVideo_INTERFACE_DEFINED__
#define __IVLCVideo_INTERFACE_DEFINED__
/* interface IVLCVideo */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCVideo;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("0AAEDF0B-D333-4B27-A0C6-BBF31413A42E")
IVLCVideo : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fullscreen(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fullscreen(
/* [retval][out] */ VARIANT_BOOL *fullscreen) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_fullscreen(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_fullscreen(
/* [in] */ VARIANT_BOOL fullscreen) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_width(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_width(
/* [retval][out] */ long *width) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_height(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_height(
/* [retval][out] */ long *height) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_aspectRatio(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_aspectRatio(
/* [retval][out] */ BSTR *aspect) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_aspectRatio(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_aspectRatio(
/* [in] */ BSTR aspect) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_subtitle(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_subtitle(
/* [retval][out] */ long *spu) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_subtitle(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_subtitle(
/* [in] */ long spu) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_crop(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_crop(
/* [retval][out] */ BSTR *geometry) = 0;
-
- virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_crop(
+
+ virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_crop(
/* [in] */ BSTR geometry) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE toggleFullscreen( void) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE takeSnapshot(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE takeSnapshot(
/* [retval][out] */ IPictureDisp **picture) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCVideoVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCVideo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCVideo * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCVideo * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCVideo * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCVideo * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCVideo * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCVideo * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fullscreen )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fullscreen )(
IVLCVideo * This,
/* [retval][out] */ VARIANT_BOOL *fullscreen);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_fullscreen )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_fullscreen )(
IVLCVideo * This,
/* [in] */ VARIANT_BOOL fullscreen);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_width )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_width )(
IVLCVideo * This,
/* [retval][out] */ long *width);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_height )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_height )(
IVLCVideo * This,
/* [retval][out] */ long *height);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_aspectRatio )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_aspectRatio )(
IVLCVideo * This,
/* [retval][out] */ BSTR *aspect);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_aspectRatio )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_aspectRatio )(
IVLCVideo * This,
/* [in] */ BSTR aspect);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_subtitle )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_subtitle )(
IVLCVideo * This,
/* [retval][out] */ long *spu);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_subtitle )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_subtitle )(
IVLCVideo * This,
/* [in] */ long spu);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_crop )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_crop )(
IVLCVideo * This,
/* [retval][out] */ BSTR *geometry);
-
- /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_crop )(
+
+ /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_crop )(
IVLCVideo * This,
/* [in] */ BSTR geometry);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleFullscreen )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *toggleFullscreen )(
IVLCVideo * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *takeSnapshot )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *takeSnapshot )(
IVLCVideo * This,
/* [retval][out] */ IPictureDisp **picture);
-
+
END_INTERFACE
} IVLCVideoVtbl;
CONST_VTBL struct IVLCVideoVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCVideo_QueryInterface(This,riid,ppvObject) \
+#define IVLCVideo_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCVideo_AddRef(This) \
+#define IVLCVideo_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCVideo_Release(This) \
+#define IVLCVideo_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCVideo_GetTypeInfoCount(This,pctinfo) \
+#define IVLCVideo_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCVideo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCVideo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCVideo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCVideo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCVideo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCVideo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCVideo_get_fullscreen(This,fullscreen) \
+#define IVLCVideo_get_fullscreen(This,fullscreen) \
(This)->lpVtbl -> get_fullscreen(This,fullscreen)
-#define IVLCVideo_put_fullscreen(This,fullscreen) \
+#define IVLCVideo_put_fullscreen(This,fullscreen) \
(This)->lpVtbl -> put_fullscreen(This,fullscreen)
-#define IVLCVideo_get_width(This,width) \
+#define IVLCVideo_get_width(This,width) \
(This)->lpVtbl -> get_width(This,width)
-#define IVLCVideo_get_height(This,height) \
+#define IVLCVideo_get_height(This,height) \
(This)->lpVtbl -> get_height(This,height)
-#define IVLCVideo_get_aspectRatio(This,aspect) \
+#define IVLCVideo_get_aspectRatio(This,aspect) \
(This)->lpVtbl -> get_aspectRatio(This,aspect)
-#define IVLCVideo_put_aspectRatio(This,aspect) \
+#define IVLCVideo_put_aspectRatio(This,aspect) \
(This)->lpVtbl -> put_aspectRatio(This,aspect)
-#define IVLCVideo_get_subtitle(This,spu) \
+#define IVLCVideo_get_subtitle(This,spu) \
(This)->lpVtbl -> get_subtitle(This,spu)
-#define IVLCVideo_put_subtitle(This,spu) \
+#define IVLCVideo_put_subtitle(This,spu) \
(This)->lpVtbl -> put_subtitle(This,spu)
-#define IVLCVideo_get_crop(This,geometry) \
+#define IVLCVideo_get_crop(This,geometry) \
(This)->lpVtbl -> get_crop(This,geometry)
-#define IVLCVideo_put_crop(This,geometry) \
+#define IVLCVideo_put_crop(This,geometry) \
(This)->lpVtbl -> put_crop(This,geometry)
-#define IVLCVideo_toggleFullscreen(This) \
+#define IVLCVideo_toggleFullscreen(This) \
(This)->lpVtbl -> toggleFullscreen(This)
-#define IVLCVideo_takeSnapshot(This,picture) \
+#define IVLCVideo_takeSnapshot(This,picture) \
(This)->lpVtbl -> takeSnapshot(This,picture)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_fullscreen_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_fullscreen_Proxy(
IVLCVideo * This,
/* [retval][out] */ VARIANT_BOOL *fullscreen);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_fullscreen_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_fullscreen_Proxy(
IVLCVideo * This,
/* [in] */ VARIANT_BOOL fullscreen);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_width_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_width_Proxy(
IVLCVideo * This,
/* [retval][out] */ long *width);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_height_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_height_Proxy(
IVLCVideo * This,
/* [retval][out] */ long *height);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_aspectRatio_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_aspectRatio_Proxy(
IVLCVideo * This,
/* [retval][out] */ BSTR *aspect);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_aspectRatio_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_aspectRatio_Proxy(
IVLCVideo * This,
/* [in] */ BSTR aspect);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_subtitle_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_subtitle_Proxy(
IVLCVideo * This,
/* [retval][out] */ long *spu);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_subtitle_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_subtitle_Proxy(
IVLCVideo * This,
/* [in] */ long spu);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_crop_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCVideo_get_crop_Proxy(
IVLCVideo * This,
/* [retval][out] */ BSTR *geometry);
DWORD *_pdwStubPhase);
-/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_crop_Proxy(
+/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IVLCVideo_put_crop_Proxy(
IVLCVideo * This,
/* [in] */ BSTR geometry);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCVideo_toggleFullscreen_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCVideo_toggleFullscreen_Proxy(
IVLCVideo * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCVideo_takeSnapshot_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCVideo_takeSnapshot_Proxy(
IVLCVideo * This,
/* [retval][out] */ IPictureDisp **picture);
-#endif /* __IVLCVideo_INTERFACE_DEFINED__ */
+#endif /* __IVLCVideo_INTERFACE_DEFINED__ */
#ifndef __IVLCControl2_INTERFACE_DEFINED__
#define __IVLCControl2_INTERFACE_DEFINED__
/* interface IVLCControl2 */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCControl2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("2D719729-5333-406C-BF12-8DE787FD65E3")
IVLCControl2 : public IDispatch
{
public:
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoLoop(
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoLoop(
/* [retval][out] */ VARIANT_BOOL *autoloop) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoLoop(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoLoop(
/* [in] */ VARIANT_BOOL autoloop) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoPlay(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoPlay(
/* [retval][out] */ VARIANT_BOOL *autoplay) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoPlay(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoPlay(
/* [in] */ VARIANT_BOOL autoplay) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BaseURL(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BaseURL(
/* [retval][out] */ BSTR *url) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BaseURL(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BaseURL(
/* [in] */ BSTR url) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_StartTime(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_StartTime(
/* [retval][out] */ long *seconds) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_StartTime(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_StartTime(
/* [in] */ long seconds) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MRL(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MRL(
/* [retval][out] */ BSTR *mrl) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_MRL(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_MRL(
/* [in] */ BSTR mrl) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_VersionInfo(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_VersionInfo(
/* [retval][out] */ BSTR *version) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Visible(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Visible(
/* [retval][out] */ VARIANT_BOOL *visible) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Visible(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Visible(
/* [in] */ VARIANT_BOOL visible) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Volume(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Volume(
/* [retval][out] */ long *volume) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Volume(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Volume(
/* [in] */ long volume) = 0;
-
- virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BackColor(
+
+ virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BackColor(
/* [retval][out] */ OLE_COLOR *backcolor) = 0;
-
- virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BackColor(
+
+ virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BackColor(
/* [in] */ OLE_COLOR backcolor) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_audio(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_audio(
/* [retval][out] */ IVLCAudio **obj) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_input(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_input(
/* [retval][out] */ IVLCInput **obj) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_log(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_log(
/* [retval][out] */ IVLCLog **obj) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_playlist(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_playlist(
/* [retval][out] */ IVLCPlaylist **obj) = 0;
-
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_video(
+
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_video(
/* [retval][out] */ IVLCVideo **obj) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCControl2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCControl2 * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCControl2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCControl2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCControl2 * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCControl2 * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCControl2 * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCControl2 * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoLoop )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoLoop )(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *autoloop);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoLoop )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoLoop )(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL autoloop);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoPlay )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoPlay )(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *autoplay);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoPlay )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoPlay )(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL autoplay);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BaseURL )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BaseURL )(
IVLCControl2 * This,
/* [retval][out] */ BSTR *url);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BaseURL )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BaseURL )(
IVLCControl2 * This,
/* [in] */ BSTR url);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartTime )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartTime )(
IVLCControl2 * This,
/* [retval][out] */ long *seconds);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartTime )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartTime )(
IVLCControl2 * This,
/* [in] */ long seconds);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MRL )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MRL )(
IVLCControl2 * This,
/* [retval][out] */ BSTR *mrl);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MRL )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MRL )(
IVLCControl2 * This,
/* [in] */ BSTR mrl);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VersionInfo )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VersionInfo )(
IVLCControl2 * This,
/* [retval][out] */ BSTR *version);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Visible )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Visible )(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *visible);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Visible )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Visible )(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL visible);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Volume )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Volume )(
IVLCControl2 * This,
/* [retval][out] */ long *volume);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Volume )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Volume )(
IVLCControl2 * This,
/* [in] */ long volume);
-
- /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BackColor )(
+
+ /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BackColor )(
IVLCControl2 * This,
/* [retval][out] */ OLE_COLOR *backcolor);
-
- /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BackColor )(
+
+ /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BackColor )(
IVLCControl2 * This,
/* [in] */ OLE_COLOR backcolor);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_audio )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_audio )(
IVLCControl2 * This,
/* [retval][out] */ IVLCAudio **obj);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_input )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_input )(
IVLCControl2 * This,
/* [retval][out] */ IVLCInput **obj);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_log )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_log )(
IVLCControl2 * This,
/* [retval][out] */ IVLCLog **obj);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_playlist )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_playlist )(
IVLCControl2 * This,
/* [retval][out] */ IVLCPlaylist **obj);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_video )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_video )(
IVLCControl2 * This,
/* [retval][out] */ IVLCVideo **obj);
-
+
END_INTERFACE
} IVLCControl2Vtbl;
CONST_VTBL struct IVLCControl2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCControl2_QueryInterface(This,riid,ppvObject) \
+#define IVLCControl2_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCControl2_AddRef(This) \
+#define IVLCControl2_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCControl2_Release(This) \
+#define IVLCControl2_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCControl2_GetTypeInfoCount(This,pctinfo) \
+#define IVLCControl2_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCControl2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCControl2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCControl2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCControl2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCControl2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCControl2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCControl2_get_AutoLoop(This,autoloop) \
+#define IVLCControl2_get_AutoLoop(This,autoloop) \
(This)->lpVtbl -> get_AutoLoop(This,autoloop)
-#define IVLCControl2_put_AutoLoop(This,autoloop) \
+#define IVLCControl2_put_AutoLoop(This,autoloop) \
(This)->lpVtbl -> put_AutoLoop(This,autoloop)
-#define IVLCControl2_get_AutoPlay(This,autoplay) \
+#define IVLCControl2_get_AutoPlay(This,autoplay) \
(This)->lpVtbl -> get_AutoPlay(This,autoplay)
-#define IVLCControl2_put_AutoPlay(This,autoplay) \
+#define IVLCControl2_put_AutoPlay(This,autoplay) \
(This)->lpVtbl -> put_AutoPlay(This,autoplay)
-#define IVLCControl2_get_BaseURL(This,url) \
+#define IVLCControl2_get_BaseURL(This,url) \
(This)->lpVtbl -> get_BaseURL(This,url)
-#define IVLCControl2_put_BaseURL(This,url) \
+#define IVLCControl2_put_BaseURL(This,url) \
(This)->lpVtbl -> put_BaseURL(This,url)
-#define IVLCControl2_get_StartTime(This,seconds) \
+#define IVLCControl2_get_StartTime(This,seconds) \
(This)->lpVtbl -> get_StartTime(This,seconds)
-#define IVLCControl2_put_StartTime(This,seconds) \
+#define IVLCControl2_put_StartTime(This,seconds) \
(This)->lpVtbl -> put_StartTime(This,seconds)
-#define IVLCControl2_get_MRL(This,mrl) \
+#define IVLCControl2_get_MRL(This,mrl) \
(This)->lpVtbl -> get_MRL(This,mrl)
-#define IVLCControl2_put_MRL(This,mrl) \
+#define IVLCControl2_put_MRL(This,mrl) \
(This)->lpVtbl -> put_MRL(This,mrl)
-#define IVLCControl2_get_VersionInfo(This,version) \
+#define IVLCControl2_get_VersionInfo(This,version) \
(This)->lpVtbl -> get_VersionInfo(This,version)
-#define IVLCControl2_get_Visible(This,visible) \
+#define IVLCControl2_get_Visible(This,visible) \
(This)->lpVtbl -> get_Visible(This,visible)
-#define IVLCControl2_put_Visible(This,visible) \
+#define IVLCControl2_put_Visible(This,visible) \
(This)->lpVtbl -> put_Visible(This,visible)
-#define IVLCControl2_get_Volume(This,volume) \
+#define IVLCControl2_get_Volume(This,volume) \
(This)->lpVtbl -> get_Volume(This,volume)
-#define IVLCControl2_put_Volume(This,volume) \
+#define IVLCControl2_put_Volume(This,volume) \
(This)->lpVtbl -> put_Volume(This,volume)
-#define IVLCControl2_get_BackColor(This,backcolor) \
+#define IVLCControl2_get_BackColor(This,backcolor) \
(This)->lpVtbl -> get_BackColor(This,backcolor)
-#define IVLCControl2_put_BackColor(This,backcolor) \
+#define IVLCControl2_put_BackColor(This,backcolor) \
(This)->lpVtbl -> put_BackColor(This,backcolor)
-#define IVLCControl2_get_audio(This,obj) \
+#define IVLCControl2_get_audio(This,obj) \
(This)->lpVtbl -> get_audio(This,obj)
-#define IVLCControl2_get_input(This,obj) \
+#define IVLCControl2_get_input(This,obj) \
(This)->lpVtbl -> get_input(This,obj)
-#define IVLCControl2_get_log(This,obj) \
+#define IVLCControl2_get_log(This,obj) \
(This)->lpVtbl -> get_log(This,obj)
-#define IVLCControl2_get_playlist(This,obj) \
+#define IVLCControl2_get_playlist(This,obj) \
(This)->lpVtbl -> get_playlist(This,obj)
-#define IVLCControl2_get_video(This,obj) \
+#define IVLCControl2_get_video(This,obj) \
(This)->lpVtbl -> get_video(This,obj)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_AutoLoop_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_AutoLoop_Proxy(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *autoloop);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_AutoLoop_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_AutoLoop_Proxy(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL autoloop);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_AutoPlay_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_AutoPlay_Proxy(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *autoplay);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_AutoPlay_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_AutoPlay_Proxy(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL autoplay);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_BaseURL_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_BaseURL_Proxy(
IVLCControl2 * This,
/* [retval][out] */ BSTR *url);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_BaseURL_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_BaseURL_Proxy(
IVLCControl2 * This,
/* [in] */ BSTR url);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_StartTime_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_StartTime_Proxy(
IVLCControl2 * This,
/* [retval][out] */ long *seconds);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_StartTime_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_StartTime_Proxy(
IVLCControl2 * This,
/* [in] */ long seconds);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_MRL_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_MRL_Proxy(
IVLCControl2 * This,
/* [retval][out] */ BSTR *mrl);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_MRL_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_MRL_Proxy(
IVLCControl2 * This,
/* [in] */ BSTR mrl);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_VersionInfo_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_VersionInfo_Proxy(
IVLCControl2 * This,
/* [retval][out] */ BSTR *version);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_Visible_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_Visible_Proxy(
IVLCControl2 * This,
/* [retval][out] */ VARIANT_BOOL *visible);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_Visible_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_Visible_Proxy(
IVLCControl2 * This,
/* [in] */ VARIANT_BOOL visible);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_Volume_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_Volume_Proxy(
IVLCControl2 * This,
/* [retval][out] */ long *volume);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_Volume_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_Volume_Proxy(
IVLCControl2 * This,
/* [in] */ long volume);
DWORD *_pdwStubPhase);
-/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_BackColor_Proxy(
+/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_BackColor_Proxy(
IVLCControl2 * This,
/* [retval][out] */ OLE_COLOR *backcolor);
DWORD *_pdwStubPhase);
-/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_BackColor_Proxy(
+/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IVLCControl2_put_BackColor_Proxy(
IVLCControl2 * This,
/* [in] */ OLE_COLOR backcolor);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_audio_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_audio_Proxy(
IVLCControl2 * This,
/* [retval][out] */ IVLCAudio **obj);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_input_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_input_Proxy(
IVLCControl2 * This,
/* [retval][out] */ IVLCInput **obj);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_log_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_log_Proxy(
IVLCControl2 * This,
/* [retval][out] */ IVLCLog **obj);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_playlist_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_playlist_Proxy(
IVLCControl2 * This,
/* [retval][out] */ IVLCPlaylist **obj);
DWORD *_pdwStubPhase);
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_video_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCControl2_get_video_Proxy(
IVLCControl2 * This,
/* [retval][out] */ IVLCVideo **obj);
-#endif /* __IVLCControl2_INTERFACE_DEFINED__ */
+#endif /* __IVLCControl2_INTERFACE_DEFINED__ */
#ifndef __DVLCEvents_DISPINTERFACE_DEFINED__
#define __DVLCEvents_DISPINTERFACE_DEFINED__
/* dispinterface DVLCEvents */
-/* [helpstring][uuid] */
+/* [helpstring][uuid] */
EXTERN_C const IID DIID_DVLCEvents;
DVLCEvents : public IDispatch
{
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct DVLCEventsVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
DVLCEvents * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
DVLCEvents * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
DVLCEvents * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
DVLCEvents * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
DVLCEvents * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
DVLCEvents * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
DVLCEvents * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
+
END_INTERFACE
} DVLCEventsVtbl;
CONST_VTBL struct DVLCEventsVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define DVLCEvents_QueryInterface(This,riid,ppvObject) \
+#define DVLCEvents_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define DVLCEvents_AddRef(This) \
+#define DVLCEvents_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define DVLCEvents_Release(This) \
+#define DVLCEvents_Release(This) \
(This)->lpVtbl -> Release(This)
-#define DVLCEvents_GetTypeInfoCount(This,pctinfo) \
+#define DVLCEvents_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define DVLCEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define DVLCEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define DVLCEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define DVLCEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define DVLCEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define DVLCEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-#endif /* __DVLCEvents_DISPINTERFACE_DEFINED__ */
+#endif /* __DVLCEvents_DISPINTERFACE_DEFINED__ */
#ifndef __IVLCPlaylistItems_INTERFACE_DEFINED__
#define __IVLCPlaylistItems_INTERFACE_DEFINED__
/* interface IVLCPlaylistItems */
-/* [object][oleautomation][dual][helpstring][uuid] */
+/* [object][oleautomation][dual][helpstring][uuid] */
EXTERN_C const IID IID_IVLCPlaylistItems;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FD37FE32-82BC-4A25-B056-315F4DBB194D")
IVLCPlaylistItems : public IDispatch
{
public:
- virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count(
+ virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count(
/* [retval][out] */ long *count) = 0;
-
+
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE clear( void) = 0;
-
- virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE remove(
+
+ virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE remove(
/* [in] */ long itemId) = 0;
-
+
};
-
-#else /* C style interface */
+
+#else /* C style interface */
typedef struct IVLCPlaylistItemsVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IVLCPlaylistItems * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
IVLCPlaylistItems * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
IVLCPlaylistItems * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IVLCPlaylistItems * This,
/* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IVLCPlaylistItems * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IVLCPlaylistItems * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IVLCPlaylistItems * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
-
- /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_count )(
+
+ /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_count )(
IVLCPlaylistItems * This,
/* [retval][out] */ long *count);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *clear )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *clear )(
IVLCPlaylistItems * This);
-
- /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *remove )(
+
+ /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *remove )(
IVLCPlaylistItems * This,
/* [in] */ long itemId);
-
+
END_INTERFACE
} IVLCPlaylistItemsVtbl;
CONST_VTBL struct IVLCPlaylistItemsVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
-#define IVLCPlaylistItems_QueryInterface(This,riid,ppvObject) \
+#define IVLCPlaylistItems_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IVLCPlaylistItems_AddRef(This) \
+#define IVLCPlaylistItems_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
-#define IVLCPlaylistItems_Release(This) \
+#define IVLCPlaylistItems_Release(This) \
(This)->lpVtbl -> Release(This)
-#define IVLCPlaylistItems_GetTypeInfoCount(This,pctinfo) \
+#define IVLCPlaylistItems_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
-#define IVLCPlaylistItems_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+#define IVLCPlaylistItems_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IVLCPlaylistItems_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+#define IVLCPlaylistItems_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IVLCPlaylistItems_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+#define IVLCPlaylistItems_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IVLCPlaylistItems_get_count(This,count) \
+#define IVLCPlaylistItems_get_count(This,count) \
(This)->lpVtbl -> get_count(This,count)
-#define IVLCPlaylistItems_clear(This) \
+#define IVLCPlaylistItems_clear(This) \
(This)->lpVtbl -> clear(This)
-#define IVLCPlaylistItems_remove(This,itemId) \
+#define IVLCPlaylistItems_remove(This,itemId) \
(This)->lpVtbl -> remove(This,itemId)
#endif /* COBJMACROS */
-#endif /* C style interface */
+#endif /* C style interface */
-/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_get_count_Proxy(
+/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_get_count_Proxy(
IVLCPlaylistItems * This,
/* [retval][out] */ long *count);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_clear_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_clear_Proxy(
IVLCPlaylistItems * This);
DWORD *_pdwStubPhase);
-/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_remove_Proxy(
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_remove_Proxy(
IVLCPlaylistItems * This,
/* [in] */ long itemId);
-#endif /* __IVLCPlaylistItems_INTERFACE_DEFINED__ */
+#endif /* __IVLCPlaylistItems_INTERFACE_DEFINED__ */
EXTERN_C const CLSID CLSID_VLCPlugin;
{
if( NULL == ppv )
return E_POINTER;
- if( (IID_IUnknown == riid)
+ if( (IID_IUnknown == riid)
|| (IID_IConnectionPoint == riid) )
{
AddRef();
{
if( NULL == ppv)
return E_POINTER;
- if( (IID_IUnknown == riid)
+ if( (IID_IUnknown == riid)
|| (IID_IConnectionPointContainer == riid) )
{
AddRef();
if( NULL == hicTargetDev )
return E_FAIL;
- HDC hdcMeta = CreateMetaFile(NULL);
+ HDC hdcMeta = CreateMetaFile(NULL);
if( NULL != hdcMeta )
{
LPMETAFILEPICT pMetaFilePict = (LPMETAFILEPICT)CoTaskMemAlloc(sizeof(METAFILEPICT));
SIZEL size = _p_instance->getExtent();
- HDC hdcMeta = CreateEnhMetaFile(hicTargetDev, NULL, NULL, NULL);
+ HDC hdcMeta = CreateEnhMetaFile(hicTargetDev, NULL, NULL, NULL);
if( NULL != hdcMeta )
{
RECTL wBounds = { 0L, 0L, size.cx, size.cy };
default:
return DV_E_FORMATETC;
}
-
+
if( pFormatEtc->dwAspect != formatEtc->dwAspect )
return DV_E_DVASPECT;
{
if( NULL == ppv)
return E_POINTER;
- if( (IID_IUnknown == riid)
+ if( (IID_IUnknown == riid)
|| (IID_IDataObject == riid) ) {
AddRef();
*ppv = reinterpret_cast<LPVOID>(this);
// remove component categories we supports
ICatRegister *pcr;
- if( SUCCEEDED(CoCreateInstance(CLSID_StdComponentCategoriesMgr,
+ if( SUCCEEDED(CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr)) ) {
CATID implCategories[] = {
CATID_Control,
// indicate which component categories we support
ICatRegister *pcr;
- if( SUCCEEDED(CoCreateInstance(CLSID_StdComponentCategoriesMgr,
+ if( SUCCEEDED(CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr)) ) {
CATID implCategories[] = {
CATID_Control,
#include "axvlc_idl.h"
#if 0
-const GUID IID_IObjectSafety =
- {0xCB5BDC81,0x93C1,0x11cf,{0x8F,0x20,0x00,0x80,0x5F,0x2C,0xD0,0x64}};
+const GUID IID_IObjectSafety =
+ {0xCB5BDC81,0x93C1,0x11cf,{0x8F,0x20,0x00,0x80,0x5F,0x2C,0xD0,0x64}};
#endif
using namespace std;
-STDMETHODIMP VLCObjectSafety::GetInterfaceSafetyOptions(
+STDMETHODIMP VLCObjectSafety::GetInterfaceSafetyOptions(
REFIID riid,
DWORD *pdwSupportedOptions,
DWORD *pdwEnabledOptions
return E_NOINTERFACE;
};
-STDMETHODIMP VLCObjectSafety::SetInterfaceSafetyOptions(
+STDMETHODIMP VLCObjectSafety::SetInterfaceSafetyOptions(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
if( NULL == ppv)
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IObjectSafety == riid) )
+ || (IID_IObjectSafety == riid) )
{
AddRef();
*ppv = reinterpret_cast<LPVOID>(this);
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IOleControl == riid) )
+ || (IID_IOleControl == riid) )
{
AddRef();
*ppv = reinterpret_cast<LPVOID>(this);
{
if( NULL == ppv )
return E_POINTER;
- if( (IID_IUnknown == riid)
- || (IID_IOleWindow == riid)
+ if( (IID_IUnknown == riid)
+ || (IID_IOleWindow == riid)
|| (IID_IOleInPlaceActiveObject == riid) )
{
AddRef();
_p_instance->onInPlaceDeactivate();
LPOLEOBJECT p_oleObject;
- if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
+ if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
{
LPOLECLIENTSITE p_clientSite;
if( SUCCEEDED(p_oleObject->GetClientSite(&p_clientSite)) )
_p_instance->setFocus(FALSE);
LPOLEOBJECT p_oleObject;
- if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
+ if( SUCCEEDED(QueryInterface(IID_IOleObject, (void**)&p_oleObject)) )
{
LPOLECLIENTSITE p_clientSite;
if( SUCCEEDED(p_oleObject->GetClientSite(&p_clientSite)) )
if( ! _p_instance->isInPlaceActive() )
{
if( ((NULL == p_inPlaceSite) || (S_OK == p_inPlaceSite->CanInPlaceActivate()))
- && SUCCEEDED(_p_instance->onActivateInPlace(lpMsg, hwndParent, lprcPosRect, lprcClipRect)) )
+ && SUCCEEDED(_p_instance->onActivateInPlace(lpMsg, hwndParent, lprcPosRect, lprcClipRect)) )
{
if( p_inPlaceSiteEx )
{
p_inPlaceUIWindow->Release();
}
return OLEOBJ_S_CANNOT_DOVERB_NOW;
- }
+ }
}
if( p_inPlaceSite )
{
if( (NULL == p_inPlaceSiteEx) || (S_OK == p_inPlaceSiteEx->RequestUIActivate()) )
{
- if( p_inPlaceSite)
+ if( p_inPlaceSite)
{
p_inPlaceSite->OnUIActivate();
return E_POINTER;
if( NULL != _p_clientsite )
- _p_clientsite->AddRef();
+ _p_clientsite->AddRef();
*ppClientSite = _p_clientsite;
return S_OK;
if( NULL == pClsid )
return E_POINTER;
- *pClsid = _p_instance->getClassID();
+ *pClsid = _p_instance->getClassID();
return S_OK;
};
if( SUCCEEDED(p_inPlaceSite->GetWindow(&hwnd)) )
{
- // use HIMETRIC to pixel transform
+ // use HIMETRIC to pixel transform
RECT posRect = _p_instance->getPosRect();
HDC hDC = GetDC(hwnd);
posRect.right = (pSizel->cx*GetDeviceCaps(hDC, LOGPIXELSX)/2540L)+posRect.left;
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IPersist == riid)
+ || (IID_IPersist == riid)
|| (IID_IPersistPropertyBag == riid) )
{
AddRef();
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IPersist == riid)
+ || (IID_IPersist == riid)
|| (IID_IPersistStorage == riid) )
{
AddRef();
using namespace std;
-class AxVLCVariant
+class AxVLCVariant
{
public:
VARIANTARG _v;
};
-class AxVLCWSTR
+class AxVLCWSTR
{
public:
{
if( NULL == ppv )
return E_POINTER;
- if( (IID_IUnknown == riid)
+ if( (IID_IUnknown == riid)
|| (IID_IPropertyBag == riid) )
{
AddRef();
else
return E_INVALIDARG;
};
-
+
STDMETHODIMP Write(LPCOLESTR pszPropName, VARIANT *pVar)
{
if( (NULL == pszPropName) || (NULL == pVar) )
if( FAILED(result) )
return result;
if( len > 0 )
- {
+ {
result = pStm->Write(V_BSTR(propValue), len*sizeof(OLECHAR), NULL);
if( FAILED(result) )
return result;
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IPersist == riid)
+ || (IID_IPersist == riid)
|| (IID_IPersistStreamInit == riid) )
{
AddRef();
{
if( fLock )
AddRef();
- else
+ else
Release();
return S_OK;
{
/*
** try to retreive the base URL using the client site moniker, which for Internet Explorer
- ** is the URL of the page the plugin is embedded into.
+ ** is the URL of the page the plugin is embedded into.
*/
LPOLECLIENTSITE pClientSite;
if( SUCCEEDED(vlcOleObject->GetClientSite(&pClientSite)) && (NULL != pClientSite) )
libvlc_instance_t* p_libvlc = _p_libvlc;
IVLCLog *p_log;
- if( SUCCEEDED(vlcControl2->get_log(&p_log)) )
+ if( SUCCEEDED(vlcControl2->get_log(&p_log)) )
{
// make sure the log is disabled
p_log->put_verbosity(-1);
/*
** record keeping of control geometry within container
- */
+ */
_posRect = *lprcPosRect;
/*
pict->Render(hdcDraw, dstX, dstY, picSize.cx, picSize.cy,
0L, picHeight, picWidth, -picHeight, &wBounds);
}
- else
+ else
pict->Render(hdcDraw, dstX, dstY, picSize.cx, picSize.cy,
0L, picHeight, picWidth, -picHeight, NULL);
void VLCPlugin::firePropChangedEvent(DISPID dispid)
{
- vlcConnectionPointContainer->firePropChangedEvent(dispid);
+ vlcConnectionPointContainer->firePropChangedEvent(dispid);
};
void VLCPlugin::fireOnPlayEvent(void)
{
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
- vlcConnectionPointContainer->fireEvent(DISPID_PlayEvent, &dispparamsNoArgs);
+ vlcConnectionPointContainer->fireEvent(DISPID_PlayEvent, &dispparamsNoArgs);
};
void VLCPlugin::fireOnPauseEvent(void)
{
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
- vlcConnectionPointContainer->fireEvent(DISPID_PauseEvent, &dispparamsNoArgs);
+ vlcConnectionPointContainer->fireEvent(DISPID_PauseEvent, &dispparamsNoArgs);
};
void VLCPlugin::fireOnStopEvent(void)
{
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
- vlcConnectionPointContainer->fireEvent(DISPID_StopEvent, &dispparamsNoArgs);
+ vlcConnectionPointContainer->fireEvent(DISPID_StopEvent, &dispparamsNoArgs);
};
#include <vlc/libvlc.h>
-extern const GUID CLSID_VLCPlugin;
-extern const GUID CLSID_VLCPlugin2;
-extern const GUID LIBID_AXVLC;
-extern const GUID DIID_DVLCEvents;
+extern const GUID CLSID_VLCPlugin;
+extern const GUID CLSID_VLCPlugin2;
+extern const GUID LIBID_AXVLC;
+extern const GUID DIID_DVLCEvents;
class VLCPluginClass : public IClassFactory
{
};
inline BOOL getAutoPlay(void) { return _b_autoplay; };
- inline void setAutoLoop(BOOL autoloop)
+ inline void setAutoLoop(BOOL autoloop)
{
_b_autoloop = autoloop;
setDirty(TRUE);
};
const SIZEL& getExtent(void) { return _extent; };
- // transient properties
+ // transient properties
inline void setMute(BOOL mute) { _b_mute = mute; };
inline void setPicture(LPPICTURE pict)
void setErrorInfo(REFIID riid, const char *description);
// control geometry within container
- RECT getPosRect(void) { return _posRect; };
+ RECT getPosRect(void) { return _posRect; };
inline HWND getInPlaceWindow(void) const { return _inplacewnd; };
BOOL isInPlaceActive(void);
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IProvideClassInfo == riid)
+ || (IID_IProvideClassInfo == riid)
|| (IID_IProvideClassInfo2 == riid) )
{
AddRef();
return href;
}
- /* find last path component and replace it */
+ /* find last path component and replace it */
while( L'/' != *pathend )
--pathend;
url = ++p;
continue;
}
- if( L'.' != *p )
+ if( L'.' != *p )
break;
++p;
if( L'\0' == *p )
}
else
{
- if( L'/' != *p )
+ if( L'/' != *p )
break;
/* relative url starts with '../' */
++p;
{
if( NULL == ppv )
return E_POINTER;
- if( (IID_IUnknown == riid)
+ if( (IID_IUnknown == riid)
|| (EnumeratorIID == riid) )
{
AddRef();
return S_OK;
};
-STDMETHODIMP VLCViewObject::GetColorSet(DWORD dwAspect, LONG lindex,
+STDMETHODIMP VLCViewObject::GetColorSet(DWORD dwAspect, LONG lindex,
PVOID pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LPLOGPALETTE *ppColorSet)
{
return S_FALSE;
if( NULL == ppv )
return E_POINTER;
if( (IID_IUnknown == riid)
- || (IID_IViewObject == riid)
+ || (IID_IViewObject == riid)
|| (IID_IViewObject2 == riid) )
{
AddRef();
return E_NOTIMPL;
};
-STDMETHODIMP VLCControl::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
+STDMETHODIMP VLCControl::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
UINT cNames, LCID lcid, DISPID* rgDispID)
{
if( SUCCEEDED(getTypeInfo()) )
void VLCControl::FreeTargetOptions(char **cOptions, int cOptionCount)
{
- // clean up
+ // clean up
if( NULL != cOptions )
{
for( int pos=0; pos<cOptionCount; ++pos )
if( nOptions == capacity )
{
capacity += 16;
- char **moreOptions = (char **)CoTaskMemRealloc(options, capacity*sizeof(char*));
+ char **moreOptions = (char **)CoTaskMemRealloc(options, capacity*sizeof(char*));
if( ! moreOptions )
{
/* failed to allocate more memory */
hr = SafeArrayGetElement(array, &pos, &option);
if( SUCCEEDED(hr) )
{
- if( VT_BSTR == V_VT(&option) )
+ if( VT_BSTR == V_VT(&option) )
{
char *cOption = CStrFromBSTR(codePage, V_BSTR(&option));
(*cOptions)[pos-lBound] = cOption;
}
}
}
- else
+ else
{
// unsupported type
return E_INVALIDARG;
if( NULL != versionStr )
{
*version = BSTRFromCStr(CP_UTF8, versionStr);
-
+
return NULL == *version ? E_OUTOFMEMORY : NOERROR;
}
*version = NULL;
// IVLCMessageIterator methods
STDMETHODIMP get_hasNext(VARIANT_BOOL*);
STDMETHODIMP next(IVLCMessage**);
-
+
protected:
HRESULT loadTypeInfo();
libvlc_toggle_fullscreen( LIBVLC_INPUT->p_md, &ex);
LIBVLC_EXCEPT;
Py_INCREF( Py_None );
- return Py_None;
+ return Py_None;
}
static PyObject *
Py_ssize_t i_size;
Py_ssize_t i_index;
char** ppsz_args = *pppsz_args;
-
+
ppsz_args = NULL;
Py_INCREF( py_options );
return NULL;
if( py_options )
- {
+ {
i_size = pyoptions_to_args( py_options, &ppsz_args );
}
}
if( py_options )
- {
+ {
i_size = pyoptions_to_args( py_options, &ppsz_args );
}
vlcInstance_vlm_add_broadcast( PyObject *self, PyObject *args, PyObject *kwds )
{
libvlc_exception_t ex;
- static char *kwlist[] = { "name", "input", "output",
+ static char *kwlist[] = { "name", "input", "output",
"options", "enable", "loop", NULL};
char* psz_name = NULL;
char* psz_input = NULL;
int i_size = 0;
char** ppsz_args = NULL;
- if( !PyArg_ParseTupleAndKeywords( args, kwds, "sss|Oii", kwlist,
+ if( !PyArg_ParseTupleAndKeywords( args, kwds, "sss|Oii", kwlist,
&psz_name,
- &psz_input, &psz_output,
- &py_options, &i_enable, &i_loop ) )
+ &psz_input, &psz_output,
+ &py_options, &i_enable, &i_loop ) )
return NULL;
-
+
if( py_options )
{
i_size = pyoptions_to_args( py_options, &ppsz_args );
}
-
+
LIBVLC_TRY;
- libvlc_vlm_add_broadcast( LIBVLC_INSTANCE->p_instance,
+ libvlc_vlm_add_broadcast( LIBVLC_INSTANCE->p_instance,
psz_name, psz_input, psz_output,
i_size, ppsz_args, i_enable, i_loop, &ex);
free_args( i_size, ppsz_args );
libvlc_exception_t ex;
char* psz_name;
int i_enabled;
-
+
if( !PyArg_ParseTuple( args, "si", &psz_name, &i_enabled ) )
return NULL;
libvlc_exception_t ex;
char* psz_name;
char* psz_output;
-
+
if( !PyArg_ParseTuple( args, "ss", &psz_name, &psz_output ) )
return NULL;
libvlc_exception_t ex;
char* psz_name;
char* psz_input;
-
+
if( !PyArg_ParseTuple( args, "ss", &psz_name, &psz_input ) )
return NULL;
libvlc_exception_t ex;
char* psz_name;
int i_loop;
-
+
if( !PyArg_ParseTuple( args, "si", &psz_name, &i_loop ) )
return NULL;
vlcInstance_vlm_change_media( PyObject *self, PyObject *args, PyObject *kwds )
{
libvlc_exception_t ex;
- static char *kwlist[] = { "name", "input", "output",
+ static char *kwlist[] = { "name", "input", "output",
"options", "enable", "loop", NULL};
char* psz_name = NULL;
char* psz_input = NULL;
int i_size = 0;
char** ppsz_args = NULL;
- if( !PyArg_ParseTupleAndKeywords( args, kwds, "sss|Oii", kwlist,
+ if( !PyArg_ParseTupleAndKeywords( args, kwds, "sss|Oii", kwlist,
&psz_name,
- &psz_input, &psz_output,
- &py_options, &i_enable, &i_loop ) )
+ &psz_input, &psz_output,
+ &py_options, &i_enable, &i_loop ) )
return NULL;
-
+
if( py_options )
{
i_size = pyoptions_to_args( py_options, &ppsz_args );
}
-
+
LIBVLC_TRY;
- libvlc_vlm_change_media( LIBVLC_INSTANCE->p_instance,
+ libvlc_vlm_change_media( LIBVLC_INSTANCE->p_instance,
psz_name, psz_input, psz_output,
i_size, ppsz_args, i_enable, i_loop, &ex);
free_args( i_size, ppsz_args );
{
libvlc_exception_t ex;
char* psz_name;
-
+
if( !PyArg_ParseTuple( args, "s", &psz_name ) )
return NULL;
{
libvlc_exception_t ex;
char* psz_name;
-
+
if( !PyArg_ParseTuple( args, "s", &psz_name ) )
return NULL;
libvlc_exception_t ex;
char* psz_name;
float f_percentage;
-
+
if( !PyArg_ParseTuple( args, "sf", &psz_name, &f_percentage ) )
return NULL;
char** ppsz_args = NULL;
libvlc_instance_t* p_instance = NULL;
Py_ssize_t i_size = 0;
-
+
self = PyObject_New( MediaControl, &MediaControl_Type );
if( PyArg_ParseTuple( args, "O", &py_param ) )
{
PyPosition *self;
static char *kwlist[] = { "value", "origin", "key", NULL};
-
+
self = PyObject_New( PyPosition, &PyPosition_Type );
self->value=0;
&(self->origin),
&(self->key) ) )
{
- return NULL;
+ return NULL;
}
- if( self->key != mediacontrol_MediaTime
- && self->key != mediacontrol_ByteCount
- && self->key != mediacontrol_SampleCount )
+ if( self->key != mediacontrol_MediaTime
+ && self->key != mediacontrol_ByteCount
+ && self->key != mediacontrol_SampleCount )
{
PyErr_SetString ( MediaControl_InternalException, "Invalid key value" );
return NULL;
}
- if( self->origin != mediacontrol_AbsolutePosition
- && self->origin != mediacontrol_RelativePosition
- && self->origin != mediacontrol_ModuloPosition )
+ if( self->origin != mediacontrol_AbsolutePosition
+ && self->origin != mediacontrol_RelativePosition
+ && self->origin != mediacontrol_ModuloPosition )
{
PyErr_SetString ( MediaControl_InternalException, "Invalid origin value" );
return NULL;
}
Py_INCREF( self );
- return ( PyObject * )self;
+ return ( PyObject * )self;
}
mediacontrol_PositionKey
* values by ULL, lest they be truncated by the compiler)
*/
-typedef union {
- int64_t q; /* Quadword (64-bit) value */
- uint64_t uq; /* Unsigned Quadword */
- int32_t d[2]; /* 2 Doubleword (32-bit) values */
- uint32_t ud[2]; /* 2 Unsigned Doubleword */
- int16_t w[4]; /* 4 Word (16-bit) values */
- uint16_t uw[4]; /* 4 Unsigned Word */
- int8_t b[8]; /* 8 Byte (8-bit) values */
- uint8_t ub[8]; /* 8 Unsigned Byte */
- float s[2]; /* Single-precision (32-bit) value */
-} ATTR_ALIGN(8) mmx_t; /* On an 8-byte (64-bit) boundary */
-
-
-#define mmx_i2r(op,imm,reg) \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "i" (imm) )
-
-#define mmx_m2r(op,mem,reg) \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "m" (mem))
-
-#define mmx_r2m(op,reg,mem) \
- __asm__ __volatile__ (#op " %%" #reg ", %0" \
- : "=m" (mem) \
- : /* nothing */ )
-
-#define mmx_r2r(op,regs,regd) \
- __asm__ __volatile__ (#op " %" #regs ", %" #regd)
-
-
-#define emms() __asm__ __volatile__ ("emms")
-
-#define movd_m2r(var,reg) mmx_m2r (movd, var, reg)
-#define movd_r2m(reg,var) mmx_r2m (movd, reg, var)
-#define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd)
-
-#define movq_m2r(var,reg) mmx_m2r (movq, var, reg)
-#define movq_r2m(reg,var) mmx_r2m (movq, reg, var)
-#define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd)
-
-#define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg)
-#define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd)
-#define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg)
-#define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd)
-
-#define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg)
-#define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd)
-
-#define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg)
-#define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd)
-#define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg)
-#define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd)
-#define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg)
-#define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd)
-
-#define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg)
-#define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd)
-#define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg)
-#define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd)
-
-#define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg)
-#define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd)
-#define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg)
-#define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd)
-
-#define pand_m2r(var,reg) mmx_m2r (pand, var, reg)
-#define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd)
-
-#define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg)
-#define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd)
-
-#define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg)
-#define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd)
-#define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg)
-#define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd)
-#define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg)
-#define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd)
-
-#define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg)
-#define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd)
-#define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg)
-#define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd)
-#define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg)
-#define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd)
-
-#define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg)
-#define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd)
-
-#define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg)
-#define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd)
-
-#define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg)
-#define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd)
-
-#define por_m2r(var,reg) mmx_m2r (por, var, reg)
-#define por_r2r(regs,regd) mmx_r2r (por, regs, regd)
-
-#define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg)
-#define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg)
-#define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd)
-#define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg)
-#define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg)
-#define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd)
-#define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg)
-#define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg)
-#define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd)
-
-#define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg)
-#define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg)
-#define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd)
-#define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg)
-#define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg)
-#define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd)
-
-#define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg)
-#define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg)
-#define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd)
-#define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg)
-#define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg)
-#define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd)
-#define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg)
-#define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg)
-#define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd)
-
-#define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg)
-#define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd)
-#define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg)
-#define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd)
-#define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg)
-#define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd)
-
-#define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg)
-#define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd)
-#define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg)
-#define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd)
-
-#define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg)
-#define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd)
-#define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg)
-#define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd)
-
-#define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg)
-#define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd)
-#define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg)
-#define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd)
-#define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg)
-#define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd)
-
-#define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg)
-#define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd)
-#define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg)
-#define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd)
-#define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg)
-#define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd)
-
-#define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg)
-#define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd)
+typedef union {
+ int64_t q; /* Quadword (64-bit) value */
+ uint64_t uq; /* Unsigned Quadword */
+ int32_t d[2]; /* 2 Doubleword (32-bit) values */
+ uint32_t ud[2]; /* 2 Unsigned Doubleword */
+ int16_t w[4]; /* 4 Word (16-bit) values */
+ uint16_t uw[4]; /* 4 Unsigned Word */
+ int8_t b[8]; /* 8 Byte (8-bit) values */
+ uint8_t ub[8]; /* 8 Unsigned Byte */
+ float s[2]; /* Single-precision (32-bit) value */
+} ATTR_ALIGN(8) mmx_t; /* On an 8-byte (64-bit) boundary */
+
+
+#define mmx_i2r(op,imm,reg) \
+ __asm__ __volatile__ (#op " %0, %%" #reg \
+ : /* nothing */ \
+ : "i" (imm) )
+
+#define mmx_m2r(op,mem,reg) \
+ __asm__ __volatile__ (#op " %0, %%" #reg \
+ : /* nothing */ \
+ : "m" (mem))
+
+#define mmx_r2m(op,reg,mem) \
+ __asm__ __volatile__ (#op " %%" #reg ", %0" \
+ : "=m" (mem) \
+ : /* nothing */ )
+
+#define mmx_r2r(op,regs,regd) \
+ __asm__ __volatile__ (#op " %" #regs ", %" #regd)
+
+
+#define emms() __asm__ __volatile__ ("emms")
+
+#define movd_m2r(var,reg) mmx_m2r (movd, var, reg)
+#define movd_r2m(reg,var) mmx_r2m (movd, reg, var)
+#define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd)
+
+#define movq_m2r(var,reg) mmx_m2r (movq, var, reg)
+#define movq_r2m(reg,var) mmx_r2m (movq, reg, var)
+#define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd)
+
+#define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg)
+#define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd)
+#define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg)
+#define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd)
+
+#define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg)
+#define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd)
+
+#define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg)
+#define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd)
+#define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg)
+#define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd)
+#define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg)
+#define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd)
+
+#define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg)
+#define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd)
+#define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg)
+#define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd)
+
+#define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg)
+#define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd)
+#define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg)
+#define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd)
+
+#define pand_m2r(var,reg) mmx_m2r (pand, var, reg)
+#define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd)
+
+#define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg)
+#define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd)
+
+#define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg)
+#define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd)
+#define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg)
+#define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd)
+#define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg)
+#define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd)
+
+#define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg)
+#define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd)
+#define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg)
+#define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd)
+#define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg)
+#define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd)
+
+#define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg)
+#define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd)
+
+#define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg)
+#define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd)
+
+#define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg)
+#define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd)
+
+#define por_m2r(var,reg) mmx_m2r (por, var, reg)
+#define por_r2r(regs,regd) mmx_r2r (por, regs, regd)
+
+#define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg)
+#define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg)
+#define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd)
+#define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg)
+#define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg)
+#define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd)
+#define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg)
+#define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg)
+#define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd)
+
+#define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg)
+#define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg)
+#define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd)
+#define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg)
+#define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg)
+#define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd)
+
+#define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg)
+#define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg)
+#define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd)
+#define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg)
+#define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg)
+#define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd)
+#define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg)
+#define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg)
+#define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd)
+
+#define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg)
+#define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd)
+#define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg)
+#define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd)
+#define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg)
+#define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd)
+
+#define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg)
+#define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd)
+#define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg)
+#define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd)
+
+#define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg)
+#define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd)
+#define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg)
+#define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd)
+
+#define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg)
+#define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd)
+#define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg)
+#define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd)
+#define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg)
+#define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd)
+
+#define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg)
+#define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd)
+#define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg)
+#define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd)
+#define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg)
+#define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd)
+
+#define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg)
+#define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd)
/* 3DNOW extensions */
-#define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg)
-#define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd)
+#define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg)
+#define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd)
/* AMD MMX extensions - also available in intel SSE */
: /* nothing */ \
: "X" (imm) )
-#define mmx_fetch(mem,hint) \
- __asm__ __volatile__ ("prefetch" #hint " %0" \
- : /* nothing */ \
- : "X" (mem))
+#define mmx_fetch(mem,hint) \
+ __asm__ __volatile__ ("prefetch" #hint " %0" \
+ : /* nothing */ \
+ : "X" (mem))
-#define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg)
+#define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg)
-#define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var)
+#define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var)
-#define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg)
-#define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd)
-#define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg)
-#define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd)
+#define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg)
+#define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd)
+#define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg)
+#define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd)
-#define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm)
+#define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm)
-#define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm)
+#define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm)
-#define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg)
-#define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd)
+#define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg)
+#define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd)
-#define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg)
-#define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd)
+#define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg)
+#define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd)
-#define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg)
-#define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd)
+#define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg)
+#define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd)
-#define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg)
-#define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd)
+#define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg)
+#define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd)
-#define pmovmskb(mmreg,reg) \
- __asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg)
+#define pmovmskb(mmreg,reg) \
+ __asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg)
-#define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg)
-#define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd)
+#define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg)
+#define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd)
-#define prefetcht0(mem) mmx_fetch (mem, t0)
-#define prefetcht1(mem) mmx_fetch (mem, t1)
-#define prefetcht2(mem) mmx_fetch (mem, t2)
-#define prefetchnta(mem) mmx_fetch (mem, nta)
+#define prefetcht0(mem) mmx_fetch (mem, t0)
+#define prefetcht1(mem) mmx_fetch (mem, t1)
+#define prefetcht2(mem) mmx_fetch (mem, t2)
+#define prefetchnta(mem) mmx_fetch (mem, nta)
-#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg)
-#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd)
+#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg)
+#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd)
-#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm)
-#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm)
+#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm)
+#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm)
-#define sfence() __asm__ __volatile__ ("sfence\n\t")
+#define sfence() __asm__ __volatile__ ("sfence\n\t")
/** Set the media descriptor that will be used by the media_instance. If any,
* previous md will be released.
- * \param p_mi the Media Instance
+ * \param p_mi the Media Instance
* \param p_md the Media Descriptor. Afterwards the p_md can safely be
* destroyed.
*/
/** Get the media descriptor used by the media_instance (if any). A copy of
* the md is returned. NULL is returned if no media instance is associated.
- * \param p_mi the Media Instance
+ * \param p_mi the Media Instance
*/
VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_instance_get_media_descriptor( libvlc_media_instance_t *, libvlc_exception_t * );
/** Get the Event Manager from which the media instance send event.
- * \param p_mi the Media Instance
+ * \param p_mi the Media Instance
*/
VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_instance_event_manager ( libvlc_media_instance_t *, libvlc_exception_t * );
* LibVLC Tag query
* @{
*/
-VLC_PUBLIC_API libvlc_tag_query_t *
+VLC_PUBLIC_API libvlc_tag_query_t *
libvlc_tag_query_new( libvlc_instance_t *, libvlc_exception_t * );
-VLC_PUBLIC_API void
+VLC_PUBLIC_API void
libvlc_tag_query_release( libvlc_tag_query_t * );
-VLC_PUBLIC_API void
+VLC_PUBLIC_API void
libvlc_tag_query_retain( libvlc_tag_query_t * );
VLC_PUBLIC_API void
char * psz_tag_key,
libvlc_exception_t * );
-VLC_PUBLIC_API vlc_bool_t
+VLC_PUBLIC_API vlc_bool_t
libvlc_tag_query_match( libvlc_tag_query_t *, libvlc_media_descriptor_t *,
libvlc_exception_t * );
* \param p_instance the instance
* \param psz_name the name of the broadcast
* \param p_exception an initialized exception
- */
+ */
VLC_PUBLIC_API void libvlc_vlm_stop_media ( libvlc_instance_t *, char *, libvlc_exception_t * );
/**
* \param p_instance the instance
* \param psz_name the name of the broadcast
* \param p_exception an initialized exception
- */
+ */
VLC_PUBLIC_API void libvlc_vlm_pause_media( libvlc_instance_t *, char *, libvlc_exception_t * );
-
+
/**
* Seeks in the named broadcast.
* \param p_instance the instance
* \param psz_name the name of the broadcast
* \param f_percentage the percentage to seek to
* \param p_exception an initialized exception
- */
+ */
VLC_PUBLIC_API void libvlc_vlm_seek_media( libvlc_instance_t *, char *,
float, libvlc_exception_t * );
-
+
/**
* Return information of the named broadcast.
* \param p_instance the instance
* \param psz_name the name of the broadcast
* \param p_exception an initialized exception
- */
+ */
VLC_PUBLIC_API char* libvlc_vlm_show_media( libvlc_instance_t *, char *, libvlc_exception_t * );
#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, getType, default)\
libvlc_exception_t *p_e );
/**
- * Open an instance to VLC message log
+ * Open an instance to VLC message log
* \param p_instance libvlc instance
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( const libvlc_instance_t *, libvlc_exception_t *);
/**
- * Close an instance of VLC message log
+ * Close an instance of VLC message log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
/**
* Releases a previoulsy allocated iterator
- * \param p_log libvlc log iterator
+ * \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
/**
- * Returns whether log iterator has more messages
+ * Returns whether log iterator has more messages
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
libvlc_exception_t *p_e );
/**
- * Get an event type name
+ * Get an event type name
* \param i_event_type the desired event
*/
#define libvlc_event_type_name(a) #a
* LibVLC Video handling
* @{
*/
-
+
/**
* Downcast to this general type as placeholder for a platform specific one, such as:
* Drawable on X11,
* LibVLC Event Callbacks
* @{
*/
-
+
/**
* Available events: (XXX: being reworked)
* - libvlc_MediaInstanceReachedEnd
libvlc_MediaInstancePaused,
libvlc_MediaInstanceReachedEnd,
libvlc_MediaInstancePositionChanged,
-
+
libvlc_MediaListItemAdded,
libvlc_MediaListItemDeleted,
*****************************************************************************/
/**
- * \defgroup mediacontrol MediaControl
+ * \defgroup mediacontrol MediaControl
* This is the MediaControl API, * intended to provide a generic API to movie players.
*
* @{
/**
* mediacontrol_Instance is an opaque structure, defined in
- * mediacontrol_internal.h. API users do not have to mess with it.
+ * mediacontrol_internal.h. API users do not have to mess with it.
*/
typedef struct mediacontrol_Instance mediacontrol_Instance;
*/
VLC_PUBLIC_API mediacontrol_Instance *
mediacontrol_new_from_instance( libvlc_instance_t* p_instance,
- mediacontrol_Exception *exception );
+ mediacontrol_Exception *exception );
/**
* Get the associated libvlc instance
* \return the rate
*/
VLC_PUBLIC_API int mediacontrol_get_rate( mediacontrol_Instance *self,
- mediacontrol_Exception *exception );
+ mediacontrol_Exception *exception );
/**
* Set the playing rate, in percent
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void mediacontrol_set_rate( mediacontrol_Instance *self,
- const int rate,
- mediacontrol_Exception *exception );
+ const int rate,
+ mediacontrol_Exception *exception );
/**
* Get current fullscreen status
* \return the fullscreen status
*/
VLC_PUBLIC_API int mediacontrol_get_fullscreen( mediacontrol_Instance *self,
- mediacontrol_Exception *exception );
+ mediacontrol_Exception *exception );
/**
* Set fullscreen status
* \param exception an initialized exception pointer
*/
VLC_PUBLIC_API void mediacontrol_set_fullscreen( mediacontrol_Instance *self,
- const int b_fullscreen,
- mediacontrol_Exception *exception );
+ const int b_fullscreen,
+ mediacontrol_Exception *exception );
# ifdef __cplusplus
}
# endif
/**
- * A position may have different origins:
+ * A position may have different origins:
* - absolute counts from the movie start
* - relative counts from the current position
* - modulo counts from the current position and wraps at the end of the movie
* Shared library Export macros
*****************************************************************************/
#ifndef VLC_PUBLIC_API
-# define VLC_PUBLIC_API extern
+# define VLC_PUBLIC_API extern
#endif
/*****************************************************************************
if( !p_entry )
return kVLCDictionaryNotFound;
- /* Hash collision */
+ /* Hash collision */
do {
if( !strcmp( psz_key, p_entry->psz_key ) )
return p_entry->p_value;
static inline int
vlc_dictionary_keys_count( const vlc_dictionary_t * p_dict )
{
- struct vlc_dictionary_entry_t * p_entry;
+ struct vlc_dictionary_entry_t * p_entry;
int i, count = 0;
for( i = 0; i < p_dict->i_size; i++ )
{
ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1));
assert( ppsz_ret );
-
+
count = 0;
for( i = 0; i < p_dict->i_size; i++ )
{
p_entry->p_value,
0 /* To avoid multiple rebuild loop */);
p_entry = p_entry->p_next;
- }
+ }
}
vlc_dictionary_clear( p_dict );
p_dict->i_size = new_dict.i_size;
#define KSDATAFORMAT_SUBTYPE_PCM VLC_KSDATAFORMAT_SUBTYPE_PCM
#endif
-#ifndef _KSDATAFORMAT_SUBTYPE_UNKNOWN_
+#ifndef _KSDATAFORMAT_SUBTYPE_UNKNOWN_
#define _KSDATAFORMAT_SUBTYPE_UNKNOWN_ {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}
static const GUID VLC_KSDATAFORMAT_SUBTYPE_UNKNOWN = {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
#define KSDATAFORMAT_SUBTYPE_UNKNOWN VLC_KSDATAFORMAT_SUBTYPE_UNKNOWN
{
int i;
- for( i = 0; !guidcmp( &sub_format_tag_to_fourcc[i].guid_tag,
+ for( i = 0; !guidcmp( &sub_format_tag_to_fourcc[i].guid_tag,
&KSDATAFORMAT_SUBTYPE_UNKNOWN ); i++ )
{
if( guidcmp( &sub_format_tag_to_fourcc[i].guid_tag, guid_tag ) ) break;
#if defined (WIN32) && defined (DLL_EXPORT)
# ifdef __cplusplus
-# define VLC_PUBLIC_API __declspec(dllexport)
-# define VLC_PRIVATE_API __declspec(dllexport)
+# define VLC_PUBLIC_API __declspec(dllexport)
+# define VLC_PRIVATE_API __declspec(dllexport)
# define VLC_EXPORT( type, name, args ) extern "C" __declspec(dllexport) type name args
# define VLC_INTERNAL( type, name, args ) extern "C" type name args
# else
-# define VLC_PUBLIC_API extern __declspec(dllexport)
-# define VLC_PRIVATE_API extern __declspec(dllexport)
+# define VLC_PUBLIC_API extern __declspec(dllexport)
+# define VLC_PRIVATE_API extern __declspec(dllexport)
# define VLC_EXPORT( type, name, args ) __declspec(dllexport) type name args
# define VLC_INTERNAL( type, name, args ) type name args
# endif
# define VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args
# define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args
# else
-# define VLC_PUBLIC_API extern
+# define VLC_PUBLIC_API extern
# define VLC_PRIVATE_API extern
# define VLC_EXPORT( type, name, args ) type name args
# define VLC_INTERNAL( type, name, args ) type name args
DEMUX_SET_TIME, /* arg1= int64_t res=can fail */
/* TITLE_INFO only if more than 1 title or 1 chapter */
- DEMUX_GET_TITLE_INFO, /* arg1=input_title_t*** arg2=int*
+ DEMUX_GET_TITLE_INFO, /* arg1=input_title_t*** arg2=int*
arg3=int*pi_title_offset(0), arg4=int*pi_seekpoint_offset(0) can fail */
/* TITLE/SEEKPOINT, only when TITLE_INFO succeed */
DEMUX_SET_TITLE, /* arg1= int can fail */
typedef struct
{
- int64_t i_start; /* Interpreted as a value return by time() */
- int i_duration; /* Duration of the event in second */
+ int64_t i_start; /* Interpreted as a value return by time() */
+ int i_duration; /* Duration of the event in second */
- char *psz_name;
- char *psz_short_description;
- char *psz_description;
+ char *psz_name;
+ char *psz_short_description;
+ char *psz_description;
} vlc_epg_event_t;
char *psz_name;
vlc_epg_event_t *p_current; /* Can be null or should be the same than one of pp_event entry */
- int i_event;
- vlc_epg_event_t **pp_event;
+ int i_event;
+ vlc_epg_event_t **pp_event;
} vlc_epg_t;
static inline void vlc_epg_Init( vlc_epg_t *p_epg, const char *psz_name )
{
p_epg->psz_name = psz_name ? strdup( psz_name ) : NULL;
p_epg->p_current = NULL;
- TAB_INIT( p_epg->i_event, p_epg->pp_event );
+ TAB_INIT( p_epg->i_event, p_epg->pp_event );
}
static inline void vlc_epg_Clean( vlc_epg_t *p_epg )
{
static inline vlc_epg_t *vlc_epg_New( const char *psz_name )
{
- vlc_epg_t *p_epg = (vlc_epg_t*)malloc( sizeof(vlc_epg_t) );
- if( p_epg )
- vlc_epg_Init( p_epg, psz_name );
+ vlc_epg_t *p_epg = (vlc_epg_t*)malloc( sizeof(vlc_epg_t) );
+ if( p_epg )
+ vlc_epg_Init( p_epg, psz_name );
return p_epg;
}
static inline void vlc_epg_Delete( vlc_epg_t *p_epg )
*
* This implements a way to send and receive event for an object (which can be
* a simple C struct or less).
- *
+ *
* This is in direct concurrency with the Variable based Callback
* (see src/misc/variables.c).
*
*
* (vlc_cool_object_t doesn't need to have the VLC_COMMON_MEMBERS.)
*
- * struct vlc_cool_object_t
+ * struct vlc_cool_object_t
* {
* ...
* vlc_event_manager_t p_event_manager;
{
input_item_t * p_new_child;
} input_item_subitem_added;
-
+
/* Service discovery events */
struct vlc_services_discovery_item_added
{
if( !p_i->p_meta )
p_i->p_meta = vlc_meta_New();
vlc_meta_Set( p_i->p_meta, meta_type, psz_val );
- vlc_mutex_unlock( &p_i->lock );
+ vlc_mutex_unlock( &p_i->lock );
/* Notify interested third parties */
event.type = vlc_InputItemMetaChanged;
};
/* Setters for meta.
- * Warning: Make sure to use the input_item meta setters (defined in vlc_input.h)
+ * Warning: Make sure to use the input_item meta setters (defined in vlc_input.h)
* instead of those one. */
#define vlc_meta_SetTitle( meta, b ) vlc_meta_Set( meta, vlc_meta_Title, b )
#define vlc_meta_SetArtist( meta, b ) vlc_meta_Set( meta, vlc_meta_Artist, b )
#ifndef HAVE_INET_NTOP
#ifdef WIN32
/* only in core, so no need for C++ extern "C" */
-VLC_EXPORT (const char *, inet_ntop, (int af, const void *src,
+VLC_EXPORT (const char *, inet_ntop, (int af, const void *src,
char *dst, socklen_t cnt) );
#endif
#endif
#ifdef AF_INET6
case AF_INET6:
((struct sockaddr_in6 *)addr)->sin6_port = port;
- break;
+ break;
#endif
case AF_INET:
((struct sockaddr_in *)addr)->sin_port = port;
- break;
+ break;
}
}
# ifdef __cplusplus
VLC_EXPORT( int, playlist_NodeEmpty, ( playlist_t *, playlist_item_t *, vlc_bool_t ) );
VLC_EXPORT( void, playlist_NodesPairCreate, (playlist_t *, const char *, playlist_item_t **, playlist_item_t **, vlc_bool_t ) );
VLC_EXPORT( playlist_item_t *, playlist_GetPreferredNode, ( playlist_t *p_playlist, playlist_item_t *p_node ) );
-VLC_EXPORT( playlist_item_t *, playlist_GetNextLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, vlc_bool_t b_ena, vlc_bool_t b_unplayed ) );
-VLC_EXPORT( playlist_item_t *, playlist_GetPrevLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, vlc_bool_t b_ena, vlc_bool_t b_unplayed ) );
+VLC_EXPORT( playlist_item_t *, playlist_GetNextLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, vlc_bool_t b_ena, vlc_bool_t b_unplayed ) );
+VLC_EXPORT( playlist_item_t *, playlist_GetPrevLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, vlc_bool_t b_ena, vlc_bool_t b_unplayed ) );
VLC_EXPORT( playlist_item_t *, playlist_GetLastLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root ) );
/***********************************************************************
/* Maybe we should make VLC_OBJECT a simple cast noawadays... */
struct stream_t
{
- VLC_COMMON_MEMBERS
+ VLC_COMMON_MEMBERS
};
# endif
*/
struct update_t
{
- libvlc_int_t *p_libvlc;
+ libvlc_int_t *p_libvlc;
vlc_mutex_t lock;
Its content will be based mainly on wine/dlls/msacm32
actually, for audio decompression only the following functions
are needed:
-
+
acmStreamOpen ( takes formats of src and dest, returns stream handle )
acmStreamPrepareHeader ( takes stream handler and info on data )
acmStreamConvert ( the same as PrepareHeader )
acmStreamClose
acmStreamSize
maybe acmStreamReset
-
- In future I'll also add functions for format enumeration,
+
+ In future I'll also add functions for format enumeration,
but not right now.
Modified for use with MPlayer, detailed CVS changelog at
http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
-
+
***************************************************************************/
#include "config.h"
* acmDriverAddA (MSACM32.2)
*/
MMRESULT WINAPI acmDriverAddA(PHACMDRIVERID phadid, HINSTANCE hinstModule,
- LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
+ LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
{
if (!phadid)
- return MMSYSERR_INVALPARAM;
-
+ return MMSYSERR_INVALPARAM;
+
/* Check if any unknown flags */
- if (fdwAdd &
- ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
- ACM_DRIVERADDF_GLOBAL))
- return MMSYSERR_INVALFLAG;
-
+ if (fdwAdd &
+ ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
+ ACM_DRIVERADDF_GLOBAL))
+ return MMSYSERR_INVALFLAG;
+
/* Check if any incompatible flags */
- if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
- (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
- return MMSYSERR_INVALFLAG;
-
- /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a
+ if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
+ (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
+ return MMSYSERR_INVALFLAG;
+
+ /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a
* LoadDriver on it, to be sure we can call SendDriverMessage on the
* hDrvr handle.
*/
*phadid = (HACMDRIVERID) MSACM_RegisterDriver(NULL, 0, hinstModule);
-
+
/* FIXME: lParam, dwPriority and fdwAdd ignored */
-
+
return MMSYSERR_NOERROR;
}
{
PWINE_ACMDRIVER p;
PWINE_ACMDRIVER* tp;
-
+
if (fdwClose)
- return MMSYSERR_INVALFLAG;
-
+ return MMSYSERR_INVALFLAG;
+
p = MSACM_GetDriver(had);
if (!p)
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
for (tp = &(p->obj.pACMDriverID->pACMDriverList); *tp; *tp = (*tp)->pNextACMDriver) {
- if (*tp == p) {
- *tp = (*tp)->pNextACMDriver;
- break;
- }
+ if (*tp == p) {
+ *tp = (*tp)->pNextACMDriver;
+ break;
}
-
+ }
+
if (p->hDrvr && !p->obj.pACMDriverID->pACMDriverList)
- CloseDriver(p->hDrvr);
-
+ CloseDriver(p->hDrvr);
+
HeapFree(MSACM_hHeap, 0, p);
-
+
return MMSYSERR_NOERROR;
}
*/
MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
- PWINE_ACMDRIVERID p;
- DWORD fdwSupport;
+ PWINE_ACMDRIVERID p;
+ DWORD fdwSupport;
if (!fnCallback) {
- return MMSYSERR_INVALPARAM;
+ return MMSYSERR_INVALPARAM;
}
-
+
if (fdwEnum && ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED)) {
- return MMSYSERR_INVALFLAG;
+ return MMSYSERR_INVALFLAG;
}
-
+
for (p = MSACM_pFirstACMDriverID; p; p = p->pNextACMDriverID) {
- fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
- if (!p->bEnabled) {
- if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
- fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
- else
- continue;
- }
- (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport);
+ fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+ if (!p->bEnabled) {
+ if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
+ fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
+ else
+ continue;
}
-
+ (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport);
+ }
+
return MMSYSERR_NOERROR;
}
MMRESULT WINAPI acmDriverID(HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID)
{
PWINE_ACMOBJ pao;
-
+
pao = MSACM_GetObj(hao);
if (!pao)
- return MMSYSERR_INVALHANDLE;
-
+ return MMSYSERR_INVALHANDLE;
+
if (!phadid)
- return MMSYSERR_INVALPARAM;
-
+ return MMSYSERR_INVALPARAM;
+
if (fdwDriverID)
- return MMSYSERR_INVALFLAG;
-
+ return MMSYSERR_INVALFLAG;
+
*phadid = (HACMDRIVERID) pao->pACMDriverID;
-
+
return MMSYSERR_NOERROR;
}
{
PWINE_ACMDRIVER pad = MSACM_GetDriver(had);
if (!pad)
- return MMSYSERR_INVALPARAM;
-
+ return MMSYSERR_INVALPARAM;
+
/* FIXME: Check if uMsg legal */
-
+
if (!SendDriverMessage(pad->hDrvr, uMsg, lParam1, lParam2))
- return MMSYSERR_NOTSUPPORTED;
-
+ return MMSYSERR_NOTSUPPORTED;
+
return MMSYSERR_NOERROR;
}
*/
MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen)
{
- PWINE_ACMDRIVERID padid;
- PWINE_ACMDRIVER pad;
- ICOPEN icopen;
- HDRVR hdrv;
+ PWINE_ACMDRIVERID padid;
+ PWINE_ACMDRIVER pad;
+ ICOPEN icopen;
+ HDRVR hdrv;
TRACE("(%p, %x, %08lu)\n", phad, hadid, fdwOpen);
if (!phad)
- return MMSYSERR_INVALPARAM;
-
- padid = MSACM_GetDriverID(hadid);
+ return MMSYSERR_INVALPARAM;
+
+ padid = MSACM_GetDriverID(hadid);
if (!padid)
- return MMSYSERR_INVALHANDLE;
-
+ return MMSYSERR_INVALHANDLE;
+
if (fdwOpen)
- return MMSYSERR_INVALFLAG;
-
+ return MMSYSERR_INVALFLAG;
+
pad = (PWINE_ACMDRIVER) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
if (!pad)
- return MMSYSERR_NOMEM;
+ return MMSYSERR_NOMEM;
pad->obj.pACMDriverID = padid;
- icopen.fccType = mmioFOURCC('a', 'u', 'd', 'c');
- icopen.fccHandler = (long)padid->pszFileName;
- icopen.dwSize = sizeof(ICOPEN);
- icopen.dwFlags = 0;
+ icopen.fccType = mmioFOURCC('a', 'u', 'd', 'c');
+ icopen.fccHandler = (long)padid->pszFileName;
+ icopen.dwSize = sizeof(ICOPEN);
+ icopen.dwFlags = 0;
icopen.pV1Reserved = padid->pszFileName;
if (!padid->hInstModule)
- pad->hDrvr = OpenDriverA((long)&icopen);
+ pad->hDrvr = OpenDriverA((long)&icopen);
else
- pad->hDrvr = padid->hInstModule;
-
+ pad->hDrvr = padid->hInstModule;
+
if (!pad->hDrvr) {
- HeapFree(MSACM_hHeap, 0, pad);
- return MMSYSERR_ERROR;
+ HeapFree(MSACM_hHeap, 0, pad);
+ return MMSYSERR_ERROR;
}
pad->pfnDriverProc = GetProcAddress(pad->hDrvr, "DriverProc");
MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove)
{
PWINE_ACMDRIVERID padid;
-
+
padid = MSACM_GetDriverID(hadid);
if (!padid)
- return MMSYSERR_INVALHANDLE;
-
+ return MMSYSERR_INVALHANDLE;
+
if (fdwRemove)
- return MMSYSERR_INVALFLAG;
-
+ return MMSYSERR_INVALFLAG;
+
MSACM_UnregisterDriver(padid);
-
+
return MMSYSERR_NOERROR;
}
PWINE_ACMDRIVERID MSACM_pLastACMDriverID = NULL;
/***********************************************************************
- * MSACM_RegisterDriver32()
+ * MSACM_RegisterDriver32()
*/
PWINE_ACMDRIVERID MSACM_RegisterDriver(const char* pszFileName,
- WORD wFormatTag,
- HINSTANCE hinstModule)
+ WORD wFormatTag,
+ HINSTANCE hinstModule)
{
PWINE_ACMDRIVERID padid;
TRACE("('%s', '%x', 0x%08x)\n", pszFileName, wFormatTag, hinstModule);
#ifndef WIN32_LOADER
- MSACM_hHeap = GetProcessHeap();
+ MSACM_hHeap = GetProcessHeap();
#endif
padid = (PWINE_ACMDRIVERID) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
padid->pszFileName = (char*)malloc(strlen(pszFileName)+1);
padid->pNextACMDriverID = NULL;
padid->pPrevACMDriverID = MSACM_pLastACMDriverID;
if (MSACM_pLastACMDriverID)
- MSACM_pLastACMDriverID->pNextACMDriverID = padid;
+ MSACM_pLastACMDriverID->pNextACMDriverID = padid;
MSACM_pLastACMDriverID = padid;
if (!MSACM_pFirstACMDriverID)
- MSACM_pFirstACMDriverID = padid;
-
+ MSACM_pFirstACMDriverID = padid;
+
return padid;
}
PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
{
PWINE_ACMDRIVERID pNextACMDriverID;
-
+
while (p->pACMDriverList)
- acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
-
+ acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
+
if (p->pszFileName)
- free(p->pszFileName);
-
+ free(p->pszFileName);
+
if (p == MSACM_pFirstACMDriverID)
- MSACM_pFirstACMDriverID = p->pNextACMDriverID;
+ MSACM_pFirstACMDriverID = p->pNextACMDriverID;
if (p == MSACM_pLastACMDriverID)
- MSACM_pLastACMDriverID = p->pPrevACMDriverID;
+ MSACM_pLastACMDriverID = p->pPrevACMDriverID;
if (p->pPrevACMDriverID)
- p->pPrevACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
+ p->pPrevACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
if (p->pNextACMDriverID)
- p->pNextACMDriverID->pPrevACMDriverID = p->pPrevACMDriverID;
-
+ p->pNextACMDriverID->pPrevACMDriverID = p->pPrevACMDriverID;
+
pNextACMDriverID = p->pNextACMDriverID;
-
+
HeapFree(MSACM_hHeap, 0, p);
-
+
return pNextACMDriverID;
}
}
/***********************************************************************
- * MSACM_GetDriverID32()
+ * MSACM_GetDriverID32()
*/
PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
{
* acmStreamOpen (MSACM32.40)
*/
MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
- PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
- DWORD dwInstance, DWORD fdwOpen)
+ PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
+ DWORD dwInstance, DWORD fdwOpen)
{
- PWINE_ACMSTREAM was;
- PWINE_ACMDRIVER wad;
- MMRESULT ret;
- int wfxSrcSize;
- int wfxDstSize;
-
+ PWINE_ACMSTREAM was;
+ PWINE_ACMDRIVER wad;
+ MMRESULT ret;
+ int wfxSrcSize;
+ int wfxDstSize;
+
TRACE("(%p, 0x%08x, %p, %p, %p, %ld, %ld, %ld)\n",
- phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
+ phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
- TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
- pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec,
- pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
+ TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
+ pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec,
+ pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
- TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
- pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec,
- pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
+ TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
+ pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec,
+ pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
#define SIZEOF_WFX(wfx) (sizeof(WAVEFORMATEX) + ((wfx->wFormatTag == WAVE_FORMAT_PCM) ? 0 : wfx->cbSize))
wfxSrcSize = SIZEOF_WFX(pwfxSrc);
was = (PWINE_ACMSTREAM) HeapAlloc(MSACM_hHeap, 0, sizeof(*was) + wfxSrcSize + wfxDstSize + ((pwfltr) ? sizeof(WAVEFILTER) : 0));
if (was == NULL)
- return MMSYSERR_NOMEM;
+ return MMSYSERR_NOMEM;
was->drvInst.cbStruct = sizeof(was->drvInst);
was->drvInst.pwfxSrc = (PWAVEFORMATEX)((LPSTR)was + sizeof(*was));
memcpy(was->drvInst.pwfxSrc, pwfxSrc, wfxSrcSize);
was->drvInst.pwfxDst = (PWAVEFORMATEX)((LPSTR)was + sizeof(*was) + wfxSrcSize);
memcpy(was->drvInst.pwfxDst, pwfxDst, wfxDstSize);
if (pwfltr) {
- was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
- memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
+ was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
+ memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
} else {
- was->drvInst.pwfltr = NULL;
+ was->drvInst.pwfltr = NULL;
}
- was->drvInst.dwCallback = dwCallback;
+ was->drvInst.dwCallback = dwCallback;
was->drvInst.dwInstance = dwInstance;
was->drvInst.fdwOpen = fdwOpen;
- was->drvInst.fdwDriver = 0L;
- was->drvInst.dwDriver = 0L;
+ was->drvInst.fdwDriver = 0L;
+ was->drvInst.dwDriver = 0L;
was->drvInst.has = (HACMSTREAM)was;
-
+
if (had) {
- if (!(wad = MSACM_GetDriver(had))) {
- ret = MMSYSERR_INVALPARAM;
- goto errCleanUp;
- }
-
- was->obj.pACMDriverID = wad->obj.pACMDriverID;
- was->pDrv = wad;
- was->hAcmDriver = 0; /* not to close it in acmStreamClose */
-
- ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
- if (ret != MMSYSERR_NOERROR)
- goto errCleanUp;
+ if (!(wad = MSACM_GetDriver(had))) {
+ ret = MMSYSERR_INVALPARAM;
+ goto errCleanUp;
+ }
+
+ was->obj.pACMDriverID = wad->obj.pACMDriverID;
+ was->pDrv = wad;
+ was->hAcmDriver = 0; /* not to close it in acmStreamClose */
+
+ ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+ if (ret != MMSYSERR_NOERROR)
+ goto errCleanUp;
} else {
- PWINE_ACMDRIVERID wadi;
- short drv_tag;
- ret = ACMERR_NOTPOSSIBLE;
-/* if(pwfxSrc->wFormatTag==1)//compression
- drv_tag=pwfxDst->wFormatTag;
- else
- if(pwfxDst->wFormatTag==1)//decompression
- drv_tag=pwfxSrc->wFormatTag;
- else
- goto errCleanUp;
-
- ret=acmDriverOpen2(drv_tag);
- if (ret == MMSYSERR_NOERROR) {
- if ((wad = MSACM_GetDriver(had)) != 0) {
- was->obj.pACMDriverID = wad->obj.pACMDriverID;
- was->pDrv = wad;
- was->hAcmDriver = had;
-
- ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
- if (ret == MMSYSERR_NOERROR) {
- if (fdwOpen & ACM_STREAMOPENF_QUERY) {
- acmDriverClose(had, 0L);
- }
- break;
- }
- }
- acmDriverClose(had, 0L);*/
- //if(MSACM_pFirstACMDriverID==NULL)
- // MSACM_RegisterAllDrivers();
-
- for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID)
- {
- /* Check Format */
- if ((int)wadi->wFormatTag != (int)pwfxSrc->wFormatTag) continue;
-
- ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
- if (ret == MMSYSERR_NOERROR) {
- if ((wad = MSACM_GetDriver(had)) != 0) {
- was->obj.pACMDriverID = wad->obj.pACMDriverID;
- was->pDrv = wad;
- was->hAcmDriver = had;
-
- ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
- //lhacm - crash printf("RETOPEN %d\n", ret);
+ PWINE_ACMDRIVERID wadi;
+ short drv_tag;
+ ret = ACMERR_NOTPOSSIBLE;
+/* if(pwfxSrc->wFormatTag==1)//compression
+ drv_tag=pwfxDst->wFormatTag;
+ else
+ if(pwfxDst->wFormatTag==1)//decompression
+ drv_tag=pwfxSrc->wFormatTag;
+ else
+ goto errCleanUp;
+
+ ret=acmDriverOpen2(drv_tag);
+ if (ret == MMSYSERR_NOERROR) {
+ if ((wad = MSACM_GetDriver(had)) != 0) {
+ was->obj.pACMDriverID = wad->obj.pACMDriverID;
+ was->pDrv = wad;
+ was->hAcmDriver = had;
+
+ ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+ if (ret == MMSYSERR_NOERROR) {
+ if (fdwOpen & ACM_STREAMOPENF_QUERY) {
+ acmDriverClose(had, 0L);
+ }
+ break;
+ }
+ }
+ acmDriverClose(had, 0L);*/
+ //if(MSACM_pFirstACMDriverID==NULL)
+ // MSACM_RegisterAllDrivers();
+
+ for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID)
+ {
+ /* Check Format */
+ if ((int)wadi->wFormatTag != (int)pwfxSrc->wFormatTag) continue;
+
+ ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
+ if (ret == MMSYSERR_NOERROR) {
+ if ((wad = MSACM_GetDriver(had)) != 0) {
+ was->obj.pACMDriverID = wad->obj.pACMDriverID;
+ was->pDrv = wad;
+ was->hAcmDriver = had;
+
+ ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+ //lhacm - crash printf("RETOPEN %d\n", ret);
//ret = 0;
- if (ret == MMSYSERR_NOERROR) {
- if (fdwOpen & ACM_STREAMOPENF_QUERY) {
- acmDriverClose(had, 0L);
- }
- break;
- }
- }
- // no match, close this acm driver and try next one
- acmDriverClose(had, 0L);
- }
- }
- if (ret != MMSYSERR_NOERROR) {
- ret = ACMERR_NOTPOSSIBLE;
- goto errCleanUp;
- }
+ if (ret == MMSYSERR_NOERROR) {
+ if (fdwOpen & ACM_STREAMOPENF_QUERY) {
+ acmDriverClose(had, 0L);
+ }
+ break;
+ }
+ }
+ // no match, close this acm driver and try next one
+ acmDriverClose(had, 0L);
+ }
+ }
+ if (ret != MMSYSERR_NOERROR) {
+ ret = ACMERR_NOTPOSSIBLE;
+ goto errCleanUp;
+ }
}
ret = MMSYSERR_NOERROR;
if (!(fdwOpen & ACM_STREAMOPENF_QUERY)) {
- if (phas)
- *phas = (HACMSTREAM)was;
- TRACE("=> (%d)\n", ret);
+ if (phas)
+ *phas = (HACMSTREAM)was;
+ TRACE("=> (%d)\n", ret);
#ifdef WIN32_LOADER
CodecAlloc();
#endif
- return ret;
+ return ret;
}
-errCleanUp:
+errCleanUp:
if (phas)
- *phas = (HACMSTREAM)0;
+ *phas = (HACMSTREAM)0;
HeapFree(MSACM_hHeap, 0, was);
TRACE("=> (%d)\n", ret);
return ret;
MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose)
{
- PWINE_ACMSTREAM was;
- MMRESULT ret;
-
+ PWINE_ACMSTREAM was;
+ MMRESULT ret;
+
TRACE("(0x%08x, %ld)\n", has, fdwClose);
-
+
if ((was = ACM_GetStream(has)) == NULL) {
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
}
ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CLOSE, (DWORD)&was->drvInst, 0);
if (ret == MMSYSERR_NOERROR) {
- if (was->hAcmDriver)
- acmDriverClose(was->hAcmDriver, 0L);
- HeapFree(MSACM_hHeap, 0, was);
+ if (was->hAcmDriver)
+ acmDriverClose(was->hAcmDriver, 0L);
+ HeapFree(MSACM_hHeap, 0, was);
#ifdef WIN32_LOADER
CodecRelease();
#endif
/***********************************************************************
* acmStreamConvert (MSACM32.38)
*/
-MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
- DWORD fdwConvert)
+MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
+ DWORD fdwConvert)
{
- PWINE_ACMSTREAM was;
- MMRESULT ret = MMSYSERR_NOERROR;
- PACMDRVSTREAMHEADER padsh;
+ PWINE_ACMSTREAM was;
+ MMRESULT ret = MMSYSERR_NOERROR;
+ PACMDRVSTREAMHEADER padsh;
TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwConvert);
if ((was = ACM_GetStream(has)) == NULL)
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
- return MMSYSERR_INVALPARAM;
+ return MMSYSERR_INVALPARAM;
if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
- return ACMERR_UNPREPARED;
+ return ACMERR_UNPREPARED;
/* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
* size. some fields are private to msacm internals, and are exposed
/* check that pointers have not been modified */
if (padsh->pbPreparedSrc != padsh->pbSrc ||
- padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
- padsh->pbPreparedDst != padsh->pbDst ||
- padsh->cbPreparedDstLength < padsh->cbDstLength) {
- return MMSYSERR_INVALPARAM;
- }
+ padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
+ padsh->pbPreparedDst != padsh->pbDst ||
+ padsh->cbPreparedDstLength < padsh->cbDstLength) {
+ return MMSYSERR_INVALPARAM;
+ }
padsh->fdwConvert = fdwConvert;
ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CONVERT, (DWORD)&was->drvInst, (DWORD)padsh);
if (ret == MMSYSERR_NOERROR) {
- padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
+ padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
}
TRACE("=> (%d)\n", ret);
return ret;
/***********************************************************************
* acmStreamPrepareHeader (MSACM32.41)
*/
-MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
- DWORD fdwPrepare)
+MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
+ DWORD fdwPrepare)
{
- PWINE_ACMSTREAM was;
- MMRESULT ret = MMSYSERR_NOERROR;
- PACMDRVSTREAMHEADER padsh;
+ PWINE_ACMSTREAM was;
+ MMRESULT ret = MMSYSERR_NOERROR;
+ PACMDRVSTREAMHEADER padsh;
TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwPrepare);
-
+
if ((was = ACM_GetStream(has)) == NULL)
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
- return MMSYSERR_INVALPARAM;
+ return MMSYSERR_INVALPARAM;
if (fdwPrepare)
- ret = MMSYSERR_INVALFLAG;
+ ret = MMSYSERR_INVALFLAG;
if (pash->fdwStatus & ACMSTREAMHEADER_STATUSF_DONE)
- return MMSYSERR_NOERROR;
+ return MMSYSERR_NOERROR;
/* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
* size. some fields are private to msacm internals, and are exposed
ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_PREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
- ret = MMSYSERR_NOERROR;
- padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
- padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
- padsh->fdwPrepared = padsh->fdwStatus;
- padsh->dwPrepared = 0;
- padsh->pbPreparedSrc = padsh->pbSrc;
- padsh->cbPreparedSrcLength = padsh->cbSrcLength;
- padsh->pbPreparedDst = padsh->pbDst;
- padsh->cbPreparedDstLength = padsh->cbDstLength;
+ ret = MMSYSERR_NOERROR;
+ padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
+ padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
+ padsh->fdwPrepared = padsh->fdwStatus;
+ padsh->dwPrepared = 0;
+ padsh->pbPreparedSrc = padsh->pbSrc;
+ padsh->cbPreparedSrcLength = padsh->cbSrcLength;
+ padsh->pbPreparedDst = padsh->pbDst;
+ padsh->cbPreparedDstLength = padsh->cbDstLength;
} else {
- padsh->fdwPrepared = 0;
- padsh->dwPrepared = 0;
- padsh->pbPreparedSrc = 0;
- padsh->cbPreparedSrcLength = 0;
- padsh->pbPreparedDst = 0;
- padsh->cbPreparedDstLength = 0;
+ padsh->fdwPrepared = 0;
+ padsh->dwPrepared = 0;
+ padsh->pbPreparedSrc = 0;
+ padsh->cbPreparedSrcLength = 0;
+ padsh->pbPreparedDst = 0;
+ padsh->cbPreparedDstLength = 0;
}
TRACE("=> (%d)\n", ret);
return ret;
*/
MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset)
{
- PWINE_ACMSTREAM was;
- MMRESULT ret = MMSYSERR_NOERROR;
+ PWINE_ACMSTREAM was;
+ MMRESULT ret = MMSYSERR_NOERROR;
TRACE("(0x%08x, %ld)\n", has, fdwReset);
if (fdwReset) {
- ret = MMSYSERR_INVALFLAG;
+ ret = MMSYSERR_INVALFLAG;
} else if ((was = ACM_GetStream(has)) == NULL) {
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
} else if (was->drvInst.fdwOpen & ACM_STREAMOPENF_ASYNC) {
- ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
+ ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
}
TRACE("=> (%d)\n", ret);
return ret;
/***********************************************************************
* acmStreamSize (MSACM32.43)
*/
-MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput,
- LPDWORD pdwOutputBytes, DWORD fdwSize)
+MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput,
+ LPDWORD pdwOutputBytes, DWORD fdwSize)
{
- PWINE_ACMSTREAM was;
- ACMDRVSTREAMSIZE adss;
- MMRESULT ret;
-
+ PWINE_ACMSTREAM was;
+ ACMDRVSTREAMSIZE adss;
+ MMRESULT ret;
+
TRACE("(0x%08x, %ld, %p, %ld)\n", has, cbInput, pdwOutputBytes, fdwSize);
-
+
if ((was = ACM_GetStream(has)) == NULL) {
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
}
if ((fdwSize & ~ACM_STREAMSIZEF_QUERYMASK) != 0) {
- return MMSYSERR_INVALFLAG;
+ return MMSYSERR_INVALFLAG;
}
*pdwOutputBytes = 0L;
-
+
switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
case ACM_STREAMSIZEF_DESTINATION:
- adss.cbDstLength = cbInput;
- adss.cbSrcLength = 0;
- break;
+ adss.cbDstLength = cbInput;
+ adss.cbSrcLength = 0;
+ break;
case ACM_STREAMSIZEF_SOURCE:
- adss.cbSrcLength = cbInput;
- adss.cbDstLength = 0;
- break;
- default:
- return MMSYSERR_INVALFLAG;
+ adss.cbSrcLength = cbInput;
+ adss.cbDstLength = 0;
+ break;
+ default:
+ return MMSYSERR_INVALFLAG;
}
-
+
adss.cbStruct = sizeof(adss);
adss.fdwSize = fdwSize;
- ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE,
- (DWORD)&was->drvInst, (DWORD)&adss);
+ ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE,
+ (DWORD)&was->drvInst, (DWORD)&adss);
if (ret == MMSYSERR_NOERROR) {
- switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
- case ACM_STREAMSIZEF_DESTINATION:
- *pdwOutputBytes = adss.cbSrcLength;
- break;
- case ACM_STREAMSIZEF_SOURCE:
- *pdwOutputBytes = adss.cbDstLength;
- break;
- }
+ switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
+ case ACM_STREAMSIZEF_DESTINATION:
+ *pdwOutputBytes = adss.cbSrcLength;
+ break;
+ case ACM_STREAMSIZEF_SOURCE:
+ *pdwOutputBytes = adss.cbDstLength;
+ break;
+ }
}
TRACE("=> (%d) [%lu]\n", ret, *pdwOutputBytes);
return ret;
/***********************************************************************
* acmStreamUnprepareHeader (MSACM32.44)
*/
-MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
- DWORD fdwUnprepare)
+MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
+ DWORD fdwUnprepare)
{
- PWINE_ACMSTREAM was;
- MMRESULT ret = MMSYSERR_NOERROR;
- PACMDRVSTREAMHEADER padsh;
+ PWINE_ACMSTREAM was;
+ MMRESULT ret = MMSYSERR_NOERROR;
+ PACMDRVSTREAMHEADER padsh;
TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwUnprepare);
-
+
if ((was = ACM_GetStream(has)) == NULL)
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
- return MMSYSERR_INVALPARAM;
+ return MMSYSERR_INVALPARAM;
if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
- return ACMERR_UNPREPARED;
+ return ACMERR_UNPREPARED;
/* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
* size. some fields are private to msacm internals, and are exposed
/* check that pointers have not been modified */
if (padsh->pbPreparedSrc != padsh->pbSrc ||
- padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
- padsh->pbPreparedDst != padsh->pbDst ||
- padsh->cbPreparedDstLength < padsh->cbDstLength) {
- return MMSYSERR_INVALPARAM;
- }
+ padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
+ padsh->pbPreparedDst != padsh->pbDst ||
+ padsh->cbPreparedDstLength < padsh->cbDstLength) {
+ return MMSYSERR_INVALPARAM;
+ }
padsh->fdwConvert = fdwUnprepare;
ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_UNPREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
- ret = MMSYSERR_NOERROR;
- padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
+ ret = MMSYSERR_NOERROR;
+ padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
}
TRACE("=> (%d)\n", ret);
return ret;
};
long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter,
- long dwClsContext, const GUID* riid, void** ppv);
+ long dwClsContext, const GUID* riid, void** ppv);
#ifdef __cplusplus
};
if(needs_free)free(def_path);
if(path==0)
{
- def_path=WIN32_PATH;
- needs_free=0;
- return;
+ def_path=WIN32_PATH;
+ needs_free=0;
+ return;
}
def_path = (char*) malloc(strlen(path)+1);
strcpy(def_path, path);
static DWORD dwDrvID = 0;
LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
- LPARAM lParam1, LPARAM lParam2)
+ LPARAM lParam1, LPARAM lParam2)
{
DRVR* module=(DRVR*)hDriver;
int result;
{
if (hDriver)
{
- DRVR* d = (DRVR*)hDriver;
- if (d->hDriverModule)
- {
+ DRVR* d = (DRVR*)hDriver;
+ if (d->hDriverModule)
+ {
#ifdef WIN32_LOADER
- Setup_FS_Segment();
-#endif
- if (d->DriverProc)
- {
- SendDriverMessage(hDriver, DRV_CLOSE, 0, 0);
- d->dwDriverID = 0;
- SendDriverMessage(hDriver, DRV_FREE, 0, 0);
- }
- FreeLibrary(d->hDriverModule);
- }
- free(d);
+ Setup_FS_Segment();
+#endif
+ if (d->DriverProc)
+ {
+ SendDriverMessage(hDriver, DRV_CLOSE, 0, 0);
+ d->dwDriverID = 0;
+ SendDriverMessage(hDriver, DRV_FREE, 0, 0);
+ }
+ FreeLibrary(d->hDriverModule);
+ }
+ free(d);
}
#ifdef WIN32_LOADER
CodecRelease();
hDriver = (NPDRVR) malloc(sizeof(DRVR));
if (!hDriver)
- return ((HDRVR) 0);
+ return ((HDRVR) 0);
memset((void*)hDriver, 0, sizeof(DRVR));
#ifdef WIN32_LOADER
hDriver->hDriverModule = LoadLibraryA(filename);
if (!hDriver->hDriverModule)
{
- printf("Can't open library %s\n", filename);
- DrvClose((HDRVR)hDriver);
- return ((HDRVR) 0);
+ printf("Can't open library %s\n", filename);
+ DrvClose((HDRVR)hDriver);
+ return ((HDRVR) 0);
}
hDriver->DriverProc = (DRIVERPROC) GetProcAddress(hDriver->hDriverModule,
- "DriverProc");
+ "DriverProc");
if (!hDriver->DriverProc)
{
- printf("Library %s is not a valid VfW/ACM codec\n", filename);
- DrvClose((HDRVR)hDriver);
- return ((HDRVR) 0);
+ printf("Library %s is not a valid VfW/ACM codec\n", filename);
+ DrvClose((HDRVR)hDriver);
+ return ((HDRVR) 0);
}
TRACE("DriverProc == %X\n", hDriver->DriverProc);
*/
#ifndef loader_driver_h
-#define loader_driver_h
+#define loader_driver_h
#ifdef __cplusplus
extern "C" {
{
int l;
if(!s)
- return 0;
+ return 0;
l=0;
while(s[l])
- l++;
+ l++;
return l;
}
LPSTR WINAPI lstrcpynWtoA(LPSTR dest, LPCWSTR src, INT count)
LPSTR result = dest;
int moved=0;
if((dest==0) || (src==0))
- return 0;
+ return 0;
while(moved<count)
{
*dest=*src;
- moved++;
- if(*src==0)
- break;
- src++;
- dest++;
+ moved++;
+ if(*src==0)
+ break;
+ src++;
+ dest++;
}
return result;
}
{
/*
if(s1==0)
- return;
+ return;
if(s2==0)
return;
*/
while(n>0)
{
- if (((*s1 | *s2) & 0xff00) || toupper((char)*s1) != toupper((char)*s2))
- {
-
- if(*s1<*s2)
- return -1;
- else
- if(*s1>*s2)
- return 1;
- else
- if(*s1==0)
- return 0;
- }
- s1++;
- s2++;
- n--;
+ if (((*s1 | *s2) & 0xff00) || toupper((char)*s1) != toupper((char)*s2))
+ {
+
+ if(*s1<*s2)
+ return -1;
+ else
+ if(*s1>*s2)
+ return 1;
+ else
+ if(*s1==0)
+ return 0;
+ }
+ s1++;
+ s2++;
+ n--;
}
return 0;
}
WIN_BOOL WINAPI IsBadReadPtr(LPCVOID data, UINT size)
{
if(size==0)
- return 0;
+ return 0;
if(data==NULL)
return 1;
return 0;
int size, i;
WCHAR* answer;
if(string==0)
- return 0;
+ return 0;
size=strlen(string);
answer = (WCHAR*) malloc(sizeof(WCHAR) * (size + 1));
for(i=0; i<=size; i++)
- answer[i]=(short)string[i];
+ answer[i]=(short)string[i];
return answer;
}
LPSTR HEAP_strdupWtoA(HANDLE heap, DWORD flags, LPCWSTR string)
int size, i;
char* answer;
if(string==0)
- return 0;
+ return 0;
size=0;
while(string[size])
size++;
answer = (char*) malloc(size + 2);
for(i=0; i<=size; i++)
- answer[i]=(char)string[i];
+ answer[i]=(char)string[i];
return answer;
}
if (unix_handle == -1)
{
#ifdef MAP_ANON
-// printf("Anonymous\n");
+// printf("Anonymous\n");
flags |= MAP_ANON;
#else
static int fdzero = -1;
{
if ((fdzero = open( "/dev/zero", O_RDONLY )) == -1)
{
- perror( "Cannot open /dev/zero for READ. Check permissions! error: " );
+ perror( "Cannot open /dev/zero for READ. Check permissions! error: " );
exit(1);
}
}
fd = fdzero;
#endif /* MAP_ANON */
- /* Linux EINVAL's on us if we don't pass MAP_PRIVATE to an anon mmap */
+ /* Linux EINVAL's on us if we don't pass MAP_PRIVATE to an anon mmap */
#ifdef MAP_SHARED
- flags &= ~MAP_SHARED;
+ flags &= ~MAP_SHARED;
#endif
#ifdef MAP_PRIVATE
- flags |= MAP_PRIVATE;
+ flags |= MAP_PRIVATE;
#endif
}
else fd = unix_handle;
if ((ret = mmap( start, size_low, prot,
MAP_PRIVATE | MAP_FIXED, fd, offset_low )) != (LPVOID)-1)
{
-// printf("address %08x\n", *(int*)ret);
-// printf("%x\n", ret);
- return ret;
+// printf("address %08x\n", *(int*)ret);
+// printf("%x\n", ret);
+ return ret;
}
// printf("mmap %d\n", errno);
{
/* We cannot fake shared write mappings */
#ifdef MAP_SHARED
- if (flags & MAP_SHARED) return ret;
+ if (flags & MAP_SHARED) return ret;
#endif
#ifdef MAP_PRIVATE
- if (!(flags & MAP_PRIVATE)) return ret;
+ if (!(flags & MAP_PRIVATE)) return ret;
#endif
}
/* printf( "FILE_mmap: mmap failed (%d), faking it\n", errno );*/
PROT_READ | PROT_WRITE, flags );
if (ret == (LPVOID)-1)
// {
-// perror(
- return ret;
+// perror(
+ return ret;
/* Now read in the file */
if ((pos = lseek( fd, offset_low, SEEK_SET )) == -1)
{
FILE_munmap( ret, size_high, size_low );
-// printf("lseek\n");
+// printf("lseek\n");
return (LPVOID)-1;
}
read( fd, ret, size_low );
-#define PAGE_NOACCESS 0x01
-#define PAGE_READONLY 0x02
-#define PAGE_READWRITE 0x04
-#define PAGE_WRITECOPY 0x08
-#define PAGE_EXECUTE 0x10
-#define PAGE_EXECUTE_READ 0x20
-#define PAGE_EXECUTE_READWRITE 0x40
-#define PAGE_EXECUTE_WRITECOPY 0x80
-#define PAGE_GUARD 0x100
-#define PAGE_NOCACHE 0x200
+#define PAGE_NOACCESS 0x01
+#define PAGE_READONLY 0x02
+#define PAGE_READWRITE 0x04
+#define PAGE_WRITECOPY 0x08
+#define PAGE_EXECUTE 0x10
+#define PAGE_EXECUTE_READ 0x20
+#define PAGE_EXECUTE_READWRITE 0x40
+#define PAGE_EXECUTE_WRITECOPY 0x80
+#define PAGE_GUARD 0x100
+#define PAGE_NOCACHE 0x200
HANDLE WINAPI CreateFileMappingA(HANDLE handle, LPSECURITY_ATTRIBUTES lpAttr,
- DWORD flProtect,
- DWORD dwMaxHigh, DWORD dwMaxLow,
- LPCSTR name)
+ DWORD flProtect,
+ DWORD dwMaxHigh, DWORD dwMaxLow,
+ LPCSTR name)
{
int hFile = (int)handle;
unsigned int len;
int mmap_access=0;
if(hFile<0)
{
- anon=1;
- hFile=open("/dev/zero", O_RDWR);
- if(hFile<0){
- perror( "Cannot open /dev/zero for READ+WRITE. Check permissions! error: " );
- return 0;
- }
+ anon=1;
+ hFile=open("/dev/zero", O_RDWR);
+ if(hFile<0){
+ perror( "Cannot open /dev/zero for READ+WRITE. Check permissions! error: " );
+ return 0;
+ }
}
if(!anon)
{
len=lseek(hFile, 0, SEEK_END);
- lseek(hFile, 0, SEEK_SET);
+ lseek(hFile, 0, SEEK_SET);
}
else len=dwMaxLow;
if(flProtect & PAGE_READONLY)
- mmap_access |=PROT_READ;
+ mmap_access |=PROT_READ;
else
- mmap_access |=PROT_READ|PROT_WRITE;
+ mmap_access |=PROT_READ|PROT_WRITE;
answer=mmap(NULL, len, mmap_access, MAP_PRIVATE, hFile, 0);
if(anon)
close(hFile);
if(answer!=(LPVOID)-1)
{
- if(fm==0)
- {
- fm = (file_mapping*) malloc(sizeof(file_mapping));
- fm->prev=NULL;
- }
- else
- {
- fm->next = (file_mapping*) malloc(sizeof(file_mapping));
- fm->next->prev=fm;
- fm=fm->next;
- }
- fm->next=NULL;
- fm->handle=answer;
- if(name)
- {
- fm->name = (char*) malloc(strlen(name)+1);
- strcpy(fm->name, name);
- }
- else
- fm->name=NULL;
- fm->mapping_size=len;
-
- if(anon)
- close(hFile);
- return (HANDLE)answer;
+ if(fm==0)
+ {
+ fm = (file_mapping*) malloc(sizeof(file_mapping));
+ fm->prev=NULL;
+ }
+ else
+ {
+ fm->next = (file_mapping*) malloc(sizeof(file_mapping));
+ fm->next->prev=fm;
+ fm=fm->next;
+ }
+ fm->next=NULL;
+ fm->handle=answer;
+ if(name)
+ {
+ fm->name = (char*) malloc(strlen(name)+1);
+ strcpy(fm->name, name);
+ }
+ else
+ fm->name=NULL;
+ fm->mapping_size=len;
+
+ if(anon)
+ close(hFile);
+ return (HANDLE)answer;
}
return (HANDLE)0;
}
file_mapping* p;
int result;
if(fm==0)
- return 0;
+ return 0;
for(p=fm; p; p=p->next)
{
- if(p->handle==handle)
- {
- result=munmap((void*)handle, p->mapping_size);
- if(p->next)p->next->prev=p->prev;
- if(p->prev)p->prev->next=p->next;
- if(p->name)
- free(p->name);
- if(p==fm)
- fm=p->prev;
- free(p);
- return result;
- }
+ if(p->handle==handle)
+ {
+ result=munmap((void*)handle, p->mapping_size);
+ if(p->next)p->next->prev=p->prev;
+ if(p->prev)p->prev->next=p->next;
+ if(p->name)
+ free(p->name);
+ if(p==fm)
+ fm=p->prev;
+ free(p);
+ return result;
+ }
}
return 0;
}
fd=open("/dev/zero", O_RDWR);
if(fd<0){
perror( "Cannot open /dev/zero for READ+WRITE. Check permissions! error: " );
- return NULL;
+ return NULL;
}
if (type&MEM_RESERVE && (unsigned)address&0xffff) {
- size += (unsigned)address&0xffff;
- address = (unsigned)address&~0xffff;
+ size += (unsigned)address&0xffff;
+ address = (unsigned)address&~0xffff;
}
pgsz = sysconf(_SC_PAGESIZE);
if (type&MEM_COMMIT && (unsigned)address%pgsz) {
- size += (unsigned)address%pgsz;
- address -= (unsigned)address%pgsz;
+ size += (unsigned)address%pgsz;
+ address -= (unsigned)address%pgsz;
}
if (type&MEM_RESERVE && size<0x10000) size = 0x10000;
virt_alloc* str=vm;
while(str)
{
- if((unsigned)address>=(unsigned)str->address+str->mapping_size)
- {
- str=str->prev;
- continue;
- }
- if((unsigned)address+size<=(unsigned)str->address)
- {
- str=str->prev;
- continue;
- }
- if(str->state==0)
- {
+ if((unsigned)address>=(unsigned)str->address+str->mapping_size)
+ {
+ str=str->prev;
+ continue;
+ }
+ if((unsigned)address+size<=(unsigned)str->address)
+ {
+ str=str->prev;
+ continue;
+ }
+ if(str->state==0)
+ {
#warning FIXME
- if( ((unsigned)address >= (unsigned)str->address)
- && ((unsigned)address+size<=(unsigned)str->address+str->mapping_size)
- && (type & MEM_COMMIT))
- {
- close(fd);
- return address; //returning previously reserved memory
- }
- //printf(" VirtualAlloc(...) does not commit or not entirely within reserved, and\n");
- }
- /*printf(" VirtualAlloc(...) (0x%08X, %u) overlaps with (0x%08X, %u, state=%d)\n",
- (unsigned)address, size, (unsigned)str->address, str->mapping_size, str->state);*/
- close(fd);
- return NULL;
- }
+ if( ((unsigned)address >= (unsigned)str->address)
+ && ((unsigned)address+size<=(unsigned)str->address+str->mapping_size)
+ && (type & MEM_COMMIT))
+ {
+ close(fd);
+ return address; //returning previously reserved memory
+ }
+ //printf(" VirtualAlloc(...) does not commit or not entirely within reserved, and\n");
+ }
+ /*printf(" VirtualAlloc(...) (0x%08X, %u) overlaps with (0x%08X, %u, state=%d)\n",
+ (unsigned)address, size, (unsigned)str->address, str->mapping_size, str->state);*/
+ close(fd);
+ return NULL;
+ }
}
answer=mmap(address, size, PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_PRIVATE, fd, 0);
+ MAP_PRIVATE, fd, 0);
// answer=FILE_dommap(-1, address, 0, size, 0, 0,
-// PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);
+// PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);
close(fd);
if (answer != (void *)-1 && address && answer != address) {
- /* It is dangerous to try mmap() with MAP_FIXED since it does not
- always detect conflicts or non-allocation and chaos ensues after
- a successful call but an overlapping or non-allocated region. */
- munmap(answer, size);
- answer = (void *) -1;
- errno = EINVAL;
- //printf(" VirtualAlloc(...) cannot satisfy requested address but address=NULL would work.\n");
+ /* It is dangerous to try mmap() with MAP_FIXED since it does not
+ always detect conflicts or non-allocation and chaos ensues after
+ a successful call but an overlapping or non-allocated region. */
+ munmap(answer, size);
+ answer = (void *) -1;
+ errno = EINVAL;
+ //printf(" VirtualAlloc(...) cannot satisfy requested address but address=NULL would work.\n");
}
if(answer==(void*)-1)
{
- /*printf(" VirtualAlloc(...) mmap(0x%08X, %u, ...) failed with errno=%d (\"%s\")\n",
- (unsigned)address, size, errno, strerror(errno));*/
- return NULL;
+ /*printf(" VirtualAlloc(...) mmap(0x%08X, %u, ...) failed with errno=%d (\"%s\")\n",
+ (unsigned)address, size, errno, strerror(errno));*/
+ return NULL;
}
else
{
- virt_alloc *new_vm = (virt_alloc*) malloc(sizeof(virt_alloc));
- new_vm->mapping_size=size;
- new_vm->address=(char*)answer;
+ virt_alloc *new_vm = (virt_alloc*) malloc(sizeof(virt_alloc));
+ new_vm->mapping_size=size;
+ new_vm->address=(char*)answer;
new_vm->prev=vm;
- if(type == MEM_RESERVE)
- new_vm->state=0;
- else
- new_vm->state=1;
- if(vm)
- vm->next=new_vm;
- vm=new_vm;
- vm->next=0;
- //if(va_size!=0)
- // printf("Multiple VirtualAlloc!\n");
- //printf(" VirtualAlloc(...) provides (0x%08X, %u)\n", (unsigned)answer, size);
+ if(type == MEM_RESERVE)
+ new_vm->state=0;
+ else
+ new_vm->state=1;
+ if(vm)
+ vm->next=new_vm;
+ vm=new_vm;
+ vm->next=0;
+ //if(va_size!=0)
+ // printf("Multiple VirtualAlloc!\n");
+ //printf(" VirtualAlloc(...) provides (0x%08X, %u)\n", (unsigned)answer, size);
return answer;
}
}
//printf("VirtualFree(0x%08X, %d, 0x%08X)\n", (unsigned)address, dwSize, dwFreeType);
while(str)
{
- if(address!=str->address)
- {
- str=str->prev;
- continue;
- }
- //printf(" VirtualFree(...) munmap(0x%08X, %d)\n", (unsigned)str->address, str->mapping_size);
- answer=munmap(str->address, str->mapping_size);
- if(str->next)str->next->prev=str->prev;
- if(str->prev)str->prev->next=str->next;
- if(vm==str)vm=str->prev;
- free(str);
- return 0;
+ if(address!=str->address)
+ {
+ str=str->prev;
+ continue;
+ }
+ //printf(" VirtualFree(...) munmap(0x%08X, %d)\n", (unsigned)str->address, str->mapping_size);
+ answer=munmap(str->address, str->mapping_size);
+ if(str->next)str->next->prev=str->prev;
+ if(str->prev)str->prev->next=str->next;
+ if(vm==str)vm=str->prev;
+ free(str);
+ return 0;
}
return -1;
}
{
int i;
if(src==0)
- return 0;
+ return 0;
if ((srclen==-1)&&(dest==0)) return 0;
if(srclen==-1){srclen=0; while(src[srclen++]);}
// for(i=0; i<srclen; i++)
-// printf("%c", src[i]);
+// printf("%c", src[i]);
// printf("\n");
if(dest==0)
{
for(i=0; i<srclen; i++)
{
- src++;
- if(*src==0)
- return i+1;
+ src++;
+ if(*src==0)
+ return i+1;
}
- return srclen+1;
+ return srclen+1;
}
if(used_defch)
- *used_defch=0;
+ *used_defch=0;
for(i=0; i<min(srclen, destlen); i++)
{
- *dest=(char)*src;
- dest++;
- src++;
- if(*src==0)
- return i+1;
+ *dest=(char)*src;
+ dest++;
+ src++;
+ if(*src==0)
+ return i+1;
}
return min(srclen, destlen);
}
{
file_mapping* p;
if(fm==0)
- return (HANDLE)0;
+ return (HANDLE)0;
if(name==0)
- return (HANDLE)0;
+ return (HANDLE)0;
for(p=fm; p; p=p->prev)
{
- if(p->name==0)
- continue;
- if(strcmp(p->name, name)==0)
- return (HANDLE)p->handle;
+ if(p->name==0)
+ continue;
+ if(strcmp(p->name, name)==0)
+ return (HANDLE)p->handle;
}
return 0;
}
#include "wine/windef.h"
extern LPVOID FILE_dommap( int unix_handle, LPVOID start,
- DWORD size_high, DWORD size_low,
- DWORD offset_high, DWORD offset_low,
- int prot, int flags );
+ DWORD size_high, DWORD size_low,
+ DWORD offset_high, DWORD offset_low,
+ int prot, int flags );
extern int FILE_munmap( LPVOID start, DWORD size_high, DWORD size_low );
extern int wcsnicmp(const unsigned short* s1, const unsigned short* s2, int n);
extern int __vprintf( const char *format, ... );
int dbg_printf(const char *format, ...)
{
- return 0;
+ return 0;
}
unsigned int ldt_desc = LDT_SEL(fs_ldt);
__asm__ __volatile__(
- "movl %0,%%eax; movw %%ax, %%fs" : : "r" (ldt_desc)
- :"eax"
+ "movl %0,%%eax; movw %%ax, %%fs" : : "r" (ldt_desc)
+ :"eax"
);
}
/* XXX: why is this routine from libc redefined here? */
/* NOTE: the redefined version ignores the count param, count is hardcoded as 16 */
static int LDT_Modify( int func, struct modify_ldt_ldt_s *ptr,
- unsigned long count )
+ unsigned long count )
{
int res;
#ifdef __PIC__
__asm__ __volatile__( "pushl %%ebx\n\t"
- "movl %2,%%ebx\n\t"
- "int $0x80\n\t"
- "popl %%ebx"
- : "=a" (res)
- : "0" (__NR_modify_ldt),
- "r" (func),
- "c" (ptr),
- "d"(16)//sizeof(*ptr) from kernel point of view
- :"esi" );
+ "movl %2,%%ebx\n\t"
+ "int $0x80\n\t"
+ "popl %%ebx"
+ : "=a" (res)
+ : "0" (__NR_modify_ldt),
+ "r" (func),
+ "c" (ptr),
+ "d"(16)//sizeof(*ptr) from kernel point of view
+ :"esi" );
#else
__asm__ __volatile__("int $0x80"
- : "=a" (res)
- : "0" (__NR_modify_ldt),
- "b" (func),
- "c" (ptr),
- "d"(16)
- :"esi");
+ : "=a" (res)
+ : "0" (__NR_modify_ldt),
+ "b" (func),
+ "c" (ptr),
+ "d"(16)
+ :"esi");
#endif /* __PIC__ */
if (res >= 0) return res;
errno = -res;
static void LDT_EntryToBytes( unsigned long *buffer, const struct modify_ldt_ldt_s *content )
{
*buffer++ = ((content->base_addr & 0x0000ffff) << 16) |
- (content->limit & 0x0ffff);
+ (content->limit & 0x0ffff);
*buffer = (content->base_addr & 0xff000000) |
- ((content->base_addr & 0x00ff0000)>>16) |
- (content->limit & 0xf0000) |
- (content->contents << 10) |
- ((content->read_exec_only == 0) << 9) |
- ((content->seg_32bit != 0) << 22) |
- ((content->limit_in_pages != 0) << 23) |
- 0xf000;
+ ((content->base_addr & 0x00ff0000)>>16) |
+ (content->limit & 0xf0000) |
+ (content->contents << 10) |
+ ((content->read_exec_only == 0) << 9) |
+ ((content->seg_32bit != 0) << 22) |
+ ((content->limit_in_pages != 0) << 23) |
+ 0xf000;
}
#endif
ldt_fs_t* ldt_fs = (ldt_fs_t*) malloc(sizeof(ldt_fs_t));
if (!ldt_fs)
- return NULL;
+ return NULL;
ldt_fs->fd = open("/dev/zero", O_RDWR);
if(ldt_fs->fd<0){
perror( "Cannot open /dev/zero for READ+WRITE. Check permissions! error: ");
- return NULL;
+ return NULL;
}
fs_seg=
ldt_fs->fs_seg = mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE, MAP_PRIVATE,
- ldt_fs->fd, 0);
+ ldt_fs->fd, 0);
if (ldt_fs->fs_seg == (void*)-1)
{
- perror("ERROR: Couldn't allocate memory for fs segment");
+ perror("ERROR: Couldn't allocate memory for fs segment");
close(ldt_fs->fd);
free(ldt_fs);
- return NULL;
+ return NULL;
}
*(void**)((char*)ldt_fs->fs_seg+0x18) = ldt_fs->fs_seg;
memset(&array, 0, sizeof(array));
ret=modify_ldt(0x1, &array, sizeof(struct modify_ldt_ldt_s));
if(ret<0)
{
- perror("install_fs");
- printf("Couldn't install fs segment, expect segfault\n");
+ perror("install_fs");
+ printf("Couldn't install fs segment, expect segfault\n");
}
#endif /*linux*/
if (ret < 0)
{
perror("install_fs");
- printf("Couldn't install fs segment, expect segfault\n");
+ printf("Couldn't install fs segment, expect segfault\n");
printf("Did you reconfigure the kernel with \"options USER_LDT\"?\n");
}
}
#if defined(__svr4__)
{
- struct ssd ssd;
- ssd.sel = LDT_SEL(TEB_SEL_IDX);
- ssd.bo = array.base_addr;
- ssd.ls = array.limit - array.base_addr;
- ssd.acc1 = ((array.read_exec_only == 0) << 1) |
- (array.contents << 2) |
- 0xf0; /* P(resent) | DPL3 | S */
- ssd.acc2 = 0x4; /* byte limit, 32-bit segment */
- if (sysi86(SI86DSCR, &ssd) < 0) {
- perror("sysi86(SI86DSCR)");
- printf("Couldn't install fs segment, expect segfault\n");
- }
+ struct ssd ssd;
+ ssd.sel = LDT_SEL(TEB_SEL_IDX);
+ ssd.bo = array.base_addr;
+ ssd.ls = array.limit - array.base_addr;
+ ssd.acc1 = ((array.read_exec_only == 0) << 1) |
+ (array.contents << 2) |
+ 0xf0; /* P(resent) | DPL3 | S */
+ ssd.acc2 = 0x4; /* byte limit, 32-bit segment */
+ if (sysi86(SI86DSCR, &ssd) < 0) {
+ perror("sysi86(SI86DSCR)");
+ printf("Couldn't install fs segment, expect segfault\n");
+ }
}
#endif
void Restore_LDT_Keeper(ldt_fs_t* ldt_fs)
{
if (ldt_fs == NULL || ldt_fs->fs_seg == 0)
- return;
+ return;
if (ldt_fs->prev_struct)
- free(ldt_fs->prev_struct);
+ free(ldt_fs->prev_struct);
munmap((char*)ldt_fs->fs_seg, getpagesize());
ldt_fs->fs_seg = 0;
close(ldt_fs->fd);
unsigned int _GetPrivateProfileIntA(const char* appname, const char* keyname, int default_value, const char* filename);
int _GetPrivateProfileStringA(const char* appname, const char* keyname,
- const char* def_val, char* dest, unsigned int len, const char* filename);
+ const char* def_val, char* dest, unsigned int len, const char* filename);
int _WritePrivateProfileStringA(const char* appname, const char* keyname,
- const char* string, const char* filename);
+ const char* string, const char* filename);
INT WINAPI LoadStringA( HINSTANCE instance, UINT resource_id,
LPSTR buffer, INT buflen );
modref_list* list=local_wm;
TRACE("FindModule: Module %s request\n", m);
if(list==NULL)
- return NULL;
+ return NULL;
// while(strcmp(m, list->wm->filename))
while(!strstr(list->wm->filename, m))
{
- TRACE("%s: %x\n", list->wm->filename, list->wm->module);
- list=list->prev;
- if(list==NULL)
- return NULL;
+ TRACE("%s: %x\n", list->wm->filename, list->wm->module);
+ list=list->prev;
+ if(list==NULL)
+ return NULL;
}
TRACE("Resolved to %s\n", list->wm->filename);
return list->wm;
{
modref_list* list=local_wm;
if(list==0)
- return;
+ return;
if(mod==0)
- return;
+ return;
if((list->prev==NULL)&&(list->next==NULL))
{
- free(list);
- local_wm=NULL;
-// uninstall_fs();
- return;
+ free(list);
+ local_wm=NULL;
+// uninstall_fs();
+ return;
}
for(;list;list=list->prev)
{
- if(list->wm==mod)
- {
- if(list->prev)
- list->prev->next=list->next;
- if(list->next)
- list->next->prev=list->prev;
- if(list==local_wm)
- local_wm=list->prev;
- free(list);
- return;
- }
+ if(list->wm==mod)
+ {
+ if(list->prev)
+ list->prev->next=list->next;
+ if(list->next)
+ list->next->prev=list->prev;
+ if(list==local_wm)
+ local_wm=list->prev;
+ free(list);
+ return;
+ }
}
}
TRACE("LookupHMODULE: Module %X request\n", m);
if(list==NULL)
{
- TRACE("LookupHMODULE failed\n");
- return NULL;
+ TRACE("LookupHMODULE failed\n");
+ return NULL;
}
while(m!=list->wm->module)
{
// printf("Checking list %X wm %X module %X\n",
-// list, list->wm, list->wm->module);
- list=list->prev;
- if(list==NULL)
- {
- TRACE("LookupHMODULE failed\n");
- return NULL;
- }
+// list, list->wm, list->wm->module);
+ list=list->prev;
+ if(list==NULL)
+ {
+ TRACE("LookupHMODULE failed\n");
+ return NULL;
+ }
}
TRACE("LookupHMODULE hit %p\n", list->wm);
return list->wm;
}
/*************************************************************************
- * MODULE_InitDll
+ * MODULE_InitDll
*/
static WIN_BOOL MODULE_InitDll( WINE_MODREF *wm, DWORD type, LPVOID lpReserved )
{
}
/*************************************************************************
- * MODULE_DllProcessAttach
+ * MODULE_DllProcessAttach
*
* Send the process attach notification to all DLLs the given module
* depends on (recursively). This is somewhat complicated due to the fact that
//local_wm=wm;
if(local_wm)
{
- local_wm->next = (modref_list*) malloc(sizeof(modref_list));
+ local_wm->next = (modref_list*) malloc(sizeof(modref_list));
local_wm->next->prev=local_wm;
local_wm->next->next=NULL;
local_wm->next->wm=wm;
}
else
{
- local_wm = (modref_list*)malloc(sizeof(modref_list));
- local_wm->next=local_wm->prev=NULL;
- local_wm->wm=wm;
+ local_wm = (modref_list*)malloc(sizeof(modref_list));
+ local_wm->next=local_wm->prev=NULL;
+ local_wm->wm=wm;
}
/* Remove recursion flag */
wm->flags &= ~WINE_MODREF_MARKER;
}
/*************************************************************************
- * MODULE_DllProcessDetach
+ * MODULE_DllProcessDetach
*
* Send DLL process detach notifications. See the comment about calling
* sequence at MODULE_DllProcessAttach. Unless the bForceDetach flag
MODULE_InitDll( wm, DLL_PROCESS_DETACH, lpReserved );
/* while (l)
{
- modref_list* f = l;
- l = l->next;
- free(f);
+ modref_list* f = l;
+ l = l->next;
+ free(f);
}
local_wm = 0;*/
}
/***********************************************************************
- * MODULE_LoadLibraryExA (internal)
+ * MODULE_LoadLibraryExA (internal)
*
* Load a PE style module according to the load order.
*
*/
static WINE_MODREF *MODULE_LoadLibraryExA( LPCSTR libname, HFILE hfile, DWORD flags )
{
- DWORD err = GetLastError();
- WINE_MODREF *pwm;
- int i;
-// module_loadorder_t *plo;
+ DWORD err = GetLastError();
+ WINE_MODREF *pwm;
+ int i;
+// module_loadorder_t *plo;
SetLastError( ERROR_FILE_NOT_FOUND );
- TRACE("Trying native dll '%s'\n", libname);
- pwm = PE_LoadLibraryExA(libname, flags);
+ TRACE("Trying native dll '%s'\n", libname);
+ pwm = PE_LoadLibraryExA(libname, flags);
#ifdef HAVE_LIBDL
- if(!pwm)
- {
- TRACE("Trying ELF dll '%s'\n", libname);
- pwm=(WINE_MODREF*)ELFDLL_LoadLibraryExA(libname, flags);
- }
+ if(!pwm)
+ {
+ TRACE("Trying ELF dll '%s'\n", libname);
+ pwm=(WINE_MODREF*)ELFDLL_LoadLibraryExA(libname, flags);
+ }
#endif
-// printf("0x%08x\n", pwm);
-// break;
- if(pwm)
- {
- /* Initialize DLL just loaded */
- TRACE("Loaded module '%s' at 0x%08x, \n", libname, pwm->module);
- /* Set the refCount here so that an attach failure will */
- /* decrement the dependencies through the MODULE_FreeLibrary call. */
- pwm->refCount++;
+// printf("0x%08x\n", pwm);
+// break;
+ if(pwm)
+ {
+ /* Initialize DLL just loaded */
+ TRACE("Loaded module '%s' at 0x%08x, \n", libname, pwm->module);
+ /* Set the refCount here so that an attach failure will */
+ /* decrement the dependencies through the MODULE_FreeLibrary call. */
+ pwm->refCount++;
SetLastError( err ); /* restore last error */
- return pwm;
- }
+ return pwm;
+ }
- WARN("Failed to load module '%s'; error=0x%08lx, \n", libname, GetLastError());
- return NULL;
+ WARN("Failed to load module '%s'; error=0x%08lx, \n", libname, GetLastError());
+ return NULL;
}
/***********************************************************************
*/
HMODULE WINAPI LoadLibraryExA(LPCSTR libname, HANDLE hfile, DWORD flags)
{
- WINE_MODREF *wm = 0;
- char* listpath[] = { "", "", "/usr/lib/win32", "/usr/local/lib/win32", "/usr/lib/codecs", "/usr/local/lib/codecs", 0 };
- extern char* def_path;
- char path[512];
- char checked[2000];
+ WINE_MODREF *wm = 0;
+ char* listpath[] = { "", "", "/usr/lib/win32", "/usr/local/lib/win32", "/usr/lib/codecs", "/usr/local/lib/codecs", 0 };
+ extern char* def_path;
+ char path[512];
+ char checked[2000];
int i = -1;
checked[0] = 0;
- if(!libname)
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- return 0;
- }
-
- wm=MODULE_FindModule(libname);
- if(wm) return wm->module;
-
-// if(fs_installed==0)
-// install_fs();
-
- while (wm == 0 && listpath[++i])
- {
- if (i < 2)
- {
- if (i == 0)
- /* check just original file name */
- strncpy(path, libname, 511);
+ if(!libname)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return 0;
+ }
+
+ wm=MODULE_FindModule(libname);
+ if(wm) return wm->module;
+
+// if(fs_installed==0)
+// install_fs();
+
+ while (wm == 0 && listpath[++i])
+ {
+ if (i < 2)
+ {
+ if (i == 0)
+ /* check just original file name */
+ strncpy(path, libname, 511);
else
- /* check default user path */
- strncpy(path, def_path, 300);
- }
- else if (strcmp(def_path, listpath[i]))
+ /* check default user path */
+ strncpy(path, def_path, 300);
+ }
+ else if (strcmp(def_path, listpath[i]))
/* path from the list */
- strncpy(path, listpath[i], 300);
- else
- continue;
-
- if (i > 0)
- {
- strcat(path, "/");
- strncat(path, libname, 100);
- }
- path[511] = 0;
- wm = MODULE_LoadLibraryExA( path, hfile, flags );
-
- if (!wm)
- {
- if (checked[0])
- strcat(checked, ", ");
- strcat(checked, path);
+ strncpy(path, listpath[i], 300);
+ else
+ continue;
+
+ if (i > 0)
+ {
+ strcat(path, "/");
+ strncat(path, libname, 100);
+ }
+ path[511] = 0;
+ wm = MODULE_LoadLibraryExA( path, hfile, flags );
+
+ if (!wm)
+ {
+ if (checked[0])
+ strcat(checked, ", ");
+ strcat(checked, path);
checked[1500] = 0;
- }
- }
- if ( wm )
- {
- if ( !MODULE_DllProcessAttach( wm, NULL ) )
- {
- WARN_(module)("Attach failed for module '%s', \n", libname);
- MODULE_FreeLibrary(wm);
- SetLastError(ERROR_DLL_INIT_FAILED);
- MODULE_RemoveFromList(wm);
- wm = NULL;
- }
- }
-
- if (!wm)
- printf("Win32 LoadLibrary failed to load: %s\n", checked);
-
- if (strstr(libname,"vp31vfw.dll") && wm)
- {
- int i;
-
- // sse hack moved from patch dll into runtime patching
+ }
+ }
+ if ( wm )
+ {
+ if ( !MODULE_DllProcessAttach( wm, NULL ) )
+ {
+ WARN_(module)("Attach failed for module '%s', \n", libname);
+ MODULE_FreeLibrary(wm);
+ SetLastError(ERROR_DLL_INIT_FAILED);
+ MODULE_RemoveFromList(wm);
+ wm = NULL;
+ }
+ }
+
+ if (!wm)
+ printf("Win32 LoadLibrary failed to load: %s\n", checked);
+
+ if (strstr(libname,"vp31vfw.dll") && wm)
+ {
+ int i;
+
+ // sse hack moved from patch dll into runtime patching
if (PE_FindExportedFunction(wm, "DriverProc", TRUE)==(void*)0x10001000) {
- fprintf(stderr, "VP3 DLL found\n");
- for (i=0;i<18;i++) ((char*)0x10004bd6)[i]=0x90;
- }
- }
+ fprintf(stderr, "VP3 DLL found\n");
+ for (i=0;i<18;i++) ((char*)0x10004bd6)[i]=0x90;
+ }
+ }
// remove a few divs in the VP codecs that make trouble
if (strstr(libname,"vp5vfw.dll") && wm)
}
}
- if (strstr(libname,"QuickTime.qts") && wm)
- {
- void** ptr;
- void *dispatch_addr;
- int i;
-
-// dispatch_addr = GetProcAddress(wm->module, "theQuickTimeDispatcher", TRUE);
- dispatch_addr = PE_FindExportedFunction(wm, "theQuickTimeDispatcher", TRUE);
- if (dispatch_addr == (void *)0x62924c30)
- {
- fprintf(stderr, "QuickTime5 DLLs found\n");
- ptr = (void **)0x62b75ca4; // dispatch_ptr
- for (i=0;i<5;i++) ((char*)0x6299e842)[i]=0x90; // make_new_region ?
- for (i=0;i<28;i++) ((char*)0x6299e86d)[i]=0x90; // call__call_CreateCompatibleDC ?
- for (i=0;i<5;i++) ((char*)0x6299e898)[i]=0x90; // jmp_to_call_loadbitmap ?
- for (i=0;i<9;i++) ((char*)0x6299e8ac)[i]=0x90; // call__calls_OLE_shit ?
- for (i=0;i<106;i++) ((char*)0x62a61b10)[i]=0x90; // disable threads
+ if (strstr(libname,"QuickTime.qts") && wm)
+ {
+ void** ptr;
+ void *dispatch_addr;
+ int i;
+
+// dispatch_addr = GetProcAddress(wm->module, "theQuickTimeDispatcher", TRUE);
+ dispatch_addr = PE_FindExportedFunction(wm, "theQuickTimeDispatcher", TRUE);
+ if (dispatch_addr == (void *)0x62924c30)
+ {
+ fprintf(stderr, "QuickTime5 DLLs found\n");
+ ptr = (void **)0x62b75ca4; // dispatch_ptr
+ for (i=0;i<5;i++) ((char*)0x6299e842)[i]=0x90; // make_new_region ?
+ for (i=0;i<28;i++) ((char*)0x6299e86d)[i]=0x90; // call__call_CreateCompatibleDC ?
+ for (i=0;i<5;i++) ((char*)0x6299e898)[i]=0x90; // jmp_to_call_loadbitmap ?
+ for (i=0;i<9;i++) ((char*)0x6299e8ac)[i]=0x90; // call__calls_OLE_shit ?
+ for (i=0;i<106;i++) ((char*)0x62a61b10)[i]=0x90; // disable threads
#if 0
- /* CreateThread callers */
- for (i=0;i<5;i++) ((char*)0x629487c5)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x6294b275)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x629a24b1)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x629afc5a)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x62af799c)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x62af7efe)[i]=0x90;
- for (i=0;i<5;i++) ((char*)0x62afa33e)[i]=0x90;
+ /* CreateThread callers */
+ for (i=0;i<5;i++) ((char*)0x629487c5)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x6294b275)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x629a24b1)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x629afc5a)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x62af799c)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x62af7efe)[i]=0x90;
+ for (i=0;i<5;i++) ((char*)0x62afa33e)[i]=0x90;
#endif
#if 0
- /* TerminateQTML fix */
- for (i=0;i<47;i++) ((char*)0x62afa3b8)[i]=0x90; // terminate thread
- for (i=0;i<47;i++) ((char*)0x62af7f78)[i]=0x90; // terminate thread
- for (i=0;i<77;i++) ((char*)0x629a13d5)[i]=0x90;
- ((char *)0x6288e0ae)[0] = 0xc3; // font/dc remover
- for (i=0;i<24;i++) ((char*)0x6287a1ad)[i]=0x90; // destroy window
+ /* TerminateQTML fix */
+ for (i=0;i<47;i++) ((char*)0x62afa3b8)[i]=0x90; // terminate thread
+ for (i=0;i<47;i++) ((char*)0x62af7f78)[i]=0x90; // terminate thread
+ for (i=0;i<77;i++) ((char*)0x629a13d5)[i]=0x90;
+ ((char *)0x6288e0ae)[0] = 0xc3; // font/dc remover
+ for (i=0;i<24;i++) ((char*)0x6287a1ad)[i]=0x90; // destroy window
#endif
- } else if (dispatch_addr == (void *)0x6693b330)
- {
- fprintf(stderr, "QuickTime6 DLLs found\n");
- ptr = (void **)0x66bb9524; // dispatcher_ptr
- for (i=0;i<5;i++) ((char *)0x66a730cc)[i]=0x90; // make_new_region
- for (i=0;i<28;i++) ((char *)0x66a730f7)[i]=0x90; // call__call_CreateCompatibleDC
- for (i=0;i<5;i++) ((char *)0x66a73122)[i]=0x90; // jmp_to_call_loadbitmap
- for (i=0;i<9;i++) ((char *)0x66a73131)[i]=0x90; // call__calls_OLE_shit
- for (i=0;i<96;i++) ((char *)0x66aac852)[i]=0x90; // disable threads
- } else if (dispatch_addr == (void *)0x6693c3e0)
- {
- fprintf(stderr, "QuickTime6.3 DLLs found\n");
- ptr = (void **)0x66bca01c; // dispatcher_ptr
- for (i=0;i<5;i++) ((char *)0x66a68f6c)[i]=0x90; // make_new_region
- for (i=0;i<28;i++) ((char *)0x66a68f97)[i]=0x90; // call__call_CreateCompatibleDC
- for (i=0;i<5;i++) ((char *)0x66a68fc2)[i]=0x90; // jmp_to_call_loadbitmap
- for (i=0;i<9;i++) ((char *)0x66a68fd1)[i]=0x90; // call__calls_OLE_shit
- for (i=0;i<96;i++) ((char *)0x66ab4722)[i]=0x90; // disable threads
- } else
- {
- fprintf(stderr, "Unsupported QuickTime version (%p)\n",
- dispatch_addr);
- return 0;
- }
-
- fprintf(stderr,"QuickTime.qts patched!!! old entry=%p\n",ptr[0]);
+ } else if (dispatch_addr == (void *)0x6693b330)
+ {
+ fprintf(stderr, "QuickTime6 DLLs found\n");
+ ptr = (void **)0x66bb9524; // dispatcher_ptr
+ for (i=0;i<5;i++) ((char *)0x66a730cc)[i]=0x90; // make_new_region
+ for (i=0;i<28;i++) ((char *)0x66a730f7)[i]=0x90; // call__call_CreateCompatibleDC
+ for (i=0;i<5;i++) ((char *)0x66a73122)[i]=0x90; // jmp_to_call_loadbitmap
+ for (i=0;i<9;i++) ((char *)0x66a73131)[i]=0x90; // call__calls_OLE_shit
+ for (i=0;i<96;i++) ((char *)0x66aac852)[i]=0x90; // disable threads
+ } else if (dispatch_addr == (void *)0x6693c3e0)
+ {
+ fprintf(stderr, "QuickTime6.3 DLLs found\n");
+ ptr = (void **)0x66bca01c; // dispatcher_ptr
+ for (i=0;i<5;i++) ((char *)0x66a68f6c)[i]=0x90; // make_new_region
+ for (i=0;i<28;i++) ((char *)0x66a68f97)[i]=0x90; // call__call_CreateCompatibleDC
+ for (i=0;i<5;i++) ((char *)0x66a68fc2)[i]=0x90; // jmp_to_call_loadbitmap
+ for (i=0;i<9;i++) ((char *)0x66a68fd1)[i]=0x90; // call__calls_OLE_shit
+ for (i=0;i<96;i++) ((char *)0x66ab4722)[i]=0x90; // disable threads
+ } else
+ {
+ fprintf(stderr, "Unsupported QuickTime version (%p)\n",
+ dispatch_addr);
+ return 0;
+ }
+
+ fprintf(stderr,"QuickTime.qts patched!!! old entry=%p\n",ptr[0]);
#ifdef EMU_QTX_API
- report_entry = report_func;
- report_ret = report_func_ret;
- wrapper_target=ptr[0];
- ptr[0]=wrapper;
+ report_entry = report_func;
+ report_ret = report_func_ret;
+ wrapper_target=ptr[0];
+ ptr[0]=wrapper;
#endif
- }
+ }
- return wm ? wm->module : 0;
+ return wm ? wm->module : 0;
}
* LoadLibraryA (KERNEL32)
*/
HMODULE WINAPI LoadLibraryA(LPCSTR libname) {
- return LoadLibraryExA(libname,0,0);
+ return LoadLibraryExA(libname,0,0);
}
/***********************************************************************
if ( !wm || !hLibModule )
{
SetLastError( ERROR_INVALID_HANDLE );
- return 0;
+ return 0;
}
else
retv = MODULE_FreeLibrary( wm );
}
/***********************************************************************
- * GetProcAddress (KERNEL32.257)
+ * GetProcAddress (KERNEL32.257)
*/
FARPROC WINAPI GetProcAddress( HMODULE hModule, LPCSTR function )
{
#ifdef DEBUG_QTX_API
-/*
+/*
http://lists.apple.com/archives/quicktime-api/2003/Jan/msg00278.html
*/
fprintf(stderr,"%*sComponentCall: %s flags=0x%X size=%d what=0x%X %s\n",3*c_level,"",name,params->flags, params->paramSize, params->what, component_func(params->what));
for(i=0;i<params->paramSize/4;i++)
- fprintf(stderr,"%*s param[%d] = 0x%X\n",3*c_level,"",i,params->params[i]);
+ fprintf(stderr,"%*s param[%d] = 0x%X\n",3*c_level,"",i,params->params[i]);
++c_level;
ret=orig(params,glob);
--c_level;
-
+
if(ret>=0x1000)
- fprintf(stderr,"%*s return=0x%X\n",3*c_level,"",ret);
+ fprintf(stderr,"%*s return=0x%X\n",3*c_level,"",ret);
else
- fprintf(stderr,"%*s return=%d\n",3*c_level,"",ret);
+ fprintf(stderr,"%*s return=%d\n",3*c_level,"",ret);
return ret;
}
#define DECL_COMPONENT(sname,name,type) \
static void* real_ ## sname = NULL; \
static int fake_ ## sname(ComponentParameters *params,void** glob){ \
- return dump_component(name,type,real_ ## sname, params, glob); \
+ return dump_component(name,type,real_ ## sname, params, glob); \
}
#include "qt_comp.h"
char* pname=NULL;
int plen=-1;
// find the code:
-
+
dptr=0x62b67ae0;dptr+=2*((reg->eax>>16)&255);
// printf("FUNC: flag=%d ptr=%p\n",dptr[0],dptr[1]);
if(dptr[0]&255){
dptr=dptr[1];dptr+=4*(reg->eax&65535);
// printf("FUNC: ptr2=%p eax=%p edx=%p\n",dptr[1],dptr[0],dptr[2]);
- pwrapper=dptr[1]; pptr=dptr[0]; plen=dptr[2];
+ pwrapper=dptr[1]; pptr=dptr[0]; plen=dptr[2];
} else {
pwrapper=0x62924910;
switch(dptr[1]){
case 0x629248d0:
dptr=0x62b672c0;dptr+=2*(reg->eax&65535);
// printf("FUNC: ptr2=%p eax=%p edx=%p\n",0x62924910,dptr[0],dptr[1]);
- pptr=dptr[0]; plen=dptr[1];
- break;
+ pptr=dptr[0]; plen=dptr[1];
+ break;
case 0x62924e40:
dptr=0x62b67c70;dptr+=2*(reg->eax&65535);
// printf("FUNC: ptr2=%p eax=%p edx=%p\n",0x62924910,dptr[0],dptr[1]);
- pptr=dptr[0]; plen=dptr[1];
- break;
+ pptr=dptr[0]; plen=dptr[1];
+ break;
case 0x62924e60:
dptr=0x62b68108;if(reg->eax&0x8000) dptr+=2*(reg->eax|0xffff0000); else dptr+=2*(reg->eax&65535);
// printf("FUNC: ptr2=%p eax=%p edx=%p\n",0x62924910,dptr[0],dptr[1]);
- pptr=dptr[0]; plen=dptr[1];
- break;
+ pptr=dptr[0]; plen=dptr[1];
+ break;
case 0x62924e80:
dptr=0x62b68108;if(reg->eax&0x8000) dptr+=2*(reg->eax|0xffff0000); else dptr+=2*(reg->eax&65535);
// printf("FUNC: ptr2=%p eax=%p edx=%p\n",0x62924910,dptr[0],dptr[1]);
- pptr=dptr[0]; plen=dptr[1];
- break;
+ pptr=dptr[0]; plen=dptr[1];
+ break;
default:
printf("FUNC: unknown ptr & psize!\n");
- pwrapper=dptr[1];
+ pwrapper=dptr[1];
}
}
for(i=0;qt_fv_list[i].name;i++){
if(qt_fv_list[i].id==reg->eax){
- pname=qt_fv_list[i].name;
- break;
- }
+ pname=qt_fv_list[i].name;
+ break;
+ }
}
printf("FUNC[%X/%s]: wrapper=%p func=%p len=%d\n",reg->eax,
fflush(stdout);
#endif
-
+
#if 1
// emulate some functions:
switch(reg->eax){
int i;
for(i=0;qt_fv_list[i].name;i++){
if(qt_fv_list[i].id==reg->eax){
- printf("FUNC: %s\n",qt_fv_list[i].name);
- break;
- }
+ printf("FUNC: %s\n",qt_fv_list[i].name);
+ break;
+ }
}
}
}
- // print stack/reg information
+ // print stack/reg information
printf("ENTER(%d) stack = %d bytes @ %p\n"
- "eax = 0x%08x edx = 0x%08x ebx = 0x%08x ecx = 0x%08x\n"
- "esp = 0x%08x ebp = 0x%08x esi = 0x%08x edi = 0x%08x\n"
- "flags = 0x%08x\n", ret_i,
- stack_size, stack_base,
- reg->eax, reg->edx, reg->ebx, reg->ecx,
- reg->esp, reg->ebp, reg->esi, reg->edi,
- *flags);
+ "eax = 0x%08x edx = 0x%08x ebx = 0x%08x ecx = 0x%08x\n"
+ "esp = 0x%08x ebp = 0x%08x esi = 0x%08x edi = 0x%08x\n"
+ "flags = 0x%08x\n", ret_i,
+ stack_size, stack_base,
+ reg->eax, reg->edx, reg->ebx, reg->ecx,
+ reg->esp, reg->ebp, reg->esi, reg->edi,
+ *flags);
#endif
// save ret addr:
++ret_i;
#if 0
- // print first 7 longs in the stack (return address, arg[1], arg[2] ... )
+ // print first 7 longs in the stack (return address, arg[1], arg[2] ... )
printf("stack[] = { ");
for (i=0;i<7;i++) {
printf("%08x ", ((uint32_t *)stack_base)[i]);
}
printf("}\n\n");
#endif
-
-// // mess with function parameters
+
+// // mess with function parameters
// ((uint32_t *)stack_base)[1] = 0x66554433;
// // mess with return address...
printf("\n");
fflush(stdout);
#else
- // print stack/reg information
+ // print stack/reg information
printf("LEAVE(%d) stack = %d bytes @ %p\n"
- "eax = 0x%08x edx = 0x%08x ebx = 0x%08x ecx = 0x%08x\n"
- "esp = 0x%08x ebp = 0x%08x esi = 0x%08x edi = 0x%08x\n"
- "flags = 0x%08x\n", ret_i,
- stack_size, stack_base,
- reg->eax, reg->edx, reg->ebx, reg->ecx,
- reg->esp, reg->ebp, reg->esi, reg->edi,
- *flags);
+ "eax = 0x%08x edx = 0x%08x ebx = 0x%08x ecx = 0x%08x\n"
+ "esp = 0x%08x ebp = 0x%08x esi = 0x%08x edi = 0x%08x\n"
+ "flags = 0x%08x\n", ret_i,
+ stack_size, stack_base,
+ reg->eax, reg->edx, reg->ebx, reg->ecx,
+ reg->esp, reg->ebp, reg->esi, reg->edi,
+ *flags);
#endif
#if 0
- // print first 7 longs in the stack (return address, arg[1], arg[2] ... )
+ // print first 7 longs in the stack (return address, arg[1], arg[2] ... )
printf("stack[] = { ");
for (i=0;i<7;i++) {
printf("%08x ", ((uint32_t *)stack_base)[i]);
#endif
#endif
-
-// // mess with function parameters
+
+// // mess with function parameters
// ((uint32_t *)stack_base)[1] = 0x66554433;
// // mess with return address...
#endif
/***********************************************************************
- * MODULE_GetProcAddress (internal)
+ * MODULE_GetProcAddress (internal)
*/
FARPROC MODULE_GetProcAddress(
- HMODULE hModule, /* [in] current module handle */
- LPCSTR function, /* [in] function to be looked up */
- WIN_BOOL snoop )
+ HMODULE hModule, /* [in] current module handle */
+ LPCSTR function, /* [in] function to be looked up */
+ WIN_BOOL snoop )
{
- WINE_MODREF *wm = MODULE32_LookupHMODULE( hModule );
+ WINE_MODREF *wm = MODULE32_LookupHMODULE( hModule );
// WINE_MODREF *wm=local_wm;
- FARPROC retproc;
+ FARPROC retproc;
#ifdef DEBUG_QTX_API
if (HIWORD(function))
- fprintf(stderr,"XXX GetProcAddress(%08lx,%s)\n",(DWORD)hModule,function);
+ fprintf(stderr,"XXX GetProcAddress(%08lx,%s)\n",(DWORD)hModule,function);
else
- fprintf(stderr,"XXX GetProcAddress(%08lx,%p)\n",(DWORD)hModule,function);
+ fprintf(stderr,"XXX GetProcAddress(%08lx,%p)\n",(DWORD)hModule,function);
#endif
-// TRACE_(win32)("(%08lx,%s)\n",(DWORD)hModule,function);
+// TRACE_(win32)("(%08lx,%s)\n",(DWORD)hModule,function);
// else
-// TRACE_(win32)("(%08lx,%p)\n",(DWORD)hModule,function);
+// TRACE_(win32)("(%08lx,%p)\n",(DWORD)hModule,function);
if (!wm) {
- SetLastError(ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_INVALID_HANDLE);
return (FARPROC)0;
}
switch (wm->type)
{
case MODULE32_PE:
- retproc = PE_FindExportedFunction( wm, function, snoop );
- if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND);
- break;
+ retproc = PE_FindExportedFunction( wm, function, snoop );
+ if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND);
+ break;
#ifdef HAVE_LIBDL
case MODULE32_ELF:
- retproc = (FARPROC) dlsym( (void*) wm->module, function);
- if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND);
- return retproc;
+ retproc = (FARPROC) dlsym( (void*) wm->module, function);
+ if (!retproc) SetLastError(ERROR_PROC_NOT_FOUND);
+ return retproc;
#endif
default:
- ERR("wine_modref type %d not handled.\n",wm->type);
- SetLastError(ERROR_INVALID_HANDLE);
- return (FARPROC)0;
+ ERR("wine_modref type %d not handled.\n",wm->type);
+ SetLastError(ERROR_INVALID_HANDLE);
+ return (FARPROC)0;
}
#ifdef EMU_QTX_API
#ifdef DEBUG_QTX_API
#define DECL_COMPONENT(sname,name,type) \
if(!strcmp(function,name)){ \
- fprintf(stderr,name "dispatcher catched -> %p\n",retproc); \
- real_ ## sname = retproc; retproc = fake_ ## sname; \
+ fprintf(stderr,name "dispatcher catched -> %p\n",retproc); \
+ real_ ## sname = retproc; retproc = fake_ ## sname; \
}
#include "qt_comp.h"
#undef DECL_COMPONENT
// || !strcmp(function,"_CallComponentFunctionWithStorage")
// || !strcmp(function,"_CallComponent")
){
- fprintf(stderr,"theQuickTimeDispatcher catched -> %p\n",retproc);
+ fprintf(stderr,"theQuickTimeDispatcher catched -> %p\n",retproc);
report_entry = report_func;
report_ret = report_func_ret;
wrapper_target=(void(*)(void))retproc;
//printf("**************CODEC RELEASE %d\n", acounter);
if (acounter == 0)
{
- for (;;)
- {
- modref_list* list = local_wm;
- if (!local_wm)
- break;
- //printf("CODECRELEASE %p\n", list);
+ for (;;)
+ {
+ modref_list* list = local_wm;
+ if (!local_wm)
+ break;
+ //printf("CODECRELEASE %p\n", list);
MODULE_FreeLibrary(list->wm);
- MODULE_RemoveFromList(list->wm);
+ MODULE_RemoveFromList(list->wm);
if (local_wm == NULL)
- my_garbagecollection();
- }
+ my_garbagecollection();
+ }
}
}
/*
* $Id$
*
- * Copyright 1994 Eric Youndale & Erik Bos
- * Copyright 1995 Martin von Löwis
+ * Copyright 1994 Eric Youndale & Erik Bos
+ * Copyright 1995 Martin von Löwis
* Copyright 1996-98 Marcus Meissner
*
- * based on Eric Youndale's pe-test and:
+ * based on Eric Youndale's pe-test and:
*
- * ftp.microsoft.com:/pub/developer/MSDN/CD8/PEFILE.ZIP
+ * ftp.microsoft.com:/pub/developer/MSDN/CD8/PEFILE.ZIP
* make that:
- * ftp.microsoft.com:/developr/MSDN/OctCD/PEFILE.ZIP
+ * ftp.microsoft.com:/developr/MSDN/OctCD/PEFILE.ZIP
*
* Modified for use with MPlayer, detailed CVS changelog at
* http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
/* Notes:
* Before you start changing something in this file be aware of the following:
*
- * - There are several functions called recursively. In a very subtle and
+ * - There are several functions called recursively. In a very subtle and
* obscure way. DLLs can reference each other recursively etc.
* - If you want to enhance, speed up or clean up something in here, think
* twice WHY it is implemented in that strange way. There is usually a reason.
* Though sometimes it might just be lazyness ;)
- * - In PE_MapImage, right before fixup_imports() all external and internal
+ * - In PE_MapImage, right before fixup_imports() all external and internal
* state MUST be correct since this function can be called with the SAME image
* AGAIN. (Thats recursion for you.) That means MODREF.module and
* NE_MODULE.module32.
extern void* LookupExternalByName(const char* library, const char* name);
static void dump_exports( HMODULE hModule )
-{
- char *Module;
+{
+ char *Module;
unsigned int i, j;
- u_short *ordinal;
- u_long *function,*functions;
- u_char **name;
+ u_short *ordinal;
+ u_long *function,*functions;
+ u_char **name;
unsigned int load_addr = hModule;
DWORD rva_start = PE_HEADER(hModule)->OptionalHeader
Module = (char*)RVA(pe_exports->Name);
TRACE("*******EXPORT DATA*******\n");
- TRACE("Module name is %s, %ld functions, %ld names\n",
+ TRACE("Module name is %s, %ld functions, %ld names\n",
Module, pe_exports->NumberOfFunctions, pe_exports->NumberOfNames);
ordinal=(u_short*) RVA(pe_exports->AddressOfNameOrdinals);
TRACE(" Ord RVA Addr Name\n" );
for (i=0;i<pe_exports->NumberOfFunctions;i++, function++)
{
- if (!*function) continue;
+ if (!*function) continue;
if (TRACE_ON(win32))
{
- DPRINTF( "%4ld %08lx %p", i + pe_exports->Base, *function, RVA(*function) );
-
- for (j = 0; j < pe_exports->NumberOfNames; j++)
+ DPRINTF( "%4ld %08lx %p", i + pe_exports->Base, *function, RVA(*function) );
+
+ for (j = 0; j < pe_exports->NumberOfNames; j++)
if (ordinal[j] == i)
{
DPRINTF( " %s", (char*)RVA(name[j]) );
break;
}
- if ((*function >= rva_start) && (*function <= rva_end))
- DPRINTF(" (forwarded -> %s)", (char *)RVA(*function));
- DPRINTF("\n");
+ if ((*function >= rva_start) && (*function <= rva_end))
+ DPRINTF(" (forwarded -> %s)", (char *)RVA(*function));
+ DPRINTF("\n");
}
}
}
/* Look up the specified function or ordinal in the exportlist:
* If it is a string:
- * - look up the name in the Name list.
- * - look up the ordinal with that index.
- * - use the ordinal as offset into the functionlist
+ * - look up the name in the Name list.
+ * - look up the ordinal with that index.
+ * - use the ordinal as offset into the functionlist
* If it is a ordinal:
- * - use ordinal-pe_export->Base as offset into the functionlist
+ * - use ordinal-pe_export->Base as offset into the functionlist
*/
-FARPROC PE_FindExportedFunction(
- WINE_MODREF *wm,
- LPCSTR funcName,
+FARPROC PE_FindExportedFunction(
+ WINE_MODREF *wm,
+ LPCSTR funcName,
WIN_BOOL snoop )
{
- u_short * ordinals;
- u_long * function;
- u_char ** name;
- const char *ename = NULL;
- int i, ordinal;
- PE_MODREF *pem = &(wm->binfmt.pe);
- IMAGE_EXPORT_DIRECTORY *exports = pem->pe_export;
- unsigned int load_addr = wm->module;
- u_long rva_start, rva_end, addr;
- char * forward;
-
- if (HIWORD(funcName))
- TRACE("(%s)\n",funcName);
- else
- TRACE("(%d)\n",(int)funcName);
- if (!exports) {
- /* Not a fatal problem, some apps do
- * GetProcAddress(0,"RegisterPenApp") which triggers this
- * case.
- */
- WARN("Module %08x(%s)/MODREF %p doesn't have a exports table.\n",wm->module,wm->modname,pem);
- return NULL;
- }
- ordinals= (u_short*) RVA(exports->AddressOfNameOrdinals);
- function= (u_long*) RVA(exports->AddressOfFunctions);
- name = (u_char **) RVA(exports->AddressOfNames);
- forward = NULL;
- rva_start = PE_HEADER(wm->module)->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
- rva_end = rva_start + PE_HEADER(wm->module)->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size;
-
- if (HIWORD(funcName))
+ u_short * ordinals;
+ u_long * function;
+ u_char ** name;
+ const char *ename = NULL;
+ int i, ordinal;
+ PE_MODREF *pem = &(wm->binfmt.pe);
+ IMAGE_EXPORT_DIRECTORY *exports = pem->pe_export;
+ unsigned int load_addr = wm->module;
+ u_long rva_start, rva_end, addr;
+ char * forward;
+
+ if (HIWORD(funcName))
+ TRACE("(%s)\n",funcName);
+ else
+ TRACE("(%d)\n",(int)funcName);
+ if (!exports) {
+ /* Not a fatal problem, some apps do
+ * GetProcAddress(0,"RegisterPenApp") which triggers this
+ * case.
+ */
+ WARN("Module %08x(%s)/MODREF %p doesn't have a exports table.\n",wm->module,wm->modname,pem);
+ return NULL;
+ }
+ ordinals= (u_short*) RVA(exports->AddressOfNameOrdinals);
+ function= (u_long*) RVA(exports->AddressOfFunctions);
+ name = (u_char **) RVA(exports->AddressOfNames);
+ forward = NULL;
+ rva_start = PE_HEADER(wm->module)->OptionalHeader
+ .DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
+ rva_end = rva_start + PE_HEADER(wm->module)->OptionalHeader
+ .DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size;
+
+ if (HIWORD(funcName))
{
-
+
int min = 0, max = exports->NumberOfNames - 1;
while (min <= max)
{
int res, pos = (min + max) / 2;
- ename = (const char*) RVA(name[pos]);
- if (!(res = strcmp( ename, funcName )))
+ ename = (const char*) RVA(name[pos]);
+ if (!(res = strcmp( ename, funcName )))
{
ordinal = ordinals[pos];
goto found;
if (res > 0) max = pos - 1;
else min = pos + 1;
}
-
- for (i = 0; i < exports->NumberOfNames; i++)
+
+ for (i = 0; i < exports->NumberOfNames; i++)
{
- ename = (const char*) RVA(name[i]);
+ ename = (const char*) RVA(name[i]);
if (!strcmp( ename, funcName ))
{
- ERR( "%s.%s required a linear search\n", wm->modname, funcName );
+ ERR( "%s.%s required a linear search\n", wm->modname, funcName );
ordinal = ordinals[i];
goto found;
}
}
return NULL;
- }
- else
+ }
+ else
{
ordinal = LOWORD(funcName) - exports->Base;
- if (snoop && name)
+ if (snoop && name)
{
for (i = 0; i < exports->NumberOfNames; i++)
if (ordinals[i] == ordinal)
break;
}
}
- }
+ }
found:
if (ordinal >= exports->NumberOfFunctions)
{
- TRACE(" ordinal %ld out of range!\n", ordinal + exports->Base );
+ TRACE(" ordinal %ld out of range!\n", ordinal + exports->Base );
return NULL;
}
addr = function[ordinal];
{
if (!ename) ename = "@";
// proc = SNOOP_GetProcAddress(wm->module,ename,ordinal,proc);
- TRACE("SNOOP_GetProcAddress n/a\n");
-
+ TRACE("SNOOP_GetProcAddress n/a\n");
+
}
return proc;
}
- else
+ else
{
WINE_MODREF *wm;
char *forward = RVA(addr);
- char module[256];
- char *end = strchr(forward, '.');
+ char module[256];
+ char *end = strchr(forward, '.');
- if (!end) return NULL;
+ if (!end) return NULL;
if (end - forward >= sizeof(module)) return NULL;
memcpy( module, forward, end - forward );
- module[end-forward] = 0;
+ module[end-forward] = 0;
if (!(wm = MODULE_FindModule( module )))
{
ERR("module not found for forward '%s'\n", forward );
return NULL;
}
- return MODULE_GetProcAddress( wm->module, end + 1, snoop );
- }
+ return MODULE_GetProcAddress( wm->module, end + 1, snoop );
+ }
}
static DWORD fixup_imports( WINE_MODREF *wm )
{
- IMAGE_IMPORT_DESCRIPTOR *pe_imp;
- PE_MODREF *pem;
- unsigned int load_addr = wm->module;
- int i,characteristics_detection=1;
- char *modname;
-
+ IMAGE_IMPORT_DESCRIPTOR *pe_imp;
+ PE_MODREF *pem;
+ unsigned int load_addr = wm->module;
+ int i,characteristics_detection=1;
+ char *modname;
+
assert(wm->type==MODULE32_PE);
pem = &(wm->binfmt.pe);
if (pem->pe_export)
- modname = (char*) RVA(pem->pe_export->Name);
+ modname = (char*) RVA(pem->pe_export->Name);
else
modname = "<unknown>";
-
+
TRACE("Dumping imports list\n");
-
+
pe_imp = pem->pe_import;
if (!pe_imp) return 0;
* switch the detection off for them.
*/
for (i = 0; pe_imp->Name ; pe_imp++) {
- if (!i && !pe_imp->u.Characteristics)
- characteristics_detection = 0;
- if (characteristics_detection && !pe_imp->u.Characteristics)
- break;
- i++;
+ if (!i && !pe_imp->u.Characteristics)
+ characteristics_detection = 0;
+ if (characteristics_detection && !pe_imp->u.Characteristics)
+ break;
+ i++;
}
- if (!i) return 0;
+ if (!i) return 0;
-
+
wm->nDeps = i;
wm->deps = HeapAlloc( GetProcessHeap(), 0, i*sizeof(WINE_MODREF *) );
- /* load the imported modules. They are automatically
+ /* load the imported modules. They are automatically
* added to the modref list of the process.
*/
for (i = 0, pe_imp = pem->pe_import; pe_imp->Name ; pe_imp++) {
- WINE_MODREF *wmImp;
- IMAGE_IMPORT_BY_NAME *pe_name;
- PIMAGE_THUNK_DATA import_list,thunk_list;
- char *name = (char *) RVA(pe_imp->Name);
+ WINE_MODREF *wmImp;
+ IMAGE_IMPORT_BY_NAME *pe_name;
+ PIMAGE_THUNK_DATA import_list,thunk_list;
+ char *name = (char *) RVA(pe_imp->Name);
- if (characteristics_detection && !pe_imp->u.Characteristics)
- break;
+ if (characteristics_detection && !pe_imp->u.Characteristics)
+ break;
//#warning FIXME: here we should fill imports
TRACE("Loading imports for %s.dll\n", name);
-
- if (pe_imp->u.OriginalFirstThunk != 0) {
- TRACE("Microsoft style imports used\n");
- import_list =(PIMAGE_THUNK_DATA) RVA(pe_imp->u.OriginalFirstThunk);
- thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
-
- while (import_list->u1.Ordinal) {
- if (IMAGE_SNAP_BY_ORDINAL(import_list->u1.Ordinal)) {
- int ordinal = IMAGE_ORDINAL(import_list->u1.Ordinal);
-
-// TRACE("--- Ordinal %s,%d\n", name, ordinal);
-
- thunk_list->u1.Function=LookupExternal(name, ordinal);
- } else {
- pe_name = (PIMAGE_IMPORT_BY_NAME)RVA(import_list->u1.AddressOfData);
-// TRACE("--- %s %s.%d\n", pe_name->Name, name, pe_name->Hint);
- thunk_list->u1.Function=LookupExternalByName(name, pe_name->Name);
- }
- import_list++;
- thunk_list++;
- }
- } else {
- TRACE("Borland style imports used\n");
- thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
- while (thunk_list->u1.Ordinal) {
- if (IMAGE_SNAP_BY_ORDINAL(thunk_list->u1.Ordinal)) {
-
- int ordinal = IMAGE_ORDINAL(thunk_list->u1.Ordinal);
-
- TRACE("--- Ordinal %s.%d\n",name,ordinal);
- thunk_list->u1.Function=LookupExternal(
- name, ordinal);
- } else {
- pe_name=(PIMAGE_IMPORT_BY_NAME) RVA(thunk_list->u1.AddressOfData);
- TRACE("--- %s %s.%d\n",
- pe_name->Name,name,pe_name->Hint);
- thunk_list->u1.Function=LookupExternalByName(
- name, pe_name->Name);
- }
- thunk_list++;
- }
- }
+
+ if (pe_imp->u.OriginalFirstThunk != 0) {
+ TRACE("Microsoft style imports used\n");
+ import_list =(PIMAGE_THUNK_DATA) RVA(pe_imp->u.OriginalFirstThunk);
+ thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
+
+ while (import_list->u1.Ordinal) {
+ if (IMAGE_SNAP_BY_ORDINAL(import_list->u1.Ordinal)) {
+ int ordinal = IMAGE_ORDINAL(import_list->u1.Ordinal);
+
+// TRACE("--- Ordinal %s,%d\n", name, ordinal);
+
+ thunk_list->u1.Function=LookupExternal(name, ordinal);
+ } else {
+ pe_name = (PIMAGE_IMPORT_BY_NAME)RVA(import_list->u1.AddressOfData);
+// TRACE("--- %s %s.%d\n", pe_name->Name, name, pe_name->Hint);
+ thunk_list->u1.Function=LookupExternalByName(name, pe_name->Name);
+ }
+ import_list++;
+ thunk_list++;
+ }
+ } else {
+ TRACE("Borland style imports used\n");
+ thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
+ while (thunk_list->u1.Ordinal) {
+ if (IMAGE_SNAP_BY_ORDINAL(thunk_list->u1.Ordinal)) {
+
+ int ordinal = IMAGE_ORDINAL(thunk_list->u1.Ordinal);
+
+ TRACE("--- Ordinal %s.%d\n",name,ordinal);
+ thunk_list->u1.Function=LookupExternal(
+ name, ordinal);
+ } else {
+ pe_name=(PIMAGE_IMPORT_BY_NAME) RVA(thunk_list->u1.AddressOfData);
+ TRACE("--- %s %s.%d\n",
+ pe_name->Name,name,pe_name->Hint);
+ thunk_list->u1.Function=LookupExternalByName(
+ name, pe_name->Name);
+ }
+ thunk_list++;
+ }
+ }
}
return 0;
}
TRACE(" Name VSz Vaddr SzRaw Fileadr *Reloc *Lineum #Reloc #Linum Char\n");
for (i = 0; i< PE_HEADER(hModule)->FileHeader.NumberOfSections; i++)
{
- TRACE("%8s: %4.4lx %8.8lx %8.8lx %8.8lx %8.8lx %8.8lx %4.4x %4.4x %8.8lx\n",
- pe_seg->Name,
+ TRACE("%8s: %4.4lx %8.8lx %8.8lx %8.8lx %8.8lx %8.8lx %4.4x %4.4x %8.8lx\n",
+ pe_seg->Name,
pe_seg->Misc.VirtualSize,
pe_seg->VirtualAddress,
pe_seg->SizeOfRawData,
static void do_relocations( unsigned int load_addr, IMAGE_BASE_RELOCATION *r )
{
int delta = load_addr - PE_HEADER(load_addr)->OptionalHeader.ImageBase;
- int hdelta = (delta >> 16) & 0xFFFF;
- int ldelta = delta & 0xFFFF;
-
- if(delta == 0)
-
- return;
- while(r->VirtualAddress)
- {
- char *page = (char*) RVA(r->VirtualAddress);
- int count = (r->SizeOfBlock - 8)/2;
- int i;
- TRACE_(fixup)("%x relocations for page %lx\n",
- count, r->VirtualAddress);
-
- for(i=0;i<count;i++)
- {
- int offset = r->TypeOffset[i] & 0xFFF;
- int type = r->TypeOffset[i] >> 12;
-// TRACE_(fixup)("patching %x type %x\n", offset, type);
- switch(type)
- {
- case IMAGE_REL_BASED_ABSOLUTE: break;
- case IMAGE_REL_BASED_HIGH:
- *(short*)(page+offset) += hdelta;
- break;
- case IMAGE_REL_BASED_LOW:
- *(short*)(page+offset) += ldelta;
- break;
- case IMAGE_REL_BASED_HIGHLOW:
- *(int*)(page+offset) += delta;
-
- break;
- case IMAGE_REL_BASED_HIGHADJ:
- FIXME("Don't know what to do with IMAGE_REL_BASED_HIGHADJ\n");
- break;
- case IMAGE_REL_BASED_MIPS_JMPADDR:
- FIXME("Is this a MIPS machine ???\n");
- break;
- default:
- FIXME("Unknown fixup type\n");
- break;
- }
- }
- r = (IMAGE_BASE_RELOCATION*)((char*)r + r->SizeOfBlock);
- }
+ int hdelta = (delta >> 16) & 0xFFFF;
+ int ldelta = delta & 0xFFFF;
+
+ if(delta == 0)
+
+ return;
+ while(r->VirtualAddress)
+ {
+ char *page = (char*) RVA(r->VirtualAddress);
+ int count = (r->SizeOfBlock - 8)/2;
+ int i;
+ TRACE_(fixup)("%x relocations for page %lx\n",
+ count, r->VirtualAddress);
+
+ for(i=0;i<count;i++)
+ {
+ int offset = r->TypeOffset[i] & 0xFFF;
+ int type = r->TypeOffset[i] >> 12;
+// TRACE_(fixup)("patching %x type %x\n", offset, type);
+ switch(type)
+ {
+ case IMAGE_REL_BASED_ABSOLUTE: break;
+ case IMAGE_REL_BASED_HIGH:
+ *(short*)(page+offset) += hdelta;
+ break;
+ case IMAGE_REL_BASED_LOW:
+ *(short*)(page+offset) += ldelta;
+ break;
+ case IMAGE_REL_BASED_HIGHLOW:
+ *(int*)(page+offset) += delta;
+
+ break;
+ case IMAGE_REL_BASED_HIGHADJ:
+ FIXME("Don't know what to do with IMAGE_REL_BASED_HIGHADJ\n");
+ break;
+ case IMAGE_REL_BASED_MIPS_JMPADDR:
+ FIXME("Is this a MIPS machine ???\n");
+ break;
+ default:
+ FIXME("Unknown fixup type\n");
+ break;
+ }
+ }
+ r = (IMAGE_BASE_RELOCATION*)((char*)r + r->SizeOfBlock);
+ }
}
-
+
-
-
+
+
/**********************************************************************
- * PE_LoadImage
+ * PE_LoadImage
* Load one PE format DLL/EXE into memory
- *
- * Unluckily we can't just mmap the sections where we want them, for
+ *
+ * Unluckily we can't just mmap the sections where we want them, for
* (at least) Linux does only support offsets which are page-aligned.
*
* BUT we have to map the whole image anyway, for Win32 programs sometimes
*/
HMODULE PE_LoadImage( int handle, LPCSTR filename, WORD *version )
{
- HMODULE hModule;
- HANDLE mapping;
+ HMODULE hModule;
+ HANDLE mapping;
IMAGE_NT_HEADERS *nt;
IMAGE_SECTION_HEADER *pe_sec;
IMAGE_DATA_DIRECTORY *dir;
BY_HANDLE_FILE_INFORMATION bhfi;
- int i, rawsize, lowest_va, vma_size, file_size = 0;
+ int i, rawsize, lowest_va, vma_size, file_size = 0;
DWORD load_addr = 0, aoep, reloc = 0;
// struct get_read_fd_request *req = get_req_buffer();
int unix_handle = handle;
int page_size = getpagesize();
-
-// if ( GetFileInformationByHandle( hFile, &bhfi ) )
-// file_size = bhfi.nFileSizeLow;
+
+// if ( GetFileInformationByHandle( hFile, &bhfi ) )
+// file_size = bhfi.nFileSizeLow;
file_size=lseek(handle, 0, SEEK_END);
lseek(handle, 0, SEEK_SET);
nt = PE_HEADER( hModule );
-
+
if ( nt->Signature != IMAGE_NT_SIGNATURE )
{
WARN("%s image doesn't have PE signature, but 0x%08lx\n", filename, nt->Signature );
goto error;
}
-
+
if ( nt->FileHeader.Machine != IMAGE_FILE_MACHINE_I386 )
{
MESSAGE("Trying to load PE image for unsupported architecture (");
goto error;
}
-
+
pe_sec = PE_SECTIONS( hModule );
rawsize = 0; lowest_va = 0x10000;
- for (i = 0; i < nt->FileHeader.NumberOfSections; i++)
+ for (i = 0; i < nt->FileHeader.NumberOfSections; i++)
{
if (lowest_va > pe_sec[i].VirtualAddress)
lowest_va = pe_sec[i].VirtualAddress;
- if (pe_sec[i].Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA)
- continue;
- if (pe_sec[i].PointerToRawData+pe_sec[i].SizeOfRawData > rawsize)
- rawsize = pe_sec[i].PointerToRawData+pe_sec[i].SizeOfRawData;
+ if (pe_sec[i].Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA)
+ continue;
+ if (pe_sec[i].PointerToRawData+pe_sec[i].SizeOfRawData > rawsize)
+ rawsize = pe_sec[i].PointerToRawData+pe_sec[i].SizeOfRawData;
}
-
+
if ( file_size && file_size < rawsize )
{
ERR("PE module is too small (header: %d, filesize: %d), "
- "probably truncated download?\n",
+ "probably truncated download?\n",
rawsize, file_size );
goto error;
}
-
+
aoep = nt->OptionalHeader.AddressOfEntryPoint;
if (aoep && (aoep < lowest_va))
FIXME("VIRUS WARNING: '%s' has an invalid entrypoint (0x%08lx) "
if ( nt->OptionalHeader.ImageBase & 0x80000000 )
{
- HMODULE sharedMod = (HMODULE)nt->OptionalHeader.ImageBase;
+ HMODULE sharedMod = (HMODULE)nt->OptionalHeader.ImageBase;
IMAGE_NT_HEADERS *sharedNt = (PIMAGE_NT_HEADERS)
( (LPBYTE)sharedMod + ((LPBYTE)nt - (LPBYTE)hModule) );
- /* Well, this check is not really comprehensive,
+ /* Well, this check is not really comprehensive,
but should be good enough for now ... */
if ( !IsBadReadPtr( (LPBYTE)sharedMod, sizeof(IMAGE_DOS_HEADER) )
&& memcmp( (LPBYTE)sharedMod, (LPBYTE)hModule, sizeof(IMAGE_DOS_HEADER) ) == 0
}
-
+
load_addr = nt->OptionalHeader.ImageBase;
vma_size = calc_vma_size( hModule );
load_addr = (DWORD)VirtualAlloc( (void*)load_addr, vma_size,
MEM_RESERVE | MEM_COMMIT,
PAGE_EXECUTE_READWRITE );
- if (load_addr == 0)
+ if (load_addr == 0)
{
-
+
FIXME("We need to perform base relocations for %s\n", filename);
- dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_BASERELOC;
+ dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_BASERELOC;
if (dir->Size)
reloc = dir->VirtualAddress;
- else
+ else
{
FIXME( "FATAL: Need to relocate %s, but no relocation records present (%s). Try to run that file directly !\n",
filename,
ERR( "Forced to relocate system DLL (base > 2GB). This is not good.\n" );
load_addr = (DWORD)VirtualAlloc( NULL, vma_size,
- MEM_RESERVE | MEM_COMMIT,
- PAGE_EXECUTE_READWRITE );
- if (!load_addr) {
+ MEM_RESERVE | MEM_COMMIT,
+ PAGE_EXECUTE_READWRITE );
+ if (!load_addr) {
FIXME_(win32)(
"FATAL: Couldn't load module %s (out of memory, %d needed)!\n", filename, vma_size);
goto error;
- }
+ }
}
TRACE("Load addr is %lx (base %lx), range %x\n",
filename, load_addr, vma_size );
#if 0
-
+
*(PIMAGE_DOS_HEADER)load_addr = *(PIMAGE_DOS_HEADER)hModule;
*PE_HEADER( load_addr ) = *nt;
memcpy( PE_SECTIONS(load_addr), PE_SECTIONS(hModule),
sizeof(IMAGE_SECTION_HEADER) * nt->FileHeader.NumberOfSections );
-
+
memcpy( load_addr, hModule, lowest_fa );
#endif
0, 0, PROT_EXEC | PROT_WRITE | PROT_READ,
MAP_PRIVATE | MAP_FIXED ) != (void*)load_addr)
{
- ERR_(win32)( "Critical Error: failed to map PE header to necessary address.\n");
+ ERR_(win32)( "Critical Error: failed to map PE header to necessary address.\n");
goto error;
}
-
+
pe_sec = PE_SECTIONS( hModule );
for (i = 0; i < nt->FileHeader.NumberOfSections; i++, pe_sec++)
{
PROT_EXEC | PROT_WRITE | PROT_READ,
MAP_PRIVATE | MAP_FIXED ) != (void*)RVA(pe_sec->VirtualAddress))
{
-
+
ERR_(win32)( "Critical Error: failed to map PE section to necessary address.\n");
goto error;
}
}
}
-
+
if ( reloc )
do_relocations( load_addr, (IMAGE_BASE_RELOCATION *)RVA(reloc) );
-
+
*version = ( (nt->OptionalHeader.MajorSubsystemVersion & 0xff) << 8 )
| (nt->OptionalHeader.MinorSubsystemVersion & 0xff);
-
+
UnmapViewOfFile( (LPVOID)hModule );
return (HMODULE)load_addr;
error:
if (unix_handle != -1) close( unix_handle );
- if (load_addr)
+ if (load_addr)
VirtualFree( (LPVOID)load_addr, 0, MEM_RELEASE );
UnmapViewOfFile( (LPVOID)hModule );
return 0;
* Note: This routine must always be called in the context of the
* process that is to own the module to be created.
*/
-WINE_MODREF *PE_CreateModule( HMODULE hModule,
+WINE_MODREF *PE_CreateModule( HMODULE hModule,
LPCSTR filename, DWORD flags, WIN_BOOL builtin )
{
- DWORD load_addr = (DWORD)hModule;
+ DWORD load_addr = (DWORD)hModule;
IMAGE_NT_HEADERS *nt = PE_HEADER(hModule);
IMAGE_DATA_DIRECTORY *dir;
IMAGE_IMPORT_DESCRIPTOR *pe_import = NULL;
IMAGE_EXPORT_DIRECTORY *pe_export = NULL;
IMAGE_RESOURCE_DIRECTORY *pe_resource = NULL;
WINE_MODREF *wm;
- int result;
+ int result;
-
+
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_EXPORT;
if (dir->Size)
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_SECURITY;
if (dir->Size) FIXME("Security directory ignored\n" );
-
-
+
+
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_DEBUG;
if (dir->Size) TRACE("Debug directory ignored\n" );
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_GLOBALPTR;
if (dir->Size) FIXME("Global Pointer (MIPS) ignored\n" );
-
+
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG;
if (dir->Size) FIXME("Load Configuration directory ignored\n" );
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT;
if (dir->Size)
{
- TRACE("Delayed import, stub calls LoadLibrary\n" );
- /*
- * Nothing to do here.
- */
+ TRACE("Delayed import, stub calls LoadLibrary\n" );
+ /*
+ * Nothing to do here.
+ */
#ifdef ImgDelayDescr
- /*
- * This code is useful to observe what the heck is going on.
- */
- {
- ImgDelayDescr *pe_delay = NULL;
+ /*
+ * This code is useful to observe what the heck is going on.
+ */
+ {
+ ImgDelayDescr *pe_delay = NULL;
pe_delay = (PImgDelayDescr)RVA(dir->VirtualAddress);
TRACE_(delayhlp)("pe_delay->grAttrs = %08x\n", pe_delay->grAttrs);
TRACE_(delayhlp)("pe_delay->szName = %s\n", pe_delay->szName);
TRACE_(delayhlp)("pe_delay->pUnloadIAT = %08x\n", pe_delay->pUnloadIAT);
TRACE_(delayhlp)("pe_delay->dwTimeStamp = %08x\n", pe_delay->dwTimeStamp);
}
-#endif
- }
+#endif
+ }
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR;
if (dir->Size) FIXME("Unknown directory 14 ignored\n" );
if (dir->Size) FIXME("Unknown directory 15 ignored\n" );
-
+
- wm = (WINE_MODREF *)HeapAlloc( GetProcessHeap(),
+ wm = (WINE_MODREF *)HeapAlloc( GetProcessHeap(),
HEAP_ZERO_MEMORY, sizeof(*wm) );
wm->module = hModule;
- if ( builtin )
+ if ( builtin )
wm->flags |= WINE_MODREF_INTERNAL;
if ( flags & DONT_RESOLVE_DLL_REFERENCES )
wm->flags |= WINE_MODREF_DONT_RESOLVE_REFS;
if ( pe_import
&& !( wm->flags & WINE_MODREF_LOAD_AS_DATAFILE )
- && !( wm->flags & WINE_MODREF_DONT_RESOLVE_REFS )
- && fixup_imports( wm ) )
+ && !( wm->flags & WINE_MODREF_DONT_RESOLVE_REFS )
+ && fixup_imports( wm ) )
{
/* remove entry from modref chain */
return NULL;
}
/******************************************************************************
- * The PE Library Loader frontend.
+ * The PE Library Loader frontend.
* FIXME: handle the flags.
*/
WINE_MODREF *PE_LoadLibraryExA (LPCSTR name, DWORD flags)
{
- HMODULE hModule32;
- WINE_MODREF *wm;
- char filename[256];
- int hFile;
- WORD version = 0;
-
-
- strncpy(filename, name, sizeof(filename));
- hFile=open(filename, O_RDONLY);
- if(hFile==-1)
- return NULL;
-
-
- hModule32 = PE_LoadImage( hFile, filename, &version );
- if (!hModule32)
- {
- SetLastError( ERROR_OUTOFMEMORY );
- return NULL;
- }
-
- if ( !(wm = PE_CreateModule( hModule32, filename, flags, FALSE )) )
- {
- ERR( "can't load %s\n", filename );
- SetLastError( ERROR_OUTOFMEMORY );
- return NULL;
- }
- close(hFile);
- //printf("^^^^^^^^^^^^^^^^Alloc VM1 %p\n", wm);
- return wm;
+ HMODULE hModule32;
+ WINE_MODREF *wm;
+ char filename[256];
+ int hFile;
+ WORD version = 0;
+
+
+ strncpy(filename, name, sizeof(filename));
+ hFile=open(filename, O_RDONLY);
+ if(hFile==-1)
+ return NULL;
+
+
+ hModule32 = PE_LoadImage( hFile, filename, &version );
+ if (!hModule32)
+ {
+ SetLastError( ERROR_OUTOFMEMORY );
+ return NULL;
+ }
+
+ if ( !(wm = PE_CreateModule( hModule32, filename, flags, FALSE )) )
+ {
+ ERR( "can't load %s\n", filename );
+ SetLastError( ERROR_OUTOFMEMORY );
+ return NULL;
+ }
+ close(hFile);
+ //printf("^^^^^^^^^^^^^^^^Alloc VM1 %p\n", wm);
+ return wm;
}
/*****************************************************************************
- * PE_UnloadLibrary
+ * PE_UnloadLibrary
*
* Unload the library unmapping the image and freeing the modref structure.
*/
TRACE(" unloading %s\n", wm->filename);
if (wm->filename)
- free(wm->filename);
+ free(wm->filename);
if (wm->short_filename)
- free(wm->short_filename);
+ free(wm->short_filename);
HeapFree( GetProcessHeap(), 0, wm->deps );
VirtualFree( (LPVOID)wm->module, 0, MEM_RELEASE );
HeapFree( GetProcessHeap(), 0, wm );
WIN_BOOL retv = TRUE;
assert( wm->type == MODULE32_PE );
-
+
if ((PE_HEADER(wm->module)->FileHeader.Characteristics & IMAGE_FILE_DLL) &&
(PE_HEADER(wm->module)->OptionalHeader.AddressOfEntryPoint)
) {
- DLLENTRYPROC entry ;
- entry = (void*)PE_FindExportedFunction(wm, "DllMain", 0);
- if(entry==NULL)
- entry = (void*)RVA_PTR( wm->module,OptionalHeader.AddressOfEntryPoint );
-
- TRACE_(relay)("CallTo32(entryproc=%p,module=%08x,type=%ld,res=%p)\n",
+ DLLENTRYPROC entry ;
+ entry = (void*)PE_FindExportedFunction(wm, "DllMain", 0);
+ if(entry==NULL)
+ entry = (void*)RVA_PTR( wm->module,OptionalHeader.AddressOfEntryPoint );
+
+ TRACE_(relay)("CallTo32(entryproc=%p,module=%08x,type=%ld,res=%p)\n",
entry, wm->module, type, lpReserved );
-
-
- TRACE("Entering DllMain(");
- switch(type)
- {
- case DLL_PROCESS_DETACH:
- TRACE("DLL_PROCESS_DETACH) ");
- break;
- case DLL_PROCESS_ATTACH:
- TRACE("DLL_PROCESS_ATTACH) ");
- break;
- case DLL_THREAD_DETACH:
- TRACE("DLL_THREAD_DETACH) ");
- break;
- case DLL_THREAD_ATTACH:
- TRACE("DLL_THREAD_ATTACH) ");
- break;
- }
- TRACE("for %s\n", wm->filename);
- extend_stack_for_dll_alloca();
+
+
+ TRACE("Entering DllMain(");
+ switch(type)
+ {
+ case DLL_PROCESS_DETACH:
+ TRACE("DLL_PROCESS_DETACH) ");
+ break;
+ case DLL_PROCESS_ATTACH:
+ TRACE("DLL_PROCESS_ATTACH) ");
+ break;
+ case DLL_THREAD_DETACH:
+ TRACE("DLL_THREAD_DETACH) ");
+ break;
+ case DLL_THREAD_ATTACH:
+ TRACE("DLL_THREAD_ATTACH) ");
+ break;
+ }
+ TRACE("for %s\n", wm->filename);
+ extend_stack_for_dll_alloca();
retv = entry( wm->module, type, lpReserved );
}
static LPVOID
_fixup_address(PIMAGE_OPTIONAL_HEADER opt,int delta,LPVOID addr) {
- if ( ((DWORD)addr>opt->ImageBase) &&
- ((DWORD)addr<opt->ImageBase+opt->SizeOfImage)
- )
-
- return (LPVOID)(((DWORD)addr)+delta);
- else
-
- return addr;
+ if ( ((DWORD)addr>opt->ImageBase) &&
+ ((DWORD)addr<opt->ImageBase+opt->SizeOfImage)
+ )
+
+ return (LPVOID)(((DWORD)addr)+delta);
+ else
+
+ return addr;
}
#include "ext.h"
/**********************************************************************
- * HMODULE32toPE_MODREF
+ * HMODULE32toPE_MODREF
*
* small helper function to get a PE_MODREF from a passed HMODULE32
*/
static PE_MODREF*
HMODULE32toPE_MODREF(HMODULE hmod) {
- WINE_MODREF *wm;
+ WINE_MODREF *wm;
- wm = MODULE32_LookupHMODULE( hmod );
- if (!wm || wm->type!=MODULE32_PE)
- return NULL;
- return &(wm->binfmt.pe);
+ wm = MODULE32_LookupHMODULE( hmod );
+ if (!wm || wm->type!=MODULE32_PE)
+ return NULL;
+ return &(wm->binfmt.pe);
}
/**********************************************************************
- * GetResDirEntryW
+ * GetResDirEntryW
*
- * Helper function - goes down one level of PE resource tree
+ * Helper function - goes down one level of PE resource tree
*
*/
PIMAGE_RESOURCE_DIRECTORY GetResDirEntryW(PIMAGE_RESOURCE_DIRECTORY resdirptr,
- LPCWSTR name,DWORD root,
- WIN_BOOL allowdefault)
+ LPCWSTR name,DWORD root,
+ WIN_BOOL allowdefault)
{
int entrynum;
PIMAGE_RESOURCE_DIRECTORY_ENTRY entryTable;
int namelen;
if (HIWORD(name)) {
- if (name[0]=='#') {
- char buf[10];
-
- lstrcpynWtoA(buf,name+1,10);
- return GetResDirEntryW(resdirptr,(LPCWSTR)atoi(buf),root,allowdefault);
- }
- entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (
- (BYTE *) resdirptr +
+ if (name[0]=='#') {
+ char buf[10];
+
+ lstrcpynWtoA(buf,name+1,10);
+ return GetResDirEntryW(resdirptr,(LPCWSTR)atoi(buf),root,allowdefault);
+ }
+ entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (
+ (BYTE *) resdirptr +
sizeof(IMAGE_RESOURCE_DIRECTORY));
- namelen = lstrlenW(name);
- for (entrynum = 0; entrynum < resdirptr->NumberOfNamedEntries; entrynum++)
- {
- PIMAGE_RESOURCE_DIR_STRING_U str =
- (PIMAGE_RESOURCE_DIR_STRING_U) (root +
- entryTable[entrynum].u1.s.NameOffset);
- if(namelen != str->Length)
- continue;
- if(wcsnicmp(name,str->NameString,str->Length)==0)
- return (PIMAGE_RESOURCE_DIRECTORY) (
- root +
- entryTable[entrynum].u2.s.OffsetToDirectory);
- }
- return NULL;
+ namelen = lstrlenW(name);
+ for (entrynum = 0; entrynum < resdirptr->NumberOfNamedEntries; entrynum++)
+ {
+ PIMAGE_RESOURCE_DIR_STRING_U str =
+ (PIMAGE_RESOURCE_DIR_STRING_U) (root +
+ entryTable[entrynum].u1.s.NameOffset);
+ if(namelen != str->Length)
+ continue;
+ if(wcsnicmp(name,str->NameString,str->Length)==0)
+ return (PIMAGE_RESOURCE_DIRECTORY) (
+ root +
+ entryTable[entrynum].u2.s.OffsetToDirectory);
+ }
+ return NULL;
} else {
- entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (
- (BYTE *) resdirptr +
+ entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) (
+ (BYTE *) resdirptr +
sizeof(IMAGE_RESOURCE_DIRECTORY) +
- resdirptr->NumberOfNamedEntries * sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY));
- for (entrynum = 0; entrynum < resdirptr->NumberOfIdEntries; entrynum++)
- if ((DWORD)entryTable[entrynum].u1.Name == (DWORD)name)
- return (PIMAGE_RESOURCE_DIRECTORY) (
- root +
- entryTable[entrynum].u2.s.OffsetToDirectory);
- /* just use first entry if no default can be found */
- if (allowdefault && !name && resdirptr->NumberOfIdEntries)
- return (PIMAGE_RESOURCE_DIRECTORY) (
- root +
- entryTable[0].u2.s.OffsetToDirectory);
- return NULL;
+ resdirptr->NumberOfNamedEntries * sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY));
+ for (entrynum = 0; entrynum < resdirptr->NumberOfIdEntries; entrynum++)
+ if ((DWORD)entryTable[entrynum].u1.Name == (DWORD)name)
+ return (PIMAGE_RESOURCE_DIRECTORY) (
+ root +
+ entryTable[entrynum].u2.s.OffsetToDirectory);
+ /* just use first entry if no default can be found */
+ if (allowdefault && !name && resdirptr->NumberOfIdEntries)
+ return (PIMAGE_RESOURCE_DIRECTORY) (
+ root +
+ entryTable[0].u2.s.OffsetToDirectory);
+ return NULL;
}
}
/**********************************************************************
- * GetResDirEntryA
+ * GetResDirEntryA
*/
PIMAGE_RESOURCE_DIRECTORY GetResDirEntryA( PIMAGE_RESOURCE_DIRECTORY resdirptr,
- LPCSTR name, DWORD root,
- WIN_BOOL allowdefault )
+ LPCSTR name, DWORD root,
+ WIN_BOOL allowdefault )
{
PIMAGE_RESOURCE_DIRECTORY retv;
- LPWSTR nameW = HIWORD(name)? HEAP_strdupAtoW( GetProcessHeap(), 0, name )
+ LPWSTR nameW = HIWORD(name)? HEAP_strdupAtoW( GetProcessHeap(), 0, name )
: (LPWSTR)name;
retv = GetResDirEntryW( resdirptr, nameW, root, allowdefault );
}
/**********************************************************************
- * PE_FindResourceEx32W
+ * PE_FindResourceEx32W
*/
HANDLE PE_FindResourceExW(
- WINE_MODREF *wm,LPCWSTR name,LPCWSTR type,WORD lang
+ WINE_MODREF *wm,LPCWSTR name,LPCWSTR type,WORD lang
) {
PIMAGE_RESOURCE_DIRECTORY resdirptr;
DWORD root;
HANDLE result;
- PE_MODREF *pem = &(wm->binfmt.pe);
+ PE_MODREF *pem = &(wm->binfmt.pe);
if (!pem || !pem->pe_resource)
- return 0;
+ return 0;
resdirptr = pem->pe_resource;
root = (DWORD) resdirptr;
if ((resdirptr = GetResDirEntryW(resdirptr, type, root, FALSE)) == NULL)
- return 0;
+ return 0;
if ((resdirptr = GetResDirEntryW(resdirptr, name, root, FALSE)) == NULL)
- return 0;
+ return 0;
result = (HANDLE)GetResDirEntryW(resdirptr, (LPCWSTR)(UINT)lang, root, FALSE);
- /* Try LANG_NEUTRAL, too */
+ /* Try LANG_NEUTRAL, too */
if(!result)
return (HANDLE)GetResDirEntryW(resdirptr, (LPCWSTR)0, root, TRUE);
return result;
/**********************************************************************
- * PE_LoadResource32
+ * PE_LoadResource32
*/
HANDLE PE_LoadResource( WINE_MODREF *wm, HANDLE hRsrc )
{
if (!hRsrc || !wm || wm->type!=MODULE32_PE)
- return 0;
+ return 0;
return (HANDLE) (wm->module + ((PIMAGE_RESOURCE_DATA_ENTRY)hRsrc)->OffsetToData);
}
/**********************************************************************
- * PE_SizeofResource32
+ * PE_SizeofResource32
*/
DWORD PE_SizeofResource( HINSTANCE hModule, HANDLE hRsrc )
{
/* we don't need hModule */
if (!hRsrc)
- return 0;
+ return 0;
return ((PIMAGE_RESOURCE_DATA_ENTRY)hRsrc)->Size;
}
/**********************************************************************
- * PE_EnumResourceTypes32A
+ * PE_EnumResourceTypes32A
*/
WIN_BOOL
PE_EnumResourceTypesA(HMODULE hmod,ENUMRESTYPEPROCA lpfun,LONG lparam) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
- HANDLE heap = GetProcessHeap();
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
+ HANDLE heap = GetProcessHeap();
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- LPSTR name;
-
- if (et[i].u1.s.NameIsString)
- name = HEAP_strdupWtoA(heap,0,(LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset));
- else
- name = (LPSTR)(int)et[i].u1.Id;
- ret = lpfun(hmod,name,lparam);
- if (HIWORD(name))
- HeapFree(heap,0,name);
- if (!ret)
- break;
+ LPSTR name;
+
+ if (et[i].u1.s.NameIsString)
+ name = HEAP_strdupWtoA(heap,0,(LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset));
+ else
+ name = (LPSTR)(int)et[i].u1.Id;
+ ret = lpfun(hmod,name,lparam);
+ if (HIWORD(name))
+ HeapFree(heap,0,name);
+ if (!ret)
+ break;
}
return ret;
}
/**********************************************************************
- * PE_EnumResourceTypes32W
+ * PE_EnumResourceTypes32W
*/
WIN_BOOL
PE_EnumResourceTypesW(HMODULE hmod,ENUMRESTYPEPROCW lpfun,LONG lparam) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- LPWSTR type;
- if (et[i].u1.s.NameIsString)
- type = (LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset);
- else
- type = (LPWSTR)(int)et[i].u1.Id;
-
- ret = lpfun(hmod,type,lparam);
- if (!ret)
- break;
+ LPWSTR type;
+ if (et[i].u1.s.NameIsString)
+ type = (LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset);
+ else
+ type = (LPWSTR)(int)et[i].u1.Id;
+
+ ret = lpfun(hmod,type,lparam);
+ if (!ret)
+ break;
}
return ret;
}
/**********************************************************************
- * PE_EnumResourceNames32A
+ * PE_EnumResourceNames32A
*/
WIN_BOOL
PE_EnumResourceNamesA(
- HMODULE hmod,LPCSTR type,ENUMRESNAMEPROCA lpfun,LONG lparam
+ HMODULE hmod,LPCSTR type,ENUMRESNAMEPROCA lpfun,LONG lparam
) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
- HANDLE heap = GetProcessHeap();
- LPWSTR typeW;
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
+ HANDLE heap = GetProcessHeap();
+ LPWSTR typeW;
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
if (HIWORD(type))
- typeW = HEAP_strdupAtoW(heap,0,type);
+ typeW = HEAP_strdupAtoW(heap,0,type);
else
- typeW = (LPWSTR)type;
+ typeW = (LPWSTR)type;
resdir = GetResDirEntryW(resdir,typeW,(DWORD)pem->pe_resource,FALSE);
if (HIWORD(typeW))
- HeapFree(heap,0,typeW);
+ HeapFree(heap,0,typeW);
if (!resdir)
- return FALSE;
+ return FALSE;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- LPSTR name;
-
- if (et[i].u1.s.NameIsString)
- name = HEAP_strdupWtoA(heap,0,(LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset));
- else
- name = (LPSTR)(int)et[i].u1.Id;
- ret = lpfun(hmod,type,name,lparam);
- if (HIWORD(name)) HeapFree(heap,0,name);
- if (!ret)
- break;
+ LPSTR name;
+
+ if (et[i].u1.s.NameIsString)
+ name = HEAP_strdupWtoA(heap,0,(LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset));
+ else
+ name = (LPSTR)(int)et[i].u1.Id;
+ ret = lpfun(hmod,type,name,lparam);
+ if (HIWORD(name)) HeapFree(heap,0,name);
+ if (!ret)
+ break;
}
return ret;
}
/**********************************************************************
- * PE_EnumResourceNames32W
+ * PE_EnumResourceNames32W
*/
WIN_BOOL
PE_EnumResourceNamesW(
- HMODULE hmod,LPCWSTR type,ENUMRESNAMEPROCW lpfun,LONG lparam
+ HMODULE hmod,LPCWSTR type,ENUMRESNAMEPROCW lpfun,LONG lparam
) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
resdir = GetResDirEntryW(resdir,type,(DWORD)pem->pe_resource,FALSE);
if (!resdir)
- return FALSE;
+ return FALSE;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- LPWSTR name;
- if (et[i].u1.s.NameIsString)
- name = (LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset);
- else
- name = (LPWSTR)(int)et[i].u1.Id;
- ret = lpfun(hmod,type,name,lparam);
- if (!ret)
- break;
+ LPWSTR name;
+ if (et[i].u1.s.NameIsString)
+ name = (LPWSTR)((LPBYTE)pem->pe_resource+et[i].u1.s.NameOffset);
+ else
+ name = (LPWSTR)(int)et[i].u1.Id;
+ ret = lpfun(hmod,type,name,lparam);
+ if (!ret)
+ break;
}
return ret;
}
/**********************************************************************
- * PE_EnumResourceNames32A
+ * PE_EnumResourceNames32A
*/
WIN_BOOL
PE_EnumResourceLanguagesA(
- HMODULE hmod,LPCSTR name,LPCSTR type,ENUMRESLANGPROCA lpfun,
- LONG lparam
+ HMODULE hmod,LPCSTR name,LPCSTR type,ENUMRESLANGPROCA lpfun,
+ LONG lparam
) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
- HANDLE heap = GetProcessHeap();
- LPWSTR nameW,typeW;
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
+ HANDLE heap = GetProcessHeap();
+ LPWSTR nameW,typeW;
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
if (HIWORD(name))
- nameW = HEAP_strdupAtoW(heap,0,name);
+ nameW = HEAP_strdupAtoW(heap,0,name);
else
- nameW = (LPWSTR)name;
+ nameW = (LPWSTR)name;
resdir = GetResDirEntryW(resdir,nameW,(DWORD)pem->pe_resource,FALSE);
if (HIWORD(nameW))
- HeapFree(heap,0,nameW);
+ HeapFree(heap,0,nameW);
if (!resdir)
- return FALSE;
+ return FALSE;
if (HIWORD(type))
- typeW = HEAP_strdupAtoW(heap,0,type);
+ typeW = HEAP_strdupAtoW(heap,0,type);
else
- typeW = (LPWSTR)type;
+ typeW = (LPWSTR)type;
resdir = GetResDirEntryW(resdir,typeW,(DWORD)pem->pe_resource,FALSE);
if (HIWORD(typeW))
- HeapFree(heap,0,typeW);
+ HeapFree(heap,0,typeW);
if (!resdir)
- return FALSE;
+ return FALSE;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- /* languages are just ids... I hopem */
- ret = lpfun(hmod,name,type,et[i].u1.Id,lparam);
- if (!ret)
- break;
+ /* languages are just ids... I hopem */
+ ret = lpfun(hmod,name,type,et[i].u1.Id,lparam);
+ if (!ret)
+ break;
}
return ret;
}
/**********************************************************************
- * PE_EnumResourceLanguages32W
+ * PE_EnumResourceLanguages32W
*/
WIN_BOOL
PE_EnumResourceLanguagesW(
- HMODULE hmod,LPCWSTR name,LPCWSTR type,ENUMRESLANGPROCW lpfun,
- LONG lparam
+ HMODULE hmod,LPCWSTR name,LPCWSTR type,ENUMRESLANGPROCW lpfun,
+ LONG lparam
) {
- PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
- int i;
- PIMAGE_RESOURCE_DIRECTORY resdir;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
- WIN_BOOL ret;
+ PE_MODREF *pem = HMODULE32toPE_MODREF(hmod);
+ int i;
+ PIMAGE_RESOURCE_DIRECTORY resdir;
+ PIMAGE_RESOURCE_DIRECTORY_ENTRY et;
+ WIN_BOOL ret;
if (!pem || !pem->pe_resource)
- return FALSE;
+ return FALSE;
resdir = (PIMAGE_RESOURCE_DIRECTORY)pem->pe_resource;
resdir = GetResDirEntryW(resdir,name,(DWORD)pem->pe_resource,FALSE);
if (!resdir)
- return FALSE;
+ return FALSE;
resdir = GetResDirEntryW(resdir,type,(DWORD)pem->pe_resource,FALSE);
if (!resdir)
- return FALSE;
+ return FALSE;
et =(PIMAGE_RESOURCE_DIRECTORY_ENTRY)((LPBYTE)resdir+sizeof(IMAGE_RESOURCE_DIRECTORY));
ret = FALSE;
for (i=0;i<resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries;i++) {
- ret = lpfun(hmod,name,type,et[i].u1.Id,lparam);
- if (!ret)
- break;
+ ret = lpfun(hmod,name,type,et[i].u1.Id,lparam);
+ if (!ret)
+ break;
}
return ret;
}
/* codec capabilities flags */
enum {
- codecCanScale = 1L << 0, // 1
- codecCanMask = 1L << 1, // 2
- codecCanMatte = 1L << 2, // 4
- codecCanTransform = 1L << 3, // 8
- codecCanTransferMode = 1L << 4, // 10
- codecCanCopyPrev = 1L << 5, // 20
- codecCanSpool = 1L << 6, // 40
- codecCanClipVertical = 1L << 7, // 80
- codecCanClipRectangular = 1L << 8, // 100
- codecCanRemapColor = 1L << 9, // 200
- codecCanFastDither = 1L << 10, // 400
- codecCanSrcExtract = 1L << 11, // 800
- codecCanCopyPrevComp = 1L << 12, // 1000
- codecCanAsync = 1L << 13, // 2000
- codecCanMakeMask = 1L << 14, // 4000
- codecCanShift = 1L << 15, // 8000
- codecCanAsyncWhen = 1L << 16, // 10000
- codecCanShieldCursor = 1L << 17, // 20000
- codecCanManagePrevBuffer = 1L << 18, // 40000
+ codecCanScale = 1L << 0, // 1
+ codecCanMask = 1L << 1, // 2
+ codecCanMatte = 1L << 2, // 4
+ codecCanTransform = 1L << 3, // 8
+ codecCanTransferMode = 1L << 4, // 10
+ codecCanCopyPrev = 1L << 5, // 20
+ codecCanSpool = 1L << 6, // 40
+ codecCanClipVertical = 1L << 7, // 80
+ codecCanClipRectangular = 1L << 8, // 100
+ codecCanRemapColor = 1L << 9, // 200
+ codecCanFastDither = 1L << 10, // 400
+ codecCanSrcExtract = 1L << 11, // 800
+ codecCanCopyPrevComp = 1L << 12, // 1000
+ codecCanAsync = 1L << 13, // 2000
+ codecCanMakeMask = 1L << 14, // 4000
+ codecCanShift = 1L << 15, // 8000
+ codecCanAsyncWhen = 1L << 16, // 10000
+ codecCanShieldCursor = 1L << 17, // 20000
+ codecCanManagePrevBuffer = 1L << 18, // 40000
codecHasVolatileBuffer = 1L << 19, // 80000 /* codec requires redraw after window movement */
- codecWantsRegionMask = 1L << 20, // 100000
+ codecWantsRegionMask = 1L << 20, // 100000
codecImageBufferIsOnScreen = 1L << 21, // 200000 /* old def of codec using overlay surface, = ( codecIsDirectToScreenOnly | codecUsesOverlaySurface | codecImageBufferIsOverlaySurface | codecSrcMustBeImageBuffer ) */
codecWantsDestinationPixels = 1L << 22, // 400000
codecWantsSpecialScaling = 1L << 23, // 800000
- codecHandlesInputs = 1L << 24, // 1000000
+ codecHandlesInputs = 1L << 24, // 1000000
codecCanDoIndirectSurface = 1L << 25, /* codec can handle indirect surface (GDI) */
codecIsSequenceSensitive = 1L << 26,
codecRequiresOffscreen = 1L << 27,
/* codec condition flags */
// FFD = 13 = 8+4+1
enum {
- codecConditionFirstBand = 1L << 0, // 1
- codecConditionLastBand = 1L << 1, // 2
- codecConditionFirstFrame = 1L << 2, // 4
- codecConditionNewDepth = 1L << 3, // 8
- codecConditionNewTransform = 1L << 4, // 10
- codecConditionNewSrcRect = 1L << 5, // 20
- codecConditionNewMask = 1L << 6, // 40
- codecConditionNewMatte = 1L << 7, // 80
- codecConditionNewTransferMode = 1L << 8, // 100
- codecConditionNewClut = 1L << 9, // 200
- codecConditionNewAccuracy = 1L << 10, // 400
- codecConditionNewDestination = 1L << 11, // 800
- codecConditionFirstScreen = 1L << 12, // 1000
- codecConditionDoCursor = 1L << 13, // 2000
- codecConditionCatchUpDiff = 1L << 14, // 4000
- codecConditionMaskMayBeChanged = 1L << 15, // 8000
- codecConditionToBuffer = 1L << 16, // 10000
- codecConditionCodecChangedMask = 1L << 31 // 20000
+ codecConditionFirstBand = 1L << 0, // 1
+ codecConditionLastBand = 1L << 1, // 2
+ codecConditionFirstFrame = 1L << 2, // 4
+ codecConditionNewDepth = 1L << 3, // 8
+ codecConditionNewTransform = 1L << 4, // 10
+ codecConditionNewSrcRect = 1L << 5, // 20
+ codecConditionNewMask = 1L << 6, // 40
+ codecConditionNewMatte = 1L << 7, // 80
+ codecConditionNewTransferMode = 1L << 8, // 100
+ codecConditionNewClut = 1L << 9, // 200
+ codecConditionNewAccuracy = 1L << 10, // 400
+ codecConditionNewDestination = 1L << 11, // 800
+ codecConditionFirstScreen = 1L << 12, // 1000
+ codecConditionDoCursor = 1L << 13, // 2000
+ codecConditionCatchUpDiff = 1L << 14, // 4000
+ codecConditionMaskMayBeChanged = 1L << 15, // 8000
+ codecConditionToBuffer = 1L << 16, // 10000
+ codecConditionCodecChangedMask = 1L << 31 // 20000
};
int i;
for(i=0;i<id->idSize;i++){
- printf(" %02X",((unsigned char*)id)[i]);
- if((i%16)==15) printf("\n");
+ printf(" %02X",((unsigned char*)id)[i]);
+ if((i%16)==15) printf("\n");
}
printf("\n");
printf("idSize=0x%X fourcc=0x%08X\n",id->idSize,id->cType);
printf("ver=%d rev=%d vendor=0x%08X\n",id->version,id->revisionLevel,id->vendor);
printf("tempQ=%d spatQ=%d dim: %d x %d dpi: %d x %d depth: %d\n",
- id->temporalQuality,id->spatialQuality,
- id->width, id->height,
- id->hRes, id->vRes,
- id->depth);
+ id->temporalQuality,id->spatialQuality,
+ id->width, id->height,
+ id->hRes, id->vRes,
+ id->depth);
printf("dataSize=%d frameCount=%d clutID=%d\n",id->dataSize, id->frameCount, id->clutID);
printf("name='%.*s'\n",((char*)(&id->name))[0],((char*)(&id->name))+1);
x=((char*)(&id->clutID))+2;
if(id->idSize>sizeof(ImageDescription)){
- printf("%02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X\n",
- x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]);
+ printf("%02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X\n",
+ x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]);
}
printf("=========================================================\n");
}
static inline void dump_MatrixRecord(char* title, MatrixRecord *m){
printf("%s: [%d %d %d][%d %d %d][%d %d %d]\n",title,
- m->matrix[0][0],m->matrix[0][1],m->matrix[0][2],
- m->matrix[1][0],m->matrix[1][1],m->matrix[1][2],
- m->matrix[2][0],m->matrix[2][1],m->matrix[2][2]);
+ m->matrix[0][0],m->matrix[0][1],m->matrix[0][2],
+ m->matrix[1][0],m->matrix[1][1],m->matrix[1][2],
+ m->matrix[2][0],m->matrix[2][1],m->matrix[2][2]);
}
static inline void dump_PixMap(void* xxx){
printf("base=%p stride=%d\n",p->baseAddr, p->rowBytes);
dump_Rect("bounds",&p->bounds);
printf("pmVersion=0x%X packType=0x%X\n packSize=0x%X\n",
- p->pmVersion,p->packType, p->packSize);
+ p->pmVersion,p->packType, p->packSize);
printf("hRes=0x%X vRes=0x%X pixelType=0x%X pixelSize=0x%X\n",
- p->hRes,p->vRes,p->pixelType,p->pixelSize);
+ p->hRes,p->vRes,p->pixelType,p->pixelSize);
printf("cmpCount=0x%X cmpSize=0x%X pixelFormat=0x%X\n",
- p->cmpCount,p->cmpSize,p->pixelFormat);
+ p->cmpCount,p->cmpSize,p->pixelFormat);
printf("pmTable=%p pmExt=%p\n",p->pmTable,p->pmExt);
printf("=========================================================\n");
}
printf("=============== CodecCapabilities at %p =================\n",xxx);
printf("flags=0x%X flags2=0x%X\n",cc->flags,cc->flags2);
printf("wantedPixelSize=%d extendWidth=%d extendHeight=%d band=%d+%d\n",
- cc->wantedPixelSize,cc->extendWidth,cc->extendHeight,
- cc->bandMin,cc->bandInc);
+ cc->wantedPixelSize,cc->extendWidth,cc->extendHeight,
+ cc->bandMin,cc->bandInc);
printf("pad=0x%X time=0x%X\n",cc->pad,cc->time);
printf("=========================================================\n");
}
printf("sequenceID=%d\n",cd->sequenceID);
idh=cd->imageDescription;
if(idh && idh[0]) dump_ImageDescription(idh[0]);
-
+
for(i=0;i<sizeof(CodecDecompressParams);i++){
- printf(" %02X",((unsigned char*)cd)[i]);
- if((i%16)==15) printf("\n");
+ printf(" %02X",((unsigned char*)cd)[i]);
+ if((i%16)==15) printf("\n");
}
printf("\n");
-
+
printf("data=%p size=%d\n",cd->data,cd->bufferSize);
printf("frameno=%d lines: %d .. %d condflags=0x%X callerflags=0x%X\n",
- cd->frameNumber, cd->startLine, cd->stopLine, cd->conditionFlags,cd->callerFlags);
+ cd->frameNumber, cd->startLine, cd->stopLine, cd->conditionFlags,cd->callerFlags);
// printf("maskBits=%p mattePixMap=%p\n",
-// cd->maskBits,cd->mattePixMap);
+// cd->maskBits,cd->mattePixMap);
dump_PixMap(&cd->dstPixMap);
// if(cd->mattePixMap) dump_PixMap(cd->mattePixMap);
if(cd->matrix) dump_MatrixRecord("matrix",cd->matrix);
if(cd->capabilities) dump_CodecCapabilities(cd->capabilities);
printf("accuracy=%d transferMode=%d matrixFlags=0x%X matrixType=%d\n",
- (int)cd->accuracy, (int)cd->transferMode, (int)cd->matrixFlags, (int)cd->matrixType);
+ (int)cd->accuracy, (int)cd->transferMode, (int)cd->matrixFlags, (int)cd->matrixType);
printf("srcrect: %d;%d - %d;%d\n",cd->srcRect.top,cd->srcRect.left,cd->srcRect.bottom,cd->srcRect.right);
printf("dstrect: %d;%d - %d;%d\n",cd->dstRect.top,cd->dstRect.left,cd->dstRect.bottom,cd->dstRect.right);
printf("wantedDestinationPixelTypes=%p\n",cd->wantedDestinationPixelTypes);
if(cd->wantedDestinationPixelTypes){
- unsigned int* p=cd->wantedDestinationPixelTypes;
- while(p[0]){
- printf(" 0x%08X %.4s\n",p[0],&p[0]);
- ++p;
- }
+ unsigned int* p=cd->wantedDestinationPixelTypes;
+ while(p[0]){
+ printf(" 0x%08X %.4s\n",p[0],&p[0]);
+ ++p;
+ }
}
printf("screenFloodMethod=%d value=%d preferredOffscreenPixelSize=%d\n",
- cd->screenFloodMethod, cd->screenFloodValue, cd->preferredOffscreenPixelSize);
+ cd->screenFloodMethod, cd->screenFloodValue, cd->preferredOffscreenPixelSize);
printf("callbacks: progress=%p compl=%p data=%p ftime=%p srcdata=%p sync=%p\n",
cd->progressProcRecord, cd->completionProcRecord,
cd->dataProcRecord, cd->frameTime, cd->sourceData, cd->syncFrameTime);
typedef struct reg_handle_s
{
- int handle;
- char* name;
- struct reg_handle_s* next;
- struct reg_handle_s* prev;
+ int handle;
+ char* name;
+ struct reg_handle_s* next;
+ struct reg_handle_s* prev;
} reg_handle_t;
struct reg_value
{
- int type;
- char* name;
- int len;
- char* value;
+ int type;
+ char* name;
+ int len;
+ char* value;
};
static struct reg_value* regs = NULL;
static void create_registry(void){
if(regs)
{
- printf("Logic error: create_registry() called with existing registry\n");
- save_registry();
- return;
+ printf("Logic error: create_registry() called with existing registry\n");
+ save_registry();
+ return;
}
regs=(struct reg_value*)malloc(3*sizeof(struct reg_value));
regs[0].type=regs[1].type=DIR;
static void open_registry(void)
{
- int fd;
- int i;
- unsigned int len;
- if(regs)
- {
- printf("Multiple open_registry(>\n");
- return;
- }
- fd = open(localregpathname, O_RDONLY);
- if (fd == -1)
- {
- printf("Creating new registry\n");
- create_registry();
- return;
- }
- read(fd, ®_size, 4);
- regs=(struct reg_value*)malloc(reg_size*sizeof(struct reg_value));
- head = 0;
- for(i=0; i<reg_size; i++)
- {
- read(fd,®s[i].type,4);
- read(fd,&len,4);
- regs[i].name=(char*)malloc(len+1);
- if(regs[i].name==0)
- {
- reg_size=i+1;
- goto error;
- }
- read(fd, regs[i].name, len);
- regs[i].name[len]=0;
- read(fd,®s[i].len,4);
- regs[i].value=(char*)malloc(regs[i].len+1);
- if(regs[i].value==0)
- {
- free(regs[i].name);
- reg_size=i+1;
- goto error;
- }
- read(fd, regs[i].value, regs[i].len);
- regs[i].value[regs[i].len]=0;
- }
+ int fd;
+ int i;
+ unsigned int len;
+ if(regs)
+ {
+ printf("Multiple open_registry(>\n");
+ return;
+ }
+ fd = open(localregpathname, O_RDONLY);
+ if (fd == -1)
+ {
+ printf("Creating new registry\n");
+ create_registry();
+ return;
+ }
+ read(fd, ®_size, 4);
+ regs=(struct reg_value*)malloc(reg_size*sizeof(struct reg_value));
+ head = 0;
+ for(i=0; i<reg_size; i++)
+ {
+ read(fd,®s[i].type,4);
+ read(fd,&len,4);
+ regs[i].name=(char*)malloc(len+1);
+ if(regs[i].name==0)
+ {
+ reg_size=i+1;
+ goto error;
+ }
+ read(fd, regs[i].name, len);
+ regs[i].name[len]=0;
+ read(fd,®s[i].len,4);
+ regs[i].value=(char*)malloc(regs[i].len+1);
+ if(regs[i].value==0)
+ {
+ free(regs[i].name);
+ reg_size=i+1;
+ goto error;
+ }
+ read(fd, regs[i].value, regs[i].len);
+ regs[i].value[regs[i].len]=0;
+ }
error:
- close(fd);
- return;
+ close(fd);
+ return;
}
static void save_registry(void)
{
- int fd, i;
- if (!regs)
- init_registry();
- fd = open(localregpathname, O_WRONLY | O_CREAT, 00666);
- if (fd == -1)
- {
- printf("Failed to open registry file '%s' for writing.\n",
- localregpathname);
- return;
- }
- write(fd, ®_size, 4);
- for(i=0; i<reg_size; i++)
- {
- unsigned len=strlen(regs[i].name);
- write(fd, ®s[i].type, 4);
- write(fd, &len, 4);
- write(fd, regs[i].name, len);
- write(fd, ®s[i].len, 4);
- write(fd, regs[i].value, regs[i].len);
- }
- close(fd);
+ int fd, i;
+ if (!regs)
+ init_registry();
+ fd = open(localregpathname, O_WRONLY | O_CREAT, 00666);
+ if (fd == -1)
+ {
+ printf("Failed to open registry file '%s' for writing.\n",
+ localregpathname);
+ return;
+ }
+ write(fd, ®_size, 4);
+ for(i=0; i<reg_size; i++)
+ {
+ unsigned len=strlen(regs[i].name);
+ write(fd, ®s[i].type, 4);
+ write(fd, &len, 4);
+ write(fd, regs[i].name, len);
+ write(fd, ®s[i].len, 4);
+ write(fd, regs[i].value, regs[i].len);
+ }
+ close(fd);
}
void free_registry(void)
reg_handle_t* t = head;
while (t)
{
- reg_handle_t* f = t;
+ reg_handle_t* f = t;
if (t->name)
- free(t->name);
- t=t->prev;
+ free(t->name);
+ t=t->prev;
free(f);
}
head = 0;
if (regs)
{
int i;
- for(i=0; i<reg_size; i++)
- {
- free(regs[i].name);
- free(regs[i].value);
- }
- free(regs);
- regs = 0;
+ for(i=0; i<reg_size; i++)
+ {
+ free(regs[i].name);
+ free(regs[i].value);
+ }
+ free(regs);
+ regs = 0;
}
if (localregpathname && localregpathname != regpathname)
- free(localregpathname);
+ free(localregpathname);
localregpathname = 0;
}
static reg_handle_t* find_handle_by_name(const char* name)
{
- reg_handle_t* t;
- for(t=head; t; t=t->prev)
- {
- if(!strcmp(t->name, name))
- {
- return t;
- }
- }
- return 0;
+ reg_handle_t* t;
+ for(t=head; t; t=t->prev)
+ {
+ if(!strcmp(t->name, name))
+ {
+ return t;
+ }
+ }
+ return 0;
}
static struct reg_value* find_value_by_name(const char* name)
{
- int i;
- for(i=0; i<reg_size; i++)
- if(!strcmp(regs[i].name, name))
- return regs+i;
- return 0;
+ int i;
+ for(i=0; i<reg_size; i++)
+ if(!strcmp(regs[i].name, name))
+ return regs+i;
+ return 0;
}
static reg_handle_t* find_handle(int handle)
{
- reg_handle_t* t;
- for(t=head; t; t=t->prev)
- {
- if(t->handle==handle)
- {
- return t;
- }
- }
- return 0;
+ reg_handle_t* t;
+ for(t=head; t; t=t->prev)
+ {
+ if(t->handle==handle)
+ {
+ return t;
+ }
+ }
+ return 0;
}
static int generate_handle()
{
- static unsigned int zz=249;
- zz++;
- while((zz==HKEY_LOCAL_MACHINE) || (zz==HKEY_CURRENT_USER))
- zz++;
- return zz;
+ static unsigned int zz=249;
+ zz++;
+ while((zz==HKEY_LOCAL_MACHINE) || (zz==HKEY_CURRENT_USER))
+ zz++;
+ return zz;
}
static reg_handle_t* insert_handle(long handle, const char* name)
{
- reg_handle_t* t;
- t=(reg_handle_t*)malloc(sizeof(reg_handle_t));
- if(head==0)
- {
- t->prev=0;
- }
- else
- {
- head->next=t;
- t->prev=head;
- }
- t->next=0;
- t->name=(char*)malloc(strlen(name)+1);
- strcpy(t->name, name);
- t->handle=handle;
- head=t;
- return t;
+ reg_handle_t* t;
+ t=(reg_handle_t*)malloc(sizeof(reg_handle_t));
+ if(head==0)
+ {
+ t->prev=0;
+ }
+ else
+ {
+ head->next=t;
+ t->prev=head;
+ }
+ t->next=0;
+ t->name=(char*)malloc(strlen(name)+1);
+ strcpy(t->name, name);
+ t->handle=handle;
+ head=t;
+ return t;
}
static char* build_keyname(long key, const char* subkey)
{
- char* full_name;
- reg_handle_t* t;
- if((t=find_handle(key))==0)
- {
- TRACE("Invalid key\n");
- return NULL;
- }
- if(subkey==NULL)
- subkey="<default>";
- full_name=(char*)malloc(strlen(t->name)+strlen(subkey)+10);
- strcpy(full_name, t->name);
- strcat(full_name, "\\");
- strcat(full_name, subkey);
- return full_name;
+ char* full_name;
+ reg_handle_t* t;
+ if((t=find_handle(key))==0)
+ {
+ TRACE("Invalid key\n");
+ return NULL;
+ }
+ if(subkey==NULL)
+ subkey="<default>";
+ full_name=(char*)malloc(strlen(t->name)+strlen(subkey)+10);
+ strcpy(full_name, t->name);
+ strcat(full_name, "\\");
+ strcat(full_name, subkey);
+ return full_name;
}
static struct reg_value* insert_reg_value(int handle, const char* name, int type, const void* value, int len)
{
- reg_handle_t* t;
- struct reg_value* v;
- char* fullname;
- if((fullname=build_keyname(handle, name))==NULL)
- {
- TRACE("Invalid handle\n");
- return NULL;
- }
-
- if((v=find_value_by_name(fullname))==0)
- //creating new value in registry
- {
- if(regs==0)
- create_registry();
- regs=(struct reg_value*)realloc(regs, sizeof(struct reg_value)*(reg_size+1));
- //regs=(struct reg_value*)my_realloc(regs, sizeof(struct reg_value)*(reg_size+1));
- v=regs+reg_size;
- reg_size++;
- }
- else
- //replacing old one
- {
- free(v->value);
- free(v->name);
- }
- TRACE("RegInsert '%s' %p v:%d len:%d\n", name, value, *(int*)value, len);
- v->type=type;
- v->len=len;
- v->value=(char*)malloc(len);
- memcpy(v->value, value, len);
- v->name=(char*)malloc(strlen(fullname)+1);
- strcpy(v->name, fullname);
+ reg_handle_t* t;
+ struct reg_value* v;
+ char* fullname;
+ if((fullname=build_keyname(handle, name))==NULL)
+ {
+ TRACE("Invalid handle\n");
+ return NULL;
+ }
+
+ if((v=find_value_by_name(fullname))==0)
+ //creating new value in registry
+ {
+ if(regs==0)
+ create_registry();
+ regs=(struct reg_value*)realloc(regs, sizeof(struct reg_value)*(reg_size+1));
+ //regs=(struct reg_value*)my_realloc(regs, sizeof(struct reg_value)*(reg_size+1));
+ v=regs+reg_size;
+ reg_size++;
+ }
+ else
+ //replacing old one
+ {
+ free(v->value);
+ free(v->name);
+ }
+ TRACE("RegInsert '%s' %p v:%d len:%d\n", name, value, *(int*)value, len);
+ v->type=type;
+ v->len=len;
+ v->value=(char*)malloc(len);
+ memcpy(v->value, value, len);
+ v->name=(char*)malloc(strlen(fullname)+1);
+ strcpy(v->name, fullname);
free(fullname);
- save_registry();
- return v;
+ save_registry();
+ return v;
}
static void init_registry(void)
{
- TRACE("Initializing registry\n");
- // can't be free-ed - it's static and probably thread
- // unsafe structure which is stored in glibc
+ TRACE("Initializing registry\n");
+ // can't be free-ed - it's static and probably thread
+ // unsafe structure which is stored in glibc
#ifdef MPLAYER
- regpathname = get_path("registry");
- localregpathname = regpathname;
+ regpathname = get_path("registry");
+ localregpathname = regpathname;
#else
- // regpathname is an external pointer
+ // regpathname is an external pointer
//
- // registry.c is holding its own internal pointer
- // localregpathname - which is being allocate/deallocated
+ // registry.c is holding its own internal pointer
+ // localregpathname - which is being allocate/deallocated
- if (localregpathname == 0)
- {
+ if (localregpathname == 0)
+ {
const char* pthn = regpathname;
- if (!regpathname)
- {
- // avifile - for now reading data from user's home
- struct passwd* pwent;
- pwent = getpwuid(geteuid());
+ if (!regpathname)
+ {
+ // avifile - for now reading data from user's home
+ struct passwd* pwent;
+ pwent = getpwuid(geteuid());
pthn = pwent->pw_dir;
- }
+ }
- localregpathname = (char*)malloc(strlen(pthn)+20);
- strcpy(localregpathname, pthn);
- strcat(localregpathname, "/.registry");
- }
+ localregpathname = (char*)malloc(strlen(pthn)+20);
+ strcpy(localregpathname, pthn);
+ strcat(localregpathname, "/.registry");
+ }
#endif
- open_registry();
- insert_handle(HKEY_LOCAL_MACHINE, "HKLM");
- insert_handle(HKEY_CURRENT_USER, "HKCU");
+ open_registry();
+ insert_handle(HKEY_LOCAL_MACHINE, "HKLM");
+ insert_handle(HKEY_CURRENT_USER, "HKCU");
}
static reg_handle_t* find_handle_2(long key, const char* subkey)
{
- char* full_name;
- reg_handle_t* t;
- if((t=find_handle(key))==0)
- {
- TRACE("Invalid key\n");
- return (reg_handle_t*)-1;
- }
- if(subkey==NULL)
- return t;
- full_name=(char*)malloc(strlen(t->name)+strlen(subkey)+10);
- strcpy(full_name, t->name);
- strcat(full_name, "\\");
- strcat(full_name, subkey);
- t=find_handle_by_name(full_name);
- free(full_name);
- return t;
+ char* full_name;
+ reg_handle_t* t;
+ if((t=find_handle(key))==0)
+ {
+ TRACE("Invalid key\n");
+ return (reg_handle_t*)-1;
+ }
+ if(subkey==NULL)
+ return t;
+ full_name=(char*)malloc(strlen(t->name)+strlen(subkey)+10);
+ strcpy(full_name, t->name);
+ strcat(full_name, "\\");
+ strcat(full_name, subkey);
+ t=find_handle_by_name(full_name);
+ free(full_name);
+ return t;
}
long __stdcall RegOpenKeyExA(long key, const char* subkey, long reserved, long access, int* newkey)
if(!regs)
init_registry()
;
-/* t=find_handle_2(key, subkey);
+/* t=find_handle_2(key, subkey);
- if(t==0)
- return -1;
+ if(t==0)
+ return -1;
- if(t==(reg_handle_t*)-1)
- return -1;
+ if(t==(reg_handle_t*)-1)
+ return -1;
*/
full_name=build_keyname(key, subkey);
if(!full_name)
{
reg_handle_t *handle;
if(key==(long)HKEY_LOCAL_MACHINE)
- return 0;
+ return 0;
if(key==(long)HKEY_CURRENT_USER)
- return 0;
+ return 0;
handle=find_handle(key);
if(handle==0)
- return 0;
+ return 0;
if(handle->prev)
- handle->prev->next=handle->next;
+ handle->prev->next=handle->next;
if(handle->next)
- handle->next->prev=handle->prev;
+ handle->next->prev=handle->prev;
if(handle->name)
- free(handle->name);
+ free(handle->name);
if(handle==head)
- head=head->prev;
+ head=head->prev;
free(handle);
return 1;
}
char* c;
TRACE("Querying value %s\n", value);
if(!regs)
- init_registry();
+ init_registry();
c=build_keyname(key, value);
if (!c)
- return 1;
+ return 1;
t=find_value_by_name(c);
free(c);
if (t==0)
- return 2;
+ return 2;
if (type)
- *type=t->type;
+ *type=t->type;
if (data)
{
- memcpy(data, t->value, (t->len<*count)?t->len:*count);
- TRACE("returning %d bytes: %d\n", t->len, *(int*)data);
+ memcpy(data, t->value, (t->len<*count)?t->len:*count);
+ TRACE("returning %d bytes: %d\n", t->len, *(int*)data);
}
if(*count<t->len)
{
- *count=t->len;
- return ERROR_MORE_DATA;
+ *count=t->len;
+ return ERROR_MORE_DATA;
}
else
{
- *count=t->len;
+ *count=t->len;
}
return 0;
}
long __stdcall RegCreateKeyExA(long key, const char* name, long reserved,
- void* classs, long options, long security,
- void* sec_attr, int* newkey, int* status)
+ void* classs, long options, long security,
+ void* sec_attr, int* newkey, int* status)
{
reg_handle_t* t;
char* fullname;
struct reg_value* v;
// TRACE("Creating/Opening key %s\n", name);
if(!regs)
- init_registry();
+ init_registry();
fullname=build_keyname(key, name);
if (!fullname)
- return 1;
+ return 1;
TRACE("Creating/Opening key %s\n", fullname);
v=find_value_by_name(fullname);
if(v==0)
{
- int qw=45708;
- v=insert_reg_value(key, name, DIR, &qw, 4);
- if (status) *status=REG_CREATED_NEW_KEY;
- // return 0;
+ int qw=45708;
+ v=insert_reg_value(key, name, DIR, &qw, 4);
+ if (status) *status=REG_CREATED_NEW_KEY;
+ // return 0;
}
t=insert_handle(generate_handle(), fullname);
*/
long __stdcall RegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count,
- LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count)
+ LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count)
{
// currenly just made to support MSZH & ZLIB
//printf("Reg Enum 0x%x %d %s %d data: %p %d %d >%s<\n", hkey, index,
reg_handle_t* t = find_handle(hkey);
if (t && index < 10)
{
- struct reg_value* v=find_value_by_name(t->name);
- if (v)
- {
- memcpy(data, v->value, (v->len < *count) ? v->len : *count);
- if(*count < v->len)
- *count = v->len;
- if (type)
- *type = v->type;
- //printf("Found handle %s\n", v->name);
- return 0;
- }
+ struct reg_value* v=find_value_by_name(t->name);
+ if (v)
+ {
+ memcpy(data, v->value, (v->len < *count) ? v->len : *count);
+ if(*count < v->len)
+ *count = v->len;
+ if (type)
+ *type = v->type;
+ //printf("Found handle %s\n", v->name);
+ return 0;
+ }
}
return ERROR_NO_MORE_ITEMS;
}
char* c;
TRACE("Request to set value %s %d\n", name, *(const int*)data);
if(!regs)
- init_registry();
+ init_registry();
c=build_keyname(key, name);
if(c==NULL)
- return 1;
+ return 1;
insert_reg_value(key, name, v2, data, size);
free(c);
return 0;
}
long __stdcall RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName,
- LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
- LPFILETIME lpftLastWriteTime)
+ LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
+ LPFILETIME lpftLastWriteTime)
{
return ERROR_NO_MORE_ITEMS;
}
void free_registry(void);
long __stdcall RegOpenKeyExA(long key, const char* subkey, long reserved,
- long access, int* newkey);
+ long access, int* newkey);
long __stdcall RegCloseKey(long key);
long __stdcall RegQueryValueExA(long key, const char* value, int* reserved,
- int* type, int* data, int* count);
+ int* type, int* data, int* count);
long __stdcall RegCreateKeyExA(long key, const char* name, long reserved,
- void* classs, long options, long security,
- void* sec_attr, int* newkey, int* status);
+ void* classs, long options, long security,
+ void* sec_attr, int* newkey, int* status);
long __stdcall RegSetValueExA(long key, const char* name, long v1, long v2,
- const void* data, long size);
+ const void* data, long size);
#ifdef __WINE_WINERROR_H
long __stdcall RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName,
- LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
- LPFILETIME lpftLastWriteTime);
+ LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
+ LPFILETIME lpftLastWriteTime);
long __stdcall RegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count,
- LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count);
+ LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count);
#endif
#ifdef __cplusplus
};
#include "wine/winerror.h"
#include "loader.h"
-#define CP_ACP 0
+#define CP_ACP 0
WORD WINE_LanguageId=0x409;//english
} HRSRC_MAP;
static HRSRC RES_FindResource2( HMODULE hModule, LPCSTR type,
- LPCSTR name, WORD lang, int unicode)
+ LPCSTR name, WORD lang, int unicode)
{
HRSRC hRsrc = 0;
- LPWSTR typeStr, nameStr;
+ LPWSTR typeStr, nameStr;
WINE_MODREF *wm = MODULE32_LookupHMODULE( hModule );
if(!wm)
- return 0;
+ return 0;
/* 32-bit PE module */
-
+
if ( HIWORD( type ) && (!unicode))
- typeStr = HEAP_strdupAtoW( GetProcessHeap(), 0, type );
+ typeStr = HEAP_strdupAtoW( GetProcessHeap(), 0, type );
else
- typeStr = (LPWSTR)type;
+ typeStr = (LPWSTR)type;
if ( HIWORD( name ) && (!unicode))
- nameStr = HEAP_strdupAtoW( GetProcessHeap(), 0, name );
+ nameStr = HEAP_strdupAtoW( GetProcessHeap(), 0, name );
else
- nameStr = (LPWSTR)name;
-
+ nameStr = (LPWSTR)name;
+
hRsrc = PE_FindResourceExW( wm, nameStr, typeStr, lang );
-
- if ( HIWORD( type ) && (!unicode))
- HeapFree( GetProcessHeap(), 0, typeStr );
- if ( HIWORD( name ) && (!unicode))
- HeapFree( GetProcessHeap(), 0, nameStr );
+
+ if ( HIWORD( type ) && (!unicode))
+ HeapFree( GetProcessHeap(), 0, typeStr );
+ if ( HIWORD( name ) && (!unicode))
+ HeapFree( GetProcessHeap(), 0, nameStr );
return hRsrc;
}
HRSRC hRsrc;
// __TRY
// {
- hRsrc = RES_FindResource2(hModule, type, name, lang, unicode);
+ hRsrc = RES_FindResource2(hModule, type, name, lang, unicode);
// }
// __EXCEPT(page_fault)
// {
-// WARN("page fault\n");
-// SetLastError(ERROR_INVALID_PARAMETER);
-// return 0;
+// WARN("page fault\n");
+// SetLastError(ERROR_INVALID_PARAMETER);
+// return 0;
// }
// __ENDTRY
return hRsrc;
// HMODULE16 hMod16 = MapHModuleLS( hModule );
// NE_MODULE *pModule = NE_GetPtr( hMod16 );
-// WINE_MODREF *wm = pModule && pModule->module32?
+// WINE_MODREF *wm = pModule && pModule->module32?
// MODULE32_LookupHMODULE( pModule->module32 ) : NULL;
WINE_MODREF *wm = MODULE32_LookupHMODULE( hModule );
// hRsrc32 = HIWORD(hRsrc)? hRsrc : MapHRsrc16To32( pModule, hRsrc );
if(!HIWORD(hRsrc))
{
- printf("16-bit hRsrcs not supported\n");
- return 0;
- }
+ printf("16-bit hRsrcs not supported\n");
+ return 0;
+ }
size = PE_SizeofResource( hModule, hRsrc );
return size;
}
// hRsrc32 = HIWORD(hRsrc)? hRsrc : MapHRsrc16To32( pModule, hRsrc );
if(!HIWORD(hRsrc))
{
- printf("16-bit hRsrcs not supported\n");
- return 0;
+ printf("16-bit hRsrcs not supported\n");
+ return 0;
}
hMem = PE_LoadResource( wm, hRsrc );
}
/**********************************************************************
- * FindResourceA (KERNEL32.128)
+ * FindResourceA (KERNEL32.128)
*/
HANDLE WINAPI FindResourceA( HMODULE hModule, LPCSTR name, LPCSTR type )
{
- return RES_FindResource( hModule, type, name,
+ return RES_FindResource( hModule, type, name,
WINE_LanguageId, 0);
}
HANDLE WINAPI FindResourceW( HMODULE hModule, LPCWSTR name, LPCWSTR type )
{
- return RES_FindResource( hModule, (LPCSTR)type, (LPCSTR)name,
+ return RES_FindResource( hModule, (LPCSTR)type, (LPCSTR)name,
WINE_LanguageId, 1);
}
/**********************************************************************
- * FindResourceExA (KERNEL32.129)
+ * FindResourceExA (KERNEL32.129)
*/
-HANDLE WINAPI FindResourceExA( HMODULE hModule,
+HANDLE WINAPI FindResourceExA( HMODULE hModule,
LPCSTR type, LPCSTR name, WORD lang )
{
- return RES_FindResource( hModule, type, name,
+ return RES_FindResource( hModule, type, name,
lang, 0 );
}
-HANDLE WINAPI FindResourceExW( HMODULE hModule,
+HANDLE WINAPI FindResourceExW( HMODULE hModule,
LPCWSTR type, LPCWSTR name, WORD lang )
{
- return RES_FindResource( hModule, (LPCSTR)type, (LPCSTR)name,
+ return RES_FindResource( hModule, (LPCSTR)type, (LPCSTR)name,
lang, 1 );
}
/**********************************************************************
- * LockResource (KERNEL32.384)
+ * LockResource (KERNEL32.384)
*/
LPVOID WINAPI LockResource( HGLOBAL handle )
{
/**********************************************************************
- * FreeResource (KERNEL32.145)
+ * FreeResource (KERNEL32.145)
*/
WIN_BOOL WINAPI FreeResource( HGLOBAL handle )
{
/**********************************************************************
- * AccessResource (KERNEL32.64)
+ * AccessResource (KERNEL32.64)
*/
INT WINAPI AccessResource( HMODULE hModule, HRSRC hRsrc )
{
return RES_AccessResource( hModule, hRsrc );
}
/**********************************************************************
- * SizeofResource (KERNEL32.522)
+ * SizeofResource (KERNEL32.522)
*/
DWORD WINAPI SizeofResource( HINSTANCE hModule, HRSRC hRsrc )
{
LPWSTR buffer, INT buflen );
/**********************************************************************
- * LoadStringA (USER32.375)
+ * LoadStringA (USER32.375)
*/
INT WINAPI LoadStringA( HINSTANCE instance, UINT resource_id,
LPSTR buffer, INT buflen )
LPSTR abuf = NULL;
if ( buffer != NULL && buflen > 0 )
- *buffer = 0;
+ *buffer = 0;
wbuflen = LoadStringW(instance,resource_id,NULL,0);
if ( !wbuflen )
- return 0;
+ return 0;
wbuflen ++;
retval = 0;
wbuflen = LoadStringW(instance,resource_id,wbuf,wbuflen);
if ( wbuflen > 0 )
{
- abuflen = WideCharToMultiByte(CP_ACP,0,wbuf,wbuflen,NULL,0,NULL,NULL);
- if ( abuflen > 0 )
- {
- if ( buffer == NULL || buflen == 0 )
- retval = abuflen;
- else
- {
- abuf = (LPSTR) HeapAlloc( GetProcessHeap(), 0, abuflen * sizeof(CHAR) );
- abuflen = WideCharToMultiByte(CP_ACP,0,wbuf,wbuflen,abuf,abuflen,NULL,NULL);
- if ( abuflen > 0 )
- {
- abuflen = min(abuflen,buflen - 1);
- memcpy( buffer, abuf, abuflen );
- buffer[abuflen] = 0;
- retval = abuflen;
- }
- HeapFree( GetProcessHeap(), 0, abuf );
- }
- }
+ abuflen = WideCharToMultiByte(CP_ACP,0,wbuf,wbuflen,NULL,0,NULL,NULL);
+ if ( abuflen > 0 )
+ {
+ if ( buffer == NULL || buflen == 0 )
+ retval = abuflen;
+ else
+ {
+ abuf = (LPSTR) HeapAlloc( GetProcessHeap(), 0, abuflen * sizeof(CHAR) );
+ abuflen = WideCharToMultiByte(CP_ACP,0,wbuf,wbuflen,abuf,abuflen,NULL,NULL);
+ if ( abuflen > 0 )
+ {
+ abuflen = min(abuflen,buflen - 1);
+ memcpy( buffer, abuf, abuflen );
+ buffer[abuflen] = 0;
+ retval = abuflen;
+ }
+ HeapFree( GetProcessHeap(), 0, abuf );
+ }
+ }
}
HeapFree( GetProcessHeap(), 0, wbuf );
}
/**********************************************************************
- * LoadStringW (USER32.376)
+ * LoadStringW (USER32.376)
*/
INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
LPWSTR buffer, INT buflen )
int i;
if (HIWORD(resource_id)==0xFFFF) /* netscape 3 passes this */
- resource_id = (UINT)(-((INT)resource_id));
+ resource_id = (UINT)(-((INT)resource_id));
TRACE("instance = %04x, id = %04x, buffer = %08x, "
"length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
- /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
+ /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out
* 20 - 31. */
hrsrc = FindResourceW( instance, (LPCWSTR)(((resource_id>>4)&0xffff)+1),
RT_STRINGW );
if (!hrsrc) return 0;
hmem = LoadResource( instance, hrsrc );
if (!hmem) return 0;
-
+
p = (WCHAR*) LockResource(hmem);
string_num = resource_id & 0x000f;
for (i = 0; i < string_num; i++)
- p += *p + 1;
-
+ p += *p + 1;
+
TRACE("strlen = %d\n", (int)*p );
-
+
if (buffer == NULL) return *p;
i = min(buflen - 1, *p);
if (i > 0) {
- memcpy(buffer, p + 1, i * sizeof (WCHAR));
- buffer[i] = (WCHAR) 0;
+ memcpy(buffer, p + 1, i * sizeof (WCHAR));
+ buffer[i] = (WCHAR) 0;
} else {
- if (buflen > 1) {
- buffer[0] = (WCHAR) 0;
- return 0;
- }
+ if (buflen > 1) {
+ buffer[0] = (WCHAR) 0;
+ return 0;
+ }
#if 0
- WARN("Don't know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
+ WARN("Don't know why caller give buflen=%d *p=%d trying to obtain string '%s'\n", buflen, *p, p + 1);
#endif
}
}
/* Messages...used by FormatMessage32* (KERNEL32.something)
- *
+ *
* They can be specified either directly or using a message ID and
* loading them from the resource.
- *
+ *
* The resourcedata has following format:
* start:
* 0: DWORD nrofentries
* nrofentries * subentry:
- * 0: DWORD firstentry
- * 4: DWORD lastentry
+ * 0: DWORD firstentry
+ * 4: DWORD lastentry
* 8: DWORD offset from start to the stringentries
*
* (lastentry-firstentry) * stringentry:
* 0: WORD len (0 marks end)
* 2: WORD flags
* 4: CHAR[len-4]
- * (stringentry i of a subentry refers to the ID 'firstentry+i')
+ * (stringentry i of a subentry refers to the ID 'firstentry+i')
*
* Yes, ANSI strings in win32 resources. Go figure.
*/
/**********************************************************************
- * LoadMessageA (internal)
+ * LoadMessageA (internal)
*/
INT WINAPI LoadMessageA( HMODULE instance, UINT id, WORD lang,
LPSTR buffer, INT buflen )
{
- HGLOBAL hmem;
- HRSRC hrsrc;
- PMESSAGE_RESOURCE_DATA mrd;
- PMESSAGE_RESOURCE_BLOCK mrb;
- PMESSAGE_RESOURCE_ENTRY mre;
- int i,slen;
+ HGLOBAL hmem;
+ HRSRC hrsrc;
+ PMESSAGE_RESOURCE_DATA mrd;
+ PMESSAGE_RESOURCE_BLOCK mrb;
+ PMESSAGE_RESOURCE_ENTRY mre;
+ int i,slen;
TRACE("instance = %08lx, id = %08lx, buffer = %p, length = %ld\n", (DWORD)instance, (DWORD)id, buffer, (DWORD)buflen);
if (!hrsrc) return 0;
hmem = LoadResource( instance, hrsrc );
if (!hmem) return 0;
-
+
mrd = (PMESSAGE_RESOURCE_DATA)LockResource(hmem);
mre = NULL;
mrb = &(mrd->Blocks[0]);
for (i=mrd->NumberOfBlocks;i--;) {
- if ((id>=mrb->LowId) && (id<=mrb->HighId)) {
- mre = (PMESSAGE_RESOURCE_ENTRY)(((char*)mrd)+mrb->OffsetToEntries);
- id -= mrb->LowId;
- break;
- }
- mrb++;
+ if ((id>=mrb->LowId) && (id<=mrb->HighId)) {
+ mre = (PMESSAGE_RESOURCE_ENTRY)(((char*)mrd)+mrb->OffsetToEntries);
+ id -= mrb->LowId;
+ break;
+ }
+ mrb++;
}
if (!mre)
- return 0;
+ return 0;
for (i=id;i--;) {
- if (!mre->Length)
- return 0;
- mre = (PMESSAGE_RESOURCE_ENTRY)(((char*)mre)+(mre->Length));
+ if (!mre->Length)
+ return 0;
+ mre = (PMESSAGE_RESOURCE_ENTRY)(((char*)mre)+(mre->Length));
}
slen=mre->Length;
- TRACE(" - strlen=%d\n",slen);
+ TRACE(" - strlen=%d\n",slen);
i = min(buflen - 1, slen);
if (buffer == NULL)
- return slen;
+ return slen;
if (i>0) {
- lstrcpynA(buffer,(char*)mre->Text,i);
- buffer[i]=0;
+ lstrcpynA(buffer,(char*)mre->Text,i);
+ buffer[i]=0;
} else {
- if (buflen>1) {
- buffer[0]=0;
- return 0;
- }
+ if (buflen>1) {
+ buffer[0]=0;
+ return 0;
+ }
}
if (buffer)
- TRACE("'%s' copied !\n", buffer);
+ TRACE("'%s' copied !\n", buffer);
return i;
}
/**********************************************************************
- * EnumResourceTypesA (KERNEL32.90)
+ * EnumResourceTypesA (KERNEL32.90)
*/
WIN_BOOL WINAPI EnumResourceTypesA( HMODULE hmodule,ENUMRESTYPEPROCA lpfun,
LONG lParam)
{
- /* FIXME: move WINE_MODREF stuff here */
+ /* FIXME: move WINE_MODREF stuff here */
return PE_EnumResourceTypesA(hmodule,lpfun,lParam);
}
/**********************************************************************
- * EnumResourceNamesA (KERNEL32.88)
+ * EnumResourceNamesA (KERNEL32.88)
*/
WIN_BOOL WINAPI EnumResourceNamesA( HMODULE hmodule, LPCSTR type,
ENUMRESNAMEPROCA lpfun, LONG lParam )
{
- /* FIXME: move WINE_MODREF stuff here */
+ /* FIXME: move WINE_MODREF stuff here */
return PE_EnumResourceNamesA(hmodule,type,lpfun,lParam);
}
/**********************************************************************
- * EnumResourceLanguagesA (KERNEL32.86)
+ * EnumResourceLanguagesA (KERNEL32.86)
*/
WIN_BOOL WINAPI EnumResourceLanguagesA( HMODULE hmodule, LPCSTR type,
LPCSTR name, ENUMRESLANGPROCA lpfun,
LONG lParam)
{
- /* FIXME: move WINE_MODREF stuff here */
+ /* FIXME: move WINE_MODREF stuff here */
return PE_EnumResourceLanguagesA(hmodule,type,name,lpfun,lParam);
}
/**********************************************************************
- * LoadResource (KERNEL32.370)
+ * LoadResource (KERNEL32.370)
*/
HGLOBAL WINAPI LoadResource( HINSTANCE hModule, HRSRC hRsrc )
{
#define CloseDriver DrvClose
/***********************************************************************
- * VideoForWindowsVersion [MSVFW.2][MSVIDEO.2]
+ * VideoForWindowsVersion [MSVFW.2][MSVIDEO.2]
* Returns the version in major.minor form.
* In Windows95 this returns 0x040003b6 (4.950)
*/
long VFWAPI VideoForWindowsVersion(void) {
- return 0x040003B6; /* 4.950 */
+ return 0x040003B6; /* 4.950 */
}
/* system.ini: [drivers] */
/***********************************************************************
- * ICInfo [MSVFW.33]
+ * ICInfo [MSVFW.33]
* Get information about an installable compressor. Return TRUE if there
* is one.
*/
int VFWAPI
ICInfo(
- long fccType, /* [in] type of compressor ('vidc') */
- long fccHandler, /* [in] <n>th compressor */
- ICINFO *lpicinfo /* [out] information about compressor */
+ long fccType, /* [in] type of compressor ('vidc') */
+ long fccHandler, /* [in] <n>th compressor */
+ ICINFO *lpicinfo /* [out] information about compressor */
) {
- /* does OpenDriver/CloseDriver */
- lpicinfo->dwSize = sizeof(ICINFO);
- lpicinfo->fccType = fccType;
- lpicinfo->dwFlags = 0;
- return TRUE;
+ /* does OpenDriver/CloseDriver */
+ lpicinfo->dwSize = sizeof(ICINFO);
+ lpicinfo->fccType = fccType;
+ lpicinfo->dwFlags = 0;
+ return TRUE;
}
/***********************************************************************
- * ICOpen [MSVFW.37]
+ * ICOpen [MSVFW.37]
* Opens an installable compressor. Return special handle.
*/
HIC VFWAPI
//ICOpen(long fccType,long fccHandler,unsigned int wMode) {
ICOpen(long filename,long fccHandler,unsigned int wMode) {
- ICOPEN icopen;
- HDRVR hdrv;
- WINE_HIC *whic;
-
- /* Well, lParam2 is in fact a LPVIDEO_OPEN_PARMS, but it has the
- * same layout as ICOPEN
- */
- icopen.fccType = 0x63646976; // "vidc" //fccType;
- icopen.fccHandler = fccHandler;
- icopen.dwSize = sizeof(ICOPEN);
- icopen.dwFlags = wMode;
- icopen.pV1Reserved = (void*)filename;
- /* FIXME: do we need to fill out the rest too? */
- hdrv=OpenDriverA((long)&icopen);
- if (!hdrv) return 0;
- whic = (WINE_HIC*)malloc(sizeof(WINE_HIC));
- whic->hdrv = hdrv;
- whic->driverproc= ((DRVR*)hdrv)->DriverProc;
-// whic->private = ICSendMessage((HIC)whic,DRV_OPEN,0,(long)&icopen);
- whic->driverid = ((DRVR*)hdrv)->dwDriverID;
- return (HIC)whic;
+ ICOPEN icopen;
+ HDRVR hdrv;
+ WINE_HIC *whic;
+
+ /* Well, lParam2 is in fact a LPVIDEO_OPEN_PARMS, but it has the
+ * same layout as ICOPEN
+ */
+ icopen.fccType = 0x63646976; // "vidc" //fccType;
+ icopen.fccHandler = fccHandler;
+ icopen.dwSize = sizeof(ICOPEN);
+ icopen.dwFlags = wMode;
+ icopen.pV1Reserved = (void*)filename;
+ /* FIXME: do we need to fill out the rest too? */
+ hdrv=OpenDriverA((long)&icopen);
+ if (!hdrv) return 0;
+ whic = (WINE_HIC*)malloc(sizeof(WINE_HIC));
+ whic->hdrv = hdrv;
+ whic->driverproc= ((DRVR*)hdrv)->DriverProc;
+// whic->private = ICSendMessage((HIC)whic,DRV_OPEN,0,(long)&icopen);
+ whic->driverid = ((DRVR*)hdrv)->dwDriverID;
+ return (HIC)whic;
}
/***********************************************************************
- * ICGetInfo [MSVFW.30]
+ * ICGetInfo [MSVFW.30]
*/
LRESULT VFWAPI
ICGetInfo(HIC hic,ICINFO *picinfo,long cb) {
- LRESULT ret;
+ LRESULT ret;
- ret = ICSendMessage(hic,ICM_GETINFO,(long)picinfo,cb);
-
- return ret;
+ ret = ICSendMessage(hic,ICM_GETINFO,(long)picinfo,cb);
+
+ return ret;
}
/***********************************************************************
- * ICCompress [MSVFW.23]
+ * ICCompress [MSVFW.23]
*/
long VFWAPIV
ICCompress(
- HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpData,
- LPBITMAPINFOHEADER lpbiInput,void* lpBits,long* lpckid,
- long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality,
- LPBITMAPINFOHEADER lpbiPrev,void* lpPrev
+ HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpData,
+ LPBITMAPINFOHEADER lpbiInput,void* lpBits,long* lpckid,
+ long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality,
+ LPBITMAPINFOHEADER lpbiPrev,void* lpPrev
) {
- ICCOMPRESS iccmp;
-
- iccmp.dwFlags = dwFlags;
-
- iccmp.lpbiOutput = lpbiOutput;
- iccmp.lpOutput = lpData;
- iccmp.lpbiInput = lpbiInput;
- iccmp.lpInput = lpBits;
-
- iccmp.lpckid = lpckid;
- iccmp.lpdwFlags = lpdwFlags;
- iccmp.lFrameNum = lFrameNum;
- iccmp.dwFrameSize = dwFrameSize;
- iccmp.dwQuality = dwQuality;
- iccmp.lpbiPrev = lpbiPrev;
- iccmp.lpPrev = lpPrev;
- return ICSendMessage(hic,ICM_COMPRESS,(long)&iccmp,sizeof(iccmp));
+ ICCOMPRESS iccmp;
+
+ iccmp.dwFlags = dwFlags;
+
+ iccmp.lpbiOutput = lpbiOutput;
+ iccmp.lpOutput = lpData;
+ iccmp.lpbiInput = lpbiInput;
+ iccmp.lpInput = lpBits;
+
+ iccmp.lpckid = lpckid;
+ iccmp.lpdwFlags = lpdwFlags;
+ iccmp.lFrameNum = lFrameNum;
+ iccmp.dwFrameSize = dwFrameSize;
+ iccmp.dwQuality = dwQuality;
+ iccmp.lpbiPrev = lpbiPrev;
+ iccmp.lpPrev = lpPrev;
+ return ICSendMessage(hic,ICM_COMPRESS,(long)&iccmp,sizeof(iccmp));
}
/***********************************************************************
- * ICDecompress [MSVFW.26]
+ * ICDecompress [MSVFW.26]
*/
-long VFWAPIV
+long VFWAPIV
ICDecompress(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits) {
- ICDECOMPRESS icd;
- int result;
- icd.dwFlags = dwFlags;
- icd.lpbiInput = lpbiFormat;
- icd.lpInput = lpData;
-
- icd.lpbiOutput = lpbi;
- icd.lpOutput = lpBits;
- icd.ckid = 0;
- result=ICSendMessage(hic,ICM_DECOMPRESS,(long)&icd,sizeof(icd));
- return result;
+ ICDECOMPRESS icd;
+ int result;
+ icd.dwFlags = dwFlags;
+ icd.lpbiInput = lpbiFormat;
+ icd.lpInput = lpData;
+
+ icd.lpbiOutput = lpbi;
+ icd.lpOutput = lpBits;
+ icd.ckid = 0;
+ result=ICSendMessage(hic,ICM_DECOMPRESS,(long)&icd,sizeof(icd));
+ return result;
}
/***********************************************************************
- * ICDecompressEx [MSVFW.26]
+ * ICDecompressEx [MSVFW.26]
*/
-long VFWAPIV
+long VFWAPIV
ICDecompressEx(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits) {
- ICDECOMPRESSEX icd;
- int result;
-
- icd.dwFlags = dwFlags;
-
- icd.lpbiSrc = lpbiFormat;
- icd.lpSrc = lpData;
-
- icd.lpbiDst = lpbi;
- icd.lpDst = lpBits;
-
- icd.xSrc=icd.ySrc=0;
- icd.dxSrc=lpbiFormat->biWidth;
- icd.dySrc=abs(lpbiFormat->biHeight);
-
- icd.xDst=icd.yDst=0;
- icd.dxDst=lpbi->biWidth;
- icd.dyDst=abs(lpbi->biHeight);
-
- //icd.ckid = 0;
- result=ICSendMessage(hic,ICM_DECOMPRESSEX,(long)&icd,sizeof(icd));
- return result;
+ ICDECOMPRESSEX icd;
+ int result;
+
+ icd.dwFlags = dwFlags;
+
+ icd.lpbiSrc = lpbiFormat;
+ icd.lpSrc = lpData;
+
+ icd.lpbiDst = lpbi;
+ icd.lpDst = lpBits;
+
+ icd.xSrc=icd.ySrc=0;
+ icd.dxSrc=lpbiFormat->biWidth;
+ icd.dySrc=abs(lpbiFormat->biHeight);
+
+ icd.xDst=icd.yDst=0;
+ icd.dxDst=lpbi->biWidth;
+ icd.dyDst=abs(lpbi->biHeight);
+
+ //icd.ckid = 0;
+ result=ICSendMessage(hic,ICM_DECOMPRESSEX,(long)&icd,sizeof(icd));
+ return result;
}
-long VFWAPIV
+long VFWAPIV
ICUniversalEx(HIC hic,int command,LPBITMAPINFOHEADER lpbiFormat,LPBITMAPINFOHEADER lpbi) {
- ICDECOMPRESSEX icd;
- int result;
-
- icd.dwFlags = 0;
-
- icd.lpbiSrc = lpbiFormat;
- icd.lpSrc = 0;
-
- icd.lpbiDst = lpbi;
- icd.lpDst = 0;
-
- icd.xSrc=icd.ySrc=0;
- icd.dxSrc=lpbiFormat->biWidth;
- icd.dySrc=abs(lpbiFormat->biHeight);
-
- icd.xDst=icd.yDst=0;
- icd.dxDst=lpbi->biWidth;
- icd.dyDst=abs(lpbi->biHeight);
-
- //icd.ckid = 0;
- result=ICSendMessage(hic,command,(long)&icd,sizeof(icd));
- return result;
+ ICDECOMPRESSEX icd;
+ int result;
+
+ icd.dwFlags = 0;
+
+ icd.lpbiSrc = lpbiFormat;
+ icd.lpSrc = 0;
+
+ icd.lpbiDst = lpbi;
+ icd.lpDst = 0;
+
+ icd.xSrc=icd.ySrc=0;
+ icd.dxSrc=lpbiFormat->biWidth;
+ icd.dySrc=abs(lpbiFormat->biHeight);
+
+ icd.xDst=icd.yDst=0;
+ icd.dxDst=lpbi->biWidth;
+ icd.dyDst=abs(lpbi->biHeight);
+
+ //icd.ckid = 0;
+ result=ICSendMessage(hic,command,(long)&icd,sizeof(icd));
+ return result;
}
/***********************************************************************
- * ICSendMessage [MSVFW.40]
+ * ICSendMessage [MSVFW.40]
*/
LRESULT VFWAPI
ICSendMessage(HIC hic,unsigned int msg,long lParam1,long lParam2) {
- WINE_HIC *whic = (WINE_HIC*)hic;
+ WINE_HIC *whic = (WINE_HIC*)hic;
return SendDriverMessage(whic->hdrv, msg, lParam1,lParam2);
}
/***********************************************************************
- * ICClose [MSVFW.22]
+ * ICClose [MSVFW.22]
*/
LRESULT VFWAPI ICClose(HIC hic) {
- WINE_HIC *whic = (WINE_HIC*)hic;
- /* FIXME: correct? */
-// CloseDriver(whic->hdrv,0,0);
+ WINE_HIC *whic = (WINE_HIC*)hic;
+ /* FIXME: correct? */
+// CloseDriver(whic->hdrv,0,0);
DrvClose(whic->hdrv);
//#warning FIXME: DrvClose
- free(whic);
- return 0;
+ free(whic);
+ return 0;
}
int VFWAPI ICDoSomething()
#endif
#ifdef QTX
-#define PSEUDO_SCREEN_WIDTH /*640*/800
-#define PSEUDO_SCREEN_HEIGHT /*480*/600
+#define PSEUDO_SCREEN_WIDTH /*640*/800
+#define PSEUDO_SCREEN_HEIGHT /*480*/600
#endif
#include "wine/winbase.h"
#include <dirent.h>
#include <sys/time.h>
#include <sys/timeb.h>
-#ifdef HAVE_KSTAT
+#ifdef HAVE_KSTAT
#include <kstat.h>
#endif
static void do_cpuid(unsigned int ax, unsigned int *regs)
{
__asm__ __volatile__
- (
- "pushl %%ebx; pushl %%ecx; pushl %%edx;"
- ".byte 0x0f, 0xa2;"
- "movl %%eax, (%2);"
- "movl %%ebx, 4(%2);"
- "movl %%ecx, 8(%2);"
- "movl %%edx, 12(%2);"
- "popl %%edx; popl %%ecx; popl %%ebx;"
- : "=a" (ax)
- : "0" (ax), "S" (regs)
- );
+ (
+ "pushl %%ebx; pushl %%ecx; pushl %%edx;"
+ ".byte 0x0f, 0xa2;"
+ "movl %%eax, (%2);"
+ "movl %%ebx, 4(%2);"
+ "movl %%ecx, 8(%2);"
+ "movl %%edx, 12(%2);"
+ "popl %%edx; popl %%ecx; popl %%ebx;"
+ : "=a" (ax)
+ : "0" (ax), "S" (regs)
+ );
}
static unsigned int c_localcount_tsc()
{
int a;
__asm__ __volatile__
- (
- "rdtsc\n\t"
- :"=a"(a)
- :
- :"edx"
- );
+ (
+ "rdtsc\n\t"
+ :"=a"(a)
+ :
+ :"edx"
+ );
return a;
}
static void c_longcount_tsc(long long* z)
{
__asm__ __volatile__
- (
- "pushl %%ebx\n\t"
- "movl %%eax, %%ebx\n\t"
- "rdtsc\n\t"
- "movl %%eax, 0(%%ebx)\n\t"
- "movl %%edx, 4(%%ebx)\n\t"
- "popl %%ebx\n\t"
- ::"a"(z)
- :"edx"
- );
+ (
+ "pushl %%ebx\n\t"
+ "movl %%eax, %%ebx\n\t"
+ "rdtsc\n\t"
+ "movl %%eax, 0(%%ebx)\n\t"
+ "movl %%edx, 4(%%ebx)\n\t"
+ "popl %%ebx\n\t"
+ ::"a"(z)
+ :"edx"
+ );
}
static unsigned int c_localcount_notsc()
{
do_cpuid(1, regs);
if ((regs[3] & 0x00000010) != 0)
{
- localcount=c_localcount_tsc;
- longcount=c_longcount_tsc;
+ localcount=c_localcount_tsc;
+ longcount=c_longcount_tsc;
}
else
{
- localcount=c_localcount_notsc;
- longcount=c_longcount_notsc;
+ localcount=c_localcount_notsc;
+ longcount=c_longcount_notsc;
}
return localcount();
}
do_cpuid(1, regs);
if ((regs[3] & 0x00000010) != 0)
{
- localcount=c_localcount_tsc;
- longcount=c_longcount_tsc;
+ localcount=c_localcount_tsc;
+ longcount=c_longcount_tsc;
}
else
{
- localcount=c_localcount_notsc;
- longcount=c_longcount_notsc;
+ localcount=c_localcount_notsc;
+ longcount=c_longcount_notsc;
}
longcount(z);
}
#ifdef DETAILED_OUT
if(LOADER_DEBUG)
{
- FILE* f;
- va_list va;
- va_start(va, fmt);
- f=fopen("./log", "a");
- vprintf(fmt, va);
- fflush(stdout);
- if(f)
- {
- vfprintf(f, fmt, va);
- fsync(fileno(f));
- fclose(f);
- }
- va_end(va);
+ FILE* f;
+ va_list va;
+ va_start(va, fmt);
+ f=fopen("./log", "a");
+ vprintf(fmt, va);
+ fflush(stdout);
+ if(f)
+ {
+ vfprintf(f, fmt, va);
+ fsync(fileno(f));
+ fclose(f);
+ }
+ va_end(va);
}
#endif
#ifdef MPLAYER
if (verbose > 2)
{
- va_list va;
-
- va_start(va, fmt);
- vprintf(fmt, va);
-// mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va);
- va_end(va);
+ va_list va;
+
+ va_start(va, fmt);
+ vprintf(fmt, va);
+// mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va);
+ va_end(va);
}
fflush(stdout);
#endif
{
int offset=0;
if(heap==0)
- return;
+ return;
while(offset<heap_counter)
{
- if(*(int*)(heap+offset)!=0x433476)
- {
- printf("Heap corruption at address %d\n", offset);
- return;
- }
- offset+=8+*(int*)(heap+offset+4);
+ if(*(int*)(heap+offset)!=0x433476)
+ {
+ printf("Heap corruption at address %d\n", offset);
+ return;
+ }
+ offset+=8+*(int*)(heap+offset+4);
}
for(;offset<min(offset+1000, 20000000); offset++)
- if(heap[offset]!=0xCC)
- {
- printf("Free heap corruption at address %d\n", offset);
- }
+ if(heap[offset]!=0xCC)
+ {
+ printf("Free heap corruption at address %d\n", offset);
+ }
}
#undef MEMORY_DEBUG
// test_heap();
if(heap==NULL)
{
- heap=malloc(20000000);
- memset(heap, 0xCC,20000000);
+ heap=malloc(20000000);
+ memset(heap, 0xCC,20000000);
}
if(heap==0)
{
- printf("No enough memory\n");
- return 0;
+ printf("No enough memory\n");
+ return 0;
}
if(heap_counter+size>20000000)
{
- printf("No enough memory\n");
- return 0;
+ printf("No enough memory\n");
+ return 0;
}
*(int*)(heap+heap_counter)=0x433476;
heap_counter+=4;
heap_counter+=4;
printf("Allocated %d bytes of memory: sys %d, user %d-%d\n", size, heap_counter-8, heap_counter, heap_counter+size);
if(to_zero)
- memset(heap+heap_counter, 0, size);
+ memset(heap+heap_counter, 0, size);
else
- memset(heap+heap_counter, 0xcc, size); // make crash reproducable
+ memset(heap+heap_counter, 0xcc, size); // make crash reproducable
heap_counter+=size;
return heap+heap_counter-size;
}
// test_heap();
if(memory==NULL)
{
- printf("ERROR: free(0)\n");
- return 0;
+ printf("ERROR: free(0)\n");
+ return 0;
}
if(*(int*)(memory-8)!=0x433476)
{
- printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n");
- return 0;
+ printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n");
+ return 0;
}
printf("Freed %d bytes of memory\n", *(int*)(memory-4));
// memset(memory-8, *(int*)(memory-4), 0xCC);
if (!header)
return 0;
if (to_zero)
- memset(header, 0, nsize);
+ memset(header, 0, nsize);
#ifdef GARBAGE
if (!last_alloc)
{
- pthread_mutex_init(&memmut, NULL);
- pthread_mutex_lock(&memmut);
+ pthread_mutex_init(&memmut, NULL);
+ pthread_mutex_lock(&memmut);
}
else
{
- pthread_mutex_lock(&memmut);
- last_alloc->next = header; /* set next */
+ pthread_mutex_lock(&memmut);
+ last_alloc->next = header; /* set next */
}
header->prev = last_alloc;
alloc_header* nextmem;
if (memory == 0)
- return 0;
+ return 0;
if (header->deadbeef != (long) 0xdeadbeef)
{
- dbgprintf("FATAL releasing corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt);
- return 0;
+ dbgprintf("FATAL releasing corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt);
+ return 0;
}
pthread_mutex_lock(&memmut);
switch(header->type)
{
case AREATYPE_EVENT:
- destroy_event(memory);
- break;
+ destroy_event(memory);
+ break;
case AREATYPE_COND:
- pthread_cond_destroy((pthread_cond_t*)memory);
- break;
+ pthread_cond_destroy((pthread_cond_t*)memory);
+ break;
case AREATYPE_MUTEX:
- pthread_mutex_destroy((pthread_mutex_t*)memory);
- break;
+ pthread_mutex_destroy((pthread_mutex_t*)memory);
+ break;
case AREATYPE_CRITSECT:
- pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex);
- break;
+ pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex);
+ break;
default:
- //memset(memory, 0xcc, header->size);
- ;
+ //memset(memory, 0xcc, header->size);
+ ;
}
header->deadbeef = 0;
nextmem = header->next;
if (prevmem)
- prevmem->next = nextmem;
+ prevmem->next = nextmem;
if (nextmem)
- nextmem->prev = prevmem;
+ nextmem->prev = prevmem;
if (header == last_alloc)
- last_alloc = prevmem;
+ last_alloc = prevmem;
alccnt--;
if (last_alloc)
- pthread_mutex_unlock(&memmut);
+ pthread_mutex_unlock(&memmut);
else
- pthread_mutex_destroy(&memmut);
+ pthread_mutex_destroy(&memmut);
//if (alccnt < 40000) printf("MY_RELEASE: %p\t%ld (%d)\n", header, header->size, alccnt);
#else
if (memory == 0)
- return 0;
+ return 0;
#endif
//memset(header + 1, 0xcc, header->size);
free(header);
void *ans = memory;
int osize;
if (memory == NULL)
- return my_mreq(size, 0);
+ return my_mreq(size, 0);
osize = my_size(memory);
if (osize < size)
{
- ans = my_mreq(size, 0);
- memcpy(ans, memory, osize);
- my_release(memory);
+ ans = my_mreq(size, 0);
+ memcpy(ans, memory, osize);
+ my_release(memory);
}
return ans;
}
char *fsname, unsigned int fsname_len )
{
dbgprintf("GetVolumeInformationA( %s, 0x%x, %ld, 0x%x, 0x%x, 0x%x, 0x%x, %ld) => 1\n",
- root,label,label_len,serial,filename_len,flags,fsname,fsname_len);
+ root,label,label_len,serial,filename_len,flags,fsname,fsname_len);
//hack Do not return any real data - do nothing
return 1;
}
{
HMODULE result;
if (pdrv==NULL)
- result=0;
+ result=0;
else
- result=pdrv->hDriverModule;
+ result=pdrv->hDriverModule;
dbgprintf("GetDriverModuleHandle(%p) => %p\n", pdrv, result);
return result;
}
-#define MODULE_HANDLE_kernel32 ((HMODULE)0x120)
-#define MODULE_HANDLE_user32 ((HMODULE)0x121)
+#define MODULE_HANDLE_kernel32 ((HMODULE)0x120)
+#define MODULE_HANDLE_user32 ((HMODULE)0x121)
#ifdef QTX
-#define MODULE_HANDLE_wininet ((HMODULE)0x122)
-#define MODULE_HANDLE_ddraw ((HMODULE)0x123)
-#define MODULE_HANDLE_advapi32 ((HMODULE)0x124)
+#define MODULE_HANDLE_wininet ((HMODULE)0x122)
+#define MODULE_HANDLE_ddraw ((HMODULE)0x123)
+#define MODULE_HANDLE_advapi32 ((HMODULE)0x124)
#endif
-#define MODULE_HANDLE_comdlg32 ((HMODULE)0x125)
-#define MODULE_HANDLE_msvcrt ((HMODULE)0x126)
-#define MODULE_HANDLE_ole32 ((HMODULE)0x127)
-#define MODULE_HANDLE_winmm ((HMODULE)0x128)
+#define MODULE_HANDLE_comdlg32 ((HMODULE)0x125)
+#define MODULE_HANDLE_msvcrt ((HMODULE)0x126)
+#define MODULE_HANDLE_ole32 ((HMODULE)0x127)
+#define MODULE_HANDLE_winmm ((HMODULE)0x128)
static HMODULE WINAPI expGetModuleHandleA(const char* name)
{
HMODULE result;
if(!name)
#ifdef QTX
- result=1;
+ result=1;
#else
- result=0;
+ result=0;
#endif
else
{
- wm=MODULE_FindModule(name);
- if(wm==0)result=0;
- else
- result=(HMODULE)(wm->module);
+ wm=MODULE_FindModule(name);
+ if(wm==0)result=0;
+ else
+ result=(HMODULE)(wm->module);
}
if(!result)
{
- if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll")))
- result=MODULE_HANDLE_kernel32;
+ if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll")))
+ result=MODULE_HANDLE_kernel32;
#ifdef QTX
- if(name && strcasecmp(name, "user32")==0)
- result=MODULE_HANDLE_user32;
+ if(name && strcasecmp(name, "user32")==0)
+ result=MODULE_HANDLE_user32;
#endif
}
dbgprintf("GetModuleHandleA('%s') => 0x%x\n", name, result);
}
static void* WINAPI expCreateThread(void* pSecAttr, long dwStackSize,
- void* lpStartAddress, void* lpParameter,
- long dwFlags, long* dwThreadId)
+ void* lpStartAddress, void* lpParameter,
+ long dwFlags, long* dwThreadId)
{
pthread_t *pth;
// printf("CreateThread:");
pth = (pthread_t*) my_mreq(sizeof(pthread_t), 0);
pthread_create(pth, NULL, (void*(*)(void*))lpStartAddress, lpParameter);
if(dwFlags)
- printf( "WARNING: CreateThread flags not supported\n");
+ printf( "WARNING: CreateThread flags not supported\n");
if(dwThreadId)
- *dwThreadId=(long)pth;
+ *dwThreadId=(long)pth;
if(list==NULL)
{
- list=my_mreq(sizeof(th_list), 1);
- list->next=list->prev=NULL;
+ list=my_mreq(sizeof(th_list), 1);
+ list->next=list->prev=NULL;
}
else
{
- list->next=my_mreq(sizeof(th_list), 0);
- list->next->prev=list;
- list->next->next=NULL;
- list=list->next;
+ list->next=my_mreq(sizeof(th_list), 0);
+ list->next->prev=list;
+ list->next->next=NULL;
+ list=list->next;
}
list->thread=pth;
dbgprintf("CreateThread(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0x%x\n",
- pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth);
+ pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth);
return pth;
}
// printf("garbage collector: destroy_event(%x)\n", event);
while(pp)
{
- if(pp==(mutex_list*)event)
- {
- if(pp->next)
- pp->next->prev=pp->prev;
- if(pp->prev)
- pp->prev->next=pp->next;
- if(mlist==(mutex_list*)event)
- mlist=mlist->prev;
- /*
- pp=mlist;
- while(pp)
- {
- printf("%x => ", pp);
- pp=pp->prev;
- }
- printf("0\n");
- */
- return;
- }
- pp=pp->prev;
+ if(pp==(mutex_list*)event)
+ {
+ if(pp->next)
+ pp->next->prev=pp->prev;
+ if(pp->prev)
+ pp->prev->next=pp->next;
+ if(mlist==(mutex_list*)event)
+ mlist=mlist->prev;
+ /*
+ pp=mlist;
+ while(pp)
+ {
+ printf("%x => ", pp);
+ pp=pp->prev;
+ }
+ printf("0\n");
+ */
+ return;
+ }
+ pp=pp->prev;
}
}
static void* WINAPI expCreateEventA(void* pSecAttr, char bManualReset,
- char bInitialState, const char* name)
+ char bInitialState, const char* name)
{
pthread_mutex_t *pm;
pthread_cond_t *pc;
*/
if(mlist!=NULL)
{
- mutex_list* pp=mlist;
- if(name!=NULL)
- do
- {
- if((strcmp(pp->name, name)==0) && (pp->type==0))
- {
- dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n",
- pSecAttr, bManualReset, bInitialState, name, name, pp->pm);
- return pp->pm;
- }
- }while((pp=pp->prev) != NULL);
+ mutex_list* pp=mlist;
+ if(name!=NULL)
+ do
+ {
+ if((strcmp(pp->name, name)==0) && (pp->type==0))
+ {
+ dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n",
+ pSecAttr, bManualReset, bInitialState, name, name, pp->pm);
+ return pp->pm;
+ }
+ }while((pp=pp->prev) != NULL);
}
pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX);
pthread_mutex_init(pm, NULL);
pthread_cond_init(pc, NULL);
if(mlist==NULL)
{
- mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
- mlist->next=mlist->prev=NULL;
+ mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
+ mlist->next=mlist->prev=NULL;
}
else
{
- mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
- mlist->next->prev=mlist;
- mlist->next->next=NULL;
- mlist=mlist->next;
+ mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
+ mlist->next->prev=mlist;
+ mlist->next->next=NULL;
+ mlist=mlist->next;
}
mlist->type=0; /* Type Event */
mlist->pm=pm;
mlist->state=bInitialState;
mlist->reset=bManualReset;
if(name)
- strncpy(mlist->name, name, 127);
+ strncpy(mlist->name, name, 127);
else
- mlist->name[0]=0;
+ mlist->name[0]=0;
if(pm==NULL)
- dbgprintf("ERROR::: CreateEventA failure\n");
+ dbgprintf("ERROR::: CreateEventA failure\n");
/*
if(bInitialState)
pthread_mutex_lock(pm);
*/
if(name)
- dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n",
- pSecAttr, bManualReset, bInitialState, name, name, mlist);
+ dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n",
+ pSecAttr, bManualReset, bInitialState, name, name, mlist);
else
- dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n",
- pSecAttr, bManualReset, bInitialState, mlist);
+ dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n",
+ pSecAttr, bManualReset, bInitialState, mlist);
return mlist;
}
dbgprintf("SetEvent(%x) => 0x1\n", event);
pthread_mutex_lock(ml->pm);
if (ml->state == 0) {
- ml->state = 1;
- pthread_cond_signal(ml->pc);
+ ml->state = 1;
+ pthread_cond_signal(ml->pc);
}
pthread_mutex_unlock(ml->pm);
mutex_list* pp=mlist;
if(object == (void*)0xcfcf9898)
{
- /**
- From GetCurrentThread() documentation:
- A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes.
+ /**
+ From GetCurrentThread() documentation:
+ A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes.
- This handle has the maximum possible access to the thread object. For systems that support security descriptors, this is the maximum access allowed by the security descriptor for the calling process. For systems that do not support security descriptors, this is THREAD_ALL_ACCESS.
+ This handle has the maximum possible access to the thread object. For systems that support security descriptors, this is the maximum access allowed by the security descriptor for the calling process. For systems that do not support security descriptors, this is THREAD_ALL_ACCESS.
- The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function.
- **/
- dbgprintf("WaitForSingleObject(thread_handle) called\n");
- return (void*)WAIT_FAILED;
+ The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function.
+ **/
+ dbgprintf("WaitForSingleObject(thread_handle) called\n");
+ return (void*)WAIT_FAILED;
}
dbgprintf("WaitForSingleObject(0x%x, duration %d) =>\n",object, duration);
// loop below was slightly fixed - its used just for checking if
// this object really exists in our list
if (!ml)
- return (void*) ret;
+ return (void*) ret;
while (pp && (pp->pm != ml->pm))
- pp = pp->prev;
+ pp = pp->prev;
if (!pp) {
- dbgprintf("WaitForSingleObject: NotFound\n");
- return (void*)ret;
+ dbgprintf("WaitForSingleObject: NotFound\n");
+ return (void*)ret;
}
pthread_mutex_lock(ml->pm);
switch(ml->type) {
case 0: /* Event */
- if (duration == 0) { /* Check Only */
- if (ml->state == 1) ret = WAIT_FAILED;
- else ret = WAIT_OBJECT_0;
- }
- if (duration == -1) { /* INFINITE */
- if (ml->state == 0)
- pthread_cond_wait(ml->pc,ml->pm);
- if (ml->reset)
- ml->state = 0;
- ret = WAIT_OBJECT_0;
- }
- if (duration > 0) { /* Timed Wait */
- struct timespec abstime;
- struct timeval now;
- gettimeofday(&now, 0);
- abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000;
- abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000;
- if (ml->state == 0)
- ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime);
- if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT;
- else ret = WAIT_OBJECT_0;
- if (ml->reset)
- ml->state = 0;
- }
- break;
+ if (duration == 0) { /* Check Only */
+ if (ml->state == 1) ret = WAIT_FAILED;
+ else ret = WAIT_OBJECT_0;
+ }
+ if (duration == -1) { /* INFINITE */
+ if (ml->state == 0)
+ pthread_cond_wait(ml->pc,ml->pm);
+ if (ml->reset)
+ ml->state = 0;
+ ret = WAIT_OBJECT_0;
+ }
+ if (duration > 0) { /* Timed Wait */
+ struct timespec abstime;
+ struct timeval now;
+ gettimeofday(&now, 0);
+ abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000;
+ abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000;
+ if (ml->state == 0)
+ ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime);
+ if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT;
+ else ret = WAIT_OBJECT_0;
+ if (ml->reset)
+ ml->state = 0;
+ }
+ break;
case 1: /* Semaphore */
- if (duration == 0) {
- if(ml->semaphore==0) ret = WAIT_FAILED;
- else {
- ml->semaphore++;
- ret = WAIT_OBJECT_0;
- }
- }
- if (duration == -1) {
- if (ml->semaphore==0)
- pthread_cond_wait(ml->pc,ml->pm);
- ml->semaphore--;
- }
- break;
+ if (duration == 0) {
+ if(ml->semaphore==0) ret = WAIT_FAILED;
+ else {
+ ml->semaphore++;
+ ret = WAIT_OBJECT_0;
+ }
+ }
+ if (duration == -1) {
+ if (ml->semaphore==0)
+ pthread_cond_wait(ml->pc,ml->pm);
+ ml->semaphore--;
+ }
+ break;
}
pthread_mutex_unlock(ml->pm);
#ifdef QTX
static void* WINAPI expWaitForMultipleObjects(int count, const void** objects,
- int WaitAll, int duration)
+ int WaitAll, int duration)
{
int i;
void *object;
void *ret;
dbgprintf("WaitForMultipleObjects(%d, 0x%x, %d, duration %d) =>\n",
- count, objects, WaitAll, duration);
-
+ count, objects, WaitAll, duration);
+
for (i = 0; i < count; i++)
{
- object = (void *)objects[i];
- ret = expWaitForSingleObject(object, duration);
- if (WaitAll)
- dbgprintf("WaitAll flag not yet supported...\n");
- else
- return ret;
+ object = (void *)objects[i];
+ ret = expWaitForSingleObject(object, duration);
+ if (WaitAll)
+ dbgprintf("WaitAll flag not yet supported...\n");
+ else
+ return ret;
}
return NULL;
}
}
static HANDLE WINAPI expCreateMutexA(void *pSecAttr,
- char bInitialOwner, const char *name)
+ char bInitialOwner, const char *name)
{
HANDLE mlist = (HANDLE)expCreateEventA(pSecAttr, 0, 0, name);
-
+
if (name)
- dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n",
- pSecAttr, bInitialOwner, name, mlist);
+ dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n",
+ pSecAttr, bInitialOwner, name, mlist);
else
- dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n",
- pSecAttr, bInitialOwner, mlist);
+ dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n",
+ pSecAttr, bInitialOwner, mlist);
#ifndef QTX
/* 10l to QTX, if CreateMutex returns a real mutex, WaitForSingleObject
waits for ever, else it works ;) */
dbgprintf("GetSystemInfo(%p) =>\n", si);
if (cache) {
- memcpy(si,&cachedsi,sizeof(*si));
- DumpSystemInfo(si);
- return;
+ memcpy(si,&cachedsi,sizeof(*si));
+ DumpSystemInfo(si);
+ return;
}
memset(PF,0,sizeof(PF));
pf_set = 1;
cachedsi.u.s.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL;
- cachedsi.dwPageSize = getpagesize();
+ cachedsi.dwPageSize = getpagesize();
/* FIXME: better values for the two entries below... */
- cachedsi.lpMinimumApplicationAddress = (void *)0x00000000;
- cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF;
- cachedsi.dwActiveProcessorMask = 1;
- cachedsi.dwNumberOfProcessors = 1;
- cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
- cachedsi.dwAllocationGranularity = 0x10000;
- cachedsi.wProcessorLevel = 5; /* pentium */
- cachedsi.wProcessorRevision = 0x0101;
+ cachedsi.lpMinimumApplicationAddress = (void *)0x00000000;
+ cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF;
+ cachedsi.dwActiveProcessorMask = 1;
+ cachedsi.dwNumberOfProcessors = 1;
+ cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
+ cachedsi.dwAllocationGranularity = 0x10000;
+ cachedsi.wProcessorLevel = 5; /* pentium */
+ cachedsi.wProcessorRevision = 0x0101;
#ifdef MPLAYER
/* mplayer's way to detect PF's */
{
#include "../cpudetect.h"
- extern CpuCaps gCpuCaps;
-
- if (gCpuCaps.hasMMX)
- PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
- if (gCpuCaps.hasSSE)
- PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
- if (gCpuCaps.has3DNow)
- PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
-
- if (gCpuCaps.cpuType == 4)
- {
- cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
- cachedsi.wProcessorLevel = 4;
- }
- else if (gCpuCaps.cpuType >= 5)
- {
- cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel = 5;
- }
- else
- {
- cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
- cachedsi.wProcessorLevel = 3;
- }
- cachedsi.wProcessorRevision = gCpuCaps.cpuStepping;
- cachedsi.dwNumberOfProcessors = 1; /* hardcoded */
+ extern CpuCaps gCpuCaps;
+
+ if (gCpuCaps.hasMMX)
+ PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
+ if (gCpuCaps.hasSSE)
+ PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
+ if (gCpuCaps.has3DNow)
+ PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
+
+ if (gCpuCaps.cpuType == 4)
+ {
+ cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
+ cachedsi.wProcessorLevel = 4;
+ }
+ else if (gCpuCaps.cpuType >= 5)
+ {
+ cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel = 5;
+ }
+ else
+ {
+ cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
+ cachedsi.wProcessorLevel = 3;
+ }
+ cachedsi.wProcessorRevision = gCpuCaps.cpuStepping;
+ cachedsi.dwNumberOfProcessors = 1; /* hardcoded */
}
#endif
#ifndef MPLAYER
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__) || defined(__DragonFly__)
do_cpuid(1, regs);
- switch ((regs[0] >> 8) & 0xf) { // cpu family
+ switch ((regs[0] >> 8) & 0xf) { // cpu family
case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
cachedsi.wProcessorLevel= 3;
break;
cachedsi.wProcessorLevel= 5;
break;
}
- cachedsi.wProcessorRevision = regs[0] & 0xf; // stepping
+ cachedsi.wProcessorRevision = regs[0] & 0xf; // stepping
if (regs[3] & (1 << 8))
- PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE;
+ PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE;
if (regs[3] & (1 << 23))
- PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
+ PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
if (regs[3] & (1 << 25))
- PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
+ PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
if (regs[3] & (1 << 31))
- PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
+ PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
cachedsi.dwNumberOfProcessors=1;
#endif
#endif /* MPLAYER */
fdiv_bug and fpu emulation flags -- alex/MPlayer */
#ifdef __linux__
{
- char buf[20];
- char line[200];
- FILE *f = fopen ("/proc/cpuinfo", "r");
-
- if (!f)
- return;
- while (fgets(line,200,f)!=NULL) {
- char *s,*value;
-
- /* NOTE: the ':' is the only character we can rely on */
- if (!(value = strchr(line,':')))
- continue;
- /* terminate the valuename */
- *value++ = '\0';
- /* skip any leading spaces */
- while (*value==' ') value++;
- if ((s=strchr(value,'\n')))
- *s='\0';
-
- /* 2.1 method */
- if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) {
- if (isdigit (value[0])) {
- switch (value[0] - '0') {
- case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
- cachedsi.wProcessorLevel= 3;
- break;
- case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
- cachedsi.wProcessorLevel= 4;
- break;
- case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- }
- }
- /* set the CPU type of the current processor */
- sprintf(buf,"CPU %ld",cachedsi.dwProcessorType);
- continue;
- }
- /* old 2.0 method */
- if (!lstrncmpiA(line, "cpu",strlen("cpu"))) {
- if ( isdigit (value[0]) && value[1] == '8' &&
- value[2] == '6' && value[3] == 0
- ) {
- switch (value[0] - '0') {
- case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
- cachedsi.wProcessorLevel= 3;
- break;
- case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
- cachedsi.wProcessorLevel= 4;
- break;
- case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
- cachedsi.wProcessorLevel= 5;
- break;
- }
- }
- /* set the CPU type of the current processor */
- sprintf(buf,"CPU %ld",cachedsi.dwProcessorType);
- continue;
- }
- if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) {
- if (!lstrncmpiA(value,"yes",3))
- PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE;
-
- continue;
- }
- if (!lstrncmpiA(line,"fpu",strlen("fpu"))) {
- if (!lstrncmpiA(value,"no",2))
- PF[PF_FLOATING_POINT_EMULATED] = TRUE;
-
- continue;
- }
- if (!lstrncmpiA(line,"processor",strlen("processor"))) {
- /* processor number counts up...*/
- unsigned int x;
-
- if (sscanf(value,"%d",&x))
- if (x+1>cachedsi.dwNumberOfProcessors)
- cachedsi.dwNumberOfProcessors=x+1;
-
- /* Create a new processor subkey on a multiprocessor
- * system
- */
- sprintf(buf,"%d",x);
- }
- if (!lstrncmpiA(line,"stepping",strlen("stepping"))) {
- int x;
-
- if (sscanf(value,"%d",&x))
- cachedsi.wProcessorRevision = x;
- }
- if
- ( (!lstrncmpiA(line,"flags",strlen("flags")))
- || (!lstrncmpiA(line,"features",strlen("features"))) )
- {
- if (strstr(value,"cx8"))
- PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE;
- if (strstr(value,"mmx"))
- PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
- if (strstr(value,"tsc"))
- PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE;
- if (strstr(value,"xmm"))
- PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
- if (strstr(value,"3dnow"))
- PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
- }
- }
- fclose (f);
- /*
- * ad hoc fix for smp machines.
- * some problems on WaitForSingleObject,CreateEvent,SetEvent
- * CreateThread ...etc..
- *
- */
- cachedsi.dwNumberOfProcessors=1;
+ char buf[20];
+ char line[200];
+ FILE *f = fopen ("/proc/cpuinfo", "r");
+
+ if (!f)
+ return;
+ while (fgets(line,200,f)!=NULL) {
+ char *s,*value;
+
+ /* NOTE: the ':' is the only character we can rely on */
+ if (!(value = strchr(line,':')))
+ continue;
+ /* terminate the valuename */
+ *value++ = '\0';
+ /* skip any leading spaces */
+ while (*value==' ') value++;
+ if ((s=strchr(value,'\n')))
+ *s='\0';
+
+ /* 2.1 method */
+ if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) {
+ if (isdigit (value[0])) {
+ switch (value[0] - '0') {
+ case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
+ cachedsi.wProcessorLevel= 3;
+ break;
+ case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
+ cachedsi.wProcessorLevel= 4;
+ break;
+ case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ }
+ }
+ /* set the CPU type of the current processor */
+ sprintf(buf,"CPU %ld",cachedsi.dwProcessorType);
+ continue;
+ }
+ /* old 2.0 method */
+ if (!lstrncmpiA(line, "cpu",strlen("cpu"))) {
+ if ( isdigit (value[0]) && value[1] == '8' &&
+ value[2] == '6' && value[3] == 0
+ ) {
+ switch (value[0] - '0') {
+ case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
+ cachedsi.wProcessorLevel= 3;
+ break;
+ case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486;
+ cachedsi.wProcessorLevel= 4;
+ break;
+ case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM;
+ cachedsi.wProcessorLevel= 5;
+ break;
+ }
+ }
+ /* set the CPU type of the current processor */
+ sprintf(buf,"CPU %ld",cachedsi.dwProcessorType);
+ continue;
+ }
+ if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) {
+ if (!lstrncmpiA(value,"yes",3))
+ PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE;
+
+ continue;
+ }
+ if (!lstrncmpiA(line,"fpu",strlen("fpu"))) {
+ if (!lstrncmpiA(value,"no",2))
+ PF[PF_FLOATING_POINT_EMULATED] = TRUE;
+
+ continue;
+ }
+ if (!lstrncmpiA(line,"processor",strlen("processor"))) {
+ /* processor number counts up...*/
+ unsigned int x;
+
+ if (sscanf(value,"%d",&x))
+ if (x+1>cachedsi.dwNumberOfProcessors)
+ cachedsi.dwNumberOfProcessors=x+1;
+
+ /* Create a new processor subkey on a multiprocessor
+ * system
+ */
+ sprintf(buf,"%d",x);
+ }
+ if (!lstrncmpiA(line,"stepping",strlen("stepping"))) {
+ int x;
+
+ if (sscanf(value,"%d",&x))
+ cachedsi.wProcessorRevision = x;
+ }
+ if
+ ( (!lstrncmpiA(line,"flags",strlen("flags")))
+ || (!lstrncmpiA(line,"features",strlen("features"))) )
+ {
+ if (strstr(value,"cx8"))
+ PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE;
+ if (strstr(value,"mmx"))
+ PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE;
+ if (strstr(value,"tsc"))
+ PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE;
+ if (strstr(value,"xmm"))
+ PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
+ if (strstr(value,"3dnow"))
+ PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE;
+ }
+ }
+ fclose (f);
+ /*
+ * ad hoc fix for smp machines.
+ * some problems on WaitForSingleObject,CreateEvent,SetEvent
+ * CreateThread ...etc..
+ *
+ */
+ cachedsi.dwNumberOfProcessors=1;
}
#endif /* __linux__ */
cache = 1;
WIN_BOOL result = 0;
if (!pf_set)
{
- SYSTEM_INFO si;
- expGetSystemInfo(&si);
+ SYSTEM_INFO si;
+ expGetSystemInfo(&si);
}
if(v<64) result=PF[v];
dbgprintf("IsProcessorFeaturePresent(0x%x) => 0x%x\n", v, result);
// printf("HeapCreate:");
HANDLE result;
if(init_size==0)
- result=(HANDLE)my_mreq(0x110000, 0);
+ result=(HANDLE)my_mreq(0x110000, 0);
else
- result=(HANDLE)my_mreq((init_size + 0xfff) & 0x7ffff000 , 0);
+ result=(HANDLE)my_mreq((init_size + 0xfff) & 0x7ffff000 , 0);
dbgprintf("HeapCreate(flags 0x%x, initial size %d, maximum size %d) => 0x%x\n", flags, init_size, max_size, result);
return result;
}
//if (size == 22276) trapbug();
z=my_mreq((size + 0xfff) & 0x7ffff000, (flags & HEAP_ZERO_MEMORY));
if(z==0)
- printf("HeapAlloc failure\n");
+ printf("HeapAlloc failure\n");
dbgprintf("HeapAlloc(heap 0x%x, flags 0x%x, size %d) => 0x%x\n", heap, flags, size, z);
heapfreehack = 0; // reset
return z;
{
dbgprintf("HeapFree(0x%x, 0x%x, pointer 0x%x) => 1\n", heap, dwFlags, lpMem);
if (heapfreehack != lpMem && lpMem != (void*)0xffffffff
- && lpMem != (void*)0xbdbdbdbd)
- // 0xbdbdbdbd is for i263_drv.drv && libefence
- // it seems to be reading from relased memory
+ && lpMem != (void*)0xbdbdbdbd)
+ // 0xbdbdbdbd is for i263_drv.drv && libefence
+ // it seems to be reading from relased memory
// EF_PROTECT_FREE doens't show any probleme
- my_release(lpMem);
+ my_release(lpMem);
else
{
- if (!heapfreehackshown++)
- printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem);
+ if (!heapfreehackshown++)
+ printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem);
}
heapfreehack = lpMem;
return 1;
{
void* z = VirtualAlloc(v1, v2, v3, v4);
if(z==0)
- printf("VirtualAlloc failure\n");
+ printf("VirtualAlloc failure\n");
dbgprintf("VirtualAlloc(0x%x, %d, %d, %d) => 0x%x \n",v1,v2,v3,v4, z);
return z;
}
int i;
for (i=0; i < CRITSECS_LIST_MAX; i++)
- if (critsecs_list[i].cs_win == cs_win)
- return(i);
+ if (critsecs_list[i].cs_win == cs_win)
+ return(i);
return(-1);
}
int i;
for (i=0; i < CRITSECS_LIST_MAX; i++)
- if (critsecs_list[i].cs_win == NULL)
- return(i);
+ if (critsecs_list[i].cs_win == NULL)
+ return(i);
return(-1);
}
int i;
for (i=0; i < CRITSECS_LIST_MAX; i++)
- if (critsecs_list[i].cs_win == cs_win && critsecs_list[i].cs_unix)
- return(critsecs_list[i].cs_unix);
+ if (critsecs_list[i].cs_win == cs_win && critsecs_list[i].cs_unix)
+ return(critsecs_list[i].cs_unix);
return(NULL);
}
#endif
/* pthread_mutex_init((pthread_mutex_t*)c, NULL); */
#ifdef CRITSECS_NEWTYPE
{
- struct CRITSECT *cs;
- int i = critsecs_get_unused();
-
- if (i < 0)
- {
- printf("InitializeCriticalSection(%p) - no more space in list\n", c);
- return;
- }
- dbgprintf("got unused space at %d\n", i);
- cs = malloc(sizeof(struct CRITSECT));
- if (!cs)
- {
- printf("InitializeCriticalSection(%p) - out of memory\n", c);
- return;
- }
- pthread_mutex_init(&cs->mutex, NULL);
- cs->locked = 0;
- critsecs_list[i].cs_win = c;
- critsecs_list[i].cs_unix = cs;
- dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n",
- i, c, cs);
+ struct CRITSECT *cs;
+ int i = critsecs_get_unused();
+
+ if (i < 0)
+ {
+ printf("InitializeCriticalSection(%p) - no more space in list\n", c);
+ return;
+ }
+ dbgprintf("got unused space at %d\n", i);
+ cs = malloc(sizeof(struct CRITSECT));
+ if (!cs)
+ {
+ printf("InitializeCriticalSection(%p) - out of memory\n", c);
+ return;
+ }
+ pthread_mutex_init(&cs->mutex, NULL);
+ cs->locked = 0;
+ critsecs_list[i].cs_win = c;
+ critsecs_list[i].cs_unix = cs;
+ dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n",
+ i, c, cs);
}
#else
{
- struct CRITSECT* cs = mreq_private(sizeof(struct CRITSECT) + sizeof(CRITICAL_SECTION),
- 0, AREATYPE_CRITSECT);
- pthread_mutex_init(&cs->mutex, NULL);
- cs->locked=0;
+ struct CRITSECT* cs = mreq_private(sizeof(struct CRITSECT) + sizeof(CRITICAL_SECTION),
+ 0, AREATYPE_CRITSECT);
+ pthread_mutex_init(&cs->mutex, NULL);
+ cs->locked=0;
cs->deadbeef = 0xdeadbeef;
- *(void**)c = cs;
+ *(void**)c = cs;
}
#endif
return;
dbgprintf("EnterCriticalSection(0x%x) %p\n",c, cs);
if (!cs)
{
- dbgprintf("entered uninitialized critisec!\n");
- expInitializeCriticalSection(c);
+ dbgprintf("entered uninitialized critisec!\n");
+ expInitializeCriticalSection(c);
#ifdef CRITSECS_NEWTYPE
- cs=critsecs_get_unix(c);
+ cs=critsecs_get_unix(c);
#else
- cs = (*(struct CRITSECT**)c);
+ cs = (*(struct CRITSECT**)c);
#endif
- dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c);
+ dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c);
}
if(cs->locked)
- if(cs->id==pthread_self())
- return;
+ if(cs->id==pthread_self())
+ return;
pthread_mutex_lock(&(cs->mutex));
cs->locked=1;
cs->id=pthread_self();
dbgprintf("LeaveCriticalSection(0x%x) 0x%x\n",c, cs);
if (!cs)
{
- dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c);
- return;
+ dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c);
+ return;
}
if (cs->locked)
{
- cs->locked=0;
- pthread_mutex_unlock(&(cs->mutex));
+ cs->locked=0;
+ pthread_mutex_unlock(&(cs->mutex));
}
else
- dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c);
+ dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c);
return;
}
if (!cs)
{
- dbgprintf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c);
- return;
+ dbgprintf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c);
+ return;
}
-
+
if (cs->locked)
{
- dbgprintf("Win32 Warning: Deleting unlocked Critical Section %p!!\n", c);
- pthread_mutex_unlock(&(cs->mutex));
+ dbgprintf("Win32 Warning: Deleting unlocked Critical Section %p!!\n", c);
+ pthread_mutex_unlock(&(cs->mutex));
}
#ifndef GARBAGE
my_release(cs);
#ifdef CRITSECS_NEWTYPE
{
- int i = critsecs_get_pos(c);
+ int i = critsecs_get_pos(c);
- if (i < 0)
- {
- printf("DeleteCriticalSection(%p) error (critsec not found)\n", c);
- return;
- }
+ if (i < 0)
+ {
+ printf("DeleteCriticalSection(%p) error (critsec not found)\n", c);
+ return;
+ }
- critsecs_list[i].cs_win = NULL;
- expfree(critsecs_list[i].cs_unix);
- critsecs_list[i].cs_unix = NULL;
- dbgprintf("DeleteCriticalSection -> itemno=%d\n", i);
+ critsecs_list[i].cs_win = NULL;
+ expfree(critsecs_list[i].cs_unix);
+ critsecs_list[i].cs_unix = NULL;
+ dbgprintf("DeleteCriticalSection -> itemno=%d\n", i);
}
#endif
return;
{
int i;
for(i=0; i<64; i++)
- if(tls_use_map[i]==0)
- {
- tls_use_map[i]=1;
- dbgprintf("TlsAlloc() => %d\n",i);
- return i;
- }
+ if(tls_use_map[i]==0)
+ {
+ tls_use_map[i]=1;
+ dbgprintf("TlsAlloc() => %d\n",i);
+ return i;
+ }
dbgprintf("TlsAlloc() => -1 (ERROR)\n");
return -1;
}
dbgprintf("TlsSetValue(%d,0x%x) => 1\n",index,value);
// if((index<0) || (index>64))
if((index>=64))
- return 0;
+ return 0;
*(void**)((char*)fs_seg+0x88+4*index) = value;
return 1;
}
int index = (int) idx;
dbgprintf("TlsFree(%d)\n",index);
if((index<0) || (index>64))
- return 0;
+ return 0;
tls_use_map[index]=0;
return 1;
}
{
if (g_tls == NULL)
{
- g_tls=my_mreq(sizeof(tls_t), 0);
- g_tls->next=g_tls->prev=NULL;
+ g_tls=my_mreq(sizeof(tls_t), 0);
+ g_tls->next=g_tls->prev=NULL;
}
else
{
- g_tls->next=my_mreq(sizeof(tls_t), 0);
- g_tls->next->prev=g_tls;
- g_tls->next->next=NULL;
- g_tls=g_tls->next;
+ g_tls->next=my_mreq(sizeof(tls_t), 0);
+ g_tls->next->prev=g_tls;
+ g_tls->next->next=NULL;
+ g_tls=g_tls->next;
}
dbgprintf("TlsAlloc() => 0x%x\n", g_tls);
if (g_tls)
- g_tls->value=0; /* XXX For Divx.dll */
+ g_tls->value=0; /* XXX For Divx.dll */
return g_tls;
}
tls_t* index = (tls_t*) idx;
int result;
if(index==0)
- result=0;
+ result=0;
else
{
- index->value=value;
- result=1;
+ index->value=value;
+ result=1;
}
dbgprintf("TlsSetValue(index 0x%x, value 0x%x) => %d \n", index, value, result );
return result;
tls_t* index = (tls_t*) idx;
void* result;
if(index==0)
- result=0;
+ result=0;
else
- result=index->value;
+ result=index->value;
dbgprintf("TlsGetValue(index 0x%x) => 0x%x\n", index, result);
return result;
}
tls_t* index = (tls_t*) idx;
int result;
if(index==0)
- result=0;
+ result=0;
else
{
- if(index->next)
- index->next->prev=index->prev;
- if(index->prev)
- index->prev->next=index->next;
- if (g_tls == index)
+ if(index->next)
+ index->next->prev=index->prev;
+ if(index->prev)
+ index->prev->next=index->next;
+ if (g_tls == index)
g_tls = index->prev;
- my_release((void*)index);
- result=1;
+ my_release((void*)index);
+ result=1;
}
dbgprintf("TlsFree(index 0x%x) => %d\n", index, result);
return result;
{
void* z = my_mreq(size, (flags & GMEM_ZEROINIT));
if (z == 0)
- printf("LocalAlloc() failed\n");
+ printf("LocalAlloc() failed\n");
dbgprintf("LocalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z);
return z;
}
newpointer=NULL;
if (flags & LMEM_MODIFY) {
- dbgprintf("LocalReAlloc MODIFY\n");
- return (void *)handle;
+ dbgprintf("LocalReAlloc MODIFY\n");
+ return (void *)handle;
}
oldsize = my_size((void *)handle);
newpointer = my_realloc((void *)handle,size);
//z=calloc(size, 1);
//z=malloc(size);
if(z==0)
- printf("GlobalAlloc() failed\n");
+ printf("GlobalAlloc() failed\n");
dbgprintf("GlobalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z);
return z;
}
alloc_header* header = last_alloc;
alloc_header* mem = (alloc_header*) amem - 1;
if (amem == 0)
- return 0;
+ return 0;
pthread_mutex_lock(&memmut);
while (header)
{
- if (header->deadbeef != 0xdeadbeef)
- {
- dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt);
- break;
- }
+ if (header->deadbeef != 0xdeadbeef)
+ {
+ dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt);
+ break;
+ }
- if (header == mem)
- {
- size = header->size;
- break;
- }
+ if (header == mem)
+ {
+ size = header->size;
+ break;
+ }
- header = header->prev;
+ header = header->prev;
}
pthread_mutex_unlock(&memmut);
#endif
int result=LoadStringA(instance, id, buf, size);
// if(buf)
dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d ( %s )\n",
- instance, id, buf, size, result, buf);
+ instance, id, buf, size, result, buf);
// else
// dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d\n",
- // instance, id, buf, size, result);
+ // instance, id, buf, size, result);
return result;
}
int i;
int result;
if(s2==0)
- result=1;
+ result=1;
else
{
- if(siz1>siz2/2)siz1=siz2/2;
- for(i=1; i<=siz1; i++)
- {
- *s2=*s1;
- if(!*s1)break;
- s2++;
- s1++;
- }
- result=i;
+ if(siz1>siz2/2)siz1=siz2/2;
+ for(i=1; i<=siz1; i++)
+ {
+ *s2=*s1;
+ if(!*s1)break;
+ s2++;
+ s1++;
+ }
+ result=i;
}
if(s1)
- dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string 0x%x='%s',"
- "size %d, dest buffer 0x%x, dest size %d) => %d\n",
- v1, v2, s1, s1, siz1, s2, siz2, result);
+ dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string 0x%x='%s',"
+ "size %d, dest buffer 0x%x, dest size %d) => %d\n",
+ v1, v2, s1, s1, siz1, s2, siz2, result);
else
- dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string NULL,"
- "size %d, dest buffer 0x%x, dest size %d) =>\n",
- v1, v2, siz1, s2, siz2, result);
+ dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string NULL,"
+ "size %d, dest buffer 0x%x, dest size %d) =>\n",
+ v1, v2, siz1, s2, siz2, result);
return result;
}
static void wch_print(const short* str)
dbgprintf("\n");
}
static long WINAPI expWideCharToMultiByte(long v1, long v2, short* s1, long siz1,
- char* s2, int siz2, char* c3, int* siz3)
+ char* s2, int siz2, char* c3, int* siz3)
{
int result;
dbgprintf("WideCharToMultiByte(codepage %d, flags 0x%x, src 0x%x, src size %d, "
- "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3);
+ "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3);
result=WideCharToMultiByte(v1, v2, s1, siz1, s2, siz2, c3, siz3);
dbgprintf("=> %d\n", result);
//if(s1)wch_print(s1);
strcpy(c->szCSDVersion, "Service Pack 3");
#endif
dbgprintf(" Major version: 4\n Minor version: 0\n Build number: 0x4000457\n"
- " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 3'\n");
+ " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 3'\n");
return 1;
}
static HANDLE WINAPI expCreateSemaphoreA(char* v1, long init_count,
- long max_count, char* name)
+ long max_count, char* name)
{
pthread_mutex_t *pm;
pthread_cond_t *pc;
*/
if(mlist!=NULL)
{
- mutex_list* pp=mlist;
- if(name!=NULL)
- do
- {
- if((strcmp(pp->name, name)==0) && (pp->type==1))
- {
- dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n",
- v1, init_count, max_count, name, name, mlist);
- return (HANDLE)mlist;
- }
- }while((pp=pp->prev) != NULL);
+ mutex_list* pp=mlist;
+ if(name!=NULL)
+ do
+ {
+ if((strcmp(pp->name, name)==0) && (pp->type==1))
+ {
+ dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n",
+ v1, init_count, max_count, name, name, mlist);
+ return (HANDLE)mlist;
+ }
+ }while((pp=pp->prev) != NULL);
}
pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX);
pthread_mutex_init(pm, NULL);
pthread_cond_init(pc, NULL);
if(mlist==NULL)
{
- mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
- mlist->next=mlist->prev=NULL;
+ mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
+ mlist->next=mlist->prev=NULL;
}
else
{
- mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
- mlist->next->prev=mlist;
- mlist->next->next=NULL;
- mlist=mlist->next;
- // printf("new semaphore %p\n", mlist);
+ mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT);
+ mlist->next->prev=mlist;
+ mlist->next->next=NULL;
+ mlist=mlist->next;
+ // printf("new semaphore %p\n", mlist);
}
mlist->type=1; /* Type Semaphore */
mlist->pm=pm;
mlist->reset=0;
mlist->semaphore=init_count;
if(name!=NULL)
- strncpy(mlist->name, name, 64);
+ strncpy(mlist->name, name, 64);
else
- mlist->name[0]=0;
+ mlist->name[0]=0;
if(pm==NULL)
- dbgprintf("ERROR::: CreateSemaphoreA failure\n");
+ dbgprintf("ERROR::: CreateSemaphoreA failure\n");
if(name)
- dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n",
- v1, init_count, max_count, name, name, mlist);
+ dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n",
+ v1, init_count, max_count, name, name, mlist);
else
- dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n",
- v1, init_count, max_count, mlist);
+ dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n",
+ v1, init_count, max_count, mlist);
return (HANDLE)mlist;
}
ml->semaphore += increment;
pthread_mutex_unlock(ml->pm);
dbgprintf("ReleaseSemaphore(semaphore 0x%x, increment %d, prev_count 0x%x) => 1\n",
- hsem, increment, prev_count);
+ hsem, increment, prev_count);
return 1;
}
{
long result=RegOpenKeyExA(key, subkey, reserved, access, newkey);
dbgprintf("RegOpenKeyExA(key 0x%x, subkey %s, reserved %d, access 0x%x, pnewkey 0x%x) => %d\n",
- key, subkey, reserved, access, newkey, result);
+ key, subkey, reserved, access, newkey, result);
if(newkey)dbgprintf(" New key: 0x%x\n", *newkey);
return result;
}
{
long result=RegQueryValueExA(key, value, reserved, type, data, count);
dbgprintf("RegQueryValueExA(key 0x%x, value %s, reserved 0x%x, data 0x%x, count 0x%x)"
- " => 0x%x\n", key, value, reserved, data, count, result);
+ " => 0x%x\n", key, value, reserved, data, count, result);
if(data && count)dbgprintf(" read %d bytes: '%s'\n", *count, data);
return result;
}
}
static long WINAPI expRegCreateKeyExA(long key, const char* name, long reserved,
- void* classs, long options, long security,
- void* sec_attr, int* newkey, int* status)
+ void* classs, long options, long security,
+ void* sec_attr, int* newkey, int* status)
{
long result=RegCreateKeyExA(key, name, reserved, classs, options, security, sec_attr, newkey, status);
dbgprintf("RegCreateKeyExA(key 0x%x, name 0x%x='%s', reserved=0x%x,"
- " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n",
- key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result);
+ " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n",
+ key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result);
if(!result && newkey) dbgprintf(" New key: 0x%x\n", *newkey);
if(!result && status) dbgprintf(" New key status: 0x%x\n", *status);
return result;
{
long result=RegSetValueExA(key, name, v1, v2, data, size);
dbgprintf("RegSetValueExA(key 0x%x, name '%s', 0x%x, 0x%x, data 0x%x -> 0x%x '%s', size=%d) => %d",
- key, name, v1, v2, data, *(int*)data, data, size, result);
+ key, name, v1, v2, data, *(int*)data, data, size, result);
return result;
}
{
long result=RegOpenKeyExA(hKey, lpSubKey, 0, 0, phkResult);
dbgprintf("RegOpenKeyExA(key 0x%x, subkey '%s', 0x%x) => %d\n",
- hKey, lpSubKey, phkResult, result);
+ hKey, lpSubKey, phkResult, result);
if(!result && phkResult) dbgprintf(" New key: 0x%x\n", *phkResult);
return result;
}
static DWORD WINAPI expRegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count,
- LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count)
+ LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count)
{
return RegEnumValueA(hkey, index, value, val_count,
- reserved, type, data, count);
+ reserved, type, data, count);
}
static DWORD WINAPI expRegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName,
- LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
- LPFILETIME lpftLastWriteTime)
+ LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass,
+ LPFILETIME lpftLastWriteTime)
{
return RegEnumKeyExA(hKey, dwIndex, lpName, lpcbName, lpReserved, lpClass,
- lpcbClass, lpftLastWriteTime);
+ lpcbClass, lpftLastWriteTime);
}
static long WINAPI expQueryPerformanceCounter(long long* z)
f = fopen ("/proc/cpuinfo", "r");
if (f != NULL) {
- while (fgets(line,sizeof(line),f)!=NULL) {
- /* NOTE: the ':' is the only character we can rely on */
- if (!(value = strchr(line,':')))
- continue;
- /* terminate the valuename */
- *value++ = '\0';
- /* skip any leading spaces */
- while (*value==' ') value++;
- if ((s=strchr(value,'\n')))
- *s='\0';
-
- if (!strncasecmp(line, "cpu MHz",strlen("cpu MHz"))
- && sscanf(value, "%lf", &freq) == 1) {
- freq*=1000;
- break;
- }
- }
- fclose(f);
+ while (fgets(line,sizeof(line),f)!=NULL) {
+ /* NOTE: the ':' is the only character we can rely on */
+ if (!(value = strchr(line,':')))
+ continue;
+ /* terminate the valuename */
+ *value++ = '\0';
+ /* skip any leading spaces */
+ while (*value==' ') value++;
+ if ((s=strchr(value,'\n')))
+ *s='\0';
+
+ if (!strncasecmp(line, "cpu MHz",strlen("cpu MHz"))
+ && sscanf(value, "%lf", &freq) == 1) {
+ freq*=1000;
+ break;
+ }
+ }
+ fclose(f);
}
return freq;
}
static double solaris_kstat_freq()
{
-#if defined(HAVE_LIBKSTAT) && defined(KSTAT_DATA_INT32)
+#if defined(HAVE_LIBKSTAT) && defined(KSTAT_DATA_INT32)
/*
* try to extract the CPU speed from the solaris kernel's kstat data
*/
kc = kstat_open();
if (kc != NULL)
{
- ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0");
-
- /* kstat found and name/value pairs? */
- if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED)
- {
- /* read the kstat data from the kernel */
- if (kstat_read(kc, ksp, NULL) != -1)
- {
- /*
- * lookup desired "clock_MHz" entry, check the expected
- * data type
- */
- kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz");
- if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32)
- mhz = kdata->value.i32;
- }
- }
- kstat_close(kc);
+ ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0");
+
+ /* kstat found and name/value pairs? */
+ if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED)
+ {
+ /* read the kstat data from the kernel */
+ if (kstat_read(kc, ksp, NULL) != -1)
+ {
+ /*
+ * lookup desired "clock_MHz" entry, check the expected
+ * data type
+ */
+ kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz");
+ if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32)
+ mhz = kdata->value.i32;
+ }
+ }
+ kstat_close(kc);
}
if (mhz > 0)
- return mhz * 1000.;
-#endif /* HAVE_LIBKSTAT */
- return -1; // kstat stuff is not available, CPU freq is unknown
+ return mhz * 1000.;
+#endif /* HAVE_LIBKSTAT */
+ return -1; // kstat stuff is not available, CPU freq is unknown
}
/*
double freq;
if ((freq = linux_cpuinfo_freq()) > 0)
- return freq;
+ return freq;
if ((freq = solaris_kstat_freq()) > 0)
- return freq;
+ return freq;
return tsc_freq();
}
result=FindResourceA(module, name, type);
dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n",
- module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result);
+ module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result);
return result;
}
dbgprintf("CloseHandle(0x%x) => 1\n", v1);
/* do not close stdin,stdout and stderr */
if (v1 > 2)
- if (!close(v1))
- return 0;
+ if (!close(v1))
+ return 0;
return 1;
}
dbgprintf(" lpDesktop='%s'\n", s->lpDesktop);
dbgprintf(" lpTitle='%s'\n", s->lpTitle);
dbgprintf(" dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n",
- s->dwX, s->dwY, s->dwXSize, s->dwYSize);
+ s->dwX, s->dwY, s->dwXSize, s->dwYSize);
dbgprintf(" dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n",
- s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute);
+ s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute);
dbgprintf(" dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n",
- s->dwFlags, s->wShowWindow, s->cbReserved2);
+ s->dwFlags, s->wShowWindow, s->cbReserved2);
dbgprintf(" lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n",
- s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError);
+ s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError);
return 1;
}
}
#ifdef QTX
-#define FILE_HANDLE_quicktimeqts ((HANDLE)0x444)
-#define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445)
+#define FILE_HANDLE_quicktimeqts ((HANDLE)0x444)
+#define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445)
#endif
static int WINAPI expGetFileType(int handle)
{
dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename);
if (strstr(filename, "QuickTime.qts"))
- return FILE_ATTRIBUTE_SYSTEM;
+ return FILE_ATTRIBUTE_SYSTEM;
return FILE_ATTRIBUTE_NORMAL;
}
#endif
if (module == 0 && len >= 12)
{
- /* return caller program name */
- strcpy(s, "aviplay.dll");
- result=1;
+ /* return caller program name */
+ strcpy(s, "aviplay.dll");
+ result=1;
}
else if(s==0)
- result=0;
+ result=0;
+ else
+ if(len<35)
+ result=0;
else
- if(len<35)
- result=0;
- else
- {
- result=1;
- strcpy(s, "c:\\windows\\system\\");
- mr=MODULE32_LookupHMODULE(module);
- if(mr==0)//oops
- strcat(s, "aviplay.dll");
- else
- if(strrchr(mr->filename, '/')==NULL)
- strcat(s, mr->filename);
- else
- strcat(s, strrchr(mr->filename, '/')+1);
- }
+ {
+ result=1;
+ strcpy(s, "c:\\windows\\system\\");
+ mr=MODULE32_LookupHMODULE(module);
+ if(mr==0)//oops
+ strcat(s, "aviplay.dll");
+ else
+ if(strrchr(mr->filename, '/')==NULL)
+ strcat(s, mr->filename);
+ else
+ strcat(s, strrchr(mr->filename, '/')+1);
+ }
if(!s)
- dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n",
- module, s, len, result);
+ dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n",
+ module, s, len, result);
else
- dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n",
- module, s, len, result, s);
+ dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n",
+ module, s, len, result, s);
return result;
}
char* lastbc;
int i;
if (!name)
- return -1;
+ return -1;
// we skip to the last backslash
// this is effectively eliminating weird characters in
// the text output windows
lastbc = strrchr(name, '\\');
if (lastbc)
{
- int i;
- lastbc++;
- for (i = 0; 1 ;i++)
- {
- name[i] = *lastbc++;
- if (!name[i])
- break;
- }
+ int i;
+ lastbc++;
+ for (i = 0; 1 ;i++)
+ {
+ name[i] = *lastbc++;
+ if (!name[i])
+ break;
+ }
}
if(strncmp(name, "c:\\windows\\", 11)==0) name += 11;
if(strncmp(name, ".\\", 2)==0) name += 2;
// PIMJ and VIVO audio are loading kernel32.dll
if (strcasecmp(name, "kernel32.dll") == 0 || strcasecmp(name, "kernel32") == 0)
- return MODULE_HANDLE_kernel32;
-// return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */
- /* exported -> do not return failed! */
+ return MODULE_HANDLE_kernel32;
+// return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */
+ /* exported -> do not return failed! */
if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0)
-// return MODULE_HANDLE_kernel32;
- return MODULE_HANDLE_user32;
+// return MODULE_HANDLE_kernel32;
+ return MODULE_HANDLE_user32;
#ifdef QTX
if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0)
- return MODULE_HANDLE_wininet;
+ return MODULE_HANDLE_wininet;
if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0)
- return MODULE_HANDLE_ddraw;
+ return MODULE_HANDLE_ddraw;
if (strcasecmp(name, "advapi32.dll") == 0 || strcasecmp(name, "advapi32") == 0)
- return MODULE_HANDLE_advapi32;
+ return MODULE_HANDLE_advapi32;
#endif
if (strcasecmp(name, "comdlg32.dll") == 0 || strcasecmp(name, "comdlg32") == 0)
- return MODULE_HANDLE_comdlg32;
+ return MODULE_HANDLE_comdlg32;
if (strcasecmp(name, "msvcrt.dll") == 0 || strcasecmp(name, "msvcrt") == 0)
- return MODULE_HANDLE_msvcrt;
+ return MODULE_HANDLE_msvcrt;
if (strcasecmp(name, "ole32.dll") == 0 || strcasecmp(name, "ole32") == 0)
- return MODULE_HANDLE_ole32;
+ return MODULE_HANDLE_ole32;
if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0)
- return MODULE_HANDLE_winmm;
+ return MODULE_HANDLE_winmm;
result=LoadLibraryA(name);
dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result);
void* result;
switch(mod){
case MODULE_HANDLE_kernel32:
- result=LookupExternalByName("kernel32.dll", name); break;
+ result=LookupExternalByName("kernel32.dll", name); break;
case MODULE_HANDLE_user32:
- result=LookupExternalByName("user32.dll", name); break;
+ result=LookupExternalByName("user32.dll", name); break;
#ifdef QTX
case MODULE_HANDLE_wininet:
- result=LookupExternalByName("wininet.dll", name); break;
+ result=LookupExternalByName("wininet.dll", name); break;
case MODULE_HANDLE_ddraw:
- result=LookupExternalByName("ddraw.dll", name); break;
+ result=LookupExternalByName("ddraw.dll", name); break;
case MODULE_HANDLE_advapi32:
- result=LookupExternalByName("advapi32.dll", name); break;
+ result=LookupExternalByName("advapi32.dll", name); break;
#endif
case MODULE_HANDLE_comdlg32:
- result=LookupExternalByName("comdlg32.dll", name); break;
+ result=LookupExternalByName("comdlg32.dll", name); break;
case MODULE_HANDLE_msvcrt:
- result=LookupExternalByName("msvcrt.dll", name); break;
+ result=LookupExternalByName("msvcrt.dll", name); break;
case MODULE_HANDLE_ole32:
- result=LookupExternalByName("ole32.dll", name); break;
+ result=LookupExternalByName("ole32.dll", name); break;
case MODULE_HANDLE_winmm:
- result=LookupExternalByName("winmm.dll", name); break;
+ result=LookupExternalByName("winmm.dll", name); break;
default:
- result=GetProcAddress(mod, name);
+ result=GetProcAddress(mod, name);
}
dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result);
return result;
}
static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr,
- long flProtect, long dwMaxHigh,
- long dwMaxLow, const char* name)
+ long flProtect, long dwMaxHigh,
+ long dwMaxLow, const char* name)
{
long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name);
if(!name)
- dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"
- "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n",
- hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result);
+ dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"
+ "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n",
+ hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result);
else
- dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"
- "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n",
- hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result);
+ dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"
+ "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n",
+ hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result);
return result;
}
{
long result=OpenFileMappingA(hFile, hz, name);
if(!name)
- dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n",
- hFile, hz, result);
+ dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n",
+ hFile, hz, result);
else
- dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n",
- hFile, hz, name, name, result);
+ dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n",
+ hFile, hz, name, name, result);
return result;
}
static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh,
- DWORD offLow, DWORD size)
+ DWORD offLow, DWORD size)
{
dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n",
- file,mode,offHigh,offLow,size,(char*)file+offLow);
+ file,mode,offHigh,offLow,size,(char*)file+offLow);
return (char*)file+offLow;
}
#define BITSPIXEL 12
#define PLANES 14
if (unk == BITSPIXEL)
- return 24;
+ return 24;
if (unk == PLANES)
- return 1;
+ return 1;
#endif
return 1;
}
{
dbgprintf("DeleteDC(0x%x) => 0\n", hdc);
if (hdc == 0x81)
- return 1;
+ return 1;
return 0;
}
return 0;
}
-static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r,
+static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r,
int WINAPI (*callback_proc)(), void *callback_param)
{
dbgprintf("EnumDisplayMonitors(0x%x, 0x%x, 0x%x, 0x%x) => ?\n",
- dc, r, callback_proc, callback_param);
+ dc, r, callback_proc, callback_param);
return callback_proc(0, dc, r, callback_param);
}
#if 0
typedef struct tagMONITORINFO {
- DWORD cbSize;
- RECT rcMonitor;
- RECT rcWork;
- DWORD dwFlags;
-} MONITORINFO, *LPMONITORINFO;
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+} MONITORINFO, *LPMONITORINFO;
#endif
#define CCHDEVICENAME 8
-typedef struct tagMONITORINFOEX {
- DWORD cbSize;
- RECT rcMonitor;
- RECT rcWork;
- DWORD dwFlags;
+typedef struct tagMONITORINFOEX {
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
TCHAR szDevice[CCHDEVICENAME];
-} MONITORINFOEX, *LPMONITORINFOEX;
+} MONITORINFOEX, *LPMONITORINFOEX;
static int WINAPI expGetMonitorInfoA(void *mon, LPMONITORINFO lpmi)
{
dbgprintf("GetMonitorInfoA(0x%x, 0x%x) => 1\n", mon, lpmi);
-
+
lpmi->rcMonitor.right = lpmi->rcWork.right = PSEUDO_SCREEN_WIDTH;
lpmi->rcMonitor.left = lpmi->rcWork.left = 0;
lpmi->rcMonitor.bottom = lpmi->rcWork.bottom = PSEUDO_SCREEN_HEIGHT;
if (lpmi->cbSize == sizeof(MONITORINFOEX))
{
- LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi;
- dbgprintf("MONITORINFOEX!\n");
- strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME);
+ LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi;
+ dbgprintf("MONITORINFOEX!\n");
+ strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME);
}
-
+
return 1;
}
static int WINAPI expEnumDisplayDevicesA(const char *device, int devnum,
- void *dispdev, int flags)
+ void *dispdev, int flags)
{
dbgprintf("EnumDisplayDevicesA(0x%x = %s, %d, 0x%x, %x) => 1\n",
- device, device, devnum, dispdev, flags);
+ device, device, devnum, dispdev, flags);
return 1;
}
{
strncat(classname, "QuickTime", maxcount);
dbgprintf("GetClassNameA(0x%x, 0x%x, %d) => %d\n",
- win, classname, maxcount, strlen(classname));
+ win, classname, maxcount, strlen(classname));
return strlen(classname);
}
static int WINAPI expGetClassInfoA(HINSTANCE inst, LPCSTR classname, LPWNDCLASS wndclass)
{
dbgprintf("GetClassInfoA(0x%x, 0x%x = %s, 0x%x) => 1\n", inst,
- classname, classname, wndclass);
+ classname, classname, wndclass);
return 1;
}
{
int tid = pthread_self();
dbgprintf("GetWindowThreadProcessId(0x%x, 0x%x) => %d\n",
- win, pid_data, tid);
+ win, pid_data, tid);
if (pid_data)
- *(int*)pid_data = tid;
+ *(int*)pid_data = tid;
return tid;
}
{
printf("CreateWindowEx() called\n");
dbgprintf("CreateWindowEx(%d, 0x%x = %s, 0x%x = %s, %d, %d, %d, %d, %d, 0x%x, 0x%x, 0x%x, 0x%x) => 1\n",
- exstyle, classname, classname, winname, winname, style, x, y, w, h,
- parent, menu, inst, param);
+ exstyle, classname, classname, winname, winname, style, x, y, w, h,
+ parent, menu, inst, param);
printf("CreateWindowEx() called okey\n");
return 1;
}
tc = ((t.tv_sec * 1000) + (t.tv_usec / 1000)) - tcstart;
if (tcstart == 0)
{
- tcstart = 0;
+ tcstart = 0;
tc = 0;
}
dbgprintf("GetTickCount() => %d\n", tc);
/* tried to get pvmjpg work in a different way - no success */
static int WINAPI expDrawTextA(int hDC, char* lpString, int nCount,
- LPRECT lpRect, unsigned int uFormat)
+ LPRECT lpRect, unsigned int uFormat)
{
dbgprintf("expDrawTextA(%p,...) => 8\n", hDC);
return 8;
}
static int WINAPI expGetPrivateProfileIntA(const char* appname,
- const char* keyname,
- int default_value,
- const char* filename)
+ const char* keyname,
+ int default_value,
+ const char* filename)
{
int size=255;
char buffer[256];
buffer[255]=0;
if(!(appname && keyname && filename) )
{
- dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value );
- return default_value;
+ dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value );
+ return default_value;
}
fullname=(char*)malloc(50+strlen(appname)+strlen(keyname)+strlen(filename));
strcpy(fullname, "Software\\IniFileMapping\\");
strcat(fullname, filename);
result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)buffer, &size);
if((size>=0)&&(size<256))
- buffer[size]=0;
+ buffer[size]=0;
// printf("GetPrivateProfileIntA(%s, %s, %s) -> %s\n", appname, keyname, filename, buffer);
free(fullname);
if(result)
- result=default_value;
+ result=default_value;
else
- result=atoi(buffer);
+ result=atoi(buffer);
dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, result);
return result;
}
static int WINAPI expGetProfileIntA(const char* appname,
- const char* keyname,
- int default_value)
+ const char* keyname,
+ int default_value)
{
dbgprintf("GetProfileIntA -> ");
return expGetPrivateProfileIntA(appname, keyname, default_value, "default");
}
static int WINAPI expGetPrivateProfileStringA(const char* appname,
- const char* keyname,
- const char* def_val,
- char* dest, unsigned int len,
- const char* filename)
+ const char* keyname,
+ const char* def_val,
+ char* dest, unsigned int len,
+ const char* filename)
{
int result;
int size;
free(fullname);
if(result)
{
- strncpy(dest, def_val, size);
- if (strlen(def_val)< size) size = strlen(def_val);
+ strncpy(dest, def_val, size);
+ if (strlen(def_val)< size) size = strlen(def_val);
}
dbgprintf(" => %d ( '%s' )\n", size, dest);
return size;
}
static int WINAPI expWritePrivateProfileStringA(const char* appname,
- const char* keyname,
- const char* string,
- const char* filename)
+ const char* keyname,
+ const char* string,
+ const char* filename)
{
int size=256;
char* fullname;
dbgprintf("WritePrivateProfileStringA('%s', '%s', '%s', '%s')", appname, keyname, string, filename );
if(!(appname && keyname && filename) )
{
- dbgprintf(" => -1\n");
- return -1;
+ dbgprintf(" => -1\n");
+ return -1;
}
fullname=(char*)malloc(50+strlen(appname)+strlen(keyname)+strlen(filename));
strcpy(fullname, "Software\\IniFileMapping\\");
return expGetPrivateProfileIntA(appname, keyname, default_value, filename);
}
int _GetPrivateProfileStringA(const char* appname, const char* keyname,
- const char* def_val, char* dest, unsigned int len, const char* filename)
+ const char* def_val, char* dest, unsigned int len, const char* filename)
{
return expGetPrivateProfileStringA(appname, keyname, def_val, dest, len, filename);
}
int _WritePrivateProfileStringA(const char* appname, const char* keyname,
- const char* string, const char* filename)
+ const char* string, const char* filename)
{
return expWritePrivateProfileStringA(appname, keyname, string, filename);
}
static int WINAPI expStringFromGUID2(GUID* guid, char* str, int cbMax)
{
int result=snprintf(str, cbMax, "%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x",
- guid->f1, guid->f2, guid->f3,
- (unsigned char)guid->f4[0], (unsigned char)guid->f4[1],
- (unsigned char)guid->f4[2], (unsigned char)guid->f4[3],
- (unsigned char)guid->f4[4], (unsigned char)guid->f4[5],
- (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]);
+ guid->f1, guid->f2, guid->f3,
+ (unsigned char)guid->f4[0], (unsigned char)guid->f4[1],
+ (unsigned char)guid->f4[2], (unsigned char)guid->f4[3],
+ (unsigned char)guid->f4[4], (unsigned char)guid->f4[5],
+ (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]);
dbgprintf("StringFromGUID2(0x%x, 0x%x='%s', %d) => %d\n", guid, str, str, cbMax, result);
return result;
}
{
long ret;
__asm__ __volatile__
- (
- "lock; xaddl %0,(%1)"
- : "=r" (ret)
- : "r" (dest), "0" (incr)
- : "memory"
- );
+ (
+ "lock; xaddl %0,(%1)"
+ : "=r" (ret)
+ : "r" (dest), "0" (incr)
+ : "memory"
+ );
return ret;
}
{
unsigned long retval = *dest;
if(*dest == comperand)
- *dest = exchange;
+ *dest = exchange;
return retval;
}
{
dbgprintf("ShowCursor(%d) => %d\n", show, show);
if (show)
- show_cursor++;
+ show_cursor++;
else
- show_cursor--;
+ show_cursor--;
return show_cursor;
}
#endif
return 0;
}
#ifdef QTX
-#define SM_CXSCREEN 0
-#define SM_CYSCREEN 1
-#define SM_XVIRTUALSCREEN 76
-#define SM_YVIRTUALSCREEN 77
-#define SM_CXVIRTUALSCREEN 78
-#define SM_CYVIRTUALSCREEN 79
-#define SM_CMONITORS 80
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
#endif
static int WINAPI expGetSystemMetrics(int index)
{
#ifdef QTX
switch(index)
{
- case SM_XVIRTUALSCREEN:
- case SM_YVIRTUALSCREEN:
- return 0;
- case SM_CXSCREEN:
- case SM_CXVIRTUALSCREEN:
- return PSEUDO_SCREEN_WIDTH;
- case SM_CYSCREEN:
- case SM_CYVIRTUALSCREEN:
- return PSEUDO_SCREEN_HEIGHT;
- case SM_CMONITORS:
- return 1;
+ case SM_XVIRTUALSCREEN:
+ case SM_YVIRTUALSCREEN:
+ return 0;
+ case SM_CXSCREEN:
+ case SM_CXVIRTUALSCREEN:
+ return PSEUDO_SCREEN_WIDTH;
+ case SM_CYSCREEN:
+ case SM_CYVIRTUALSCREEN:
+ return PSEUDO_SCREEN_HEIGHT;
+ case SM_CMONITORS:
+ return 1;
}
#endif
return 1;
static int WINAPI expGetSystemPaletteEntries(int hdc, int iStartIndex, int nEntries, void* lppe)
{
dbgprintf("GetSystemPaletteEntries(0x%x, 0x%x, 0x%x, 0x%x) => 0\n",
- hdc, iStartIndex, nEntries, lppe);
+ hdc, iStartIndex, nEntries, lppe);
return 0;
}
systime->wSecond = local_tm->tm_sec;
systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n"
- " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n"
- " Milliseconds: %d\n",
- systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay,
- systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds);
+ " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n"
+ " Milliseconds: %d\n",
+ systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay,
+ systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds);
}
static int WINAPI expGetSystemTime(SYSTEMTIME* systime)
systime->wSecond = local_tm->tm_sec;
systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n"
- " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n"
- " Milliseconds: %d\n",
- systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay,
- systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds);
+ " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n"
+ " Milliseconds: %d\n",
+ systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay,
+ systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds);
return 0;
}
if (p) strncpy(field,p,size);
*/
if (strcmp(name,"__MSVCRT_HEAP_SELECT")==0)
- strcpy(field,"__GLOBAL_HEAP_SELECTED,1");
+ strcpy(field,"__GLOBAL_HEAP_SELECTED,1");
dbgprintf("GetEnvironmentVariableA(0x%x='%s', 0x%x, %d) => %d\n", name, name, field, size, strlen(field));
return strlen(field);
}
int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs)
{
if(!clsid || !gcs)
- return -1;
+ return -1;
com_object_table=realloc(com_object_table, sizeof(struct COM_OBJECT_INFO)*(++com_object_size));
com_object_table[com_object_size-1].clsid=*clsid;
com_object_table[com_object_size-1].GetClassObject=gcs;
int found = 0;
int i = 0;
if(!clsid || !gcs)
- return -1;
+ return -1;
if (com_object_table == 0)
- printf("Warning: UnregisterComClass() called without any registered class\n");
+ printf("Warning: UnregisterComClass() called without any registered class\n");
while (i < com_object_size)
{
- if (found && i > 0)
- {
- memcpy(&com_object_table[i - 1].clsid,
- &com_object_table[i].clsid, sizeof(GUID));
- com_object_table[i - 1].GetClassObject =
- com_object_table[i].GetClassObject;
- }
- else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0
- && com_object_table[i].GetClassObject == gcs)
- {
- found++;
- }
- i++;
+ if (found && i > 0)
+ {
+ memcpy(&com_object_table[i - 1].clsid,
+ &com_object_table[i].clsid, sizeof(GUID));
+ com_object_table[i - 1].GetClassObject =
+ com_object_table[i].GetClassObject;
+ }
+ else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0
+ && com_object_table[i].GetClassObject == gcs)
+ {
+ found++;
+ }
+ i++;
}
if (found)
{
- if (--com_object_size == 0)
- {
- free(com_object_table);
- com_object_table = 0;
- }
+ if (--com_object_size == 0)
+ {
+ free(com_object_table);
+ com_object_table = 0;
+ }
}
return 0;
}
};
static long WINAPI expCoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter,
- long dwClsContext, const GUID* riid, void** ppv)
+ long dwClsContext, const GUID* riid, void** ppv)
{
int i;
struct COM_OBJECT_INFO* ci=0;
for(i=0; i<com_object_size; i++)
- if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID)))
- ci=&com_object_table[i];
+ if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID)))
+ ci=&com_object_table[i];
if(!ci)return REGDB_E_CLASSNOTREG;
// in 'real' world we should mess with IClassFactory here
i=ci->GetClassObject(rclsid, riid, ppv);
}
long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter,
- long dwClsContext, const GUID* riid, void** ppv)
+ long dwClsContext, const GUID* riid, void** ppv)
{
return expCoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv);
}
//trapbug();
if (lprc)
{
- w = lprc->right - lprc->left;
- h = lprc->bottom - lprc->top;
- if (w <= 0 || h <= 0)
- r = 1;
+ w = lprc->right - lprc->left;
+ h = lprc->bottom - lprc->top;
+ if (w <= 0 || h <= 0)
+ r = 1;
}
else
- r = 1;
+ r = 1;
dbgprintf("IsRectEmpty(%p) => %s\n", lprc, (r) ? "TRUE" : "FALSE");
//printf("Rect: left: %d, top: %d, right: %d, bottom: %d\n", lprc->left, lprc->top, lprc->right, lprc->bottom);
-// return 0; // wmv9?
+// return 0; // wmv9?
return r; // TM20
}
dbgprintf("GetTempPathA(%d, 0x%x)", len, path);
if(len<5)
{
- dbgprintf(" => 0\n");
- return 0;
+ dbgprintf(" => 0\n");
+ return 0;
}
strcpy(path, "/tmp");
dbgprintf(" => 5 ( '/tmp' )\n");
#ifdef QTX
dbgprintf("FindNextFileA(0x%x, 0x%x) => 0\n", h, lpfd);
if(h==FILE_HANDLE_quicktimeqtx){
- struct dirent* d;
- if(!qtx_dir) return 0;
- while((d=readdir(qtx_dir))){
- char* x=strrchr(d->d_name,'.');
- if(!x) continue;
- if(strcmp(x,".qtx")) continue;
- strcpy(lpfd->cFileName,d->d_name);
-// sprintf(lpfd->cAlternateFileName,"%-8s.qtx",d->d_name);
- strcpy(lpfd->cAlternateFileName,"foobar.qtx");
- printf("### FindNext: %s\n",lpfd->cFileName);
- return 1;
- }
- closedir(qtx_dir); qtx_dir=NULL;
- return 0;
+ struct dirent* d;
+ if(!qtx_dir) return 0;
+ while((d=readdir(qtx_dir))){
+ char* x=strrchr(d->d_name,'.');
+ if(!x) continue;
+ if(strcmp(x,".qtx")) continue;
+ strcpy(lpfd->cFileName,d->d_name);
+// sprintf(lpfd->cAlternateFileName,"%-8s.qtx",d->d_name);
+ strcpy(lpfd->cAlternateFileName,"foobar.qtx");
+ printf("### FindNext: %s\n",lpfd->cFileName);
+ return 1;
+ }
+ closedir(qtx_dir); qtx_dir=NULL;
+ return 0;
}
#endif
return 0;
// printf("\n### FindFirstFileA('%s')...\n",s);
#ifdef QTX
if(strstr(s, "quicktime\\*.QTX")){
- dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd);
- printf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path);
- qtx_dir=opendir(def_path);
- if(!qtx_dir) return (HANDLE)-1;
- memset(lpfd,0,sizeof(*lpfd));
- if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd))
- return FILE_HANDLE_quicktimeqtx;
- printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n",def_path);
- return (HANDLE)-1;
+ dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd);
+ printf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path);
+ qtx_dir=opendir(def_path);
+ if(!qtx_dir) return (HANDLE)-1;
+ memset(lpfd,0,sizeof(*lpfd));
+ if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd))
+ return FILE_HANDLE_quicktimeqtx;
+ printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n",def_path);
+ return (HANDLE)-1;
}
#if 0
if(strstr(s, "QuickTime.qts")){
- dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTS\n", s, s, lpfd);
-// if(!strcmp(s,"C:\\windows\\QuickTime.qts\\QuickTime.qts\\*.QTX"))
-// return (HANDLE)-1;
- strcpy(lpfd->cFileName, "QuickTime.qts");
- strcpy(lpfd->cAlternateFileName, "QuickT~1.qts");
- return FILE_HANDLE_quicktimeqts;
+ dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTS\n", s, s, lpfd);
+// if(!strcmp(s,"C:\\windows\\QuickTime.qts\\QuickTime.qts\\*.QTX"))
+// return (HANDLE)-1;
+ strcpy(lpfd->cFileName, "QuickTime.qts");
+ strcpy(lpfd->cAlternateFileName, "QuickT~1.qts");
+ return FILE_HANDLE_quicktimeqts;
}
#endif
#endif
if(strstr(s, "*.vwp")){
- // hack for VoxWare codec plugins:
- strcpy(lpfd->cFileName, "msms001.vwp");
- strcpy(lpfd->cAlternateFileName, "msms001.vwp");
- return (HANDLE)0;
+ // hack for VoxWare codec plugins:
+ strcpy(lpfd->cFileName, "msms001.vwp");
+ strcpy(lpfd->cAlternateFileName, "msms001.vwp");
+ return (HANDLE)0;
}
// return 'file not found'
return (HANDLE)-1;
dbgprintf("FindClose(0x%x) => 0\n", h);
#ifdef QTX
// if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){
-// closedir(qtx_dir);
-// qtx_dir=NULL;
+// closedir(qtx_dir);
+// qtx_dir=NULL;
// }
#endif
return 0;
dbgprintf("SetCurrentDirectoryA(0x%x = %s) => 1\n", pathname, pathname);
#if 0
if (strrchr(pathname, '\\'))
- chdir(strcat(strrchr(pathname, '\\')+1, '/'));
+ chdir(strcat(strrchr(pathname, '\\')+1, '/'));
else
- chdir(pathname);
+ chdir(pathname);
#endif
return 1;
}
static int WINAPI expCreateDirectoryA(const char *pathname, void *sa)
{
dbgprintf("CreateDirectory(0x%x = %s, 0x%x) => 1\n",
- pathname, pathname, sa);
+ pathname, pathname, sa);
#if 0
p = strrchr(pathname, '\\')+1;
strcpy(&buf[0], p); /* should be strncpy */
if (!strlen(p))
{
- buf[0] = '.';
- buf[1] = 0;
+ buf[0] = '.';
+ buf[1] = 0;
}
-#if 0
+#if 0
if (strrchr(pathname, '\\'))
- mkdir(strcat(strrchr(pathname, '\\')+1, '/'), 666);
+ mkdir(strcat(strrchr(pathname, '\\')+1, '/'), 666);
else
- mkdir(pathname, 666);
+ mkdir(pathname, 666);
#endif
mkdir(&buf);
#endif
dbgprintf("GetTempFileNameA(0x%x='%s', 0x%x='%s', %d, 0x%x)", cs1, cs1, cs2, cs2, i, ps);
if(i && i<10)
{
- dbgprintf(" => -1\n");
- return -1;
+ dbgprintf(" => -1\n");
+ return -1;
}
result=mkstemp(mask);
sprintf(ps, "AP%d", result);
// DLL will close opened file with CloseHandle().
//
static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2,
- LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5)
+ LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5)
{
dbgprintf("CreateFileA(0x%x='%s', %d, %d, 0x%x, %d, %d, 0x%x)\n", cs1, cs1, i1,
- i2, p1, i3, i4, i5);
+ i2, p1, i3, i4, i5);
if((!cs1) || (strlen(cs1)<2))return -1;
#ifdef QTX
if(strstr(cs1, "QuickTime.qts"))
{
- int result;
- char* tmp=(char*)malloc(strlen(def_path)+50);
- strcpy(tmp, def_path);
- strcat(tmp, "/");
- strcat(tmp, "QuickTime.qts");
- result=open(tmp, O_RDONLY);
- free(tmp);
- return result;
+ int result;
+ char* tmp=(char*)malloc(strlen(def_path)+50);
+ strcpy(tmp, def_path);
+ strcat(tmp, "/");
+ strcat(tmp, "QuickTime.qts");
+ result=open(tmp, O_RDONLY);
+ free(tmp);
+ return result;
}
if(strstr(cs1, ".qtx"))
{
- int result;
- char* tmp=(char*)malloc(strlen(def_path)+250);
- char* x=strrchr(cs1,'\\');
- sprintf(tmp,"%s/%s",def_path,x?(x+1):cs1);
-// printf("### Open: %s -> %s\n",cs1,tmp);
- result=open(tmp, O_RDONLY);
- free(tmp);
- return result;
+ int result;
+ char* tmp=(char*)malloc(strlen(def_path)+250);
+ char* x=strrchr(cs1,'\\');
+ sprintf(tmp,"%s/%s",def_path,x?(x+1):cs1);
+// printf("### Open: %s -> %s\n",cs1,tmp);
+ result=open(tmp, O_RDONLY);
+ free(tmp);
+ return result;
}
#endif
if(strncmp(cs1, "AP", 2) == 0)
{
- int result;
- char* tmp=(char*)malloc(strlen(def_path)+50);
- strcpy(tmp, def_path);
- strcat(tmp, "/");
- strcat(tmp, "APmpg4v1.apl");
- result=open(tmp, O_RDONLY);
- free(tmp);
- return result;
+ int result;
+ char* tmp=(char*)malloc(strlen(def_path)+50);
+ strcpy(tmp, def_path);
+ strcat(tmp, "/");
+ strcat(tmp, "APmpg4v1.apl");
+ result=open(tmp, O_RDONLY);
+ free(tmp);
+ return result;
}
if (strstr(cs1, "vp3"))
{
- int r;
- int flg = 0;
- char* tmp=(char*)malloc(20 + strlen(cs1));
- strcpy(tmp, "/tmp/");
- strcat(tmp, cs1);
- r = 4;
- while (tmp[r])
- {
- if (tmp[r] == ':' || tmp[r] == '\\')
- tmp[r] = '_';
- r++;
- }
- if (GENERIC_READ & i1)
- flg |= O_RDONLY;
- else if (GENERIC_WRITE & i1)
- {
- flg |= O_WRONLY;
- printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg);
- }
- r=open(tmp, flg);
- free(tmp);
- return r;
+ int r;
+ int flg = 0;
+ char* tmp=(char*)malloc(20 + strlen(cs1));
+ strcpy(tmp, "/tmp/");
+ strcat(tmp, cs1);
+ r = 4;
+ while (tmp[r])
+ {
+ if (tmp[r] == ':' || tmp[r] == '\\')
+ tmp[r] = '_';
+ r++;
+ }
+ if (GENERIC_READ & i1)
+ flg |= O_RDONLY;
+ else if (GENERIC_WRITE & i1)
+ {
+ flg |= O_WRONLY;
+ printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg);
+ }
+ r=open(tmp, flg);
+ free(tmp);
+ return r;
}
// Needed by wnvplay1.dll
if (strstr(cs1, "WINNOV.bmp"))
{
- int r;
- r=open("/dev/null", 0);
- return r;
+ int r;
+ r=open("/dev/null", 0);
+ return r;
}
#if 0
/* we need this for some virtualdub filters */
{
- int r;
- int flg = 0;
- if (GENERIC_READ & i1)
- flg |= O_RDONLY;
- else if (GENERIC_WRITE & i1)
- {
- flg |= O_WRONLY;
- printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", cs1, r, flg);
- }
- r=open(cs1, flg);
- return r;
+ int r;
+ int flg = 0;
+ if (GENERIC_READ & i1)
+ flg |= O_RDONLY;
+ else if (GENERIC_WRITE & i1)
+ {
+ flg |= O_WRONLY;
+ printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", cs1, r, flg);
+ }
+ r=open(cs1, flg);
+ return r;
}
#endif
*/
static DWORD WINAPI expGetFullPathNameA
(
- LPCTSTR lpFileName,
- DWORD nBufferLength,
- LPTSTR lpBuffer,
- LPTSTR lpFilePart
+ LPCTSTR lpFileName,
+ DWORD nBufferLength,
+ LPTSTR lpBuffer,
+ LPTSTR lpFilePart
){
if(!lpFileName) return 0;
dbgprintf("GetFullPathNameA('%s',%d,%p,%p)\n",lpFileName,nBufferLength,
- lpBuffer, lpFilePart);
+ lpBuffer, lpFilePart);
#if 0
#ifdef QTX
strcpy(lpFilePart, "Quick123.qts");
#endif
#else
if (strrchr(lpFileName, '\\'))
- lpFilePart = strrchr(lpFileName, '\\');
+ lpFilePart = strrchr(lpFileName, '\\');
else
- lpFilePart = (LPTSTR)lpFileName;
+ lpFilePart = (LPTSTR)lpFileName;
#endif
strcpy(lpBuffer, lpFileName);
// strncpy(lpBuffer, lpFileName, rindex(lpFileName, '\\')-lpFileName);
switch(whence)
{
case FILE_BEGIN:
- wh=SEEK_SET;break;
+ wh=SEEK_SET;break;
case FILE_END:
- wh=SEEK_END;break;
+ wh=SEEK_END;break;
case FILE_CURRENT:
- wh=SEEK_CUR;break;
+ wh=SEEK_CUR;break;
default:
- return -1;
+ return -1;
}
#ifdef QTX
if (val == 0 && ext != 0)
- val = val&(*ext);
+ val = val&(*ext);
#endif
return lseek(h, val, wh);
}
static HDRVR WINAPI expOpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName,
- LPARAM lParam2)
+ LPARAM lParam2)
{
dbgprintf("OpenDriverA(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2);
return -1;
}
static HDRVR WINAPI expOpenDriver(LPCSTR szDriverName, LPCSTR szSectionName,
- LPARAM lParam2)
+ LPARAM lParam2)
{
dbgprintf("OpenDriver(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2);
return -1;
static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess,
- LPDWORD lpProcessAffinityMask,
- LPDWORD lpSystemAffinityMask)
+ LPDWORD lpProcessAffinityMask,
+ LPDWORD lpSystemAffinityMask)
{
dbgprintf("GetProcessAffinityMask(0x%x, 0x%x, 0x%x) => 1\n",
- hProcess, lpProcessAffinityMask, lpSystemAffinityMask);
+ hProcess, lpProcessAffinityMask, lpSystemAffinityMask);
if(lpProcessAffinityMask)*lpProcessAffinityMask=1;
if(lpSystemAffinityMask)*lpSystemAffinityMask=1;
return 1;
{
int result;
if (strlen(str2)>len)
- result = (int) strncpy(str1, str2,len);
+ result = (int) strncpy(str1, str2,len);
else
- result = (int) strcpy(str1,str2);
+ result = (int) strcpy(str1,str2);
dbgprintf("strncpy(0x%x, 0x%x='%s' len %d strlen %d) => %x\n", str1, str2, str2,len, strlen(str2),result);
return result;
}
#ifdef QTX
/* needed by QuickTime.qts */
static HWND WINAPI expCreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy,
- HWND parent, INT id, HINSTANCE inst,
+ HWND parent, INT id, HINSTANCE inst,
HWND buddy, INT maxVal, INT minVal, INT curVal)
{
dbgprintf("CreateUpDownControl(...)\n");
static HRESULT WINAPI expCoCreateFreeThreadedMarshaler(void *pUnkOuter, void **ppUnkInner)
{
dbgprintf("CoCreateFreeThreadedMarshaler(%p, %p) called!\n",
- pUnkOuter, ppUnkInner);
+ pUnkOuter, ppUnkInner);
// return 0;
return ERROR_CALL_NOT_IMPLEMENTED;
}
static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to source process
- HANDLE hSourceHandle, // handle to duplicate
- HANDLE hTargetProcessHandle, // handle to target process
- HANDLE* lpTargetHandle, // duplicate handle
- DWORD dwDesiredAccess, // requested access
- int bInheritHandle, // handle inheritance option
- DWORD dwOptions // optional actions
- )
+ HANDLE hSourceHandle, // handle to duplicate
+ HANDLE hTargetProcessHandle, // handle to target process
+ HANDLE* lpTargetHandle, // duplicate handle
+ DWORD dwDesiredAccess, // requested access
+ int bInheritHandle, // handle inheritance option
+ DWORD dwOptions // optional actions
+ )
{
dbgprintf("DuplicateHandle(%p, %p, %p, %p, 0x%x, %d, %d) called\n",
- hSourceProcessHandle, hSourceHandle, hTargetProcessHandle,
- lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions);
+ hSourceProcessHandle, hSourceHandle, hTargetProcessHandle,
+ lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions);
*lpTargetHandle = hSourceHandle;
return 1;
}
// required by PIM1 codec (used by win98 PCTV Studio capture sw)
static HRESULT WINAPI expCoInitialize(
- LPVOID lpReserved /* [in] pointer to win32 malloc interface
- (obsolete, should be NULL) */
- )
+ LPVOID lpReserved /* [in] pointer to win32 malloc interface
+ (obsolete, should be NULL) */
+ )
{
/*
* Just delegate to the newer method.
void* result=my_mreq(size,0);
dbgprintf("malloc(0x%x) => 0x%x\n", size,result);
if(result==0)
- printf("WARNING: malloc() failed\n");
+ printf("WARNING: malloc() failed\n");
return result;
}
static void expfree(void* mem)
void* result=my_mreq(num*size,1);
dbgprintf("calloc(%d,%d) => %p\n", num,size,result);
if(result==0)
- printf("WARNING: calloc() failed\n");
+ printf("WARNING: calloc() failed\n");
return result;
}
static void* expnew(int size)
result=my_mreq(size,0);
dbgprintf("new(%d) => %p\n", size, result);
if (result==0)
- printf("WARNING: new() failed\n");
+ printf("WARNING: new() failed\n");
return result;
}
typedef struct __attribute__((__packed__))
{
char hay[0x40];
- unsigned long cbFormat; //0x40
- char* pbFormat; //0x44
+ unsigned long cbFormat; //0x40
+ char* pbFormat; //0x44
} MY_MEDIA_TYPE;
static HRESULT WINAPI expMoCopyMediaType(MY_MEDIA_TYPE* dest, const MY_MEDIA_TYPE* src)
{
if (!dest || !src)
- return E_POINTER;
+ return E_POINTER;
memcpy(dest, src, sizeof(MY_MEDIA_TYPE));
if (dest->cbFormat)
{
- dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0);
- if (!dest->pbFormat)
+ dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0);
+ if (!dest->pbFormat)
return E_OUTOFMEMORY;
- memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat);
+ memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat);
}
return S_OK;
}
memset(dest, 0, sizeof(MY_MEDIA_TYPE));
if (cbFormat)
{
- dest->pbFormat = (char*) my_mreq(cbFormat, 0);
- if (!dest->pbFormat)
+ dest->pbFormat = (char*) my_mreq(cbFormat, 0);
+ if (!dest->pbFormat)
return E_OUTOFMEMORY;
}
return S_OK;
static HRESULT WINAPI expMoCreateMediaType(MY_MEDIA_TYPE** dest, DWORD cbFormat)
{
if (!dest)
- return E_POINTER;
+ return E_POINTER;
*dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0);
return expMoInitMediaType(*dest, cbFormat);
}
static HRESULT WINAPI expMoDuplicateMediaType(MY_MEDIA_TYPE** dest, const void* src)
{
if (!dest)
- return E_POINTER;
+ return E_POINTER;
*dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0);
return expMoCopyMediaType(*dest, src);
}
static HRESULT WINAPI expMoFreeMediaType(MY_MEDIA_TYPE* dest)
{
if (!dest)
- return E_POINTER;
+ return E_POINTER;
if (dest->pbFormat)
{
- my_release(dest->pbFormat);
- dest->pbFormat = 0;
+ my_release(dest->pbFormat);
+ dest->pbFormat = 0;
dest->cbFormat = 0;
}
return S_OK;
static HRESULT WINAPI expMoDeleteMediaType(MY_MEDIA_TYPE* dest)
{
if (!dest)
- return E_POINTER;
+ return E_POINTER;
expMoFreeMediaType(dest);
my_release(dest);
return S_OK;
dbgprintf("_initterm(0x%x, 0x%x) %p\n", start, end, *start);
while (start < end)
{
- if (*start)
- {
- //printf("call _initfunc: from: %p %d\n", *start);
- // ok this trick with push/pop is necessary as otherwice
- // edi/esi registers are being trashed
- void* p = *start;
- __asm__ __volatile__
- (
- "pushl %%ebx \n\t"
- "pushl %%ecx \n\t"
- "pushl %%edx \n\t"
- "pushl %%edi \n\t"
- "pushl %%esi \n\t"
- "call *%%eax \n\t"
- "popl %%esi \n\t"
- "popl %%edi \n\t"
- "popl %%edx \n\t"
- "popl %%ecx \n\t"
- "popl %%ebx \n\t"
- :
- : "a"(p)
- : "memory"
- );
+ if (*start)
+ {
+ //printf("call _initfunc: from: %p %d\n", *start);
+ // ok this trick with push/pop is necessary as otherwice
+ // edi/esi registers are being trashed
+ void* p = *start;
+ __asm__ __volatile__
+ (
+ "pushl %%ebx \n\t"
+ "pushl %%ecx \n\t"
+ "pushl %%edx \n\t"
+ "pushl %%edi \n\t"
+ "pushl %%esi \n\t"
+ "call *%%eax \n\t"
+ "popl %%esi \n\t"
+ "popl %%edi \n\t"
+ "popl %%edx \n\t"
+ "popl %%ecx \n\t"
+ "popl %%ebx \n\t"
+ :
+ : "a"(p)
+ : "memory"
+ );
//printf("done %p %d:%d\n", end);
- }
- start++;
+ }
+ start++;
}
return 0;
}
{
WCHAR* p = dst;
while ((*p++ = *src++))
- ;
+ ;
return dst;
}
{
char* result=strrchr(string, value);
if(result)
- dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result);
+ dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result);
else
- dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value);
+ dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value);
return result;
}
{
char* result=strchr(string, value);
if(result)
- dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result);
+ dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result);
else
- dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value);
+ dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value);
return result;
}
static int expstrlen(char* str)
int l = strlen(str1);
char* result = (char*) my_mreq(l + 1,0);
if (result)
- strcpy(result, str1);
+ strcpy(result, str1);
dbgprintf("_strdup(0x%x='%s') => %p\n", str1, str1, result);
return result;
}
static void explog10(void)
{
__asm__ __volatile__
- (
- "fldl 8(%esp) \n\t"
- "fldln2 \n\t"
- "fxch %st(1) \n\t"
- "fyl2x \n\t"
- );
+ (
+ "fldl 8(%esp) \n\t"
+ "fldln2 \n\t"
+ "fxch %st(1) \n\t"
+ "fyl2x \n\t"
+ );
}
static void expcos(void)
{
__asm__ __volatile__
- (
- "fldl 8(%esp) \n\t"
- "fcos \n\t"
- );
+ (
+ "fldl 8(%esp) \n\t"
+ "fcos \n\t"
+ );
}
#endif
static void exp_ftol(void)
{
__asm__ __volatile__
- (
- "sub $12, %esp \n\t"
- "fstcw -2(%ebp) \n\t"
- "wait \n\t"
- "movw -2(%ebp), %ax \n\t"
- "orb $0x0C, %ah \n\t"
- "movw %ax, -4(%ebp) \n\t"
- "fldcw -4(%ebp) \n\t"
- "fistpl -12(%ebp) \n\t"
- "fldcw -2(%ebp) \n\t"
- "movl -12(%ebp), %eax \n\t"
- //Note: gcc 3.03 does not do the following op if it
- // knows that ebp=esp
- "movl %ebp, %esp \n\t"
- );
+ (
+ "sub $12, %esp \n\t"
+ "fstcw -2(%ebp) \n\t"
+ "wait \n\t"
+ "movw -2(%ebp), %ax \n\t"
+ "orb $0x0C, %ah \n\t"
+ "movw %ax, -4(%ebp) \n\t"
+ "fldcw -4(%ebp) \n\t"
+ "fistpl -12(%ebp) \n\t"
+ "fldcw -2(%ebp) \n\t"
+ "movl -12(%ebp), %eax \n\t"
+ //Note: gcc 3.03 does not do the following op if it
+ // knows that ebp=esp
+ "movl %ebp, %esp \n\t"
+ );
}
#define FPU_DOUBLES(var1,var2) double var1,var2; \
//dbgprintf("!!!!UNIMPLEMENTED: setjmp3(%p, %d) => 0\n", jmpbuf, x);
//return 0;
__asm__ __volatile__
- (
- //"mov 4(%%esp), %%edx \n\t"
- "mov (%%esp), %%eax \n\t"
- "mov %%eax, (%%edx) \n\t" // store ebp
-
- //"mov %%ebp, (%%edx) \n\t"
- "mov %%ebx, 4(%%edx) \n\t"
- "mov %%edi, 8(%%edx) \n\t"
- "mov %%esi, 12(%%edx) \n\t"
- "mov %%esp, 16(%%edx) \n\t"
-
- "mov 4(%%esp), %%eax \n\t"
- "mov %%eax, 20(%%edx) \n\t"
-
- "movl $0x56433230, 32(%%edx) \n\t" // VC20 ??
- "movl $0, 36(%%edx) \n\t"
- : // output
- : "d"(jmpbuf) // input
- : "eax"
- );
+ (
+ //"mov 4(%%esp), %%edx \n\t"
+ "mov (%%esp), %%eax \n\t"
+ "mov %%eax, (%%edx) \n\t" // store ebp
+
+ //"mov %%ebp, (%%edx) \n\t"
+ "mov %%ebx, 4(%%edx) \n\t"
+ "mov %%edi, 8(%%edx) \n\t"
+ "mov %%esi, 12(%%edx) \n\t"
+ "mov %%esp, 16(%%edx) \n\t"
+
+ "mov 4(%%esp), %%eax \n\t"
+ "mov %%eax, 20(%%edx) \n\t"
+
+ "movl $0x56433230, 32(%%edx) \n\t" // VC20 ??
+ "movl $0, 36(%%edx) \n\t"
+ : // output
+ : "d"(jmpbuf) // input
+ : "eax"
+ );
#if 1
__asm__ __volatile__
- (
- "mov %%fs:0, %%eax \n\t" // unsure
- "mov %%eax, 24(%%edx) \n\t"
- "cmp $0xffffffff, %%eax \n\t"
- "jnz l1 \n\t"
- "mov %%eax, 28(%%edx) \n\t"
- "l1: \n\t"
- :
- :
- : "eax"
- );
+ (
+ "mov %%fs:0, %%eax \n\t" // unsure
+ "mov %%eax, 24(%%edx) \n\t"
+ "cmp $0xffffffff, %%eax \n\t"
+ "jnz l1 \n\t"
+ "mov %%eax, 28(%%edx) \n\t"
+ "l1: \n\t"
+ :
+ :
+ : "eax"
+ );
#endif
- return 0;
+ return 0;
}
static DWORD WINAPI expGetCurrentProcessId(void)
typedef struct {
- UINT wPeriodMin;
- UINT wPeriodMax;
+ UINT wPeriodMin;
+ UINT wPeriodMax;
} TIMECAPS, *LPTIMECAPS;
static MMRESULT WINAPI exptimeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize)
static void WINAPI expGlobalMemoryStatus(
LPMEMORYSTATUS lpmem
) {
- static MEMORYSTATUS cached_memstatus;
+ static MEMORYSTATUS cached_memstatus;
static int cache_lastchecked = 0;
SYSTEM_INFO si;
FILE *f;
if (time(NULL)==cache_lastchecked) {
- memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS));
- return;
+ memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS));
+ return;
}
#if 1
lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0;
while (fgets( buffer, sizeof(buffer), f ))
{
- /* old style /proc/meminfo ... */
+ /* old style /proc/meminfo ... */
if (sscanf( buffer, "Mem: %d %d %d %d %d %d", &total, &used, &free, &shared, &buffers, &cached ))
{
lpmem->dwTotalPhys += total;
lpmem->dwAvailPageFile += free;
}
- /* new style /proc/meminfo ... */
- if (sscanf(buffer, "MemTotal: %d", &total))
- lpmem->dwTotalPhys = total*1024;
- if (sscanf(buffer, "MemFree: %d", &free))
- lpmem->dwAvailPhys = free*1024;
- if (sscanf(buffer, "SwapTotal: %d", &total))
- lpmem->dwTotalPageFile = total*1024;
- if (sscanf(buffer, "SwapFree: %d", &free))
- lpmem->dwAvailPageFile = free*1024;
- if (sscanf(buffer, "Buffers: %d", &buffers))
- lpmem->dwAvailPhys += buffers*1024;
- if (sscanf(buffer, "Cached: %d", &cached))
- lpmem->dwAvailPhys += cached*1024;
+ /* new style /proc/meminfo ... */
+ if (sscanf(buffer, "MemTotal: %d", &total))
+ lpmem->dwTotalPhys = total*1024;
+ if (sscanf(buffer, "MemFree: %d", &free))
+ lpmem->dwAvailPhys = free*1024;
+ if (sscanf(buffer, "SwapTotal: %d", &total))
+ lpmem->dwTotalPageFile = total*1024;
+ if (sscanf(buffer, "SwapFree: %d", &free))
+ lpmem->dwAvailPageFile = free*1024;
+ if (sscanf(buffer, "Buffers: %d", &buffers))
+ lpmem->dwAvailPhys += buffers*1024;
+ if (sscanf(buffer, "Cached: %d", &cached))
+ lpmem->dwAvailPhys += cached*1024;
}
fclose( f );
} else
#endif
{
- /* FIXME: should do something for other systems */
- lpmem->dwMemoryLoad = 0;
- lpmem->dwTotalPhys = 16*1024*1024;
- lpmem->dwAvailPhys = 16*1024*1024;
- lpmem->dwTotalPageFile = 16*1024*1024;
- lpmem->dwAvailPageFile = 16*1024*1024;
+ /* FIXME: should do something for other systems */
+ lpmem->dwMemoryLoad = 0;
+ lpmem->dwTotalPhys = 16*1024*1024;
+ lpmem->dwAvailPhys = 16*1024*1024;
+ lpmem->dwTotalPageFile = 16*1024*1024;
+ lpmem->dwAvailPageFile = 16*1024*1024;
}
expGetSystemInfo(&si);
lpmem->dwTotalVirtual = si.lpMaximumApplicationAddress-si.lpMinimumApplicationAddress;
printf("MSGBOX '%s' '%s' (%d)\n",text,title,type);
#ifdef QTX
if (type == MB_ICONHAND && !strlen(text) && !strlen(title))
- return IDIGNORE;
+ return IDIGNORE;
#endif
return IDOK;
}
}
#if 1
-typedef struct tagPALETTEENTRY {
- BYTE peRed;
- BYTE peGreen;
- BYTE peBlue;
- BYTE peFlags;
-} PALETTEENTRY;
+typedef struct tagPALETTEENTRY {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+} PALETTEENTRY;
/* reversed the first 2 entries */
-typedef struct tagLOGPALETTE {
- WORD palNumEntries;
- WORD palVersion;
- PALETTEENTRY palPalEntry[1];
-} LOGPALETTE;
+typedef struct tagLOGPALETTE {
+ WORD palNumEntries;
+ WORD palVersion;
+ PALETTEENTRY palPalEntry[1];
+} LOGPALETTE;
static HPALETTE WINAPI expCreatePalette(CONST LOGPALETTE *lpgpl)
{
HPALETTE test;
int i;
-
+
dbgprintf("CreatePalette(%x) => NULL\n", lpgpl);
i = sizeof(LOGPALETTE)+((lpgpl->palNumEntries-1)*sizeof(PALETTEENTRY));
}
#if 0
-typedef struct tagPOINT {
- LONG x;
- LONG y;
-} POINT, *PPOINT;
+typedef struct tagPOINT {
+ LONG x;
+ LONG y;
+} POINT, *PPOINT;
#endif
static int WINAPI expClientToScreen(HWND win, POINT *p)
HWND parent, void *dialog_func, void *init_param)
{
dbgprintf("DialogBoxParamA(0x%x, 0x%x = %s, 0x%x, 0x%x, 0x%x) => 0x42424242\n",
- inst, name, name, parent, dialog_func, init_param);
+ inst, name, name, parent, dialog_func, init_param);
return 0x42424242;
}
{
dbgprintf("realloc(0x%x, %x)\n", ptr, size);
if (!ptr)
- return my_mreq(size,0);
+ return my_mreq(size,0);
else
- return my_realloc(ptr, size);
+ return my_realloc(ptr, size);
}
/* Fake GetOpenFileNameA from comdlg32.dll for ViVD codec */
};
/* realplayer8:
- DLL Name: PNCRT.dll
- vma: Hint/Ord Member-Name
- 22ff4 615 free
- 2302e 250 _ftol
- 22fea 666 malloc
- 2303e 609 fprintf
- 2305e 167 _adjust_fdiv
- 23052 280 _initterm
-
- 22ffc 176 _beginthreadex
- 23036 284 _iob
- 2300e 85 __CxxFrameHandler
- 23022 411 _purecall
+ DLL Name: PNCRT.dll
+ vma: Hint/Ord Member-Name
+ 22ff4 615 free
+ 2302e 250 _ftol
+ 22fea 666 malloc
+ 2303e 609 fprintf
+ 2305e 167 _adjust_fdiv
+ 23052 280 _initterm
+
+ 22ffc 176 _beginthreadex
+ 23036 284 _iob
+ 2300e 85 __CxxFrameHandler
+ 23022 411 _purecall
*/
#ifdef REALPLAYER
struct exports exp_pncrt[]={
// cx address of printf function
#if 1
__asm__ __volatile__
- (
- "push %%edx \n\t"
- "movl $0xdeadbeef, %%eax \n\t"
- "movl $0xdeadbeef, %%edx \n\t"
- "shl $5, %%eax \n\t" // ax * 32
- "addl $0xdeadbeef, %%eax \n\t" // overwrite export_names
- "pushl %%eax \n\t"
- "pushl $0xdeadbeef \n\t" // overwrite called_unk
- "call *%%edx \n\t" // printf (via dx)
- "addl $8, %%esp \n\t"
- "xorl %%eax, %%eax \n\t"
- "pop %%edx \n\t"
- :
- :
- : "eax"
- );
+ (
+ "push %%edx \n\t"
+ "movl $0xdeadbeef, %%eax \n\t"
+ "movl $0xdeadbeef, %%edx \n\t"
+ "shl $5, %%eax \n\t" // ax * 32
+ "addl $0xdeadbeef, %%eax \n\t" // overwrite export_names
+ "pushl %%eax \n\t"
+ "pushl $0xdeadbeef \n\t" // overwrite called_unk
+ "call *%%edx \n\t" // printf (via dx)
+ "addl $8, %%esp \n\t"
+ "xorl %%eax, %%eax \n\t"
+ "pop %%edx \n\t"
+ :
+ :
+ : "eax"
+ );
#else
__asm__ __volatile__
- (
- "push %%edx \n\t"
- "movl $0, %%eax \n\t"
- "movl $0, %%edx \n\t"
- "shl $5, %%eax \n\t" // ax * 32
- "addl %0, %%eax \n\t"
- "pushl %%eax \n\t"
- "pushl %1 \n\t"
- "call *%%edx \n\t" // printf (via dx)
- "addl $8, %%esp \n\t"
- "xorl %%eax, %%eax \n\t"
- "pop %%edx \n\t"
- ::"m"(*export_names), "m"(*called_unk)
- : "memory", "edx", "eax"
- );
+ (
+ "push %%edx \n\t"
+ "movl $0, %%eax \n\t"
+ "movl $0, %%edx \n\t"
+ "shl $5, %%eax \n\t" // ax * 32
+ "addl %0, %%eax \n\t"
+ "pushl %%eax \n\t"
+ "pushl %1 \n\t"
+ "call *%%edx \n\t" // printf (via dx)
+ "addl $8, %%esp \n\t"
+ "xorl %%eax, %%eax \n\t"
+ "pop %%edx \n\t"
+ ::"m"(*export_names), "m"(*called_unk)
+ : "memory", "edx", "eax"
+ );
#endif
}
int i,j;
if(library==0)
{
- printf("ERROR: library=0\n");
- return (void*)ext_unknown;
+ printf("ERROR: library=0\n");
+ return (void*)ext_unknown;
}
// printf("%x %x\n", &unk_exp1, &unk_exp2);
for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++)
{
- if(strcasecmp(library, libraries[i].name))
- continue;
- for(j=0; j<libraries[i].length; j++)
- {
- if(ordinal!=libraries[i].exps[j].id)
- continue;
- //printf("Hit: 0x%p\n", libraries[i].exps[j].func);
- return libraries[i].exps[j].func;
- }
+ if(strcasecmp(library, libraries[i].name))
+ continue;
+ for(j=0; j<libraries[i].length; j++)
+ {
+ if(ordinal!=libraries[i].exps[j].id)
+ continue;
+ //printf("Hit: 0x%p\n", libraries[i].exps[j].func);
+ return libraries[i].exps[j].func;
+ }
}
#ifndef LOADLIB_TRY_NATIVE
#endif
/* ok, this is a hack, and a big memory leak. should be fixed. - alex */
{
- int hand;
- WINE_MODREF *wm;
- void *func;
-
- hand = LoadLibraryA(library);
- if (!hand)
- goto no_dll;
- wm = MODULE32_LookupHMODULE(hand);
- if (!wm)
- {
- FreeLibrary(hand);
- goto no_dll;
- }
- func = PE_FindExportedFunction(wm, (LPCSTR) ordinal, 0);
- if (!func)
- {
- printf("No such ordinal in external dll\n");
- FreeLibrary((int)hand);
- goto no_dll;
- }
-
- printf("External dll loaded (offset: 0x%x, func: %p)\n",
- hand, func);
- return func;
+ int hand;
+ WINE_MODREF *wm;
+ void *func;
+
+ hand = LoadLibraryA(library);
+ if (!hand)
+ goto no_dll;
+ wm = MODULE32_LookupHMODULE(hand);
+ if (!wm)
+ {
+ FreeLibrary(hand);
+ goto no_dll;
+ }
+ func = PE_FindExportedFunction(wm, (LPCSTR) ordinal, 0);
+ if (!func)
+ {
+ printf("No such ordinal in external dll\n");
+ FreeLibrary((int)hand);
+ goto no_dll;
+ }
+
+ printf("External dll loaded (offset: 0x%x, func: %p)\n",
+ hand, func);
+ return func;
}
no_dll:
// return (void*)ext_unknown;
if(library==0)
{
- printf("ERROR: library=0\n");
- return (void*)ext_unknown;
+ printf("ERROR: library=0\n");
+ return (void*)ext_unknown;
}
if(name==0)
{
- printf("ERROR: name=0\n");
- return (void*)ext_unknown;
+ printf("ERROR: name=0\n");
+ return (void*)ext_unknown;
}
dbgprintf("External func %s:%s\n", library, name);
for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++)
{
- if(strcasecmp(library, libraries[i].name))
- continue;
- for(j=0; j<libraries[i].length; j++)
- {
- if(strcmp(name, libraries[i].exps[j].name))
- continue;
- // printf("Hit: 0x%08X\n", libraries[i].exps[j].func);
- return libraries[i].exps[j].func;
- }
+ if(strcasecmp(library, libraries[i].name))
+ continue;
+ for(j=0; j<libraries[i].length; j++)
+ {
+ if(strcmp(name, libraries[i].exps[j].name))
+ continue;
+ // printf("Hit: 0x%08X\n", libraries[i].exps[j].func);
+ return libraries[i].exps[j].func;
+ }
}
#ifndef LOADLIB_TRY_NATIVE
#endif
/* ok, this is a hack, and a big memory leak. should be fixed. - alex */
{
- int hand;
- WINE_MODREF *wm;
- void *func;
-
- hand = LoadLibraryA(library);
- if (!hand)
- goto no_dll_byname;
- wm = MODULE32_LookupHMODULE(hand);
- if (!wm)
- {
- FreeLibrary(hand);
- goto no_dll_byname;
- }
- func = PE_FindExportedFunction(wm, name, 0);
- if (!func)
- {
- printf("No such name in external dll\n");
- FreeLibrary((int)hand);
- goto no_dll_byname;
- }
-
- printf("External dll loaded (offset: 0x%x, func: %p)\n",
- hand, func);
- return func;
+ int hand;
+ WINE_MODREF *wm;
+ void *func;
+
+ hand = LoadLibraryA(library);
+ if (!hand)
+ goto no_dll_byname;
+ wm = MODULE32_LookupHMODULE(hand);
+ if (!wm)
+ {
+ FreeLibrary(hand);
+ goto no_dll_byname;
+ }
+ func = PE_FindExportedFunction(wm, name, 0);
+ if (!func)
+ {
+ printf("No such name in external dll\n");
+ FreeLibrary((int)hand);
+ goto no_dll_byname;
+ }
+
+ printf("External dll loaded (offset: 0x%x, func: %p)\n",
+ hand, func);
+ return func;
}
no_dll_byname:
free_registry();
while (last_alloc)
{
- alloc_header* mem = last_alloc + 1;
- unfree += my_size(mem);
- unfreecnt++;
- if (my_release(mem) != 0)
- // avoid endless loop when memory is trashed
- if (--max_fatal < 0)
- break;
+ alloc_header* mem = last_alloc + 1;
+ unfree += my_size(mem);
+ unfreecnt++;
+ if (my_release(mem) != 0)
+ // avoid endless loop when memory is trashed
+ if (--max_fatal < 0)
+ break;
}
dbgprintf("Total Unfree %d bytes cnt %d [%p,%d]\n",unfree, unfreecnt, last_alloc, alccnt);
#endif
* AVIFMT - AVI file format definitions
*
****************************************************************************/
-#ifndef AVIFMT
+#ifndef AVIFMT
#define AVIFMT
-#ifndef NOAVIFMT
+#ifndef NOAVIFMT
#ifndef __WINE_WINDEF_H
#include "wine/windef.h"
#ifdef _MSC_VER
#pragma warning(disable:4200)
#endif
-
+
/* The following is a short description of the AVI file format. Please
* see the accompanying documentation for a full explanation.
*
* An AVI file is the following RIFF form:
*
- * RIFF('AVI'
- * LIST('hdrl'
- * avih(<MainAVIHeader>)
+ * RIFF('AVI'
+ * LIST('hdrl'
+ * avih(<MainAVIHeader>)
* LIST ('strl'
* strh(<Stream header>)
* strf(<Stream format>)
* ... additional header data
- * LIST('movi'
- * { LIST('rec'
- * SubChunk...
- * )
- * | SubChunk } ....
+ * LIST('movi'
+ * { LIST('rec'
+ * SubChunk...
+ * )
+ * | SubChunk } ....
* )
* [ <AVIIndex> ]
* )
*
- * The main file header specifies how many streams are present. For
- * each one, there must be a stream header chunk and a stream format
- * chunk, enlosed in a 'strl' LIST chunk. The 'strf' chunk contains
- * type-specific format information; for a video stream, this should
- * be a BITMAPINFO structure, including palette. For an audio stream,
- * this should be a WAVEFORMAT (or PCMWAVEFORMAT) structure.
+ * The main file header specifies how many streams are present. For
+ * each one, there must be a stream header chunk and a stream format
+ * chunk, enlosed in a 'strl' LIST chunk. The 'strf' chunk contains
+ * type-specific format information; for a video stream, this should
+ * be a BITMAPINFO structure, including palette. For an audio stream,
+ * this should be a WAVEFORMAT (or PCMWAVEFORMAT) structure.
*
- * The actual data is contained in subchunks within the 'movi' LIST
- * chunk. The first two characters of each data chunk are the
- * stream number with which that data is associated.
+ * The actual data is contained in subchunks within the 'movi' LIST
+ * chunk. The first two characters of each data chunk are the
+ * stream number with which that data is associated.
*
- * Some defined chunk types:
+ * Some defined chunk types:
* Video Streams:
- * ##db: RGB DIB bits
- * ##dc: RLE8 compressed DIB bits
- * ##pc: Palette Change
+ * ##db: RGB DIB bits
+ * ##dc: RLE8 compressed DIB bits
+ * ##pc: Palette Change
*
* Audio Streams:
- * ##wb: waveform audio bytes
+ * ##wb: waveform audio bytes
*
* The grouping into LIST 'rec' chunks implies only that the contents of
* the chunk should be read into memory at the same time. This
- * grouping is used for files specifically intended to be played from
+ * grouping is used for files specifically intended to be played from
* CD-ROM.
*
- * The index chunk at the end of the file should contain one entry for
+ * The index chunk at the end of the file should contain one entry for
* each data chunk in the file.
- *
+ *
* Limitations for the current software:
- * Only one video stream and one audio stream are allowed.
- * The streams must start at the beginning of the file.
+ * Only one video stream and one audio stream are allowed.
+ * The streams must start at the beginning of the file.
+ *
*
- *
* To register codec types please obtain a copy of the Multimedia
* Developer Registration Kit from:
*
*/
#ifndef mmioFOURCC
-#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
- ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
- ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
+ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
#endif
/* Macro to make a TWOCC out of two characters */
#define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
#define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
#define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
-#define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
+#define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
#define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
#define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
*/
#define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
#define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
-#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
+#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
#define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
/* Basic chunk types */
*/
/* Macro to get stream number out of a FOURCC ckid */
-#define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
+#define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
#define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
(FromHex(HIBYTE(LOWORD(fcc))))))
/* Macro to make a ckid for a chunk out of a TWOCC and a stream number
** from 0-255.
*/
-#define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
+#define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
#define MAKEAVICKID(tcc, stream) \
MAKELONG((ToHex((stream) & 0x0f) << 8) | \
- (ToHex(((stream) & 0xf0) >> 4)), tcc)
+ (ToHex(((stream) & 0xf0) >> 4)), tcc)
/*
-** Main AVI File Header
-*/
-
+** Main AVI File Header
+*/
+
/* flags for use in <dwFlags> in AVIFileHdr */
-#define AVIF_HASINDEX 0x00000010 // Index at end of file?
-#define AVIF_MUSTUSEINDEX 0x00000020
-#define AVIF_ISINTERLEAVED 0x00000100
-#define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames?
-#define AVIF_WASCAPTUREFILE 0x00010000
-#define AVIF_COPYRIGHTED 0x00020000
+#define AVIF_HASINDEX 0x00000010 // Index at end of file?
+#define AVIF_MUSTUSEINDEX 0x00000020
+#define AVIF_ISINTERLEAVED 0x00000100
+#define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames?
+#define AVIF_WASCAPTUREFILE 0x00010000
+#define AVIF_COPYRIGHTED 0x00020000
/* The AVI File Header LIST chunk should be padded to this size */
#define AVI_HEADERSIZE 2048 // size of AVI header list
typedef struct
{
- DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
- DWORD dwMaxBytesPerSec; // max. transfer rate
- DWORD dwPaddingGranularity; // pad to multiples of this
+ DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
+ DWORD dwMaxBytesPerSec; // max. transfer rate
+ DWORD dwPaddingGranularity; // pad to multiples of this
// size; normally 2K.
- DWORD dwFlags; // the ever-present flags
- DWORD dwTotalFrames; // # frames in file
- DWORD dwInitialFrames;
- DWORD dwStreams;
- DWORD dwSuggestedBufferSize;
-
- DWORD dwWidth;
- DWORD dwHeight;
-
- DWORD dwReserved[4];
+ DWORD dwFlags; // the ever-present flags
+ DWORD dwTotalFrames; // # frames in file
+ DWORD dwInitialFrames;
+ DWORD dwStreams;
+ DWORD dwSuggestedBufferSize;
+
+ DWORD dwWidth;
+ DWORD dwHeight;
+
+ DWORD dwReserved[4];
} MainAVIHeader;
/*
** Stream header
*/
-#define AVISF_DISABLED 0x00000001
+#define AVISF_DISABLED 0x00000001
-#define AVISF_VIDEO_PALCHANGES 0x00010000
+#define AVISF_VIDEO_PALCHANGES 0x00010000
-
+
typedef struct {
- FOURCC fccType;
- FOURCC fccHandler;
- DWORD dwFlags; /* Contains AVITF_* flags */
- WORD wPriority;
- WORD wLanguage;
- DWORD dwInitialFrames;
- DWORD dwScale;
- DWORD dwRate; /* dwRate / dwScale == samples/second */
- DWORD dwStart;
- DWORD dwLength; /* In units above... */
- DWORD dwSuggestedBufferSize;
- DWORD dwQuality;
- DWORD dwSampleSize;
- RECT rcFrame;
+ FOURCC fccType;
+ FOURCC fccHandler;
+ DWORD dwFlags; /* Contains AVITF_* flags */
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwInitialFrames;
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwStart;
+ DWORD dwLength; /* In units above... */
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT rcFrame;
} AVIStreamHeader;
/* Flags for index */
#define AVIIF_LIST 0x00000001L // chunk is a 'LIST'
#define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
-#define AVIIF_NOTIME 0x00000100L // this frame doesn't take any time
+#define AVIIF_NOTIME 0x00000100L // this frame doesn't take any time
#define AVIIF_COMPUSE 0x0FFF0000L // these bits are for compressor use
#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
typedef struct
{
- DWORD ckid;
- DWORD dwFlags;
- DWORD dwChunkOffset; // Position of chunk
- DWORD dwChunkLength; // Length of chunk
+ DWORD ckid;
+ DWORD dwFlags;
+ DWORD dwChunkOffset; // Position of chunk
+ DWORD dwChunkLength; // Length of chunk
} AVIINDEXENTRY;
-#define AVISTREAMREAD_CONVENIENT (-1L)
+#define AVISTREAMREAD_CONVENIENT (-1L)
/*
** Palette change chunk
#define MMSYSERR_BASE 0
-#define MMSYSERR_NOERROR 0 /* no error */
-#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
-#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) /* device ID out of range */
-#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) /* driver failed enable */
-#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) /* device already allocated */
-#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) /* device handle is invalid */
-#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) /* no device driver present */
-#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) /* memory allocation error */
-#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) /* function isn't supported */
-#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) /* error value out of range */
-#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) /* invalid flag passed */
-#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) /* invalid parameter passed */
-#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 11) /* last error in range */
+#define MMSYSERR_NOERROR 0 /* no error */
+#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
+#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) /* device ID out of range */
+#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) /* driver failed enable */
+#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) /* device already allocated */
+#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) /* device handle is invalid */
+#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) /* no device driver present */
+#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) /* memory allocation error */
+#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) /* function isn't supported */
+#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) /* error value out of range */
+#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) /* invalid flag passed */
+#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) /* invalid parameter passed */
+#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 11) /* last error in range */
#define DRV_LOAD 0x0001
#define DRV_ENABLE 0x0002
#define DRVCNF_CANCEL 0x0000
#define DRVCNF_OK 0x0001
-#define DRVCNF_RESTART 0x0002
+#define DRVCNF_RESTART 0x0002
-#define DRVEA_NORMALEXIT 0x0001
-#define DRVEA_ABNORMALEXIT 0x0002
+#define DRVEA_NORMALEXIT 0x0001
+#define DRVEA_ABNORMALEXIT 0x0002
-#define DRV_SUCCESS 0x0001
-#define DRV_FAILURE 0x0000
+#define DRV_SUCCESS 0x0001
+#define DRV_FAILURE 0x0000
-#define GND_FIRSTINSTANCEONLY 0x00000001
+#define GND_FIRSTINSTANCEONLY 0x00000001
-#define GND_FORWARD 0x00000000
-#define GND_REVERSE 0x00000002
+#define GND_FORWARD 0x00000000
+#define GND_REVERSE 0x00000002
typedef struct {
- DWORD dwDCISize;
- LPCSTR lpszDCISectionName;
- LPCSTR lpszDCIAliasName;
+ DWORD dwDCISize;
+ LPCSTR lpszDCISectionName;
+ LPCSTR lpszDCIAliasName;
} DRVCONFIGINFO16, *LPDRVCONFIGINFO16;
typedef struct {
- DWORD dwDCISize;
- LPCWSTR lpszDCISectionName;
- LPCWSTR lpszDCIAliasName;
+ DWORD dwDCISize;
+ LPCWSTR lpszDCISectionName;
+ LPCWSTR lpszDCIAliasName;
} DRVCONFIGINFO, *LPDRVCONFIGINFO;
*/
typedef struct
{
- UINT16 length;
- HDRVR16 hDriver;
- HINSTANCE16 hModule;
- CHAR szAliasName[128];
+ UINT16 length;
+ HDRVR16 hDriver;
+ HINSTANCE16 hModule;
+ CHAR szAliasName[128];
} DRIVERINFOSTRUCT16, *LPDRIVERINFOSTRUCT16;
-LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
+LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
LPARAM dwParam1, LPARAM dwParam2);
LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr,
UINT Msg, LPARAM lParam1, LPARAM lParam2);
/* this call (GetDriverFlags) is not documented, nor the flags returned.
* here are Wine only definitions
*/
-#define WINE_GDF_EXIST 0x80000000
-#define WINE_GDF_16BIT 0x10000000
+#define WINE_GDF_EXIST 0x80000000
+#define WINE_GDF_16BIT 0x10000000
#endif
#endif /* __WINE_DRIVER_H */
(HIWORD(str) ? HEAP_strdupA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
#define SEGPTR_STRDUP_WtoA(str) \
(HIWORD(str) ? HEAP_strdupWtoA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
- /* define an inline function, a macro won't do */
+ /* define an inline function, a macro won't do */
static inline SEGPTR WINE_UNUSED SEGPTR_Get(LPCVOID ptr) {
return (HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, ptr ) : (SEGPTR)ptr);
}
DWORD dwDelay;
} ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
#endif /* WAVEFILTER_ECHO */
-
+
#ifndef _WAVEFORMATEX_
#define _WAVEFORMATEX_
typedef struct __attribute__((__packed__)) _WAVEFORMATEX {
FARPROC16 BootApp; /* startup procedure */
FARPROC16 LoadAppSeg; /* procedure to load a segment */
FARPROC16 reserved2;
- FARPROC16 MyAlloc; /* memory allocation procedure,
+ FARPROC16 MyAlloc; /* memory allocation procedure,
* wine must write this field */
FARPROC16 EntryAddrProc;
FARPROC16 ExitProc; /* exit procedure */
SEGPTR reserved WINE_PACKED;
} LOADPARAMS16;
-typedef struct
+typedef struct
{
LPSTR lpEnvAddress;
LPSTR lpCmdLine;
/* internal representation of 32bit modules. per process. */
typedef enum {
- MODULE32_PE = 1,
- MODULE32_ELF,
- MODULE32_ELFDLL
+ MODULE32_PE = 1,
+ MODULE32_ELF,
+ MODULE32_ELFDLL
} MODULE32_TYPE;
typedef struct _wine_modref
{
- struct _wine_modref *next;
- struct _wine_modref *prev;
- MODULE32_TYPE type;
- union {
- PE_MODREF pe;
- ELF_MODREF elf;
- } binfmt;
-
- HMODULE module;
-
- int nDeps;
- struct _wine_modref **deps;
-
- int flags;
- int refCount;
-
- char *filename;
- char *modname;
- char *short_filename;
- char *short_modname;
+ struct _wine_modref *next;
+ struct _wine_modref *prev;
+ MODULE32_TYPE type;
+ union {
+ PE_MODREF pe;
+ ELF_MODREF elf;
+ } binfmt;
+
+ HMODULE module;
+
+ int nDeps;
+ struct _wine_modref **deps;
+
+ int flags;
+ int refCount;
+
+ char *filename;
+ char *modname;
+ char *short_filename;
+ char *short_modname;
} WINE_MODREF;
#define WINE_MODREF_INTERNAL 0x00000001
extern WINE_MODREF *MODULE_FindModule( LPCSTR path );
/* resource.c */
-extern INT WINAPI AccessResource(HMODULE,HRSRC);
+extern INT WINAPI AccessResource(HMODULE,HRSRC);
#endif /* __WINE_MODULE_H */
//typedef WORD VERSION; /* major (high byte), minor (low byte) */
-typedef UINT16 MMVERSION16;
-typedef UINT MMVERSION;
-typedef UINT16 MCIDEVICEID16;
-typedef UINT MCIDEVICEID;
-typedef UINT16 MMRESULT16;
-typedef UINT MMRESULT;
+typedef UINT16 MMVERSION16;
+typedef UINT MMVERSION;
+typedef UINT16 MCIDEVICEID16;
+typedef UINT MCIDEVICEID;
+typedef UINT16 MMRESULT16;
+typedef UINT MMRESULT;
typedef DWORD FOURCC; /* a four character code */
DWORD fdwEnum;
PWAVEFILTER pwfltrEnum;
-
+
HINSTANCE hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
DWORD fdwEnum;
PWAVEFILTER pwfltrEnum;
-
+
HINSTANCE hInstance;
LPCWSTR pszTemplateName;
LPARAM lCustData;
DWORD fdwEnum;
LPWAVEFILTER pwfltrEnum;
-
+
HINSTANCE16 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
PWAVEFORMATEX pwfx;
DWORD cbwfx;
LPCSTR pszTitle;
-
+
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
- CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+ CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
PWAVEFORMATEX pwfxEnum;
-
+
HINSTANCE hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
{
DWORD cbStruct;
DWORD fdwStyle;
-
+
HWND hwndOwner;
PWAVEFORMATEX pwfx;
DWORD cbwfx;
LPCWSTR pszTitle;
-
+
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
- WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+ WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPWSTR pszName;
DWORD cchName;
DWORD fdwEnum;
LPWAVEFORMATEX pwfxEnum;
-
+
HINSTANCE hInstance;
LPCWSTR pszTemplateName;
LPARAM lCustData;
{
DWORD cbStruct;
DWORD fdwStyle;
-
+
HWND16 hwndOwner;
LPWAVEFORMATEX pwfx;
DWORD cbwfx;
LPCSTR pszTitle;
-
+
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
- CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+ CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
LPWAVEFORMATEX pwfxEnum;
-
+
HINSTANCE16 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmFormatSuggest16(
- HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc,
+ HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc,
LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
);
MMRESULT16 WINAPI acmFilterTagDetails16(
HACMSTREAM16 has, DWORD fdwClose
);
MMRESULT16 WINAPI acmStreamSize16(
- HACMSTREAM16 has, DWORD cbInput,
+ HACMSTREAM16 has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize
);
MMRESULT16 WINAPI acmStreamConvert16(
HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
);
MMRESULT WINAPI acmFilterEnumA(
- HACMDRIVER had, PACMFILTERDETAILSA pafd,
+ HACMDRIVER had, PACMFILTERDETAILSA pafd,
ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT WINAPI acmFilterEnumW(
- HACMDRIVER had, PACMFILTERDETAILSW pafd,
+ HACMDRIVER had, PACMFILTERDETAILSW pafd,
ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT WINAPI acmFilterTagDetailsA(
HACMSTREAM has, DWORD fdwReset
);
MMRESULT WINAPI acmStreamSize(
- HACMSTREAM has, DWORD cbInput,
+ HACMSTREAM has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize
);
MMRESULT WINAPI acmStreamUnprepareHeader(
#define MAKE_ACM_VERSION(mjr, mnr, bld) \
(((long)(mjr)<<24) | ((long)(mnr)<<16) | ((long)bld))
-#define ACMDRVOPENDESC_SECTIONNAME_CHARS
+#define ACMDRVOPENDESC_SECTIONNAME_CHARS
#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1)
#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10)
* all section are calculated here, relocations etc.
*/
typedef struct {
- PIMAGE_IMPORT_DESCRIPTOR pe_import;
- PIMAGE_EXPORT_DIRECTORY pe_export;
- PIMAGE_RESOURCE_DIRECTORY pe_resource;
- int tlsindex;
+ PIMAGE_IMPORT_DESCRIPTOR pe_import;
+ PIMAGE_EXPORT_DIRECTORY pe_export;
+ PIMAGE_RESOURCE_DIRECTORY pe_resource;
+ int tlsindex;
} PE_MODREF;
struct _wine_modref;
extern HMODULE PE_LoadImage( int hFile, LPCSTR filename, WORD *version );
extern struct _wine_modref *PE_CreateModule( HMODULE hModule, LPCSTR filename,
DWORD flags, WIN_BOOL builtin );
-extern WIN_BOOL PE_CreateProcess( HANDLE hFile, LPCSTR filename, LPCSTR cmd_line, LPCSTR env,
+extern WIN_BOOL PE_CreateProcess( HANDLE hFile, LPCSTR filename, LPCSTR cmd_line, LPCSTR env,
LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
WIN_BOOL inherit, DWORD flags, LPSTARTUPINFOA startup,
LPPROCESS_INFORMATION info );
typedef DWORD CALLBACK (*DLLENTRYPROC)(HMODULE,DWORD,LPVOID);
typedef struct {
- WORD popl WINE_PACKED; /* 0x8f 0x05 */
- DWORD addr_popped WINE_PACKED;/* ... */
- BYTE pushl1 WINE_PACKED; /* 0x68 */
- DWORD newret WINE_PACKED; /* ... */
- BYTE pushl2 WINE_PACKED; /* 0x68 */
- DWORD origfun WINE_PACKED; /* original function */
- BYTE ret1 WINE_PACKED; /* 0xc3 */
- WORD addesp WINE_PACKED; /* 0x83 0xc4 */
- BYTE nrofargs WINE_PACKED; /* nr of arguments to add esp, */
- BYTE pushl3 WINE_PACKED; /* 0x68 */
- DWORD oldret WINE_PACKED; /* Filled out from popl above */
- BYTE ret2 WINE_PACKED; /* 0xc3 */
+ WORD popl WINE_PACKED; /* 0x8f 0x05 */
+ DWORD addr_popped WINE_PACKED;/* ... */
+ BYTE pushl1 WINE_PACKED; /* 0x68 */
+ DWORD newret WINE_PACKED; /* ... */
+ BYTE pushl2 WINE_PACKED; /* 0x68 */
+ DWORD origfun WINE_PACKED; /* original function */
+ BYTE ret1 WINE_PACKED; /* 0xc3 */
+ WORD addesp WINE_PACKED; /* 0x83 0xc4 */
+ BYTE nrofargs WINE_PACKED; /* nr of arguments to add esp, */
+ BYTE pushl3 WINE_PACKED; /* 0x68 */
+ DWORD oldret WINE_PACKED; /* Filled out from popl above */
+ BYTE ret2 WINE_PACKED; /* 0xc3 */
} ELF_STDCALL_STUB;
typedef struct {
- void* dlhandle;
- ELF_STDCALL_STUB *stubs;
+ void* dlhandle;
+ ELF_STDCALL_STUB *stubs;
} ELF_MODREF;
extern struct _wine_modref *ELF_LoadLibraryExA( LPCSTR libname, DWORD flags);
#define _BITMAPINFOHEADER_
typedef struct __attribute__((__packed__))
{
- long biSize;
- long biWidth;
- long biHeight;
- short biPlanes;
- short biBitCount;
- long biCompression;
- long biSizeImage;
- long biXPelsPerMeter;
- long biYPelsPerMeter;
- long biClrUsed;
- long biClrImportant;
+ long biSize;
+ long biWidth;
+ long biHeight;
+ short biPlanes;
+ short biBitCount;
+ long biCompression;
+ long biSizeImage;
+ long biXPelsPerMeter;
+ long biYPelsPerMeter;
+ long biClrUsed;
+ long biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
typedef struct {
- BITMAPINFOHEADER bmiHeader;
- int bmiColors[1];
+ BITMAPINFOHEADER bmiHeader;
+ int bmiColors[1];
} BITMAPINFO, *LPBITMAPINFO;
#endif
#endif
-#define VFWAPI
-#define VFWAPIV
+#define VFWAPI
+#define VFWAPIV
#ifndef __WINE_WINDEF_H
typedef long (__stdcall__ *DRIVERPROC)(long,HDRVR,unsigned int,long,long);
#endif
#ifndef mmioFOURCC
-#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
- ( (long)(unsigned char)(ch0) | ( (long)(unsigned char)(ch1) << 8 ) | \
- ( (long)(unsigned char)(ch2) << 16 ) | ( (long)(unsigned char)(ch3) << 24 ) )
+#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (long)(unsigned char)(ch0) | ( (long)(unsigned char)(ch1) << 8 ) | \
+ ( (long)(unsigned char)(ch2) << 16 ) | ( (long)(unsigned char)(ch3) << 24 ) )
#endif
#ifndef aviTWOCC
#define aviTWOCC(ch0, ch1) ((short)(unsigned char)(ch0) | ((short)(unsigned char)(ch1) << 8))
#endif
-#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
-#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
+#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
/* Installable Compressor M? */
/* HIC struct (same layout as Win95 one) */
typedef struct tagWINE_HIC {
- long magic; /* 00: 'Smag' */
- HANDLE curthread; /* 04: */
- long type; /* 08: */
- long handler; /* 0C: */
- HDRVR hdrv; /* 10: */
- long driverid; /* 14:(handled by SendDriverMessage)*/
- DRIVERPROC driverproc; /* 18:(handled by SendDriverMessage)*/
- long x1; /* 1c: name? */
- short x2; /* 20: */
- long x3; /* 22: */
- /* 26: */
+ long magic; /* 00: 'Smag' */
+ HANDLE curthread; /* 04: */
+ long type; /* 08: */
+ long handler; /* 0C: */
+ HDRVR hdrv; /* 10: */
+ long driverid; /* 14:(handled by SendDriverMessage)*/
+ DRIVERPROC driverproc; /* 18:(handled by SendDriverMessage)*/
+ long x1; /* 1c: name? */
+ short x2; /* 20: */
+ long x3; /* 22: */
+ /* 26: */
} WINE_HIC;
/* error return codes */
-#define ICERR_OK 0
-#define ICERR_DONTDRAW 1
-#define ICERR_NEWPALETTE 2
-#define ICERR_GOTOKEYFRAME 3
-#define ICERR_STOPDRAWING 4
-
-#define ICERR_UNSUPPORTED -1
-#define ICERR_BADFORMAT -2
-#define ICERR_MEMORY -3
-#define ICERR_INTERNAL -4
-#define ICERR_BADFLAGS -5
-#define ICERR_BADPARAM -6
-#define ICERR_BADSIZE -7
-#define ICERR_BADHANDLE -8
-#define ICERR_CANTUPDATE -9
-#define ICERR_ABORT -10
-#define ICERR_ERROR -100
-#define ICERR_BADBITDEPTH -200
-#define ICERR_BADIMAGESIZE -201
-
-#define ICERR_CUSTOM -400
+#define ICERR_OK 0
+#define ICERR_DONTDRAW 1
+#define ICERR_NEWPALETTE 2
+#define ICERR_GOTOKEYFRAME 3
+#define ICERR_STOPDRAWING 4
+
+#define ICERR_UNSUPPORTED -1
+#define ICERR_BADFORMAT -2
+#define ICERR_MEMORY -3
+#define ICERR_INTERNAL -4
+#define ICERR_BADFLAGS -5
+#define ICERR_BADPARAM -6
+#define ICERR_BADSIZE -7
+#define ICERR_BADHANDLE -8
+#define ICERR_CANTUPDATE -9
+#define ICERR_ABORT -10
+#define ICERR_ERROR -100
+#define ICERR_BADBITDEPTH -200
+#define ICERR_BADIMAGESIZE -201
+
+#define ICERR_CUSTOM -400
/* ICM Messages */
-#define ICM_USER (DRV_USER+0x0000)
+#define ICM_USER (DRV_USER+0x0000)
/* ICM driver message range */
-#define ICM_RESERVED_LOW (DRV_USER+0x1000)
-#define ICM_RESERVED_HIGH (DRV_USER+0x2000)
-#define ICM_RESERVED ICM_RESERVED_LOW
+#define ICM_RESERVED_LOW (DRV_USER+0x1000)
+#define ICM_RESERVED_HIGH (DRV_USER+0x2000)
+#define ICM_RESERVED ICM_RESERVED_LOW
-#define ICM_GETSTATE (ICM_RESERVED+0)
-#define ICM_SETSTATE (ICM_RESERVED+1)
-#define ICM_GETINFO (ICM_RESERVED+2)
+#define ICM_GETSTATE (ICM_RESERVED+0)
+#define ICM_SETSTATE (ICM_RESERVED+1)
+#define ICM_GETINFO (ICM_RESERVED+2)
-#define ICM_CONFIGURE (ICM_RESERVED+10)
-#define ICM_ABOUT (ICM_RESERVED+11)
+#define ICM_CONFIGURE (ICM_RESERVED+10)
+#define ICM_ABOUT (ICM_RESERVED+11)
/* */
-#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
-#define ICM_GETQUALITY (ICM_RESERVED+31)
-#define ICM_SETQUALITY (ICM_RESERVED+32)
+#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
+#define ICM_GETQUALITY (ICM_RESERVED+31)
+#define ICM_SETQUALITY (ICM_RESERVED+32)
-#define ICM_SET (ICM_RESERVED+40)
-#define ICM_GET (ICM_RESERVED+41)
+#define ICM_SET (ICM_RESERVED+40)
+#define ICM_GET (ICM_RESERVED+41)
/* 2 constant FOURCC codes */
-#define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
-#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
-
-#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
-#define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
-#define ICM_COMPRESS_QUERY (ICM_USER+6)
-#define ICM_COMPRESS_BEGIN (ICM_USER+7)
-#define ICM_COMPRESS (ICM_USER+8)
-#define ICM_COMPRESS_END (ICM_USER+9)
-
-#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
-#define ICM_DECOMPRESS_QUERY (ICM_USER+11)
-#define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
-#define ICM_DECOMPRESS (ICM_USER+13)
-#define ICM_DECOMPRESS_END (ICM_USER+14)
-#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
-#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
-
-#define ICM_DRAW_QUERY (ICM_USER+31)
-#define ICM_DRAW_BEGIN (ICM_USER+15)
-#define ICM_DRAW_GET_PALETTE (ICM_USER+16)
-#define ICM_DRAW_START (ICM_USER+18)
-#define ICM_DRAW_STOP (ICM_USER+19)
-#define ICM_DRAW_END (ICM_USER+21)
-#define ICM_DRAW_GETTIME (ICM_USER+32)
-#define ICM_DRAW (ICM_USER+33)
-#define ICM_DRAW_WINDOW (ICM_USER+34)
-#define ICM_DRAW_SETTIME (ICM_USER+35)
-#define ICM_DRAW_REALIZE (ICM_USER+36)
-#define ICM_DRAW_FLUSH (ICM_USER+37)
-#define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
-
-#define ICM_DRAW_START_PLAY (ICM_USER+39)
-#define ICM_DRAW_STOP_PLAY (ICM_USER+40)
-
-#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
-#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
-
-#define ICM_GETBUFFERSWANTED (ICM_USER+41)
-
-#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
-
-#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
-#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
-#define ICM_DECOMPRESSEX (ICM_USER+62)
-#define ICM_DECOMPRESSEX_END (ICM_USER+63)
-
-#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
-#define ICM_SET_STATUS_PROC (ICM_USER+72)
+#define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
+#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
+
+#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
+#define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
+#define ICM_COMPRESS_QUERY (ICM_USER+6)
+#define ICM_COMPRESS_BEGIN (ICM_USER+7)
+#define ICM_COMPRESS (ICM_USER+8)
+#define ICM_COMPRESS_END (ICM_USER+9)
+
+#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
+#define ICM_DECOMPRESS_QUERY (ICM_USER+11)
+#define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
+#define ICM_DECOMPRESS (ICM_USER+13)
+#define ICM_DECOMPRESS_END (ICM_USER+14)
+#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
+#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
+
+#define ICM_DRAW_QUERY (ICM_USER+31)
+#define ICM_DRAW_BEGIN (ICM_USER+15)
+#define ICM_DRAW_GET_PALETTE (ICM_USER+16)
+#define ICM_DRAW_START (ICM_USER+18)
+#define ICM_DRAW_STOP (ICM_USER+19)
+#define ICM_DRAW_END (ICM_USER+21)
+#define ICM_DRAW_GETTIME (ICM_USER+32)
+#define ICM_DRAW (ICM_USER+33)
+#define ICM_DRAW_WINDOW (ICM_USER+34)
+#define ICM_DRAW_SETTIME (ICM_USER+35)
+#define ICM_DRAW_REALIZE (ICM_USER+36)
+#define ICM_DRAW_FLUSH (ICM_USER+37)
+#define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
+
+#define ICM_DRAW_START_PLAY (ICM_USER+39)
+#define ICM_DRAW_STOP_PLAY (ICM_USER+40)
+
+#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
+#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
+
+#define ICM_GETBUFFERSWANTED (ICM_USER+41)
+
+#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
+
+#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
+#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
+#define ICM_DECOMPRESSEX (ICM_USER+62)
+#define ICM_DECOMPRESSEX_END (ICM_USER+63)
+
+#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
+#define ICM_SET_STATUS_PROC (ICM_USER+72)
/* structs */
typedef struct {
- long dwSize; /* 00: size */
- long fccType; /* 04: type 'vidc' usually */
- long fccHandler; /* 08: */
- long dwVersion; /* 0c: version of compman opening you */
- long dwFlags; /* 10: LOshort is type specific */
- LRESULT dwError; /* 14: */
- void* pV1Reserved; /* 18: */
- void* pV2Reserved; /* 1c: */
- long dnDevNode; /* 20: */
- /* 24: */
+ long dwSize; /* 00: size */
+ long fccType; /* 04: type 'vidc' usually */
+ long fccHandler; /* 08: */
+ long dwVersion; /* 0c: version of compman opening you */
+ long dwFlags; /* 10: LOshort is type specific */
+ LRESULT dwError; /* 14: */
+ void* pV1Reserved; /* 18: */
+ void* pV2Reserved; /* 1c: */
+ long dnDevNode; /* 20: */
+ /* 24: */
} ICOPEN,*LPICOPEN;
#define ICCOMPRESS_KEYFRAME 0x00000001L
typedef struct {
- long dwFlags;
- LPBITMAPINFOHEADER lpbiOutput;
- void* lpOutput;
- LPBITMAPINFOHEADER lpbiInput;
- const void* lpInput;
- long* lpckid;
- long* lpdwFlags;
- long lFrameNum;
- long dwFrameSize;
- long dwQuality;
- LPBITMAPINFOHEADER lpbiPrev;
- void* lpPrev;
+ long dwFlags;
+ LPBITMAPINFOHEADER lpbiOutput;
+ void* lpOutput;
+ LPBITMAPINFOHEADER lpbiInput;
+ const void* lpInput;
+ long* lpckid;
+ long* lpdwFlags;
+ long lFrameNum;
+ long dwFrameSize;
+ long dwQuality;
+ LPBITMAPINFOHEADER lpbiPrev;
+ void* lpPrev;
} ICCOMPRESS;
long VFWAPIV ICCompress(
- HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpData,
- LPBITMAPINFOHEADER lpbiInput,void* lpBits,long* lpckid,
- long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality,
- LPBITMAPINFOHEADER lpbiPrev,void* lpPrev
+ HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpData,
+ LPBITMAPINFOHEADER lpbiInput,void* lpBits,long* lpckid,
+ long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality,
+ LPBITMAPINFOHEADER lpbiPrev,void* lpPrev
);
-#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic,ICM_COMPRESS_GET_FORMAT,(long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
- )
+#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic,ICM_COMPRESS_GET_FORMAT,(long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
+ )
#define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
-#define ICGetDefaultKeyFrameRate(hic,lpint) \
- ICSendMessage( \
- hic, ICM_GETDEFAULTKEYFRAMERATE, \
- (long)(void*)(lpint), \
- 0 )
-
-#define ICGetDefaultQuality(hic,lpint) \
- ICSendMessage( \
- hic, ICM_GETDEFAULTQUALITY, \
- (long)(void*)(lpint), \
- 0 )
-
-
-#define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic, ICM_COMPRESS_BEGIN, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICGetDefaultKeyFrameRate(hic,lpint) \
+ ICSendMessage( \
+ hic, ICM_GETDEFAULTKEYFRAMERATE, \
+ (long)(void*)(lpint), \
+ 0 )
+
+#define ICGetDefaultQuality(hic,lpint) \
+ ICSendMessage( \
+ hic, ICM_GETDEFAULTQUALITY, \
+ (long)(void*)(lpint), \
+ 0 )
+
+
+#define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic, ICM_COMPRESS_BEGIN, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
)
-#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic, ICM_COMPRESS_GET_SIZE, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic, ICM_COMPRESS_GET_SIZE, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
)
-#define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic, ICM_COMPRESS_QUERY, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic, ICM_COMPRESS_QUERY, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
)
} ICCOMPRESSFRAMES;
/* Values for wMode of ICOpen() */
-#define ICMODE_COMPRESS 1
-#define ICMODE_DECOMPRESS 2
-#define ICMODE_FASTDECOMPRESS 3
-#define ICMODE_QUERY 4
-#define ICMODE_FASTCOMPRESS 5
-#define ICMODE_DRAW 8
+#define ICMODE_COMPRESS 1
+#define ICMODE_DECOMPRESS 2
+#define ICMODE_FASTDECOMPRESS 3
+#define ICMODE_QUERY 4
+#define ICMODE_FASTCOMPRESS 5
+#define ICMODE_DRAW 8
/* quality flags */
#define ICQUALITY_LOW 0
#define ICQUALITY_DEFAULT -1
typedef struct {
- long dwSize; /* 00: */
- long fccType; /* 04:compressor type 'vidc' 'audc' */
- long fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
- long dwFlags; /* 0c:flags LOshort is type specific */
- long dwVersion; /* 10:version of the driver */
- long dwVersionICM; /* 14:version of the ICM used */
- /*
- * under Win32, the driver always returns UNICODE strings.
- */
- WCHAR szName[16]; /* 18:short name */
- WCHAR szDescription[128]; /* 38:long name */
- WCHAR szDriver[128]; /* 138:driver that contains compressor*/
- /* 238: */
+ long dwSize; /* 00: */
+ long fccType; /* 04:compressor type 'vidc' 'audc' */
+ long fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
+ long dwFlags; /* 0c:flags LOshort is type specific */
+ long dwVersion; /* 10:version of the driver */
+ long dwVersionICM; /* 14:version of the ICM used */
+ /*
+ * under Win32, the driver always returns UNICODE strings.
+ */
+ WCHAR szName[16]; /* 18:short name */
+ WCHAR szDescription[128]; /* 38:long name */
+ WCHAR szDriver[128]; /* 138:driver that contains compressor*/
+ /* 238: */
} ICINFO;
/* ICINFO.dwFlags */
-#define VIDCF_QUALITY 0x0001 /* supports quality */
-#define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */
-#define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */
-#define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */
-#define VIDCF_DRAW 0x0010 /* supports drawing */
-#define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */
-#define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */
-#define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */
+#define VIDCF_QUALITY 0x0001 /* supports quality */
+#define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */
+#define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */
+#define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */
+#define VIDCF_DRAW 0x0010 /* supports drawing */
+#define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */
+#define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */
+#define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */
-#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
+#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
/* function shortcuts */
#define ICMF_ABOUT_QUERY 0x00000001
#define ICQueryAbout(hic) \
- (ICSendMessage(hic,ICM_ABOUT,(long)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
+ (ICSendMessage(hic,ICM_ABOUT,(long)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
#define ICAbout(hic, hwnd) ICSendMessage(hic,ICM_ABOUT,(long)(unsigned int)(hwnd),0)
/* ICM_CONFIGURE */
-#define ICMF_CONFIGURE_QUERY 0x00000001
+#define ICMF_CONFIGURE_QUERY 0x00000001
#define ICQueryConfigure(hic) \
- (ICSendMessage(hic,ICM_CONFIGURE,(long)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
+ (ICSendMessage(hic,ICM_CONFIGURE,(long)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
#define ICConfigure(hic,hwnd) \
- ICSendMessage(hic,ICM_CONFIGURE,(long)(unsigned int)(hwnd),0)
+ ICSendMessage(hic,ICM_CONFIGURE,(long)(unsigned int)(hwnd),0)
/* Decompression stuff */
-#define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */
-#define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */
-#define ICDECOMPRESS_PREROL 0x20000000 /* this frame is before real start */
-#define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */
-#define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */
+#define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */
+#define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */
+#define ICDECOMPRESS_PREROL 0x20000000 /* this frame is before real start */
+#define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */
+#define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */
typedef struct {
- long dwFlags; /* flags (from AVI index...) */
- LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */
- const void* lpInput; /* compressed data */
- LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */
- void* lpOutput;
- long ckid; /* ckid from AVI file */
+ long dwFlags; /* flags (from AVI index...) */
+ LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */
+ const void* lpInput; /* compressed data */
+ LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */
+ void* lpOutput;
+ long ckid; /* ckid from AVI file */
} ICDECOMPRESS;
typedef struct {
- long dwFlags;
+ long dwFlags;
LPBITMAPINFOHEADER lpbiSrc;
- const void* lpSrc;
- LPBITMAPINFOHEADER lpbiDst;
- void* lpDst;
+ const void* lpSrc;
+ LPBITMAPINFOHEADER lpbiDst;
+ void* lpDst;
/* changed for ICM_DECOMPRESSEX */
- INT xDst; /* destination rectangle */
- INT yDst;
- INT dxDst;
- INT dyDst;
-
- INT xSrc; /* source rectangle */
- INT ySrc;
- INT dxSrc;
- INT dySrc;
+ INT xDst; /* destination rectangle */
+ INT yDst;
+ INT dxDst;
+ INT dyDst;
+
+ INT xSrc; /* source rectangle */
+ INT ySrc;
+ INT dxSrc;
+ INT dySrc;
} ICDECOMPRESSEX;
long VFWAPIV ICUniversalEx(HIC hic,int command,LPBITMAPINFOHEADER lpbiFormat,LPBITMAPINFOHEADER lpbi);
-#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic, ICM_DECOMPRESS_BEGIN, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic, ICM_DECOMPRESS_BEGIN, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
)
-#define ICDecompressBeginEx(hic, lpbiInput, lpbiOutput) \
- ICUniversalEx( \
- hic, ICM_DECOMPRESSEX_BEGIN, (lpbiInput), \
- (lpbiOutput) \
+#define ICDecompressBeginEx(hic, lpbiInput, lpbiOutput) \
+ ICUniversalEx( \
+ hic, ICM_DECOMPRESSEX_BEGIN, (lpbiInput), \
+ (lpbiOutput) \
)
-#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic,ICM_DECOMPRESS_QUERY, (long)(void*)(lpbiInput), \
- (long) (void*)(lpbiOutput) \
+#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic,ICM_DECOMPRESS_QUERY, (long)(void*)(lpbiInput), \
+ (long) (void*)(lpbiOutput) \
)
-#define ICDecompressQueryEx(hic, lpbiInput, lpbiOutput) \
- ICUniversalEx( \
- hic,ICM_DECOMPRESSEX_QUERY, (lpbiInput), \
- (lpbiOutput) \
+#define ICDecompressQueryEx(hic, lpbiInput, lpbiOutput) \
+ ICUniversalEx( \
+ hic,ICM_DECOMPRESSEX_QUERY, (lpbiInput), \
+ (lpbiOutput) \
)
-#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
- ((long)ICSendMessage( \
- hic,ICM_DECOMPRESS_GET_FORMAT, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
+ ((long)ICSendMessage( \
+ hic,ICM_DECOMPRESS_GET_FORMAT, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
))
-#define ICDecompressGetFormatSize(hic, lpbi) \
- ICDecompressGetFormat(hic, lpbi, NULL)
+#define ICDecompressGetFormatSize(hic, lpbi) \
+ ICDecompressGetFormat(hic, lpbi, NULL)
-#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
- ICSendMessage( \
- hic, ICM_DECOMPRESS_GET_PALETTE, (long)(void*)(lpbiInput), \
- (long)(void*)(lpbiOutput) \
+#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage( \
+ hic, ICM_DECOMPRESS_GET_PALETTE, (long)(void*)(lpbiInput), \
+ (long)(void*)(lpbiOutput) \
)
-#define ICDecompressSetPalette(hic,lpbiPalette) \
- ICSendMessage( \
- hic,ICM_DECOMPRESS_SET_PALETTE, \
- (long)(void*)(lpbiPalette),0 \
- )
+#define ICDecompressSetPalette(hic,lpbiPalette) \
+ ICSendMessage( \
+ hic,ICM_DECOMPRESS_SET_PALETTE, \
+ (long)(void*)(lpbiPalette),0 \
+ )
#define ICDecompressEnd(hic) ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
#define ICDecompressEndEx(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END, 0, 0)
#define ICDRAW_HDC 0x00000004L /* draw to a HDC/HWND */
-WIN_BOOL VFWAPI ICInfo(long fccType, long fccHandler, ICINFO * lpicinfo);
-LRESULT VFWAPI ICGetInfo(HIC hic,ICINFO *picinfo, long cb);
-HIC VFWAPI ICOpen(long fccType, long fccHandler, UINT wMode);
-//HIC VFWAPI ICOpenFunction(long fccType, long fccHandler, unsigned int wMode, void* lpfnHandler);
+WIN_BOOL VFWAPI ICInfo(long fccType, long fccHandler, ICINFO * lpicinfo);
+LRESULT VFWAPI ICGetInfo(HIC hic,ICINFO *picinfo, long cb);
+HIC VFWAPI ICOpen(long fccType, long fccHandler, UINT wMode);
+//HIC VFWAPI ICOpenFunction(long fccType, long fccHandler, unsigned int wMode, void* lpfnHandler);
LRESULT VFWAPI ICClose(HIC hic);
-LRESULT VFWAPI ICSendMessage(HIC hic, unsigned int msg, long dw1, long dw2);
-//HIC VFWAPI ICLocate(long fccType, long fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, short wFlags);
+LRESULT VFWAPI ICSendMessage(HIC hic, unsigned int msg, long dw1, long dw2);
+//HIC VFWAPI ICLocate(long fccType, long fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, short wFlags);
int VFWAPI ICDoSomething(void);
-long VFWAPIV ICDrawBegin(
- HIC hic,
- long dwFlags,/* flags */
- HPALETTE hpal, /* palette to draw with */
- HWND hwnd, /* window to draw to */
- HDC hdc, /* HDC to draw to */
- INT xDst, /* destination rectangle */
- INT yDst,
- INT dxDst,
- INT dyDst,
- LPBITMAPINFOHEADER lpbi, /* format of frame to draw */
- INT xSrc, /* source rectangle */
- INT ySrc,
- INT dxSrc,
- INT dySrc,
- long dwRate, /* frames/second = (dwRate/dwScale) */
- long dwScale
+long VFWAPIV ICDrawBegin(
+ HIC hic,
+ long dwFlags,/* flags */
+ HPALETTE hpal, /* palette to draw with */
+ HWND hwnd, /* window to draw to */
+ HDC hdc, /* HDC to draw to */
+ INT xDst, /* destination rectangle */
+ INT yDst,
+ INT dxDst,
+ INT dyDst,
+ LPBITMAPINFOHEADER lpbi, /* format of frame to draw */
+ INT xSrc, /* source rectangle */
+ INT ySrc,
+ INT dxSrc,
+ INT dySrc,
+ long dwRate, /* frames/second = (dwRate/dwScale) */
+ long dwScale
);
/* as passed to ICM_DRAW_BEGIN (FIXME: correct only for Win32?) */
typedef struct {
- long dwFlags;
- HPALETTE hpal;
- HWND hwnd;
- HDC hdc;
- INT xDst;
- INT yDst;
- INT dxDst;
- INT dyDst;
- LPBITMAPINFOHEADER lpbi;
- INT xSrc;
- INT ySrc;
- INT dxSrc;
- INT dySrc;
- long dwRate;
- long dwScale;
+ long dwFlags;
+ HPALETTE hpal;
+ HWND hwnd;
+ HDC hdc;
+ INT xDst;
+ INT yDst;
+ INT dxDst;
+ INT dyDst;
+ LPBITMAPINFOHEADER lpbi;
+ INT xSrc;
+ INT ySrc;
+ INT dxSrc;
+ INT dySrc;
+ long dwRate;
+ long dwScale;
} ICDRAWBEGIN;
#define ICDRAW_HURRYUP 0x80000000L /* don't draw just buffer (hurry up!) */
#define ICDRAW_NOTKEYFRAME 0x08000000L /* this frame is not a key frame */
typedef struct {
- long dwFlags;
- void* lpFormat;
- void* lpData;
- long cbData;
- long lTime;
+ long dwFlags;
+ void* lpFormat;
+ void* lpData;
+ long cbData;
+ long lTime;
} ICDRAW;
long VFWAPIV ICDraw(HIC hic,long dwFlags,void* lpFormat,void* lpData,long cbData,long lTime);
-#define AVIGETFRAMEF_BESTDISPLAYFMT 1
+#define AVIGETFRAMEF_BESTDISPLAYFMT 1
typedef struct _AVISTREAMINFOA {
- long fccType;
- long fccHandler;
- long dwFlags; /* AVIIF_* */
- long dwCaps;
- short wPriority;
- short wLanguage;
- long dwScale;
- long dwRate; /* dwRate / dwScale == samples/second */
- long dwStart;
- long dwLength; /* In units above... */
- long dwInitialFrames;
- long dwSuggestedBufferSize;
- long dwQuality;
- long dwSampleSize;
- RECT rcFrame;
- long dwEditCount;
- long dwFormatChangeCount;
- char szName[64];
+ long fccType;
+ long fccHandler;
+ long dwFlags; /* AVIIF_* */
+ long dwCaps;
+ short wPriority;
+ short wLanguage;
+ long dwScale;
+ long dwRate; /* dwRate / dwScale == samples/second */
+ long dwStart;
+ long dwLength; /* In units above... */
+ long dwInitialFrames;
+ long dwSuggestedBufferSize;
+ long dwQuality;
+ long dwSampleSize;
+ RECT rcFrame;
+ long dwEditCount;
+ long dwFormatChangeCount;
+ char szName[64];
} AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
typedef struct _AVISTREAMINFOW {
- long fccType;
- long fccHandler;
- long dwFlags;
- long dwCaps;
- short wPriority;
- short wLanguage;
- long dwScale;
- long dwRate; /* dwRate / dwScale == samples/second */
- long dwStart;
- long dwLength; /* In units above... */
- long dwInitialFrames;
- long dwSuggestedBufferSize;
- long dwQuality;
- long dwSampleSize;
- RECT rcFrame;
- long dwEditCount;
- long dwFormatChangeCount;
- short szName[64];
+ long fccType;
+ long fccHandler;
+ long dwFlags;
+ long dwCaps;
+ short wPriority;
+ short wLanguage;
+ long dwScale;
+ long dwRate; /* dwRate / dwScale == samples/second */
+ long dwStart;
+ long dwLength; /* In units above... */
+ long dwInitialFrames;
+ long dwSuggestedBufferSize;
+ long dwQuality;
+ long dwSampleSize;
+ RECT rcFrame;
+ long dwEditCount;
+ long dwFormatChangeCount;
+ short szName[64];
} AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
DECL_WINELIB_TYPE_AW(AVISTREAMINFO)
DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
DECL_WINELIB_TYPE_AW(PAVISTREAMINFO)
-#define AVISTREAMINFO_DISABLED 0x00000001
-#define AVISTREAMINFO_FORMATCHANGES 0x00010000
+#define AVISTREAMINFO_DISABLED 0x00000001
+#define AVISTREAMINFO_FORMATCHANGES 0x00010000
/* AVIFILEINFO.dwFlags */
-#define AVIFILEINFO_HASINDEX 0x00000010
-#define AVIFILEINFO_MUSTUSEINDEX 0x00000020
-#define AVIFILEINFO_ISINTERLEAVED 0x00000100
-#define AVIFILEINFO_WASCAPTUREFILE 0x00010000
-#define AVIFILEINFO_COPYRIGHTED 0x00020000
+#define AVIFILEINFO_HASINDEX 0x00000010
+#define AVIFILEINFO_MUSTUSEINDEX 0x00000020
+#define AVIFILEINFO_ISINTERLEAVED 0x00000100
+#define AVIFILEINFO_WASCAPTUREFILE 0x00010000
+#define AVIFILEINFO_COPYRIGHTED 0x00020000
/* AVIFILEINFO.dwCaps */
-#define AVIFILECAPS_CANREAD 0x00000001
-#define AVIFILECAPS_CANWRITE 0x00000002
-#define AVIFILECAPS_ALLKEYFRAMES 0x00000010
-#define AVIFILECAPS_NOCOMPRESSION 0x00000020
+#define AVIFILECAPS_CANREAD 0x00000001
+#define AVIFILECAPS_CANWRITE 0x00000002
+#define AVIFILECAPS_ALLKEYFRAMES 0x00000010
+#define AVIFILECAPS_NOCOMPRESSION 0x00000020
typedef struct _AVIFILEINFOW {
long dwMaxBytesPerSec;
long dwSuggestedBufferSize;
long dwWidth;
long dwHeight;
- long dwScale;
+ long dwScale;
long dwRate;
long dwLength;
long dwEditCount;
long dwSuggestedBufferSize;
long dwWidth;
long dwHeight;
- long dwScale;
+ long dwScale;
long dwRate;
long dwLength;
long dwEditCount;
- char szFileType[64];
+ char szFileType[64];
} AVIFILEINFOA, * LPAVIFILEINFOA, *PAVIFILEINFOA;
DECL_WINELIB_TYPE_AW(AVIFILEINFO)
DECL_WINELIB_TYPE_AW(LPAVIFILEINFO)
/* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */
-#define AVICOMPRESSF_INTERLEAVE 0x00000001
-#define AVICOMPRESSF_DATARATE 0x00000002
-#define AVICOMPRESSF_KEYFRAMES 0x00000004
-#define AVICOMPRESSF_VALID 0x00000008
+#define AVICOMPRESSF_INTERLEAVE 0x00000001
+#define AVICOMPRESSF_DATARATE 0x00000002
+#define AVICOMPRESSF_KEYFRAMES 0x00000004
+#define AVICOMPRESSF_VALID 0x00000008
typedef struct {
- long fccType; /* stream type, for consistency */
- long fccHandler; /* compressor */
- long dwKeyFrameEvery; /* keyframe rate */
- long dwQuality; /* compress quality 0-10,000 */
- long dwBytesPerSecond; /* unsigned chars per second */
- long dwFlags; /* flags... see below */
- void* lpFormat; /* save format */
- long cbFormat;
- void* lpParms; /* compressor options */
- long cbParms;
- long dwInterleaveEvery; /* for non-video streams only */
+ long fccType; /* stream type, for consistency */
+ long fccHandler; /* compressor */
+ long dwKeyFrameEvery; /* keyframe rate */
+ long dwQuality; /* compress quality 0-10,000 */
+ long dwBytesPerSecond; /* unsigned chars per second */
+ long dwFlags; /* flags... see below */
+ void* lpFormat; /* save format */
+ long cbFormat;
+ void* lpParms; /* compressor options */
+ long cbParms;
+ long dwInterleaveEvery; /* for non-video streams only */
} AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
typedef struct {
- long cbSize; // set to sizeof(COMPVARS) before
- // calling ICCompressorChoose
- long dwFlags; // see below...
- HIC hic; // HIC of chosen compressor
- long fccType; // basically ICTYPE_VIDEO
- long fccHandler; // handler of chosen compressor or
- // "" or "DIB "
- LPBITMAPINFO lpbiIn; // input format
- LPBITMAPINFO lpbiOut; // output format - will compress to this
- void* lpBitsOut;
- void* lpBitsPrev;
- long lFrame;
- long lKey; // key frames how often?
- long lDataRate; // desired data rate KB/Sec
- long lQ; // desired quality
- long lKeyCount;
- void* lpState; // state of compressor
- long cbState; // size of the state
+ long cbSize; // set to sizeof(COMPVARS) before
+ // calling ICCompressorChoose
+ long dwFlags; // see below...
+ HIC hic; // HIC of chosen compressor
+ long fccType; // basically ICTYPE_VIDEO
+ long fccHandler; // handler of chosen compressor or
+ // "" or "DIB "
+ LPBITMAPINFO lpbiIn; // input format
+ LPBITMAPINFO lpbiOut; // output format - will compress to this
+ void* lpBitsOut;
+ void* lpBitsPrev;
+ long lFrame;
+ long lKey; // key frames how often?
+ long lDataRate; // desired data rate KB/Sec
+ long lQ; // desired quality
+ long lKeyCount;
+ void* lpState; // state of compressor
+ long cbState; // size of the state
} COMPVARS, *PCOMPVARS;
// FLAGS for dwFlags element of COMPVARS structure:
-#define AVIERR_OK 0
-#define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
-
-#define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
-#define AVIERR_BADFORMAT MAKE_AVIERR(102)
-#define AVIERR_MEMORY MAKE_AVIERR(103)
-#define AVIERR_INTERNAL MAKE_AVIERR(104)
-#define AVIERR_BADFLAGS MAKE_AVIERR(105)
-#define AVIERR_BADPARAM MAKE_AVIERR(106)
-#define AVIERR_BADSIZE MAKE_AVIERR(107)
-#define AVIERR_BADHANDLE MAKE_AVIERR(108)
-#define AVIERR_FILEREAD MAKE_AVIERR(109)
-#define AVIERR_FILEWRITE MAKE_AVIERR(110)
-#define AVIERR_FILEOPEN MAKE_AVIERR(111)
-#define AVIERR_COMPRESSOR MAKE_AVIERR(112)
-#define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
-#define AVIERR_READONLY MAKE_AVIERR(114)
-#define AVIERR_NODATA MAKE_AVIERR(115)
-#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
-#define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
-#define AVIERR_USERABORT MAKE_AVIERR(198)
-#define AVIERR_ERROR MAKE_AVIERR(199)
+#define AVIERR_OK 0
+#define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
+
+#define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
+#define AVIERR_BADFORMAT MAKE_AVIERR(102)
+#define AVIERR_MEMORY MAKE_AVIERR(103)
+#define AVIERR_INTERNAL MAKE_AVIERR(104)
+#define AVIERR_BADFLAGS MAKE_AVIERR(105)
+#define AVIERR_BADPARAM MAKE_AVIERR(106)
+#define AVIERR_BADSIZE MAKE_AVIERR(107)
+#define AVIERR_BADHANDLE MAKE_AVIERR(108)
+#define AVIERR_FILEREAD MAKE_AVIERR(109)
+#define AVIERR_FILEWRITE MAKE_AVIERR(110)
+#define AVIERR_FILEOPEN MAKE_AVIERR(111)
+#define AVIERR_COMPRESSOR MAKE_AVIERR(112)
+#define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
+#define AVIERR_READONLY MAKE_AVIERR(114)
+#define AVIERR_NODATA MAKE_AVIERR(115)
+#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
+#define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
+#define AVIERR_USERABORT MAKE_AVIERR(198)
+#define AVIERR_ERROR MAKE_AVIERR(199)
#ifdef __cplusplus
}
/* Windows Exit Procedure flag values */
-#define WEP_FREE_DLL 0
-#define WEP_SYSTEM_EXIT 1
+#define WEP_FREE_DLL 0
+#define WEP_SYSTEM_EXIT 1
typedef DWORD CALLBACK (*LPTHREAD_START_ROUTINE)(LPVOID);
#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004
/* GetTempFileName() Flags */
-#define TF_FORCEDRIVE 0x80
+#define TF_FORCEDRIVE 0x80
#define DRIVE_CANNOTDETERMINE 0
#define DRIVE_DOESNOTEXIST 1
/* comm */
-#define CBR_110 0xFF10
-#define CBR_300 0xFF11
-#define CBR_600 0xFF12
-#define CBR_1200 0xFF13
-#define CBR_2400 0xFF14
-#define CBR_4800 0xFF15
-#define CBR_9600 0xFF16
-#define CBR_14400 0xFF17
-#define CBR_19200 0xFF18
-#define CBR_38400 0xFF1B
-#define CBR_56000 0xFF1F
-#define CBR_128000 0xFF23
-#define CBR_256000 0xFF27
-
-#define NOPARITY 0
-#define ODDPARITY 1
-#define EVENPARITY 2
-#define MARKPARITY 3
-#define SPACEPARITY 4
-#define ONESTOPBIT 0
-#define ONE5STOPBITS 1
-#define TWOSTOPBITS 2
-
-#define IGNORE 0
+#define CBR_110 0xFF10
+#define CBR_300 0xFF11
+#define CBR_600 0xFF12
+#define CBR_1200 0xFF13
+#define CBR_2400 0xFF14
+#define CBR_4800 0xFF15
+#define CBR_9600 0xFF16
+#define CBR_14400 0xFF17
+#define CBR_19200 0xFF18
+#define CBR_38400 0xFF1B
+#define CBR_56000 0xFF1F
+#define CBR_128000 0xFF23
+#define CBR_256000 0xFF27
+
+#define NOPARITY 0
+#define ODDPARITY 1
+#define EVENPARITY 2
+#define MARKPARITY 3
+#define SPACEPARITY 4
+#define ONESTOPBIT 0
+#define ONE5STOPBITS 1
+#define TWOSTOPBITS 2
+
+#define IGNORE 0
#define INFINITE16 0xFFFF
#define INFINITE 0xFFFFFFFF
-#define CE_RXOVER 0x0001
-#define CE_OVERRUN 0x0002
-#define CE_RXPARITY 0x0004
-#define CE_FRAME 0x0008
-#define CE_BREAK 0x0010
-#define CE_CTSTO 0x0020
-#define CE_DSRTO 0x0040
-#define CE_RLSDTO 0x0080
-#define CE_TXFULL 0x0100
-#define CE_PTO 0x0200
-#define CE_IOE 0x0400
-#define CE_DNS 0x0800
-#define CE_OOP 0x1000
-#define CE_MODE 0x8000
-
-#define IE_BADID -1
-#define IE_OPEN -2
-#define IE_NOPEN -3
-#define IE_MEMORY -4
-#define IE_DEFAULT -5
-#define IE_HARDWARE -10
-#define IE_BYTESIZE -11
-#define IE_BAUDRATE -12
-
-#define EV_RXCHAR 0x0001
-#define EV_RXFLAG 0x0002
-#define EV_TXEMPTY 0x0004
-#define EV_CTS 0x0008
-#define EV_DSR 0x0010
-#define EV_RLSD 0x0020
-#define EV_BREAK 0x0040
-#define EV_ERR 0x0080
-#define EV_RING 0x0100
-#define EV_PERR 0x0200
-#define EV_CTSS 0x0400
-#define EV_DSRS 0x0800
-#define EV_RLSDS 0x1000
-#define EV_RINGTE 0x2000
-#define EV_RingTe EV_RINGTE
-
-#define SETXOFF 1
-#define SETXON 2
-#define SETRTS 3
-#define CLRRTS 4
-#define SETDTR 5
-#define CLRDTR 6
-#define RESETDEV 7
-#define SETBREAK 8
-#define CLRBREAK 9
-
-#define GETBASEIRQ 10
+#define CE_RXOVER 0x0001
+#define CE_OVERRUN 0x0002
+#define CE_RXPARITY 0x0004
+#define CE_FRAME 0x0008
+#define CE_BREAK 0x0010
+#define CE_CTSTO 0x0020
+#define CE_DSRTO 0x0040
+#define CE_RLSDTO 0x0080
+#define CE_TXFULL 0x0100
+#define CE_PTO 0x0200
+#define CE_IOE 0x0400
+#define CE_DNS 0x0800
+#define CE_OOP 0x1000
+#define CE_MODE 0x8000
+
+#define IE_BADID -1
+#define IE_OPEN -2
+#define IE_NOPEN -3
+#define IE_MEMORY -4
+#define IE_DEFAULT -5
+#define IE_HARDWARE -10
+#define IE_BYTESIZE -11
+#define IE_BAUDRATE -12
+
+#define EV_RXCHAR 0x0001
+#define EV_RXFLAG 0x0002
+#define EV_TXEMPTY 0x0004
+#define EV_CTS 0x0008
+#define EV_DSR 0x0010
+#define EV_RLSD 0x0020
+#define EV_BREAK 0x0040
+#define EV_ERR 0x0080
+#define EV_RING 0x0100
+#define EV_PERR 0x0200
+#define EV_CTSS 0x0400
+#define EV_DSRS 0x0800
+#define EV_RLSDS 0x1000
+#define EV_RINGTE 0x2000
+#define EV_RingTe EV_RINGTE
+
+#define SETXOFF 1
+#define SETXON 2
+#define SETRTS 3
+#define CLRRTS 4
+#define SETDTR 5
+#define CLRDTR 6
+#define RESETDEV 7
+#define SETBREAK 8
+#define CLRBREAK 9
+
+#define GETBASEIRQ 10
/* Purge functions for Comm Port */
-#define PURGE_TXABORT 0x0001 /* Kill the pending/current writes to the
- comm port */
-#define PURGE_RXABORT 0x0002 /*Kill the pending/current reads to
- the comm port */
+#define PURGE_TXABORT 0x0001 /* Kill the pending/current writes to the
+ comm port */
+#define PURGE_RXABORT 0x0002 /*Kill the pending/current reads to
+ the comm port */
#define PURGE_TXCLEAR 0x0004 /* Kill the transmit queue if there*/
#define PURGE_RXCLEAR 0x0008 /* Kill the typeahead buffer if there*/
#define MS_RING_ON ((DWORD)0x0040)
#define MS_RLSD_ON ((DWORD)0x0080)
-#define RTS_CONTROL_DISABLE 0
-#define RTS_CONTROL_ENABLE 1
-#define RTS_CONTROL_HANDSHAKE 2
-#define RTS_CONTROL_TOGGLE 3
+#define RTS_CONTROL_DISABLE 0
+#define RTS_CONTROL_ENABLE 1
+#define RTS_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_TOGGLE 3
-#define DTR_CONTROL_DISABLE 0
-#define DTR_CONTROL_ENABLE 1
-#define DTR_CONTROL_HANDSHAKE 2
+#define DTR_CONTROL_DISABLE 0
+#define DTR_CONTROL_ENABLE 1
+#define DTR_CONTROL_HANDSHAKE 2
-#define CSTF_CTSHOLD 0x01
-#define CSTF_DSRHOLD 0x02
-#define CSTF_RLSDHOLD 0x04
-#define CSTF_XOFFHOLD 0x08
-#define CSTF_XOFFSENT 0x10
-#define CSTF_EOF 0x20
-#define CSTF_TXIM 0x40
+#define CSTF_CTSHOLD 0x01
+#define CSTF_DSRHOLD 0x02
+#define CSTF_RLSDHOLD 0x04
+#define CSTF_XOFFHOLD 0x08
+#define CSTF_XOFFSENT 0x10
+#define CSTF_EOF 0x20
+#define CSTF_TXIM 0x40
#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
#define RT_GROUP_ICON WINELIB_NAME_AW(RT_GROUP_ICON)
-#define LMEM_FIXED 0
+#define LMEM_FIXED 0
#define LMEM_MOVEABLE 0x0002
#define LMEM_NOCOMPACT 0x0010
#define LMEM_NODISCARD 0x0020
#define LMEM_ZEROINIT 0x0040
#define LMEM_MODIFY 0x0080
#define LMEM_DISCARDABLE 0x0F00
-#define LMEM_DISCARDED 0x4000
-#define LMEM_LOCKCOUNT 0x00FF
+#define LMEM_DISCARDED 0x4000
+#define LMEM_LOCKCOUNT 0x00FF
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
*/
/* STARTUPINFO.dwFlags */
-#define STARTF_USESHOWWINDOW 0x00000001
-#define STARTF_USESIZE 0x00000002
-#define STARTF_USEPOSITION 0x00000004
-#define STARTF_USECOUNTCHARS 0x00000008
-#define STARTF_USEFILLATTRIBUTE 0x00000010
-#define STARTF_RUNFULLSCREEN 0x00000020
-#define STARTF_FORCEONFEEDBACK 0x00000040
-#define STARTF_FORCEOFFFEEDBACK 0x00000080
-#define STARTF_USESTDHANDLES 0x00000100
-#define STARTF_USEHOTKEY 0x00000200
+#define STARTF_USESHOWWINDOW 0x00000001
+#define STARTF_USESIZE 0x00000002
+#define STARTF_USEPOSITION 0x00000004
+#define STARTF_USECOUNTCHARS 0x00000008
+#define STARTF_USEFILLATTRIBUTE 0x00000010
+#define STARTF_RUNFULLSCREEN 0x00000020
+#define STARTF_FORCEONFEEDBACK 0x00000040
+#define STARTF_FORCEOFFFEEDBACK 0x00000080
+#define STARTF_USESTDHANDLES 0x00000100
+#define STARTF_USEHOTKEY 0x00000200
typedef struct {
- DWORD cb; /* 00: size of struct */
- LPSTR lpReserved; /* 04: */
- LPSTR lpDesktop; /* 08: */
- LPSTR lpTitle; /* 0c: */
- DWORD dwX; /* 10: */
- DWORD dwY; /* 14: */
- DWORD dwXSize; /* 18: */
- DWORD dwYSize; /* 1c: */
- DWORD dwXCountChars; /* 20: */
- DWORD dwYCountChars; /* 24: */
- DWORD dwFillAttribute; /* 28: */
- DWORD dwFlags; /* 2c: */
- WORD wShowWindow; /* 30: */
- WORD cbReserved2; /* 32: */
- BYTE *lpReserved2; /* 34: */
- HANDLE hStdInput; /* 38: */
- HANDLE hStdOutput; /* 3c: */
- HANDLE hStdError; /* 40: */
+ DWORD cb; /* 00: size of struct */
+ LPSTR lpReserved; /* 04: */
+ LPSTR lpDesktop; /* 08: */
+ LPSTR lpTitle; /* 0c: */
+ DWORD dwX; /* 10: */
+ DWORD dwY; /* 14: */
+ DWORD dwXSize; /* 18: */
+ DWORD dwYSize; /* 1c: */
+ DWORD dwXCountChars; /* 20: */
+ DWORD dwYCountChars; /* 24: */
+ DWORD dwFillAttribute; /* 28: */
+ DWORD dwFlags; /* 2c: */
+ WORD wShowWindow; /* 30: */
+ WORD cbReserved2; /* 32: */
+ BYTE *lpReserved2; /* 34: */
+ HANDLE hStdInput; /* 38: */
+ HANDLE hStdOutput; /* 3c: */
+ HANDLE hStdError; /* 40: */
} STARTUPINFOA, *LPSTARTUPINFOA;
typedef struct {
DECL_WINELIB_TYPE_AW(LPSTARTUPINFO)
typedef struct {
- HANDLE hProcess;
- HANDLE hThread;
- DWORD dwProcessId;
- DWORD dwThreadId;
+ HANDLE hProcess;
+ HANDLE hThread;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;
typedef struct {
/* File creation flags
*/
#define FILE_FLAG_WRITE_THROUGH 0x80000000UL
-#define FILE_FLAG_OVERLAPPED 0x40000000L
+#define FILE_FLAG_OVERLAPPED 0x40000000L
#define FILE_FLAG_NO_BUFFERING 0x20000000L
#define FILE_FLAG_RANDOM_ACCESS 0x10000000L
#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000L
typedef struct tagSYSTEM_INFO
{
union {
- DWORD dwOemId; /* Obsolete field - do not use */
- struct {
- WORD wProcessorArchitecture;
- WORD wReserved;
- } DUMMYSTRUCTNAME;
+ DWORD dwOemId; /* Obsolete field - do not use */
+ struct {
+ WORD wProcessorArchitecture;
+ WORD wReserved;
+ } DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
- DWORD dwPageSize;
- LPVOID lpMinimumApplicationAddress;
- LPVOID lpMaximumApplicationAddress;
- DWORD dwActiveProcessorMask;
- DWORD dwNumberOfProcessors;
- DWORD dwProcessorType;
- DWORD dwAllocationGranularity;
- WORD wProcessorLevel;
- WORD wProcessorRevision;
+ DWORD dwPageSize;
+ LPVOID lpMinimumApplicationAddress;
+ LPVOID lpMaximumApplicationAddress;
+ DWORD dwActiveProcessorMask;
+ DWORD dwNumberOfProcessors;
+ DWORD dwProcessorType;
+ DWORD dwAllocationGranularity;
+ WORD wProcessorLevel;
+ WORD wProcessorRevision;
} SYSTEM_INFO, *LPSYSTEM_INFO;
/* {G,S}etPriorityClass */
-#define NORMAL_PRIORITY_CLASS 0x00000020
-#define IDLE_PRIORITY_CLASS 0x00000040
-#define HIGH_PRIORITY_CLASS 0x00000080
-#define REALTIME_PRIORITY_CLASS 0x00000100
+#define NORMAL_PRIORITY_CLASS 0x00000020
+#define IDLE_PRIORITY_CLASS 0x00000040
+#define HIGH_PRIORITY_CLASS 0x00000080
+#define REALTIME_PRIORITY_CLASS 0x00000100
typedef WIN_BOOL CALLBACK (*ENUMRESTYPEPROCA)(HMODULE,LPSTR,LONG);
typedef WIN_BOOL CALLBACK (*ENUMRESTYPEPROCW)(HMODULE,LPWSTR,LONG);
DECL_WINELIB_TYPE_AW(ENUMRESLANGPROC)
/* flags that can be passed to LoadLibraryEx */
-#define DONT_RESOLVE_DLL_REFERENCES 0x00000001
-#define LOAD_LIBRARY_AS_DATAFILE 0x00000002
-#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
+#define DONT_RESOLVE_DLL_REFERENCES 0x00000001
+#define LOAD_LIBRARY_AS_DATAFILE 0x00000002
+#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
/* ifdef _x86_ ... */
typedef struct _LDT_ENTRY {
- WORD LimitLow;
- WORD BaseLow;
+ WORD LimitLow;
+ WORD BaseLow;
union {
- struct {
- BYTE BaseMid;
- BYTE Flags1;/*Declare as bytes to avoid alignment problems */
- BYTE Flags2;
- BYTE BaseHi;
- } Bytes;
- struct {
- unsigned BaseMid : 8;
- unsigned Type : 5;
- unsigned Dpl : 2;
- unsigned Pres : 1;
- unsigned LimitHi : 4;
- unsigned Sys : 1;
- unsigned Reserved_0 : 1;
- unsigned Default_Big : 1;
- unsigned Granularity : 1;
- unsigned BaseHi : 8;
- } Bits;
+ struct {
+ BYTE BaseMid;
+ BYTE Flags1;/*Declare as bytes to avoid alignment problems */
+ BYTE Flags2;
+ BYTE BaseHi;
+ } Bytes;
+ struct {
+ unsigned BaseMid : 8;
+ unsigned Type : 5;
+ unsigned Dpl : 2;
+ unsigned Pres : 1;
+ unsigned LimitHi : 4;
+ unsigned Sys : 1;
+ unsigned Reserved_0 : 1;
+ unsigned Default_Big : 1;
+ unsigned Granularity : 1;
+ unsigned BaseHi : 8;
+ } Bits;
} HighWord;
} LDT_ENTRY, *LPLDT_ENTRY;
* This one seems to be a Win32 only definition. It also is defined with
* WINAPI instead of CALLBACK in the windows headers.
*/
-typedef DWORD WINAPI (*LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER,
+typedef DWORD WINAPI (*LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER,
LARGE_INTEGER, DWORD, DWORD, HANDLE,
HANDLE, LPVOID);
-#define WAIT_FAILED 0xffffffff
-#define WAIT_OBJECT_0 0
-#define WAIT_ABANDONED STATUS_ABANDONED_WAIT_0
-#define WAIT_ABANDONED_0 STATUS_ABANDONED_WAIT_0
-#define WAIT_IO_COMPLETION STATUS_USER_APC
-#define WAIT_TIMEOUT STATUS_TIMEOUT
+#define WAIT_FAILED 0xffffffff
+#define WAIT_OBJECT_0 0
+#define WAIT_ABANDONED STATUS_ABANDONED_WAIT_0
+#define WAIT_ABANDONED_0 STATUS_ABANDONED_WAIT_0
+#define WAIT_IO_COMPLETION STATUS_USER_APC
+#define WAIT_TIMEOUT STATUS_TIMEOUT
#define STILL_ACTIVE STATUS_PENDING
-#define PAGE_NOACCESS 0x01
-#define PAGE_READONLY 0x02
-#define PAGE_READWRITE 0x04
-#define PAGE_WRITECOPY 0x08
-#define PAGE_EXECUTE 0x10
-#define PAGE_EXECUTE_READ 0x20
-#define PAGE_EXECUTE_READWRITE 0x40
-#define PAGE_EXECUTE_WRITECOPY 0x80
-#define PAGE_GUARD 0x100
-#define PAGE_NOCACHE 0x200
+#define PAGE_NOACCESS 0x01
+#define PAGE_READONLY 0x02
+#define PAGE_READWRITE 0x04
+#define PAGE_WRITECOPY 0x08
+#define PAGE_EXECUTE 0x10
+#define PAGE_EXECUTE_READ 0x20
+#define PAGE_EXECUTE_READWRITE 0x40
+#define PAGE_EXECUTE_WRITECOPY 0x80
+#define PAGE_GUARD 0x100
+#define PAGE_NOCACHE 0x200
#define MEM_COMMIT 0x00001000
#define MEM_RESERVE 0x00002000
/* Wine extension; Windows doesn't have a name for this code */
#define EXCEPTION_CRITICAL_SECTION_WAIT 0xc0000194
-#define DUPLICATE_CLOSE_SOURCE 0x00000001
-#define DUPLICATE_SAME_ACCESS 0x00000002
+#define DUPLICATE_CLOSE_SOURCE 0x00000001
+#define DUPLICATE_SAME_ACCESS 0x00000002
#define HANDLE_FLAG_INHERIT 0x00000001
#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x00000002
/* Could this type be considered opaque? */
typedef struct {
- LPVOID DebugInfo;
- LONG LockCount;
- LONG RecursionCount;
- HANDLE OwningThread;
- HANDLE LockSemaphore;
- DWORD Reserved;
+ LPVOID DebugInfo;
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread;
+ HANDLE LockSemaphore;
+ DWORD Reserved;
}CRITICAL_SECTION;
#ifdef __WINE__
} OSVERSIONINFO16;
typedef struct {
- DWORD dwOSVersionInfoSize;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- DWORD dwBuildNumber;
- DWORD dwPlatformId;
- CHAR szCSDVersion[128];
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ CHAR szCSDVersion[128];
} OSVERSIONINFOA;
typedef struct {
- DWORD dwOSVersionInfoSize;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- DWORD dwBuildNumber;
- DWORD dwPlatformId;
- WCHAR szCSDVersion[128];
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ WCHAR szCSDVersion[128];
} OSVERSIONINFOW;
DECL_WINELIB_TYPE_AW(OSVERSIONINFO)
typedef struct tagCOMMTIMEOUTS {
- DWORD ReadIntervalTimeout;
- DWORD ReadTotalTimeoutMultiplier;
- DWORD ReadTotalTimeoutConstant;
- DWORD WriteTotalTimeoutMultiplier;
- DWORD WriteTotalTimeoutConstant;
+ DWORD ReadIntervalTimeout;
+ DWORD ReadTotalTimeoutMultiplier;
+ DWORD ReadTotalTimeoutConstant;
+ DWORD WriteTotalTimeoutMultiplier;
+ DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
-
+
#include "poppack.h"
typedef void CALLBACK (*PAPCFUNC)(ULONG_PTR);
WIN_BOOL WINAPI TransmitCommChar(INT,CHAR);
WIN_BOOL WINAPI SetupComm(HANDLE, DWORD, DWORD);
WIN_BOOL WINAPI GetCommProperties(HANDLE, LPDCB *);
-
+
/*DWORD WINAPI GetVersion( void );*/
WIN_BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16*);
WIN_BOOL WINAPI GetVersionExA(OSVERSIONINFOA*);
WIN_BOOL WINAPI SetProcessWorkingSetSize(HANDLE,DWORD,DWORD);
WIN_BOOL WINAPI TerminateProcess(HANDLE,DWORD);
WIN_BOOL WINAPI TerminateThread(HANDLE,DWORD);
-WIN_BOOL WINAPI GetExitCodeThread(HANDLE,LPDWORD);
+WIN_BOOL WINAPI GetExitCodeThread(HANDLE,LPDWORD);
/* GetBinaryType return values.
*/
WIN_BOOL WINAPI FlushFileBuffers(HANDLE);
WIN_BOOL WINAPI FlushViewOfFile(LPCVOID, DWORD);
DWORD WINAPI FormatMessageA(DWORD,LPCVOID,DWORD,DWORD,LPSTR,
- DWORD,LPDWORD);
+ DWORD,LPDWORD);
DWORD WINAPI FormatMessageW(DWORD,LPCVOID,DWORD,DWORD,LPWSTR,
- DWORD,LPDWORD);
+ DWORD,LPDWORD);
#define FormatMessage WINELIB_NAME_AW(FormatMessage)
WIN_BOOL WINAPI FreeConsole(void);
WIN_BOOL WINAPI FreeEnvironmentStringsA(LPSTR);
#define LookupAccountSid WINELIB_NAME_AW(LookupAccountSidW)
WIN_BOOL WINAPI LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
WIN_BOOL WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
-WIN_BOOL WINAPI LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);
+WIN_BOOL WINAPI LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);
WIN_BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,LPVOID);
WIN_BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,LPVOID);
#define LookupPrivilegeValue WINELIB_NAME_AW(LookupPrivilegeValue)
WIN_BOOL WINAPI ReadConsoleW(HANDLE,LPVOID,DWORD,LPDWORD,LPVOID);
#define ReadConsole WINELIB_NAME_AW(ReadConsole)
WIN_BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,
- COORD,LPDWORD);
+ COORD,LPDWORD);
#define ReadConsoleOutputCharacter WINELIB_NAME_AW(ReadConsoleOutputCharacter)
WIN_BOOL WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,LPVOID,DWORD,DWORD *,DWORD *);
WIN_BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,LPVOID,DWORD,DWORD *,DWORD *);
WIN_BOOL WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
WIN_BOOL WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
#define WritePrivateProfileString WINELIB_NAME_AW(WritePrivateProfileString)
-WIN_BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
-WIN_BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
+WIN_BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
+WIN_BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
#define WritePrivateProfileSection WINELIB_NAME_AW(WritePrivateProfileSection)
WIN_BOOL WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
WIN_BOOL WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
#ifdef __i386__
# if defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)))
-# ifndef _EGCS_
+# ifndef _EGCS_
#define __stdcall __attribute__((__stdcall__))
#define __cdecl __attribute__((__cdecl__))
# define __RESTORE_ES __asm__ __volatile__("pushl %ds\n\tpopl %es")
# else
// # error You need gcc >= 2.7 to build Wine on a 386
# endif
-#else
+#else
# define __stdcall
# define __cdecl
# define __RESTORE_ES
#ifdef STRICT
#define DECLARE_HANDLE(a) \
- typedef struct a##__ { int unused; } *a; \
- typedef a *P##a; \
- typedef a *LP##a
+ typedef struct a##__ { int unused; } *a; \
+ typedef a *P##a; \
+ typedef a *LP##a
#else /*STRICT*/
#define DECLARE_HANDLE(a) \
- typedef HANDLE a; \
- typedef a *P##a; \
- typedef a *LP##a
+ typedef HANDLE a; \
+ typedef a *P##a; \
+ typedef a *LP##a
#endif /*STRICT*/
DECLARE_HANDLE(HACMDRIVERID);
typedef UINT16 *LPUINT16;
#define DECLARE_HANDLE16(a) \
- typedef HANDLE16 a##16; \
- typedef a##16 *P##a##16; \
- typedef a##16 *NP##a##16; \
- typedef a##16 *LP##a##16
+ typedef HANDLE16 a##16; \
+ typedef a##16 *P##a##16; \
+ typedef a##16 *NP##a##16; \
+ typedef a##16 *LP##a##16
DECLARE_HANDLE16(HACMDRIVERID);
DECLARE_HANDLE16(HACMDRIVER);
/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
/* Note: These macros are semantically broken, at least for wrc. wrc
- spits out data in the platform's current binary format, *not* in
+ spits out data in the platform's current binary format, *not* in
little-endian format. These macros are used throughout the resource
- code to load and store data to the resources. Since it is unlikely
- that we'll ever be dealing with little-endian resource data, the
- byte-swapping nature of these macros has been disabled. Rather than
+ code to load and store data to the resources. Since it is unlikely
+ that we'll ever be dealing with little-endian resource data, the
+ byte-swapping nature of these macros has been disabled. Rather than
remove the use of these macros from the resource loading code, the
- macros have simply been disabled. In the future, someone may want
+ macros have simply been disabled. In the future, someone may want
to reactivate these macros for other purposes. In that case, the
- resource code will have to be modified to use different macros. */
+ resource code will have to be modified to use different macros. */
#if 1
#define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
typedef struct tagPOINTS
{
- SHORT x;
- SHORT y;
+ SHORT x;
+ SHORT y;
} POINTS, *PPOINTS, *LPPOINTS;
typedef struct tagRECTL
{
LONG left;
- LONG top;
+ LONG top;
LONG right;
LONG bottom;
} RECTL, *PRECTL, *LPRECTL;
#define FACILITY_RPC 1
#define FACILITY_DISPATCH 2
#define FACILITY_STORAGE 3
-#define FACILITY_ITF 4
-#define FACILITY_WIN32 7
+#define FACILITY_ITF 4
+#define FACILITY_WIN32 7
#define FACILITY_WINDOWS 8
#define FACILITY_SSPI 9
#define FACILITY_CONTROL 10
#define FACILITY_CERT 11
#define FACILITY_INTERNET 12
-#define SEVERITY_ERROR 1
+#define SEVERITY_ERROR 1
#define MAKE_HRESULT(sev,fac,code) \
#define DRAGDROP_E_ALREADYREGISTERED 0x80040101L
#define DRAGDROP_S_USEDEFAULTCURSORS 0x00040102L
-#define E_UNEXPECTED 0x8000FFFF
+#define E_UNEXPECTED 0x8000FFFF
-#define E_NOTIMPL 0x80004001
-#define E_NOINTERFACE 0x80004002
-#define E_POINTER 0x80004003
-#define E_ABORT 0x80004004
-#define E_FAIL 0x80004005
+#define E_NOTIMPL 0x80004001
+#define E_NOINTERFACE 0x80004002
+#define E_POINTER 0x80004003
+#define E_ABORT 0x80004004
+#define E_FAIL 0x80004005
#define E_UNSPEC E_FAIL /* must to be defined (used by FileMoniker, IOleLink and DoDragDrop as a return value) */
-/*#define CO_E_INIT_TLS 0x80004006
-#define CO_E_INIT_SHARED_ALLOCATOR 0x80004007
-#define CO_E_INIT_MEMORY_ALLOCATOR 0x80004008
-#define CO_E_INIT_CLASS_CACHE 0x80004009
-#define CO_E_INIT_RPC_CHANNEL 0x8000400A
-#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL 0x8000400B
-#define CO_E_INIT_TLS_CHANNEL_CONTROL 0x8000400C
-#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR 0x8000400D
-#define CO_E_INIT_SCM_MUTEX_EXISTS 0x8000400E
-#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS 0x8000400F
-#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE 0x80004010
-#define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011
-#define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012 */
+/*#define CO_E_INIT_TLS 0x80004006
+#define CO_E_INIT_SHARED_ALLOCATOR 0x80004007
+#define CO_E_INIT_MEMORY_ALLOCATOR 0x80004008
+#define CO_E_INIT_CLASS_CACHE 0x80004009
+#define CO_E_INIT_RPC_CHANNEL 0x8000400A
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL 0x8000400B
+#define CO_E_INIT_TLS_CHANNEL_CONTROL 0x8000400C
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR 0x8000400D
+#define CO_E_INIT_SCM_MUTEX_EXISTS 0x8000400E
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS 0x8000400F
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE 0x80004010
+#define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011
+#define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012 */
#define CO_S_NOTALLINTERFACES 0x00080012
#define CO_E_NOTINITIALIZED 0x800401F0
#define OLE_S_FIRST 0x00040000L
#define OLE_S_LAST 0x000400FFL
-#define OLE_E_ENUM_NOMORE 0x80040002
-#define OLE_E_ADVISENOTSUPPORTED 0x80040003
-#define OLE_E_NOCONNECTION 0x80040004
-#define OLE_E_NOTRUNNING 0x80040005
-#define OLE_E_NOCACHE 0x80040006
-#define OLE_E_BLANK 0x80040007
-#define OLE_E_NOT_INPLACEACTIVE 0x80040010
-#define OLE_E_STATIC 0x8004000B
-#define OLE_E_PROMPTSAVECANCELLED 0x8004000C
+#define OLE_E_ENUM_NOMORE 0x80040002
+#define OLE_E_ADVISENOTSUPPORTED 0x80040003
+#define OLE_E_NOCONNECTION 0x80040004
+#define OLE_E_NOTRUNNING 0x80040005
+#define OLE_E_NOCACHE 0x80040006
+#define OLE_E_BLANK 0x80040007
+#define OLE_E_NOT_INPLACEACTIVE 0x80040010
+#define OLE_E_STATIC 0x8004000B
+#define OLE_E_PROMPTSAVECANCELLED 0x8004000C
#define OLE_S_USEREG 0x00040000
#define OLE_S_STATIC 0x00040001
#define DV_E_TYMED 0x80040069
#define CLASS_E_NOAGGREGATION 0x80040110
-#define CLASS_E_CLASSNOTAVAILABLE 0x80040111
+#define CLASS_E_CLASSNOTAVAILABLE 0x80040111
#define DATA_S_SAMEFORMATETC 0x80040130
-#define E_ACCESSDENIED 0x80070005
-#define E_HANDLE 0x80070006
-#define E_OUTOFMEMORY 0x8007000E
-#define E_INVALIDARG 0x80070057
+#define E_ACCESSDENIED 0x80070005
+#define E_HANDLE 0x80070006
+#define E_OUTOFMEMORY 0x8007000E
+#define E_INVALIDARG 0x80070057
/*#define OLE_E_FIRST 0x80040000L */
/*#define OLE_E_LAST 0x800400FFL */
#define MK_E_NOSTORAGE 0x800401ED
#define MK_E_NOPREFIX 0x800401EE
-#define STG_E_INVALIDFUNCTION 0x80030001
-#define STG_E_FILENOTFOUND 0x80030002
-#define STG_E_PATHNOTFOUND 0x80030003
-#define STG_E_TOOMANYOPENFILES 0x80030004
-#define STG_E_ACCESSDENIED 0x80030005
-#define STG_E_INVALIDHANDLE 0x80030006
-#define STG_E_INSUFFICIENTMEMORY 0x80030008
-#define STG_E_INVALIDPOINTER 0x80030009
-#define STG_E_NOMOREFILES 0x80030012
-#define STG_E_DISKISWRITEPROTECTED 0x80030013
-#define STG_E_SEEKERROR 0x80030019
-#define STG_E_WRITEFAULT 0x8003001D
-#define STG_E_READFAULT 0x8003001E
-#define STG_E_SHAREVIOLATION 0x80030020
-#define STG_E_LOCKVIOLATION 0x80030021
-#define STG_E_FILEALREADYEXISTS 0x80030050
-#define STG_E_INVALIDPARAMETER 0x80030057
-#define STG_E_MEDIUMFULL 0x80030070
-#define STG_E_ABNORMALAPIEXIT 0x800300FA
-#define STG_E_INVALIDHEADER 0x800300FB
-#define STG_E_INVALIDNAME 0x800300FC
-#define STG_E_UNKNOWN 0x800300FD
-#define STG_E_UNIMPLEMENTEDFUNCTION 0x800300FE
-#define STG_E_INVALIDFLAG 0x800300FF
-#define STG_E_INUSE 0x80030100
-#define STG_E_NOTCURRENT 0x80030101
-#define STG_E_REVERTED 0x80030102
-#define STG_E_CANTSAVE 0x80030103
-#define STG_E_OLDFORMAT 0x80030104
-#define STG_E_OLDDLL 0x80030105
-#define STG_E_SHAREREQUIRED 0x80030106
-#define STG_E_NOTFILEBASEDSTORAGE 0x80030107
-#define STG_E_EXTANTMARSHALLINGS 0x80030108
+#define STG_E_INVALIDFUNCTION 0x80030001
+#define STG_E_FILENOTFOUND 0x80030002
+#define STG_E_PATHNOTFOUND 0x80030003
+#define STG_E_TOOMANYOPENFILES 0x80030004
+#define STG_E_ACCESSDENIED 0x80030005
+#define STG_E_INVALIDHANDLE 0x80030006
+#define STG_E_INSUFFICIENTMEMORY 0x80030008
+#define STG_E_INVALIDPOINTER 0x80030009
+#define STG_E_NOMOREFILES 0x80030012
+#define STG_E_DISKISWRITEPROTECTED 0x80030013
+#define STG_E_SEEKERROR 0x80030019
+#define STG_E_WRITEFAULT 0x8003001D
+#define STG_E_READFAULT 0x8003001E
+#define STG_E_SHAREVIOLATION 0x80030020
+#define STG_E_LOCKVIOLATION 0x80030021
+#define STG_E_FILEALREADYEXISTS 0x80030050
+#define STG_E_INVALIDPARAMETER 0x80030057
+#define STG_E_MEDIUMFULL 0x80030070
+#define STG_E_ABNORMALAPIEXIT 0x800300FA
+#define STG_E_INVALIDHEADER 0x800300FB
+#define STG_E_INVALIDNAME 0x800300FC
+#define STG_E_UNKNOWN 0x800300FD
+#define STG_E_UNIMPLEMENTEDFUNCTION 0x800300FE
+#define STG_E_INVALIDFLAG 0x800300FF
+#define STG_E_INUSE 0x80030100
+#define STG_E_NOTCURRENT 0x80030101
+#define STG_E_REVERTED 0x80030102
+#define STG_E_CANTSAVE 0x80030103
+#define STG_E_OLDFORMAT 0x80030104
+#define STG_E_OLDDLL 0x80030105
+#define STG_E_SHAREREQUIRED 0x80030106
+#define STG_E_NOTFILEBASEDSTORAGE 0x80030107
+#define STG_E_EXTANTMARSHALLINGS 0x80030108
#define CONVERT10_E_OLESTREAM_GET 0x800401C0
#define CONVERT10_E_OLESTREAM_PUT 0x800401C1
#define CONVERT10_E_STG_DIB_TO_BITMAP 0x800401C6
/* alten versionen
-#define E_NOTIMPL 0x80000001
-#define E_OUTOFMEMORY 0x80000002
-#define E_INVALIDARG 0x80000003
-#define E_NOINTERFACE 0x80000004
-#define E_POINTER 0x80000005
-#define E_HANDLE 0x80000006
-#define E_ABORT 0x80000007
-#define E_FAIL 0x80000008
-#define E_ACCESSDENIED 0x80000009 */
+#define E_NOTIMPL 0x80000001
+#define E_OUTOFMEMORY 0x80000002
+#define E_INVALIDARG 0x80000003
+#define E_NOINTERFACE 0x80000004
+#define E_POINTER 0x80000005
+#define E_HANDLE 0x80000006
+#define E_ABORT 0x80000007
+#define E_FAIL 0x80000008
+#define E_ACCESSDENIED 0x80000009 */
/* Obtained from lcc-win32 include files */
-#define GDI_ERROR 0xffffffff
+#define GDI_ERROR 0xffffffff
/* registry errors */
#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2)
#define CLASS_E_NOAGGREGATION 0x80040110
-#define CLASS_E_CLASSNOTAVAILABLE 0x80040111
+#define CLASS_E_CLASSNOTAVAILABLE 0x80040111
#define OLEOBJ_E_NOVERBS 0x00040180L
/* Defines */
/* Argument 1 passed to the DllEntryProc. */
-#define DLL_PROCESS_DETACH 0 /* detach process (unload library) */
-#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */
-#define DLL_THREAD_ATTACH 2 /* attach new thread */
-#define DLL_THREAD_DETACH 3 /* detach thread */
+#define DLL_PROCESS_DETACH 0 /* detach process (unload library) */
+#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */
+#define DLL_THREAD_ATTACH 2 /* attach new thread */
+#define DLL_THREAD_DETACH 3 /* detach thread */
/* u.x.wProcessorArchitecture (NT) */
-#define PROCESSOR_ARCHITECTURE_INTEL 0
-#define PROCESSOR_ARCHITECTURE_MIPS 1
-#define PROCESSOR_ARCHITECTURE_ALPHA 2
-#define PROCESSOR_ARCHITECTURE_PPC 3
-#define PROCESSOR_ARCHITECTURE_SHX 4
-#define PROCESSOR_ARCHITECTURE_ARM 5
-#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
+#define PROCESSOR_ARCHITECTURE_INTEL 0
+#define PROCESSOR_ARCHITECTURE_MIPS 1
+#define PROCESSOR_ARCHITECTURE_ALPHA 2
+#define PROCESSOR_ARCHITECTURE_PPC 3
+#define PROCESSOR_ARCHITECTURE_SHX 4
+#define PROCESSOR_ARCHITECTURE_ARM 5
+#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
/* dwProcessorType */
#define PROCESSOR_INTEL_386 386
#define HEAP_WINE_SHARED 0x08000000 /* Not a Win32 flag */
/* Processor feature flags. */
-#define PF_FLOATING_POINT_PRECISION_ERRATA 0
-#define PF_FLOATING_POINT_EMULATED 1
-#define PF_COMPARE_EXCHANGE_DOUBLE 2
-#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
-#define PF_PPC_MOVEMEM_64BIT_OK 4
-#define PF_ALPHA_BYTE_INSTRUCTIONS 5
+#define PF_FLOATING_POINT_PRECISION_ERRATA 0
+#define PF_FLOATING_POINT_EMULATED 1
+#define PF_COMPARE_EXCHANGE_DOUBLE 2
+#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
+#define PF_PPC_MOVEMEM_64BIT_OK 4
+#define PF_ALPHA_BYTE_INSTRUCTIONS 5
/* based on wine-20010510 -- alex */
-#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
-#define PF_AMD3D_INSTRUCTIONS_AVAILABLE 7
-#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
+#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
+#define PF_AMD3D_INSTRUCTIONS_AVAILABLE 7
+#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
/* The Win32 register context */
{
DWORD ControlWord;
DWORD StatusWord;
- DWORD TagWord;
+ DWORD TagWord;
DWORD ErrorOffset;
DWORD ErrorSelector;
DWORD DataOffset;
- DWORD DataSelector;
+ DWORD DataSelector;
BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
DWORD Cr0NpxState;
} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
DWORD SegGs;
DWORD SegFs;
DWORD SegEs;
- DWORD SegDs;
+ DWORD SegDs;
/* These are selected by CONTEXT_INTEGER */
DWORD Edi;
DWORD Esi;
DWORD Ebx;
- DWORD Edx;
+ DWORD Edx;
DWORD Ecx;
DWORD Eax;
/* These are selected by CONTEXT_CONTROL */
- DWORD Ebp;
+ DWORD Ebp;
DWORD Eip;
DWORD SegCs;
DWORD EFlags;
#define CONTEXT_ALPHA 0x00020000
-#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
-#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
-#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
+#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
+#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
typedef struct _CONTEXT
#ifdef __sparc__
-/*
- * FIXME:
+/*
+ * FIXME:
*
- * There is no official CONTEXT structure defined for the SPARC
+ * There is no official CONTEXT structure defined for the SPARC
* architecture, so I just made one up.
*
* This structure is valid only for 32-bit SPARC architectures,
* the rest of the register window chain is not visible.
*
* The layout follows the Solaris 'prgregset_t' structure.
- *
- */
+ *
+ */
#define CONTEXT_SPARC 0x10000000
#define CH_reg(context) (*((BYTE*)&ECX_reg(context)+1))
#define DL_reg(context) (*(BYTE*)&EDX_reg(context))
#define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1))
-
+
#define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
#define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001)
#define SET_ZFLAG(context) (EFL_reg(context) |= 0x0040)
#define STATUS_TIMEOUT 0x00000102
#define STATUS_PENDING 0x00000103
-#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
#define STATUS_BREAKPOINT 0x80000003
#define STATUS_SINGLE_STEP 0x80000004
-#define STATUS_BUFFER_OVERFLOW 0x80000005
+#define STATUS_BUFFER_OVERFLOW 0x80000005
#define STATUS_NO_MORE_FILES 0x80000006
#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
#define STATUS_INVALID_FILE_FOR_SECTION 0xC0000020
#define STATUS_ALREADY_COMMITTED 0xC0000021
#define STATUS_ACCESS_DENIED 0xC0000022
-#define STATUS_BUFFER_TOO_SMALL 0xC0000023
+#define STATUS_BUFFER_TOO_SMALL 0xC0000023
#define STATUS_OBJECT_TYPE_MISMATCH 0xC0000024
#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
#define STATUS_INVALID_DISPOSITION 0xC0000026
#define STATUS_SUSPEND_COUNT_EXCEEDED 0xC000004A
#define STATUS_LOCK_NOT_GRANTED 0xC0000054 /* FIXME: not sure */
#define STATUS_FILE_LOCK_CONFLICT 0xC0000055 /* FIXME: not sure */
-#define STATUS_UNKNOWN_REVISION 0xC0000058
-#define STATUS_INVALID_SECURITY_DESCR 0xC0000079
-#define STATUS_DISK_FULL 0xC000007F
+#define STATUS_UNKNOWN_REVISION 0xC0000058
+#define STATUS_INVALID_SECURITY_DESCR 0xC0000079
+#define STATUS_DISK_FULL 0xC000007F
#define STATUS_SECTION_NOT_EXTENDED 0xC0000087
#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
#define STATUS_INTEGER_OVERFLOW 0xC0000095
#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
#define STATUS_MEDIA_WRITE_PROTECTED 0XC00000A2
-#define STATUS_INVALID_PARAMETER_2 0xC00000F0
+#define STATUS_INVALID_PARAMETER_2 0xC00000F0
#define STATUS_STACK_OVERFLOW 0xC00000FD
#define STATUS_DIRECTORY_NOT_EMPTY 0xC0000101
#define STATUS_TOO_MANY_OPENED_FILES 0xC000011F
#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
/*
- * The exception record used by Win32 to give additional information
+ * The exception record used by Win32 to give additional information
* about exception to exception handlers.
*/
* in except() and the UnhandledExceptionFilter().
*/
-typedef struct _EXCEPTION_POINTERS
+typedef struct _EXCEPTION_POINTERS
{
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
/*
- * The exception frame, used for registering exception handlers
- * Win32 cares only about this, but compilers generally emit
+ * The exception frame, used for registering exception handlers
+ * Win32 cares only about this, but compilers generally emit
* larger exception frames for their own use.
*/
#define DBG_CONTROL_BREAK 0x40010008
#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
-typedef struct _NT_TIB
+typedef struct _NT_TIB
{
- struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
- PVOID StackBase;
- PVOID StackLimit;
- PVOID SubSystemTib;
- union {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+ union {
PVOID FiberData;
DWORD Version;
- } DUMMYUNIONNAME;
- PVOID ArbitraryUserPointer;
- struct _NT_TIB *Self;
+ } DUMMYUNIONNAME;
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
} NT_TIB, *PNT_TIB;
struct _TEB;
* This is the Windows executable (NE) header.
* the name IMAGE_OS2_HEADER is misleading, but in the SDK this way.
*/
-typedef struct
+typedef struct
{
WORD ne_magic; /* 00 NE signature 'NE' */
BYTE ne_ver; /* 02 Linker version number */
/* These defines describe the meanings of the bits in the Characteristics
field */
-#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 /* No relocation info */
-#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
+#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 /* No relocation info */
+#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
-#define IMAGE_FILE_16BIT_MACHINE 0x0040
-#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
-#define IMAGE_FILE_32BIT_MACHINE 0x0100
-#define IMAGE_FILE_DEBUG_STRIPPED 0x0200
-#define IMAGE_FILE_SYSTEM 0x1000
-#define IMAGE_FILE_DLL 0x2000
-#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
+#define IMAGE_FILE_16BIT_MACHINE 0x0040
+#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
+#define IMAGE_FILE_32BIT_MACHINE 0x0100
+#define IMAGE_FILE_DEBUG_STRIPPED 0x0200
+#define IMAGE_FILE_SYSTEM 0x1000
+#define IMAGE_FILE_DLL 0x2000
+#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
/* These are the settings of the Machine field. */
-#define IMAGE_FILE_MACHINE_UNKNOWN 0
-#define IMAGE_FILE_MACHINE_I860 0x14d
-#define IMAGE_FILE_MACHINE_I386 0x14c
-#define IMAGE_FILE_MACHINE_R3000 0x162
-#define IMAGE_FILE_MACHINE_R4000 0x166
-#define IMAGE_FILE_MACHINE_R10000 0x168
-#define IMAGE_FILE_MACHINE_ALPHA 0x184
-#define IMAGE_FILE_MACHINE_POWERPC 0x1F0
+#define IMAGE_FILE_MACHINE_UNKNOWN 0
+#define IMAGE_FILE_MACHINE_I860 0x14d
+#define IMAGE_FILE_MACHINE_I386 0x14c
+#define IMAGE_FILE_MACHINE_R3000 0x162
+#define IMAGE_FILE_MACHINE_R4000 0x166
+#define IMAGE_FILE_MACHINE_R10000 0x168
+#define IMAGE_FILE_MACHINE_ALPHA 0x184
+#define IMAGE_FILE_MACHINE_POWERPC 0x1F0
-#define IMAGE_SIZEOF_FILE_HEADER 20
+#define IMAGE_SIZEOF_FILE_HEADER 20
/* Possible Magic values */
#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
/* These are indexes into the DataDirectory array */
-#define IMAGE_FILE_EXPORT_DIRECTORY 0
-#define IMAGE_FILE_IMPORT_DIRECTORY 1
-#define IMAGE_FILE_RESOURCE_DIRECTORY 2
-#define IMAGE_FILE_EXCEPTION_DIRECTORY 3
-#define IMAGE_FILE_SECURITY_DIRECTORY 4
-#define IMAGE_FILE_BASE_RELOCATION_TABLE 5
-#define IMAGE_FILE_DEBUG_DIRECTORY 6
-#define IMAGE_FILE_DESCRIPTION_STRING 7
-#define IMAGE_FILE_MACHINE_VALUE 8 /* Mips */
-#define IMAGE_FILE_THREAD_LOCAL_STORAGE 9
-#define IMAGE_FILE_CALLBACK_DIRECTORY 10
+#define IMAGE_FILE_EXPORT_DIRECTORY 0
+#define IMAGE_FILE_IMPORT_DIRECTORY 1
+#define IMAGE_FILE_RESOURCE_DIRECTORY 2
+#define IMAGE_FILE_EXCEPTION_DIRECTORY 3
+#define IMAGE_FILE_SECURITY_DIRECTORY 4
+#define IMAGE_FILE_BASE_RELOCATION_TABLE 5
+#define IMAGE_FILE_DEBUG_DIRECTORY 6
+#define IMAGE_FILE_DESCRIPTION_STRING 7
+#define IMAGE_FILE_MACHINE_VALUE 8 /* Mips */
+#define IMAGE_FILE_THREAD_LOCAL_STORAGE 9
+#define IMAGE_FILE_CALLBACK_DIRECTORY 10
/* Directory Entries, indices into the DataDirectory array */
-#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
-#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
-#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
-#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
-#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
-#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
-#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
-#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 /* (MIPS GP) */
-#define IMAGE_DIRECTORY_ENTRY_TLS 9
-#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
-#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
-#define IMAGE_DIRECTORY_ENTRY_IAT 12 /* Import Address Table */
-#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
-#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
+#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
+#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
+#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
+#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
+#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 /* (MIPS GP) */
+#define IMAGE_DIRECTORY_ENTRY_TLS 9
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
+#define IMAGE_DIRECTORY_ENTRY_IAT 12 /* Import Address Table */
+#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
+#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
/* Subsystem Values */
-#define IMAGE_SUBSYSTEM_UNKNOWN 0
-#define IMAGE_SUBSYSTEM_NATIVE 1
-#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 /* Windows GUI subsystem */
-#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 /* Windows character subsystem*/
-#define IMAGE_SUBSYSTEM_OS2_CUI 5
-#define IMAGE_SUBSYSTEM_POSIX_CUI 7
+#define IMAGE_SUBSYSTEM_UNKNOWN 0
+#define IMAGE_SUBSYSTEM_NATIVE 1
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 /* Windows GUI subsystem */
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 /* Windows character subsystem*/
+#define IMAGE_SUBSYSTEM_OS2_CUI 5
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
-#define IMAGE_SIZEOF_SECTION_HEADER 40
+#define IMAGE_SIZEOF_SECTION_HEADER 40
#define IMAGE_FIRST_SECTION(ntheader) \
((PIMAGE_SECTION_HEADER)((LPBYTE)&((PIMAGE_NT_HEADERS)(ntheader))->OptionalHeader + \
((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))
/* These defines are for the Characteristics bitfield. */
-/* #define IMAGE_SCN_TYPE_REG 0x00000000 - Reserved */
-/* #define IMAGE_SCN_TYPE_DSECT 0x00000001 - Reserved */
-/* #define IMAGE_SCN_TYPE_NOLOAD 0x00000002 - Reserved */
-/* #define IMAGE_SCN_TYPE_GROUP 0x00000004 - Reserved */
-/* #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 - Reserved */
-/* #define IMAGE_SCN_TYPE_COPY 0x00000010 - Reserved */
-
-#define IMAGE_SCN_CNT_CODE 0x00000020
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
-#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
-
-#define IMAGE_SCN_LNK_OTHER 0x00000100
-#define IMAGE_SCN_LNK_INFO 0x00000200
-/* #define IMAGE_SCN_TYPE_OVER 0x00000400 - Reserved */
-#define IMAGE_SCN_LNK_REMOVE 0x00000800
-#define IMAGE_SCN_LNK_COMDAT 0x00001000
-
-/* 0x00002000 - Reserved */
-/* #define IMAGE_SCN_MEM_PROTECTED 0x00004000 - Obsolete */
-#define IMAGE_SCN_MEM_FARDATA 0x00008000
-
-/* #define IMAGE_SCN_MEM_SYSHEAP 0x00010000 - Obsolete */
-#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
-#define IMAGE_SCN_MEM_16BIT 0x00020000
-#define IMAGE_SCN_MEM_LOCKED 0x00040000
-#define IMAGE_SCN_MEM_PRELOAD 0x00080000
-
-#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
-#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
-#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
-#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
-#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 /* Default */
-#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
-#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
-/* 0x00800000 - Unused */
-
-#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
-
-
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
-#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
-#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
-#define IMAGE_SCN_MEM_SHARED 0x10000000
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000
-#define IMAGE_SCN_MEM_READ 0x40000000
-#define IMAGE_SCN_MEM_WRITE 0x80000000
+/* #define IMAGE_SCN_TYPE_REG 0x00000000 - Reserved */
+/* #define IMAGE_SCN_TYPE_DSECT 0x00000001 - Reserved */
+/* #define IMAGE_SCN_TYPE_NOLOAD 0x00000002 - Reserved */
+/* #define IMAGE_SCN_TYPE_GROUP 0x00000004 - Reserved */
+/* #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 - Reserved */
+/* #define IMAGE_SCN_TYPE_COPY 0x00000010 - Reserved */
+
+#define IMAGE_SCN_CNT_CODE 0x00000020
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
+
+#define IMAGE_SCN_LNK_OTHER 0x00000100
+#define IMAGE_SCN_LNK_INFO 0x00000200
+/* #define IMAGE_SCN_TYPE_OVER 0x00000400 - Reserved */
+#define IMAGE_SCN_LNK_REMOVE 0x00000800
+#define IMAGE_SCN_LNK_COMDAT 0x00001000
+
+/* 0x00002000 - Reserved */
+/* #define IMAGE_SCN_MEM_PROTECTED 0x00004000 - Obsolete */
+#define IMAGE_SCN_MEM_FARDATA 0x00008000
+
+/* #define IMAGE_SCN_MEM_SYSHEAP 0x00010000 - Obsolete */
+#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
+#define IMAGE_SCN_MEM_16BIT 0x00020000
+#define IMAGE_SCN_MEM_LOCKED 0x00040000
+#define IMAGE_SCN_MEM_PRELOAD 0x00080000
+
+#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
+#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
+#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
+#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
+#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 /* Default */
+#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
+#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
+/* 0x00800000 - Unused */
+
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
+
+
+#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
+#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
+#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
+#define IMAGE_SCN_MEM_SHARED 0x10000000
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000
+#define IMAGE_SCN_MEM_READ 0x40000000
+#define IMAGE_SCN_MEM_WRITE 0x80000000
#include "pshpack2.h"
/* Export module directory */
typedef struct _IMAGE_EXPORT_DIRECTORY {
- DWORD Characteristics;
- DWORD TimeDateStamp;
- WORD MajorVersion;
- WORD MinorVersion;
- DWORD Name;
- DWORD Base;
- DWORD NumberOfFunctions;
- DWORD NumberOfNames;
- LPDWORD *AddressOfFunctions;
- LPDWORD *AddressOfNames;
- LPWORD *AddressOfNameOrdinals;
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD Name;
+ DWORD Base;
+ DWORD NumberOfFunctions;
+ DWORD NumberOfNames;
+ LPDWORD *AddressOfFunctions;
+ LPDWORD *AddressOfNames;
+ LPWORD *AddressOfNameOrdinals;
} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
/* Import name entry */
typedef struct _IMAGE_IMPORT_BY_NAME {
- WORD Hint;
- BYTE Name[1];
+ WORD Hint;
+ BYTE Name[1];
} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
/* Import thunk */
typedef struct _IMAGE_THUNK_DATA {
- union {
- LPBYTE ForwarderString;
- FARPROC Function;
- DWORD Ordinal;
- PIMAGE_IMPORT_BY_NAME AddressOfData;
- } u1;
+ union {
+ LPBYTE ForwarderString;
+ FARPROC Function;
+ DWORD Ordinal;
+ PIMAGE_IMPORT_BY_NAME AddressOfData;
+ } u1;
} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
/* Import module directory */
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
- union {
- DWORD Characteristics; /* 0 for terminating null import descriptor */
- PIMAGE_THUNK_DATA OriginalFirstThunk; /* RVA to original unbound IAT */
- } u;
- DWORD TimeDateStamp; /* 0 if not bound,
- * -1 if bound, and real date\time stamp
- * in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
- * (new BIND)
- * otherwise date/time stamp of DLL bound to
- * (Old BIND)
- */
- DWORD ForwarderChain; /* -1 if no forwarders */
- DWORD Name;
- /* RVA to IAT (if bound this IAT has actual addresses) */
- PIMAGE_THUNK_DATA FirstThunk;
+ union {
+ DWORD Characteristics; /* 0 for terminating null import descriptor */
+ PIMAGE_THUNK_DATA OriginalFirstThunk; /* RVA to original unbound IAT */
+ } u;
+ DWORD TimeDateStamp; /* 0 if not bound,
+ * -1 if bound, and real date\time stamp
+ * in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
+ * (new BIND)
+ * otherwise date/time stamp of DLL bound to
+ * (Old BIND)
+ */
+ DWORD ForwarderChain; /* -1 if no forwarders */
+ DWORD Name;
+ /* RVA to IAT (if bound this IAT has actual addresses) */
+ PIMAGE_THUNK_DATA FirstThunk;
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
-#define IMAGE_ORDINAL_FLAG 0x80000000
-#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
-#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
+#define IMAGE_ORDINAL_FLAG 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
+#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR
{
typedef struct _IMAGE_BASE_RELOCATION
{
- DWORD VirtualAddress;
- DWORD SizeOfBlock;
- WORD TypeOffset[1];
+ DWORD VirtualAddress;
+ DWORD SizeOfBlock;
+ WORD TypeOffset[1];
} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
typedef struct _IMAGE_RELOCATION
#define IMAGE_SIZEOF_RELOCATION 10
/* generic relocation types */
-#define IMAGE_REL_BASED_ABSOLUTE 0
-#define IMAGE_REL_BASED_HIGH 1
-#define IMAGE_REL_BASED_LOW 2
-#define IMAGE_REL_BASED_HIGHLOW 3
-#define IMAGE_REL_BASED_HIGHADJ 4
-#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_SECTION 6
-#define IMAGE_REL_BASED_REL 7
-#define IMAGE_REL_BASED_MIPS_JMPADDR16 9
-#define IMAGE_REL_BASED_IA64_IMM64 9 /* yes, 9 too */
-#define IMAGE_REL_BASED_DIR64 10
-#define IMAGE_REL_BASED_HIGH3ADJ 11
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_REL_BASED_SECTION 6
+#define IMAGE_REL_BASED_REL 7
+#define IMAGE_REL_BASED_MIPS_JMPADDR16 9
+#define IMAGE_REL_BASED_IA64_IMM64 9 /* yes, 9 too */
+#define IMAGE_REL_BASED_DIR64 10
+#define IMAGE_REL_BASED_HIGH3ADJ 11
/* I386 relocation types */
-#define IMAGE_REL_I386_ABSOLUTE 0
-#define IMAGE_REL_I386_DIR16 1
-#define IMAGE_REL_I386_REL16 2
-#define IMAGE_REL_I386_DIR32 6
-#define IMAGE_REL_I386_DIR32NB 7
-#define IMAGE_REL_I386_SEG12 9
-#define IMAGE_REL_I386_SECTION 10
-#define IMAGE_REL_I386_SECREL 11
-#define IMAGE_REL_I386_REL32 20
+#define IMAGE_REL_I386_ABSOLUTE 0
+#define IMAGE_REL_I386_DIR16 1
+#define IMAGE_REL_I386_REL16 2
+#define IMAGE_REL_I386_DIR32 6
+#define IMAGE_REL_I386_DIR32NB 7
+#define IMAGE_REL_I386_SEG12 9
+#define IMAGE_REL_I386_SECTION 10
+#define IMAGE_REL_I386_SECREL 11
+#define IMAGE_REL_I386_REL32 20
/* MIPS relocation types */
-#define IMAGE_REL_MIPS_ABSOLUTE 0x0000
-#define IMAGE_REL_MIPS_REFHALF 0x0001
-#define IMAGE_REL_MIPS_REFWORD 0x0002
-#define IMAGE_REL_MIPS_JMPADDR 0x0003
-#define IMAGE_REL_MIPS_REFHI 0x0004
-#define IMAGE_REL_MIPS_REFLO 0x0005
-#define IMAGE_REL_MIPS_GPREL 0x0006
-#define IMAGE_REL_MIPS_LITERAL 0x0007
-#define IMAGE_REL_MIPS_SECTION 0x000A
-#define IMAGE_REL_MIPS_SECREL 0x000B
-#define IMAGE_REL_MIPS_SECRELLO 0x000C
-#define IMAGE_REL_MIPS_SECRELHI 0x000D
-#define IMAGE_REL_MIPS_JMPADDR16 0x0010
-#define IMAGE_REL_MIPS_REFWORDNB 0x0022
-#define IMAGE_REL_MIPS_PAIR 0x0025
+#define IMAGE_REL_MIPS_ABSOLUTE 0x0000
+#define IMAGE_REL_MIPS_REFHALF 0x0001
+#define IMAGE_REL_MIPS_REFWORD 0x0002
+#define IMAGE_REL_MIPS_JMPADDR 0x0003
+#define IMAGE_REL_MIPS_REFHI 0x0004
+#define IMAGE_REL_MIPS_REFLO 0x0005
+#define IMAGE_REL_MIPS_GPREL 0x0006
+#define IMAGE_REL_MIPS_LITERAL 0x0007
+#define IMAGE_REL_MIPS_SECTION 0x000A
+#define IMAGE_REL_MIPS_SECREL 0x000B
+#define IMAGE_REL_MIPS_SECRELLO 0x000C
+#define IMAGE_REL_MIPS_SECRELHI 0x000D
+#define IMAGE_REL_MIPS_JMPADDR16 0x0010
+#define IMAGE_REL_MIPS_REFWORDNB 0x0022
+#define IMAGE_REL_MIPS_PAIR 0x0025
/* ALPHA relocation types */
-#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
-#define IMAGE_REL_ALPHA_REFLONG 0x0001
-#define IMAGE_REL_ALPHA_REFQUAD 0x0002
-#define IMAGE_REL_ALPHA_GPREL 0x0003
-#define IMAGE_REL_ALPHA_LITERAL 0x0004
-#define IMAGE_REL_ALPHA_LITUSE 0x0005
-#define IMAGE_REL_ALPHA_GPDISP 0x0006
-#define IMAGE_REL_ALPHA_BRADDR 0x0007
-#define IMAGE_REL_ALPHA_HINT 0x0008
-#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
-#define IMAGE_REL_ALPHA_REFHI 0x000A
-#define IMAGE_REL_ALPHA_REFLO 0x000B
-#define IMAGE_REL_ALPHA_PAIR 0x000C
-#define IMAGE_REL_ALPHA_MATCH 0x000D
-#define IMAGE_REL_ALPHA_SECTION 0x000E
-#define IMAGE_REL_ALPHA_SECREL 0x000F
-#define IMAGE_REL_ALPHA_REFLONGNB 0x0010
-#define IMAGE_REL_ALPHA_SECRELLO 0x0011
-#define IMAGE_REL_ALPHA_SECRELHI 0x0012
-#define IMAGE_REL_ALPHA_REFQ3 0x0013
-#define IMAGE_REL_ALPHA_REFQ2 0x0014
-#define IMAGE_REL_ALPHA_REFQ1 0x0015
-#define IMAGE_REL_ALPHA_GPRELLO 0x0016
-#define IMAGE_REL_ALPHA_GPRELHI 0x0017
+#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
+#define IMAGE_REL_ALPHA_REFLONG 0x0001
+#define IMAGE_REL_ALPHA_REFQUAD 0x0002
+#define IMAGE_REL_ALPHA_GPREL 0x0003
+#define IMAGE_REL_ALPHA_LITERAL 0x0004
+#define IMAGE_REL_ALPHA_LITUSE 0x0005
+#define IMAGE_REL_ALPHA_GPDISP 0x0006
+#define IMAGE_REL_ALPHA_BRADDR 0x0007
+#define IMAGE_REL_ALPHA_HINT 0x0008
+#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
+#define IMAGE_REL_ALPHA_REFHI 0x000A
+#define IMAGE_REL_ALPHA_REFLO 0x000B
+#define IMAGE_REL_ALPHA_PAIR 0x000C
+#define IMAGE_REL_ALPHA_MATCH 0x000D
+#define IMAGE_REL_ALPHA_SECTION 0x000E
+#define IMAGE_REL_ALPHA_SECREL 0x000F
+#define IMAGE_REL_ALPHA_REFLONGNB 0x0010
+#define IMAGE_REL_ALPHA_SECRELLO 0x0011
+#define IMAGE_REL_ALPHA_SECRELHI 0x0012
+#define IMAGE_REL_ALPHA_REFQ3 0x0013
+#define IMAGE_REL_ALPHA_REFQ2 0x0014
+#define IMAGE_REL_ALPHA_REFQ1 0x0015
+#define IMAGE_REL_ALPHA_GPRELLO 0x0016
+#define IMAGE_REL_ALPHA_GPRELHI 0x0017
/* PowerPC relocation types */
#define IMAGE_REL_PPC_ABSOLUTE 0x0000
#define IMAGE_REL_PPC_PAIR 0x0012
#define IMAGE_REL_PPC_SECRELLO 0x0013
#define IMAGE_REL_PPC_SECRELHI 0x0014
-#define IMAGE_REL_PPC_GPREL 0x0015
+#define IMAGE_REL_PPC_GPREL 0x0015
#define IMAGE_REL_PPC_TYPEMASK 0x00FF
/* modifier bits */
#define IMAGE_REL_PPC_NEG 0x0100
#define IMAGE_REL_SH3_DIRECT32_NB 0x0010
/* ARM (Archimedes?) relocation types */
-#define IMAGE_REL_ARM_ABSOLUTE 0x0000
-#define IMAGE_REL_ARM_ADDR 0x0001
-#define IMAGE_REL_ARM_ADDR32NB 0x0002
-#define IMAGE_REL_ARM_BRANCH24 0x0003
-#define IMAGE_REL_ARM_BRANCH11 0x0004
-#define IMAGE_REL_ARM_SECTION 0x000E
-#define IMAGE_REL_ARM_SECREL 0x000F
+#define IMAGE_REL_ARM_ABSOLUTE 0x0000
+#define IMAGE_REL_ARM_ADDR 0x0001
+#define IMAGE_REL_ARM_ADDR32NB 0x0002
+#define IMAGE_REL_ARM_BRANCH24 0x0003
+#define IMAGE_REL_ARM_BRANCH11 0x0004
+#define IMAGE_REL_ARM_SECTION 0x000E
+#define IMAGE_REL_ARM_SECREL 0x000F
/* IA64 relocation types */
-#define IMAGE_REL_IA64_ABSOLUTE 0x0000
-#define IMAGE_REL_IA64_IMM14 0x0001
-#define IMAGE_REL_IA64_IMM22 0x0002
-#define IMAGE_REL_IA64_IMM64 0x0003
-#define IMAGE_REL_IA64_DIR 0x0004
-#define IMAGE_REL_IA64_DIR64 0x0005
-#define IMAGE_REL_IA64_PCREL21B 0x0006
-#define IMAGE_REL_IA64_PCREL21M 0x0007
-#define IMAGE_REL_IA64_PCREL21F 0x0008
-#define IMAGE_REL_IA64_GPREL22 0x0009
-#define IMAGE_REL_IA64_LTOFF22 0x000A
-#define IMAGE_REL_IA64_SECTION 0x000B
-#define IMAGE_REL_IA64_SECREL22 0x000C
-#define IMAGE_REL_IA64_SECREL64I 0x000D
-#define IMAGE_REL_IA64_SECREL 0x000E
-#define IMAGE_REL_IA64_LTOFF64 0x000F
-#define IMAGE_REL_IA64_DIR32NB 0x0010
-#define IMAGE_REL_IA64_RESERVED_11 0x0011
-#define IMAGE_REL_IA64_RESERVED_12 0x0012
-#define IMAGE_REL_IA64_RESERVED_13 0x0013
-#define IMAGE_REL_IA64_RESERVED_14 0x0014
-#define IMAGE_REL_IA64_RESERVED_15 0x0015
-#define IMAGE_REL_IA64_RESERVED_16 0x0016
-#define IMAGE_REL_IA64_ADDEND 0x001F
+#define IMAGE_REL_IA64_ABSOLUTE 0x0000
+#define IMAGE_REL_IA64_IMM14 0x0001
+#define IMAGE_REL_IA64_IMM22 0x0002
+#define IMAGE_REL_IA64_IMM64 0x0003
+#define IMAGE_REL_IA64_DIR 0x0004
+#define IMAGE_REL_IA64_DIR64 0x0005
+#define IMAGE_REL_IA64_PCREL21B 0x0006
+#define IMAGE_REL_IA64_PCREL21M 0x0007
+#define IMAGE_REL_IA64_PCREL21F 0x0008
+#define IMAGE_REL_IA64_GPREL22 0x0009
+#define IMAGE_REL_IA64_LTOFF22 0x000A
+#define IMAGE_REL_IA64_SECTION 0x000B
+#define IMAGE_REL_IA64_SECREL22 0x000C
+#define IMAGE_REL_IA64_SECREL64I 0x000D
+#define IMAGE_REL_IA64_SECREL 0x000E
+#define IMAGE_REL_IA64_LTOFF64 0x000F
+#define IMAGE_REL_IA64_DIR32NB 0x0010
+#define IMAGE_REL_IA64_RESERVED_11 0x0011
+#define IMAGE_REL_IA64_RESERVED_12 0x0012
+#define IMAGE_REL_IA64_RESERVED_13 0x0013
+#define IMAGE_REL_IA64_RESERVED_14 0x0014
+#define IMAGE_REL_IA64_RESERVED_15 0x0015
+#define IMAGE_REL_IA64_RESERVED_16 0x0016
+#define IMAGE_REL_IA64_ADDEND 0x001F
/* archive format */
* Resource directory stuff
*/
typedef struct _IMAGE_RESOURCE_DIRECTORY {
- DWORD Characteristics;
- DWORD TimeDateStamp;
- WORD MajorVersion;
- WORD MinorVersion;
- WORD NumberOfNamedEntries;
- WORD NumberOfIdEntries;
- /* IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; */
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ WORD NumberOfNamedEntries;
+ WORD NumberOfIdEntries;
+ /* IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; */
} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
-#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
-#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
+#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
- union {
- struct {
- unsigned NameOffset:31;
- unsigned NameIsString:1;
- } s;
- DWORD Name;
- WORD Id;
- } u1;
- union {
- DWORD OffsetToData;
- struct {
- unsigned OffsetToDirectory:31;
- unsigned DataIsDirectory:1;
- } s;
- } u2;
+ union {
+ struct {
+ unsigned NameOffset:31;
+ unsigned NameIsString:1;
+ } s;
+ DWORD Name;
+ WORD Id;
+ } u1;
+ union {
+ DWORD OffsetToData;
+ struct {
+ unsigned OffsetToDirectory:31;
+ unsigned DataIsDirectory:1;
+ } s;
+ } u2;
} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
- WORD Length;
- CHAR NameString[ 1 ];
+ WORD Length;
+ CHAR NameString[ 1 ];
} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
- WORD Length;
- WCHAR NameString[ 1 ];
+ WORD Length;
+ WCHAR NameString[ 1 ];
} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
- DWORD OffsetToData;
- DWORD Size;
- DWORD CodePage;
- DWORD ResourceHandle;
+ DWORD OffsetToData;
+ DWORD Size;
+ DWORD CodePage;
+ DWORD ResourceHandle;
} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
typedef VOID CALLBACK (*PIMAGE_TLS_CALLBACK)(
- LPVOID DllHandle,DWORD Reason,LPVOID Reserved
+ LPVOID DllHandle,DWORD Reason,LPVOID Reserved
);
typedef struct _IMAGE_TLS_DIRECTORY {
- DWORD StartAddressOfRawData;
- DWORD EndAddressOfRawData;
- LPDWORD AddressOfIndex;
- PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
- DWORD SizeOfZeroFill;
- DWORD Characteristics;
+ DWORD StartAddressOfRawData;
+ DWORD EndAddressOfRawData;
+ LPDWORD AddressOfIndex;
+ PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+ DWORD SizeOfZeroFill;
+ DWORD Characteristics;
} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
typedef struct _IMAGE_DEBUG_DIRECTORY {
/* This is the structure that appears at the very start of a .DBG file. */
typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
- WORD Signature;
- WORD Flags;
- WORD Machine;
- WORD Characteristics;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD ImageBase;
- DWORD SizeOfImage;
- DWORD NumberOfSections;
- DWORD ExportedNamesSize;
- DWORD DebugDirectorySize;
- DWORD SectionAlignment;
- DWORD Reserved[ 2 ];
+ WORD Signature;
+ WORD Flags;
+ WORD Machine;
+ WORD Characteristics;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+ DWORD NumberOfSections;
+ DWORD ExportedNamesSize;
+ DWORD DebugDirectorySize;
+ DWORD SectionAlignment;
+ DWORD Reserved[ 2 ];
} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
typedef struct tagMESSAGE_RESOURCE_ENTRY {
- WORD Length;
- WORD Flags;
- BYTE Text[1];
+ WORD Length;
+ WORD Flags;
+ BYTE Text[1];
} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
-#define MESSAGE_RESOURCE_UNICODE 0x0001
+#define MESSAGE_RESOURCE_UNICODE 0x0001
typedef struct tagMESSAGE_RESOURCE_BLOCK {
- DWORD LowId;
- DWORD HighId;
- DWORD OffsetToEntries;
+ DWORD LowId;
+ DWORD HighId;
+ DWORD OffsetToEntries;
} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
typedef struct tagMESSAGE_RESOURCE_DATA {
- DWORD NumberOfBlocks;
- MESSAGE_RESOURCE_BLOCK Blocks[ 1 ];
+ DWORD NumberOfBlocks;
+ MESSAGE_RESOURCE_BLOCK Blocks[ 1 ];
} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
/*
* Here follows typedefs for security and tokens.
- */
+ */
/*
* First a constant for the following typdefs.
*/
typedef enum _TOKEN_INFORMATION_CLASS {
- TokenUser = 1,
- TokenGroups,
- TokenPrivileges,
- TokenOwner,
- TokenPrimaryGroup,
- TokenDefaultDacl,
- TokenSource,
- TokenType,
- TokenImpersonationLevel,
- TokenStatistics
-} TOKEN_INFORMATION_CLASS;
+ TokenUser = 1,
+ TokenGroups,
+ TokenPrivileges,
+ TokenOwner,
+ TokenPrimaryGroup,
+ TokenDefaultDacl,
+ TokenSource,
+ TokenType,
+ TokenImpersonationLevel,
+ TokenStatistics
+} TOKEN_INFORMATION_CLASS;
#ifndef _SECURITY_DEFINED
#define _SECURITY_DEFINED
} SID,*PSID;
#endif /* !defined(SID_DEFINED) */
-#define SID_REVISION (1) /* Current revision */
-#define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
-#define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
+#define SID_REVISION (1) /* Current revision */
+#define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
+#define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
-/*
- * ACL
+/*
+ * ACL
*/
#define ACL_REVISION1 1
} ACL, *PACL;
/* SECURITY_DESCRIPTOR */
-#define SECURITY_DESCRIPTOR_REVISION 1
-#define SECURITY_DESCRIPTOR_REVISION1 1
+#define SECURITY_DESCRIPTOR_REVISION 1
+#define SECURITY_DESCRIPTOR_REVISION1 1
-#define SE_OWNER_DEFAULTED 0x0001
-#define SE_GROUP_DEFAULTED 0x0002
-#define SE_DACL_PRESENT 0x0004
-#define SE_DACL_DEFAULTED 0x0008
-#define SE_SACL_PRESENT 0x0010
-#define SE_SACL_DEFAULTED 0x0020
-#define SE_SELF_RELATIVE 0x8000
+#define SE_OWNER_DEFAULTED 0x0001
+#define SE_GROUP_DEFAULTED 0x0002
+#define SE_DACL_PRESENT 0x0004
+#define SE_DACL_DEFAULTED 0x0008
+#define SE_SACL_PRESENT 0x0010
+#define SE_SACL_DEFAULTED 0x0020
+#define SE_SELF_RELATIVE 0x8000
typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
PACL Dacl;
} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
-#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
+#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
#include "poppack.h"
#include "pshpack1.h"
-/*
+/*
* SID_AND_ATTRIBUTES
*/
typedef struct _SID_AND_ATTRIBUTES {
- PSID Sid;
- DWORD Attributes;
-} SID_AND_ATTRIBUTES ;
+ PSID Sid;
+ DWORD Attributes;
+} SID_AND_ATTRIBUTES ;
/* security entities */
-#define SECURITY_NULL_RID (0x00000000L)
-#define SECURITY_WORLD_RID (0x00000000L)
-#define SECURITY_LOCAL_RID (0X00000000L)
+#define SECURITY_NULL_RID (0x00000000L)
+#define SECURITY_WORLD_RID (0x00000000L)
+#define SECURITY_LOCAL_RID (0X00000000L)
-#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
+#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
/* S-1-1 */
-#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
+#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
/* S-1-2 */
-#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
+#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
/* S-1-3 */
-#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
-#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
-#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
-#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
-#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
+#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
+#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
+#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
+#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
+#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
/* S-1-4 */
-#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
+#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
/* S-1-5 */
-#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
+#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
#define SECURITY_DIALUP_RID 0x00000001L
#define SECURITY_NETWORK_RID 0x00000002L
#define SECURITY_BATCH_RID 0x00000003L
#define DOMAIN_ALIAS_RID_USERS 0x00000221L
#define DOMAIN_ALIAS_RID_GUESTS 0x00000222L
-#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
+#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
-#define SECURITY_LOGON_IDS_RID_COUNT (3L)
+#define SECURITY_LOGON_IDS_RID_COUNT (3L)
/*
* TOKEN_USER
*/
typedef struct _TOKEN_USER {
- SID_AND_ATTRIBUTES User;
-} TOKEN_USER;
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER;
/*
* TOKEN_GROUPS
*/
typedef struct _TOKEN_GROUPS {
- DWORD GroupCount;
- SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
-} TOKEN_GROUPS;
+ DWORD GroupCount;
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS;
/*
* LUID_AND_ATTRIBUTES
typedef LARGE_INTEGER LUID,*PLUID;
typedef struct _LUID_AND_ATTRIBUTES {
- LUID Luid;
- DWORD Attributes;
-} LUID_AND_ATTRIBUTES;
+ LUID Luid;
+ DWORD Attributes;
+} LUID_AND_ATTRIBUTES;
/*
* PRIVILEGE_SET
*/
typedef struct _TOKEN_PRIVILEGES {
- DWORD PrivilegeCount;
- LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
-} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+ DWORD PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
/*
* TOKEN_OWNER
*/
typedef struct _TOKEN_OWNER {
- PSID Owner;
-} TOKEN_OWNER;
+ PSID Owner;
+} TOKEN_OWNER;
/*
* TOKEN_PRIMARY_GROUP
*/
typedef struct _TOKEN_PRIMARY_GROUP {
- PSID PrimaryGroup;
-} TOKEN_PRIMARY_GROUP;
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP;
/*
* TOKEN_DEFAULT_DACL
*/
-typedef struct _TOKEN_DEFAULT_DACL {
- PACL DefaultDacl;
-} TOKEN_DEFAULT_DACL;
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL;
/*
* TOKEN_SOURCEL
*/
typedef struct _TOKEN_SOURCE {
- char Sourcename[8];
- LUID SourceIdentifier;
-} TOKEN_SOURCE;
+ char Sourcename[8];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE;
/*
* TOKEN_TYPE
*/
typedef enum tagTOKEN_TYPE {
- TokenPrimary = 1,
- TokenImpersonation
-} TOKEN_TYPE;
+ TokenPrimary = 1,
+ TokenImpersonation
+} TOKEN_TYPE;
/*
* SECURITY_IMPERSONATION_LEVEL
*/
typedef enum _SECURITY_IMPERSONATION_LEVEL {
- SecurityAnonymous,
- SecurityIdentification,
- SecurityImpersonation,
- SecurityDelegation
-} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
+ SecurityAnonymous,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation
+} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
- * PSECURITY_CONTEXT_TRACKING_MODE;
+ * PSECURITY_CONTEXT_TRACKING_MODE;
/*
- * Quality of Service
+ * Quality of Service
*/
typedef struct _SECURITY_QUALITY_OF_SERVICE {
- DWORD Length;
- SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ DWORD Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
- WIN_BOOL EffectiveOnly;
+ WIN_BOOL EffectiveOnly;
} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
/*
*/
typedef struct _TOKEN_STATISTICS {
- LUID TokenId;
- LUID AuthenticationId;
- LARGE_INTEGER ExpirationTime;
- TOKEN_TYPE TokenType;
- SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
- DWORD DynamicCharged;
- DWORD DynamicAvailable;
- DWORD GroupCount;
- DWORD PrivilegeCount;
- LUID ModifiedId;
-} TOKEN_STATISTICS;
-
-/*
- * ACLs of NT
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ DWORD DynamicCharged;
+ DWORD DynamicAvailable;
+ DWORD GroupCount;
+ DWORD PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS;
+
+/*
+ * ACLs of NT
*/
-#define ACL_REVISION 2
+#define ACL_REVISION 2
-#define ACL_REVISION1 1
-#define ACL_REVISION2 2
+#define ACL_REVISION1 1
+#define ACL_REVISION2 2
/* ACEs, directly starting after an ACL */
typedef struct _ACE_HEADER {
- BYTE AceType;
- BYTE AceFlags;
- WORD AceSize;
+ BYTE AceType;
+ BYTE AceFlags;
+ WORD AceSize;
} ACE_HEADER,*PACE_HEADER;
/* AceType */
-#define ACCESS_ALLOWED_ACE_TYPE 0
-#define ACCESS_DENIED_ACE_TYPE 1
-#define SYSTEM_AUDIT_ACE_TYPE 2
-#define SYSTEM_ALARM_ACE_TYPE 3
+#define ACCESS_ALLOWED_ACE_TYPE 0
+#define ACCESS_DENIED_ACE_TYPE 1
+#define SYSTEM_AUDIT_ACE_TYPE 2
+#define SYSTEM_ALARM_ACE_TYPE 3
/* inherit AceFlags */
-#define OBJECT_INHERIT_ACE 0x01
-#define CONTAINER_INHERIT_ACE 0x02
-#define NO_PROPAGATE_INHERIT_ACE 0x04
-#define INHERIT_ONLY_ACE 0x08
-#define VALID_INHERIT_FLAGS 0x0F
+#define OBJECT_INHERIT_ACE 0x01
+#define CONTAINER_INHERIT_ACE 0x02
+#define NO_PROPAGATE_INHERIT_ACE 0x04
+#define INHERIT_ONLY_ACE 0x08
+#define VALID_INHERIT_FLAGS 0x0F
/* AceFlags mask for what events we (should) audit */
-#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
-#define FAILED_ACCESS_ACE_FLAG 0x80
+#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
+#define FAILED_ACCESS_ACE_FLAG 0x80
-/* different ACEs depending on AceType
+/* different ACEs depending on AceType
* SidStart marks the begin of a SID
* so the thing finally looks like this:
* 0: ACE_HEADER
* 8... : SID
*/
typedef struct _ACCESS_ALLOWED_ACE {
- ACE_HEADER Header;
- DWORD Mask;
- DWORD SidStart;
+ ACE_HEADER Header;
+ DWORD Mask;
+ DWORD SidStart;
} ACCESS_ALLOWED_ACE,*PACCESS_ALLOWED_ACE;
typedef struct _ACCESS_DENIED_ACE {
- ACE_HEADER Header;
- DWORD Mask;
- DWORD SidStart;
+ ACE_HEADER Header;
+ DWORD Mask;
+ DWORD SidStart;
} ACCESS_DENIED_ACE,*PACCESS_DENIED_ACE;
typedef struct _SYSTEM_AUDIT_ACE {
- ACE_HEADER Header;
- DWORD Mask;
- DWORD SidStart;
+ ACE_HEADER Header;
+ DWORD Mask;
+ DWORD SidStart;
} SYSTEM_AUDIT_ACE,*PSYSTEM_AUDIT_ACE;
typedef struct _SYSTEM_ALARM_ACE {
- ACE_HEADER Header;
- DWORD Mask;
- DWORD SidStart;
+ ACE_HEADER Header;
+ DWORD Mask;
+ DWORD SidStart;
} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
typedef enum tagSID_NAME_USE {
- SidTypeUser = 1,
- SidTypeGroup,
- SidTypeDomain,
- SidTypeAlias,
- SidTypeWellKnownGroup,
- SidTypeDeletedAccount,
- SidTypeInvalid,
- SidTypeUnknown
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown
} SID_NAME_USE,*PSID_NAME_USE;
/* Access rights */
#define THREAD_DIRECT_IMPERSONATION 0x0200
#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff)
-#define THREAD_BASE_PRIORITY_LOWRT 15
-#define THREAD_BASE_PRIORITY_MAX 2
+#define THREAD_BASE_PRIORITY_LOWRT 15
+#define THREAD_BASE_PRIORITY_MAX 2
#define THREAD_BASE_PRIORITY_MIN -2
#define THREAD_BASE_PRIORITY_IDLE -15
/* File attribute flags
*/
-#define FILE_SHARE_READ 0x00000001L
-#define FILE_SHARE_WRITE 0x00000002L
-#define FILE_SHARE_DELETE 0x00000004L
+#define FILE_SHARE_READ 0x00000001L
+#define FILE_SHARE_WRITE 0x00000002L
+#define FILE_SHARE_DELETE 0x00000004L
#define FILE_ATTRIBUTE_READONLY 0x00000001L
#define FILE_ATTRIBUTE_HIDDEN 0x00000002L
#define FILE_ATTRIBUTE_SYSTEM 0x00000004L
#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200L
#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400L
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800L
-#define FILE_ATTRIBUTE_OFFLINE 0x00001000L
+#define FILE_ATTRIBUTE_OFFLINE 0x00001000L
/* File alignments (NT) */
-#define FILE_BYTE_ALIGNMENT 0x00000000
-#define FILE_WORD_ALIGNMENT 0x00000001
-#define FILE_LONG_ALIGNMENT 0x00000003
-#define FILE_QUAD_ALIGNMENT 0x00000007
-#define FILE_OCTA_ALIGNMENT 0x0000000f
-#define FILE_32_BYTE_ALIGNMENT 0x0000001f
-#define FILE_64_BYTE_ALIGNMENT 0x0000003f
-#define FILE_128_BYTE_ALIGNMENT 0x0000007f
-#define FILE_256_BYTE_ALIGNMENT 0x000000ff
-#define FILE_512_BYTE_ALIGNMENT 0x000001ff
-
-#define REG_NONE 0 /* no type */
-#define REG_SZ 1 /* string type (ASCII) */
-#define REG_EXPAND_SZ 2 /* string, includes %ENVVAR% (expanded by caller) (ASCII) */
-#define REG_BINARY 3 /* binary format, callerspecific */
+#define FILE_BYTE_ALIGNMENT 0x00000000
+#define FILE_WORD_ALIGNMENT 0x00000001
+#define FILE_LONG_ALIGNMENT 0x00000003
+#define FILE_QUAD_ALIGNMENT 0x00000007
+#define FILE_OCTA_ALIGNMENT 0x0000000f
+#define FILE_32_BYTE_ALIGNMENT 0x0000001f
+#define FILE_64_BYTE_ALIGNMENT 0x0000003f
+#define FILE_128_BYTE_ALIGNMENT 0x0000007f
+#define FILE_256_BYTE_ALIGNMENT 0x000000ff
+#define FILE_512_BYTE_ALIGNMENT 0x000001ff
+
+#define REG_NONE 0 /* no type */
+#define REG_SZ 1 /* string type (ASCII) */
+#define REG_EXPAND_SZ 2 /* string, includes %ENVVAR% (expanded by caller) (ASCII) */
+#define REG_BINARY 3 /* binary format, callerspecific */
/* YES, REG_DWORD == REG_DWORD_LITTLE_ENDIAN */
-#define REG_DWORD 4 /* DWORD in little endian format */
-#define REG_DWORD_LITTLE_ENDIAN 4 /* DWORD in little endian format */
-#define REG_DWORD_BIG_ENDIAN 5 /* DWORD in big endian format */
-#define REG_LINK 6 /* symbolic link (UNICODE) */
-#define REG_MULTI_SZ 7 /* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
-#define REG_RESOURCE_LIST 8 /* resource list? huh? */
-#define REG_FULL_RESOURCE_DESCRIPTOR 9 /* full resource descriptor? huh? */
-#define REG_RESOURCE_REQUIREMENTS_LIST 10
+#define REG_DWORD 4 /* DWORD in little endian format */
+#define REG_DWORD_LITTLE_ENDIAN 4 /* DWORD in little endian format */
+#define REG_DWORD_BIG_ENDIAN 5 /* DWORD in big endian format */
+#define REG_LINK 6 /* symbolic link (UNICODE) */
+#define REG_MULTI_SZ 7 /* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
+#define REG_RESOURCE_LIST 8 /* resource list? huh? */
+#define REG_FULL_RESOURCE_DESCRIPTOR 9 /* full resource descriptor? huh? */
+#define REG_RESOURCE_REQUIREMENTS_LIST 10
/* ----------------------------- begin registry ----------------------------- */
/* Registry security values */
-#define OWNER_SECURITY_INFORMATION 0x00000001
-#define GROUP_SECURITY_INFORMATION 0x00000002
-#define DACL_SECURITY_INFORMATION 0x00000004
-#define SACL_SECURITY_INFORMATION 0x00000008
-
-#define REG_OPTION_RESERVED 0x00000000
-#define REG_OPTION_NON_VOLATILE 0x00000000
-#define REG_OPTION_VOLATILE 0x00000001
-#define REG_OPTION_CREATE_LINK 0x00000002
-#define REG_OPTION_BACKUP_RESTORE 0x00000004 /* FIXME */
-#define REG_OPTION_OPEN_LINK 0x00000008
-#define REG_LEGAL_OPTION (REG_OPTION_RESERVED| \
- REG_OPTION_NON_VOLATILE| \
- REG_OPTION_VOLATILE| \
- REG_OPTION_CREATE_LINK| \
- REG_OPTION_BACKUP_RESTORE| \
- REG_OPTION_OPEN_LINK)
-
-
-#define REG_CREATED_NEW_KEY 0x00000001
-#define REG_OPENED_EXISTING_KEY 0x00000002
+#define OWNER_SECURITY_INFORMATION 0x00000001
+#define GROUP_SECURITY_INFORMATION 0x00000002
+#define DACL_SECURITY_INFORMATION 0x00000004
+#define SACL_SECURITY_INFORMATION 0x00000008
+
+#define REG_OPTION_RESERVED 0x00000000
+#define REG_OPTION_NON_VOLATILE 0x00000000
+#define REG_OPTION_VOLATILE 0x00000001
+#define REG_OPTION_CREATE_LINK 0x00000002
+#define REG_OPTION_BACKUP_RESTORE 0x00000004 /* FIXME */
+#define REG_OPTION_OPEN_LINK 0x00000008
+#define REG_LEGAL_OPTION (REG_OPTION_RESERVED| \
+ REG_OPTION_NON_VOLATILE| \
+ REG_OPTION_VOLATILE| \
+ REG_OPTION_CREATE_LINK| \
+ REG_OPTION_BACKUP_RESTORE| \
+ REG_OPTION_OPEN_LINK)
+
+
+#define REG_CREATED_NEW_KEY 0x00000001
+#define REG_OPENED_EXISTING_KEY 0x00000002
/* For RegNotifyChangeKeyValue */
-#define REG_NOTIFY_CHANGE_NAME 0x1
-
-#define KEY_QUERY_VALUE 0x00000001
-#define KEY_SET_VALUE 0x00000002
-#define KEY_CREATE_SUB_KEY 0x00000004
-#define KEY_ENUMERATE_SUB_KEYS 0x00000008
-#define KEY_NOTIFY 0x00000010
-#define KEY_CREATE_LINK 0x00000020
-
-#define KEY_READ ((STANDARD_RIGHTS_READ| \
- KEY_QUERY_VALUE| \
- KEY_ENUMERATE_SUB_KEYS| \
- KEY_NOTIFY) \
- & (~SYNCHRONIZE) \
- )
-#define KEY_WRITE ((STANDARD_RIGHTS_WRITE| \
- KEY_SET_VALUE| \
- KEY_CREATE_SUB_KEY) \
- & (~SYNCHRONIZE) \
- )
-#define KEY_EXECUTE ((KEY_READ) \
- & (~SYNCHRONIZE)) \
- )
+#define REG_NOTIFY_CHANGE_NAME 0x1
+
+#define KEY_QUERY_VALUE 0x00000001
+#define KEY_SET_VALUE 0x00000002
+#define KEY_CREATE_SUB_KEY 0x00000004
+#define KEY_ENUMERATE_SUB_KEYS 0x00000008
+#define KEY_NOTIFY 0x00000010
+#define KEY_CREATE_LINK 0x00000020
+
+#define KEY_READ ((STANDARD_RIGHTS_READ| \
+ KEY_QUERY_VALUE| \
+ KEY_ENUMERATE_SUB_KEYS| \
+ KEY_NOTIFY) \
+ & (~SYNCHRONIZE) \
+ )
+#define KEY_WRITE ((STANDARD_RIGHTS_WRITE| \
+ KEY_SET_VALUE| \
+ KEY_CREATE_SUB_KEY) \
+ & (~SYNCHRONIZE) \
+ )
+#define KEY_EXECUTE ((KEY_READ) \
+ & (~SYNCHRONIZE)) \
+ )
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL| \
- KEY_QUERY_VALUE| \
- KEY_SET_VALUE| \
- KEY_CREATE_SUB_KEY| \
- KEY_ENUMERATE_SUB_KEYS| \
- KEY_NOTIFY| \
- KEY_CREATE_LINK) \
- & (~SYNCHRONIZE) \
- )
+ KEY_QUERY_VALUE| \
+ KEY_SET_VALUE| \
+ KEY_CREATE_SUB_KEY| \
+ KEY_ENUMERATE_SUB_KEYS| \
+ KEY_NOTIFY| \
+ KEY_CREATE_LINK) \
+ & (~SYNCHRONIZE) \
+ )
/* ------------------------------ end registry ------------------------------ */
/*
- * Win32 registry defines (see also winnt.h)
+ * Win32 registry defines (see also winnt.h)
*/
#ifndef __WINE_WINREG_H
#define __WINE_WINREG_H
#define HKEY_DYN_DATA ((HKEY) 0x80000006)
/*
- * registry provider structs
+ * registry provider structs
*/
-typedef struct value_entA
-{ LPSTR ve_valuename;
- DWORD ve_valuelen;
- DWORD_PTR ve_valueptr;
- DWORD ve_type;
+typedef struct value_entA
+{ LPSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD_PTR ve_valueptr;
+ DWORD ve_type;
} VALENTA, *PVALENTA;
typedef struct value_entW {
- LPWSTR ve_valuename;
- DWORD ve_valuelen;
- DWORD_PTR ve_valueptr;
- DWORD ve_type;
+ LPWSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD_PTR ve_valueptr;
+ DWORD ve_type;
} VALENTW, *PVALENTW;
typedef ACCESS_MASK REGSAM;
#undef FSHIFT
#endif
-#define FVIRTKEY TRUE /* Assumed to be == TRUE */
-#define FNOINVERT 0x02
-#define FSHIFT 0x04
-#define FCONTROL 0x08
-#define FALT 0x10
+#define FVIRTKEY TRUE /* Assumed to be == TRUE */
+#define FNOINVERT 0x02
+#define FSHIFT 0x04
+#define FCONTROL 0x08
+#define FALT 0x10
typedef struct tagANIMATIONINFO
typedef struct
{
- UINT cbSize;
- INT iTabLength;
- INT iLeftMargin;
- INT iRightMargin;
- UINT uiLengthDrawn;
+ UINT cbSize;
+ INT iTabLength;
+ INT iLeftMargin;
+ INT iRightMargin;
+ UINT uiLengthDrawn;
} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
#define WM_USER 0x0400
#define BS_FLAT 0x00008000L
/* Dialog styles */
-#define DS_ABSALIGN 0x0001
-#define DS_SYSMODAL 0x0002
-#define DS_3DLOOK 0x0004 /* win95 */
-#define DS_FIXEDSYS 0x0008 /* win95 */
-#define DS_NOFAILCREATE 0x0010 /* win95 */
-#define DS_LOCALEDIT 0x0020
-#define DS_SETFONT 0x0040
-#define DS_MODALFRAME 0x0080
-#define DS_NOIDLEMSG 0x0100
-#define DS_SETFOREGROUND 0x0200 /* win95 */
-#define DS_CONTROL 0x0400 /* win95 */
-#define DS_CENTER 0x0800 /* win95 */
-#define DS_CENTERMOUSE 0x1000 /* win95 */
-#define DS_CONTEXTHELP 0x2000 /* win95 */
+#define DS_ABSALIGN 0x0001
+#define DS_SYSMODAL 0x0002
+#define DS_3DLOOK 0x0004 /* win95 */
+#define DS_FIXEDSYS 0x0008 /* win95 */
+#define DS_NOFAILCREATE 0x0010 /* win95 */
+#define DS_LOCALEDIT 0x0020
+#define DS_SETFONT 0x0040
+#define DS_MODALFRAME 0x0080
+#define DS_NOIDLEMSG 0x0100
+#define DS_SETFOREGROUND 0x0200 /* win95 */
+#define DS_CONTROL 0x0400 /* win95 */
+#define DS_CENTER 0x0800 /* win95 */
+#define DS_CENTERMOUSE 0x1000 /* win95 */
+#define DS_CONTEXTHELP 0x2000 /* win95 */
/* Dialog messages */
#define OBM_SIZE 32766
#define OBM_OLD_CLOSE 32767
-#define OCR_BUMMER 100
-#define OCR_DRAGOBJECT 101
+#define OCR_BUMMER 100
+#define OCR_DRAGOBJECT 101
#define OCR_NORMAL 32512
#define OCR_IBEAM 32513
#define OIC_HDISK 32524
#define OIC_NETWORK 32525
-#define COLOR_SCROLLBAR 0
-#define COLOR_BACKGROUND 1
-#define COLOR_ACTIVECAPTION 2
-#define COLOR_INACTIVECAPTION 3
-#define COLOR_MENU 4
-#define COLOR_WINDOW 5
-#define COLOR_WINDOWFRAME 6
-#define COLOR_MENUTEXT 7
-#define COLOR_WINDOWTEXT 8
-#define COLOR_CAPTIONTEXT 9
-#define COLOR_ACTIVEBORDER 10
-#define COLOR_INACTIVEBORDER 11
-#define COLOR_APPWORKSPACE 12
-#define COLOR_HIGHLIGHT 13
-#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_SCROLLBAR 0
+#define COLOR_BACKGROUND 1
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_MENU 4
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_MENUTEXT 7
+#define COLOR_WINDOWTEXT 8
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_APPWORKSPACE 12
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
#define COLOR_BTNFACE 15
#define COLOR_BTNSHADOW 16
#define COLOR_GRAYTEXT 17
-#define COLOR_BTNTEXT 18
+#define COLOR_BTNTEXT 18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20
/* win95 colors */
#define EN_VSCROLL 0x0602
/* New since win95 : EM_SETMARGIN parameters */
-#define EC_LEFTMARGIN 0x0001
-#define EC_RIGHTMARGIN 0x0002
-#define EC_USEFONTINFO 0xffff
+#define EC_LEFTMARGIN 0x0001
+#define EC_RIGHTMARGIN 0x0002
+#define EC_USEFONTINFO 0xffff
/* Messages */
#define WM_COMPAREITEM 0x0039
#define WM_TESTING 0x003a
-#define WM_OTHERWINDOWCREATED 0x003c
-#define WM_OTHERWINDOWDESTROYED 0x003d
-#define WM_ACTIVATESHELLWINDOW 0x003e
+#define WM_OTHERWINDOWCREATED 0x003c
+#define WM_OTHERWINDOWDESTROYED 0x003d
+#define WM_ACTIVATESHELLWINDOW 0x003e
-#define WM_COMPACTING 0x0041
+#define WM_COMPACTING 0x0041
-#define WM_COMMNOTIFY 0x0044
-#define WM_WINDOWPOSCHANGING 0x0046
-#define WM_WINDOWPOSCHANGED 0x0047
-#define WM_POWER 0x0048
+#define WM_COMMNOTIFY 0x0044
+#define WM_WINDOWPOSCHANGING 0x0046
+#define WM_WINDOWPOSCHANGED 0x0047
+#define WM_POWER 0x0048
/* Win32 4.0 messages */
-#define WM_COPYDATA 0x004a
-#define WM_CANCELJOURNAL 0x004b
-#define WM_NOTIFY 0x004e
-#define WM_HELP 0x0053
-#define WM_NOTIFYFORMAT 0x0055
-
-#define WM_CONTEXTMENU 0x007b
-#define WM_STYLECHANGING 0x007c
-#define WM_STYLECHANGED 0x007d
+#define WM_COPYDATA 0x004a
+#define WM_CANCELJOURNAL 0x004b
+#define WM_NOTIFY 0x004e
+#define WM_HELP 0x0053
+#define WM_NOTIFYFORMAT 0x0055
+
+#define WM_CONTEXTMENU 0x007b
+#define WM_STYLECHANGING 0x007c
+#define WM_STYLECHANGED 0x007d
#define WM_DISPLAYCHANGE 0x007e
-#define WM_GETICON 0x007f
-#define WM_SETICON 0x0080
+#define WM_GETICON 0x007f
+#define WM_SETICON 0x0080
/* Non-client system messages */
#define WM_NCCREATE 0x0081
#define WM_NCPAINT 0x0085
#define WM_NCACTIVATE 0x0086
-#define WM_GETDLGCODE 0x0087
-#define WM_SYNCPAINT 0x0088
-#define WM_SYNCTASK 0x0089
+#define WM_GETDLGCODE 0x0087
+#define WM_SYNCPAINT 0x0088
+#define WM_SYNCTASK 0x0089
/* Non-client mouse messages */
#define WM_NCMOUSEMOVE 0x00a0
#define WM_IME_COMPOSITION 0x010f
#define WM_IME_KEYLAST 0x010f
-#define WM_INITDIALOG 0x0110
+#define WM_INITDIALOG 0x0110
#define WM_COMMAND 0x0111
#define WM_SYSCOMMAND 0x0112
-#define WM_TIMER 0x0113
-#define WM_SYSTIMER 0x0118
+#define WM_TIMER 0x0113
+#define WM_SYSTIMER 0x0118
/* scroll messages */
#define WM_HSCROLL 0x0114
#define WM_CTLCOLORSTATIC 0x0138
/* Mouse messages */
-#define WM_MOUSEMOVE 0x0200
-#define WM_LBUTTONDOWN 0x0201
-#define WM_LBUTTONUP 0x0202
+#define WM_MOUSEMOVE 0x0200
+#define WM_LBUTTONDOWN 0x0201
+#define WM_LBUTTONUP 0x0202
#define WM_LBUTTONDBLCLK 0x0203
-#define WM_RBUTTONDOWN 0x0204
-#define WM_RBUTTONUP 0x0205
+#define WM_RBUTTONDOWN 0x0204
+#define WM_RBUTTONUP 0x0205
#define WM_RBUTTONDBLCLK 0x0206
-#define WM_MBUTTONDOWN 0x0207
-#define WM_MBUTTONUP 0x0208
+#define WM_MBUTTONDOWN 0x0207
+#define WM_MBUTTONUP 0x0208
#define WM_MBUTTONDBLCLK 0x0209
#define WM_MOUSEWHEEL 0x020A
-#define WM_MOUSEFIRST WM_MOUSEMOVE
+#define WM_MOUSEFIRST WM_MOUSEMOVE
-#define WM_MOUSELAST WM_MOUSEWHEEL
+#define WM_MOUSELAST WM_MOUSEWHEEL
#define WHEEL_DELTA 120
#define WHEEL_PAGESCROLL (UINT_MAX)
#define WM_PARENTNOTIFY 0x0210
#define WM_ENTERMENULOOP 0x0211
#define WM_EXITMENULOOP 0x0212
-#define WM_NEXTMENU 0x0213
+#define WM_NEXTMENU 0x0213
/* Win32 4.0 messages */
-#define WM_SIZING 0x0214
+#define WM_SIZING 0x0214
#define WM_CAPTURECHANGED 0x0215
-#define WM_MOVING 0x0216
+#define WM_MOVING 0x0216
/* MDI messages */
-#define WM_MDICREATE 0x0220
-#define WM_MDIDESTROY 0x0221
-#define WM_MDIACTIVATE 0x0222
-#define WM_MDIRESTORE 0x0223
-#define WM_MDINEXT 0x0224
-#define WM_MDIMAXIMIZE 0x0225
-#define WM_MDITILE 0x0226
-#define WM_MDICASCADE 0x0227
+#define WM_MDICREATE 0x0220
+#define WM_MDIDESTROY 0x0221
+#define WM_MDIACTIVATE 0x0222
+#define WM_MDIRESTORE 0x0223
+#define WM_MDINEXT 0x0224
+#define WM_MDIMAXIMIZE 0x0225
+#define WM_MDITILE 0x0226
+#define WM_MDICASCADE 0x0227
#define WM_MDIICONARRANGE 0x0228
#define WM_MDIGETACTIVE 0x0229
#define WM_MDIREFRESHMENU 0x0234
/* D&D messages */
-#define WM_DROPOBJECT 0x022A
+#define WM_DROPOBJECT 0x022A
#define WM_QUERYDROPOBJECT 0x022B
-#define WM_BEGINDRAG 0x022C
-#define WM_DRAGLOOP 0x022D
-#define WM_DRAGSELECT 0x022E
-#define WM_DRAGMOVE 0x022F
-#define WM_MDISETMENU 0x0230
+#define WM_BEGINDRAG 0x022C
+#define WM_DRAGLOOP 0x022D
+#define WM_DRAGSELECT 0x022E
+#define WM_DRAGMOVE 0x022F
+#define WM_MDISETMENU 0x0230
#define WM_ENTERSIZEMOVE 0x0231
#define WM_EXITSIZEMOVE 0x0232
-#define WM_DROPFILES 0x0233
+#define WM_DROPFILES 0x0233
/* Win32 4.0 messages for IME */
#define WM_QUERYNEWPALETTE 0x030F
#define WM_PALETTEISCHANGING 0x0310
#define WM_PALETTECHANGED 0x0311
-#define WM_HOTKEY 0x0312
+#define WM_HOTKEY 0x0312
#define WM_PRINT 0x0317
#define WM_PRINTCLIENT 0x0318
#define WM_QUERYAFXWNDPROC 0x0360
#define WM_SIZEPARENT 0x0361
#define WM_SETMESSAGESTRING 0x0362
-#define WM_IDLEUPDATECMDUI 0x0363
+#define WM_IDLEUPDATECMDUI 0x0363
#define WM_INITIALUPDATE 0x0364
#define WM_COMMANDHELP 0x0365
#define WM_HELPHITTEST 0x0366
#define WM_EXITHELPMODE 0x0367
#define WM_RECALCPARENT 0x0368
#define WM_SIZECHILD 0x0369
-#define WM_KICKIDLE 0x036A
+#define WM_KICKIDLE 0x036A
#define WM_QUERYCENTERWND 0x036B
#define WM_DISABLEMODAL 0x036C
-#define WM_FLOATSTATUS 0x036D
-#define WM_ACTIVATETOPLEVEL 0x036E
-#define WM_QUERY3DCONTROLS 0x036F
+#define WM_FLOATSTATUS 0x036D
+#define WM_ACTIVATETOPLEVEL 0x036E
+#define WM_QUERY3DCONTROLS 0x036F
#define WM_SOCKET_NOTIFY 0x0373
#define WM_SOCKET_DEAD 0x0374
#define WM_POPMESSAGESTRING 0x0375
#define IDYES 6
#define IDNO 7
#define IDCLOSE 8
-#define IDHELP 9
+#define IDHELP 9
/****** Window classes ******/
BYTE rgbReserved[32];
} PAINTSTRUCT, *PPAINTSTRUCT, *LPPAINTSTRUCT;
-typedef struct
+typedef struct
{
HMENU hWindowMenu;
UINT idFirstChild;
DECL_WINELIB_TYPE_AW(MDICREATESTRUCT)
DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT)
-#define MDITILE_VERTICAL 0x0000
+#define MDITILE_VERTICAL 0x0000
#define MDITILE_HORIZONTAL 0x0001
#define MDITILE_SKIPDISABLED 0x0002
#define GWW_HINSTANCE (-6)
#define GWL_HINSTANCE GWW_HINSTANCE
#define GWL_WNDPROC (-4)
-#define DWL_MSGRESULT 0
-#define DWL_DLGPROC 4
-#define DWL_USER 8
+#define DWL_MSGRESULT 0
+#define DWL_DLGPROC 4
+#define DWL_USER 8
/* GetWindow() constants */
-#define GW_HWNDFIRST 0
-#define GW_HWNDLAST 1
-#define GW_HWNDNEXT 2
-#define GW_HWNDPREV 3
-#define GW_OWNER 4
-#define GW_CHILD 5
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_OWNER 4
+#define GW_CHILD 5
/* WM_GETMINMAXINFO struct */
typedef struct
/***** Window hooks *****/
/* Hook values */
-#define WH_MIN (-1)
-#define WH_MSGFILTER (-1)
+#define WH_MIN (-1)
+#define WH_MSGFILTER (-1)
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
-#define WH_KEYBOARD 2
-#define WH_GETMESSAGE 3
-#define WH_CALLWNDPROC 4
-#define WH_CBT 5
-#define WH_SYSMSGFILTER 6
-#define WH_MOUSE 7
-#define WH_HARDWARE 8
-#define WH_DEBUG 9
+#define WH_KEYBOARD 2
+#define WH_GETMESSAGE 3
+#define WH_CALLWNDPROC 4
+#define WH_CBT 5
+#define WH_SYSMSGFILTER 6
+#define WH_MOUSE 7
+#define WH_HARDWARE 8
+#define WH_DEBUG 9
#define WH_SHELL 10
#define WH_FOREGROUNDIDLE 11
#define WH_CALLWNDPROCRET 12
/* WinHelp internal structure */
typedef struct {
- WORD size;
- WORD command;
- LONG data;
- LONG reserved;
- WORD ofsFilename;
- WORD ofsData;
+ WORD size;
+ WORD command;
+ LONG data;
+ LONG reserved;
+ WORD ofsFilename;
+ WORD ofsData;
} WINHELP,*LPWINHELP;
typedef struct
} MULTIKEYHELP, *LPMULTIKEYHELP;
typedef struct {
- WORD wStructSize;
- WORD x;
- WORD y;
- WORD dx;
- WORD dy;
- WORD wMax;
- char rgchMember[2];
+ WORD wStructSize;
+ WORD x;
+ WORD y;
+ WORD dx;
+ WORD dy;
+ WORD wMax;
+ char rgchMember[2];
} HELPWININFO, *LPHELPWININFO;
#define HELP_CONTEXT 0x0001
#define HELP_MULTIKEY 0x0201
#define HELP_SETWINPOS 0x0203
#define HELP_CONTEXTMENU 0x000a
-#define HELP_FINDER 0x000b
-#define HELP_WM_HELP 0x000c
+#define HELP_FINDER 0x000b
+#define HELP_WM_HELP 0x000c
#define HELP_SETPOPUP_POS 0x000d
-#define HELP_TCARD 0x8000
-#define HELP_TCARD_DATA 0x0010
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 0x0010
#define HELP_TCARD_OTHER_CALLER 0x0011
#define DISP_CHANGE_BADPARAM (-5)
/* ChangeDisplaySettings.dwFlags */
-#define CDS_UPDATEREGISTRY 0x00000001
-#define CDS_TEST 0x00000002
-#define CDS_FULLSCREEN 0x00000004
-#define CDS_GLOBAL 0x00000008
-#define CDS_SET_PRIMARY 0x00000010
-#define CDS_RESET 0x40000000
-#define CDS_SETRECT 0x20000000
-#define CDS_NORESET 0x10000000
+#define CDS_UPDATEREGISTRY 0x00000001
+#define CDS_TEST 0x00000002
+#define CDS_FULLSCREEN 0x00000004
+#define CDS_GLOBAL 0x00000008
+#define CDS_SET_PRIMARY 0x00000010
+#define CDS_RESET 0x40000000
+#define CDS_SETRECT 0x20000000
+#define CDS_NORESET 0x10000000
/* flags to FormatMessage */
-#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
-#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
-#define FORMAT_MESSAGE_FROM_STRING 0x00000400
-#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
-#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
-#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
-#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
+#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
+#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
+#define FORMAT_MESSAGE_FROM_STRING 0x00000400
+#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
+#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
+#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
+#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
typedef struct
{
#define POINTSTOPOINT(pt, pts) \
{ (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); \
- (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
+ (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y)))
/* Cursors / Icons */
typedef struct {
- WIN_BOOL fIcon;
- DWORD xHotspot;
- DWORD yHotspot;
- HBITMAP hbmMask;
- HBITMAP hbmColor;
+ WIN_BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
} ICONINFO,*LPICONINFO;
#define TPM_NONOTIFY 0x0080
#define TPM_RETURNCMD 0x0100
-typedef struct
+typedef struct
{
UINT cbSize;
RECT rcExclude;
typedef MENUINFO const * LPCMENUINFO;
-#define MIM_MAXHEIGHT 0x00000001
-#define MIM_BACKGROUND 0x00000002
-#define MIM_HELPID 0x00000004
-#define MIM_MENUDATA 0x00000008
-#define MIM_STYLE 0x00000010
-#define MIM_APPLYTOSUBMENUS 0x80000000
+#define MIM_MAXHEIGHT 0x00000001
+#define MIM_BACKGROUND 0x00000002
+#define MIM_HELPID 0x00000004
+#define MIM_MENUDATA 0x00000008
+#define MIM_STYLE 0x00000010
+#define MIM_APPLYTOSUBMENUS 0x80000000
typedef struct {
WORD versionNumber;
#define MIIM_BITMAP 0x00000080
#define MIIM_FTYPE 0x00000100
-#define HBMMENU_CALLBACK ((HBITMAP) -1)
-#define HBMMENU_SYSTEM ((HBITMAP) 1)
-#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
-#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
-#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
-#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
-#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
-#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
-#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
-#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
-#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
+#define HBMMENU_CALLBACK ((HBITMAP) -1)
+#define HBMMENU_SYSTEM ((HBITMAP) 1)
+#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
+#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
+#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
+#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
+#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
+#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
+#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
+#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
+#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
/* DrawState defines ... */
typedef WIN_BOOL CALLBACK (*DRAWSTATEPROC)(HDC,LPARAM,WPARAM,INT,INT);
#define BST_CHECKED 0x0001
#define BST_INDETERMINATE 0x0002
#define BST_PUSHED 0x0004
-#define BST_FOCUS 0x0008
+#define BST_FOCUS 0x0008
/* Static Control Styles */
#define SS_LEFT 0x00000000L
INT nTrackPos;
} SCROLLINFO, *LPSCROLLINFO;
-/* GetScrollInfo() flags */
+/* GetScrollInfo() flags */
#define SIF_RANGE 0x0001
#define SIF_PAGE 0x0002
#define SIF_POS 0x0004
#define CBS_NOINTEGRALHEIGHT 0x0400L
#define CBS_DISABLENOSCROLL 0x0800L
-#define CBS_UPPERCASE 0x2000L
-#define CBS_LOWERCASE 0x4000L
+#define CBS_UPPERCASE 0x2000L
+#define CBS_LOWERCASE 0x4000L
/* Combo box messages */
#define CB_ERR (-1)
#define CB_ERRSPACE (-2)
-#define MB_OK 0x00000000
-#define MB_OKCANCEL 0x00000001
-#define MB_ABORTRETRYIGNORE 0x00000002
-#define MB_YESNOCANCEL 0x00000003
-#define MB_YESNO 0x00000004
-#define MB_RETRYCANCEL 0x00000005
-#define MB_TYPEMASK 0x0000000F
-
-#define MB_ICONHAND 0x00000010
-#define MB_ICONQUESTION 0x00000020
-#define MB_ICONEXCLAMATION 0x00000030
-#define MB_ICONASTERISK 0x00000040
-#define MB_USERICON 0x00000080
-#define MB_ICONMASK 0x000000F0
-
-#define MB_ICONINFORMATION MB_ICONASTERISK
-#define MB_ICONSTOP MB_ICONHAND
-#define MB_ICONWARNING MB_ICONEXCLAMATION
-#define MB_ICONERROR MB_ICONHAND
-
-#define MB_DEFBUTTON1 0x00000000
-#define MB_DEFBUTTON2 0x00000100
-#define MB_DEFBUTTON3 0x00000200
-#define MB_DEFBUTTON4 0x00000300
-#define MB_DEFMASK 0x00000F00
-
-#define MB_APPLMODAL 0x00000000
-#define MB_SYSTEMMODAL 0x00001000
-#define MB_TASKMODAL 0x00002000
-#define MB_MODEMASK 0x00003000
-
-#define MB_HELP 0x00004000
-#define MB_NOFOCUS 0x00008000
-#define MB_MISCMASK 0x0000C000
-
-#define MB_SETFOREGROUND 0x00010000
-#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
-#define MB_SERVICE_NOTIFICATION 0x00040000
-#define MB_TOPMOST 0x00040000
-#define MB_RIGHT 0x00080000
-#define MB_RTLREADING 0x00100000
-
-#define HELPINFO_WINDOW 0x0001
-#define HELPINFO_MENUITEM 0x0002
+#define MB_OK 0x00000000
+#define MB_OKCANCEL 0x00000001
+#define MB_ABORTRETRYIGNORE 0x00000002
+#define MB_YESNOCANCEL 0x00000003
+#define MB_YESNO 0x00000004
+#define MB_RETRYCANCEL 0x00000005
+#define MB_TYPEMASK 0x0000000F
+
+#define MB_ICONHAND 0x00000010
+#define MB_ICONQUESTION 0x00000020
+#define MB_ICONEXCLAMATION 0x00000030
+#define MB_ICONASTERISK 0x00000040
+#define MB_USERICON 0x00000080
+#define MB_ICONMASK 0x000000F0
+
+#define MB_ICONINFORMATION MB_ICONASTERISK
+#define MB_ICONSTOP MB_ICONHAND
+#define MB_ICONWARNING MB_ICONEXCLAMATION
+#define MB_ICONERROR MB_ICONHAND
+
+#define MB_DEFBUTTON1 0x00000000
+#define MB_DEFBUTTON2 0x00000100
+#define MB_DEFBUTTON3 0x00000200
+#define MB_DEFBUTTON4 0x00000300
+#define MB_DEFMASK 0x00000F00
+
+#define MB_APPLMODAL 0x00000000
+#define MB_SYSTEMMODAL 0x00001000
+#define MB_TASKMODAL 0x00002000
+#define MB_MODEMASK 0x00003000
+
+#define MB_HELP 0x00004000
+#define MB_NOFOCUS 0x00008000
+#define MB_MISCMASK 0x0000C000
+
+#define MB_SETFOREGROUND 0x00010000
+#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
+#define MB_SERVICE_NOTIFICATION 0x00040000
+#define MB_TOPMOST 0x00040000
+#define MB_RIGHT 0x00080000
+#define MB_RTLREADING 0x00100000
+
+#define HELPINFO_WINDOW 0x0001
+#define HELPINFO_MENUITEM 0x0002
/* Structure pointed to by lParam of WM_HELP */
-typedef struct
+typedef struct
{
- UINT cbSize; /* Size in bytes of this struct */
- INT iContextType; /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
- INT iCtrlId; /* Control Id or a Menu item Id. */
- HANDLE hItemHandle; /* hWnd of control or hMenu. */
- DWORD dwContextId; /* Context Id associated with this item */
- POINT MousePos; /* Mouse Position in screen co-ordinates */
+ UINT cbSize; /* Size in bytes of this struct */
+ INT iContextType; /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
+ INT iCtrlId; /* Control Id or a Menu item Id. */
+ HANDLE hItemHandle; /* hWnd of control or hMenu. */
+ DWORD dwContextId; /* Context Id associated with this item */
+ POINT MousePos; /* Mouse Position in screen co-ordinates */
} HELPINFO,*LPHELPINFO;
typedef void CALLBACK (*MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
typedef struct
{
- UINT cbSize;
- HWND hwndOwner;
- HINSTANCE hInstance;
- LPCSTR lpszText;
- LPCSTR lpszCaption;
- DWORD dwStyle;
- LPCSTR lpszIcon;
- DWORD dwContextHelpId;
- MSGBOXCALLBACK lpfnMsgBoxCallback;
- DWORD dwLanguageId;
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpszText;
+ LPCSTR lpszCaption;
+ DWORD dwStyle;
+ LPCSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
} MSGBOXPARAMSA,*LPMSGBOXPARAMSA;
typedef struct
{
- UINT cbSize;
- HWND hwndOwner;
- HINSTANCE hInstance;
- LPCWSTR lpszText;
- LPCWSTR lpszCaption;
- DWORD dwStyle;
- LPCWSTR lpszIcon;
- DWORD dwContextHelpId;
- MSGBOXCALLBACK lpfnMsgBoxCallback;
- DWORD dwLanguageId;
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpszText;
+ LPCWSTR lpszCaption;
+ DWORD dwStyle;
+ LPCWSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
} MSGBOXPARAMSW,*LPMSGBOXPARAMSW;
DECL_WINELIB_TYPE_AW(MSGBOXPARAMS)
} NUMBERFMTW;
typedef struct _currencyfmt32a
-{
- UINT NumDigits;
- UINT LeadingZero;
- UINT Grouping;
- LPCSTR lpDecimalSep;
- LPCSTR lpThousandSep;
- UINT NegativeOrder;
- UINT PositiveOrder;
- LPCSTR lpCurrencySymbol;
-} CURRENCYFMTA;
+{
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPCSTR lpDecimalSep;
+ LPCSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPCSTR lpCurrencySymbol;
+} CURRENCYFMTA;
typedef struct _currencyfmt32w
-{
- UINT NumDigits;
- UINT LeadingZero;
- UINT Grouping;
- LPCWSTR lpDecimalSep;
- LPCWSTR lpThousandSep;
- UINT NegativeOrder;
- UINT PositiveOrder;
- LPCWSTR lpCurrencySymbol;
-} CURRENCYFMTW;
+{
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPCWSTR lpDecimalSep;
+ LPCWSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPCWSTR lpCurrencySymbol;
+} CURRENCYFMTW;
#define MONITOR_DEFAULTTONULL 0x00000000
#define MONITOR_DEFAULTTOPRIMARY 0x00000001
/* CBT hook values */
-#define HCBT_MOVESIZE 0
-#define HCBT_MINMAX 1
-#define HCBT_QS 2
-#define HCBT_CREATEWND 3
-#define HCBT_DESTROYWND 4
-#define HCBT_ACTIVATE 5
+#define HCBT_MOVESIZE 0
+#define HCBT_MINMAX 1
+#define HCBT_QS 2
+#define HCBT_CREATEWND 3
+#define HCBT_DESTROYWND 4
+#define HCBT_ACTIVATE 5
#define HCBT_CLICKSKIPPED 6
#define HCBT_KEYSKIPPED 7
-#define HCBT_SYSCOMMAND 8
-#define HCBT_SETFOCUS 9
+#define HCBT_SYSCOMMAND 8
+#define HCBT_SETFOCUS 9
/* CBT hook structures */
/* modifiers for RegisterHotKey */
-#define MOD_ALT 0x0001
-#define MOD_CONTROL 0x0002
-#define MOD_SHIFT 0x0004
-#define MOD_WIN 0x0008
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+#define MOD_WIN 0x0008
/* ids for RegisterHotKey */
-#define IDHOT_SNAPWINDOW (-1) /* SHIFT-PRINTSCRN */
-#define IDHOT_SNAPDESKTOP (-2) /* PRINTSCRN */
+#define IDHOT_SNAPWINDOW (-1) /* SHIFT-PRINTSCRN */
+#define IDHOT_SNAPDESKTOP (-2) /* PRINTSCRN */
/* keybd_event flags */
#define KEYEVENTF_EXTENDEDKEY 0x0001
#define EWX_POWEROFF 8
/* SetLastErrorEx types */
-#define SLE_ERROR 0x00000001
-#define SLE_MINORERROR 0x00000002
-#define SLE_WARNING 0x00000003
+#define SLE_ERROR 0x00000001
+#define SLE_MINORERROR 0x00000002
+#define SLE_WARNING 0x00000003
/* Predefined resources */
#define IDI_APPLICATIONA MAKEINTRESOURCEA(32512)
#define MNC_IGNORE 0
#define MNC_CLOSE 1
#define MNC_EXECUTE 2
-#define MNC_SELECT 3
+#define MNC_SELECT 3
/* SystemParametersInfo */
/* defines below are for all win versions */
#define SPI_GETFASTTASKSWITCH 35
#define SPI_SETFASTTASKSWITCH 36
#define SPI_SETDRAGFULLWINDOWS 37
-#define SPI_GETDRAGFULLWINDOWS 38
+#define SPI_GETDRAGFULLWINDOWS 38
#define SPI_GETFILTERKEYS 50
#define SPI_SETFILTERKEYS 51
#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST)
/* WINE internal... */
-#define WS_EX_TRAYWINDOW 0x80000000L
+#define WS_EX_TRAYWINDOW 0x80000000L
/* Window scrolling */
#define SW_SCROLLCHILDREN 0x0001
#define CWP_SKIPTRANSPARENT 0x0004
/* PeekMessage() options */
-#define PM_NOREMOVE 0x0000
-#define PM_REMOVE 0x0001
-#define PM_NOYIELD 0x0002
+#define PM_NOREMOVE 0x0000
+#define PM_REMOVE 0x0001
+#define PM_NOYIELD 0x0002
/* WM_SHOWWINDOW wParam codes */
#define SW_PARENTCLOSING 1
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
-#define SW_SHOWDEFAULT 10
-#define SW_MAX 10
-#define SW_NORMALNA 0xCC /* undoc. flag in MinMaximize */
+#define SW_SHOWDEFAULT 10
+#define SW_MAX 10
+#define SW_NORMALNA 0xCC /* undoc. flag in MinMaximize */
/* WM_SIZE message wParam values */
#define SIZE_RESTORED 0
#define DT_INTERNAL 4096
/* DrawCaption()/DrawCaptionTemp() flags */
-#define DC_ACTIVE 0x0001
-#define DC_SMALLCAP 0x0002
-#define DC_ICON 0x0004
-#define DC_TEXT 0x0008
-#define DC_INBUTTON 0x0010
+#define DC_ACTIVE 0x0001
+#define DC_SMALLCAP 0x0002
+#define DC_ICON 0x0004
+#define DC_TEXT 0x0008
+#define DC_INBUTTON 0x0010
/* DrawEdge() flags */
#define BDR_RAISEDOUTER 0x0001
#define DFCS_CAPTIONMIN 0x0001
#define DFCS_CAPTIONMAX 0x0002
#define DFCS_CAPTIONRESTORE 0x0003
-#define DFCS_CAPTIONHELP 0x0004 /* Windows 95 only */
+#define DFCS_CAPTIONHELP 0x0004 /* Windows 95 only */
#define DFCS_MENUARROW 0x0000
#define DFCS_MENUCHECK 0x0001
#define DFCS_BUTTONCHECK 0x0000
#define DFCS_BUTTONRADIOIMAGE 0x0001
-#define DFCS_BUTTONRADIOMASK 0x0002 /* to draw nonsquare button */
+#define DFCS_BUTTONRADIOMASK 0x0002 /* to draw nonsquare button */
#define DFCS_BUTTONRADIO 0x0004
#define DFCS_BUTTON3STATE 0x0008
#define DFCS_BUTTONPUSH 0x0010
#define DFCS_INACTIVE 0x0100
#define DFCS_PUSHED 0x0200
#define DFCS_CHECKED 0x0400
-#define DFCS_ADJUSTRECT 0x2000 /* exclude surrounding edge */
+#define DFCS_ADJUSTRECT 0x2000 /* exclude surrounding edge */
#define DFCS_FLAT 0x4000
#define DFCS_MONO 0x8000
/* Image type */
-#define DST_COMPLEX 0x0000
-#define DST_TEXT 0x0001
-#define DST_PREFIXTEXT 0x0002
-#define DST_ICON 0x0003
-#define DST_BITMAP 0x0004
+#define DST_COMPLEX 0x0000
+#define DST_TEXT 0x0001
+#define DST_PREFIXTEXT 0x0002
+#define DST_ICON 0x0003
+#define DST_BITMAP 0x0004
/* State type */
-#define DSS_NORMAL 0x0000
-#define DSS_UNION 0x0010 /* Gray string appearance */
-#define DSS_DISABLED 0x0020
-#define DSS_DEFAULT 0x0040 /* Make it bold */
-#define DSS_MONO 0x0080
-#define DSS_RIGHT 0x8000
+#define DSS_NORMAL 0x0000
+#define DSS_UNION 0x0010 /* Gray string appearance */
+#define DSS_DISABLED 0x0020
+#define DSS_DEFAULT 0x0040 /* Make it bold */
+#define DSS_MONO 0x0080
+#define DSS_RIGHT 0x8000
typedef struct
{
#define VK_NONAME 0xFC
#define VK_PA1 0xFD
#define VK_OEM_CLEAR 0xFE
-
+
/* Key status flags for mouse events */
-#define MK_LBUTTON 0x0001
-#define MK_RBUTTON 0x0002
-#define MK_SHIFT 0x0004
-#define MK_CONTROL 0x0008
-#define MK_MBUTTON 0x0010
+#define MK_LBUTTON 0x0001
+#define MK_RBUTTON 0x0002
+#define MK_SHIFT 0x0004
+#define MK_CONTROL 0x0008
+#define MK_MBUTTON 0x0010
/* Queue status flags */
-#define QS_KEY 0x0001
-#define QS_MOUSEMOVE 0x0002
-#define QS_MOUSEBUTTON 0x0004
-#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
-#define QS_POSTMESSAGE 0x0008
-#define QS_TIMER 0x0010
-#define QS_PAINT 0x0020
-#define QS_SENDMESSAGE 0x0040
-#define QS_HOTKEY 0x0080
-#define QS_INPUT (QS_MOUSE | QS_KEY)
-#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
+#define QS_KEY 0x0001
+#define QS_MOUSEMOVE 0x0002
+#define QS_MOUSEBUTTON 0x0004
+#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
+#define QS_POSTMESSAGE 0x0008
+#define QS_TIMER 0x0010
+#define QS_PAINT 0x0020
+#define QS_SENDMESSAGE 0x0040
+#define QS_HOTKEY 0x0080
+#define QS_INPUT (QS_MOUSE | QS_KEY)
+#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
#define QS_ALLINPUT (QS_ALLEVENTS | QS_SENDMESSAGE)
-#define DDL_READWRITE 0x0000
-#define DDL_READONLY 0x0001
-#define DDL_HIDDEN 0x0002
-#define DDL_SYSTEM 0x0004
-#define DDL_DIRECTORY 0x0010
-#define DDL_ARCHIVE 0x0020
+#define DDL_READWRITE 0x0000
+#define DDL_READONLY 0x0001
+#define DDL_HIDDEN 0x0002
+#define DDL_SYSTEM 0x0004
+#define DDL_DIRECTORY 0x0010
+#define DDL_ARCHIVE 0x0020
-#define DDL_POSTMSGS 0x2000
-#define DDL_DRIVES 0x4000
-#define DDL_EXCLUSIVE 0x8000
+#define DDL_POSTMSGS 0x2000
+#define DDL_DRIVES 0x4000
+#define DDL_EXCLUSIVE 0x8000
/* Shell hook values */
#define HSHELL_WINDOWCREATED 1
LONG l WINE_PACKED;
} DRAGINFO, *LPDRAGINFO;
-#define DRAGOBJ_PROGRAM 0x0001
-#define DRAGOBJ_DATA 0x0002
-#define DRAGOBJ_DIRECTORY 0x0004
-#define DRAGOBJ_MULTIPLE 0x0008
-#define DRAGOBJ_EXTERNAL 0x8000
+#define DRAGOBJ_PROGRAM 0x0001
+#define DRAGOBJ_DATA 0x0002
+#define DRAGOBJ_DIRECTORY 0x0004
+#define DRAGOBJ_MULTIPLE 0x0008
+#define DRAGOBJ_EXTERNAL 0x8000
-#define DRAG_PRINT 0x544E5250
-#define DRAG_FILE 0x454C4946
+#define DRAG_PRINT 0x544E5250
+#define DRAG_FILE 0x454C4946
/* types of LoadImage */
-#define IMAGE_BITMAP 0
-#define IMAGE_ICON 1
-#define IMAGE_CURSOR 2
-#define IMAGE_ENHMETAFILE 3
+#define IMAGE_BITMAP 0
+#define IMAGE_ICON 1
+#define IMAGE_CURSOR 2
+#define IMAGE_ENHMETAFILE 3
/* loadflags to LoadImage */
-#define LR_DEFAULTCOLOR 0x0000
-#define LR_MONOCHROME 0x0001
-#define LR_COLOR 0x0002
-#define LR_COPYRETURNORG 0x0004
-#define LR_COPYDELETEORG 0x0008
-#define LR_LOADFROMFILE 0x0010
-#define LR_LOADTRANSPARENT 0x0020
-#define LR_DEFAULTSIZE 0x0040
-#define LR_VGA_COLOR 0x0080
-#define LR_LOADMAP3DCOLORS 0x1000
-#define LR_CREATEDIBSECTION 0x2000
-#define LR_COPYFROMRESOURCE 0x4000
-#define LR_SHARED 0x8000
+#define LR_DEFAULTCOLOR 0x0000
+#define LR_MONOCHROME 0x0001
+#define LR_COLOR 0x0002
+#define LR_COPYRETURNORG 0x0004
+#define LR_COPYDELETEORG 0x0008
+#define LR_LOADFROMFILE 0x0010
+#define LR_LOADTRANSPARENT 0x0020
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGA_COLOR 0x0080
+#define LR_LOADMAP3DCOLORS 0x1000
+#define LR_CREATEDIBSECTION 0x2000
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 0x8000
/* Flags for DrawIconEx. */
#define DI_MASK 1
#define WM_CPL_LAUNCHED (WM_USER + 1001)
/* WM_NOTIFYFORMAT commands and return values */
-#define NFR_ANSI 1
-#define NFR_UNICODE 2
-#define NF_QUERY 3
-#define NF_REQUERY 4
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
#include "poppack.h"
#define EnumTaskWindows(handle,proc,lparam) \
typedef struct _WINE_ACMOBJ
{
- PWINE_ACMDRIVERID pACMDriverID;
+ PWINE_ACMDRIVERID pACMDriverID;
} WINE_ACMOBJ, *PWINE_ACMOBJ;
typedef struct _WINE_ACMDRIVER
{
- WINE_ACMOBJ obj;
- HDRVR hDrvr;
- DRIVERPROC pfnDriverProc;
- PWINE_ACMDRIVER pNextACMDriver;
+ WINE_ACMOBJ obj;
+ HDRVR hDrvr;
+ DRIVERPROC pfnDriverProc;
+ PWINE_ACMDRIVER pNextACMDriver;
int iUsage;
} WINE_ACMDRIVER;
typedef struct _WINE_ACMSTREAM
{
- WINE_ACMOBJ obj;
- PWINE_ACMDRIVER pDrv;
+ WINE_ACMOBJ obj;
+ PWINE_ACMDRIVER pDrv;
ACMDRVSTREAMINSTANCE drvInst;
- HACMDRIVER hAcmDriver;
+ HACMDRIVER hAcmDriver;
} WINE_ACMSTREAM, *PWINE_ACMSTREAM;
typedef struct _WINE_ACMDRIVERID
{
LPSTR pszFileName;
- WORD wFormatTag;
- HINSTANCE hInstModule; /* NULL if global */
- DWORD dwProcessID; /* ID of process which installed a local driver */
+ WORD wFormatTag;
+ HINSTANCE hInstModule; /* NULL if global */
+ DWORD dwProcessID; /* ID of process which installed a local driver */
WIN_BOOL bEnabled;
PWINE_ACMDRIVER pACMDriverList;
PWINE_ACMDRIVERID pNextACMDriverID;
- PWINE_ACMDRIVERID pPrevACMDriverID;
+ PWINE_ACMDRIVERID pPrevACMDriverID;
} WINE_ACMDRIVERID;
/* From internal.c */
extern PWINE_ACMDRIVERID MSACM_pLastACMDriverID;
PWINE_ACMDRIVERID MSACM_RegisterDriver(const char* pszFileName,
- WORD wFormatTag,
- HINSTANCE hinstModule);
+ WORD wFormatTag,
+ HINSTANCE hinstModule);
PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p);
void MSACM_UnregisterAllDrivers(void);
PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID);
*/
static void
print_item (WINDOW * win, const char *item, int status,
- int choice, int selected)
+ int choice, int selected)
{
int i;
wattrset (win, menubox_attr);
wmove (win, choice, 0);
for (i = 0; i < list_width; i++)
- waddch (win, ' ');
+ waddch (win, ' ');
wmove (win, choice, check_x);
wattrset (win, selected ? check_selected_attr : check_attr);
if (checkflag == FLAG_CHECK)
- wprintw (win, "[%c]", status ? 'X' : ' ');
+ wprintw (win, "[%c]", status ? 'X' : ' ');
else
- wprintw (win, "(%c)", status ? 'X' : ' ');
+ wprintw (win, "(%c)", status ? 'X' : ' ');
wattrset (win, selected ? tag_selected_attr : tag_attr);
mvwaddch(win, choice, item_x, item[0]);
wattrset (win, selected ? item_selected_attr : item_attr);
waddstr (win, (char *)item+1);
if (selected) {
- wmove (win, choice, check_x+1);
- wrefresh (win);
+ wmove (win, choice, check_x+1);
+ wrefresh (win);
}
}
*/
static void
print_arrows (WINDOW * win, int choice, int item_no, int scroll,
- int y, int x, int height)
+ int y, int x, int height)
{
wmove(win, y, x);
if (scroll > 0) {
- wattrset (win, uarrow_attr);
- waddch (win, ACS_UARROW);
- waddstr (win, "(-)");
+ wattrset (win, uarrow_attr);
+ waddch (win, ACS_UARROW);
+ waddstr (win, "(-)");
}
else {
- wattrset (win, menubox_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
+ wattrset (win, menubox_attr);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
}
y = y + height + 1;
wmove(win, y, x);
if ((height < item_no) && (scroll + choice < item_no - 1)) {
- wattrset (win, darrow_attr);
- waddch (win, ACS_DARROW);
- waddstr (win, "(+)");
+ wattrset (win, darrow_attr);
+ waddch (win, ACS_DARROW);
+ waddstr (win, "(+)");
}
else {
- wattrset (win, menubox_border_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
+ wattrset (win, menubox_border_attr);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
}
}
*/
int
dialog_checklist (const char *title, const char *prompt, int height, int width,
- int list_height, int item_no, const char * const * items, int flag)
-
+ int list_height, int item_no, const char * const * items, int flag)
+
{
int i, x, y, box_x, box_y;
int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status;
/* Allocate space for storing item on/off status */
if ((status = malloc (sizeof (int) * item_no)) == NULL) {
- endwin ();
- fprintf (stderr,
- "\nCan't allocate memory in dialog_checklist().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr,
+ "\nCan't allocate memory in dialog_checklist().\n");
+ exit (-1);
}
/* Initializes status */
for (i = 0; i < item_no; i++) {
- status[i] = !strcasecmp (items[i * 3 + 2], "on");
- if (!choice && status[i])
+ status[i] = !strcasecmp (items[i * 3 + 2], "on");
+ if (!choice && status[i])
choice = i;
}
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
+ waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
wattrset (dialog, dialog_attr);
/* draw a box around the list items */
draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2,
- menubox_border_attr, menubox_attr);
+ menubox_border_attr, menubox_attr);
/* Find length of longest item in order to center checklist */
check_x = 0;
- for (i = 0; i < item_no; i++)
- check_x = MAX (check_x, + strlen (items[i * 3 + 1]) + 4);
+ for (i = 0; i < item_no; i++)
+ check_x = MAX (check_x, + strlen (items[i * 3 + 1]) + 4);
check_x = (list_width - check_x) / 2;
item_x = check_x + 4;
if (choice >= list_height) {
- scroll = choice - list_height + 1;
- choice -= scroll;
+ scroll = choice - list_height + 1;
+ choice -= scroll;
}
/* Print the list */
for (i = 0; i < max_choice; i++) {
- print_item (list, items[(scroll+i) * 3 + 1],
- status[i+scroll], i, i == choice);
+ print_item (list, items[(scroll+i) * 3 + 1],
+ status[i+scroll], i, i == choice);
}
print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
+ box_y, box_x + check_x + 5, list_height);
print_buttons(dialog, height, width, 0);
doupdate ();
while (key != ESC) {
- key = wgetch (dialog);
+ key = wgetch (dialog);
- for (i = 0; i < max_choice; i++)
+ for (i = 0; i < max_choice; i++)
if (toupper(key) == toupper(items[(scroll+i)*3+1][0]))
break;
- if ( i < max_choice || key == KEY_UP || key == KEY_DOWN ||
- key == '+' || key == '-' ) {
- if (key == KEY_UP || key == '-') {
- if (!choice) {
- if (!scroll)
- continue;
- /* Scroll list down */
- if (list_height > 1) {
- /* De-highlight current first item */
- print_item (list, items[scroll * 3 + 1],
- status[scroll], 0, FALSE);
- scrollok (list, TRUE);
- wscrl (list, -1);
- scrollok (list, FALSE);
- }
- scroll--;
- print_item (list, items[scroll * 3 + 1],
- status[scroll], 0, TRUE);
- wnoutrefresh (list);
-
- print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
-
- wrefresh (dialog);
-
- continue; /* wait for another key press */
- } else
- i = choice - 1;
- } else if (key == KEY_DOWN || key == '+') {
- if (choice == max_choice - 1) {
- if (scroll + choice >= item_no - 1)
- continue;
- /* Scroll list up */
- if (list_height > 1) {
- /* De-highlight current last item before scrolling up */
- print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
- status[scroll + max_choice - 1],
- max_choice - 1, FALSE);
- scrollok (list, TRUE);
- scroll (list);
- scrollok (list, FALSE);
- }
- scroll++;
- print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
- status[scroll + max_choice - 1],
- max_choice - 1, TRUE);
- wnoutrefresh (list);
-
- print_arrows(dialog, choice, item_no, scroll,
- box_y, box_x + check_x + 5, list_height);
-
- wrefresh (dialog);
-
- continue; /* wait for another key press */
- } else
- i = choice + 1;
- }
- if (i != choice) {
- /* De-highlight current item */
- print_item (list, items[(scroll + choice) * 3 + 1],
- status[scroll + choice], choice, FALSE);
- /* Highlight new item */
- choice = i;
- print_item (list, items[(scroll + choice) * 3 + 1],
- status[scroll + choice], choice, TRUE);
- wnoutrefresh (list);
- wrefresh (dialog);
- }
- continue; /* wait for another key press */
- }
- switch (key) {
- case 'H':
- case 'h':
- case '?':
- delwin (dialog);
- free (status);
- return 1;
- case TAB:
- case KEY_LEFT:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 1 : (button > 1 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (dialog);
- break;
- case 'S':
- case 's':
- case ' ':
- case '\n':
- if (!button) {
- if (flag == FLAG_CHECK) {
- status[scroll + choice] = !status[scroll + choice];
- wmove (list, choice, check_x);
- wattrset (list, check_selected_attr);
- wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' ');
- } else {
- if (!status[scroll + choice]) {
- for (i = 0; i < item_no; i++)
- status[i] = 0;
- status[scroll + choice] = 1;
- for (i = 0; i < max_choice; i++)
- print_item (list, items[(scroll + i) * 3 + 1],
- status[scroll + i], i, i == choice);
- }
- }
- wnoutrefresh (list);
- wrefresh (dialog);
-
- for (i = 0; i < item_no; i++) {
- if (status[i]) {
- if (flag == FLAG_CHECK) {
- fprintf (stderr, "\"%s\" ", items[i * 3]);
- } else {
- fprintf (stderr, "%s", items[i * 3]);
- }
-
- }
- }
+ if ( i < max_choice || key == KEY_UP || key == KEY_DOWN ||
+ key == '+' || key == '-' ) {
+ if (key == KEY_UP || key == '-') {
+ if (!choice) {
+ if (!scroll)
+ continue;
+ /* Scroll list down */
+ if (list_height > 1) {
+ /* De-highlight current first item */
+ print_item (list, items[scroll * 3 + 1],
+ status[scroll], 0, FALSE);
+ scrollok (list, TRUE);
+ wscrl (list, -1);
+ scrollok (list, FALSE);
}
- delwin (dialog);
- free (status);
- return button;
- case 'X':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
-
- /* Now, update everything... */
- doupdate ();
+ scroll--;
+ print_item (list, items[scroll * 3 + 1],
+ status[scroll], 0, TRUE);
+ wnoutrefresh (list);
+
+ print_arrows(dialog, choice, item_no, scroll,
+ box_y, box_x + check_x + 5, list_height);
+
+ wrefresh (dialog);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice - 1;
+ } else if (key == KEY_DOWN || key == '+') {
+ if (choice == max_choice - 1) {
+ if (scroll + choice >= item_no - 1)
+ continue;
+ /* Scroll list up */
+ if (list_height > 1) {
+ /* De-highlight current last item before scrolling up */
+ print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
+ status[scroll + max_choice - 1],
+ max_choice - 1, FALSE);
+ scrollok (list, TRUE);
+ scroll (list);
+ scrollok (list, FALSE);
+ }
+ scroll++;
+ print_item (list, items[(scroll + max_choice - 1) * 3 + 1],
+ status[scroll + max_choice - 1],
+ max_choice - 1, TRUE);
+ wnoutrefresh (list);
+
+ print_arrows(dialog, choice, item_no, scroll,
+ box_y, box_x + check_x + 5, list_height);
+
+ wrefresh (dialog);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice + 1;
+ }
+ if (i != choice) {
+ /* De-highlight current item */
+ print_item (list, items[(scroll + choice) * 3 + 1],
+ status[scroll + choice], choice, FALSE);
+ /* Highlight new item */
+ choice = i;
+ print_item (list, items[(scroll + choice) * 3 + 1],
+ status[scroll + choice], choice, TRUE);
+ wnoutrefresh (list);
+ wrefresh (dialog);
+ }
+ continue; /* wait for another key press */
}
-
+ switch (key) {
+ case 'H':
+ case 'h':
+ case '?':
+ delwin (dialog);
+ free (status);
+ return 1;
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh (dialog);
+ break;
+ case 'S':
+ case 's':
+ case ' ':
+ case '\n':
+ if (!button) {
+ if (flag == FLAG_CHECK) {
+ status[scroll + choice] = !status[scroll + choice];
+ wmove (list, choice, check_x);
+ wattrset (list, check_selected_attr);
+ wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' ');
+ } else {
+ if (!status[scroll + choice]) {
+ for (i = 0; i < item_no; i++)
+ status[i] = 0;
+ status[scroll + choice] = 1;
+ for (i = 0; i < max_choice; i++)
+ print_item (list, items[(scroll + i) * 3 + 1],
+ status[scroll + i], i, i == choice);
+ }
+ }
+ wnoutrefresh (list);
+ wrefresh (dialog);
+
+ for (i = 0; i < item_no; i++) {
+ if (status[i]) {
+ if (flag == FLAG_CHECK) {
+ fprintf (stderr, "\"%s\" ", items[i * 3]);
+ } else {
+ fprintf (stderr, "%s", items[i * 3]);
+ }
+
+ }
+ }
+ }
+ delwin (dialog);
+ free (status);
+ return button;
+ case 'X':
+ case 'x':
+ key = ESC;
+ case ESC:
+ break;
+ }
+
+ /* Now, update everything... */
+ doupdate ();
+ }
+
delwin (dialog);
free (status);
- return -1; /* ESC pressed */
+ return -1; /* ESC pressed */
}
#define ACS_DARROW 'v'
#endif
-/*
+/*
* Attribute names
*/
#define screen_attr attributes[0]
void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x);
void print_button (WINDOW * win, const char *label, int y, int x, int selected);
void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box,
- chtype border);
+ chtype border);
void draw_shadow (WINDOW * win, int y, int x, int height, int width);
int first_alpha (const char *string, const char *exempt);
int dialog_yesno (const char *title, const char *prompt, int height, int width);
int dialog_msgbox (const char *title, const char *prompt, int height,
- int width, int pause);
+ int width, int pause);
int dialog_textbox (const char *title, const char *file, int height, int width);
int dialog_menu (const char *title, const char *prompt, int height, int width,
- int menu_height, const char *choice, int item_no,
- const char * const * items);
+ int menu_height, const char *choice, int item_no,
+ const char * const * items);
int dialog_checklist (const char *title, const char *prompt, int height,
- int width, int list_height, int item_no,
- const char * const * items, int flag);
+ int width, int list_height, int item_no,
+ const char * const * items, int flag);
extern unsigned char dialog_input_result[];
int dialog_inputbox (const char *title, const char *prompt, int height,
- int width, const char *init);
+ int width, const char *init);
/*
* This is the base for fictitious keys, which activate
*/
int
dialog_inputbox (const char *title, const char *prompt, int height, int width,
- const char *init)
+ const char *init)
{
int i, x, y, box_y, box_x, box_width;
int input_x = 0, scroll = 0, key = 0, button = -1;
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
+ waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
wattrset (dialog, dialog_attr);
box_y = y + 2;
box_x = (width - box_width) / 2;
draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2,
- border_attr, dialog_attr);
+ border_attr, dialog_attr);
print_buttons(dialog, height, width, 0);
wattrset (dialog, inputbox_attr);
if (!init)
- instr[0] = '\0';
+ instr[0] = '\0';
else
- strcpy (instr, init);
+ strcpy (instr, init);
input_x = strlen (instr);
if (input_x >= box_width) {
- scroll = input_x - box_width + 1;
- input_x = box_width - 1;
- for (i = 0; i < box_width - 1; i++)
- waddch (dialog, instr[scroll + i]);
+ scroll = input_x - box_width + 1;
+ input_x = box_width - 1;
+ for (i = 0; i < box_width - 1; i++)
+ waddch (dialog, instr[scroll + i]);
} else
- waddstr (dialog, instr);
+ waddstr (dialog, instr);
wmove (dialog, box_y, box_x + input_x);
wrefresh (dialog);
while (key != ESC) {
- key = wgetch (dialog);
-
- if (button == -1) { /* Input box selected */
- switch (key) {
- case TAB:
- case KEY_UP:
- case KEY_DOWN:
- break;
- case KEY_LEFT:
- continue;
- case KEY_RIGHT:
- continue;
- case KEY_BACKSPACE:
- case 127:
- if (input_x || scroll) {
- wattrset (dialog, inputbox_attr);
- if (!input_x) {
- scroll = scroll < box_width - 1 ?
- 0 : scroll - (box_width - 1);
- wmove (dialog, box_y, box_x);
- for (i = 0; i < box_width; i++)
- waddch (dialog, instr[scroll + input_x + i] ?
- instr[scroll + input_x + i] : ' ');
- input_x = strlen (instr) - scroll;
- } else
- input_x--;
- instr[scroll + input_x] = '\0';
- mvwaddch (dialog, box_y, input_x + box_x, ' ');
- wmove (dialog, box_y, input_x + box_x);
- wrefresh (dialog);
- }
- continue;
- default:
- if (key < 0x100 && isprint (key)) {
- if (scroll + input_x < MAX_LEN) {
- wattrset (dialog, inputbox_attr);
- instr[scroll + input_x] = key;
- instr[scroll + input_x + 1] = '\0';
- if (input_x == box_width - 1) {
- scroll++;
- wmove (dialog, box_y, box_x);
- for (i = 0; i < box_width - 1; i++)
- waddch (dialog, instr[scroll + i]);
- } else {
- wmove (dialog, box_y, input_x++ + box_x);
- waddch (dialog, key);
- }
- wrefresh (dialog);
- } else
- flash (); /* Alarm user about overflow */
- continue;
- }
- }
- }
- switch (key) {
- case 'O':
- case 'o':
- delwin (dialog);
- return 0;
- case 'H':
- case 'h':
- delwin (dialog);
- return 1;
- case KEY_UP:
- case KEY_LEFT:
- switch (button) {
- case -1:
- button = 1; /* Indicates "Cancel" button is selected */
- print_buttons(dialog, height, width, 1);
- break;
- case 0:
- button = -1; /* Indicates input box is selected */
- print_buttons(dialog, height, width, 0);
- wmove (dialog, box_y, box_x + input_x);
- wrefresh (dialog);
- break;
- case 1:
- button = 0; /* Indicates "OK" button is selected */
- print_buttons(dialog, height, width, 0);
- break;
- }
- break;
- case TAB:
- case KEY_DOWN:
- case KEY_RIGHT:
- switch (button) {
- case -1:
- button = 0; /* Indicates "OK" button is selected */
- print_buttons(dialog, height, width, 0);
- break;
- case 0:
- button = 1; /* Indicates "Cancel" button is selected */
- print_buttons(dialog, height, width, 1);
- break;
- case 1:
- button = -1; /* Indicates input box is selected */
- print_buttons(dialog, height, width, 0);
- wmove (dialog, box_y, box_x + input_x);
- wrefresh (dialog);
- break;
- }
- break;
- case ' ':
- case '\n':
- delwin (dialog);
- return (button == -1 ? 0 : button);
- case 'X':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
+ key = wgetch (dialog);
+
+ if (button == -1) { /* Input box selected */
+ switch (key) {
+ case TAB:
+ case KEY_UP:
+ case KEY_DOWN:
+ break;
+ case KEY_LEFT:
+ continue;
+ case KEY_RIGHT:
+ continue;
+ case KEY_BACKSPACE:
+ case 127:
+ if (input_x || scroll) {
+ wattrset (dialog, inputbox_attr);
+ if (!input_x) {
+ scroll = scroll < box_width - 1 ?
+ 0 : scroll - (box_width - 1);
+ wmove (dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++)
+ waddch (dialog, instr[scroll + input_x + i] ?
+ instr[scroll + input_x + i] : ' ');
+ input_x = strlen (instr) - scroll;
+ } else
+ input_x--;
+ instr[scroll + input_x] = '\0';
+ mvwaddch (dialog, box_y, input_x + box_x, ' ');
+ wmove (dialog, box_y, input_x + box_x);
+ wrefresh (dialog);
+ }
+ continue;
+ default:
+ if (key < 0x100 && isprint (key)) {
+ if (scroll + input_x < MAX_LEN) {
+ wattrset (dialog, inputbox_attr);
+ instr[scroll + input_x] = key;
+ instr[scroll + input_x + 1] = '\0';
+ if (input_x == box_width - 1) {
+ scroll++;
+ wmove (dialog, box_y, box_x);
+ for (i = 0; i < box_width - 1; i++)
+ waddch (dialog, instr[scroll + i]);
+ } else {
+ wmove (dialog, box_y, input_x++ + box_x);
+ waddch (dialog, key);
+ }
+ wrefresh (dialog);
+ } else
+ flash (); /* Alarm user about overflow */
+ continue;
+ }
+ }
+ }
+ switch (key) {
+ case 'O':
+ case 'o':
+ delwin (dialog);
+ return 0;
+ case 'H':
+ case 'h':
+ delwin (dialog);
+ return 1;
+ case KEY_UP:
+ case KEY_LEFT:
+ switch (button) {
+ case -1:
+ button = 1; /* Indicates "Cancel" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 0:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove (dialog, box_y, box_x + input_x);
+ wrefresh (dialog);
+ break;
+ case 1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ }
+ break;
+ case TAB:
+ case KEY_DOWN:
+ case KEY_RIGHT:
+ switch (button) {
+ case -1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ case 0:
+ button = 1; /* Indicates "Cancel" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 1:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove (dialog, box_y, box_x + input_x);
+ wrefresh (dialog);
+ break;
+ }
+ break;
+ case ' ':
+ case '\n':
+ delwin (dialog);
+ return (button == -1 ? 0 : button);
+ case 'X':
+ case 'x':
+ key = ESC;
+ case ESC:
+ break;
+ }
}
delwin (dialog);
- return -1; /* ESC pressed */
+ return -1; /* ESC pressed */
}
trace(TRACE_CALLS|TRACE_UPDATE);
#endif
if (argc < 2) {
- Usage (argv[0]);
- exit (-1);
+ Usage (argv[0]);
+ exit (-1);
}
- while (offset < argc - 1 && !end_common_opts) { /* Common options */
- if (!strcmp (argv[offset + 1], "--title")) {
- if (argc - offset < 3 || title != NULL) {
- Usage (argv[0]);
- exit (-1);
- } else {
- title = argv[offset + 2];
- offset += 2;
- }
+ while (offset < argc - 1 && !end_common_opts) { /* Common options */
+ if (!strcmp (argv[offset + 1], "--title")) {
+ if (argc - offset < 3 || title != NULL) {
+ Usage (argv[0]);
+ exit (-1);
+ } else {
+ title = argv[offset + 2];
+ offset += 2;
+ }
} else if (!strcmp (argv[offset + 1], "--backtitle")) {
if (backtitle != NULL) {
Usage (argv[0]);
backtitle = argv[offset + 2];
offset += 2;
}
- } else if (!strcmp (argv[offset + 1], "--clear")) {
- if (clear_screen) { /* Hey, "--clear" can't appear twice! */
- Usage (argv[0]);
- exit (-1);
- } else if (argc == 2) { /* we only want to clear the screen */
- init_dialog ();
- refresh (); /* init_dialog() will clear the screen for us */
- end_dialog ();
- return 0;
- } else {
- clear_screen = 1;
- offset++;
- }
- } else /* no more common options */
- end_common_opts = 1;
+ } else if (!strcmp (argv[offset + 1], "--clear")) {
+ if (clear_screen) { /* Hey, "--clear" can't appear twice! */
+ Usage (argv[0]);
+ exit (-1);
+ } else if (argc == 2) { /* we only want to clear the screen */
+ init_dialog ();
+ refresh (); /* init_dialog() will clear the screen for us */
+ end_dialog ();
+ return 0;
+ } else {
+ clear_screen = 1;
+ offset++;
+ }
+ } else /* no more common options */
+ end_common_opts = 1;
}
- if (argc - 1 == offset) { /* no more options */
- Usage (argv[0]);
- exit (-1);
+ if (argc - 1 == offset) { /* no more options */
+ Usage (argv[0]);
+ exit (-1);
}
/* use a table to look for the requested mode, to avoid code duplication */
- for (modePtr = modes; modePtr->name; modePtr++) /* look for the mode */
- if (!strcmp (argv[offset + 1], modePtr->name))
- break;
+ for (modePtr = modes; modePtr->name; modePtr++) /* look for the mode */
+ if (!strcmp (argv[offset + 1], modePtr->name))
+ break;
if (!modePtr->name)
- Usage (argv[0]);
+ Usage (argv[0]);
if (argc - offset < modePtr->argmin)
- Usage (argv[0]);
+ Usage (argv[0]);
if (modePtr->argmax && argc - offset > modePtr->argmax)
- Usage (argv[0]);
+ Usage (argv[0]);
init_dialog ();
retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
- if (clear_screen) { /* clear screen before exit */
- attr_clear (stdscr, LINES, COLS, screen_attr);
- refresh ();
+ if (clear_screen) { /* clear screen before exit */
+ attr_clear (stdscr, LINES, COLS, screen_attr);
+ refresh ();
}
end_dialog();
j_menu (const char *t, int ac, const char * const * av)
{
return dialog_menu (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), av[6], (ac - 6) / 2, av + 7);
+ atoi (av[5]), av[6], (ac - 6) / 2, av + 7);
}
int
j_checklist (const char *t, int ac, const char * const * av)
{
return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK);
+ atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK);
}
int
j_radiolist (const char *t, int ac, const char * const * av)
{
return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
- atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO);
+ atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO);
}
int
*
* *) A bugfix for the Page-Down problem
*
- * *) Formerly when I used Page Down and Page Up, the cursor would be set
+ * *) Formerly when I used Page Down and Page Up, the cursor would be set
* to the first position in the menu box. Now lxdialog is a bit
* smarter and works more like other menu systems (just have a look at
* it).
{
int i;
for (i = 0; i < menu_width; i++)
- waddch (win, ' ');
+ waddch (win, ' ');
}
#else
wclrtoeol(win);
wattrset (win, selected ? item_selected_attr : item_attr);
mvwaddstr (win, choice, item_x, menu_item);
if (hotkey) {
- wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
- mvwaddch(win, choice, item_x+j, menu_item[j]);
+ wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
+ mvwaddch(win, choice, item_x+j, menu_item[j]);
}
if (selected) {
- wmove (win, choice, item_x+1);
- wrefresh (win);
+ wmove (win, choice, item_x+1);
+ wrefresh (win);
}
}
*/
static void
print_arrows (WINDOW * win, int item_no, int scroll,
- int y, int x, int height)
+ int y, int x, int height)
{
int cur_y, cur_x;
wmove(win, y, x);
if (scroll > 0) {
- wattrset (win, uarrow_attr);
- waddch (win, ACS_UARROW);
- waddstr (win, "(-)");
+ wattrset (win, uarrow_attr);
+ waddch (win, ACS_UARROW);
+ waddstr (win, "(-)");
}
else {
- wattrset (win, menubox_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
+ wattrset (win, menubox_attr);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
}
y = y + height + 1;
wmove(win, y, x);
if ((height < item_no) && (scroll + height < item_no)) {
- wattrset (win, darrow_attr);
- waddch (win, ACS_DARROW);
- waddstr (win, "(+)");
+ wattrset (win, darrow_attr);
+ waddch (win, ACS_DARROW);
+ waddstr (win, "(+)");
}
else {
- wattrset (win, menubox_border_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
+ wattrset (win, menubox_border_attr);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
+ waddch (win, ACS_HLINE);
}
wmove(win, cur_y, cur_x);
*/
int
dialog_menu (const char *title, const char *prompt, int height, int width,
- int menu_height, const char *current, int item_no,
- const char * const * items)
+ int menu_height, const char *current, int item_no,
+ const char * const * items)
{
int i, j, x, y, box_x, box_y;
wattrset (dialog, border_attr);
mvwaddch (dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
+ waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
wbkgdset (dialog, dialog_attr & A_COLOR);
waddch (dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
wattrset (dialog, dialog_attr);
/* create new window for the menu */
menu = subwin (dialog, menu_height, menu_width,
- y + box_y + 1, x + box_x + 1);
+ y + box_y + 1, x + box_x + 1);
keypad (menu, TRUE);
/* draw a box around the menu items */
draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2,
- menubox_border_attr, menubox_attr);
+ menubox_border_attr, menubox_attr);
/*
* Find length of longest item in order to center menu.
- * Set 'choice' to default item.
+ * Set 'choice' to default item.
*/
item_x = 0;
for (i = 0; i < item_no; i++) {
- item_x = MAX (item_x, MIN(menu_width, strlen (items[i * 2 + 1]) + 2));
- if (strcmp(current, items[i*2]) == 0) choice = i;
+ item_x = MAX (item_x, MIN(menu_width, strlen (items[i * 2 + 1]) + 2));
+ if (strcmp(current, items[i*2]) == 0) choice = i;
}
item_x = (menu_width - item_x) / 2;
/* get the scroll info from the temp file */
if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) {
- if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) &&
- (scroll+max_choice > choice) && (scroll >= 0) &&
- (scroll+max_choice <= item_no) ) {
- first_item = scroll;
- choice = choice - scroll;
- fclose(f);
- } else {
- scroll=0;
- remove("lxdialog.scrltmp");
- fclose(f);
- f=NULL;
- }
+ if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) &&
+ (scroll+max_choice > choice) && (scroll >= 0) &&
+ (scroll+max_choice <= item_no) ) {
+ first_item = scroll;
+ choice = choice - scroll;
+ fclose(f);
+ } else {
+ scroll=0;
+ remove("lxdialog.scrltmp");
+ fclose(f);
+ f=NULL;
+ }
}
if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) {
- if (choice >= item_no-max_choice/2)
- scroll = first_item = item_no-max_choice;
- else
- scroll = first_item = choice - max_choice/2;
- choice = choice - scroll;
+ if (choice >= item_no-max_choice/2)
+ scroll = first_item = item_no-max_choice;
+ else
+ scroll = first_item = choice - max_choice/2;
+ choice = choice - scroll;
}
/* Print the menu */
for (i=0; i < max_choice; i++) {
- print_item (menu, items[(first_item + i) * 2 + 1], i, i == choice,
+ print_item (menu, items[(first_item + i) * 2 + 1], i, i == choice,
(items[(first_item + i)*2][0] != ':'));
}
wnoutrefresh (menu);
print_arrows(dialog, item_no, scroll,
- box_y, box_x+item_x+1, menu_height);
+ box_y, box_x+item_x+1, menu_height);
print_buttons (dialog, height, width, 0);
wmove (menu, choice, item_x+1);
wrefresh (menu);
while (key != ESC) {
- key = wgetch(menu);
+ key = wgetch(menu);
- if (key < 256 && isalpha(key)) key = tolower(key);
+ if (key < 256 && isalpha(key)) key = tolower(key);
- if (strchr("ynm", key))
- i = max_choice;
- else {
+ if (strchr("ynm", key))
+ i = max_choice;
+ else {
for (i = choice+1; i < max_choice; i++) {
- j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
- if (key == tolower(items[(scroll+i)*2+1][j]))
- break;
- }
- if (i == max_choice)
- for (i = 0; i < max_choice; i++) {
- j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
- if (key == tolower(items[(scroll+i)*2+1][j]))
- break;
- }
- }
-
- if (i < max_choice ||
+ j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
+ if (key == tolower(items[(scroll+i)*2+1][j]))
+ break;
+ }
+ if (i == max_choice)
+ for (i = 0; i < max_choice; i++) {
+ j = first_alpha(items[(scroll+i)*2+1], "YyNnMm");
+ if (key == tolower(items[(scroll+i)*2+1][j]))
+ break;
+ }
+ }
+
+ if (i < max_choice ||
key == KEY_UP || key == KEY_DOWN ||
key == '-' || key == '+' ||
key == KEY_PPAGE || key == KEY_NPAGE) {
print_item (menu, items[(scroll+choice)*2+1], choice, FALSE,
(items[(scroll+choice)*2][0] != ':'));
- if (key == KEY_UP || key == '-') {
+ if (key == KEY_UP || key == '-') {
if (choice < 2 && scroll) {
- /* Scroll menu down */
+ /* Scroll menu down */
scrollok (menu, TRUE);
wscrl (menu, -1);
scrollok (menu, FALSE);
print_item (menu, items[scroll * 2 + 1], 0, FALSE,
(items[scroll*2][0] != ':'));
- } else
- choice = MAX(choice - 1, 0);
+ } else
+ choice = MAX(choice - 1, 0);
- } else if (key == KEY_DOWN || key == '+') {
+ } else if (key == KEY_DOWN || key == '+') {
- print_item (menu, items[(scroll+choice)*2+1], choice, FALSE,
+ print_item (menu, items[(scroll+choice)*2+1], choice, FALSE,
(items[(scroll+choice)*2][0] != ':'));
if ((choice > max_choice-3) &&
(scroll + max_choice < item_no)
) {
- /* Scroll menu up */
- scrollok (menu, TRUE);
+ /* Scroll menu up */
+ scrollok (menu, TRUE);
scroll (menu);
scrollok (menu, FALSE);
} else
choice = MIN(choice+1, max_choice-1);
- } else if (key == KEY_PPAGE) {
- scrollok (menu, TRUE);
+ } else if (key == KEY_PPAGE) {
+ scrollok (menu, TRUE);
for (i=0; (i < max_choice); i++) {
if (scroll > 0) {
- wscrl (menu, -1);
- scroll--;
- print_item (menu, items[scroll * 2 + 1], 0, FALSE,
- (items[scroll*2][0] != ':'));
+ wscrl (menu, -1);
+ scroll--;
+ print_item (menu, items[scroll * 2 + 1], 0, FALSE,
+ (items[scroll*2][0] != ':'));
} else {
if (choice > 0)
choice--;
} else if (key == KEY_NPAGE) {
for (i=0; (i < max_choice); i++) {
if (scroll+max_choice < item_no) {
- scrollok (menu, TRUE);
- scroll(menu);
- scrollok (menu, FALSE);
- scroll++;
- print_item (menu, items[(scroll+max_choice-1)*2+1],
- max_choice-1, FALSE,
- (items[(scroll+max_choice-1)*2][0] != ':'));
- } else {
- if (choice+1 < max_choice)
- choice++;
- }
+ scrollok (menu, TRUE);
+ scroll(menu);
+ scrollok (menu, FALSE);
+ scroll++;
+ print_item (menu, items[(scroll+max_choice-1)*2+1],
+ max_choice-1, FALSE,
+ (items[(scroll+max_choice-1)*2][0] != ':'));
+ } else {
+ if (choice+1 < max_choice)
+ choice++;
+ }
}
} else
wnoutrefresh (dialog);
wrefresh (menu);
- continue; /* wait for another key press */
+ continue; /* wait for another key press */
}
- switch (key) {
- case KEY_LEFT:
- case TAB:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 2 : (button > 2 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (menu);
- break;
- case ' ':
- case 's':
- case 'y':
- case 'n':
- case 'm':
- /* save scroll info */
- if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) {
- fprintf(f,"%d\n",scroll);
- fclose(f);
- }
- delwin (dialog);
+ switch (key) {
+ case KEY_LEFT:
+ case TAB:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 2 : (button > 2 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh (menu);
+ break;
+ case ' ':
+ case 's':
+ case 'y':
+ case 'n':
+ case 'm':
+ /* save scroll info */
+ if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) {
+ fprintf(f,"%d\n",scroll);
+ fclose(f);
+ }
+ delwin (dialog);
fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
switch (key) {
case 's': return 3;
case 'm': return 5;
case ' ': return 6;
}
- return 0;
- case 'h':
- case '?':
- button = 2;
- case '\n':
- delwin (dialog);
- if (button == 2)
- fprintf(stderr, "%s \"%s\"\n",
- items[(scroll + choice) * 2],
- items[(scroll + choice) * 2 + 1] +
- first_alpha(items[(scroll + choice) * 2 + 1],""));
- else
- fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
-
- remove("lxdialog.scrltmp");
- return button;
- case 'e':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
+ return 0;
+ case 'h':
+ case '?':
+ button = 2;
+ case '\n':
+ delwin (dialog);
+ if (button == 2)
+ fprintf(stderr, "%s \"%s\"\n",
+ items[(scroll + choice) * 2],
+ items[(scroll + choice) * 2 + 1] +
+ first_alpha(items[(scroll + choice) * 2 + 1],""));
+ else
+ fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
+
+ remove("lxdialog.scrltmp");
+ return button;
+ case 'e':
+ case 'x':
+ key = ESC;
+ case ESC:
+ break;
+ }
}
delwin (dialog);
remove("lxdialog.scrltmp");
- return -1; /* ESC pressed */
+ return -1; /* ESC pressed */
}
*/
int
dialog_msgbox (const char *title, const char *prompt, int height, int width,
- int pause)
+ int pause)
{
int i, x, y, key = 0;
WINDOW *dialog;
draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
wattrset (dialog, dialog_attr);
print_autowrap (dialog, prompt, width - 2, 1, 2);
if (pause) {
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height - 3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
+ wattrset (dialog, border_attr);
+ mvwaddch (dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch (dialog, ACS_HLINE);
+ wattrset (dialog, dialog_attr);
+ waddch (dialog, ACS_RTEE);
- print_button (dialog, " Ok ",
- height - 2, width / 2 - 4, TRUE);
+ print_button (dialog, " Ok ",
+ height - 2, width / 2 - 4, TRUE);
- wrefresh (dialog);
- while (key != ESC && key != '\n' && key != ' ' &&
+ wrefresh (dialog);
+ while (key != ESC && key != '\n' && key != ' ' &&
key != 'O' && key != 'o' && key != 'X' && key != 'x')
- key = wgetch (dialog);
+ key = wgetch (dialog);
} else {
- key = '\n';
- wrefresh (dialog);
+ key = '\n';
+ wrefresh (dialog);
}
delwin (dialog);
char search_term[MAX_LEN + 1];
WINDOW *dialog, *text;
- search_term[0] = '\0'; /* no search term entered yet */
+ search_term[0] = '\0'; /* no search term entered yet */
/* Open input file for reading */
if ((fd = open (file, O_RDONLY)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nCan't open input file in dialog_textbox().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr,
+ "\nCan't open input file in dialog_textbox().\n");
+ exit (-1);
}
/* Get file size. Actually, 'file_size' is the real file size - 1,
since it's only the last byte offset from the beginning */
if ((file_size = lseek (fd, 0, SEEK_END)) == -1) {
- endwin ();
- fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
+ exit (-1);
}
/* Restore file pointer to beginning of file after getting file size */
if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
+ exit (-1);
}
/* Allocate space for read buffer */
if ((buf = malloc (BUF_SIZE + 1)) == NULL) {
- endwin ();
- fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
+ exit (-1);
}
if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in dialog_textbox().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr, "\nError reading file in dialog_textbox().\n");
+ exit (-1);
}
- buf[bytes_read] = '\0'; /* mark end of valid data */
- page = buf; /* page is pointer to start of page to be displayed */
+ buf[bytes_read] = '\0'; /* mark end of valid data */
+ page = buf; /* page is pointer to start of page to be displayed */
/* center dialog box on screen */
x = (COLS - width) / 2;
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
+ waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
wbkgdset (dialog, dialog_attr & A_COLOR);
waddch (dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
wnoutrefresh (dialog);
- getyx (dialog, cur_y, cur_x); /* Save cursor position */
+ getyx (dialog, cur_y, cur_x); /* Save cursor position */
/* Print first page of text */
attr_clear (text, height - 4, width - 2, dialog_attr);
print_page (text, height - 4, width - 2);
print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
+ wmove (dialog, cur_y, cur_x); /* Restore cursor position */
wrefresh (dialog);
while ((key != ESC) && (key != '\n')) {
- key = wgetch (dialog);
- switch (key) {
- case 'E': /* Exit */
- case 'e':
- case 'X':
- case 'x':
- delwin (dialog);
- free (buf);
- close (fd);
- return 0;
- case 'g': /* First page */
- case KEY_HOME:
- if (!begin_reached) {
- begin_reached = 1;
- /* First page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Yes, we have to read it in */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'G': /* Last page */
- case KEY_END:
-
- end_reached = 1;
- /* Last page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Yes, we have to read it in */
- if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf + bytes_read;
- back_lines (height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- break;
- case 'K': /* Previous line */
- case 'k':
- case KEY_UP:
- if (!begin_reached) {
- back_lines (page_length + 1);
-
- /* We don't call print_page() here but use scrolling to ensure
- faster screen update. However, 'end_reached' and
- 'page_length' should still be updated, and 'page' should
- point to start of next page. This is done by calling
- get_line() in the following 'for' loop. */
- scrollok (text, TRUE);
- wscrl (text, -1); /* Scroll text region down one line */
- scrollok (text, FALSE);
- page_length = 0;
- passed_end = 0;
- for (i = 0; i < height - 4; i++) {
- if (!i) {
- /* print first line of page */
- print_line (text, 0, width - 2);
- wnoutrefresh (text);
- } else
- /* Called to update 'end_reached' and 'page' */
- get_line ();
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
- }
-
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'B': /* Previous page */
- case 'b':
- case KEY_PPAGE:
- if (begin_reached)
- break;
- back_lines (page_length + height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'J': /* Next line */
- case 'j':
- case KEY_DOWN:
- if (!end_reached) {
- begin_reached = 0;
- scrollok (text, TRUE);
- scroll (text); /* Scroll text region up one line */
- scrollok (text, FALSE);
- print_line (text, height - 5, width - 2);
- wnoutrefresh (text);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case KEY_NPAGE: /* Next page */
- case ' ':
- if (end_reached)
- break;
-
- begin_reached = 0;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case '0': /* Beginning of line */
- case 'H': /* Scroll left */
- case 'h':
- case KEY_LEFT:
- if (hscroll <= 0)
- break;
-
- if (key == '0')
- hscroll = 0;
- else
- hscroll--;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'L': /* Scroll right */
- case 'l':
- case KEY_RIGHT:
- if (hscroll >= MAX_LEN)
- break;
- hscroll++;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case ESC:
- break;
- }
+ key = wgetch (dialog);
+ switch (key) {
+ case 'E': /* Exit */
+ case 'e':
+ case 'X':
+ case 'x':
+ delwin (dialog);
+ free (buf);
+ close (fd);
+ return 0;
+ case 'g': /* First page */
+ case KEY_HOME:
+ if (!begin_reached) {
+ begin_reached = 1;
+ /* First page not in buffer? */
+ if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError moving file pointer in dialog_textbox().\n");
+ exit (-1);
+ }
+ if (fpos > bytes_read) { /* Yes, we have to read it in */
+ if (lseek (fd, 0, SEEK_SET) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in "
+ "dialog_textbox().\n");
+ exit (-1);
+ }
+ if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError reading file in dialog_textbox().\n");
+ exit (-1);
+ }
+ buf[bytes_read] = '\0';
+ }
+ page = buf;
+ print_page (text, height - 4, width - 2);
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh (dialog);
+ }
+ break;
+ case 'G': /* Last page */
+ case KEY_END:
+
+ end_reached = 1;
+ /* Last page not in buffer? */
+ if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError moving file pointer in dialog_textbox().\n");
+ exit (-1);
+ }
+ if (fpos < file_size) { /* Yes, we have to read it in */
+ if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError moving file pointer in dialog_textbox().\n");
+ exit (-1);
+ }
+ if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError reading file in dialog_textbox().\n");
+ exit (-1);
+ }
+ buf[bytes_read] = '\0';
+ }
+ page = buf + bytes_read;
+ back_lines (height - 4);
+ print_page (text, height - 4, width - 2);
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh (dialog);
+ break;
+ case 'K': /* Previous line */
+ case 'k':
+ case KEY_UP:
+ if (!begin_reached) {
+ back_lines (page_length + 1);
+
+ /* We don't call print_page() here but use scrolling to ensure
+ faster screen update. However, 'end_reached' and
+ 'page_length' should still be updated, and 'page' should
+ point to start of next page. This is done by calling
+ get_line() in the following 'for' loop. */
+ scrollok (text, TRUE);
+ wscrl (text, -1); /* Scroll text region down one line */
+ scrollok (text, FALSE);
+ page_length = 0;
+ passed_end = 0;
+ for (i = 0; i < height - 4; i++) {
+ if (!i) {
+ /* print first line of page */
+ print_line (text, 0, width - 2);
+ wnoutrefresh (text);
+ } else
+ /* Called to update 'end_reached' and 'page' */
+ get_line ();
+ if (!passed_end)
+ page_length++;
+ if (end_reached && !passed_end)
+ passed_end = 1;
+ }
+
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh (dialog);
+ }
+ break;
+ case 'B': /* Previous page */
+ case 'b':
+ case KEY_PPAGE:
+ if (begin_reached)
+ break;
+ back_lines (page_length + height - 4);
+ print_page (text, height - 4, width - 2);
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x);
+ wrefresh (dialog);
+ break;
+ case 'J': /* Next line */
+ case 'j':
+ case KEY_DOWN:
+ if (!end_reached) {
+ begin_reached = 0;
+ scrollok (text, TRUE);
+ scroll (text); /* Scroll text region up one line */
+ scrollok (text, FALSE);
+ print_line (text, height - 5, width - 2);
+ wnoutrefresh (text);
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh (dialog);
+ }
+ break;
+ case KEY_NPAGE: /* Next page */
+ case ' ':
+ if (end_reached)
+ break;
+
+ begin_reached = 0;
+ print_page (text, height - 4, width - 2);
+ print_position (dialog, height, width);
+ wmove (dialog, cur_y, cur_x);
+ wrefresh (dialog);
+ break;
+ case '0': /* Beginning of line */
+ case 'H': /* Scroll left */
+ case 'h':
+ case KEY_LEFT:
+ if (hscroll <= 0)
+ break;
+
+ if (key == '0')
+ hscroll = 0;
+ else
+ hscroll--;
+ /* Reprint current page to scroll horizontally */
+ back_lines (page_length);
+ print_page (text, height - 4, width - 2);
+ wmove (dialog, cur_y, cur_x);
+ wrefresh (dialog);
+ break;
+ case 'L': /* Scroll right */
+ case 'l':
+ case KEY_RIGHT:
+ if (hscroll >= MAX_LEN)
+ break;
+ hscroll++;
+ /* Reprint current page to scroll horizontally */
+ back_lines (page_length);
+ print_page (text, height - 4, width - 2);
+ wmove (dialog, cur_y, cur_x);
+ wrefresh (dialog);
+ break;
+ case ESC:
+ break;
+ }
}
delwin (dialog);
free (buf);
close (fd);
- return -1; /* ESC pressed */
+ return -1; /* ESC pressed */
}
/*
The code inside 'if' basically does a '--page' to move one
character backward so as to skip '\n' of the previous line */
if (!end_reached) {
- /* Either beginning of buffer or beginning of file reached? */
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Not beginning of file yet */
- /* We've reached beginning of buffer, but not beginning of
- file yet, so read previous part of file into buffer.
- Note that we only move backward for BUF_SIZE/2 bytes,
- but not BUF_SIZE bytes to avoid re-reading again in
- print_page() later */
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
- == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- if (*(--page) != '\n') { /* '--page' here */
- /* Something's wrong... */
- endwin ();
- fprintf (stderr, "\nInternal error in back_lines().\n");
- exit (-1);
- }
+ /* Either beginning of buffer or beginning of file reached? */
+ if (page == buf) {
+ if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in "
+ "back_lines().\n");
+ exit (-1);
+ }
+ if (fpos > bytes_read) { /* Not beginning of file yet */
+ /* We've reached beginning of buffer, but not beginning of
+ file yet, so read previous part of file into buffer.
+ Note that we only move backward for BUF_SIZE/2 bytes,
+ but not BUF_SIZE bytes to avoid re-reading again in
+ print_page() later */
+ /* Really possible to move backward BUF_SIZE/2 bytes? */
+ if (fpos < BUF_SIZE / 2 + bytes_read) {
+ /* No, move less then */
+ if (lseek (fd, 0, SEEK_SET) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in "
+ "back_lines().\n");
+ exit (-1);
+ }
+ page = buf + fpos - bytes_read;
+ } else { /* Move backward BUF_SIZE/2 bytes */
+ if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
+ == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer "
+ "in back_lines().\n");
+ exit (-1);
+ }
+ page = buf + BUF_SIZE / 2;
+ }
+ if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError reading file in back_lines().\n");
+ exit (-1);
+ }
+ buf[bytes_read] = '\0';
+ } else { /* Beginning of file reached */
+ begin_reached = 1;
+ return;
+ }
+ }
+ if (*(--page) != '\n') { /* '--page' here */
+ /* Something's wrong... */
+ endwin ();
+ fprintf (stderr, "\nInternal error in back_lines().\n");
+ exit (-1);
+ }
}
/* Go back 'n' lines */
for (i = 0; i < n; i++)
- do {
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) {
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
- SEEK_CUR) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer"
- " in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in "
- "back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- } while (*(--page) != '\n');
+ do {
+ if (page == buf) {
+ if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+ endwin ();
+ fprintf (stderr,
+ "\nError moving file pointer in back_lines().\n");
+ exit (-1);
+ }
+ if (fpos > bytes_read) {
+ /* Really possible to move backward BUF_SIZE/2 bytes? */
+ if (fpos < BUF_SIZE / 2 + bytes_read) {
+ /* No, move less then */
+ if (lseek (fd, 0, SEEK_SET) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer "
+ "in back_lines().\n");
+ exit (-1);
+ }
+ page = buf + fpos - bytes_read;
+ } else { /* Move backward BUF_SIZE/2 bytes */
+ if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
+ SEEK_CUR) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer"
+ " in back_lines().\n");
+ exit (-1);
+ }
+ page = buf + BUF_SIZE / 2;
+ }
+ if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError reading file in "
+ "back_lines().\n");
+ exit (-1);
+ }
+ buf[bytes_read] = '\0';
+ } else { /* Beginning of file reached */
+ begin_reached = 1;
+ return;
+ }
+ }
+ } while (*(--page) != '\n');
page++;
}
page_length = 0;
for (i = 0; i < height; i++) {
- print_line (win, i, width);
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
+ print_line (win, i, width);
+ if (!passed_end)
+ page_length++;
+ if (end_reached && !passed_end)
+ passed_end = 1;
}
wnoutrefresh (win);
}
char *line;
line = get_line ();
- line += MIN (strlen (line), hscroll); /* Scroll horizontally */
- wmove (win, row, 0); /* move cursor to correct line */
+ line += MIN (strlen (line), hscroll); /* Scroll horizontally */
+ wmove (win, row, 0); /* move cursor to correct line */
waddch (win, ' ');
waddnstr (win, line, MIN (strlen (line), width - 2));
{
int i;
for (i = 0; i < width - x; i++)
- waddch (win, ' ');
+ waddch (win, ' ');
}
#else
wclrtoeol(win);
end_reached = 0;
while (*page != '\n') {
- if (*page == '\0') {
- /* Either end of file or end of buffer reached */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "get_line().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Not end of file yet */
- /* We've reached end of buffer, but not end of file yet,
- so read next part of file into buffer */
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in get_line().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- page = buf;
- } else {
- if (!end_reached)
- end_reached = 1;
- break;
- }
- } else if (i < MAX_LEN)
- line[i++] = *(page++);
- else {
- /* Truncate lines longer than MAX_LEN characters */
- if (i == MAX_LEN)
- line[i++] = '\0';
- page++;
- }
+ if (*page == '\0') {
+ /* Either end of file or end of buffer reached */
+ if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in "
+ "get_line().\n");
+ exit (-1);
+ }
+ if (fpos < file_size) { /* Not end of file yet */
+ /* We've reached end of buffer, but not end of file yet,
+ so read next part of file into buffer */
+ if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+ endwin ();
+ fprintf (stderr, "\nError reading file in get_line().\n");
+ exit (-1);
+ }
+ buf[bytes_read] = '\0';
+ page = buf;
+ } else {
+ if (!end_reached)
+ end_reached = 1;
+ break;
+ }
+ } else if (i < MAX_LEN)
+ line[i++] = *(page++);
+ else {
+ /* Truncate lines longer than MAX_LEN characters */
+ if (i == MAX_LEN)
+ line[i++] = '\0';
+ page++;
+ }
}
if (i <= MAX_LEN)
- line[i] = '\0';
+ line[i] = '\0';
if (!end_reached)
- page++; /* move pass '\n' */
+ page++; /* move pass '\n' */
return line;
}
int fpos, percent;
if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in print_position().\n");
- exit (-1);
+ endwin ();
+ fprintf (stderr, "\nError moving file pointer in print_position().\n");
+ exit (-1);
}
wattrset (win, position_indicator_attr);
wbkgdset (win, position_indicator_attr & A_COLOR);
percent = !file_size ?
- 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
+ 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
wmove (win, height - 3, width - 9);
wprintw (win, "(%3d%%)", percent);
}
const char *dialog_result;
-/*
+/*
* Attribute values, default is for mono display
*/
chtype attributes[] =
{
- A_NORMAL, /* screen_attr */
- A_NORMAL, /* shadow_attr */
- A_NORMAL, /* dialog_attr */
- A_BOLD, /* title_attr */
- A_NORMAL, /* border_attr */
- A_REVERSE, /* button_active_attr */
- A_DIM, /* button_inactive_attr */
- A_REVERSE, /* button_key_active_attr */
- A_BOLD, /* button_key_inactive_attr */
- A_REVERSE, /* button_label_active_attr */
- A_NORMAL, /* button_label_inactive_attr */
- A_NORMAL, /* inputbox_attr */
- A_NORMAL, /* inputbox_border_attr */
- A_NORMAL, /* searchbox_attr */
- A_BOLD, /* searchbox_title_attr */
- A_NORMAL, /* searchbox_border_attr */
- A_BOLD, /* position_indicator_attr */
- A_NORMAL, /* menubox_attr */
- A_NORMAL, /* menubox_border_attr */
- A_NORMAL, /* item_attr */
- A_REVERSE, /* item_selected_attr */
- A_BOLD, /* tag_attr */
- A_REVERSE, /* tag_selected_attr */
- A_BOLD, /* tag_key_attr */
- A_REVERSE, /* tag_key_selected_attr */
- A_BOLD, /* check_attr */
- A_REVERSE, /* check_selected_attr */
- A_BOLD, /* uarrow_attr */
- A_BOLD /* darrow_attr */
+ A_NORMAL, /* screen_attr */
+ A_NORMAL, /* shadow_attr */
+ A_NORMAL, /* dialog_attr */
+ A_BOLD, /* title_attr */
+ A_NORMAL, /* border_attr */
+ A_REVERSE, /* button_active_attr */
+ A_DIM, /* button_inactive_attr */
+ A_REVERSE, /* button_key_active_attr */
+ A_BOLD, /* button_key_inactive_attr */
+ A_REVERSE, /* button_label_active_attr */
+ A_NORMAL, /* button_label_inactive_attr */
+ A_NORMAL, /* inputbox_attr */
+ A_NORMAL, /* inputbox_border_attr */
+ A_NORMAL, /* searchbox_attr */
+ A_BOLD, /* searchbox_title_attr */
+ A_NORMAL, /* searchbox_border_attr */
+ A_BOLD, /* position_indicator_attr */
+ A_NORMAL, /* menubox_attr */
+ A_NORMAL, /* menubox_border_attr */
+ A_NORMAL, /* item_attr */
+ A_REVERSE, /* item_selected_attr */
+ A_BOLD, /* tag_attr */
+ A_REVERSE, /* tag_selected_attr */
+ A_BOLD, /* tag_key_attr */
+ A_REVERSE, /* tag_key_selected_attr */
+ A_BOLD, /* check_attr */
+ A_REVERSE, /* check_selected_attr */
+ A_BOLD, /* uarrow_attr */
+ A_BOLD /* darrow_attr */
};
{CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
{UARROW_FG, UARROW_BG, UARROW_HL},
{DARROW_FG, DARROW_BG, DARROW_HL},
-}; /* color_table */
+}; /* color_table */
/*
* Set window to attribute 'attr'
wattrset (win, attr);
for (i = 0; i < height; i++) {
- wmove (win, i, 0);
- for (j = 0; j < width; j++)
- waddch (win, ' ');
+ wmove (win, i, 0);
+ for (j = 0; j < width; j++)
+ waddch (win, ' ');
}
touchwin (win);
}
void
init_dialog (void)
{
- initscr (); /* Init curses */
+ initscr (); /* Init curses */
keypad (stdscr, TRUE);
cbreak ();
noecho ();
- if (use_colors) /* Set up colors */
- color_setup ();
+ if (use_colors) /* Set up colors */
+ color_setup ();
dialog_clear ();
{
int i;
- if (has_colors ()) { /* Terminal supports color? */
- start_color ();
+ if (has_colors ()) { /* Terminal supports color? */
+ start_color ();
- /* Initialize color pairs */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- init_pair (i + 1, color_table[i][0], color_table[i][1]);
+ /* Initialize color pairs */
+ for (i = 0; i < ATTRIBUTE_COUNT; i++)
+ init_pair (i + 1, color_table[i][0], color_table[i][1]);
- /* Setup color attributes */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- attributes[i] = C_ATTR (color_table[i][2], i + 1);
+ /* Setup color attributes */
+ for (i = 0; i < ATTRIBUTE_COUNT; i++)
+ attributes[i] = C_ATTR (color_table[i][2], i + 1);
}
}
strcpy (tempstr, prompt);
prompt_len = strlen(tempstr);
-
+
/*
* Remove newlines
*/
for(i=0; i<prompt_len; i++) {
- if(tempstr[i] == '\n') tempstr[i] = ' ';
+ if(tempstr[i] == '\n') tempstr[i] = ' ';
}
- if (prompt_len <= width - x * 2) { /* If prompt is short */
- wmove (win, y, (width - prompt_len) / 2);
- waddstr (win, tempstr);
+ if (prompt_len <= width - x * 2) { /* If prompt is short */
+ wmove (win, y, (width - prompt_len) / 2);
+ waddstr (win, tempstr);
} else {
- cur_x = x;
- cur_y = y;
- newl = 1;
- word = tempstr;
- while (word && *word) {
- sp = index(word, ' ');
- if (sp)
- *sp++ = 0;
-
- /* Wrap to next line if either the word does not fit,
- or it is the first word of a new sentence, and it is
- short, and the next word does not fit. */
- room = width - cur_x;
- wlen = strlen(word);
- if (wlen > room ||
- (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
- && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
- cur_y++;
- cur_x = x;
- }
- wmove (win, cur_y, cur_x);
- waddstr (win, word);
- getyx (win, cur_y, cur_x);
- cur_x++;
- if (sp && *sp == ' ') {
- cur_x++; /* double space */
- while (*++sp == ' ');
- newl = 1;
- } else
- newl = 0;
- word = sp;
- }
+ cur_x = x;
+ cur_y = y;
+ newl = 1;
+ word = tempstr;
+ while (word && *word) {
+ sp = index(word, ' ');
+ if (sp)
+ *sp++ = 0;
+
+ /* Wrap to next line if either the word does not fit,
+ or it is the first word of a new sentence, and it is
+ short, and the next word does not fit. */
+ room = width - cur_x;
+ wlen = strlen(word);
+ if (wlen > room ||
+ (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
+ && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
+ cur_y++;
+ cur_x = x;
+ }
+ wmove (win, cur_y, cur_x);
+ waddstr (win, word);
+ getyx (win, cur_y, cur_x);
+ cur_x++;
+ if (sp && *sp == ' ') {
+ cur_x++; /* double space */
+ while (*++sp == ' ');
+ newl = 1;
+ } else
+ newl = 0;
+ word = sp;
+ }
}
}
temp = strspn (label, " ");
label += temp;
wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
+ : button_label_inactive_attr);
for (i = 0; i < temp; i++)
- waddch (win, ' ');
+ waddch (win, ' ');
wattrset (win, selected ? button_key_active_attr
- : button_key_inactive_attr);
+ : button_key_inactive_attr);
waddch (win, label[0]);
wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
+ : button_label_inactive_attr);
waddstr (win, (char *)label + 1);
wattrset (win, selected ? button_active_attr : button_inactive_attr);
waddstr (win, ">");
*/
void
draw_box (WINDOW * win, int y, int x, int height, int width,
- chtype box, chtype border)
+ chtype box, chtype border)
{
int i, j;
wattrset (win, 0);
for (i = 0; i < height; i++) {
- wmove (win, y + i, x);
- for (j = 0; j < width; j++)
- if (!i && !j)
- waddch (win, border | ACS_ULCORNER);
- else if (i == height - 1 && !j)
- waddch (win, border | ACS_LLCORNER);
- else if (!i && j == width - 1)
- waddch (win, box | ACS_URCORNER);
- else if (i == height - 1 && j == width - 1)
- waddch (win, box | ACS_LRCORNER);
- else if (!i)
- waddch (win, border | ACS_HLINE);
- else if (i == height - 1)
- waddch (win, box | ACS_HLINE);
- else if (!j)
- waddch (win, border | ACS_VLINE);
- else if (j == width - 1)
- waddch (win, box | ACS_VLINE);
- else
- waddch (win, box | ' ');
+ wmove (win, y + i, x);
+ for (j = 0; j < width; j++)
+ if (!i && !j)
+ waddch (win, border | ACS_ULCORNER);
+ else if (i == height - 1 && !j)
+ waddch (win, border | ACS_LLCORNER);
+ else if (!i && j == width - 1)
+ waddch (win, box | ACS_URCORNER);
+ else if (i == height - 1 && j == width - 1)
+ waddch (win, box | ACS_LRCORNER);
+ else if (!i)
+ waddch (win, border | ACS_HLINE);
+ else if (i == height - 1)
+ waddch (win, box | ACS_HLINE);
+ else if (!j)
+ waddch (win, border | ACS_VLINE);
+ else if (j == width - 1)
+ waddch (win, box | ACS_VLINE);
+ else
+ waddch (win, box | ' ');
}
}
{
int i;
- if (has_colors ()) { /* Whether terminal supports color? */
- wattrset (win, shadow_attr);
- wmove (win, y + height, x + 2);
- for (i = 0; i < width; i++)
- waddch (win, winch (win) & A_CHARTEXT);
- for (i = y + 1; i < y + height + 1; i++) {
- wmove (win, i, x + width);
- waddch (win, winch (win) & A_CHARTEXT);
- waddch (win, winch (win) & A_CHARTEXT);
- }
- wnoutrefresh (win);
+ if (has_colors ()) { /* Whether terminal supports color? */
+ wattrset (win, shadow_attr);
+ wmove (win, y + height, x + 2);
+ for (i = 0; i < width; i++)
+ waddch (win, winch (win) & A_CHARTEXT);
+ for (i = y + 1; i < y + height + 1; i++) {
+ wmove (win, i, x + width);
+ waddch (win, winch (win) & A_CHARTEXT);
+ waddch (win, winch (win) & A_CHARTEXT);
+ }
+ wnoutrefresh (win);
}
}
int
first_alpha(const char *string, const char *exempt)
{
- int i, in_paren=0, c;
+ int i, in_paren=0, c;
- for (i = 0; i < strlen(string); i++) {
- c = tolower(string[i]);
+ for (i = 0; i < strlen(string); i++) {
+ c = tolower(string[i]);
- if (strchr("<[(", c)) ++in_paren;
- if (strchr(">])", c)) --in_paren;
+ if (strchr("<[(", c)) ++in_paren;
+ if (strchr(">])", c)) --in_paren;
- if ((! in_paren) && isalpha(c) &&
- strchr(exempt, c) == 0)
- return i;
- }
+ if ((! in_paren) && isalpha(c) &&
+ strchr(exempt, c) == 0)
+ return i;
+ }
- return 0;
+ return 0;
}
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
+ waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
+ /* truncate long title -- mec */
+ char * title2 = malloc(width-2+1);
+ memcpy( title2, title, width-2 );
+ title2[width-2] = '\0';
+ title = title2;
}
if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
+ wattrset (dialog, title_attr);
+ mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+ waddstr (dialog, (char *)title);
+ waddch (dialog, ' ');
}
wattrset (dialog, dialog_attr);
print_buttons(dialog, height, width, 0);
while (key != ESC) {
- key = wgetch (dialog);
- switch (key) {
- case 'Y':
- case 'y':
- delwin (dialog);
- return 0;
- case 'N':
- case 'n':
- delwin (dialog);
- return 1;
-
- case TAB:
- case KEY_LEFT:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 1 : (button > 1 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (dialog);
- break;
- case ' ':
- case '\n':
- delwin (dialog);
- return button;
- case ESC:
- break;
- }
+ key = wgetch (dialog);
+ switch (key) {
+ case 'Y':
+ case 'y':
+ delwin (dialog);
+ return 0;
+ case 'N':
+ case 'n':
+ delwin (dialog);
+ return 1;
+
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh (dialog);
+ break;
+ case ' ':
+ case '\n':
+ delwin (dialog);
+ return button;
+ case ESC:
+ break;
+ }
}
delwin (dialog);
- return -1; /* ESC pressed */
+ return -1; /* ESC pressed */
}
"[Undefined,1/2,2/3,3/4,5/6,7/8]")
static const int i_hp_fec_list[] = { -1, 1, 2, 3, 4, 5 };
static const char *ppsz_hp_fec_text[] = { N_("Undefined"), N_("1/2"), N_("2/3"),
- N_("3/4"), N_("5/6"), N_("7/8") };
+ N_("3/4"), N_("5/6"), N_("7/8") };
#define CODE_RATE_LP_TEXT N_("Terrestrial low priority stream code rate (FEC)")
#define CODE_RATE_LP_LONGTEXT N_("Low Priority FEC Rate " \
"[Undefined,1/2,2/3,3/4,5/6,7/8]")
static const int i_lp_fec_list[] = { -1, 1, 2, 3, 4, 5 };
static const char *ppsz_lp_fec_text[] = { N_("Undefined"), N_("1/2"), N_("2/3"),
- N_("3/4"), N_("5/6"), N_("7/8") };
+ N_("3/4"), N_("5/6"), N_("7/8") };
#define BANDWIDTH_TEXT N_("Terrestrial bandwidth")
#define BANDWIDTH_LONGTEXT N_("Terrestrial bandwidth [0=auto,6,7,8 in MHz]")
}
b_used[i_this_param] = TRUE;
- /* if "=" was found in token then value starts at
+ /* if "=" was found in token then value starts at
* psz_token + i_paramlen + 1
* else there is no value specified so we use an empty string */
psz_value = psz_token + i_param_len + 1;
if( p_access->p_sys->p_bda_module )
return p_access->p_sys->p_bda_module->SubmitDVBCTuneRequest();
return VLC_EGENERIC;
- };
+ };
int dvb_SubmitDVBSTuneRequest( access_t* p_access )
{
long dvb_ReadBuffer( access_t* p_access, long* l_buffer_len, BYTE* p_buff )
{
if( p_access->p_sys->p_bda_module )
- return p_access->p_sys->p_bda_module->ReadBuffer( l_buffer_len,
+ return p_access->p_sys->p_bda_module->ReadBuffer( l_buffer_len,
p_buff );
return -1;
};
l_elevation = var_GetInteger( p_access, "dvb-elevation" );
l_longitude = var_GetInteger( p_access, "dvb-longitude" );
l_lnb_lof1 = var_GetInteger( p_access, "dvb-lnb-lof1" );
- l_lnb_lof2 = var_GetInteger( p_access, "dvb-lnb-lof2" );
+ l_lnb_lof2 = var_GetInteger( p_access, "dvb-lnb-lof2" );
l_lnb_slof = var_GetInteger( p_access, "dvb-lnb-slof" );
psz_polarisation = var_GetString( p_access, "dvb-polarisation" );
l_inversion = var_GetInteger( p_access, "dvb-inversion" );
* Private functions
****************************************************************************/
-/* process messages that originate from libcdio.
+/* process messages that originate from libcdio.
called by CDDAOpen
*/
static void
/* gl_default_cdio_log_handler (level, message); */
}
-/* Only used in audio control mode. Gets the current LSN from the
+/* Only used in audio control mode. Gets the current LSN from the
CD-ROM drive. */
static int64_t get_audio_position ( access_t *p_access )
{
cdda_data_t *p_cdda = (cdda_data_t *) p_access->p_sys;
int i_blocks = p_cdda->i_blocks_per_read;
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_EXT|INPUT_DBG_LSN),
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_EXT|INPUT_DBG_LSN),
"called i_lsn: %d i_pos: %lld, size: %lld",
p_cdda->i_lsn, p_access->info.i_pos, p_access->info.i_size );
{
msg_Err( p_access, "cannot get a new block of size: %i",
i_blocks * CDIO_CD_FRAMESIZE_RAW );
- intf_UserFatal( p_access, VLC_FALSE, _("CD reading failed"),
- _("VLC could not get a new block of size: %i."),
+ intf_UserFatal( p_access, VLC_FALSE, _("CD reading failed"),
+ _("VLC could not get a new block of size: %i."),
i_blocks * CDIO_CD_FRAMESIZE_RAW );
return NULL;
}
p_cdda->i_track = i_track;
/* set up the frame boundaries for this particular track */
- p_cdda->first_frame = p_cdda->i_lsn =
+ p_cdda->first_frame = p_cdda->i_lsn =
cdio_get_track_lsn( p_cdda->p_cdio, i_track );
p_cdda->last_frame = cdio_get_track_lsn( p_cdda->p_cdio, i_track+1 ) - 1;
return VLC_SUCCESS;
}
-/*
+/*
* Local variables:
* mode: C
* style: gnu
*****************************************************************************/
/*****************************************************************************
- * Open: open cdda device or image file and initialize structures
+ * Open: open cdda device or image file and initialize structures
* for subsequent operations.
*****************************************************************************/
int CDDAOpen ( vlc_object_t * );
p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
- if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
+ if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
{
msg_Dbg( p_cdda_input, "old debug (x%0x) %d, new debug (x%0x) %d",
p_cdda->i_debug, p_cdda->i_debug, val.i_int, val.i_int);
p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
#ifdef HAVE_LIBCDDB
- if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
+ if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
{
msg_Dbg( p_cdda_input, "old CDDB Enabled (x%0x) %d, new (x%0x) %d",
p_cdda->b_cddb_enabled, p_cdda->b_cddb_enabled,
if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
{
- msg_Dbg( p_cdda_input,
- "old Navigation Mode Enabled %d, new %d",
+ msg_Dbg( p_cdda_input,
+ "old Navigation Mode Enabled %d, new %d",
p_cdda->b_nav_mode, val.b_bool);
}
p_cdda->b_nav_mode = val.b_bool;
p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
#ifdef HAVE_LIBCDDB
- if ( p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
+ if ( p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
{
msg_Dbg( p_cdda_input, "old CDText Prefer (x%0x) %d, new (x%0x) %d",
p_cdda->b_cdtext_prefer, p_cdda->b_cdtext_prefer,
p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
- if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
+ if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT))
{
msg_Dbg( p_cdda_input, "old blocks per read: %d, new %d",
p_cdda->i_blocks_per_read, val.i_int);
#include <vlc/vlc.h>
-/*
+/*
Minimum, maximum and default number of blocks we allow on read.
*/
#define MIN_BLOCKS_PER_READ 1
int CDTextEnabledCB( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+ vlc_value_t oldval, vlc_value_t val,
+ void *p_data );
int CDTextPreferCB( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+ vlc_value_t oldval, vlc_value_t val,
+ void *p_data );
int CDDANavModeCB( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+ vlc_value_t oldval, vlc_value_t val,
+ void *p_data );
int CDDABlocksPerReadCB ( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+ vlc_value_t oldval, vlc_value_t val,
+ void *p_data );
N_("If set, get CD-Text information"),
VLC_FALSE );
- add_bool( MODULE_STRING "-navigation-mode", VLC_TRUE,
+ add_bool( MODULE_STRING "-navigation-mode", VLC_TRUE,
#if FIXED
- CDDANavModeCB,
+ CDDANavModeCB,
#else
- NULL,
+ NULL,
#endif
N_("Use Navigation-style playback?"),
N_("Tracks are navigated via Navagation rather than "
- "a playlist entries"),
+ "a playlist entries"),
VLC_FALSE );
#if LIBCDIO_VERSION_NUM >= 72
add_string( MODULE_STRING "-paranoia", NULL, NULL,
- PARANOIA_TEXT,
- PARANOIA_LONGTEXT,
- VLC_FALSE );
+ PARANOIA_TEXT,
+ PARANOIA_LONGTEXT,
+ VLC_FALSE );
change_string_list( psz_paranoia_list, psz_paranoia_list_text, 0 );
#endif /* LIBCDIO_VERSION_NUM >= 72 */
add_string( MODULE_STRING "-cddb-server", "freedb.freedb.org", NULL,
N_("CDDB server"),
N_( "Contact this CDDB server look up CD-DA information"),
- VLC_TRUE );
+ VLC_TRUE );
add_integer( MODULE_STRING "-cddb-port", 8880, NULL,
N_("CDDB server port"),
add_string( MODULE_STRING "-cddb-email", "me@home", NULL,
N_("email address reported to CDDB server"),
N_("email address reported to CDDB server"),
- VLC_TRUE );
+ VLC_TRUE );
add_bool( MODULE_STRING "-cddb-enable-cache", VLC_TRUE, NULL,
N_("Cache CDDB lookups?"),
add_string( MODULE_STRING "-cddb-cachedir", "~/.cddbslave", NULL,
N_("Directory to cache CDDB requests"),
N_("Directory to cache CDDB requests"),
- VLC_TRUE );
+ VLC_TRUE );
add_bool( MODULE_STRING "-cdtext-prefer", VLC_TRUE, CDTextPreferCB,
N_("Prefer CD-Text info to CDDB info?"),
N_("If set, CD-Text information will be preferred "
- "to CDDB information when both are available"),
+ "to CDDB information when both are available"),
VLC_FALSE );
#endif /*HAVE_LIBCDDB*/
#include <cdio/paranoia.h>
#else
#define CdIo_t CdIo
-#endif
+#endif
#if LIBCDIO_VERSION_NUM < 78
typedef enum {
PARANOIA_MODE_DISABLE = 0x00, /* Note: We make use of 0 as being the same as false */
- PARANOIA_MODE_OVERLAP = 0x04,
+ PARANOIA_MODE_OVERLAP = 0x04,
PARANOIA_MODE_FULL = 0xff
} paranoia_mode_t;
#endif
-
+
/*****************************************************************************
* cdda_data_t: CD audio information
*****************************************************************************/
track_t i_tracks; /* # of tracks */
track_t i_first_track; /* # of first track */
track_t i_titles; /* # of titles in playlist */
-
+
/* Current position */
track_t i_track; /* Current track */
lsn_t i_lsn; /* Current Logical Sector Number */
-
+
lsn_t first_frame; /* LSN of first frame of this track */
lsn_t last_frame; /* LSN of last frame of this track */
lsn_t last_disc_frame; /* LSN of last frame on CD */
char * psz_mcn; /* Media Catalog Number */
char * psz_source; /* CD drive or CD image filename */
input_title_t *p_title[CDIO_CD_MAX_TRACKS]; /* This *is* 0 origin, not
- track number origin */
+ track number origin */
#if LIBCDIO_VERSION_NUM >= 72
/* Paranoia support */
paranoia_mode_t e_paranoia; /* Use cd paranoia for reads? */
cdrom_drive_t *paranoia_cd; /* Place to store drive
- handle given by paranoia. */
+ handle given by paranoia. */
cdrom_paranoia_t *paranoia;
-#endif
-
+#endif
+
#ifdef HAVE_LIBCDDB
vlc_bool_t b_cddb_enabled; /* Use CDDB at all? */
struct {
vlc_bool_t have_info; /* True if we have any info */
cddb_disc_t *disc; /* libcdio uses this to get disc
- info */
+ info */
int disc_length; /* Length in frames of cd. Used
- in CDDB lookups */
+ in CDDB lookups */
} cddb;
#endif
vlc_bool_t b_audio_ctl; /* Use CD-Text audio controls and
- audio output? */
+ audio output? */
vlc_bool_t b_cdtext; /* Use CD-Text at all? If not,
- cdtext_preferred is meaningless. */
+ cdtext_preferred is meaningless. */
vlc_bool_t b_cdtext_prefer; /* Prefer CD-Text info over
- CDDB? If no CDDB, the issue
- is moot. */
+ CDDB? If no CDDB, the issue
+ is moot. */
- const cdtext_t *p_cdtext[CDIO_CD_MAX_TRACKS]; /* CD-Text info. Origin is NOT
- 0 origin but origin of track
- number (usually 1).
- */
+ const cdtext_t *p_cdtext[CDIO_CD_MAX_TRACKS]; /* CD-Text info. Origin is NOT
+ 0 origin but origin of track
+ number (usually 1).
+ */
WAVEHEADER waveheader; /* Wave header for the output data */
vlc_bool_t b_header;
vlc_bool_t b_nav_mode; /* If false we view the entire CD as
- as a unit rather than each track
- as a unit. If b_nav_mode then the
- slider area represents the Disc rather
- than a track
- */
-
+ as a unit rather than each track
+ as a unit. If b_nav_mode then the
+ slider area represents the Disc rather
+ than a track
+ */
+
input_thread_t *p_input;
-
+
} cdda_data_t;
/* FIXME: This variable is a hack. Would be nice to eliminate. */
#endif
static char *CDDAFormatStr( const access_t *p_access, cdda_data_t *p_cdda,
- const char format_str[], const char *psz_mrl,
- track_t i_track);
+ const char format_str[], const char *psz_mrl,
+ track_t i_track);
static char *CDDAFormatMRL( const access_t *p_access, track_t i_track );
/* Saves CDDB information about CD-DA via libcddb. */
-static void
+static void
GetCDDBInfo( access_t *p_access, cdda_data_t *p_cdda )
{
int i, i_matches;
{
track_t i_track = p_cdda->i_first_track + i;
cddb_track_t *t = cddb_track_new();
- cddb_track_set_frame_offset(t,
- cdio_get_track_lba(p_cdio, i_track));
+ cddb_track_set_frame_offset(t,
+ cdio_get_track_lba(p_cdio, i_track));
cddb_disc_add_track(p_cdda->cddb.disc, t);
}
cddb_disc_set_length(p_cdda->cddb.disc,
- cdio_get_track_lba(p_cdio, CDIO_CDROM_LEADOUT_TRACK)
- / CDIO_CD_FRAMES_PER_SEC);
+ cdio_get_track_lba(p_cdio, CDIO_CDROM_LEADOUT_TRACK)
+ / CDIO_CD_FRAMES_PER_SEC);
if (!cddb_disc_calc_discid(p_cdda->cddb.disc))
{
input_MetaTypeToLocalizedString(VLC_META), VAL ); \
} \
-#define add_cddb_meta(FIELD, VLC_META) \
+#define add_cddb_meta(FIELD, VLC_META) \
add_meta_val(VLC_META, cddb_disc_get_##FIELD(p_cdda->cddb.disc));
#define add_cddb_meta_fmt(FIELD, FORMAT_SPEC, VLC_META) \
snprintf( psz_buf, sizeof(psz_buf)-1, FORMAT_SPEC, \
cddb_disc_get_##FIELD(p_cdda->cddb.disc)); \
psz_buf[sizeof(psz_buf)-1] = '\0'; \
- add_meta_val(VLC_META, psz_buf); \
+ add_meta_val(VLC_META, psz_buf); \
}
/* Adds a string-valued entry to the stream and media information if
Therefore, this should be called before CDDAMetaInfo is called.
*/
-void
+void
CDDAMetaInfoInit( access_t *p_access )
{
cdda_data_t *p_cdda = (cdda_data_t *) p_access->p_sys;
-
+
if ( ! p_cdda ) return;
- dbg_print( (INPUT_DBG_CALL), "p_cdda->i_tracks %d",
- p_cdda->i_tracks );
+ dbg_print( (INPUT_DBG_CALL), "p_cdda->i_tracks %d",
+ p_cdda->i_tracks );
p_cdda->psz_mcn = cdio_get_mcn(p_cdda->p_cdio);
#if 0
}
#endif /*HAVE_LIBCDDB*/
-
+
#define TITLE_MAX 30
{
track_t i_track;
- for( i_track = 0 ; i_track < p_cdda->i_tracks ; i_track++ )
- {
- p_cdda->p_cdtext[i_track] =
- cdio_get_cdtext(p_cdda->p_cdio, i_track);
- }
+ for( i_track = 0 ; i_track < p_cdda->i_tracks ; i_track++ )
+ {
+ p_cdda->p_cdtext[i_track] =
+ cdio_get_cdtext(p_cdda->p_cdio, i_track);
+ }
}
}
If i_track is CDIO_INVALID_TRACK we are probably asking about the entire
CD.
*/
-void
+void
CDDAMetaInfo( access_t *p_access, track_t i_track )
{
cdda_data_t *p_cdda = (cdda_data_t *) p_access->p_sys;
char *psz_meta_title = CDDAFormatMRL( p_access, i_track );
char *psz_meta_artist = NULL;
-
+
if ( ! p_cdda ) return;
dbg_print( (INPUT_DBG_CALL), "i_track %d", i_track );
if ( p_cdda->b_cddb_enabled && p_cdda->cddb.disc )
{
if( CDIO_INVALID_TRACK == i_track )
- {
-
- psz_meta_title = (char *)cddb_disc_get_title(p_cdda->cddb.disc);
- psz_meta_artist = (char *)cddb_disc_get_artist(p_cdda->cddb.disc);
- if ( cddb_disc_get_genre(p_cdda->cddb.disc) &&
- strlen(cddb_disc_get_genre(p_cdda->cddb.disc)) )
- add_cddb_meta(genre, vlc_meta_Genre);
- if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc))
- add_cddb_meta_fmt(year, "%d", vlc_meta_Date );
- }
- else
- {
- cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i_track-1);
- if (t != NULL )
- {
- if( cddb_track_get_title(t) != NULL && ! p_cdda->b_nav_mode )
- {
+ {
+
+ psz_meta_title = (char *)cddb_disc_get_title(p_cdda->cddb.disc);
+ psz_meta_artist = (char *)cddb_disc_get_artist(p_cdda->cddb.disc);
+ if ( cddb_disc_get_genre(p_cdda->cddb.disc) &&
+ strlen(cddb_disc_get_genre(p_cdda->cddb.disc)) )
+ add_cddb_meta(genre, vlc_meta_Genre);
+ if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc))
+ add_cddb_meta_fmt(year, "%d", vlc_meta_Date );
+ }
+ else
+ {
+ cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i_track-1);
+ if (t != NULL )
+ {
+ if( cddb_track_get_title(t) != NULL && ! p_cdda->b_nav_mode )
+ {
add_meta_val( vlc_meta_Title, cddb_track_get_title(t) );
- }
- if( cddb_track_get_artist(t) != NULL )
- {
+ }
+ if( cddb_track_get_artist(t) != NULL )
+ {
add_meta_val( vlc_meta_Artist, cddb_track_get_artist(t) );
- }
- }
- }
+ }
+ }
+ }
}
#endif /*HAVE_LIBCDDB*/
-
+
#define TITLE_MAX 30
{
track_t i = p_cdda->i_tracks;
const int i_first_track = p_cdda->i_first_track;
char psz_buffer[MSTRTIME_MAX_SIZE];
- unsigned int i_track_frames =
- cdio_get_track_lba(p_cdda->p_cdio, CDIO_CDROM_LEADOUT_TRACK);
-
+ unsigned int i_track_frames =
+ cdio_get_track_lba(p_cdda->p_cdio, CDIO_CDROM_LEADOUT_TRACK);
+
mtime_t i_duration = i_track_frames / CDIO_CD_FRAMES_PER_SEC;
- dbg_print( INPUT_DBG_META, "Duration %ld, tracks %d",
- (long int) i_duration, p_cdda->i_tracks );
+ dbg_print( INPUT_DBG_META, "Duration %ld, tracks %d",
+ (long int) i_duration, p_cdda->i_tracks );
input_Control( p_cdda->p_input, INPUT_ADD_INFO,
_("Disc"), _("Duration"), "%s",
secstotimestr( psz_buffer, i_duration ) );
- if (p_cdda->psz_mcn) {
- input_Control( p_cdda->p_input, INPUT_ADD_INFO,
- _("Disc"), _("Media Catalog Number (MCN)"), "%s",
- p_cdda->psz_mcn );
-
- input_Control( p_cdda->p_input, INPUT_ADD_INFO,
- _("Disc"), _("Tracks"), "%d", p_cdda->i_tracks );
- }
-
+ if (p_cdda->psz_mcn) {
+ input_Control( p_cdda->p_input, INPUT_ADD_INFO,
+ _("Disc"), _("Media Catalog Number (MCN)"), "%s",
+ p_cdda->psz_mcn );
+
+ input_Control( p_cdda->p_input, INPUT_ADD_INFO,
+ _("Disc"), _("Tracks"), "%d", p_cdda->i_tracks );
+ }
+
#ifdef HAVE_LIBCDDB
if (p_cdda->b_cddb_enabled && p_cdda->cddb.disc)
{
add_cddb_disc_info_str("Artist (CDDB)", artist);
- if ( CDDB_CAT_INVALID != cddb_disc_get_category(p_cdda->cddb.disc) )
- add_info_str("Disc", "Category (CDDB)",
- CDDB_CATEGORY[cddb_disc_get_category(p_cdda->cddb.disc)]);
+ if ( CDDB_CAT_INVALID != cddb_disc_get_category(p_cdda->cddb.disc) )
+ add_info_str("Disc", "Category (CDDB)",
+ CDDB_CATEGORY[cddb_disc_get_category(p_cdda->cddb.disc)]);
add_cddb_disc_info_val("Disc ID (CDDB)", "%x", discid);
add_cddb_disc_info_str("Extended Data (CDDB)", ext_data);
- add_cddb_disc_info_str("Genre (CDDB)", genre);
+ add_cddb_disc_info_str("Genre (CDDB)", genre);
add_cddb_disc_info_str("Title (CDDB)", title);
- if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc) )
- add_cddb_disc_info_val("Year (CDDB)", "%d", year);
+ if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc) )
+ add_cddb_disc_info_val("Year (CDDB)", "%d", year);
}
#endif /*HAVE_LIBCDDB*/
if (p_cdda->p_cdtext[0])
{
- char *psz_field;
-
+ char *psz_field;
+
add_cdtext_disc_info_str("Arranger (CD-Text)", CDTEXT_ARRANGER);
add_cdtext_disc_info_str("Composer (CD-Text)", CDTEXT_COMPOSER);
add_cdtext_disc_info_str("Disc ID (CD-Text)", CDTEXT_DISCID);
add_cdtext_disc_info_str("Songwriter (CD-Text)", CDTEXT_SONGWRITER);
add_cdtext_disc_info_str("Title (CD-Text)", CDTEXT_TITLE);
- psz_field = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
- if (psz_field && strlen(psz_field)) {
- psz_meta_title = psz_field;
- }
- psz_field = p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER];
- if (psz_field && strlen(psz_field)) {
- psz_meta_artist = psz_field;
- }
-
+ psz_field = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
+ if (psz_field && strlen(psz_field)) {
+ psz_meta_title = psz_field;
+ }
+ psz_field = p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER];
+ if (psz_field && strlen(psz_field)) {
+ psz_meta_artist = psz_field;
}
+
+ }
+
+ for( i = 0 ; i < p_cdda->i_tracks ; i++ )
+ {
+ char psz_track[TITLE_MAX];
+ const track_t i_track = i_first_track + i;
+ unsigned int i_track_frames =
+ cdio_get_track_lsn(p_cdda->p_cdio, i_track+1) -
+ cdio_get_track_lsn(p_cdda->p_cdio, i_track);
+
+ mtime_t i_duration = i_track_frames / CDIO_CD_FRAMES_PER_SEC;
+ char *psz_mrl = CDDAFormatMRL( p_access, i_track );
+
+ snprintf(psz_track, TITLE_MAX, "%s %02d", _("Track"), i_track);
- for( i = 0 ; i < p_cdda->i_tracks ; i++ )
- {
- char psz_track[TITLE_MAX];
- const track_t i_track = i_first_track + i;
- unsigned int i_track_frames =
- cdio_get_track_lsn(p_cdda->p_cdio, i_track+1) -
- cdio_get_track_lsn(p_cdda->p_cdio, i_track);
-
- mtime_t i_duration = i_track_frames / CDIO_CD_FRAMES_PER_SEC;
- char *psz_mrl = CDDAFormatMRL( p_access, i_track );
-
- snprintf(psz_track, TITLE_MAX, "%s %02d", _("Track"), i_track);
-
- input_Control( p_cdda->p_input, INPUT_ADD_INFO, psz_track,
- _("Duration"), "%s",
- secstotimestr( psz_buffer, i_duration ) );
-
- input_Control( p_cdda->p_input, INPUT_ADD_INFO, psz_track,
- _("MRL"), "%s", psz_mrl );
- free(psz_mrl);
-
- if (p_cdda->p_cdtext[i_track])
- {
- add_cdtext_info_str( psz_track, "Arranger (CD-Text)",
- i_track, CDTEXT_ARRANGER);
- add_cdtext_info_str( psz_track, "Composer (CD-Text)",
- i_track, CDTEXT_COMPOSER);
- add_cdtext_info_str( psz_track, "Disc ID (CD-Text)",
- i_track, CDTEXT_DISCID);
- add_cdtext_info_str( psz_track, "Genre (CD-Text)",
- i_track, CDTEXT_GENRE);
- add_cdtext_info_str( psz_track, "Message (CD-Text)",
- i_track, CDTEXT_MESSAGE);
- add_cdtext_info_str( psz_track, "Performer (CD-Text)",
- i_track, CDTEXT_PERFORMER);
- add_cdtext_info_str( psz_track, "Songwriter (CD-Text)",
- i_track, CDTEXT_SONGWRITER);
- add_cdtext_info_str( psz_track, "Title (CD-Text)",
- i_track, CDTEXT_TITLE);
- }
-
+ input_Control( p_cdda->p_input, INPUT_ADD_INFO, psz_track,
+ _("Duration"), "%s",
+ secstotimestr( psz_buffer, i_duration ) );
+
+ input_Control( p_cdda->p_input, INPUT_ADD_INFO, psz_track,
+ _("MRL"), "%s", psz_mrl );
+ free(psz_mrl);
+
+ if (p_cdda->p_cdtext[i_track])
+ {
+ add_cdtext_info_str( psz_track, "Arranger (CD-Text)",
+ i_track, CDTEXT_ARRANGER);
+ add_cdtext_info_str( psz_track, "Composer (CD-Text)",
+ i_track, CDTEXT_COMPOSER);
+ add_cdtext_info_str( psz_track, "Disc ID (CD-Text)",
+ i_track, CDTEXT_DISCID);
+ add_cdtext_info_str( psz_track, "Genre (CD-Text)",
+ i_track, CDTEXT_GENRE);
+ add_cdtext_info_str( psz_track, "Message (CD-Text)",
+ i_track, CDTEXT_MESSAGE);
+ add_cdtext_info_str( psz_track, "Performer (CD-Text)",
+ i_track, CDTEXT_PERFORMER);
+ add_cdtext_info_str( psz_track, "Songwriter (CD-Text)",
+ i_track, CDTEXT_SONGWRITER);
+ add_cdtext_info_str( psz_track, "Title (CD-Text)",
+ i_track, CDTEXT_TITLE);
+ }
+
#ifdef HAVE_LIBCDDB
- if (p_cdda->b_cddb_enabled)
- {
- cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i);
- if (t != NULL)
- {
- add_info_str(psz_track, "Artist (CDDB)",
- cddb_track_get_artist(t));
- add_info_str(psz_track, "Title (CDDB)",
- cddb_track_get_title(t));
- add_info_str(psz_track, "Extended Data (CDDB)",
- cddb_track_get_ext_data(t));
- }
- }
+ if (p_cdda->b_cddb_enabled)
+ {
+ cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i);
+ if (t != NULL)
+ {
+ add_info_str(psz_track, "Artist (CDDB)",
+ cddb_track_get_artist(t));
+ add_info_str(psz_track, "Title (CDDB)",
+ cddb_track_get_title(t));
+ add_info_str(psz_track, "Extended Data (CDDB)",
+ cddb_track_get_ext_data(t));
+ }
+ }
#endif /*HAVE_LIBCDDB*/
- }
-
- /* Above we should have set psz_meta_title and psz_meta_artist
- to CDDB or CD-Text values or the default value depending on
- availablity and user preferences.
-
- So now add the title and artist to VLC's meta, and the name
- as shown in the status bar and playlist entry.
-
- For playlist mode, the meta title is what's seen at the
- bottom and in the playlist. For nav-mode playing, it is
- done by input_control. I don't understand why they do
- different things. In either case, we may have customized to
- put in the track name.
- */
- if ( CDIO_INVALID_TRACK != i_track )
- {
- char *psz_name = CDDAFormatTitle( p_access, i_track ) ;
- if ( !p_cdda->b_nav_mode ) {
- add_meta_val( vlc_meta_Title, psz_name );
- } else
- {
- input_Control( p_cdda->p_input, INPUT_SET_NAME, psz_name );
- free(psz_name);
- }
- if (psz_meta_artist)
- add_meta_val( vlc_meta_Artist, psz_meta_artist );
- }
-
+ }
+
+ /* Above we should have set psz_meta_title and psz_meta_artist
+ to CDDB or CD-Text values or the default value depending on
+ availablity and user preferences.
+
+ So now add the title and artist to VLC's meta, and the name
+ as shown in the status bar and playlist entry.
+
+ For playlist mode, the meta title is what's seen at the
+ bottom and in the playlist. For nav-mode playing, it is
+ done by input_control. I don't understand why they do
+ different things. In either case, we may have customized to
+ put in the track name.
+ */
+ if ( CDIO_INVALID_TRACK != i_track )
+ {
+ char *psz_name = CDDAFormatTitle( p_access, i_track ) ;
+ if ( !p_cdda->b_nav_mode ) {
+ add_meta_val( vlc_meta_Title, psz_name );
+ } else
+ {
+ input_Control( p_cdda->p_input, INPUT_SET_NAME, psz_name );
+ free(psz_name);
+ }
+ if (psz_meta_artist)
+ add_meta_val( vlc_meta_Artist, psz_meta_artist );
+ }
+
}
}
static inline bool
want_cddb_info(
-cdda_data_t *p_cdda, char *psz_cdtext)
+cdda_data_t *p_cdda, char *psz_cdtext)
{
/* We either don't have CD-Text info, or we do but we prefer to get CDDB
which means CDDB has been enabled and we were able to retrieve the info.*/
#ifdef HAVE_LIBCDDB
- return !psz_cdtext ||
+ return !psz_cdtext ||
(!p_cdda->b_cdtext_prefer && p_cdda->b_cddb_enabled && p_cdda->cddb.disc);
#else
return false;
%T : The track number **
%s : Number of seconds in this track, or seconds in CD if invalid track
%S : Number of seconds on the CD
- %t : The track name or MRL if no name
+ %t : The track name or MRL if no name
%Y : The year 19xx or 20xx **
%% : a %
*/
if (p_cdda->p_cdtext[0]
&& p_cdda->p_cdtext[0]->field[CDTEXT_TITLE])
psz = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
- if (want_cddb_info(p_cdda, psz))
- psz = (char *)cddb_disc_get_title(p_cdda->cddb.disc);
+ if (want_cddb_info(p_cdda, psz))
+ psz = (char *)cddb_disc_get_title(p_cdda->cddb.disc);
goto format_str;
case 'C':
if (!p_cdda->b_cddb_enabled) goto not_special;
case 'Y':
if (!p_cdda->b_cddb_enabled) goto not_special;
if (p_cdda->cddb.disc)
- add_format_num_info(cddb_disc_get_year(p_cdda->cddb.disc),
- "%5d");
+ add_format_num_info(cddb_disc_get_year(p_cdda->cddb.disc),
+ "%5d");
break;
case 't':
if ( CDIO_INVALID_TRACK == i_track ) break;
}
} else {
if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE]) {
- add_format_str_info(p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE]);
-
- } else
- add_format_str_info(psz_mrl);
- }
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE]) {
+ add_format_str_info(p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE]);
+
+ } else
+ add_format_str_info(psz_mrl);
+ }
break;
- case 'p':
- if ( CDIO_INVALID_TRACK == i_track ) break;
- if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER])
- psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER];
- if (want_cddb_info(p_cdda, psz))
- {
- cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc,
- i_track-1);
- if (t != NULL && cddb_track_get_artist(t) != NULL)
- psz = (char *)cddb_track_get_artist(t);
- }
- goto format_str;
+ case 'p':
+ if ( CDIO_INVALID_TRACK == i_track ) break;
+ if (p_cdda->p_cdtext[i_track]
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER])
+ psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER];
+ if (want_cddb_info(p_cdda, psz))
+ {
+ cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc,
+ i_track-1);
+ if (t != NULL && cddb_track_get_artist(t) != NULL)
+ psz = (char *)cddb_track_get_artist(t);
+ }
+ goto format_str;
case 'e':
- if ( CDIO_INVALID_TRACK == i_track ) break;
- if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE])
- psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE];
- if (want_cddb_info(p_cdda, psz))
+ if ( CDIO_INVALID_TRACK == i_track ) break;
+ if (p_cdda->p_cdtext[i_track]
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE])
+ psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE];
+ if (want_cddb_info(p_cdda, psz))
{
cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc,
i_track-1);
if (t != NULL && cddb_track_get_ext_data(t) != NULL)
psz = (char *)cddb_track_get_ext_data(t);
- }
- goto format_str;
+ }
+ goto format_str;
break;
#else
case 'a':
- if (p_cdda->p_cdtext[0]
- && p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER])
- psz = p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER];
+ if (p_cdda->p_cdtext[0]
+ && p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER])
+ psz = p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER];
goto format_str;
case 'A':
- if (p_cdda->p_cdtext[0]
- && p_cdda->p_cdtext[0]->field[CDTEXT_TITLE])
- psz = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
+ if (p_cdda->p_cdtext[0]
+ && p_cdda->p_cdtext[0]->field[CDTEXT_TITLE])
+ psz = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
goto format_str;
case 'G':
- if (p_cdda->p_cdtext[0]
- && p_cdda->p_cdtext[0]->field[CDTEXT_GENRE])
- psz = p_cdda->p_cdtext[0]->field[CDTEXT_GENRE];
- goto format_str;
+ if (p_cdda->p_cdtext[0]
+ && p_cdda->p_cdtext[0]->field[CDTEXT_GENRE])
+ psz = p_cdda->p_cdtext[0]->field[CDTEXT_GENRE];
+ goto format_str;
case 'I':
- if (p_cdda->p_cdtext[0]
- && p_cdda->p_cdtext[0]->field[CDTEXT_DISCID])
- add_format_str_info(p_cdda->p_cdtext[0]->field[CDTEXT_DISCID]);
+ if (p_cdda->p_cdtext[0]
+ && p_cdda->p_cdtext[0]->field[CDTEXT_DISCID])
+ add_format_str_info(p_cdda->p_cdtext[0]->field[CDTEXT_DISCID]);
break;
- case 'p':
- if ( CDIO_INVALID_TRACK == i_track ) break;
- if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER])
- psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER];
- goto format_str;
+ case 'p':
+ if ( CDIO_INVALID_TRACK == i_track ) break;
+ if (p_cdda->p_cdtext[i_track]
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER])
+ psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_PERFORMER];
+ goto format_str;
case 't':
- if ( CDIO_INVALID_TRACK == i_track ) break;
- if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE])
- psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE];
- else
- psz = psz_mrl;
+ if ( CDIO_INVALID_TRACK == i_track ) break;
+ if (p_cdda->p_cdtext[i_track]
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE])
+ psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_TITLE];
+ else
+ psz = psz_mrl;
goto format_str;
case 'e':
- if ( CDIO_INVALID_TRACK == i_track ) break;
- if (p_cdda->p_cdtext[i_track]
- && p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE])
- psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE];
- goto format_str;
+ if ( CDIO_INVALID_TRACK == i_track ) break;
+ if (p_cdda->p_cdtext[i_track]
+ && p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE])
+ psz = p_cdda->p_cdtext[i_track]->field[CDTEXT_MESSAGE];
+ goto format_str;
break;
#endif /*HAVE_LIBCDDB*/
case 's':
- if ( CDIO_INVALID_TRACK != i_track )
+ if ( CDIO_INVALID_TRACK != i_track )
{
char psz_buffer[MSTRTIME_MAX_SIZE];
- unsigned int i_track_frames =
- cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
- mtime_t i_duration =
- i_track_frames / CDIO_CD_FRAMES_PER_SEC;
- add_format_str_info( secstotimestr( psz_buffer,
- i_duration ) );
- break;
+ unsigned int i_track_frames =
+ cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
+ mtime_t i_duration =
+ i_track_frames / CDIO_CD_FRAMES_PER_SEC;
+ add_format_str_info( secstotimestr( psz_buffer,
+ i_duration ) );
+ break;
}
- /* Fall through to disc duration if CDIO_INVALID_TRACK */
+ /* Fall through to disc duration if CDIO_INVALID_TRACK */
case 'S':
{
char psz_buffer[MSTRTIME_MAX_SIZE];
- unsigned int i_track_frames =
- cdio_get_track_lba(p_cdda->p_cdio,
- CDIO_CDROM_LEADOUT_TRACK);
- mtime_t i_duration =
- i_track_frames / CDIO_CD_FRAMES_PER_SEC;
- add_format_str_info( secstotimestr( psz_buffer,
- i_duration ) );
- break;
+ unsigned int i_track_frames =
+ cdio_get_track_lba(p_cdda->p_cdio,
+ CDIO_CDROM_LEADOUT_TRACK);
+ mtime_t i_duration =
+ i_track_frames / CDIO_CD_FRAMES_PER_SEC;
+ add_format_str_info( secstotimestr( psz_buffer,
+ i_duration ) );
+ break;
}
case 'M':
case 'T':
add_format_num_info(i_track, "%02d");
break;
- format_str:
- if (psz)
- add_format_str_info(psz);
- break;
+ format_str:
+ if (psz)
+ add_format_str_info(psz);
+ break;
#ifdef HAVE_LIBCDDB
not_special:
#endif
return strdup(temp_str);
}
-/* Return a MRL for the given track. The caller must free the
+/* Return a MRL for the given track. The caller must free the
allocated string. */
static char *
CDDAFormatMRL( const access_t *p_access, track_t i_track )
{
cdda_data_t *p_cdda = (cdda_data_t *) p_access->p_sys;
- const unsigned int psz_mrl_max = strlen(CDDA_MRL_PREFIX)
+ const unsigned int psz_mrl_max = strlen(CDDA_MRL_PREFIX)
+ strlen(p_cdda->psz_source) +
+ strlen("@T") + strlen("100") + 1;
char *psz_mrl = calloc( 1, psz_mrl_max );
-
+
if (CDIO_INVALID_TRACK == i_track)
snprintf(psz_mrl, psz_mrl_max, "%s%s",
- CDDA_MRL_PREFIX, p_cdda->psz_source);
- else
+ CDDA_MRL_PREFIX, p_cdda->psz_source);
+ else
snprintf(psz_mrl, psz_mrl_max, "%s%s@T%u",
- CDDA_MRL_PREFIX, p_cdda->psz_source, i_track);
+ CDDA_MRL_PREFIX, p_cdda->psz_source, i_track);
return psz_mrl;
}
-/* Return a title string as specified by the titel format string for the
+/* Return a title string as specified by the titel format string for the
given track. The caller must free the allocated string. */
char *
CDDAFormatTitle( const access_t *p_access, track_t i_track )
-{
+{
const char *config_varname = MODULE_STRING "-title-format";
cdda_data_t *p_cdda = (cdda_data_t *) p_access->p_sys;
char *psz_mrl = CDDAFormatMRL( p_access, i_track );
- if( psz_mrl )
+ if( psz_mrl )
{
char *psz_name;
#ifdef HAVE_LIBCDDB
- if (p_cdda->b_cddb_enabled)
- {
- config_varname = MODULE_STRING "-cddb-title-format";
- }
+ if (p_cdda->b_cddb_enabled)
+ {
+ config_varname = MODULE_STRING "-cddb-title-format";
+ }
#endif /*HAVE_LIBCDDB*/
- psz_name =
- CDDAFormatStr( p_access, p_cdda,
- config_GetPsz( p_access, config_varname ),
- psz_mrl, i_track );
- free(psz_mrl);
- return psz_name;
+ psz_name =
+ CDDAFormatStr( p_access, p_cdda,
+ config_GetPsz( p_access, config_varname ),
+ psz_mrl, i_track );
+ free(psz_mrl);
+ return psz_name;
}
return(NULL);
}
static playlist_item_t *
CDDACreatePlaylistItem( const access_t *p_access, cdda_data_t *p_cdda,
- playlist_t *p_playlist, playlist_item_t *p_item,
+ playlist_t *p_playlist, playlist_item_t *p_item,
track_t i_track )
{
- unsigned int i_track_frames =
- cdio_get_track_lsn(p_cdda->p_cdio, i_track+1) -
+ unsigned int i_track_frames =
+ cdio_get_track_lsn(p_cdda->p_cdio, i_track+1) -
cdio_get_track_lsn(p_cdda->p_cdio, i_track);
mtime_t i_mduration = i_track_frames * (CLOCK_FREQ / CDIO_CD_FRAMES_PER_SEC) ;
char *psz_title = NULL;
return VLC_SUCCESS;
}
-/*
- Fixes up playlist.
+/*
+ Fixes up playlist.
*/
int
-CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
+CDDAFixupPlaylist( access_t *p_access, cdda_data_t *p_cdda,
vlc_bool_t b_single_track )
{
int i;
more mature.
*/
track_t i_track = p_cdda->i_track;
- unsigned int i_track_frames =
- cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
-
+ unsigned int i_track_frames =
+ cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
+
input_title_t *t = p_cdda->p_title[0] = //i_track-i_first_track] =
vlc_input_title_New();
t->i_length = I64C(1000000) * t->i_size / CDDA_FREQUENCY_SAMPLE / 4;
- if( p_item )
- {
- CDDAAddMetaToItem( p_access, p_cdda, p_item, i_track, VLC_FALSE );
- input_item_SetDuration( p_item->p_input, (mtime_t) i_track_frames
- * (CLOCK_FREQ / CDIO_CD_FRAMES_PER_SEC) );
- input_item_SetURI( p_item->p_input,
+ if( p_item )
+ {
+ CDDAAddMetaToItem( p_access, p_cdda, p_item, i_track, VLC_FALSE );
+ input_item_SetDuration( p_item->p_input, (mtime_t) i_track_frames
+ * (CLOCK_FREQ / CDIO_CD_FRAMES_PER_SEC) );
+ input_item_SetURI( p_item->p_input,
CDDAFormatMRL( p_access, i_track ) );
- }
-
+ }
+
p_cdda->i_titles = 1;
- p_access->info.i_update = INPUT_UPDATE_TITLE;
+ p_access->info.i_update = INPUT_UPDATE_TITLE;
}
else
{
- input_title_t *t;
+ input_title_t *t;
- if ( !p_cdda->b_nav_mode )
- playlist_ItemToNode( p_playlist, p_item, VLC_FALSE );
+ if ( !p_cdda->b_nav_mode )
+ playlist_ItemToNode( p_playlist, p_item, VLC_FALSE );
for( i = 0 ; i < p_cdda->i_tracks ; i++ )
{
playlist_item_t *p_child;
const track_t i_track = i_first_track + i;
- unsigned int i_track_frames =
- cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
+ unsigned int i_track_frames =
+ cdio_get_track_sec_count(p_cdda->p_cdio, i_track);
t = p_cdda->p_title[i] = vlc_input_title_New();
asprintf( &t->psz_name, _("Track %i"), i_track );
t->i_size = i_track_frames * (int64_t) CDIO_CD_FRAMESIZE_RAW;
- t->i_length = I64C(1000000) * t->i_size
- / CDDA_FREQUENCY_SAMPLE / 4;
+ t->i_length = I64C(1000000) * t->i_size
+ / CDDA_FREQUENCY_SAMPLE / 4;
- if ( ! p_cdda->b_nav_mode ) {
- p_child = CDDACreatePlaylistItem( p_access, p_cdda, p_playlist,
- p_item,
- i_track );
- CDDAAddMetaToItem( p_access, p_cdda, p_child, i_track,
- VLC_TRUE );
- }
+ if ( ! p_cdda->b_nav_mode ) {
+ p_child = CDDACreatePlaylistItem( p_access, p_cdda, p_playlist,
+ p_item,
+ i_track );
+ CDDAAddMetaToItem( p_access, p_cdda, p_child, i_track,
+ VLC_TRUE );
+ }
}
p_cdda->i_titles = p_cdda->i_tracks;
- p_access->info.i_update |= INPUT_UPDATE_TITLE|INPUT_UPDATE_SIZE;
- if( p_item )
+ p_access->info.i_update |= INPUT_UPDATE_TITLE|INPUT_UPDATE_SIZE;
+ if( p_item )
{
- input_item_SetDuration( p_item->p_input, (mtime_t) p_access->info.i_size
+ input_item_SetDuration( p_item->p_input, (mtime_t) p_access->info.i_size
* (CLOCK_FREQ / CDIO_CD_FRAMES_PER_SEC) );
input_item_SetURI( p_item->p_input,
CDDAFormatMRL( p_access, p_cdda->i_track ) );
- }
}
-
+ }
+
if( b_play )
{
}
-/*
+/*
* Local variables:
* mode: C
* style: gnu
*****************************************************************************
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
+ * License as published by the Free Software Foundation;
* version 2 of the License.
*
* This library is distributed in the hope that it will be useful,
static int process_options( demux_t *p_demux )
{
demux_sys_t *p_sys = p_demux->p_sys;
- char *psz_dup;
+ char *psz_dup;
char *psz_parser;
char *token = NULL;
char *state = NULL;
if( pXbar->QueryInterface(IID_IBaseFilter, (void **)&pFilter) == S_OK )
{
- if( SUCCEEDED(pFilter->EnumPins(&pins)) )
+ if( SUCCEEDED(pFilter->EnumPins(&pins)) )
{
LONG i = 0;
- while( pins->Next(1, &pP, &n) == S_OK )
+ while( pins->Next(1, &pP, &n) == S_OK )
{
pP->Release();
- if( i == TrueIndex )
+ if( i == TrueIndex )
{
*ppPin = pP;
break;
pFilter->Release();
}
- return *ppPin ? S_OK : E_FAIL;
+ return *ppPin ? S_OK : E_FAIL;
}
/*****************************************************************************
pFilter->Release();
}
- return fOK ? S_OK : E_FAIL;
+ return fOK ? S_OK : E_FAIL;
}
/*****************************************************************************
{
// remember connector type
physicalType = inputPinPhysicalType;
-
+
msg_Dbg( p_this, "found existing route for output %ld (type %ld) to input %ld (type %ld)",
outputPinIndex, outputPinPhysicalType, inputPinIndex,
inputPinPhysicalType );
-
+
// fall through to for loop, note 'inputPinIndex' is set to the pin we are looking for
// hence, loop iteration should not wind back
// reset to first pin for complete loop iteration
inputPinIndex = 0;
}
- }
-
+ }
+
//
// for all input pins
//
// Can we route it?
if( FAILED(pXbar->CanRoute(outputPinIndex, inputPinIndex)) ) continue;
-
-
+
+
IPin *pPin;
if( FAILED(GetCrossbarIPinAtIndex( pXbar, inputPinIndex,
TRUE, &pPin)) ) continue;
vlc_value_t, vlc_value_t, void * );
static void ShowPropertyPage( IUnknown * );
-static void ShowDeviceProperties( vlc_object_t *, ICaptureGraphBuilder2 *,
+static void ShowDeviceProperties( vlc_object_t *, ICaptureGraphBuilder2 *,
IBaseFilter *, vlc_bool_t );
-static void ShowTunerProperties( vlc_object_t *, ICaptureGraphBuilder2 *,
+static void ShowTunerProperties( vlc_object_t *, ICaptureGraphBuilder2 *,
IBaseFilter *, vlc_bool_t );
static void ConfigTuner( vlc_object_t *, ICaptureGraphBuilder2 *,
IBaseFilter * );
{
msg_Err( p_this, "can't use device: %s, unsupported device type",
devicename.c_str() );
- intf_UserFatal( p_this, VLC_FALSE, _("Capturing failed"),
+ intf_UserFatal( p_this, VLC_FALSE, _("Capturing failed"),
_("VLC cannot use the device \"%s\", because its device "
"type is not supported.") );
return VLC_EGENERIC;
else {
/* capture device */
msg_Err( p_this, "capture device '%s' does not support required parameters !", devicename.c_str() );
- intf_UserFatal( p_this, VLC_FALSE, _("Capturing failed"),
+ intf_UserFatal( p_this, VLC_FALSE, _("Capturing failed"),
_("The capture device \"%s\" does not support the "
"required parameters."), devicename.c_str() );
p_device_filter->Release();
SysFreeString(var.bstrVal);
p_buf[i_convert] = '\0';
- string devname = string(p_buf);
-
- int dup = 0;
- /* find out if this name is already used by a previously found device */
- list<string>::const_iterator iter = devicelist.begin();
- list<string>::const_iterator end = devicelist.end();
- while ( iter != end )
- {
- if( 0 == (*iter).compare(0, devname.size(), devname) )
- ++dup;
- ++iter;
- }
- if( dup )
- {
- /* we have a duplicate device name, append a sequence number to name
- to provive a unique list back to the user */
- char seq[16];
- sprintf(seq, " #%d", dup);
- devname.append(seq);
- }
- devicelist.push_back( devname );
+ string devname = string(p_buf);
+
+ int dup = 0;
+ /* find out if this name is already used by a previously found device */
+ list<string>::const_iterator iter = devicelist.begin();
+ list<string>::const_iterator end = devicelist.end();
+ while ( iter != end )
+ {
+ if( 0 == (*iter).compare(0, devname.size(), devname) )
+ ++dup;
+ ++iter;
+ }
+ if( dup )
+ {
+ /* we have a duplicate device name, append a sequence number to name
+ to provive a unique list back to the user */
+ char seq[16];
+ sprintf(seq, " #%d", dup);
+ devname.append(seq);
+ }
+ devicelist.push_back( devname );
if( p_devicename && *p_devicename == devname )
{
p_class_enum->Release();
if( p_listdevices ) {
- devicelist.sort();
- *p_listdevices = devicelist;
+ devicelist.sort();
+ *p_listdevices = devicelist;
}
return NULL;
}
if( i_height )
{
if( i_height % pVSCC->OutputGranularityY
- || pVSCC->MinOutputSize.cy > i_height
+ || pVSCC->MinOutputSize.cy > i_height
|| i_height > pVSCC->MaxOutputSize.cy )
{
// required height not compatible, try next media type
// Set the sample size and image size.
// (Round the image width up to a DWORD boundary.)
- p_mt->lSampleSize = pVih->bmiHeader.biSizeImage =
+ p_mt->lSampleSize = pVih->bmiHeader.biSizeImage =
((pVih->bmiHeader.biWidth + 3) & ~3) *
pVih->bmiHeader.biHeight * (pVih->bmiHeader.biBitCount>>3);
{
i_priority = i_current_priority;
if( i_fourcc )
- // no need to check any more media types
+ // no need to check any more media types
i = piCount;
}
}
}
pWfx->nSamplesPerSec = val;
- val = i_bitspersample;
+ val = i_bitspersample;
if( ! val )
{
if( VLC_FOURCC('f', 'l', '3', '2') == i_current_fourcc )
LONGLONG i_current_atpf = ((VIDEOINFOHEADER *)p_mt->pbFormat)->AvgTimePerFrame;
if( i_current_height < 0 )
- i_current_height = -i_current_height;
+ i_current_height = -i_current_height;
msg_Dbg( p_this, "EnumDeviceCaps: input pin "
"accepts chroma: %4.4s, width:%i, height:%i, fps:%f",
}
else FreeMediaType( *p_mt );
}
- else if( i_current_fourcc && p_mt->majortype == MEDIATYPE_Audio
+ else if( i_current_fourcc && p_mt->majortype == MEDIATYPE_Audio
&& p_mt->formattype == FORMAT_WaveFormatEx)
{
int i_current_channels =
i_current_fourcc = VLC_FOURCC('I','4','2','0');
if( !i_fourcc || i_fourcc == i_current_fourcc )
{
- // return alternative media type
- AM_MEDIA_TYPE mtr;
- VIDEOINFOHEADER vh;
-
- mtr.majortype = MEDIATYPE_Video;
- mtr.subtype = MEDIASUBTYPE_I420;
- mtr.bFixedSizeSamples = TRUE;
- mtr.bTemporalCompression = FALSE;
- mtr.pUnk = NULL;
- mtr.formattype = FORMAT_VideoInfo;
- mtr.cbFormat = sizeof(vh);
- mtr.pbFormat = (BYTE *)&vh;
-
- memset(&vh, 0, sizeof(vh));
-
- vh.bmiHeader.biSize = sizeof(vh.bmiHeader);
+ // return alternative media type
+ AM_MEDIA_TYPE mtr;
+ VIDEOINFOHEADER vh;
+
+ mtr.majortype = MEDIATYPE_Video;
+ mtr.subtype = MEDIASUBTYPE_I420;
+ mtr.bFixedSizeSamples = TRUE;
+ mtr.bTemporalCompression = FALSE;
+ mtr.pUnk = NULL;
+ mtr.formattype = FORMAT_VideoInfo;
+ mtr.cbFormat = sizeof(vh);
+ mtr.pbFormat = (BYTE *)&vh;
+
+ memset(&vh, 0, sizeof(vh));
+
+ vh.bmiHeader.biSize = sizeof(vh.bmiHeader);
vh.bmiHeader.biWidth = i_width > 0 ? i_width :
- ((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biWidth;
+ ((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biWidth;
vh.bmiHeader.biHeight = i_height > 0 ? i_height :
- ((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biHeight;
- vh.bmiHeader.biPlanes = 3;
- vh.bmiHeader.biBitCount = 12;
- vh.bmiHeader.biCompression = VLC_FOURCC('I','4','2','0');
- vh.bmiHeader.biSizeImage = vh.bmiHeader.biWidth * 12 *
- vh.bmiHeader.biHeight / 8;
- mtr.lSampleSize = vh.bmiHeader.biSizeImage;
-
+ ((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biHeight;
+ vh.bmiHeader.biPlanes = 3;
+ vh.bmiHeader.biBitCount = 12;
+ vh.bmiHeader.biCompression = VLC_FOURCC('I','4','2','0');
+ vh.bmiHeader.biSizeImage = vh.bmiHeader.biWidth * 12 *
+ vh.bmiHeader.biHeight / 8;
+ mtr.lSampleSize = vh.bmiHeader.biSizeImage;
+
msg_Dbg( p_this, "EnumDeviceCaps: input pin media: using 'I420' in place of unsupported format 'HCW2'");
if( SUCCEEDED(CopyMediaType(mt+mt_count, &mtr)) )
else if( media_type.subtype == MEDIASUBTYPE_MPEG2_VIDEO )
i_fourcc = VLC_FOURCC( 'm', 'p', '2', 'v' );
- /* DivX video */
+ /* DivX video */
else if( media_type.subtype == MEDIASUBTYPE_DIVX )
i_fourcc = VLC_FOURCC( 'D', 'I', 'V', 'X' );
}
if( !pmt ) return S_OK;
-
+
if( GUID_NULL != pmt->majortype &&
media_types[0].majortype != pmt->majortype )
{
int i_fourcc = GetFourCCFromMediaType(*pmt);
if( !i_fourcc )
- {
+ {
msg_Dbg( p_input, "CapturePin::QueryAccept "
"[media type not supported]" );
return S_FALSE;
((VIDEOINFOHEADER *)pmt->pbFormat)->bmiHeader.biWidth,
((VIDEOINFOHEADER *)pmt->pbFormat)->bmiHeader.biHeight,
(char *)&i_fourcc,
- 10000000.0f/((float)((VIDEOINFOHEADER *)pmt->pbFormat)->AvgTimePerFrame) );
+ 10000000.0f/((float)((VIDEOINFOHEADER *)pmt->pbFormat)->AvgTimePerFrame) );
}
else if( pmt->majortype == MEDIATYPE_Audio )
{
((WAVEFORMATEX *)pmt->pbFormat)->nSamplesPerSec,
((WAVEFORMATEX *)pmt->pbFormat)->wBitsPerSample,
(char *)&i_fourcc );
- }
+ }
else
{
msg_Dbg( p_input, "CapturePin::QueryAccept [OK] (stream format=%4.4s)",
AM_MEDIA_TYPE *mt, size_t mt_count )
: p_input( _p_input ),
p_pin( new CapturePin( _p_input, p_sys, this, mt, mt_count ) ),
- state( State_Stopped ), i_ref( 1 )
+ state( State_Stopped ), i_ref( 1 )
{
}
/* Are we creating a new enumerator */
if( pEnumMediaTypes == NULL )
{
- CopyMediaType(&cx_media_type, &p_pin->cx_media_type);
+ CopyMediaType(&cx_media_type, &p_pin->cx_media_type);
i_position = 0;
}
else
{
- CopyMediaType(&cx_media_type, &pEnumMediaTypes->cx_media_type);
+ CopyMediaType(&cx_media_type, &pEnumMediaTypes->cx_media_type);
i_position = pEnumMediaTypes->i_position;
}
}
ULONG offset = 0;
ULONG max = p_pin->media_type_count;
- if( ! ppMediaTypes )
+ if( ! ppMediaTypes )
return E_POINTER;
if( (! pcFetched) && (cMediaTypes > 1) )
(AM_MEDIA_TYPE *)CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
if( CopyMediaType(ppMediaTypes[copied], &cx_media_type) != S_OK )
return E_OUTOFMEMORY;
- ++i_position;
+ ++i_position;
++copied;
}
}
return E_OUTOFMEMORY;
++copied;
- ++i_position;
+ ++i_position;
}
if( pcFetched ) *pcFetched = copied;
#endif
FreeMediaType(cx_media_type);
- CopyMediaType(&cx_media_type, &p_pin->cx_media_type);
+ CopyMediaType(&cx_media_type, &p_pin->cx_media_type);
i_position = 0;
return S_OK;
};
free( psz_name );
return VLC_EGENERIC;
}
-
+
p_sys->p_ev->p_frame = NULL;
p_sys->p_ev->pp_last = &p_sys->p_ev->p_frame;
p_sys->p_ev->p_access = p_access;
{
msg_Err( p_access, "the DVB input old syntax is deprecated, use vlc "
"-p dvb to see an explanation of the new syntax" );
- intf_UserFatal( p_access, VLC_TRUE, _("Input syntax is deprecated"),
+ intf_UserFatal( p_access, VLC_TRUE, _("Input syntax is deprecated"),
_("The given syntax is deprecated. Run \"vlc -p dvb\" to see an " \
"explanation of the new syntax.") );
free( psz_dup );
else
{
msg_Err( p_access, "illegal polarization %c", *psz_parser );
- intf_UserFatal( p_access, VLC_FALSE, _("Illegal Polarization"),
+ intf_UserFatal( p_access, VLC_FALSE, _("Illegal Polarization"),
_("The provided polarization \"%c\" is not valid."),
*psz_parser );
free( psz_dup );
switch ( i_resource_id )
{
case RI_RESOURCE_MANAGER:
- ResourceManagerOpen( p_access, i_session_id ); break;
+ ResourceManagerOpen( p_access, i_session_id ); break;
case RI_APPLICATION_INFORMATION:
- ApplicationInformationOpen( p_access, i_session_id ); break;
+ ApplicationInformationOpen( p_access, i_session_id ); break;
case RI_CONDITIONAL_ACCESS_SUPPORT:
- ConditionalAccessOpen( p_access, i_session_id ); break;
+ ConditionalAccessOpen( p_access, i_session_id ); break;
case RI_DATE_TIME:
- DateTimeOpen( p_access, i_session_id ); break;
+ DateTimeOpen( p_access, i_session_id ); break;
case RI_MMI:
- MMIOpen( p_access, i_session_id ); break;
+ MMIOpen( p_access, i_session_id ); break;
case RI_HOST_CONTROL:
default:
switch ( i_resource_id )
{
case RI_RESOURCE_MANAGER:
- ResourceManagerOpen( p_access, i_session_id ); break;
+ ResourceManagerOpen( p_access, i_session_id ); break;
case RI_APPLICATION_INFORMATION:
- ApplicationInformationOpen( p_access, i_session_id ); break;
+ ApplicationInformationOpen( p_access, i_session_id ); break;
case RI_CONDITIONAL_ACCESS_SUPPORT:
- ConditionalAccessOpen( p_access, i_session_id ); break;
+ ConditionalAccessOpen( p_access, i_session_id ); break;
case RI_DATE_TIME:
- DateTimeOpen( p_access, i_session_id ); break;
+ DateTimeOpen( p_access, i_session_id ); break;
case RI_MMI:
- MMIOpen( p_access, i_session_id ); break;
+ MMIOpen( p_access, i_session_id ); break;
case RI_HOST_CONTROL:
default:
return VLC_TRUE;
}
}
-
+
for( p_es = p_pmt->p_first_es; p_es != NULL; p_es = p_es->p_next )
{
for( p_dr = p_es->p_first_descriptor; p_dr != NULL;
{
uint8_t *p_data;
int i;
-
+
if ( i_size )
p_data = realloc( p_capmt, i_capmt_size + 6 + i_size );
else
CAPMTFirst( p_access, i_session_id, p_pmt );
return;
}
-
-
+
+
msg_Dbg( p_access, "adding CAPMT for SID %d on session %d",
p_pmt->i_program_number, i_session_id );
}
/* Output CA capabilities */
- msg_Dbg( p_access, "CAMInit: CA interface with %d %s", caps.slot_num,
+ msg_Dbg( p_access, "CAMInit: CA interface with %d %s", caps.slot_num,
caps.slot_num == 1 ? "slot" : "slots" );
if ( caps.slot_type & CA_CI )
msg_Dbg( p_access, "CAMInit: CI high level interface type" );
if( dvdnav_title_play( p_sys->dvdnav, 1 ) != DVDNAV_STATUS_OK )
{
msg_Err( p_demux, "cannot set title (can't decrypt DVD?)" );
- intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
+ intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
_("VLC cannot set the DVD's title. It possibly "
"cannot decrypt the entire disk.") );
dvdnav_close( p_sys->dvdnav );
* - ...
*/
DemuxBlock( p_demux, packet, i_len );
- if( p_sys->b_spu_change )
+ if( p_sys->b_spu_change )
{
ButtonUpdate( p_demux, VLC_FALSE );
p_sys->b_spu_change = VLC_FALSE;
if( !(p_dvdread = DVDOpen( psz_name )) )
{
msg_Err( p_demux, "DVDRead cannot open source: %s", psz_name );
- intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
+ intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
_("DVDRead could not open disk \"%s\"."), psz_name );
free( psz_name );
return VLC_EGENERIC;
i_micro_second += (int64_t)(BCD2D(dtime->minute)) * 60 * 1000000;
i_micro_second += (int64_t)(BCD2D(dtime->second)) * 1000000;
- switch((dtime->frame_u & 0xc0) >> 6)
+ switch((dtime->frame_u & 0xc0) >> 6)
{
case 1:
f_fps = 25.0;
pi64 = (int64_t*)va_arg( args, int64_t * );
if( p_demux->info.i_title >= 0 && p_demux->info.i_title < p_sys->i_titles )
{
- *pi64 = (int64_t) dvdtime_to_time( &p_sys->p_cur_pgc->playback_time, 0 ) /
+ *pi64 = (int64_t) dvdtime_to_time( &p_sys->p_cur_pgc->playback_time, 0 ) /
p_sys->i_title_blocks * p_sys->i_title_offset;
return VLC_SUCCESS;
}
1, p_buffer ) != 1 )
{
msg_Err( p_demux, "read failed for block %d", p_sys->i_next_vobu );
- intf_UserWarn( p_demux, _("Playback failure"),
+ intf_UserWarn( p_demux, _("Playback failure"),
_("DVDRead could not read block %d."),
p_sys->i_next_vobu );
return -1;
{
msg_Err( p_demux, "read failed for %d/%d blocks at 0x%02x",
i_read, i_blocks_once, p_sys->i_cur_block );
- intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
+ intf_UserFatal( p_demux, VLC_FALSE, _("Playback failure"),
_("DVDRead could not read %d/%d blocks at 0x%02x."),
i_read, i_blocks_once, p_sys->i_cur_block );
return -1;
p_sys->dsi_pack.dsi_gi.vobu_c_idn,
dvdtime_to_time( &p_sys->dsi_pack.dsi_gi.c_eltm, 0 ) );
- msg_Dbg( p_demux, "cell duration: %lld",
+ msg_Dbg( p_demux, "cell duration: %lld",
(mtime_t)dvdtime_to_time( &p_sys->p_cur_pgc->cell_playback[p_sys->i_cur_cell].playback_time, 0 ) );
msg_Dbg( p_demux, "cat 0x%02x ilvu_ea %d ilvu_sa %d size %d",
typedef struct
{
VLC_COMMON_MEMBERS
-
+
vlc_mutex_t lock;
vlc_cond_t wait;
-
+
CFMessagePortRef inputMessagePortFromEyeTV;
} eyetv_thread_t;
access_sys_t *p_sys;
eyetv_thread_t *p_thread;
CFMessagePortContext context;
- memset(&context, 0, sizeof(context));
-
+ memset(&context, 0, sizeof(context));
+
/* Init p_access */
access_InitFields( p_access ); \
ACCESS_SET_CALLBACKS( Read, NULL, Control, NULL ); \
vlc_mutex_init( p_access, &p_thread->lock );
vlc_cond_init( p_access, &p_thread->wait );
msg_Dbg( p_access, "thread created, msg port following now" );
-
+
/* set up our own msg port
* we may give the msgport such a generic name, because EyeTV may only run
* once per entire machine, so we can't interfere with other instances.
- * we just trust the user no to launch multiple VLC instances trying to
+ * we just trust the user no to launch multiple VLC instances trying to
* access EyeTV at the same time. If this happens, the latest launched
* instance will win. */
p_sys->p_thread->inputMessagePortFromEyeTV = CFMessagePortCreateLocal( kCFAllocatorDefault,
}
else
msg_Dbg( p_access, "remote msg port opened" );
-
+
/* let the thread run */
if( vlc_thread_create( p_thread, "EyeTV Receiver Thread", Thread,
VLC_THREAD_PRIORITY_HIGHEST, VLC_FALSE ) )
}
msg_Dbg( p_access, "receiver thread created and launched" );
-
+
/* tell the EyeTV plugin to open up its msg port and start sending */
CFNotificationCenterPostNotification( CFNotificationCenterGetDistributedCenter (),
- CFSTR("VLCAccessStartDataSending"),
- CFSTR("VLCEyeTVSupport"),
- /*userInfo*/ NULL,
+ CFSTR("VLCAccessStartDataSending"),
+ CFSTR("VLCEyeTVSupport"),
+ /*userInfo*/ NULL,
TRUE );
-
+
msg_Dbg( p_access, "plugin notified" );
-
+
/* we don't need such a high priority */
//vlc_thread_set_priority( p_access, VLC_THREAD_PRIORITY_LOW );
-
+
return VLC_SUCCESS;
}
{
access_t *p_access = (access_t *)p_this;
access_sys_t *p_sys = p_access->p_sys;
-
+
msg_Dbg( p_access, "closing" );
-
+
/* tell the EyeTV plugin to close its msg port and stop sending */
CFNotificationCenterPostNotification( CFNotificationCenterGetDistributedCenter (),
- CFSTR("VLCAccessStopDataSending"),
- CFSTR("VLCEyeTVSupport"),
- /*userInfo*/ NULL,
+ CFSTR("VLCAccessStopDataSending"),
+ CFSTR("VLCEyeTVSupport"),
+ /*userInfo*/ NULL,
TRUE );
-
+
msg_Dbg( p_access, "plugin notified" );
-
+
/* stop receiver thread */
vlc_object_kill( p_sys->p_thread );
vlc_mutex_lock( &p_sys->p_thread->lock );
vlc_cond_signal( &p_sys->p_thread->wait );
vlc_mutex_unlock( &p_sys->p_thread->lock );
vlc_thread_join( p_sys->p_thread );
-
+
/* close msg port */
CFMessagePortInvalidate( p_sys->p_thread->inputMessagePortFromEyeTV );
free( p_sys->p_thread->inputMessagePortFromEyeTV );
msg_Dbg( p_access, "msg port closed and freed" );
-
+
/* free thread */
vlc_mutex_destroy( &p_sys->p_thread->lock );
vlc_cond_destroy( &p_sys->p_thread->wait );
vlc_object_detach( p_sys->p_thread );
vlc_object_destroy( p_sys->p_thread );
-
+
free( p_sys );
}
{
eyetv_thread_t *p_thread= (eyetv_thread_t*)p_this;
CFRunLoopSourceRef runLoopSource;
-
+
/* create our run loop source for the port and attach it to our current loop */
runLoopSource = CFMessagePortCreateRunLoopSource( kCFAllocatorDefault,
p_thread->inputMessagePortFromEyeTV,
CFRunLoopAddSource( CFRunLoopGetCurrent(),
runLoopSource,
kCFRunLoopDefaultMode );
-
+
CFRunLoopRun();
}
{
extern CFDataRef dataFromEyetv;
extern int lastPacketId;
-
+
/* copy callback data to module data */
dataFromEyetv = CFDataCreateCopy( kCFAllocatorDefault, data );
#if 0
#endif
lastPacketId = msgid;
-
+
return NULL; /* we've got nothing to return */
}
extern CFDataRef dataFromEyetv;
extern int lastPacketId;
extern int lastForwardedPacketId;
-
+
/* wait for a new buffer before forwarding */
while( lastPacketId == lastForwardedPacketId && !p_access->b_die )
{
msleep( INPUT_ERROR_SLEEP );
}
-
+
/* read data here, copy it to p_buffer, fill i_len with respective length
* and return info with i_read; i_read = 0 == EOF */
if( dataFromEyetv )
return 0;
}
}
-
+
if( p_access->b_die )
return 0;
-
+
return i_len;
}
vlc_bool_t *pb_bool;
int *pi_int;
int64_t *pi_64;
-
+
switch( i_query )
{
* *
case ACCESS_CAN_PAUSE:
case ACCESS_CAN_CONTROL_PACE:
case ACCESS_GET_MTU:
- case ACCESS_GET_PTS_DELAY:
+ case ACCESS_GET_PTS_DELAY:
case ACCESS_GET_TITLE_INFO:
case ACCESS_SET_TITLE:
case ACCESS_SET_SEEKPOINT:
case ACCESS_SET_PRIVATE_ID_STATE:
return VLC_EGENERIC;
-
+
default:
msg_Warn( p_access, "unimplemented query in control" );
return VLC_EGENERIC;
-
+
}
return VLC_SUCCESS;*/
return VLC_EGENERIC;
if ( !p_sys->fd )
{
msg_Err( p_access, "cannot open file %s", psz_name );
- intf_UserFatal( p_access, VLC_FALSE, _("File reading failed"),
+ intf_UserFatal( p_access, VLC_FALSE, _("File reading failed"),
_("VLC could not open file \"%s\"."), psz_name );
free (path);
return VLC_EGENERIC;
{
msg_Err (p_access, "cannot open file %s (%s)", psz_name,
strerror (errno));
- intf_UserFatal (p_access, VLC_FALSE, _("File reading failed"),
+ intf_UserFatal (p_access, VLC_FALSE, _("File reading failed"),
_("VLC could not open file \"%s\" (%s)."),
psz_name, strerror (errno));
return -1;
if( fd == -1 )
{
msg_Err( p_access, "connection failed" );
- intf_UserFatal( p_access, VLC_FALSE, _("Network interaction failed"),
+ intf_UserFatal( p_access, VLC_FALSE, _("Network interaction failed"),
_("VLC could not connect with the given server.") );
return -1;
}
if( i_answer / 100 != 2 )
{
msg_Err( p_access, "connection rejected" );
- intf_UserFatal( p_access, VLC_FALSE, _("Network interaction failed"),
+ intf_UserFatal( p_access, VLC_FALSE, _("Network interaction failed"),
_("VLC's connection to the given server was rejected.") );
return -1;
}
if( i_answer / 100 != 2 )
{
msg_Err( p_access, "account rejected" );
- intf_UserFatal( p_access, VLC_FALSE,
- _("Network interaction failed"),
+ intf_UserFatal( p_access, VLC_FALSE,
+ _("Network interaction failed"),
_("Your account was rejected.") );
return -1;
}
default:
msg_Err( p_access, "password rejected" );
- intf_UserFatal( p_access, VLC_FALSE,
- _("Network interaction failed"),
+ intf_UserFatal( p_access, VLC_FALSE,
+ _("Network interaction failed"),
_("Your password was rejected.") );
return -1;
}
break;
default:
msg_Err( p_access, "user rejected" );
- intf_UserFatal( p_access, VLC_FALSE,
- _("Network interaction failed"),
+ intf_UserFatal( p_access, VLC_FALSE,
+ _("Network interaction failed"),
_("Your connection attempt to the server was rejected.") );
return -1;
}
{
int i_input_ports;
int j;
-
- if( p_sys->i_match_ports > 0 )
+
+ if( p_sys->i_match_ports > 0 )
{
for( j = 0; j < p_sys->i_match_ports; j++ )
{
jack_port_name( p_sys->pp_jack_port_input[i_input_ports] ) );
}
}
- if( pp_jack_port_output ) free( pp_jack_port_output );
+ if( pp_jack_port_output ) free( pp_jack_port_output );
}
/* info about jack server */
demux_sys_t *p_sys = p_demux->p_sys;
unsigned int i, j;
size_t i_write;
-
+
/* Get and interlace buffers */
for ( i = 0; i < p_sys->i_channels ; i++ )
{
{
for( i = 0; i <p_sys->i_channels; i++ )
{
- if( jack_ringbuffer_write_space( p_sys->p_jack_ringbuffer ) <
+ if( jack_ringbuffer_write_space( p_sys->p_jack_ringbuffer ) <
p_sys->jack_sample_size ) {
msg_Err( p_demux, "buffer overflow");
return 0; // buffer overflow
}
- i_write = jack_ringbuffer_write( p_sys->p_jack_ringbuffer,
- ( char * ) (p_sys->pp_jack_buffer[i]+j),
+ i_write = jack_ringbuffer_write( p_sys->p_jack_ringbuffer,
+ ( char * ) (p_sys->pp_jack_buffer[i]+j),
p_sys->jack_sample_size );
if (i_write != p_sys->jack_sample_size ) {
msg_Warn( p_demux, "error writing on ring buffer");
msg_Warn( p_demux, "cannot get block" );
return 0;
}
-
+
//Find the previous power of 2, this algo assumes size_t has the same size on all arch
i_read >>= 1;
i_read--;
i_read |= i_read >> 8;
i_read |= i_read >> 16;
i_read++;
-
+
i_read = jack_ringbuffer_read( p_sys->p_jack_ringbuffer, ( char * ) p_block->p_buffer, i_read );
-
+
p_block->i_dts = p_block->i_pts = date_Increment( &p_sys->pts,
i_read/(p_sys->i_channels * p_sys->jack_sample_size) );
p_sys->p_block_audio = p_block;
p_block->i_buffer = i_read;
p_sys->p_block_audio = 0;
-
+
return p_block;
}
/*****************************************************************************
- * Port_finder: compare ports with the regexp entered
+ * Port_finder: compare ports with the regexp entered
*****************************************************************************/
static void Port_finder( demux_t *p_demux )
{
/*****************************************************************************
- * Macro/Function to create/manipulate buffer
+ * Macro/Function to create/manipulate buffer
*****************************************************************************/
int var_buffer_initwrite( var_buffer_t *p_buf, int i_default_size );
int var_buffer_reinitwrite( var_buffer_t *p_buf, int i_default_size );
if( p_sys->fd < 0 )
{
msg_Err( p_access, "cannot connect to %s:%d", psz_server, i_port );
- intf_UserFatal( p_access, VLC_FALSE, _("Connection failed"),
+ intf_UserFatal( p_access, VLC_FALSE, _("Connection failed"),
_("VLC could not connect to \"%s:%d\"."), psz_server, i_port );
return VLC_EGENERIC;
}
int i_result;
if( !p_access->psz_access || (
- strncmp( p_access->psz_access, "rtsp", 4 ) &&
+ strncmp( p_access->psz_access, "rtsp", 4 ) &&
strncmp( p_access->psz_access, "pnm", 3 ) &&
strncmp( p_access->psz_access, "realrtsp", 8 ) ))
{
msg_Err( p_access, "rtsp session can not be established" );
- intf_UserFatal( p_access, VLC_FALSE, _("Session failed"),
+ intf_UserFatal( p_access, VLC_FALSE, _("Session failed"),
_("The requested RTSP session could not be established.") );
goto error;
}
b = ((b << 0x17) | (b >> 0x09)) + c;
a = ((~d | b) ^ c) + LE_32((param+0x00)) + a - 0x0BD6DDBC;
- a = ((a << 0x06) | (a >> 0x1a)) + b;
+ a = ((a << 0x06) | (a >> 0x1a)) + b;
d = ((~c | a) ^ b) + LE_32((param+0x1c)) + d + 0x432AFF97;
- d = ((d << 0x0a) | (d >> 0x16)) + a;
+ d = ((d << 0x0a) | (d >> 0x16)) + a;
c = ((~b | d) ^ a) + LE_32((param+0x38)) + c - 0x546BDC59;
- c = ((c << 0x0f) | (c >> 0x11)) + d;
+ c = ((c << 0x0f) | (c >> 0x11)) + d;
b = ((~a | c) ^ d) + LE_32((param+0x14)) + b - 0x036C5FC7;
- b = ((b << 0x15) | (b >> 0x0b)) + c;
+ b = ((b << 0x15) | (b >> 0x0b)) + c;
a = ((~d | b) ^ c) + LE_32((param+0x30)) + a + 0x655B59C3;
- a = ((a << 0x06) | (a >> 0x1a)) + b;
+ a = ((a << 0x06) | (a >> 0x1a)) + b;
d = ((~c | a) ^ b) + LE_32((param+0x0C)) + d - 0x70F3336E;
- d = ((d << 0x0a) | (d >> 0x16)) + a;
+ d = ((d << 0x0a) | (d >> 0x16)) + a;
c = ((~b | d) ^ a) + LE_32((param+0x28)) + c - 0x00100B83;
- c = ((c << 0x0f) | (c >> 0x11)) + d;
+ c = ((c << 0x0f) | (c >> 0x11)) + d;
b = ((~a | c) ^ d) + LE_32((param+0x04)) + b - 0x7A7BA22F;
- b = ((b << 0x15) | (b >> 0x0b)) + c;
+ b = ((b << 0x15) | (b >> 0x0b)) + c;
a = ((~d | b) ^ c) + LE_32((param+0x20)) + a + 0x6FA87E4F;
- a = ((a << 0x06) | (a >> 0x1a)) + b;
+ a = ((a << 0x06) | (a >> 0x1a)) + b;
d = ((~c | a) ^ b) + LE_32((param+0x3c)) + d - 0x01D31920;
- d = ((d << 0x0a) | (d >> 0x16)) + a;
+ d = ((d << 0x0a) | (d >> 0x16)) + a;
c = ((~b | d) ^ a) + LE_32((param+0x18)) + c - 0x5CFEBCEC;
- c = ((c << 0x0f) | (c >> 0x11)) + d;
+ c = ((c << 0x0f) | (c >> 0x11)) + d;
b = ((~a | c) ^ d) + LE_32((param+0x34)) + b + 0x4E0811A1;
- b = ((b << 0x15) | (b >> 0x0b)) + c;
+ b = ((b << 0x15) | (b >> 0x0b)) + c;
a = ((~d | b) ^ c) + LE_32((param+0x10)) + a - 0x08AC817E;
- a = ((a << 0x06) | (a >> 0x1a)) + b;
+ a = ((a << 0x06) | (a >> 0x1a)) + b;
d = ((~c | a) ^ b) + LE_32((param+0x2c)) + d - 0x42C50DCB;
- d = ((d << 0x0a) | (d >> 0x16)) + a;
+ d = ((d << 0x0a) | (d >> 0x16)) + a;
c = ((~b | d) ^ a) + LE_32((param+0x08)) + c + 0x2AD7D2BB;
- c = ((c << 0x0f) | (c >> 0x11)) + d;
+ c = ((c << 0x0f) | (c >> 0x11)) + d;
b = ((~a | c) ^ d) + LE_32((param+0x24)) + b - 0x14792C6F;
- b = ((b << 0x15) | (b >> 0x0b)) + c;
+ b = ((b << 0x15) | (b >> 0x0b)) + c;
lprintf("hash output: %x %x %x %x\n", a, b, c, d);
* Copyright (C) 2002-2004 the xine project
*
* This file is part of xine, a free video player.
- *
+ *
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
int sym;
int num;
-
+
char str[ASMRP_MAX_ID];
/* private part */
int i;
- for (i=0; i<p->sym_tab_num; i++)
+ for (i=0; i<p->sym_tab_num; i++)
free (p->sym_tab[i].id);
if (p->buf) free (p->buf);
p->buf = strdup (str);
p->pos = 0;
-
+
asmrp_getch (p);
}
asmrp_getch (p);
}
p->str[l]=0;
-
+
if (p->ch=='"')
asmrp_getch (p);
-
+
p->sym = ASMRP_SYM_STRING;
}
l = 0;
while ( ((p->ch>='A') && (p->ch<='z'))
- || ((p->ch>='0') && (p->ch<='9'))) {
+ || ((p->ch>='0') && (p->ch<='9'))) {
p->str[l] = p->ch;
asmrp_getch (p);
}
p->str[l]=0;
-
+
p->sym = ASMRP_SYM_ID;
}
lprintf ("new symbol '%s'\n", s);
- }
+ }
p->sym_tab[i].v = v;
static int asmrp_operand (asmrp_t *p) {
int i, ret;
-
+
lprintf ("operand\n");
ret = 0;
case ASMRP_SYM_DOLLAR:
asmrp_get_sym (p);
-
+
if (p->sym != ASMRP_SYM_ID) {
printf ("error: identifier expected.\n");
break;
}
lprintf ("operand done, =%d\n", ret);
-
+
return ret;
}
a = asmrp_operand (p);
while ( (p->sym == ASMRP_SYM_LESS)
- || (p->sym == ASMRP_SYM_LEQ)
- || (p->sym == ASMRP_SYM_EQUALS)
- || (p->sym == ASMRP_SYM_GEQ)
- || (p->sym == ASMRP_SYM_GREATER) ) {
+ || (p->sym == ASMRP_SYM_LEQ)
+ || (p->sym == ASMRP_SYM_EQUALS)
+ || (p->sym == ASMRP_SYM_GEQ)
+ || (p->sym == ASMRP_SYM_GREATER) ) {
int op = p->sym;
int b;
}
static int asmrp_condition (asmrp_t *p) {
-
+
int a;
lprintf ("condition\n");
lprintf ("empty assignment\n");
return;
}
-
+
if (p->sym != ASMRP_SYM_ID) {
printf ("error: identifier expected\n");
return;
}
asmrp_get_sym (p);
- if ( (p->sym != ASMRP_SYM_NUM) && (p->sym != ASMRP_SYM_STRING)
+ if ( (p->sym != ASMRP_SYM_NUM) && (p->sym != ASMRP_SYM_STRING)
&& (p->sym != ASMRP_SYM_ID)) {
printf ("error: number or string expected\n");
return;
}
static int asmrp_rule (asmrp_t *p) {
-
+
int ret;
lprintf ("rule\n");
ret = 1;
-
+
if (p->sym == ASMRP_SYM_HASH) {
asmrp_get_sym (p);
ret = asmrp_condition (p);
while (p->sym == ASMRP_SYM_COMMA) {
-
+
asmrp_get_sym (p);
-
+
asmrp_assignment (p);
}
{
if( strcmp( buf, rtsp->p_private->session ) )
{
- //fprintf( stderr,
+ //fprintf( stderr,
// "rtsp: warning: setting NEW session: %s\n", buf );
free( rtsp->p_private->session );
rtsp->p_private->session = strdup( buf );
colon = strchr( mrl_ptr, ':' );
if( !slash ) slash = mrl_ptr + strlen(mrl_ptr) + 1;
- if( !colon ) colon = slash;
+ if( !colon ) colon = slash;
if( colon > slash ) colon = slash;
pathbegin = slash - mrl_ptr;
}
/*
- * closes an rtsp connection
+ * closes an rtsp connection
*/
void rtsp_close( rtsp_client_t *rtsp )
}
/*
- * removes the first scheduled field which prefix matches string.
+ * removes the first scheduled field which prefix matches string.
*/
void rtsp_unschedule_field( rtsp_client_t *rtsp, const char *string )
if( CGDisplaySamplesPerPixel(p_data->displayID) != 3 )
{
msg_Err( p_demux, "screenformat not supported" );
- }
-
+ }
+
switch( CGDisplaySamplesPerPixel(p_data->displayID) * CGDisplayBitsPerSample(p_data->displayID) )
{
/* TODO figure out 256 colors (who uses it anyways) */
GetPenState(&p_data->oldState);
ForeColor(blackColor);
BackColor(whiteColor);
-
+
p_data->gMainDevice = GetMainDevice();
p_data->gDeviceState = HGetState((Handle)p_data->gMainDevice);
HLock((Handle)p_data->gMainDevice);
NewGWorld(&p_data->LocalBufferGW, (**p_data->gDevicePix).pixelSize, &(**p_data->gDevicePix).bounds, (**p_data->gDevicePix).pmTable, NULL, 0);
p_data->LocalBufferPix = GetGWorldPixMap(p_data->LocalBufferGW);
LockPixels(p_data->LocalBufferPix);
-
+
es_format_Init( &p_sys->fmt, VIDEO_ES, i_chroma );
p_sys->fmt.video.i_width = CGDisplayPixelsWide(p_data->displayID) + i_offset;
p_sys->fmt.video.i_visible_width = CGDisplayPixelsWide(p_data->displayID);
block_t *p_block;
int i_size;
- i_size = p_sys->fmt.video.i_height * p_sys->fmt.video.i_width * 32 / 8;
+ i_size = p_sys->fmt.video.i_height * p_sys->fmt.video.i_width * 32 / 8;
if( !( p_block = block_New( p_demux, i_size ) ) )
{
{
msg_Dbg( p_access, "connected to %s", psz_remote );
}
- else if( i_result != ERROR_ALREADY_ASSIGNED &&
+ else if( i_result != ERROR_ALREADY_ASSIGNED &&
i_result != ERROR_DEVICE_ALREADY_REMEMBERED )
{
msg_Dbg( p_access, "already connected to %s", psz_remote );
p_sys->p_end = p_block;
return VLC_TRUE;
}
- /* walk through the queue from top down since the new packet is in
+ /* walk through the queue from top down since the new packet is in
most cases just appended to the end */
for( ;; )
break;
p = BlockParseRTP( p_access, BlockUDP( p_access ) );
- if( !p && (i_date - i_first) > p_sys->i_rtp_late )
+ if( !p && (i_date - i_first) > p_sys->i_rtp_late )
{
msg_Err( p_access, "error in RTP prebuffering!" );
break;
}
else if( !strncmp( psz_parser, "hue=", strlen( "hue=" ) ) )
{
- p_sys->i_hue = strtol( psz_parser + strlen( "hue=" ),
+ p_sys->i_hue = strtol( psz_parser + strlen( "hue=" ),
&psz_parser, 0 );
}
else if( !strncmp( psz_parser, "contrast=", strlen( "contrast=" ) ) )
while( ioctl(p_sys->fd_video, VIDIOCSYNC, &p_sys->i_frame_pos) < 0 )
{
- if( errno != EAGAIN && errno != EINTR )
+ if( errno != EAGAIN && errno != EINTR )
{
msg_Err( p_demux, "failed syncing new frame" );
return NULL;
/* sync on the next frame */
while( ioctl( p_sys->fd_video, MJPIOC_SYNC, &sync ) < 0 )
{
- if( errno != EAGAIN && errno != EINTR )
+ if( errno != EAGAIN && errno != EINTR )
{
msg_Err( p_demux, "failed syncing new frame" );
return NULL;
p_sys->i_codec = i_index;
p_sys->p_codecs = malloc( p_sys->i_codec * sizeof( struct v4l2_fmtdesc ) );
- memset( p_sys->p_codecs, 0, p_sys->i_codec * sizeof( struct v4l2_fmtdesc ) );
+ memset( p_sys->p_codecs, 0, p_sys->i_codec * sizeof( struct v4l2_fmtdesc ) );
for( i_index = 0; i_index < p_sys->i_codec; i_index++ )
{
return VLC_SUCCESS;
open_failed:
-
+
if( i_fd >= 0 ) close( i_fd );
return VLC_EGENERIC;
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
-#ifdef HAVE_FCNTL_H
+#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
msg_Dbg( p_this,"using vcd image file: %s", psz_vcdfile );
p_vcddev->i_vcdimage_handle = utf8_open( psz_vcdfile,
O_RDONLY | O_NONBLOCK | O_BINARY, 0666 );
-
- if( p_vcddev->i_vcdimage_handle == -1 &&
+
+ if( p_vcddev->i_vcdimage_handle == -1 &&
fscanf( cuefile, "FILE %c", line ) &&
fgets( line, 1024, cuefile ) )
{
}
/* get service iterator for the device */
- if( ( ret = IOServiceGetMatchingServices(
+ if( ( ret = IOServiceGetMatchingServices(
port, IOBSDNameMatching( port, 0, psz_devname ),
&iterator ) ) != KERN_SUCCESS )
{
service = IOIteratorNext( iterator );
IOObjectRelease( iterator );
- /* search for kIOCDMediaClass */
+ /* search for kIOCDMediaClass */
while( service && !IOObjectConformsTo( service, kIOCDMediaClass ) )
{
- if( ( ret = IORegistryEntryGetParentIterator( service,
+ if( ( ret = IORegistryEntryGetParentIterator( service,
kIOServicePlane, &iterator ) ) != KERN_SUCCESS )
{
msg_Err( p_this, "IORegistryEntryGetParentIterator: 0x%08x", ret );
}
CFRelease( properties );
- IOObjectRelease( service );
+ IOObjectRelease( service );
- return( pTOC );
+ return( pTOC );
}
/****************************************************************************
- * darwin_getNumberOfTracks: get number of tracks in TOC
+ * darwin_getNumberOfTracks: get number of tracks in TOC
****************************************************************************/
static int darwin_getNumberOfTracks( CDTOC *pTOC, int i_descriptors )
{
u_char track;
- int i, i_tracks = 0;
+ int i, i_tracks = 0;
CDTOCDescriptor *pTrackDescriptors = NULL;
pTrackDescriptors = (CDTOCDescriptor *)pTOC->descriptors;
if( track > CD_MAX_TRACK_NO || track < CD_MIN_TRACK_NO )
continue;
- i_tracks++;
+ i_tracks++;
}
return( i_tracks );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*/
#if 1
msleep( MILLISECONDS_PER_SEC * *p_buf );
- VCDSetOrigin(p_access, p_vcdplayer->origin_lsn, p_vcdplayer->i_track,
- &(p_vcdplayer->play_item));
+ VCDSetOrigin(p_access, p_vcdplayer->origin_lsn, p_vcdplayer->i_track,
+ &(p_vcdplayer->play_item));
// p_vcd->in_still = VLC_FALSE;
dbg_print(INPUT_DBG_STILL, "still wait time done");
#else
{
const track_t i_track = p_vcdplayer->i_track;
- dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
- "entry change to %d, current LSN %u >= end %u",
- i_entry, p_vcdplayer->i_lsn, i_lsn);
+ dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
+ "entry change to %d, current LSN %u >= end %u",
+ i_entry, p_vcdplayer->i_lsn, i_lsn);
p_vcdplayer->play_item.num = i_entry;
/* Next sector to read */
p_access->info.i_pos = i_pos;
p_vcdplayer->i_lsn = (i_pos / (int64_t) M2F2_SECTOR_SIZE) +
- p_vcdplayer->origin_lsn;
+ p_vcdplayer->origin_lsn;
switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_TRACK:
dbg_print( (INPUT_DBG_CALL|INPUT_DBG_EXT|INPUT_DBG_SEEK),
"orig %lu, cur: %lu, offset: %lld, entry %d",
- (long unsigned int) p_vcdplayer->origin_lsn,
+ (long unsigned int) p_vcdplayer->origin_lsn,
(long unsigned int) p_vcdplayer->i_lsn, i_pos,
i_entry );
/* Find seekpoint */
for( i_seekpoint = 0; i_seekpoint < t->i_seekpoint; i_seekpoint++ )
- {
- if( i_seekpoint + 1 >= t->i_seekpoint ) break;
- if( i_pos < t->seekpoint[i_seekpoint + 1]->i_byte_offset ) break;
- }
-
+ {
+ if( i_seekpoint + 1 >= t->i_seekpoint ) break;
+ if( i_pos < t->seekpoint[i_seekpoint + 1]->i_byte_offset ) break;
+ }
+
/* Update current seekpoint */
if( i_seekpoint != p_access->info.i_seekpoint )
- {
- dbg_print( (INPUT_DBG_SEEK), "seekpoint change %lu",
- (long unsigned int) i_seekpoint );
- p_access->info.i_update |= INPUT_UPDATE_SEEKPOINT;
- p_access->info.i_seekpoint = i_seekpoint;
- }
+ {
+ dbg_print( (INPUT_DBG_SEEK), "seekpoint change %lu",
+ (long unsigned int) i_seekpoint );
+ p_access->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+ p_access->info.i_seekpoint = i_seekpoint;
+ }
}
p_access->info.b_eof = VLC_FALSE;
return VLC_SUCCESS;
-
+
}
/*****************************************************************************
VCDEntryPoints( access_t * p_access )
{
if (!p_access || !p_access->p_sys) return VLC_FALSE;
-
+
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
- const unsigned int i_entries =
+ const unsigned int i_entries =
vcdinfo_get_num_entries(p_vcdplayer->vcd);
- const track_t i_last_track
+ const track_t i_last_track
= cdio_get_num_tracks(vcdinfo_get_cd_image(p_vcdplayer->vcd))
+ cdio_get_first_track_num(vcdinfo_get_cd_image(p_vcdplayer->vcd));
unsigned int i;
-
+
if (0 == i_entries) {
LOG_ERR ("no entires found -- something is wrong" );
return VLC_FALSE;
}
-
+
p_vcdplayer->p_entries = malloc( sizeof( lsn_t ) * i_entries );
-
+
if( p_vcdplayer->p_entries == NULL )
{
- LOG_ERR ("not enough memory for entry points treatment" );
- return VLC_FALSE;
+ LOG_ERR ("not enough memory for entry points treatment" );
+ return VLC_FALSE;
}
-
+
p_vcdplayer->i_entries = i_entries;
-
+
for( i = 0 ; i < i_entries ; i++ )
{
- const track_t i_track = vcdinfo_get_track(p_vcdplayer->vcd, i);
- if( i_track <= i_last_track ) {
- seekpoint_t *s = vlc_seekpoint_New();
- char psz_entry[100];
-
- snprintf(psz_entry, sizeof(psz_entry), "%s %02d", _("Entry"), i );
-
- p_vcdplayer->p_entries[i] = vcdinfo_get_entry_lsn(p_vcdplayer->vcd, i);
-
- s->psz_name = strdup(psz_entry);
- s->i_byte_offset =
- (p_vcdplayer->p_entries[i] - vcdinfo_get_track_lsn(p_vcdplayer->vcd, i_track))
- * M2F2_SECTOR_SIZE;
-
- dbg_print( INPUT_DBG_MRL,
- "%s, lsn %d, byte_offset %ld",
- s->psz_name, p_vcdplayer->p_entries[i],
- (unsigned long int) s->i_byte_offset);
+ const track_t i_track = vcdinfo_get_track(p_vcdplayer->vcd, i);
+ if( i_track <= i_last_track ) {
+ seekpoint_t *s = vlc_seekpoint_New();
+ char psz_entry[100];
+
+ snprintf(psz_entry, sizeof(psz_entry), "%s %02d", _("Entry"), i );
+
+ p_vcdplayer->p_entries[i] = vcdinfo_get_entry_lsn(p_vcdplayer->vcd, i);
+
+ s->psz_name = strdup(psz_entry);
+ s->i_byte_offset =
+ (p_vcdplayer->p_entries[i] - vcdinfo_get_track_lsn(p_vcdplayer->vcd, i_track))
+ * M2F2_SECTOR_SIZE;
+
+ dbg_print( INPUT_DBG_MRL,
+ "%s, lsn %d, byte_offset %ld",
+ s->psz_name, p_vcdplayer->p_entries[i],
+ (unsigned long int) s->i_byte_offset);
TAB_APPEND( p_vcdplayer->p_title[i_track-1]->i_seekpoint,
p_vcdplayer->p_title[i_track-1]->seekpoint, s );
Build title table which will be returned via ACCESS_GET_TITLE_INFO.
We start area addressing for tracks at 1 since the default area 0
- is reserved for segments.
+ is reserved for segments.
*****************************************************************************/
static int
VCDTitles( access_t * p_access )
very careful about this. Note: cdio_get_first_track() will give the
ISO-9660 track before the MPEG tracks.
*/
-
+
if (!p_access || !p_access->p_sys) return VLC_EGENERIC;
{
snprintf( psz_track, sizeof(psz_track), "%s %02d", _("Track"),
i );
- t->i_size = (int64_t) vcdinfo_get_track_size( p_vcdplayer->vcd,
- i )
- * M2F2_SECTOR_SIZE / CDIO_CD_FRAMESIZE ;
+ t->i_size = (int64_t) vcdinfo_get_track_size( p_vcdplayer->vcd,
+ i )
+ * M2F2_SECTOR_SIZE / CDIO_CD_FRAMESIZE ;
t->psz_name = strdup(psz_track);
- dbg_print( INPUT_DBG_MRL, "track[%d] i_size: %lld", i, t->i_size );
+ dbg_print( INPUT_DBG_MRL, "track[%d] i_size: %lld", i, t->i_size );
p_vcdplayer->i_titles++;
}
VCDUpdateVar( p_access, p_itemid->num, VLC_VAR_SETVALUE,
"chapter", _("Entry"), "Setting entry/segment");
p_access->info.i_title = i_track-1;
- if (p_vcdplayer->b_track_length)
+ if (p_vcdplayer->b_track_length)
{
- p_access->info.i_size = p_vcdplayer->p_title[i_track-1]->i_size;
- p_access->info.i_pos = (int64_t) M2F2_SECTOR_SIZE *
- (vcdinfo_get_track_lsn(p_vcdplayer->vcd, i_track) - i_lsn) ;
+ p_access->info.i_size = p_vcdplayer->p_title[i_track-1]->i_size;
+ p_access->info.i_pos = (int64_t) M2F2_SECTOR_SIZE *
+ (vcdinfo_get_track_lsn(p_vcdplayer->vcd, i_track) - i_lsn) ;
} else {
- p_access->info.i_size = M2F2_SECTOR_SIZE * (int64_t)
- vcdinfo_get_entry_sect_count(p_vcdplayer->vcd, p_itemid->num);
- p_access->info.i_pos = 0;
+ p_access->info.i_size = M2F2_SECTOR_SIZE * (int64_t)
+ vcdinfo_get_entry_sect_count(p_vcdplayer->vcd, p_itemid->num);
+ p_access->info.i_pos = 0;
}
- dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC), "size: %llu, pos: %llu",
- p_access->info.i_size, p_access->info.i_pos );
+ dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC), "size: %llu, pos: %llu",
+ p_access->info.i_size, p_access->info.i_pos );
p_access->info.i_seekpoint = p_itemid->num;
break;
vlc_bool_t play_single_item = VLC_FALSE;
p_access->pf_read = NULL;
- p_access->pf_block = VCDReadBlock;
+ p_access->pf_block = VCDReadBlock;
p_access->pf_control = VCDControl;
p_access->pf_seek = VCDSeek;
{
unsigned int i;
for (i=0 ; i<p_vcdplayer->i_titles; i++)
- if (p_vcdplayer->p_title[i])
- free(p_vcdplayer->p_title[i]->psz_name);
+ if (p_vcdplayer->p_title[i])
+ free(p_vcdplayer->p_title[i]->psz_name);
}
-
+
vcdinfo_close( p_vcdplayer->vcd );
if( p_vcdplayer->p_input ) vlc_object_release( p_vcdplayer->p_input );
unsigned int i_entry =
vcdinfo_track_get_entry( p_vcdplayer->vcd, i_track);
- if( i < p_vcdplayer->i_tracks )
- {
- /* FIXME! For now we are assuming titles are only
- tracks and that track == title+1 */
- itemid.num = i_track;
- itemid.type = VCDINFO_ITEM_TYPE_TRACK;
- }
- else
- {
- /* FIXME! i_tracks+2 are Segments, but we need to
- be able to figure out which segment of that.
- i_tracks+1 is either Segments (if no LIDs) or
- LIDs otherwise. Again need a way to get the LID
- number. */
- msg_Warn( p_access,
+ if( i < p_vcdplayer->i_tracks )
+ {
+ /* FIXME! For now we are assuming titles are only
+ tracks and that track == title+1 */
+ itemid.num = i_track;
+ itemid.type = VCDINFO_ITEM_TYPE_TRACK;
+ }
+ else
+ {
+ /* FIXME! i_tracks+2 are Segments, but we need to
+ be able to figure out which segment of that.
+ i_tracks+1 is either Segments (if no LIDs) or
+ LIDs otherwise. Again need a way to get the LID
+ number. */
+ msg_Warn( p_access,
"Trying to set track (%u) beyond end of last track (%u).",
- i+1, p_vcdplayer->i_tracks );
- return VLC_EGENERIC;
- }
-
+ i+1, p_vcdplayer->i_tracks );
+ return VLC_EGENERIC;
+ }
+
VCDSetOrigin(p_access,
vcdinfo_get_entry_lsn(p_vcdplayer->vcd, i_entry),
i_track, &itemid );
demux_sys_t * p_demux;
printf("++++ VCDInit CALLED\n");
-
+
if( p_input->stream.i_method != INPUT_METHOD_VCD )
{
if ( psz ) {
dbg_print( INPUT_DBG_META, "cat %s, field: %s: %s", psz_cat, title, psz);
input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title, "%s",
- psz);
+ psz);
}
}
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
dbg_print( INPUT_DBG_META, "cat %s, field %s: %d", psz_cat, title, num);
- input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
- "%d", num );
+ input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
+ "%d", num );
}
static inline void
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
dbg_print( INPUT_DBG_META, "cat %s, field %s: %d", psz_cat, title, hex);
- input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
- "%x", hex );
+ input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
+ "%x", hex );
}
#define addstr(title, str) \
#define addhex(title, hex) \
MetaInfoAddHex( p_access, psz_cat, title, hex );
-void
+void
VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
#define TITLE_MAX 30
for( i_track = 1 ; i_track < p_vcdplayer->i_tracks ; i_track++ ) {
char psz_cat[20];
- unsigned int audio_type = vcdinfo_get_track_audio_type(p_vcdplayer->vcd,
- i_track);
+ unsigned int audio_type = vcdinfo_get_track_audio_type(p_vcdplayer->vcd,
+ i_track);
uint32_t i_secsize = vcdinfo_get_track_sect_count(p_vcdplayer->vcd, i_track);
snprintf(psz_cat, sizeof(psz_cat), "Track %d", i_track);
if (p_vcdplayer->b_svd) {
- addnum(_("Audio Channels"),
- vcdinfo_audio_type_num_channels(p_vcdplayer->vcd, audio_type) );
+ addnum(_("Audio Channels"),
+ vcdinfo_audio_type_num_channels(p_vcdplayer->vcd, audio_type) );
}
addnum(_("First Entry Point"), last_entry );
- for ( ; last_entry < i_entries
- && vcdinfo_get_track(p_vcdplayer->vcd, last_entry) == i_track;
- last_entry++ ) ;
+ for ( ; last_entry < i_entries
+ && vcdinfo_get_track(p_vcdplayer->vcd, last_entry) == i_track;
+ last_entry++ ) ;
addnum(_("Last Entry Point"), last_entry-1 );
addnum(_("Track size (in sectors)"), i_secsize );
}
-
+
{
lid_t i_lid;
for( i_lid = 1 ; i_lid <= p_vcdplayer->i_lids ; i_lid++ ) {
char psz_cat[20];
snprintf(psz_cat, sizeof(psz_cat), "LID %d", i_lid);
if (vcdinfo_lid_get_pxd(p_vcdplayer->vcd, &pxd, i_lid)) {
- switch (pxd.descriptor_type) {
- case PSD_TYPE_END_LIST:
- addstr(_("type"), _("end"));
- break;
- case PSD_TYPE_PLAY_LIST:
- addstr(_("type"), _("play list"));
- addnum("items", vcdinf_pld_get_noi(pxd.pld));
- addhex("next", vcdinf_pld_get_next_offset(pxd.pld));
- addhex("previous", vcdinf_pld_get_prev_offset(pxd.pld));
- addhex("return", vcdinf_pld_get_return_offset(pxd.pld));
- addnum("wait time", vcdinf_get_wait_time(pxd.pld));
- break;
- case PSD_TYPE_SELECTION_LIST:
- case PSD_TYPE_EXT_SELECTION_LIST:
- addstr(_("type"),
- PSD_TYPE_SELECTION_LIST == pxd.descriptor_type
- ? _("extended selection list")
- : _("selection list")
- );
- addhex("default", vcdinf_psd_get_default_offset(pxd.psd));
- addhex("loop count", vcdinf_get_loop_count(pxd.psd));
- addhex("next", vcdinf_psd_get_next_offset(pxd.psd));
- addhex("previous", vcdinf_psd_get_prev_offset(pxd.psd));
- addhex("return", vcdinf_psd_get_return_offset(pxd.psd));
- addhex("rejected", vcdinf_psd_get_lid_rejected(pxd.psd));
- addhex("time-out offset", vcdinf_get_timeout_offset(pxd.psd));
- addnum("time-out time", vcdinf_get_timeout_time(pxd.psd));
- break;
- default:
- addstr(_("type"), _("unknown type"));
- break;
- }
+ switch (pxd.descriptor_type) {
+ case PSD_TYPE_END_LIST:
+ addstr(_("type"), _("end"));
+ break;
+ case PSD_TYPE_PLAY_LIST:
+ addstr(_("type"), _("play list"));
+ addnum("items", vcdinf_pld_get_noi(pxd.pld));
+ addhex("next", vcdinf_pld_get_next_offset(pxd.pld));
+ addhex("previous", vcdinf_pld_get_prev_offset(pxd.pld));
+ addhex("return", vcdinf_pld_get_return_offset(pxd.pld));
+ addnum("wait time", vcdinf_get_wait_time(pxd.pld));
+ break;
+ case PSD_TYPE_SELECTION_LIST:
+ case PSD_TYPE_EXT_SELECTION_LIST:
+ addstr(_("type"),
+ PSD_TYPE_SELECTION_LIST == pxd.descriptor_type
+ ? _("extended selection list")
+ : _("selection list")
+ );
+ addhex("default", vcdinf_psd_get_default_offset(pxd.psd));
+ addhex("loop count", vcdinf_get_loop_count(pxd.psd));
+ addhex("next", vcdinf_psd_get_next_offset(pxd.psd));
+ addhex("previous", vcdinf_psd_get_prev_offset(pxd.psd));
+ addhex("return", vcdinf_psd_get_return_offset(pxd.psd));
+ addhex("rejected", vcdinf_psd_get_lid_rejected(pxd.psd));
+ addhex("time-out offset", vcdinf_get_timeout_offset(pxd.psd));
+ addnum("time-out time", vcdinf_get_timeout_time(pxd.psd));
+ break;
+ default:
+ addstr(_("type"), _("unknown type"));
+ break;
+ }
}
}
}
if ( CDIO_INVALID_TRACK != i_track )
- {
- char *psz_name =
+ {
+ char *psz_name =
VCDFormatStr( p_access, p_vcdplayer,
- config_GetPsz( p_access, MODULE_STRING "-title-format" ),
- psz_mrl, &(p_vcdplayer->play_item) );
-
+ config_GetPsz( p_access, MODULE_STRING "-title-format" ),
+ psz_mrl, &(p_vcdplayer->play_item) );
+
input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
}
}
-#define add_format_str_info(val) \
- { \
- const char *str = strdup(val); \
- unsigned int len; \
- if (val != NULL) { \
- len=strlen(str); \
- if (len != 0) { \
- strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
- tp += len; \
+#define add_format_str_info(val) \
+ { \
+ const char *str = strdup(val); \
+ unsigned int len; \
+ if (val != NULL) { \
+ len=strlen(str); \
+ if (len != 0) { \
+ strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
+ tp += len; \
} \
- saw_control_prefix = VLC_FALSE; \
- } \
+ saw_control_prefix = VLC_FALSE; \
+ } \
}
-#define add_format_num_info( val, fmt ) \
- { \
- char num_str[10]; \
- unsigned int len; \
+#define add_format_num_info( val, fmt ) \
+ { \
+ char num_str[10]; \
+ unsigned int len; \
sprintf(num_str, fmt, val); \
- len = strlen(num_str); \
+ len = strlen(num_str); \
if( len != 0 ) \
- { \
+ { \
strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str)); \
- tp += len; \
- } \
+ tp += len; \
+ } \
saw_control_prefix = VLC_FALSE; \
}
void
VCDUpdateTitle( access_t *p_access )
-{
+{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
- unsigned int psz_mrl_max = strlen(VCD_MRL_PREFIX)
+ unsigned int psz_mrl_max = strlen(VCD_MRL_PREFIX)
+ strlen(p_vcdplayer->psz_source) + sizeof("@E999")+3;
char *psz_mrl = malloc( psz_mrl_max );
- if( psz_mrl )
+ if( psz_mrl )
{
char *psz_name;
- snprintf(psz_mrl, psz_mrl_max, "%s%s",
- VCD_MRL_PREFIX, p_vcdplayer->psz_source);
- psz_name = VCDFormatStr( p_access, p_vcdplayer,
- config_GetPsz( p_access, MODULE_STRING
- "-title-format" ),
- psz_mrl, &(p_vcdplayer->play_item) );
- input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
- free(psz_mrl);
+ snprintf(psz_mrl, psz_mrl_max, "%s%s",
+ VCD_MRL_PREFIX, p_vcdplayer->psz_source);
+ psz_name = VCDFormatStr( p_access, p_vcdplayer,
+ config_GetPsz( p_access, MODULE_STRING
+ "-title-format" ),
+ psz_mrl, &(p_vcdplayer->play_item) );
+ input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
+ free(psz_mrl);
}
}
#include "vcdplayer.h"
/*
- Sets VCD meta information and navigation/playlist entries.
+ Sets VCD meta information and navigation/playlist entries.
*/
void VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl );
char * VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
- const char format_str[], const char *mrl,
- const vcdinfo_itemid_t *itemid);
+ const char format_str[], const char *mrl,
+ const vcdinfo_itemid_t *itemid);
void VCDUpdateTitle( access_t *p_access );
/*****************************************************************************
* RunIntf: main loop
*****************************************************************************/
-static void
+static void
RunIntf( intf_thread_t *p_intf )
{
vlc_object_t * p_vout = NULL;
{
msleep( INTF_IDLE_SLEEP );
}
-
+
p_vcdplayer = p_intf->p_sys->p_vcdplayer;
p_access = p_vcdplayer->p_access;
dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_ACTIVATE" );
- if ( vcdplayer_pbc_is_on( p_vcdplayer )
- && number_addend != 0 ) {
+ if ( vcdplayer_pbc_is_on( p_vcdplayer )
+ && number_addend != 0 ) {
lid_t next_num=vcdinfo_selection_get_lid(p_vcdplayer->vcd,
p_vcdplayer->i_lid,
number_addend);
{
p_intf->p_sys->b_infinite_still = VLC_TRUE;
}
- else
+ else
{
p_intf->p_sys->m_still_time = MILLISECONDS_PER_SEC * i_sec;
}
vlc_bool_t b_infinite_still; /* True if still wait time is infinite */
mtime_t m_still_time; /* Time in microseconds remaining
to wait in still frame.
- */
+ */
#if FINISHED
vcdplay_ctrl_t control;
#else
void *p_data );
int E_(BlocksPerReadCallback) ( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+ vlc_value_t oldval, vlc_value_t val,
+ void *p_data );
/*****************************************************************************
* Option help text
N_("If nonzero, this gives additional debug information."),
DEBUG_LONGTEXT, VLC_TRUE );
- add_integer ( MODULE_STRING "-blocks-per-read", 20,
- NULL,
+ add_integer ( MODULE_STRING "-blocks-per-read", 20,
+ NULL,
N_("Number of CD blocks to get in a single read."),
N_("Number of CD blocks to get in a single read."),
- VLC_TRUE );
+ VLC_TRUE );
add_bool( MODULE_STRING "-PBC", 0, NULL,
N_("Use playback control?"),
"Otherwise we play by tracks."),
VLC_FALSE );
- add_bool( MODULE_STRING "-track-length", VLC_TRUE,
- NULL,
+ add_bool( MODULE_STRING "-track-length", VLC_TRUE,
+ NULL,
N_("Use track length as maximum unit in seek?"),
N_("If set, the length of the seek bar is the track rather than "
- "the length of an entry."),
+ "the length of an entry."),
VLC_FALSE );
add_bool( MODULE_STRING "-extended-info", 0, NULL,
* Copyright (C) 2003, 2004 the VideoLAN team
* $Id$
*
- * Authors: Rocky Bernstein <rocky@panix.com>
+ * Authors: Rocky Bernstein <rocky@panix.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#if FINISHED
vcdplay_event_t event;
- vcdplay_ctrl_t control;
+ vcdplay_ctrl_t control;
vcdplay_highlight_t hli;
#endif
#include <libvcd/info.h>
extern void VCDSetOrigin ( access_t *p_access, lsn_t i_lsn, track_t i_track,
- const vcdinfo_itemid_t * p_itemid );
+ const vcdinfo_itemid_t * p_itemid );
/*!
Return true if playback control (PBC) is on
*/
-bool
-vcdplayer_pbc_is_on( const vcdplayer_t *p_vcdplayer )
+bool
+vcdplayer_pbc_is_on( const vcdplayer_t *p_vcdplayer )
{
- return VCDINFO_INVALID_ENTRY != p_vcdplayer->i_lid;
+ return VCDINFO_INVALID_ENTRY != p_vcdplayer->i_lid;
}
/* Given an itemid, return the size for the object (via information
previously stored when opening the vcd). */
static size_t
-vcdplayer_get_item_size(access_t * p_access, vcdinfo_itemid_t itemid)
+vcdplayer_get_item_size(access_t * p_access, vcdinfo_itemid_t itemid)
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
}
}
-static void
-vcdplayer_update_entry( access_t * p_access, uint16_t ofs,
+static void
+vcdplayer_update_entry( access_t * p_access, uint16_t ofs,
uint16_t *entry, const char *label)
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
}
}
-/* Handles navigation when NOT in PBC reaching the end of a play item.
+/* Handles navigation when NOT in PBC reaching the end of a play item.
- The navigations rules here may be sort of made up, but the intent
+ The navigations rules here may be sort of made up, but the intent
is to do something that's probably right or helpful.
return true if the caller should return.
*/
-vcdplayer_read_status_t
+vcdplayer_read_status_t
vcdplayer_non_pbc_nav ( access_t *p_access, uint8_t *wait_time )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
case VCDINFO_ITEM_TYPE_ENTRY: {
if ( ! vcdplayer_play_next( p_access ) )
{
- return READ_END;
+ return READ_END;
}
break;
}
- case VCDINFO_ITEM_TYPE_SPAREID2:
- dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
+ case VCDINFO_ITEM_TYPE_SPAREID2:
+ dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
"SPAREID2" );
if (p_vcdplayer->in_still)
{
- dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
+ dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
"End of still spareid2" );
*wait_time = 255;
return READ_STILL_FRAME ;
}
return READ_END;
- case VCDINFO_ITEM_TYPE_NOTFOUND:
+ case VCDINFO_ITEM_TYPE_NOTFOUND:
LOG_ERR ("NOTFOUND outside PBC -- not supposed to happen");
return READ_ERROR;
- case VCDINFO_ITEM_TYPE_LID:
+ case VCDINFO_ITEM_TYPE_LID:
LOG_ERR ("LID outside PBC -- not supposed to happen");
return READ_ERROR;
case VCDINFO_ITEM_TYPE_SEGMENT:
/* Hack: Just go back and do still again */
/* FIXME */
- if (p_vcdplayer->in_still)
+ if (p_vcdplayer->in_still)
{
- dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
+ dbg_print( (INPUT_DBG_STILL|INPUT_DBG_LSN),
"End of still Segment" );
*wait_time = 10;
return READ_STILL_FRAME;
Set reading to play an entire track.
*/
static void
-_vcdplayer_set_track(access_t * p_access, track_t i_track)
+_vcdplayer_set_track(access_t * p_access, track_t i_track)
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
- if (i_track < 1 || i_track > p_vcdplayer->i_tracks)
+ if (i_track < 1 || i_track > p_vcdplayer->i_tracks)
return;
else {
const vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
itemid.type = VCDINFO_ITEM_TYPE_TRACK;
p_vcdplayer->in_still = 0;
- VCDSetOrigin(p_access, vcdinfo_get_track_lsn(p_vcdinfo, i_track),
- i_track, &itemid);
+ VCDSetOrigin(p_access, vcdinfo_get_track_lsn(p_vcdinfo, i_track),
+ i_track, &itemid);
dbg_print(INPUT_DBG_LSN, "LSN: %u", p_vcdplayer->i_lsn);
}
Set reading to play an entry
*/
static void
-_vcdplayer_set_entry(access_t * p_access, unsigned int num)
+_vcdplayer_set_entry(access_t * p_access, unsigned int num)
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
p_vcdplayer->i_still = 0;
VCDSetOrigin(p_access, vcdinfo_get_entry_lsn(p_vcdinfo, num),
- vcdinfo_get_track(p_vcdinfo, num), &itemid);
+ vcdinfo_get_track(p_vcdinfo, num), &itemid);
- dbg_print(INPUT_DBG_LSN, "LSN: %u, track_end LSN: %u",
+ dbg_print(INPUT_DBG_LSN, "LSN: %u, track_end LSN: %u",
p_vcdplayer->i_lsn, p_vcdplayer->track_end_lsn);
}
}
Set reading to play an segment (e.g. still frame)
*/
static void
-_vcdplayer_set_segment(access_t * p_access, unsigned int num)
+_vcdplayer_set_segment(access_t * p_access, unsigned int num)
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
vcdinfo_itemid_t itemid;
if (VCDINFO_NULL_LSN==p_vcdplayer->i_lsn) {
- LOG_ERR("%s %d",
+ LOG_ERR("%s %d",
"Error in getting current segment number", num);
return;
}
-
+
itemid.num = num;
itemid.type = VCDINFO_ITEM_TYPE_SEGMENT;
VCDSetOrigin(p_access, vcdinfo_get_seg_lsn(p_vcdinfo, num), 0, &itemid);
-
+
dbg_print(INPUT_DBG_LSN, "LSN: %u", p_vcdplayer->i_lsn);
}
}
p_vcdplayer->i_still = 0;
switch (itemid.type) {
- case VCDINFO_ITEM_TYPE_SEGMENT:
+ case VCDINFO_ITEM_TYPE_SEGMENT:
{
- vcdinfo_video_segment_type_t segtype
+ vcdinfo_video_segment_type_t segtype
= vcdinfo_get_video_type(p_vcdinfo, itemid.num);
segnum_t i_segs = vcdinfo_get_num_segments(p_vcdinfo);
- dbg_print(INPUT_DBG_PBC, "%s (%d), itemid.num: %d",
- vcdinfo_video_type2str(p_vcdinfo, itemid.num),
+ dbg_print(INPUT_DBG_PBC, "%s (%d), itemid.num: %d",
+ vcdinfo_video_type2str(p_vcdinfo, itemid.num),
(int) segtype, itemid.num);
if (itemid.num >= i_segs) return false;
_vcdplayer_set_segment(p_access, itemid.num);
-
+
switch (segtype)
{
case VCDINFO_FILES_VIDEO_NTSC_STILL:
default:
p_vcdplayer->i_still = 0;
}
-
+
break;
}
-
+
case VCDINFO_ITEM_TYPE_TRACK:
dbg_print(INPUT_DBG_PBC, "track %d", itemid.num);
if (itemid.num < 1 || itemid.num > p_vcdplayer->i_tracks) return false;
_vcdplayer_set_track(p_access, itemid.num);
break;
-
- case VCDINFO_ITEM_TYPE_ENTRY:
+
+ case VCDINFO_ITEM_TYPE_ENTRY:
{
unsigned int i_entries = vcdinfo_get_num_entries(p_vcdinfo);
dbg_print(INPUT_DBG_PBC, "entry %d", itemid.num);
_vcdplayer_set_entry(p_access, itemid.num);
break;
}
-
+
case VCDINFO_ITEM_TYPE_LID:
LOG_ERR("%s", "Should have converted p_vcdplayer above");
return false;
LOG_ERR("item type %d not implemented.", itemid.type);
return false;
}
-
+
p_vcdplayer->play_item = itemid;
/* Some players like xine, have a fifo queue of audio and video buffers
return true;
}
-/*
- Set's start origin and size for subsequent seeks.
+/*
+ Set's start origin and size for subsequent seeks.
input: p_vcdplayer->i_lsn, p_vcdplayer->play_item
changed: p_vcdplayer->origin_lsn, p_vcdplayer->end_lsn
*/
-void
+void
vcdplayer_set_origin(access_t *p_access, lsn_t i_lsn, track_t i_track,
- const vcdinfo_itemid_t *p_itemid)
+ const vcdinfo_itemid_t *p_itemid)
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
const size_t i_size= vcdplayer_get_item_size(p_access, *p_itemid);
- if( VCDINFO_NULL_LSN == i_lsn )
+ if( VCDINFO_NULL_LSN == i_lsn )
{
LOG_ERR("%s %d", "Invalid LSN for track", i_track);
return;
p_vcdplayer->end_lsn = p_vcdplayer->i_lsn + i_size;
p_vcdplayer->origin_lsn = p_vcdplayer->i_lsn;
p_vcdplayer->i_track = i_track;
- p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdplayer->vcd,
- i_track);
- p_vcdplayer->track_end_lsn = p_vcdplayer->track_lsn +
+ p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdplayer->vcd,
+ i_track);
+ p_vcdplayer->track_end_lsn = p_vcdplayer->track_lsn +
vcdinfo_get_track_sect_count(p_vcdplayer->vcd, i_track);
- dbg_print((INPUT_DBG_CALL|INPUT_DBG_LSN),
- "lsn %u, end LSN: %u item.num %d, item.type %d",
- p_vcdplayer->i_lsn, p_vcdplayer->end_lsn,
- p_vcdplayer->play_item.num, p_vcdplayer->play_item.type);
+ dbg_print((INPUT_DBG_CALL|INPUT_DBG_LSN),
+ "lsn %u, end LSN: %u item.num %d, item.type %d",
+ p_vcdplayer->i_lsn, p_vcdplayer->end_lsn,
+ p_vcdplayer->play_item.num, p_vcdplayer->play_item.type);
}
/*!
Get the next play-item in the list given in the LIDs. Note play-item
here refers to list of play-items for a single LID It shouldn't be
- confused with a user's list of favorite things to play or the
+ confused with a user's list of favorite things to play or the
"next" field of a LID which moves us to a different LID.
*/
static bool
if ( NULL == p_vcdplayer || NULL == p_vcdplayer->pxd.pld ) return false;
noi = vcdinf_pld_get_noi(p_vcdplayer->pxd.pld);
-
+
if ( noi <= 0 ) return false;
-
+
/* Handle delays like autowait or wait here? */
p_vcdplayer->pdi++;
if ( p_vcdplayer->pdi < 0 || p_vcdplayer->pdi >= noi ) return false;
else {
- uint16_t trans_itemid_num=vcdinf_pld_get_play_item(p_vcdplayer->pxd.pld,
+ uint16_t trans_itemid_num=vcdinf_pld_get_play_item(p_vcdplayer->pxd.pld,
p_vcdplayer->pdi);
vcdinfo_itemid_t trans_itemid;
if (VCDINFO_INVALID_ITEMID == trans_itemid_num) return false;
-
+
vcdinfo_classify_itemid(trans_itemid_num, &trans_itemid);
dbg_print(INPUT_DBG_PBC, " play-item[%d]: %s",
p_vcdplayer->pdi, vcdinfo_pin2str (trans_itemid_num));
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
- dbg_print(INPUT_DBG_CALL, "called itemid.num: %d itemid.type: %d",
+ dbg_print(INPUT_DBG_CALL, "called itemid.num: %d itemid.type: %d",
itemid.num, itemid.type);
if (!vcdplayer_pbc_is_on(p_vcdplayer)) {
p_vcdplayer->i_lid = itemid.num;
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), itemid.num);
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
-
+
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST: {
vcdinfo_itemid_t trans_itemid;
vcdplayer_play_single_item(p_access, trans_itemid);
break;
}
-
+
case PSD_TYPE_PLAY_LIST: {
if (p_vcdplayer->pxd.pld == NULL) return;
p_vcdplayer->pdi = -1;
vcdplayer_inc_play_item(p_access);
break;
}
-
+
case PSD_TYPE_END_LIST:
case PSD_TYPE_COMMAND_LIST:
-
+
default:
;
}
/* We are in playback control. */
vcdinfo_itemid_t itemid;
- /* The end of an entry is really the end of the associated
+ /* The end of an entry is really the end of the associated
sequence (or track). */
-
- if ( (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type) &&
+
+ if ( (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type) &&
(p_vcdplayer->i_lsn < p_vcdplayer->end_lsn) ) {
/* Set up to just continue to the next entry */
p_vcdplayer->play_item.num++;
- dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
+ dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
"continuing into next entry: %u", p_vcdplayer->play_item.num);
vcdplayer_play_single_item( p_access, p_vcdplayer->play_item );
/* p_vcdplayer->update_title(); */
return READ_BLOCK;
}
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_END_LIST:
return READ_END;
/* Set up for caller process wait time given. */
if (p_vcdplayer->i_still) {
*wait_time = vcdinf_get_wait_time(p_vcdplayer->pxd.pld);
- dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
- "playlist wait time: %d", *wait_time);
+ dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
+ "playlist wait time: %d", *wait_time);
return READ_STILL_FRAME;
}
/* Wait time has been processed; continue with next entry. */
- vcdplayer_update_entry( p_access,
+ vcdplayer_update_entry( p_access,
vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
&itemid.num, "next" );
itemid.type = VCDINFO_ITEM_TYPE_LID;
{
uint16_t timeout_offs = vcdinf_get_timeout_offset(p_vcdplayer->pxd.psd);
uint16_t max_loop = vcdinf_get_loop_count(p_vcdplayer->pxd.psd);
- vcdinfo_offset_t *offset_timeout_LID =
+ vcdinfo_offset_t *offset_timeout_LID =
vcdinfo_get_offset_t(p_vcdplayer->vcd, timeout_offs);
-
- dbg_print(INPUT_DBG_PBC, "looped: %d, max_loop %d",
+
+ dbg_print(INPUT_DBG_PBC, "looped: %d, max_loop %d",
p_vcdplayer->i_loop, max_loop);
-
+
/* Set up for caller process wait time given. */
if (p_vcdplayer->i_still) {
- *wait_time = vcdinf_get_timeout_time(p_vcdplayer->pxd.psd);
- dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
- "playlist wait_time: %d", *wait_time);
- return READ_STILL_FRAME;
- }
-
+ *wait_time = vcdinf_get_timeout_time(p_vcdplayer->pxd.psd);
+ dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
+ "playlist wait_time: %d", *wait_time);
+ return READ_STILL_FRAME;
+ }
+
/* Wait time has been processed; continue with next entry. */
/* Handle any looping given. */
if ( max_loop == 0 || p_vcdplayer->i_loop < max_loop ) {
/* if (p_vcdplayer->i_still) p_vcdplayer->force_redisplay();*/
return READ_BLOCK;
}
-
+
/* Looping finished and wait finished. Move to timeout
entry or next entry, or handle still. */
-
+
if (NULL != offset_timeout_LID) {
/* Handle timeout_LID */
itemid.num = offset_timeout_LID->lid;
unsigned int bsn=vcdinf_get_bsn(p_vcdplayer->pxd.psd);
int rand_selection=bsn +
(int) ((i_selections+0.0)*rand()/(RAND_MAX+1.0));
- lid_t rand_lid=vcdinfo_selection_get_lid (p_vcdplayer->vcd,
- p_vcdplayer->i_lid,
- rand_selection);
+ lid_t rand_lid=vcdinfo_selection_get_lid (p_vcdplayer->vcd,
+ p_vcdplayer->i_lid,
+ rand_selection);
itemid.num = rand_lid;
itemid.type = VCDINFO_ITEM_TYPE_LID;
- dbg_print(INPUT_DBG_PBC, "random selection %d, lid: %d",
+ dbg_print(INPUT_DBG_PBC, "random selection %d, lid: %d",
rand_selection - bsn, rand_lid);
vcdplayer_play( p_access, itemid );
return READ_BLOCK;
}
break;
}
- case VCDINFO_ITEM_TYPE_NOTFOUND:
+ case VCDINFO_ITEM_TYPE_NOTFOUND:
LOG_ERR( "NOTFOUND in PBC -- not supposed to happen" );
break;
- case VCDINFO_ITEM_TYPE_SPAREID2:
+ case VCDINFO_ITEM_TYPE_SPAREID2:
LOG_ERR( "SPAREID2 in PBC -- not supposed to happen" );
break;
- case VCDINFO_ITEM_TYPE_LID:
+ case VCDINFO_ITEM_TYPE_LID:
LOG_ERR( "LID in PBC -- not supposed to happen" );
break;
-
+
default:
;
}
/*!
Read block into p_buf and return the status back.
- This routine is a bit complicated because on reaching the end of
- a track or entry we may automatically advance to the item, or
+ This routine is a bit complicated because on reaching the end of
+ a track or entry we may automatically advance to the item, or
interpret the next item in the playback-control list.
*/
vcdplayer_read_status_t
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
if ( p_vcdplayer->i_lsn > p_vcdplayer->end_lsn ) {
vcdplayer_read_status_t read_status;
-
+
/* We've run off of the end of this entry. Do we continue or stop? */
- dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
+ dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
"end reached, cur: %u, end: %u\n", p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
handle_item_continuation:
- read_status = vcdplayer_pbc_is_on( p_vcdplayer )
- ? vcdplayer_pbc_nav( p_access, &wait_time )
+ read_status = vcdplayer_pbc_is_on( p_vcdplayer )
+ ? vcdplayer_pbc_nav( p_access, &wait_time )
: vcdplayer_non_pbc_nav( p_access, &wait_time );
if (READ_STILL_FRAME == read_status) {
if (READ_BLOCK != read_status) return read_status;
}
- /* Read the next block.
-
+ /* Read the next block.
+
Important note: we probably speed things up by removing "data"
and the memcpy to it by extending vcd_image_source_read_mode2
- to allow a mode to do what's below in addition to its
+ to allow a mode to do what's below in addition to its
"raw" and "block" mode. It also would probably improve the modularity
a little bit as well.
*/
CdIo *p_img = vcdinfo_get_cd_image(p_vcdplayer->vcd);
typedef struct {
uint8_t subheader [CDIO_CD_SUBHEADER_SIZE];
- uint8_t data [M2F2_SECTOR_SIZE];
+ uint8_t data [M2F2_SECTOR_SIZE];
uint8_t spare [4];
} vcdsector_t;
vcdsector_t vcd_sector;
do {
- if (cdio_read_mode2_sector(p_img, &vcd_sector,
- p_vcdplayer->i_lsn, true)!=0) {
+ if (cdio_read_mode2_sector(p_img, &vcd_sector,
+ p_vcdplayer->i_lsn, true)!=0) {
dbg_print(INPUT_DBG_LSN, "read error\n");
- p_vcdplayer->i_lsn++;
+ p_vcdplayer->i_lsn++;
return READ_ERROR;
}
p_vcdplayer->i_lsn++;
if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn ) {
/* We've run off of the end of this entry. Do we continue or stop? */
- dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
- "end reached in reading, cur: %u, end: %u\n",
+ dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
+ "end reached in reading, cur: %u, end: %u\n",
p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
break;
}
-
+
/* Check header ID for a padding sector and simply discard
these. It is alleged that VCD's put these in to keep the
bitrate constant.
*/
} while((vcd_sector.subheader[2]&~0x01)==0x60);
- if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn )
+ if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn )
/* We've run off of the end of this entry. Do we continue or stop? */
goto handle_item_continuation;
-
+
memcpy (p_buf, vcd_sector.data, M2F2_SECTOR_SIZE);
return READ_BLOCK;
}
Return false if there was some problem.
*/
-bool
+bool
vcdplayer_play_default( access_t * p_access )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
vcdinfo_itemid_t itemid;
if (!p_vcdplayer) {
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "null p_vcdplayer" );
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
+ "null p_vcdplayer" );
return VLC_EGENERIC;
}
-
+
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "current: %d" , p_vcdplayer->play_item.num);
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
+ "current: %d" , p_vcdplayer->play_item.num);
itemid.type = p_vcdplayer->play_item.type;
#if defined(LIBVCD_VERSION)
lid_t lid=vcdinfo_get_multi_default_lid(p_vcdplayer->vcd, p_vcdplayer->i_lid,
- p_vcdplayer->i_lsn);
+ p_vcdplayer->i_lsn);
if (VCDINFO_INVALID_LID != lid) {
itemid.num = lid;
return VLC_EGENERIC;
}
-#else
+#else
vcdinfo_lid_get_pxd(p_vcdplayer->vcd, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinfo_get_default_offset(p_vcdplayer->vcd,
- p_vcdplayer->i_lid),
- &itemid.num, "default");
+ vcdplayer_update_entry( p_access,
+ vcdinfo_get_default_offset(p_vcdplayer->vcd,
+ p_vcdplayer->i_lid),
+ &itemid.num, "default");
break;
- case PSD_TYPE_PLAY_LIST:
+ case PSD_TYPE_PLAY_LIST:
case PSD_TYPE_END_LIST:
case PSD_TYPE_COMMAND_LIST:
LOG_WARN( "There is no PBC 'default' selection here" );
return false;
}
#endif /* LIBVCD_VERSION (< 0.7.21) */
-
+
} else {
- /* PBC is not on. "default" selection beginning of current
+ /* PBC is not on. "default" selection beginning of current
selection . */
-
+
itemid.num = p_vcdplayer->play_item.num;
-
+
}
/** ??? p_vcdplayer->update_title(); ***/
Return false if there was some problem.
*/
-bool
+bool
vcdplayer_play_next( access_t * p_access )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
if (!p_vcdplayer) return false;
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "current: %d" , p_vcdplayer->play_item.num);
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
+ "current: %d" , p_vcdplayer->play_item.num);
p_vcdinfo = p_vcdplayer->vcd;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_next_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "next");
+ vcdplayer_update_entry( p_access,
+ vcdinf_psd_get_next_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "next");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
- case PSD_TYPE_PLAY_LIST:
+ case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "next");
+ vcdplayer_update_entry( p_access,
+ vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "next");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
-
+
case PSD_TYPE_END_LIST:
case PSD_TYPE_COMMAND_LIST:
LOG_WARN( "There is no PBC 'next' selection here" );
} else {
/* PBC is not on. "Next" selection is play_item.num+1 if possible. */
-
+
int max_entry = 0;
switch (p_vcdplayer->play_item.type) {
- case VCDINFO_ITEM_TYPE_ENTRY:
- case VCDINFO_ITEM_TYPE_SEGMENT:
- case VCDINFO_ITEM_TYPE_TRACK:
-
+ case VCDINFO_ITEM_TYPE_ENTRY:
+ case VCDINFO_ITEM_TYPE_SEGMENT:
+ case VCDINFO_ITEM_TYPE_TRACK:
+
switch (p_vcdplayer->play_item.type) {
- case VCDINFO_ITEM_TYPE_ENTRY:
- max_entry = p_vcdplayer->i_entries;
- break;
- case VCDINFO_ITEM_TYPE_SEGMENT:
- max_entry = p_vcdplayer->i_segments;
- break;
- case VCDINFO_ITEM_TYPE_TRACK:
- max_entry = p_vcdplayer->i_tracks;
- break;
+ case VCDINFO_ITEM_TYPE_ENTRY:
+ max_entry = p_vcdplayer->i_entries;
+ break;
+ case VCDINFO_ITEM_TYPE_SEGMENT:
+ max_entry = p_vcdplayer->i_segments;
+ break;
+ case VCDINFO_ITEM_TYPE_TRACK:
+ max_entry = p_vcdplayer->i_tracks;
+ break;
default: ; /* Handle exceptional cases below */
}
-
+
if (p_vcdplayer->play_item.num+1 < max_entry) {
- itemid.num = p_vcdplayer->play_item.num+1;
+ itemid.num = p_vcdplayer->play_item.num+1;
} else {
- LOG_WARN( "At the end - non-PBC 'next' not possible here" );
- return false;
+ LOG_WARN( "At the end - non-PBC 'next' not possible here" );
+ return false;
}
-
+
break;
-
- case VCDINFO_ITEM_TYPE_LID:
+
+ case VCDINFO_ITEM_TYPE_LID:
{
- /* Should have handled above. */
- LOG_WARN( "Internal inconsistency - should not have gotten here." );
- return false;
+ /* Should have handled above. */
+ LOG_WARN( "Internal inconsistency - should not have gotten here." );
+ return false;
}
- default:
+ default:
return false;
}
}
Return false if there was some problem.
*/
-bool
+bool
vcdplayer_play_prev( access_t * p_access )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
vcdinfo_itemid_t itemid;
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "current: %d" , p_vcdplayer->play_item.num);
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
+ "current: %d" , p_vcdplayer->play_item.num);
itemid = p_vcdplayer->play_item;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_prev_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "prev");
+ vcdplayer_update_entry( p_access,
+ vcdinf_psd_get_prev_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "prev");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
- case PSD_TYPE_PLAY_LIST:
+ case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_prev_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "prev");
+ vcdplayer_update_entry( p_access,
+ vcdinf_pld_get_prev_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "prev");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
-
+
case PSD_TYPE_END_LIST:
case PSD_TYPE_COMMAND_LIST:
LOG_WARN( "There is no PBC 'prev' selection here" );
} else {
/* PBC is not on. "Prev" selection is play_item.num-1 if possible. */
-
- int min_entry = (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type)
+
+ int min_entry = (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type)
? 0 : 1;
-
+
if (p_vcdplayer->play_item.num > min_entry) {
itemid.num = p_vcdplayer->play_item.num-1;
} else {
LOG_WARN( "At the beginning - non-PBC 'prev' not possible here" );
return false;
}
-
+
}
/** ??? p_vcdplayer->update_title(); ***/
Return false if there was some problem.
*/
-bool
+bool
vcdplayer_play_return( access_t * p_access )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
vcdinfo_itemid_t itemid;
- dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "current: %d" , p_vcdplayer->play_item.num);
+ dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
+ "current: %d" , p_vcdplayer->play_item.num);
itemid = p_vcdplayer->play_item;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
-
+
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_return_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "return");
+ vcdplayer_update_entry( p_access,
+ vcdinf_psd_get_return_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "return");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
- case PSD_TYPE_PLAY_LIST:
+ case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_return_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "return");
+ vcdplayer_update_entry( p_access,
+ vcdinf_pld_get_return_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "return");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
-
+
case PSD_TYPE_END_LIST:
case PSD_TYPE_COMMAND_LIST:
LOG_WARN( "There is no PBC 'return' selection here" );
} else {
/* PBC is not on. "Return" selection is min_entry if possible. */
-
- p_vcdplayer->play_item.num =
- (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type)
+
+ p_vcdplayer->play_item.num =
+ (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type)
? 0 : 1;
-
+
}
/** ??? p_vcdplayer->update_title(); ***/
}
-/*
+/*
* Local variables:
* c-file-style: "gnu"
* tab-width: 8
* Copyright (C) 2003, 2004 Rocky Bernstein (for the VideoLAN team)
* $Id$
*
- * Authors: Rocky Bernstein <rocky@panix.com>
+ * Authors: Rocky Bernstein <rocky@panix.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
if (p_vcdplayer && p_vcdplayer->i_debug & mask) \
msg_Dbg(p_access, "%s: "s, __func__ , ##args)
#else
-#define dbg_print(mask, s, args...)
+#define dbg_print(mask, s, args...)
#endif
#define LOG_ERR(args...) msg_Err( p_access, args )
vcdinfo_obj_t *vcd; /* CD device descriptor */
/*------------------------------------------------------------------
- User-settable options
+ User-settable options
--------------------------------------------------------------*/
unsigned int i_debug; /* Debugging mask */
unsigned int i_blocks_per_read; /* number of blocks per read */
/*-------------------------------------------------------------
- Playback control fields
+ Playback control fields
--------------------------------------------------------------*/
bool in_still; /* true if in still */
- int i_lid; /* LID that play item is in. Implies
- PBC is on. VCDPLAYER_BAD_ENTRY if
+ int i_lid; /* LID that play item is in. Implies
+ PBC is on. VCDPLAYER_BAD_ENTRY if
not none or not in PBC */
- PsdListDescriptor_t pxd; /* If PBC is on, the relevant
+ PsdListDescriptor_t pxd; /* If PBC is on, the relevant
PSD/PLD */
- int pdi; /* current pld index of pxd. -1 if
+ int pdi; /* current pld index of pxd. -1 if
no index*/
- vcdinfo_itemid_t play_item; /* play-item, VCDPLAYER_BAD_ENTRY
+ vcdinfo_itemid_t play_item; /* play-item, VCDPLAYER_BAD_ENTRY
if none */
- vcdinfo_itemid_t loop_item; /* Where do we loop back to?
- Meaningful only in a selection
+ vcdinfo_itemid_t loop_item; /* Where do we loop back to?
+ Meaningful only in a selection
list */
- int i_loop; /* # of times play-item has been
- played. Meaningful only in a
+ int i_loop; /* # of times play-item has been
+ played. Meaningful only in a
selection list. */
track_t i_track; /* current track number */
location fields
------------------------------------*/
lsn_t i_lsn; /* LSN of where we are right now */
- lsn_t end_lsn; /* LSN of end of current
+ lsn_t end_lsn; /* LSN of end of current
entry/segment/track. This block
- can be read (and is not one after
+ can be read (and is not one after
the "end").
*/
lsn_t origin_lsn; /* LSN of start of seek/slider */
- lsn_t track_lsn; /* LSN of start track origin of track
+ lsn_t track_lsn; /* LSN of start track origin of track
we are in. */
- lsn_t track_end_lsn; /* LSN of end of current track (if
+ lsn_t track_end_lsn; /* LSN of end of current track (if
entry). */
lsn_t * p_entries; /* Entry points */
lsn_t * p_segments; /* Segments */
char *psz_source; /* (S)VCD drive or image filename */
bool b_svd; /* true if we have SVD info */
vlc_meta_t *p_meta;
- track_t i_tracks; /* # of playable MPEG tracks. This is
+ track_t i_tracks; /* # of playable MPEG tracks. This is
generally one less than the number
of CD tracks as the first CD track
is an ISO-9660 track and is not
unsigned int i_titles; /* # of navigatable titles. */
- /*
+ /*
# tracks + menu for segments + menu for LIDs
*/
input_title_t *p_title[CDIO_CD_MAX_TRACKS+2];
bool b_track_length; /* Use track as max unit in seek */
input_thread_t *p_input;
access_t *p_access;
-
+
} vcdplayer_t;
/* vcdplayer_read return status */
/* ----------------------------------------------------------------------
- Function Prototypes
+ Function Prototypes
-----------------------------------------------------------------------*/
/*!
*/
bool vcdplayer_play_return( access_t * p_access );
-/*
- Set's start origin and size for subsequent seeks.
+/*
+ Set's start origin and size for subsequent seeks.
input: p_vcd->i_lsn, p_vcd->play_item
changed: p_vcd->origin_lsn, p_vcd->end_lsn
*/
vcdplayer_read_status_t vcdplayer_read (access_t * p_access_t, uint8_t *p_buf);
#endif /* _VCDPLAYER_H_ */
-/*
+/*
* Local variables:
* c-file-style: "gnu"
* tab-width: 8
#ifndef __LINUX_VIDEODEV2_H
#define __LINUX_VIDEODEV2_H
/*
- * Video for Linux Two
+ * Video for Linux Two
*
- * Header file for v4l or V4L2 drivers and applications, for
- * Linux kernels 2.2.x or 2.4.x.
+ * Header file for v4l or V4L2 drivers and applications, for
+ * Linux kernels 2.2.x or 2.4.x.
*
- * See http://bytesex.org/v4l/ for API specs and other
- * v4l2 documentation.
+ * See http://bytesex.org/v4l/ for API specs and other
+ * v4l2 documentation.
*
- * Author: Bill Dirks <bdirks@pacbell.net>
- * Justin Schoeman
- * et al.
+ * Author: Bill Dirks <bdirks@pacbell.net>
+ * Justin Schoeman
+ * et al.
*/
/*
- * M I S C E L L A N E O U S
+ * M I S C E L L A N E O U S
*/
/* Four-character-code (FOURCC) */
(((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
/*
- * E N U M S
+ * E N U M S
*/
enum v4l2_field {
- V4L2_FIELD_ANY = 0, /* driver can choose from none,
- top, bottom, interlaced
- depending on whatever it thinks
- is approximate ... */
- V4L2_FIELD_NONE = 1, /* this device has no fields ... */
- V4L2_FIELD_TOP = 2, /* top field only */
- V4L2_FIELD_BOTTOM = 3, /* bottom field only */
- V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */
- V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one
- buffer, top-bottom order */
- V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */
- V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into
- separate buffers */
-};
-#define V4L2_FIELD_HAS_TOP(field) \
- ((field) == V4L2_FIELD_TOP ||\
- (field) == V4L2_FIELD_INTERLACED ||\
- (field) == V4L2_FIELD_SEQ_TB ||\
- (field) == V4L2_FIELD_SEQ_BT)
-#define V4L2_FIELD_HAS_BOTTOM(field) \
- ((field) == V4L2_FIELD_BOTTOM ||\
- (field) == V4L2_FIELD_INTERLACED ||\
- (field) == V4L2_FIELD_SEQ_TB ||\
- (field) == V4L2_FIELD_SEQ_BT)
-#define V4L2_FIELD_HAS_BOTH(field) \
- ((field) == V4L2_FIELD_INTERLACED ||\
- (field) == V4L2_FIELD_SEQ_TB ||\
- (field) == V4L2_FIELD_SEQ_BT)
+ V4L2_FIELD_ANY = 0, /* driver can choose from none,
+ top, bottom, interlaced
+ depending on whatever it thinks
+ is approximate ... */
+ V4L2_FIELD_NONE = 1, /* this device has no fields ... */
+ V4L2_FIELD_TOP = 2, /* top field only */
+ V4L2_FIELD_BOTTOM = 3, /* bottom field only */
+ V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */
+ V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one
+ buffer, top-bottom order */
+ V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */
+ V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into
+ separate buffers */
+};
+#define V4L2_FIELD_HAS_TOP(field) \
+ ((field) == V4L2_FIELD_TOP ||\
+ (field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTTOM(field) \
+ ((field) == V4L2_FIELD_BOTTOM ||\
+ (field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTH(field) \
+ ((field) == V4L2_FIELD_INTERLACED ||\
+ (field) == V4L2_FIELD_SEQ_TB ||\
+ (field) == V4L2_FIELD_SEQ_BT)
enum v4l2_buf_type {
- V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
- V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
- V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
- V4L2_BUF_TYPE_VBI_CAPTURE = 4,
- V4L2_BUF_TYPE_VBI_OUTPUT = 5,
- V4L2_BUF_TYPE_PRIVATE = 0x80,
+ V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+ V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+ V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
+ V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+ V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+ V4L2_BUF_TYPE_PRIVATE = 0x80,
};
enum v4l2_ctrl_type {
- V4L2_CTRL_TYPE_INTEGER = 1,
- V4L2_CTRL_TYPE_BOOLEAN = 2,
- V4L2_CTRL_TYPE_MENU = 3,
- V4L2_CTRL_TYPE_BUTTON = 4,
+ V4L2_CTRL_TYPE_INTEGER = 1,
+ V4L2_CTRL_TYPE_BOOLEAN = 2,
+ V4L2_CTRL_TYPE_MENU = 3,
+ V4L2_CTRL_TYPE_BUTTON = 4,
};
enum v4l2_tuner_type {
- V4L2_TUNER_RADIO = 1,
- V4L2_TUNER_ANALOG_TV = 2,
+ V4L2_TUNER_RADIO = 1,
+ V4L2_TUNER_ANALOG_TV = 2,
};
enum v4l2_memory {
- V4L2_MEMORY_MMAP = 1,
- V4L2_MEMORY_USERPTR = 2,
- V4L2_MEMORY_OVERLAY = 3,
+ V4L2_MEMORY_MMAP = 1,
+ V4L2_MEMORY_USERPTR = 2,
+ V4L2_MEMORY_OVERLAY = 3,
};
/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
enum v4l2_colorspace {
- /* ITU-R 601 -- broadcast NTSC/PAL */
- V4L2_COLORSPACE_SMPTE170M = 1,
-
- /* 1125-Line (US) HDTV */
- V4L2_COLORSPACE_SMPTE240M = 2,
-
- /* HD and modern captures. */
- V4L2_COLORSPACE_REC709 = 3,
-
- /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
- V4L2_COLORSPACE_BT878 = 4,
-
- /* These should be useful. Assume 601 extents. */
- V4L2_COLORSPACE_470_SYSTEM_M = 5,
- V4L2_COLORSPACE_470_SYSTEM_BG = 6,
-
- /* I know there will be cameras that send this. So, this is
- * unspecified chromaticities and full 0-255 on each of the
- * Y'CbCr components
- */
- V4L2_COLORSPACE_JPEG = 7,
-
- /* For RGB colourspaces, this is probably a good start. */
- V4L2_COLORSPACE_SRGB = 8,
+ /* ITU-R 601 -- broadcast NTSC/PAL */
+ V4L2_COLORSPACE_SMPTE170M = 1,
+
+ /* 1125-Line (US) HDTV */
+ V4L2_COLORSPACE_SMPTE240M = 2,
+
+ /* HD and modern captures. */
+ V4L2_COLORSPACE_REC709 = 3,
+
+ /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
+ V4L2_COLORSPACE_BT878 = 4,
+
+ /* These should be useful. Assume 601 extents. */
+ V4L2_COLORSPACE_470_SYSTEM_M = 5,
+ V4L2_COLORSPACE_470_SYSTEM_BG = 6,
+
+ /* I know there will be cameras that send this. So, this is
+ * unspecified chromaticities and full 0-255 on each of the
+ * Y'CbCr components
+ */
+ V4L2_COLORSPACE_JPEG = 7,
+
+ /* For RGB colourspaces, this is probably a good start. */
+ V4L2_COLORSPACE_SRGB = 8,
};
struct v4l2_rect {
- __s32 left;
- __s32 top;
- __s32 width;
- __s32 height;
+ __s32 left;
+ __s32 top;
+ __s32 width;
+ __s32 height;
};
struct v4l2_fract {
- __u32 numerator;
- __u32 denominator;
+ __u32 numerator;
+ __u32 denominator;
};
/*
- * D R I V E R C A P A B I L I T I E S
+ * D R I V E R C A P A B I L I T I E S
*/
struct v4l2_capability
{
- __u8 driver[16]; /* i.e. "bttv" */
- __u8 card[32]; /* i.e. "Hauppauge WinTV" */
- __u8 bus_info[32]; /* "PCI:" + pci_dev->slot_name */
- __u32 version; /* should use KERNEL_VERSION() */
- __u32 capabilities; /* Device capabilities */
- __u32 reserved[4];
+ __u8 driver[16]; /* i.e. "bttv" */
+ __u8 card[32]; /* i.e. "Hauppauge WinTV" */
+ __u8 bus_info[32]; /* "PCI:" + pci_dev->slot_name */
+ __u32 version; /* should use KERNEL_VERSION() */
+ __u32 capabilities; /* Device capabilities */
+ __u32 reserved[4];
};
/* Values for 'capabilities' field */
-#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */
-#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */
-#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */
-#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a VBI capture device */
-#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a VBI output device */
-#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
+#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */
+#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */
+#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */
+#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a VBI capture device */
+#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a VBI output device */
+#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
-#define V4L2_CAP_TUNER 0x00010000 /* Has a tuner */
-#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
+#define V4L2_CAP_TUNER 0x00010000 /* Has a tuner */
+#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */
#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */
/*
- * V I D E O I M A G E F O R M A T
+ * V I D E O I M A G E F O R M A T
*/
struct v4l2_pix_format
{
- __u32 width;
- __u32 height;
- __u32 pixelformat;
- enum v4l2_field field;
- __u32 bytesperline; /* for padding, zero if unused */
- __u32 sizeimage;
- enum v4l2_colorspace colorspace;
- __u32 priv; /* private data, depends on pixelformat */
+ __u32 width;
+ __u32 height;
+ __u32 pixelformat;
+ enum v4l2_field field;
+ __u32 bytesperline; /* for padding, zero if unused */
+ __u32 sizeimage;
+ enum v4l2_colorspace colorspace;
+ __u32 priv; /* private data, depends on pixelformat */
};
/* Pixel format FOURCC depth Description */
#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compres */
/*
- * F O R M A T E N U M E R A T I O N
+ * F O R M A T E N U M E R A T I O N
*/
struct v4l2_fmtdesc
{
- __u32 index; /* Format number */
- enum v4l2_buf_type type; /* buffer type */
- __u32 flags;
- __u8 description[32]; /* Description string */
- __u32 pixelformat; /* Format fourcc */
- __u32 reserved[4];
+ __u32 index; /* Format number */
+ enum v4l2_buf_type type; /* buffer type */
+ __u32 flags;
+ __u8 description[32]; /* Description string */
+ __u32 pixelformat; /* Format fourcc */
+ __u32 reserved[4];
};
#define V4L2_FMT_FLAG_COMPRESSED 0x0001
/*
- * T I M E C O D E
+ * T I M E C O D E
*/
struct v4l2_timecode
{
- __u32 type;
- __u32 flags;
- __u8 frames;
- __u8 seconds;
- __u8 minutes;
- __u8 hours;
- __u8 userbits[4];
+ __u32 type;
+ __u32 flags;
+ __u8 frames;
+ __u8 seconds;
+ __u8 minutes;
+ __u8 hours;
+ __u8 userbits[4];
};
/* Type */
-#define V4L2_TC_TYPE_24FPS 1
-#define V4L2_TC_TYPE_25FPS 2
-#define V4L2_TC_TYPE_30FPS 3
-#define V4L2_TC_TYPE_50FPS 4
-#define V4L2_TC_TYPE_60FPS 5
+#define V4L2_TC_TYPE_24FPS 1
+#define V4L2_TC_TYPE_25FPS 2
+#define V4L2_TC_TYPE_30FPS 3
+#define V4L2_TC_TYPE_50FPS 4
+#define V4L2_TC_TYPE_60FPS 5
/* Flags */
-#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */
-#define V4L2_TC_FLAG_COLORFRAME 0x0002
-#define V4L2_TC_USERBITS_field 0x000C
-#define V4L2_TC_USERBITS_USERDEFINED 0x0000
-#define V4L2_TC_USERBITS_8BITCHARS 0x0008
+#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */
+#define V4L2_TC_FLAG_COLORFRAME 0x0002
+#define V4L2_TC_USERBITS_field 0x000C
+#define V4L2_TC_USERBITS_USERDEFINED 0x0000
+#define V4L2_TC_USERBITS_8BITCHARS 0x0008
/* The above is based on SMPTE timecodes */
/*
- * C O M P R E S S I O N P A R A M E T E R S
+ * C O M P R E S S I O N P A R A M E T E R S
*/
#if 0
/* ### generic compression settings don't work, there is too much
* ### later ... */
struct v4l2_compression
{
- __u32 quality;
- __u32 keyframerate;
- __u32 pframerate;
- __u32 reserved[5];
+ __u32 quality;
+ __u32 keyframerate;
+ __u32 pframerate;
+ __u32 reserved[5];
};
#endif
struct v4l2_jpegcompression
{
- int quality;
-
- int APPn; /* Number of APP segment to be written,
- * must be 0..15 */
- int APP_len; /* Length of data in JPEG APPn segment */
- char APP_data[60]; /* Data in the JPEG APPn segment. */
-
- int COM_len; /* Length of data in JPEG COM segment */
- char COM_data[60]; /* Data in JPEG COM segment */
-
- __u32 jpeg_markers; /* Which markers should go into the JPEG
- * output. Unless you exactly know what
- * you do, leave them untouched.
- * Inluding less markers will make the
- * resulting code smaller, but there will
- * be fewer aplications which can read it.
- * The presence of the APP and COM marker
- * is influenced by APP_len and COM_len
- * ONLY, not by this property! */
-
+ int quality;
+
+ int APPn; /* Number of APP segment to be written,
+ * must be 0..15 */
+ int APP_len; /* Length of data in JPEG APPn segment */
+ char APP_data[60]; /* Data in the JPEG APPn segment. */
+
+ int COM_len; /* Length of data in JPEG COM segment */
+ char COM_data[60]; /* Data in JPEG COM segment */
+
+ __u32 jpeg_markers; /* Which markers should go into the JPEG
+ * output. Unless you exactly know what
+ * you do, leave them untouched.
+ * Inluding less markers will make the
+ * resulting code smaller, but there will
+ * be fewer aplications which can read it.
+ * The presence of the APP and COM marker
+ * is influenced by APP_len and COM_len
+ * ONLY, not by this property! */
+
#define V4L2_JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */
#define V4L2_JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */
#define V4L2_JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */
/*
- * M E M O R Y - M A P P I N G B U F F E R S
+ * M E M O R Y - M A P P I N G B U F F E R S
*/
struct v4l2_requestbuffers
{
- __u32 count;
- enum v4l2_buf_type type;
- enum v4l2_memory memory;
- __u32 reserved[2];
+ __u32 count;
+ enum v4l2_buf_type type;
+ enum v4l2_memory memory;
+ __u32 reserved[2];
};
struct v4l2_buffer
{
- __u32 index;
- enum v4l2_buf_type type;
- __u32 bytesused;
- __u32 flags;
- enum v4l2_field field;
- struct timeval timestamp;
- struct v4l2_timecode timecode;
- __u32 sequence;
-
- /* memory location */
- enum v4l2_memory memory;
- union {
- __u32 offset;
- unsigned long userptr;
- } m;
- __u32 length;
-
- __u32 reserved[2];
+ __u32 index;
+ enum v4l2_buf_type type;
+ __u32 bytesused;
+ __u32 flags;
+ enum v4l2_field field;
+ struct timeval timestamp;
+ struct v4l2_timecode timecode;
+ __u32 sequence;
+
+ /* memory location */
+ enum v4l2_memory memory;
+ union {
+ __u32 offset;
+ unsigned long userptr;
+ } m;
+ __u32 length;
+
+ __u32 reserved[2];
};
/* Flags for 'flags' field */
-#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */
-#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */
-#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */
-#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */
-#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */
-#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */
-#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */
+#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */
+#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */
+#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */
+#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */
+#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */
+#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */
+#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */
/*
- * O V E R L A Y P R E V I E W
+ * O V E R L A Y P R E V I E W
*/
struct v4l2_framebuffer
{
- __u32 capability;
- __u32 flags;
+ __u32 capability;
+ __u32 flags;
/* FIXME: in theory we should pass something like PCI device + memory
* region + offset instead of some physical address */
- void* base;
- struct v4l2_pix_format fmt;
+ void* base;
+ struct v4l2_pix_format fmt;
};
/* Flags for the 'capability' field. Read only */
-#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
-#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
+#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
+#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
-#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
+#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
/* Flags for the 'flags' field. */
-#define V4L2_FBUF_FLAG_PRIMARY 0x0001
-#define V4L2_FBUF_FLAG_OVERLAY 0x0002
-#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
+#define V4L2_FBUF_FLAG_PRIMARY 0x0001
+#define V4L2_FBUF_FLAG_OVERLAY 0x0002
+#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
struct v4l2_clip
{
- struct v4l2_rect c;
- struct v4l2_clip *next;
+ struct v4l2_rect c;
+ struct v4l2_clip *next;
};
struct v4l2_window
{
- struct v4l2_rect w;
- enum v4l2_field field;
- __u32 chromakey;
- struct v4l2_clip *clips;
- __u32 clipcount;
- void *bitmap;
+ struct v4l2_rect w;
+ enum v4l2_field field;
+ __u32 chromakey;
+ struct v4l2_clip *clips;
+ __u32 clipcount;
+ void *bitmap;
};
/*
- * C A P T U R E P A R A M E T E R S
+ * C A P T U R E P A R A M E T E R S
*/
struct v4l2_captureparm
{
- __u32 capability; /* Supported modes */
- __u32 capturemode; /* Current mode */
- struct v4l2_fract timeperframe; /* Time per frame in .1us units */
- __u32 extendedmode; /* Driver-specific extensions */
- __u32 readbuffers; /* # of buffers for read */
- __u32 reserved[4];
+ __u32 capability; /* Supported modes */
+ __u32 capturemode; /* Current mode */
+ struct v4l2_fract timeperframe; /* Time per frame in .1us units */
+ __u32 extendedmode; /* Driver-specific extensions */
+ __u32 readbuffers; /* # of buffers for read */
+ __u32 reserved[4];
};
/* Flags for 'capability' and 'capturemode' fields */
-#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */
-#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */
+#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */
+#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */
struct v4l2_outputparm
{
- __u32 capability; /* Supported modes */
- __u32 outputmode; /* Current mode */
- struct v4l2_fract timeperframe; /* Time per frame in seconds */
- __u32 extendedmode; /* Driver-specific extensions */
- __u32 writebuffers; /* # of buffers for write */
- __u32 reserved[4];
+ __u32 capability; /* Supported modes */
+ __u32 outputmode; /* Current mode */
+ struct v4l2_fract timeperframe; /* Time per frame in seconds */
+ __u32 extendedmode; /* Driver-specific extensions */
+ __u32 writebuffers; /* # of buffers for write */
+ __u32 reserved[4];
};
/*
- * I N P U T I M A G E C R O P P I N G
+ * I N P U T I M A G E C R O P P I N G
*/
struct v4l2_cropcap {
- enum v4l2_buf_type type;
+ enum v4l2_buf_type type;
struct v4l2_rect bounds;
struct v4l2_rect defrect;
struct v4l2_fract pixelaspect;
};
struct v4l2_crop {
- enum v4l2_buf_type type;
- struct v4l2_rect c;
+ enum v4l2_buf_type type;
+ struct v4l2_rect c;
};
/*
#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
/* some common needed stuff */
-#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
- V4L2_STD_PAL_B1 |\
- V4L2_STD_PAL_G)
-#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
- V4L2_STD_PAL_D1 |\
- V4L2_STD_PAL_K)
-#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
- V4L2_STD_PAL_DK |\
- V4L2_STD_PAL_H |\
- V4L2_STD_PAL_I)
-#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
- V4L2_STD_NTSC_M_JP)
-#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
- V4L2_STD_SECAM_D |\
- V4L2_STD_SECAM_G |\
- V4L2_STD_SECAM_H |\
- V4L2_STD_SECAM_K |\
- V4L2_STD_SECAM_K1 |\
- V4L2_STD_SECAM_L)
-
-#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
- V4L2_STD_PAL_60 |\
- V4L2_STD_NTSC)
-#define V4L2_STD_625_50 (V4L2_STD_PAL |\
- V4L2_STD_PAL_N |\
- V4L2_STD_PAL_Nc |\
- V4L2_STD_SECAM)
+#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
+ V4L2_STD_PAL_B1 |\
+ V4L2_STD_PAL_G)
+#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
+ V4L2_STD_PAL_D1 |\
+ V4L2_STD_PAL_K)
+#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
+ V4L2_STD_PAL_DK |\
+ V4L2_STD_PAL_H |\
+ V4L2_STD_PAL_I)
+#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
+ V4L2_STD_NTSC_M_JP)
+#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
+ V4L2_STD_SECAM_D |\
+ V4L2_STD_SECAM_G |\
+ V4L2_STD_SECAM_H |\
+ V4L2_STD_SECAM_K |\
+ V4L2_STD_SECAM_K1 |\
+ V4L2_STD_SECAM_L)
+
+#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
+ V4L2_STD_PAL_60 |\
+ V4L2_STD_NTSC)
+#define V4L2_STD_625_50 (V4L2_STD_PAL |\
+ V4L2_STD_PAL_N |\
+ V4L2_STD_PAL_Nc |\
+ V4L2_STD_SECAM)
#define V4L2_STD_UNKNOWN 0
-#define V4L2_STD_ALL (V4L2_STD_525_60 |\
- V4L2_STD_625_50)
+#define V4L2_STD_ALL (V4L2_STD_525_60 |\
+ V4L2_STD_625_50)
struct v4l2_standard
{
- __u32 index;
- v4l2_std_id id;
- __u8 name[24];
- struct v4l2_fract frameperiod; /* Frames, not fields */
- __u32 framelines;
- __u32 reserved[4];
+ __u32 index;
+ v4l2_std_id id;
+ __u8 name[24];
+ struct v4l2_fract frameperiod; /* Frames, not fields */
+ __u32 framelines;
+ __u32 reserved[4];
};
/*
- * V I D E O I N P U T S
+ * V I D E O I N P U T S
*/
struct v4l2_input
{
- __u32 index; /* Which input */
- __u8 name[32]; /* Label */
- __u32 type; /* Type of input */
- __u32 audioset; /* Associated audios (bitfield) */
- __u32 tuner; /* Associated tuner */
- v4l2_std_id std;
- __u32 status;
- __u32 reserved[4];
+ __u32 index; /* Which input */
+ __u8 name[32]; /* Label */
+ __u32 type; /* Type of input */
+ __u32 audioset; /* Associated audios (bitfield) */
+ __u32 tuner; /* Associated tuner */
+ v4l2_std_id std;
+ __u32 status;
+ __u32 reserved[4];
};
/* Values for the 'type' field */
-#define V4L2_INPUT_TYPE_TUNER 1
-#define V4L2_INPUT_TYPE_CAMERA 2
+#define V4L2_INPUT_TYPE_TUNER 1
+#define V4L2_INPUT_TYPE_CAMERA 2
/* field 'status' - general */
#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */
#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
/*
- * V I D E O O U T P U T S
+ * V I D E O O U T P U T S
*/
struct v4l2_output
{
- __u32 index; /* Which output */
- __u8 name[32]; /* Label */
- __u32 type; /* Type of output */
- __u32 audioset; /* Associated audios (bitfield) */
- __u32 modulator; /* Associated modulator */
- v4l2_std_id std;
- __u32 reserved[4];
+ __u32 index; /* Which output */
+ __u8 name[32]; /* Label */
+ __u32 type; /* Type of output */
+ __u32 audioset; /* Associated audios (bitfield) */
+ __u32 modulator; /* Associated modulator */
+ v4l2_std_id std;
+ __u32 reserved[4];
};
/* Values for the 'type' field */
-#define V4L2_OUTPUT_TYPE_MODULATOR 1
-#define V4L2_OUTPUT_TYPE_ANALOG 2
-#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
+#define V4L2_OUTPUT_TYPE_MODULATOR 1
+#define V4L2_OUTPUT_TYPE_ANALOG 2
+#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
/*
- * C O N T R O L S
+ * C O N T R O L S
*/
struct v4l2_control
{
- __u32 id;
- __s32 value;
+ __u32 id;
+ __s32 value;
};
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
struct v4l2_queryctrl
{
- __u32 id;
- enum v4l2_ctrl_type type;
- __u8 name[32]; /* Whatever */
- __s32 minimum; /* Note signedness */
- __s32 maximum;
- __s32 step;
- __s32 default_value;
- __u32 flags;
- __u32 reserved[2];
+ __u32 id;
+ enum v4l2_ctrl_type type;
+ __u8 name[32]; /* Whatever */
+ __s32 minimum; /* Note signedness */
+ __s32 maximum;
+ __s32 step;
+ __s32 default_value;
+ __u32 flags;
+ __u32 reserved[2];
};
/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
struct v4l2_querymenu
{
- __u32 id;
- __u32 index;
- __u8 name[32]; /* Whatever */
- __u32 reserved;
+ __u32 id;
+ __u32 index;
+ __u8 name[32]; /* Whatever */
+ __u32 reserved;
};
/* Control flags */
-#define V4L2_CTRL_FLAG_DISABLED 0x0001
-#define V4L2_CTRL_FLAG_GRABBED 0x0002
+#define V4L2_CTRL_FLAG_DISABLED 0x0001
+#define V4L2_CTRL_FLAG_GRABBED 0x0002
/* Control IDs defined by V4L2 */
-#define V4L2_CID_BASE 0x00980900
+#define V4L2_CID_BASE 0x00980900
/* IDs reserved for driver specific controls */
-#define V4L2_CID_PRIVATE_BASE 0x08000000
-
-#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
-#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
-#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
-#define V4L2_CID_HUE (V4L2_CID_BASE+3)
-#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
-#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
-#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
-#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
-#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
-#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
-#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
-#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
-#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
-#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
-#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
-#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
-#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* ? Not sure */
-#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
-#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
-#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
-#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
-#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
-#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
-#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
-#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
+#define V4L2_CID_PRIVATE_BASE 0x08000000
+
+#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
+#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
+#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
+#define V4L2_CID_HUE (V4L2_CID_BASE+3)
+#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
+#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
+#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
+#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
+#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
+#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
+#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)
+#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
+#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
+#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
+#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
+#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
+#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* ? Not sure */
+#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
+#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
+#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
+#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
+#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
+#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
+#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
/*
- * T U N I N G
+ * T U N I N G
*/
struct v4l2_tuner
{
- __u32 index;
- __u8 name[32];
- enum v4l2_tuner_type type;
- __u32 capability;
- __u32 rangelow;
- __u32 rangehigh;
- __u32 rxsubchans;
- __u32 audmode;
- __s32 signal;
- __s32 afc;
- __u32 reserved[4];
+ __u32 index;
+ __u8 name[32];
+ enum v4l2_tuner_type type;
+ __u32 capability;
+ __u32 rangelow;
+ __u32 rangehigh;
+ __u32 rxsubchans;
+ __u32 audmode;
+ __s32 signal;
+ __s32 afc;
+ __u32 reserved[4];
};
struct v4l2_modulator
{
- __u32 index;
- __u8 name[32];
- __u32 capability;
- __u32 rangelow;
- __u32 rangehigh;
- __u32 txsubchans;
- __u32 reserved[4];
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 rangelow;
+ __u32 rangehigh;
+ __u32 txsubchans;
+ __u32 reserved[4];
};
/* Flags for the 'capability' field */
-#define V4L2_TUNER_CAP_LOW 0x0001
-#define V4L2_TUNER_CAP_NORM 0x0002
-#define V4L2_TUNER_CAP_STEREO 0x0010
-#define V4L2_TUNER_CAP_LANG2 0x0020
-#define V4L2_TUNER_CAP_SAP 0x0020
-#define V4L2_TUNER_CAP_LANG1 0x0040
+#define V4L2_TUNER_CAP_LOW 0x0001
+#define V4L2_TUNER_CAP_NORM 0x0002
+#define V4L2_TUNER_CAP_STEREO 0x0010
+#define V4L2_TUNER_CAP_LANG2 0x0020
+#define V4L2_TUNER_CAP_SAP 0x0020
+#define V4L2_TUNER_CAP_LANG1 0x0040
/* Flags for the 'rxsubchans' field */
-#define V4L2_TUNER_SUB_MONO 0x0001
-#define V4L2_TUNER_SUB_STEREO 0x0002
-#define V4L2_TUNER_SUB_LANG2 0x0004
-#define V4L2_TUNER_SUB_SAP 0x0004
-#define V4L2_TUNER_SUB_LANG1 0x0008
+#define V4L2_TUNER_SUB_MONO 0x0001
+#define V4L2_TUNER_SUB_STEREO 0x0002
+#define V4L2_TUNER_SUB_LANG2 0x0004
+#define V4L2_TUNER_SUB_SAP 0x0004
+#define V4L2_TUNER_SUB_LANG1 0x0008
/* Values for the 'audmode' field */
-#define V4L2_TUNER_MODE_MONO 0x0000
-#define V4L2_TUNER_MODE_STEREO 0x0001
-#define V4L2_TUNER_MODE_LANG2 0x0002
-#define V4L2_TUNER_MODE_SAP 0x0002
-#define V4L2_TUNER_MODE_LANG1 0x0003
+#define V4L2_TUNER_MODE_MONO 0x0000
+#define V4L2_TUNER_MODE_STEREO 0x0001
+#define V4L2_TUNER_MODE_LANG2 0x0002
+#define V4L2_TUNER_MODE_SAP 0x0002
+#define V4L2_TUNER_MODE_LANG1 0x0003
struct v4l2_frequency
{
- __u32 tuner;
- enum v4l2_tuner_type type;
- __u32 frequency;
- __u32 reserved[8];
+ __u32 tuner;
+ enum v4l2_tuner_type type;
+ __u32 frequency;
+ __u32 reserved[8];
};
/*
- * A U D I O
+ * A U D I O
*/
struct v4l2_audio
{
- __u32 index;
- __u8 name[32];
- __u32 capability;
- __u32 mode;
- __u32 reserved[2];
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 mode;
+ __u32 reserved[2];
};
/* Flags for the 'capability' field */
-#define V4L2_AUDCAP_STEREO 0x00001
-#define V4L2_AUDCAP_AVL 0x00002
+#define V4L2_AUDCAP_STEREO 0x00001
+#define V4L2_AUDCAP_AVL 0x00002
/* Flags for the 'mode' field */
-#define V4L2_AUDMODE_AVL 0x00001
+#define V4L2_AUDMODE_AVL 0x00001
struct v4l2_audioout
{
- __u32 index;
- __u8 name[32];
- __u32 capability;
- __u32 mode;
- __u32 reserved[2];
+ __u32 index;
+ __u8 name[32];
+ __u32 capability;
+ __u32 mode;
+ __u32 reserved[2];
};
/*
- * D A T A S E R V I C E S ( V B I )
+ * D A T A S E R V I C E S ( V B I )
*
- * Data services API by Michael Schimek
+ * Data services API by Michael Schimek
*/
struct v4l2_vbi_format
{
- __u32 sampling_rate; /* in 1 Hz */
- __u32 offset;
- __u32 samples_per_line;
- __u32 sample_format; /* V4L2_PIX_FMT_* */
- __s32 start[2];
- __u32 count[2];
- __u32 flags; /* V4L2_VBI_* */
- __u32 reserved[2]; /* must be zero */
+ __u32 sampling_rate; /* in 1 Hz */
+ __u32 offset;
+ __u32 samples_per_line;
+ __u32 sample_format; /* V4L2_PIX_FMT_* */
+ __s32 start[2];
+ __u32 count[2];
+ __u32 flags; /* V4L2_VBI_* */
+ __u32 reserved[2]; /* must be zero */
};
/* VBI flags */
-#define V4L2_VBI_UNSYNC (1<< 0)
-#define V4L2_VBI_INTERLACED (1<< 1)
+#define V4L2_VBI_UNSYNC (1<< 0)
+#define V4L2_VBI_INTERLACED (1<< 1)
/*
- * A G G R E G A T E S T R U C T U R E S
+ * A G G R E G A T E S T R U C T U R E S
*/
-/* Stream data format
+/* Stream data format
*/
struct v4l2_format
{
- enum v4l2_buf_type type;
- union
- {
- struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE
- struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY
- struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE
- __u8 raw_data[200]; // user-defined
- } fmt;
+ enum v4l2_buf_type type;
+ union
+ {
+ struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE
+ struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY
+ struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE
+ __u8 raw_data[200]; // user-defined
+ } fmt;
};
-/* Stream type-dependent parameters
+/* Stream type-dependent parameters
*/
struct v4l2_streamparm
{
- enum v4l2_buf_type type;
- union
- {
- struct v4l2_captureparm capture;
- struct v4l2_outputparm output;
- __u8 raw_data[200]; /* user-defined */
- } parm;
+ enum v4l2_buf_type type;
+ union
+ {
+ struct v4l2_captureparm capture;
+ struct v4l2_outputparm output;
+ __u8 raw_data[200]; /* user-defined */
+ } parm;
};
/*
- * I O C T L C O D E S F O R V I D E O D E V I C E S
+ * I O C T L C O D E S F O R V I D E O D E V I C E S
*
*/
-#define VIDIOC_QUERYCAP _IOR ('V', 0, struct v4l2_capability)
-#define VIDIOC_RESERVED _IO ('V', 1)
+#define VIDIOC_QUERYCAP _IOR ('V', 0, struct v4l2_capability)
+#define VIDIOC_RESERVED _IO ('V', 1)
#define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc)
-#define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)
-#define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)
+#define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)
+#define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)
#if 0
-#define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)
-#define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)
+#define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)
+#define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)
#endif
-#define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers)
-#define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer)
-#define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer)
-#define VIDIOC_S_FBUF _IOW ('V', 11, struct v4l2_framebuffer)
-#define VIDIOC_OVERLAY _IOWR ('V', 14, int)
-#define VIDIOC_QBUF _IOWR ('V', 15, struct v4l2_buffer)
-#define VIDIOC_DQBUF _IOWR ('V', 17, struct v4l2_buffer)
-#define VIDIOC_STREAMON _IOW ('V', 18, int)
-#define VIDIOC_STREAMOFF _IOW ('V', 19, int)
-#define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)
-#define VIDIOC_S_PARM _IOW ('V', 22, struct v4l2_streamparm)
-#define VIDIOC_G_STD _IOR ('V', 23, v4l2_std_id)
-#define VIDIOC_S_STD _IOW ('V', 24, v4l2_std_id)
-#define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_standard)
-#define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)
-#define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)
-#define VIDIOC_S_CTRL _IOW ('V', 28, struct v4l2_control)
-#define VIDIOC_G_TUNER _IOWR ('V', 29, struct v4l2_tuner)
-#define VIDIOC_S_TUNER _IOW ('V', 30, struct v4l2_tuner)
-#define VIDIOC_G_AUDIO _IOWR ('V', 33, struct v4l2_audio)
-#define VIDIOC_S_AUDIO _IOW ('V', 34, struct v4l2_audio)
-#define VIDIOC_QUERYCTRL _IOWR ('V', 36, struct v4l2_queryctrl)
-#define VIDIOC_QUERYMENU _IOWR ('V', 37, struct v4l2_querymenu)
-#define VIDIOC_G_INPUT _IOR ('V', 38, int)
-#define VIDIOC_S_INPUT _IOWR ('V', 39, int)
-#define VIDIOC_G_OUTPUT _IOR ('V', 46, int)
-#define VIDIOC_S_OUTPUT _IOWR ('V', 47, int)
-#define VIDIOC_ENUMOUTPUT _IOWR ('V', 48, struct v4l2_output)
-#define VIDIOC_G_AUDOUT _IOWR ('V', 49, struct v4l2_audioout)
-#define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)
-#define VIDIOC_G_MODULATOR _IOWR ('V', 54, struct v4l2_modulator)
-#define VIDIOC_S_MODULATOR _IOW ('V', 55, struct v4l2_modulator)
-#define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency)
-#define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency)
-#define VIDIOC_CROPCAP _IOR ('V', 58, struct v4l2_cropcap)
-#define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop)
-#define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop)
-#define VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression)
-#define VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression)
-#define VIDIOC_QUERYSTD _IOR ('V', 63, v4l2_std_id)
-#define VIDIOC_TRY_FMT _IOWR ('V', 64, struct v4l2_format)
-
-#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
+#define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers)
+#define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer)
+#define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer)
+#define VIDIOC_S_FBUF _IOW ('V', 11, struct v4l2_framebuffer)
+#define VIDIOC_OVERLAY _IOWR ('V', 14, int)
+#define VIDIOC_QBUF _IOWR ('V', 15, struct v4l2_buffer)
+#define VIDIOC_DQBUF _IOWR ('V', 17, struct v4l2_buffer)
+#define VIDIOC_STREAMON _IOW ('V', 18, int)
+#define VIDIOC_STREAMOFF _IOW ('V', 19, int)
+#define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)
+#define VIDIOC_S_PARM _IOW ('V', 22, struct v4l2_streamparm)
+#define VIDIOC_G_STD _IOR ('V', 23, v4l2_std_id)
+#define VIDIOC_S_STD _IOW ('V', 24, v4l2_std_id)
+#define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_standard)
+#define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)
+#define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)
+#define VIDIOC_S_CTRL _IOW ('V', 28, struct v4l2_control)
+#define VIDIOC_G_TUNER _IOWR ('V', 29, struct v4l2_tuner)
+#define VIDIOC_S_TUNER _IOW ('V', 30, struct v4l2_tuner)
+#define VIDIOC_G_AUDIO _IOWR ('V', 33, struct v4l2_audio)
+#define VIDIOC_S_AUDIO _IOW ('V', 34, struct v4l2_audio)
+#define VIDIOC_QUERYCTRL _IOWR ('V', 36, struct v4l2_queryctrl)
+#define VIDIOC_QUERYMENU _IOWR ('V', 37, struct v4l2_querymenu)
+#define VIDIOC_G_INPUT _IOR ('V', 38, int)
+#define VIDIOC_S_INPUT _IOWR ('V', 39, int)
+#define VIDIOC_G_OUTPUT _IOR ('V', 46, int)
+#define VIDIOC_S_OUTPUT _IOWR ('V', 47, int)
+#define VIDIOC_ENUMOUTPUT _IOWR ('V', 48, struct v4l2_output)
+#define VIDIOC_G_AUDOUT _IOWR ('V', 49, struct v4l2_audioout)
+#define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)
+#define VIDIOC_G_MODULATOR _IOWR ('V', 54, struct v4l2_modulator)
+#define VIDIOC_S_MODULATOR _IOW ('V', 55, struct v4l2_modulator)
+#define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency)
+#define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency)
+#define VIDIOC_CROPCAP _IOR ('V', 58, struct v4l2_cropcap)
+#define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop)
+#define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop)
+#define VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression)
+#define VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression)
+#define VIDIOC_QUERYSTD _IOR ('V', 63, v4l2_std_id)
+#define VIDIOC_TRY_FMT _IOWR ('V', 64, struct v4l2_format)
+
+#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
#ifdef __KERNEL__
/*
*
- * V 4 L 2 D R I V E R H E L P E R A P I
+ * V 4 L 2 D R I V E R H E L P E R A P I
*
- * Some commonly needed functions for drivers (v4l2-common.o module)
+ * Some commonly needed functions for drivers (v4l2-common.o module)
*/
#include <linux/fs.h>
/* Video standard functions */
extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs);
extern int v4l2_video_std_construct(struct v4l2_standard *vs,
- int id, char *name);
+ int id, char *name);
/* Compatibility layer interface */
typedef int (*v4l2_kioctl)(struct inode *inode, struct file *file,
- unsigned int cmd, void *arg);
+ unsigned int cmd, void *arg);
int v4l_compat_translate_ioctl(struct inode *inode, struct file *file,
- int cmd, void *arg, v4l2_kioctl driver_ioctl);
+ int cmd, void *arg, v4l2_kioctl driver_ioctl);
/* names for fancy debug output */
extern char *v4l2_field_names[];
*pi_int = 0;
break;
- case ACCESS_SET_PAUSE_STATE:
+ case ACCESS_SET_PAUSE_STATE:
break;
/* Forward everything else to the source access */
/* Only conversion to Stereo and 4.0 right now */
if( p_filter->output.i_physical_channels !=
- (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)
+ (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)
&& p_filter->output.i_physical_channels !=
( AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT |
AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT) )
if ( ((p_sys->i_flags & A52_CHANNEL_MASK) == A52_CHANNEL1
|| (p_sys->i_flags & A52_CHANNEL_MASK) == A52_CHANNEL2
|| (p_sys->i_flags & A52_CHANNEL_MASK) == A52_MONO)
- && (p_filter->output.i_physical_channels
+ && (p_filter->output.i_physical_channels
& (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) )
{
Duplicate( (float *)(p_out_buf->p_buffer + i * i_bytes_per_block),
}
/*****************************************************************************
- * OpenFilter:
+ * OpenFilter:
*****************************************************************************/
static int OpenFilter( vlc_object_t *p_this )
{
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
}
/*****************************************************************************
- * Open:
+ * Open:
*****************************************************************************/
static int Open( vlc_object_t *p_this, filter_sys_t *p_sys,
audio_format_t input, audio_format_t output )
p_samples = dca_samples( p_sys->p_libdca );
if ( (p_sys->i_flags & DCA_CHANNEL_MASK) == DCA_MONO
- && (p_filter->output.i_physical_channels
+ && (p_filter->output.i_physical_channels
& (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) )
{
Duplicate( (float *)(p_out_buf->p_buffer + i * i_bytes_per_block),
}
/*****************************************************************************
- * OpenFilter:
+ * OpenFilter:
*****************************************************************************/
static int OpenFilter( vlc_object_t *p_this )
{
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
static int Create ( vlc_object_t * );
static void Destroy ( vlc_object_t * );
-static void DoWork ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
+static void DoWork ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
aout_buffer_t * );
static int OpenFilter ( vlc_object_t * );
vlc_module_end();
/*****************************************************************************
- * Create:
+ * Create:
*****************************************************************************/
static int Create( vlc_object_t *p_this )
{
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
p_out_buf->i_nb_samples = p_in_buf->i_nb_samples;
- p_out_buf->i_nb_bytes = p_in_buf->i_nb_samples * sizeof(vlc_fixed_t) *
+ p_out_buf->i_nb_bytes = p_in_buf->i_nb_samples * sizeof(vlc_fixed_t) *
aout_FormatNbChannels( &p_filter->output );
/* Do the actual decoding now. */
}
/*****************************************************************************
- * OpenFilter:
+ * OpenFilter:
*****************************************************************************/
static int OpenFilter( vlc_object_t *p_this )
{
{ VLC_FOURCC('s','8',' ',' '), AOUT_FMT_U16_NE, S8toU16 },
{ VLC_FOURCC('s','8',' ',' '), AOUT_FMT_U16_IE, S8toU16Invert },
{ VLC_FOURCC('s','8',' ',' '), VLC_FOURCC('u','8',' ',' '), S8toU8 },
-
+
/* From u8 */
{ VLC_FOURCC('u','8',' ',' '), VLC_FOURCC('f','l','3','2'), U8toFloat32 },
{ VLC_FOURCC('u','8',' ',' '), AOUT_FMT_S16_NE, U8toS16 },
else out = *p_in * 8388608.0;
#ifdef WORDS_BIGENDIAN
- *((int16_t *)p_out) = out >> 8;
- p_out[2] = out & 0xFF;
+ *((int16_t *)p_out) = out >> 8;
+ p_out[2] = out & 0xFF;
#else
- *((int16_t *)(p_out+1)) = out >> 8;
- p_out[0] = out & 0xFF;
+ *((int16_t *)(p_out+1)) = out >> 8;
+ p_out[0] = out & 0xFF;
#endif
p_in++; p_out += 3;
float coeffs[5*5];
/* State */
float *p_state;
-
+
} aout_filter_sys_t;
p_sys->f_lowgain = config_GetFloat( p_this, "param-eq-lowgain");
p_sys->f_highf = config_GetFloat( p_this, "param-eq-highf");
p_sys->f_highgain = config_GetFloat( p_this, "param-eq-highgain");
-
+
p_sys->f_f1 = config_GetFloat( p_this, "param-eq-f1");
p_sys->f_Q1 = config_GetFloat( p_this, "param-eq-q1");
p_sys->f_gain1 = config_GetFloat( p_this, "param-eq-gain1");
-
+
p_sys->f_f2 = config_GetFloat( p_this, "param-eq-f2");
p_sys->f_Q2 = config_GetFloat( p_this, "param-eq-q2");
p_sys->f_gain2 = config_GetFloat( p_this, "param-eq-gain2");
p_sys->f_f3 = config_GetFloat( p_this, "param-eq-f3");
p_sys->f_Q3 = config_GetFloat( p_this, "param-eq-q3");
p_sys->f_gain3 = config_GetFloat( p_this, "param-eq-gain3");
-
+
i_samplerate = p_filter->input.i_rate;
CalcPeakEQCoeffs(p_sys->f_f1, p_sys->f_Q1, p_sys->f_gain1,
p_out_buf->i_nb_bytes = p_in_buf->i_nb_bytes;
ProcessEQ( (float*)p_in_buf->p_buffer, (float*)p_out_buf->p_buffer,
- p_filter->p_sys->p_state,
+ p_filter->p_sys->p_state,
p_filter->input.i_channels, p_in_buf->i_nb_samples,
p_filter->p_sys->coeffs, 5 );
}
* coeffs[3] = a1
* coeffs[4] = a2
*
- * Equations taken from RBJ audio EQ cookbook
+ * Equations taken from RBJ audio EQ cookbook
* (http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt)
*/
static void CalcPeakEQCoeffs( float f0, float Q, float gainDB, float Fs,
float a0, a1, a2;
// Provide sane limits to avoid overflow
- if (Q < 0.1f) Q = 0.1f;
+ if (Q < 0.1f) Q = 0.1f;
if (Q > 100) Q = 100;
if (f0 > Fs/2*0.95f) f0 = Fs/2*0.95f;
if (gainDB < -40) gainDB = -40;
if (gainDB > 40) gainDB = 40;
-
+
A = pow(10, gainDB/40);
w0 = 2*3.141593f*f0/Fs;
alpha = sin(w0)/(2*Q);
-
+
b0 = 1 + alpha*A;
b1 = -2*cos(w0);
b2 = 1 - alpha*A;
a0 = 1 + alpha/A;
a1 = -2*cos(w0);
a2 = 1 - alpha/A;
-
+
// Store values to coeffs and normalize by 1/a0
coeffs[0] = b0/a0;
coeffs[1] = b1/a0;
* coeffs[3] = a1
* coeffs[4] = a2
*
- * Equations taken from RBJ audio EQ cookbook
+ * Equations taken from RBJ audio EQ cookbook
* (http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt)
*/
static void CalcShelfEQCoeffs( float f0, float slope, float gainDB, int high,
samples is not premultiplied by channels
size of coeffs is 5*eqCount
*/
-void ProcessEQ( float *src, float *dest, float *state,
- unsigned channels, unsigned samples, float *coeffs,
+void ProcessEQ( float *src, float *dest, float *state,
+ unsigned channels, unsigned samples, float *coeffs,
unsigned eqCount )
{
unsigned i, chn, eq;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
if( p_filter->p_sys->d_old_factor == 1 )
{
/* Just copy the samples */
- memcpy( p_out, p_in,
+ memcpy( p_out, p_in,
p_filter->input.i_bytes_per_frame );
p_in += i_nb_channels;
p_out += i_nb_channels;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
struct filter_sys_t * p_sys;
-
+
if ( p_filter->input.i_rate == p_filter->output.i_rate
|| p_filter->input.i_format != p_filter->output.i_format
|| p_filter->input.i_physical_channels
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
-
+
free( p_sys->p_prev_sample );
free( p_sys );
}
{
return VLC_EGENERIC;
}
-
+
/* Allocate the memory needed to store the module's structure */
p_filter->p_sys = p_sys = malloc( sizeof(struct filter_sys_t) );
if( p_sys == NULL )
if( p_block ) p_block->pf_release( p_block );
return NULL;
}
-
+
i_bytes_per_frame = p_filter->fmt_out.audio.i_channels *
p_filter->fmt_out.audio.i_bitspersample / 8;
-
- i_out_size = i_bytes_per_frame * ( 1 + (p_block->i_samples *
+
+ i_out_size = i_bytes_per_frame * ( 1 + (p_block->i_samples *
p_filter->fmt_out.audio.i_rate / p_filter->fmt_in.audio.i_rate));
p_out = p_filter->pf_audio_buffer_new( p_filter, i_out_size );
DoWork( (aout_instance_t *)p_filter, &aout_filter, &in_buf, &out_buf );
p_block->pf_release( p_block );
-
+
p_out->i_buffer = out_buf.i_nb_bytes;
p_out->i_samples = out_buf.i_nb_samples;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
p_input = p_aout->pp_inputs[i];
if ( p_input->b_error ) continue;
p_fifo = &p_input->fifo;
- p_deleted = p_fifo->p_first;
+ p_deleted = p_fifo->p_first;
while ( p_deleted != NULL )
{
aout_buffer_t * p_next = p_deleted->p_next;
}
/* Special case for mono on stereo only boards */
- i_channels = aout_FormatNbChannels( &p_aout->output.output );
+ i_channels = aout_FormatNbChannels( &p_aout->output.output );
var_Change( p_aout, "audio-device", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int <= 0 && i_channels == 1 )
{
if( (psz_device = config_GetPsz( p_aout, "alsadev" )) == NULL )
{
msg_Err( p_aout, "no audio device given (maybe \"default\" ?)" );
- intf_UserFatal( p_aout, VLC_FALSE, _("No Audio Device"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("No Audio Device"),
_("No audio device name was given. You might want to " \
"enter \"default\".") );
free( p_sys );
{
msg_Err( p_aout, "cannot open ALSA device `%s' (%s)",
psz_iec_device, snd_strerror( i_snd_rc ) );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
_("VLC could not open the ALSA device \"%s\" (%s)."),
psz_iec_device, snd_strerror( i_snd_rc ) );
free( p_sys );
{
msg_Err( p_aout, "audio device: %s is already in use",
psz_device );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
_("The audio device \"%s\" is already in use."),
psz_device );
}
{
msg_Err( p_aout, "cannot open ALSA device `%s' (%s)",
psz_device, snd_strerror( i_snd_rc ) );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
_("VLC could not open the ALSA device \"%s\" (%s)."),
psz_device, snd_strerror( i_snd_rc ) );
free( p_sys );
snd_ctl_t *p_ctl;
char psz_dev[64];
char *psz_card_name;
-
+
sprintf(psz_dev, "hw:%i", i_card);
-
+
if (( i_err = snd_ctl_open(&p_ctl, psz_dev, 0)) < 0 )
{
return;
}
-
+
if ((i_err = snd_card_get_name(i_card, &psz_card_name)) != 0)
{
psz_card_name = _("Unknown soundcard");
{
int i_card = -1;
int i_err = 0;
-
+
if ((i_err = snd_card_next(&i_card)) != 0)
{
// g_warning("snd_next_card() failed: %s", snd_strerror(-err));
return;
}
-
+
while (i_card > -1)
{
GetDevicesForCard(p_item, i_card);
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
set_category( CAT_AUDIO );
set_subcategory( SUBCAT_AUDIO_AOUT );
set_callbacks( Open, Close );
- add_integer( "macosx-audio-device", 0, NULL, ADEV_TEXT, ADEV_LONGTEXT, VLC_FALSE );
+ add_integer( "macosx-audio-device", 0, NULL, ADEV_TEXT, ADEV_LONGTEXT, VLC_FALSE );
vlc_module_end();
/*****************************************************************************
memset( p_sys->p_remainder_buffer, 0, sizeof(uint8_t) * BUFSIZE );
p_aout->output.pf_play = Play;
-
+
aout_FormatPrint( p_aout, "VLC is looking for:", (audio_sample_format_t *)&p_aout->output.output );
-
+
/* Persistent device variable */
if( var_Type( p_aout->p_libvlc, "macosx-audio-device" ) == 0 )
{
if( b_alive == VLC_FALSE )
{
- msg_Warn( p_aout, "selected audio device is not alive, switching to default device" );
+ msg_Warn( p_aout, "selected audio device is not alive, switching to default device" );
p_sys->i_selected_dev = p_sys->i_default_dev;
}
if( p_sys->i_hog_pid != -1 && p_sys->i_hog_pid != getpid() )
{
msg_Err( p_aout, "Selected audio device is exclusively in use by another program." );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio output failed"),
_("The selected audio output device is exclusively in "
"use by another program.") );
goto error;
struct aout_sys_t *p_sys = p_aout->output.p_sys;
OSStatus err = noErr;
UInt32 i_param_size = 0, i = 0;
- int i_original;
+ int i_original;
ComponentDescription desc;
AudioStreamBasicDescription DeviceFormat;
AudioChannelLayout *layout;
msg_Warn( p_aout, "we cannot open our HAL component" );
return VLC_FALSE;
}
-
+
/* Set the device we will use for this output unit */
err = AudioUnitSetProperty( p_sys->au_unit,
kAudioOutputUnitProperty_CurrentDevice,
0,
&p_sys->i_selected_dev,
sizeof( AudioDeviceID ));
-
+
if( err != noErr )
{
msg_Warn( p_aout, "we cannot select the audio device" );
return VLC_FALSE;
}
-
+
/* Get the current format */
i_param_size = sizeof(AudioStreamBasicDescription);
0,
&DeviceFormat,
&i_param_size );
-
+
if( err != noErr ) return VLC_FALSE;
else msg_Dbg( p_aout, STREAM_FORMAT_MSG( "current format is: ", DeviceFormat ) );
0,
layout,
&i_param_size ));
-
+
/* We need to "fill out" the ChannelLayout, because there are multiple ways that it can be set */
if( layout->mChannelLayoutTag == kAudioChannelLayoutTag_UseChannelBitmap)
{
sizeof( AudioChannelLayoutTag ), &layout->mChannelLayoutTag,
&i_param_size,
layout ));
- }
+ }
msg_Dbg( p_aout, "layout of AUHAL has %d channels" , (int)layout->mNumberChannelDescriptions );
-
+
/* Initialize the VLC core channel count */
p_aout->output.output.i_physical_channels = 0;
i_original = p_aout->output.output.i_original_channels & AOUT_CHAN_PHYSMASK;
-
+
if( i_original == AOUT_CHAN_CENTER || layout->mNumberChannelDescriptions < 2 )
{
/* We only need Mono or cannot output more than 1 channel */
{
p_aout->output.output.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
msg_Err( p_aout, "You should configure your speaker layout with Audio Midi Setup Utility in /Applications/Utilities. Now using Stereo mode." );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio device is not configured"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio device is not configured"),
_("You should configure your speaker layout with "
"the \"Audio Midi Setup Utility\" in /Applications/"
"Utilities. Stereo mode is being used now.") );
DeviceFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked;
DeviceFormat.mBitsPerChannel = 32;
DeviceFormat.mChannelsPerFrame = aout_FormatNbChannels( &p_aout->output.output );
-
+
/* Calculate framesizes and stuff */
DeviceFormat.mFramesPerPacket = 1;
DeviceFormat.mBytesPerFrame = DeviceFormat.mBitsPerChannel * DeviceFormat.mChannelsPerFrame / 8;
0,
&DeviceFormat,
i_param_size ));
-
+
msg_Dbg( p_aout, STREAM_FORMAT_MSG( "we set the AU format: " , DeviceFormat ) );
-
+
/* Retrieve actual format */
verify_noerr( AudioUnitGetProperty( p_sys->au_unit,
kAudioUnitProperty_StreamFormat,
0,
&DeviceFormat,
&i_param_size ));
-
+
msg_Dbg( p_aout, STREAM_FORMAT_MSG( "the actual set AU format is " , DeviceFormat ) );
/* Do the last VLC aout setups */
/* set the IOproc callback */
input.inputProc = (AURenderCallback) RenderCallbackAnalog;
input.inputProcRefCon = p_aout;
-
+
verify_noerr( AudioUnitSetProperty( p_sys->au_unit,
kAudioUnitProperty_SetRenderCallback,
kAudioUnitScope_Input,
input.inputProc = (AURenderCallback) RenderCallbackAnalog;
input.inputProcRefCon = p_aout;
-
+
/* Set the new_layout as the layout VLC will use to feed the AU unit */
verify_noerr( AudioUnitSetProperty( p_sys->au_unit,
kAudioUnitProperty_AudioChannelLayout,
kAudioUnitScope_Input,
0, &new_layout, sizeof(new_layout) ) );
-
+
if( new_layout.mNumberChannelDescriptions > 0 )
free( new_layout.mChannelDescriptions );
-
+
/* AU initiliaze */
verify_noerr( AudioUnitInitialize(p_sys->au_unit) );
/* Find the difference between device clock and mdate clock */
p_sys->clock_diff = - (mtime_t)
- AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
+ AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
p_sys->clock_diff += mdate();
/* Start the AU */
verify_noerr( AudioOutputUnitStart(p_sys->au_unit) );
-
+
return VLC_TRUE;
}
/* Hog the device */
i_param_size = sizeof( p_sys->i_hog_pid );
p_sys->i_hog_pid = getpid() ;
-
+
err = AudioDeviceSetProperty( p_sys->i_selected_dev, 0, 0, FALSE,
kAudioDevicePropertyHogMode, i_param_size, &p_sys->i_hog_pid );
-
+
if( err != noErr )
{
msg_Err( p_aout, "failed to set hogmode: [%4.4s]", (char *)&err );
err = AudioDeviceGetProperty( p_sys->i_selected_dev, 0, FALSE, kAudioDevicePropertySupportsMixing,
&i_param_size, &b_mix );
-
+
if( !err && b_writeable )
{
b_mix = 0;
kAudioDevicePropertySupportsMixing, i_param_size, &b_mix );
p_sys->b_changed_mixing = VLC_TRUE;
}
-
+
if( err != noErr )
{
msg_Err( p_aout, "failed to set mixmode: [%4.4s]", (char *)&err );
msg_Err( p_aout, "could not get number of streams: [%4.4s]", (char *)&err );
return VLC_FALSE;
}
-
+
i_streams = i_param_size / sizeof( AudioStreamID );
p_streams = (AudioStreamID *)malloc( i_param_size );
if( p_streams == NULL )
msg_Err( p_aout, "out of memory" );
return VLC_FALSE;
}
-
+
err = AudioDeviceGetProperty( p_sys->i_selected_dev, 0, FALSE,
kAudioDevicePropertyStreams,
&i_param_size, p_streams );
-
+
if( err != noErr )
{
msg_Err( p_aout, "could not get number of streams: [%4.4s]", (char *)&err );
AudioStreamBasicDescription *p_format_list = NULL;
int i_formats = 0, j = 0;
vlc_bool_t b_digital = VLC_FALSE;
-
+
/* Retrieve all the stream formats supported by each output stream */
err = AudioStreamGetPropertyInfo( p_streams[i], 0,
kAudioStreamPropertyPhysicalFormats,
msg_Err( p_aout, "could not get number of streamformats: [%4.4s]", (char *)&err );
continue;
}
-
+
i_formats = i_param_size / sizeof( AudioStreamBasicDescription );
p_format_list = (AudioStreamBasicDescription *)malloc( i_param_size );
if( p_format_list == NULL )
msg_Err( p_aout, "could not malloc the memory" );
continue;
}
-
+
err = AudioStreamGetProperty( p_streams[i], 0,
kAudioStreamPropertyPhysicalFormats,
&i_param_size, p_format_list );
break;
}
}
-
+
if( b_digital )
{
/* if this stream supports a digital (cac3) format, then go set it. */
i_param_size = sizeof( p_sys->sfmt_revert );
err = AudioStreamGetProperty( p_sys->i_stream_id, 0,
kAudioStreamPropertyPhysicalFormat,
- &i_param_size,
+ &i_param_size,
&p_sys->sfmt_revert );
if( err != noErr )
{
msg_Err( p_aout, "could not retrieve the original streamformat: [%4.4s]", (char *)&err );
- continue;
+ continue;
}
p_sys->b_revert = VLC_TRUE;
}
i_backup_rate_format = j;
}
}
-
+
}
-
+
if( i_requested_rate_format >= 0 ) /* We prefer to output at the samplerate of the original audio */
p_sys->stream_format = p_format_list[i_requested_rate_format];
else if( i_current_rate_format >= 0 ) /* If not possible, we will try to use the current samplerate of the device */
/* Check for the difference between the Device clock and mdate */
p_sys->clock_diff = - (mtime_t)
- AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
+ AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
p_sys->clock_diff += mdate();
/* Start device */
- err = AudioDeviceStart( p_sys->i_selected_dev, (AudioDeviceIOProc)RenderCallbackSPDIF );
+ err = AudioDeviceStart( p_sys->i_selected_dev, (AudioDeviceIOProc)RenderCallbackSPDIF );
if( err != noErr )
{
msg_Err( p_aout, "AudioDeviceStart failed: [%4.4s]", (char *)&err );
- err = AudioDeviceRemoveIOProc( p_sys->i_selected_dev,
+ err = AudioDeviceRemoveIOProc( p_sys->i_selected_dev,
(AudioDeviceIOProc)RenderCallbackSPDIF );
if( err != noErr )
{
struct aout_sys_t *p_sys = p_aout->output.p_sys;
OSStatus err = noErr;
UInt32 i_param_size = 0;
-
+
if( p_sys->au_unit )
{
verify_noerr( AudioOutputUnitStop( p_sys->au_unit ) );
verify_noerr( AudioUnitUninitialize( p_sys->au_unit ) );
verify_noerr( CloseComponent( p_sys->au_unit ) );
}
-
+
if( p_sys->b_digital )
{
/* Stop device */
- err = AudioDeviceStop( p_sys->i_selected_dev,
- (AudioDeviceIOProc)RenderCallbackSPDIF );
+ err = AudioDeviceStop( p_sys->i_selected_dev,
+ (AudioDeviceIOProc)RenderCallbackSPDIF );
if( err != noErr )
{
msg_Err( p_aout, "AudioDeviceStop failed: [%4.4s]", (char *)&err );
{
msg_Err( p_aout, "AudioDeviceRemoveIOProc failed: [%4.4s]", (char *)&err );
}
-
+
if( p_sys->b_revert )
{
AudioStreamChangeFormat( p_aout, p_sys->i_stream_id, p_sys->sfmt_revert );
err = AudioDeviceGetProperty( p_sys->i_selected_dev, 0, FALSE, kAudioDevicePropertySupportsMixing,
&i_param_size, &b_mix );
-
+
if( !err && b_writeable )
{
msg_Dbg( p_aout, "mixable is: %d", b_mix );
err = AudioHardwareRemovePropertyListener( kAudioHardwarePropertyDevices,
HardwareListener );
-
+
if( err != noErr )
{
msg_Err( p_aout, "AudioHardwareRemovePropertyListener failed: [%4.4s]", (char *)&err );
}
-
+
if( p_sys->i_hog_pid == getpid() )
{
p_sys->i_hog_pid = -1;
kAudioDevicePropertyHogMode, i_param_size, &p_sys->i_hog_pid );
if( err != noErr ) msg_Err( p_aout, "Could not release hogmode: [%4.4s]", (char *)&err );
}
-
+
if( p_sys ) free( p_sys );
}
goto error;
}
p_sys->i_default_dev = devid_def;
-
+
var_Create( p_aout, "audio-device", VLC_VAR_INTEGER|VLC_VAR_HASCHOICE );
text.psz_string = _("Audio Device");
var_Change( p_aout, "audio-device", VLC_VAR_SETTEXT, &text, NULL );
-
+
for( i = 0; i < p_sys->i_devices; i++ )
{
char *psz_name;
var_Set( p_aout, "audio-device", val );
}
}
-
+
free( psz_name);
}
-
+
/* If a device is already "preselected", then use this device */
var_Get( p_aout->p_libvlc, "macosx-audio-device", &val );
if( val.i_int > 0 )
var_Change( p_aout, "audio-device", VLC_VAR_SETDEFAULT, &val, NULL );
var_Set( p_aout, "audio-device", val );
}
-
+
/* If we change the device we want to use, we should renegotiate the audio chain */
var_AddCallback( p_aout, "audio-device", AudioDeviceCallback, NULL );
/* Attach a Listener so that we are notified of a change in the Device setup */
err = AudioHardwareAddPropertyListener( kAudioHardwarePropertyDevices,
- HardwareListener,
+ HardwareListener,
(void *)p_aout );
if( err )
goto error;
*****************************************************************************/
static int AudioDeviceHasOutput( AudioDeviceID i_dev_id )
{
- UInt32 dataSize;
- Boolean isWritable;
-
+ UInt32 dataSize;
+ Boolean isWritable;
+
verify_noerr( AudioDeviceGetPropertyInfo( i_dev_id, 0, FALSE, kAudioDevicePropertyStreams, &dataSize, &isWritable) );
if (dataSize == 0) return FALSE;
-
+
return TRUE;
}
AudioStreamID *p_streams = NULL;
int i = 0, i_streams = 0;
vlc_bool_t b_return = VLC_FALSE;
-
+
/* Retrieve all the output streams */
err = AudioDeviceGetPropertyInfo( i_dev_id, 0, FALSE,
kAudioDevicePropertyStreams,
msg_Err( p_aout, "could not get number of streams: [%4.4s]", (char *)&err );
return VLC_FALSE;
}
-
+
i_streams = i_param_size / sizeof( AudioStreamID );
p_streams = (AudioStreamID *)malloc( i_param_size );
if( p_streams == NULL )
msg_Err( p_aout, "out of memory" );
return VLC_ENOMEM;
}
-
+
err = AudioDeviceGetProperty( i_dev_id, 0, FALSE,
kAudioDevicePropertyStreams,
&i_param_size, p_streams );
-
+
if( err != noErr )
{
msg_Err( p_aout, "could not get number of streams: [%4.4s]", (char *)&err );
if( AudioStreamSupportsDigital( p_aout, p_streams[i] ) )
b_return = VLC_TRUE;
}
-
+
if( p_streams ) free( p_streams );
return b_return;
}
AudioStreamBasicDescription *p_format_list = NULL;
int i = 0, i_formats = 0;
vlc_bool_t b_return = VLC_FALSE;
-
+
/* Retrieve all the stream formats supported by each output stream */
err = AudioStreamGetPropertyInfo( i_stream_id, 0,
kAudioStreamPropertyPhysicalFormats,
msg_Err( p_aout, "could not get number of streamformats: [%4.4s]", (char *)&err );
return VLC_FALSE;
}
-
+
i_formats = i_param_size / sizeof( AudioStreamBasicDescription );
p_format_list = (AudioStreamBasicDescription *)malloc( i_param_size );
if( p_format_list == NULL )
msg_Err( p_aout, "could not malloc the memory" );
return VLC_FALSE;
}
-
+
err = AudioStreamGetProperty( i_stream_id, 0,
kAudioStreamPropertyPhysicalFormats,
&i_param_size, p_format_list );
for( i = 0; i < i_formats; i++ )
{
msg_Dbg( p_aout, STREAM_FORMAT_MSG( "supported format: ", p_format_list[i] ) );
-
+
if( p_format_list[i].mFormatID == 'IAC3' ||
p_format_list[i].mFormatID == kAudioFormat60958AC3 )
{
b_return = VLC_TRUE;
}
}
-
+
if( p_format_list ) free( p_format_list );
return b_return;
}
struct timeval now;
struct timespec timeout;
struct { vlc_mutex_t lock; vlc_cond_t cond; } w;
-
+
msg_Dbg( p_aout, STREAM_FORMAT_MSG( "setting stream format: ", change_format ) );
- /* Condition because SetProperty is asynchronious */
+ /* Condition because SetProperty is asynchronious */
vlc_cond_init( p_aout, &w.cond );
vlc_mutex_init( p_aout, &w.lock );
vlc_mutex_lock( &w.lock );
err = AudioStreamSetProperty( i_stream_id, 0, 0,
kAudioStreamPropertyPhysicalFormat,
sizeof( AudioStreamBasicDescription ),
- &change_format );
+ &change_format );
if( err != noErr )
{
msg_Err( p_aout, "could not set the stream format: [%4.4s]", (char *)&err );
i_param_size = sizeof( AudioStreamBasicDescription );
err = AudioStreamGetProperty( i_stream_id, 0,
kAudioStreamPropertyPhysicalFormat,
- &i_param_size,
+ &i_param_size,
&actual_format );
msg_Dbg( p_aout, STREAM_FORMAT_MSG( "actual format in use: ", actual_format ) );
}
/* We need to check again */
}
-
+
/* Removing the property listener */
err = AudioStreamRemovePropertyListener( i_stream_id, 0,
kAudioStreamPropertyPhysicalFormat,
msg_Err( p_aout, "AudioStreamRemovePropertyListener failed: [%4.4s]", (char *)&err );
return VLC_FALSE;
}
-
+
/* Destroy the lock and condition */
vlc_mutex_unlock( &w.lock );
vlc_mutex_destroy( &w.lock );
vlc_cond_destroy( &w.cond );
-
+
return VLC_TRUE;
}
{
AudioTimeStamp host_time;
mtime_t current_date = 0;
- uint32_t i_mData_bytes = 0;
+ uint32_t i_mData_bytes = 0;
aout_instance_t * p_aout = (aout_instance_t *)_p_aout;
struct aout_sys_t * p_sys = p_aout->output.p_sys;
/* Check for the difference between the Device clock and mdate */
p_sys->clock_diff = - (mtime_t)
- AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
+ AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() ) / 1000;
p_sys->clock_diff += mdate();
current_date = p_sys->clock_diff +
p_sys->i_read_bytes += i_mData_bytes;
current_date += (mtime_t) ( (mtime_t) 1000000 / p_aout->output.output.i_rate ) *
( i_mData_bytes / 4 / aout_FormatNbChannels( &p_aout->output.output ) ); // 4 is fl32 specific
-
+
if( p_sys->i_read_bytes >= p_sys->i_total_bytes )
p_sys->i_read_bytes = p_sys->i_total_bytes = 0;
}
-
+
while( i_mData_bytes < ioData->mBuffers[0].mDataByteSize )
{
/* We don't have enough data yet */
aout_buffer_t * p_buffer;
p_buffer = aout_OutputNextBuffer( p_aout, current_date , VLC_FALSE );
-
+
if( p_buffer != NULL )
{
uint32_t i_second_mData_bytes = __MIN( p_buffer->i_nb_bytes, ioData->mBuffers[0].mDataByteSize - i_mData_bytes );
-
+
p_aout->p_libvlc->pf_memcpy( (uint8_t *)ioData->mBuffers[0].mData + i_mData_bytes, p_buffer->p_buffer, i_second_mData_bytes );
i_mData_bytes += i_second_mData_bytes;
i_mData_bytes += ioData->mBuffers[0].mDataByteSize - i_mData_bytes;
}
}
- return( noErr );
+ return( noErr );
}
/*****************************************************************************
* RenderCallbackSPDIF: callback for SPDIF audio output
*****************************************************************************/
static OSStatus RenderCallbackSPDIF( AudioDeviceID inDevice,
- const AudioTimeStamp * inNow,
+ const AudioTimeStamp * inNow,
const void * inInputData,
- const AudioTimeStamp * inInputTime,
+ const AudioTimeStamp * inInputTime,
AudioBufferList * outOutputData,
- const AudioTimeStamp * inOutputTime,
+ const AudioTimeStamp * inOutputTime,
void * threadGlobals )
{
aout_buffer_t * p_buffer;
/* Check for the difference between the Device clock and mdate */
p_sys->clock_diff = - (mtime_t)
- AudioConvertHostTimeToNanos( inNow->mHostTime ) / 1000;
+ AudioConvertHostTimeToNanos( inNow->mHostTime ) / 1000;
p_sys->clock_diff += mdate();
current_date = p_sys->clock_diff +
{
if( (int)BUFFER.mDataByteSize != (int)p_buffer->i_nb_bytes)
msg_Warn( p_aout, "bytesize: %d nb_bytes: %d", (int)BUFFER.mDataByteSize, (int)p_buffer->i_nb_bytes );
-
+
/* move data into output data buffer */
p_aout->p_libvlc->pf_memcpy( BUFFER.mData,
p_buffer->p_buffer, p_buffer->i_nb_bytes );
}
#undef BUFFER
- return( noErr );
+ return( noErr );
}
/*****************************************************************************
}
/*****************************************************************************
- * StreamListener
+ * StreamListener
*****************************************************************************/
static OSStatus StreamListener( AudioStreamID inStream,
UInt32 inChannel,
{
OSStatus err = noErr;
struct { vlc_mutex_t lock; vlc_cond_t cond; } * w = inClientData;
-
+
switch( inPropertyID )
{
case kAudioStreamPropertyPhysicalFormat:
vlc_mutex_lock( &w->lock );
vlc_cond_signal( &w->cond );
- vlc_mutex_unlock( &w->lock );
+ vlc_mutex_unlock( &w->lock );
break;
default:
/* finally release the DirectSound object */
if( p_sys->p_dsobject ) IDirectSound_Release( p_sys->p_dsobject );
-
+
/* free DSOUND.DLL */
if( p_sys->hdsound_dll ) FreeLibrary( p_sys->hdsound_dll );
if( OurDirectSoundEnumerate )
{
/* Attempt enumeration */
- if( FAILED( OurDirectSoundEnumerate( CallBackDirectSoundEnum,
+ if( FAILED( OurDirectSoundEnumerate( CallBackDirectSoundEnum,
p_aout ) ) )
{
msg_Dbg( p_aout, "enumeration of DirectSound devices failed" );
}
/* Create the direct sound object */
- if FAILED( OurDirectSoundCreate( p_aout->output.p_sys->p_device_guid,
+ if FAILED( OurDirectSoundCreate( p_aout->output.p_sys->p_device_guid,
&p_aout->output.p_sys->p_dsobject,
NULL ) )
{
}
/*****************************************************************************
- * DirectSoundThread: this thread will capture play notification events.
+ * DirectSoundThread: this thread will capture play notification events.
*****************************************************************************
* We use this thread to emulate a callback mechanism. The thread probes for
* event notification and fills up the DS secondary buffer when needed.
delete pPlayer;
free( p_sys );
return VLC_EGENERIC;
- }
+ }
p_sys->nBuffers = __MIN( p_sys->nBuffers, 4 );
if( p_buffer == NULL )
{
p_aout->p_libvlc->pf_memset( p_sys->ppBuffers[ i ], 0,
- p_sys->nBufferSize );
+ p_sys->nBufferSize );
}
else
{
p_sys->nBufferSize / 2 ) )
{
msg_Err( p_aout, "QueueBuffer failed" );
- }
+ }
i = (i + 1) % p_sys->nBuffers;
#undef i
if( p_dec->fmt_in.audio.i_channels <= 0 ||
p_dec->fmt_in.audio.i_channels > 5 )
{
- msg_Err( p_dec, "invalid number of channel (not between 1 and 5): %i",
+ msg_Err( p_dec, "invalid number of channel (not between 1 and 5): %i",
p_dec->fmt_in.audio.i_channels );
return VLC_EGENERIC;
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#ifdef CMML_DEBUG
msg_Dbg( p_dec, "psz_cmml is \"%s\"", psz_cmml );
#endif
-
+
/* Parse the <clip> part of the CMML */
p_clip_parser = xtag_new_parse( psz_cmml, p_block->i_buffer );
if( !p_clip_parser )
if( psz_url )
{
char *psz_tmp = strdup( psz_url );
-
+
val.p_address = psz_tmp;
if( var_Set( p_dec, "psz-current-anchor-url", val ) != VLC_SUCCESS )
{
history_t *history_New( void )
{
history_t *p_new_history;
-
+
p_new_history = calloc( 1, sizeof( struct history_t ) );
if( p_new_history == NULL ) return NULL;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dummy_reference = xarray_ObjectAtIndex;
dummy_reference = xarray_Count;
}
-
+
return new_xarray;
}
xarray->array[xarray->last_valid_element] = NULL;
--xarray->last_valid_element;
- return XARRAY_SUCCESS;
+ return XARRAY_SUCCESS;
}
XSTATIC int xarray_RemoveObjects (XArray *xarray, unsigned int at_index,
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
last = xlist_tail (list);
if (last) last->next = l;
- l->prev = last;
+ l->prev = last;
return list;
}
l->next = node;
if (p) p->next = l;
node->prev = l;
-
+
return list;
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
}
}
- return;
+ return;
}
#endif
int len, to_copy, total = 0;
va_start (ap, n);
-
+
for (s = va_arg (ap, char *); s; s = va_arg (ap, char *)) {
len = strlen (s);
for (l = xtag->attributes; l; l = l->next) {
attr = (XAttribute *)l->data;
-
+
nn = xtag_snprints (buf, n, " ", attr->name, "=\"", attr->value, "\"",
NULL);
FORWARD(nn);
}
-
+
if (xtag->children == NULL) {
nn = xtag_snprints (buf, n, "/>", NULL);
FORWARD(nn);
return written;
}
-
+
nn = xtag_snprints (buf, n, ">", NULL);
FORWARD(nn);
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
{
/* psz_append is a relative URL */
char *psz_new_url;
-
+
/* strip off last path component */
psz_new_url = XURL_GetHead( psz_url );
psz_new_url = streallocat( psz_new_url, psz_append );
return psz_scheme_and_hostname;
}
-static
+static
char *XURL_FindFragment( char *psz_url )
{
char *pc_hash = NULL;
char *pc_return_value = NULL;
-
+
pc_hash = strchr( psz_url, '#' );
if( pc_hash != NULL )
{
{
char *pc_question_mark = NULL;
char *pc_return_value = NULL;
-
+
pc_question_mark = strchr( psz_url, '?' );
if( pc_question_mark != NULL )
{
}
#ifndef HAVE_STRDUP
-static
+static
char *xurl_strdup( const char *psz_string )
{
size_t i_length;
char *psz_new_string;
if( !psz_string ) return NULL;
-
+
i_length = strlen( psz_string ) + 1;
psz_new_string = (char *) xurl_malloc( i_length );
if( psz_new_string == NULL ) return NULL;
}
#endif
-static
+static
char *XURL_FindPath( char *psz_url )
{
char *psz_return_value = NULL;
psz_return_value = psz_without_fragment;
}
}
-
+
return psz_return_value;
}
-static
+static
char *streallocat( char *psz_string, char *psz_to_append )
{
size_t i_new_string_length = strlen( psz_string ) +
strlen( psz_to_append ) + 1;
psz_string = (char *) realloc( psz_string, i_new_string_length );
-
+
return strcat( psz_string, psz_to_append );
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
}
/*
- We parse the metadata information here.
+ We parse the metadata information here.
Although metadata information does not have to come in a fixed field
order, every metadata field consists of a tag byte followed by
case 0x24:
case 0x25:
case 0x26:
- case 0x27:
+ case 0x27:
{
uint8_t v = p[0] - 0x24;
default:
#ifdef DEBUG_CVDSUB
- msg_Warn( p_dec, "unknown sequence in control header "
+ msg_Warn( p_dec, "unknown sequence in control header "
"0x%0x 0x%0x 0x%0x 0x%0x", p[0], p[1], p[2], p[3]);
#endif
}
/*****************************************************************************
* ParseImage: parse and render the image part of the subtitle
*****************************************************************************
- This part parses the subtitle graphical data and renders it.
+ This part parses the subtitle graphical data and renders it.
Image data comes interlaced and is run-length encoded (RLE). Each
field is a four-bit nibbles that is further subdivided in a two-bit
may be untested.
However we'll transform this so that that the RLE is expanded and
- interlacing will also be removed. On output each pixel entry will by
+ interlacing will also be removed. On output each pixel entry will by
a 4-bit alpha (filling 8 bits), and 8-bit y, u, and v entry.
*****************************************************************************/
case format420: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0'); break;
case format422: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','2'); break;
case format444: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','4','4'); break; // XXX 0.6 ?
- default:
+ default:
p_dec->fmt_out.i_codec = 0;
break;
}
}
if( p_sys->p_dirac->decoded_frame_avail )
{
- //locally decoded frame is available in
+ //locally decoded frame is available in
//encoder->dec_buf
//locally decoded frame parameters available
//in encoder->dec_fparams
BITMAPINFOHEADER *p_bih;
/* FIXME */
- p_enc->fmt_in.video.i_bits_per_pixel =
+ p_enc->fmt_in.video.i_bits_per_pixel =
p_enc->fmt_out.video.i_bits_per_pixel = 12;
/* Enumerate input format (for debug output) */
long (STDCALL *AddRef)(IUnknown *This) ;
long (STDCALL *Release)(IUnknown *This) ;
-
+
long (STDCALL *SetPartialOutputType)(IWMCodecPrivateData * This,
DMO_MEDIA_TYPE *pmt);
* FIXME:
* DVB subtitles coded as strings of characters are not handled correctly.
* The character codes in the string should actually be indexes referring to a
- * character table identified in the subtitle descriptor.
+ * character table identified in the subtitle descriptor.
*
* The spec is quite vague in this area, but what is meant is perhaps that it
* refers to the character index in the codepage belonging to the language specified
#define POSX_LONGTEXT N_("X coordinate of the rendered subtitle")
#define POSY_TEXT N_("Decoding Y coordinate")
-#define POSY_LONGTEXT N_("Y coordinate of the rendered subtitle")
+#define POSY_LONGTEXT N_("Y coordinate of the rendered subtitle")
#define POS_TEXT N_("Subpicture position")
#define POS_LONGTEXT N_( \
#define DVBSUB_OT_BASIC_CHAR 0x01
#define DVBSUB_OT_COMPOSITE_STRING 0x02
/* Pixel DATA TYPES */
-/* According to EN 300-743, table 9 */
+/* According to EN 300-743, table 9 */
#define DVBSUB_DT_2BP_CODE_STRING 0x10
#define DVBSUB_DT_4BP_CODE_STRING 0x11
#define DVBSUB_DT_8BP_CODE_STRING 0x12
}
memset( p_sys, 0, sizeof(decoder_sys_t) );
- p_sys->i_pts = (mtime_t) 0;
+ p_sys->i_pts = (mtime_t) 0;
p_sys->i_id = p_dec->fmt_in.subs.dvb.i_id & 0xFFFF;
p_sys->i_ancillary_id = p_dec->fmt_in.subs.dvb.i_id >> 16;
p_display->i_max_x = bs_read( s, 16 );
p_display->i_y = bs_read( s, 16 );
p_display->i_max_y = bs_read( s, 16 );
- i_processed_length += 64;
+ i_processed_length += 64;
}
p_sys->p_display = p_display;
return VLC_SUCCESS;
}
-/* FIXME: this routine is a hack to convert VLC_FOURCC('Y','U','V','A')
+/* FIXME: this routine is a hack to convert VLC_FOURCC('Y','U','V','A')
* into VLC_FOURCC('Y','U','V','P')
*/
static subpicture_t *YuvaYuvp( encoder_t *p_enc, subpicture_t *p_subpic )
{
char psz_fourcc[5];
memset( &psz_fourcc, 0, sizeof(char)*5 );
- vlc_fourcc_to_char( p_region->fmt.i_chroma, &psz_fourcc );
+ vlc_fourcc_to_char( p_region->fmt.i_chroma, &psz_fourcc );
msg_Err( p_enc, "chroma %4s not supported", &psz_fourcc );
return NULL;
}
}
if( ( p_sys->p_regions[i_regions].i_width <
- (int)p_region->fmt.i_visible_width ) ||
+ (int)p_region->fmt.i_visible_width ) ||
( p_sys->p_regions[i_regions].i_width >
(int)p_region->fmt.i_visible_width ) )
{
}
/*****************************************************************************
- * InitPostproc:
+ * InitPostproc:
*****************************************************************************/
int E_(InitPostproc)( decoder_t *p_dec, void *p_data,
int i_width, int i_height, int pix_fmt )
}
/*****************************************************************************
- * PostprocPict:
+ * PostprocPict:
*****************************************************************************/
int E_(PostprocPict)( decoder_t *p_dec, void *p_data,
picture_t *p_pic, AVFrame *p_ff_pic )
}
/*****************************************************************************
- * ClosePostproc:
+ * ClosePostproc:
*****************************************************************************/
void E_(ClosePostproc)( decoder_t *p_dec, void *p_data )
{
}
mpeg2_set_buf( p_sys->p_mpeg2dec, buf, p_pic );
- mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
+ mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
/* This picture will never go through display_picture. */
p_pic->date = 0;
/* If nb_fields == 1, it is a field picture, and it will be
* followed by another field picture for which we won't call
- * vout_SynchroNewPicture() because this would have other
+ * vout_SynchroNewPicture() because this would have other
* problems, so we take it into account here.
* This kind of sucks, but I didn't think better. --Meuuh
*/
}
mpeg2_set_buf( p_sys->p_mpeg2dec, buf, p_pic );
- mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
+ mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
}
}
break;
if( (p_pic = GetNewPicture( p_dec, buf )) == NULL )
break;
mpeg2_set_buf( p_sys->p_mpeg2dec, buf, p_pic );
- mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
+ mpeg2_stride( p_sys->p_mpeg2dec, p_pic->p[Y_PLANE].i_pitch );
}
p_sys->p_picture_to_destroy = p_pic;
if( p_dec->fmt_in.i_codec != VLC_FOURCC('l','p','c','m')
&& p_dec->fmt_in.i_codec != VLC_FOURCC('l','p','c','b') )
- {
+ {
return VLC_EGENERIC;
}
mvdv = i_video_header & 0x1f; /* vertical motion vector data */
cc = p_block->i_buffer - 4;
msg_Dbg( p_dec, "packet size %d", cc );
-
+
/* Find out p_vdec->i_raw_size */
p_sys->p_decoder->decode( p_block->p_buffer + 4 /*bp?*/,
cc /*cc?*/,
block_Release( p_block ); *pp_block = NULL;
return NULL;
}
-
+
p_info = png_create_info_struct( p_png );
if( p_info == NULL )
{
switch( p_dec->fmt_in.i_codec )
{
case VLC_FOURCC('S','V','Q','3'): /* Sorenson v3 */
- /* case VLC_FOURCC('S','V','Q','1'): Sorenson v1
+ /* case VLC_FOURCC('S','V','Q','1'): Sorenson v1
case VLC_FOURCC('Z','y','G','o'):
case VLC_FOURCC('V','P','3','1'):
case VLC_FOURCC('3','I','V','1'): */
p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width;
p_dec->fmt_out.video.i_height= p_dec->fmt_in.video.i_height;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR * p_dec->fmt_in.video.i_width / p_dec->fmt_in.video.i_height;
-
+
vlc_mutex_unlock( lock );
return VLC_SUCCESS;
}
p_block = *pp_block;
*pp_block = NULL;
-
+
i_pts = p_block->i_pts ? p_block->i_pts : p_block->i_dts;
if( i_pts < mdate() )
block_Release( p_block );
return NULL;
}
-
+
lock = var_GetGlobalMutex( "qt_mutex" );
vlc_mutex_lock( lock );
p_dec->fmt_in.video.i_width * p_dec->fmt_in.video.i_height * 2 );
p_pic->date = i_pts;
}
-
+
vlc_mutex_unlock( lock );
block_Release( p_block );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
psz_temp_stylename, psz_temp_fontname, &i_font_size,
psz_temp_color1, psz_temp_color2, psz_temp_color3,
psz_temp_color4, &i_bold, &i_italic,
- &i_border, &i_outline, &i_shadow, &i_align, &i_margin_l,
+ &i_border, &i_outline, &i_shadow, &i_align, &i_margin_l,
&i_margin_r, &i_margin_v ) == 16 )
{
ssa_style_t *p_style = malloc( sizeof(ssa_style_t) );
ParseColor( p_dec, psz_temp_color1, &p_style->font_style.i_font_color, NULL );
ParseColor( p_dec, psz_temp_color4, &p_style->font_style.i_shadow_color, NULL );
p_style->font_style.i_outline_color = p_style->font_style.i_shadow_color;
- p_style->font_style.i_font_alpha = p_style->font_style.i_outline_alpha
+ p_style->font_style.i_font_alpha = p_style->font_style.i_outline_alpha
= p_style->font_style.i_shadow_alpha = 0x00;
p_style->font_style.i_style_flags = 0;
if( i_bold ) p_style->font_style.i_style_flags |= STYLE_BOLD;
if( i_italic ) p_style->font_style.i_style_flags |= STYLE_ITALIC;
- if( i_border == 1 )
+ if( i_border == 1 )
p_style->font_style.i_style_flags |= (STYLE_ITALIC | STYLE_OUTLINE);
else if( i_border == 3 )
{
p_style->i_align |= SUBPICTURE_ALIGN_RIGHT;
if( i_align < 4 )
p_style->i_align |= SUBPICTURE_ALIGN_BOTTOM;
- else if( i_align < 8 )
+ else if( i_align < 8 )
p_style->i_align |= SUBPICTURE_ALIGN_TOP;
p_style->i_margin_h = ( p_style->i_align & SUBPICTURE_ALIGN_RIGHT ) ?
p_spu->i_buffer, p_sys->i_spu_size );
}
- dbg_print( (DECODE_DBG_PACKET),
+ dbg_print( (DECODE_DBG_PACKET),
"subtitle packet complete, size=%d", p_spu->i_buffer );
p_sys->i_state = SUBTITLE_BLOCK_EMPTY;
size description
-------------------------------------------
- byte subtitle channel (0..7) in bits 0-3
+ byte subtitle channel (0..7) in bits 0-3
byte subtitle packet number of this subtitle image 0-N,
if the subtitle packet is complete, the top bit of the byte is 1.
u_int16 subtitle image number
u_int16 length in bytes of the rest
byte option flags, unknown meaning except bit 3 (0x08) indicates
presence of the duration field
- byte unknown
+ byte unknown
u_int32 duration in 1/90000ths of a second (optional), start time
is as indicated by the PTS in the PES header
u_int32 xpos
cmd>>6==1 indicates shift
(cmd>>4)&3 is direction from, (0=top,1=left,2=right,3=bottom)
u_int32 shift duration in 1/90000ths of a second
- u_int16 offset of odd-numbered scanlines - subtitle images are
+ u_int16 offset of odd-numbered scanlines - subtitle images are
given in interlace order
byte[] limited RLE image data in interlace order (0,2,4... 1,3,5) with
2-bits per palette number
p_sys->i_image_length = p_sys->i_spu_size - p_sys->i_image_offset;
p_sys->metadata_length = p_sys->i_image_offset;
- if (p_sys && p_sys->i_debug & DECODE_DBG_PACKET)
+ if (p_sys && p_sys->i_debug & DECODE_DBG_PACKET)
{
msg_Dbg( p_dec, "x-start: %d, y-start: %d, width: %d, height %d, "
- "spu size: %d, duration: %lu (d:%d p:%d)",
- p_sys->i_x_start, p_sys->i_y_start,
- p_sys->i_width, p_sys->i_height,
- p_sys->i_spu_size, (long unsigned int) p_sys->i_duration,
- p_sys->i_image_length, p_sys->i_image_offset);
-
+ "spu size: %d, duration: %lu (d:%d p:%d)",
+ p_sys->i_x_start, p_sys->i_y_start,
+ p_sys->i_width, p_sys->i_height,
+ p_sys->i_spu_size, (long unsigned int) p_sys->i_duration,
+ p_sys->i_image_length, p_sys->i_image_offset);
+
for( i = 0; i < 4; i++ )
{
msg_Dbg( p_dec, "palette[%d]= T: %2x, Y: %2x, u: %2x, v: %2x", i,
- p_sys->p_palette[i][3], p_sys->p_palette[i][0],
- p_sys->p_palette[i][1], p_sys->p_palette[i][2] );
+ p_sys->p_palette[i][3], p_sys->p_palette[i][0],
+ p_sys->p_palette[i][1], p_sys->p_palette[i][2] );
}
}
}
}
p_region->fmt.i_aspect = VOUT_ASPECT_FACTOR;
-
+
p_spu->p_region = p_region;
p_region->i_x = p_region->i_y = 0;
interlacing will also be removed.
*****************************************************************************/
static void SVCDSubRenderImage( decoder_t *p_dec, block_t *p_data,
- subpicture_region_t *p_region )
+ subpicture_region_t *p_region )
{
decoder_sys_t *p_sys = p_dec->p_sys;
uint8_t *p_dest = p_region->picture.Y_PIXELS;
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
- *
- * information on teletext format can be found here :
+ *
+ * information on teletext format can be found here :
* http://pdc.ro.nu/teletext.html
*
*****************************************************************************/
/* #define TELX_DEBUG */
#ifdef TELX_DEBUG
-# define dbg( a ) msg_Dbg a
+# define dbg( a ) msg_Dbg a
#else
# define dbg( a )
#endif
****************************************************************************/
/*
- * My doc only mentions 13 national characters, but experiments show there
+ * My doc only mentions 13 national characters, but experiments show there
* are more, in france for example I already found two more (0x9 and 0xb).
*
* Conversion is in this order :
static uint16_t ppi_national_subsets[][20] =
{
- { 0x00a3, 0x0024, 0x0040, 0x00ab, 0x00bd, 0x00bb, 0x005e, 0x0023,
+ { 0x00a3, 0x0024, 0x0040, 0x00ab, 0x00bd, 0x00bb, 0x005e, 0x0023,
0x002d, 0x00bc, 0x00a6, 0x00be, 0x00f7 }, /* english ,000 */
{ 0x00e9, 0x00ef, 0x00e0, 0x00eb, 0x00ea, 0x00f9, 0x00ee, 0x0023,
0x00e8, 0x00e2, 0x00f4, 0x00fb, 0x00e7, 0, 0x00eb, 0, 0x00ef }, /* french ,001 */
- { 0x0023, 0x00a4, 0x00c9, 0x00c4, 0x00d6, 0x00c5, 0x00dc, 0x005f,
+ { 0x0023, 0x00a4, 0x00c9, 0x00c4, 0x00d6, 0x00c5, 0x00dc, 0x005f,
0x00e9, 0x00e4, 0x00f6, 0x00e5, 0x00fc }, /* swedish,finnish,hungarian ,010 */
- { 0x0023, 0x016f, 0x010d, 0x0165, 0x017e, 0x00fd, 0x00ed, 0x0159,
+ { 0x0023, 0x016f, 0x010d, 0x0165, 0x017e, 0x00fd, 0x00ed, 0x0159,
0x00e9, 0x00e1, 0x0115, 0x00fa, 0x0161 }, /* czech,slovak ,011 */
- { 0x0023, 0x0024, 0x00a7, 0x00c4, 0x00d6, 0x00dc, 0x005e, 0x005f,
+ { 0x0023, 0x0024, 0x00a7, 0x00c4, 0x00d6, 0x00dc, 0x005e, 0x005f,
0x00b0, 0x00e4, 0x00f6, 0x00fc, 0x00df }, /* german ,100 */
- { 0x00e7, 0x0024, 0x00a1, 0x00e1, 0x00e9, 0x00ed, 0x00f3, 0x00fa,
+ { 0x00e7, 0x0024, 0x00a1, 0x00e1, 0x00e9, 0x00ed, 0x00f3, 0x00fa,
0x00bf, 0x00fc, 0x00f1, 0x00e8, 0x00e0 }, /* portuguese,spanish ,101 */
- { 0x00a3, 0x0024, 0x00e9, 0x00b0, 0x00e7, 0x00bb, 0x005e, 0x0023,
+ { 0x00a3, 0x0024, 0x00e9, 0x00b0, 0x00e7, 0x00bb, 0x005e, 0x0023,
0x00f9, 0x00e0, 0x00f2, 0x00e8, 0x00ec }, /* italian ,110 */
- { 0x0023, 0x00a4, 0x0162, 0x00c2, 0x015e, 0x0102, 0x00ce, 0x0131,
+ { 0x0023, 0x00a4, 0x0162, 0x00c2, 0x015e, 0x0102, 0x00ce, 0x0131,
0x0163, 0x00e2, 0x015f, 0x0103, 0x00ee }, /* rumanian ,111 */
/* I have these tables too, but I don't know how they can be triggered */
- { 0x0023, 0x0024, 0x0160, 0x0117, 0x0119, 0x017d, 0x010d, 0x016b,
+ { 0x0023, 0x0024, 0x0160, 0x0117, 0x0119, 0x017d, 0x010d, 0x016b,
0x0161, 0x0105, 0x0173, 0x017e, 0x012f }, /* lettish,lithuanian ,1000 */
- { 0x0023, 0x0144, 0x0105, 0x005a, 0x015a, 0x0141, 0x0107, 0x00f3,
+ { 0x0023, 0x0144, 0x0105, 0x005a, 0x015a, 0x0141, 0x0107, 0x00f3,
0x0119, 0x017c, 0x015b, 0x0142, 0x017a }, /* polish, 1001 */
- { 0x0023, 0x00cb, 0x010c, 0x0106, 0x017d, 0x0110, 0x0160, 0x00eb,
+ { 0x0023, 0x00cb, 0x010c, 0x0106, 0x017d, 0x0110, 0x0160, 0x00eb,
0x010d, 0x0107, 0x017e, 0x0111, 0x0161 }, /* serbian,croatian,slovenian, 1010 */
- { 0x0023, 0x00f5, 0x0160, 0x00c4, 0x00d6, 0x017e, 0x00dc, 0x00d5,
+ { 0x0023, 0x00f5, 0x0160, 0x00c4, 0x00d6, 0x017e, 0x00dc, 0x00d5,
0x0161, 0x00e4, 0x00f6, 0x017e, 0x00fc }, /* estonian ,1011 */
- { 0x0054, 0x011f, 0x0130, 0x015e, 0x00d6, 0x00c7, 0x00dc, 0x011e,
+ { 0x0054, 0x011f, 0x0130, 0x015e, 0x00d6, 0x00c7, 0x00dc, 0x011e,
0x0131, 0x015f, 0x00f6, 0x00e7, 0x00fc }, /* turkish ,1100 */
};
static int hamming_8_4( int a )
{
switch (a) {
- case 0xA8:
+ case 0xA8:
return 0;
- case 0x0B:
+ case 0x0B:
return 1;
- case 0x26:
+ case 0x26:
return 2;
- case 0x85:
+ case 0x85:
return 3;
- case 0x92:
+ case 0x92:
return 4;
- case 0x31:
+ case 0x31:
return 5;
- case 0x1C:
+ case 0x1C:
return 6;
- case 0xBF:
+ case 0xBF:
return 7;
- case 0x40:
+ case 0x40:
return 8;
- case 0xE3:
+ case 0xE3:
return 9;
- case 0xCE:
+ case 0xCE:
return 10;
- case 0x6D:
+ case 0x6D:
return 11;
- case 0x7A:
+ case 0x7A:
return 12;
- case 0xD9:
+ case 0xD9:
return 13;
- case 0xF4:
+ case 0xF4:
return 14;
- case 0x57:
+ case 0x57:
return 15;
- default:
+ default:
return -1; // decoding error , not yet corrected
}
}
}
}
-static void decode_string( char * res, int res_len,
- decoder_sys_t *p_sys, int magazine,
+static void decode_string( char * res, int res_len,
+ decoder_sys_t *p_sys, int magazine,
uint8_t * packet, int len )
{
char utf8[7];
{
/* special national characters */
case 0x23:
- out = p_sys->pi_active_national_set[magazine][0];
- break;
+ out = p_sys->pi_active_national_set[magazine][0];
+ break;
case 0x24:
- out = p_sys->pi_active_national_set[magazine][1];
- break;
+ out = p_sys->pi_active_national_set[magazine][1];
+ break;
case 0x40:
- out = p_sys->pi_active_national_set[magazine][2];
- break;
+ out = p_sys->pi_active_national_set[magazine][2];
+ break;
case 0x5b:
- out = p_sys->pi_active_national_set[magazine][3];
- break;
+ out = p_sys->pi_active_national_set[magazine][3];
+ break;
case 0x5c:
- out = p_sys->pi_active_national_set[magazine][4];
- break;
+ out = p_sys->pi_active_national_set[magazine][4];
+ break;
case 0x5d:
- out = p_sys->pi_active_national_set[magazine][5];
- break;
+ out = p_sys->pi_active_national_set[magazine][5];
+ break;
case 0x5e:
- out = p_sys->pi_active_national_set[magazine][6];
- break;
+ out = p_sys->pi_active_national_set[magazine][6];
+ break;
case 0x5f:
- out = p_sys->pi_active_national_set[magazine][7];
- break;
+ out = p_sys->pi_active_national_set[magazine][7];
+ break;
case 0x60:
- out = p_sys->pi_active_national_set[magazine][8];
- break;
+ out = p_sys->pi_active_national_set[magazine][8];
+ break;
case 0x7b:
- out = p_sys->pi_active_national_set[magazine][9];
- break;
+ out = p_sys->pi_active_national_set[magazine][9];
+ break;
case 0x7c:
- out = p_sys->pi_active_national_set[magazine][10];
- break;
+ out = p_sys->pi_active_national_set[magazine][10];
+ break;
case 0x7d:
- out = p_sys->pi_active_national_set[magazine][11];
- break;
+ out = p_sys->pi_active_national_set[magazine][11];
+ break;
case 0x7e:
- out = p_sys->pi_active_national_set[magazine][12];
- break;
+ out = p_sys->pi_active_national_set[magazine][12];
+ break;
/* some special control characters (empirical) */
case 0x0d:
}
/* end: */
*pt++ = 0;
-}
+}
/*****************************************************************************
* Decode:
{
uint8_t * packet = (uint8_t *) p_block->p_buffer+offset;
// int vbi = ((0x20 & packet[2]) != 0 ? 0 : 313) + (0x1F & packet[2]);
-
+
// dbg((p_dec, "vbi %d header %02x %02x %02x\n", vbi, packet[0], packet[1], packet[2]));
if ( packet[0] == 0xFF ) continue;
/* row 0 : flags and header line */
int flag = 0;
int a;
-
+
for ( a = 0; a < 6; a++ )
{
flag |= (0xF & (bytereverse( hamming_8_4(packet[8 + a]) ) >> 4))
(1 & (flag>>18))? " interrupt" : "",
(1 & (flag>>19))? " inhibit" : "",
(1 & (flag>>20)) ));
-
+
if ( (p_sys->i_wanted_page != -1
&& p_sys->i_page[magazine] != p_sys->i_wanted_page)
|| !p_sys->b_is_subtitle[magazine] )
p_sys->b_erase[magazine] = (1 & (flag >> 7));
dbg((p_dec, "%ld --> %ld\n", (long int) p_block->i_pts, (long int)(p_sys->prev_pts+1500000)));
- /* kludge here :
+ /* kludge here :
* we ignore the erase flag if it happens less than 1.5 seconds
* before last caption
* TODO make this time configurable
p_sys->b_erase[magazine] )
{
int i;
-
+
dbg((p_dec, "ERASE !\n"));
- p_sys->b_erase[magazine] = 0;
+ p_sys->b_erase[magazine] = 0;
for ( i = 1; i < 32; i++ )
{
if ( !p_sys->ppsz_lines[i][0] ) continue;
if ( (p_sys->i_wanted_page != -1
&& p_sys->i_page[magazine] != p_sys->i_wanted_page)
- || !p_sys->b_is_subtitle[magazine]
+ || !p_sys->b_is_subtitle[magazine]
|| (p_sys->i_wanted_page == -1
&& p_sys->i_page[magazine] > 0x99) )
continue;
dbg((p_dec, "%s\n", dbg));
}
#endif
-
+
}
else if ( row == 25 )
{
msg_Warn( p_dec, "can't get spu buffer" );
goto error;
}
-
+
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
fmt.i_chroma = VLC_FOURCC('T','E','X','T');
| AOUT_CHAN_MIDDLERIGHT,
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT
| AOUT_CHAN_REARRIGHT | AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT
- | AOUT_CHAN_LFE
+ | AOUT_CHAN_LFE
};
/*
#define FILTER_LONGTEXT N_( "Loop filter AlphaC0 and Beta parameters. " \
"Range -6 to 6 for both alpha and beta parameters. -6 means light " \
"filter, 6 means strong.")
-
+
#define LEVEL_TEXT N_("H.264 level")
#define LEVEL_LONGTEXT N_( "Specify H.264 level (as defined by Annex A " \
"of the standard). Levels are not enforced; it's up to the user to select " \
add_integer( SOUT_CFG_PREFIX "qpmin", 10, NULL, QPMIN_TEXT,
QPMIN_LONGTEXT, VLC_FALSE );
change_integer_range( 0, 51 );
- add_deprecated_alias( SOUT_CFG_PREFIX "qp-min" ); /* Deprecated since 0.8.5 */
+ add_deprecated_alias( SOUT_CFG_PREFIX "qp-min" ); /* Deprecated since 0.8.5 */
add_integer( SOUT_CFG_PREFIX "qpmax", 51, NULL, QPMAX_TEXT,
QPMAX_LONGTEXT, VLC_FALSE );
change_integer_range( 0, 51 );
- add_deprecated_alias( SOUT_CFG_PREFIX "qp-max" ); /* Deprecated since 0.8.5 */
+ add_deprecated_alias( SOUT_CFG_PREFIX "qp-max" ); /* Deprecated since 0.8.5 */
add_integer( SOUT_CFG_PREFIX "qpstep", 4, NULL, QPSTEP_TEXT,
QPSTEP_LONGTEXT, VLC_FALSE );
add_float( SOUT_CFG_PREFIX "ratetol", 1.0, NULL, RATETOL_TEXT,
RATETOL_LONGTEXT, VLC_FALSE );
change_float_range( 0, 100 );
- add_deprecated_alias( SOUT_CFG_PREFIX "tolerance" ); /* Deprecated since 0.8.5 */
+ add_deprecated_alias( SOUT_CFG_PREFIX "tolerance" ); /* Deprecated since 0.8.5 */
add_integer( SOUT_CFG_PREFIX "vbv-maxrate", 0, NULL, VBV_MAXRATE_TEXT,
VBV_MAXRATE_LONGTEXT, VLC_FALSE );
add_string( SOUT_CFG_PREFIX "partitions", "normal", NULL, ANALYSE_TEXT,
ANALYSE_LONGTEXT, VLC_FALSE );
change_string_list( enc_analyse_list, enc_analyse_list_text, 0 );
- add_deprecated_alias( SOUT_CFG_PREFIX "analyse" ); /* Deprecated since 0.8.6 */
+ add_deprecated_alias( SOUT_CFG_PREFIX "analyse" ); /* Deprecated since 0.8.6 */
add_string( SOUT_CFG_PREFIX "direct", "spatial", NULL, DIRECT_PRED_TEXT,
DIRECT_PRED_LONGTEXT, VLC_FALSE );
add_integer( SOUT_CFG_PREFIX "subme", 5, NULL, SUBME_TEXT,
SUBME_LONGTEXT, VLC_FALSE );
change_integer_range( 1, SUBME_MAX );
- add_deprecated_alias( SOUT_CFG_PREFIX "subpel" ); /* Deprecated since 0.8.5 */
+ add_deprecated_alias( SOUT_CFG_PREFIX "subpel" ); /* Deprecated since 0.8.5 */
#if X264_BUILD >= 41 /* r368 */
add_bool( SOUT_CFG_PREFIX "b-rdo", 0, NULL, B_RDO_TEXT,
#endif
#if X264_BUILD >= 37
- var_Get( p_enc, SOUT_CFG_PREFIX "crf", &val );
+ var_Get( p_enc, SOUT_CFG_PREFIX "crf", &val );
if( val.i_int > 0 && val.i_int <= 51 )
{
#if X264_BUILD >= 54
var_Get( p_enc, SOUT_CFG_PREFIX "deadzone-intra", &val );
if( val.i_int >= 0 && val.i_int <= 32 )
- p_sys->param.analyse.i_luma_deadzone[1] = val.i_int;
+ p_sys->param.analyse.i_luma_deadzone[1] = val.i_int;
var_Get( p_enc, SOUT_CFG_PREFIX "direct-8x8", &val );
if( val.i_int >= -1 && val.i_int <= 1 )
- p_sys->param.analyse.i_direct_8x8_inference = val.i_int;
+ p_sys->param.analyse.i_direct_8x8_inference = val.i_int;
#endif
var_Get( p_enc, SOUT_CFG_PREFIX "asm", &val );
{
encoder_t *p_enc = (encoder_t *)p_this;
encoder_sys_t *p_sys = p_enc->p_sys;
-
+
if( p_sys->psz_stat_name )
free( p_sys->psz_stat_name );
AMD = (ebx == 0x68747541) && (ecx == 0x444d4163) && (edx == 0x69746e65);
cpuid (0x00000001, eax, ebx, ecx, edx);
- if (! (edx & 0x00800000)) /* no MMX */
+ if (! (edx & 0x00800000)) /* no MMX */
return 0;
caps = MPEG2_ACCEL_X86_MMX;
- if (edx & 0x02000000) /* SSE - identical to AMD MMX extensions */
+ if (edx & 0x02000000) /* SSE - identical to AMD MMX extensions */
caps = MPEG2_ACCEL_X86_MMX | MPEG2_ACCEL_X86_MMXEXT;
cpuid (0x80000000, eax, ebx, ecx, edx);
- if (eax < 0x80000001) /* no extended capabilities */
+ if (eax < 0x80000001) /* no extended capabilities */
return caps;
cpuid (0x80000001, eax, ebx, ecx, edx);
if (edx & 0x80000000)
caps |= MPEG2_ACCEL_X86_3DNOW;
- if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */
+ if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */
caps |= MPEG2_ACCEL_X86_MMXEXT;
return caps;
mpeg2dec->shift = 0xffffff00;
mpeg2dec->chunk_size = chunk_ptr - mpeg2dec->chunk_start - 3;
- mpeg2dec->chunk_ptr = chunk_ptr + 1;
+ mpeg2dec->chunk_ptr = chunk_ptr + 1;
copied = current - mpeg2dec->buf_start;
mpeg2dec->buf_start = current;
return copied;
}
mpeg2dec->decoder.coding_type = I_TYPE;
mpeg2dec->decoder.convert = NULL;
- mpeg2dec->decoder.convert_id = NULL;
+ mpeg2dec->decoder.convert_id = NULL;
mpeg2dec->decoder.load_intra_quantizer_matrix = 1;
mpeg2dec->decoder.load_non_intra_quantizer_matrix = 1;
mpeg2dec->picture = mpeg2dec->pictures;
switch( buffer[1] & 6 )
{
- case 0: /* invalid */
+ case 0: /* invalid */
return 1;
- case 2: /* 4:2:0 */
+ case 2: /* 4:2:0 */
sequence->chroma_height >>= 1;
- case 4: /* 4:2:2 */
+ case 4: /* 4:2:2 */
sequence->chroma_width >>= 1;
}
sequence->pixel_width = sequence->pixel_height = 1;
return;
case 3: /* 720x576 16:9 */
- sequence->pixel_width = 64; sequence->pixel_height = 45;
+ sequence->pixel_width = 64; sequence->pixel_height = 45;
return;
case 6: /* 720x480 16:9 */
- sequence->pixel_width = 32; sequence->pixel_height = 27;
+ sequence->pixel_width = 32; sequence->pixel_height = 27;
return;
case 12: /* 720*480 4:3 */
- sequence->pixel_width = 8; sequence->pixel_height = 9;
+ sequence->pixel_width = 8; sequence->pixel_height = 9;
return;
default:
height = 88 * sequence->pixel_width + 1171;
decoder->concealment_motion_vectors = 0;
decoder->scan = mpeg2_scan_norm;
decoder->picture_structure = FRAME_PICTURE;
- mpeg2dec->copy_matrix = 0;
+ mpeg2dec->copy_matrix = 0;
return 0;
}
else
{
/* decoder->second_field = 1; */
- mpeg2dec->picture++; /* second field picture */
+ mpeg2dec->picture++; /* second field picture */
*(mpeg2dec->picture) = mpeg2dec->new_picture;
mpeg2dec->info.current_picture_2nd = mpeg2dec->picture;
if (low_delay || decoder->coding_type == B_TYPE)
#define predict_x(i) (avg2 (ref[i], ref[i+1]))
#define predict_y(i) (avg2 (ref[i], (ref+stride)[i]))
#define predict_xy(i) (avg4 (ref[i], ref[i+1], \
- (ref+stride)[i], (ref+stride)[i+1]))
+ (ref+stride)[i], (ref+stride)[i+1]))
#define put(predictor,i) dest[i] = predictor (i)
#define avg(predictor,i) dest[i] = avg2 (predictor (i), dest[i])
/* mc function template */
-#define MC_FUNC(op,xy) \
-static void MC_##op##_##xy##_16_c (uint8_t * dest, const uint8_t * ref, \
- const int stride, int height) \
-{ \
- do { \
- op (predict_##xy, 0); \
- op (predict_##xy, 1); \
- op (predict_##xy, 2); \
- op (predict_##xy, 3); \
- op (predict_##xy, 4); \
- op (predict_##xy, 5); \
- op (predict_##xy, 6); \
- op (predict_##xy, 7); \
- op (predict_##xy, 8); \
- op (predict_##xy, 9); \
- op (predict_##xy, 10); \
- op (predict_##xy, 11); \
- op (predict_##xy, 12); \
- op (predict_##xy, 13); \
- op (predict_##xy, 14); \
- op (predict_##xy, 15); \
- ref += stride; \
- dest += stride; \
- } while (--height); \
-} \
-static void MC_##op##_##xy##_8_c (uint8_t * dest, const uint8_t * ref, \
- const int stride, int height) \
-{ \
- do { \
- op (predict_##xy, 0); \
- op (predict_##xy, 1); \
- op (predict_##xy, 2); \
- op (predict_##xy, 3); \
- op (predict_##xy, 4); \
- op (predict_##xy, 5); \
- op (predict_##xy, 6); \
- op (predict_##xy, 7); \
- ref += stride; \
- dest += stride; \
- } while (--height); \
+#define MC_FUNC(op,xy) \
+static void MC_##op##_##xy##_16_c (uint8_t * dest, const uint8_t * ref, \
+ const int stride, int height) \
+{ \
+ do { \
+ op (predict_##xy, 0); \
+ op (predict_##xy, 1); \
+ op (predict_##xy, 2); \
+ op (predict_##xy, 3); \
+ op (predict_##xy, 4); \
+ op (predict_##xy, 5); \
+ op (predict_##xy, 6); \
+ op (predict_##xy, 7); \
+ op (predict_##xy, 8); \
+ op (predict_##xy, 9); \
+ op (predict_##xy, 10); \
+ op (predict_##xy, 11); \
+ op (predict_##xy, 12); \
+ op (predict_##xy, 13); \
+ op (predict_##xy, 14); \
+ op (predict_##xy, 15); \
+ ref += stride; \
+ dest += stride; \
+ } while (--height); \
+} \
+static void MC_##op##_##xy##_8_c (uint8_t * dest, const uint8_t * ref, \
+ const int stride, int height) \
+{ \
+ do { \
+ op (predict_##xy, 0); \
+ op (predict_##xy, 1); \
+ op (predict_##xy, 2); \
+ op (predict_##xy, 3); \
+ op (predict_##xy, 4); \
+ op (predict_##xy, 5); \
+ op (predict_##xy, 6); \
+ op (predict_##xy, 7); \
+ ref += stride; \
+ dest += stride; \
+ } while (--height); \
}
/* definitions of the actual mc functions */
}
static inline void mmx_average_2_U8 (uint8_t * dest, const uint8_t * src1,
- const uint8_t * src2)
+ const uint8_t * src2)
{
/* *dest = (*src1 + *src2 + 1)/ 2; */
- movq_m2r (*src1, mm1); /* load 8 src1 bytes */
- movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
+ movq_m2r (*src1, mm1); /* load 8 src1 bytes */
+ movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
- movq_m2r (*src2, mm3); /* load 8 src2 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
+ movq_m2r (*src2, mm3); /* load 8 src2 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
- pxor_r2r (mm1, mm3); /* xor src1 and src2 */
- pand_m2r (mask1, mm3); /* mask lower bits */
- psrlq_i2r (1, mm3); /* /2 */
- por_r2r (mm2, mm4); /* or src1 and src2 */
- psubb_r2r (mm3, mm4); /* subtract subresults */
- movq_r2m (mm4, *dest); /* store result in dest */
+ pxor_r2r (mm1, mm3); /* xor src1 and src2 */
+ pand_m2r (mask1, mm3); /* mask lower bits */
+ psrlq_i2r (1, mm3); /* /2 */
+ por_r2r (mm2, mm4); /* or src1 and src2 */
+ psubb_r2r (mm3, mm4); /* subtract subresults */
+ movq_r2m (mm4, *dest); /* store result in dest */
}
static inline void mmx_interp_average_2_U8 (uint8_t * dest,
- const uint8_t * src1,
- const uint8_t * src2)
+ const uint8_t * src1,
+ const uint8_t * src2)
{
/* *dest = (*dest + (*src1 + *src2 + 1)/ 2 + 1)/ 2; */
- movq_m2r (*dest, mm1); /* load 8 dest bytes */
- movq_r2r (mm1, mm2); /* copy 8 dest bytes */
+ movq_m2r (*dest, mm1); /* load 8 dest bytes */
+ movq_r2r (mm1, mm2); /* copy 8 dest bytes */
- movq_m2r (*src1, mm3); /* load 8 src1 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src1 bytes */
+ movq_m2r (*src1, mm3); /* load 8 src1 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src1 bytes */
- movq_m2r (*src2, mm5); /* load 8 src2 bytes */
- movq_r2r (mm5, mm6); /* copy 8 src2 bytes */
+ movq_m2r (*src2, mm5); /* load 8 src2 bytes */
+ movq_r2r (mm5, mm6); /* copy 8 src2 bytes */
- pxor_r2r (mm3, mm5); /* xor src1 and src2 */
- pand_m2r (mask1, mm5); /* mask lower bits */
- psrlq_i2r (1, mm5); /* /2 */
- por_r2r (mm4, mm6); /* or src1 and src2 */
- psubb_r2r (mm5, mm6); /* subtract subresults */
- movq_r2r (mm6, mm5); /* copy subresult */
+ pxor_r2r (mm3, mm5); /* xor src1 and src2 */
+ pand_m2r (mask1, mm5); /* mask lower bits */
+ psrlq_i2r (1, mm5); /* /2 */
+ por_r2r (mm4, mm6); /* or src1 and src2 */
+ psubb_r2r (mm5, mm6); /* subtract subresults */
+ movq_r2r (mm6, mm5); /* copy subresult */
- pxor_r2r (mm1, mm5); /* xor srcavg and dest */
- pand_m2r (mask1, mm5); /* mask lower bits */
- psrlq_i2r (1, mm5); /* /2 */
- por_r2r (mm2, mm6); /* or srcavg and dest */
- psubb_r2r (mm5, mm6); /* subtract subresults */
- movq_r2m (mm6, *dest); /* store result in dest */
+ pxor_r2r (mm1, mm5); /* xor srcavg and dest */
+ pand_m2r (mask1, mm5); /* mask lower bits */
+ psrlq_i2r (1, mm5); /* /2 */
+ por_r2r (mm2, mm6); /* or srcavg and dest */
+ psubb_r2r (mm5, mm6); /* subtract subresults */
+ movq_r2m (mm6, *dest); /* store result in dest */
}
static inline void mmx_average_4_U8 (uint8_t * dest, const uint8_t * src1,
- const uint8_t * src2,
- const uint8_t * src3,
- const uint8_t * src4)
+ const uint8_t * src2,
+ const uint8_t * src3,
+ const uint8_t * src4)
{
/* *dest = (*src1 + *src2 + *src3 + *src4 + 2)/ 4; */
- movq_m2r (*src1, mm1); /* load 8 src1 bytes */
- movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
+ movq_m2r (*src1, mm1); /* load 8 src1 bytes */
+ movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
- punpcklbw_r2r (mm0, mm1); /* unpack low src1 bytes */
- punpckhbw_r2r (mm0, mm2); /* unpack high src1 bytes */
+ punpcklbw_r2r (mm0, mm1); /* unpack low src1 bytes */
+ punpckhbw_r2r (mm0, mm2); /* unpack high src1 bytes */
- movq_m2r (*src2, mm3); /* load 8 src2 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
+ movq_m2r (*src2, mm3); /* load 8 src2 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
- punpcklbw_r2r (mm0, mm3); /* unpack low src2 bytes */
- punpckhbw_r2r (mm0, mm4); /* unpack high src2 bytes */
+ punpcklbw_r2r (mm0, mm3); /* unpack low src2 bytes */
+ punpckhbw_r2r (mm0, mm4); /* unpack high src2 bytes */
- paddw_r2r (mm3, mm1); /* add lows */
- paddw_r2r (mm4, mm2); /* add highs */
+ paddw_r2r (mm3, mm1); /* add lows */
+ paddw_r2r (mm4, mm2); /* add highs */
/* now have partials in mm1 and mm2 */
- movq_m2r (*src3, mm3); /* load 8 src3 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src3 bytes */
+ movq_m2r (*src3, mm3); /* load 8 src3 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src3 bytes */
- punpcklbw_r2r (mm0, mm3); /* unpack low src3 bytes */
- punpckhbw_r2r (mm0, mm4); /* unpack high src3 bytes */
+ punpcklbw_r2r (mm0, mm3); /* unpack low src3 bytes */
+ punpckhbw_r2r (mm0, mm4); /* unpack high src3 bytes */
- paddw_r2r (mm3, mm1); /* add lows */
- paddw_r2r (mm4, mm2); /* add highs */
+ paddw_r2r (mm3, mm1); /* add lows */
+ paddw_r2r (mm4, mm2); /* add highs */
- movq_m2r (*src4, mm5); /* load 8 src4 bytes */
- movq_r2r (mm5, mm6); /* copy 8 src4 bytes */
+ movq_m2r (*src4, mm5); /* load 8 src4 bytes */
+ movq_r2r (mm5, mm6); /* copy 8 src4 bytes */
- punpcklbw_r2r (mm0, mm5); /* unpack low src4 bytes */
- punpckhbw_r2r (mm0, mm6); /* unpack high src4 bytes */
+ punpcklbw_r2r (mm0, mm5); /* unpack low src4 bytes */
+ punpckhbw_r2r (mm0, mm6); /* unpack high src4 bytes */
- paddw_r2r (mm5, mm1); /* add lows */
- paddw_r2r (mm6, mm2); /* add highs */
+ paddw_r2r (mm5, mm1); /* add lows */
+ paddw_r2r (mm6, mm2); /* add highs */
/* now have subtotal in mm1 and mm2 */
paddw_m2r (round4, mm1);
- psraw_i2r (2, mm1); /* /4 */
+ psraw_i2r (2, mm1); /* /4 */
paddw_m2r (round4, mm2);
- psraw_i2r (2, mm2); /* /4 */
+ psraw_i2r (2, mm2); /* /4 */
- packuswb_r2r (mm2, mm1); /* pack (w/ saturation) */
- movq_r2m (mm1, *dest); /* store result in dest */
+ packuswb_r2r (mm2, mm1); /* pack (w/ saturation) */
+ movq_r2m (mm1, *dest); /* store result in dest */
}
static inline void mmx_interp_average_4_U8 (uint8_t * dest,
- const uint8_t * src1,
- const uint8_t * src2,
- const uint8_t * src3,
- const uint8_t * src4)
+ const uint8_t * src1,
+ const uint8_t * src2,
+ const uint8_t * src3,
+ const uint8_t * src4)
{
/* *dest = (*dest + (*src1 + *src2 + *src3 + *src4 + 2)/ 4 + 1)/ 2; */
- movq_m2r (*src1, mm1); /* load 8 src1 bytes */
- movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
+ movq_m2r (*src1, mm1); /* load 8 src1 bytes */
+ movq_r2r (mm1, mm2); /* copy 8 src1 bytes */
- punpcklbw_r2r (mm0, mm1); /* unpack low src1 bytes */
- punpckhbw_r2r (mm0, mm2); /* unpack high src1 bytes */
+ punpcklbw_r2r (mm0, mm1); /* unpack low src1 bytes */
+ punpckhbw_r2r (mm0, mm2); /* unpack high src1 bytes */
- movq_m2r (*src2, mm3); /* load 8 src2 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
+ movq_m2r (*src2, mm3); /* load 8 src2 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src2 bytes */
- punpcklbw_r2r (mm0, mm3); /* unpack low src2 bytes */
- punpckhbw_r2r (mm0, mm4); /* unpack high src2 bytes */
+ punpcklbw_r2r (mm0, mm3); /* unpack low src2 bytes */
+ punpckhbw_r2r (mm0, mm4); /* unpack high src2 bytes */
- paddw_r2r (mm3, mm1); /* add lows */
- paddw_r2r (mm4, mm2); /* add highs */
+ paddw_r2r (mm3, mm1); /* add lows */
+ paddw_r2r (mm4, mm2); /* add highs */
/* now have partials in mm1 and mm2 */
- movq_m2r (*src3, mm3); /* load 8 src3 bytes */
- movq_r2r (mm3, mm4); /* copy 8 src3 bytes */
+ movq_m2r (*src3, mm3); /* load 8 src3 bytes */
+ movq_r2r (mm3, mm4); /* copy 8 src3 bytes */
- punpcklbw_r2r (mm0, mm3); /* unpack low src3 bytes */
- punpckhbw_r2r (mm0, mm4); /* unpack high src3 bytes */
+ punpcklbw_r2r (mm0, mm3); /* unpack low src3 bytes */
+ punpckhbw_r2r (mm0, mm4); /* unpack high src3 bytes */
- paddw_r2r (mm3, mm1); /* add lows */
- paddw_r2r (mm4, mm2); /* add highs */
+ paddw_r2r (mm3, mm1); /* add lows */
+ paddw_r2r (mm4, mm2); /* add highs */
- movq_m2r (*src4, mm5); /* load 8 src4 bytes */
- movq_r2r (mm5, mm6); /* copy 8 src4 bytes */
+ movq_m2r (*src4, mm5); /* load 8 src4 bytes */
+ movq_r2r (mm5, mm6); /* copy 8 src4 bytes */
- punpcklbw_r2r (mm0, mm5); /* unpack low src4 bytes */
- punpckhbw_r2r (mm0, mm6); /* unpack high src4 bytes */
+ punpcklbw_r2r (mm0, mm5); /* unpack low src4 bytes */
+ punpckhbw_r2r (mm0, mm6); /* unpack high src4 bytes */
- paddw_r2r (mm5, mm1); /* add lows */
- paddw_r2r (mm6, mm2); /* add highs */
+ paddw_r2r (mm5, mm1); /* add lows */
+ paddw_r2r (mm6, mm2); /* add highs */
paddw_m2r (round4, mm1);
- psraw_i2r (2, mm1); /* /4 */
+ psraw_i2r (2, mm1); /* /4 */
paddw_m2r (round4, mm2);
- psraw_i2r (2, mm2); /* /4 */
+ psraw_i2r (2, mm2); /* /4 */
/* now have subtotal/4 in mm1 and mm2 */
- movq_m2r (*dest, mm3); /* load 8 dest bytes */
- movq_r2r (mm3, mm4); /* copy 8 dest bytes */
+ movq_m2r (*dest, mm3); /* load 8 dest bytes */
+ movq_r2r (mm3, mm4); /* copy 8 dest bytes */
- packuswb_r2r (mm2, mm1); /* pack (w/ saturation) */
- movq_r2r (mm1,mm2); /* copy subresult */
+ packuswb_r2r (mm2, mm1); /* pack (w/ saturation) */
+ movq_r2r (mm1,mm2); /* copy subresult */
- pxor_r2r (mm1, mm3); /* xor srcavg and dest */
- pand_m2r (mask1, mm3); /* mask lower bits */
- psrlq_i2r (1, mm3); /* /2 */
- por_r2r (mm2, mm4); /* or srcavg and dest */
- psubb_r2r (mm3, mm4); /* subtract subresults */
- movq_r2m (mm4, *dest); /* store result in dest */
+ pxor_r2r (mm1, mm3); /* xor srcavg and dest */
+ pand_m2r (mask1, mm3); /* mask lower bits */
+ psrlq_i2r (1, mm3); /* /2 */
+ por_r2r (mm2, mm4); /* or srcavg and dest */
+ psubb_r2r (mm3, mm4); /* subtract subresults */
+ movq_r2m (mm4, *dest); /* store result in dest */
}
/*-----------------------------------------------------------------------*/
static inline void MC_avg_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
mmx_zero_reg ();
}
static void MC_avg_o_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_mmx (16, height, dest, ref, stride);
}
static void MC_avg_o_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_put_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
mmx_zero_reg ();
do
{
- movq_m2r (* ref, mm1); /* load 8 ref bytes */
- movq_r2m (mm1,* dest); /* store 8 bytes at curr */
+ movq_m2r (* ref, mm1); /* load 8 ref bytes */
+ movq_r2m (mm1,* dest); /* store 8 bytes at curr */
if( width == 16 )
{
- movq_m2r (* (ref+8), mm1); /* load 8 ref bytes */
- movq_r2m (mm1,* (dest+8)); /* store 8 bytes at curr */
+ movq_m2r (* (ref+8), mm1); /* load 8 ref bytes */
+ movq_r2m (mm1,* (dest+8)); /* store 8 bytes at curr */
}
dest += stride;
ref += stride;
}
static void MC_put_o_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_mmx (16, height, dest, ref, stride);
}
static void MC_put_o_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_mmx (8, height, dest, ref, stride);
}
/* Half pixel interpolation in the x direction */
static inline void MC_avg_x_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
mmx_zero_reg ();
}
static void MC_avg_x_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_x_mmx (16, height, dest, ref, stride);
}
static void MC_avg_x_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_x_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_put_x_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
mmx_zero_reg ();
}
static void MC_put_x_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_x_mmx (16, height, dest, ref, stride);
}
static void MC_put_x_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_x_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_avg_xy_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
const uint8_t * ref_next = ref + stride;
}
static void MC_avg_xy_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_xy_mmx (16, height, dest, ref, stride);
}
static void MC_avg_xy_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_xy_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_put_xy_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
const uint8_t * ref_next = ref + stride;
}
static void MC_put_xy_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_xy_mmx (16, height, dest, ref, stride);
}
static void MC_put_xy_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_xy_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_avg_y_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
const uint8_t * ref_next = ref + stride;
}
static void MC_avg_y_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_y_mmx (16, height, dest, ref, stride);
}
static void MC_avg_y_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg_y_mmx (8, height, dest, ref, stride);
}
/*-----------------------------------------------------------------------*/
static inline void MC_put_y_mmx (const int width, int height, uint8_t * dest,
- const uint8_t * ref, const int stride)
+ const uint8_t * ref, const int stride)
{
const uint8_t * ref_next = ref + stride;
}
static void MC_put_y_16_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_y_mmx (16, height, dest, ref, stride);
}
static void MC_put_y_8_mmx (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put_y_mmx (8, height, dest, ref, stride);
}
/* CPU_MMXEXT/CPU_3DNOW adaptation layer */
-#define pavg_r2r(src,dest) \
-do { \
- if (cpu == CPU_MMXEXT) \
- pavgb_r2r (src, dest); \
- else \
- pavgusb_r2r (src, dest); \
+#define pavg_r2r(src,dest) \
+do { \
+ if (cpu == CPU_MMXEXT) \
+ pavgb_r2r (src, dest); \
+ else \
+ pavgusb_r2r (src, dest); \
} while (0)
-#define pavg_m2r(src,dest) \
-do { \
- if (cpu == CPU_MMXEXT) \
- pavgb_m2r (src, dest); \
- else \
- pavgusb_m2r (src, dest); \
+#define pavg_m2r(src,dest) \
+do { \
+ if (cpu == CPU_MMXEXT) \
+ pavgb_m2r (src, dest); \
+ else \
+ pavgusb_m2r (src, dest); \
} while (0)
static inline void MC_put1_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride)
+ const int stride)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_put1_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride)
+ const int stride)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg1_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg1_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_put2_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int offset,
- const int cpu)
+ const int stride, const int offset,
+ const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_put2_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int offset,
- const int cpu)
+ const int stride, const int offset,
+ const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg2_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int offset,
- const int cpu)
+ const int stride, const int offset,
+ const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg2_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int offset,
- const int cpu)
+ const int stride, const int offset,
+ const int cpu)
{
do {
movq_m2r (*ref, mm0);
static mmx_t mask_one = {0x0101010101010101LL};
static inline void MC_put4_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
movq_m2r (*ref, mm0);
movq_m2r (*(ref+1), mm1);
movq_r2m (mm0, *dest);
dest += stride;
- movq_r2r (mm6, mm7); /* unroll ! */
- movq_r2r (mm2, mm0); /* unroll ! */
+ movq_r2r (mm6, mm7); /* unroll ! */
+ movq_r2r (mm2, mm0); /* unroll ! */
} while (--height);
}
static inline void MC_put4_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg4_8 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static inline void MC_avg4_16 (int height, uint8_t * dest, const uint8_t * ref,
- const int stride, const int cpu)
+ const int stride, const int cpu)
{
do {
movq_m2r (*ref, mm0);
}
static void MC_avg_o_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg1_16 (height, dest, ref, stride, CPU_MMXEXT);
}
static void MC_avg_o_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg1_8 (height, dest, ref, stride, CPU_MMXEXT);
}
static void MC_put_o_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put1_16 (height, dest, ref, stride);
}
static void MC_put_o_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put1_8 (height, dest, ref, stride);
}
static void MC_avg_x_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_16 (height, dest, ref, stride, 1, CPU_MMXEXT);
}
static void MC_avg_x_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_8 (height, dest, ref, stride, 1, CPU_MMXEXT);
}
static void MC_put_x_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_16 (height, dest, ref, stride, 1, CPU_MMXEXT);
}
static void MC_put_x_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_8 (height, dest, ref, stride, 1, CPU_MMXEXT);
}
static void MC_avg_y_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_16 (height, dest, ref, stride, stride, CPU_MMXEXT);
}
static void MC_avg_y_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_8 (height, dest, ref, stride, stride, CPU_MMXEXT);
}
static void MC_put_y_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_16 (height, dest, ref, stride, stride, CPU_MMXEXT);
}
static void MC_put_y_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_8 (height, dest, ref, stride, stride, CPU_MMXEXT);
}
static void MC_avg_xy_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg4_16 (height, dest, ref, stride, CPU_MMXEXT);
}
static void MC_avg_xy_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg4_8 (height, dest, ref, stride, CPU_MMXEXT);
}
static void MC_put_xy_16_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put4_16 (height, dest, ref, stride, CPU_MMXEXT);
}
static void MC_put_xy_8_mmxext (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put4_8 (height, dest, ref, stride, CPU_MMXEXT);
}
MPEG2_MC_EXTERN (mmxext)
static void MC_avg_o_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg1_16 (height, dest, ref, stride, CPU_3DNOW);
}
static void MC_avg_o_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg1_8 (height, dest, ref, stride, CPU_3DNOW);
}
static void MC_put_o_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put1_16 (height, dest, ref, stride);
}
static void MC_put_o_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put1_8 (height, dest, ref, stride);
}
static void MC_avg_x_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_16 (height, dest, ref, stride, 1, CPU_3DNOW);
}
static void MC_avg_x_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_8 (height, dest, ref, stride, 1, CPU_3DNOW);
}
static void MC_put_x_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_16 (height, dest, ref, stride, 1, CPU_3DNOW);
}
static void MC_put_x_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_8 (height, dest, ref, stride, 1, CPU_3DNOW);
}
static void MC_avg_y_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_16 (height, dest, ref, stride, stride, CPU_3DNOW);
}
static void MC_avg_y_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg2_8 (height, dest, ref, stride, stride, CPU_3DNOW);
}
static void MC_put_y_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_16 (height, dest, ref, stride, stride, CPU_3DNOW);
}
static void MC_put_y_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put2_8 (height, dest, ref, stride, stride, CPU_3DNOW);
}
static void MC_avg_xy_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg4_16 (height, dest, ref, stride, CPU_3DNOW);
}
static void MC_avg_xy_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_avg4_8 (height, dest, ref, stride, CPU_3DNOW);
}
static void MC_put_xy_16_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put4_16 (height, dest, ref, stride, CPU_3DNOW);
}
static void MC_put_xy_8_3dnow (uint8_t * dest, const uint8_t * ref,
- int stride, int height)
+ int stride, int height)
{
MC_put4_8 (height, dest, ref, stride, CPU_3DNOW);
}
#define MPEG2_H
#define MPEG2_VERSION(a,b,c) (((a)<<16)|((b)<<8)|(c))
-#define MPEG2_RELEASE MPEG2_VERSION (0, 4, 0) /* 0.4.0 */
+#define MPEG2_RELEASE MPEG2_VERSION (0, 4, 0) /* 0.4.0 */
#define SEQ_FLAG_MPEG2 1
#define SEQ_FLAG_CONSTRAINED_PARAMETERS 2
} mpeg2_convert_stage_t;
typedef int mpeg2_convert_t (int stage, void * id,
- const mpeg2_sequence_t * sequence, int stride,
- uint32_t accel, void * arg,
- mpeg2_convert_init_t * result);
+ const mpeg2_sequence_t * sequence, int stride,
+ uint32_t accel, void * arg,
+ mpeg2_convert_init_t * result);
int mpeg2_convert (mpeg2dec_t * mpeg2dec, mpeg2_convert_t convert, void * arg);
int mpeg2_stride (mpeg2dec_t * mpeg2dec, int stride);
void mpeg2_set_buf (mpeg2dec_t * mpeg2dec, uint8_t * buf[3], void * id);
void mpeg2_tag_picture (mpeg2dec_t * mpeg2dec, uint32_t tag, uint32_t tag2);
void mpeg2_init_fbuf (mpeg2_decoder_t * decoder, uint8_t * current_fbuf[3],
- uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3]);
+ uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3]);
typedef enum
{
void * mpeg2_malloc (unsigned size, mpeg2_alloc_t reason);
void mpeg2_free (void * buf);
void mpeg2_malloc_hooks (void * malloc (unsigned, mpeg2_alloc_t),
- int free (void *));
+ int free (void *));
#endif /* MPEG2_H */
/* next inside a slice, and is never used outside of mpeg2_slice() */
/* bit parsing stuff */
- uint32_t bitstream_buf; /* current 32 bit working set */
- int bitstream_bits; /* used bits in working set */
- const uint8_t * bitstream_ptr; /* buffer with stream data */
+ uint32_t bitstream_buf; /* current 32 bit working set */
+ int bitstream_bits; /* used bits in working set */
+ const uint8_t * bitstream_ptr; /* buffer with stream data */
uint8_t * dest[3];
mpeg2_picture_t new_picture;
mpeg2_picture_t pictures[4];
mpeg2_picture_t * picture;
- /*const*/ mpeg2_fbuf_t * fbuf[3]; /* 0: current fbuf, 1-2: prediction fbufs */
+ /*const*/ mpeg2_fbuf_t * fbuf[3]; /* 0: current fbuf, 1-2: prediction fbufs */
fbuf_alloc_t fbuf_alloc[3];
int custom_fbuf;
mpeg2_mc_fct * avg [8];
} mpeg2_mc_t;
-#define MPEG2_MC_EXTERN(x) mpeg2_mc_t mpeg2_mc_##x = { \
+#define MPEG2_MC_EXTERN(x) mpeg2_mc_t mpeg2_mc_##x = { \
{MC_put_o_16_##x, MC_put_x_16_##x, MC_put_y_16_##x, MC_put_xy_16_##x, \
MC_put_o_8_##x, MC_put_x_8_##x, MC_put_y_8_##x, MC_put_xy_8_##x}, \
{MC_avg_o_16_##x, MC_avg_x_16_##x, MC_avg_y_16_##x, MC_avg_xy_16_##x, \
#include "vlc.h"
static inline int get_motion_delta( mpeg2_decoder_t * const decoder,
- const int f_code )
+ const int f_code )
{
#define bit_buf (decoder->bitstream_buf)
#define bits (decoder->bitstream_bits)
#undef bit_ptr
}
-#define MOTION_420(table,ref,motion_x,motion_y,size,y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
- motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+#define MOTION_420(table,ref,motion_x,motion_y,size,y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
+ motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
table[xy_half] (decoder->dest[0] + y * decoder->stride + decoder->offset, \
- ref[0] + (pos_x >> 1) + (pos_y >> 1) * decoder->stride, \
- decoder->stride, size); \
- motion_x /= 2; motion_y /= 2; \
- xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
- offset = (((decoder->offset + motion_x) >> 1) + \
- ((((decoder->v_offset + motion_y) >> 1) + y/2) * \
- decoder->uv_stride)); \
- table[4+xy_half] (decoder->dest[1] + y/2 * decoder->uv_stride + \
- (decoder->offset >> 1), ref[1] + offset, \
- decoder->uv_stride, size/2); \
- table[4+xy_half] (decoder->dest[2] + y/2 * decoder->uv_stride + \
- (decoder->offset >> 1), ref[2] + offset, \
- decoder->uv_stride, size/2)
+ ref[0] + (pos_x >> 1) + (pos_y >> 1) * decoder->stride, \
+ decoder->stride, size); \
+ motion_x /= 2; motion_y /= 2; \
+ xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
+ offset = (((decoder->offset + motion_x) >> 1) + \
+ ((((decoder->v_offset + motion_y) >> 1) + y/2) * \
+ decoder->uv_stride)); \
+ table[4+xy_half] (decoder->dest[1] + y/2 * decoder->uv_stride + \
+ (decoder->offset >> 1), ref[1] + offset, \
+ decoder->uv_stride, size/2); \
+ table[4+xy_half] (decoder->dest[2] + y/2 * decoder->uv_stride + \
+ (decoder->offset >> 1), ref[2] + offset, \
+ decoder->uv_stride, size/2)
#define MOTION_FIELD_420(table,ref,motion_x,motion_y,dest_field,op,src_field) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
- decoder->offset, \
- (ref[0] + (pos_x >> 1) + \
- ((pos_y op) + src_field) * decoder->stride), \
- 2 * decoder->stride, 8); \
- motion_x /= 2; motion_y /= 2; \
- xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
- offset = (((decoder->offset + motion_x) >> 1) + \
- (((decoder->v_offset >> 1) + (motion_y op) + src_field) * \
- decoder->uv_stride)); \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
+ decoder->offset, \
+ (ref[0] + (pos_x >> 1) + \
+ ((pos_y op) + src_field) * decoder->stride), \
+ 2 * decoder->stride, 8); \
+ motion_x /= 2; motion_y /= 2; \
+ xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
+ offset = (((decoder->offset + motion_x) >> 1) + \
+ (((decoder->v_offset >> 1) + (motion_y op) + src_field) * \
+ decoder->uv_stride)); \
table[4+xy_half] (decoder->dest[1] + dest_field * decoder->uv_stride + \
- (decoder->offset >> 1), ref[1] + offset, \
- 2 * decoder->uv_stride, 4); \
+ (decoder->offset >> 1), ref[1] + offset, \
+ 2 * decoder->uv_stride, 4); \
table[4+xy_half] (decoder->dest[2] + dest_field * decoder->uv_stride + \
- (decoder->offset >> 1), ref[2] + offset, \
- 2 * decoder->uv_stride, 4)
-
-#define MOTION_DMV_420(table,ref,motion_x,motion_y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
- table[xy_half] (decoder->dest[0] + decoder->offset, \
- ref[0] + offset, 2 * decoder->stride, 8); \
+ (decoder->offset >> 1), ref[2] + offset, \
+ 2 * decoder->uv_stride, 4)
+
+#define MOTION_DMV_420(table,ref,motion_x,motion_y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
+ table[xy_half] (decoder->dest[0] + decoder->offset, \
+ ref[0] + offset, 2 * decoder->stride, 8); \
table[xy_half] (decoder->dest[0] + decoder->stride + decoder->offset, \
- ref[0] + decoder->stride + offset, \
- 2 * decoder->stride, 8); \
- motion_x /= 2; motion_y /= 2; \
- xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
- offset = (((decoder->offset + motion_x) >> 1) + \
- (((decoder->v_offset >> 1) + (motion_y & ~1)) * \
- decoder->uv_stride)); \
- table[4+xy_half] (decoder->dest[1] + (decoder->offset >> 1), \
- ref[1] + offset, 2 * decoder->uv_stride, 4); \
- table[4+xy_half] (decoder->dest[1] + decoder->uv_stride + \
- (decoder->offset >> 1), \
- ref[1] + decoder->uv_stride + offset, \
- 2 * decoder->uv_stride, 4); \
- table[4+xy_half] (decoder->dest[2] + (decoder->offset >> 1), \
- ref[2] + offset, 2 * decoder->uv_stride, 4); \
- table[4+xy_half] (decoder->dest[2] + decoder->uv_stride + \
- (decoder->offset >> 1), \
- ref[2] + decoder->uv_stride + offset, \
- 2 * decoder->uv_stride, 4)
-
-#define MOTION_ZERO_420(table,ref) \
- table[0] (decoder->dest[0] + decoder->offset, \
- (ref[0] + decoder->offset + \
- decoder->v_offset * decoder->stride), decoder->stride, 16); \
- offset = ((decoder->offset >> 1) + \
- (decoder->v_offset >> 1) * decoder->uv_stride); \
- table[4] (decoder->dest[1] + (decoder->offset >> 1), \
- ref[1] + offset, decoder->uv_stride, 8); \
- table[4] (decoder->dest[2] + (decoder->offset >> 1), \
- ref[2] + offset, decoder->uv_stride, 8)
-
-#define MOTION_422(table,ref,motion_x,motion_y,size,y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
- motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + (pos_y >> 1) * decoder->stride; \
+ ref[0] + decoder->stride + offset, \
+ 2 * decoder->stride, 8); \
+ motion_x /= 2; motion_y /= 2; \
+ xy_half = ((motion_y & 1) << 1) | (motion_x & 1); \
+ offset = (((decoder->offset + motion_x) >> 1) + \
+ (((decoder->v_offset >> 1) + (motion_y & ~1)) * \
+ decoder->uv_stride)); \
+ table[4+xy_half] (decoder->dest[1] + (decoder->offset >> 1), \
+ ref[1] + offset, 2 * decoder->uv_stride, 4); \
+ table[4+xy_half] (decoder->dest[1] + decoder->uv_stride + \
+ (decoder->offset >> 1), \
+ ref[1] + decoder->uv_stride + offset, \
+ 2 * decoder->uv_stride, 4); \
+ table[4+xy_half] (decoder->dest[2] + (decoder->offset >> 1), \
+ ref[2] + offset, 2 * decoder->uv_stride, 4); \
+ table[4+xy_half] (decoder->dest[2] + decoder->uv_stride + \
+ (decoder->offset >> 1), \
+ ref[2] + decoder->uv_stride + offset, \
+ 2 * decoder->uv_stride, 4)
+
+#define MOTION_ZERO_420(table,ref) \
+ table[0] (decoder->dest[0] + decoder->offset, \
+ (ref[0] + decoder->offset + \
+ decoder->v_offset * decoder->stride), decoder->stride, 16); \
+ offset = ((decoder->offset >> 1) + \
+ (decoder->v_offset >> 1) * decoder->uv_stride); \
+ table[4] (decoder->dest[1] + (decoder->offset >> 1), \
+ ref[1] + offset, decoder->uv_stride, 8); \
+ table[4] (decoder->dest[2] + (decoder->offset >> 1), \
+ ref[2] + offset, decoder->uv_stride, 8)
+
+#define MOTION_422(table,ref,motion_x,motion_y,size,y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
+ motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + (pos_y >> 1) * decoder->stride; \
table[xy_half] (decoder->dest[0] + y * decoder->stride + decoder->offset, \
- ref[0] + offset, decoder->stride, size); \
- offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
- motion_x /= 2; \
- xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
- table[4+xy_half] (decoder->dest[1] + y * decoder->uv_stride + \
- (decoder->offset >> 1), ref[1] + offset, \
- decoder->uv_stride, size); \
- table[4+xy_half] (decoder->dest[2] + y * decoder->uv_stride + \
- (decoder->offset >> 1), ref[2] + offset, \
- decoder->uv_stride, size)
+ ref[0] + offset, decoder->stride, size); \
+ offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
+ motion_x /= 2; \
+ xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
+ table[4+xy_half] (decoder->dest[1] + y * decoder->uv_stride + \
+ (decoder->offset >> 1), ref[1] + offset, \
+ decoder->uv_stride, size); \
+ table[4+xy_half] (decoder->dest[2] + y * decoder->uv_stride + \
+ (decoder->offset >> 1), ref[2] + offset, \
+ decoder->uv_stride, size)
#define MOTION_FIELD_422(table,ref,motion_x,motion_y,dest_field,op,src_field) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + ((pos_y op) + src_field) * decoder->stride; \
- table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
- decoder->offset, ref[0] + offset, \
- 2 * decoder->stride, 8); \
- offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
- motion_x /= 2; \
- xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + ((pos_y op) + src_field) * decoder->stride; \
+ table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
+ decoder->offset, ref[0] + offset, \
+ 2 * decoder->stride, 8); \
+ offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
+ motion_x /= 2; \
+ xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
table[4+xy_half] (decoder->dest[1] + dest_field * decoder->uv_stride + \
- (decoder->offset >> 1), ref[1] + offset, \
- 2 * decoder->uv_stride, 8); \
+ (decoder->offset >> 1), ref[1] + offset, \
+ 2 * decoder->uv_stride, 8); \
table[4+xy_half] (decoder->dest[2] + dest_field * decoder->uv_stride + \
- (decoder->offset >> 1), ref[2] + offset, \
- 2 * decoder->uv_stride, 8)
-
-#define MOTION_DMV_422(table,ref,motion_x,motion_y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
- table[xy_half] (decoder->dest[0] + decoder->offset, \
- ref[0] + offset, 2 * decoder->stride, 8); \
+ (decoder->offset >> 1), ref[2] + offset, \
+ 2 * decoder->uv_stride, 8)
+
+#define MOTION_DMV_422(table,ref,motion_x,motion_y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
+ table[xy_half] (decoder->dest[0] + decoder->offset, \
+ ref[0] + offset, 2 * decoder->stride, 8); \
table[xy_half] (decoder->dest[0] + decoder->stride + decoder->offset, \
- ref[0] + decoder->stride + offset, \
- 2 * decoder->stride, 8); \
- offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
- motion_x /= 2; \
- xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
- table[4+xy_half] (decoder->dest[1] + (decoder->offset >> 1), \
- ref[1] + offset, 2 * decoder->uv_stride, 8); \
- table[4+xy_half] (decoder->dest[1] + decoder->uv_stride + \
- (decoder->offset >> 1), \
- ref[1] + decoder->uv_stride + offset, \
- 2 * decoder->uv_stride, 8); \
- table[4+xy_half] (decoder->dest[2] + (decoder->offset >> 1), \
- ref[2] + offset, 2 * decoder->uv_stride, 8); \
- table[4+xy_half] (decoder->dest[2] + decoder->uv_stride + \
- (decoder->offset >> 1), \
- ref[2] + decoder->uv_stride + offset, \
- 2 * decoder->uv_stride, 8)
-
-#define MOTION_ZERO_422(table,ref) \
- offset = decoder->offset + decoder->v_offset * decoder->stride; \
- table[0] (decoder->dest[0] + decoder->offset, \
- ref[0] + offset, decoder->stride, 16); \
- offset >>= 1; \
- table[4] (decoder->dest[1] + (decoder->offset >> 1), \
- ref[1] + offset, decoder->uv_stride, 16); \
- table[4] (decoder->dest[2] + (decoder->offset >> 1), \
- ref[2] + offset, decoder->uv_stride, 16)
-
-#define MOTION_444(table,ref,motion_x,motion_y,size,y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
- motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + (pos_y >> 1) * decoder->stride; \
+ ref[0] + decoder->stride + offset, \
+ 2 * decoder->stride, 8); \
+ offset = (offset + (motion_x & (motion_x < 0))) >> 1; \
+ motion_x /= 2; \
+ xy_half = ((pos_y & 1) << 1) | (motion_x & 1); \
+ table[4+xy_half] (decoder->dest[1] + (decoder->offset >> 1), \
+ ref[1] + offset, 2 * decoder->uv_stride, 8); \
+ table[4+xy_half] (decoder->dest[1] + decoder->uv_stride + \
+ (decoder->offset >> 1), \
+ ref[1] + decoder->uv_stride + offset, \
+ 2 * decoder->uv_stride, 8); \
+ table[4+xy_half] (decoder->dest[2] + (decoder->offset >> 1), \
+ ref[2] + offset, 2 * decoder->uv_stride, 8); \
+ table[4+xy_half] (decoder->dest[2] + decoder->uv_stride + \
+ (decoder->offset >> 1), \
+ ref[2] + decoder->uv_stride + offset, \
+ 2 * decoder->uv_stride, 8)
+
+#define MOTION_ZERO_422(table,ref) \
+ offset = decoder->offset + decoder->v_offset * decoder->stride; \
+ table[0] (decoder->dest[0] + decoder->offset, \
+ ref[0] + offset, decoder->stride, 16); \
+ offset >>= 1; \
+ table[4] (decoder->dest[1] + (decoder->offset >> 1), \
+ ref[1] + offset, decoder->uv_stride, 16); \
+ table[4] (decoder->dest[2] + (decoder->offset >> 1), \
+ ref[2] + offset, decoder->uv_stride, 16)
+
+#define MOTION_444(table,ref,motion_x,motion_y,size,y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = 2 * decoder->v_offset + motion_y + 2 * y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y_ ## size)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y_ ## size; \
+ motion_y = pos_y - 2 * decoder->v_offset - 2 * y; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + (pos_y >> 1) * decoder->stride; \
table[xy_half] (decoder->dest[0] + y * decoder->stride + decoder->offset, \
- ref[0] + offset, decoder->stride, size); \
+ ref[0] + offset, decoder->stride, size); \
table[xy_half] (decoder->dest[1] + y * decoder->stride + decoder->offset, \
- ref[1] + offset, decoder->stride, size); \
+ ref[1] + offset, decoder->stride, size); \
table[xy_half] (decoder->dest[2] + y * decoder->stride + decoder->offset, \
- ref[2] + offset, decoder->stride, size)
+ ref[2] + offset, decoder->stride, size)
#define MOTION_FIELD_444(table,ref,motion_x,motion_y,dest_field,op,src_field) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + ((pos_y op) + src_field) * decoder->stride; \
- table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
- decoder->offset, ref[0] + offset, \
- 2 * decoder->stride, 8); \
- table[xy_half] (decoder->dest[1] + dest_field * decoder->stride + \
- decoder->offset, ref[1] + offset, \
- 2 * decoder->stride, 8); \
- table[xy_half] (decoder->dest[2] + dest_field * decoder->stride + \
- decoder->offset, ref[2] + offset, \
- 2 * decoder->stride, 8)
-
-#define MOTION_DMV_444(table,ref,motion_x,motion_y) \
- pos_x = 2 * decoder->offset + motion_x; \
- pos_y = decoder->v_offset + motion_y; \
- if (unlikely (pos_x > decoder->limit_x)) { \
- pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
- motion_x = pos_x - 2 * decoder->offset; \
- } \
- if (unlikely (pos_y > decoder->limit_y)) { \
- pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
- motion_y = pos_y - decoder->v_offset; \
- } \
- xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
- offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
- table[xy_half] (decoder->dest[0] + decoder->offset, \
- ref[0] + offset, 2 * decoder->stride, 8); \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + ((pos_y op) + src_field) * decoder->stride; \
+ table[xy_half] (decoder->dest[0] + dest_field * decoder->stride + \
+ decoder->offset, ref[0] + offset, \
+ 2 * decoder->stride, 8); \
+ table[xy_half] (decoder->dest[1] + dest_field * decoder->stride + \
+ decoder->offset, ref[1] + offset, \
+ 2 * decoder->stride, 8); \
+ table[xy_half] (decoder->dest[2] + dest_field * decoder->stride + \
+ decoder->offset, ref[2] + offset, \
+ 2 * decoder->stride, 8)
+
+#define MOTION_DMV_444(table,ref,motion_x,motion_y) \
+ pos_x = 2 * decoder->offset + motion_x; \
+ pos_y = decoder->v_offset + motion_y; \
+ if (unlikely (pos_x > decoder->limit_x)) { \
+ pos_x = ((int)pos_x < 0) ? 0 : decoder->limit_x; \
+ motion_x = pos_x - 2 * decoder->offset; \
+ } \
+ if (unlikely (pos_y > decoder->limit_y)) { \
+ pos_y = ((int)pos_y < 0) ? 0 : decoder->limit_y; \
+ motion_y = pos_y - decoder->v_offset; \
+ } \
+ xy_half = ((pos_y & 1) << 1) | (pos_x & 1); \
+ offset = (pos_x >> 1) + (pos_y & ~1) * decoder->stride; \
+ table[xy_half] (decoder->dest[0] + decoder->offset, \
+ ref[0] + offset, 2 * decoder->stride, 8); \
table[xy_half] (decoder->dest[0] + decoder->stride + decoder->offset, \
- ref[0] + decoder->stride + offset, \
- 2 * decoder->stride, 8); \
- table[xy_half] (decoder->dest[1] + decoder->offset, \
- ref[1] + offset, 2 * decoder->stride, 8); \
+ ref[0] + decoder->stride + offset, \
+ 2 * decoder->stride, 8); \
+ table[xy_half] (decoder->dest[1] + decoder->offset, \
+ ref[1] + offset, 2 * decoder->stride, 8); \
table[xy_half] (decoder->dest[1] + decoder->stride + decoder->offset, \
- ref[1] + decoder->stride + offset, \
- 2 * decoder->stride, 8); \
- table[xy_half] (decoder->dest[2] + decoder->offset, \
- ref[2] + offset, 2 * decoder->stride, 8); \
+ ref[1] + decoder->stride + offset, \
+ 2 * decoder->stride, 8); \
+ table[xy_half] (decoder->dest[2] + decoder->offset, \
+ ref[2] + offset, 2 * decoder->stride, 8); \
table[xy_half] (decoder->dest[2] + decoder->stride + decoder->offset, \
- ref[2] + decoder->stride + offset, \
- 2 * decoder->stride, 8)
-
-#define MOTION_ZERO_444(table,ref) \
- offset = decoder->offset + decoder->v_offset * decoder->stride; \
- table[0] (decoder->dest[0] + decoder->offset, \
- ref[0] + offset, decoder->stride, 16); \
- table[4] (decoder->dest[1] + decoder->offset, \
- ref[1] + offset, decoder->stride, 16); \
- table[4] (decoder->dest[2] + (decoder->offset >> 1), \
- ref[2] + offset, decoder->stride, 16)
+ ref[2] + decoder->stride + offset, \
+ 2 * decoder->stride, 8)
+
+#define MOTION_ZERO_444(table,ref) \
+ offset = decoder->offset + decoder->v_offset * decoder->stride; \
+ table[0] (decoder->dest[0] + decoder->offset, \
+ ref[0] + offset, decoder->stride, 16); \
+ table[4] (decoder->dest[1] + decoder->offset, \
+ ref[1] + offset, decoder->stride, 16); \
+ table[4] (decoder->dest[2] + (decoder->offset >> 1), \
+ ref[2] + offset, decoder->stride, 16)
#define bit_buf (decoder->bitstream_buf)
#define bits (decoder->bitstream_bits)
#define bit_ptr (decoder->bitstream_ptr)
static void motion_mp1 (mpeg2_decoder_t * const decoder,
- motion_t * const motion,
- mpeg2_mc_fct * const * const table)
+ motion_t * const motion,
+ mpeg2_mc_fct * const * const table)
{
int motion_x, motion_y;
unsigned int pos_x, pos_y, xy_half, offset;
}
#define MOTION_FUNCTIONS(FORMAT,MOTION,MOTION_FIELD,MOTION_DMV,MOTION_ZERO) \
- \
-static void motion_fr_frame_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
- motion->f_code[1]); \
- motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
- motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
- \
- MOTION (table, motion->ref[0], motion_x, motion_y, 16, 0); \
-} \
- \
-static void motion_fr_field_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y, field; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- field = UBITS (bit_buf, 1); \
- DUMPBITS (bit_buf, bits, 1); \
- \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[0][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = ((motion->pmv[0][1] >> 1) + \
- get_motion_delta (decoder, motion->f_code[1])); \
- /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
- motion->pmv[0][1] = motion_y << 1; \
- \
+ \
+static void motion_fr_frame_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
+ motion->f_code[1]); \
+ motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
+ motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
+ \
+ MOTION (table, motion->ref[0], motion_x, motion_y, 16, 0); \
+} \
+ \
+static void motion_fr_field_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y, field; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ field = UBITS (bit_buf, 1); \
+ DUMPBITS (bit_buf, bits, 1); \
+ \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[0][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = ((motion->pmv[0][1] >> 1) + \
+ get_motion_delta (decoder, motion->f_code[1])); \
+ /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
+ motion->pmv[0][1] = motion_y << 1; \
+ \
MOTION_FIELD (table, motion->ref[0], motion_x, motion_y, 0, & ~1, field); \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- field = UBITS (bit_buf, 1); \
- DUMPBITS (bit_buf, bits, 1); \
- \
- motion_x = motion->pmv[1][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = ((motion->pmv[1][1] >> 1) + \
- get_motion_delta (decoder, motion->f_code[1])); \
- /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
- motion->pmv[1][1] = motion_y << 1; \
- \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ field = UBITS (bit_buf, 1); \
+ DUMPBITS (bit_buf, bits, 1); \
+ \
+ motion_x = motion->pmv[1][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = ((motion->pmv[1][1] >> 1) + \
+ get_motion_delta (decoder, motion->f_code[1])); \
+ /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
+ motion->pmv[1][1] = motion_y << 1; \
+ \
MOTION_FIELD (table, motion->ref[0], motion_x, motion_y, 1, & ~1, field); \
-} \
- \
-static void motion_fr_dmv_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y, dmv_x, dmv_y, m, other_x, other_y; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- dmv_x = get_dmv (decoder); \
- \
- motion_y = ((motion->pmv[0][1] >> 1) + \
- get_motion_delta (decoder, motion->f_code[1])); \
- /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
- motion->pmv[1][1] = motion->pmv[0][1] = motion_y << 1; \
- dmv_y = get_dmv (decoder); \
- \
- m = decoder->top_field_first ? 1 : 3; \
- other_x = ((motion_x * m + (motion_x > 0)) >> 1) + dmv_x; \
- other_y = ((motion_y * m + (motion_y > 0)) >> 1) + dmv_y - 1; \
+} \
+ \
+static void motion_fr_dmv_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y, dmv_x, dmv_y, m, other_x, other_y; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ dmv_x = get_dmv (decoder); \
+ \
+ motion_y = ((motion->pmv[0][1] >> 1) + \
+ get_motion_delta (decoder, motion->f_code[1])); \
+ /* motion_y = bound_motion_vector (motion_y, motion->f_code[1]); */ \
+ motion->pmv[1][1] = motion->pmv[0][1] = motion_y << 1; \
+ dmv_y = get_dmv (decoder); \
+ \
+ m = decoder->top_field_first ? 1 : 3; \
+ other_x = ((motion_x * m + (motion_x > 0)) >> 1) + dmv_x; \
+ other_y = ((motion_y * m + (motion_y > 0)) >> 1) + dmv_y - 1; \
MOTION_FIELD (mpeg2_mc.put, motion->ref[0], other_x, other_y, 0, | 1, 0); \
- \
- m = decoder->top_field_first ? 3 : 1; \
- other_x = ((motion_x * m + (motion_x > 0)) >> 1) + dmv_x; \
- other_y = ((motion_y * m + (motion_y > 0)) >> 1) + dmv_y + 1; \
+ \
+ m = decoder->top_field_first ? 3 : 1; \
+ other_x = ((motion_x * m + (motion_x > 0)) >> 1) + dmv_x; \
+ other_y = ((motion_y * m + (motion_y > 0)) >> 1) + dmv_y + 1; \
MOTION_FIELD (mpeg2_mc.put, motion->ref[0], other_x, other_y, 1, & ~1, 0);\
- \
- MOTION_DMV (mpeg2_mc.avg, motion->ref[0], motion_x, motion_y); \
-} \
- \
-static void motion_reuse_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- motion_x = motion->pmv[0][0]; \
- motion_y = motion->pmv[0][1]; \
- \
- MOTION (table, motion->ref[0], motion_x, motion_y, 16, 0); \
-} \
- \
-static void motion_zero_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- unsigned int offset; \
- \
- motion->pmv[0][0] = motion->pmv[0][1] = 0; \
- motion->pmv[1][0] = motion->pmv[1][1] = 0; \
- \
- MOTION_ZERO (table, motion->ref[0]); \
-} \
- \
-static void motion_fi_field_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y; \
- uint8_t ** ref_field; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
- DUMPBITS (bit_buf, bits, 1); \
- \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
- motion->f_code[1]); \
- motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
- motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
- \
- MOTION (table, ref_field, motion_x, motion_y, 16, 0); \
-} \
- \
-static void motion_fi_16x8_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y; \
- uint8_t ** ref_field; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
- DUMPBITS (bit_buf, bits, 1); \
- \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[0][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
- motion->f_code[1]); \
- motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
- motion->pmv[0][1] = motion_y; \
- \
- MOTION (table, ref_field, motion_x, motion_y, 8, 0); \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
- DUMPBITS (bit_buf, bits, 1); \
- \
- motion_x = motion->pmv[1][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion_x; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_y = motion->pmv[1][1] + get_motion_delta (decoder, \
- motion->f_code[1]); \
- motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
- motion->pmv[1][1] = motion_y; \
- \
- MOTION (table, ref_field, motion_x, motion_y, 8, 8); \
-} \
- \
-static void motion_fi_dmv_##FORMAT (mpeg2_decoder_t * const decoder, \
- motion_t * const motion, \
- mpeg2_mc_fct * const * const table) \
-{ \
- int motion_x, motion_y, other_x, other_y; \
- unsigned int pos_x, pos_y, xy_half, offset; \
- \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
- motion->f_code[0]); \
- motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
- motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
- NEEDBITS (bit_buf, bits, bit_ptr); \
- other_x = ((motion_x + (motion_x > 0)) >> 1) + get_dmv (decoder); \
- \
- motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
- motion->f_code[1]); \
- motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
- motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
- other_y = (((motion_y + (motion_y > 0)) >> 1) + get_dmv (decoder) + \
- decoder->dmv_offset); \
- \
- MOTION (mpeg2_mc.put, motion->ref[0], motion_x, motion_y, 16, 0); \
- MOTION (mpeg2_mc.avg, motion->ref[1], other_x, other_y, 16, 0); \
-} \
+ \
+ MOTION_DMV (mpeg2_mc.avg, motion->ref[0], motion_x, motion_y); \
+} \
+ \
+static void motion_reuse_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ motion_x = motion->pmv[0][0]; \
+ motion_y = motion->pmv[0][1]; \
+ \
+ MOTION (table, motion->ref[0], motion_x, motion_y, 16, 0); \
+} \
+ \
+static void motion_zero_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ unsigned int offset; \
+ \
+ motion->pmv[0][0] = motion->pmv[0][1] = 0; \
+ motion->pmv[1][0] = motion->pmv[1][1] = 0; \
+ \
+ MOTION_ZERO (table, motion->ref[0]); \
+} \
+ \
+static void motion_fi_field_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y; \
+ uint8_t ** ref_field; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
+ DUMPBITS (bit_buf, bits, 1); \
+ \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
+ motion->f_code[1]); \
+ motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
+ motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
+ \
+ MOTION (table, ref_field, motion_x, motion_y, 16, 0); \
+} \
+ \
+static void motion_fi_16x8_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y; \
+ uint8_t ** ref_field; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
+ DUMPBITS (bit_buf, bits, 1); \
+ \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[0][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
+ motion->f_code[1]); \
+ motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
+ motion->pmv[0][1] = motion_y; \
+ \
+ MOTION (table, ref_field, motion_x, motion_y, 8, 0); \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ ref_field = motion->ref2[UBITS (bit_buf, 1)]; \
+ DUMPBITS (bit_buf, bits, 1); \
+ \
+ motion_x = motion->pmv[1][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion_x; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_y = motion->pmv[1][1] + get_motion_delta (decoder, \
+ motion->f_code[1]); \
+ motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
+ motion->pmv[1][1] = motion_y; \
+ \
+ MOTION (table, ref_field, motion_x, motion_y, 8, 8); \
+} \
+ \
+static void motion_fi_dmv_##FORMAT (mpeg2_decoder_t * const decoder, \
+ motion_t * const motion, \
+ mpeg2_mc_fct * const * const table) \
+{ \
+ int motion_x, motion_y, other_x, other_y; \
+ unsigned int pos_x, pos_y, xy_half, offset; \
+ \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ motion_x = motion->pmv[0][0] + get_motion_delta (decoder, \
+ motion->f_code[0]); \
+ motion_x = bound_motion_vector (motion_x, motion->f_code[0]); \
+ motion->pmv[1][0] = motion->pmv[0][0] = motion_x; \
+ NEEDBITS (bit_buf, bits, bit_ptr); \
+ other_x = ((motion_x + (motion_x > 0)) >> 1) + get_dmv (decoder); \
+ \
+ motion_y = motion->pmv[0][1] + get_motion_delta (decoder, \
+ motion->f_code[1]); \
+ motion_y = bound_motion_vector (motion_y, motion->f_code[1]); \
+ motion->pmv[1][1] = motion->pmv[0][1] = motion_y; \
+ other_y = (((motion_y + (motion_y > 0)) >> 1) + get_dmv (decoder) + \
+ decoder->dmv_offset); \
+ \
+ MOTION (mpeg2_mc.put, motion->ref[0], motion_x, motion_y, 16, 0); \
+ MOTION (mpeg2_mc.avg, motion->ref[1], other_x, other_y, 16, 0); \
+} \
MOTION_FUNCTIONS (420, MOTION_420, MOTION_FIELD_420, MOTION_DMV_420,
- MOTION_ZERO_420)
+ MOTION_ZERO_420)
MOTION_FUNCTIONS (422, MOTION_422, MOTION_FIELD_422, MOTION_DMV_422,
- MOTION_ZERO_422)
+ MOTION_ZERO_422)
MOTION_FUNCTIONS (444, MOTION_444, MOTION_FIELD_444, MOTION_DMV_444,
- MOTION_ZERO_444)
+ MOTION_ZERO_444)
/* like motion_frame, but parsing without actual motion compensation */
static void motion_fr_conceal (mpeg2_decoder_t * const decoder)
#undef bits
#undef bit_ptr
-#define MOTION_CALL(routine,direction) \
-do { \
- if ((direction) & MACROBLOCK_MOTION_FORWARD) \
- routine (decoder, &(decoder->f_motion), mpeg2_mc.put); \
- if ((direction) & MACROBLOCK_MOTION_BACKWARD) \
- routine (decoder, &(decoder->b_motion), \
- ((direction) & MACROBLOCK_MOTION_FORWARD ? \
- mpeg2_mc.avg : mpeg2_mc.put)); \
+#define MOTION_CALL(routine,direction) \
+do { \
+ if ((direction) & MACROBLOCK_MOTION_FORWARD) \
+ routine (decoder, &(decoder->f_motion), mpeg2_mc.put); \
+ if ((direction) & MACROBLOCK_MOTION_BACKWARD) \
+ routine (decoder, &(decoder->b_motion), \
+ ((direction) & MACROBLOCK_MOTION_FORWARD ? \
+ mpeg2_mc.avg : mpeg2_mc.put)); \
} while (0)
-#define NEXT_MACROBLOCK \
-do { \
- decoder->offset += 16; \
- if (decoder->offset == decoder->width) { \
- do { /* just so we can use the break statement */ \
- if (decoder->convert) { \
- decoder->convert (decoder->convert_id, decoder->dest, \
- decoder->v_offset); \
- if (decoder->coding_type == B_TYPE) \
- break; \
- } \
- decoder->dest[0] += decoder->slice_stride; \
- decoder->dest[1] += decoder->slice_uv_stride; \
- decoder->dest[2] += decoder->slice_uv_stride; \
- } while (0); \
- decoder->v_offset += 16; \
- if (decoder->v_offset > decoder->limit_y) { \
- if (mpeg2_cpu_state_restore) \
- mpeg2_cpu_state_restore (&cpu_state); \
- return; \
- } \
- decoder->offset = 0; \
- } \
+#define NEXT_MACROBLOCK \
+do { \
+ decoder->offset += 16; \
+ if (decoder->offset == decoder->width) { \
+ do { /* just so we can use the break statement */ \
+ if (decoder->convert) { \
+ decoder->convert (decoder->convert_id, decoder->dest, \
+ decoder->v_offset); \
+ if (decoder->coding_type == B_TYPE) \
+ break; \
+ } \
+ decoder->dest[0] += decoder->slice_stride; \
+ decoder->dest[1] += decoder->slice_uv_stride; \
+ decoder->dest[2] += decoder->slice_uv_stride; \
+ } while (0); \
+ decoder->v_offset += 16; \
+ if (decoder->v_offset > decoder->limit_y) { \
+ if (mpeg2_cpu_state_restore) \
+ mpeg2_cpu_state_restore (&cpu_state); \
+ return; \
+ } \
+ decoder->offset = 0; \
+ } \
} while (0)
void mpeg2_init_fbuf (mpeg2_decoder_t * decoder, uint8_t * current_fbuf[3],
- uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3])
+ uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3])
{
int offset, stride, height, bottom_field;
/*
* Check that first field went through OK. Otherwise,
* indicate bad frame.
- */
+ */
if (decoder->second_field)
{
mpeg2dec->xvmc_last_slice_code = (xxmc->decoded) ? 0 : -1;
if (xxmc->result != 0)
{
//xxmc->proc_xxmc_flushsync( picture );
- xxmc->proc_xxmc_flush( picture );
+ xxmc->proc_xxmc_flush( picture );
mpeg2dec->xvmc_last_slice_code=-1;
return;
}
}
}
-void mpeg2_xxmc_vld_frame_complete(mpeg2dec_t *mpeg2dec, picture_t *picture, int code)
+void mpeg2_xxmc_vld_frame_complete(mpeg2dec_t *mpeg2dec, picture_t *picture, int code)
{
vlc_xxmc_t *xxmc = (vlc_xxmc_t *) picture->p_data;
vlc_vld_frame_t *vft = &xxmc->vld_frame;
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#define GETWORD(bit_buf,shift,bit_ptr) \
-do { \
- bit_buf |= ((bit_ptr[0] << 8) | bit_ptr[1]) << (shift); \
- bit_ptr += 2; \
+#define GETWORD(bit_buf,shift,bit_ptr) \
+do { \
+ bit_buf |= ((bit_ptr[0] << 8) | bit_ptr[1]) << (shift); \
+ bit_ptr += 2; \
} while (0)
static inline void bitstream_init (mpeg2_decoder_t * decoder,
- const uint8_t * start)
+ const uint8_t * start)
{
decoder->bitstream_buf =
- (start[0] << 24) | (start[1] << 16) | (start[2] << 8) | start[3];
+ (start[0] << 24) | (start[1] << 16) | (start[2] << 8) | start[3];
decoder->bitstream_ptr = start + 4;
decoder->bitstream_bits = -16;
}
/* make sure that there are at least 16 valid bits in bit_buf */
-#define NEEDBITS(bit_buf,bits,bit_ptr) \
-do { \
- if (unlikely (bits > 0)) { \
- GETWORD (bit_buf, bits, bit_ptr); \
- bits -= 16; \
- } \
+#define NEEDBITS(bit_buf,bits,bit_ptr) \
+do { \
+ if (unlikely (bits > 0)) { \
+ GETWORD (bit_buf, bits, bit_ptr); \
+ bits -= 16; \
+ } \
} while (0)
/* remove num valid bits from bit_buf */
-#define DUMPBITS(bit_buf,bits,num) \
-do { \
- bit_buf <<= (num); \
- bits += (num); \
+#define DUMPBITS(bit_buf,bits,num) \
+do { \
+ bit_buf <<= (num); \
+ bits += (num); \
} while (0)
/* take num bits from the high part of bit_buf and zero extend them */
/* include/config.h.in. Generated from configure.in by autoheader. */
/* autodetect accelerations */
-#define ACCEL_DETECT
+#define ACCEL_DETECT
/* alpha architecture */
/* #undef ARCH_ALPHA */
/* #undef ARCH_SPARC */
/* x86 architecture */
-#define ARCH_X86
+#define ARCH_X86
/* maximum supported data alignment */
#define ATTRIBUTE_ALIGNED_MAX 64
/* #undef HAVE_ALTIVEC_H */
/* Define if you have the `__builtin_expect' function. */
-#define HAVE_BUILTIN_EXPECT
+#define HAVE_BUILTIN_EXPECT
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* #undef LIBVO_SDL */
/* libvo X11 support */
-#define LIBVO_X11
+#define LIBVO_X11
/* libvo Xv support */
-#define LIBVO_XV
+#define LIBVO_XV
/* mpeg2dec profiling */
/* #undef MPEG2DEC_GPROF */
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys = NULL;
uint32_t i_accel = 0;
- FILE *f_wd_dec;
+ FILE *f_wd_dec;
msg_Dbg(p_dec, "OpenDecoder Entering");
mtrace();
{
// fprintf(p_sys->f_wd_nb, "%d\n", mdate());
fprintf(p_sys->f_wd_nb, "%s\n", mdate());
- fflush(p_sys->f_wd_nb);
+ fflush(p_sys->f_wd_nb);
}
#endif
p_pic = p_dec->pf_vout_buffer_new( p_dec );
static int TrackChange( vlc_object_t *p_this, const char *psz_var,
vlc_value_t oldval, vlc_value_t newval, void *p_data );
-static int GetInputMeta ( input_item_t *p_input,
+static int GetInputMeta ( input_item_t *p_input,
DBusMessageIter *args);
struct intf_sys_t
REPLY_INIT;
OUT_ARGUMENTS;
- DBusError error;
+ DBusError error;
dbus_error_init( &error );
char *psz_file;
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
- while ( i_count < i_position )
+ while ( i_count < i_position )
{
i_count++;
TEST_NEXT;
playlist_t *p_playlist = pl_Yield( (vlc_object_t*) p_this );
playlist_item_t* p_tested_item = p_playlist->p_root_onelevel;
playlist_item_t* p_last_item = playlist_GetLastLeaf( p_playlist,
- p_playlist->p_root_onelevel );
+ p_playlist->p_root_onelevel );
while ( p_tested_item->p_input->i_id != p_last_item->p_input->i_id )
{
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
- while ( i_count < i_position )
+ while ( i_count < i_position )
{
i_count++;
TEST_NEXT;
}
- PL_LOCK;
+ PL_LOCK;
playlist_DeleteFromInput( p_playlist,
p_tested_item->p_input->i_id,
VLC_TRUE );
dbus_bool_t b_random;
vlc_value_t val;
playlist_t* p_playlist = NULL;
-
+
dbus_error_init( &error );
dbus_message_get_args( p_from, &error,
DBUS_TYPE_BOOLEAN, &b_random,
DBUS_TYPE_INVALID );
-
+
if( dbus_error_is_set( &error ) )
{
msg_Err( (vlc_object_t*) p_this, "D-Bus message reading : %s\n",
}
val.b_bool = ( b_random == TRUE ) ? VLC_TRUE : VLC_FALSE ;
-
+
p_playlist = pl_Yield( (vlc_object_t*) p_this );
var_Set ( p_playlist, "random", val );
pl_Release( ((vlc_object_t*) p_this) );
* instead of milliseconds */
dbus_int64_t i_length = ( input_item_GetDuration( p_input ) / 1000 );
- const char* ppsz_meta_items[] =
+ const char* ppsz_meta_items[] =
{
"title", "artist", "genre", "copyright", "album", "tracknum",
"description", "rating", "date", "setting", "url", "language",
/* DBus related */
#define DBUS_METHOD( method_function ) \
static DBusHandlerResult method_function \
- ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this )
+ ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this )
#define DBUS_SIGNAL( signal_function ) \
static DBusHandlerResult signal_function \
{
input_thread_t * p_input;
- PL_LOCK;
- p_input = p_playlist->p_input;
- if( p_input )
- vlc_object_yield( p_input );
+ PL_LOCK;
+ p_input = p_playlist->p_input;
+ if( p_input )
+ vlc_object_yield( p_input );
PL_UNLOCK;
return p_input;
p_input = input_from_playlist( p_playlist );
vlc_object_release( p_playlist );
-
+
if( !p_input )
break;
-
+
val.i_int = PLAYING_S;
if( p_input )
{
}
else
{
- var_Set( p_input, "spu-es",
+ var_Set( p_input, "spu-es",
list.p_list->p_values[i+1] );
i = i + 1;
}
int read_sms(int type, int *x, int *y, int *z)
{
int _x, _y, _z;
- int xoff, yoff, zoff;
- Boolean ok;
+ int xoff, yoff, zoff;
+ Boolean ok;
int ret;
-
+
ret = read_sms_raw(type, &_x, &_y, &_z);
if ( !ret )
return 0;
- static CFStringRef app = CFSTR("com.ramsayl.UniMotion");
- static CFStringRef xoffstr = CFSTR("x_offset");
- static CFStringRef yoffstr = CFSTR("y_offset");
- static CFStringRef zoffstr = CFSTR("z_offset");
- xoff = CFPreferencesGetAppIntegerValue(xoffstr, app, &ok);
- if ( ok ) _x += xoff;
- yoff = CFPreferencesGetAppIntegerValue(yoffstr, app, &ok);
- if ( ok ) _y += yoff;
- zoff = CFPreferencesGetAppIntegerValue(zoffstr, app, &ok);
- if ( ok ) _z += zoff;
-
- *x = _x;
- *y = _y;
- *z = _z;
+ static CFStringRef app = CFSTR("com.ramsayl.UniMotion");
+ static CFStringRef xoffstr = CFSTR("x_offset");
+ static CFStringRef yoffstr = CFSTR("y_offset");
+ static CFStringRef zoffstr = CFSTR("z_offset");
+ xoff = CFPreferencesGetAppIntegerValue(xoffstr, app, &ok);
+ if ( ok ) _x += xoff;
+ yoff = CFPreferencesGetAppIntegerValue(yoffstr, app, &ok);
+ if ( ok ) _y += yoff;
+ zoff = CFPreferencesGetAppIntegerValue(zoffstr, app, &ok);
+ if ( ok ) _z += zoff;
+
+ *x = _x;
+ *y = _y;
+ *z = _z;
return ret;
}
int read_sms_real(int type, double *x, double *y, double *z)
{
int _x, _y, _z;
- int xscale, yscale, zscale;
+ int xscale, yscale, zscale;
int ret;
- Boolean ok;
-
+ Boolean ok;
+
ret = read_sms_raw(type, &_x, &_y, &_z);
if ( !ret )
return 0;
- static CFStringRef app = CFSTR("com.ramsayl.UniMotion");
- static CFStringRef xscalestr = CFSTR("x_scale");
- static CFStringRef yscalestr = CFSTR("y_scale");
- static CFStringRef zscalestr = CFSTR("z_scale");
- xscale = CFPreferencesGetAppIntegerValue(xscalestr, app, &ok);
- if ( !ok ) return 0;
- yscale = CFPreferencesGetAppIntegerValue(yscalestr, app, &ok);
- if ( !ok ) return 0;
- zscale = CFPreferencesGetAppIntegerValue(zscalestr, app, &ok);
- if ( !ok ) return 0;
-
+ static CFStringRef app = CFSTR("com.ramsayl.UniMotion");
+ static CFStringRef xscalestr = CFSTR("x_scale");
+ static CFStringRef yscalestr = CFSTR("y_scale");
+ static CFStringRef zscalestr = CFSTR("z_scale");
+ xscale = CFPreferencesGetAppIntegerValue(xscalestr, app, &ok);
+ if ( !ok ) return 0;
+ yscale = CFPreferencesGetAppIntegerValue(yscalestr, app, &ok);
+ if ( !ok ) return 0;
+ zscale = CFPreferencesGetAppIntegerValue(zscalestr, app, &ok);
+ if ( !ok ) return 0;
+
*x = _x / (double)xscale;
*y = _y / (double)yscale;
*z = _z / (double)zscale;
-
+
return 1;
}
if( DemuxInit( p_demux ) )
{
msg_Err( p_demux, "failed to load the new header" );
- intf_UserFatal( p_demux, VLC_FALSE, _("Could not demux ASF stream"),
+ intf_UserFatal( p_demux, VLC_FALSE, _("Could not demux ASF stream"),
_("VLC failed to load the ASF header.") );
return 0;
}
i_packet_send_time = GetDWLE( p_peek + i_skip ); i_skip += 4;
i_packet_duration = GetWLE( p_peek + i_skip ); i_skip += 2;
-// i_packet_size_left = i_packet_length; // XXX data really read
+// i_packet_size_left = i_packet_length; // XXX data really read
/* FIXME I have to do that for some file, I don't known why */
i_packet_size_left = i_data_packet_min;
(int64_t)fmt.video.i_width * VOUT_ASPECT_FACTOR /
fmt.video.i_height / i_aspect_y;
}
- }
+ }
tk->i_cat = VIDEO_ES;
tk->p_es = es_out_Add( p_demux->out, &fmt );
unsigned int i_data = p_sp->i_type_specific_data_length - 64;
msg_Dbg( p_demux, "Ext stream header detected. datasize = %d", p_sp->i_type_specific_data_length );
- if( ASF_CmpGUID( p_ref, &asf_object_extended_stream_type_audio ) &&
+ if( ASF_CmpGUID( p_ref, &asf_object_extended_stream_type_audio ) &&
i_data >= sizeof( WAVEFORMATEX ) - 2)
{
int i_format;
es_format_Init( &fmt, AUDIO_ES, 0 );
i_format = GetWLE( &p_data[0] );
- if( i_format == 0 )
+ if( i_format == 0 )
fmt.i_codec = VLC_FOURCC( 'a','5','2',' ');
else
wf_tag_to_fourcc( i_format, &fmt.i_codec, NULL );
}
#ifdef ASF_DEBUG
- msg_Dbg( s, "read \"language list object\" %d entries",
+ msg_Dbg( s, "read \"language list object\" %d entries",
p_ll->i_language );
for( i = 0; i < p_ll->i_language; i++ )
- msg_Dbg( s, " - '%s'",
+ msg_Dbg( s, " - '%s'",
p_ll->ppsz_language[i] );
#endif
return VLC_SUCCESS;
{
msg_Dbg( s," - stream=%d bitrate=%d",
p_sb->bitrate[i].i_stream_number,
- p_sb->bitrate[i].i_avg_bitrate );
+ p_sb->bitrate[i].i_avg_bitrate );
}
#endif
return VLC_SUCCESS;
asf_object_t *p_sp;
/* Cannot fail as peek succeed */
stream_Read( s, NULL, p_data - p_peek );
-
+
p_sp = malloc( sizeof( asf_object_t ) );
if( ASF_ReadObject( s, p_sp, NULL ) )
p_ae->pi_stream_number[i] = GetWLE( p_data );
p_data += 2;
}
-
+
#ifdef ASF_DEBUG
msg_Dbg( s, "read \"advanced mutual exclusion object\"" );
for( i = 0; i < p_ae->i_stream_number_count; i++ )
p_ec->ppsz_value[i] = NULL;
p_data += i_size;
-
+
#undef GETSTRINGW
static const guid_t asf_object_extended_content_description =
{0xD2D0A440, 0xE307, 0x11D2, {0x97, 0xF0, 0x00, 0xA0, 0xC9, 0x5E, 0xA8, 0x50}};
-static const guid_t asf_object_extended_stream_header =
+static const guid_t asf_object_extended_stream_header =
{0x3afb65e2, 0x47ef, 0x40f2, { 0xac, 0x2c, 0x70, 0xa9, 0x0d, 0x71, 0xd3, 0x43}};
static const guid_t asf_object_extended_stream_type_audio =
return AVI_Chunk_Function[i_index].AVI_ChunkRead_function( s, p_chk );
}
else if( ( ((char*)&p_chk->common.i_chunk_fourcc)[0] == 'i' &&
- ((char*)&p_chk->common.i_chunk_fourcc)[1] == 'x' ) ||
+ ((char*)&p_chk->common.i_chunk_fourcc)[1] == 'x' ) ||
( ((char*)&p_chk->common.i_chunk_fourcc)[2] == 'i' &&
((char*)&p_chk->common.i_chunk_fourcc)[3] == 'x' ) )
{
#define AVIFOURCC_ISMP VLC_FOURCC('I','S','M','P')
#define AVIFOURCC_IDIT VLC_FOURCC('I','D','I','T')
-
+
#define AVITWOCC_wb VLC_TWOCC('w','b')
#define AVITWOCC_db VLC_TWOCC('d','b')
#define AVITWOCC_dc VLC_TWOCC('d','c')
}
STANDARD_DEMUX_INIT; p_sys = p_demux->p_sys;
-
+
INIT_APACKETIZER( p_sys->p_packetizer, 'd','t','s',' ' );
LOAD_PACKETIZER_OR_FAIL( p_sys->p_packetizer, "DTS" );
i_next_offset = stream_Size(p_demux->s)-p_sys->i_data_pos;
}
i_delta_time = i_time - p_sys->seekpoint[i]->i_time_offset;
- i_delta_offset = (i_next_offset - p_sys->seekpoint[i]->i_byte_offset) * i_delta_time /
+ i_delta_offset = (i_next_offset - p_sys->seekpoint[i]->i_byte_offset) * i_delta_time /
(p_sys->seekpoint[i+1]->i_time_offset-p_sys->seekpoint[i]->i_time_offset);
/* XXX We do exact seek if it's not too far away(45s) */
char *ext;
int i;
vlc_value_t val;
-
+
/* We accept file based on extention match */
if( strcasecmp( p_demux->psz_demux, "gme" ) )
{
}
/* Prepare emulator */
-
+
#ifdef HAVE_ZLIB_H
if (i == 4) /* gzipped vgm */
{
size_t i_outsize;
inflate_gzbuf( p_sys->p_data, p_sys->i_data, &p_outbuffer, &i_outsize );
-
+
if (p_outbuffer == NULL)
{
msg_Err( p_demux, "failed to understand the file : unable to inflate vgz file" );
p_sys->p_data = p_outbuffer;
p_sys->i_data = i_outsize;
- }
+ }
#endif
- p_sys->p_reader = new Emu_Mem_Reader( p_sys->p_data, p_sys->i_data );
-
+ p_sys->p_reader = new Emu_Mem_Reader( p_sys->p_data, p_sys->i_data );
+
switch(i)
{
case 0:
p_emu->init( 44100 ); \
p_sys->p_musicemu = p_emu; \
p_sys->p_reader->read( &header, sizeof(header) ); \
- p_error = p_emu->load( header, *(p_sys->p_reader) );
+ p_error = p_emu->load( header, *(p_sys->p_reader) );
p_sys->p_meta = vlc_meta_New();
char psz_temp[512];
-
+
/// \todo Reinstate meta codec name
//SET_META( VLC_META_CODEC_NAME, type_str[p_sys->i_type])
-
+
const char * p_error;
switch(p_sys->i_type)
}
}
break;
- }
+ }
if( p_error != NULL )
{
p_sys->fmt.audio.i_channels = 2;
p_sys->fmt.audio.i_bitspersample = 16;
p_sys->es = es_out_Add( p_demux->out, &p_sys->fmt );
-
+
return VLC_SUCCESS;
}
p_frame = block_New( p_demux, i_buf );
p_sys->p_musicemu->play( i_emubuf, p_emubuf );
-
+
/*
if( p_error != NULL )
{
case DEMUX_SET_TITLE:
i_idx = (int)va_arg( args, int );
- p_sys->p_musicemu->start_track( i_idx );
+ p_sys->p_musicemu->start_track( i_idx );
p_demux->info.i_title = i_idx;
p_demux->info.i_update = INPUT_UPDATE_TITLE;
msg_Dbg( p_demux, "set title %i", i_idx);
(*pi_osize) = out_size - z_str.avail_out;
inflateEnd(&z_str);
-
- out_buffer = (uint8_t *)realloc(out_buffer, *pi_osize);
+
+ out_buffer = (uint8_t *)realloc(out_buffer, *pi_osize);
(*pp_obuffer) = out_buffer;
}
#endif
}
else if( !strncmp( sub->codecName(), "G726", 4 ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'g', '7', '2', '6' );
+ tk->fmt.i_codec = VLC_FOURCC( 'g', '7', '2', '6' );
tk->fmt.audio.i_rate = 8000;
tk->fmt.audio.i_channels = 1;
if( !strcmp( sub->codecName()+5, "40" ) )
}
/*****************************************************************************
- *
+ *
*****************************************************************************/
static void TimeoutPrevention( timeout_thread_t *p_timeout )
{
#ifdef WORDS_BIGENDIAN
unsigned char zero : 7; /* 25-31 */
unsigned char video_pres_mode_change : 1; /* 24 */
-
+
unsigned char karaoke_audio_pres_mode_change : 1; /* 23 */
unsigned char angle_change : 1;
unsigned char subpic_stream_change : 1;
unsigned char still_off : 1;
unsigned char button_select_or_activate : 1;
unsigned char resume : 1; /* 16 */
-
+
unsigned char chapter_menu_call : 1; /* 15 */
unsigned char angle_menu_call : 1;
unsigned char audio_menu_call : 1;
unsigned char title_menu_call : 1;
unsigned char backward_scan : 1;
unsigned char forward_scan : 1; /* 8 */
-
+
unsigned char next_pg_search : 1; /* 7 */
unsigned char prev_or_top_pg_search : 1;
unsigned char time_or_chapter_search : 1;
#else
unsigned char video_pres_mode_change : 1; /* 24 */
unsigned char zero : 7; /* 25-31 */
-
+
unsigned char resume : 1; /* 16 */
unsigned char button_select_or_activate : 1;
unsigned char still_off : 1;
unsigned char subpic_stream_change : 1;
unsigned char angle_change : 1;
unsigned char karaoke_audio_pres_mode_change : 1; /* 23 */
-
+
unsigned char forward_scan : 1; /* 8 */
unsigned char backward_scan : 1;
unsigned char title_menu_call : 1;
unsigned char audio_menu_call : 1;
unsigned char angle_menu_call : 1;
unsigned char chapter_menu_call : 1; /* 15 */
-
+
unsigned char title_or_time_play : 1; /* 0 */
unsigned char chapter_search_or_play : 1;
unsigned char title_play : 1;
,i_codec_id( codec_id )
,sys( demuxer )
{}
-
+
virtual ~chapter_codec_cmds_c()
{
delete p_private_data;
}
void AddCommand( const KaxChapterProcessCommand & command );
-
+
/// \return wether the codec has seeked in the files or not
virtual bool Enter() { return false; }
virtual bool Leave() { return false; }
p_PRMs[ 0x80 + 16 ] = 0xFFFFu;
p_PRMs[ 0x80 + 18 ] = 0xFFFFu;
}
-
+
bool Interpret( const binary * p_command, size_t i_size = 8 );
-
+
uint16 GetPRM( size_t index ) const
{
if ( index < 256 )
}
return false;
}
-
+
bool SetGPRM( size_t index, uint16 value )
{
if ( index >= 0 && index < 16 )
uint16 p_PRMs[256];
demux_sys_t & sys;
-
+
// DVD command IDs
// Tests
static const uint16 CMD_DVD_IF_GPREG_SUP = (5 << 4);
static const uint16 CMD_DVD_IF_GPREG_INF_EQUAL = (6 << 4);
static const uint16 CMD_DVD_IF_GPREG_INF = (7 << 4);
-
+
static const uint16 CMD_DVD_NOP = 0x0000;
static const uint16 CMD_DVD_GOTO_LINE = 0x0001;
static const uint16 CMD_DVD_BREAK = 0x0002;
static const uint16 CMD_DVD_MULT_GPREG = 0x7500;
static const uint16 CMD_DVD_GPREG_DIV_VALUE = 0x7600;
static const uint16 CMD_DVD_GPREG_AND_VALUE = 0x7900;
-
+
// callbacks when browsing inside CodecPrivate
static bool MatchIsDomain ( const chapter_codec_cmds_c &data, const void *p_cookie, size_t i_cookie_size );
static bool MatchIsVMG ( const chapter_codec_cmds_c &data, const void *p_cookie, size_t i_cookie_size );
{}
bool Interpret( const binary * p_command, size_t i_size );
-
+
// DVD command IDs
static const std::string CMD_MS_GOTO_AND_PLAY;
-
+
protected:
demux_sys_t & sys;
};
std::string GetCodecName( bool f_for_title = false ) const;
bool ParentOf( const chapter_item_c & item ) const;
int16 GetTitleNumber( ) const;
-
+
int64_t i_start_time, i_end_time;
int64_t i_user_start_time, i_user_end_time; /* the time in the stream when an edition is ordered */
std::vector<chapter_item_c*> sub_chapters;
std::string psz_name;
chapter_item_c *psz_parent;
bool b_is_leaving;
-
+
std::vector<chapter_codec_cmds_c*> codecs;
static bool CompareTimecode( const chapter_item_c * itemA, const chapter_item_c * itemB )
chapter_edition_c()
:b_ordered(false)
{}
-
+
void RefreshChapters( );
mtime_t Duration() const;
std::string GetMainName() const;
chapter_item_c * FindTimecode( mtime_t i_timecode, const chapter_item_c * p_current );
-
+
bool b_ordered;
};
std::vector<chapter_translation_c*> translations;
std::vector<KaxSegmentFamily*> families;
-
+
demux_sys_t & sys;
EbmlParser *ep;
bool b_preloaded;
// test wether this file belongs to our family
const uint8_t *p_peek;
bool file_ok = false;
- stream_t *p_file_stream = stream_UrlNew(
- p_demux,
+ stream_t *p_file_stream = stream_UrlNew(
+ p_demux,
s_filename.c_str());
/* peek the begining */
if( p_file_stream &&
}
p_sys->StartUiThread();
-
+
return VLC_SUCCESS;
error:
memcpy( p_out, p_data, i_size1 );
p_data += i_size1;
p_out += i_size1;
-
+
*p_out++ = (i_size2>>8) & 0xFF;
*p_out++ = i_size2 & 0xFF;
memcpy( p_out, p_data, i_size2 );
char *p_buf = (char *)malloc( tracks[i_track]->i_extra_data + 1);
memcpy( p_buf, tracks[i_track]->p_extra_data , tracks[i_track]->i_extra_data );
p_buf[tracks[i_track]->i_extra_data] = '\0';
-
+
p_start = strstr( p_buf, "size:" );
if( sscanf( p_start, "size: %dx%d",
&tracks[i_track]->fmt.subs.spu.i_original_frame_width, &tracks[i_track]->fmt.subs.spu.i_original_frame_height ) == 2 )
es_out_Control( sys.demuxer.out, ES_OUT_SET_NEXT_DISPLAY_TIME, tracks[i_track]->p_es, i_start_time );
}
-
+
sys.i_start_pts = i_start_time;
// reset the stream reading to the first cluster of the segment used
es.I_O().setFilePointer( i_start_pos );
break;
case ACTIONID_NAV_ACTIVATE:
b_activated = VLC_TRUE;
-
+
if ( i_curr_button > 0 && i_curr_button <= pci->hli.hl_gi.btn_ns )
{
btni_t button_ptr = pci->hli.btnit[i_curr_button-1];
Seek( demux, sys.i_pts, 0, psz_curr_chapter );
}
}
-
+
if ( !b_has_seeked )
{
psz_current_chapter = psz_curr_chapter;
return this;
index++;
}
-
+
// sub-chapters
chapter_item_c *p_result = NULL;
std::vector<chapter_item_c*>::const_iterator index2 = sub_chapters.begin();
return p_result;
index2++;
}
-
+
return p_result;
}
i_return = 1;
break;
}
-
+
if ( p_vsegment->Edition() && p_vsegment->Edition()->b_ordered && p_vsegment->CurrentChapter() == NULL )
{
/* nothing left to read in this ordered edition */
if ( !p_vsegment->SelectNext() )
break;
p_segment->UnSelect( );
-
+
es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
/* switch to the next segment */
{
msg_Warn( p_demux, "cannot get block EOF?" );
p_segment->UnSelect( );
-
+
es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
/* switch to the next segment */
break;
}
}
-
+
if ( p_vsegment->Edition() && p_vsegment->Edition()->b_ordered && p_vsegment->CurrentChapter() == NULL )
{
/* nothing left to read in this ordered edition */
break;
}
p_segment->UnSelect( );
-
+
es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
/* switch to the next segment */
tk->psz_codec_settings = NULL;
tk->psz_codec_info_url = NULL;
tk->psz_codec_download_url = NULL;
-
+
tk->i_compression_type = MATROSKA_COMPRESSION_NONE;
tk->p_compression_data = NULL;
tk->fmt.video.i_frame_rate_base = (unsigned int)(tk->i_default_duration / 1000);
tk->fmt.video.i_frame_rate = 1000000;
-
+
for( j = 0; j < tkv->ListSize(); j++ )
{
EbmlElement *l = (*tkv)[j];
if( MKV_IS_ID( l, KaxEditionEntry ) )
{
chapter_edition_c *p_edition = new chapter_edition_c();
-
+
EbmlMaster *E = static_cast<EbmlMaster *>(l );
size_t j;
msg_Dbg( &sys.demuxer, "| | + EditionEntry" );
{
stored_editions[i]->RefreshChapters( );
}
-
+
if ( stored_editions.size() != 0 && stored_editions[i_default_edition]->b_ordered )
{
/* update the duration of the segment according to the sum of all sub chapters */
int64_t chapter_item_c::RefreshChapters( bool b_ordered, int64_t i_prev_user_time )
{
int64_t i_user_time = i_prev_user_time;
-
+
// first the sub-chapters, and then ourself
std::vector<chapter_item_c*>::iterator index = sub_chapters.begin();
while ( index != sub_chapters.end() )
mtime_t chapter_edition_c::Duration() const
{
mtime_t i_result = 0;
-
+
if ( sub_chapters.size() )
{
std::vector<chapter_item_c*>::const_iterator index = sub_chapters.end();
index--;
i_result = (*index)->i_user_end_time;
}
-
+
return i_result;
}
psz_result = (*index)->FindTimecode( i_user_timecode, p_current, b_found );
index++;
}
-
+
if ( psz_result == NULL )
psz_result = this;
}
virtual_segment_c *p_seg;
p_current_segment = VirtualFromSegments( p_segment );
-
+
used_segments.push_back( p_current_segment );
// create all the other virtual segments of the family
vsegment.Seek( demuxer, p_chapter->i_user_start_time, -1, p_chapter );
}
}
-
+
}
bool matroska_segment_c::CompareSegmentUIDs( const matroska_segment_c * p_item_a, const matroska_segment_c * p_item_b )
p_tmp = (EbmlBinary *)p_item_a->p_next_segment_uid;
if ( !p_tmp )
return false;
-
+
if ( p_item_b->p_segment_uid != NULL
&& *p_tmp == *p_item_b->p_segment_uid )
return true;
if ( !b_test_positive )
return false;
}
-
+
// strip the test command
i_command &= 0xFF0F;
-
+
switch ( i_command )
{
case CMD_DVD_NOP:
case CMD_DVD_SET_GPRMMD:
{
msg_Dbg( &sys.demuxer, "Set GPRMMD [%d]=%d", (p_command[4] << 8) + p_command[5], (p_command[2] << 8) + p_command[3]);
-
+
if ( !SetGPRM( (p_command[4] << 8) + p_command[5], (p_command[2] << 8) + p_command[3] ) )
msg_Dbg( &sys.demuxer, "Set GPRMMD failed" );
break;
case CMD_DVD_LINKPGCN:
{
uint16 i_pgcn = (p_command[6] << 8) + p_command[7];
-
+
msg_Dbg( &sys.demuxer, "Link PGCN(%d)", i_pgcn );
p_chapter = sys.p_current_segment->BrowseCodecPrivate( 1, MatchPgcNumber, &i_pgcn, 2 );
if ( p_chapter != NULL )
case CMD_DVD_LINKCN:
{
uint8 i_cn = p_command[7];
-
+
p_chapter = sys.p_current_segment->CurrentChapter();
msg_Dbg( &sys.demuxer, "LinkCN (cell %d)", i_cn );
{
if ( i_cookie_size != 2 || data.p_private_data == NULL || data.p_private_data->GetSize() < 4 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_SS || data.p_private_data->GetBuffer()[1] != 0x80 )
return false;
{
if ( i_cookie_size != 1 || data.p_private_data == NULL || data.p_private_data->GetSize() < 4 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_SS || data.p_private_data->GetBuffer()[1] != 0x40 )
return false;
{
if ( i_cookie_size != 1 || data.p_private_data == NULL || data.p_private_data->GetSize() < 4 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_TT )
return false;
{
if ( i_cookie_size != 1 || data.p_private_data == NULL || data.p_private_data->GetSize() < 8 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_PGC )
return false;
{
if ( i_cookie_size != 2 || data.p_private_data == NULL || data.p_private_data->GetSize() < 8 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_PGC )
return false;
{
if ( i_cookie_size != 1 || data.p_private_data == NULL || data.p_private_data->GetSize() < 2 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_PTT )
return false;
{
if ( i_cookie_size != 1 || data.p_private_data == NULL || data.p_private_data->GetSize() < 5 )
return false;
-
+
if ( data.p_private_data->GetBuffer()[0] != MATROSKA_DVD_LEVEL_CN )
return false;
{
/* SoundDescriptionV2 */
double f_sample_rate;
- int64_t dummy;
+ int64_t dummy;
uint32_t i_channel;
MP4_GET4BYTES( p_box->data.p_sample_soun->i_sample_per_packet );
MP4_GET8BYTES( dummy );
- memcpy( &f_sample_rate, &dummy, 8 );
+ memcpy( &f_sample_rate, &dummy, 8 );
msg_Dbg( p_stream, "read box: %f Hz", f_sample_rate );
p_box->data.p_sample_soun->i_sampleratehi = (int)f_sample_rate % 65536;
/*
* 3 types: for audio
- *
+ *
*/
#define QT_V0_MAX_SAMPLES 1024
static int MP4_TrackSampleSize( mp4_track_t *p_track )
case DEMUX_GET_META:
p_meta = (vlc_meta_t *)va_arg( args, vlc_meta_t* );
if( p_sys->p_meta )
- vlc_meta_Merge( p_meta, p_sys->p_meta );
+ vlc_meta_Merge( p_meta, p_sys->p_meta );
else
p_meta = NULL;
return VLC_SUCCESS;
}
*psz_value = '\0';
psz_value++;
-
+
if( !strncasecmp( psz_value, "0x", 2 ) )
{
int i_value;
! memcmp ( &p_oggpacket->packet[0], "Annodex", 7 ) )
{
/* it's an Annodex packet -- skip it (do nothing) */
- return;
+ return;
}
else if( p_oggpacket->bytes >= 7 &&
! memcmp ( &p_oggpacket->packet[0], "AnxData", 7 ) )
{
/* it's an AnxData packet -- skip it (do nothing) */
- return;
+ return;
}
if( p_stream->fmt.i_codec == VLC_FOURCC( 's','u','b','t' ) &&
}
if( p_oggpacket->bytes - 1 - i_header_len > 2 ||
( p_oggpacket->packet[i_header_len + 1] != ' ' &&
- p_oggpacket->packet[i_header_len + 1] != 0 &&
+ p_oggpacket->packet[i_header_len + 1] != 0 &&
p_oggpacket->packet[i_header_len + 1] != '\n' &&
p_oggpacket->packet[i_header_len + 1] != '\r' ) )
{
*****************************************************************************/
int E_(Import_B4S)( vlc_object_t *p_this )
{
- DEMUX_BY_EXTENSION_OR_FORCED_MSG( ".b4s", "b4s-open",
+ DEMUX_BY_EXTENSION_OR_FORCED_MSG( ".b4s", "b4s-open",
"using B4S playlist reader" );
p_demux->p_sys->psz_prefix = E_(FindPrefix)( p_demux );
p_demux->p_sys->p_xml = NULL;
}
if( !strcasecmp( psz_key, "numberofentries" ) )
{
- msg_Dbg( p_demux, "pls should have %d entries", atoi(psz_value) );
+ msg_Dbg( p_demux, "pls should have %d entries", atoi(psz_value) );
free( psz_line);
continue;
}
psz_item_summary = strdup( psz_text );
}
SET_DATA( psz_item_date, "pubDate" )
- SET_DATA( psz_item_category, "itunes:category" )
+ SET_DATA( psz_item_category, "itunes:category" )
SET_DATA( psz_item_duration, "itunes:duration" )
SET_DATA( psz_item_keywords, "itunes:keywords" )
SET_DATA( psz_item_subtitle, "itunes:subtitle" )
* AutoStart=True
* Start playing automatically
* DeliveryService=cds
- * Simulcasted (scheduled unicast) content. (Green dot in Kasenna web interface)
+ * Simulcasted (scheduled unicast) content. (Green dot in Kasenna web interface)
* sgiShowingName=A nice name that everyone likes
* A human readible descriptive title for this stream.
* sgiSid=2311
p_demux->p_sys->i_sid = 0;
p_demux->p_sys->b_rtsp_kasenna = VLC_FALSE;
p_demux->p_sys->b_concert = VLC_FALSE;
-
+
return VLC_SUCCESS;
}
}
p_child = input_ItemNewWithType( (vlc_object_t *)p_playlist, p_sys->psz_uri,
p_sys->psz_name ? p_sys->psz_name : p_sys->psz_uri,
0, NULL, p_sys->i_duration, ITEM_TYPE_NET );
-
+
if( !p_child )
{
msg_Err( p_demux, "A valid playlistitem could not be created" );
case DEMUX_GET_LENGTH:
pi64 = (int64_t*)va_arg( args, int64_t * );
-
+
/* the commented following lines are fen's implementation, which doesn't seem to
* work for one reason or another -- FK */
/*if( p_sys->i_mux_rate > 0 )
{
/* our stored duration is in ms, so... */
*pi64 = (int64_t)1000 * p_sys->i_our_duration;
-
+
return VLC_SUCCESS;
}
*pi64 = 0;
{
vlc_meta_t *p_meta = (vlc_meta_t*)va_arg( args, vlc_meta_t* );
- /* the core will crash if we provide NULL strings, so check
+ /* the core will crash if we provide NULL strings, so check
* every string first */
if( p_sys->psz_title )
vlc_meta_SetTitle( p_meta, p_sys->psz_title );
msg_Dbg( p_demux, " - index offset=%d", GetDWBE(&header[28]) );
msg_Dbg( p_demux, " - data offset=%d", GetDWBE(&header[32]) );
msg_Dbg( p_demux, " - num streams=%d", GetWBE(&header[36]) );
-
+
/* set the duration for export in control */
p_sys->i_our_duration = (int)GetDWBE(&header[20]);
-
+
i_flags = GetWBE(&header[38]);
msg_Dbg( p_demux, " - flags=0x%x %s%s%s",
i_flags,
{
int i_len;
char *psz;
-
+
/* FIXME FIXME: should convert from whatever the character
* encoding of the input meta data is to UTF-8. */
msg_Dbg( p_demux, " - start time=%d", GetDWBE(&header[18]) );
msg_Dbg( p_demux, " - preroll=%d", GetDWBE(&header[22]) );
msg_Dbg( p_demux, " - duration=%d", GetDWBE(&header[26]) );
-
+
i_skip -= 30;
stream_Read( p_demux->s, header, 1 );
if( b_replace_br )
{
char *p;
-
+
while( ( p = strstr( psz_text, "[br]" ) ) )
{
*p++ = '\n';
# endif
#endif
#ifdef HAVE_TIME_H
-# include <time.h>
+# include <time.h>
#endif
#undef TS_DEBUG
{
i_packet_size = TS_PACKET_SIZE_188;
#if 0
- /* I used the TF5000PVR 2004 Firmware .doc header documentation,
+ /* I used the TF5000PVR 2004 Firmware .doc header documentation,
* http://www.i-topfield.com/data/product/firmware/Structure%20of%20Recorded%20File%20in%20TF5000PVR%20(Feb%2021%202004).doc
* but after the filename the offsets seem to be incorrect. - DJ */
int i_duration, i_name;
// 4 bytes of freq. Uimsbf (56,57,58,59)
// 2 bytes of symbol rate Uimsbf (60,61)
// 2 bytes of TS stream ID Uimsbf (62,63)
- // 4 bytes reserved
+ // 4 bytes reserved
// 2 bytes reserved
// 2 bytes duration Uimsbf (70,71)
//i_duration = (int) (p_peek[70] << 8) | p_peek[71];
const vlc_bool_t b_adaptation = p[3]&0x20;
const vlc_bool_t b_payload = p[3]&0x10;
const int i_cc = p[3]&0x0f; /* continuity counter */
- vlc_bool_t b_discontinuity = VLC_FALSE;/* discontinuity */
+ vlc_bool_t b_discontinuity = VLC_FALSE;/* discontinuity */
/* transport_scrambling_control is ignored */
int i_skip = 0;
}
static int EITConvertDuration( uint32_t i_duration )
{
- return CVT_FROM_BCD(i_duration >> 16) * 3600 +
+ return CVT_FROM_BCD(i_duration >> 16) * 3600 +
CVT_FROM_BCD(i_duration >> 8 ) * 60 +
CVT_FROM_BCD(i_duration );
}
( p_dr->p_data[4] << 8 ) | p_dr->p_data[5];
pid->es->fmt.video.i_height =
( p_dr->p_data[6] << 8 ) | p_dr->p_data[7];
- pid->es->fmt.i_extra =
+ pid->es->fmt.i_extra =
(p_dr->p_data[8] << 8) | p_dr->p_data[9];
if( pid->es->fmt.i_extra > 0 )
p_demux->pf_demux = Demux;
p_demux->pf_control = Control;
p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
-
+
/* Read the metadata */
es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'T', 'T', 'A', '1' ) );
fmt.audio.i_channels = GetWLE( &p_header[6] );
p_sys->i_datalength = GetDWLE( &p_header[14] );
p_sys->i_framelength = TTA_FRAMETIME * fmt.audio.i_rate;
- p_sys->i_totalframes = p_sys->i_datalength / p_sys->i_framelength +
+ p_sys->i_totalframes = p_sys->i_datalength / p_sys->i_framelength +
((p_sys->i_datalength % p_sys->i_framelength) ? 1 : 0);
p_sys->i_currentframe = 0;
p_sys->p_es = es_out_Add( p_demux->out, &fmt );
free( p_seektable );
p_sys->i_start = stream_Tell( p_demux->s );
-
+
#if 0
/* Parse possible id3 header */
if( ( p_id3 = module_Need( p_demux, "meta reader", NULL, 0 ) ) )
return VLC_SUCCESS;
}
return VLC_EGENERIC;
-
+
case DEMUX_GET_LENGTH:
pi64 = (int64_t*)va_arg( args, int64_t * );
*pi64 = I64C(1000000) * p_sys->i_totalframes * TTA_FRAMETIME;
pi64 = (int64_t*)va_arg( args, int64_t * );
*pi64 = I64C(1000000) * p_sys->i_currentframe * TTA_FRAMETIME;
return VLC_SUCCESS;
-
+
default:
return VLC_EGENERIC;
}
b/e0: video B-frame header start
c/e0: video GOP header start
e/01: closed-caption data
- e/02: Extended data services data
+ e/02: Extended data services data
e/03: ipreview data ("thumbs up to record" signal)
*/
"continuing anyway..." );
}
- /* at this point, we assume we have a valid TY stream */
+ /* at this point, we assume we have a valid TY stream */
msg_Dbg( p_demux, "valid TY stream detected" );
/* Set exported functions */
{
/*msg_Dbg(p_demux, "Record Type 0x%x/%02x %ld bytes",
subrec_type, rec_type, l_rec_size );*/
-
+
/* some normal records are 0 length, so check for that... */
if (l_rec_size > 0)
{
if (p_sys->lastVideoPTS > 0)
{
p_block_in->i_pts = p_sys->lastVideoPTS;
- /* PTS gets used ONCE.
+ /* PTS gets used ONCE.
* Any subsequent frames we get BEFORE next PES
* header will have their PTS computed in the codec */
p_sys->lastVideoPTS = 0;
}
- }
+ }
es_out_Send(p_demux->out, p_sys->p_video, p_block_in);
}
} /* end if video rec type */
}
else
{
- p_sys->lastAudioPTS = get_pts(
+ p_sys->lastAudioPTS = get_pts(
&p_sys->pes_buffer[ esOffset1 + DTIVO_PTS_OFFSET ] );
p_block_in->i_pts = p_sys->lastAudioPTS;
}
if (check_sync_pes(p_demux, p_block_in, esOffset1,
l_rec_size) == -1)
{
- /* partial PES header found, nothing else.
+ /* partial PES header found, nothing else.
* we're done. */
p_sys->i_cur_rec++;
block_Release(p_block_in);
}
/* load the chunk */
get_chunk_header(p_demux);
-
+
/* seek within the chunk to get roughly to where we want */
p_sys->i_cur_rec = (int)
((double) ((seek_pos % CHUNK_SIZE) / (double) (CHUNK_SIZE)) * p_sys->i_num_recs);
demux_sys_t *p_sys = p_demux->p_sys;
double f, *pf;
int64_t i64, *p_i64;
-
+
/*msg_Info(p_demux, "control cmd %d", i_query);*/
switch( i_query )
{
/* read the TY packet header */
i_readSize = stream_Read( p_demux->s, packet_header, 4 );
p_sys->i_chunk_count++;
-
+
if ( i_readSize < 4 )
{
/* EOF */
p_sys->eof = 1;
return 0;
}
-
+
/* if it's a PART Header, then try again. */
if( U32_AT( &packet_header[ 0 ] ) == TIVO_PES_FILEID )
{
}
p_sys->i_cur_rec = 0;
p_sys->b_first_chunk = VLC_FALSE;
-
+
/*msg_Dbg( p_demux, "chunk has %d records", i_num_recs );*/
/* parse headers into array */
{
unsigned char b1, b2;
/* marker bit 2 set, so read extended data */
- b1 = ( ( ( record_header[ 0 ] & 0x0f ) << 4 ) |
+ b1 = ( ( ( record_header[ 0 ] & 0x0f ) << 4 ) |
( ( record_header[ 1 ] & 0xf0 ) >> 4 ) );
b1 &= 0x7f;
- b2 = ( ( ( record_header[ 1 ] & 0x0f ) << 4 ) |
+ b2 = ( ( ( record_header[ 1 ] & 0x0f ) << 4 ) |
( ( record_header[ 2 ] & 0xf0 ) >> 4 ) );
b2 &= 0x7f;
if( ( p_block_in = stream_Block( p_demux->s, VC1_PACKET_SIZE ) ) == NULL )
return 0;
- /* */
+ /* */
p_block_in->i_dts = 1;
p_block_in->i_pts = 1;
return( VLC_EGENERIC );
}
- if( *line == 0 || *line == '\r' || *line == '\n' || *line == '#' )
+ if( *line == 0 || *line == '\r' || *line == '\n' || *line == '#' )
continue;
else if( !strncmp( "size:", line, 5 ) )
{
/* Store the palette of the subs */
if( sscanf( line, "palette: %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x",
- &p_sys->palette[0], &p_sys->palette[1], &p_sys->palette[2], &p_sys->palette[3],
- &p_sys->palette[4], &p_sys->palette[5], &p_sys->palette[6], &p_sys->palette[7],
- &p_sys->palette[8], &p_sys->palette[9], &p_sys->palette[10], &p_sys->palette[11],
+ &p_sys->palette[0], &p_sys->palette[1], &p_sys->palette[2], &p_sys->palette[3],
+ &p_sys->palette[4], &p_sys->palette[5], &p_sys->palette[6], &p_sys->palette[7],
+ &p_sys->palette[8], &p_sys->palette[9], &p_sys->palette[10], &p_sys->palette[11],
&p_sys->palette[12], &p_sys->palette[13], &p_sys->palette[14], &p_sys->palette[15] ) == 16 )
{
for( i = 0; i < 16; i++ )
}
break;
- case 8:
- /*
+ case 8:
+ /*
* Block 8 is a big kludge to add stereo support to block 1 :
* A block of type 8 is always followed by a block of type 1
* and specifies the number of channels in that 1-block
/* read subsequent block 1 */
if( stream_Read( p_demux->s, buf, 4 ) < 4 )
return VLC_EGENERIC; /* EOF */
-
+
i_block_size = GetDWLE( buf ) >> 8;
msg_Dbg( p_demux, "new block: type: %u, size: %u",
(unsigned)*buf, i_block_size );
}
break;
- default:
+ default:
msg_Err( p_demux, "unsupported compression" );
return VLC_EGENERIC;
}
const unsigned char kSpeakerIconBits [] = {
- 0xff,0xff,0xff,0xff,0xff,0x10,0x10,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,0xff,
- 0x10,0x10,0x10,0xff,0x10,0x1d,0x10,0xff,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,
- 0x10,0x1d,0x10,0x10,0x1d,0x1d,0x10,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,0xff,
- 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
- 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0x10,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
- 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
- 0x10,0x1d,0x10,0x10,0x1d,0x1d,0x10,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,0xff,
- 0x10,0x10,0x10,0xff,0x10,0x1d,0x10,0xff,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x10,0x10,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x10,0x10,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,0xff,
+ 0x10,0x10,0x10,0xff,0x10,0x1d,0x10,0xff,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,
+ 0x10,0x1d,0x10,0x10,0x1d,0x1d,0x10,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,0xff,
+ 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
+ 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0x10,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
+ 0x10,0x1d,0x10,0x1d,0x1d,0x1d,0x10,0xff,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,
+ 0x10,0x1d,0x10,0x10,0x1d,0x1d,0x10,0xff,0xff,0x10,0xff,0xff,0x10,0xff,0xff,0xff,
+ 0x10,0x10,0x10,0xff,0x10,0x1d,0x10,0xff,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x10,0x10,0xff,0xff,0xff,0xff,0x10,0xff,0xff,0xff,0xff,
};
const unsigned char kPressedSpeakerIconBits [] = {
- 0xff,0xff,0xff,0xff,0xff,0x34,0x34,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,0xff,
- 0x34,0x34,0x34,0xff,0x34,0x1d,0x34,0xff,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,
- 0x34,0x1d,0x34,0x34,0x1d,0x1d,0x34,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,0xff,
- 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
- 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0x34,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
- 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
- 0x34,0x1d,0x34,0x34,0x1d,0x1d,0x34,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,0xff,
- 0x34,0x34,0x34,0xff,0x34,0x1d,0x34,0xff,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x34,0x34,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x34,0x34,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,0xff,
+ 0x34,0x34,0x34,0xff,0x34,0x1d,0x34,0xff,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,
+ 0x34,0x1d,0x34,0x34,0x1d,0x1d,0x34,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,0xff,
+ 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
+ 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0x34,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
+ 0x34,0x1d,0x34,0x1d,0x1d,0x1d,0x34,0xff,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,
+ 0x34,0x1d,0x34,0x34,0x1d,0x1d,0x34,0xff,0xff,0x34,0xff,0xff,0x34,0xff,0xff,0xff,
+ 0x34,0x34,0x34,0xff,0x34,0x1d,0x34,0xff,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x34,0x34,0xff,0xff,0xff,0xff,0x34,0xff,0xff,0xff,0xff,
};
const BPoint kPlayButtonSize(kPlayPauseBitmapWidth - 1, kPlayPauseBitmapHeight - 1);
const unsigned char kPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
- 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
- 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,
- 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
- 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
- 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
- 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
- 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
- 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
- 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
- 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
+ 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
+ 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
+ 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
+ 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
+ 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
+ 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
+ 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
+ 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
+ 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kDisabledPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x1b,0x1b,0x1b,
- 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
- 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,
- 0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x1b,0x1b,0x1b,
+ 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,
+ 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kPressedPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
- 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
- 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
- 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,
- 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
- 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
- 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
- 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,
- 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
- 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
- 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
+ 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
+ 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
+ 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,
+ 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
+ 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
+ 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
+ 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,
+ 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
+ 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
+ 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kPlayingPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
- 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
- 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x00,0x00,
- 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
- 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
- 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
- 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x34,0x34,0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x34,0x34,0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
- 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
- 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
- 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
- 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x3f,0x3f,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
- 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
- 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
+ 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
+ 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x00,0x00,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
+ 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
+ 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
+ 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
+ 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,
+ 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,
+ 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
+ 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x3f,0x3f,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
+ 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
+ 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kPressedPlayingPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
- 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
- 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
- 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,
- 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
- 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
- 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
- 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
- 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,
- 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
- 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
- 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
+ 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
+ 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
+ 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,
+ 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
+ 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
+ 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
+ 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,
+ 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,
+ 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
+ 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
+ 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kPausedPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
- 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
- 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,
- 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
- 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
- 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
- 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
- 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
- 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
- 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
- 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
- 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,
+ 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,
+ 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,
+ 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,
+ 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,
+ 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,
+ 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,
+ 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,
+ 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,
+ 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,
+ 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b
};
const unsigned char kPressedPausedPlayButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
- 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
- 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
- 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,
- 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
- 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
- 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
- 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
- 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,
- 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
- 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
- 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,
+ 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,
+ 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,
+ 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,
+ 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,
+ 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,
+ 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,
+ 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,
+ 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,
+ 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,
+ 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,
+ 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b
};
// #pragma mark stop
const unsigned char kStopButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,
- 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,
- 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,
- 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,
- 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,
- 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,
- 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,
- 0x3f,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,
- 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,
+ 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,
+ 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,
+ 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,
+ 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,
+ 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,
+ 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,
+ 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f
};
const unsigned char kDisabledStopButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f
};
const unsigned char kPressedStopButtonBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,
- 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,
- 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,
- 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,
- 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,
- 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,
- 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,
- 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,
+ 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,
+ 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,
+ 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,
+ 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,
+ 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,
+ 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,
+ 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f
};
// #pragma mark rewind
const BPoint kSkipButtonSize(kRewindBitmapWidth - 1, kRewindBitmapHeight - 1);
const unsigned char kRewindBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,
- 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
- 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
- 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,
- 0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,
- 0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,
- 0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,
- 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,
- 0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
- 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
- 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
- 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
- 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
+ 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,
+ 0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,
+ 0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,
+ 0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,
+ 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,
+ 0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
+ 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
+ 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
+ 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kDisabledRewindBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,
- 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,
- 0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,
- 0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,
- 0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,
- 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
- 0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,
- 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,
+ 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,
+ 0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,
+ 0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,
+ 0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,
+ 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kPressedRewindBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
- 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
- 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
- 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
- 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
- 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,
- 0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x00,0x00,
- 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,
- 0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,0x34,0x34,
- 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,
- 0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,
- 0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
- 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
- 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
- 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
+ 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
+ 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
+ 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,
+ 0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x00,0x00,
+ 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,
+ 0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,0x34,0x34,
+ 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,
+ 0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,
+ 0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
+ 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
+ 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,
- 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
- 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
- 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,
- 0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x00,0x00,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,
- 0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
- 0x17,0x17,0x3f,0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,
- 0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
- 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
- 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
- 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
- 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
+ 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,
+ 0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x00,0x00,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,
+ 0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,
+ 0x17,0x17,0x3f,0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,
+ 0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
+ 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
+ 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
+ 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kDisabledForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,
- 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,
- 0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x16,0x16,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,
- 0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,
- 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
- 0x19,0x19,0x1c,0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,
- 0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
- 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,
- 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
- 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,
+ 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,
+ 0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x16,0x16,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,
+ 0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,
+ 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,
+ 0x19,0x19,0x1c,0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,
+ 0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
+ 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kPressedForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
- 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
- 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
- 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
- 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
- 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,
- 0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,
- 0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,
- 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,
- 0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
- 0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,
- 0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
- 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
- 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
+ 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
+ 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
+ 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,
+ 0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,
+ 0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,
+ 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,
+ 0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,
+ 0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,
+ 0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
+ 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
// #pragma mark skip back
const unsigned char kSkipBackBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,
- 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
- 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
- 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x00,0x00,
- 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,
- 0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x3f,0x3f,0x17,0x17,
- 0x17,0x17,0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,
- 0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
- 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
- 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
- 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
- 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,
+ 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
+ 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x00,0x00,
+ 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,
+ 0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x3f,0x3f,0x17,0x17,
+ 0x17,0x17,0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,
+ 0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
+ 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
+ 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
+ 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kDisabledSkipBackBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,
- 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,
- 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x16,0x16,
- 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,
- 0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,
- 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1c,0x1c,0x19,0x19,
- 0x19,0x19,0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,
- 0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
- 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,
- 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,
- 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,
- 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,
+ 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,
+ 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x16,0x16,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,
+ 0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,
+ 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1c,0x1c,0x19,0x19,
+ 0x19,0x19,0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
+ 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,
+ 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kPressedSkipBackBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
- 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
- 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
- 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
- 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
- 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,
- 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,
- 0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x00,0x00,0x34,
- 0x34,0x34,0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,
- 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x19,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,
- 0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x19,
- 0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,
- 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,
- 0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,
- 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
- 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
- 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
+ 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
+ 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
+ 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,
+ 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,
+ 0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x00,0x00,0x34,
+ 0x34,0x34,0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,
+ 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x19,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,
+ 0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x19,
+ 0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,
+ 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,
+ 0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,
+ 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
+ 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
// #pragma mark skip forward
const unsigned char kSkipForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,
- 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
- 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
- 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
- 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
- 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
- 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,
- 0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,
- 0x00,0x00,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
- 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,
- 0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,
- 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
- 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
- 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
- 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
- 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
- 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
- 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
- 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
- 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
- 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,
+ 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,
+ 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,
+ 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,
+ 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,
+ 0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,
+ 0x00,0x00,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,
+ 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,
+ 0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,
+ 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,
+ 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,
+ 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,
+ 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,
+ 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
+ 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,
+ 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kDisabledSkipForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,
- 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,
- 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,
- 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,
- 0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,
- 0x16,0x16,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,
- 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,
- 0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,
- 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
- 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,
- 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,
- 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
- 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
- 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,
- 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,
+ 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,
+ 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,
+ 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,
+ 0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,
+ 0x16,0x16,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,
+ 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,
+ 0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,
+ 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,
+ 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const unsigned char kPressedSkipForwardBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
- 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
- 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
- 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
- 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
- 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
- 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
- 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
- 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
- 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,
- 0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,
- 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,
- 0x00,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
- 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,
- 0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x19,0x13,0x13,
- 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,0x34,0x34,0x34,
- 0x34,0x19,0x19,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
- 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,
- 0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x19,0x13,0x13,
- 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
- 0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,
- 0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
- 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,
- 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
- 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
- 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
- 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
- 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
- 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
- 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,
+ 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
+ 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,
+ 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,
+ 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,
+ 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,
+ 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,
+ 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,
+ 0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,
+ 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,
+ 0x00,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,
+ 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,
+ 0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x19,0x13,0x13,
+ 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,0x34,0x34,0x34,
+ 0x34,0x19,0x19,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,
+ 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,
+ 0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x19,0x13,0x13,
+ 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,
+ 0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,
+ 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,
+ 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,
+ 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
// #pragma mark volumn slider
const int32 kVolumeSliderBitmapWidth = 6;
const int32 kVolumeSliderBitmapHeight = 15;
const BPoint kVolumeSliderBitmapSize(kVolumeSliderBitmapWidth - 1,
- kVolumeSliderBitmapHeight - 1);
+ kVolumeSliderBitmapHeight - 1);
const unsigned char kVolumeSliderLeftBitmapBits [] = {
- 0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x3f,0x3f,
- 0x1b,0x1b,0x1a,0x18,0x11,0x0b,0x3f,0x3f,
- 0x1b,0x19,0x15,0x0b,0x06,0x0a,0x3f,0x3f,
- 0x1a,0x15,0x09,0x09,0xb6,0x8f,0x3f,0x3f,
- 0x18,0x0b,0x09,0x8f,0x8f,0x8f,0x3f,0x3f,
- 0x11,0x07,0xb6,0x8f,0x8f,0x68,0x3f,0x3f,
- 0x0c,0x0c,0x8f,0x8f,0x68,0x68,0x3f,0x3f,
- 0x07,0x10,0x8f,0x68,0x68,0x68,0x3f,0x3f,
- 0x16,0x12,0x8f,0x68,0x68,0x68,0x3f,0x3f,
- 0x1a,0x16,0x11,0x68,0x68,0x68,0x3f,0x3f,
- 0x1b,0x1a,0x18,0x68,0x68,0x68,0x3f,0x3f,
- 0x1b,0x1b,0x1c,0x19,0x68,0x68,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1d,0x1c,0x19,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1d,0x1e,0x3f,0x3f,
- 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x3f,0x3f
+ 0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x3f,0x3f,
+ 0x1b,0x1b,0x1a,0x18,0x11,0x0b,0x3f,0x3f,
+ 0x1b,0x19,0x15,0x0b,0x06,0x0a,0x3f,0x3f,
+ 0x1a,0x15,0x09,0x09,0xb6,0x8f,0x3f,0x3f,
+ 0x18,0x0b,0x09,0x8f,0x8f,0x8f,0x3f,0x3f,
+ 0x11,0x07,0xb6,0x8f,0x8f,0x68,0x3f,0x3f,
+ 0x0c,0x0c,0x8f,0x8f,0x68,0x68,0x3f,0x3f,
+ 0x07,0x10,0x8f,0x68,0x68,0x68,0x3f,0x3f,
+ 0x16,0x12,0x8f,0x68,0x68,0x68,0x3f,0x3f,
+ 0x1a,0x16,0x11,0x68,0x68,0x68,0x3f,0x3f,
+ 0x1b,0x1a,0x18,0x68,0x68,0x68,0x3f,0x3f,
+ 0x1b,0x1b,0x1c,0x19,0x68,0x68,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1d,0x1c,0x19,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1d,0x1e,0x3f,0x3f,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x3f,0x3f
};
const unsigned char kVolumeSliderRightBits [] = {
- 0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x11,0x18,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x08,0x0d,0x16,0x1a,0x1b,0x1b,0x3f,0x3f,
- 0x11,0x0c,0x0f,0x17,0x1a,0x1b,0x3f,0x3f,
- 0x13,0x13,0x10,0x14,0x19,0x1b,0x3f,0x3f,
- 0x13,0x13,0x13,0x15,0x19,0x1a,0x3f,0x3f,
- 0x13,0x13,0x13,0x16,0x1a,0x1a,0x3f,0x3f,
- 0x13,0x13,0x13,0x15,0x1c,0x1b,0x3f,0x3f,
- 0x13,0x13,0x13,0x19,0x1e,0x1c,0x3f,0x3f,
- 0x13,0x13,0x15,0x1d,0x1d,0x1c,0x3f,0x3f,
- 0x13,0x14,0x1a,0x1e,0x1c,0x1b,0x3f,0x3f,
- 0x15,0x1b,0x3f,0x1d,0x1b,0x1b,0x3f,0x3f,
- 0x1d,0x1e,0x1d,0x1c,0x1b,0x1b,0x3f,0x3f,
- 0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
- 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
+ 0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x11,0x18,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x08,0x0d,0x16,0x1a,0x1b,0x1b,0x3f,0x3f,
+ 0x11,0x0c,0x0f,0x17,0x1a,0x1b,0x3f,0x3f,
+ 0x13,0x13,0x10,0x14,0x19,0x1b,0x3f,0x3f,
+ 0x13,0x13,0x13,0x15,0x19,0x1a,0x3f,0x3f,
+ 0x13,0x13,0x13,0x16,0x1a,0x1a,0x3f,0x3f,
+ 0x13,0x13,0x13,0x15,0x1c,0x1b,0x3f,0x3f,
+ 0x13,0x13,0x13,0x19,0x1e,0x1c,0x3f,0x3f,
+ 0x13,0x13,0x15,0x1d,0x1d,0x1c,0x3f,0x3f,
+ 0x13,0x14,0x1a,0x1e,0x1c,0x1b,0x3f,0x3f,
+ 0x15,0x1b,0x3f,0x1d,0x1b,0x1b,0x3f,0x3f,
+ 0x1d,0x1e,0x1d,0x1c,0x1b,0x1b,0x3f,0x3f,
+ 0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f
};
const int32 kVolumeSliderKnobWidth = 11;
const BPoint kVolumeSliderKnobBitmapSize(kVolumeSliderKnobWidth - 1, kVolumeSliderKnobHeight - 1);
const unsigned char kVolumeSliderKnobBits [] = {
- 0x00,0x00,0x13,0x18,0x1d,0x3f,0x1d,0x19,0x12,0x00,0x00,0x3f,
- 0x00,0x15,0x1d,0x1e,0x1e,0x1d,0x1e,0x1b,0x19,0x12,0x00,0x3f,
- 0x00,0x1e,0x1e,0x1d,0x1d,0x3f,0x1d,0x1d,0x1b,0x19,0x00,0x3f,
- 0x1a,0x1e,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x19,0x12,0x3f,
- 0x1e,0x1e,0x1d,0x1d,0x1d,0x3f,0x1d,0x1d,0x1d,0x19,0x11,0x3f,
- 0x3f,0x1d,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x1c,0x0e,0x3f,
- 0x1e,0x1e,0x1d,0x1d,0x1d,0x3f,0x1d,0x1d,0x1d,0x19,0x11,0x3f,
- 0x1a,0x1d,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x15,0x00,0x3f,
- 0x00,0x1a,0x19,0x1d,0x1d,0x1d,0x1d,0x1d,0x17,0x12,0x00,0x3f,
- 0x00,0x16,0x13,0x15,0x19,0x1c,0x19,0x15,0x12,0x00,0x00,0x3f,
- 0x00,0x00,0x00,0x14,0x11,0x0e,0x11,0x14,0x00,0x00,0x00,0x3f
+ 0x00,0x00,0x13,0x18,0x1d,0x3f,0x1d,0x19,0x12,0x00,0x00,0x3f,
+ 0x00,0x15,0x1d,0x1e,0x1e,0x1d,0x1e,0x1b,0x19,0x12,0x00,0x3f,
+ 0x00,0x1e,0x1e,0x1d,0x1d,0x3f,0x1d,0x1d,0x1b,0x19,0x00,0x3f,
+ 0x1a,0x1e,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x19,0x12,0x3f,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x3f,0x1d,0x1d,0x1d,0x19,0x11,0x3f,
+ 0x3f,0x1d,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x1c,0x0e,0x3f,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x3f,0x1d,0x1d,0x1d,0x19,0x11,0x3f,
+ 0x1a,0x1d,0x1d,0x1d,0x1d,0x13,0x1d,0x1d,0x1d,0x15,0x00,0x3f,
+ 0x00,0x1a,0x19,0x1d,0x1d,0x1d,0x1d,0x1d,0x17,0x12,0x00,0x3f,
+ 0x00,0x16,0x13,0x15,0x19,0x1c,0x19,0x15,0x12,0x00,0x00,0x3f,
+ 0x00,0x00,0x00,0x14,0x11,0x0e,0x11,0x14,0x00,0x00,0x00,0x3f
};
-#endif // BEOS_BITMAPS_H
+#endif // BEOS_BITMAPS_H
rgb_color
ShiftColor(rgb_color color, float percent)
{
- rgb_color result = {
- ShiftComponent(color.red, percent),
- ShiftComponent(color.green, percent),
- ShiftComponent(color.blue, percent),
- 0
- };
-
- return result;
+ rgb_color result = {
+ ShiftComponent(color.red, percent),
+ ShiftComponent(color.green, percent),
+ ShiftComponent(color.blue, percent),
+ 0
+ };
+
+ return result;
}
// CompareColors
static bool
CompareColors(const rgb_color a, const rgb_color b)
{
- return a.red == b.red
- && a.green == b.green
- && a.blue == b.blue
- && a.alpha == b.alpha;
+ return a.red == b.red
+ && a.green == b.green
+ && a.blue == b.blue
+ && a.alpha == b.alpha;
}
// ==
bool
operator==(const rgb_color &a, const rgb_color &b)
{
- return CompareColors(a, b);
+ return CompareColors(a, b);
}
// !=
bool
operator!=(const rgb_color &a, const rgb_color &b)
{
- return !CompareColors(a, b);
+ return !CompareColors(a, b);
}
// ReplaceColor
void
ReplaceColor(BBitmap *bitmap, rgb_color from, rgb_color to)
{
- ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); // other color spaces not implemented yet
-
- BScreen screen(B_MAIN_SCREEN_ID);
- uint32 fromIndex = screen.IndexForColor(from);
- uint32 toIndex = screen.IndexForColor(to);
-
- uchar *bits = (uchar *)bitmap->Bits();
- int32 bitsLength = bitmap->BitsLength();
- for (int32 index = 0; index < bitsLength; index++)
- if (bits[index] == fromIndex)
- bits[index] = toIndex;
+ ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); // other color spaces not implemented yet
+
+ BScreen screen(B_MAIN_SCREEN_ID);
+ uint32 fromIndex = screen.IndexForColor(from);
+ uint32 toIndex = screen.IndexForColor(to);
+
+ uchar *bits = (uchar *)bitmap->Bits();
+ int32 bitsLength = bitmap->BitsLength();
+ for (int32 index = 0; index < bitsLength; index++)
+ if (bits[index] == fromIndex)
+ bits[index] = toIndex;
}
// ReplaceTransparentColor
-void
+void
ReplaceTransparentColor(BBitmap *bitmap, rgb_color with)
{
- ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); // other color spaces not implemented yet
-
- BScreen screen(B_MAIN_SCREEN_ID);
- uint32 withIndex = screen.IndexForColor(with);
-
- uchar *bits = (uchar *)bitmap->Bits();
- int32 bitsLength = bitmap->BitsLength();
- for (int32 index = 0; index < bitsLength; index++)
- if (bits[index] == B_TRANSPARENT_8_BIT)
- bits[index] = withIndex;
+ ASSERT(bitmap->ColorSpace() == B_COLOR_8_BIT); // other color spaces not implemented yet
+
+ BScreen screen(B_MAIN_SCREEN_ID);
+ uint32 withIndex = screen.IndexForColor(with);
+
+ uchar *bits = (uchar *)bitmap->Bits();
+ int32 bitsLength = bitmap->BitsLength();
+ for (int32 index = 0; index < bitsLength; index++)
+ if (bits[index] == B_TRANSPARENT_8_BIT)
+ bits[index] = withIndex;
}
// ycrcb_to_rgb
inline void
ycbcr_to_rgb( uint8 y, uint8 cb, uint8 cr,
- uint8& r, uint8& g, uint8& b)
+ uint8& r, uint8& g, uint8& b)
{
- r = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) + 1.596 * ( cr - 128 ) ) );
- g = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) - 0.813 * ( cr - 128 )
- - 0.391 * ( cb - 128 ) ) );
- b = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) + 2.018 * ( cb - 128 ) ) );
+ r = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) + 1.596 * ( cr - 128 ) ) );
+ g = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) - 0.813 * ( cr - 128 )
+ - 0.391 * ( cb - 128 ) ) );
+ b = (uint8)max_c( 0, min_c( 255, 1.164 * ( y - 16 ) + 2.018 * ( cb - 128 ) ) );
}
// this function will not produce visually pleasing results!
// mix_colors
inline void
mix_colors( uint8 ra, uint8 ga, uint8 ba,
- uint8 rb, uint8 gb, uint8 bb,
- uint8& r, uint8& g, uint8& b, float mixLevel )
+ uint8 rb, uint8 gb, uint8 bb,
+ uint8& r, uint8& g, uint8& b, float mixLevel )
{
- float mixA = ( 1.0 - mixLevel );
- float mixB = mixLevel;
- r = (uint8)(mixA * ra + mixB * rb);
- g = (uint8)(mixA * ga + mixB * gb);
- b = (uint8)(mixA * ba + mixB * bb);
+ float mixA = ( 1.0 - mixLevel );
+ float mixB = mixLevel;
+ r = (uint8)(mixA * ra + mixB * rb);
+ g = (uint8)(mixA * ga + mixB * gb);
+ b = (uint8)(mixA * ba + mixB * bb);
}
// the algorithm used is probably pretty slow, but it should be easy
status_t
scale_bitmap( BBitmap* bitmap, uint32 fromWidth, uint32 fromHeight )
{
- status_t status = B_BAD_VALUE;
-
- if ( bitmap && bitmap->IsValid()
- && ( bitmap->ColorSpace() == B_RGB32 || bitmap->ColorSpace() == B_RGBA32 ) )
- {
- status = B_MISMATCHED_VALUES;
- // we only support upscaling as of now
- uint32 destWidth = bitmap->Bounds().IntegerWidth() + 1;
- uint32 destHeight = bitmap->Bounds().IntegerHeight() + 1;
- if ( fromWidth <= destWidth && fromHeight <= destHeight )
- {
- status = B_OK;
- uint32 bpr = bitmap->BytesPerRow();
- if ( fromWidth < destWidth )
- {
- // scale horizontally
- uint8* src = (uint8*)bitmap->Bits();
- uint8* p = new uint8[fromWidth * 4]; // temp buffer
- for ( uint32 y = 0; y < fromHeight; y++ )
- {
- // copy valid pixels into temp buffer
- memcpy( p, src, fromWidth * 4 );
- for ( uint32 x = 0; x < destWidth; x++ )
- {
- // mix colors of left and right pixels and write it back
- // into the bitmap
- float xPos = ( (float)x / (float)destWidth ) * (float)fromWidth;
- uint32 leftIndex = (uint32)floorf( xPos ) * 4;
- uint32 rightIndex = (uint32)ceilf( xPos ) * 4;
- rgb_color left;
- left.red = p[leftIndex + 2];
- left.green = p[leftIndex + 1];
- left.blue = p[leftIndex + 0];
- rgb_color right;
- right.red = p[rightIndex + 2];
- right.green = p[rightIndex + 1];
- right.blue = p[rightIndex + 0];
- rgb_color mix;
- mix_colors( left.red, left.green, left.blue,
- right.red, right.green, right.blue,
- mix.red, mix.green, mix.blue, xPos - floorf( xPos ) );
- uint32 destIndex = x * 4;
- src[destIndex + 2] = mix.red;
- src[destIndex + 1] = mix.green;
- src[destIndex + 0] = mix.blue;
- }
- src += bpr;
- }
- delete[] p;
- }
- if ( fromHeight < destHeight )
- {
- // scale vertically
- uint8* src = (uint8*)bitmap->Bits();
- uint8* p = new uint8[fromHeight * 3]; // temp buffer
- for ( uint32 x = 0; x < destWidth; x++ )
- {
- // copy valid pixels into temp buffer
- for ( uint32 y = 0; y < fromHeight; y++ )
- {
- uint32 destIndex = y * 3;
- uint32 srcIndex = x * 4 + y * bpr;
- p[destIndex + 0] = src[srcIndex + 0];
- p[destIndex + 1] = src[srcIndex + 1];
- p[destIndex + 2] = src[srcIndex + 2];
- }
- // do the scaling
- for ( uint32 y = 0; y < destHeight; y++ )
- {
- // mix colors of upper and lower pixels and write it back
- // into the bitmap
- float yPos = ( (float)y / (float)destHeight ) * (float)fromHeight;
- uint32 upperIndex = (uint32)floorf( yPos ) * 3;
- uint32 lowerIndex = (uint32)ceilf( yPos ) * 3;
- rgb_color upper;
- upper.red = p[upperIndex + 2];
- upper.green = p[upperIndex + 1];
- upper.blue = p[upperIndex + 0];
- rgb_color lower;
- lower.red = p[lowerIndex + 2];
- lower.green = p[lowerIndex + 1];
- lower.blue = p[lowerIndex + 0];
- rgb_color mix;
- mix_colors( upper.red, upper.green, upper.blue,
- lower.red, lower.green, lower.blue,
- mix.red, mix.green, mix.blue, yPos - floorf( yPos ) );
- uint32 destIndex = x * 4 + y * bpr;
- src[destIndex + 2] = mix.red;
- src[destIndex + 1] = mix.green;
- src[destIndex + 0] = mix.blue;
- }
- }
- delete[] p;
- }
- }
- }
- return status;
+ status_t status = B_BAD_VALUE;
+
+ if ( bitmap && bitmap->IsValid()
+ && ( bitmap->ColorSpace() == B_RGB32 || bitmap->ColorSpace() == B_RGBA32 ) )
+ {
+ status = B_MISMATCHED_VALUES;
+ // we only support upscaling as of now
+ uint32 destWidth = bitmap->Bounds().IntegerWidth() + 1;
+ uint32 destHeight = bitmap->Bounds().IntegerHeight() + 1;
+ if ( fromWidth <= destWidth && fromHeight <= destHeight )
+ {
+ status = B_OK;
+ uint32 bpr = bitmap->BytesPerRow();
+ if ( fromWidth < destWidth )
+ {
+ // scale horizontally
+ uint8* src = (uint8*)bitmap->Bits();
+ uint8* p = new uint8[fromWidth * 4]; // temp buffer
+ for ( uint32 y = 0; y < fromHeight; y++ )
+ {
+ // copy valid pixels into temp buffer
+ memcpy( p, src, fromWidth * 4 );
+ for ( uint32 x = 0; x < destWidth; x++ )
+ {
+ // mix colors of left and right pixels and write it back
+ // into the bitmap
+ float xPos = ( (float)x / (float)destWidth ) * (float)fromWidth;
+ uint32 leftIndex = (uint32)floorf( xPos ) * 4;
+ uint32 rightIndex = (uint32)ceilf( xPos ) * 4;
+ rgb_color left;
+ left.red = p[leftIndex + 2];
+ left.green = p[leftIndex + 1];
+ left.blue = p[leftIndex + 0];
+ rgb_color right;
+ right.red = p[rightIndex + 2];
+ right.green = p[rightIndex + 1];
+ right.blue = p[rightIndex + 0];
+ rgb_color mix;
+ mix_colors( left.red, left.green, left.blue,
+ right.red, right.green, right.blue,
+ mix.red, mix.green, mix.blue, xPos - floorf( xPos ) );
+ uint32 destIndex = x * 4;
+ src[destIndex + 2] = mix.red;
+ src[destIndex + 1] = mix.green;
+ src[destIndex + 0] = mix.blue;
+ }
+ src += bpr;
+ }
+ delete[] p;
+ }
+ if ( fromHeight < destHeight )
+ {
+ // scale vertically
+ uint8* src = (uint8*)bitmap->Bits();
+ uint8* p = new uint8[fromHeight * 3]; // temp buffer
+ for ( uint32 x = 0; x < destWidth; x++ )
+ {
+ // copy valid pixels into temp buffer
+ for ( uint32 y = 0; y < fromHeight; y++ )
+ {
+ uint32 destIndex = y * 3;
+ uint32 srcIndex = x * 4 + y * bpr;
+ p[destIndex + 0] = src[srcIndex + 0];
+ p[destIndex + 1] = src[srcIndex + 1];
+ p[destIndex + 2] = src[srcIndex + 2];
+ }
+ // do the scaling
+ for ( uint32 y = 0; y < destHeight; y++ )
+ {
+ // mix colors of upper and lower pixels and write it back
+ // into the bitmap
+ float yPos = ( (float)y / (float)destHeight ) * (float)fromHeight;
+ uint32 upperIndex = (uint32)floorf( yPos ) * 3;
+ uint32 lowerIndex = (uint32)ceilf( yPos ) * 3;
+ rgb_color upper;
+ upper.red = p[upperIndex + 2];
+ upper.green = p[upperIndex + 1];
+ upper.blue = p[upperIndex + 0];
+ rgb_color lower;
+ lower.red = p[lowerIndex + 2];
+ lower.green = p[lowerIndex + 1];
+ lower.blue = p[lowerIndex + 0];
+ rgb_color mix;
+ mix_colors( upper.red, upper.green, upper.blue,
+ lower.red, lower.green, lower.blue,
+ mix.red, mix.green, mix.blue, yPos - floorf( yPos ) );
+ uint32 destIndex = x * 4 + y * bpr;
+ src[destIndex + 2] = mix.red;
+ src[destIndex + 1] = mix.green;
+ src[destIndex + 0] = mix.blue;
+ }
+ }
+ delete[] p;
+ }
+ }
+ }
+ return status;
}
// convert_bitmap
status_t
convert_bitmap( BBitmap* inBitmap, BBitmap* outBitmap )
{
- status_t status = B_BAD_VALUE;
- // see that we got valid bitmaps
- if ( inBitmap && inBitmap->IsValid()
- && outBitmap && outBitmap->IsValid() )
- {
- status = B_MISMATCHED_VALUES;
- // see that bitmaps are compatible and that we support the conversion
- if ( inBitmap->Bounds().Width() <= outBitmap->Bounds().Width()
- && inBitmap->Bounds().Height() <= outBitmap->Bounds().Height()
- && ( outBitmap->ColorSpace() == B_RGB32
- || outBitmap->ColorSpace() == B_RGBA32) )
- {
- int32 width = inBitmap->Bounds().IntegerWidth() + 1;
- int32 height = inBitmap->Bounds().IntegerHeight() + 1;
- int32 srcBpr = inBitmap->BytesPerRow();
- int32 dstBpr = outBitmap->BytesPerRow();
- uint8* srcBits = (uint8*)inBitmap->Bits();
- uint8* dstBits = (uint8*)outBitmap->Bits();
- switch (inBitmap->ColorSpace())
- {
- case B_YCbCr422:
- // Y0[7:0] Cb0[7:0] Y1[7:0] Cr0[7:0]
- // Y2[7:0] Cb2[7:0] Y3[7:0] Cr2[7:0]
- for ( int32 y = 0; y < height; y++ )
- {
- for ( int32 x = 0; x < width; x += 2 )
- {
- int32 srcOffset = x * 2;
- int32 dstOffset = x * 4;
- ycbcr_to_rgb( srcBits[srcOffset + 0],
- srcBits[srcOffset + 1],
- srcBits[srcOffset + 3],
- dstBits[dstOffset + 2],
- dstBits[dstOffset + 1],
- dstBits[dstOffset + 0] );
- ycbcr_to_rgb( srcBits[srcOffset + 2],
- srcBits[srcOffset + 1],
- srcBits[srcOffset + 3],
- dstBits[dstOffset + 6],
- dstBits[dstOffset + 5],
- dstBits[dstOffset + 4] );
- // take care of alpha
- dstBits[x * 4 + 3] = 255;
- dstBits[x * 4 + 7] = 255;
- }
- srcBits += srcBpr;
- dstBits += dstBpr;
- }
- status = B_OK;
- break;
- case B_YCbCr420:
- // Non-interlaced only!
- // Cb0 Y0 Y1 Cb2 Y2 Y3 on even scan lines ...
- // Cr0 Y0 Y1 Cr2 Y2 Y3 on odd scan lines
- status = B_ERROR;
- break;
- case B_YUV422:
- // U0[7:0] Y0[7:0] V0[7:0] Y1[7:0]
- // U2[7:0] Y2[7:0] V2[7:0] Y3[7:0]
- status = B_ERROR;
- break;
- case B_RGB32:
- case B_RGBA32:
- memcpy( dstBits, srcBits, inBitmap->BitsLength() );
- status = B_OK;
- break;
- case B_RGB16:
- // G[2:0],B[4:0] R[4:0],G[5:3]
- for ( int32 y = 0; y < height; y ++ )
- {
- for ( int32 x = 0; x < width; x++ )
- {
- int32 srcOffset = x * 2;
- int32 dstOffset = x * 4;
- uint8 blue = srcBits[srcOffset + 0] & 0x1f;
- uint8 green = ( srcBits[srcOffset + 0] >> 5 )
- | ( ( srcBits[srcOffset + 1] & 0x07 ) << 3 );
- uint8 red = srcBits[srcOffset + 1] & 0xf8;
- // homogeneously scale each component to 8 bit
- dstBits[dstOffset + 0] = (blue << 3) | (blue >> 2);
- dstBits[dstOffset + 1] = (green << 2) | (green >> 4);
- dstBits[dstOffset + 2] = red | (red >> 5);
- }
- srcBits += srcBpr;
- dstBits += dstBpr;
- }
- status = B_OK;
- break;
- default:
- status = B_MISMATCHED_VALUES;
- break;
- }
- if ( status == B_OK )
- {
- if ( width < outBitmap->Bounds().IntegerWidth() + 1
- || height < outBitmap->Bounds().IntegerHeight() + 1 )
- {
- scale_bitmap( outBitmap, width, height );
- }
- }
- }
- }
- return status;
+ status_t status = B_BAD_VALUE;
+ // see that we got valid bitmaps
+ if ( inBitmap && inBitmap->IsValid()
+ && outBitmap && outBitmap->IsValid() )
+ {
+ status = B_MISMATCHED_VALUES;
+ // see that bitmaps are compatible and that we support the conversion
+ if ( inBitmap->Bounds().Width() <= outBitmap->Bounds().Width()
+ && inBitmap->Bounds().Height() <= outBitmap->Bounds().Height()
+ && ( outBitmap->ColorSpace() == B_RGB32
+ || outBitmap->ColorSpace() == B_RGBA32) )
+ {
+ int32 width = inBitmap->Bounds().IntegerWidth() + 1;
+ int32 height = inBitmap->Bounds().IntegerHeight() + 1;
+ int32 srcBpr = inBitmap->BytesPerRow();
+ int32 dstBpr = outBitmap->BytesPerRow();
+ uint8* srcBits = (uint8*)inBitmap->Bits();
+ uint8* dstBits = (uint8*)outBitmap->Bits();
+ switch (inBitmap->ColorSpace())
+ {
+ case B_YCbCr422:
+ // Y0[7:0] Cb0[7:0] Y1[7:0] Cr0[7:0]
+ // Y2[7:0] Cb2[7:0] Y3[7:0] Cr2[7:0]
+ for ( int32 y = 0; y < height; y++ )
+ {
+ for ( int32 x = 0; x < width; x += 2 )
+ {
+ int32 srcOffset = x * 2;
+ int32 dstOffset = x * 4;
+ ycbcr_to_rgb( srcBits[srcOffset + 0],
+ srcBits[srcOffset + 1],
+ srcBits[srcOffset + 3],
+ dstBits[dstOffset + 2],
+ dstBits[dstOffset + 1],
+ dstBits[dstOffset + 0] );
+ ycbcr_to_rgb( srcBits[srcOffset + 2],
+ srcBits[srcOffset + 1],
+ srcBits[srcOffset + 3],
+ dstBits[dstOffset + 6],
+ dstBits[dstOffset + 5],
+ dstBits[dstOffset + 4] );
+ // take care of alpha
+ dstBits[x * 4 + 3] = 255;
+ dstBits[x * 4 + 7] = 255;
+ }
+ srcBits += srcBpr;
+ dstBits += dstBpr;
+ }
+ status = B_OK;
+ break;
+ case B_YCbCr420:
+ // Non-interlaced only!
+ // Cb0 Y0 Y1 Cb2 Y2 Y3 on even scan lines ...
+ // Cr0 Y0 Y1 Cr2 Y2 Y3 on odd scan lines
+ status = B_ERROR;
+ break;
+ case B_YUV422:
+ // U0[7:0] Y0[7:0] V0[7:0] Y1[7:0]
+ // U2[7:0] Y2[7:0] V2[7:0] Y3[7:0]
+ status = B_ERROR;
+ break;
+ case B_RGB32:
+ case B_RGBA32:
+ memcpy( dstBits, srcBits, inBitmap->BitsLength() );
+ status = B_OK;
+ break;
+ case B_RGB16:
+ // G[2:0],B[4:0] R[4:0],G[5:3]
+ for ( int32 y = 0; y < height; y ++ )
+ {
+ for ( int32 x = 0; x < width; x++ )
+ {
+ int32 srcOffset = x * 2;
+ int32 dstOffset = x * 4;
+ uint8 blue = srcBits[srcOffset + 0] & 0x1f;
+ uint8 green = ( srcBits[srcOffset + 0] >> 5 )
+ | ( ( srcBits[srcOffset + 1] & 0x07 ) << 3 );
+ uint8 red = srcBits[srcOffset + 1] & 0xf8;
+ // homogeneously scale each component to 8 bit
+ dstBits[dstOffset + 0] = (blue << 3) | (blue >> 2);
+ dstBits[dstOffset + 1] = (green << 2) | (green >> 4);
+ dstBits[dstOffset + 2] = red | (red >> 5);
+ }
+ srcBits += srcBpr;
+ dstBits += dstBpr;
+ }
+ status = B_OK;
+ break;
+ default:
+ status = B_MISMATCHED_VALUES;
+ break;
+ }
+ if ( status == B_OK )
+ {
+ if ( width < outBitmap->Bounds().IntegerWidth() + 1
+ || height < outBitmap->Bounds().IntegerHeight() + 1 )
+ {
+ scale_bitmap( outBitmap, width, height );
+ }
+ }
+ }
+ }
+ return status;
}
// clip_float
inline uint8
clip_float(float value)
{
- if (value < 0)
- value = 0;
- if (value > 255)
- value = 255;
- return (uint8)value;
+ if (value < 0)
+ value = 0;
+ if (value > 255)
+ value = 255;
+ return (uint8)value;
}
// dim_bitmap
status_t
dim_bitmap(BBitmap* bitmap, rgb_color center, float dimLevel)
{
- status_t status = B_BAD_VALUE;
- if (bitmap && bitmap->IsValid())
- {
- switch (bitmap->ColorSpace())
- {
- case B_CMAP8:
- {
- BScreen screen(B_MAIN_SCREEN_ID);
- if (screen.IsValid())
- {
- // iterate over each pixel, get the respective
- // color from the screen object, find the distance
- // to the "center" color and shorten the distance
- // by "dimLevel"
- int32 length = bitmap->BitsLength();
- uint8* bits = (uint8*)bitmap->Bits();
- for (int32 i = 0; i < length; i++)
- {
- // preserve transparent pixels
- if (bits[i] != B_TRANSPARENT_MAGIC_CMAP8)
- {
- // get color for this index
- rgb_color c = screen.ColorForIndex(bits[i]);
- // red
- float dist = (c.red - center.red) * dimLevel;
- c.red = clip_float(center.red + dist);
- // green
- dist = (c.green - center.green) * dimLevel;
- c.green = clip_float(center.green + dist);
- // blue
- dist = (c.blue - center.blue) * dimLevel;
- c.blue = clip_float(center.blue + dist);
- // write correct index of the dimmed color
- // back into bitmap (and hope the match is close...)
- bits[i] = screen.IndexForColor(c);
- }
- }
- status = B_OK;
- }
- break;
- }
- case B_RGB32:
- case B_RGBA32:
- {
- // iterate over each color component, find the distance
- // to the "center" color and shorten the distance
- // by "dimLevel"
- uint8* bits = (uint8*)bitmap->Bits();
- int32 bpr = bitmap->BytesPerRow();
- int32 pixels = bitmap->Bounds().IntegerWidth() + 1;
- int32 lines = bitmap->Bounds().IntegerHeight() + 1;
- // iterate over color components
- for (int32 y = 0; y < lines; y++) {
- for (int32 x = 0; x < pixels; x++) {
- int32 offset = 4 * x; // four bytes per pixel
- // blue
- float dist = (bits[offset + 0] - center.blue) * dimLevel;
- bits[offset + 0] = clip_float(center.blue + dist);
- // green
- dist = (bits[offset + 1] - center.green) * dimLevel;
- bits[offset + 1] = clip_float(center.green + dist);
- // red
- dist = (bits[offset + 2] - center.red) * dimLevel;
- bits[offset + 2] = clip_float(center.red + dist);
- // ignore alpha channel
- }
- // next line
- bits += bpr;
- }
- status = B_OK;
- break;
- }
- default:
- status = B_ERROR;
- break;
- }
- }
- return status;
+ status_t status = B_BAD_VALUE;
+ if (bitmap && bitmap->IsValid())
+ {
+ switch (bitmap->ColorSpace())
+ {
+ case B_CMAP8:
+ {
+ BScreen screen(B_MAIN_SCREEN_ID);
+ if (screen.IsValid())
+ {
+ // iterate over each pixel, get the respective
+ // color from the screen object, find the distance
+ // to the "center" color and shorten the distance
+ // by "dimLevel"
+ int32 length = bitmap->BitsLength();
+ uint8* bits = (uint8*)bitmap->Bits();
+ for (int32 i = 0; i < length; i++)
+ {
+ // preserve transparent pixels
+ if (bits[i] != B_TRANSPARENT_MAGIC_CMAP8)
+ {
+ // get color for this index
+ rgb_color c = screen.ColorForIndex(bits[i]);
+ // red
+ float dist = (c.red - center.red) * dimLevel;
+ c.red = clip_float(center.red + dist);
+ // green
+ dist = (c.green - center.green) * dimLevel;
+ c.green = clip_float(center.green + dist);
+ // blue
+ dist = (c.blue - center.blue) * dimLevel;
+ c.blue = clip_float(center.blue + dist);
+ // write correct index of the dimmed color
+ // back into bitmap (and hope the match is close...)
+ bits[i] = screen.IndexForColor(c);
+ }
+ }
+ status = B_OK;
+ }
+ break;
+ }
+ case B_RGB32:
+ case B_RGBA32:
+ {
+ // iterate over each color component, find the distance
+ // to the "center" color and shorten the distance
+ // by "dimLevel"
+ uint8* bits = (uint8*)bitmap->Bits();
+ int32 bpr = bitmap->BytesPerRow();
+ int32 pixels = bitmap->Bounds().IntegerWidth() + 1;
+ int32 lines = bitmap->Bounds().IntegerHeight() + 1;
+ // iterate over color components
+ for (int32 y = 0; y < lines; y++) {
+ for (int32 x = 0; x < pixels; x++) {
+ int32 offset = 4 * x; // four bytes per pixel
+ // blue
+ float dist = (bits[offset + 0] - center.blue) * dimLevel;
+ bits[offset + 0] = clip_float(center.blue + dist);
+ // green
+ dist = (bits[offset + 1] - center.green) * dimLevel;
+ bits[offset + 1] = clip_float(center.green + dist);
+ // red
+ dist = (bits[offset + 2] - center.red) * dimLevel;
+ bits[offset + 2] = clip_float(center.red + dist);
+ // ignore alpha channel
+ }
+ // next line
+ bits += bpr;
+ }
+ status = B_OK;
+ break;
+ }
+ default:
+ status = B_ERROR;
+ break;
+ }
+ }
+ return status;
}
// dimmed_color_cmap8
rgb_color
dimmed_color_cmap8(rgb_color color, rgb_color center, float dimLevel)
{
- BScreen screen(B_MAIN_SCREEN_ID);
- if (screen.IsValid())
- {
- // red
- float dist = (color.red - center.red) * dimLevel;
- color.red = clip_float(center.red + dist);
- // green
- dist = (color.green - center.green) * dimLevel;
- color.green = clip_float(center.green + dist);
- // blue
- dist = (color.blue - center.blue) * dimLevel;
- color.blue = clip_float(center.blue + dist);
- // get color index for dimmed color
- int32 index = screen.IndexForColor(color);
- // put color at index (closest match in palette
- // to dimmed result) into returned color
- color = screen.ColorForIndex(index);
- }
- return color;
+ BScreen screen(B_MAIN_SCREEN_ID);
+ if (screen.IsValid())
+ {
+ // red
+ float dist = (color.red - center.red) * dimLevel;
+ color.red = clip_float(center.red + dist);
+ // green
+ dist = (color.green - center.green) * dimLevel;
+ color.green = clip_float(center.green + dist);
+ // blue
+ dist = (color.blue - center.blue) * dimLevel;
+ color.blue = clip_float(center.blue + dist);
+ // get color index for dimmed color
+ int32 index = screen.IndexForColor(color);
+ // put color at index (closest match in palette
+ // to dimmed result) into returned color
+ color = screen.ColorForIndex(index);
+ }
+ return color;
}
inline rgb_color
Color(int32 r, int32 g, int32 b, int32 alpha = 255)
{
- rgb_color result;
- result.red = r;
- result.green = g;
- result.blue = b;
- result.alpha = alpha;
+ rgb_color result;
+ result.red = r;
+ result.green = g;
+ result.blue = b;
+ result.alpha = alpha;
- return result;
+ return result;
}
const rgb_color kWhite = { 255, 255, 255, 255};
// and fromHeight must be smaller or equal to the bitmaps size!
// only supported colorspaces are B_RGB32 and B_RGBA32
status_t scale_bitmap( BBitmap* bitmap,
- uint32 fromWidth, uint32 fromHeight );
+ uint32 fromWidth, uint32 fromHeight );
// bitmaps need to be the same size, or this function will fail
// currently supported conversions:
-// B_YCbCr422 -> B_RGB32
-// B_RGB32 -> B_RGB32
-// B_RGB16 -> B_RGB32
+// B_YCbCr422 -> B_RGB32
+// B_RGB32 -> B_RGB32
+// B_RGB16 -> B_RGB32
// not yet implemented conversions:
-// B_YCbCr420 -> B_RGB32
-// B_YUV422 -> B_RGB32
+// B_YCbCr420 -> B_RGB32
+// B_YUV422 -> B_RGB32
status_t convert_bitmap(BBitmap* inBitmap, BBitmap* outBitmap);
// dims bitmap (in place) by finding the distance of
// B_RGBA32
// B_CMAP8
status_t dim_bitmap(BBitmap* bitmap, rgb_color center,
- float dimLevel);
+ float dimLevel);
rgb_color dimmed_color_cmap8(rgb_color color, rgb_color center,
- float dimLevel);
+ float dimLevel);
-#endif // __DRAWING_TIBITS__
+#endif // __DRAWING_TIBITS__
msg_Err( p_intf, "out of memory" );
return VLC_EGENERIC;
}
-
+
p_intf->pf_run = Run;
/* Create the interface window */
/* Add the Show menu */
fShowMenu = new BMenu( _("Window") );
-#if 0
+#if 0
ADD_ELLIPSIS( _("Playlist") );
fShowMenu->AddItem( new BMenuItem( psz_tmp, new BMessage( OPEN_PLAYLIST ), 'P') );
#endif
BRect frame;
if ( fSettings->FindRect( "main frame", &frame ) == B_OK )
set_window_pos( this, frame );
-#if 0
+#if 0
if (fSettings->FindRect( "playlist frame", &frame ) == B_OK )
set_window_pos( fPlaylistWindow, frame );
-#endif
+#endif
if (fSettings->FindRect( "messages frame", &frame ) == B_OK )
set_window_pos( fMessagesWindow, frame );
if (fSettings->FindRect( "settings frame", &frame ) == B_OK )
#if 0
if ( fSettings->FindBool( "playlist showing", &showing ) == B_OK )
launch_window( fPlaylistWindow, showing );
-#endif
+#endif
if ( fSettings->FindBool( "messages showing", &showing ) == B_OK )
launch_window( fMessagesWindow, showing );
if ( fSettings->FindBool( "settings showing", &showing ) == B_OK )
void UpdatePlaylist();
bool IsStopped() const;
-
+
MediaControlView* p_mediaControl;
MessagesWindow* fMessagesWindow;
- private:
+ private:
void _SetMenusEnabled( bool hasFile,
bool hasChapters = false,
bool hasTitles = false );
BFilePanel* fFilePanel;
#if 0
- PlayListWindow* fPlaylistWindow;
+ PlayListWindow* fPlaylistWindow;
#endif
PreferencesWindow* fPreferencesWindow;
BMenuBar* fMenuBar;
v->SetHighColor( 0, 0, 0, 255 );
v->StrokeRect( v->Bounds() );
v->Sync();
-
+
uint8 *bits = (uint8 *)dragBitmap->Bits();
int32 height = (int32)dragBitmap->Bounds().Height() + 1;
int32 width = (int32)dragBitmap->Bounds().Width() + 1;
int32 bpr = dragBitmap->BytesPerRow();
-
+
if (fade) {
for ( int32 y = 0; y < height - ALPHA / 2; y++, bits += bpr ) {
uint8 *line = bits + 3;
// offset where by half of item height
BRect r( ItemFrame( 0 ) );
where.y += r.Height() / 2.0;
-
+
int32 index = IndexOf( where );
if ( index < 0 )
index = CountItems();
{
if ( numBytes < 1 )
return;
-
+
if ( ( bytes[0] == B_BACKSPACE ) || ( bytes[0] == B_DELETE ) )
{
RemoveSelected();
void* cloned = fVlcWrapper->PlaylistCloneItem( item );
if ( cloned && !clonedItems.AddItem( cloned ) )
free( cloned );
-
+
}
// add cloned items at index
int32 index = toIndex;
void
PlaylistView::SortByPath()
{
-
+
}
/*****************************************************************************
playlist_t * p_playlist;
p_playlist = (playlist_t *) vlc_object_find( p_intf,
VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-
+
if( !p_playlist )
{
return;
enum
{
- DISPLAY_PATH = 0,
- DISPLAY_NAME,
+ DISPLAY_PATH = 0,
+ DISPLAY_NAME,
};
class InterfaceWindow;
class PlaylistItem : public BStringItem
{
public:
- PlaylistItem( const char* name );
- virtual ~PlaylistItem();
+ PlaylistItem( const char* name );
+ virtual ~PlaylistItem();
- virtual void Draw( BView* owner, BRect frame,
- bool tintedLine,
- uint32 mode,
- bool active = false,
- bool playing = false );
+ virtual void Draw( BView* owner, BRect frame,
+ bool tintedLine,
+ uint32 mode,
+ bool active = false,
+ bool playing = false );
private:
- BString fName; // additional to BStringItem::Text()
+ BString fName; // additional to BStringItem::Text()
};
class DragSortableListView : public BListView
{
public:
- DragSortableListView( BRect frame,
- const char* name,
- list_view_type type
- = B_SINGLE_SELECTION_LIST,
- uint32 resizingMode
- = B_FOLLOW_LEFT
- | B_FOLLOW_TOP,
- uint32 flags
- = B_WILL_DRAW
- | B_NAVIGABLE
- | B_FRAME_EVENTS );
- virtual ~DragSortableListView();
-
- // BListView
- virtual void Draw( BRect updateRect );
- virtual bool InitiateDrag( BPoint point, int32 index,
- bool wasSelected );
- virtual void MessageReceived( BMessage* message );
- virtual void MouseMoved( BPoint where, uint32 transit,
- const BMessage* dragMessage );
- virtual void MouseUp( BPoint where );
- virtual void WindowActivated( bool active );
- virtual void DrawItem( BListItem *item, BRect itemFrame,
- bool complete = false);
-
- // DragSortableListView
- virtual void ModifiersChanged(); // called by window
-
- virtual void MoveItems( BList& items, int32 toIndex );
- virtual void CopyItems( BList& items, int32 toIndex );
- virtual void RemoveItemList( BList& indices );
- void RemoveSelected(); // uses RemoveItemList()
- int32 CountSelectedItems() const;
-
- virtual BListItem* CloneItem( int32 atIndex ) const = 0;
- virtual void DrawListItem( BView* owner, int32 index,
- BRect itemFrame ) const = 0;
- virtual void MakeDragMessage( BMessage* message ) const = 0;
+ DragSortableListView( BRect frame,
+ const char* name,
+ list_view_type type
+ = B_SINGLE_SELECTION_LIST,
+ uint32 resizingMode
+ = B_FOLLOW_LEFT
+ | B_FOLLOW_TOP,
+ uint32 flags
+ = B_WILL_DRAW
+ | B_NAVIGABLE
+ | B_FRAME_EVENTS );
+ virtual ~DragSortableListView();
+
+ // BListView
+ virtual void Draw( BRect updateRect );
+ virtual bool InitiateDrag( BPoint point, int32 index,
+ bool wasSelected );
+ virtual void MessageReceived( BMessage* message );
+ virtual void MouseMoved( BPoint where, uint32 transit,
+ const BMessage* dragMessage );
+ virtual void MouseUp( BPoint where );
+ virtual void WindowActivated( bool active );
+ virtual void DrawItem( BListItem *item, BRect itemFrame,
+ bool complete = false);
+
+ // DragSortableListView
+ virtual void ModifiersChanged(); // called by window
+
+ virtual void MoveItems( BList& items, int32 toIndex );
+ virtual void CopyItems( BList& items, int32 toIndex );
+ virtual void RemoveItemList( BList& indices );
+ void RemoveSelected(); // uses RemoveItemList()
+ int32 CountSelectedItems() const;
+
+ virtual BListItem* CloneItem( int32 atIndex ) const = 0;
+ virtual void DrawListItem( BView* owner, int32 index,
+ BRect itemFrame ) const = 0;
+ virtual void MakeDragMessage( BMessage* message ) const = 0;
private:
- void _SetDropAnticipationRect( BRect r );
- void _SetDropIndex( int32 index );
- void _RemoveDropAnticipationRect();
+ void _SetDropAnticipationRect( BRect r );
+ void _SetDropIndex( int32 index );
+ void _RemoveDropAnticipationRect();
- BRect fDropRect;
- BMessage fDragMessageCopy;
+ BRect fDropRect;
+ BMessage fDragMessageCopy;
protected:
- int32 fDropIndex;
+ int32 fDropIndex;
};
// PlaylistView
class PlaylistView : public DragSortableListView
{
public:
- PlaylistView( intf_thread_t * p_intf,
- BRect frame,
- InterfaceWindow* mainWindow,
- BMessage* selectionChangeMessage = NULL );
- ~PlaylistView();
-
- // BListView
- virtual void AttachedToWindow();
- virtual void MessageReceived( BMessage* message );
- virtual void MouseDown( BPoint where );
- virtual void KeyDown( const char* bytes, int32 numBytes );
- virtual void Pulse();
- virtual void SelectionChanged();
-
- // DragSortableListView
- virtual void MoveItems( BList& items, int32 toIndex );
- virtual void CopyItems( BList& items, int32 toIndex );
- virtual void RemoveItemList( BList& indices );
-
- virtual BListItem* CloneItem( int32 atIndex ) const;
- virtual void DrawListItem( BView* owner, int32 index,
- BRect itemFrame ) const;
- virtual void MakeDragMessage( BMessage* message ) const;
-
- // PlaylistView
- void SetCurrent( int32 index );
- void SetPlaying( bool playing );
- void RebuildList();
-
- void SortReverse();
- void SortByPath();
- void SortByName();
-
- void SetDisplayMode( uint32 mode );
- uint32 DisplayMode() const
- { return fDisplayMode; }
+ PlaylistView( intf_thread_t * p_intf,
+ BRect frame,
+ InterfaceWindow* mainWindow,
+ BMessage* selectionChangeMessage = NULL );
+ ~PlaylistView();
+
+ // BListView
+ virtual void AttachedToWindow();
+ virtual void MessageReceived( BMessage* message );
+ virtual void MouseDown( BPoint where );
+ virtual void KeyDown( const char* bytes, int32 numBytes );
+ virtual void Pulse();
+ virtual void SelectionChanged();
+
+ // DragSortableListView
+ virtual void MoveItems( BList& items, int32 toIndex );
+ virtual void CopyItems( BList& items, int32 toIndex );
+ virtual void RemoveItemList( BList& indices );
+
+ virtual BListItem* CloneItem( int32 atIndex ) const;
+ virtual void DrawListItem( BView* owner, int32 index,
+ BRect itemFrame ) const;
+ virtual void MakeDragMessage( BMessage* message ) const;
+
+ // PlaylistView
+ void SetCurrent( int32 index );
+ void SetPlaying( bool playing );
+ void RebuildList();
+
+ void SortReverse();
+ void SortByPath();
+ void SortByName();
+
+ void SetDisplayMode( uint32 mode );
+ uint32 DisplayMode() const
+ { return fDisplayMode; }
private:
- BListItem* _PlayingItem() const;
- void _SetPlayingIndex( BListItem* item );
+ BListItem* _PlayingItem() const;
+ void _SetPlayingIndex( BListItem* item );
intf_thread_t * p_intf;
- int32 fCurrentIndex;
- bool fPlaying;
- uint32 fDisplayMode;
- InterfaceWindow* fMainWindow;
- BMessage* fSelectionChangeMessage;
- PlaylistItem* fLastClickedItem;
+ int32 fCurrentIndex;
+ bool fPlaying;
+ uint32 fDisplayMode;
+ InterfaceWindow* fMainWindow;
+ BMessage* fSelectionChangeMessage;
+ PlaylistItem* fLastClickedItem;
};
#endif // LIST_VIEWS_H
enum
{
- MSG_REWIND = 'rwnd',
- MSG_FORWARD = 'frwd',
- MSG_SKIP_BACKWARDS = 'skpb',
- MSG_SKIP_FORWARD = 'skpf',
+ MSG_REWIND = 'rwnd',
+ MSG_FORWARD = 'frwd',
+ MSG_SKIP_BACKWARDS = 'skpb',
+ MSG_SKIP_FORWARD = 'skpf',
};
// constructor
MediaControlView::MediaControlView( intf_thread_t * _p_intf, BRect frame)
- : BBox(frame, NULL, B_FOLLOW_NONE, B_WILL_DRAW | B_FRAME_EVENTS | B_PULSE_NEEDED,
- B_PLAIN_BORDER),
+ : BBox(frame, NULL, B_FOLLOW_NONE, B_WILL_DRAW | B_FRAME_EVENTS | B_PULSE_NEEDED,
+ B_PLAIN_BORDER),
p_intf( _p_intf ),
fCurrentRate(INPUT_RATE_DEFAULT),
fCurrentStatus(-1),
fBottomControlHeight(0.0),
fIsEnabled( true )
{
- BRect frame(0.0, 0.0, 10.0, 10.0);
-
+ BRect frame(0.0, 0.0, 10.0, 10.0);
+
// Seek Slider
fSeekSlider = new SeekSlider( p_intf, frame, "seek slider", this );
fSeekSlider->SetValue(0);
// Buttons
// Skip Back
frame.SetRightBottom(kSkipButtonSize);
- fBottomControlHeight = kRewindBitmapHeight - 1.0;
+ fBottomControlHeight = kRewindBitmapHeight - 1.0;
fSkipBack = new TransportButton(frame, B_EMPTY_STRING,
kSkipBackBitmapBits,
kPressedSkipBackBitmapBits,
new BMessage(MSG_SKIP_BACKWARDS));
AddChild( fSkipBack );
- // Play Pause
+ // Play Pause
frame.SetRightBottom(kPlayButtonSize);
- if (fBottomControlHeight < kPlayPauseBitmapHeight - 1.0)
- fBottomControlHeight = kPlayPauseBitmapHeight - 1.0;
+ if (fBottomControlHeight < kPlayPauseBitmapHeight - 1.0)
+ fBottomControlHeight = kPlayPauseBitmapHeight - 1.0;
fPlayPause = new PlayPauseButton(frame, B_EMPTY_STRING,
kPlayButtonBitmapBits,
kPressedPlayButtonBitmapBits,
new BMessage(MSG_SKIP_FORWARD));
AddChild( fSkipForward );
- // Forward
- fForward = new TransportButton(frame, B_EMPTY_STRING,
- kForwardBitmapBits,
- kPressedForwardBitmapBits,
- kDisabledForwardBitmapBits,
- new BMessage(MSG_FORWARD));
-// AddChild( fForward );
-
- // Rewind
- fRewind = new TransportButton(frame, B_EMPTY_STRING,
- kRewindBitmapBits,
- kPressedRewindBitmapBits,
- kDisabledRewindBitmapBits,
- new BMessage(MSG_REWIND));
-// AddChild( fRewind );
+ // Forward
+ fForward = new TransportButton(frame, B_EMPTY_STRING,
+ kForwardBitmapBits,
+ kPressedForwardBitmapBits,
+ kDisabledForwardBitmapBits,
+ new BMessage(MSG_FORWARD));
+// AddChild( fForward );
+
+ // Rewind
+ fRewind = new TransportButton(frame, B_EMPTY_STRING,
+ kRewindBitmapBits,
+ kPressedRewindBitmapBits,
+ kDisabledRewindBitmapBits,
+ new BMessage(MSG_REWIND));
+// AddChild( fRewind );
// Stop
frame.SetRightBottom(kStopButtonSize);
- if (fBottomControlHeight < kStopBitmapHeight - 1.0)
- fBottomControlHeight = kStopBitmapHeight - 1.0;
+ if (fBottomControlHeight < kStopBitmapHeight - 1.0)
+ fBottomControlHeight = kStopBitmapHeight - 1.0;
fStop = new TransportButton(frame, B_EMPTY_STRING,
kStopButtonBitmapBits,
kPressedStopButtonBitmapBits,
kDisabledStopButtonBitmapBits,
new BMessage(STOP_PLAYBACK));
- AddChild( fStop );
+ AddChild( fStop );
- // Mute
+ // Mute
frame.SetRightBottom(kSpeakerButtonSize);
- if (fBottomControlHeight < kSpeakerIconBitmapHeight - 1.0)
- fBottomControlHeight = kSpeakerIconBitmapHeight - 1.0;
+ if (fBottomControlHeight < kSpeakerIconBitmapHeight - 1.0)
+ fBottomControlHeight = kSpeakerIconBitmapHeight - 1.0;
fMute = new TransportButton(frame, B_EMPTY_STRING,
kSpeakerIconBits,
kPressedSpeakerIconBits,
kSpeakerIconBits,
new BMessage(VOLUME_MUTE));
- AddChild( fMute );
+ AddChild( fMute );
// Volume Slider
- fVolumeSlider = new VolumeSlider(BRect(0.0, 0.0, VOLUME_MIN_WIDTH,
- kVolumeSliderBitmapHeight - 1.0),
- "volume slider", 1, AOUT_VOLUME_MAX,
- new BMessage(VOLUME_CHG));
- fVolumeSlider->SetValue( config_GetInt( p_intf, "volume" ) );
- AddChild( fVolumeSlider );
-
- // Position Info View
+ fVolumeSlider = new VolumeSlider(BRect(0.0, 0.0, VOLUME_MIN_WIDTH,
+ kVolumeSliderBitmapHeight - 1.0),
+ "volume slider", 1, AOUT_VOLUME_MAX,
+ new BMessage(VOLUME_CHG));
+ fVolumeSlider->SetValue( config_GetInt( p_intf, "volume" ) );
+ AddChild( fVolumeSlider );
+
+ // Position Info View
fPositionInfo = new PositionInfoView(BRect(0.0, 0.0, 10.0, 10.0), "led",
p_intf);
fPositionInfo->ResizeToPreferred();
void
MediaControlView::AttachedToWindow()
{
- // we are now a valid BHandler
- fRewind->SetTarget(this);
- fForward->SetTarget(this);
- fSkipBack->SetTarget(this);
- fSkipForward->SetTarget(this);
- fVolumeSlider->SetTarget(Window());
-
- BRect r(_MinFrame());
- if (BMenuBar* menuBar = Window()->KeyMenuBar()) {
- float width, height;
- menuBar->GetPreferredSize(&width, &height);
-// r.bottom += menuBar->Bounds().Height();
- r.bottom += height;
- // see that our calculated minimal width is not smaller than what
- // the menubar can be
- width -= r.Width();
- if (width > 0.0)
- r.right += width;
- }
-
- Window()->SetSizeLimits(r.Width(), r.Width() * 1.8, r.Height(), r.Height() * 1.3);
- if (!Window()->Bounds().Contains(r))
- Window()->ResizeTo(r.Width(), r.Height());
- else
- FrameResized(Bounds().Width(), Bounds().Height());
-
- // get pulse message every two frames
- Window()->SetPulseRate(80000);
+ // we are now a valid BHandler
+ fRewind->SetTarget(this);
+ fForward->SetTarget(this);
+ fSkipBack->SetTarget(this);
+ fSkipForward->SetTarget(this);
+ fVolumeSlider->SetTarget(Window());
+
+ BRect r(_MinFrame());
+ if (BMenuBar* menuBar = Window()->KeyMenuBar()) {
+ float width, height;
+ menuBar->GetPreferredSize(&width, &height);
+// r.bottom += menuBar->Bounds().Height();
+ r.bottom += height;
+ // see that our calculated minimal width is not smaller than what
+ // the menubar can be
+ width -= r.Width();
+ if (width > 0.0)
+ r.right += width;
+ }
+
+ Window()->SetSizeLimits(r.Width(), r.Width() * 1.8, r.Height(), r.Height() * 1.3);
+ if (!Window()->Bounds().Contains(r))
+ Window()->ResizeTo(r.Width(), r.Height());
+ else
+ FrameResized(Bounds().Width(), Bounds().Height());
+
+ // get pulse message every two frames
+ Window()->SetPulseRate(80000);
}
// FrameResized
void
MediaControlView::FrameResized(float width, float height)
{
- BRect r(Bounds());
- // make sure we don't leave dirty pixels
- // (B_FULL_UPDATE_ON_RESIZE == annoying flicker -> this is smarter)
- if (fOldBounds.Width() < r.Width())
- Invalidate(BRect(fOldBounds.right, fOldBounds.top + 1.0,
- fOldBounds.right, fOldBounds.bottom - 1.0));
- else
- Invalidate(BRect(r.right, r.top + 1.0,
- r.right, r.bottom - 1.0));
- if (fOldBounds.Height() < r.Height())
- Invalidate(BRect(fOldBounds.left + 1.0, fOldBounds.bottom,
- fOldBounds.right - 1.0, fOldBounds.bottom));
- else
- Invalidate(BRect(r.left + 1.0, r.bottom,
- r.right - 1.0, r.bottom));
- // remember for next time
- fOldBounds = r;
- // layout controls
- r.InsetBy(BORDER_INSET, BORDER_INSET);
- _LayoutControls(r);
+ BRect r(Bounds());
+ // make sure we don't leave dirty pixels
+ // (B_FULL_UPDATE_ON_RESIZE == annoying flicker -> this is smarter)
+ if (fOldBounds.Width() < r.Width())
+ Invalidate(BRect(fOldBounds.right, fOldBounds.top + 1.0,
+ fOldBounds.right, fOldBounds.bottom - 1.0));
+ else
+ Invalidate(BRect(r.right, r.top + 1.0,
+ r.right, r.bottom - 1.0));
+ if (fOldBounds.Height() < r.Height())
+ Invalidate(BRect(fOldBounds.left + 1.0, fOldBounds.bottom,
+ fOldBounds.right - 1.0, fOldBounds.bottom));
+ else
+ Invalidate(BRect(r.left + 1.0, r.bottom,
+ r.right - 1.0, r.bottom));
+ // remember for next time
+ fOldBounds = r;
+ // layout controls
+ r.InsetBy(BORDER_INSET, BORDER_INSET);
+ _LayoutControls(r);
}
// GetPreferredSize
void
MediaControlView::GetPreferredSize(float* width, float* height)
{
- if (width && height)
- {
- BRect r(_MinFrame());
- *width = r.Width();
- *height = r.Height();
- }
+ if (width && height)
+ {
+ BRect r(_MinFrame());
+ *width = r.Width();
+ *height = r.Height();
+ }
}
// MessageReceived
void
MediaControlView::MessageReceived(BMessage* message)
{
- switch (message->what)
- {
- case MSG_REWIND:
- break;
- case MSG_FORWARD:
- break;
- case MSG_SKIP_BACKWARDS:
- Window()->PostMessage(NAVIGATE_PREV);
- break;
- case MSG_SKIP_FORWARD:
- Window()->PostMessage(NAVIGATE_NEXT);
- break;
- default:
- BBox::MessageReceived(message);
- break;
- }
+ switch (message->what)
+ {
+ case MSG_REWIND:
+ break;
+ case MSG_FORWARD:
+ break;
+ case MSG_SKIP_BACKWARDS:
+ Window()->PostMessage(NAVIGATE_PREV);
+ break;
+ case MSG_SKIP_FORWARD:
+ Window()->PostMessage(NAVIGATE_NEXT);
+ break;
+ default:
+ BBox::MessageReceived(message);
+ break;
+ }
}
// Pulse
void
MediaControlView::Pulse()
{
- InterfaceWindow* window = dynamic_cast<InterfaceWindow*>(Window());
- if (window && window->IsStopped())
- fPlayPause->SetStopped();
+ InterfaceWindow* window = dynamic_cast<InterfaceWindow*>(Window());
+ if (window && window->IsStopped())
+ fPlayPause->SetStopped();
unsigned short i_volume;
aout_VolumeGet( p_intf, (audio_volume_t*)&i_volume );
void
MediaControlView::SetProgress( float position )
{
- fSeekSlider->SetPosition( position );
+ fSeekSlider->SetPosition( position );
}
// SetStatus
void
MediaControlView::SetStatus(int status, int rate)
{
- // we need to set the button status periodically
- // (even if it is the same) to get a blinking button
- fCurrentStatus = status;
+ // we need to set the button status periodically
+ // (even if it is the same) to get a blinking button
+ fCurrentStatus = status;
switch( status )
{
case PLAYING_S:
fPlayPause->SetStopped();
break;
}
- if (rate != fCurrentRate)
- {
- fCurrentRate = rate;
- if ( rate < INPUT_RATE_DEFAULT )
- {
- // TODO: ...
- }
- }
+ if (rate != fCurrentRate)
+ {
+ fCurrentRate = rate;
+ if ( rate < INPUT_RATE_DEFAULT )
+ {
+ // TODO: ...
+ }
+ }
}
// SetEnabled
/* do not redraw if it is not necessary */
return;
}
-
- if( LockLooper() )
- {
- fSkipBack->SetEnabled( enabled );
- fPlayPause->SetEnabled( enabled );
- fSkipForward->SetEnabled( enabled );
- fStop->SetEnabled( enabled );
- fMute->SetEnabled( enabled );
- fVolumeSlider->SetEnabled( enabled );
- fSeekSlider->SetEnabled( enabled );
- fRewind->SetEnabled( enabled );
- fForward->SetEnabled( enabled );
- UnlockLooper();
- fIsEnabled = enabled;
- }
+
+ if( LockLooper() )
+ {
+ fSkipBack->SetEnabled( enabled );
+ fPlayPause->SetEnabled( enabled );
+ fSkipForward->SetEnabled( enabled );
+ fStop->SetEnabled( enabled );
+ fMute->SetEnabled( enabled );
+ fVolumeSlider->SetEnabled( enabled );
+ fSeekSlider->SetEnabled( enabled );
+ fRewind->SetEnabled( enabled );
+ fForward->SetEnabled( enabled );
+ UnlockLooper();
+ fIsEnabled = enabled;
+ }
}
// SetAudioEnabled
void
MediaControlView::SetAudioEnabled(bool enabled)
{
- fMute->SetEnabled(enabled);
- fVolumeSlider->SetEnabled(enabled);
+ fMute->SetEnabled(enabled);
+ fVolumeSlider->SetEnabled(enabled);
}
// GetVolume
uint32
MediaControlView::GetVolume() const
{
- return fVolumeSlider->Value();
+ return fVolumeSlider->Value();
}
// SetSkippable
void
MediaControlView::SetSkippable(bool backward, bool forward)
{
- fSkipBack->SetEnabled(backward);
- fSkipForward->SetEnabled(forward);
+ fSkipBack->SetEnabled(backward);
+ fSkipForward->SetEnabled(forward);
}
// SetMuted
void
MediaControlView::SetMuted(bool mute)
{
- fVolumeSlider->SetMuted(mute);
+ fVolumeSlider->SetMuted(mute);
}
// _LayoutControls
void
MediaControlView::_LayoutControls(BRect frame) const
{
- // seek slider
- BRect r(frame);
- // calculate absolutly minimal width
- float minWidth = fSkipBack->Bounds().Width();
-// minWidth += fRewind->Bounds().Width();
- minWidth += fStop->Bounds().Width();
- minWidth += fPlayPause->Bounds().Width();
-// minWidth += fForward->Bounds().Width();
- minWidth += fSkipForward->Bounds().Width();
- minWidth += fMute->Bounds().Width();
- minWidth += VOLUME_MIN_WIDTH;
-
- // layout time slider and info view
+ // seek slider
+ BRect r(frame);
+ // calculate absolutly minimal width
+ float minWidth = fSkipBack->Bounds().Width();
+// minWidth += fRewind->Bounds().Width();
+ minWidth += fStop->Bounds().Width();
+ minWidth += fPlayPause->Bounds().Width();
+// minWidth += fForward->Bounds().Width();
+ minWidth += fSkipForward->Bounds().Width();
+ minWidth += fMute->Bounds().Width();
+ minWidth += VOLUME_MIN_WIDTH;
+
+ // layout time slider and info view
float width, height;
fPositionInfo->GetBigPreferredSize( &width, &height );
float ratio = width / height;
r.right = frame.right;
_LayoutControl(fSeekSlider, r, true);
}
- float currentWidth = frame.Width();
- float space = (currentWidth - minWidth) / 6.0;//8.0;
- // apply weighting
- space = MIN_SPACE + (space - MIN_SPACE) / VOLUME_SLIDER_LAYOUT_WEIGHT;
- // layout controls with "space" inbetween
- r.left = frame.left;
- r.top = r.bottom + MIN_SPACE + 1.0;
- r.bottom = frame.bottom;
- // skip back
- r.right = r.left + fSkipBack->Bounds().Width();
- _LayoutControl(fSkipBack, r);
- // rewind
-// r.left = r.right + space;
-// r.right = r.left + fRewind->Bounds().Width();
-// _LayoutControl(fRewind, r);
- // stop
- r.left = r.right + space;
- r.right = r.left + fStop->Bounds().Width();
- _LayoutControl(fStop, r);
- // play/pause
- r.left = r.right + space;
- r.right = r.left + fPlayPause->Bounds().Width();
- _LayoutControl(fPlayPause, r);
- // forward
-// r.left = r.right + space;
-// r.right = r.left + fForward->Bounds().Width();
-// _LayoutControl(fForward, r);
- // skip forward
- r.left = r.right + space;
- r.right = r.left + fSkipForward->Bounds().Width();
- _LayoutControl(fSkipForward, r);
- // speaker icon
- r.left = r.right + space + space;
- r.right = r.left + fMute->Bounds().Width();
- _LayoutControl(fMute, r);
- // volume slider
- r.left = r.right + SPEAKER_SLIDER_DIST; // keep speaker icon and volume slider attached
- r.right = frame.right;
- _LayoutControl(fVolumeSlider, r, true);
+ float currentWidth = frame.Width();
+ float space = (currentWidth - minWidth) / 6.0;//8.0;
+ // apply weighting
+ space = MIN_SPACE + (space - MIN_SPACE) / VOLUME_SLIDER_LAYOUT_WEIGHT;
+ // layout controls with "space" inbetween
+ r.left = frame.left;
+ r.top = r.bottom + MIN_SPACE + 1.0;
+ r.bottom = frame.bottom;
+ // skip back
+ r.right = r.left + fSkipBack->Bounds().Width();
+ _LayoutControl(fSkipBack, r);
+ // rewind
+// r.left = r.right + space;
+// r.right = r.left + fRewind->Bounds().Width();
+// _LayoutControl(fRewind, r);
+ // stop
+ r.left = r.right + space;
+ r.right = r.left + fStop->Bounds().Width();
+ _LayoutControl(fStop, r);
+ // play/pause
+ r.left = r.right + space;
+ r.right = r.left + fPlayPause->Bounds().Width();
+ _LayoutControl(fPlayPause, r);
+ // forward
+// r.left = r.right + space;
+// r.right = r.left + fForward->Bounds().Width();
+// _LayoutControl(fForward, r);
+ // skip forward
+ r.left = r.right + space;
+ r.right = r.left + fSkipForward->Bounds().Width();
+ _LayoutControl(fSkipForward, r);
+ // speaker icon
+ r.left = r.right + space + space;
+ r.right = r.left + fMute->Bounds().Width();
+ _LayoutControl(fMute, r);
+ // volume slider
+ r.left = r.right + SPEAKER_SLIDER_DIST; // keep speaker icon and volume slider attached
+ r.right = frame.right;
+ _LayoutControl(fVolumeSlider, r, true);
}
// _MinFrame
-BRect
+BRect
MediaControlView::_MinFrame() const
{
- // add up width of controls along bottom (seek slider will likely adopt)
- float minWidth = 2 * BORDER_INSET;
- minWidth += fSkipBack->Bounds().Width() + MIN_SPACE;
-// minWidth += fRewind->Bounds().Width() + MIN_SPACE;
- minWidth += fStop->Bounds().Width() + MIN_SPACE;
- minWidth += fPlayPause->Bounds().Width() + MIN_SPACE;
-// minWidth += fForward->Bounds().Width() + MIN_SPACE;
- minWidth += fSkipForward->Bounds().Width() + MIN_SPACE + MIN_SPACE;
- minWidth += fMute->Bounds().Width() + SPEAKER_SLIDER_DIST;
- minWidth += VOLUME_MIN_WIDTH;
-
- // add up height of seek slider and heighest control on bottom
- float minHeight = 2 * BORDER_INSET;
- minHeight += fSeekSlider->Bounds().Height() + MIN_SPACE + MIN_SPACE / 2.0;
- minHeight += fBottomControlHeight;
- return BRect(0.0, 0.0, minWidth - 1.0, minHeight - 1.0);
+ // add up width of controls along bottom (seek slider will likely adopt)
+ float minWidth = 2 * BORDER_INSET;
+ minWidth += fSkipBack->Bounds().Width() + MIN_SPACE;
+// minWidth += fRewind->Bounds().Width() + MIN_SPACE;
+ minWidth += fStop->Bounds().Width() + MIN_SPACE;
+ minWidth += fPlayPause->Bounds().Width() + MIN_SPACE;
+// minWidth += fForward->Bounds().Width() + MIN_SPACE;
+ minWidth += fSkipForward->Bounds().Width() + MIN_SPACE + MIN_SPACE;
+ minWidth += fMute->Bounds().Width() + SPEAKER_SLIDER_DIST;
+ minWidth += VOLUME_MIN_WIDTH;
+
+ // add up height of seek slider and heighest control on bottom
+ float minHeight = 2 * BORDER_INSET;
+ minHeight += fSeekSlider->Bounds().Height() + MIN_SPACE + MIN_SPACE / 2.0;
+ minHeight += fBottomControlHeight;
+ return BRect(0.0, 0.0, minWidth - 1.0, minHeight - 1.0);
}
// _LayoutControl
bool resizeWidth, bool resizeHeight) const
{
if (!resizeHeight)
- // center vertically
- frame.top = (frame.top + frame.bottom) / 2.0 - view->Bounds().Height() / 2.0;
- if (!resizeWidth)
- //center horizontally
- frame.left = (frame.left + frame.right) / 2.0 - view->Bounds().Width() / 2.0;
- view->MoveTo(frame.LeftTop());
- float width = resizeWidth ? frame.Width() : view->Bounds().Width();
- float height = resizeHeight ? frame.Height() : view->Bounds().Height();
+ // center vertically
+ frame.top = (frame.top + frame.bottom) / 2.0 - view->Bounds().Height() / 2.0;
+ if (!resizeWidth)
+ //center horizontally
+ frame.left = (frame.left + frame.right) / 2.0 - view->Bounds().Width() / 2.0;
+ view->MoveTo(frame.LeftTop());
+ float width = resizeWidth ? frame.Width() : view->Bounds().Width();
+ float height = resizeHeight ? frame.Height() : view->Bounds().Height();
if (resizeWidth || resizeHeight)
view->ResizeTo(width, height);
}
*****************************************************************************/
SeekSlider::SeekSlider( intf_thread_t * _p_intf,
BRect frame, const char* name, MediaControlView *owner )
- : BControl(frame, name, NULL, NULL, B_FOLLOW_NONE,
- B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
- p_intf(_p_intf),
- fOwner(owner),
- fTracking(false)
+ : BControl(frame, name, NULL, NULL, B_FOLLOW_NONE,
+ B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
+ p_intf(_p_intf),
+ fOwner(owner),
+ fTracking(false)
{
- BFont font(be_plain_font);
- font.SetSize(9.0);
- SetFont(&font);
+ BFont font(be_plain_font);
+ font.SetSize(9.0);
+ SetFont(&font);
}
SeekSlider::~SeekSlider()
void
SeekSlider::AttachedToWindow()
{
- BControl::AttachedToWindow();
- SetViewColor(B_TRANSPARENT_32_BIT);
+ BControl::AttachedToWindow();
+ SetViewColor(B_TRANSPARENT_32_BIT);
}
/*****************************************************************************
void
SeekSlider::Draw(BRect updateRect)
{
- BRect r(Bounds());
- float knobWidth2 = SEEK_SLIDER_KNOB_WIDTH / 2.0;
- float sliderStart = (r.left + knobWidth2);
- float sliderEnd = (r.right - knobWidth2);
- float knobPos = sliderStart
- + floorf((sliderEnd - sliderStart - 1.0) * Value()
- / SEEKSLIDER_RANGE);
- // draw both sides (the original from Be doesn't seem
- // to make a difference for enabled/disabled state)
-// DrawBitmapAsync(fLeftSideBits, r.LeftTop());
-// DrawBitmapAsync(fRightSideBits, BPoint(sliderEnd + 1.0, r.top));
- // colors for the slider area between the two bitmaps
- rgb_color background = kBackground;//ui_color(B_PANEL_BACKGROUND_COLOR);
- rgb_color shadow = tint_color(background, B_DARKEN_2_TINT);
- rgb_color softShadow = tint_color(background, B_DARKEN_1_TINT);
- rgb_color darkShadow = tint_color(background, B_DARKEN_4_TINT);
- rgb_color midShadow = tint_color(background, B_DARKEN_3_TINT);
- rgb_color light = tint_color(background, B_LIGHTEN_MAX_TINT);
- rgb_color softLight = tint_color(background, B_LIGHTEN_1_TINT);
- rgb_color green = kSeekGreen;
- rgb_color greenShadow = kSeekGreenShadow;
- rgb_color black = kBlack;
- rgb_color dotGrey = midShadow;
- rgb_color dotGreen = greenShadow;
- // draw frame
- _StrokeFrame(r, softShadow, softShadow, softLight, softLight);
- r.InsetBy(1.0, 1.0);
- _StrokeFrame(r, black, black, light, light);
- if (IsEnabled())
- {
- r.InsetBy(1.0, 1.0);
- // inner shadow
- _StrokeFrame(r, greenShadow, greenShadow, green, green);
- r.top++;
- r.left++;
- _StrokeFrame(r, greenShadow, greenShadow, green, green);
- // inside area
- r.InsetBy(1.0, 1.0);
- SetHighColor(green);
- FillRect(r);
- // dots
- int32 dotCount = (int32)(r.Width() / 6.0);
- BPoint dotPos;
- dotPos.y = r.top + 2.0;
- SetHighColor(dotGreen);
- for (int32 i = 0; i < dotCount; i++)
- {
- dotPos.x = sliderStart + i * 6.0 + 5.0;
- StrokeLine(dotPos, BPoint(dotPos.x, dotPos.y + 6.0));
- }
- // slider handle
- r.top -= 4.0;
- r.bottom += 3.0;
- r.left = knobPos - knobWidth2;
- r.right = knobPos + knobWidth2;
- // black outline
- float handleBottomSize = 2.0;
- float handleArrowSize = 6.0;
- BeginLineArray(10);
- // upper handle
- AddLine(BPoint(r.left, r.top + handleBottomSize),
- BPoint(r.left, r.top), black);
- AddLine(BPoint(r.left + 1.0, r.top),
- BPoint(r.right, r.top), black);
- AddLine(BPoint(r.right, r.top + 1.0),
- BPoint(r.right, r.top + handleBottomSize), black);
- AddLine(BPoint(r.right - 1.0, r.top + handleBottomSize + 1.0),
- BPoint(knobPos, r.top + handleArrowSize), black);
- AddLine(BPoint(knobPos - 1.0, r.top + handleArrowSize - 1.0),
- BPoint(r.left + 1.0, r.top + handleBottomSize + 1.0), black);
- // lower handle
- AddLine(BPoint(r.left, r.bottom),
- BPoint(r.left, r.bottom - handleBottomSize), black);
- AddLine(BPoint(r.left + 1.0, r.bottom - handleBottomSize - 1.0),
- BPoint(knobPos, r.bottom - handleArrowSize), black);
- AddLine(BPoint(knobPos + 1.0, r.bottom - handleArrowSize + 1.0),
- BPoint(r.right, r.bottom - handleBottomSize), black);
- AddLine(BPoint(r.right, r.bottom - handleBottomSize + 1.0),
- BPoint(r.right, r.bottom), black);
- AddLine(BPoint(r.right - 1.0, r.bottom),
- BPoint(r.left + 1.0, r.bottom), black);
- EndLineArray();
- // inner red light and shadow lines
- r.InsetBy(1.0, 1.0);
- handleBottomSize--;
- handleArrowSize -= 2.0;
- BeginLineArray(10);
- // upper handle
- AddLine(BPoint(r.left, r.top + handleBottomSize),
- BPoint(r.left, r.top), kSeekRedLight);
- AddLine(BPoint(r.left + 1.0, r.top),
- BPoint(r.right, r.top), kSeekRedLight);
- AddLine(BPoint(r.right, r.top + 1.0),
- BPoint(r.right, r.top + handleBottomSize), kSeekRedShadow);
- AddLine(BPoint(r.right - 1.0, r.top + handleBottomSize + 1.0),
- BPoint(knobPos, r.top + handleArrowSize), kSeekRedShadow);
- AddLine(BPoint(knobPos - 1.0, r.top + handleArrowSize - 1.0),
- BPoint(r.left + 1.0, r.top + handleBottomSize + 1.0), kSeekRedLight);
- // lower handle
- AddLine(BPoint(r.left, r.bottom),
- BPoint(r.left, r.bottom - handleBottomSize), kSeekRedLight);
- AddLine(BPoint(r.left + 1.0, r.bottom - handleBottomSize - 1.0),
- BPoint(knobPos, r.bottom - handleArrowSize), kSeekRedLight);
- AddLine(BPoint(knobPos + 1.0, r.bottom - handleArrowSize + 1.0),
- BPoint(r.right, r.bottom - handleBottomSize), kSeekRedShadow);
- AddLine(BPoint(r.right, r.bottom - handleBottomSize + 1.0),
- BPoint(r.right, r.bottom), kSeekRedShadow);
- AddLine(BPoint(r.right - 1.0, r.bottom),
- BPoint(r.left + 1.0, r.bottom), kSeekRedShadow);
- EndLineArray();
- // fill rest of handles with red
- SetHighColor(kSeekRed);
- r.InsetBy(1.0, 1.0);
- handleArrowSize -= 2.0;
- BPoint arrow[3];
- // upper handle arrow
- arrow[0].x = r.left;
- arrow[0].y = r.top;
- arrow[1].x = r.right;
- arrow[1].y = r.top;
- arrow[2].x = knobPos;
- arrow[2].y = r.top + handleArrowSize;
- FillPolygon(arrow, 3);
- // lower handle arrow
- arrow[0].x = r.left;
- arrow[0].y = r.bottom;
- arrow[1].x = r.right;
- arrow[1].y = r.bottom;
- arrow[2].x = knobPos;
- arrow[2].y = r.bottom - handleArrowSize;
- FillPolygon(arrow, 3);
- }
- else
- {
- r.InsetBy(1.0, 1.0);
- _StrokeFrame(r, darkShadow, darkShadow, darkShadow, darkShadow);
- r.InsetBy(1.0, 1.0);
- _StrokeFrame(r, darkShadow, darkShadow, darkShadow, darkShadow);
- r.InsetBy(1.0, 1.0);
- SetHighColor(darkShadow);
- SetLowColor(shadow);
- // stripes
- float width = floorf(StringWidth(DISABLED_SEEK_MESSAGE));
- float textPos = r.left + r.Width() / 2.0 - width / 2.0;
- pattern stripes = {{ 0xc7, 0x8f, 0x1f, 0x3e, 0x7c, 0xf8, 0xf1, 0xe3 }};
- BRect stripesRect(r);
- stripesRect.right = textPos - 5.0;
- FillRect(stripesRect, stripes);
- stripesRect.left = textPos + width + 3.0;
- stripesRect.right = r.right;
- FillRect(stripesRect, stripes);
- // info text
- r.left = textPos - 4.0;
- r.right = textPos + width + 2.0;
- FillRect(r);
- SetHighColor(shadow);
- SetLowColor(darkShadow);
- font_height fh;
- GetFontHeight(&fh);
- DrawString(DISABLED_SEEK_MESSAGE, BPoint(textPos, r.top + ceilf(fh.ascent) - 1.0));
- }
+ BRect r(Bounds());
+ float knobWidth2 = SEEK_SLIDER_KNOB_WIDTH / 2.0;
+ float sliderStart = (r.left + knobWidth2);
+ float sliderEnd = (r.right - knobWidth2);
+ float knobPos = sliderStart
+ + floorf((sliderEnd - sliderStart - 1.0) * Value()
+ / SEEKSLIDER_RANGE);
+ // draw both sides (the original from Be doesn't seem
+ // to make a difference for enabled/disabled state)
+// DrawBitmapAsync(fLeftSideBits, r.LeftTop());
+// DrawBitmapAsync(fRightSideBits, BPoint(sliderEnd + 1.0, r.top));
+ // colors for the slider area between the two bitmaps
+ rgb_color background = kBackground;//ui_color(B_PANEL_BACKGROUND_COLOR);
+ rgb_color shadow = tint_color(background, B_DARKEN_2_TINT);
+ rgb_color softShadow = tint_color(background, B_DARKEN_1_TINT);
+ rgb_color darkShadow = tint_color(background, B_DARKEN_4_TINT);
+ rgb_color midShadow = tint_color(background, B_DARKEN_3_TINT);
+ rgb_color light = tint_color(background, B_LIGHTEN_MAX_TINT);
+ rgb_color softLight = tint_color(background, B_LIGHTEN_1_TINT);
+ rgb_color green = kSeekGreen;
+ rgb_color greenShadow = kSeekGreenShadow;
+ rgb_color black = kBlack;
+ rgb_color dotGrey = midShadow;
+ rgb_color dotGreen = greenShadow;
+ // draw frame
+ _StrokeFrame(r, softShadow, softShadow, softLight, softLight);
+ r.InsetBy(1.0, 1.0);
+ _StrokeFrame(r, black, black, light, light);
+ if (IsEnabled())
+ {
+ r.InsetBy(1.0, 1.0);
+ // inner shadow
+ _StrokeFrame(r, greenShadow, greenShadow, green, green);
+ r.top++;
+ r.left++;
+ _StrokeFrame(r, greenShadow, greenShadow, green, green);
+ // inside area
+ r.InsetBy(1.0, 1.0);
+ SetHighColor(green);
+ FillRect(r);
+ // dots
+ int32 dotCount = (int32)(r.Width() / 6.0);
+ BPoint dotPos;
+ dotPos.y = r.top + 2.0;
+ SetHighColor(dotGreen);
+ for (int32 i = 0; i < dotCount; i++)
+ {
+ dotPos.x = sliderStart + i * 6.0 + 5.0;
+ StrokeLine(dotPos, BPoint(dotPos.x, dotPos.y + 6.0));
+ }
+ // slider handle
+ r.top -= 4.0;
+ r.bottom += 3.0;
+ r.left = knobPos - knobWidth2;
+ r.right = knobPos + knobWidth2;
+ // black outline
+ float handleBottomSize = 2.0;
+ float handleArrowSize = 6.0;
+ BeginLineArray(10);
+ // upper handle
+ AddLine(BPoint(r.left, r.top + handleBottomSize),
+ BPoint(r.left, r.top), black);
+ AddLine(BPoint(r.left + 1.0, r.top),
+ BPoint(r.right, r.top), black);
+ AddLine(BPoint(r.right, r.top + 1.0),
+ BPoint(r.right, r.top + handleBottomSize), black);
+ AddLine(BPoint(r.right - 1.0, r.top + handleBottomSize + 1.0),
+ BPoint(knobPos, r.top + handleArrowSize), black);
+ AddLine(BPoint(knobPos - 1.0, r.top + handleArrowSize - 1.0),
+ BPoint(r.left + 1.0, r.top + handleBottomSize + 1.0), black);
+ // lower handle
+ AddLine(BPoint(r.left, r.bottom),
+ BPoint(r.left, r.bottom - handleBottomSize), black);
+ AddLine(BPoint(r.left + 1.0, r.bottom - handleBottomSize - 1.0),
+ BPoint(knobPos, r.bottom - handleArrowSize), black);
+ AddLine(BPoint(knobPos + 1.0, r.bottom - handleArrowSize + 1.0),
+ BPoint(r.right, r.bottom - handleBottomSize), black);
+ AddLine(BPoint(r.right, r.bottom - handleBottomSize + 1.0),
+ BPoint(r.right, r.bottom), black);
+ AddLine(BPoint(r.right - 1.0, r.bottom),
+ BPoint(r.left + 1.0, r.bottom), black);
+ EndLineArray();
+ // inner red light and shadow lines
+ r.InsetBy(1.0, 1.0);
+ handleBottomSize--;
+ handleArrowSize -= 2.0;
+ BeginLineArray(10);
+ // upper handle
+ AddLine(BPoint(r.left, r.top + handleBottomSize),
+ BPoint(r.left, r.top), kSeekRedLight);
+ AddLine(BPoint(r.left + 1.0, r.top),
+ BPoint(r.right, r.top), kSeekRedLight);
+ AddLine(BPoint(r.right, r.top + 1.0),
+ BPoint(r.right, r.top + handleBottomSize), kSeekRedShadow);
+ AddLine(BPoint(r.right - 1.0, r.top + handleBottomSize + 1.0),
+ BPoint(knobPos, r.top + handleArrowSize), kSeekRedShadow);
+ AddLine(BPoint(knobPos - 1.0, r.top + handleArrowSize - 1.0),
+ BPoint(r.left + 1.0, r.top + handleBottomSize + 1.0), kSeekRedLight);
+ // lower handle
+ AddLine(BPoint(r.left, r.bottom),
+ BPoint(r.left, r.bottom - handleBottomSize), kSeekRedLight);
+ AddLine(BPoint(r.left + 1.0, r.bottom - handleBottomSize - 1.0),
+ BPoint(knobPos, r.bottom - handleArrowSize), kSeekRedLight);
+ AddLine(BPoint(knobPos + 1.0, r.bottom - handleArrowSize + 1.0),
+ BPoint(r.right, r.bottom - handleBottomSize), kSeekRedShadow);
+ AddLine(BPoint(r.right, r.bottom - handleBottomSize + 1.0),
+ BPoint(r.right, r.bottom), kSeekRedShadow);
+ AddLine(BPoint(r.right - 1.0, r.bottom),
+ BPoint(r.left + 1.0, r.bottom), kSeekRedShadow);
+ EndLineArray();
+ // fill rest of handles with red
+ SetHighColor(kSeekRed);
+ r.InsetBy(1.0, 1.0);
+ handleArrowSize -= 2.0;
+ BPoint arrow[3];
+ // upper handle arrow
+ arrow[0].x = r.left;
+ arrow[0].y = r.top;
+ arrow[1].x = r.right;
+ arrow[1].y = r.top;
+ arrow[2].x = knobPos;
+ arrow[2].y = r.top + handleArrowSize;
+ FillPolygon(arrow, 3);
+ // lower handle arrow
+ arrow[0].x = r.left;
+ arrow[0].y = r.bottom;
+ arrow[1].x = r.right;
+ arrow[1].y = r.bottom;
+ arrow[2].x = knobPos;
+ arrow[2].y = r.bottom - handleArrowSize;
+ FillPolygon(arrow, 3);
+ }
+ else
+ {
+ r.InsetBy(1.0, 1.0);
+ _StrokeFrame(r, darkShadow, darkShadow, darkShadow, darkShadow);
+ r.InsetBy(1.0, 1.0);
+ _StrokeFrame(r, darkShadow, darkShadow, darkShadow, darkShadow);
+ r.InsetBy(1.0, 1.0);
+ SetHighColor(darkShadow);
+ SetLowColor(shadow);
+ // stripes
+ float width = floorf(StringWidth(DISABLED_SEEK_MESSAGE));
+ float textPos = r.left + r.Width() / 2.0 - width / 2.0;
+ pattern stripes = {{ 0xc7, 0x8f, 0x1f, 0x3e, 0x7c, 0xf8, 0xf1, 0xe3 }};
+ BRect stripesRect(r);
+ stripesRect.right = textPos - 5.0;
+ FillRect(stripesRect, stripes);
+ stripesRect.left = textPos + width + 3.0;
+ stripesRect.right = r.right;
+ FillRect(stripesRect, stripes);
+ // info text
+ r.left = textPos - 4.0;
+ r.right = textPos + width + 2.0;
+ FillRect(r);
+ SetHighColor(shadow);
+ SetLowColor(darkShadow);
+ font_height fh;
+ GetFontHeight(&fh);
+ DrawString(DISABLED_SEEK_MESSAGE, BPoint(textPos, r.top + ceilf(fh.ascent) - 1.0));
+ }
}
/*****************************************************************************
void
SeekSlider::MouseDown(BPoint where)
{
- if (IsEnabled() && Bounds().Contains(where))
- {
- SetValue(_ValueFor(where.x));
- fTracking = true;
- SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
- }
+ if (IsEnabled() && Bounds().Contains(where))
+ {
+ SetValue(_ValueFor(where.x));
+ fTracking = true;
+ SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
+ }
}
/*****************************************************************************
void
SeekSlider::MouseMoved(BPoint where, uint32 code, const BMessage* dragMessage)
{
- if (fTracking)
- {
- SetValue(_ValueFor(where.x));
- }
+ if (fTracking)
+ {
+ SetValue(_ValueFor(where.x));
+ }
}
/*****************************************************************************
void
SeekSlider::MouseUp(BPoint where)
{
- if (fTracking)
- {
- fTracking = false;
- input_thread_t * p_input;
- p_input = (input_thread_t *)
+ if (fTracking)
+ {
+ fTracking = false;
+ input_thread_t * p_input;
+ p_input = (input_thread_t *)
vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE );
if( p_input )
{
- var_SetFloat( p_input, "position",
- (float) Value() / SEEKSLIDER_RANGE );
- vlc_object_release( p_input );
- }
- }
+ var_SetFloat( p_input, "position",
+ (float) Value() / SEEKSLIDER_RANGE );
+ vlc_object_release( p_input );
+ }
+ }
}
/*****************************************************************************
void
SeekSlider::ResizeToPreferred()
{
- float width = 15.0 + StringWidth(DISABLED_SEEK_MESSAGE) + 15.0;
- ResizeTo(width, 17.0);
+ float width = 15.0 + StringWidth(DISABLED_SEEK_MESSAGE) + 15.0;
+ ResizeTo(width, 17.0);
}
/*****************************************************************************
void
SeekSlider::SetPosition(float position)
{
- if ( LockLooper() )
- {
- if( !fTracking )
- {
- SetValue( SEEKSLIDER_RANGE * position );
- }
- UnlockLooper();
- }
+ if ( LockLooper() )
+ {
+ if( !fTracking )
+ {
+ SetValue( SEEKSLIDER_RANGE * position );
+ }
+ UnlockLooper();
+ }
}
/*****************************************************************************
int32
SeekSlider::_ValueFor(float xPos) const
{
- BRect r(Bounds());
- float knobWidth2 = SEEK_SLIDER_KNOB_WIDTH / 2.0;
- float sliderStart = (r.left + knobWidth2);
- float sliderEnd = (r.right - knobWidth2);
- int32 value = (int32)(((xPos - sliderStart) * SEEKSLIDER_RANGE)
- / (sliderEnd - sliderStart - 1.0));
- if (value < 0)
- value = 0;
- if (value > SEEKSLIDER_RANGE)
- value = SEEKSLIDER_RANGE;
- return value;
+ BRect r(Bounds());
+ float knobWidth2 = SEEK_SLIDER_KNOB_WIDTH / 2.0;
+ float sliderStart = (r.left + knobWidth2);
+ float sliderEnd = (r.right - knobWidth2);
+ int32 value = (int32)(((xPos - sliderStart) * SEEKSLIDER_RANGE)
+ / (sliderEnd - sliderStart - 1.0));
+ if (value < 0)
+ value = 0;
+ if (value > SEEKSLIDER_RANGE)
+ value = SEEKSLIDER_RANGE;
+ return value;
}
/*****************************************************************************
*****************************************************************************/
void
SeekSlider::_StrokeFrame(BRect r, rgb_color left, rgb_color top,
- rgb_color right, rgb_color bottom)
+ rgb_color right, rgb_color bottom)
{
- BeginLineArray(4);
- AddLine(BPoint(r.left, r.bottom), BPoint(r.left, r.top), left);
- AddLine(BPoint(r.left + 1.0, r.top), BPoint(r.right, r.top), top);
- AddLine(BPoint(r.right, r.top + 1.0), BPoint(r.right, r.bottom), right);
- AddLine(BPoint(r.right - 1.0, r.bottom), BPoint(r.left + 1.0, r.bottom), bottom);
- EndLineArray();
+ BeginLineArray(4);
+ AddLine(BPoint(r.left, r.bottom), BPoint(r.left, r.top), left);
+ AddLine(BPoint(r.left + 1.0, r.top), BPoint(r.right, r.top), top);
+ AddLine(BPoint(r.right, r.top + 1.0), BPoint(r.right, r.bottom), right);
+ AddLine(BPoint(r.right - 1.0, r.bottom), BPoint(r.left + 1.0, r.bottom), bottom);
+ EndLineArray();
}
/*****************************************************************************
* VolumeSlider
*****************************************************************************/
VolumeSlider::VolumeSlider(BRect frame, const char* name, int32 minValue, int32 maxValue,
- BMessage* message, BHandler* target)
- : BControl(frame, name, NULL, message, B_FOLLOW_NONE,
- B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
- fLeftSideBits(NULL),
- fRightSideBits(NULL),
- fKnobBits(NULL),
- fTracking(false),
- fMuted(false),
- fMinValue(minValue),
- fMaxValue(maxValue)
+ BMessage* message, BHandler* target)
+ : BControl(frame, name, NULL, message, B_FOLLOW_NONE,
+ B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
+ fLeftSideBits(NULL),
+ fRightSideBits(NULL),
+ fKnobBits(NULL),
+ fTracking(false),
+ fMuted(false),
+ fMinValue(minValue),
+ fMaxValue(maxValue)
{
- SetTarget(target);
+ SetTarget(target);
- // create bitmaps
- BRect r(BPoint(0.0, 0.0), kVolumeSliderBitmapSize);
- fLeftSideBits = new BBitmap(r, B_CMAP8);
- fRightSideBits = new BBitmap(r, B_CMAP8);
- r.Set(0.0, 0.0, kVolumeSliderKnobBitmapSize.x, kVolumeSliderKnobBitmapSize.y);
- fKnobBits = new BBitmap(r, B_CMAP8);
+ // create bitmaps
+ BRect r(BPoint(0.0, 0.0), kVolumeSliderBitmapSize);
+ fLeftSideBits = new BBitmap(r, B_CMAP8);
+ fRightSideBits = new BBitmap(r, B_CMAP8);
+ r.Set(0.0, 0.0, kVolumeSliderKnobBitmapSize.x, kVolumeSliderKnobBitmapSize.y);
+ fKnobBits = new BBitmap(r, B_CMAP8);
- _MakeBitmaps();
+ _MakeBitmaps();
}
/*****************************************************************************
*****************************************************************************/
VolumeSlider::~VolumeSlider()
{
- delete fLeftSideBits;
- delete fRightSideBits;
- delete fKnobBits;
+ delete fLeftSideBits;
+ delete fRightSideBits;
+ delete fKnobBits;
}
/*****************************************************************************
void
VolumeSlider::AttachedToWindow()
{
- BControl::AttachedToWindow();
- SetViewColor(B_TRANSPARENT_32_BIT);
+ BControl::AttachedToWindow();
+ SetViewColor(B_TRANSPARENT_32_BIT);
}
/*****************************************************************************
void
VolumeSlider::SetValue(int32 value)
{
- if (value != Value())
- {
- BControl::SetValue(value);
- Invoke();
- }
+ if (value != Value())
+ {
+ BControl::SetValue(value);
+ Invoke();
+ }
}
/*****************************************************************************
void
VolumeSlider::SetEnabled(bool enable)
{
- if (enable != IsEnabled())
- {
- BControl::SetEnabled(enable);
- _MakeBitmaps();
- Invalidate();
- }
+ if (enable != IsEnabled())
+ {
+ BControl::SetEnabled(enable);
+ _MakeBitmaps();
+ Invalidate();
+ }
}
/*****************************************************************************
void
VolumeSlider::Draw(BRect updateRect)
{
- if (IsValid())
- {
- BRect r(Bounds());
- float sliderSideWidth = kVolumeSliderBitmapWidth;
- float sliderStart = (r.left + sliderSideWidth);
- float sliderEnd = (r.right - sliderSideWidth);
- float knobPos = sliderStart
- + (sliderEnd - sliderStart - 1.0) * (Value() - fMinValue)
- / (fMaxValue - fMinValue);
- // draw both sides (the original from Be doesn't seem
- // to make a difference for enabled/disabled state)
- DrawBitmapAsync(fLeftSideBits, r.LeftTop());
- DrawBitmapAsync(fRightSideBits, BPoint(sliderEnd + 1.0, r.top));
- // colors for the slider area between the two bitmaps
- rgb_color background = kBackground;//ui_color(B_PANEL_BACKGROUND_COLOR);
- rgb_color shadow = tint_color(background, B_DARKEN_2_TINT);
- rgb_color softShadow = tint_color(background, B_DARKEN_1_TINT);
- rgb_color darkShadow = tint_color(background, B_DARKEN_4_TINT);
- rgb_color midShadow = tint_color(background, B_DARKEN_3_TINT);
- rgb_color light = tint_color(background, B_LIGHTEN_MAX_TINT);
- rgb_color softLight = tint_color(background, B_LIGHTEN_1_TINT);
- rgb_color green = kGreen;
- rgb_color greenShadow = kGreenShadow;
- rgb_color black = kBlack;
- rgb_color dotGrey = midShadow;
- rgb_color dotGreen = greenShadow;
- // make dimmed version of colors if we're disabled
- if (!IsEnabled())
- {
- shadow = (rgb_color){ 200, 200, 200, 255 };
- softShadow = dimmed_color_cmap8(softShadow, background, DIM_LEVEL);
- darkShadow = dimmed_color_cmap8(darkShadow, background, DIM_LEVEL);
- midShadow = shadow;
- light = dimmed_color_cmap8(light, background, DIM_LEVEL);
- softLight = dimmed_color_cmap8(softLight, background, DIM_LEVEL);
- green = dimmed_color_cmap8(green, background, DIM_LEVEL);
- greenShadow = dimmed_color_cmap8(greenShadow, background, DIM_LEVEL);
- black = dimmed_color_cmap8(black, background, DIM_LEVEL);
- dotGreen = dotGrey;
- }
- else if (fMuted)
- {
- green = tint_color(kBackground, B_DARKEN_3_TINT);
- greenShadow = tint_color(kBackground, B_DARKEN_4_TINT);
- dotGreen = greenShadow;
- }
- // draw slider edges between bitmaps
- BeginLineArray(7);
- AddLine(BPoint(sliderStart, r.top),
- BPoint(sliderEnd, r.top), softShadow);
- AddLine(BPoint(sliderStart, r.bottom),
- BPoint(sliderEnd, r.bottom), softLight);
- r.InsetBy(0.0, 1.0);
- AddLine(BPoint(sliderStart, r.top),
- BPoint(sliderEnd, r.top), black);
- AddLine(BPoint(sliderStart, r.bottom),
- BPoint(sliderEnd, r.bottom), light);
- r.top++;
- AddLine(BPoint(sliderStart, r.top),
- BPoint(knobPos, r.top), greenShadow);
- AddLine(BPoint(knobPos, r.top),
- BPoint(sliderEnd, r.top), midShadow);
- r.top++;
- AddLine(BPoint(sliderStart, r.top),
- BPoint(knobPos, r.top), greenShadow);
- EndLineArray();
- // fill rest inside of slider
- r.InsetBy(0.0, 1.0);
- r.left = sliderStart;
- r.right = knobPos;
- SetHighColor(green);
- FillRect(r, B_SOLID_HIGH);
- r.left = knobPos + 1.0;
- r.right = sliderEnd;
- r.top -= 1.0;
- SetHighColor(shadow);
- FillRect(r, B_SOLID_HIGH);
- // draw little dots inside
- int32 dotCount = (int32)((sliderEnd - sliderStart) / 5.0);
- BPoint dotPos;
- dotPos.y = r.top + 4.0;
- for (int32 i = 0; i < dotCount; i++)
- {
- dotPos.x = sliderStart + i * 5.0 + 4.0;
- SetHighColor(dotPos.x < knobPos ? dotGreen : dotGrey);
- StrokeLine(dotPos, BPoint(dotPos.x, dotPos.y + 1.0));
- }
- // draw knob
- r.top -= 1.0;
- SetDrawingMode(B_OP_OVER); // part of knob is transparent
- DrawBitmapAsync(fKnobBits, BPoint(knobPos - kVolumeSliderKnobWidth / 2, r.top));
- }
+ if (IsValid())
+ {
+ BRect r(Bounds());
+ float sliderSideWidth = kVolumeSliderBitmapWidth;
+ float sliderStart = (r.left + sliderSideWidth);
+ float sliderEnd = (r.right - sliderSideWidth);
+ float knobPos = sliderStart
+ + (sliderEnd - sliderStart - 1.0) * (Value() - fMinValue)
+ / (fMaxValue - fMinValue);
+ // draw both sides (the original from Be doesn't seem
+ // to make a difference for enabled/disabled state)
+ DrawBitmapAsync(fLeftSideBits, r.LeftTop());
+ DrawBitmapAsync(fRightSideBits, BPoint(sliderEnd + 1.0, r.top));
+ // colors for the slider area between the two bitmaps
+ rgb_color background = kBackground;//ui_color(B_PANEL_BACKGROUND_COLOR);
+ rgb_color shadow = tint_color(background, B_DARKEN_2_TINT);
+ rgb_color softShadow = tint_color(background, B_DARKEN_1_TINT);
+ rgb_color darkShadow = tint_color(background, B_DARKEN_4_TINT);
+ rgb_color midShadow = tint_color(background, B_DARKEN_3_TINT);
+ rgb_color light = tint_color(background, B_LIGHTEN_MAX_TINT);
+ rgb_color softLight = tint_color(background, B_LIGHTEN_1_TINT);
+ rgb_color green = kGreen;
+ rgb_color greenShadow = kGreenShadow;
+ rgb_color black = kBlack;
+ rgb_color dotGrey = midShadow;
+ rgb_color dotGreen = greenShadow;
+ // make dimmed version of colors if we're disabled
+ if (!IsEnabled())
+ {
+ shadow = (rgb_color){ 200, 200, 200, 255 };
+ softShadow = dimmed_color_cmap8(softShadow, background, DIM_LEVEL);
+ darkShadow = dimmed_color_cmap8(darkShadow, background, DIM_LEVEL);
+ midShadow = shadow;
+ light = dimmed_color_cmap8(light, background, DIM_LEVEL);
+ softLight = dimmed_color_cmap8(softLight, background, DIM_LEVEL);
+ green = dimmed_color_cmap8(green, background, DIM_LEVEL);
+ greenShadow = dimmed_color_cmap8(greenShadow, background, DIM_LEVEL);
+ black = dimmed_color_cmap8(black, background, DIM_LEVEL);
+ dotGreen = dotGrey;
+ }
+ else if (fMuted)
+ {
+ green = tint_color(kBackground, B_DARKEN_3_TINT);
+ greenShadow = tint_color(kBackground, B_DARKEN_4_TINT);
+ dotGreen = greenShadow;
+ }
+ // draw slider edges between bitmaps
+ BeginLineArray(7);
+ AddLine(BPoint(sliderStart, r.top),
+ BPoint(sliderEnd, r.top), softShadow);
+ AddLine(BPoint(sliderStart, r.bottom),
+ BPoint(sliderEnd, r.bottom), softLight);
+ r.InsetBy(0.0, 1.0);
+ AddLine(BPoint(sliderStart, r.top),
+ BPoint(sliderEnd, r.top), black);
+ AddLine(BPoint(sliderStart, r.bottom),
+ BPoint(sliderEnd, r.bottom), light);
+ r.top++;
+ AddLine(BPoint(sliderStart, r.top),
+ BPoint(knobPos, r.top), greenShadow);
+ AddLine(BPoint(knobPos, r.top),
+ BPoint(sliderEnd, r.top), midShadow);
+ r.top++;
+ AddLine(BPoint(sliderStart, r.top),
+ BPoint(knobPos, r.top), greenShadow);
+ EndLineArray();
+ // fill rest inside of slider
+ r.InsetBy(0.0, 1.0);
+ r.left = sliderStart;
+ r.right = knobPos;
+ SetHighColor(green);
+ FillRect(r, B_SOLID_HIGH);
+ r.left = knobPos + 1.0;
+ r.right = sliderEnd;
+ r.top -= 1.0;
+ SetHighColor(shadow);
+ FillRect(r, B_SOLID_HIGH);
+ // draw little dots inside
+ int32 dotCount = (int32)((sliderEnd - sliderStart) / 5.0);
+ BPoint dotPos;
+ dotPos.y = r.top + 4.0;
+ for (int32 i = 0; i < dotCount; i++)
+ {
+ dotPos.x = sliderStart + i * 5.0 + 4.0;
+ SetHighColor(dotPos.x < knobPos ? dotGreen : dotGrey);
+ StrokeLine(dotPos, BPoint(dotPos.x, dotPos.y + 1.0));
+ }
+ // draw knob
+ r.top -= 1.0;
+ SetDrawingMode(B_OP_OVER); // part of knob is transparent
+ DrawBitmapAsync(fKnobBits, BPoint(knobPos - kVolumeSliderKnobWidth / 2, r.top));
+ }
}
/*****************************************************************************
void
VolumeSlider::MouseDown(BPoint where)
{
- if (Bounds().Contains(where) && IsEnabled())
- {
- fTracking = true;
- SetValue(_ValueFor(where.x));
- SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
- }
+ if (Bounds().Contains(where) && IsEnabled())
+ {
+ fTracking = true;
+ SetValue(_ValueFor(where.x));
+ SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
+ }
}
/*****************************************************************************
void
VolumeSlider::MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage)
{
- if (fTracking)
- SetValue(_ValueFor(where.x));
+ if (fTracking)
+ SetValue(_ValueFor(where.x));
}
/*****************************************************************************
void
VolumeSlider::MouseUp(BPoint where)
{
- fTracking = false;
+ fTracking = false;
}
bool
VolumeSlider::IsValid() const
{
- return (fLeftSideBits && fLeftSideBits->IsValid()
- && fRightSideBits && fRightSideBits->IsValid()
- && fKnobBits && fKnobBits->IsValid());
+ return (fLeftSideBits && fLeftSideBits->IsValid()
+ && fRightSideBits && fRightSideBits->IsValid()
+ && fKnobBits && fKnobBits->IsValid());
}
/*****************************************************************************
void
VolumeSlider::SetMuted(bool mute)
{
- if (mute != fMuted)
- {
- fMuted = mute;
- _MakeBitmaps();
- Invalidate();
- }
+ if (mute != fMuted)
+ {
+ fMuted = mute;
+ _MakeBitmaps();
+ Invalidate();
+ }
}
/*****************************************************************************
void
VolumeSlider::_MakeBitmaps()
{
- if (IsValid())
- {
- // left side of slider
- memcpy(fLeftSideBits->Bits(), kVolumeSliderLeftBitmapBits,
- fLeftSideBits->BitsLength());
- // right side of slider
- memcpy(fRightSideBits->Bits(), kVolumeSliderRightBits,
- fRightSideBits->BitsLength());
- // slider knob
- int32 length = fKnobBits->BitsLength();
- memcpy(fKnobBits->Bits(), kVolumeSliderKnobBits, length);
- uint8* bits = (uint8*)fKnobBits->Bits();
- // black was used in the knob to represent transparency
- // use screen to get index for the "transarent" color used in the bitmap
- BScreen screen(B_MAIN_SCREEN_ID);
- uint8 blackIndex = screen.IndexForColor(kBlack);
- // replace black index with transparent index
- for (int32 i = 0; i < length; i++)
- if (bits[i] == blackIndex)
- bits[i] = B_TRANSPARENT_MAGIC_CMAP8;
-
- if (!IsEnabled())
- {
- // make ghosted versions of the bitmaps
- dim_bitmap(fLeftSideBits, kBackground, DIM_LEVEL);
- dim_bitmap(fRightSideBits, kBackground, DIM_LEVEL);
- dim_bitmap(fKnobBits, kBackground, DIM_LEVEL);
- }
- else if (fMuted)
- {
- // replace green color (and shadow) in left slider side
- bits = (uint8*)fLeftSideBits->Bits();
- length = fLeftSideBits->BitsLength();
- uint8 greenIndex = screen.IndexForColor(kGreen);
- uint8 greenShadowIndex = screen.IndexForColor(kGreenShadow);
- rgb_color shadow = tint_color(kBackground, B_DARKEN_3_TINT);
- rgb_color midShadow = tint_color(kBackground, B_DARKEN_4_TINT);
- uint8 replaceIndex = screen.IndexForColor(shadow);
- uint8 replaceShadowIndex = screen.IndexForColor(midShadow);
- for (int32 i = 0; i < length; i++)
- {
- if (bits[i] == greenIndex)
- bits[i] = replaceIndex;
- else if (bits[i] == greenShadowIndex)
- bits[i] = replaceShadowIndex;
- }
- }
- }
+ if (IsValid())
+ {
+ // left side of slider
+ memcpy(fLeftSideBits->Bits(), kVolumeSliderLeftBitmapBits,
+ fLeftSideBits->BitsLength());
+ // right side of slider
+ memcpy(fRightSideBits->Bits(), kVolumeSliderRightBits,
+ fRightSideBits->BitsLength());
+ // slider knob
+ int32 length = fKnobBits->BitsLength();
+ memcpy(fKnobBits->Bits(), kVolumeSliderKnobBits, length);
+ uint8* bits = (uint8*)fKnobBits->Bits();
+ // black was used in the knob to represent transparency
+ // use screen to get index for the "transarent" color used in the bitmap
+ BScreen screen(B_MAIN_SCREEN_ID);
+ uint8 blackIndex = screen.IndexForColor(kBlack);
+ // replace black index with transparent index
+ for (int32 i = 0; i < length; i++)
+ if (bits[i] == blackIndex)
+ bits[i] = B_TRANSPARENT_MAGIC_CMAP8;
+
+ if (!IsEnabled())
+ {
+ // make ghosted versions of the bitmaps
+ dim_bitmap(fLeftSideBits, kBackground, DIM_LEVEL);
+ dim_bitmap(fRightSideBits, kBackground, DIM_LEVEL);
+ dim_bitmap(fKnobBits, kBackground, DIM_LEVEL);
+ }
+ else if (fMuted)
+ {
+ // replace green color (and shadow) in left slider side
+ bits = (uint8*)fLeftSideBits->Bits();
+ length = fLeftSideBits->BitsLength();
+ uint8 greenIndex = screen.IndexForColor(kGreen);
+ uint8 greenShadowIndex = screen.IndexForColor(kGreenShadow);
+ rgb_color shadow = tint_color(kBackground, B_DARKEN_3_TINT);
+ rgb_color midShadow = tint_color(kBackground, B_DARKEN_4_TINT);
+ uint8 replaceIndex = screen.IndexForColor(shadow);
+ uint8 replaceShadowIndex = screen.IndexForColor(midShadow);
+ for (int32 i = 0; i < length; i++)
+ {
+ if (bits[i] == greenIndex)
+ bits[i] = replaceIndex;
+ else if (bits[i] == greenShadowIndex)
+ bits[i] = replaceShadowIndex;
+ }
+ }
+ }
}
/*****************************************************************************
int32
VolumeSlider::_ValueFor(float xPos) const
{
- BRect r(Bounds());
- float sliderStart = (r.left + kVolumeSliderBitmapWidth);
- float sliderEnd = (r.right - kVolumeSliderBitmapWidth);
- int32 value = fMinValue + (int32)(((xPos - sliderStart) * (fMaxValue - fMinValue))
- / (sliderEnd - sliderStart - 1.0));
- if (value < fMinValue)
- value = fMinValue;
- if (value > fMaxValue)
- value = fMaxValue;
- return value;
+ BRect r(Bounds());
+ float sliderStart = (r.left + kVolumeSliderBitmapWidth);
+ float sliderEnd = (r.right - kVolumeSliderBitmapWidth);
+ int32 value = fMinValue + (int32)(((xPos - sliderStart) * (fMaxValue - fMinValue))
+ / (sliderEnd - sliderStart - 1.0));
+ if (value < fMinValue)
+ value = fMinValue;
+ if (value > fMaxValue)
+ value = fMaxValue;
+ return value;
}
/*****************************************************************************
*****************************************************************************/
PositionInfoView::PositionInfoView( BRect frame, const char* name,
intf_thread_t * p_interface )
- : BView( frame, name, B_FOLLOW_NONE,
- B_WILL_DRAW | B_PULSE_NEEDED | B_FULL_UPDATE_ON_RESIZE ),
- fMode( MODE_SMALL ),
- fCurrentFileIndex( -1 ),
- fCurrentFileSize( -1 ),
- fCurrentTitleIndex( -1 ),
- fCurrentTitleSize( -1 ),
- fCurrentChapterIndex( -1 ),
- fCurrentChapterSize( -1 ),
- fSeconds( -1 ),
- fTimeString( "-:--:--" ),
- fLastPulseUpdate( system_time() ),
- fStackedWidthCache( 0.0 ),
- fStackedHeightCache( 0.0 )
+ : BView( frame, name, B_FOLLOW_NONE,
+ B_WILL_DRAW | B_PULSE_NEEDED | B_FULL_UPDATE_ON_RESIZE ),
+ fMode( MODE_SMALL ),
+ fCurrentFileIndex( -1 ),
+ fCurrentFileSize( -1 ),
+ fCurrentTitleIndex( -1 ),
+ fCurrentTitleSize( -1 ),
+ fCurrentChapterIndex( -1 ),
+ fCurrentChapterSize( -1 ),
+ fSeconds( -1 ),
+ fTimeString( "-:--:--" ),
+ fLastPulseUpdate( system_time() ),
+ fStackedWidthCache( 0.0 ),
+ fStackedHeightCache( 0.0 )
{
p_intf = p_interface;
- SetViewColor( B_TRANSPARENT_32_BIT );
- SetLowColor( kBlack );
- SetHighColor( 0, 255, 0, 255 );
- SetFontSize( 11.0 );
+ SetViewColor( B_TRANSPARENT_32_BIT );
+ SetLowColor( kBlack );
+ SetHighColor( 0, 255, 0, 255 );
+ SetFontSize( 11.0 );
}
/*****************************************************************************
void
PositionInfoView::Draw( BRect updateRect )
{
- rgb_color background = ui_color( B_PANEL_BACKGROUND_COLOR );
- rgb_color shadow = tint_color( background, B_DARKEN_1_TINT );
- rgb_color darkShadow = tint_color( background, B_DARKEN_4_TINT );
- rgb_color light = tint_color( background, B_LIGHTEN_MAX_TINT );
- rgb_color softLight = tint_color( background, B_LIGHTEN_1_TINT );
- // frame
- BRect r( Bounds() );
- BeginLineArray( 8 );
- AddLine( BPoint( r.left, r.bottom ),
- BPoint( r.left, r.top ), shadow );
- AddLine( BPoint( r.left + 1.0, r.top ),
- BPoint( r.right, r.top ), shadow );
- AddLine( BPoint( r.right, r.top + 1.0 ),
- BPoint( r.right, r.bottom ), softLight );
- AddLine( BPoint( r.right - 1.0, r.bottom ),
- BPoint( r.left + 1.0, r.bottom ), softLight );
- r.InsetBy( 1.0, 1.0 );
- AddLine( BPoint( r.left, r.bottom ),
- BPoint( r.left, r.top ), darkShadow );
- AddLine( BPoint( r.left + 1.0, r.top ),
- BPoint( r.right, r.top ), darkShadow );
- AddLine( BPoint( r.right, r.top + 1.0 ),
- BPoint( r.right, r.bottom ), light );
- AddLine( BPoint( r.right - 1.0, r.bottom ),
- BPoint( r.left + 1.0, r.bottom ), light );
- EndLineArray();
- // background
- r.InsetBy( 1.0, 1.0 );
- FillRect( r, B_SOLID_LOW );
- // contents
- font_height fh;
- GetFontHeight( &fh );
- switch ( fMode )
- {
- case MODE_SMALL:
- {
- float width = StringWidth( fTimeString.String() );
- DrawString( fTimeString.String(),
- BPoint( r.left + r.Width() / 2.0 - width / 2.0,
- r.top + r.Height() / 2.0 + fh.ascent / 2.0 - 1.0 ) );
- break;
- }
- case MODE_BIG:
- {
- BFont font;
- GetFont( &font );
- BFont smallFont = font;
- BFont bigFont = font;
- BFont tinyFont = font;
- smallFont.SetSize( r.Height() / 5.0 );
- bigFont.SetSize( r.Height() / 3.0 );
- tinyFont.SetSize( r.Height() / 7.0 );
- float timeHeight = r.Height() / 2.5;
- float height = ( r.Height() - timeHeight ) / 3.0;
- SetFont( &tinyFont );
- SetHighColor( 0, 180, 0, 255 );
- DrawString( _("File"), BPoint( r.left + 3.0, r.top + height ) );
- DrawString( _("Title"), BPoint( r.left + 3.0, r.top + 2.0 * height ) );
- DrawString( _("Chapter"), BPoint( r.left + 3.0, r.top + 3.0 * height ) );
- SetFont( &smallFont );
- BString helper;
- SetHighColor( 0, 255, 0, 255 );
- // file
- _MakeString( helper, fCurrentFileIndex, fCurrentFileSize );
- float width = StringWidth( helper.String() );
- DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + height ) );
- // title
- _MakeString( helper, fCurrentTitleIndex, fCurrentTitleSize );
- width = StringWidth( helper.String() );
- DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + 2.0 * height ) );
- // chapter
- _MakeString( helper, fCurrentChapterIndex, fCurrentChapterSize );
- width = StringWidth( helper.String() );
- DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + 3.0 * height ) );
- // time
- SetFont( &bigFont );
- width = StringWidth( fTimeString.String() );
- DrawString( fTimeString.String(),
- BPoint( r.left + r.Width() / 2.0 - width / 2.0,
- r.bottom - 3.0 ) );
- break;
- }
- }
+ rgb_color background = ui_color( B_PANEL_BACKGROUND_COLOR );
+ rgb_color shadow = tint_color( background, B_DARKEN_1_TINT );
+ rgb_color darkShadow = tint_color( background, B_DARKEN_4_TINT );
+ rgb_color light = tint_color( background, B_LIGHTEN_MAX_TINT );
+ rgb_color softLight = tint_color( background, B_LIGHTEN_1_TINT );
+ // frame
+ BRect r( Bounds() );
+ BeginLineArray( 8 );
+ AddLine( BPoint( r.left, r.bottom ),
+ BPoint( r.left, r.top ), shadow );
+ AddLine( BPoint( r.left + 1.0, r.top ),
+ BPoint( r.right, r.top ), shadow );
+ AddLine( BPoint( r.right, r.top + 1.0 ),
+ BPoint( r.right, r.bottom ), softLight );
+ AddLine( BPoint( r.right - 1.0, r.bottom ),
+ BPoint( r.left + 1.0, r.bottom ), softLight );
+ r.InsetBy( 1.0, 1.0 );
+ AddLine( BPoint( r.left, r.bottom ),
+ BPoint( r.left, r.top ), darkShadow );
+ AddLine( BPoint( r.left + 1.0, r.top ),
+ BPoint( r.right, r.top ), darkShadow );
+ AddLine( BPoint( r.right, r.top + 1.0 ),
+ BPoint( r.right, r.bottom ), light );
+ AddLine( BPoint( r.right - 1.0, r.bottom ),
+ BPoint( r.left + 1.0, r.bottom ), light );
+ EndLineArray();
+ // background
+ r.InsetBy( 1.0, 1.0 );
+ FillRect( r, B_SOLID_LOW );
+ // contents
+ font_height fh;
+ GetFontHeight( &fh );
+ switch ( fMode )
+ {
+ case MODE_SMALL:
+ {
+ float width = StringWidth( fTimeString.String() );
+ DrawString( fTimeString.String(),
+ BPoint( r.left + r.Width() / 2.0 - width / 2.0,
+ r.top + r.Height() / 2.0 + fh.ascent / 2.0 - 1.0 ) );
+ break;
+ }
+ case MODE_BIG:
+ {
+ BFont font;
+ GetFont( &font );
+ BFont smallFont = font;
+ BFont bigFont = font;
+ BFont tinyFont = font;
+ smallFont.SetSize( r.Height() / 5.0 );
+ bigFont.SetSize( r.Height() / 3.0 );
+ tinyFont.SetSize( r.Height() / 7.0 );
+ float timeHeight = r.Height() / 2.5;
+ float height = ( r.Height() - timeHeight ) / 3.0;
+ SetFont( &tinyFont );
+ SetHighColor( 0, 180, 0, 255 );
+ DrawString( _("File"), BPoint( r.left + 3.0, r.top + height ) );
+ DrawString( _("Title"), BPoint( r.left + 3.0, r.top + 2.0 * height ) );
+ DrawString( _("Chapter"), BPoint( r.left + 3.0, r.top + 3.0 * height ) );
+ SetFont( &smallFont );
+ BString helper;
+ SetHighColor( 0, 255, 0, 255 );
+ // file
+ _MakeString( helper, fCurrentFileIndex, fCurrentFileSize );
+ float width = StringWidth( helper.String() );
+ DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + height ) );
+ // title
+ _MakeString( helper, fCurrentTitleIndex, fCurrentTitleSize );
+ width = StringWidth( helper.String() );
+ DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + 2.0 * height ) );
+ // chapter
+ _MakeString( helper, fCurrentChapterIndex, fCurrentChapterSize );
+ width = StringWidth( helper.String() );
+ DrawString( helper.String(), BPoint( r.right - 3.0 - width, r.top + 3.0 * height ) );
+ // time
+ SetFont( &bigFont );
+ width = StringWidth( fTimeString.String() );
+ DrawString( fTimeString.String(),
+ BPoint( r.left + r.Width() / 2.0 - width / 2.0,
+ r.bottom - 3.0 ) );
+ break;
+ }
+ }
}
/*****************************************************************************
void
PositionInfoView::ResizeToPreferred()
{
- float width, height;
- GetPreferredSize( &width, &height );
- ResizeTo( width, height );
+ float width, height;
+ GetPreferredSize( &width, &height );
+ ResizeTo( width, height );
}
/*****************************************************************************
void
PositionInfoView::GetPreferredSize( float* width, float* height )
{
- if ( width && height )
- {
- *width = 5.0 + ceilf( StringWidth( "0:00:00" ) ) + 5.0;
- font_height fh;
- GetFontHeight( &fh );
- *height = 3.0 + ceilf( fh.ascent ) + 3.0;
- fStackedWidthCache = *width * 1.2;
- fStackedHeightCache = *height * 2.7;
- }
+ if ( width && height )
+ {
+ *width = 5.0 + ceilf( StringWidth( "0:00:00" ) ) + 5.0;
+ font_height fh;
+ GetFontHeight( &fh );
+ *height = 3.0 + ceilf( fh.ascent ) + 3.0;
+ fStackedWidthCache = *width * 1.2;
+ fStackedHeightCache = *height * 2.7;
+ }
}
/*****************************************************************************
void
PositionInfoView::Pulse()
{
- // allow for Pulse frequency to be higher, MediaControlView needs it
- bigtime_t now = system_time();
- if ( now - fLastPulseUpdate > 900000 )
- {
+ // allow for Pulse frequency to be higher, MediaControlView needs it
+ bigtime_t now = system_time();
+ if ( now - fLastPulseUpdate > 900000 )
+ {
#if 0
- int32 index, size;
- p_intf->p_sys->p_wrapper->GetPlaylistInfo( index, size );
- SetFile( index + 1, size );
- p_intf->p_sys->p_wrapper->TitleInfo( index, size );
- SetTitle( index, size );
- p_intf->p_sys->p_wrapper->ChapterInfo( index, size );
- SetChapter( index, size );
- SetTime( p_intf->p_sys->p_wrapper->GetTimeAsString() );
- fLastPulseUpdate = now;
+ int32 index, size;
+ p_intf->p_sys->p_wrapper->GetPlaylistInfo( index, size );
+ SetFile( index + 1, size );
+ p_intf->p_sys->p_wrapper->TitleInfo( index, size );
+ SetTitle( index, size );
+ p_intf->p_sys->p_wrapper->ChapterInfo( index, size );
+ SetChapter( index, size );
+ SetTime( p_intf->p_sys->p_wrapper->GetTimeAsString() );
+ fLastPulseUpdate = now;
#endif
- }
+ }
}
/*****************************************************************************
void
PositionInfoView::GetBigPreferredSize( float* width, float* height )
{
- if ( width && height )
- {
- *width = fStackedWidthCache;
- *height = fStackedHeightCache;
- }
+ if ( width && height )
+ {
+ *width = fStackedWidthCache;
+ *height = fStackedHeightCache;
+ }
}
/*****************************************************************************
void
PositionInfoView::SetMode( uint32 mode )
{
- if ( fMode != mode )
- {
- fMode = mode;
- _InvalidateContents();
- }
+ if ( fMode != mode )
+ {
+ fMode = mode;
+ _InvalidateContents();
+ }
}
/*****************************************************************************
void
PositionInfoView::SetFile( int32 index, int32 size )
{
- if ( fCurrentFileIndex != index || fCurrentFileSize != size )
- {
- fCurrentFileIndex = index;
- fCurrentFileSize = size;
- _InvalidateContents();
- }
+ if ( fCurrentFileIndex != index || fCurrentFileSize != size )
+ {
+ fCurrentFileIndex = index;
+ fCurrentFileSize = size;
+ _InvalidateContents();
+ }
}
/*****************************************************************************
void
PositionInfoView::SetTitle( int32 index, int32 size )
{
- if ( fCurrentTitleIndex != index || fCurrentFileSize != size )
- {
- fCurrentTitleIndex = index;
- fCurrentTitleSize = size;
- _InvalidateContents();
- }
+ if ( fCurrentTitleIndex != index || fCurrentFileSize != size )
+ {
+ fCurrentTitleIndex = index;
+ fCurrentTitleSize = size;
+ _InvalidateContents();
+ }
}
/*****************************************************************************
void
PositionInfoView::SetChapter( int32 index, int32 size )
{
- if ( fCurrentChapterIndex != index || fCurrentFileSize != size )
- {
- fCurrentChapterIndex = index;
- fCurrentChapterSize = size;
- _InvalidateContents();
- }
+ if ( fCurrentChapterIndex != index || fCurrentFileSize != size )
+ {
+ fCurrentChapterIndex = index;
+ fCurrentChapterSize = size;
+ _InvalidateContents();
+ }
}
/*****************************************************************************
void
PositionInfoView::SetTime( int32 seconds )
{
- if ( fSeconds != seconds )
- {
- if ( seconds >= 0 )
- {
- int32 minutes = seconds / 60;
- int32 hours = minutes / 60;
- seconds -= minutes * 60 - hours * 60 * 60;
- minutes -= hours * 60;
- fTimeString.SetTo( "" );
- fTimeString << hours << ":" << minutes << ":" << seconds;
- }
- else
- fTimeString.SetTo( "-:--:--" );
-
- fSeconds = seconds;
- _InvalidateContents();
- }
+ if ( fSeconds != seconds )
+ {
+ if ( seconds >= 0 )
+ {
+ int32 minutes = seconds / 60;
+ int32 hours = minutes / 60;
+ seconds -= minutes * 60 - hours * 60 * 60;
+ minutes -= hours * 60;
+ fTimeString.SetTo( "" );
+ fTimeString << hours << ":" << minutes << ":" << seconds;
+ }
+ else
+ fTimeString.SetTo( "-:--:--" );
+
+ fSeconds = seconds;
+ _InvalidateContents();
+ }
}
/*****************************************************************************
void
PositionInfoView::SetTime( const char* string )
{
- fTimeString.SetTo( string );
- _InvalidateContents();
+ fTimeString.SetTo( string );
+ _InvalidateContents();
}
/*****************************************************************************
void
PositionInfoView::_InvalidateContents( uint32 which )
{
- BRect r( Bounds() );
- r.InsetBy( 2.0, 2.0 );
- Invalidate( r );
+ BRect r( Bounds() );
+ r.InsetBy( 2.0, 2.0 );
+ Invalidate( r );
}
/*****************************************************************************
void
PositionInfoView::_MakeString( BString& into, int32 index, int32 maxIndex ) const
{
- into = "";
- if ( index >= 0 && maxIndex >= 0 )
- into << index;
- else
- into << "-";
- into << "/";
- if ( maxIndex >= 0 )
- into << maxIndex;
- else
- into << "-";
+ into = "";
+ if ( index >= 0 && maxIndex >= 0 )
+ into << index;
+ else
+ into << "-";
+ into << "/";
+ if ( maxIndex >= 0 )
+ into << maxIndex;
+ else
+ into << "-";
}
class MediaControlView : public BBox
{
public:
- MediaControlView( intf_thread_t * p_intf, BRect frame );
- virtual ~MediaControlView();
-
- // BBox
- virtual void AttachedToWindow();
- virtual void FrameResized(float width, float height);
- virtual void GetPreferredSize(float* width, float* height);
- virtual void MessageReceived(BMessage* message);
- virtual void Pulse(); // detect stopped stream
-
- // MediaControlView
- void SetProgress( float position );
-
- void SetStatus(int status, int rate);
- void SetEnabled(bool enable);
- void SetAudioEnabled(bool enable);
- uint32 GetVolume() const;
- void SetSkippable(bool backward,
- bool forward);
- void SetMuted(bool mute);
-
+ MediaControlView( intf_thread_t * p_intf, BRect frame );
+ virtual ~MediaControlView();
+
+ // BBox
+ virtual void AttachedToWindow();
+ virtual void FrameResized(float width, float height);
+ virtual void GetPreferredSize(float* width, float* height);
+ virtual void MessageReceived(BMessage* message);
+ virtual void Pulse(); // detect stopped stream
+
+ // MediaControlView
+ void SetProgress( float position );
+
+ void SetStatus(int status, int rate);
+ void SetEnabled(bool enable);
+ void SetAudioEnabled(bool enable);
+ uint32 GetVolume() const;
+ void SetSkippable(bool backward,
+ bool forward);
+ void SetMuted(bool mute);
+
private:
- void _LayoutControls(BRect frame) const;
- BRect _MinFrame() const;
- void _LayoutControl(BView* view,
- BRect frame,
- bool resizeWidth = false,
- bool resizeHeight = false) const;
-
- intf_thread_t * p_intf;
-
- VolumeSlider* fVolumeSlider;
- SeekSlider* fSeekSlider;
- TransportButton* fSkipBack;
- TransportButton* fSkipForward;
- TransportButton* fRewind;
- TransportButton* fForward;
- PlayPauseButton* fPlayPause;
- TransportButton* fStop;
- TransportButton* fMute;
- PositionInfoView* fPositionInfo;
-
- int fCurrentRate;
- int fCurrentStatus;
- float fBottomControlHeight;
- BRect fOldBounds;
- bool fIsEnabled;
-
+ void _LayoutControls(BRect frame) const;
+ BRect _MinFrame() const;
+ void _LayoutControl(BView* view,
+ BRect frame,
+ bool resizeWidth = false,
+ bool resizeHeight = false) const;
+
+ intf_thread_t * p_intf;
+
+ VolumeSlider* fVolumeSlider;
+ SeekSlider* fSeekSlider;
+ TransportButton* fSkipBack;
+ TransportButton* fSkipForward;
+ TransportButton* fRewind;
+ TransportButton* fForward;
+ PlayPauseButton* fPlayPause;
+ TransportButton* fStop;
+ TransportButton* fMute;
+ PositionInfoView* fPositionInfo;
+
+ int fCurrentRate;
+ int fCurrentStatus;
+ float fBottomControlHeight;
+ BRect fOldBounds;
+ bool fIsEnabled;
+
};
class SeekSlider : public BControl
{
public:
- SeekSlider(intf_thread_t * p_intf,
- BRect frame,
- const char* name,
- MediaControlView* owner );
+ SeekSlider(intf_thread_t * p_intf,
+ BRect frame,
+ const char* name,
+ MediaControlView* owner );
- virtual ~SeekSlider();
+ virtual ~SeekSlider();
- // BControl
- virtual void AttachedToWindow();
- virtual void Draw(BRect updateRect);
- virtual void MouseDown(BPoint where);
- virtual void MouseMoved(BPoint where, uint32 transit,
- const BMessage* dragMessage);
- virtual void MouseUp(BPoint where);
- virtual void ResizeToPreferred();
+ // BControl
+ virtual void AttachedToWindow();
+ virtual void Draw(BRect updateRect);
+ virtual void MouseDown(BPoint where);
+ virtual void MouseMoved(BPoint where, uint32 transit,
+ const BMessage* dragMessage);
+ virtual void MouseUp(BPoint where);
+ virtual void ResizeToPreferred();
- // SeekSlider
- void SetPosition(float position);
+ // SeekSlider
+ void SetPosition(float position);
private:
- int32 _ValueFor(float x) const;
- void _StrokeFrame(BRect frame,
- rgb_color left,
- rgb_color top,
- rgb_color right,
- rgb_color bottom);
+ int32 _ValueFor(float x) const;
+ void _StrokeFrame(BRect frame,
+ rgb_color left,
+ rgb_color top,
+ rgb_color right,
+ rgb_color bottom);
intf_thread_t * p_intf;
- MediaControlView* fOwner;
- bool fTracking;
+ MediaControlView* fOwner;
+ bool fTracking;
};
class VolumeSlider : public BControl
{
public:
- VolumeSlider(BRect frame,
- const char* name,
- int32 minValue,
- int32 maxValue,
- BMessage* message = NULL,
- BHandler* target = NULL);
-
- virtual ~VolumeSlider();
-
- // BControl
- virtual void AttachedToWindow();
- virtual void SetValue(int32 value);
- virtual void SetEnabled(bool enable);
- virtual void Draw(BRect updateRect);
- virtual void MouseDown(BPoint where);
- virtual void MouseMoved(BPoint where, uint32 transit,
- const BMessage* dragMessage);
- virtual void MouseUp(BPoint where);
-
- // VolumeSlider
- bool IsValid() const;
- void SetMuted(bool mute);
+ VolumeSlider(BRect frame,
+ const char* name,
+ int32 minValue,
+ int32 maxValue,
+ BMessage* message = NULL,
+ BHandler* target = NULL);
+
+ virtual ~VolumeSlider();
+
+ // BControl
+ virtual void AttachedToWindow();
+ virtual void SetValue(int32 value);
+ virtual void SetEnabled(bool enable);
+ virtual void Draw(BRect updateRect);
+ virtual void MouseDown(BPoint where);
+ virtual void MouseMoved(BPoint where, uint32 transit,
+ const BMessage* dragMessage);
+ virtual void MouseUp(BPoint where);
+
+ // VolumeSlider
+ bool IsValid() const;
+ void SetMuted(bool mute);
private:
- void _MakeBitmaps();
- void _DimBitmap(BBitmap* bitmap);
- int32 _ValueFor(float xPos) const;
-
- BBitmap* fLeftSideBits;
- BBitmap* fRightSideBits;
- BBitmap* fKnobBits;
- bool fTracking;
- bool fMuted;
- int32 fMinValue;
- int32 fMaxValue;
+ void _MakeBitmaps();
+ void _DimBitmap(BBitmap* bitmap);
+ int32 _ValueFor(float xPos) const;
+
+ BBitmap* fLeftSideBits;
+ BBitmap* fRightSideBits;
+ BBitmap* fKnobBits;
+ bool fTracking;
+ bool fMuted;
+ int32 fMinValue;
+ int32 fMaxValue;
};
class PositionInfoView : public BView
{
public:
- PositionInfoView( BRect frame,
- const char* name,
- intf_thread_t *p_intf );
- virtual ~PositionInfoView();
-
- // BView
- virtual void Draw( BRect updateRect );
- virtual void ResizeToPreferred();
- virtual void GetPreferredSize( float* width,
- float* height );
- virtual void Pulse();
-
- // PositionInfoView
- enum
- {
- MODE_SMALL,
- MODE_BIG,
- };
-
- void SetMode( uint32 mode );
- void GetBigPreferredSize( float* width,
- float* height );
-
- void SetFile( int32 index, int32 size );
- void SetTitle( int32 index, int32 size );
- void SetChapter( int32 index, int32 size );
- void SetTime( int32 seconds );
- void SetTime( const char* string );
+ PositionInfoView( BRect frame,
+ const char* name,
+ intf_thread_t *p_intf );
+ virtual ~PositionInfoView();
+
+ // BView
+ virtual void Draw( BRect updateRect );
+ virtual void ResizeToPreferred();
+ virtual void GetPreferredSize( float* width,
+ float* height );
+ virtual void Pulse();
+
+ // PositionInfoView
+ enum
+ {
+ MODE_SMALL,
+ MODE_BIG,
+ };
+
+ void SetMode( uint32 mode );
+ void GetBigPreferredSize( float* width,
+ float* height );
+
+ void SetFile( int32 index, int32 size );
+ void SetTitle( int32 index, int32 size );
+ void SetChapter( int32 index, int32 size );
+ void SetTime( int32 seconds );
+ void SetTime( const char* string );
private:
- void _InvalidateContents( uint32 which = 0 );
- void _MakeString( BString& into,
- int32 index,
- int32 maxIndex ) const;
-// void _DrawAlignedString( const char* string,
-// BRect frame,
-// alignment mode = B_ALIGN_LEFT );
-
- uint32 fMode;
- int32 fCurrentFileIndex;
- int32 fCurrentFileSize;
- int32 fCurrentTitleIndex;
- int32 fCurrentTitleSize;
- int32 fCurrentChapterIndex;
- int32 fCurrentChapterSize;
-
- int32 fSeconds;
- BString fTimeString;
- bigtime_t fLastPulseUpdate;
- float fStackedWidthCache;
- float fStackedHeightCache;
-
- intf_thread_t * p_intf;
-
+ void _InvalidateContents( uint32 which = 0 );
+ void _MakeString( BString& into,
+ int32 index,
+ int32 maxIndex ) const;
+// void _DrawAlignedString( const char* string,
+// BRect frame,
+// alignment mode = B_ALIGN_LEFT );
+
+ uint32 fMode;
+ int32 fCurrentFileIndex;
+ int32 fCurrentFileSize;
+ int32 fCurrentTitleIndex;
+ int32 fCurrentTitleSize;
+ int32 fCurrentChapterIndex;
+ int32 fCurrentChapterSize;
+
+ int32 fSeconds;
+ BString fTimeString;
+ bigtime_t fLastPulseUpdate;
+ float fStackedWidthCache;
+ float fStackedHeightCache;
+
+ intf_thread_t * p_intf;
+
};
-#endif // BEOS_MEDIA_CONTROL_VIEW_H
+#endif // BEOS_MEDIA_CONTROL_VIEW_H
SetSizeLimits( 400, 2000, 200, 2000 );
p_sub = msg_Subscribe( p_intf, MSG_QUEUE_NORMAL );
-
+
BRect rect, textRect;
rect = Bounds();
B_FOLLOW_ALL, false, true );
fMessagesView->fScrollBar = fScrollView->ScrollBar( B_VERTICAL );
AddChild( fScrollView );
-
+
/* start window thread in hidden state */
Hide();
Show();
snprintf( psz_tmp, 1024, "%s%s", a, B_UTF8_ELLIPSIS );
p_intf = p_interface;
-
+
SetName( _("playlist") );
// set up the main menu bar
bool
PlayListWindow::QuitRequested()
{
- Hide();
+ Hide();
return false;
}
class PlayListWindow : public BWindow
{
public:
- PlayListWindow(BRect frame,
- const char* name,
- InterfaceWindow* mainWindow,
- intf_thread_t *p_interface );
- virtual ~PlayListWindow();
+ PlayListWindow(BRect frame,
+ const char* name,
+ InterfaceWindow* mainWindow,
+ intf_thread_t *p_interface );
+ virtual ~PlayListWindow();
- // BWindow
- virtual bool QuitRequested();
- virtual void MessageReceived(BMessage *message);
- virtual void FrameResized(float width, float height);
+ // BWindow
+ virtual bool QuitRequested();
+ virtual void MessageReceived(BMessage *message);
+ virtual void FrameResized(float width, float height);
- // PlayListWindow
- void ReallyQuit();
- void UpdatePlaylist( bool rebuild = false );
+ // PlayListWindow
+ void ReallyQuit();
+ void UpdatePlaylist( bool rebuild = false );
- void SetDisplayMode( uint32 mode );
- uint32 DisplayMode() const;
+ void SetDisplayMode( uint32 mode );
+ uint32 DisplayMode() const;
- private:
- void _CheckItemsEnableState() const;
- void _SetMenuItemEnabled( BMenuItem* item,
- bool enabled ) const;
+ private:
+ void _CheckItemsEnableState() const;
+ void _SetMenuItemEnabled( BMenuItem* item,
+ bool enabled ) const;
- PlaylistView * fListView;
- BView * fBackgroundView;
- BMenuBar * fMenuBar;
- InterfaceWindow * fMainWindow;
+ PlaylistView * fListView;
+ BView * fBackgroundView;
+ BMenuBar * fMenuBar;
+ InterfaceWindow * fMainWindow;
- BMenuItem* fSelectAllMI;
- BMenuItem* fSelectNoneMI;
- BMenuItem* fSortReverseMI;
- BMenuItem* fSortNameMI;
- BMenuItem* fSortPathMI;
- BMenuItem* fRandomizeMI;
- BMenuItem* fRemoveMI;
- BMenuItem* fRemoveAllMI;
- BMenu* fViewMenu;
-
- intf_thread_t * p_intf;
+ BMenuItem* fSelectAllMI;
+ BMenuItem* fSelectNoneMI;
+ BMenuItem* fSortReverseMI;
+ BMenuItem* fSortNameMI;
+ BMenuItem* fSortPathMI;
+ BMenuItem* fRandomizeMI;
+ BMenuItem* fRemoveMI;
+ BMenuItem* fRemoveAllMI;
+ BMenu* fViewMenu;
+
+ intf_thread_t * p_intf;
};
-#endif // BEOS_PLAY_LIST_WINDOW_H
+#endif // BEOS_PLAY_LIST_WINDOW_H
#endif
fAltCheck->SetValue( val.i_int & KEY_MODIFIER_ALT );
fCtrlCheck->SetValue( val.i_int & KEY_MODIFIER_CTRL );
fShiftCheck->SetValue( val.i_int & KEY_MODIFIER_SHIFT );
-
+
for( unsigned i = 0;
i < sizeof( vlc_keys ) / sizeof( key_descriptor_t ); i++ )
{
// flavors of a bitmap. If the stash does not have a particular bitmap,
// it turns around to ask the button to create one and stores it for next time.
public:
- BitmapStash(TransportButton *);
- ~BitmapStash();
- BBitmap *GetBitmap(uint32 signature);
-
+ BitmapStash(TransportButton *);
+ ~BitmapStash();
+ BBitmap *GetBitmap(uint32 signature);
+
private:
- TransportButton *owner;
- map<uint32, BBitmap *> stash;
+ TransportButton *owner;
+ map<uint32, BBitmap *> stash;
};
BitmapStash::BitmapStash(TransportButton *owner)
- : owner(owner)
+ : owner(owner)
{
}
BBitmap *
BitmapStash::GetBitmap(uint32 signature)
{
- if (stash.find(signature) == stash.end()) {
- BBitmap *newBits = owner->MakeBitmap(signature);
- ASSERT(newBits);
- stash[signature] = newBits;
- }
-
- return stash[signature];
+ if (stash.find(signature) == stash.end()) {
+ BBitmap *newBits = owner->MakeBitmap(signature);
+ ASSERT(newBits);
+ stash[signature] = newBits;
+ }
+
+ return stash[signature];
}
BitmapStash::~BitmapStash()
{
- // delete all the bitmaps
- for (map<uint32, BBitmap *>::iterator i = stash.begin(); i != stash.end(); i++)
- delete (*i).second;
+ // delete all the bitmaps
+ for (map<uint32, BBitmap *>::iterator i = stash.begin(); i != stash.end(); i++)
+ delete (*i).second;
}
class PeriodicMessageSender {
- // used to send a specified message repeatedly when holding down a button
+ // used to send a specified message repeatedly when holding down a button
public:
- static PeriodicMessageSender *Launch(BMessenger target,
- const BMessage *message, bigtime_t period);
- void Quit();
+ static PeriodicMessageSender *Launch(BMessenger target,
+ const BMessage *message, bigtime_t period);
+ void Quit();
private:
- PeriodicMessageSender(BMessenger target, const BMessage *message,
- bigtime_t period);
- ~PeriodicMessageSender() {}
- // use quit
-
- static status_t TrackBinder(void *);
- void Run();
-
- BMessenger target;
- BMessage message;
-
- bigtime_t period;
-
- bool requestToQuit;
+ PeriodicMessageSender(BMessenger target, const BMessage *message,
+ bigtime_t period);
+ ~PeriodicMessageSender() {}
+ // use quit
+
+ static status_t TrackBinder(void *);
+ void Run();
+
+ BMessenger target;
+ BMessage message;
+
+ bigtime_t period;
+
+ bool requestToQuit;
};
PeriodicMessageSender::PeriodicMessageSender(BMessenger target,
- const BMessage *message, bigtime_t period)
- : target(target),
- message(*message),
- period(period),
- requestToQuit(false)
+ const BMessage *message, bigtime_t period)
+ : target(target),
+ message(*message),
+ period(period),
+ requestToQuit(false)
{
}
PeriodicMessageSender *
PeriodicMessageSender::Launch(BMessenger target, const BMessage *message,
- bigtime_t period)
+ bigtime_t period)
{
- PeriodicMessageSender *result = new PeriodicMessageSender(target, message, period);
- thread_id thread = spawn_thread(&PeriodicMessageSender::TrackBinder,
- "ButtonRepeatingThread", B_NORMAL_PRIORITY, result);
-
- if (thread <= 0 || resume_thread(thread) != B_OK) {
- // didn't start, don't leak self
- delete result;
- result = 0;
- }
+ PeriodicMessageSender *result = new PeriodicMessageSender(target, message, period);
+ thread_id thread = spawn_thread(&PeriodicMessageSender::TrackBinder,
+ "ButtonRepeatingThread", B_NORMAL_PRIORITY, result);
+
+ if (thread <= 0 || resume_thread(thread) != B_OK) {
+ // didn't start, don't leak self
+ delete result;
+ result = 0;
+ }
- return result;
+ return result;
}
-void
+void
PeriodicMessageSender::Quit()
{
- requestToQuit = true;
+ requestToQuit = true;
}
-status_t
+status_t
PeriodicMessageSender::TrackBinder(void *castToThis)
{
- ((PeriodicMessageSender *)castToThis)->Run();
- return 0;
+ ((PeriodicMessageSender *)castToThis)->Run();
+ return 0;
}
-void
+void
PeriodicMessageSender::Run()
{
- for (;;) {
- snooze(period);
- if (requestToQuit)
- break;
- target.SendMessage(&message);
- }
- delete this;
+ for (;;) {
+ snooze(period);
+ if (requestToQuit)
+ break;
+ target.SendMessage(&message);
+ }
+ delete this;
}
class SkipButtonKeypressFilter : public BMessageFilter {
public:
- SkipButtonKeypressFilter(uint32 shortcutKey, uint32 shortcutModifier,
- TransportButton *target);
+ SkipButtonKeypressFilter(uint32 shortcutKey, uint32 shortcutModifier,
+ TransportButton *target);
protected:
- filter_result Filter(BMessage *message, BHandler **handler);
+ filter_result Filter(BMessage *message, BHandler **handler);
private:
- uint32 shortcutKey;
- uint32 shortcutModifier;
- TransportButton *target;
+ uint32 shortcutKey;
+ uint32 shortcutModifier;
+ TransportButton *target;
};
SkipButtonKeypressFilter::SkipButtonKeypressFilter(uint32 shortcutKey,
- uint32 shortcutModifier, TransportButton *target)
- : BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
- shortcutKey(shortcutKey),
- shortcutModifier(shortcutModifier),
- target(target)
+ uint32 shortcutModifier, TransportButton *target)
+ : BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
+ shortcutKey(shortcutKey),
+ shortcutModifier(shortcutModifier),
+ target(target)
{
}
-filter_result
+filter_result
SkipButtonKeypressFilter::Filter(BMessage *message, BHandler **handler)
{
- if (target->IsEnabled()
- && (message->what == B_KEY_DOWN || message->what == B_KEY_UP)) {
- uint32 modifiers;
- uint32 rawKeyChar = 0;
- uint8 byte = 0;
- int32 key = 0;
-
- if (message->FindInt32("modifiers", (int32 *)&modifiers) != B_OK
- || message->FindInt32("raw_char", (int32 *)&rawKeyChar) != B_OK
- || message->FindInt8("byte", (int8 *)&byte) != B_OK
- || message->FindInt32("key", &key) != B_OK)
- return B_DISPATCH_MESSAGE;
-
- modifiers &= B_SHIFT_KEY | B_COMMAND_KEY | B_CONTROL_KEY
- | B_OPTION_KEY | B_MENU_KEY;
- // strip caps lock, etc.
-
- if (modifiers == shortcutModifier && rawKeyChar == shortcutKey) {
- if (message->what == B_KEY_DOWN)
- target->ShortcutKeyDown();
- else
- target->ShortcutKeyUp();
-
- return B_SKIP_MESSAGE;
- }
- }
-
- // let others deal with this
- return B_DISPATCH_MESSAGE;
+ if (target->IsEnabled()
+ && (message->what == B_KEY_DOWN || message->what == B_KEY_UP)) {
+ uint32 modifiers;
+ uint32 rawKeyChar = 0;
+ uint8 byte = 0;
+ int32 key = 0;
+
+ if (message->FindInt32("modifiers", (int32 *)&modifiers) != B_OK
+ || message->FindInt32("raw_char", (int32 *)&rawKeyChar) != B_OK
+ || message->FindInt8("byte", (int8 *)&byte) != B_OK
+ || message->FindInt32("key", &key) != B_OK)
+ return B_DISPATCH_MESSAGE;
+
+ modifiers &= B_SHIFT_KEY | B_COMMAND_KEY | B_CONTROL_KEY
+ | B_OPTION_KEY | B_MENU_KEY;
+ // strip caps lock, etc.
+
+ if (modifiers == shortcutModifier && rawKeyChar == shortcutKey) {
+ if (message->what == B_KEY_DOWN)
+ target->ShortcutKeyDown();
+ else
+ target->ShortcutKeyUp();
+
+ return B_SKIP_MESSAGE;
+ }
+ }
+
+ // let others deal with this
+ return B_DISPATCH_MESSAGE;
}
TransportButton::TransportButton(BRect frame, const char *name,
- const unsigned char *normalBits,
- const unsigned char *pressedBits,
- const unsigned char *disabledBits,
- BMessage *invokeMessage, BMessage *startPressingMessage,
- BMessage *pressingMessage, BMessage *donePressingMessage, bigtime_t period,
- uint32 key, uint32 modifiers, uint32 resizeFlags)
- : BControl(frame, name, "", invokeMessage, resizeFlags, B_WILL_DRAW | B_NAVIGABLE),
- bitmaps(new BitmapStash(this)),
- normalBits(normalBits),
- pressedBits(pressedBits),
- disabledBits(disabledBits),
- startPressingMessage(startPressingMessage),
- pressingMessage(pressingMessage),
- donePressingMessage(donePressingMessage),
- pressingPeriod(period),
- mouseDown(false),
- keyDown(false),
- messageSender(0),
- keyPressFilter(0)
-{
- if (key)
- keyPressFilter = new SkipButtonKeypressFilter(key, modifiers, this);
-}
-
-
-void
+ const unsigned char *normalBits,
+ const unsigned char *pressedBits,
+ const unsigned char *disabledBits,
+ BMessage *invokeMessage, BMessage *startPressingMessage,
+ BMessage *pressingMessage, BMessage *donePressingMessage, bigtime_t period,
+ uint32 key, uint32 modifiers, uint32 resizeFlags)
+ : BControl(frame, name, "", invokeMessage, resizeFlags, B_WILL_DRAW | B_NAVIGABLE),
+ bitmaps(new BitmapStash(this)),
+ normalBits(normalBits),
+ pressedBits(pressedBits),
+ disabledBits(disabledBits),
+ startPressingMessage(startPressingMessage),
+ pressingMessage(pressingMessage),
+ donePressingMessage(donePressingMessage),
+ pressingPeriod(period),
+ mouseDown(false),
+ keyDown(false),
+ messageSender(0),
+ keyPressFilter(0)
+{
+ if (key)
+ keyPressFilter = new SkipButtonKeypressFilter(key, modifiers, this);
+}
+
+
+void
TransportButton::AttachedToWindow()
{
- _inherited::AttachedToWindow();
- if (keyPressFilter)
- Window()->AddCommonFilter(keyPressFilter);
-
- // transparent to reduce flicker
- SetViewColor(B_TRANSPARENT_COLOR);
+ _inherited::AttachedToWindow();
+ if (keyPressFilter)
+ Window()->AddCommonFilter(keyPressFilter);
+
+ // transparent to reduce flicker
+ SetViewColor(B_TRANSPARENT_COLOR);
}
-void
+void
TransportButton::DetachedFromWindow()
{
- if (keyPressFilter)
- Window()->RemoveCommonFilter(keyPressFilter);
- _inherited::DetachedFromWindow();
+ if (keyPressFilter)
+ Window()->RemoveCommonFilter(keyPressFilter);
+ _inherited::DetachedFromWindow();
}
TransportButton::~TransportButton()
{
- delete startPressingMessage;
- delete pressingMessage;
- delete donePressingMessage;
- delete bitmaps;
- delete keyPressFilter;
+ delete startPressingMessage;
+ delete pressingMessage;
+ delete donePressingMessage;
+ delete bitmaps;
+ delete keyPressFilter;
}
-void
+void
TransportButton::WindowActivated(bool state)
{
- if (!state)
- ShortcutKeyUp();
-
- _inherited::WindowActivated(state);
+ if (!state)
+ ShortcutKeyUp();
+
+ _inherited::WindowActivated(state);
}
-void
+void
TransportButton::SetEnabled(bool on)
{
- if (on != IsEnabled()) {
- _inherited::SetEnabled(on);
- if (!on)
- ShortcutKeyUp();
- }
+ if (on != IsEnabled()) {
+ _inherited::SetEnabled(on);
+ if (!on)
+ ShortcutKeyUp();
+ }
}
const unsigned char *
TransportButton::BitsForMask(uint32 mask) const
{
- switch (mask) {
- case 0:
- return normalBits;
- case kDisabledMask:
- return disabledBits;
- case kPressedMask:
- return pressedBits;
- default:
- break;
- }
- TRESPASS();
- return 0;
+ switch (mask) {
+ case 0:
+ return normalBits;
+ case kDisabledMask:
+ return disabledBits;
+ case kPressedMask:
+ return pressedBits;
+ default:
+ break;
+ }
+ TRESPASS();
+ return 0;
}
BBitmap *
TransportButton::MakeBitmap(uint32 mask)
{
- BRect r(Bounds());
- BBitmap *result = new BBitmap(r, B_CMAP8);
-
- uint8* src = (uint8*)BitsForMask(mask);
-
- if (src && result && result->IsValid()) {
- // int32 width = r.IntegerWidth() + 1;
- int32 height = r.IntegerHeight() + 1;
- int32 bpr = result->BytesPerRow();
- uint8* dst = (uint8*)result->Bits();
- // copy source bits into bitmap line by line,
- // taking possible alignment into account
- // since the source data has been generated
- // by QuickRes, it still contains aligment too
- // (hence skipping bpr and not width bytes)
- for (int32 y = 0; y < height; y++) {
- memcpy(dst, src, bpr);
- src += bpr;
- dst += bpr;
- }
- ReplaceTransparentColor(result, Parent()->ViewColor());
- } else {
- delete result;
- result = NULL;
- }
-
- return result;
-}
-
-uint32
+ BRect r(Bounds());
+ BBitmap *result = new BBitmap(r, B_CMAP8);
+
+ uint8* src = (uint8*)BitsForMask(mask);
+
+ if (src && result && result->IsValid()) {
+ // int32 width = r.IntegerWidth() + 1;
+ int32 height = r.IntegerHeight() + 1;
+ int32 bpr = result->BytesPerRow();
+ uint8* dst = (uint8*)result->Bits();
+ // copy source bits into bitmap line by line,
+ // taking possible alignment into account
+ // since the source data has been generated
+ // by QuickRes, it still contains aligment too
+ // (hence skipping bpr and not width bytes)
+ for (int32 y = 0; y < height; y++) {
+ memcpy(dst, src, bpr);
+ src += bpr;
+ dst += bpr;
+ }
+ ReplaceTransparentColor(result, Parent()->ViewColor());
+ } else {
+ delete result;
+ result = NULL;
+ }
+
+ return result;
+}
+
+uint32
TransportButton::ModeMask() const
{
- return (IsEnabled() ? 0 : kDisabledMask)
- | (Value() ? kPressedMask : 0);
+ return (IsEnabled() ? 0 : kDisabledMask)
+ | (Value() ? kPressedMask : 0);
}
-void
+void
TransportButton::Draw(BRect)
{
- DrawBitmapAsync(bitmaps->GetBitmap(ModeMask()));
+ DrawBitmapAsync(bitmaps->GetBitmap(ModeMask()));
}
-void
+void
TransportButton::StartPressing()
{
- SetValue(1);
- if (startPressingMessage)
- Invoke(startPressingMessage);
-
- if (pressingMessage) {
- ASSERT(pressingMessage);
- messageSender = PeriodicMessageSender::Launch(Messenger(),
- pressingMessage, pressingPeriod);
- }
+ SetValue(1);
+ if (startPressingMessage)
+ Invoke(startPressingMessage);
+
+ if (pressingMessage) {
+ ASSERT(pressingMessage);
+ messageSender = PeriodicMessageSender::Launch(Messenger(),
+ pressingMessage, pressingPeriod);
+ }
}
-void
+void
TransportButton::MouseCancelPressing()
{
- if (!mouseDown || keyDown)
- return;
+ if (!mouseDown || keyDown)
+ return;
- mouseDown = false;
+ mouseDown = false;
- if (pressingMessage) {
- ASSERT(messageSender);
- PeriodicMessageSender *sender = messageSender;
- messageSender = 0;
- sender->Quit();
- }
+ if (pressingMessage) {
+ ASSERT(messageSender);
+ PeriodicMessageSender *sender = messageSender;
+ messageSender = 0;
+ sender->Quit();
+ }
- if (donePressingMessage)
- Invoke(donePressingMessage);
- SetValue(0);
+ if (donePressingMessage)
+ Invoke(donePressingMessage);
+ SetValue(0);
}
-void
+void
TransportButton::DonePressing()
-{
- if (pressingMessage) {
- ASSERT(messageSender);
- PeriodicMessageSender *sender = messageSender;
- messageSender = 0;
- sender->Quit();
- }
+{
+ if (pressingMessage) {
+ ASSERT(messageSender);
+ PeriodicMessageSender *sender = messageSender;
+ messageSender = 0;
+ sender->Quit();
+ }
- Invoke();
- SetValue(0);
+ Invoke();
+ SetValue(0);
}
-void
+void
TransportButton::MouseStartPressing()
{
- if (mouseDown)
- return;
-
- mouseDown = true;
- if (!keyDown)
- StartPressing();
+ if (mouseDown)
+ return;
+
+ mouseDown = true;
+ if (!keyDown)
+ StartPressing();
}
-void
+void
TransportButton::MouseDonePressing()
{
- if (!mouseDown)
- return;
-
- mouseDown = false;
- if (!keyDown)
- DonePressing();
+ if (!mouseDown)
+ return;
+
+ mouseDown = false;
+ if (!keyDown)
+ DonePressing();
}
-void
+void
TransportButton::ShortcutKeyDown()
{
- if (!IsEnabled())
- return;
+ if (!IsEnabled())
+ return;
- if (keyDown)
- return;
-
- keyDown = true;
- if (!mouseDown)
- StartPressing();
+ if (keyDown)
+ return;
+
+ keyDown = true;
+ if (!mouseDown)
+ StartPressing();
}
-void
+void
TransportButton::ShortcutKeyUp()
{
- if (!keyDown)
- return;
-
- keyDown = false;
- if (!mouseDown)
- DonePressing();
+ if (!keyDown)
+ return;
+
+ keyDown = false;
+ if (!mouseDown)
+ DonePressing();
}
-void
+void
TransportButton::MouseDown(BPoint)
{
- if (!IsEnabled())
- return;
+ if (!IsEnabled())
+ return;
- ASSERT(Window()->Flags() & B_ASYNCHRONOUS_CONTROLS);
- SetTracking(true);
- SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
- MouseStartPressing();
+ ASSERT(Window()->Flags() & B_ASYNCHRONOUS_CONTROLS);
+ SetTracking(true);
+ SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);
+ MouseStartPressing();
}
-void
+void
TransportButton::MouseMoved(BPoint point, uint32 code, const BMessage *)
{
- if (IsTracking() && Bounds().Contains(point) != Value()) {
- if (!Value())
- MouseStartPressing();
- else
- MouseCancelPressing();
- }
+ if (IsTracking() && Bounds().Contains(point) != Value()) {
+ if (!Value())
+ MouseStartPressing();
+ else
+ MouseCancelPressing();
+ }
}
-void
+void
TransportButton::MouseUp(BPoint point)
{
- if (IsTracking()) {
- if (Bounds().Contains(point))
- MouseDonePressing();
- else
- MouseCancelPressing();
- SetTracking(false);
- }
+ if (IsTracking()) {
+ if (Bounds().Contains(point))
+ MouseDonePressing();
+ else
+ MouseCancelPressing();
+ SetTracking(false);
+ }
}
-void
+void
TransportButton::SetStartPressingMessage(BMessage *message)
{
- delete startPressingMessage;
- startPressingMessage = message;
+ delete startPressingMessage;
+ startPressingMessage = message;
}
-void
+void
TransportButton::SetPressingMessage(BMessage *message)
{
- delete pressingMessage;
- pressingMessage = message;
+ delete pressingMessage;
+ pressingMessage = message;
}
-void
+void
TransportButton::SetDonePressingMessage(BMessage *message)
{
- delete donePressingMessage;
- donePressingMessage = message;
+ delete donePressingMessage;
+ donePressingMessage = message;
}
-void
+void
TransportButton::SetPressingPeriod(bigtime_t newTime)
{
- pressingPeriod = newTime;
+ pressingPeriod = newTime;
}
PlayPauseButton::PlayPauseButton(BRect frame, const char *name,
- const unsigned char *normalBits, const unsigned char *pressedBits,
- const unsigned char *disabledBits, const unsigned char *normalPlayingBits,
- const unsigned char *pressedPlayingBits, const unsigned char *normalPausedBits,
- const unsigned char *pressedPausedBits,
- BMessage *invokeMessage, uint32 key, uint32 modifiers, uint32 resizeFlags)
- : TransportButton(frame, name, normalBits, pressedBits,
- disabledBits, invokeMessage, 0,
- 0, 0, 0, key, modifiers, resizeFlags),
- normalPlayingBits(normalPlayingBits),
- pressedPlayingBits(pressedPlayingBits),
- normalPausedBits(normalPausedBits),
- pressedPausedBits(pressedPausedBits),
- state(PlayPauseButton::kStopped),
- lastPauseBlinkTime(0),
- lastModeMask(0)
-{
-}
-
-void
+ const unsigned char *normalBits, const unsigned char *pressedBits,
+ const unsigned char *disabledBits, const unsigned char *normalPlayingBits,
+ const unsigned char *pressedPlayingBits, const unsigned char *normalPausedBits,
+ const unsigned char *pressedPausedBits,
+ BMessage *invokeMessage, uint32 key, uint32 modifiers, uint32 resizeFlags)
+ : TransportButton(frame, name, normalBits, pressedBits,
+ disabledBits, invokeMessage, 0,
+ 0, 0, 0, key, modifiers, resizeFlags),
+ normalPlayingBits(normalPlayingBits),
+ pressedPlayingBits(pressedPlayingBits),
+ normalPausedBits(normalPausedBits),
+ pressedPausedBits(pressedPausedBits),
+ state(PlayPauseButton::kStopped),
+ lastPauseBlinkTime(0),
+ lastModeMask(0)
+{
+}
+
+void
PlayPauseButton::SetStopped()
{
- if (state == kStopped || state == kAboutToPlay)
- return;
-
- state = kStopped;
- Invalidate();
+ if (state == kStopped || state == kAboutToPlay)
+ return;
+
+ state = kStopped;
+ Invalidate();
}
-void
+void
PlayPauseButton::SetPlaying()
{
- if (state == kPlaying || state == kAboutToPause)
- return;
-
- state = kPlaying;
- Invalidate();
+ if (state == kPlaying || state == kAboutToPause)
+ return;
+
+ state = kPlaying;
+ Invalidate();
}
const bigtime_t kPauseBlinkPeriod = 600000;
-void
+void
PlayPauseButton::SetPaused()
{
- if (state == kAboutToPlay)
- return;
-
- // in paused state blink the LED on and off
- bigtime_t now = system_time();
- if (state == kPausedLedOn || state == kPausedLedOff) {
- if (now - lastPauseBlinkTime < kPauseBlinkPeriod)
- return;
-
- if (state == kPausedLedOn)
- state = kPausedLedOff;
- else
- state = kPausedLedOn;
- } else
- state = kPausedLedOn;
-
- lastPauseBlinkTime = now;
- Invalidate();
-}
-
-uint32
+ if (state == kAboutToPlay)
+ return;
+
+ // in paused state blink the LED on and off
+ bigtime_t now = system_time();
+ if (state == kPausedLedOn || state == kPausedLedOff) {
+ if (now - lastPauseBlinkTime < kPauseBlinkPeriod)
+ return;
+
+ if (state == kPausedLedOn)
+ state = kPausedLedOff;
+ else
+ state = kPausedLedOn;
+ } else
+ state = kPausedLedOn;
+
+ lastPauseBlinkTime = now;
+ Invalidate();
+}
+
+uint32
PlayPauseButton::ModeMask() const
{
- if (!IsEnabled())
- return kDisabledMask;
-
- uint32 result = 0;
+ if (!IsEnabled())
+ return kDisabledMask;
+
+ uint32 result = 0;
- if (Value())
- result = kPressedMask;
+ if (Value())
+ result = kPressedMask;
- if (state == kPlaying || state == kAboutToPlay)
- result |= kPlayingMask;
- else if (state == kAboutToPause || state == kPausedLedOn)
- result |= kPausedMask;
-
- return result;
+ if (state == kPlaying || state == kAboutToPlay)
+ result |= kPlayingMask;
+ else if (state == kAboutToPause || state == kPausedLedOn)
+ result |= kPausedMask;
+
+ return result;
}
const unsigned char *
PlayPauseButton::BitsForMask(uint32 mask) const
{
- switch (mask) {
- case kPlayingMask:
- return normalPlayingBits;
- case kPlayingMask | kPressedMask:
- return pressedPlayingBits;
- case kPausedMask:
- return normalPausedBits;
- case kPausedMask | kPressedMask:
- return pressedPausedBits;
- default:
- return _inherited::BitsForMask(mask);
- }
- TRESPASS();
- return 0;
+ switch (mask) {
+ case kPlayingMask:
+ return normalPlayingBits;
+ case kPlayingMask | kPressedMask:
+ return pressedPlayingBits;
+ case kPausedMask:
+ return normalPausedBits;
+ case kPausedMask | kPressedMask:
+ return pressedPausedBits;
+ default:
+ return _inherited::BitsForMask(mask);
+ }
+ TRESPASS();
+ return 0;
}
-void
+void
PlayPauseButton::StartPressing()
{
- if (state == kPlaying)
- state = kAboutToPause;
- else
- state = kAboutToPlay;
-
- _inherited::StartPressing();
+ if (state == kPlaying)
+ state = kAboutToPause;
+ else
+ state = kAboutToPlay;
+
+ _inherited::StartPressing();
}
-void
+void
PlayPauseButton::MouseCancelPressing()
{
- if (state == kAboutToPause)
- state = kPlaying;
- else
- state = kStopped;
-
- _inherited::MouseCancelPressing();
+ if (state == kAboutToPause)
+ state = kPlaying;
+ else
+ state = kStopped;
+
+ _inherited::MouseCancelPressing();
}
-void
+void
PlayPauseButton::DonePressing()
{
- if (state == kAboutToPause) {
- state = kPausedLedOn;
- lastPauseBlinkTime = system_time();
- } else if (state == kAboutToPlay)
- state = kPlaying;
-
- _inherited::DonePressing();
+ if (state == kAboutToPause) {
+ state = kPausedLedOn;
+ lastPauseBlinkTime = system_time();
+ } else if (state == kAboutToPlay)
+ state = kPlaying;
+
+ _inherited::DonePressing();
}
class TransportButton : public BControl {
public:
- TransportButton(BRect frame, const char *name,
- const unsigned char *normalBits,
- const unsigned char *pressedBits,
- const unsigned char *disabledBits,
- BMessage *invokeMessage, // done pressing over button
- BMessage *startPressingMessage = 0, // just clicked button
- BMessage *pressingMessage = 0, // periodical still pressing
- BMessage *donePressing = 0, // tracked out of button/didn't invoke
- bigtime_t period = 0, // pressing message period
- uint32 key = 0, // optional shortcut key
- uint32 modifiers = 0, // optional shortcut key modifier
- uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP);
-
- virtual ~TransportButton();
-
- void SetStartPressingMessage(BMessage *);
- void SetPressingMessage(BMessage *);
- void SetDonePressingMessage(BMessage *);
- void SetPressingPeriod(bigtime_t);
-
- virtual void SetEnabled(bool);
-
-protected:
-
- enum {
- kDisabledMask = 0x1,
- kPressedMask = 0x2
- };
-
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void Draw(BRect);
- virtual void MouseDown(BPoint);
- virtual void MouseMoved(BPoint, uint32 code, const BMessage *);
- virtual void MouseUp(BPoint);
- virtual void WindowActivated(bool);
-
- virtual BBitmap *MakeBitmap(uint32);
- // lazy bitmap builder
-
- virtual uint32 ModeMask() const;
- // mode mask corresponding to the current button state
- // - determines which bitmap will be used
- virtual const unsigned char *BitsForMask(uint32) const;
- // pick the right bits based on a mode mask
-
- // overriding class can add swapping between two pairs of bitmaps, etc.
- virtual void StartPressing();
- virtual void MouseCancelPressing();
- virtual void DonePressing();
+ TransportButton(BRect frame, const char *name,
+ const unsigned char *normalBits,
+ const unsigned char *pressedBits,
+ const unsigned char *disabledBits,
+ BMessage *invokeMessage, // done pressing over button
+ BMessage *startPressingMessage = 0, // just clicked button
+ BMessage *pressingMessage = 0, // periodical still pressing
+ BMessage *donePressing = 0, // tracked out of button/didn't invoke
+ bigtime_t period = 0, // pressing message period
+ uint32 key = 0, // optional shortcut key
+ uint32 modifiers = 0, // optional shortcut key modifier
+ uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP);
+
+ virtual ~TransportButton();
+
+ void SetStartPressingMessage(BMessage *);
+ void SetPressingMessage(BMessage *);
+ void SetDonePressingMessage(BMessage *);
+ void SetPressingPeriod(bigtime_t);
+
+ virtual void SetEnabled(bool);
+
+protected:
+
+ enum {
+ kDisabledMask = 0x1,
+ kPressedMask = 0x2
+ };
+
+ virtual void AttachedToWindow();
+ virtual void DetachedFromWindow();
+ virtual void Draw(BRect);
+ virtual void MouseDown(BPoint);
+ virtual void MouseMoved(BPoint, uint32 code, const BMessage *);
+ virtual void MouseUp(BPoint);
+ virtual void WindowActivated(bool);
+
+ virtual BBitmap *MakeBitmap(uint32);
+ // lazy bitmap builder
+
+ virtual uint32 ModeMask() const;
+ // mode mask corresponding to the current button state
+ // - determines which bitmap will be used
+ virtual const unsigned char *BitsForMask(uint32) const;
+ // pick the right bits based on a mode mask
+
+ // overriding class can add swapping between two pairs of bitmaps, etc.
+ virtual void StartPressing();
+ virtual void MouseCancelPressing();
+ virtual void DonePressing();
private:
- void ShortcutKeyDown();
- void ShortcutKeyUp();
-
- void MouseStartPressing();
- void MouseDonePressing();
-
- BitmapStash *bitmaps;
- // using BitmapStash * here instead of a direct member so that the class can be private in
- // the .cpp file
-
- // bitmap bits used to build bitmaps for the different states
- const unsigned char *normalBits;
- const unsigned char *pressedBits;
- const unsigned char *disabledBits;
-
- BMessage *startPressingMessage;
- BMessage *pressingMessage;
- BMessage *donePressingMessage;
- bigtime_t pressingPeriod;
-
- bool mouseDown;
- bool keyDown;
- PeriodicMessageSender *messageSender;
- BMessageFilter *keyPressFilter;
-
- typedef BControl _inherited;
-
- friend class SkipButtonKeypressFilter;
- friend class BitmapStash;
+ void ShortcutKeyDown();
+ void ShortcutKeyUp();
+
+ void MouseStartPressing();
+ void MouseDonePressing();
+
+ BitmapStash *bitmaps;
+ // using BitmapStash * here instead of a direct member so that the class can be private in
+ // the .cpp file
+
+ // bitmap bits used to build bitmaps for the different states
+ const unsigned char *normalBits;
+ const unsigned char *pressedBits;
+ const unsigned char *disabledBits;
+
+ BMessage *startPressingMessage;
+ BMessage *pressingMessage;
+ BMessage *donePressingMessage;
+ bigtime_t pressingPeriod;
+
+ bool mouseDown;
+ bool keyDown;
+ PeriodicMessageSender *messageSender;
+ BMessageFilter *keyPressFilter;
+
+ typedef BControl _inherited;
+
+ friend class SkipButtonKeypressFilter;
+ friend class BitmapStash;
};
class PlayPauseButton : public TransportButton {
// Knows about playing and paused states, blinks
// the pause LED during paused state
public:
- PlayPauseButton(BRect frame, const char *name,
- const unsigned char *normalBits,
- const unsigned char *pressedBits,
- const unsigned char *disabledBits,
- const unsigned char *normalPlayingBits,
- const unsigned char *pressedPlayingBits,
- const unsigned char *normalPausedBits,
- const unsigned char *pressedPausedBits,
- BMessage *invokeMessage, // done pressing over button
- uint32 key = 0, // optional shortcut key
- uint32 modifiers = 0, // optional shortcut key modifier
- uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP);
-
- // These need get called periodically to update the button state
- // OK to call them over and over - once the state is correct, the call
- // is very low overhead
- void SetStopped();
- void SetPlaying();
- void SetPaused();
+ PlayPauseButton(BRect frame, const char *name,
+ const unsigned char *normalBits,
+ const unsigned char *pressedBits,
+ const unsigned char *disabledBits,
+ const unsigned char *normalPlayingBits,
+ const unsigned char *pressedPlayingBits,
+ const unsigned char *normalPausedBits,
+ const unsigned char *pressedPausedBits,
+ BMessage *invokeMessage, // done pressing over button
+ uint32 key = 0, // optional shortcut key
+ uint32 modifiers = 0, // optional shortcut key modifier
+ uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP);
+
+ // These need get called periodically to update the button state
+ // OK to call them over and over - once the state is correct, the call
+ // is very low overhead
+ void SetStopped();
+ void SetPlaying();
+ void SetPaused();
protected:
-
- virtual uint32 ModeMask() const;
- virtual const unsigned char *BitsForMask(uint32) const;
+
+ virtual uint32 ModeMask() const;
+ virtual const unsigned char *BitsForMask(uint32) const;
- virtual void StartPressing();
- virtual void MouseCancelPressing();
- virtual void DonePressing();
+ virtual void StartPressing();
+ virtual void MouseCancelPressing();
+ virtual void DonePressing();
private:
- const unsigned char *normalPlayingBits;
- const unsigned char *pressedPlayingBits;
- const unsigned char *normalPausedBits;
- const unsigned char *pressedPausedBits;
-
- enum PlayState {
- kStopped,
- kAboutToPlay,
- kPlaying,
- kAboutToPause,
- kPausedLedOn,
- kPausedLedOff
- };
-
- enum {
- kPlayingMask = 0x4,
- kPausedMask = 0x8
- };
-
- PlayState state;
- bigtime_t lastPauseBlinkTime;
- uint32 lastModeMask;
-
- typedef TransportButton _inherited;
+ const unsigned char *normalPlayingBits;
+ const unsigned char *pressedPlayingBits;
+ const unsigned char *normalPausedBits;
+ const unsigned char *pressedPausedBits;
+
+ enum PlayState {
+ kStopped,
+ kAboutToPlay,
+ kPlaying,
+ kAboutToPause,
+ kPausedLedOn,
+ kPausedLedOff
+ };
+
+ enum {
+ kPlayingMask = 0x4,
+ kPausedMask = 0x8
+ };
+
+ PlayState state;
+ bigtime_t lastPauseBlinkTime;
+ uint32 lastModeMask;
+
+ typedef TransportButton _inherited;
};
-#endif // __MEDIA_BUTTON__
+#endif // __MEDIA_BUTTON__
BMenuItem *zoomItem = new BMenuItem(_("Fullscreen"), new BMessage(TOGGLE_FULL_SCREEN));
zoomItem->SetMarked(videoWindow->IsFullScreen());
menu->AddItem(zoomItem);
-
+
menu->AddSeparatorItem();
-
+
// Toggle vSync
BMenuItem *vsyncItem = new BMenuItem(_("Vertical Sync"), new BMessage(VERT_SYNC));
vsyncItem->SetMarked(videoWindow->IsSyncedToRetrace());
BMenuItem *aspectItem = new BMenuItem(_("Correct Aspect Ratio"), new BMessage(ASPECT_CORRECT));
aspectItem->SetMarked(videoWindow->CorrectAspectRatio());
menu->AddItem(aspectItem);
-
+
menu->AddSeparatorItem();
-
+
// Window Feel Items
/* BMessage *winNormFeel = new BMessage(WINDOW_FEEL);
winNormFeel->AddInt32("WinFeel", (int32_t)B_NORMAL_WINDOW_FEEL);
BMenuItem *normWindItem = new BMenuItem("Normal Window", winNormFeel);
normWindItem->SetMarked(videoWindow->Feel() == B_NORMAL_WINDOW_FEEL);
menu->AddItem(normWindItem);
-
+
BMessage *winFloatFeel = new BMessage(WINDOW_FEEL);
winFloatFeel->AddInt32("WinFeel", (int32_t)B_FLOATING_APP_WINDOW_FEEL);
BMenuItem *onTopWindItem = new BMenuItem("App Top", winFloatFeel);
onTopWindItem->SetMarked(videoWindow->Feel() == B_FLOATING_APP_WINDOW_FEEL);
menu->AddItem(onTopWindItem);
-
+
BMessage *winAllFeel = new BMessage(WINDOW_FEEL);
winAllFeel->AddInt32("WinFeel", (int32_t)B_FLOATING_ALL_WINDOW_FEEL);
BMenuItem *allSpacesWindItem = new BMenuItem("On Top All Workspaces", winAllFeel);
{
be_app->ObscureCursor();
fCursorHidden = true;
-
+
// hide the interface window as well if full screen
if (videoWindow && videoWindow->IsFullScreen())
videoWindow->SetInterfaceShowing(false);
}
// Workaround to disable the screensaver in full screen:
- // we simulate an activity every 29 seconds
+ // we simulate an activity every 29 seconds
if( videoWindow && videoWindow->IsFullScreen() &&
mdate() - fLastMouseMovedTime > 29000000 )
{
typedef struct colorcombo
{
- color_space colspace;
- const char *name;
- uint32_t chroma;
- int planes;
- int pixel_bytes;
+ color_space colspace;
+ const char *name;
+ uint32_t chroma;
+ int planes;
+ int pixel_bytes;
} colorcombo;
colorcombo colspace[]=
{
- {B_YCbCr420, "B_YCbCr420", VLC_FOURCC('I','4','2','0'), 3, 2},
- {B_YUV422, "B_YUV422", VLC_FOURCC('Y','4','2','2'), 3, 2},
- {B_YCbCr422, "B_YCbCr422", VLC_FOURCC('Y','U','Y','2'), 3, 2},
- {B_RGB32, "B_RGB32", VLC_FOURCC('R','V','3','2'), 1, 4},
- {B_RGB16, "B_RGB16", VLC_FOURCC('R','V','1','6'), 1, 2}
+ {B_YCbCr420, "B_YCbCr420", VLC_FOURCC('I','4','2','0'), 3, 2},
+ {B_YUV422, "B_YUV422", VLC_FOURCC('Y','4','2','2'), 3, 2},
+ {B_YCbCr422, "B_YCbCr422", VLC_FOURCC('Y','U','Y','2'), 3, 2},
+ {B_RGB32, "B_RGB32", VLC_FOURCC('R','V','3','2'), 1, 4},
+ {B_RGB16, "B_RGB16", VLC_FOURCC('R','V','1','6'), 1, 2}
};
#define COLOR_COUNT 5
class VideoSettings
{
public:
- VideoSettings( const VideoSettings& clone );
- virtual ~VideoSettings();
-
- static VideoSettings* DefaultSettings();
-
- enum
- {
- SIZE_OTHER = 0,
- SIZE_50 = 1,
- SIZE_100 = 2,
- SIZE_200 = 3,
- };
-
- void SetVideoSize( uint32_t mode );
- inline uint32_t VideoSize() const
- { return fVideoSize; }
- enum
- {
- FLAG_CORRECT_RATIO = 0x0001,
- FLAG_SYNC_RETRACE = 0x0002,
- FLAG_ON_TOP_ALL = 0x0004,
- FLAG_FULL_SCREEN = 0x0008,
- };
-
- inline void SetFlags( uint32_t flags )
- { fFlags = flags; }
- inline void AddFlags( uint32_t flags )
- { fFlags |= flags; }
- inline void ClearFlags( uint32_t flags )
- { fFlags &= ~flags; }
- inline bool HasFlags( uint32_t flags ) const
- { return fFlags & flags; }
- inline uint32_t Flags() const
- { return fFlags; }
+ VideoSettings( const VideoSettings& clone );
+ virtual ~VideoSettings();
+
+ static VideoSettings* DefaultSettings();
+
+ enum
+ {
+ SIZE_OTHER = 0,
+ SIZE_50 = 1,
+ SIZE_100 = 2,
+ SIZE_200 = 3,
+ };
+
+ void SetVideoSize( uint32_t mode );
+ inline uint32_t VideoSize() const
+ { return fVideoSize; }
+ enum
+ {
+ FLAG_CORRECT_RATIO = 0x0001,
+ FLAG_SYNC_RETRACE = 0x0002,
+ FLAG_ON_TOP_ALL = 0x0004,
+ FLAG_FULL_SCREEN = 0x0008,
+ };
+
+ inline void SetFlags( uint32_t flags )
+ { fFlags = flags; }
+ inline void AddFlags( uint32_t flags )
+ { fFlags |= flags; }
+ inline void ClearFlags( uint32_t flags )
+ { fFlags &= ~flags; }
+ inline bool HasFlags( uint32_t flags ) const
+ { return fFlags & flags; }
+ inline uint32_t Flags() const
+ { return fFlags; }
private:
- VideoSettings(); // reserved for default settings
+ VideoSettings(); // reserved for default settings
- static VideoSettings fDefaultSettings;
+ static VideoSettings fDefaultSettings;
- uint32_t fVideoSize;
- uint32_t fFlags;
- BMessage* fSettings;
+ uint32_t fVideoSize;
+ uint32_t fFlags;
+ BMessage* fSettings;
};
class VLCView : public BView
{
public:
- VLCView( BRect bounds, vout_thread_t *p_vout );
- virtual ~VLCView();
+ VLCView( BRect bounds, vout_thread_t *p_vout );
+ virtual ~VLCView();
- virtual void AttachedToWindow();
- virtual void MouseDown(BPoint where);
- virtual void MouseUp(BPoint where);
- virtual void MouseMoved(BPoint where, uint32 transit,
- const BMessage* dragMessage);
- virtual void Pulse();
- virtual void Draw(BRect updateRect);
+ virtual void AttachedToWindow();
+ virtual void MouseDown(BPoint where);
+ virtual void MouseUp(BPoint where);
+ virtual void MouseMoved(BPoint where, uint32 transit,
+ const BMessage* dragMessage);
+ virtual void Pulse();
+ virtual void Draw(BRect updateRect);
private:
vout_thread_t *p_vout;
- bigtime_t fLastMouseMovedTime;
- bool fCursorHidden;
- bool fCursorInside;
- bool fIgnoreDoubleClick;
+ bigtime_t fLastMouseMovedTime;
+ bool fCursorHidden;
+ bool fCursorInside;
+ bool fIgnoreDoubleClick;
};
class VideoWindow : public BWindow
{
public:
- VideoWindow(int v_width,
- int v_height,
- BRect frame,
- vout_thread_t *p_vout);
- virtual ~VideoWindow();
-
- // BWindow
- virtual void MessageReceived(BMessage* message);
- virtual void Zoom(BPoint origin,
- float width, float height);
- virtual void FrameResized(float width, float height);
- virtual void FrameMoved(BPoint origin);
- virtual void ScreenChanged(BRect frame,
- color_space mode);
- virtual void WindowActivated(bool active);
-
- // VideoWindow
- void drawBuffer(int bufferIndex);
-
- void ToggleInterfaceShowing();
- void SetInterfaceShowing(bool showIt);
-
- void SetCorrectAspectRatio(bool doIt);
- bool CorrectAspectRatio() const;
- void ToggleFullScreen();
- void SetFullScreen(bool doIt);
- bool IsFullScreen() const;
- void SetOnTop(bool doIt);
- bool IsOnTop() const;
- void SetSyncToRetrace(bool doIt);
- bool IsSyncedToRetrace() const;
- inline status_t InitCheck() const
- { return fInitStatus; }
+ VideoWindow(int v_width,
+ int v_height,
+ BRect frame,
+ vout_thread_t *p_vout);
+ virtual ~VideoWindow();
+
+ // BWindow
+ virtual void MessageReceived(BMessage* message);
+ virtual void Zoom(BPoint origin,
+ float width, float height);
+ virtual void FrameResized(float width, float height);
+ virtual void FrameMoved(BPoint origin);
+ virtual void ScreenChanged(BRect frame,
+ color_space mode);
+ virtual void WindowActivated(bool active);
+
+ // VideoWindow
+ void drawBuffer(int bufferIndex);
+
+ void ToggleInterfaceShowing();
+ void SetInterfaceShowing(bool showIt);
+
+ void SetCorrectAspectRatio(bool doIt);
+ bool CorrectAspectRatio() const;
+ void ToggleFullScreen();
+ void SetFullScreen(bool doIt);
+ bool IsFullScreen() const;
+ void SetOnTop(bool doIt);
+ bool IsOnTop() const;
+ void SetSyncToRetrace(bool doIt);
+ bool IsSyncedToRetrace() const;
+ inline status_t InitCheck() const
+ { return fInitStatus; }
// this is the hook controling direct screen connection
int32_t i_width; // aspect corrected bitmap size
int32_t i_height;
BRect winSize; // current window size
- BBitmap *bitmap[3];
+ BBitmap *bitmap[3];
// BBitmap *overlaybitmap;
- VLCView *view;
+ VLCView *view;
int i_buffer;
- volatile bool teardownwindow;
+ volatile bool teardownwindow;
thread_id fDrawThreadID;
int mode;
int bitmap_count;
int colspace_index;
private:
- status_t _AllocateBuffers(int width,
- int height,
- int* mode);
- void _FreeBuffers();
- void _BlankBitmap(BBitmap* bitmap) const;
- void _SetVideoSize(uint32_t mode);
- void _SetToSettings();
+ status_t _AllocateBuffers(int width,
+ int height,
+ int* mode);
+ void _FreeBuffers();
+ void _BlankBitmap(BBitmap* bitmap) const;
+ void _SetVideoSize(uint32_t mode);
+ void _SetToSettings();
vout_thread_t *p_vout;
- int32_t fTrueWidth; // incomming bitmap size
- int32_t fTrueHeight;
- window_feel fCachedFeel;
- bool fInterfaceShowing;
- status_t fInitStatus;
- VideoSettings* fSettings;
+ int32_t fTrueWidth; // incomming bitmap size
+ int32_t fTrueHeight;
+ window_feel fCachedFeel;
+ bool fInterfaceShowing;
+ status_t fInitStatus;
+ VideoSettings* fSettings;
};
-#endif // BEOS_VIDEO_WINDOW_H
+#endif // BEOS_VIDEO_WINDOW_H
* AppleRemote
* $Id$
*
- * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
- * Permission is hereby granted, free of charge, to any person obtaining a
+ * 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,
*
* 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
+ * 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
* Note that changes made by any members or contributors of the VideoLAN team
* (i.e. changes that were checked in exclusively into one of VideoLAN's source code
* repositories) are licensed under the GNU General Public License version 2,
- * or (at your option) any later version.
+ * or (at your option) any later version.
* Thus, the following statements apply to our changes:
*
* Copyright (C) 2006-2007 the VideoLAN team
IOHIDQueueInterface** queue;
NSMutableArray* allCookies;
NSMutableDictionary* cookieToButtonMapping;
-
+
BOOL openInExclusiveMode;
BOOL simulatePlusMinusHold;
BOOL processesBacklog;
-
+
/* state for simulating plus/minus hold */
BOOL lastEventSimulatedHold;
AppleRemoteEventIdentifier lastPlusMinusEvent;
NSTimeInterval lastPlusMinusEventTime;
-
+
int remoteId;
unsigned int clickCountEnabledButtons;
NSTimeInterval maxClickTimeDifference;
- NSTimeInterval lastClickCountEventTime;
+ NSTimeInterval lastClickCountEventTime;
AppleRemoteEventIdentifier lastClickCountEvent;
unsigned int eventClickCount;
-
+
IBOutlet id delegate;
}
- (void) setProcessesBacklog: (BOOL) value;
/* Sets an NSApplication delegate which starts listening when application is becoming active
- * and stops listening when application resigns being active.
+ * and stops listening when application resigns being active.
* If an NSApplication delegate has been already set all method calls will be forwarded to this delegate, too. */
- (BOOL) listeningOnAppActivate;
- (void) setListeningOnAppActivate: (BOOL) value;
@end
-@interface AppleRemote (PrivateMethods)
+@interface AppleRemote (PrivateMethods)
- (void) setRemoteId: (int) aValue;
- (NSDictionary*) cookieToButtonMapping;
- (IOHIDQueueInterface**) queue;
- (IOHIDDeviceInterface**) hidDeviceInterface;
-- (void) handleEventWithCookieString: (NSString*) cookieString sumOfValues: (SInt32) sumOfValues;
+- (void) handleEventWithCookieString: (NSString*) cookieString sumOfValues: (SInt32) sumOfValues;
@end
-@interface AppleRemote (IOKitMethods)
+@interface AppleRemote (IOKitMethods)
- (io_object_t) findAppleRemoteDevice;
- (IOHIDDeviceInterface**) createInterfaceForDevice: (io_object_t) hidDevice;
- (BOOL) initializeCookies;
- (id) initWithApplicationDelegate: (id) delegate;
- (id) applicationDelegate;
-@end
\ No newline at end of file
* AppleRemote
* $Id$
*
- * Created by Martin Kahr on 11.03.06 under a MIT-style license.
+ * Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
- * Permission is hereby granted, free of charge, to any person obtaining a
+ * 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,
*
* 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
+ * 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
* Note that changes made by any members or contributors of the VideoLAN team
* (i.e. changes that were exclusively checked in to one of VideoLAN's source code
* repositories) are licensed under the GNU General Public License version 2,
- * or (at your option) any later version.
+ * or (at your option) any later version.
* Thus, the following statements apply to our changes:
*
* Copyright (C) 2006-2007 the VideoLAN team
#pragma public interface
-- (id) init {
+- (id) init {
if ( self = [super init] ) {
openInExclusiveMode = YES;
queue = NULL;
cookieToButtonMapping = [[NSMutableDictionary alloc] init];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonVolume_Plus] forKey:@"14_12_11_6_"];
- [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonVolume_Minus] forKey:@"14_13_11_6_"];
- [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"14_7_6_14_7_6_"];
+ [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonVolume_Minus] forKey:@"14_13_11_6_"];
+ [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu] forKey:@"14_7_6_14_7_6_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay] forKey:@"14_8_6_14_8_6_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight] forKey:@"14_9_6_14_9_6_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft] forKey:@"14_10_6_14_10_6_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"14_6_3_2_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"14_6_14_6_"];
[cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Sleep] forKey:@"18_14_6_18_14_6_"];
- [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
+ [cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
/* defaults */
[self setSimulatesPlusMinusHold: YES];
return remoteId;
}
-- (BOOL) isRemoteAvailable {
+- (BOOL) isRemoteAvailable {
io_object_t hidDevice = [self findAppleRemoteDevice];
if (hidDevice != 0) {
IOObjectRelease(hidDevice);
return YES;
} else {
- return NO;
+ return NO;
}
}
- (BOOL) isListeningToRemote {
- return (hidDeviceInterface != NULL && allCookies != NULL && queue != NULL);
+ return (hidDeviceInterface != NULL && allCookies != NULL && queue != NULL);
}
- (void) setListeningToRemote: (BOOL) value {
/* Delegates are not retained!
* http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/chapter_6_section_4.html
- * Delegating objects do not (and should not) retain their delegates.
+ * Delegating objects do not (and should not) retain their delegates.
* However, clients of delegating objects (applications, usually) are responsible for ensuring that their delegates are around
* to receive delegation messages. To do this, they may have to retain the delegate. */
- (void) setDelegate: (id) _delegate {
simulatePlusMinusHold = value;
}
-- (IBAction) startListening: (id) sender {
+- (IBAction) startListening: (id) sender {
if ([self isListeningToRemote]) return;
io_object_t hidDevice = [self findAppleRemoteDevice];
error:
[self stopListening:self];
-cleanup:
+cleanup:
IOObjectRelease(hidDevice);
}
- (IBAction) stopListening: (id) sender {
if (queue != NULL) {
- (*queue)->stop(queue);
+ (*queue)->stop(queue);
//dispose of queue
- (*queue)->dispose(queue);
+ (*queue)->dispose(queue);
//release the queue we allocated
- (*queue)->Release(queue);
+ (*queue)->Release(queue);
queue = NULL;
}
//close the device
(*hidDeviceInterface)->close(hidDeviceInterface);
- //release the interface
+ //release the interface
(*hidDeviceInterface)->Release(hidDeviceInterface);
- hidDeviceInterface = NULL;
- }
+ hidDeviceInterface = NULL;
+ }
}
@end
-@implementation AppleRemote (Singleton)
+@implementation AppleRemote (Singleton)
static AppleRemote* sharedInstance=nil;
-+ (AppleRemote*) sharedRemote {
++ (AppleRemote*) sharedRemote {
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[self alloc] init];
if (sharedInstance == nil) {
return [super allocWithZone:zone];
}
- }
+ }
return sharedInstance;
}
- (id)copyWithZone:(NSZone *)zone {
@end
-@implementation AppleRemote (PrivateMethods)
+@implementation AppleRemote (PrivateMethods)
- (void) setRemoteId: (int) value {
remoteId = value;
NSString* key;
while(key = [keyEnum nextObject]) {
NSRange range = [cookieString rangeOfString:key];
- if (range.location == 0) return key;
+ if (range.location == 0) return key;
}
return nil;
}
if (pressedDown) {
lastPlusMinusEvent = event;
lastPlusMinusEventTime = [NSDate timeIntervalSinceReferenceDate];
- [self performSelector:@selector(sendSimulatedPlusMinusEvent:)
+ [self performSelector:@selector(sendSimulatedPlusMinusEvent:)
withObject:[NSNumber numberWithDouble:lastPlusMinusEventTime]
afterDelay:HOLD_RECOGNITION_TIME_INTERVAL];
return;
timeNumber = [NSNumber numberWithDouble:lastClickCountEventTime];
eventNumber= [NSNumber numberWithUnsignedInt:event];
}
- [self performSelector: @selector(executeClickCountEvent:)
+ [self performSelector: @selector(executeClickCountEvent:)
withObject: [NSArray arrayWithObjects:eventNumber, timeNumber, nil]
afterDelay: maxClickTimeDifference];
} else {
[delegate appleRemoteButton:event pressedDown: pressedDown clickCount:1];
- }
+ }
}
}
- (void) executeClickCountEvent: (NSArray*) values {
- AppleRemoteEventIdentifier event = [[values objectAtIndex: 0] unsignedIntValue];
+ AppleRemoteEventIdentifier event = [[values objectAtIndex: 0] unsignedIntValue];
NSTimeInterval eventTimePoint = [[values objectAtIndex: 1] doubleValue];
BOOL finishedClicking = NO;
- int finalClickCount = eventClickCount;
+ int finalClickCount = eventClickCount;
@synchronized(self) {
finishedClicking = (event != lastClickCountEvent || eventTimePoint == lastClickCountEventTime);
- if (finishedClicking) eventClickCount = 0;
+ if (finishedClicking) eventClickCount = 0;
}
- if (finishedClicking) {
- [delegate appleRemoteButton:event pressedDown: YES clickCount:finalClickCount];
+ if (finishedClicking) {
+ [delegate appleRemoteButton:event pressedDown: YES clickCount:finalClickCount];
if ([self simulatesPlusMinusHold]==NO && (event == kRemoteButtonVolume_Minus || event == kRemoteButtonVolume_Plus)) {
// trigger a button release event, too
[NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow:0.1]];
if (previousRemainingCookieString) {
cookieString = [previousRemainingCookieString stringByAppendingString: cookieString];
NSLog(@"New cookie string is %@", cookieString);
- [previousRemainingCookieString release], previousRemainingCookieString=nil;
+ [previousRemainingCookieString release], previousRemainingCookieString=nil;
}*/
if (cookieString == nil || [cookieString length] == 0) return;
NSNumber* buttonId = [[self cookieToButtonMapping] objectForKey: cookieString];
// happen when the main thread is too busy to handle all incoming events in time.
NSString* subCookieString;
NSString* lastSubCookieString=nil;
- while(subCookieString = [self validCookieSubstring: cookieString]) {
+ while(subCookieString = [self validCookieSubstring: cookieString]) {
cookieString = [cookieString substringFromIndex: [subCookieString length]];
lastSubCookieString = subCookieString;
if (processesBacklog) [self handleEventWithCookieString: subCookieString sumOfValues:sumOfValues];
}
if (processesBacklog == NO && lastSubCookieString != nil) {
// process the last event of the backlog and assume that the button is not pressed down any longer.
- // The events in the backlog do not seem to be in order and therefore (in rare cases) the last event might be
- // a button pressed down event while in reality the user has released it.
+ // The events in the backlog do not seem to be in order and therefore (in rare cases) the last event might be
+ // a button pressed down event while in reality the user has released it.
// NSLog(@"processing last event of backlog");
[self handleEventWithCookieString: lastSubCookieString sumOfValues:0];
}
if ([cookieString length] > 0) {
NSLog(@"Unknown button for cookiestring %@", cookieString);
- }
+ }
}
}
/* Callback method for the device queue
Will be called for any event of any type (cookie) to which we subscribe
*/
-static void QueueCallbackFunction(void* target, IOReturn result, void* refcon, void* sender) {
+static void QueueCallbackFunction(void* target, IOReturn result, void* refcon, void* sender) {
AppleRemote* remote = (AppleRemote*)target;
- IOHIDEventStruct event;
+ IOHIDEventStruct event;
AbsoluteTime zeroTime = {0,0};
NSMutableString* cookieString = [NSMutableString string];
SInt32 sumOfValues = 0;
while (result == kIOReturnSuccess)
{
- result = (*[remote queue])->getNextEvent([remote queue], &event, zeroTime, 0);
+ result = (*[remote queue])->getNextEvent([remote queue], &event, zeroTime, 0);
if ( result != kIOReturnSuccess )
continue;
- //printf("%d %d %d\n", event.elementCookie, event.value, event.longValue);
+ //printf("%d %d %d\n", event.elementCookie, event.value, event.longValue);
if (REMOTE_SWITCH_COOKIE == (int)event.elementCookie) {
[remote setRemoteId: event.value];
sumOfValues+=event.value;
[cookieString appendString:[NSString stringWithFormat:@"%d_", event.elementCookie]];
}
- }
+ }
}
- [remote handleEventWithCookieString: cookieString sumOfValues: sumOfValues];
+ [remote handleEventWithCookieString: cookieString sumOfValues: sumOfValues];
}
@implementation AppleRemote (IOKitMethods)
- (io_object_t) findAppleRemoteDevice {
CFMutableDictionaryRef hidMatchDictionary = NULL;
- IOReturn ioReturnValue = kIOReturnSuccess;
+ IOReturn ioReturnValue = kIOReturnSuccess;
io_iterator_t hidObjectIterator = 0;
io_object_t hidDevice = 0;
if (success == kIOReturnSuccess) {
- [elements autorelease];
+ [elements autorelease];
/*
- cookies = calloc(NUMBER_OF_APPLE_REMOTE_ACTIONS, sizeof(IOHIDElementCookie));
+ cookies = calloc(NUMBER_OF_APPLE_REMOTE_ACTIONS, sizeof(IOHIDElementCookie));
memset(cookies, 0, sizeof(IOHIDElementCookie) * NUMBER_OF_APPLE_REMOTE_ACTIONS);
*/
allCookies = [[NSMutableArray alloc] init];
//Get usage
object = [element valueForKey: (NSString*)CFSTR(kIOHIDElementUsageKey) ];
- if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
+ if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
usage = [object longValue];
//Get usage page
object = [element valueForKey: (NSString*)CFSTR(kIOHIDElementUsagePageKey) ];
- if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
+ if (object == nil || ![object isKindOfClass:[NSNumber class]]) continue;
usagePage = [object longValue];
[allCookies addObject: [NSNumber numberWithInt:(int)cookie]];
HRESULT result;
IOHIDOptionsType openMode = kIOHIDOptionsTypeNone;
- if ([self isOpenInExclusiveMode]) openMode = kIOHIDOptionsTypeSeizeDevice;
- IOReturn ioReturnValue = (*hidDeviceInterface)->open(hidDeviceInterface, openMode);
+ if ([self isOpenInExclusiveMode]) openMode = kIOHIDOptionsTypeSeizeDevice;
+ IOReturn ioReturnValue = (*hidDeviceInterface)->open(hidDeviceInterface, openMode);
if (ioReturnValue == KERN_SUCCESS) {
queue = (*hidDeviceInterface)->allocQueue(hidDeviceInterface);
if (ioReturnValue == KERN_SUCCESS) {
ioReturnValue = (*queue)->setEventCallout(queue,QueueCallbackFunction, self, NULL);
if (ioReturnValue == KERN_SUCCESS) {
- CFRunLoopAddSource(CFRunLoopGetCurrent(), eventSource, kCFRunLoopDefaultMode);
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), eventSource, kCFRunLoopDefaultMode);
//start data delivery to queue
- (*queue)->start(queue);
+ (*queue)->start(queue);
return YES;
} else {
NSLog(@"Error when setting event callout");
NSLog(@"Error when opening device");
}
}
- return NO;
+ return NO;
}
@end
if ([applicationDelegate respondsToSelector: @selector(applicationDidBecomeActive:)]) {
[applicationDelegate applicationDidBecomeActive: aNotification];
- }
+ }
}
- (void)applicationWillResignActive:(NSNotification *)aNotification {
[[AppleRemote sharedRemote] setListeningToRemote: NO];
if ([applicationDelegate respondsToSelector: @selector(applicationWillResignActive:)]) {
[applicationDelegate applicationWillResignActive: aNotification];
- }
+ }
}
- (void)applicationDidResignActive:(NSNotification *)aNotification {
if ([applicationDelegate respondsToSelector: @selector(applicationDidResignActive:)]) {
[applicationDelegate applicationDidResignActive: aNotification];
- }
+ }
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
[invocation invokeWithTarget:applicationDelegate];
}
-@end
\ No newline at end of file
* $Id$
*
* Authors: Derk-Jan Hartman <thedj@users.sourceforge.net>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
/*****************************************************************************
- * VLAboutBox interface
+ * VLAboutBox interface
*****************************************************************************/
@interface VLAboutBox : NSObject
{
IBOutlet id o_copyright_field;
IBOutlet id o_credits_textview;
IBOutlet id o_credits_scrollview;
-
+
NSTimer *o_scroll_timer;
float f_current;
float f_end;
NSTimeInterval i_start;
BOOL b_restart;
-
+
NSString *o_credits_path;
NSString *o_credits;
NSString *o_thanks;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#include "about.h"
/*****************************************************************************
- * VLAboutBox implementation
+ * VLAboutBox implementation
*****************************************************************************/
@implementation VLAboutBox
return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
}
-- (id)init
+- (id)init
{
if (_o_sharedInstance) {
[self dealloc];
} else {
_o_sharedInstance = [super init];
}
-
+
return _o_sharedInstance;
}
- (void)showPanel
-{
+{
if (!o_credits_path)
{
NSString *o_name;
NSString *o_version;
NSString *o_thanks_path;
-
+
/* Get the info dictionary (Info.plist) */
o_info_dict = [[NSBundle mainBundle] infoDictionary];
-
+
/* Get the localized info dictionary (InfoPlist.strings) */
localInfoBundle = CFBundleGetMainBundle();
o_local_dict = (NSDictionary *)
CFBundleGetLocalInfoDictionary( localInfoBundle );
-
+
/* Setup the name field */
o_name = [o_local_dict objectForKey:@"CFBundleName"];
-
+
/* Set the about box title */
[o_about_window setTitle:_NS("About VLC media player")];
-
+
/* Setup the version field */
o_version = [o_info_dict objectForKey:@"CFBundleVersion"];
-
+
/* setup the creator / revision field */
if( VLC_Changeset() != "exported" )
[o_revision_field setStringValue: [NSString stringWithFormat: \
else
[o_revision_field setStringValue: [NSString stringWithFormat: \
_NS("Compiled by %s"), VLC_CompileBy()]];
-
+
/* Setup the nameversion field */
o_name_version = [NSString stringWithFormat:@"Version %@", o_version];
[o_name_version_field setStringValue: o_name_version];
-
+
/* Setup our credits */
o_credits_path = [[NSBundle mainBundle] pathForResource:@"AUTHORS" ofType:nil];
o_credits = [[NSString alloc] initWithData: [NSData dataWithContentsOfFile: o_credits_path ] encoding:NSUTF8StringEncoding];
-
+
/* Parse the authors string */
NSMutableString *o_outString = [NSMutableString stringWithFormat: @"%@\n\n", _NS(INTF_ABOUT_MSG)];
NSScanner *o_scan_credits = [NSScanner scannerWithString: o_credits];
NSCharacterSet *o_stopSet = [NSCharacterSet characterSetWithCharactersInString:@"\n\r"];
-
+
while( ![o_scan_credits isAtEnd] )
{
NSString *o_person;
NSScanner *o_scan_person;
-
+
[o_scan_credits scanUpToString:@"N:" intoString: nil];
[o_scan_credits scanString:@"N:" intoString: nil];
[o_scan_credits scanUpToString:@"N:" intoString: &o_person];
o_scan_person = [NSScanner scannerWithString: o_person];
-
+
NSString *o_name;
NSString *o_email;
NSMutableString *o_jobs = [NSMutableString string];
[o_scan_person scanUpToString:@"D:" intoString: &o_next];
[o_scan_person scanUpToString:@":" intoString: &o_next];
[o_scan_person scanString:@":" intoString: nil];
-
+
while ( [o_next characterAtIndex:[o_next length] - 1] == 'D' )
{
NSString *o_job;
[o_scan_person scanUpToString:@":" intoString: &o_next];
[o_scan_person scanString:@":" intoString: nil];
}
-
+
[o_outString appendFormat: @"%@ <%@>\n%@\n\n", o_name, o_email, o_jobs];
}
-
+
/* Parse the thanks string */
o_thanks_path = [[NSBundle mainBundle] pathForResource:@"THANKS" ofType:nil];
- o_thanks = [[NSString alloc] initWithData: [NSData dataWithContentsOfFile:
+ o_thanks = [[NSString alloc] initWithData: [NSData dataWithContentsOfFile:
o_thanks_path ] encoding:NSUTF8StringEncoding];
-
+
NSScanner *o_scan_thanks = [NSScanner scannerWithString: o_thanks];
[o_scan_thanks scanUpToCharactersFromSet: o_stopSet intoString: nil];
-
+
while( ![o_scan_thanks isAtEnd] )
{
NSString *o_person;
NSString *o_job;
-
+
[o_scan_thanks scanUpToString:@" - " intoString: &o_person];
[o_scan_thanks scanString:@" - " intoString: nil];
[o_scan_thanks scanUpToCharactersFromSet: o_stopSet intoString: &o_job];
[o_outString appendFormat: @"%@\n%@\n\n", o_person, o_job];
}
[o_credits_textview setString:o_outString];
-
+
/* Setup the copyright field */
o_copyright = [o_local_dict objectForKey:@"NSHumanReadableCopyright"];
[o_copyright_field setStringValue:o_copyright];
[o_about_window setMenu:nil];
[o_about_window center];
}
-
+
/* Show the window */
b_restart = YES;
[o_about_window makeKeyAndOrderFront:nil];
- (void)windowDidBecomeKey:(NSNotification *)notification
{
o_scroll_timer = [NSTimer scheduledTimerWithTimeInterval:1/6
- target:self
- selector:@selector(scrollCredits:)
- userInfo:nil
+ target:self
+ selector:@selector(scrollCredits:)
+ userInfo:nil
repeats:YES];
}
{
/* Scroll to the position */
[o_credits_textview scrollPoint:NSMakePoint( 0, f_current )];
-
+
/* Increment the scroll position */
f_current += 0.005;
-
+
/* If at end, restart at the top */
if ( f_current >= f_end )
{
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
/*****************************************************************************
- * VLGetURLScriptCommand interface
+ * VLGetURLScriptCommand interface
*****************************************************************************/
@interface VLGetURLScriptCommand : NSScriptCommand
@end
/*****************************************************************************
- * VLControlScriptCommand interface
+ * VLControlScriptCommand interface
*****************************************************************************/
@interface VLControlScriptCommand : NSScriptCommand
@end
- (BOOL) scriptFullscreenMode;
- (void) setScriptFullscreenMode: (BOOL) mode;
-@end
\ No newline at end of file
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#include "open.h"
/*****************************************************************************
- * VLGetURLScriptCommand implementation
+ * VLGetURLScriptCommand implementation
*****************************************************************************/
@implementation VLGetURLScriptCommand
/*****************************************************************************
- * VLControlScriptCommand implementation
+ * VLControlScriptCommand implementation
*****************************************************************************/
/*
* This entire control command needs a better design. more object oriented.
{
return nil;
}
-
+
VLCControls * o_controls = (VLCControls *)[[NSApp delegate] getControls];
-
+
if ( o_controls )
{
if ( [o_command isEqualToString:@"play"] )
*****************************************************************************/
@implementation NSApplication(ScriptSupport)
-- (BOOL) scriptFullscreenMode {
+- (BOOL) scriptFullscreenMode {
VLCControls * o_controls = (VLCControls *)[[self delegate] getControls];
return [o_controls isFullscreen];
IBOutlet id o_btn_extract;
IBOutlet id o_btn_rm;
IBOutlet id o_tbl_dataTable;
-
+
/* edit window */
IBOutlet id o_edit_window;
IBOutlet id o_edit_btn_ok;
IBOutlet id o_edit_fld_name;
IBOutlet id o_edit_fld_time;
IBOutlet id o_edit_fld_bytes;
-
+
input_thread_t *p_old_input;
}
/*****************************************************************************
- * Note:
- * the code used to bind with VLC's modules is heavily based upon
- * ../wxwidgets/bookmarks.cpp, written by Gildas Bazin.
- * (he is a member of the VideoLAN team)
+ * Note:
+ * the code used to bind with VLC's modules is heavily based upon
+ * ../wxwidgets/bookmarks.cpp, written by Gildas Bazin.
+ * (he is a member of the VideoLAN team)
*****************************************************************************/
- (void)finalize
{
/* release old input even if GC is enabled on 10.5 */
- if( p_old_input )
+ if( p_old_input )
vlc_object_release( p_old_input );
[super finalize];
}
- (void)initStrings
{
/* localise the items */
-
+
/* main window */
[o_bookmarks_window setTitle: _NS("Bookmarks")];
[o_btn_add setTitle: _NS("Add")];
setStringValue: _NS("Position")];
[[[o_tbl_dataTable tableColumnWithIdentifier:@"time_offset"] headerCell]
setStringValue: _NS("Time")];
-
+
/* edit window */
[o_edit_btn_ok setTitle: _NS("OK")];
[o_edit_btn_cancel setTitle: _NS("Cancel")];
VLC_OBJECT_INPUT, FIND_ANYWHERE );
if( !p_input )
return;
-
+
seekpoint_t bookmark;
vlc_value_t pos;
bookmark.psz_name = NULL;
bookmark.i_byte_offset = 0;
bookmark.i_time_offset = 0;
-
+
var_Get(p_intf, "position", &pos);
bookmark.psz_name = _("Untitled");
input_Control( p_input, INPUT_GET_BYTE_POSITION, &bookmark.i_byte_offset );
var_Get( p_input, "time", &pos );
bookmark.i_time_offset = pos.i_time;
input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
-
+
vlc_object_release( p_input );
-
+
[o_tbl_dataTable reloadData];
}
intf_thread_t * p_intf = VLCIntf;
input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf,
VLC_OBJECT_INPUT, FIND_ANYWHERE );
-
+
if( !p_input )
return;
input_Control( p_input, INPUT_CLEAR_BOOKMARKS );
vlc_object_release( p_input );
-
+
[o_tbl_dataTable reloadData];
}
int i_bookmarks;
int row;
row = [o_tbl_dataTable selectedRow];
-
+
if( !p_input )
{
return;
- }
+ }
else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
{
vlc_object_release( p_input );
return;
- }
+ }
else if(row < 0)
{
vlc_object_release( p_input );
[o_edit_fld_bytes setStringValue: [[NSNumber numberWithInt:
pp_bookmarks[row]->i_byte_offset] stringValue]];
}
-
+
p_old_input = p_input;
vlc_object_release( p_input );
- (IBAction)edit_ok:(id)sender
{
/* save field contents and close sheet */
-
+
intf_thread_t * p_intf = VLCIntf;
seekpoint_t **pp_bookmarks;
int i_bookmarks, i;
input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf,
VLC_OBJECT_INPUT, FIND_ANYWHERE );
-
+
if( !p_input )
{
NSBeginCriticalAlertSheet(_NS("No input"), _NS("OK"),
vlc_object_release( p_input );
return;
}
-
+
if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
{
vlc_object_release( p_input );
return;
- }
+ }
i = [o_tbl_dataTable selectedRow];
-
- if( pp_bookmarks[i]->psz_name )
+
+ if( pp_bookmarks[i]->psz_name )
free( pp_bookmarks[i]->psz_name );
- pp_bookmarks[i]->psz_name = strdup([[o_edit_fld_name stringValue] UTF8String]);
+ pp_bookmarks[i]->psz_name = strdup([[o_edit_fld_name stringValue] UTF8String]);
pp_bookmarks[i]->i_byte_offset = [[o_edit_fld_bytes stringValue] intValue];
pp_bookmarks[i]->i_time_offset = ([[o_edit_fld_time stringValue] intValue] * 1000000);
-
+
if( input_Control( p_input, INPUT_CHANGE_BOOKMARK, pp_bookmarks[i], i )
!= VLC_SUCCESS )
{
vlc_object_release( p_input );
return;
}
-
+
[o_tbl_dataTable reloadData];
vlc_object_release( p_input );
-
-
+
+
[NSApp endSheet: o_edit_window];
[o_edit_window close];
}
- (IBAction)extract:(id)sender
{
/* extract */
-
+
intf_thread_t * p_intf = VLCIntf;
-
+
if( [o_tbl_dataTable numberOfSelectedRows] < 2 )
{
NSBeginAlertSheet(_NS("Invalid selection"), _NS("OK"),
- @"", @"", o_bookmarks_window, nil, nil, nil, nil,
+ @"", @"", o_bookmarks_window, nil, nil, nil, nil,
_NS("Two bookmarks have to be selected."));
return;
}
if( !p_input )
{
NSBeginCriticalAlertSheet(_NS("No input found"), _NS("OK"),
- @"", @"", o_bookmarks_window, nil, nil, nil, nil,
+ @"", @"", o_bookmarks_window, nil, nil, nil, nil,
_NS("The stream must be playing or paused for bookmarks to work."));
return;
}
-
+
seekpoint_t **pp_bookmarks;
int i_bookmarks ;
int i_first = -1;
{
i_first = x;
c = 1;
- }
+ }
else if (i_second == -1)
{
i_second = x;
}
x = (x + 1);
}
-
+
msg_Dbg(p_intf, "got the bookmark-indexes");
-
+
if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
{
{
intf_thread_t * p_intf = VLCIntf;
input_thread_t *p_input =
- (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
+ (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
-
+
if( !p_input ) return;
input_Control( p_input, INPUT_SET_BOOKMARK, [o_tbl_dataTable selectedRow] );
/* remove selected item */
intf_thread_t * p_intf = VLCIntf;
input_thread_t *p_input =
- (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
+ (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
-
+
if( !p_input ) return;
int i_focused = [o_tbl_dataTable selectedRow];
input_Control( p_input, INPUT_DEL_BOOKMARK, i_focused );
vlc_object_release( p_input );
-
+
[o_tbl_dataTable reloadData];
}
VLC_OBJECT_INPUT, FIND_ANYWHERE );
seekpoint_t **pp_bookmarks;
int i_bookmarks;
-
+
if( !p_input ) return 0;
else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
int i_bookmarks;
char *toBeReturned;
int i_toBeReturned = 0;
-
+
if( !p_input ) return @"";
else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
toBeReturned = pp_bookmarks[row]->psz_name;
vlc_object_release( p_input );
return [NSString stringWithUTF8String: toBeReturned];
- }
+ }
else if ([[theTableColumn identifier] isEqualToString: @"size_offset"])
{
i_toBeReturned = pp_bookmarks[row]->i_byte_offset;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#import "fspanel.h"
/*****************************************************************************
- * VLCControls interface
+ * VLCControls interface
*****************************************************************************/
@interface VLCControls : NSObject
{
IBOutlet id o_btn_fullscreen;
IBOutlet id o_volumeslider;
-
+
IBOutlet id o_btn_shuffle;
IBOutlet id o_btn_addNode;
IBOutlet id o_btn_repeat;
IBOutlet id o_specificTime_sec_lbl;
IBOutlet id o_specificTime_stepper;
IBOutlet id o_specificTime_mi;
-
+
VLCFSPanel *o_fs_panel;
}
@end
/*****************************************************************************
- * VLCMenuExt interface
+ * VLCMenuExt interface
*****************************************************************************
* This holds our data for autogenerated menus
*****************************************************************************/
@end
/*****************************************************************************
- * VLCTimeField interface
+ * VLCTimeField interface
*****************************************************************************
* we need the implementation to catch our click-event in the controller window
*****************************************************************************/
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#include <vlc_keys.h>
/*****************************************************************************
- * VLCControls implementation
+ * VLCControls implementation
*****************************************************************************/
@implementation VLCControls
if( !repeating.b_bool && !looping.b_bool )
{
/* was: no repeating at all, switching to Repeat One */
-
+
/* set our button's look */
[self repeatOne];
-
+
/* prepare core communication */
repeating.b_bool = VLC_TRUE;
looping.b_bool = VLC_FALSE;
config_PutInt( p_playlist, "repeat", 1 );
- config_PutInt( p_playlist, "loop", 0 );
-
+ config_PutInt( p_playlist, "loop", 0 );
+
/* show the change */
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat One" ) );
}
else if( repeating.b_bool && !looping.b_bool )
{
/* was: Repeat One, switching to Repeat All */
-
+
/* set our button's look */
[self repeatAll];
-
+
/* prepare core communication */
repeating.b_bool = VLC_FALSE;
looping.b_bool = VLC_TRUE;
- config_PutInt( p_playlist, "repeat", 0 );
- config_PutInt( p_playlist, "loop", 1 );
-
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 1 );
+
/* show the change */
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat All" ) );
}
else
{
/* was: Repeat All or bug in VLC, switching to Repeat Off */
-
+
/* set our button's look */
[self repeatOff];
-
+
/* prepare core communication */
repeating.b_bool = VLC_FALSE;
looping.b_bool = VLC_FALSE;
- config_PutInt( p_playlist, "repeat", 0 );
- config_PutInt( p_playlist, "loop", 0 );
-
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 0 );
+
/* show the change */
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) );
}
/* communicate with core and the main intf loop */
var_Set( p_playlist, "repeat", repeating );
- var_Set( p_playlist, "loop", looping );
+ var_Set( p_playlist, "loop", looping );
p_intf->p_sys->b_playmode_update = VLC_TRUE;
p_intf->p_sys->b_intf_update = VLC_TRUE;
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) );
config_PutInt( p_playlist, "repeat", 0 );
}
-
+
p_intf->p_sys->b_playmode_update = VLC_TRUE;
p_intf->p_sys->b_intf_update = VLC_TRUE;
vlc_object_release( p_playlist );
}
- (IBAction)toogleFullscreen:(id)sender {
- NSMenuItem *o_mi = [[NSMenuItem alloc] initWithTitle: _NS("Fullscreen") action: nil keyEquivalent:@""];
- [self windowAction: [o_mi autorelease]];
+ NSMenuItem *o_mi = [[NSMenuItem alloc] initWithTitle: _NS("Fullscreen") action: nil keyEquivalent:@""];
+ [self windowAction: [o_mi autorelease]];
}
- (BOOL) isFullscreen {
/* Variable doesn't exist or isn't handled */
return;
}
-
+
/* Make sure we want to display the variable */
if( i_type & VLC_VAR_HASCHOICE )
{
if( (i_type & VLC_VAR_TYPE) != VLC_VAR_VARIABLE && val.i_int == 1 )
return;
}
-
+
/* Get the descriptive name of the variable */
var_Change( p_object, psz_variable, VLC_VAR_GETTEXT, &text, NULL );
[o_mi setTitle: [[VLCMain sharedInstance] localizedString: text.psz_string ?
[self setupVarMenu: o_menu forMenuItem: o_mi target:p_object
var:psz_variable selector:pf_callback];
-
+
if( text.psz_string ) free( text.psz_string );
return;
}
{
unsigned int timeInSec = 0;
NSString * fieldContent = [o_specificTime_enter_fld stringValue];
- if( [[fieldContent componentsSeparatedByString: @":"] count] > 1 &&
+ if( [[fieldContent componentsSeparatedByString: @":"] count] > 1 &&
[[fieldContent componentsSeparatedByString: @":"] count] <= 3 )
{
NSArray * ourTempArray = \
input_Control( p_input, INPUT_SET_TIME, (int64_t)(timeInSec * 1000000));
vlc_object_release( p_input );
}
-
+
[NSApp endSheet: o_specificTime_win];
[o_specificTime_win close];
}
NSArray *o_windows = [NSApp orderedWindows];
NSEnumerator *o_enumerator = [o_windows objectEnumerator];
bEnabled = FALSE;
-
+
vout_thread_t *p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE );
if( p_vout != NULL )
@end
/*****************************************************************************
- * VLCMenuExt implementation
+ * VLCMenuExt implementation
*****************************************************************************
* Object connected to a playlistitem which remembers the data belonging to
* the variable of the autogenerated menu
/*****************************************************************************
- * VLCTimeField implementation
+ * VLCTimeField implementation
*****************************************************************************
* we need this to catch our click-event in the controller window
*****************************************************************************/
* Copyright (C) 2005-2006 the VideoLAN team
* $Id$
*
- * Authors: Benjamin Pracht <bigben at videolan dot org>
+ * Authors: Benjamin Pracht <bigben at videolan dot org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
screen = [NSScreen screenWithDisplayID:(CGDirectDisplayID)var_GetInteger( p_vout, "video-device" )];
vlc_object_release( p_vout );
-
+
[self lockFullscreenAnimation];
if (!screen)
[o_btn_fullscreen setState: YES];
[NSCursor setHiddenUntilMouseMoves: YES];
-
+
if (blackout_other_displays)
[screen blackoutOtherScreens]; /* We should do something like [screen blackoutOtherScreens]; */
* Mac OS X <10.4 which doesn't support NSAnimation, instead we
* simply fade the display */
CGDisplayFadeReservationToken token;
-
+
[o_fullscreen_window setFrame:screen_rect display:NO];
-
+
CGAcquireDisplayFadeReservation(kCGMaxDisplayReservationInterval, &token);
CGDisplayFade( token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES );
-
+
if ([screen isMainScreen])
SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
-
+
[[self contentView] replaceSubview:o_view with:o_temp_view];
[o_temp_view setFrame:[o_view frame]];
[o_fullscreen_window setContentView:o_view];
return;
}
-
+
/* Make sure we don't see the o_view disappearing of the screen during this operation */
DisableScreenUpdates();
[[self contentView] replaceSubview:o_view with:o_temp_view];
/* This is a recursive lock. If we are already in the middle of an animation we
* unlock it. We don't add an extra locking here, because enter/leavefullscreen
- * are executed always in the same thread */
+ * are executed always in the same thread */
if (b_animation_lock_alreadylocked)
[self unlockFullscreenAnimation];
b_animation_lock_alreadylocked = YES;
/* tell the fspanel to move itself to front next time it's triggered */
[[[[VLCMain sharedInstance] getControls] getFSPanel] setVoutWasUpdated: (int)[[o_fullscreen_window screen] displayID]];
-
+
[super orderOut: self];
[[[[VLCMain sharedInstance] getControls] getFSPanel] setActive: nil];
/* This is a recursive lock. If we are already in the middle of an animation we
* unlock it. We don't add an extra locking here, because enter/leavefullscreen
- * are executed always in the same thread */
+ * are executed always in the same thread */
if (b_animation_lock_alreadylocked)
[self unlockFullscreenAnimation];
b_animation_lock_alreadylocked = YES;
frame = [[o_temp_view superview] convertRect: [o_temp_view frame] toView: nil]; /* Convert to Window base coord */
- frame.origin.x += [self frame].origin.x;
+ frame.origin.x += [self frame].origin.x;
frame.origin.y += [self frame].origin.y;
dict2 = [[NSMutableDictionary alloc] initWithCapacity:2];
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
/*****************************************************************************
- * VLCEqualizer interface
+ * VLCEqualizer interface
*****************************************************************************/
@interface VLCEqualizer : NSObject
{
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#include "../../audio_filter/equalizer_presets.h"
/*****************************************************************************
- * VLCEqualizer implementation
+ * VLCEqualizer implementation
*****************************************************************************/
@implementation VLCEqualizer
}
[o_window setTitle: _NS("Equalizer")];
- /*
+ /*
[o_slider_band1 setFloatValue: 0];
[o_slider_band2 setFloatValue: 0];
[o_slider_band3 setFloatValue: 0];
[o_slider_band8 setFloatValue: 0];
[o_slider_band9 setFloatValue: 0];
[o_slider_band10 setFloatValue: 0];
- */
- [self initBandSliders];
+ */
+ [self initBandSliders];
[o_ckb_enable setState: NSOffState];
[o_ckb_2pass setState: NSOffState];
}
psz_bands = p_next+1;
}
free( psz_bands_init );
- [self setBandSlidersValues:f_band];
+ [self setBandSlidersValues:f_band];
- /*
+ /*
[o_slider_band1 setFloatValue: f_band[0]];
[o_slider_band2 setFloatValue: f_band[1]];
[o_slider_band3 setFloatValue: f_band[2]];
[o_slider_band8 setFloatValue: f_band[7]];
[o_slider_band9 setFloatValue: f_band[8]];
[o_slider_band10 setFloatValue: f_band[9]];
- */
-
+ */
+
/* Set the the checkboxes */
if( b_enabled == VLC_TRUE )
[o_ckb_enable setState:NSOnState];
var_SetFloat( p_object, "equalizer-preamp", eqz_preset_10b[[sender indexOfSelectedItem]]->f_preamp);
[o_slider_preamp setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_preamp];
- /*
+ /*
[o_slider_band1 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[0]];
[o_slider_band2 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[1]];
[o_slider_band3 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[2]];
[o_slider_band8 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[7]];
[o_slider_band9 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[8]];
[o_slider_band10 setFloatValue: eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp[9]];
- */
- [self setBandSlidersValues:(float *)eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp];
-
+ */
+ [self setBandSlidersValues:(float *)eqz_preset_10b[[sender indexOfSelectedItem]]->f_amp];
+
vlc_object_release( p_object );
}
[o_popup_presets selectItemAtIndex: i];
[o_slider_preamp setFloatValue: eqz_preset_10b[i]->f_preamp];
- [self setBandSlidersValues: (float *)eqz_preset_10b[i]->f_amp];
-
- /*
+ [self setBandSlidersValues: (float *)eqz_preset_10b[i]->f_amp];
+
+ /*
[o_slider_band1 setFloatValue: eqz_preset_10b[i]->f_amp[0]];
[o_slider_band2 setFloatValue: eqz_preset_10b[i]->f_amp[1]];
[o_slider_band3 setFloatValue: eqz_preset_10b[i]->f_amp[2]];
[o_slider_band8 setFloatValue: eqz_preset_10b[i]->f_amp[7]];
[o_slider_band9 setFloatValue: eqz_preset_10b[i]->f_amp[8]];
[o_slider_band10 setFloatValue: eqz_preset_10b[i]->f_amp[9]];
- */
-
+ */
+
if( strcmp( psz_preset, "flat" ) )
{
char psz_bands[100];
- (id)getSliderByIndex:(int)index
{
- switch(index)
- {
- case 0 : return o_slider_band1;
- case 1 : return o_slider_band2;
- case 2 : return o_slider_band3;
- case 3 : return o_slider_band4;
- case 4 : return o_slider_band5;
- case 5 : return o_slider_band6;
- case 6 : return o_slider_band7;
- case 7 : return o_slider_band8;
- case 8 : return o_slider_band9;
- case 9 : return o_slider_band10;
- default : return nil;
- }
+ switch(index)
+ {
+ case 0 : return o_slider_band1;
+ case 1 : return o_slider_band2;
+ case 2 : return o_slider_band3;
+ case 3 : return o_slider_band4;
+ case 4 : return o_slider_band5;
+ case 5 : return o_slider_band6;
+ case 6 : return o_slider_band7;
+ case 7 : return o_slider_band8;
+ case 8 : return o_slider_band9;
+ case 9 : return o_slider_band10;
+ default : return nil;
+ }
}
- (void)setBandSlidersValues:(float *)values
{
- int i = 0;
- for (i = 0 ; i<= 9 ; i++)
- {
- [self setValue:values[i] forSlider:i];
- }
+ int i = 0;
+ for (i = 0 ; i<= 9 ; i++)
+ {
+ [self setValue:values[i] forSlider:i];
+ }
}
- (void)initBandSliders
{
- int i = 0;
- for (i = 0 ; i< 9 ; i++)
- {
- [self setValue:0.0 forSlider:i];
- }
+ int i = 0;
+ for (i = 0 ; i< 9 ; i++)
+ {
+ [self setValue:0.0 forSlider:i];
+ }
}
- (void)setValue:(float)value forSlider:(int)index
{
- id slider = [self getSliderByIndex:index];
-
- if (slider != nil)
- {
- [slider setFloatValue:value];
- }
+ id slider = [self getSliderByIndex:index];
+
+ if (slider != nil)
+ {
+ [slider setFloatValue:value];
+ }
}
@end
*****************************************************************************/
/*****************************************************************************
- * VLCExtended
+ * VLCExtended
*****************************************************************************/
#import <Cocoa/Cocoa.h>
IBOutlet id o_audioFlts_view;
IBOutlet id o_videoFilters_view;
IBOutlet id o_extended_window;
-
+
/* window content */
IBOutlet id o_expBtn_adjustImage;
IBOutlet id o_expBtn_audioFlts;
IBOutlet id o_box_vidFlts;
IBOutlet id o_box_audFlts;
IBOutlet id o_box_adjImg;
-
+
/* video filters */
IBOutlet id o_btn_vidFlts_mrInfo;
IBOutlet id o_ckb_blur;
IBOutlet id o_ckb_gradient;
IBOutlet id o_lbl_general;
IBOutlet id o_lbl_distort;
-
+
/* audio filters */
IBOutlet id o_ckb_vlme_norm;
IBOutlet id o_ckb_hdphnVirt;
IBOutlet id o_lbl_maxLevel;
IBOutlet id o_sld_maxLevel;
-
+
/* adjust image */
IBOutlet id o_btn_rstrDefaults;
IBOutlet id o_ckb_enblAdjustImg;
IBOutlet id o_sld_hue;
IBOutlet id o_sld_saturation;
IBOutlet id o_sld_opaque;
-
+
/* global variables */
BOOL o_adjImg_expanded;
BOOL o_audFlts_expanded;
BOOL o_vidFlts_expanded;
-
+
BOOL o_config_changed;
}
[o_lbl_hue setStringValue: _NS("Hue")];
[o_lbl_saturation setStringValue: _NS("Saturation")];
[o_lbl_opaque setStringValue: _NS("Opaqueness")];
-
+
}
- (void)awakeFromNib
free( psz_vfilters );
}
-
+
/* set the video-filter checkboxes to the correct values */
char * psz_vifilters;
psz_vifilters = config_GetPsz( p_intf, "video-filter" );
free( psz_vifilters );
}
-
+
/* set the audio-filter-checkboxes to the values taken from the prefs */
char * psz_afilters;
psz_afilters = config_GetPsz( p_intf, "audio-filter" );
{
[o_ckb_hdphnVirt setState: (int)strstr( psz_afilters, "headphone" ) ];
[o_ckb_vlme_norm setState: (int)strstr( psz_afilters, "normvol" ) ];
-
+
free( psz_afilters );
}
}
}
float f_value;
-
+
f_value = config_GetFloat( p_intf, "saturation" );
if( f_value > 0 && f_value < 5 )
{
[o_sld_hue setIntValue: 0];
[o_sld_saturation setIntValue: 100];
[o_sld_opaque setIntValue: 100];
-
+
/* transmit the values */
[self sliderActionAdjustImage: o_sld_brightness];
[self sliderActionAdjustImage: o_sld_contrast];
}
vlc_object_release( p_vout );
}
-
+
/* store to prefs */
config_PutFloat( p_playlist , "macosx-opaqueness" , val.f_float );
-
+
vlc_object_release( p_playlist );
o_config_changed = YES;
NSRect o_box_audFlts_rect = [o_box_audFlts frame];
NSRect o_box_vidFlts_rect = [o_box_vidFlts frame];
NSRect o_box_adjImg_rect = [o_box_adjImg frame];
-
+
if (o_adjImg_expanded)
{
/* move the window contents upwards (partially done through settings
o_win_rect.origin.y = [o_extended_window frame].origin.y + 193;
o_box_audFlts_rect.origin.y = o_box_audFlts_rect.origin.y + 193;
o_box_vidFlts_rect.origin.y = o_box_vidFlts_rect.origin.y + 193;
-
+
/* remove the inserted view */
[o_adjustImg_view removeFromSuperviewWithoutNeedingDisplay];
}else{
-
+
/* move the window contents downwards and resize the window */
o_win_rect.size.height = o_win_rect.size.height + 193;
o_win_rect.origin.y = [o_extended_window frame].origin.y - 193;
o_box_audFlts_rect.origin.y = o_box_audFlts_rect.origin.y - 193;
o_box_vidFlts_rect.origin.y = o_box_vidFlts_rect.origin.y - 193;
}
-
+
[o_box_audFlts setFrameFromContentFrame: o_box_audFlts_rect];
[o_box_vidFlts setFrameFromContentFrame: o_box_vidFlts_rect];
[o_extended_window displayIfNeeded];
[o_extended_window setFrame: o_win_rect display:YES animate: YES];
-
+
if (o_adjImg_expanded)
{
o_box_adjImg_rect.size.height = [o_box_adjImg frame].size.height - 193;
/* expand or collapse audFlts */
NSRect o_win_rect = [o_extended_window frame];
NSRect o_box_audFlts_rect = [o_box_audFlts frame];
-
+
if (o_audFlts_expanded)
{
/* move the window contents upwards (partially done through settings
* inside the nib) and resize the window */
o_win_rect.size.height = o_win_rect.size.height - 66;
o_win_rect.origin.y = [o_extended_window frame].origin.y + 66;
-
+
/* remove the inserted view */
[o_audioFlts_view removeFromSuperviewWithoutNeedingDisplay];
}else{
}
[o_extended_window displayIfNeeded];
[o_extended_window setFrame: o_win_rect display:YES animate: YES];
-
-
+
+
if (o_audFlts_expanded)
{
o_box_audFlts_rect.size.height = [o_box_audFlts frame].size.height - 66;
NSRect o_win_rect = [o_extended_window frame];
NSRect o_box_audFlts_rect = [o_box_audFlts frame];
NSRect o_box_vidFlts_rect = [o_box_vidFlts frame];
-
+
if (o_vidFlts_expanded)
{
/* move the window contents upwards (partially done through settings
o_win_rect.size.height = o_win_rect.size.height - 172;
o_win_rect.origin.y = [o_extended_window frame].origin.y + 172;
o_box_audFlts_rect.origin.y = o_box_audFlts_rect.origin.y + 172;
-
+
/* remove the inserted view */
[o_videoFilters_view removeFromSuperviewWithoutNeedingDisplay];
}else{
-
+
/* move the window contents downwards and resize the window */
o_win_rect.size.height = o_win_rect.size.height + 172;
o_win_rect.origin.y = [o_extended_window frame].origin.y - 172;
o_box_audFlts_rect.origin.y = o_box_audFlts_rect.origin.y - 172;
}
-
+
[o_box_audFlts setFrameFromContentFrame: o_box_audFlts_rect];
[o_extended_window displayIfNeeded];
[o_extended_window setFrame: o_win_rect display:YES animate: YES];
-
+
if (o_vidFlts_expanded)
{
o_box_vidFlts_rect.size.height = [o_box_vidFlts frame].size.height - 172;
* methods to communicate changes to VLC's core
*****************************************************************************/
-- (void)changeVoutFiltersString:(char *)psz_name onOrOff:(vlc_bool_t )b_add
+- (void)changeVoutFiltersString:(char *)psz_name onOrOff:(vlc_bool_t )b_add
{
/* copied from ../wxwidgets/extrapanel.cpp
* renamed to conform with Cocoa's rules */
- /* this method only changes 1st generation video filters (the ones which
+ /* this method only changes 1st generation video filters (the ones which
* can't be used for transcoding). Have a look at changeVideoFiltersString
* for the 2nd generation filters. */
-
+
vout_thread_t *p_vout;
intf_thread_t * p_intf = VLCIntf;
-
+
char *psz_parser, *psz_string;
psz_string = config_GetPsz( p_intf, "vout-filter" );
-
+
if( !psz_string ) psz_string = strdup("");
psz_parser = strstr( psz_string, psz_name );
}
-- (void)changeVideoFiltersString:(char *)psz_name onOrOff:(vlc_bool_t )b_add
+- (void)changeVideoFiltersString:(char *)psz_name onOrOff:(vlc_bool_t )b_add
{
/* same as changeVoutFiltersString but addressing the "video-filter"
* variable which represents the video filter 2 modules */
-
+
vout_thread_t *p_vout;
intf_thread_t * p_intf = VLCIntf;
-
+
char *psz_parser, *psz_string;
psz_string = config_GetPsz( p_intf, "video-filter" );
-
+
if( !psz_string ) psz_string = strdup("");
psz_parser = strstr( psz_string, psz_name );
}
- (void)savePrefs
-{
+{
/* save the preferences to make sure that our module-changes will up on
* next launch again */
playlist_t * p_playlist = pl_Yield( VLCIntf );
@"clone", @"crop", @"normvol", @"headphone_channel_mixer", @"macosx",
nil];
unsigned int x = 0;
-
+
while ( x != [theModules count] )
{
returnedValue = config_SaveConfigFile( p_playlist, [[theModules
if (returnedValue != 0)
{
msg_Err(p_playlist, "unable to save the preferences of the "
- "extended control attribute '%s' (%i)",
+ "extended control attribute '%s' (%i)",
[[theModules objectAtIndex: x] UTF8String] , returnedValue);
[theModules release];
vlc_object_release( p_playlist );
-
+
return;
}
x = ( x + 1 );
}
-
+
msg_Dbg( p_playlist, "VLCExtended: saved certain preferences successfully" );
-
+
[theModules release];
vlc_object_release( p_playlist );
}
} else {\r
_o_sharedInstance = [super init];\r
\r
- [[NSDistributedNotificationCenter defaultCenter]
+ [[NSDistributedNotificationCenter defaultCenter]
addObserver: self\r
selector: @selector(globalNotificationReceived:)\r
name: NULL\r
#if GC_ENABLED\r
- (void)finalize\r
{\r
- /* dealloc isn't called on 10.5 in case that GC is enabled, so we need to provide the functionality here */\r
- [[NSNotificationCenter defaultCenter] removeObserver: self];\r
- [self setFadeTimer:nil];\r
- \r
- [super finalize];\r
+ /* dealloc isn't called on 10.5 in case that GC is enabled, so we need to provide the functionality here */\r
+ [[NSNotificationCenter defaultCenter] removeObserver: self];\r
+ [self setFadeTimer:nil];\r
+ \r
+ [super finalize];\r
}\r
#endif\r
\r
\r
- (void)drawRect:(NSRect)rect\r
{\r
- NSRect frame = [self frame];\r
+ NSRect frame = [self frame];\r
NSRect image_rect;\r
NSImage *img;\r
addImage( @"fs_background", 0, 0, NSCompositeCopy, 0 );\r
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#import "interaction.h"
/* for the icons in our custom error panel */
-#import <ApplicationServices/ApplicationServices.h>
+#import <ApplicationServices/ApplicationServices.h>
/*****************************************************************************
* VLCInteractionList implementation
-(void)addInteraction: (interaction_dialog_t *)p_dialog
{
VLCInteraction *o_interaction = [[VLCInteraction alloc] initDialog: p_dialog];
-
+
p_dialog->p_private = (void *)o_interaction;
[o_interaction_list addObject:[o_interaction autorelease]];
[o_interaction runDialog];
#if GC_ENABLED
-(void)finalize
{
- /* dealloc doesn't get called on 10.5 if GC is enabled, so we need to provide the basic functionality here */
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [o_interaction_list removeAllObjects];
+ /* dealloc doesn't get called on 10.5 if GC is enabled, so we need to provide the basic functionality here */
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [o_interaction_list removeAllObjects];
[super finalize];
}
#endif
if( p_dialog->i_flags & DIALOG_BLOCKING_ERROR )
{
msg_Dbg( p_intf, "error panel requested" );
- NSBeginInformationalAlertSheet( o_title, _NS("OK"), nil, nil,
- o_window, self, @selector(sheetDidEnd: returnCode: contextInfo:),
+ NSBeginInformationalAlertSheet( o_title, _NS("OK"), nil, nil,
+ o_window, self, @selector(sheetDidEnd: returnCode: contextInfo:),
NULL, nil, o_description );
}
else if( p_dialog->i_flags & DIALOG_NONBLOCKING_ERROR )
{
msg_Dbg( p_intf, "addition to non-blocking error panel received" );
- [[[[VLCMain sharedInstance] getInteractionList] getErrorPanel]
+ [[[[VLCMain sharedInstance] getInteractionList] getErrorPanel]
addError: o_title withMsg: o_description];
}
else if( p_dialog->i_flags & DIALOG_WARNING )
{
msg_Dbg( p_intf, "addition to non-blocking warning panel received" );
- [[[[VLCMain sharedInstance] getInteractionList] getErrorPanel]
+ [[[[VLCMain sharedInstance] getInteractionList] getErrorPanel]
addWarning: o_title withMsg: o_description];
}
else if( p_dialog->i_flags & DIALOG_YES_NO_CANCEL )
{
msg_Dbg( p_intf, "yes-no-cancel-dialog requested" );
- NSBeginInformationalAlertSheet( o_title, o_defaultButton,
+ NSBeginInformationalAlertSheet( o_title, o_defaultButton,
o_alternateButton, o_otherButton, o_window, self,
- @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil,
+ @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil,
o_description );
}
else if( p_dialog->i_flags & DIALOG_LOGIN_PW_OK_CANCEL )
errorIcon = [[NSImage alloc] initWithSize:NSMakeSize(32,32)];
[errorIcon lockFocus];
CGRect rect = CGRectMake(0,0,32,32);
- PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
+ PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
graphicsPort],
&rect,
kAlignNone,
returnValue = GetIconRef(kOnSystemDisk, 'macs', 'caut', &ourIconRef);
warnIcon = [[NSImage alloc] initWithSize:NSMakeSize(32,32)];
[warnIcon lockFocus];
- PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
+ PlotIconRefInContext((CGContextRef)[[NSGraphicsContext currentContext]
graphicsPort],
&rect,
kAlignNone,
kPlotIconRefNormalFlags,
(IconRef)ourIconRef);
[warnIcon unlockFocus];
- returnValue = ReleaseIconRef(ourIconRef);
+ returnValue = ReleaseIconRef(ourIconRef);
return self;
}
NSMutableAttributedString * ourError;
ourError = [[NSMutableAttributedString alloc] initWithString:
[NSString stringWithFormat:@"%@\n%@", o_error, o_msg]
- attributes:
+ attributes:
[NSDictionary dictionaryWithObject: [NSFont systemFontOfSize:11] forKey: NSFontAttributeName]];
- [ourError
+ [ourError
addAttribute: NSFontAttributeName
- value: [NSFont boldSystemFontOfSize:11]
+ value: [NSFont boldSystemFontOfSize:11]
range: NSMakeRange( 0, [o_error length])];
[o_errors addObject: ourError];
[ourError release];
NSMutableAttributedString * ourWarning;
ourWarning = [[NSMutableAttributedString alloc] initWithString:
[NSString stringWithFormat:@"%@\n%@", o_warning, o_msg]
- attributes:
+ attributes:
[NSDictionary dictionaryWithObject: [NSFont systemFontOfSize:11] forKey: NSFontAttributeName]];
- [ourWarning
+ [ourWarning
addAttribute: NSFontAttributeName
- value: [NSFont boldSystemFontOfSize:11]
+ value: [NSFont boldSystemFontOfSize:11]
range: NSMakeRange( 0, [o_warning length])];
[o_errors addObject: ourWarning];
[ourWarning release];
[o_icons addObject: warnIcon];
-
+
[o_error_table reloadData];
[self showPanel];
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
VLCMain *interface = (VLCMain *)param;
interaction_dialog_t *p_dialog = (interaction_dialog_t *)(new_val.p_address);
NSValue *o_value = [NSValue valueWithPointer:p_dialog];
-
+
[[NSNotificationCenter defaultCenter] postNotificationName: @"VLCNewInteractionEventNotification" object:[interface getInteractionList]
userInfo:[NSDictionary dictionaryWithObject:o_value forKey:@"VLCDialogPointer"]];
-
+
[o_pool release];
return VLC_SUCCESS;
}
i_lastShownVolume = -1;
o_remote = [[AppleRemote alloc] init];
- [o_remote setClickCountEnabledButtons: kRemoteButtonPlay];
+ [o_remote setClickCountEnabledButtons: kRemoteButtonPlay];
[o_remote setDelegate: _o_sharedMainInstance];
o_eyetv = [[VLCEyeTVController alloc] init];
[self setSubmenusEnabled: FALSE];
[self manageVolumeSlider];
[o_window setDelegate: self];
-
+
b_restore_size = false;
if( [o_window frame].size.height <= 200 )
{
var_AddCallback( p_playlist, "intf-show", ShowController, self);
vlc_object_release( p_playlist );
-
+
var_Create( p_intf, "interaction", VLC_VAR_ADDRESS );
var_AddCallback( p_intf, "interaction", InteractCallback, self );
p_intf->b_interaction = VLC_TRUE;
selector: @selector(refreshVoutDeviceMenu:)
name: NSApplicationDidChangeScreenParametersNotification
object: nil];
-
+
nib_main_loaded = TRUE;
}
[o_dmi_next setTitle: _NS("Next")];
[o_dmi_previous setTitle: _NS("Previous")];
[o_dmi_mute setTitle: _NS("Mute")];
-
+
/* vout menu */
[o_vmi_play setTitle: _NS("Play")];
[o_vmi_stop setTitle: _NS("Stop")];
/* When user click in the Dock icon our double click in the finder */
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)hasVisibleWindows
-{
+{
if (!hasVisibleWindows)
[o_window makeKeyAndOrderFront:self];
/* Helper method for the remote control interface in order to trigger forward/backward and volume
increase/decrease as long as the user holds the left/right, plus/minus button */
-- (void) executeHoldActionForRemoteButton: (NSNumber*) buttonIdentifierNumber
+- (void) executeHoldActionForRemoteButton: (NSNumber*) buttonIdentifierNumber
{
- if (b_remote_button_hold)
+ if (b_remote_button_hold)
{
- switch([buttonIdentifierNumber intValue])
+ switch([buttonIdentifierNumber intValue])
{
- case kRemoteButtonRight_Hold:
+ case kRemoteButtonRight_Hold:
[o_controls forward: self];
break;
case kRemoteButtonLeft_Hold:
break;
case kRemoteButtonVolume_Minus_Hold:
[o_controls volumeDown: self];
- break;
+ break;
}
- if (b_remote_button_hold)
+ if (b_remote_button_hold)
{
/* trigger event */
- [self performSelector:@selector(executeHoldActionForRemoteButton:)
+ [self performSelector:@selector(executeHoldActionForRemoteButton:)
withObject:buttonIdentifierNumber
- afterDelay:0.25];
+ afterDelay:0.25];
}
}
}
/* Apple Remote callback */
-- (void) appleRemoteButton: (AppleRemoteEventIdentifier)buttonIdentifier
- pressedDown: (BOOL) pressedDown
- clickCount: (unsigned int) count
+- (void) appleRemoteButton: (AppleRemoteEventIdentifier)buttonIdentifier
+ pressedDown: (BOOL) pressedDown
+ clickCount: (unsigned int) count
{
switch( buttonIdentifier )
{
[o_controls toogleFullscreen:self];
} else {
[o_controls play: self];
- }
+ }
break;
case kRemoteButtonVolume_Plus:
[o_controls volumeUp: self];
/* simulate an event as long as the user holds the button */
b_remote_button_hold = pressedDown;
if( pressedDown )
- {
- NSNumber* buttonIdentifierNumber = [NSNumber numberWithInt: buttonIdentifier];
- [self performSelector:@selector(executeHoldActionForRemoteButton:)
+ {
+ NSNumber* buttonIdentifierNumber = [NSNumber numberWithInt: buttonIdentifier];
+ [self performSelector:@selector(executeHoldActionForRemoteButton:)
withObject:buttonIdentifierNumber];
}
break;
vlc_bool_t b_chapters = VLC_FALSE;
playlist_t * p_playlist = pl_Yield( p_intf );
- /** \todo fix i_size use */
+ /** \todo fix i_size use */
b_plmul = p_playlist->items.i_size > 1;
p_input = p_playlist->p_input;
/* check wether slow/fast motion is possible*/
b_control = p_input->b_can_pace_control;
-
+
/* chapters & titles */
//b_chapters = p_input->stream.i_area_nb > 1;
[[[self getControls] getFSPanel] setStreamTitle: o_temp];
[[o_controls getVoutView] updateTitle];
-
+
[o_playlist updateRowSelection];
p_intf->p_sys->b_current_title_update = FALSE;
}
int x,y = 0;
vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE );
-
+
if(! p_vout )
return;
-
+
/* clean the menu before adding new entries */
if( [o_mi_screen hasSubmenu] )
{
playlist_t * p_playlist;
vout_thread_t * p_vout;
int returnedValue = 0;
-
+
/* Stop playback */
p_playlist = pl_Yield( p_intf );
playlist_Stop( p_playlist );
config_PutInt( p_intf->p_libvlc, "volume", i_lastShownVolume );
returnedValue = config_SaveConfigFile( p_intf->p_libvlc, "main" );
if( returnedValue != 0 )
- msg_Err( p_intf,
+ msg_Err( p_intf,
"error while saving volume in osx's terminate method (%i)",
returnedValue );
{
[o_extended savePrefs];
}
-
+
p_intf->b_interaction = VLC_FALSE;
var_DelCallback( p_intf, "interaction", InteractCallback, self );
* will be called later on -- FK (10/6/05) */
if( nib_about_loaded && o_about )
[o_about release];
-
+
if( nib_open_loaded && o_open )
[o_open release];
-
+
if( nib_extended_loaded && o_extended )
{
[o_extended collapsAll];
[o_extended release];
}
-
+
if( nib_bookmarks_loaded && o_bookmarks )
[o_bookmarks release];
if( nib_wizard_loaded && o_wizard )
[o_wizard release];
-
+
if( o_embedded_list != nil )
[o_embedded_list release];
nib_wizard_loaded = [NSBundle loadNibNamed:@"Wizard" owner:self];
[o_wizard initStrings];
}
-
+
if ( !nib_bookmarks_loaded )
{
nib_bookmarks_loaded = [NSBundle loadNibNamed:@"Bookmarks" owner:self];
} else {
o_rect.size.height = 500;
}
-
+
if ( o_size_with_playlist.width > [o_window minSize].width )
{
o_rect.size.width = o_size_with_playlist.width;
} else {
o_rect.size.width = 500;
}
-
+
o_rect.size.height = (o_size_with_playlist.height > 200) ?
o_size_with_playlist.height : 500;
o_rect.origin.x = [o_window frame].origin.x;
o_rect.origin.y = [o_window frame].origin.y +
[o_window frame].size.height - [o_window minSize].height;
- if ( b_restore_size )
+ if ( b_restore_size )
o_rect = o_restore_rect;
[o_playlist_view setAutoresizesSubviews: NO];
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#define OPAQUENESS_LONGTEXT N_( \
"Set the transparency of the video output. 1 is non-transparent (default) " \
"0 is fully transparent.")
-
+
#define STRETCH_TEXT N_("Stretch video to fill window")
#define STRETCH_LONGTEXT N_("Stretch the video to fill the entire window when "\
"resizing the video instead of keeping the aspect ratio and "\
#define FSPANEL_TEXT N_("Show Fullscreen controller")
#define FSPANEL_LONGTEXT N_("Shows a lucent controller when moving the mouse " \
- "in fullscreen mode.")
+ "in fullscreen mode.")
#define WIZARD_OPTIONS_SAVING_TEXT N_("Remember wizard options")
#define WIZARD_OPTIONS_SAVING_LONGTEXT N_("Remember the options in the " \
- "wizard during one session of VLC.")
+ "wizard during one session of VLC.")
#define AUTOPLAY_OSX_TEST N_("Auto-playback of new items")
#define AUTOPLAY_OSX_LONGTEXT N_("Start playback of new items immediately " \
+ (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID
{
int i;
-
+
for( i = 0; i < [[NSScreen screens] count]; i++ )
{
NSScreen *screen = [[NSScreen screens] objectAtIndex: i];
[blackoutWindows makeObjectsPerformSelector:@selector(close)];
[blackoutWindows removeAllObjects];
-
+
for(i = 0; i < [[NSScreen screens] count]; i++)
{
NSScreen *screen = [[NSScreen screens] objectAtIndex: i];
VLCWindow *blackoutWindow;
NSRect screen_rect;
-
+
if([self isScreen: screen])
continue;
backing: NSBackingStoreBuffered defer: NO screen: screen];
[blackoutWindow setBackgroundColor:[NSColor blackColor]];
[blackoutWindow setLevel: NSFloatingWindowLevel]; /* Disappear when Expose is triggered */
-
+
[blackoutWindow orderFront: self animate: YES];
[blackoutWindows addObject: blackoutWindow];
- (void)closeAndAnimate: (BOOL)animate
{
NSInvocation *invoc;
-
+
if (!animate || MACOS_VERSION < 10.4f)
{
[super close];
NSViewAnimation *anim;
NSViewAnimation *current_anim;
NSMutableDictionary *dict;
-
+
if (!animate || MACOS_VERSION < 10.4f)
{
[super orderFront: sender];
dict = [[NSMutableDictionary alloc] initWithCapacity:2];
[dict setObject:self forKey:NSViewAnimationTargetKey];
-
+
[dict setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey];
anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict, nil]];
[dict release];
-
+
[anim setAnimationBlockingMode:NSAnimationNonblocking];
[anim setDuration:0.5];
[anim setFrameRate:30];
- (void)awakeFromNib
{
- [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
+ [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
NSFilenamesPboardType, nil]];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
- if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
+ if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
== NSDragOperationGeneric)
{
return NSDragOperationGeneric;
- (void)awakeFromNib
{
- [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
+ [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
NSFilenamesPboardType, nil]];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
- if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
+ if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
== NSDragOperationGeneric)
{
return NSDragOperationGeneric;
// Center knob in given rect
knobRect.origin.x += (int)((float)(knobRect.size.width - 7)/2.0);
knobRect.origin.y += (int)((float)(knobRect.size.height - 7)/2.0);
-
+
// Draw diamond
NSRectFillUsingOperation(NSMakeRect(knobRect.origin.x + 3, knobRect.origin.y + 6, 1, 1), NSCompositeSourceOver);
NSRectFillUsingOperation(NSMakeRect(knobRect.origin.x + 2, knobRect.origin.y + 5, 3, 1), NSCompositeSourceOver);
NSRectClip(NSZeroRect);
[super drawRect:rect];
[[NSGraphicsContext currentContext] restoreGraphicsState];
-
+
// Full size
rect = [self bounds];
int diff = (int)(([[self cell] knobThickness] - 7.0)/2.0) - 1;
rect.origin.y += diff;
rect.size.width -= 2*diff-2;
rect.size.height -= 2*diff;
-
+
// Draw dark
NSRect knobRect = [[self cell] knobRectFlipped:NO];
[[[NSColor blackColor] colorWithAlphaComponent:0.6] set];
_drawFrameInRect(rect);
_drawKnobInRect(knobRect);
-
+
// Draw shadow
[[[NSColor blackColor] colorWithAlphaComponent:0.1] set];
rect.origin.x++;
[newCell setAction:[oldCell action]];
[newCell setControlSize:[oldCell controlSize]];
[newCell setType:[oldCell type]];
- [newCell setState:[oldCell state]];
+ [newCell setState:[oldCell state]];
[newCell setAllowsTickMarkValuesOnly:[oldCell allowsTickMarkValuesOnly]];
[newCell setAltIncrementValue:[oldCell altIncrementValue]];
[newCell setControlTint:[oldCell controlTint]];
[[self controlView] lockFocus];
[knob compositeToPoint:NSMakePoint( knob_rect.origin.x + 1,
- knob_rect.origin.y + knob_rect.size.height -2 )
+ knob_rect.origin.y + knob_rect.size.height -2 )
operation:NSCompositeSourceOver];
[[self controlView] unlockFocus];
}
-- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:
+- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:
(NSView *)controlView mouseIsUp:(BOOL)flag
{
b_mouse_down = NO;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
IBOutlet id o_eyetv_noEyeTV_lbl;
IBOutlet id o_eyetv_noEyeTVLong_lbl;
IBOutlet id o_eyetv_previousProgram_btn;
-
+
BOOL b_autoplay;
}
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
- * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
+ * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
* Derk-Jan Hartman <thedj@users.sourceforge.net>
* Benjamin Pracht <bigben at videolan dot org>
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#import "eyetv.h"
/*****************************************************************************
- * GetEjectableMediaOfClass
+ * GetEjectableMediaOfClass
*****************************************************************************/
NSArray *GetEjectableMediaOfClass( const char *psz_class )
{
{
return( nil );
}
-
+
classes_to_match = IOServiceMatching( psz_class );
if( classes_to_match == NULL )
{
return( nil );
}
-
- CFDictionarySetValue( classes_to_match, CFSTR( kIOMediaEjectableKey ),
+
+ CFDictionarySetValue( classes_to_match, CFSTR( kIOMediaEjectableKey ),
kCFBooleanTrue );
-
- kern_result = IOServiceGetMatchingServices( master_port, classes_to_match,
+
+ kern_result = IOServiceGetMatchingServices( master_port, classes_to_match,
&media_iterator );
if( kern_result != KERN_SUCCESS )
{
}
p_list = [NSMutableArray arrayWithCapacity: 1];
-
+
next_media = IOIteratorNext( media_iterator );
if( next_media != nil )
{
char psz_buf[0x32];
size_t dev_path_length;
CFTypeRef str_bsd_path;
-
+
do
{
str_bsd_path = IORegistryEntryCreateCFProperty( next_media,
IOObjectRelease( next_media );
continue;
}
-
+
snprintf( psz_buf, sizeof(psz_buf), "%s%c", _PATH_DEV, 'r' );
dev_path_length = strlen( psz_buf );
-
+
if( CFStringGetCString( str_bsd_path,
(char*)&psz_buf + dev_path_length,
sizeof(psz_buf) - dev_path_length,
{
[p_list addObject: [NSString stringWithCString: psz_buf]];
}
-
+
CFRelease( str_bsd_path );
-
+
IOObjectRelease( next_media );
-
+
} while( ( next_media = IOIteratorNext( media_iterator ) ) != nil );
}
-
+
IOObjectRelease( media_iterator );
o_devices = [NSArray arrayWithArray: p_list];
}
/*****************************************************************************
- * VLCOpen implementation
+ * VLCOpen implementation
*****************************************************************************/
@implementation VLCOpen
} else {
_o_sharedMainInstance = [super init];
}
-
+
return _o_sharedMainInstance;
}
[o_net_udp_port setIntValue: config_GetInt( p_intf, "server-port" )];
[o_net_udp_port_stp setIntValue: config_GetInt( p_intf, "server-port" )];
-
+
[o_eyetv_chn_bgbar setUsesThreadedAnimation: YES];
/* FIXME: implement EyeTV l10n here */
-
+
[self setSubPanel];
[o_eyetv_tabView selectTabViewItemWithIdentifier:@"eyetvup"];
[self setupChannelInfo];
}
-
+
[[NSDistributedNotificationCenter defaultCenter] addObserver: self
selector: @selector(eyetvChanged:)
name: NULL
object: @"VLCEyeTVSupport"
suspensionBehavior: NSNotificationSuspensionBehaviorDeliverImmediately];
-
+
/* register clicks on text fields */
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(textFieldWasClicked:)
[o_tabview selectTabViewItemAtIndex: i_type];
[o_file_sub_ckbox setState: NSOffState];
-
+
i_result = [NSApp runModalForWindow: o_panel];
[o_panel close];
else if( [o_label isEqualToString: _NS("Network")] )
{
[self openNetInfoChanged: nil];
- }
+ }
}
- (void)openFileGeneric
NSString *o_ext = [o_filename pathExtension];
vlc_bool_t b_stream = [o_file_stream state];
BOOL b_dir = NO;
-
+
[[NSFileManager defaultManager] fileExistsAtPath:o_filename isDirectory:&b_dir];
if( b_dir )
b_stream ? "stream" : "file",
o_filename];
}
- [o_mrl setStringValue: o_mrl_string];
+ [o_mrl setStringValue: o_mrl_string];
}
- (IBAction)openFileBrowse:(id)sender
{
NSOpenPanel *o_open_panel = [NSOpenPanel openPanel];
-
+
[o_open_panel setAllowsMultipleSelection: NO];
[o_open_panel setCanChooseDirectories: YES];
[o_open_panel setTitle: _NS("Open File")];
types:nil
modalForWindow:[sender window]
modalDelegate: self
- didEndSelector: @selector(pathChosenInPanel:
+ didEndSelector: @selector(pathChosenInPanel:
withReturn:
contextInfo:)
contextInfo: nil];
{
NSString *o_type;
vlc_bool_t b_device, b_menus, b_title_chapter;
-
+
[o_disc_device removeAllItems];
b_title_chapter = ![o_disc_dvd_menus state];
-
+
o_type = [[o_disc_type selectedCell] title];
if ( [o_type isEqualToString: _NS("VIDEO_TS directory")] )
o_disc = o_type;
b_menus = 1;
}
-
+
o_devices = GetEjectableMediaOfClass( psz_class );
if ( o_devices != nil )
{
int i_devices = [o_devices count];
-
+
if ( i_devices )
{
int i;
-
+
for( i = 0; i < i_devices; i++ )
{
- [o_disc_device
+ [o_disc_device
addItemWithObjectValue: [o_devices objectAtIndex: i]];
}
}
else
{
- [o_disc_device setStringValue:
+ [o_disc_device setStringValue:
[NSString stringWithFormat: _NS("No %@s found"), o_disc]];
}
}
[NSString stringWithFormat: _NS("No %@s found"), o_type]] )
o_device = @"";
o_mrl_string = [NSString stringWithFormat: @"vcd://%@@%i:%i",
- o_device, i_title, i_chapter];
+ o_device, i_title, i_chapter];
}
else if ( [o_type isEqualToString: _NS("Audio CD")] )
{
[NSString stringWithFormat: _NS("No %@s found"), o_type]] )
o_device = @"";
o_mrl_string = [NSString stringWithFormat: @"cdda://%@",
- o_device];
+ o_device];
}
else if ( [o_type isEqualToString: _NS("DVD")] )
{
o_device = @"";
if ( b_menus )
o_mrl_string = [NSString stringWithFormat: @"dvdnav://%@",
- o_device];
+ o_device];
else
o_mrl_string = [NSString stringWithFormat: @"dvdread://%@@%i:%i-",
- o_device, i_title, i_chapter];
+ o_device, i_title, i_chapter];
}
else /* VIDEO_TS folder */
{
if ( b_menus )
o_mrl_string = [NSString stringWithFormat: @"dvdnav://%@",
- o_videots];
+ o_videots];
else
o_mrl_string = [NSString stringWithFormat: @"dvdread://%@@%i:%i",
- o_videots, i_title, i_chapter];
+ o_videots, i_title, i_chapter];
}
- [o_mrl setStringValue: o_mrl_string];
+ [o_mrl setStringValue: o_mrl_string];
}
- (IBAction)openDiscMenusChanged:(id)sender
if( i_tag == 0 )
{
[o_net_udp_port setIntValue: [o_net_udp_port_stp intValue]];
- [[NSNotificationCenter defaultCenter] postNotificationName: @"VLCOpenTextFieldWasClicked"
+ [[NSNotificationCenter defaultCenter] postNotificationName: @"VLCOpenTextFieldWasClicked"
object: o_net_udp_port];
[o_panel makeFirstResponder: o_net_udp_port];
}
else if( i_tag == 1 )
{
[o_net_udpm_port setIntValue: [o_net_udpm_port_stp intValue]];
- [[NSNotificationCenter defaultCenter] postNotificationName: @"VLCOpenTextFieldWasClicked"
+ [[NSNotificationCenter defaultCenter] postNotificationName: @"VLCOpenTextFieldWasClicked"
object: o_net_udpm_port];
[o_panel makeFirstResponder: o_net_udpm_port];
}
{
int i_port = [o_net_udp_port intValue];
- o_mrl_string = [NSString stringWithString: @"udp://"];
+ o_mrl_string = [NSString stringWithString: @"udp://"];
if( i_port != config_GetInt( p_intf, "server-port" ) )
{
- o_mrl_string =
- [o_mrl_string stringByAppendingFormat: @"@:%i", i_port];
- }
+ o_mrl_string =
+ [o_mrl_string stringByAppendingFormat: @"@:%i", i_port];
+ }
}
- else if( [o_mode isEqualToString: _NS("UDP/RTP Multicast")] )
+ else if( [o_mode isEqualToString: _NS("UDP/RTP Multicast")] )
{
NSString *o_addr = [o_net_udpm_addr stringValue];
int i_port = [o_net_udpm_port intValue];
- o_mrl_string = [NSString stringWithFormat: @"udp://@%@", o_addr];
+ o_mrl_string = [NSString stringWithFormat: @"udp://@%@", o_addr];
if( i_port != config_GetInt( p_intf, "server-port" ) )
{
- o_mrl_string =
- [o_mrl_string stringByAppendingFormat: @":%i", i_port];
- }
+ o_mrl_string =
+ [o_mrl_string stringByAppendingFormat: @":%i", i_port];
+ }
}
else if( [o_mode isEqualToString: _NS("HTTP/FTP/MMS/RTSP")] )
{
NSOpenPanel *o_open_panel = [NSOpenPanel openPanel];
int i;
b_autoplay = config_GetInt( VLCIntf, "macosx-autoplay" );
-
+
[o_open_panel setAllowsMultipleSelection: YES];
[o_open_panel setCanChooseDirectories: YES];
[o_open_panel setTitle: _NS("Open File")];
[o_open_panel setPrompt: _NS("Open")];
-
+
if( [o_open_panel runModalForDirectory: nil
file: nil types: nil] == NSOKButton )
{
else if( sender == o_eyetv_previousProgram_btn )
[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: NO];
else if( sender == o_eyetv_channels_pop )
- [[[VLCMain sharedInstance] getEyeTVController] selectChannel:
+ [[[VLCMain sharedInstance] getEyeTVController] selectChannel:
[sender indexOfSelectedItem]];
else
msg_Err( VLCIntf, "eyetvSwitchChannel sent by unknown object" );
[o_eyetv_chn_bgbar animate: self];
[o_eyetv_chn_status_txt setStringValue: _NS("Retrieving Channel Info...")];
[o_eyetv_chn_status_txt setHidden: NO];
-
+
/* retrieve info */
int x = 0;
int channelCount = ( [[[VLCMain sharedInstance] getEyeTVController] getNumberOfChannels] + 1 );
while( x != channelCount )
{
- /* we have to add items this way, because we accept duplicates
+ /* we have to add items this way, because we accept duplicates
* additionally, we save a bit of time */
[[o_eyetv_channels_pop menu] addItemWithTitle: [[[VLCMain sharedInstance] getEyeTVController] getNameOfChannel: x]
action: nil
keyEquivalent: @""];
x += 1;
}
-
+
/* clean up GUI */
[o_eyetv_chn_bgbar setHidden: YES];
[o_eyetv_chn_status_txt setHidden: YES];
- (IBAction)subFileBrowse:(id)sender
{
NSOpenPanel *o_open_panel = [NSOpenPanel openPanel];
-
+
[o_open_panel setAllowsMultipleSelection: NO];
[o_open_panel setTitle: _NS("Open File")];
[o_open_panel setPrompt: _NS("Open")];
- if( [o_open_panel runModalForDirectory: nil
+ if( [o_open_panel runModalForDirectory: nil
file: nil types: nil] == NSOKButton )
{
NSString *o_filename = [[o_open_panel filenames] objectAtIndex: 0];
}
@end
-
\ No newline at end of file
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#include "output.h"
/*****************************************************************************
- * VLCOutput implementation
+ * VLCOutput implementation
*****************************************************************************/
@implementation VLCOutput
[[o_method cellAtRow:0 column:0] setTitle: _NS("File")];
[[o_method cellAtRow:1 column:0] setTitle: _NS("Stream")];
[o_dump_chkbox setTitle: _NS("Dump raw input")];
- [o_btn_browse setTitle: _NS("Browse...")];
+ [o_btn_browse setTitle: _NS("Browse...")];
[o_stream_address_lbl setStringValue: _NS("Address")];
[o_stream_port_lbl setStringValue: _NS("Port")];
[o_stream_ttl_lbl setStringValue: @"TTL"];
componentsSeparatedByString: @"/"];
NSMutableString * o_finalStreamAddress;
o_finalStreamAddress = [[NSMutableString alloc] init];
-
+
if ([o_urlItems count] == 1)
{
[o_finalStreamAddress appendFormat: @"\"%@:%@\"", \
}
[o_finalStreamAddress appendString: @"\""];
}
-
+
[o_mrl_string appendFormat:
@"std{access=%@,mux=%@,dst=%@%@}",
o_mode, o_mux_string, o_finalStreamAddress, o_announce];
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
BOOL b_selected_item_met;
BOOL b_isSortDescending;
id o_tc_sortColumn;
-
+
/* "add node" button and menu entry */
IBOutlet id o_mi_addNode;
IBOutlet id o_btn_addNode;
#import <vlc_interface.h>
/*****************************************************************************
- * VLCPlaylistView implementation
+ * VLCPlaylistView implementation
*****************************************************************************/
@implementation VLCPlaylistView
}
else
{
- p_item = (playlist_item_t *)[item pointerValue];
+ p_item = (playlist_item_t *)[item pointerValue];
}
if( p_item && index < p_item->i_children && index >= 0 )
p_return = p_item->pp_children[index];
-
+
vlc_object_release( p_playlist );
o_value = [o_outline_dict objectForKey:[NSString stringWithFormat: @"%p", p_return]];
}
return @"error" ;
}
-
+
p_item = (playlist_item_t *)[item pointerValue];
if( !p_item || !p_item->p_input )
{
}
return @"error";
}
-
+
attempted_reload = NO;
if( [[o_tc identifier] isEqualToString:@"1"] )
o_value = [NSString stringWithUTF8String: psz_title];
if( o_value == NULL )
o_value = [NSString stringWithCString: psz_title];
- }
+ }
else
{
char *psz_name = input_item_GetName( p_item->p_input );
@"VLCPlaylistItemPboardType", nil]];
[o_outline_view setIntercellSpacing: NSMakeSize (0.0, 1.0)];
- /* this uses private Apple API which works fine until 10.4,
+ /* this uses private Apple API which works fine until 10.4,
* but keep checking in the future!
* These methods are being added artificially to NSOutlineView's interface above */
o_ascendingSortingImage = [[NSOutlineView class] _defaultTableHeaderSortImage];
/* Check whether to enable these menuitems */
objectname = i>=0 ? (char *)p_parser->pp_shortcuts[i] : (char *)p_parser->psz_object_name;
b_enabled = playlist_IsServicesDiscoveryLoaded( p_playlist, objectname );
-
+
/* Create the menu entries used in the playlist menu */
o_lmi = [[o_mi_services submenu] addItemWithTitle:
[NSString stringWithUTF8String:
[o_lmi setTarget: self];
[o_lmi setRepresentedObject: [NSString stringWithCString: objectname]];
if( b_enabled ) [o_lmi setState: NSOnState];
-
+
/* Create the menu entries for the main menu */
o_lmi = [[o_mm_mi_services submenu] addItemWithTitle:
[NSString stringWithUTF8String:
{
[o_status_field setStringValue: [NSString stringWithFormat:
_NS("%i items in the playlist"),
- playlist_CurrentSize( p_playlist )]];
+ playlist_CurrentSize( p_playlist )]];
}
else
{
{
o_real_filename = o_filename;
}
- playlist_Export( p_playlist,
- [o_real_filename fileSystemRepresentation],
+ playlist_Export( p_playlist,
+ [o_real_filename fileSystemRepresentation],
p_playlist->p_local_category, "export-xspf" );
}
else
{
o_real_filename = o_filename;
}
- playlist_Export( p_playlist,
+ playlist_Export( p_playlist,
[o_real_filename fileSystemRepresentation],
p_playlist->p_local_category, "export-m3u" );
}
NSMutableArray *o_to_preparse;
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = pl_Yield( p_intf );
-
+
o_to_preparse = [NSMutableArray arrayWithArray:[[o_outline_view selectedRowEnumerator] allObjects]];
i_count = [o_to_preparse count];
/* Add the item */
playlist_AddInput( p_playlist, p_input, PLAYLIST_INSERT,
i_position == -1 ? PLAYLIST_END : i_position + i_item, VLC_TRUE,
- VLC_FALSE );
+ VLC_FALSE );
if( i_item == 0 && !b_enqueue )
{
/* we have to create a new thread here because otherwise we would block the
* interface since the interaction-stuff and this code would run in the same
* thread */
- [NSThread detachNewThreadSelector: @selector(addNodeThreadedly)
+ [NSThread detachNewThreadSelector: @selector(addNodeThreadedly)
toTarget: self withObject:nil];
[self playlistUpdated];
}
int ret_v;
char *psz_name = NULL;
playlist_item_t * p_item;
- ret_v = intf_UserStringInput( p_playlist, _("New Node"),
+ ret_v = intf_UserStringInput( p_playlist, _("New Node"),
_("Please enter a name for the new node."), &psz_name );
if( psz_name != NULL && psz_name != "" )
- p_item = playlist_NodeCreate( p_playlist, psz_name,
+ p_item = playlist_NodeCreate( p_playlist, psz_name,
p_playlist->p_local_category, 0 );
else if(! config_GetInt( p_playlist, "interact" ) )
{
/* in case that the interaction is disabled, just give it a bogus name */
- p_item = playlist_NodeCreate( p_playlist, _("Empty Folder"),
+ p_item = playlist_NodeCreate( p_playlist, _("Empty Folder"),
p_playlist->p_local_category, 0 );
}
{
[o_status_field setStringValue: [NSString stringWithFormat:
_NS("%i items in the playlist"),
- playlist_CurrentSize( p_playlist )]];
+ playlist_CurrentSize( p_playlist )]];
}
else
{
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
/*****************************************************************************
- * VLCPlaylistInfo interface
+ * VLCPlaylistInfo interface
*****************************************************************************/
IBOutlet id o_btn_delete_group;
IBOutlet id o_btn_add_group;
IBOutlet id o_outline_view;
-
+
IBOutlet id o_tab_view;
IBOutlet id o_collection_lbl;
[o_author_lbl setStringValue: _NS("Author")];
[o_btn_ok setTitle: _NS("OK")];
[o_btn_cancel setTitle: _NS("Cancel")];
-
+
[[o_tab_view tabViewItemAtIndex: 0] setLabel: _NS("General")];
[[o_tab_view tabViewItemAtIndex: 1] setLabel: _NS("Advanced Information")];
[[o_tab_view tabViewItemAtIndex: 2] setLabel: _NS("Statistics")];
[o_language_lbl setStringValue: _NS(VLC_META_LANGUAGE)];
[o_nowPlaying_lbl setStringValue: _NS(VLC_META_NOW_PLAYING)];
[o_publisher_lbl setStringValue: _NS(VLC_META_PUBLISHER)];
-
+
/* statistics */
[o_input_box setTitle: _NS("Input")];
[o_read_bytes_lbl setStringValue: _NS("Read at media")];
[o_input_bitrate_lbl setStringValue: _NS("Input bitrate")];
[o_demux_bytes_lbl setStringValue: _NS("Demuxed")];
[o_demux_bitrate_lbl setStringValue: _NS("Stream bitrate")];
-
+
[o_video_box setTitle: _NS("Video")];
[o_video_decoded_lbl setStringValue: _NS("Decoded blocks")];
[o_displayed_lbl setStringValue: _NS("Displayed frames")];
[o_lost_frames_lbl setStringValue: _NS("Lost frames")];
-
+
[o_sout_box setTitle: _NS("Streaming")];
[o_sent_packets_lbl setStringValue: _NS("Sent packets")];
[o_sent_bytes_lbl setStringValue: _NS("Sent bytes")];
[o_sent_bitrate_lbl setStringValue: _NS("Send rate")];
-
+
[o_audio_box setTitle: _NS("Audio")];
[o_audio_decoded_lbl setStringValue: _NS("Decoded blocks")];
[o_played_abuffers_lbl setStringValue: _NS("Played buffers")];
[super finalize];
}
#endif
-
+
- (IBAction)togglePlaylistInfoPanel:(id)sender
{
if( [o_info_window isVisible] )
p_item = p_playlist->status.p_item;
vlc_object_release( p_playlist );
-
+
[self initPanel:sender];
}
}
{
o_statUpdateTimer = [NSTimer scheduledTimerWithTimeInterval: 1
target: self selector: @selector(updateStatistics:)
- userInfo: nil repeats: YES];
+ userInfo: nil repeats: YES];
[o_statUpdateTimer fire];
[o_statUpdateTimer retain];
}
- (void)setMeta: (char *)psz_meta forLabel: (id)theItem
{
if( psz_meta != NULL && *psz_meta)
- [theItem setStringValue:
- ([NSString stringWithUTF8String:psz_meta] == nil ) ?
+ [theItem setStringValue:
+ ([NSString stringWithUTF8String:psz_meta] == nil ) ?
[NSString stringWithCString:psz_meta] :
[NSString stringWithUTF8String:psz_meta]];
else
* Copyright (C) 2002-2005 the VideoLAN team
* $Id$
*
- * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
+ * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
VLCTreeItem *o_config_tree;
NSView *o_empty_view;
NSMutableDictionary *o_save_prefs;
-
+
IBOutlet id o_prefs_window;
IBOutlet id o_title;
IBOutlet id o_tree;
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-/* VLCPrefs manages the main preferences dialog
+/* VLCPrefs manages the main preferences dialog
the class is related to wxwindows intf, PrefsPanel */
/* VLCTreeItem should contain:
- the children of the treeitem
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
{
- return (item == nil) ? YES : ( ([item numberOfChildren] != -1) &&
+ return (item == nil) ? YES : ( ([item numberOfChildren] != -1) &&
([item numberOfChildren] != 0));
}
/* get parser */
p_parser = (module_t *)p_list->p_values[i_index].p_object;
p_end = p_parser->p_config + p_parser->confsize;
-
+
if( [[self getName] isEqualToString: @"main"] )
{
/*
switch( p_item->i_type )
{
case CONFIG_CATEGORY:
- if( p_item->value.i == -1 ) break;
+ if( p_item->value.i == -1 ) break;
o_child_name = [[VLCMain sharedInstance]
localizedString: config_CategoryNameGet( p_item->value.i )];
whithCategory: p_item - p_module->p_config]];
break;
case CONFIG_SUBCATEGORY:
- if( p_item->value.i == -1 ) break;
+ if( p_item->value.i == -1 ) break;
if( p_item->value.i != SUBCAT_PLAYLIST_GENERAL &&
p_item->value.i != SUBCAT_VIDEO_GENERAL &&
initWithCapacity:10]
whithCategory: p_item - p_module->p_config]];
}
-
+
break;
default:
break;
NSView *o_view;
[[VLCPrefs sharedInstance] setTitle: [self getTitle]];
- /* NSLog( [self getHelp] ); */
+ /* NSLog( [self getHelp] ); */
s_vrc = [[o_prefs_view contentView] bounds]; s_vrc.size.height -= 4;
o_view = [[VLCFlippedView alloc] initWithFrame: s_vrc];
[o_view setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin |
vlc_list_t *p_list;
module_t *p_parser = NULL;
module_config_t *p_item,
- *p_end;
+ *p_end;
o_subviews = [[NSMutableArray alloc] initWithCapacity:10];
/* Get a pointer to the module */
/* 0OOoo something went really bad */
return nil;
}
-
+
p_end = p_parser->p_config + p_parser->confsize;
-
+
p_item = p_parser->p_config;
p_item = p_parser->p_config + 1;
return o_view;
}
p_end = p_parser->p_config + p_parser->confsize;
-
+
p_item = (p_parser->p_config + i_object_category);
if( ( p_item->i_type == CONFIG_CATEGORY ) &&
( ( p_item->value.i == CAT_PLAYLIST ) ||
default:
{
VLCConfigControl *o_control = nil;
- if( p_item->b_internal == VLC_TRUE )
- {
- break;
- }
+ if( p_item->b_internal == VLC_TRUE )
+ {
+ break;
+ }
o_control = [VLCConfigControl newControl:p_item
withView:o_view];
if( o_control != nil )
NSEnumerator *enumerator = [o_subviews objectEnumerator];
VLCConfigControl *o_widget;
NSRect o_frame;
-
+
while( ( o_widget = [enumerator nextObject] ) )
if( ( [o_widget isAdvanced] ) && (! b_advanced) )
continue;
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
- * Authors: Derk-Jan Hartman <hartman at videolan.org>
+ * Authors: Derk-Jan Hartman <hartman at videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- (id) initWithItem: (module_config_t *)_p_item
withView: (NSView *)o_parent_view;
-
+
@end
//#undef CONFIG_ITEM_LIST_STRING
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#define OFFSET_RIGHT 20
#define OFFSET_BETWEEN 2
-#define UPWARDS_WHITE_ARROW "\xE2\x87\xA7"
+#define UPWARDS_WHITE_ARROW "\xE2\x87\xA7"
#define OPTION_KEY "\xE2\x8C\xA5"
#define UP_ARROWHEAD "\xE2\x8C\x83"
#define PLACE_OF_INTEREST_SIGN "\xE2\x8C\x98"
types:nil
modalForWindow:[sender window]
modalDelegate: self
- didEndSelector: @selector(pathChosenInPanel:
+ didEndSelector: @selector(pathChosenInPanel:
withReturn:
contextInfo:)
contextInfo: nil];
p_parser->psz_object_name) )
[o_popup selectItem:[o_popup lastItem]];
}
- }
+ }
}
}
vlc_list_release( p_list );
IBOutlet id o_logo_opaque_sld;
IBOutlet id o_logo_pos_lbl;
IBOutlet id o_logo_pos_radio;
-
+
/* marquee section */
IBOutlet id o_marq_enabled_ckb;
IBOutlet id o_marq_color_lbl;
IBOutlet id o_time_size_pop;
IBOutlet id o_time_stamp_fld;
IBOutlet id o_time_stamp_lbl;
-
+
BOOL o_config_changed;
BOOL o_save_settings;
NSArray * o_colors;
/*****************************************************************************
- * Note:
- * the code used to bind with VLC's core is partially based upon the
- * RC-interface, written by Antoine Cellerier and Mark F. Moriarty
- * (members of the VideoLAN team)
+ * Note:
+ * the code used to bind with VLC's core is partially based upon the
+ * RC-interface, written by Antoine Cellerier and Mark F. Moriarty
+ * (members of the VideoLAN team)
*****************************************************************************/
#import "sfilters.h"
- (void)awakeFromNib
{
/* colors as implemented at the beginning of marq.c and time.c
- * feel free to add more colors, but remember to add them to these files
+ * feel free to add more colors, but remember to add them to these files
* as well to keep a certain level of consistency across the interfaces */
NSArray * o_default;
NSArray * o_black;
unsigned int x = 0;
[o_marq_color_pop removeAllItems];
[o_time_color_pop removeAllItems];
-
- /* we are adding tags to the items, so we can easily identify them even if
+
+ /* we are adding tags to the items, so we can easily identify them even if
* the menu was sorted */
while (x != [o_colors count])
{
[o_marq_color_pop addItemWithTitle: [[o_colors objectAtIndex:x]
objectAtIndex:0]];
[[o_marq_color_pop lastItem] setTag: x];
-
+
[o_time_color_pop addItemWithTitle: [[o_colors objectAtIndex:x]
objectAtIndex:0]];
[[o_time_color_pop lastItem] setTag: x];
-
+
x = (x + 1);
}
NULL, 0) != tempInt )
{
x = (x + 1);
-
+
if( x >= [o_marq_color_pop numberOfItems] )
{
x = 0;
[o_marq_marq_fld setStringValue: [NSString stringWithUTF8String: psz_temp]];
else
[o_marq_marq_fld setStringValue: _NS("Not Available")];
-
+
[o_marq_opaque_sld setIntValue: config_GetInt( p_intf, "marq-opacity")];
[o_marq_pos_radio selectCellWithTag: config_GetInt( p_intf, "marq-position" )];
/* FIXME: the following line doesn't work with "-1", which is the default
* value */
- [o_marq_size_pop selectItemWithTitle:
+ [o_marq_size_pop selectItemWithTitle:
[[NSNumber numberWithInt: config_GetInt( p_intf, "marq-size" )]
stringValue]];
[o_marq_size_pop selectItemAtIndex: x];
[o_marq_tmOut_fld setStringValue: [[NSNumber numberWithInt:
config_GetInt( p_intf, "marq-timeout" )] stringValue]];
-
+
/* retrieve the time settings */
x = 0;
tempInt = config_GetInt( p_intf, "time-color" );
NULL, 0) != tempInt )
{
x = (x + 1);
-
+
if( x >= [o_time_color_pop numberOfItems] )
{
x = 0;
[o_time_opaque_sld setIntValue: config_GetInt( p_intf, "time-opacity")];
/* FIXME: the following line doesn't work with "-1", which is the default
* value */
- [o_time_size_pop selectItemWithTitle:
+ [o_time_size_pop selectItemWithTitle:
[[NSNumber numberWithInt: config_GetInt( p_intf, "time-size" )]
stringValue]];
- [o_time_pos_radio selectCellWithTag: config_GetInt( p_intf, "time-position" )];
+ [o_time_pos_radio selectCellWithTag: config_GetInt( p_intf, "time-position" )];
/* retrieve the logo settings */
[o_logo_opaque_sld setIntValue: config_GetInt( p_intf, "logo-transparency")];
else
[o_logo_image_fld setStringValue: @""];
[o_logo_pos_radio selectCellWithTag: config_GetInt( p_intf, "logo-position" )];
-
+
/* enable the requested filters */
char * psz_subfilters;
psz_subfilters = config_GetPsz( p_intf, "sub-filter" );
[o_marq_enabled_ckb setState: YES];
else
[o_marq_enabled_ckb setState: NO];
-
+
if( strstr( psz_subfilters, "logo") )
[o_logo_enabled_ckb setState: YES];
else
[o_logo_enabled_ckb setState: NO];
-
+
if( strstr( psz_subfilters, "time") )
[o_time_enabled_ckb setState: YES];
else
/* general properties */
if( sender == o_sfilter_saveSettings_ckb)
{
- o_save_settings = [o_sfilter_saveSettings_ckb state];
+ o_save_settings = [o_sfilter_saveSettings_ckb state];
}
/* marquee */
config_PutInt( p_intf, "marq-timeout", val.i_int );
}
-
+
/* time */
-
+
else if( sender == o_time_stamp_fld )
{
if( [[o_time_stamp_fld stringValue] length] == 0 )
[self changeFiltersString:(char *)"time" onOrOff:VLC_FALSE];
}
[self enableTime];
- }
+ }
}
- (void)enableMarq
* and slightly modified to suit our needs */
intf_thread_t * p_intf = VLCIntf;
-
+
char *psz_parser, *psz_string;
psz_string = config_GetPsz( p_intf, "sub-filter" );
-
+
if( !psz_string ) psz_string = strdup("");
psz_parser = strstr( psz_string, psz_name );
return;
}
}
-
+
config_PutPsz( p_intf, "sub-filter", psz_string );
-
+
/* Try to set on the fly */
/* FIXME: enable this once we support on-the-fly addition of this kind of
* filters... */
/*****************************************************************************
- * Note: the code used to communicate with VLC's core was inspired by
- * ../wxwidgets/dialogs/updatevlc.cpp, written by Antoine Cellerier.
+ * Note: the code used to communicate with VLC's core was inspired by
+ * ../wxwidgets/dialogs/updatevlc.cpp, written by Antoine Cellerier.
*****************************************************************************/
/* clean the interface */
[o_fld_releaseNote setString: @""];
-
+
[self initInterface];
}
{
NSDate *o_last_update;
NSDate *o_next_update;
-
+
if( ![[NSUserDefaults standardUserDefaults] objectForKey: kPrefUpdateOnStartup] )
{
/* We don't have any preferences stored, ask the user. */
/* provide a save dialogue */
SEL sel = @selector(getLocationForSaving:returnCode:contextInfo:);
NSSavePanel * saveFilePanel = [[NSSavePanel alloc] init];
-
+
[saveFilePanel setRequiredFileType: @"dmg"];
[saveFilePanel setCanSelectHiddenExtension: YES];
[saveFilePanel setCanCreateDirectories: YES];
p_uit->i_rs = UPDATE_RELEASE_STATUS_NEWER;
p_uit->i_t = UPDATE_FILE_TYPE_ALL;
update_iterator_Action( p_uit, UPDATE_MIRROR );
-
+
while( update_iterator_Action( p_uit, UPDATE_FILE) != UPDATE_FAIL )
{
msg_Dbg( p_intf, "parsing available updates, run %i", x );
/* if the announced item is of the type "binary", keep it and display
- * its details to the user. Do similar stuff on "info". Do both
+ * its details to the user. Do similar stuff on "info". Do both
* only if the file is announced as stable */
if( p_uit->release.i_type == UPDATE_RELEASE_TYPE_STABLE )
{
"is %s (%i MB to download)."), \
p_uit->release.psz_version, ((p_uit->file.l_size \
/ 1024) / 1024)]];
-
+
if( o_urlOfBinary )
[o_urlOfBinary release];
o_urlOfBinary = [[NSString alloc] initWithUTF8String: \
msleep( 500000 );
/* let's open our cached release note and display it
- * we can't use NSString stringWithContentsOfFile:encoding:error:
+ * we can't use NSString stringWithContentsOfFile:encoding:error:
* since it is Tiger only */
NSString * releaseNote = [[NSString alloc] initWithData: \
[NSData dataWithContentsOfFile: pathToReleaseNote] \
encoding: NSISOLatin1StringEncoding];
if( releaseNote )
[o_fld_releaseNote setString: releaseNote];
-
+
/* delete the file since it isn't needed anymore */
BOOL myBOOL = NO;
myBOOL = [[NSFileManager defaultManager] removeFileAtPath: \
update_download( p_uit, (char *)[path UTF8String] );
}
}
-
+
update_iterator_Delete( p_uit );
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
p_vout = NULL;
s_frame = nil;
o_window = nil;
- p_real_vout = NULL;
+ p_real_vout = NULL;
}
- (void)updateTitle
[o_mrl deleteCharactersInRange: prefix_range];
if( [o_mrl characterAtIndex:0] == '/' )
- {
+ {
/* it's a local file */
[o_window setRepresentedFilename: o_mrl];
}
{
/* FIXME: this isn't the appropriate place, but we can't receive
* NSRightMouseDown some how */
- msg_Dbg( p_vout, "received NSRightMouseUp" );
+ msg_Dbg( p_vout, "received NSRightMouseUp" );
[NSMenu popUpContextMenu: [[VLCMain sharedInstance] getVoutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] getControls] getVoutView]];
}
/* o_window needs to point to our o_embeddedwindow, super might have set it
* to the fullscreen window that o_embeddedwindow setups during fullscreen */
o_window = o_embeddedwindow;
-
+
if( b_return )
{
[o_window lockFullscreenAnimation];
if(!playlist_IsPlaying( p_playlist ))
[o_window performSelectorOnMainThread: @selector(orderOut:) withObject: self waitUntilDone: YES];
-
+
vlc_object_release( p_playlist );
[super closeVout];
* this won't and is not supposed to work when it's fading right now */
if( [[[[VLCMain sharedInstance] getControls] getFSPanel] isDisplayed] )
[[[[VLCMain sharedInstance] getControls] getFSPanel] setActive: nil];
-
+
/* tell the fspanel to move itself to front next time it's triggered */
[[[[VLCMain sharedInstance] getControls] getFSPanel] setVoutWasUpdated: i_device];
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreBuffered
defer: YES screen: o_screen];
-
+
if( b_menubar_screen )
{
SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
CGDisplayFadeReservationToken token;
CGAcquireDisplayFadeReservation(kCGMaxDisplayReservationInterval, &token);
CGDisplayFade( token, 0.3 , kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES );
-
+
[self disableScreenUpdatesUntilFlush];
[self orderOut: self];
WindowRef theWindow;
WindowGroupRef winGroup;
vlc_bool_t b_clipped_out;
- Rect clipBounds, viewBounds;
+ Rect clipBounds, viewBounds;
};
/*****************************************************************************
var_Get( p_vout->p_libvlc, "drawable", &value_drawable );
if( value_drawable.i_int != 0 )
{
- static const GLint ATTRIBUTES[] = {
+ static const GLint ATTRIBUTES[] = {
AGL_WINDOW,
AGL_RGBA,
AGL_NO_RECOVERY,
msg_Err( p_vout, "no screen renderer available for required attributes." );
return VLC_EGENERIC;
}
-
+
p_vout->p_sys->agl_ctx = aglCreateContext(pixFormat, NULL);
aglDestroyPixelFormat(pixFormat);
if( NULL == p_vout->p_sys->agl_ctx )
#define o_glview p_vout->p_sys->o_glview
o_glview = [[VLCGLView alloc] initWithVout: p_vout];
[o_glview autorelease];
-
+
if( p_vout->p_sys->b_saved_frame )
{
p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
{
p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
subView: o_glview frame: nil];
-
+
}
#undef o_glview
}
{
vlc_value_t val;
- Rect viewBounds;
+ Rect viewBounds;
Rect clipBounds;
-
+
var_Get( p_vout->p_libvlc, "drawable", &val );
p_vout->p_sys->agl_drawable = (AGLDrawable)val.i_int;
aglSetDrawable(p_vout->p_sys->agl_ctx, p_vout->p_sys->agl_drawable);
unsigned int i_height = p_vout->p_sys->i_height;
unsigned int i_width = p_vout->p_sys->i_width;
- vout_PlacePicture(p_vout, i_width, i_height, &x, &y, &i_width, &i_height);
+ vout_PlacePicture(p_vout, i_width, i_height, &x, &y, &i_width, &i_height);
glViewport( p_vout->p_sys->i_offx + x, p_vout->p_sys->i_offy + y, i_width, i_height );
}
/* private event class */
-enum
+enum
{
kEventClassVLCPlugin = 'vlcp',
};
{
/* Close the fullscreen window and resume normal drawing */
vlc_value_t val;
- Rect viewBounds;
+ Rect viewBounds;
Rect clipBounds;
var_Get( p_vout->p_libvlc, "drawable", &val );
else
{
Rect deviceRect;
-
+
GDHandle deviceHdl = GetMainDevice();
deviceRect = (*deviceHdl)->gdRect;
-
+
if( !p_vout->p_sys->theWindow )
{
/* Create a window */
| kWindowStandardHandlerAttribute
| kWindowLiveResizeAttribute
| kWindowNoShadowAttribute;
-
+
windowAttrs &= (~kWindowResizableAttribute);
CreateNewWindow(kDocumentWindowClass, windowAttrs, &deviceRect, &p_vout->p_sys->theWindow);
SetWindowGroup(p_vout->p_sys->theWindow, p_vout->p_sys->winGroup);
SetWindowGroupParent( p_vout->p_sys->winGroup, GetWindowGroupOfClass(kDocumentWindowClass) ) ;
}
-
+
// Window title
CFStringRef titleKey = CFSTR("Fullscreen VLC media plugin");
CFStringRef windowTitle = CFCopyLocalizedString(titleKey, NULL);
SetWindowTitleWithCFString(p_vout->p_sys->theWindow, windowTitle);
CFRelease(titleKey);
CFRelease(windowTitle);
-
+
//Install event handler
static const EventTypeSpec win_events[] = {
{ kEventClassMouse, kEventMouseDown },
clipBounds.left = va_arg( args, int);
clipBounds.bottom = va_arg( args, int);
clipBounds.right = va_arg( args, int);
-
- if( !p_vout->b_fullscreen )
+
+ if( !p_vout->b_fullscreen )
{
/*
** check that the clip rect is not empty, as this is used
p_vout->p_sys->i_height = viewBounds.bottom-viewBounds.top;
p_vout->p_sys->i_offx = -clipBounds.left - viewBounds.left;
p_vout->p_sys->i_offy = clipBounds.bottom + viewBounds.top
- - p_vout->p_sys->i_height;
+ - p_vout->p_sys->i_height;
aglUpdateContext(p_vout->p_sys->agl_ctx);
}
{
OSStatus result = noErr;
UInt32 class = GetEventClass (event);
- UInt32 kind = GetEventKind (event);
+ UInt32 kind = GetEventKind (event);
vout_thread_t *p_vout = (vout_thread_t *)userData;
result = CallNextEventHandler(nextHandler, event);
{
HICommand theHICommand;
GetEventParameter( event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand );
-
+
switch ( theHICommand.commandID )
{
default:
{
WindowRef window;
Rect rectPort = {0,0,0,0};
-
+
GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
if(window)
{
GetPortBounds(GetWindowPort(window), &rectPort);
- }
+ }
switch (kind)
{
case kEventWindowZoomed:
case kEventWindowBoundsChanged:
break;
-
+
default:
result = eventNotHandledErr;
}
case kEventMouseDown:
{
UInt16 button;
-
+
GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
switch (button)
{
case kEventMouseUp:
{
UInt16 button;
-
+
GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
switch (button)
{
unsigned int i_height = p_vout->p_sys->i_height;
unsigned int i_width = p_vout->p_sys->i_width;
- vout_PlacePicture(p_vout, i_width, i_height, &i_x, &i_y, &i_width, &i_height);
+ vout_PlacePicture(p_vout, i_width, i_height, &i_x, &i_y, &i_width, &i_height);
GetEventParameter(event, kEventParamWindowMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &ml);
-
+
val.i_int = ( ((int)ml.h) - i_x ) *
p_vout->render.i_width / i_width;
var_Set( p_vout, "mouse-x", val );
break;
}
-
+
default:
result = eventNotHandledErr;
}
#ifdef __ppc__
/*
* before 10.4, we set the AGL context as current and
- * then we retrieve and use the matching CGL context
+ * then we retrieve and use the matching CGL context
*/
aglSetCurrentContext(p_vout->p_sys->agl_ctx);
return kCGLNoError != CGLLockContext( CGLGetCurrentContext() );
#ifdef __ppc__
/*
* before 10.4, we assume that the AGL context is current.
- * therefore, we use the current CGL context
+ * therefore, we use the current CGL context
*/
CGLUnlockContext( CGLGetCurrentContext() );
#else
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
p_vout->p_sys->b_cpu_has_simd =
vlc_CPU() & (CPU_CAPABILITY_ALTIVEC|CPU_CAPABILITY_MMXEXT);
msg_Dbg( p_vout, "we do%s have SIMD enabled CPU", p_vout->p_sys->b_cpu_has_simd ? "" : "n't" );
-
+
/* Initialize QuickTime */
- p_vout->p_sys->h_img_descr =
+ p_vout->p_sys->h_img_descr =
(ImageDescriptionHandle)NewHandleClear( sizeof(ImageDescription) );
p_vout->p_sys->p_matrix =
(MatrixRecordPtr)malloc( sizeof(MatrixRecord) );
nil, &p_vout->p_sys->img_dc );
}
vlc_mutex_unlock( &p_vout->p_libvlc->quicktime_lock );
-
+
if( err == noErr && p_vout->p_sys->img_dc != 0 )
{
if( p_vout->p_sys->b_cpu_has_simd )
free( p_vout->p_sys->p_matrix );
DisposeHandle( (Handle)p_vout->p_sys->h_img_descr );
free( p_vout->p_sys );
- return VLC_EGENERIC;
+ return VLC_EGENERIC;
}
if( p_vout->b_fullscreen || !p_vout->p_sys->b_embedded )
if( p_vout->b_fullscreen || !p_vout->p_sys->b_embedded )
{
- Rect s_rect;
+ Rect s_rect;
p_vout->p_sys->clip_mask = NULL;
- GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
- p_vout->p_sys->i_origx = s_rect.left;
- p_vout->p_sys->i_origy = s_rect.top;
- p_vout->p_sys->i_width = s_rect.right - s_rect.left;
- p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
+ GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
+ p_vout->p_sys->i_origx = s_rect.left;
+ p_vout->p_sys->i_origy = s_rect.top;
+ p_vout->p_sys->i_width = s_rect.right - s_rect.left;
+ p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
}
else
{
- /* As we are embedded (e.g. running as a Mozilla plugin), use the pointer
- * stored in the "drawable" value as the CGrafPtr for the QuickDraw
- * graphics port */
+ /* As we are embedded (e.g. running as a Mozilla plugin), use the pointer
+ * stored in the "drawable" value as the CGrafPtr for the QuickDraw
+ * graphics port */
/* Create the clipping mask */
p_vout->p_sys->clip_mask = NewRgn();
- UpdateEmbeddedGeometry(p_vout);
- var_AddCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
+ UpdateEmbeddedGeometry(p_vout);
+ var_AddCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
}
QTScaleMatrix( p_vout );
if( !p_vout->b_fullscreen && p_vout->p_sys->b_embedded )
{
- var_DelCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
- DisposeRgn(p_vout->p_sys->clip_mask);
+ var_DelCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
+ DisposeRgn(p_vout->p_sys->clip_mask);
}
/* Free the direct buffers we allocated */
{
if( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE )
{
- if( CoToggleFullscreen( p_vout ) )
+ if( CoToggleFullscreen( p_vout ) )
{
return( 1 );
}
if( p_vout->i_changes & VOUT_SIZE_CHANGE )
{
- if( p_vout->b_fullscreen || !p_vout->p_sys->b_embedded )
- {
- /* get the geometry from NSQuickDrawView */
- Rect s_rect;
- GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
- p_vout->p_sys->i_origx = s_rect.left;
- p_vout->p_sys->i_origy = s_rect.top;
- p_vout->p_sys->i_width = s_rect.right - s_rect.left;
- p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
- }
- else
- {
- /* As we're embedded, get the geometry from Mozilla/Safari NPWindow object */
- UpdateEmbeddedGeometry( p_vout );
- SetDSequenceMask(p_vout->p_sys->i_seq,
- p_vout->p_sys->clip_mask);
- }
+ if( p_vout->b_fullscreen || !p_vout->p_sys->b_embedded )
+ {
+ /* get the geometry from NSQuickDrawView */
+ Rect s_rect;
+ GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
+ p_vout->p_sys->i_origx = s_rect.left;
+ p_vout->p_sys->i_origy = s_rect.top;
+ p_vout->p_sys->i_width = s_rect.right - s_rect.left;
+ p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
+ }
+ else
+ {
+ /* As we're embedded, get the geometry from Mozilla/Safari NPWindow object */
+ UpdateEmbeddedGeometry( p_vout );
+ SetDSequenceMask(p_vout->p_sys->i_seq,
+ p_vout->p_sys->clip_mask);
+ }
}
if( p_vout->i_changes & VOUT_SIZE_CHANGE ||
CodecFlags flags;
if( (NULL == p_vout->p_sys->clip_mask) || !EmptyRgn(p_vout->p_sys->clip_mask) )
{
- //CGrafPtr oldPort;
- //Rect oldBounds;
-
- /* since there is not way to lock a QuickDraw port for exclusive use
- there is a potential problem that the frame will be displayed
- in the wrong place if other embedded plugins redraws as the port
- origin may be changed */
- //GetPort(&oldPort);
- //GetPortBounds(p_vout->p_sys->p_qdport, &oldBounds);
- SetPort(p_vout->p_sys->p_qdport);
- SetOrigin(p_vout->p_sys->i_origx, p_vout->p_sys->i_origy);
- if( ( err = DecompressSequenceFrameWhen(
- p_vout->p_sys->i_seq,
- p_pic->p_sys->p_data,
- p_pic->p_sys->i_size,
- codecFlagUseImageBuffer, &flags, NULL, NULL ) == noErr ) )
- {
- QDFlushPortBuffer( p_vout->p_sys->p_qdport, p_vout->p_sys->clip_mask );
- //QDFlushPortBuffer( p_vout->p_sys->p_qdport, NULL );
- }
- else
- {
- msg_Warn( p_vout, "QT failed to display the frame sequence: %d", err );
- }
- //SetPortBounds(p_vout->p_sys->p_qdport, &oldBounds);
- //SetPort(oldPort);
+ //CGrafPtr oldPort;
+ //Rect oldBounds;
+
+ /* since there is not way to lock a QuickDraw port for exclusive use
+ there is a potential problem that the frame will be displayed
+ in the wrong place if other embedded plugins redraws as the port
+ origin may be changed */
+ //GetPort(&oldPort);
+ //GetPortBounds(p_vout->p_sys->p_qdport, &oldBounds);
+ SetPort(p_vout->p_sys->p_qdport);
+ SetOrigin(p_vout->p_sys->i_origx, p_vout->p_sys->i_origy);
+ if( ( err = DecompressSequenceFrameWhen(
+ p_vout->p_sys->i_seq,
+ p_pic->p_sys->p_data,
+ p_pic->p_sys->i_size,
+ codecFlagUseImageBuffer, &flags, NULL, NULL ) == noErr ) )
+ {
+ QDFlushPortBuffer( p_vout->p_sys->p_qdport, p_vout->p_sys->clip_mask );
+ //QDFlushPortBuffer( p_vout->p_sys->p_qdport, NULL );
+ }
+ else
+ {
+ msg_Warn( p_vout, "QT failed to display the frame sequence: %d", err );
+ }
+ //SetPortBounds(p_vout->p_sys->p_qdport, &oldBounds);
+ //SetPort(oldPort);
}
}
}
/*****************************************************************************
- * CoToggleFullscreen: toggle fullscreen
+ * CoToggleFullscreen: toggle fullscreen
*****************************************************************************
* Returns 0 on success, 1 otherwise
*****************************************************************************/
/* ignore changes until we are ready for them */
if( (oval.i_int != nval.i_int) && (nval.i_int == 1) )
{
- vout_thread_t *p_vout = (vout_thread_t *)param;
- /* prevent QT from rendering any more video until we have updated
- the geometry */
- SetEmptyRgn(p_vout->p_sys->clip_mask);
- SetDSequenceMask(p_vout->p_sys->i_seq,
- p_vout->p_sys->clip_mask);
+ vout_thread_t *p_vout = (vout_thread_t *)param;
+ /* prevent QT from rendering any more video until we have updated
+ the geometry */
+ SetEmptyRgn(p_vout->p_sys->clip_mask);
+ SetDSequenceMask(p_vout->p_sys->i_seq,
+ p_vout->p_sys->clip_mask);
- p_vout->i_changes |= VOUT_SIZE_CHANGE;
+ p_vout->i_changes |= VOUT_SIZE_CHANGE;
}
return VLC_SUCCESS;
}
{
vlc_value_t val;
vlc_value_t valt, vall, valb, valr, valx, valy, valw, valh,
- valportx, valporty;
+ valportx, valporty;
var_Get( p_vout->p_libvlc, "drawable", &val );
var_Get( p_vout->p_libvlc, "drawablet", &valt );
/* update video clipping mask */
/*SetRectRgn( p_vout->p_sys->clip_mask , vall.i_int ,
- valt.i_int, valr.i_int, valb.i_int );*/
+ valt.i_int, valr.i_int, valb.i_int );*/
SetRectRgn( p_vout->p_sys->clip_mask , vall.i_int + valportx.i_int ,
- valt.i_int + valporty.i_int , valr.i_int + valportx.i_int ,
- valb.i_int + valporty.i_int );
+ valt.i_int + valporty.i_int , valr.i_int + valportx.i_int ,
+ valb.i_int + valporty.i_int );
/* reset drawableredraw variable indicating we are ready
to take changes in video geometry */
}
/*****************************************************************************
- * QTScaleMatrix: scale matrix
+ * QTScaleMatrix: scale matrix
*****************************************************************************/
static void QTScaleMatrix( vout_thread_t *p_vout )
{
}
/*****************************************************************************
- * QTCreateSequence: create a new sequence
+ * QTCreateSequence: create a new sequence
*****************************************************************************
* Returns 0 on success, 1 otherwise
*****************************************************************************/
HUnlock( (Handle)p_vout->p_sys->h_img_descr );
- if( ( err = DecompressSequenceBeginS(
+ if( ( err = DecompressSequenceBeginS(
&p_vout->p_sys->i_seq,
p_vout->p_sys->h_img_descr,
NULL,
}
/*****************************************************************************
- * QTDestroySequence: destroy sequence
+ * QTDestroySequence: destroy sequence
*****************************************************************************/
static void QTDestroySequence( vout_thread_t *p_vout )
{
p_pic->p_sys->p_data = (void *)p_pic->p[0].p_pixels;
break;
-
+
case VLC_FOURCC('I','4','2','0'):
p_pic->p_sys->p_data = (void *)&p_pic->p_sys->pixmap_i420;
p_pic->p_sys->i_size = sizeof(PlanarPixmapInfoYUV420);
-
+
/* Allocate the memory buffer */
p_pic->p_data = vlc_memalign( &p_pic->p_data_orig,
16, p_vout->output.i_width * p_vout->output.i_height * 3 / 2 );
/* Y buffer */
- p_pic->Y_PIXELS = p_pic->p_data;
+ p_pic->Y_PIXELS = p_pic->p_data;
p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height;
p_pic->p[Y_PLANE].i_visible_lines = p_vout->output.i_height;
p_pic->p[Y_PLANE].i_pitch = p_vout->output.i_width;
P.componentInfoCr.rowBytes = p_vout->output.i_width / 2;
#undef P
break;
-
+
default:
/* Unknown chroma, tell the guy to get lost */
free( p_pic->p_sys );
if( p_vout->b_fullscreen )
{
- if( !p_vout->p_sys->b_embedded )
- {
- /* Save window size and position */
- p_vout->p_sys->s_frame.size =
- [p_vout->p_sys->o_vout_view frame].size;
- p_vout->p_sys->s_frame.origin =
- [[p_vout->p_sys->o_vout_view getWindow] frame].origin;
- p_vout->p_sys->b_saved_frame = VLC_TRUE;
- }
+ if( !p_vout->p_sys->b_embedded )
+ {
+ /* Save window size and position */
+ p_vout->p_sys->s_frame.size =
+ [p_vout->p_sys->o_vout_view frame].size;
+ p_vout->p_sys->s_frame.origin =
+ [[p_vout->p_sys->o_vout_view getWindow] frame].origin;
+ p_vout->p_sys->b_saved_frame = VLC_TRUE;
+ }
else
{
var_DelCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
if( p_vout->b_fullscreen || !p_vout->p_sys->b_embedded )
{
- Rect s_rect;
+ Rect s_rect;
p_vout->p_sys->clip_mask = NULL;
#define o_qtview p_vout->p_sys->o_qtview
- o_qtview = [[VLCQTView alloc] initWithVout: p_vout];
- [o_qtview autorelease];
-
- if( p_vout->p_sys->b_saved_frame )
- {
- p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
- subView: o_qtview
- frame: &p_vout->p_sys->s_frame];
- }
- else
- {
- p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
- subView: o_qtview frame: nil];
- }
-
- /* Retrieve the QuickDraw port */
- [o_qtview lockFocus];
- p_vout->p_sys->p_qdport = [o_qtview qdPort];
- [o_qtview unlockFocus];
+ o_qtview = [[VLCQTView alloc] initWithVout: p_vout];
+ [o_qtview autorelease];
+
+ if( p_vout->p_sys->b_saved_frame )
+ {
+ p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
+ subView: o_qtview
+ frame: &p_vout->p_sys->s_frame];
+ }
+ else
+ {
+ p_vout->p_sys->o_vout_view = [VLCVoutView getVoutView: p_vout
+ subView: o_qtview frame: nil];
+ }
+
+ /* Retrieve the QuickDraw port */
+ [o_qtview lockFocus];
+ p_vout->p_sys->p_qdport = [o_qtview qdPort];
+ [o_qtview unlockFocus];
#undef o_qtview
- GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
- p_vout->p_sys->i_origx = s_rect.left;
- p_vout->p_sys->i_origy = s_rect.top;
- p_vout->p_sys->i_width = s_rect.right - s_rect.left;
- p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
+ GetPortBounds( p_vout->p_sys->p_qdport, &s_rect );
+ p_vout->p_sys->i_origx = s_rect.left;
+ p_vout->p_sys->i_origy = s_rect.top;
+ p_vout->p_sys->i_width = s_rect.right - s_rect.left;
+ p_vout->p_sys->i_height = s_rect.bottom - s_rect.top;
}
else
{
/* Create the clipping mask */
p_vout->p_sys->clip_mask = NewRgn();
- UpdateEmbeddedGeometry(p_vout);
- var_AddCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
+ UpdateEmbeddedGeometry(p_vout);
+ var_AddCallback(p_vout->p_libvlc, "drawableredraw", DrawableRedraw, p_vout);
}
QTScaleMatrix( p_vout );
* Copyright (C) 2005-2006 the VideoLAN team
* $Id$
*
- * Authors: Felix Kühne <fkuehne@users.sf.net>
+ * Authors: Felix Kühne <fkuehne@users.sf.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*****************************************************************************/
/*****************************************************************************
- * VLCWizard
+ * VLCWizard
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@interface VLCWizard : NSObject
-{
+{
/* general items */
IBOutlet id o_btn_backward;
IBOutlet id o_btn_cancel;
IBOutlet id o_tab_pageHolder;
IBOutlet id o_wizard_window;
IBOutlet id o_playlist_wizard;
-
+
/* page one ("Hello") */
IBOutlet id o_t1_btn_mrInfo_strmg;
IBOutlet id o_t1_btn_mrInfo_trnscd;
IBOutlet id o_t1_txt_notice;
IBOutlet id o_t1_txt_text;
IBOutlet id o_t1_txt_title;
-
+
/* page two ("Input") */
IBOutlet id o_t2_box_prtExtrct;
IBOutlet id o_t2_ckb_enblPartExtrct;
IBOutlet id o_t2_title;
IBOutlet id o_t2_txt_prtExtrctFrom;
IBOutlet id o_t2_txt_prtExtrctTo;
-
+
/* page one ("Streaming 1") */
IBOutlet id o_t3_box_dest;
IBOutlet id o_t3_box_strmgMthd;
IBOutlet id o_t3_txt_text;
IBOutlet id o_t3_txt_title;
IBOutlet id o_t3_txt_strgMthdInfo;
-
+
/* page four ("Transcode 1") */
IBOutlet id o_t4_box_audio;
IBOutlet id o_t4_box_video;
IBOutlet id o_t4_txt_videoCodec;
IBOutlet id o_t4_txt_hintAudio;
IBOutlet id o_t4_txt_hintVideo;
-
+
/* page five ("Encap") */
IBOutlet id o_t5_matrix_encap;
IBOutlet id o_t5_text;
IBOutlet id o_t5_title;
-
+
/* page six ("Streaming 2") */
IBOutlet id o_t6_ckb_sap;
IBOutlet id o_t6_fld_sap;
IBOutlet id o_t6_btn_mrInfo_local;
IBOutlet id o_t6_ckb_soverlay;
IBOutlet id o_t6_ckb_local;
-
+
/* page seven ("Transcode 2") */
IBOutlet id o_t7_btn_chooseFile;
IBOutlet id o_t7_fld_filePath;
IBOutlet id o_t7_btn_mrInfo_local;
IBOutlet id o_t7_ckb_soverlay;
IBOutlet id o_t7_ckb_local;
-
+
/* page eight ("Summary") */
IBOutlet id o_t8_fld_destination;
IBOutlet id o_t8_fld_encapFormat;
IBOutlet id o_t8_txt_ttl;
IBOutlet id o_t8_txt_mrl;
IBOutlet id o_t8_txt_local;
-
+
NSMutableDictionary * o_userSelections;
NSArray * o_videoCodecs;
NSArray * o_audioCodecs;
NSArray * o_encapFormats;
NSArray * o_strmgMthds;
NSString * o_opts;
-
+
BOOL b_keepSettingsOrNot;
}
- (IBAction)cancelRun:(id)sender;
o_videoCodecs = [[NSArray alloc] initWithObjects: o_mp1v, o_mp2v, o_mp4v, \
o_div1, o_div2, o_div3, o_h263, o_h264, o_wmv1, o_wmv2, o_mjpg, o_theo, \
o_dummyVid, nil];
-
+
NSArray * o_mpga;
NSArray * o_mp3;
o_mp4a = [NSArray arrayWithObjects: @"MPEG 4 Audio", @"mp4a", \
_NS("Audio format for MPEG4 (useable with MPEG TS and MPEG4)"), @"MUX_TS", \
@"MUX_MP4", @"-1", @"-1", @"-1", @"-1", @"-1", @"-1", @"-1", nil];
- o_a52 = [NSArray arrayWithObjects: @"A/52", @"a52",
+ o_a52 = [NSArray arrayWithObjects: @"A/52", @"a52",
_NS("DVD audio format (useable with MPEG PS, MPEG TS, MPEG1, ASF, OGG " \
"and RAW)"), @"MUX_PS", @"MUX_TS", @"MUX_MPEG", @"MUX_ASF", @"MUX_OGG", \
@"MUX_RAW", @"-1", @"-1", @"-1", nil];
[o_btn_forward setTitle: _NS("Next")];
[o_tab_pageHolder selectFirstTabViewItem:self];
-
+
if( b_keepSettingsOrNot )
return;
-
+
/* reset the wizard-window to its default values if wanted */
[o_t1_matrix_strmgOrTrnscd selectCellAtRow:0 column:0];
[[o_t1_matrix_strmgOrTrnscd cellAtRow:1 column:0] setState: NSOffState];
[o_t2_ckb_enblPartExtrct setState: NSOnState];
[self t2_enableExtract: nil];
msg_Dbg(VLCIntf, "wizard interface is set");
-
+
[o_wizard_window center];
[o_wizard_window display];
[o_wizard_window makeKeyAndOrderFront:nil];
while( x != y )
{
playlist_item_t *p_item =
- [[o_t2_tbl_plst itemAtRow:
- [[o_t2_tbl_plst selectedRowIndexes]
+ [[o_t2_tbl_plst itemAtRow:
+ [[o_t2_tbl_plst selectedRowIndexes]
indexGreaterThanOrEqualToIndex: x]] pointerValue];
if( p_item->i_children <= 0 )
{
/* rebuild the menues for the codec-selections */
[self rebuildCodecMenus];
-
+
/* check which streaming method is selected and store it */
int mode;
mode = [[o_t3_matrix_stmgMhd selectedCell] tag];
* OGG, RAW or ASF */
[o_t4_pop_audioCodec removeItemWithTitle:@"Uncompressed, integer"];
[o_t4_pop_audioCodec removeItemWithTitle:@"Uncompressed, floating point"];
-
+
} else if ( mode == 1 )
{
/* MMS Streaming */
[o_userSelections setObject:@"1" forKey:@"stmgMhd"];
-
+
/* disable all codecs which don't support ASF / ASFH */
[o_t4_pop_audioCodec removeItemWithTitle:@"MPEG 4 Audio"];
[o_t4_pop_audioCodec removeItemWithTitle:@"Vorbis"];
[o_t4_pop_audioCodec removeItemWithTitle:@"Speex"];
[o_t4_pop_audioCodec removeItemWithTitle:@"Uncompressed, integer"];
[o_t4_pop_audioCodec removeItemWithTitle:@"Uncompressed, floating point"];
-
+
[o_t4_pop_videoCodec removeItemWithTitle:@"MPEG-1 Video"];
[o_t4_pop_videoCodec removeItemWithTitle:@"MPEG-2 Video"];
[o_t4_pop_videoCodec removeItemWithTitle:@"H.263"];
/* RTP/UDP Unicast/Multicast Streaming */
[o_userSelections setObject: [[NSNumber numberWithInt: mode] \
stringValue] forKey:@"stmgMhd"];
-
+
/* disable all codecs which don't support MPEG-TS */
[o_t4_pop_audioCodec removeItemWithTitle:@"Vorbis"];
[o_t4_pop_audioCodec removeItemWithTitle:@"FLAC"];
else if ([[[o_tab_pageHolder selectedTabViewItem] label] isEqualToString: \
@"Transcode 1"])
{
- /* check whether the user wants to transcode the video-track and store
+ /* check whether the user wants to transcode the video-track and store
* the related options */
if ([o_t4_ckb_video state] == NSOnState)
{
[o_userSelections setObject:@"NO" forKey:@"trnscdVideo"];
}
- /* check whether the user wants to transcode the audio-track and store
+ /* check whether the user wants to transcode the audio-track and store
* the related options */
if ([o_t4_ckb_audio state] == NSOnState)
{
* -> enabled the encap-formats allowed when streaming content via
* http plus MP4 since this should work fine in most cases */
- /* FIXME: choose a selection of encap-formats based upon the
+ /* FIXME: choose a selection of encap-formats based upon the
* actually used codecs */
/* enable MPEG PS, MPEG TS, MPEG 1, OGG, RAW, ASF, MP4 and MOV
* select a folder instead of a localtion for a single item */
if( [[o_userSelections objectForKey:@"pathToStrm"] count] > 1 )
{
- [o_t7_txt_saveFileTo setStringValue:
+ [o_t7_txt_saveFileTo setStringValue:
_NS("Select the directory to save to")];
}
else
{
- [o_t7_txt_saveFileTo setStringValue:
+ [o_t7_txt_saveFileTo setStringValue:
_NS("Select the file to save to")];
}
}
} else {
[o_userSelections setObject:@"NO" forKey:@"sap"];
}
-
+
/* local playback? */
if ([o_t6_ckb_local state] == NSOnState)
{
} else {
[o_userSelections setObject:@"NO" forKey:@"localPb"];
}
-
+
/* include subtitles? */
- [o_userSelections setObject:
+ [o_userSelections setObject:
[[NSNumber numberWithInt:[o_t6_ckb_soverlay state]] stringValue]
forKey: @"soverlay"];
-
+
/* go to "Summary" */
[self showSummary];
}
while( x != y )
{
NSString * fileNameToUse;
- /* check whether the extension is hidden or not.
+ /* check whether the extension is hidden or not.
* if not, remove it
* we need the casting to make GCC4 happy */
if( [[[NSFileManager defaultManager] fileAttributesAtPath: \
}
/* include subtitles ? */
- [o_userSelections setObject:
+ [o_userSelections setObject:
[[NSNumber numberWithInt:[o_t7_ckb_soverlay state]] stringValue]
forKey: @"soverlay"];
-
+
/* go to "Summary" */
[self showSummary];
}
@"ttl=%@", [o_userSelections objectForKey:@"ttl"]] \
UTF8String] );
- playlist_AddInput( p_playlist, p_input, PLAYLIST_STOP,
- PLAYLIST_END, VLC_TRUE, VLC_FALSE );
+ playlist_AddInput( p_playlist, p_input, PLAYLIST_STOP,
+ PLAYLIST_END, VLC_TRUE, VLC_FALSE );
if( x == 0 )
{
* print the URI of the single item */
if( [[o_userSelections objectForKey:@"pathToStrm"] count] > 1 )
[o_t8_fld_inptStream setStringValue: [NSString stringWithFormat:
- _NS("%i items"),
+ _NS("%i items"),
[[o_userSelections objectForKey:@"pathToStrm"] count]]];
else
- [o_t8_fld_inptStream setStringValue:
+ [o_t8_fld_inptStream setStringValue:
[[o_userSelections objectForKey:@"pathToStrm"] objectAtIndex: 0]];
-
+
if ([[o_userSelections objectForKey:@"localPb"] isEqualToString: @"YES"])
{
[o_t8_fld_local setStringValue: _NS("yes")];
if ([[o_userSelections objectForKey:@"partExtract"] isEqualToString: @"YES"])
{
- [o_t8_fld_partExtract setStringValue: [NSString stringWithFormat:
- _NS("yes: from %@ to %@ secs"),
+ [o_t8_fld_partExtract setStringValue: [NSString stringWithFormat:
+ _NS("yes: from %@ to %@ secs"),
[o_userSelections objectForKey:@"partExtractFrom"],
[o_userSelections objectForKey:@"partExtractTo"]]];
} else {
{
[o_t8_fld_trnscdVideo setStringValue: _NS("no")];
}
-
+
if ([[o_userSelections objectForKey:@"soverlay"] isEqualToString:@"1"])
[o_t8_fld_soverlay setStringValue: _NS("yes")];
else
[o_t8_fld_soverlay setStringValue: _NS("no")];
-
+
if ([[o_userSelections objectForKey:@"trnscdAudio"] isEqualToString:@"YES"])
{
[o_t8_fld_trnscdAudio setStringValue: [NSString stringWithFormat:
[o_t8_fld_ttl setStringValue: [o_userSelections objectForKey:@"ttl"]];
if ([[o_userSelections objectForKey:@"sap"] isEqualToString: @"YES"])
{
- [o_t8_fld_sap setStringValue:
+ [o_t8_fld_sap setStringValue:
[_NS("yes") stringByAppendingFormat: @": \"%@\"",
[o_userSelections objectForKey:@"sapText"]]];
}else{
int x = 0;
int y = [[o_userSelections objectForKey:@"pathToStrm"] count];
NSMutableArray * tempArray = [[NSMutableArray alloc] init];
-
+
/* loop to create an opt-string for each item we're processing */
while( x != y )
{
[o_trnscdCmd appendString: @"}:"];
}
}
-
+
/* check whether the user requested local playback. if yes, prepare the
* string, if not, let it empty */
if ([[o_userSelections objectForKey:@"localPb"] isEqualToString:@"YES"])
{
[o_duplicateCmd appendString: @"duplicate{dst=display,dst=\""];
}
-
+
if ([[o_userSelections objectForKey:@"trnscdAudio"] isEqualToString:@"YES"])
{
if ([[o_userSelections objectForKey:@"trnscdVideo"] isEqualToString:@"NO"])
intValue]] objectAtIndex:1] UTF8String], [[o_userSelections \
objectForKey:@"trnscdAudioBitrate"] intValue]];
}
-
+
if ([[o_userSelections objectForKey:@"trnscdOrStrmg"] isEqualToString:@"trnscd"])
{
/* we are just transcoding and dumping the stuff to a file */
{
[o_opts_string appendString: @"\"}"];
}
-
+
/* add subtitles to the video if desired */
- [o_opts_string appendFormat: @":sout-transcode-soverlay=%@",
+ [o_opts_string appendFormat: @":sout-transcode-soverlay=%@",
[o_userSelections objectForKey:@"soverlay"]];
[tempArray addObject: o_opts_string];
- (IBAction)t7_selectTrnscdDestFile:(id)sender
{
- /* provide a save-to-dialogue, so the user can choose a location for
+ /* provide a save-to-dialogue, so the user can choose a location for
* his/her new file. We take a modified NSOpenPanel to select a folder
* and a plain NSSavePanel to save a single file. */
SEL sel = @selector(t7_getTrnscdDestFile:returnCode:contextInfo:);
-
+
if( [[o_userSelections objectForKey:@"pathToStrm"] count] > 1 )
{
NSOpenPanel * saveFolderPanel = [[NSOpenPanel alloc] init];
-
+
[saveFolderPanel setCanChooseDirectories: YES];
[saveFolderPanel setCanChooseFiles: NO];
[saveFolderPanel setCanSelectHiddenExtension: NO];
{
NSSavePanel * saveFilePanel = [[NSSavePanel alloc] init];
- /* don't use ".ps" as suffix, since the OSX Finder confuses our
- * creations with PostScript-files and wants to open them with
+ /* don't use ".ps" as suffix, since the OSX Finder confuses our
+ * creations with PostScript-files and wants to open them with
* Preview.app */
NSString * theEncapFormat = [[o_encapFormats objectAtIndex: \
[[o_userSelections objectForKey:@"encapFormat"] intValue]] \
[p_vout->p_sys->o_glview release];
[p_vout->p_sys->o_pool release];
-
+
}
/*****************************************************************************
- (void)dealloc
{
- [objectLock dealloc];
+ [objectLock dealloc];
[super dealloc];
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
{
vlc_value_t val;
- Rect viewBounds;
+ Rect viewBounds;
Rect clipBounds;
- static const GLint ATTRIBUTES[] = {
+ static const GLint ATTRIBUTES[] = {
AGL_WINDOW,
AGL_RGBA,
AGL_NO_RECOVERY,
msg_Err( p_vout, "No screen renderer available for required attributes." );
return VLC_EGENERIC;
}
-
+
p_vout->p_sys->agl_ctx = aglCreateContext(pixFormat, NULL);
aglDestroyPixelFormat(pixFormat);
if( NULL == p_vout->p_sys->agl_ctx )
unsigned int i_height = p_vout->p_sys->i_height;
unsigned int i_width = p_vout->p_sys->i_width;
- vout_PlacePicture(p_vout, i_width, i_height, &x, &y, &i_width, &i_height);
+ vout_PlacePicture(p_vout, i_width, i_height, &x, &y, &i_width, &i_height);
glViewport( p_vout->p_sys->i_offx + x, p_vout->p_sys->i_offy + y, i_width, i_height );
}
/* private event class */
-enum
+enum
{
kEventClassVLCPlugin = 'vlcp',
};
{
/* Close the fullscreen window and resume normal drawing */
vlc_value_t val;
- Rect viewBounds;
+ Rect viewBounds;
Rect clipBounds;
var_Get( p_vout->p_libvlc, "drawable", &val );
else
{
Rect deviceRect;
-
+
GDHandle deviceHdl = GetMainDevice();
deviceRect = (*deviceHdl)->gdRect;
-
+
if( !p_vout->p_sys->theWindow )
{
/* Create a window */
| kWindowStandardHandlerAttribute
| kWindowLiveResizeAttribute
| kWindowNoShadowAttribute;
-
+
windowAttrs &= (~kWindowResizableAttribute);
CreateNewWindow(kDocumentWindowClass, windowAttrs, &deviceRect, &p_vout->p_sys->theWindow);
SetWindowGroup(p_vout->p_sys->theWindow, p_vout->p_sys->winGroup);
SetWindowGroupParent( p_vout->p_sys->winGroup, GetWindowGroupOfClass(kDocumentWindowClass) ) ;
}
-
+
// Window title
CFStringRef titleKey = CFSTR("Fullscreen VLC media plugin");
CFStringRef windowTitle = CFCopyLocalizedString(titleKey, NULL);
SetWindowTitleWithCFString(p_vout->p_sys->theWindow, windowTitle);
CFRelease(titleKey);
CFRelease(windowTitle);
-
+
//Install event handler
static const EventTypeSpec win_events[] = {
{ kEventClassMouse, kEventMouseDown },
clipBounds.left = va_arg( args, int);
clipBounds.bottom = va_arg( args, int);
clipBounds.right = va_arg( args, int);
-
- if( !p_vout->b_fullscreen )
+
+ if( !p_vout->b_fullscreen )
{
/*
** check that the clip rect is not empty, as this is used
p_vout->p_sys->i_height = viewBounds.bottom-viewBounds.top;
p_vout->p_sys->i_offx = -clipBounds.left - viewBounds.left;
p_vout->p_sys->i_offy = clipBounds.bottom + viewBounds.top
- - p_vout->p_sys->i_height;
+ - p_vout->p_sys->i_height;
aglUpdateContext(p_vout->p_sys->agl_ctx);
}
{
OSStatus result = noErr;
UInt32 class = GetEventClass (event);
- UInt32 kind = GetEventKind (event);
+ UInt32 kind = GetEventKind (event);
vout_thread_t *p_vout = (vout_thread_t *)userData;
result = CallNextEventHandler(nextHandler, event);
{
HICommand theHICommand;
GetEventParameter( event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand );
-
+
switch ( theHICommand.commandID )
{
default:
{
WindowRef window;
Rect rectPort = {0,0,0,0};
-
+
GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
if(window)
{
GetPortBounds(GetWindowPort(window), &rectPort);
- }
+ }
switch (kind)
{
case kEventWindowZoomed:
case kEventWindowBoundsChanged:
break;
-
+
default:
result = eventNotHandledErr;
}
case kEventMouseDown:
{
UInt16 button;
-
+
GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
switch (button)
{
case kEventMouseUp:
{
UInt16 button;
-
+
GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
switch (button)
{
unsigned int i_height = p_vout->p_sys->i_height;
unsigned int i_width = p_vout->p_sys->i_width;
- vout_PlacePicture(p_vout, i_width, i_height, &i_x, &i_y, &i_width, &i_height);
+ vout_PlacePicture(p_vout, i_width, i_height, &i_x, &i_y, &i_width, &i_height);
GetEventParameter(event, kEventParamWindowMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &ml);
-
+
val.i_int = ( ((int)ml.h) - i_x ) *
p_vout->render.i_width / i_width;
var_Set( p_vout, "mouse-x", val );
break;
}
-
+
default:
result = eventNotHandledErr;
}
#ifdef __ppc__
/*
* before 10.4, we set the AGL context as current and
- * then we retrieve and use the matching CGL context
+ * then we retrieve and use the matching CGL context
*/
aglSetCurrentContext(p_vout->p_sys->agl_ctx);
return kCGLNoError != CGLLockContext( CGLGetCurrentContext() );
#ifdef __ppc__
/*
* before 10.4, we assume that the AGL context is current.
- * therefore, we use the current CGL context
+ * therefore, we use the current CGL context
*/
CGLUnlockContext( CGLGetCurrentContext() );
#else
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
WindowRef theWindow;
WindowGroupRef winGroup;
vlc_bool_t b_clipped_out;
- Rect clipBounds, viewBounds;
+ Rect clipBounds, viewBounds;
};
memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) );
var_Get( p_vout->p_libvlc, "drawable", &value_drawable );
-
+
if( 0 /* Are we in the mozilla plugin ? XXX: get that from drawable */ )
{
p_vout->pf_init = aglInit;
#define GTK_GET( type, nom ) GTK_##type( gtk_object_get_data( \
GTK_OBJECT( p_intf->p_sys->p_window ), nom ) )
-
+
#define GtkGetIntf( widget ) E_(__GtkGetIntf)( GTK_WIDGET( widget ) )
void * E_(__GtkGetIntf)( GtkWidget * );
GtkTreeIter p_play_iter;
p_play_model = gtk_tree_view_get_model(p_tvplaylist);
-
+
if (p_play_model)
{
int i;
}
/* kludge */
for (i=0; i<n; i++)
- {
+ {
if ((pp_namelist[i]->d_name[0] != '.') &&
(lstat(pp_namelist[i]->d_name, &st)==0))
{
{
GtkTreeSelection *p_selection = gtk_tree_view_get_selection(p_treeview);
- gtk_tree_selection_selected_foreach(p_selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) p_treeview);
+ gtk_tree_selection_selected_foreach(p_selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) p_treeview);
}
}
GtkCheckButton *p_check_v4l_transcode = NULL;
gboolean b_v4l_transcode;
-
+
char **ppsz_options = NULL; /* list of options */
int i_options=0;
char v4l_mrl[6];
}
}
}
-#if 0
+#if 0
g_list_foreach (p_rows, (GFunc*)gtk_tree_path_free, NULL);
#endif /* Testing the next line */
g_list_foreach (p_rows, deleteItemFromPlaylist, NULL);
p_entryVideoBitrate = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoBitrate" );
p_entryVideoBitrateTolerance = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoBitrateTolerance" );
p_entryVideoKeyFrameInterval = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoKeyFrameInterval" );
-
+
p_video_codec = gtk_entry_get_text(GTK_ENTRY(p_entryVideoCodec));
i_video_bitrate = gtk_spin_button_get_value_as_int(p_entryVideoBitrate);
i_video_bitrate_tolerance = gtk_spin_button_get_value_as_int(p_entryVideoBitrateTolerance);
i_video_keyframe_interval = gtk_spin_button_get_value_as_int(p_entryVideoKeyFrameInterval);
-
+
i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "vcodec=%s,", (char*)p_video_codec );
if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';
i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "vb=%d,", (int)i_video_bitrate );
GtkCheckButton *p_checkSAP = NULL;
GtkCheckButton *p_checkSLP = NULL;
GtkEntry *p_entryStdAccess = NULL;
- const gchar *p_std_access = NULL;
+ const gchar *p_std_access = NULL;
gboolean b_announce = FALSE;
p_entryStdAccess = (GtkEntry*) lookup_widget( GTK_WIDGET(editable), "entryStdAccess" );
* Copyright (C) 2000, 2001 the VideoLAN team
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
: QWidget( parent ), p_intf( _p_intf )
{
QGridLayout *metaLayout = new QGridLayout( this );
-
+
int line = 0; /* Counter for GridLayout */
p_input = NULL;
widget = new QLineEdit; \
metaLayout->addWidget( widget, line, 1, 1, 9 ); \
line++; }
-
+
/* Title, artist and album*/
ADD_META( VLC_META_TITLE, title_text ); /* OK */
ADD_META( VLC_META_ARTIST, artist_text ); /* OK */
art_cover->setScaledContents( true );
art_cover->setPixmap( QPixmap( ":/noart.png" ) );
metaLayout->addWidget( art_cover, line, 8, 4, 2 );
-
+
/* Settings is unused */
/* l->addWidget( new QLabel( qtr( VLC_META_SETTING ) + " :" ), line, 5 );
setting_text = new QLineEdit;
widget = new QLineEdit; \
metaLayout->addWidget( widget, line, 1, 1, 7 ); \
line++; }
-
+
/* Now Playing - Useful for live feeds (HTTP, DVB, ETC...) */
ADD_META_2( VLC_META_NOW_PLAYING, nowplaying_text );
nowplaying_text->setReadOnly( true );
CONNECT( collection_text, textEdited( QString ), this, enterEditMode() );
CONNECT( genre_text, textEdited( QString ), this, enterEditMode() );
CONNECT( seqnum_text, textEdited( QString ), this, enterEditMode() );
-
+
CONNECT( date_text, textEdited( QString ), this, enterEditMode() );
CONNECT( description_text, textEdited( QString ), this, enterEditMode() );
/* CONNECT( rating_text, valueChanged( QString ), this, enterEditMode( QString ) );*/
{
/* Don't update if you are in edit mode */
if( b_inEditMode ) return;
-
- char *psz_meta;
+
+ char *psz_meta;
#define UPDATE_META( meta, widget ) { \
psz_meta = input_item_Get##meta( p_item ); \
if( !EMPTY_STR( psz_meta ) ) \
module_Unneed( p_playlist, p_mod );
PL_UNLOCK;
pl_Release( p_playlist );
-
+
/* Reset the status of the mode. No need to emit any signal */
b_inEditMode = false;
}
}
/**
- * Update the Extra Metadata from p_meta->i_extras
+ * Update the Extra Metadata from p_meta->i_extras
**/
void ExtraMetaPanel::update( input_item_t *p_item )
{
virtual ~MetaPanel();
void saveMeta();
void setInput( input_item_t * );
-
+
bool isInEditMode();
void setEditMode( bool );
private slots:
void enterEditMode();
-
+
signals:
void uriSet( QString );
void editing();
controlLayout->addWidget( fasterButton, 0, 17 );
fasterButton->setMaximumSize( QSize( 26, 20 ) );
- /** TODO: Insert here the AdvControls Widget
+ /** TODO: Insert here the AdvControls Widget
* Then fix all the size issues in main_interface.cpp
**/
/* advanced Controls handling */
playButton->setIconSize( QSize( 30, 30 ) );
controlLayout->addWidget( playButton, 2, 0, 2, 2, Qt::AlignBottom );
-
+
controlLayout->setColumnMinimumWidth( 2, 20 );
controlLayout->setColumnStretch( 2, 0 );
controlLayout->setColumnStretch( 8 , 10 );
controlLayout->setColumnStretch( 9, 0 );
-
+
/*
* Other first Line buttons
* Might need to be inside a frame to avoid a few resizing pb
volMuteLabel->installEventFilter( h );
/** TODO:
- * Change this slider to use a nice Amarok-like one
+ * Change this slider to use a nice Amarok-like one
* Add a Context menu to change to the most useful %
* **/
/** FIXME
volumeSlider->setValue( i_volume );
b_my_volume = false;
}
-
+
/* Activate the interface buttons according to the presence of the input */
enableInput( THEMIM->getIM()->hasInput() );
//enableVideo( THEMIM->getIM()->hasVideo() );
/**
* TODO
* This functions toggle the fullscreen mode
- * If there is no video, it should first activate Visualisations...
+ * If there is no video, it should first activate Visualisations...
* This has also to be fixed in enableVideo()
*/
void ControlsWidget::fullscreen()
**********************************************************************/
SpeedControlWidget::SpeedControlWidget( intf_thread_t *_p_i ) :
QFrame( NULL ), p_intf( _p_i )
-{
- QSizePolicy sizePolicy( QSizePolicy::Maximum, QSizePolicy::Fixed );
+{
+ QSizePolicy sizePolicy( QSizePolicy::Maximum, QSizePolicy::Fixed );
sizePolicy.setHorizontalStretch( 0 );
sizePolicy.setVerticalStretch( 0 );
-
+
speedSlider = new QSlider;
speedSlider->setSizePolicy( sizePolicy );
speedSlider->setMaximumSize( QSize( 80, 200 ) );
speedSlider->setSingleStep( 10 );
speedSlider->setPageStep( 20 );
speedSlider->setTickInterval( 20 );
-
+
CONNECT( speedSlider, valueChanged( int ), this, updateRate( int ) );
-
+
normalSpeedButton = new QPushButton( "N" );
normalSpeedButton->setMaximumSize( QSize( 26, 20 ) );
normalSpeedButton->setFlat( true );
normalSpeedButton->setToolTip( qtr( "Revert to normal play speed" ) );
-
+
CONNECT( normalSpeedButton, clicked(), this, resetRate() );
-
+
QVBoxLayout *speedControlLayout = new QVBoxLayout;
- speedControlLayout->addWidget(speedSlider);
- speedControlLayout->addWidget(normalSpeedButton);
- setLayout(speedControlLayout);
+ speedControlLayout->addWidget(speedSlider);
+ speedControlLayout->addWidget(normalSpeedButton);
+ setLayout(speedControlLayout);
}
SpeedControlWidget::~SpeedControlWidget()
void SpeedControlWidget::updateControls( int rate )
{
- if( speedSlider->isSliderDown() )
- {
- //We don't want to change anything if the user is using the slider
- return;
- }
-
- int sliderValue;
- double speed = INPUT_RATE_DEFAULT / (double)rate;
-
- if( rate >= INPUT_RATE_DEFAULT )
- {
- if( speed < RATE_SLIDER_MINIMUM )
- {
- sliderValue = speedSlider->minimum();
- }
- else
- {
- sliderValue = (int)( ( speed - 1.0 ) * RATE_SLIDER_LENGTH
+ if( speedSlider->isSliderDown() )
+ {
+ //We don't want to change anything if the user is using the slider
+ return;
+ }
+
+ int sliderValue;
+ double speed = INPUT_RATE_DEFAULT / (double)rate;
+
+ if( rate >= INPUT_RATE_DEFAULT )
+ {
+ if( speed < RATE_SLIDER_MINIMUM )
+ {
+ sliderValue = speedSlider->minimum();
+ }
+ else
+ {
+ sliderValue = (int)( ( speed - 1.0 ) * RATE_SLIDER_LENGTH
/ ( 1.0 - RATE_SLIDER_MAXIMUM ) );
- }
- }
- else
- {
- if( speed > RATE_SLIDER_MAXIMUM )
- {
- sliderValue = speedSlider->maximum();
- }
- else
- {
- sliderValue = (int)( ( speed - 1.0 ) * RATE_SLIDER_LENGTH
+ }
+ }
+ else
+ {
+ if( speed > RATE_SLIDER_MAXIMUM )
+ {
+ sliderValue = speedSlider->maximum();
+ }
+ else
+ {
+ sliderValue = (int)( ( speed - 1.0 ) * RATE_SLIDER_LENGTH
/ ( RATE_SLIDER_MAXIMUM - 1.0 ) );
- }
- }
-
- //Block signals to avoid feedback loop
- speedSlider->blockSignals( true );
- speedSlider->setValue( sliderValue );
- speedSlider->blockSignals( false );
+ }
+ }
+
+ //Block signals to avoid feedback loop
+ speedSlider->blockSignals( true );
+ speedSlider->setValue( sliderValue );
+ speedSlider->blockSignals( false );
}
void SpeedControlWidget::updateRate( int sliderValue )
{
- int rate;
-
- if( sliderValue < 0.0 )
- {
- rate = INPUT_RATE_DEFAULT* RATE_SLIDER_LENGTH /
+ int rate;
+
+ if( sliderValue < 0.0 )
+ {
+ rate = INPUT_RATE_DEFAULT* RATE_SLIDER_LENGTH /
( sliderValue * ( 1.0 - RATE_SLIDER_MINIMUM ) + RATE_SLIDER_LENGTH ) ;
- }
- else
- {
+ }
+ else
+ {
rate = INPUT_RATE_DEFAULT* RATE_SLIDER_LENGTH /
( sliderValue * ( RATE_SLIDER_MAXIMUM - 1.0 ) + RATE_SLIDER_LENGTH );
- }
+ }
- THEMIM->getIM()->setRate(rate);
+ THEMIM->getIM()->setRate(rate);
}
void SpeedControlWidget::resetRate()
{
- THEMIM->getIM()->setRate(INPUT_RATE_DEFAULT);
+ THEMIM->getIM()->setRate(INPUT_RATE_DEFAULT);
}
jackDevLayout->addWidget( jackChannels, 1, 1 );
/* Jack Props panel */
-
+
/* Selected ports */
QLabel *jackPortsLabel = new QLabel( qtr( "Selected ports :" ) );
jackPropLayout->addWidget( jackPortsLabel, 0 , 0 );
jackPortsSelected = new QLineEdit( qtr( ".*") );
jackPortsSelected->setAlignment( Qt::AlignRight );
jackPropLayout->addWidget( jackPortsSelected, 0, 1 );
-
+
/* Caching */
QLabel *jackCachingLabel = new QLabel( qtr( "Input caching :" ) );
jackPropLayout->addWidget( jackCachingLabel, 1 , 0 );
jackCaching->setValue(1000);
jackCaching->setAlignment( Qt::AlignRight );
jackPropLayout->addWidget( jackCaching, 1 , 1 );
-
+
/* Pace */
jackPace = new QCheckBox(qtr( "Use VLC pace" ));
jackPropLayout->addWidget( jackPace, 2, 1 );
-
+
/* Auto Connect */
jackConnect = new QCheckBox( qtr( "Auto connnection" ));
jackPropLayout->addWidget( jackConnect, 3, 1 );
-
+
/* Jack CONNECTs */
CuMRL( jackChannels, valueChanged( int ) );
CuMRL( jackCaching, valueChanged( int ) );
}
/**
- * Update the Buttons (show/hide) for the GUI as all device type don't
+ * Update the Buttons (show/hide) for the GUI as all device type don't
* use the same ui. elements.
**/
void CaptureOpenPanel::updateButtons()
PLPanel( _parent, _p_intf )
{
model = new PLModel( p_playlist, p_intf, p_root, -1, this );
-
+
/* Create and configure the QTreeView */
view = new QVLCTreeView( 0 );
view->setModel(model);
view->setIconSize( QSize(20,20) );
view->setAlternatingRowColors( true );
- view->setAnimated( true );
- view->setSortingEnabled( true );
+ view->setAnimated( true );
+ view->setSortingEnabled( true );
view->setSelectionMode( QAbstractItemView::ExtendedSelection );
view->setDragEnabled( true );
view->setAcceptDrops( true );
view->setDropIndicatorShown( true );
view->setAutoScroll( true );
-
+
view->header()->resizeSection( 0, 230 );
view->header()->resizeSection( 1, 170 );
view->header()->setSortIndicatorShown( true );
view->header()->setClickable( true );
- view->header()->setContextMenuPolicy( Qt::CustomContextMenu );
-
+ view->header()->setContextMenuPolicy( Qt::CustomContextMenu );
+
CONNECT( view, activated( const QModelIndex& ) ,
model,activateItem( const QModelIndex& ) );
CONNECT( view, rightClicked( QModelIndex , QPoint ),
this, doPopup( QModelIndex, QPoint ) );
CONNECT( model, dataChanged( const QModelIndex&, const QModelIndex& ),
this, handleExpansion( const QModelIndex& ) );
- CONNECT( view->header(), customContextMenuRequested( const QPoint & ),
+ CONNECT( view->header(), customContextMenuRequested( const QPoint & ),
this, popupSelectColumn( QPoint ) );
currentRootId = -1;
/* Buttons configuration */
QHBoxLayout *buttons = new QHBoxLayout();
-
+
addButton = new QPushButton( QIcon( ":/pixmaps/vlc_playlist_add.png" ), "", this );
addButton->setMaximumWidth( 25 );
BUTTONACT( addButton, popupAdd() );
buttons->addWidget( addButton );
- repeatButton = new QPushButton( this );
+ repeatButton = new QPushButton( this );
if( model->hasRepeat() ) repeatButton->setIcon(
QIcon( ":/pixmaps/vlc_playlist_repeat_one.png" ) );
- else if( model->hasLoop() ) repeatButton->setIcon(
+ else if( model->hasLoop() ) repeatButton->setIcon(
QIcon( ":/pixmaps/vlc_playlist_repeat_all.png" ) );
else repeatButton->setIcon(
QIcon( ":/pixmaps/vlc_playlist_repeat_off.png" ) );
BUTTONACT( repeatButton, toggleRepeat() );
buttons->addWidget( repeatButton );
- randomButton = new QPushButton( this );
+ randomButton = new QPushButton( this );
randomButton->setIcon( model->hasRandom() ?
QIcon( ":/pixmaps/vlc_playlist_shuffle_on.png" ) :
QIcon( ":/pixmaps/vlc_playlist_shuffle_off.png" ) );
}
void StandardPLPanel::popupSelectColumn( QPoint )
-{
+{
ContextUpdateMapper = new QSignalMapper(this);
QMenu selectColMenu;
ADD_META_ACTION( DESCRIPTION );
#undef ADD_META_ACTION
-
+
selectColMenu.exec( QCursor::pos() );
}
#endif
CONFIG_GENERIC( "timeshift-force", Bool, NULL, timeshiftBox );
CONFIG_GENERIC( "dump-force", Bool, NULL, DumpBox );
-// CONFIG_GENERIC( "", Bool, NULL, RecordBox ); //FIXME activate record
+// CONFIG_GENERIC( "", Bool, NULL, RecordBox ); //FIXME activate record
END_SPREFS_CAT;
/* Interface Panel */
//FIXME interface choice
CONFIG_GENERIC( "qt-always-video", Bool, NULL, qtAlwaysVideo );
- CONFIG_GENERIC_FILE( "skins2-last", File, NULL, fileSkin,
+ CONFIG_GENERIC_FILE( "skins2-last", File, NULL, fileSkin,
skinBrowse );
#if defined( WIN32 ) || defined(HAVE_DBUS_3)
CONFIG_GENERIC( "one-instance", Bool, NULL, OneInterfaceMode );
- CONFIG_GENERIC( "playlist-enqueue", Bool, NULL,
+ CONFIG_GENERIC( "playlist-enqueue", Bool, NULL,
EnqueueOneInterfaceMode );
#else
ui.OneInterfaceBox->hide();
tab->addTab( foo, qtr( "Graphic Equalizer" ) );
ExtVideo *bar = new ExtVideo( p_intf, this );
- tab->addTab( bar, qtr( "Video Adjustments and Effects" ) );
+ tab->addTab( bar, qtr( "Video Adjustments and Effects" ) );
layout->addWidget( tab, 0, 0, 1, 5 );
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _GOTOTIME_DIALOG_H_
instance = new GotoTimeDialog( p_intf);
return instance;
}
- virtual ~GotoTimeDialog();
+ virtual ~GotoTimeDialog();
private:
GotoTimeDialog( intf_thread_t *);
{
clear();
update( p_input, true, true );
- /* if info is from current input, don't set default to edit, if user opens
+ /* if info is from current input, don't set default to edit, if user opens
* some other item, se default to edit, so it won't be updated to current item metas
*
* This really doesn't seem as clean solution as it could be
*/
input_thread_t *p_current =
MainInputManager::getInstance( p_intf )->getInput();
- MP->setEditMode( ( !p_current || p_current->b_dead || input_GetItem( p_current ) != p_input ) ?
+ MP->setEditMode( ( !p_current || p_current->b_dead || input_GetItem( p_current ) != p_input ) ?
true: false );
}
vlc_object_release( p_input );
}
-void MediaInfoDialog::update( input_item_t *p_item,
+void MediaInfoDialog::update( input_item_t *p_item,
bool update_info,
bool update_meta )
{
}
virtual ~MediaInfoDialog();
- void showTab( int );
+ void showTab( int );
void setInput( input_item_t * );
-
+
bool b_need_update;
-
+
private:
input_thread_t *p_input;
static MediaInfoDialog *instance;
int i_runs;
bool mainInput;
bool stats;
-
+
QTabWidget *IT;
InputStatsPanel *ISP;
public slots:
void update();
void update( input_item_t *, bool, bool );
-
+
private slots:
void close();
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _MESSAGES_DIALOG_H_
:p_intf( _p_intf )
{
ui.setupUi( this );
-
+
QPushButton *okButton = new QPushButton( qtr( "OK" ), this );
QPushButton *cancelButton = new QPushButton( qtr( "Cancel" ), this );
ui.okCancel->addButton( okButton, QDialogButtonBox::AcceptRole );
types->setAlignment( Qt::AlignHCenter );
QHBoxLayout *types_l = new QHBoxLayout(0);
types_l->setSpacing( 3 ); types_l->setMargin( 3 );
- small = new QRadioButton( qtr("Basic"), types );
+ small = new QRadioButton( qtr("Basic"), types );
types_l->addWidget( small );
all = new QRadioButton( qtr("All"), types ); types_l->addWidget( all );
types->setLayout( types_l );
advanced_tree->applyAll();
config_SaveConfigFile( p_intf, NULL );
- /* Delete the other panel in order to force its reload after clicking
+ /* Delete the other panel in order to force its reload after clicking
on apply - UGLY but will work for now. */
if( simple_panel && simple_panel->isVisible() && advanced_panel )
{
bool _transcode_only = false );
virtual ~SoutDialog() {}
- QString getMrl();
+ QString getMrl();
//sout_gui_descr_t *sout;
private:
Ui::Sout ui;
void VLMDialog::close(){
close();
}
-
+
return instance;
};
virtual ~VLMDialog();
-
+
private:
VLMDialog( intf_thread_t *);
static VLMDialog *instance;
i_time = var_GetTime( p_input, "time") / 1000000;
f_pos = var_GetFloat( p_input, "position" );
emit positionUpdated( f_pos, i_time, i_length );
-
+
int i_new_rate = var_GetInteger( p_input, "rate");
if( i_new_rate != i_rate )
{
QString input_name;
QVBoxLayout *mainLayout;
ControlsWidget *controls;
- QMenu *speedControlMenu;
+ QMenu *speedControlMenu;
SpeedControlWidget *speedControl;
bool need_components_update;
QLabel *timeLabel;
QLabel *speedLabel;
QLabel *nameLabel;
-
+
bool b_remainingTime;
void customEvent( QEvent *);
/* Folder vs. Directory */
#ifdef WIN32
#define I_OPEN_FOLDER "Open &Folder..."
-#else
+#else
#define I_OPEN_FOLDER "Open D&irectory..."
#endif //WIN32
/* XPM */
static const char *const advanced_xpm[] = {
"16 16 106 2",
-" c None",
-". c #AEAEBE",
-"+ c #D7D7E0",
-"@ c #D5D5DD",
-"# c #C2C2CE",
-"$ c #CECED7",
-"% c #FEFEFE",
-"& c #DCDCE2",
-"* c #9F9FB2",
-"= c #C3C3CE",
-"- c #FBFBFB",
-"; c #D0D0D8",
-"> c #86869E",
-", c #8F8FA4",
-"' c #EBEBEE",
-") c #EEEEF2",
-"! c #9595A9",
-"~ c #A2A2B5",
-"{ c #9A9AAE",
-"] c #CACAD5",
-"^ c #F8F8F9",
-"/ c #F7F7F9",
-"( c #9999AC",
-"_ c #A8A8B8",
-": c #E7E7EB",
-"< c #87879F",
-"[ c #6F6F8B",
-"} c #BFBFCB",
-"| c #F1F1F5",
-"1 c #E9E9EE",
-"2 c #EDEDF2",
-"3 c #DBDBE2",
-"4 c #7C7F9B",
-"5 c #818199",
-"6 c #E2E2E7",
-"7 c #D2D2DC",
-"8 c #BDBDCA",
-"9 c #E3E3E8",
-"0 c #E0E0E6",
-"a c #E0E0E4",
-"b c #E1E1E7",
-"c c #C6C6D1",
-"d c #707599",
-"e c #9B9BAE",
-"f c #DEDEE4",
-"g c #D8D8E1",
-"h c #DADAE2",
-"i c #D8D8E0",
-"j c #BEBECB",
-"k c #B2B6CE",
-"l c #B09E8F",
-"m c #CC8B22",
-"n c #808098",
-"o c #AFAFBF",
-"p c #B9B9C8",
-"q c #B3B3C2",
-"r c #BCBCC9",
-"s c #C3C6DA",
-"t c #BDAA9A",
-"u c #CF8925",
-"v c #E68208",
-"w c #DA9217",
-"x c #49496A",
-"y c #565674",
-"z c #4B4B6D",
-"A c #5D6186",
-"B c #B3A196",
-"C c #CF8B28",
-"D c #E98606",
-"E c #FD8606",
-"F c #F38F0B",
-"G c #D59018",
-"H c #B2721C",
-"I c #F19C0D",
-"J c #FEA310",
-"K c #FEA210",
-"L c #F8A410",
-"M c #D28F19",
-"N c #CF8918",
-"O c #FEBC19",
-"P c #FEBE1B",
-"Q c #FEB518",
-"R c #FEA913",
-"S c #FDA610",
-"T c #CF8717",
-"U c #C98819",
-"V c #FECE20",
-"W c #FEAC13",
-"X c #FE8907",
-"Y c #FE8506",
-"Z c #FC980B",
-"` c #B26E16",
-" . c #C27F18",
-".. c #FEA410",
-"+. c #FE9109",
-"@. c #FE8004",
-"#. c #FE9106",
-"$. c #BD7013",
-"%. c #BB650F",
-"&. c #FE9F0D",
-"*. c #FE9808",
-"=. c #ED8108",
-"-. c #915216",
-";. c #994E10",
-">. c #AB5A0D",
-",. c #894914",
+" c None",
+". c #AEAEBE",
+"+ c #D7D7E0",
+"@ c #D5D5DD",
+"# c #C2C2CE",
+"$ c #CECED7",
+"% c #FEFEFE",
+"& c #DCDCE2",
+"* c #9F9FB2",
+"= c #C3C3CE",
+"- c #FBFBFB",
+"; c #D0D0D8",
+"> c #86869E",
+", c #8F8FA4",
+"' c #EBEBEE",
+") c #EEEEF2",
+"! c #9595A9",
+"~ c #A2A2B5",
+"{ c #9A9AAE",
+"] c #CACAD5",
+"^ c #F8F8F9",
+"/ c #F7F7F9",
+"( c #9999AC",
+"_ c #A8A8B8",
+": c #E7E7EB",
+"< c #87879F",
+"[ c #6F6F8B",
+"} c #BFBFCB",
+"| c #F1F1F5",
+"1 c #E9E9EE",
+"2 c #EDEDF2",
+"3 c #DBDBE2",
+"4 c #7C7F9B",
+"5 c #818199",
+"6 c #E2E2E7",
+"7 c #D2D2DC",
+"8 c #BDBDCA",
+"9 c #E3E3E8",
+"0 c #E0E0E6",
+"a c #E0E0E4",
+"b c #E1E1E7",
+"c c #C6C6D1",
+"d c #707599",
+"e c #9B9BAE",
+"f c #DEDEE4",
+"g c #D8D8E1",
+"h c #DADAE2",
+"i c #D8D8E0",
+"j c #BEBECB",
+"k c #B2B6CE",
+"l c #B09E8F",
+"m c #CC8B22",
+"n c #808098",
+"o c #AFAFBF",
+"p c #B9B9C8",
+"q c #B3B3C2",
+"r c #BCBCC9",
+"s c #C3C6DA",
+"t c #BDAA9A",
+"u c #CF8925",
+"v c #E68208",
+"w c #DA9217",
+"x c #49496A",
+"y c #565674",
+"z c #4B4B6D",
+"A c #5D6186",
+"B c #B3A196",
+"C c #CF8B28",
+"D c #E98606",
+"E c #FD8606",
+"F c #F38F0B",
+"G c #D59018",
+"H c #B2721C",
+"I c #F19C0D",
+"J c #FEA310",
+"K c #FEA210",
+"L c #F8A410",
+"M c #D28F19",
+"N c #CF8918",
+"O c #FEBC19",
+"P c #FEBE1B",
+"Q c #FEB518",
+"R c #FEA913",
+"S c #FDA610",
+"T c #CF8717",
+"U c #C98819",
+"V c #FECE20",
+"W c #FEAC13",
+"X c #FE8907",
+"Y c #FE8506",
+"Z c #FC980B",
+"` c #B26E16",
+" . c #C27F18",
+".. c #FEA410",
+"+. c #FE9109",
+"@. c #FE8004",
+"#. c #FE9106",
+"$. c #BD7013",
+"%. c #BB650F",
+"&. c #FE9F0D",
+"*. c #FE9808",
+"=. c #ED8108",
+"-. c #915216",
+";. c #994E10",
+">. c #AB5A0D",
+",. c #894914",
" . + @ # ",
" $ % % & * ",
" = - % ; ",
/* XPM */
static const char *const audio_xpm[] = {
"16 16 83 1",
-" c None",
-". c #00E000",
-"+ c #00F100",
-"@ c #00F500",
-"# c #00DE00",
-"$ c #00AF00",
-"% c #00AF01",
-"& c #00A402",
-"* c #00A100",
-"= c #00A400",
-"- c #009401",
-"; c #009301",
-"> c #007700",
-", c #007A02",
-"' c #008101",
-") c #00EE00",
-"! c #00F300",
-"~ c #00A701",
-"{ c #009C02",
-"] c #009C00",
-"^ c #007E03",
-"/ c #007401",
-"( c #929292",
-"_ c #9E9E9E",
-": c #A8A8A8",
-"< c #747474",
-"[ c #737373",
-"} c #6C6C6C",
-"| c #666666",
-"1 c #787878",
-"2 c #8F8F8F",
-"3 c #A7A7A7",
-"4 c #B6B6B7",
-"5 c #6D6D6D",
-"6 c #626262",
-"7 c #646464",
-"8 c #848484",
-"9 c #969696",
-"0 c #B9B9B9",
-"a c #C6C6C6",
-"b c #A6A6AA",
-"c c #6A6A6A",
-"d c #7A7A7A",
-"e c #B2B2B2",
-"f c #BFBFBF",
-"g c #BABABA",
-"h c #B6B6B6",
-"i c #B4B4B4",
-"j c #D7D7D7",
-"k c #C3C3C4",
-"l c #6B6B6B",
-"m c #636363",
-"n c #606060",
-"o c #575757",
-"p c #555555",
-"q c #535353",
-"r c #888888",
-"s c #D3D3D3",
-"t c #E1E1E1",
-"u c #B3B3B4",
-"v c #383838",
-"w c #707070",
-"x c #585858",
-"y c #3C3C3C",
-"z c #3B3B3B",
-"A c #494949",
-"B c #DEDEDE",
-"C c #C4C4C4",
-"D c #57575D",
-"E c #242424",
-"F c #7C7C7C",
-"G c #949494",
-"H c #A2A2A2",
-"I c #BCBCBC",
-"J c #8B8B8D",
-"K c #444444",
-"L c #414141",
-"M c #464646",
-"N c #5D5D5D",
-"O c #7B7B7B",
-"P c #4A4A4F",
-"Q c #4A4A4B",
-"R c #515153",
+" c None",
+". c #00E000",
+"+ c #00F100",
+"@ c #00F500",
+"# c #00DE00",
+"$ c #00AF00",
+"% c #00AF01",
+"& c #00A402",
+"* c #00A100",
+"= c #00A400",
+"- c #009401",
+"; c #009301",
+"> c #007700",
+", c #007A02",
+"' c #008101",
+") c #00EE00",
+"! c #00F300",
+"~ c #00A701",
+"{ c #009C02",
+"] c #009C00",
+"^ c #007E03",
+"/ c #007401",
+"( c #929292",
+"_ c #9E9E9E",
+": c #A8A8A8",
+"< c #747474",
+"[ c #737373",
+"} c #6C6C6C",
+"| c #666666",
+"1 c #787878",
+"2 c #8F8F8F",
+"3 c #A7A7A7",
+"4 c #B6B6B7",
+"5 c #6D6D6D",
+"6 c #626262",
+"7 c #646464",
+"8 c #848484",
+"9 c #969696",
+"0 c #B9B9B9",
+"a c #C6C6C6",
+"b c #A6A6AA",
+"c c #6A6A6A",
+"d c #7A7A7A",
+"e c #B2B2B2",
+"f c #BFBFBF",
+"g c #BABABA",
+"h c #B6B6B6",
+"i c #B4B4B4",
+"j c #D7D7D7",
+"k c #C3C3C4",
+"l c #6B6B6B",
+"m c #636363",
+"n c #606060",
+"o c #575757",
+"p c #555555",
+"q c #535353",
+"r c #888888",
+"s c #D3D3D3",
+"t c #E1E1E1",
+"u c #B3B3B4",
+"v c #383838",
+"w c #707070",
+"x c #585858",
+"y c #3C3C3C",
+"z c #3B3B3B",
+"A c #494949",
+"B c #DEDEDE",
+"C c #C4C4C4",
+"D c #57575D",
+"E c #242424",
+"F c #7C7C7C",
+"G c #949494",
+"H c #A2A2A2",
+"I c #BCBCBC",
+"J c #8B8B8D",
+"K c #444444",
+"L c #414141",
+"M c #464646",
+"N c #5D5D5D",
+"O c #7B7B7B",
+"P c #4A4A4F",
+"Q c #4A4A4B",
+"R c #515153",
" .+@# ",
" $%& *=- ",
" ; >, ",
/* XPM */
static const char *const codec_xpm[] = {
"16 16 132 2",
-" c None",
-". c #131313",
-"+ c #464646",
-"@ c #E0E0E0",
-"# c #656565",
-"$ c #3D3D3D",
-"% c #E4E9EC",
-"& c #FBFFFF",
-"* c #E8E9EB",
-"= c #595858",
-"- c #393A3B",
-"; c #D1DBE6",
-"> c #ECF8FF",
-", c #E8F4FF",
-"' c #D5DAE1",
-") c #C1C1C1",
-"! c #4F4E4D",
-"~ c #0A0A0A",
-"{ c #909295",
-"] c #D8EAFD",
-"^ c #DFF1FF",
-"/ c #C0CAD6",
-"( c #C6CCD4",
-"_ c #E5ECF1",
-": c #828385",
-"< c #080808",
-"[ c #989898",
-"} c #5B5B5B",
-"| c #2F2E2D",
-"1 c #898E94",
-"2 c #ADB8C6",
-"3 c #B6BDC7",
-"4 c #E6F1FD",
-"5 c #F6FFFF",
-"6 c #8D96A2",
-"7 c #121213",
-"8 c #646464",
-"9 c #B6B6B6",
-"0 c #898989",
-"a c #767676",
-"b c #3F3F3F",
-"c c #292827",
-"d c #6D6E6F",
-"e c #D4E0F0",
-"f c #F1FFFF",
-"g c #B9C4D0",
-"h c #868E98",
-"i c #B0BBC6",
-"j c #46484B",
-"k c #1E1E1D",
-"l c #C7C7C7",
-"m c #8D8D8D",
-"n c #818181",
-"o c #A1A1A1",
-"p c #5E5E5E",
-"q c #343433",
-"r c #777A7F",
-"s c #B3BDC6",
-"t c #959AA2",
-"u c #DEE9F2",
-"v c #F7FFFF",
-"w c #B8C2CE",
-"x c #363636",
-"y c #030303",
-"z c #8F8F8F",
-"A c #BDBDBD",
-"B c #999999",
-"C c #AAAAAA",
-"D c #E1E1E1",
-"E c #F6F6F6",
-"F c #EBEBEB",
-"G c #7E7E7E",
-"H c #3F3E3E",
-"I c #6E6F6F",
-"J c #D9DFE7",
-"K c #FDFFFF",
-"L c #EDF4F9",
-"M c #7A7D81",
-"N c #0C0B0B",
-"O c #A7A7A7",
-"P c #C4C4C4",
-"Q c #B5B5B5",
-"R c #C2C2C2",
-"S c #D6D6D6",
-"T c #D5D5D5",
-"U c #CDCDCD",
-"V c #C5C5C5",
-"W c #727272",
-"X c #5D5C5C",
-"Y c #AEAFB0",
-"Z c #F0F1F1",
-"` c #929394",
-" . c #0B0B0A",
-".. c #868686",
-"+. c #D9D9D9",
-"@. c #D3D3D3",
-"#. c #B8B8B8",
-"$. c #9B9B9B",
-"%. c #969696",
-"&. c #A0A0A0",
-"*. c #D1D1D1",
-"=. c #919192",
-"-. c #111111",
-";. c #3E3E3E",
-">. c #BEBEBE",
-",. c #EFEFEF",
-"'. c #E7E7E7",
-"). c #B0B0B0",
-"!. c #CFCFCF",
-"~. c #F4F4F4",
-"{. c #DFDFDF",
-"]. c #5D5D5D",
-"^. c #0C0C0C",
-"/. c #585858",
-"(. c #FFFFFF",
-"_. c #FDFDFD",
-":. c #FBFBFB",
-"<. c #8E8E8E",
-"[. c #252525",
-"}. c #424242",
-"|. c #7F7F7F",
-"1. c #A8A8A8",
-"2. c #939393",
-"3. c #6D6D6D",
-"4. c #191919",
-"5. c #4C4C4C",
-"6. c #6B6B6B",
-"7. c #8B8B8B",
-"8. c #ADADAD",
-"9. c #B4B4B4",
-"0. c #333333",
-"a. c #6C6C6C",
+" c None",
+". c #131313",
+"+ c #464646",
+"@ c #E0E0E0",
+"# c #656565",
+"$ c #3D3D3D",
+"% c #E4E9EC",
+"& c #FBFFFF",
+"* c #E8E9EB",
+"= c #595858",
+"- c #393A3B",
+"; c #D1DBE6",
+"> c #ECF8FF",
+", c #E8F4FF",
+"' c #D5DAE1",
+") c #C1C1C1",
+"! c #4F4E4D",
+"~ c #0A0A0A",
+"{ c #909295",
+"] c #D8EAFD",
+"^ c #DFF1FF",
+"/ c #C0CAD6",
+"( c #C6CCD4",
+"_ c #E5ECF1",
+": c #828385",
+"< c #080808",
+"[ c #989898",
+"} c #5B5B5B",
+"| c #2F2E2D",
+"1 c #898E94",
+"2 c #ADB8C6",
+"3 c #B6BDC7",
+"4 c #E6F1FD",
+"5 c #F6FFFF",
+"6 c #8D96A2",
+"7 c #121213",
+"8 c #646464",
+"9 c #B6B6B6",
+"0 c #898989",
+"a c #767676",
+"b c #3F3F3F",
+"c c #292827",
+"d c #6D6E6F",
+"e c #D4E0F0",
+"f c #F1FFFF",
+"g c #B9C4D0",
+"h c #868E98",
+"i c #B0BBC6",
+"j c #46484B",
+"k c #1E1E1D",
+"l c #C7C7C7",
+"m c #8D8D8D",
+"n c #818181",
+"o c #A1A1A1",
+"p c #5E5E5E",
+"q c #343433",
+"r c #777A7F",
+"s c #B3BDC6",
+"t c #959AA2",
+"u c #DEE9F2",
+"v c #F7FFFF",
+"w c #B8C2CE",
+"x c #363636",
+"y c #030303",
+"z c #8F8F8F",
+"A c #BDBDBD",
+"B c #999999",
+"C c #AAAAAA",
+"D c #E1E1E1",
+"E c #F6F6F6",
+"F c #EBEBEB",
+"G c #7E7E7E",
+"H c #3F3E3E",
+"I c #6E6F6F",
+"J c #D9DFE7",
+"K c #FDFFFF",
+"L c #EDF4F9",
+"M c #7A7D81",
+"N c #0C0B0B",
+"O c #A7A7A7",
+"P c #C4C4C4",
+"Q c #B5B5B5",
+"R c #C2C2C2",
+"S c #D6D6D6",
+"T c #D5D5D5",
+"U c #CDCDCD",
+"V c #C5C5C5",
+"W c #727272",
+"X c #5D5C5C",
+"Y c #AEAFB0",
+"Z c #F0F1F1",
+"` c #929394",
+" . c #0B0B0A",
+".. c #868686",
+"+. c #D9D9D9",
+"@. c #D3D3D3",
+"#. c #B8B8B8",
+"$. c #9B9B9B",
+"%. c #969696",
+"&. c #A0A0A0",
+"*. c #D1D1D1",
+"=. c #919192",
+"-. c #111111",
+";. c #3E3E3E",
+">. c #BEBEBE",
+",. c #EFEFEF",
+"'. c #E7E7E7",
+"). c #B0B0B0",
+"!. c #CFCFCF",
+"~. c #F4F4F4",
+"{. c #DFDFDF",
+"]. c #5D5D5D",
+"^. c #0C0C0C",
+"/. c #585858",
+"(. c #FFFFFF",
+"_. c #FDFDFD",
+":. c #FBFBFB",
+"<. c #8E8E8E",
+"[. c #252525",
+"}. c #424242",
+"|. c #7F7F7F",
+"1. c #A8A8A8",
+"2. c #939393",
+"3. c #6D6D6D",
+"4. c #191919",
+"5. c #4C4C4C",
+"6. c #6B6B6B",
+"7. c #8B8B8B",
+"8. c #ADADAD",
+"9. c #B4B4B4",
+"0. c #333333",
+"a. c #6C6C6C",
" . ",
" + @ # ",
" $ % & * = ",
/* XPM */
static const char *const intf_xpm[] = {
"16 16 216 2",
-" c None",
-". c #715F39",
-"+ c #DDA434",
-"@ c #CD8A01",
-"# c #CC8A04",
-"$ c #B79042",
-"% c #D49411",
-"& c #D18D03",
-"* c #B27D11",
-"= c #ECECEC",
-"- c #FFFDFA",
-"; c #FEFBF8",
-"> c #FDFAF7",
-", c #FCFAF7",
-"' c #FCF9F6",
-") c #FBF8F6",
-"! c #F8F8FA",
-"~ c #BAAB8C",
-"{ c #D09824",
-"] c #CD8B02",
-"^ c #C88600",
-"/ c #987D48",
-"( c #CFD1D6",
-"_ c #B0B0AF",
-": c #FCFCFD",
-"< c #BAC7DC",
-"[ c #C0D1E6",
-"} c #C5D6E8",
-"| c #C9DAEB",
-"1 c #CDDEED",
-"2 c #CFE3F3",
-"3 c #C0CCD7",
-"4 c #BE9648",
-"5 c #D3910C",
-"6 c #CD8B03",
-"7 c #A06E0A",
-"8 c #868A90",
-"9 c #FFFFFF",
-"0 c #797979",
-"a c #B4B4B2",
-"b c #E9ECF2",
-"c c #2962B7",
-"d c #3C7ED0",
-"e c #4D8ED9",
-"f c #5B9DE2",
-"g c #66A9EA",
-"h c #64A8ED",
-"i c #868978",
-"j c #D4961A",
-"k c #CD8A02",
-"l c #C08205",
-"m c #5D5844",
-"n c #4977C2",
-"o c #7B7B7A",
-"p c #B5B4B1",
-"q c #ECEFF5",
-"r c #3670C4",
-"s c #3A7DD1",
-"t c #4A8DDA",
-"u c #5397E1",
-"v c #60A5EC",
-"w c #92ABC7",
-"x c #A88A4F",
-"y c #CF8E09",
-"z c #C88602",
-"A c #8E691F",
-"B c #295A9D",
-"C c #5287D4",
-"D c #F4F5F7",
-"E c #797978",
-"F c #B6B6B5",
-"G c #EDF0F5",
-"H c #2E68BD",
-"I c #3577CE",
-"J c #3F81D4",
-"K c #619BDE",
-"L c #639CDB",
-"M c #91A0B1",
-"N c #CFCDCB",
-"O c #A4916A",
-"P c #9F7012",
-"Q c #455C77",
-"R c #2268CA",
-"S c #4D7FCA",
-"T c #E9E9EB",
-"U c #787676",
-"V c #BAB9B6",
-"W c #EEF1F7",
-"X c #1850AF",
-"Y c #2363C2",
-"Z c #3878CE",
-"` c #4B8DDA",
-" . c #638DBE",
-".. c #C2C3C3",
-"+. c #C6C5C5",
-"@. c #8E8D8E",
-"#. c #4E6277",
-"$. c #2E6DC3",
-"%. c #1A5DC0",
-"&. c #3E6EBF",
-"*. c #E7E8E9",
-"=. c #797876",
-"-. c #BBBBB9",
-";. c #F0F3F9",
-">. c #1048AA",
-",. c #033FAB",
-"'. c #2465C3",
-"). c #4F96E0",
-"!. c #97A9BD",
-"~. c #CFCBC6",
-"{. c #949290",
-"]. c #6B7E8C",
-"^. c #6EA5D8",
-"/. c #2766C3",
-"(. c #023CAA",
-"_. c #3766BA",
-":. c #E5E6E7",
-"<. c #797976",
-"[. c #BDBBBA",
-"}. c #F1F4FA",
-"|. c #164EAF",
-"1. c #0948B1",
-"2. c #114FB2",
-"3. c #365885",
-"4. c #767472",
-"5. c #949495",
-"6. c #566E8D",
-"7. c #7DB0DB",
-"8. c #70AAE6",
-"9. c #0D4BB2",
-"0. c #0039A8",
-"a. c #3868BA",
-"b. c #E3E4E5",
-"c. c #BEBDBB",
-"d. c #F2F5FC",
-"e. c #215AB6",
-"f. c #1459C1",
-"g. c #21477E",
-"h. c #95918B",
-"i. c #17130F",
-"j. c #536774",
-"k. c #7FB4E5",
-"l. c #76B1E9",
-"m. c #2F6DC5",
-"n. c #1957BA",
-"o. c #0747B1",
-"p. c #3C6CBD",
-"q. c #E0E0E2",
-"r. c #BFBEBD",
-"s. c #F3F6FC",
-"t. c #2965BF",
-"u. c #1D5CB8",
-"v. c #344256",
-"w. c #3A352F",
-"x. c #020407",
-"y. c #789DBB",
-"z. c #5694E0",
-"A. c #397ACE",
-"B. c #3070C9",
-"C. c #2564C2",
-"D. c #1152B8",
-"E. c #4272C2",
-"F. c #DDDDDF",
-"G. c #C0BFBE",
-"H. c #F1F4FB",
-"I. c #346EC2",
-"J. c #4067A3",
-"K. c #29364B",
-"L. c #09182B",
-"M. c #336298",
-"N. c #4F93E1",
-"O. c #498DDC",
-"P. c #4386D8",
-"Q. c #3B7DD3",
-"R. c #2F71CB",
-"S. c #195CC0",
-"T. c #4879C8",
-"U. c #D9DADB",
-"V. c #C2C1C1",
-"W. c #FBFCFE",
-"X. c #BAC9E2",
-"Y. c #BFCADD",
-"Z. c #AFBBCB",
-"`. c #B2C6DE",
-" + c #BAD4F1",
-".+ c #B7CFE9",
-"++ c #B4CCE7",
-"@+ c #B0C8E3",
-"#+ c #ABC2DF",
-"$+ c #A4BBDA",
-"%+ c #9BB2D5",
-"&+ c #A8B9D5",
-"*+ c #D7D7D7",
-"=+ c #7B7B7B",
-"-+ c #848484",
-";+ c #FFFFFE",
-">+ c #FDFBF9",
-",+ c #F8F6F3",
-"'+ c #F3F0EC",
-")+ c #EFEBE7",
-"!+ c #EBE7E3",
-"~+ c #E8E5E0",
-"{+ c #E4E1DD",
-"]+ c #E1DED9",
-"^+ c #DEDBD6",
-"/+ c #D8D6D2",
-"(+ c #D3D3D3",
-"_+ c #535353",
-":+ c #4F4F4F",
-"<+ c #5B5B5B",
-"[+ c #5A5A5A",
-"}+ c #595959",
-"|+ c #575757",
-"1+ c #555555",
-"2+ c #545454",
-"3+ c #414141",
+" c None",
+". c #715F39",
+"+ c #DDA434",
+"@ c #CD8A01",
+"# c #CC8A04",
+"$ c #B79042",
+"% c #D49411",
+"& c #D18D03",
+"* c #B27D11",
+"= c #ECECEC",
+"- c #FFFDFA",
+"; c #FEFBF8",
+"> c #FDFAF7",
+", c #FCFAF7",
+"' c #FCF9F6",
+") c #FBF8F6",
+"! c #F8F8FA",
+"~ c #BAAB8C",
+"{ c #D09824",
+"] c #CD8B02",
+"^ c #C88600",
+"/ c #987D48",
+"( c #CFD1D6",
+"_ c #B0B0AF",
+": c #FCFCFD",
+"< c #BAC7DC",
+"[ c #C0D1E6",
+"} c #C5D6E8",
+"| c #C9DAEB",
+"1 c #CDDEED",
+"2 c #CFE3F3",
+"3 c #C0CCD7",
+"4 c #BE9648",
+"5 c #D3910C",
+"6 c #CD8B03",
+"7 c #A06E0A",
+"8 c #868A90",
+"9 c #FFFFFF",
+"0 c #797979",
+"a c #B4B4B2",
+"b c #E9ECF2",
+"c c #2962B7",
+"d c #3C7ED0",
+"e c #4D8ED9",
+"f c #5B9DE2",
+"g c #66A9EA",
+"h c #64A8ED",
+"i c #868978",
+"j c #D4961A",
+"k c #CD8A02",
+"l c #C08205",
+"m c #5D5844",
+"n c #4977C2",
+"o c #7B7B7A",
+"p c #B5B4B1",
+"q c #ECEFF5",
+"r c #3670C4",
+"s c #3A7DD1",
+"t c #4A8DDA",
+"u c #5397E1",
+"v c #60A5EC",
+"w c #92ABC7",
+"x c #A88A4F",
+"y c #CF8E09",
+"z c #C88602",
+"A c #8E691F",
+"B c #295A9D",
+"C c #5287D4",
+"D c #F4F5F7",
+"E c #797978",
+"F c #B6B6B5",
+"G c #EDF0F5",
+"H c #2E68BD",
+"I c #3577CE",
+"J c #3F81D4",
+"K c #619BDE",
+"L c #639CDB",
+"M c #91A0B1",
+"N c #CFCDCB",
+"O c #A4916A",
+"P c #9F7012",
+"Q c #455C77",
+"R c #2268CA",
+"S c #4D7FCA",
+"T c #E9E9EB",
+"U c #787676",
+"V c #BAB9B6",
+"W c #EEF1F7",
+"X c #1850AF",
+"Y c #2363C2",
+"Z c #3878CE",
+"` c #4B8DDA",
+" . c #638DBE",
+".. c #C2C3C3",
+"+. c #C6C5C5",
+"@. c #8E8D8E",
+"#. c #4E6277",
+"$. c #2E6DC3",
+"%. c #1A5DC0",
+"&. c #3E6EBF",
+"*. c #E7E8E9",
+"=. c #797876",
+"-. c #BBBBB9",
+";. c #F0F3F9",
+">. c #1048AA",
+",. c #033FAB",
+"'. c #2465C3",
+"). c #4F96E0",
+"!. c #97A9BD",
+"~. c #CFCBC6",
+"{. c #949290",
+"]. c #6B7E8C",
+"^. c #6EA5D8",
+"/. c #2766C3",
+"(. c #023CAA",
+"_. c #3766BA",
+":. c #E5E6E7",
+"<. c #797976",
+"[. c #BDBBBA",
+"}. c #F1F4FA",
+"|. c #164EAF",
+"1. c #0948B1",
+"2. c #114FB2",
+"3. c #365885",
+"4. c #767472",
+"5. c #949495",
+"6. c #566E8D",
+"7. c #7DB0DB",
+"8. c #70AAE6",
+"9. c #0D4BB2",
+"0. c #0039A8",
+"a. c #3868BA",
+"b. c #E3E4E5",
+"c. c #BEBDBB",
+"d. c #F2F5FC",
+"e. c #215AB6",
+"f. c #1459C1",
+"g. c #21477E",
+"h. c #95918B",
+"i. c #17130F",
+"j. c #536774",
+"k. c #7FB4E5",
+"l. c #76B1E9",
+"m. c #2F6DC5",
+"n. c #1957BA",
+"o. c #0747B1",
+"p. c #3C6CBD",
+"q. c #E0E0E2",
+"r. c #BFBEBD",
+"s. c #F3F6FC",
+"t. c #2965BF",
+"u. c #1D5CB8",
+"v. c #344256",
+"w. c #3A352F",
+"x. c #020407",
+"y. c #789DBB",
+"z. c #5694E0",
+"A. c #397ACE",
+"B. c #3070C9",
+"C. c #2564C2",
+"D. c #1152B8",
+"E. c #4272C2",
+"F. c #DDDDDF",
+"G. c #C0BFBE",
+"H. c #F1F4FB",
+"I. c #346EC2",
+"J. c #4067A3",
+"K. c #29364B",
+"L. c #09182B",
+"M. c #336298",
+"N. c #4F93E1",
+"O. c #498DDC",
+"P. c #4386D8",
+"Q. c #3B7DD3",
+"R. c #2F71CB",
+"S. c #195CC0",
+"T. c #4879C8",
+"U. c #D9DADB",
+"V. c #C2C1C1",
+"W. c #FBFCFE",
+"X. c #BAC9E2",
+"Y. c #BFCADD",
+"Z. c #AFBBCB",
+"`. c #B2C6DE",
+" + c #BAD4F1",
+".+ c #B7CFE9",
+"++ c #B4CCE7",
+"@+ c #B0C8E3",
+"#+ c #ABC2DF",
+"$+ c #A4BBDA",
+"%+ c #9BB2D5",
+"&+ c #A8B9D5",
+"*+ c #D7D7D7",
+"=+ c #7B7B7B",
+"-+ c #848484",
+";+ c #FFFFFE",
+">+ c #FDFBF9",
+",+ c #F8F6F3",
+"'+ c #F3F0EC",
+")+ c #EFEBE7",
+"!+ c #EBE7E3",
+"~+ c #E8E5E0",
+"{+ c #E4E1DD",
+"]+ c #E1DED9",
+"^+ c #DEDBD6",
+"/+ c #D8D6D2",
+"(+ c #D3D3D3",
+"_+ c #535353",
+":+ c #4F4F4F",
+"<+ c #5B5B5B",
+"[+ c #5A5A5A",
+"}+ c #595959",
+"|+ c #575757",
+"1+ c #555555",
+"2+ c #545454",
+"3+ c #414141",
" . + @ # ",
" $ % & * ",
" = - ; > , ' ) ! ~ { ] ^ / ( ",
/* XPM */
static const char *const type_card_xpm[] = {
"16 16 174 2",
-" c #FFFFFF",
-". c #E7E7E7",
-"+ c #888888",
-"@ c #696969",
-"# c #B1B1B1",
-"$ c #D4D4D4",
-"% c #5D5D5D",
-"& c #AFAFAF",
-"* c #DCDCDC",
-"= c #5E5E5E",
-"- c #ECECEC",
-"; c #FCFCFC",
-"> c #D9D9D9",
-", c #D3D3D3",
-"' c #D2D2D2",
-") c #CFCFCF",
-"! c #7D7D7D",
-"~ c #B2B6B1",
-"{ c #72896A",
-"] c #6D7E60",
-"^ c #6E7E5F",
-"/ c #6C7B5C",
-"( c #6B7A5B",
-"_ c #606C50",
-": c #616C4F",
-"< c #646F53",
-"[ c #5D684C",
-"} c #606A4F",
-"| c #536148",
-"1 c #717370",
-"2 c #989B95",
-"3 c #667B5C",
-"4 c #7F8C7B",
-"5 c #8D978A",
-"6 c #889185",
-"7 c #868F83",
-"8 c #858E81",
-"9 c #677163",
-"0 c #48563D",
-"a c #727C67",
-"b c #495642",
-"c c #697164",
-"d c #48573E",
-"e c #686B67",
-"f c #BFBFBF",
-"g c #FEFEFE",
-"h c #969993",
-"i c #7B8875",
-"j c #A9AAA8",
-"k c #B7B7B7",
-"l c #ADADAD",
-"m c #A8A8A8",
-"n c #A2A2A2",
-"o c #666766",
-"p c #545D4D",
-"q c #8A8D72",
-"r c #52573D",
-"s c #969276",
-"t c #3E4933",
-"u c #6D706C",
-"v c #9F9F9F",
-"w c #7E8C78",
-"x c #929492",
-"y c #959595",
-"z c #818181",
-"A c #7C7C7C",
-"B c #7F7F7F",
-"C c #4E4F4E",
-"D c #495143",
-"E c #857664",
-"F c #4D3C2B",
-"G c #936C5E",
-"H c #393F2C",
-"I c #676A66",
-"J c #9A9A9A",
-"K c #979B94",
-"L c #586B50",
-"M c #4F574C",
-"N c #535851",
-"O c #4F544D",
-"P c #4D514B",
-"Q c #4B4E49",
-"R c #393E37",
-"S c #3B432F",
-"T c #58634F",
-"U c #3D4737",
-"V c #545C4F",
-"W c #37432F",
-"X c #61635F",
-"Y c #A9A9A9",
-"Z c #FDFDFD",
-"` c #979C96",
-" . c #6D8462",
-".. c #536045",
-"+. c #484F39",
-"@. c #414833",
-"#. c #3E4531",
-"$. c #424733",
-"%. c #3E4430",
-"&. c #535B3F",
-"*. c #566445",
-"=. c #566243",
-"-. c #59634A",
-";. c #4E5843",
-">. c #696B67",
-",. c #F6F6F6",
-"'. c #979C95",
-"). c #81916F",
-"!. c #6C7257",
-"~. c #75795F",
-"{. c #676D55",
-"]. c #5E634A",
-"^. c #6B6E53",
-"/. c #566143",
-"(. c #576746",
-"_. c #65734F",
-":. c #69785B",
-"<. c #71736F",
-"[. c #676766",
-"}. c #989796",
-"|. c #7E7E7E",
-"1. c #959A93",
-"2. c #778663",
-"3. c #484834",
-"4. c #53523B",
-"5. c #54553D",
-"6. c #444431",
-"7. c #494733",
-"8. c #576143",
-"9. c #65724E",
-"0. c #62714D",
-"a. c #687859",
-"b. c #5E605C",
-"c. c #4A4A4A",
-"d. c #656565",
-"e. c #8C8C8C",
-"f. c #666666",
-"g. c #AEB1AC",
-"h. c #637A5A",
-"i. c #677352",
-"j. c #5E694A",
-"k. c #5E684A",
-"l. c #5D6748",
-"m. c #5B6647",
-"n. c #626E4C",
-"o. c #677450",
-"p. c #64714D",
-"q. c #445135",
-"r. c #293121",
-"s. c #161B12",
-"t. c #5C5C5C",
-"u. c #DEDEDE",
-"v. c #F8F8F8",
-"w. c #757B73",
-"x. c #A2A175",
-"y. c #9C9A70",
-"z. c #9C9A6F",
-"A. c #9B996E",
-"B. c #9A986D",
-"C. c #98956B",
-"D. c #323A2D",
-"E. c #AAAAAA",
-"F. c #979797",
-"G. c #AFB1AE",
-"H. c #6F6E59",
-"I. c #6C6B56",
-"J. c #6C6A55",
-"K. c #6B6A55",
-"L. c #6A6954",
-"M. c #5B5F58",
-"N. c #EEEEEE",
-"O. c #D7D7D7",
-"P. c #5F5F5F",
-"Q. c #EDEDED",
+" c #FFFFFF",
+". c #E7E7E7",
+"+ c #888888",
+"@ c #696969",
+"# c #B1B1B1",
+"$ c #D4D4D4",
+"% c #5D5D5D",
+"& c #AFAFAF",
+"* c #DCDCDC",
+"= c #5E5E5E",
+"- c #ECECEC",
+"; c #FCFCFC",
+"> c #D9D9D9",
+", c #D3D3D3",
+"' c #D2D2D2",
+") c #CFCFCF",
+"! c #7D7D7D",
+"~ c #B2B6B1",
+"{ c #72896A",
+"] c #6D7E60",
+"^ c #6E7E5F",
+"/ c #6C7B5C",
+"( c #6B7A5B",
+"_ c #606C50",
+": c #616C4F",
+"< c #646F53",
+"[ c #5D684C",
+"} c #606A4F",
+"| c #536148",
+"1 c #717370",
+"2 c #989B95",
+"3 c #667B5C",
+"4 c #7F8C7B",
+"5 c #8D978A",
+"6 c #889185",
+"7 c #868F83",
+"8 c #858E81",
+"9 c #677163",
+"0 c #48563D",
+"a c #727C67",
+"b c #495642",
+"c c #697164",
+"d c #48573E",
+"e c #686B67",
+"f c #BFBFBF",
+"g c #FEFEFE",
+"h c #969993",
+"i c #7B8875",
+"j c #A9AAA8",
+"k c #B7B7B7",
+"l c #ADADAD",
+"m c #A8A8A8",
+"n c #A2A2A2",
+"o c #666766",
+"p c #545D4D",
+"q c #8A8D72",
+"r c #52573D",
+"s c #969276",
+"t c #3E4933",
+"u c #6D706C",
+"v c #9F9F9F",
+"w c #7E8C78",
+"x c #929492",
+"y c #959595",
+"z c #818181",
+"A c #7C7C7C",
+"B c #7F7F7F",
+"C c #4E4F4E",
+"D c #495143",
+"E c #857664",
+"F c #4D3C2B",
+"G c #936C5E",
+"H c #393F2C",
+"I c #676A66",
+"J c #9A9A9A",
+"K c #979B94",
+"L c #586B50",
+"M c #4F574C",
+"N c #535851",
+"O c #4F544D",
+"P c #4D514B",
+"Q c #4B4E49",
+"R c #393E37",
+"S c #3B432F",
+"T c #58634F",
+"U c #3D4737",
+"V c #545C4F",
+"W c #37432F",
+"X c #61635F",
+"Y c #A9A9A9",
+"Z c #FDFDFD",
+"` c #979C96",
+" . c #6D8462",
+".. c #536045",
+"+. c #484F39",
+"@. c #414833",
+"#. c #3E4531",
+"$. c #424733",
+"%. c #3E4430",
+"&. c #535B3F",
+"*. c #566445",
+"=. c #566243",
+"-. c #59634A",
+";. c #4E5843",
+">. c #696B67",
+",. c #F6F6F6",
+"'. c #979C95",
+"). c #81916F",
+"!. c #6C7257",
+"~. c #75795F",
+"{. c #676D55",
+"]. c #5E634A",
+"^. c #6B6E53",
+"/. c #566143",
+"(. c #576746",
+"_. c #65734F",
+":. c #69785B",
+"<. c #71736F",
+"[. c #676766",
+"}. c #989796",
+"|. c #7E7E7E",
+"1. c #959A93",
+"2. c #778663",
+"3. c #484834",
+"4. c #53523B",
+"5. c #54553D",
+"6. c #444431",
+"7. c #494733",
+"8. c #576143",
+"9. c #65724E",
+"0. c #62714D",
+"a. c #687859",
+"b. c #5E605C",
+"c. c #4A4A4A",
+"d. c #656565",
+"e. c #8C8C8C",
+"f. c #666666",
+"g. c #AEB1AC",
+"h. c #637A5A",
+"i. c #677352",
+"j. c #5E694A",
+"k. c #5E684A",
+"l. c #5D6748",
+"m. c #5B6647",
+"n. c #626E4C",
+"o. c #677450",
+"p. c #64714D",
+"q. c #445135",
+"r. c #293121",
+"s. c #161B12",
+"t. c #5C5C5C",
+"u. c #DEDEDE",
+"v. c #F8F8F8",
+"w. c #757B73",
+"x. c #A2A175",
+"y. c #9C9A70",
+"z. c #9C9A6F",
+"A. c #9B996E",
+"B. c #9A986D",
+"C. c #98956B",
+"D. c #323A2D",
+"E. c #AAAAAA",
+"F. c #979797",
+"G. c #AFB1AE",
+"H. c #6F6E59",
+"I. c #6C6B56",
+"J. c #6C6A55",
+"K. c #6B6A55",
+"L. c #6A6954",
+"M. c #5B5F58",
+"N. c #EEEEEE",
+"O. c #D7D7D7",
+"P. c #5F5F5F",
+"Q. c #EDEDED",
" . + @ # ",
" $ % & * ",
" $ = - ",
/* XPM */
static const char *const type_cdda_xpm[] = {
"16 16 119 2",
-" c None",
-". c #7E7E7E",
-"+ c #A3A3A3",
-"@ c #000000",
-"# c #030303",
-"$ c #BDCCFF",
-"% c #C1CDF5",
-"& c #D8DDF1",
-"* c #C4CBE9",
-"= c #C0C8F0",
-"- c #646464",
-"; c #A8A8A8",
-"> c #DFF2FF",
-", c #F9FDFF",
-"' c #E0E7FB",
-") c #B1C3F7",
-"! c #F7FAFF",
-"~ c #FFFFFF",
-"{ c #DBDEEE",
-"] c #727EB7",
-"^ c #2A2928",
-"/ c #BBBBBB",
-"( c #E1E9FF",
-"_ c #FEFFFD",
-": c #BECDF6",
-"< c #E5ECFC",
-"[ c #E8EDFA",
-"} c #747CAA",
-"| c #85847F",
-"1 c #B8B8B8",
-"2 c #D4E6FF",
-"3 c #EBEEFB",
-"4 c #DDE5FB",
-"5 c #FEFFFF",
-"6 c #EFF3FE",
-"7 c #91ABF5",
-"8 c #B7BFE3",
-"9 c #7C7A7B",
-"0 c #878787",
-"a c #1A1A1A",
-"b c #D1E4FF",
-"c c #D8E1F8",
-"d c #FAFAFE",
-"e c #FFFFFE",
-"f c #D5E0FB",
-"g c #EFF0F9",
-"h c #FBFDFF",
-"i c #AAC0FA",
-"j c #B0C7FF",
-"k c #DEF0FF",
-"l c #8A8B8F",
-"m c #A4A49F",
-"n c #585857",
-"o c #D1E5FF",
-"p c #B9CAF5",
-"q c #C7D4F8",
-"r c #E4EBFC",
-"s c #F1F5FF",
-"t c #D4DDFD",
-"u c #C1C9E9",
-"v c #B2BEE9",
-"w c #D7E6FF",
-"x c #383428",
-"y c #8B8C90",
-"z c #D3E4FF",
-"A c #ABBEF3",
-"B c #BBCAF6",
-"C c #CAD8F8",
-"D c #CED9FC",
-"E c #B5C5FC",
-"F c #AFB4D7",
-"G c #DDE6FF",
-"H c #1D1B14",
-"I c #34322B",
-"J c #CFDCFF",
-"K c #C2D8FF",
-"L c #B8C8F4",
-"M c #ABBDF4",
-"N c #B8C9F6",
-"O c #D1DCFB",
-"P c #DAE2FE",
-"Q c #AFBAE2",
-"R c #CACDE3",
-"S c #F8FBFF",
-"T c #DAE7FF",
-"U c #C5D8FF",
-"V c #D5E6FF",
-"W c #5E6592",
-"X c #C4D3FF",
-"Y c #9BB1F2",
-"Z c #B0C4F5",
-"` c #D6DDF5",
-" . c #F5F6FA",
-".. c #E2EAFC",
-"+. c #DCE7FF",
-"@. c #515886",
-"#. c #C0D9FF",
-"$. c #B3C5FA",
-"%. c #FDFDFF",
-"&. c #FAFCFF",
-"*. c #E6EBFD",
-"=. c #DBDDEE",
-"-. c #CADBFF",
-";. c #FFFEFE",
-">. c #FEFDFF",
-",. c #F9FAFE",
-"'. c #C7D4F7",
-"). c #FDFDFE",
-"!. c #959AC1",
-"~. c #C7D7FF",
-"{. c #D2DEFC",
-"]. c #DCE5FF",
-"^. c #AFB3D2",
-"/. c #ADC1FF",
-"(. c #C7D2FF",
-"_. c #DBE0FA",
-":. c #D7DFF6",
-"<. c #A1AEDC",
-"[. c #98A1CC",
+" c None",
+". c #7E7E7E",
+"+ c #A3A3A3",
+"@ c #000000",
+"# c #030303",
+"$ c #BDCCFF",
+"% c #C1CDF5",
+"& c #D8DDF1",
+"* c #C4CBE9",
+"= c #C0C8F0",
+"- c #646464",
+"; c #A8A8A8",
+"> c #DFF2FF",
+", c #F9FDFF",
+"' c #E0E7FB",
+") c #B1C3F7",
+"! c #F7FAFF",
+"~ c #FFFFFF",
+"{ c #DBDEEE",
+"] c #727EB7",
+"^ c #2A2928",
+"/ c #BBBBBB",
+"( c #E1E9FF",
+"_ c #FEFFFD",
+": c #BECDF6",
+"< c #E5ECFC",
+"[ c #E8EDFA",
+"} c #747CAA",
+"| c #85847F",
+"1 c #B8B8B8",
+"2 c #D4E6FF",
+"3 c #EBEEFB",
+"4 c #DDE5FB",
+"5 c #FEFFFF",
+"6 c #EFF3FE",
+"7 c #91ABF5",
+"8 c #B7BFE3",
+"9 c #7C7A7B",
+"0 c #878787",
+"a c #1A1A1A",
+"b c #D1E4FF",
+"c c #D8E1F8",
+"d c #FAFAFE",
+"e c #FFFFFE",
+"f c #D5E0FB",
+"g c #EFF0F9",
+"h c #FBFDFF",
+"i c #AAC0FA",
+"j c #B0C7FF",
+"k c #DEF0FF",
+"l c #8A8B8F",
+"m c #A4A49F",
+"n c #585857",
+"o c #D1E5FF",
+"p c #B9CAF5",
+"q c #C7D4F8",
+"r c #E4EBFC",
+"s c #F1F5FF",
+"t c #D4DDFD",
+"u c #C1C9E9",
+"v c #B2BEE9",
+"w c #D7E6FF",
+"x c #383428",
+"y c #8B8C90",
+"z c #D3E4FF",
+"A c #ABBEF3",
+"B c #BBCAF6",
+"C c #CAD8F8",
+"D c #CED9FC",
+"E c #B5C5FC",
+"F c #AFB4D7",
+"G c #DDE6FF",
+"H c #1D1B14",
+"I c #34322B",
+"J c #CFDCFF",
+"K c #C2D8FF",
+"L c #B8C8F4",
+"M c #ABBDF4",
+"N c #B8C9F6",
+"O c #D1DCFB",
+"P c #DAE2FE",
+"Q c #AFBAE2",
+"R c #CACDE3",
+"S c #F8FBFF",
+"T c #DAE7FF",
+"U c #C5D8FF",
+"V c #D5E6FF",
+"W c #5E6592",
+"X c #C4D3FF",
+"Y c #9BB1F2",
+"Z c #B0C4F5",
+"` c #D6DDF5",
+" . c #F5F6FA",
+".. c #E2EAFC",
+"+. c #DCE7FF",
+"@. c #515886",
+"#. c #C0D9FF",
+"$. c #B3C5FA",
+"%. c #FDFDFF",
+"&. c #FAFCFF",
+"*. c #E6EBFD",
+"=. c #DBDDEE",
+"-. c #CADBFF",
+";. c #FFFEFE",
+">. c #FEFDFF",
+",. c #F9FAFE",
+"'. c #C7D4F7",
+"). c #FDFDFE",
+"!. c #959AC1",
+"~. c #C7D7FF",
+"{. c #D2DEFC",
+"]. c #DCE5FF",
+"^. c #AFB3D2",
+"/. c #ADC1FF",
+"(. c #C7D2FF",
+"_. c #DBE0FA",
+":. c #D7DFF6",
+"<. c #A1AEDC",
+"[. c #98A1CC",
" . ",
" + @ # ",
" $ % & * = @ @ - ; ",
/* XPM */
static const char *const type_directory_xpm[] = {
"16 16 83 1",
-" c None",
-". c #3274DB",
-"+ c #3273DB",
-"@ c #3373DB",
-"# c #3274DC",
-"$ c #3170D6",
-"% c #F5FBFD",
-"& c #F5F9FD",
-"* c #306DD2",
-"= c #E8F5FD",
-"- c #E8F6FD",
-"; c #E9F5FD",
-"> c #5F7DB1",
-", c #316DD1",
-"' c #306ED1",
-") c #316ED2",
-"! c #306DD1",
-"~ c #306ACC",
-"{ c #DBF0FD",
-"] c #DAEEFD",
-"^ c #DBEEFD",
-"/ c #DAF0FD",
-"( c #2F66C6",
-"_ c #CBE8FD",
-": c #CBE9FD",
-"< c #255FD1",
-"[ c #2E63C0",
-"} c #B9E2FD",
-"| c #BCE2FD",
-"1 c #B9E1FD",
-"2 c #BCE1FD",
-"3 c #9EC6EE",
-"4 c #FCFCFD",
-"5 c #ACD1FD",
-"6 c #2D61BD",
-"7 c #A9DAFD",
-"8 c #A9DBFD",
-"9 c #86B9EC",
-"0 c #8CBDFD",
-"a c #89BEFD",
-"b c #89BDFD",
-"c c #2C5EB8",
-"d c #99D3FD",
-"e c #2259CB",
-"f c #6BAAFD",
-"g c #6BA9FD",
-"h c #2259CC",
-"i c #2B5AB1",
-"j c #88CBFD",
-"k c #1F52C5",
-"l c #5098FD",
-"m c #4F98FD",
-"n c #4F97FD",
-"o c #1E52C5",
-"p c #2A58AE",
-"q c #7AC4FD",
-"r c #1C49BD",
-"s c #3987FD",
-"t c #3988FD",
-"u c #1B49BD",
-"v c #2955A8",
-"w c #6DBEFD",
-"x c #1840B5",
-"y c #287CFD",
-"z c #287BFD",
-"A c #277BFD",
-"B c #183FB5",
-"C c #2852A3",
-"D c #62B7FD",
-"E c #1337AA",
-"F c #FDFDFD",
-"G c #AEAEC6",
-"H c #1337AC",
-"I c #28509F",
-"J c #102DA2",
-"K c #274D9B",
-"L c #4FAEFD",
-"M c #0B2599",
-"N c #0C2599",
-"O c #274B97",
-"P c #091D91",
-"Q c #091E91",
-"R c #091E90",
+" c None",
+". c #3274DB",
+"+ c #3273DB",
+"@ c #3373DB",
+"# c #3274DC",
+"$ c #3170D6",
+"% c #F5FBFD",
+"& c #F5F9FD",
+"* c #306DD2",
+"= c #E8F5FD",
+"- c #E8F6FD",
+"; c #E9F5FD",
+"> c #5F7DB1",
+", c #316DD1",
+"' c #306ED1",
+") c #316ED2",
+"! c #306DD1",
+"~ c #306ACC",
+"{ c #DBF0FD",
+"] c #DAEEFD",
+"^ c #DBEEFD",
+"/ c #DAF0FD",
+"( c #2F66C6",
+"_ c #CBE8FD",
+": c #CBE9FD",
+"< c #255FD1",
+"[ c #2E63C0",
+"} c #B9E2FD",
+"| c #BCE2FD",
+"1 c #B9E1FD",
+"2 c #BCE1FD",
+"3 c #9EC6EE",
+"4 c #FCFCFD",
+"5 c #ACD1FD",
+"6 c #2D61BD",
+"7 c #A9DAFD",
+"8 c #A9DBFD",
+"9 c #86B9EC",
+"0 c #8CBDFD",
+"a c #89BEFD",
+"b c #89BDFD",
+"c c #2C5EB8",
+"d c #99D3FD",
+"e c #2259CB",
+"f c #6BAAFD",
+"g c #6BA9FD",
+"h c #2259CC",
+"i c #2B5AB1",
+"j c #88CBFD",
+"k c #1F52C5",
+"l c #5098FD",
+"m c #4F98FD",
+"n c #4F97FD",
+"o c #1E52C5",
+"p c #2A58AE",
+"q c #7AC4FD",
+"r c #1C49BD",
+"s c #3987FD",
+"t c #3988FD",
+"u c #1B49BD",
+"v c #2955A8",
+"w c #6DBEFD",
+"x c #1840B5",
+"y c #287CFD",
+"z c #287BFD",
+"A c #277BFD",
+"B c #183FB5",
+"C c #2852A3",
+"D c #62B7FD",
+"E c #1337AA",
+"F c #FDFDFD",
+"G c #AEAEC6",
+"H c #1337AC",
+"I c #28509F",
+"J c #102DA2",
+"K c #274D9B",
+"L c #4FAEFD",
+"M c #0B2599",
+"N c #0C2599",
+"O c #274B97",
+"P c #091D91",
+"Q c #091E91",
+"R c #091E90",
" .+@#.. ",
" $%&%&&&$ ",
"*===-=;=>,')'!, ",
/* XPM */
static const char *const type_disc_xpm[] = {
"16 16 91 1",
-" c None",
-". c #676767",
-"+ c #989898",
-"@ c #B7B7B7",
-"# c #BEBEBE",
-"$ c #919191",
-"% c #5B5B5B",
-"& c #CDCDCD",
-"* c #FEFEFE",
-"= c #FFFFFF",
-"- c #FDFDFD",
-"; c #BDBDBD",
-"> c #717171",
-", c #F3F3F3",
-"' c #FBFBFB",
-") c #F9F9F9",
-"! c #F7F7F7",
-"~ c #FAFAFA",
-"{ c #EDEDED",
-"] c #4A4A4A",
-"^ c #DFDFDF",
-"/ c #E4E4E4",
-"( c #F1F1F1",
-"_ c #F8F8F8",
-": c #F4F4F4",
-"< c #E5E5E5",
-"[ c #AEAEAE",
-"} c #D8D8D8",
-"| c #D6D6D6",
-"1 c #E2E2E2",
-"2 c #F5F5F5",
-"3 c #FCFCFC",
-"4 c #979797",
-"5 c #CFCFCF",
-"6 c #CCCCCC",
-"7 c #D7D7D7",
-"8 c #EBEBEB",
-"9 c #EEEEEE",
-"0 c #EAEAEA",
-"a c #E7E7E7",
-"b c #D5D5D5",
-"c c #6B6B6B",
-"d c #C8C8C8",
-"e c #E3E3E3",
-"f c #DBDBDB",
-"g c #C3C3C3",
-"h c #EFEFEF",
-"i c #DDDDDD",
-"j c #D2D2D2",
-"k c #D1D1D1",
-"l c #484848",
-"m c #787878",
-"n c #CBCBCB",
-"o c #CECECE",
-"p c #E6E6E6",
-"q c #C9C9C9",
-"r c #C4C4C4",
-"s c #5A5A5A",
-"t c #757575",
-"u c #E1E1E1",
-"v c #E9E9E9",
-"w c #E0E0E0",
-"x c #7D7D7D",
-"y c #BCBCBC",
-"z c #B9B9B9",
-"A c #515151",
-"B c #545454",
-"C c #DEDEDE",
-"D c #E8E8E8",
-"E c #DCDCDC",
-"F c #C7C7C7",
-"G c #BABABA",
-"H c #BBBBBB",
-"I c #C1C1C1",
-"J c #333333",
-"K c #ECECEC",
-"L c #C0C0C0",
-"M c #A6A6A6",
-"N c #777777",
-"O c #C2C2C2",
-"P c #C6C6C6",
-"Q c #555555",
-"R c #828282",
-"S c #9E9E9E",
-"T c #848484",
-"U c #9B9B9B",
-"V c #B4B4B4",
-"W c #DADADA",
-"X c #454545",
-"Y c #313131",
-"Z c #2F2F2F",
+" c None",
+". c #676767",
+"+ c #989898",
+"@ c #B7B7B7",
+"# c #BEBEBE",
+"$ c #919191",
+"% c #5B5B5B",
+"& c #CDCDCD",
+"* c #FEFEFE",
+"= c #FFFFFF",
+"- c #FDFDFD",
+"; c #BDBDBD",
+"> c #717171",
+", c #F3F3F3",
+"' c #FBFBFB",
+") c #F9F9F9",
+"! c #F7F7F7",
+"~ c #FAFAFA",
+"{ c #EDEDED",
+"] c #4A4A4A",
+"^ c #DFDFDF",
+"/ c #E4E4E4",
+"( c #F1F1F1",
+"_ c #F8F8F8",
+": c #F4F4F4",
+"< c #E5E5E5",
+"[ c #AEAEAE",
+"} c #D8D8D8",
+"| c #D6D6D6",
+"1 c #E2E2E2",
+"2 c #F5F5F5",
+"3 c #FCFCFC",
+"4 c #979797",
+"5 c #CFCFCF",
+"6 c #CCCCCC",
+"7 c #D7D7D7",
+"8 c #EBEBEB",
+"9 c #EEEEEE",
+"0 c #EAEAEA",
+"a c #E7E7E7",
+"b c #D5D5D5",
+"c c #6B6B6B",
+"d c #C8C8C8",
+"e c #E3E3E3",
+"f c #DBDBDB",
+"g c #C3C3C3",
+"h c #EFEFEF",
+"i c #DDDDDD",
+"j c #D2D2D2",
+"k c #D1D1D1",
+"l c #484848",
+"m c #787878",
+"n c #CBCBCB",
+"o c #CECECE",
+"p c #E6E6E6",
+"q c #C9C9C9",
+"r c #C4C4C4",
+"s c #5A5A5A",
+"t c #757575",
+"u c #E1E1E1",
+"v c #E9E9E9",
+"w c #E0E0E0",
+"x c #7D7D7D",
+"y c #BCBCBC",
+"z c #B9B9B9",
+"A c #515151",
+"B c #545454",
+"C c #DEDEDE",
+"D c #E8E8E8",
+"E c #DCDCDC",
+"F c #C7C7C7",
+"G c #BABABA",
+"H c #BBBBBB",
+"I c #C1C1C1",
+"J c #333333",
+"K c #ECECEC",
+"L c #C0C0C0",
+"M c #A6A6A6",
+"N c #777777",
+"O c #C2C2C2",
+"P c #C6C6C6",
+"Q c #555555",
+"R c #828282",
+"S c #9E9E9E",
+"T c #848484",
+"U c #9B9B9B",
+"V c #B4B4B4",
+"W c #DADADA",
+"X c #454545",
+"Y c #313131",
+"Z c #2F2F2F",
" .+@#$ ",
" %&*====-; ",
" >,='')!~-={] ",
/* XPM */
static const char *const type_file_xpm[] = {
"16 16 108 2",
-" c None",
-". c #8F8F8F",
-"+ c #FFFFFF",
-"@ c #B0B0B0",
-"# c #A7A7A7",
-"$ c #939393",
-"% c #8B8B8B",
-"& c #2B2B2B",
-"* c #0C0C0C",
-"= c #010101",
-"- c #000000",
-"; c #EFEFEF",
-"> c #ECECEC",
-", c #E8E8E8",
-"' c #E9E9E9",
-") c #DFDFDF",
-"! c #DCDCDC",
-"~ c #E3E3E3",
-"{ c #DADADA",
-"] c #D5D5D5",
-"^ c #D4D4D4",
-"/ c #D2D2D2",
-"( c #A6A6A6",
-"_ c #828181",
-": c #F2F2F2",
-"< c #FBFBFB",
-"[ c #FAFAFA",
-"} c #929292",
-"| c #3B3A3A",
-"1 c #656769",
-"2 c #626261",
-"3 c #E6E6E5",
-"4 c #FDFDFD",
-"5 c #868685",
-"6 c #292827",
-"7 c #9CA4AF",
-"8 c #E1F2FF",
-"9 c #A6AEB4",
-"0 c #5B5C5B",
-"a c #D7D7D7",
-"b c #F8F8F8",
-"c c #787777",
-"d c #1D1D1D",
-"e c #787C80",
-"f c #B6C2D2",
-"g c #E0F0FF",
-"h c #F3FEFF",
-"i c #C3C6C8",
-"j c #666666",
-"k c #CCCCCB",
-"l c #F4F4F4",
-"m c #707070",
-"n c #767E86",
-"o c #EAF8FF",
-"p c #BFC6D0",
-"q c #C4CCD6",
-"r c #EBF4FF",
-"s c #767575",
-"t c #9C9C9C",
-"u c #EDEDED",
-"v c #636363",
-"w c #0E0F0F",
-"x c #595C60",
-"y c #88909B",
-"z c #E6F1FD",
-"A c #F1FDFF",
-"B c #D4DBE1",
-"C c #CDCED0",
-"D c #7B7B7A",
-"E c #949494",
-"F c #F7F7F7",
-"G c #878787",
-"H c #0E0E0E",
-"I c #999A9B",
-"J c #ABB3BB",
-"K c #858D97",
-"L c #CCD7E5",
-"M c #B0B3B6",
-"N c #676665",
-"O c #A0A0A0",
-"P c #E4E4E4",
-"Q c #616161",
-"R c #7E7E80",
-"S c #F1F8FC",
-"T c #F7FFFF",
-"U c #A0ABB5",
-"V c #363738",
-"W c #363535",
-"X c #AEAEAE",
-"Y c #FCFCFC",
-"Z c #F1F1F1",
-"` c #FEFEFE",
-" . c #EEEEEE",
-".. c #686766",
-"+. c #76797D",
-"@. c #C5CFDC",
-"#. c #6A6D70",
-"$. c #3C3B3A",
-"%. c #BEBEBE",
-"&. c #A8A8A8",
-"*. c #F9F9F9",
-"=. c #F6F6F5",
-"-. c #767675",
-";. c #444444",
-">. c #525151",
-",. c #CFCFCF",
-"'. c #F0F0F0",
-"). c #ADADAD",
+" c None",
+". c #8F8F8F",
+"+ c #FFFFFF",
+"@ c #B0B0B0",
+"# c #A7A7A7",
+"$ c #939393",
+"% c #8B8B8B",
+"& c #2B2B2B",
+"* c #0C0C0C",
+"= c #010101",
+"- c #000000",
+"; c #EFEFEF",
+"> c #ECECEC",
+", c #E8E8E8",
+"' c #E9E9E9",
+") c #DFDFDF",
+"! c #DCDCDC",
+"~ c #E3E3E3",
+"{ c #DADADA",
+"] c #D5D5D5",
+"^ c #D4D4D4",
+"/ c #D2D2D2",
+"( c #A6A6A6",
+"_ c #828181",
+": c #F2F2F2",
+"< c #FBFBFB",
+"[ c #FAFAFA",
+"} c #929292",
+"| c #3B3A3A",
+"1 c #656769",
+"2 c #626261",
+"3 c #E6E6E5",
+"4 c #FDFDFD",
+"5 c #868685",
+"6 c #292827",
+"7 c #9CA4AF",
+"8 c #E1F2FF",
+"9 c #A6AEB4",
+"0 c #5B5C5B",
+"a c #D7D7D7",
+"b c #F8F8F8",
+"c c #787777",
+"d c #1D1D1D",
+"e c #787C80",
+"f c #B6C2D2",
+"g c #E0F0FF",
+"h c #F3FEFF",
+"i c #C3C6C8",
+"j c #666666",
+"k c #CCCCCB",
+"l c #F4F4F4",
+"m c #707070",
+"n c #767E86",
+"o c #EAF8FF",
+"p c #BFC6D0",
+"q c #C4CCD6",
+"r c #EBF4FF",
+"s c #767575",
+"t c #9C9C9C",
+"u c #EDEDED",
+"v c #636363",
+"w c #0E0F0F",
+"x c #595C60",
+"y c #88909B",
+"z c #E6F1FD",
+"A c #F1FDFF",
+"B c #D4DBE1",
+"C c #CDCED0",
+"D c #7B7B7A",
+"E c #949494",
+"F c #F7F7F7",
+"G c #878787",
+"H c #0E0E0E",
+"I c #999A9B",
+"J c #ABB3BB",
+"K c #858D97",
+"L c #CCD7E5",
+"M c #B0B3B6",
+"N c #676665",
+"O c #A0A0A0",
+"P c #E4E4E4",
+"Q c #616161",
+"R c #7E7E80",
+"S c #F1F8FC",
+"T c #F7FFFF",
+"U c #A0ABB5",
+"V c #363738",
+"W c #363535",
+"X c #AEAEAE",
+"Y c #FCFCFC",
+"Z c #F1F1F1",
+"` c #FEFEFE",
+" . c #EEEEEE",
+".. c #686766",
+"+. c #76797D",
+"@. c #C5CFDC",
+"#. c #6A6D70",
+"$. c #3C3B3A",
+"%. c #BEBEBE",
+"&. c #A8A8A8",
+"*. c #F9F9F9",
+"=. c #F6F6F5",
+"-. c #767675",
+";. c #444444",
+">. c #525151",
+",. c #CFCFCF",
+"'. c #F0F0F0",
+"). c #ADADAD",
". . . . . . . . . . . . . . . . ",
". + @ # $ % & * = - - - - - + . ",
". + ; > , ' ) ! ~ ~ { ] ^ / + . ",
/* XPM */
static const char *const type_net_xpm[] = {
"16 16 154 2",
-" c None",
-". c #667AAC",
-"+ c #8293BC",
-"@ c #8192BA",
-"# c #6677A0",
-"$ c #8C9BC3",
-"% c #E9EBF5",
-"& c #F8F8FC",
-"* c #FDFCFE",
-"= c #FFFFFF",
-"- c #FCFCFF",
-"; c #E7EBF9",
-"> c #8996B4",
-", c #99A5CD",
-"' c #E7E8F2",
-") c #CED2DD",
-"! c #C0C6D6",
-"~ c #CBD1E1",
-"{ c #E7E9F4",
-"] c #E8EAF5",
-"^ c #E7E8F4",
-"/ c #F0F2FE",
-"( c #919DC3",
-"_ c #53659F",
-": c #B3BBD7",
-"< c #98A2BB",
-"[ c #93A0BE",
-"} c #98A5C5",
-"| c #C8CEE1",
-"1 c #D5D8E7",
-"2 c #CBCFE0",
-"3 c #D0D4E5",
-"4 c #D7DBEC",
-"5 c #D0D5EF",
-"6 c #47578E",
-"7 c #3E579E",
-"8 c #5F709B",
-"9 c #7084B1",
-"0 c #7588B6",
-"a c #CBD1E5",
-"b c #EBEDF6",
-"c c #E2E6F1",
-"d c #D9DCEB",
-"e c #D3D7E9",
-"f c #CBCFE5",
-"g c #C0C5E2",
-"h c #7B89C2",
-"i c #29396C",
-"j c #6273AF",
-"k c #56699E",
-"l c #4A619B",
-"m c #49629E",
-"n c #A2AECE",
-"o c #E4E7F0",
-"p c #E9EBF3",
-"q c #E3E5F2",
-"r c #D4D8EB",
-"s c #C0C5DF",
-"t c #8D97BF",
-"u c #6F7FBD",
-"v c #1F2B51",
-"w c #3B4C83",
-"x c #98A1D3",
-"y c #A7AFD6",
-"z c #7481A9",
-"A c #1F397C",
-"B c #234089",
-"C c #2C4789",
-"D c #AEB7D0",
-"E c #EBEDF7",
-"F c #D4D8EC",
-"G c #959FC6",
-"H c #364B86",
-"I c #4159A0",
-"J c #152652",
-"K c #303D69",
-"L c #919CD1",
-"M c #AAB1D9",
-"N c #6B79A3",
-"O c #072670",
-"P c #0B2C7C",
-"Q c #001F73",
-"R c #7989B5",
-"S c #EDEDF8",
-"T c #B4BCDB",
-"U c #253D7D",
-"V c #374B87",
-"W c #4A62AA",
-"X c #05143D",
-"Y c #8490C8",
-"Z c #5A699A",
-"` c #123079",
-" . c #0A2B7C",
-".. c #0F2F7E",
-"+. c #09297A",
-"@. c #3B5495",
-"#. c #B6BDDB",
-"$. c #485F9C",
-"%. c #09266D",
-"&. c #5D6B9E",
-"*. c #7483BD",
-"=. c #415186",
-"-. c #2F488D",
-";. c #102E7A",
-">. c #1A3885",
-",. c #24418A",
-"'. c #29458D",
-"). c #27438B",
-"!. c #28438C",
-"~. c #0F2E7D",
-"{. c #233F89",
-"]. c #284694",
-"^. c #172C60",
-"/. c #294183",
-"(. c #39549C",
-"_. c #455D9D",
-":. c #4C62A0",
-"<. c #5065A1",
-"[. c #4D63A0",
-"}. c #455C9C",
-"|. c #41599B",
-"1. c #314E99",
-"2. c #0E2766",
-"3. c #2F3E6D",
-"4. c #6375AE",
-"5. c #7D8DC2",
-"6. c #7A88BC",
-"7. c #7C8BBF",
-"8. c #7385BC",
-"9. c #5065A0",
-"0. c #1F305C",
-"a. c #363D58",
-"b. c #888FB2",
-"c. c #676D8F",
-"d. c #282F49",
-"e. c #C6C6C9",
-"f. c #8A8A8C",
-"g. c #A8A8AF",
-"h. c #C6C6CC",
-"i. c #B9B9C0",
-"j. c #C2C2C6",
-"k. c #DADAD9",
-"l. c #ADADB2",
-"m. c #ABABB1",
-"n. c #CCCCD2",
-"o. c #8A8A91",
-"p. c #373739",
-"q. c #39393C",
-"r. c #626268",
-"s. c #68686C",
-"t. c #6C6C6E",
-"u. c #555559",
-"v. c #313134",
-"w. c #38383A",
+" c None",
+". c #667AAC",
+"+ c #8293BC",
+"@ c #8192BA",
+"# c #6677A0",
+"$ c #8C9BC3",
+"% c #E9EBF5",
+"& c #F8F8FC",
+"* c #FDFCFE",
+"= c #FFFFFF",
+"- c #FCFCFF",
+"; c #E7EBF9",
+"> c #8996B4",
+", c #99A5CD",
+"' c #E7E8F2",
+") c #CED2DD",
+"! c #C0C6D6",
+"~ c #CBD1E1",
+"{ c #E7E9F4",
+"] c #E8EAF5",
+"^ c #E7E8F4",
+"/ c #F0F2FE",
+"( c #919DC3",
+"_ c #53659F",
+": c #B3BBD7",
+"< c #98A2BB",
+"[ c #93A0BE",
+"} c #98A5C5",
+"| c #C8CEE1",
+"1 c #D5D8E7",
+"2 c #CBCFE0",
+"3 c #D0D4E5",
+"4 c #D7DBEC",
+"5 c #D0D5EF",
+"6 c #47578E",
+"7 c #3E579E",
+"8 c #5F709B",
+"9 c #7084B1",
+"0 c #7588B6",
+"a c #CBD1E5",
+"b c #EBEDF6",
+"c c #E2E6F1",
+"d c #D9DCEB",
+"e c #D3D7E9",
+"f c #CBCFE5",
+"g c #C0C5E2",
+"h c #7B89C2",
+"i c #29396C",
+"j c #6273AF",
+"k c #56699E",
+"l c #4A619B",
+"m c #49629E",
+"n c #A2AECE",
+"o c #E4E7F0",
+"p c #E9EBF3",
+"q c #E3E5F2",
+"r c #D4D8EB",
+"s c #C0C5DF",
+"t c #8D97BF",
+"u c #6F7FBD",
+"v c #1F2B51",
+"w c #3B4C83",
+"x c #98A1D3",
+"y c #A7AFD6",
+"z c #7481A9",
+"A c #1F397C",
+"B c #234089",
+"C c #2C4789",
+"D c #AEB7D0",
+"E c #EBEDF7",
+"F c #D4D8EC",
+"G c #959FC6",
+"H c #364B86",
+"I c #4159A0",
+"J c #152652",
+"K c #303D69",
+"L c #919CD1",
+"M c #AAB1D9",
+"N c #6B79A3",
+"O c #072670",
+"P c #0B2C7C",
+"Q c #001F73",
+"R c #7989B5",
+"S c #EDEDF8",
+"T c #B4BCDB",
+"U c #253D7D",
+"V c #374B87",
+"W c #4A62AA",
+"X c #05143D",
+"Y c #8490C8",
+"Z c #5A699A",
+"` c #123079",
+" . c #0A2B7C",
+".. c #0F2F7E",
+"+. c #09297A",
+"@. c #3B5495",
+"#. c #B6BDDB",
+"$. c #485F9C",
+"%. c #09266D",
+"&. c #5D6B9E",
+"*. c #7483BD",
+"=. c #415186",
+"-. c #2F488D",
+";. c #102E7A",
+">. c #1A3885",
+",. c #24418A",
+"'. c #29458D",
+"). c #27438B",
+"!. c #28438C",
+"~. c #0F2E7D",
+"{. c #233F89",
+"]. c #284694",
+"^. c #172C60",
+"/. c #294183",
+"(. c #39549C",
+"_. c #455D9D",
+":. c #4C62A0",
+"<. c #5065A1",
+"[. c #4D63A0",
+"}. c #455C9C",
+"|. c #41599B",
+"1. c #314E99",
+"2. c #0E2766",
+"3. c #2F3E6D",
+"4. c #6375AE",
+"5. c #7D8DC2",
+"6. c #7A88BC",
+"7. c #7C8BBF",
+"8. c #7385BC",
+"9. c #5065A0",
+"0. c #1F305C",
+"a. c #363D58",
+"b. c #888FB2",
+"c. c #676D8F",
+"d. c #282F49",
+"e. c #C6C6C9",
+"f. c #8A8A8C",
+"g. c #A8A8AF",
+"h. c #C6C6CC",
+"i. c #B9B9C0",
+"j. c #C2C2C6",
+"k. c #DADAD9",
+"l. c #ADADB2",
+"m. c #ABABB1",
+"n. c #CCCCD2",
+"o. c #8A8A91",
+"p. c #373739",
+"q. c #39393C",
+"r. c #626268",
+"s. c #68686C",
+"t. c #6C6C6E",
+"u. c #555559",
+"v. c #313134",
+"w. c #38383A",
" . + @ # ",
" $ % & * = - ; > ",
" , ' ) ! ~ { ] ^ / ( ",
/* XPM */
static const char *const type_node_xpm[] = {
"16 16 55 1",
-" c None",
-". c #949494",
-"+ c #919191",
-"@ c #FAFAFA",
-"# c #8F8F8F",
-"$ c #F5F5F5",
-"% c #F6F6F6",
-"& c #999999",
-"* c #909090",
-"= c #8D8D8D",
-"- c #F0F0F0",
-"; c #EFEFEF",
-"> c #898989",
-", c #E9E9E9",
-"' c #888888",
-") c #868686",
-"! c #E2E2E2",
-"~ c #E3E3E3",
-"{ c #D0D0D0",
-"] c #FDFDFD",
-"^ c #DCDCDC",
-"/ c #848484",
-"( c #DBDBDB",
-"_ c #C4C4C4",
-": c #CECECE",
-"< c #CDCDCD",
-"[ c #828282",
-"} c #D4D4D4",
-"| c #BFBFBF",
-"1 c #858585",
-"2 c #7E7E7E",
-"3 c #CCCCCC",
-"4 c #808080",
-"5 c #B1B1B1",
-"6 c #7F7F7F",
-"7 c #7C7C7C",
-"8 c #C6C6C6",
-"9 c #7A7A7A",
-"0 c #A5A5A5",
-"a c #797979",
-"b c #C0C0C0",
-"c c #747474",
-"d c #9C9C9C",
-"e c #9B9B9B",
-"f c #777777",
-"g c #BABABA",
-"h c #6D6D6D",
-"i c #FEFEFE",
-"j c #6E6E6E",
-"k c #676767",
-"l c #727272",
-"m c #606060",
-"n c #707070",
-"o c #5B5B5B",
-"p c #5A5A5A",
+" c None",
+". c #949494",
+"+ c #919191",
+"@ c #FAFAFA",
+"# c #8F8F8F",
+"$ c #F5F5F5",
+"% c #F6F6F6",
+"& c #999999",
+"* c #909090",
+"= c #8D8D8D",
+"- c #F0F0F0",
+"; c #EFEFEF",
+"> c #898989",
+", c #E9E9E9",
+"' c #888888",
+") c #868686",
+"! c #E2E2E2",
+"~ c #E3E3E3",
+"{ c #D0D0D0",
+"] c #FDFDFD",
+"^ c #DCDCDC",
+"/ c #848484",
+"( c #DBDBDB",
+"_ c #C4C4C4",
+": c #CECECE",
+"< c #CDCDCD",
+"[ c #828282",
+"} c #D4D4D4",
+"| c #BFBFBF",
+"1 c #858585",
+"2 c #7E7E7E",
+"3 c #CCCCCC",
+"4 c #808080",
+"5 c #B1B1B1",
+"6 c #7F7F7F",
+"7 c #7C7C7C",
+"8 c #C6C6C6",
+"9 c #7A7A7A",
+"0 c #A5A5A5",
+"a c #797979",
+"b c #C0C0C0",
+"c c #747474",
+"d c #9C9C9C",
+"e c #9B9B9B",
+"f c #777777",
+"g c #BABABA",
+"h c #6D6D6D",
+"i c #FEFEFE",
+"j c #6E6E6E",
+"k c #676767",
+"l c #727272",
+"m c #606060",
+"n c #707070",
+"o c #5B5B5B",
+"p c #5A5A5A",
" ...... ",
" +@@@@@@+ ",
"#$$$$$%$&##*### ",
/* XPM */
static const char *const type_playlist_xpm[] = {
"16 16 126 2",
-" c None",
-". c #959695",
-"+ c #000000",
-"@ c #0E0E0E",
-"# c #282828",
-"$ c #696969",
-"% c #DADBDA",
-"& c #E4E5E4",
-"* c #E6E7E6",
-"= c #D3D3D3",
-"- c #FFFFFF",
-"; c #F9F9F9",
-"> c #F9F9F8",
-", c #E7E7E7",
-"' c #E4E4E4",
-") c #CDCDCD",
-"! c #252525",
-"~ c #C8C9C8",
-"{ c #E3E4E3",
-"] c #F6F6F6",
-"^ c #DADADA",
-"/ c #9F9F9F",
-"( c #FEFEFE",
-"_ c #FCFCFB",
-": c #FBFBFB",
-"< c #F2F2F2",
-"[ c #AFAFAE",
-"} c #E9E9E9",
-"| c #B3B3B3",
-"1 c #383838",
-"2 c #CECFCE",
-"3 c #9E9E9E",
-"4 c #FDFDFD",
-"5 c #FAFAF9",
-"6 c #F3F3F3",
-"7 c #A9A9A8",
-"8 c #F0F0F0",
-"9 c #F4F4F4",
-"0 c #ABABAB",
-"a c #414141",
-"b c #9D9D9C",
-"c c #9A9A9A",
-"d c #9A9A99",
-"e c #9B9B9A",
-"f c #9D9C9C",
-"g c #0A0A0A",
-"h c #9B9B9B",
-"i c #F8F8F7",
-"j c #F7F6F5",
-"k c #F6F6F4",
-"l c #F4F3F2",
-"m c #F1F0EF",
-"n c #F0EFED",
-"o c #E5E4E2",
-"p c #848381",
-"q c #6A6763",
-"r c #F8F7F6",
-"s c #989897",
-"t c #989796",
-"u c #EBEAE8",
-"v c #E1DFDC",
-"w c #B6B6B4",
-"x c #72706C",
-"y c #B1B0AF",
-"z c #818180",
-"A c #AFAFAD",
-"B c #EFEFED",
-"C c #EFEEEC",
-"D c #ECEBE9",
-"E c #E8E7E5",
-"F c #A4A4A1",
-"G c #C4C3C0",
-"H c #817D74",
-"I c #7F7F7E",
-"J c #7F7E7D",
-"K c #EEEDEB",
-"L c #EDECEA",
-"M c #E8E7E4",
-"N c #E7E6E3",
-"O c #8B867D",
-"P c #7D7D7C",
-"Q c #ACABA9",
-"R c #91908E",
-"S c #8E8E8C",
-"T c #E6E4E1",
-"U c #A2A19F",
-"V c #646462",
-"W c #A49E93",
-"X c #7C7B7A",
-"Y c #7B7B7A",
-"Z c #E7E5E2",
-"` c #E4E3DF",
-" . c #E3E2DE",
-".. c #DEDDD9",
-"+. c #DDDCD8",
-"@. c #E0DFDB",
-"#. c #A19C90",
-"$. c #E6E5E2",
-"%. c #E5E4E1",
-"&. c #8E8E8B",
-"*. c #747371",
-"=. c #0B0B0B",
-"-. c #DCDBD7",
-";. c #DBD9D5",
-">. c #A19B90",
-",. c #E3E2DF",
-"'. c #E4E2DF",
-"). c #DCDAD6",
-"!. c #D9D7D3",
-"~. c #E1E0DC",
-"{. c #E2E1DD",
-"]. c #71716F",
-"^. c #0B0B0A",
-"/. c #706F6D",
-"(. c #D8D6D1",
-"_. c #9F998D",
-":. c #999891",
-"<. c #A39D92",
-"[. c #A39D91",
-"}. c #A29C90",
-"|. c #A19B8F",
-"1. c #9D978C",
-"2. c #9B968A",
-"3. c #676359",
-"4. c #919191",
-"5. c #757575",
+" c None",
+". c #959695",
+"+ c #000000",
+"@ c #0E0E0E",
+"# c #282828",
+"$ c #696969",
+"% c #DADBDA",
+"& c #E4E5E4",
+"* c #E6E7E6",
+"= c #D3D3D3",
+"- c #FFFFFF",
+"; c #F9F9F9",
+"> c #F9F9F8",
+", c #E7E7E7",
+"' c #E4E4E4",
+") c #CDCDCD",
+"! c #252525",
+"~ c #C8C9C8",
+"{ c #E3E4E3",
+"] c #F6F6F6",
+"^ c #DADADA",
+"/ c #9F9F9F",
+"( c #FEFEFE",
+"_ c #FCFCFB",
+": c #FBFBFB",
+"< c #F2F2F2",
+"[ c #AFAFAE",
+"} c #E9E9E9",
+"| c #B3B3B3",
+"1 c #383838",
+"2 c #CECFCE",
+"3 c #9E9E9E",
+"4 c #FDFDFD",
+"5 c #FAFAF9",
+"6 c #F3F3F3",
+"7 c #A9A9A8",
+"8 c #F0F0F0",
+"9 c #F4F4F4",
+"0 c #ABABAB",
+"a c #414141",
+"b c #9D9D9C",
+"c c #9A9A9A",
+"d c #9A9A99",
+"e c #9B9B9A",
+"f c #9D9C9C",
+"g c #0A0A0A",
+"h c #9B9B9B",
+"i c #F8F8F7",
+"j c #F7F6F5",
+"k c #F6F6F4",
+"l c #F4F3F2",
+"m c #F1F0EF",
+"n c #F0EFED",
+"o c #E5E4E2",
+"p c #848381",
+"q c #6A6763",
+"r c #F8F7F6",
+"s c #989897",
+"t c #989796",
+"u c #EBEAE8",
+"v c #E1DFDC",
+"w c #B6B6B4",
+"x c #72706C",
+"y c #B1B0AF",
+"z c #818180",
+"A c #AFAFAD",
+"B c #EFEFED",
+"C c #EFEEEC",
+"D c #ECEBE9",
+"E c #E8E7E5",
+"F c #A4A4A1",
+"G c #C4C3C0",
+"H c #817D74",
+"I c #7F7F7E",
+"J c #7F7E7D",
+"K c #EEEDEB",
+"L c #EDECEA",
+"M c #E8E7E4",
+"N c #E7E6E3",
+"O c #8B867D",
+"P c #7D7D7C",
+"Q c #ACABA9",
+"R c #91908E",
+"S c #8E8E8C",
+"T c #E6E4E1",
+"U c #A2A19F",
+"V c #646462",
+"W c #A49E93",
+"X c #7C7B7A",
+"Y c #7B7B7A",
+"Z c #E7E5E2",
+"` c #E4E3DF",
+" . c #E3E2DE",
+".. c #DEDDD9",
+"+. c #DDDCD8",
+"@. c #E0DFDB",
+"#. c #A19C90",
+"$. c #E6E5E2",
+"%. c #E5E4E1",
+"&. c #8E8E8B",
+"*. c #747371",
+"=. c #0B0B0B",
+"-. c #DCDBD7",
+";. c #DBD9D5",
+">. c #A19B90",
+",. c #E3E2DF",
+"'. c #E4E2DF",
+"). c #DCDAD6",
+"!. c #D9D7D3",
+"~. c #E1E0DC",
+"{. c #E2E1DD",
+"]. c #71716F",
+"^. c #0B0B0A",
+"/. c #706F6D",
+"(. c #D8D6D1",
+"_. c #9F998D",
+":. c #999891",
+"<. c #A39D92",
+"[. c #A39D91",
+"}. c #A29C90",
+"|. c #A19B8F",
+"1. c #9D978C",
+"2. c #9B968A",
+"3. c #676359",
+"4. c #919191",
+"5. c #757575",
". + + + + + + + + + @ # $ % & * ",
"+ = - - - - - ; > > , ' ) ! ~ { ",
"+ ] ^ / - ( _ : > < [ } - | 1 2 ",
/* XPM */
static const char *const type_unknown_xpm[] = {
"16 16 4 1",
-" c None",
-". c #FFFFFF",
-"+ c #000000",
-"@ c #BFBFBF",
+" c None",
+". c #FFFFFF",
+"+ c #000000",
+"@ c #BFBFBF",
"................",
"..++++++++......",
"..+......++.....",
/* XPM */
static const char *const video_xpm[] = {
"16 16 124 2",
-" c None",
-". c #FFFFFF",
-"+ c #1B4260",
-"@ c #1E4869",
-"# c #1E4B6D",
-"$ c #1E4A6B",
-"% c #204F73",
-"& c #215175",
-"* c #325C7C",
-"= c #37607E",
-"- c #255B84",
-"; c #296491",
-"> c #4D7CA0",
-", c #6A90AB",
-"' c #7697B0",
-") c #235174",
-"! c #2C6894",
-"~ c #3375A7",
-"{ c #3677A8",
-"] c #4E8BBA",
-"^ c #81ADCE",
-"/ c #AFCBE0",
-"( c #C7DAE9",
-"_ c #42759D",
-": c #275478",
-"< c #326D9B",
-"[ c #3C81B7",
-"} c #447FAE",
-"| c #5390BF",
-"1 c #5994C2",
-"2 c #5C95C2",
-"3 c #92B8D6",
-"4 c #C8DBEA",
-"5 c #4D7EA4",
-"6 c #2D5B80",
-"7 c #366E9D",
-"8 c #3974A3",
-"9 c #336893",
-"0 c #3D7DB0",
-"a c #5592C3",
-"b c #5792C3",
-"c c #89B3D5",
-"d c #B4CFE4",
-"e c #CADDEC",
-"f c #4A7DA6",
-"g c #3E6688",
-"h c #42749D",
-"i c #BDBDBD",
-"j c #326088",
-"k c #4380B5",
-"l c #396D99",
-"m c #6C9FCA",
-"n c #8CB6D8",
-"o c #99BDDD",
-"p c #6EA2CE",
-"q c #3C74A4",
-"r c #446B8C",
-"s c #000000",
-"t c #5F5F5F",
-"u c #969696",
-"v c #959595",
-"w c #447AA5",
-"x c #3D6B94",
-"y c #6198C9",
-"z c #6BA1D1",
-"A c #639CCE",
-"B c #4E8FC8",
-"C c #4279A9",
-"D c #424242",
-"E c #7F7F7F",
-"F c #606060",
-"G c #636363",
-"H c #484848",
-"I c #1E1E1E",
-"J c #7A7A7A",
-"K c #5C80A2",
-"L c #6594C1",
-"M c #70A5D6",
-"N c #6FA3D4",
-"O c #5E8AB4",
-"P c #8C8C8C",
-"Q c #383838",
-"R c #3D3D3D",
-"S c #5D5D5D",
-"T c #B8B8B8",
-"U c #6A6A6A",
-"V c #4C4C4C",
-"W c #171717",
-"X c #94BCE2",
-"Y c #205B07",
-"Z c #1F5A06",
-"` c #2A2A2A",
-" . c #4E4E4E",
-".. c #4B4B4B",
-"+. c #585858",
-"@. c #727272",
-"#. c #454545",
-"$. c #050505",
-"%. c #2B2B2B",
-"&. c #121212",
-"*. c #36960D",
-"=. c #318A0C",
-"-. c #246608",
-";. c #363636",
-">. c #323232",
-",. c #4D4D4D",
-"'. c #3E3E3E",
-"). c #1B1B1B",
-"!. c #154700",
-"~. c #236308",
-"{. c #2B780A",
-"]. c #31840E",
-"^. c #3E7326",
-"/. c #468A29",
-"(. c #0B0B0B",
-"_. c #040404",
-":. c #517D3E",
-"<. c #328E0B",
-"[. c #389013",
-"}. c #3E9A17",
-"|. c #2F840B",
-"1. c #308C09",
-"2. c #FDFDFD",
-"3. c #FBFBFB",
+" c None",
+". c #FFFFFF",
+"+ c #1B4260",
+"@ c #1E4869",
+"# c #1E4B6D",
+"$ c #1E4A6B",
+"% c #204F73",
+"& c #215175",
+"* c #325C7C",
+"= c #37607E",
+"- c #255B84",
+"; c #296491",
+"> c #4D7CA0",
+", c #6A90AB",
+"' c #7697B0",
+") c #235174",
+"! c #2C6894",
+"~ c #3375A7",
+"{ c #3677A8",
+"] c #4E8BBA",
+"^ c #81ADCE",
+"/ c #AFCBE0",
+"( c #C7DAE9",
+"_ c #42759D",
+": c #275478",
+"< c #326D9B",
+"[ c #3C81B7",
+"} c #447FAE",
+"| c #5390BF",
+"1 c #5994C2",
+"2 c #5C95C2",
+"3 c #92B8D6",
+"4 c #C8DBEA",
+"5 c #4D7EA4",
+"6 c #2D5B80",
+"7 c #366E9D",
+"8 c #3974A3",
+"9 c #336893",
+"0 c #3D7DB0",
+"a c #5592C3",
+"b c #5792C3",
+"c c #89B3D5",
+"d c #B4CFE4",
+"e c #CADDEC",
+"f c #4A7DA6",
+"g c #3E6688",
+"h c #42749D",
+"i c #BDBDBD",
+"j c #326088",
+"k c #4380B5",
+"l c #396D99",
+"m c #6C9FCA",
+"n c #8CB6D8",
+"o c #99BDDD",
+"p c #6EA2CE",
+"q c #3C74A4",
+"r c #446B8C",
+"s c #000000",
+"t c #5F5F5F",
+"u c #969696",
+"v c #959595",
+"w c #447AA5",
+"x c #3D6B94",
+"y c #6198C9",
+"z c #6BA1D1",
+"A c #639CCE",
+"B c #4E8FC8",
+"C c #4279A9",
+"D c #424242",
+"E c #7F7F7F",
+"F c #606060",
+"G c #636363",
+"H c #484848",
+"I c #1E1E1E",
+"J c #7A7A7A",
+"K c #5C80A2",
+"L c #6594C1",
+"M c #70A5D6",
+"N c #6FA3D4",
+"O c #5E8AB4",
+"P c #8C8C8C",
+"Q c #383838",
+"R c #3D3D3D",
+"S c #5D5D5D",
+"T c #B8B8B8",
+"U c #6A6A6A",
+"V c #4C4C4C",
+"W c #171717",
+"X c #94BCE2",
+"Y c #205B07",
+"Z c #1F5A06",
+"` c #2A2A2A",
+" . c #4E4E4E",
+".. c #4B4B4B",
+"+. c #585858",
+"@. c #727272",
+"#. c #454545",
+"$. c #050505",
+"%. c #2B2B2B",
+"&. c #121212",
+"*. c #36960D",
+"=. c #318A0C",
+"-. c #246608",
+";. c #363636",
+">. c #323232",
+",. c #4D4D4D",
+"'. c #3E3E3E",
+"). c #1B1B1B",
+"!. c #154700",
+"~. c #236308",
+"{. c #2B780A",
+"]. c #31840E",
+"^. c #3E7326",
+"/. c #468A29",
+"(. c #0B0B0B",
+"_. c #040404",
+":. c #517D3E",
+"<. c #328E0B",
+"[. c #389013",
+"}. c #3E9A17",
+"|. c #2F840B",
+"1. c #308C09",
+"2. c #FDFDFD",
+"3. c #FBFBFB",
". . . . . . . . . . . . . . . . ",
". + @ # $ % & & & & * = * & & . ",
". # - ; ; ; ; ; ; > , ' , > ; . ",
menu->addAction( qfu(I_POP_SORT), this, SLOT( popupSort() ) );
menu->addAction( qfu(I_POP_ADD), this, SLOT( popupAdd() ) );
}
-#ifdef WIN32
+#ifdef WIN32
menu->addSeparator();
menu->addAction( qfu( I_POP_EXPLORE ), this, SLOT( popupExplore() ) );
#endif
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include "customwidgets.hpp"
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _CUSTOMWIDGETS_H_
virtual void drawBitmap( const GenericBitmap &rBitmap, int xSrc = 0,
int ySrc = 0, int xDest = 0, int yDest = 0,
int width = -1, int height = -1,
- bool blend = false );
+ bool blend = false );
/// Draw a filled rectangle on the grahics (color is #RRGGBB)
virtual void fillRect( int left, int top, int width, int height,
# ifdef HAVE_LRINT
# define lrintf( x ) (int)rint( x )
# elif defined WIN32
- __inline long int lrintf( float x )
- {
+ __inline long int lrintf( float x )
+ {
int i;
_asm fld x __asm fistp i
- return i;
- }
+ return i;
+ }
# endif
#endif
{
if( p_args.p_atom[i] == net_wm_state_above ) break;
}
-
+
XFree( p_args.p_atom );
if( i == i_items )
return; /* Not supported */
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 1;
- ofn.lpstrFile = (LPTSTR)szFile;
+ ofn.lpstrFile = (LPTSTR)szFile;
ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = NULL;
+ ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 40;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = _FROMMB(p_arg->psz_title);
- ofn.Flags = 0;
+ ofn.Flags = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = NULL;
ofn.lpstrFilter = szFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = (LPTSTR)szFile;
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = (LPTSTR)szFile;
ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = NULL;
+ ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 40;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = _T("Quick Open File");
- ofn.Flags = 0;
+ ofn.Flags = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = NULL;
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateTreeView
-PURPOSE:
+PURPOSE:
Registers the TreeView control class and creates a TreeView.
***********************************************************************/
GetClientRect( hwnd, &rect );
// Assign the window styles for the tree view.
- dwStyle = WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_LINESATROOT |
+ dwStyle = WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_LINESATROOT |
TVS_HASBUTTONS;
// Create the tree-view control.
/***********************************************************************
-FUNCTION:
+FUNCTION:
UpdateFileInfo
-PURPOSE:
+PURPOSE:
Update the TreeView with file information.
***********************************************************************/
void FileInfo::UpdateFileInfo()
{
- TVITEM tvi = {0};
- TVINSERTSTRUCT tvins = {0};
- HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;
- HTREEITEM hPrevRootItem = NULL;
- HTREEITEM hPrevLev2Item = NULL;
+ TVITEM tvi = {0};
+ TVINSERTSTRUCT tvins = {0};
+ HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;
+ HTREEITEM hPrevRootItem = NULL;
+ HTREEITEM hPrevLev2Item = NULL;
p_intf->p_sys->p_input = (input_thread_t *)
vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE );
if( !p_input ) return;
- tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
+ tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
// Set the text of the item.
tvi.pszText = _FROMMB( p_input->input.p_item->psz_name );
// Save the heading level in the item's application-defined data area
tvi.lParam = (LPARAM)1;
- tvins.item = tvi;
+ tvins.item = tvi;
//tvins.hInsertAfter = TVI_LAST;
- tvins.hInsertAfter = hPrev;
- tvins.hParent = TVI_ROOT;
+ tvins.hInsertAfter = hPrev;
+ tvins.hParent = TVI_ROOT;
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( hwndTV, &tvins );
- hPrevRootItem = hPrev;
+ hPrevRootItem = hPrev;
vlc_mutex_lock( &p_input->input.p_item->lock );
for( int i = 0; i < p_input->input.p_item->i_categories; i++ )
{
info_category_t *p_cat = p_input->input.p_item->pp_categories[i];
- // Set the text of the item.
+ // Set the text of the item.
tvi.pszText = _FROMMB( p_input->input.p_item->psz_name );
tvi.cchTextMax = _tcslen( tvi.pszText );
-
+
// Save the heading level in the item's application-defined data area
tvi.lParam = (LPARAM)2; // level 2
- tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
+ tvins.item = tvi;
+ tvins.hInsertAfter = hPrev;
tvins.hParent = hPrevRootItem;
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( hwndTV, &tvins );
hPrevLev2Item = hPrev;
{
info_t *p_info = p_cat->pp_infos[j];
- // Set the text of the item.
+ // Set the text of the item.
string szAnsi = (string)p_info->psz_name;
szAnsi += ": ";
szAnsi += p_info->psz_value;
tvi.pszText = (TCHAR *)_FROMMB( szAnsi.c_str() );
tvi.cchTextMax = _tcslen( tvi.pszText );
tvi.lParam = (LPARAM)3; // level 3
- tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
+ tvins.item = tvi;
+ tvins.hInsertAfter = hPrev;
tvins.hParent = hPrevLev2Item;
-
- // Add the item to the tree-view control.
+
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( hwndTV, &tvins );
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
-
+
***********************************************************************/
LRESULT FileInfo::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
{
switch( msg )
{
- case WM_INITDIALOG:
+ case WM_INITDIALOG:
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN |
SHIDIF_FULLSCREENNOMENUBAR;//SHIDIF_SIZEDLGFULLSCREEN;
break;
case WM_SETFOCUS:
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
SHFullScreen( hwnd, SHFS_HIDESIPBUTTON );
break;
#include <commctrl.h>
#include <commdlg.h>
-#define NUMIMAGES 9 // Number of buttons in the toolbar
-#define IMAGEWIDTH 17 // Width of the buttons in the toolbar
-#define IMAGEHEIGHT 16 // Height of the buttons in the toolbar
+#define NUMIMAGES 9 // Number of buttons in the toolbar
+#define IMAGEWIDTH 17 // Width of the buttons in the toolbar
+#define IMAGEHEIGHT 16 // Height of the buttons in the toolbar
#define BUTTONWIDTH 0 // Width of the button images in the toolbar
#define BUTTONHEIGHT 0 // Height of the button images in the toolbar
#define ID_TOOLBAR 2000 // Identifier of the main tool bar
#define HELP_FAST _T("Play faster")
// The TBBUTTON structure contains information the toolbar buttons.
-static TBBUTTON tbButton[] =
+static TBBUTTON tbButton[] =
{
{0, ID_FILE_QUICKOPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON},
{1, ID_FILE_OPENNET, TBSTATE_ENABLED, TBSTYLE_BUTTON},
};
// Toolbar ToolTips
-TCHAR * szToolTips[] =
+TCHAR * szToolTips[] =
{
HELP_SIMPLE, HELP_NET, HELP_STOP, HELP_PLAY, HELP_PLO, HELP_PLP,
HELP_PLN, HELP_SLOW, HELP_FAST
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateMenuBar
-PURPOSE:
+PURPOSE:
Creates a menu bar.
***********************************************************************/
HWND Interface::CreateMenuBar( HWND hwnd, HINSTANCE hInst )
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateToolBar
-PURPOSE:
+PURPOSE:
Registers the TOOLBAR control class and creates a toolbar.
***********************************************************************/
HWND CreateToolBar( HWND hwnd, HINSTANCE hInst )
BUTTONWIDTH, BUTTONHEIGHT, IMAGEWIDTH, IMAGEHEIGHT, sizeof(TBBUTTON) );
if( !hwndTB ) return NULL;
-
+
// Add ToolTips to the toolbar.
- SendMessage( hwndTB, TB_SETTOOLTIPS, (WPARAM)NUMIMAGES,
+ SendMessage( hwndTB, TB_SETTOOLTIPS, (WPARAM)NUMIMAGES,
(LPARAM)szToolTips );
// Reposition the toolbar.
GetClientRect( hwnd, &rect );
GetWindowRect( hwndTB, &rectTB );
- MoveWindow( hwndTB, rect.left, rect.bottom - rect.top - 2*MENU_HEIGHT,
+ MoveWindow( hwndTB, rect.left, rect.bottom - rect.top - 2*MENU_HEIGHT,
rect.right - rect.left, MENU_HEIGHT, TRUE );
return hwndTB;
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateSliderBar
-PURPOSE:
+PURPOSE:
Registers the TRACKBAR_CLASS control class and creates a trackbar.
***********************************************************************/
// Reposition the trackbar
GetClientRect( hwnd, &rect );
- MoveWindow( hwndSlider, rect.left,
- rect.bottom - rect.top - 2*(MENU_HEIGHT-1) - SLIDER_HEIGHT,
+ MoveWindow( hwndSlider, rect.left,
+ rect.bottom - rect.top - 2*(MENU_HEIGHT-1) - SLIDER_HEIGHT,
rect.right - rect.left - 40, 30, TRUE );
ShowWindow( hwndSlider, SW_HIDE );
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateVolTrackBar
-PURPOSE:
+PURPOSE:
Registers the TRACKBAR_CLASS control class and creates a trackbar.
***********************************************************************/
SendMessage( hwndVol, TBM_SETRANGEMIN, 1, 0 );
SendMessage( hwndVol, TBM_SETRANGEMAX, 1, 200 );
SendMessage( hwndVol, TBM_SETPOS, 1, 100 );
- SendMessage( hwndVol, TBM_SETTICFREQ, 50, 0 );
+ SendMessage( hwndVol, TBM_SETTICFREQ, 50, 0 );
// Reposition the trackbar
GetClientRect( hwnd, &rect );
- MoveWindow( hwndVol, rect.right - rect.left - 40,
- rect.bottom - rect.top - 2*(MENU_HEIGHT-1) - SLIDER_HEIGHT,
+ MoveWindow( hwndVol, rect.right - rect.left - 40,
+ rect.bottom - rect.top - 2*(MENU_HEIGHT-1) - SLIDER_HEIGHT,
40, SLIDER_HEIGHT, TRUE );
ShowWindow( hwndVol, SW_HIDE );
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateStatusBar
-PURPOSE:
+PURPOSE:
Registers the StatusBar control class and creates a Statusbar.
***********************************************************************/
if (!hwndSB ) return NULL;
- // Get the coordinates of the parent window's client area.
+ // Get the coordinates of the parent window's client area.
GetClientRect( hwnd, &rect );
// allocate memory for the panes of status bar
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
***********************************************************************/
LRESULT Interface::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
case WM_COMMAND:
switch( GET_WM_COMMAND_ID(wp,lp) )
{
- case ID_FILE_QUICKOPEN:
- case ID_FILE_OPENFILE:
+ case ID_FILE_QUICKOPEN:
+ case ID_FILE_OPENFILE:
case ID_FILE_OPENDIR:
case ID_FILE_OPENNET:
case ID_VIEW_STREAMINFO:
case SlowStream_Event: OnSlowStream(); break;
case FastStream_Event: OnFastStream(); break;
- case ID_FILE_ABOUT:
+ case ID_FILE_ABOUT:
{
string about = (string)"VLC media player " PACKAGE_VERSION +
_("\n(WinCE interface)\n\n") +
// we should test if it is a menu command
}
break;
-
+
case WM_TIMER:
timer->Notify();
break;
- case WM_CTLCOLORSTATIC:
+ case WM_CTLCOLORSTATIC:
if( ( (HWND)lp == hwndSlider ) || ( (HWND)lp == hwndVol ) )
- {
- return( (LRESULT)::GetSysColorBrush(COLOR_3DFACE) );
+ {
+ return( (LRESULT)::GetSysColorBrush(COLOR_3DFACE) );
}
if( (HWND)lp == hwndLabel )
{
- SetBkColor( (HDC)wp, RGB (192, 192, 192) );
- return( (LRESULT)::GetSysColorBrush(COLOR_3DFACE) );
+ SetBkColor( (HDC)wp, RGB (192, 192, 192) );
+ return( (LRESULT)::GetSysColorBrush(COLOR_3DFACE) );
}
break;
break;
case WM_SETFOCUS:
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
SHFullScreen( GetForegroundWindow(), SHFS_HIDESIPBUTTON );
case WM_EXITMENULOOP:
if( video && video->hWnd )
vlc_mutex_lock( &p_intf->change_lock );
input_thread_t *p_input = p_intf->p_sys->p_input;
- int dwPos = SendMessage( hwndSlider, TBM_GETPOS, 0, 0 );
+ int dwPos = SendMessage( hwndSlider, TBM_GETPOS, 0, 0 );
if( (int)LOWORD(wp) == SB_THUMBPOSITION ||
(int)LOWORD(wp) == SB_ENDSCROLL )
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
-
+
***********************************************************************/
LRESULT ItemInfoDialog::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
{
switch( msg )
{
- case WM_INITDIALOG:
+ case WM_INITDIALOG:
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN |
SHIDIF_FULLSCREENNOMENUBAR;//SHIDIF_SIZEDLGFULLSCREEN;
rcClient.right - 15 - 10, 10 + 4*( 15 + 10 ) + 5, 15, 15,
hwnd, NULL, hInst, NULL );
- SendMessage( enabled_checkbox, BM_SETCHECK,
+ SendMessage( enabled_checkbox, BM_SETCHECK,
p_item->b_enabled ? BST_CHECKED : BST_UNCHECKED, 0 );
/* Treeview */
break;
case WM_SETFOCUS:
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
SHFullScreen( hwnd, SHFS_HIDESIPBUTTON );
break;
*****************************************************************************/
void ItemInfoDialog::UpdateInfo()
{
- TVITEM tvi = {0};
- TVINSERTSTRUCT tvins = {0};
- HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;
- HTREEITEM hPrevRootItem = NULL;
- HTREEITEM hPrevLev2Item = NULL;
+ TVITEM tvi = {0};
+ TVINSERTSTRUCT tvins = {0};
+ HTREEITEM hPrev = (HTREEITEM)TVI_FIRST;
+ HTREEITEM hPrevRootItem = NULL;
+ HTREEITEM hPrevLev2Item = NULL;
- tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
+ tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
- // Set the text of the item.
+ // Set the text of the item.
tvi.pszText = _FROMMB(p_item->input.psz_name);
tvi.cchTextMax = _tcslen(tvi.pszText);
- // Save the heading level in the item's application-defined data area
+ // Save the heading level in the item's application-defined data area
tvi.lParam = (LPARAM)1; // root level
- tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
- tvins.hParent = TVI_ROOT;
+ tvins.item = tvi;
+ tvins.hInsertAfter = hPrev;
+ tvins.hParent = TVI_ROOT;
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( info_tree, &tvins );
- hPrevRootItem = hPrev;
+ hPrevRootItem = hPrev;
/* Rebuild the tree */
vlc_mutex_lock( &p_item->input.lock );
{
info_category_t *p_cat = p_item->input.pp_categories[i];
- // Set the text of the item.
+ // Set the text of the item.
tvi.pszText = _FROMMB( p_item->input.psz_name );
tvi.cchTextMax = _tcslen( tvi.pszText );
-
+
// Save the heading level in the item's application-defined data area
tvi.lParam = (LPARAM)2; // level 2
- tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
+ tvins.item = tvi;
+ tvins.hInsertAfter = hPrev;
tvins.hParent = hPrevRootItem;
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( info_tree, &tvins );
hPrevLev2Item = hPrev;
{
info_t *p_info = p_cat->pp_infos[j];
- // Set the text of the item.
+ // Set the text of the item.
string szAnsi = (string)p_info->psz_name;
szAnsi += ": ";
szAnsi += p_info->psz_value;
tvi.pszText = (TCHAR *)_FROMMB( szAnsi.c_str() );
tvi.cchTextMax = _tcslen( tvi.pszText );
tvi.lParam = (LPARAM)3; // level 3
- tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
+ tvins.item = tvi;
+ tvins.hInsertAfter = hPrev;
tvins.hParent = hPrevLev2Item;
-
- // Add the item to the tree-view control.
+
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( info_tree, &tvins );
}
/* Delete old menu */
int count = wce_GetMenuItemCount( hMenu );
for( i = 0; i <= count; i++ ) RemoveMenu( hMenu, 0, MF_BYPOSITION );
-
+
if( p_intf->p_sys->p_navig_menu )
MenuItemExt::ClearList( p_intf->p_sys->p_navig_menu );
else p_intf->p_sys->p_navig_menu = new vector<MenuItemExt*>;
* Refresh the menu.
*****************************************************************************/
void RefreshMenu( intf_thread_t *p_intf, vector<MenuItemExt*> *p_menu_list,
- HMENU hMenu , int i_count, char **ppsz_varnames,
+ HMENU hMenu , int i_count, char **ppsz_varnames,
int *pi_objects, int i_start_id )
{
vlc_object_t *p_object;
p_menu_list->push_back( pMenuItemExt );
CheckMenuItem( hMenu, *pi_item_id ,
( val.b_bool ? MF_UNCHECKED : MF_CHECKED ) |
- MF_BYCOMMAND );
+ MF_BYCOMMAND );
break;
default:
}
HMENU CreateChoicesMenu( intf_thread_t *p_intf,
- vector<MenuItemExt*> *p_menu_list, char *psz_var,
+ vector<MenuItemExt*> *p_menu_list, char *psz_var,
vlc_object_t *p_object, int *pi_item_id )
{
MenuItemExt *pMenuItemExt;
if( p_intf->p_sys->p_audio_menu && !p_menuitemext )
for( iter = p_intf->p_sys->p_audio_menu->begin();
- iter != p_intf->p_sys->p_audio_menu->end(); iter++ )
+ iter != p_intf->p_sys->p_audio_menu->end(); iter++ )
if( (*iter)->id == id )
{
p_menuitemext = *iter;
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
***********************************************************************/
LRESULT Messages::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
WS_VISIBLE | WS_CHILD | LVS_REPORT |
LVS_SHOWSELALWAYS | WS_VSCROLL | WS_HSCROLL |
WS_BORDER | LVS_NOCOLUMNHEADER, 0, 0, 0, 0,
- hwnd, NULL, hInst, NULL );
+ hwnd, NULL, hInst, NULL );
ListView_SetExtendedListViewStyle( hListView, LVS_EX_FULLROWSELECT );
LVCOLUMN lv;
break;
case WM_SETFOCUS:
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
SHFullScreen( hwnd, SHFS_HIDESIPBUTTON );
break;
ListView_DeleteAllItems( hListView );
break;
- case IDSAVEAS:
+ case IDSAVEAS:
memset( &(ofn), 0, sizeof(ofn) );
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = _T("");
- ofn.nMaxFile = NMAXFILE;
+ ofn.nMaxFile = NMAXFILE;
ofn.lpstrFilter = _T("Text (*.txt)\0*.txt\0");
ofn.lpstrTitle = _T("Save File As");
- ofn.Flags = OFN_HIDEREADONLY;
+ ofn.Flags = OFN_HIDEREADONLY;
ofn.lpstrDefExt = _T("txt");
if( GetSaveFileName( (LPOPENFILENAME)&ofn ) )
/* Append all messages to log window */
debug = p_sub->p_msg[i_start].psz_module;
-
+
switch( p_sub->p_msg[i_start].i_type )
{
case VLC_MSG_INFO: debug += ": "; break;
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
-
+
***********************************************************************/
LRESULT OpenDialog::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
{
SHINITDLGINFO shidi;
- INITCOMMONCONTROLSEX iccex; // INITCOMMONCONTROLSEX structure
+ INITCOMMONCONTROLSEX iccex; // INITCOMMONCONTROLSEX structure
RECT rcClient;
TC_ITEM tcItem;
case WM_SETFOCUS:
SHFullScreen( hwnd, SHFS_SHOWSIPBUTTON );
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
break;
case WM_COMMAND:
} else if( (HWND)lp == browse_button )
{
OnFileBrowse();
- }
+ }
break;
}
if( HIWORD(wp) == EN_CHANGE )
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
rc.left + 5 + 15 + 5 + net_type_array[0].length + 5,
rc.top + 10, 15, 15, hwnd, NULL, hInst, NULL );
-
+
net_label[2] = CreateWindow( _T("STATIC"), net_type_array[2].psz_text,
WS_CHILD | WS_VISIBLE | SS_LEFT,
rc.left + 5 + 15 + 5 + net_type_array[0].length + 5 + 15 + 5,
char **pp_args = vlc_parse_cmdline( _TOMB(psz_text), &i_args );
ComboBox_AddString( mrl_combo, psz_text );
- if( ComboBox_GetCount( mrl_combo ) > 10 )
+ if( ComboBox_GetCount( mrl_combo ) > 10 )
ComboBox_DeleteString( mrl_combo, 0 );
ComboBox_SetCurSel( mrl_combo, ComboBox_GetCount( mrl_combo ) - 1 );
SetWindowText( p_this->file_combo, _FROMMB(psz_tmp) );
ComboBox_AddString( p_this->file_combo, _FROMMB(psz_tmp) );
- if( ComboBox_GetCount( p_this->file_combo ) > 10 )
+ if( ComboBox_GetCount( p_this->file_combo ) > 10 )
ComboBox_DeleteString( p_this->file_combo, 0 );
p_this->UpdateMRL( FILE_ACCESS );
SWP_NOMOVE | SWP_NOSIZE );
SetWindowPos( hUpdown[0], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
- }
+ }
else if( event == NetRadio2_Event )
{
SetWindowPos( net_addrs_label[1], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
SetWindowPos( hUpdown[1], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
- }
+ }
else if( event == NetRadio3_Event )
{
SetWindowPos( net_addrs_label[2], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
SetWindowPos( net_addrs[2], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
- }
+ }
else if( event == NetRadio4_Event )
{
SetWindowPos( net_addrs_label[3], HWND_TOP, 0, 0, 0, 0,
SetWindowPos( net_addrs[3], HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE );
}
-
+
UpdateMRL( NET_ACCESS );
}
#define LONG2POINT(l, pt) ((pt).x = (SHORT)LOWORD(l), (pt).y = (SHORT)HIWORD(l))
-#define NUMIMAGES 11 // Number of buttons in the toolbar
-#define IMAGEWIDTH 16 // Width of the buttons in the toolbar
-#define IMAGEHEIGHT 16 // Height of the buttons in the toolbar
+#define NUMIMAGES 11 // Number of buttons in the toolbar
+#define IMAGEWIDTH 16 // Width of the buttons in the toolbar
+#define IMAGEHEIGHT 16 // Height of the buttons in the toolbar
#define BUTTONWIDTH 0 // Width of the button images in the toolbar
#define BUTTONHEIGHT 0 // Height of the button images in the toolbar
#define ID_TOOLBAR 2000 // Identifier of the main tool bar
-enum
+enum
{
Infos_Event = 1000,
Up_Event,
PopupPlay_Event,
PopupDel_Event,
PopupEna_Event,
- PopupInfo_Event
+ PopupInfo_Event
};
// Help strings
};
// Toolbar ToolTips
-TCHAR * szToolTips2[] =
+TCHAR * szToolTips2[] =
{
HELP_OPENPL,
HELP_SAVEPL,
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
CreateMenuBar
-PURPOSE:
+PURPOSE:
Creates a menu bar.
***********************************************************************/
static HWND CreateMenuBar( HWND hwnd, HINSTANCE hInst )
}
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
***********************************************************************/
LRESULT Playlist::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
switch( msg )
{
- case WM_INITDIALOG:
+ case WM_INITDIALOG:
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN |
SHIDIF_FULLSCREENNOMENUBAR;//SHIDIF_SIZEDLGFULLSCREEN;
BUTTONWIDTH, BUTTONHEIGHT,
IMAGEWIDTH, IMAGEHEIGHT, sizeof(TBBUTTON) );
if( !hwndTB ) break;
-
+
// Add ToolTips to the toolbar.
SendMessage( hwndTB, TB_SETTOOLTIPS, (WPARAM) NUMIMAGES,
(LPARAM)szToolTips2 );
// Reposition the toolbar.
GetClientRect( hwnd, &rect );
GetWindowRect( hwndTB, &rectTB );
- MoveWindow( hwndTB, rect.left, rect.top - 2, rect.right - rect.left,
+ MoveWindow( hwndTB, rect.left, rect.top - 2, rect.right - rect.left,
MENU_HEIGHT /*rectTB.bottom - rectTB.top */, TRUE);
// random, loop, repeat buttons states
- vlc_value_t val;
+ vlc_value_t val;
p_playlist = (playlist_t *)
vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( !p_playlist ) break;
GetClientRect( hwnd, &rect );
hListView = CreateWindow( WC_LISTVIEW, NULL, WS_VISIBLE | WS_CHILD |
LVS_REPORT | LVS_SHOWSELALWAYS | WS_VSCROLL | WS_HSCROLL,
- rect.left, rect.top + 2*(MENU_HEIGHT+1), rect.right - rect.left,
- rect.bottom - ( rect.top + 2*MENU_HEIGHT) - MENU_HEIGHT,
+ rect.left, rect.top + 2*(MENU_HEIGHT+1), rect.right - rect.left,
+ rect.bottom - ( rect.top + 2*MENU_HEIGHT) - MENU_HEIGHT,
hwnd, NULL, hInst, NULL );
ListView_SetExtendedListViewStyle( hListView, LVS_EX_FULLROWSELECT );
break;
case WM_SETFOCUS:
- SHSipPreference( hwnd, SIP_DOWN );
+ SHSipPreference( hwnd, SIP_DOWN );
SHFullScreen( hwnd, SHFS_HIDESIPBUTTON );
break;
- case WM_COMMAND:
+ case WM_COMMAND:
switch( LOWORD(wp) )
{
case IDOK:
}
else if( ( ((LPNMHDR)lp)->hwndFrom == hListView ) &&
( ((LPNMHDR)lp)->code == GN_CONTEXTMENU ) )
- {
+ {
HandlePopupMenu( hwnd, ((PNMRGINFO)lp)->ptAction );
}
else if( ( ((LPNMHDR)lp)->hwndFrom == hListView ) &&
vlc_object_release(p_playlist);
return CDRF_NEWFONT;
}
-
+
playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist,
(int)lplvcd->nmcd.dwItemSpec );
if( !p_item )
Rebuild();
b_need_update = VLC_FALSE;
}
-
+
playlist_t *p_playlist = (playlist_t *)
vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( p_playlist == NULL ) return;
-
+
/* Update the colour of items */
vlc_mutex_lock( &p_playlist->object_lock );
{
ItemInfoDialog *iteminfo_dialog =
new ItemInfoDialog( p_intf, this, hInst, p_item );
- CreateDialogBox( hwnd, iteminfo_dialog );
+ CreateDialogBox( hwnd, iteminfo_dialog );
UpdateItem( i_item );
delete iteminfo_dialog;
}
void Playlist::OnRandom()
{
vlc_value_t val;
- int bState = SendMessage( hwndTB, TB_GETSTATE, Random_Event, 0 );
+ int bState = SendMessage( hwndTB, TB_GETSTATE, Random_Event, 0 );
val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE;
playlist_t *p_playlist = (playlist_t *)
void Playlist::OnLoop ()
{
vlc_value_t val;
- int bState = SendMessage( hwndTB, TB_GETSTATE, Loop_Event, 0 );
+ int bState = SendMessage( hwndTB, TB_GETSTATE, Loop_Event, 0 );
val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE;
playlist_t *p_playlist = (playlist_t *)
void Playlist::OnRepeat ()
{
vlc_value_t val;
- int bState = SendMessage( hwndTB, TB_GETSTATE, Repeat_Event, 0 );
+ int bState = SendMessage( hwndTB, TB_GETSTATE, Repeat_Event, 0 );
val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE;
playlist_t *p_playlist = (playlist_t *)
/*void CleanChanges();*/
void OnSelectTreeItem( LPNM_TREEVIEW pnmtv, HWND parent, HINSTANCE hInst );
-
+
ConfigTreeData *FindModuleConfig( ConfigTreeData *config_data );
HWND hwndTV;
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
***********************************************************************/
// Get the client area rect to put the panels in
GetClientRect(hwnd, &rcClient);
- /* Create the buttons */
+ /* Create the buttons */
advanced_checkbox =
CreateWindow( _T("BUTTON"), _T("Advanced options"),
WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
TVITEM tvi = {0};
tvi.mask = TVIF_PARAM;
tvi.hItem = TreeView_GetSelection( prefs_tree->hwndTV );
- if( !tvi.hItem ) break;
+ if( !tvi.hItem ) break;
if( !TreeView_GetItem( prefs_tree->hwndTV, &tvi ) ) break;
ConfigTreeData *config_data =
prefs_tree->FindModuleConfig( (ConfigTreeData *)tvi.lParam );
- if( config_data && hwnd == config_data->panel->config_window )
+ if( config_data && hwnd == config_data->panel->config_window )
{
int dy;
RECT rc;
GetWindowRect( hwnd, &rc);
int newvalue = config_data->panel->oldvalue;
- switch ( GET_WM_VSCROLL_CODE(wp,lp) )
+ switch ( GET_WM_VSCROLL_CODE(wp,lp) )
{
case SB_BOTTOM : newvalue = 0; break;
case SB_TOP : newvalue = config_data->panel->maxvalue; break;
ScrollWindowEx( hwnd, 0, dy, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN );
UpdateWindow ( hwnd);
- config_data->panel->oldvalue = newvalue;
+ config_data->panel->oldvalue = newvalue;
}
break;
}
INITCOMMONCONTROLSEX iccex;
RECT rcClient;
- TVITEM tvi = {0};
- TVINSERTSTRUCT tvins = {0};
+ TVITEM tvi = {0};
+ TVINSERTSTRUCT tvins = {0};
HTREEITEM hPrev;
size_t i_capability_count = 0;
config_data->i_object_id = p_module->i_object_id;
/* Add the category to the tree */
- // Set the text of the item.
- tvi.pszText = _FROMMB(p_item->psz_text);
+ // Set the text of the item.
+ tvi.pszText = _FROMMB(p_item->psz_text);
tvi.cchTextMax = _tcslen(tvi.pszText);
tvi.lParam = (long)config_data;
tvins.item = tvi;
- tvins.hInsertAfter = hPrev;
+ tvins.hInsertAfter = hPrev;
tvins.hParent = general_item; //level 3
-
- // Add the item to the tree-view control.
+
+ // Add the item to the tree-view control.
hPrev = (HTREEITEM)TreeView_InsertItem( hwndTV, &tvins );
break;
TreeView_SortChildren( hwndTV, general_item, 0 );
}
-
+
/*
* Build a tree of all the plugins
*/
tvi.cchTextMax = _tcslen(tvi.pszText);
tvi.lParam = (long)config_data;
tvins.item = tvi;
- tvins.hInsertAfter = plugins_item;
+ tvins.hInsertAfter = plugins_item;
tvins.hParent = plugins_item;// level 3
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
capability_item = (HTREEITEM) TreeView_InsertItem( hwndTV, &tvins);
i_capability_count++;
tvi.cchTextMax = _tcslen(tvi.pszText);
tvi.lParam = (long)config_data;
tvins.item = tvi;
- tvins.hInsertAfter = capability_item;
+ tvins.hInsertAfter = capability_item;
tvins.hParent = capability_item;// level 4
- // Add the item to the tree-view control.
+ // Add the item to the tree-view control.
TreeView_InsertItem( hwndTV, &tvins );
}
{
HTREEITEM item2 = TreeView_GetChild( hwndTV, item );
while( item2 != 0 )
- {
+ {
TVITEM tvi = {0};
tvi.mask = TVIF_PARAM;
tvi.hItem = item2;
{
HTREEITEM item2 = TreeView_GetChild( hwndTV, item );
while( item2 != 0 )
- {
+ {
TVITEM tvi = {0};
tvi.mask = TVIF_PARAM;
tvi.hItem = item2;
config_array.push_back( control );
}
while( p_item->i_type != CONFIG_HINT_END && p_item++ );
-
+
GetWindowRect( config_window, &rc);
maxvalue = y_pos - (rc.bottom - rc.top) + 5;
oldvalue = 0;
* RangedIntConfigControl implementation
*****************************************************************************/
RangedIntConfigControl::RangedIntConfigControl( vlc_object_t *p_this,
- module_config_t *p_item,
+ module_config_t *p_item,
HWND parent, HINSTANCE hInst,
int * py_pos )
: ConfigControl( p_this, p_item, parent, hInst )
{
float f_value;
- int i_size = Edit_GetTextLength( textctrl );
+ int i_size = Edit_GetTextLength( textctrl );
TCHAR *psz_string = (TCHAR *)malloc( (i_size + 1) * sizeof(TCHAR) );
Edit_GetText( textctrl, psz_string, i_size + 1 );
/***********************************************************************
-FUNCTION:
+FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
-
+
***********************************************************************/
LRESULT SubsFileDialog::WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
{
{
SHFullScreen( GetForegroundWindow(), SHFS_HIDESIPBUTTON );
OnFileBrowse();
- }
+ }
}
break;
if (! shortname)
shortname = p_intf->p_sys->p_input->input.p_item->psz_name;
else shortname++;
-
- SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
+
+ SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
(WPARAM) 0, (LPARAM)_FROMMB(shortname) );
p_main_interface->TogglePlayButton( PLAYING_S );
p_main_interface->TogglePlayButton( PAUSE_S );
i_old_playing_status = PAUSE_S;
- SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
+ SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
(WPARAM) 0, (LPARAM)(LPCTSTR) TEXT(""));
vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->i_slider_pos =
(int)(SLIDER_MAX_POS * pos.f_float);
- SendMessage( p_main_interface->hwndSlider, TBM_SETPOS,
+ SendMessage( p_main_interface->hwndSlider, TBM_SETPOS,
1, p_intf->p_sys->i_slider_pos );
var_Get( p_intf->p_sys->p_input, "time", &time );
i_seconds = time.i_time / 1000000;
secstotimestr ( psz_time, i_seconds );
- SendMessage( p_main_interface->hwndLabel, WM_SETTEXT,
+ SendMessage( p_main_interface->hwndLabel, WM_SETTEXT,
(WPARAM)1, (LPARAM)_FROMMB(psz_time) );
}
}
_stprintf( psz_text + 2, _T("x%.2f"), 1000.0 / val.i_int );
psz_text[0] = psz_text[1] = _T('\t');
- SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
+ SendMessage( p_main_interface->hwndSB, SB_SETTEXT,
(WPARAM) 1, (LPARAM)(LPCTSTR) psz_text );
i_old_rate = val.i_int;
unsigned int * );
void ReleaseWindow( void * );
int ControlWindow( void *, int, va_list );
-
+
HWND p_child_window; // public because of menu
private:
FUNCTION:
WndProc
-PURPOSE:
+PURPOSE:
Processes messages sent to the main window.
***********************************************************************/
// Check if the application is running.
// If it's running then focus its window and bail out.
- HWND hwndMain = FindWindow( _T("VLC WinCE"), _T("VLC media player") );
+ HWND hwndMain = FindWindow( _T("VLC WinCE"), _T("VLC media player") );
if( hwndMain )
{
SetForegroundWindow( hwndMain );
#include <stdio.h>
#include <string>
#include <vector>
-using namespace std;
+using namespace std;
class CBaseWindow;
class MenuItemExt;
protected:
HWND hwnd_fileinfo; // handle to fileinfo window
- HWND hwndTV; // handle to tree-view control
+ HWND hwndTV; // handle to tree-view control
TCHAR szFileInfoClassName[100]; // Main window class name
TCHAR szFileInfoTitle[100]; // Main window name
/* Constructor */
Timer( intf_thread_t *p_intf, HWND hwnd, Interface *_p_main_interface );
virtual ~Timer();
- void Notify( void );
+ void Notify( void );
private:
intf_thread_t *p_intf;
int wce_GetMenuItemCount( HMENU );
void CreateMenuItem( intf_thread_t *, vector<MenuItemExt*> *, HMENU, char *,
vlc_object_t *, int * );
-HMENU CreateChoicesMenu( intf_thread_t *, vector<MenuItemExt*> *, char *,
+HMENU CreateChoicesMenu( intf_thread_t *, vector<MenuItemExt*> *, char *,
vlc_object_t *, int * );
void OnMenuEvent( intf_thread_t *, int );
/* XPM */
static char * advanced_xpm[] = {
"16 16 106 2",
-" c None",
-". c #AEAEBE",
-"+ c #D7D7E0",
-"@ c #D5D5DD",
-"# c #C2C2CE",
-"$ c #CECED7",
-"% c #FEFEFE",
-"& c #DCDCE2",
-"* c #9F9FB2",
-"= c #C3C3CE",
-"- c #FBFBFB",
-"; c #D0D0D8",
-"> c #86869E",
-", c #8F8FA4",
-"' c #EBEBEE",
-") c #EEEEF2",
-"! c #9595A9",
-"~ c #A2A2B5",
-"{ c #9A9AAE",
-"] c #CACAD5",
-"^ c #F8F8F9",
-"/ c #F7F7F9",
-"( c #9999AC",
-"_ c #A8A8B8",
-": c #E7E7EB",
-"< c #87879F",
-"[ c #6F6F8B",
-"} c #BFBFCB",
-"| c #F1F1F5",
-"1 c #E9E9EE",
-"2 c #EDEDF2",
-"3 c #DBDBE2",
-"4 c #7C7F9B",
-"5 c #818199",
-"6 c #E2E2E7",
-"7 c #D2D2DC",
-"8 c #BDBDCA",
-"9 c #E3E3E8",
-"0 c #E0E0E6",
-"a c #E0E0E4",
-"b c #E1E1E7",
-"c c #C6C6D1",
-"d c #707599",
-"e c #9B9BAE",
-"f c #DEDEE4",
-"g c #D8D8E1",
-"h c #DADAE2",
-"i c #D8D8E0",
-"j c #BEBECB",
-"k c #B2B6CE",
-"l c #B09E8F",
-"m c #CC8B22",
-"n c #808098",
-"o c #AFAFBF",
-"p c #B9B9C8",
-"q c #B3B3C2",
-"r c #BCBCC9",
-"s c #C3C6DA",
-"t c #BDAA9A",
-"u c #CF8925",
-"v c #E68208",
-"w c #DA9217",
-"x c #49496A",
-"y c #565674",
-"z c #4B4B6D",
-"A c #5D6186",
-"B c #B3A196",
-"C c #CF8B28",
-"D c #E98606",
-"E c #FD8606",
-"F c #F38F0B",
-"G c #D59018",
-"H c #B2721C",
-"I c #F19C0D",
-"J c #FEA310",
-"K c #FEA210",
-"L c #F8A410",
-"M c #D28F19",
-"N c #CF8918",
-"O c #FEBC19",
-"P c #FEBE1B",
-"Q c #FEB518",
-"R c #FEA913",
-"S c #FDA610",
-"T c #CF8717",
-"U c #C98819",
-"V c #FECE20",
-"W c #FEAC13",
-"X c #FE8907",
-"Y c #FE8506",
-"Z c #FC980B",
-"` c #B26E16",
-" . c #C27F18",
-".. c #FEA410",
-"+. c #FE9109",
-"@. c #FE8004",
-"#. c #FE9106",
-"$. c #BD7013",
-"%. c #BB650F",
-"&. c #FE9F0D",
-"*. c #FE9808",
-"=. c #ED8108",
-"-. c #915216",
-";. c #994E10",
-">. c #AB5A0D",
-",. c #894914",
+" c None",
+". c #AEAEBE",
+"+ c #D7D7E0",
+"@ c #D5D5DD",
+"# c #C2C2CE",
+"$ c #CECED7",
+"% c #FEFEFE",
+"& c #DCDCE2",
+"* c #9F9FB2",
+"= c #C3C3CE",
+"- c #FBFBFB",
+"; c #D0D0D8",
+"> c #86869E",
+", c #8F8FA4",
+"' c #EBEBEE",
+") c #EEEEF2",
+"! c #9595A9",
+"~ c #A2A2B5",
+"{ c #9A9AAE",
+"] c #CACAD5",
+"^ c #F8F8F9",
+"/ c #F7F7F9",
+"( c #9999AC",
+"_ c #A8A8B8",
+": c #E7E7EB",
+"< c #87879F",
+"[ c #6F6F8B",
+"} c #BFBFCB",
+"| c #F1F1F5",
+"1 c #E9E9EE",
+"2 c #EDEDF2",
+"3 c #DBDBE2",
+"4 c #7C7F9B",
+"5 c #818199",
+"6 c #E2E2E7",
+"7 c #D2D2DC",
+"8 c #BDBDCA",
+"9 c #E3E3E8",
+"0 c #E0E0E6",
+"a c #E0E0E4",
+"b c #E1E1E7",
+"c c #C6C6D1",
+"d c #707599",
+"e c #9B9BAE",
+"f c #DEDEE4",
+"g c #D8D8E1",
+"h c #DADAE2",
+"i c #D8D8E0",
+"j c #BEBECB",
+"k c #B2B6CE",
+"l c #B09E8F",
+"m c #CC8B22",
+"n c #808098",
+"o c #AFAFBF",
+"p c #B9B9C8",
+"q c #B3B3C2",
+"r c #BCBCC9",
+"s c #C3C6DA",
+"t c #BDAA9A",
+"u c #CF8925",
+"v c #E68208",
+"w c #DA9217",
+"x c #49496A",
+"y c #565674",
+"z c #4B4B6D",
+"A c #5D6186",
+"B c #B3A196",
+"C c #CF8B28",
+"D c #E98606",
+"E c #FD8606",
+"F c #F38F0B",
+"G c #D59018",
+"H c #B2721C",
+"I c #F19C0D",
+"J c #FEA310",
+"K c #FEA210",
+"L c #F8A410",
+"M c #D28F19",
+"N c #CF8918",
+"O c #FEBC19",
+"P c #FEBE1B",
+"Q c #FEB518",
+"R c #FEA913",
+"S c #FDA610",
+"T c #CF8717",
+"U c #C98819",
+"V c #FECE20",
+"W c #FEAC13",
+"X c #FE8907",
+"Y c #FE8506",
+"Z c #FC980B",
+"` c #B26E16",
+" . c #C27F18",
+".. c #FEA410",
+"+. c #FE9109",
+"@. c #FE8004",
+"#. c #FE9106",
+"$. c #BD7013",
+"%. c #BB650F",
+"&. c #FE9F0D",
+"*. c #FE9808",
+"=. c #ED8108",
+"-. c #915216",
+";. c #994E10",
+">. c #AB5A0D",
+",. c #894914",
" . + @ # ",
" $ % % & * ",
" = - % ; ",
/* XPM */
static char * audio_xpm[] = {
"16 16 83 1",
-" c None",
-". c #00E000",
-"+ c #00F100",
-"@ c #00F500",
-"# c #00DE00",
-"$ c #00AF00",
-"% c #00AF01",
-"& c #00A402",
-"* c #00A100",
-"= c #00A400",
-"- c #009401",
-"; c #009301",
-"> c #007700",
-", c #007A02",
-"' c #008101",
-") c #00EE00",
-"! c #00F300",
-"~ c #00A701",
-"{ c #009C02",
-"] c #009C00",
-"^ c #007E03",
-"/ c #007401",
-"( c #929292",
-"_ c #9E9E9E",
-": c #A8A8A8",
-"< c #747474",
-"[ c #737373",
-"} c #6C6C6C",
-"| c #666666",
-"1 c #787878",
-"2 c #8F8F8F",
-"3 c #A7A7A7",
-"4 c #B6B6B7",
-"5 c #6D6D6D",
-"6 c #626262",
-"7 c #646464",
-"8 c #848484",
-"9 c #969696",
-"0 c #B9B9B9",
-"a c #C6C6C6",
-"b c #A6A6AA",
-"c c #6A6A6A",
-"d c #7A7A7A",
-"e c #B2B2B2",
-"f c #BFBFBF",
-"g c #BABABA",
-"h c #B6B6B6",
-"i c #B4B4B4",
-"j c #D7D7D7",
-"k c #C3C3C4",
-"l c #6B6B6B",
-"m c #636363",
-"n c #606060",
-"o c #575757",
-"p c #555555",
-"q c #535353",
-"r c #888888",
-"s c #D3D3D3",
-"t c #E1E1E1",
-"u c #B3B3B4",
-"v c #383838",
-"w c #707070",
-"x c #585858",
-"y c #3C3C3C",
-"z c #3B3B3B",
-"A c #494949",
-"B c #DEDEDE",
-"C c #C4C4C4",
-"D c #57575D",
-"E c #242424",
-"F c #7C7C7C",
-"G c #949494",
-"H c #A2A2A2",
-"I c #BCBCBC",
-"J c #8B8B8D",
-"K c #444444",
-"L c #414141",
-"M c #464646",
-"N c #5D5D5D",
-"O c #7B7B7B",
-"P c #4A4A4F",
-"Q c #4A4A4B",
-"R c #515153",
+" c None",
+". c #00E000",
+"+ c #00F100",
+"@ c #00F500",
+"# c #00DE00",
+"$ c #00AF00",
+"% c #00AF01",
+"& c #00A402",
+"* c #00A100",
+"= c #00A400",
+"- c #009401",
+"; c #009301",
+"> c #007700",
+", c #007A02",
+"' c #008101",
+") c #00EE00",
+"! c #00F300",
+"~ c #00A701",
+"{ c #009C02",
+"] c #009C00",
+"^ c #007E03",
+"/ c #007401",
+"( c #929292",
+"_ c #9E9E9E",
+": c #A8A8A8",
+"< c #747474",
+"[ c #737373",
+"} c #6C6C6C",
+"| c #666666",
+"1 c #787878",
+"2 c #8F8F8F",
+"3 c #A7A7A7",
+"4 c #B6B6B7",
+"5 c #6D6D6D",
+"6 c #626262",
+"7 c #646464",
+"8 c #848484",
+"9 c #969696",
+"0 c #B9B9B9",
+"a c #C6C6C6",
+"b c #A6A6AA",
+"c c #6A6A6A",
+"d c #7A7A7A",
+"e c #B2B2B2",
+"f c #BFBFBF",
+"g c #BABABA",
+"h c #B6B6B6",
+"i c #B4B4B4",
+"j c #D7D7D7",
+"k c #C3C3C4",
+"l c #6B6B6B",
+"m c #636363",
+"n c #606060",
+"o c #575757",
+"p c #555555",
+"q c #535353",
+"r c #888888",
+"s c #D3D3D3",
+"t c #E1E1E1",
+"u c #B3B3B4",
+"v c #383838",
+"w c #707070",
+"x c #585858",
+"y c #3C3C3C",
+"z c #3B3B3B",
+"A c #494949",
+"B c #DEDEDE",
+"C c #C4C4C4",
+"D c #57575D",
+"E c #242424",
+"F c #7C7C7C",
+"G c #949494",
+"H c #A2A2A2",
+"I c #BCBCBC",
+"J c #8B8B8D",
+"K c #444444",
+"L c #414141",
+"M c #464646",
+"N c #5D5D5D",
+"O c #7B7B7B",
+"P c #4A4A4F",
+"Q c #4A4A4B",
+"R c #515153",
" .+@# ",
" $%& *=- ",
" ; >, ",
/* XPM */
static char * codec_xpm[] = {
"16 16 132 2",
-" c None",
-". c #131313",
-"+ c #464646",
-"@ c #E0E0E0",
-"# c #656565",
-"$ c #3D3D3D",
-"% c #E4E9EC",
-"& c #FBFFFF",
-"* c #E8E9EB",
-"= c #595858",
-"- c #393A3B",
-"; c #D1DBE6",
-"> c #ECF8FF",
-", c #E8F4FF",
-"' c #D5DAE1",
-") c #C1C1C1",
-"! c #4F4E4D",
-"~ c #0A0A0A",
-"{ c #909295",
-"] c #D8EAFD",
-"^ c #DFF1FF",
-"/ c #C0CAD6",
-"( c #C6CCD4",
-"_ c #E5ECF1",
-": c #828385",
-"< c #080808",
-"[ c #989898",
-"} c #5B5B5B",
-"| c #2F2E2D",
-"1 c #898E94",
-"2 c #ADB8C6",
-"3 c #B6BDC7",
-"4 c #E6F1FD",
-"5 c #F6FFFF",
-"6 c #8D96A2",
-"7 c #121213",
-"8 c #646464",
-"9 c #B6B6B6",
-"0 c #898989",
-"a c #767676",
-"b c #3F3F3F",
-"c c #292827",
-"d c #6D6E6F",
-"e c #D4E0F0",
-"f c #F1FFFF",
-"g c #B9C4D0",
-"h c #868E98",
-"i c #B0BBC6",
-"j c #46484B",
-"k c #1E1E1D",
-"l c #C7C7C7",
-"m c #8D8D8D",
-"n c #818181",
-"o c #A1A1A1",
-"p c #5E5E5E",
-"q c #343433",
-"r c #777A7F",
-"s c #B3BDC6",
-"t c #959AA2",
-"u c #DEE9F2",
-"v c #F7FFFF",
-"w c #B8C2CE",
-"x c #363636",
-"y c #030303",
-"z c #8F8F8F",
-"A c #BDBDBD",
-"B c #999999",
-"C c #AAAAAA",
-"D c #E1E1E1",
-"E c #F6F6F6",
-"F c #EBEBEB",
-"G c #7E7E7E",
-"H c #3F3E3E",
-"I c #6E6F6F",
-"J c #D9DFE7",
-"K c #FDFFFF",
-"L c #EDF4F9",
-"M c #7A7D81",
-"N c #0C0B0B",
-"O c #A7A7A7",
-"P c #C4C4C4",
-"Q c #B5B5B5",
-"R c #C2C2C2",
-"S c #D6D6D6",
-"T c #D5D5D5",
-"U c #CDCDCD",
-"V c #C5C5C5",
-"W c #727272",
-"X c #5D5C5C",
-"Y c #AEAFB0",
-"Z c #F0F1F1",
-"` c #929394",
-" . c #0B0B0A",
-".. c #868686",
-"+. c #D9D9D9",
-"@. c #D3D3D3",
-"#. c #B8B8B8",
-"$. c #9B9B9B",
-"%. c #969696",
-"&. c #A0A0A0",
-"*. c #D1D1D1",
-"=. c #919192",
-"-. c #111111",
-";. c #3E3E3E",
-">. c #BEBEBE",
-",. c #EFEFEF",
-"'. c #E7E7E7",
-"). c #B0B0B0",
-"!. c #CFCFCF",
-"~. c #F4F4F4",
-"{. c #DFDFDF",
-"]. c #5D5D5D",
-"^. c #0C0C0C",
-"/. c #585858",
-"(. c #FFFFFF",
-"_. c #FDFDFD",
-":. c #FBFBFB",
-"<. c #8E8E8E",
-"[. c #252525",
-"}. c #424242",
-"|. c #7F7F7F",
-"1. c #A8A8A8",
-"2. c #939393",
-"3. c #6D6D6D",
-"4. c #191919",
-"5. c #4C4C4C",
-"6. c #6B6B6B",
-"7. c #8B8B8B",
-"8. c #ADADAD",
-"9. c #B4B4B4",
-"0. c #333333",
-"a. c #6C6C6C",
+" c None",
+". c #131313",
+"+ c #464646",
+"@ c #E0E0E0",
+"# c #656565",
+"$ c #3D3D3D",
+"% c #E4E9EC",
+"& c #FBFFFF",
+"* c #E8E9EB",
+"= c #595858",
+"- c #393A3B",
+"; c #D1DBE6",
+"> c #ECF8FF",
+", c #E8F4FF",
+"' c #D5DAE1",
+") c #C1C1C1",
+"! c #4F4E4D",
+"~ c #0A0A0A",
+"{ c #909295",
+"] c #D8EAFD",
+"^ c #DFF1FF",
+"/ c #C0CAD6",
+"( c #C6CCD4",
+"_ c #E5ECF1",
+": c #828385",
+"< c #080808",
+"[ c #989898",
+"} c #5B5B5B",
+"| c #2F2E2D",
+"1 c #898E94",
+"2 c #ADB8C6",
+"3 c #B6BDC7",
+"4 c #E6F1FD",
+"5 c #F6FFFF",
+"6 c #8D96A2",
+"7 c #121213",
+"8 c #646464",
+"9 c #B6B6B6",
+"0 c #898989",
+"a c #767676",
+"b c #3F3F3F",
+"c c #292827",
+"d c #6D6E6F",
+"e c #D4E0F0",
+"f c #F1FFFF",
+"g c #B9C4D0",
+"h c #868E98",
+"i c #B0BBC6",
+"j c #46484B",
+"k c #1E1E1D",
+"l c #C7C7C7",
+"m c #8D8D8D",
+"n c #818181",
+"o c #A1A1A1",
+"p c #5E5E5E",
+"q c #343433",
+"r c #777A7F",
+"s c #B3BDC6",
+"t c #959AA2",
+"u c #DEE9F2",
+"v c #F7FFFF",
+"w c #B8C2CE",
+"x c #363636",
+"y c #030303",
+"z c #8F8F8F",
+"A c #BDBDBD",
+"B c #999999",
+"C c #AAAAAA",
+"D c #E1E1E1",
+"E c #F6F6F6",
+"F c #EBEBEB",
+"G c #7E7E7E",
+"H c #3F3E3E",
+"I c #6E6F6F",
+"J c #D9DFE7",
+"K c #FDFFFF",
+"L c #EDF4F9",
+"M c #7A7D81",
+"N c #0C0B0B",
+"O c #A7A7A7",
+"P c #C4C4C4",
+"Q c #B5B5B5",
+"R c #C2C2C2",
+"S c #D6D6D6",
+"T c #D5D5D5",
+"U c #CDCDCD",
+"V c #C5C5C5",
+"W c #727272",
+"X c #5D5C5C",
+"Y c #AEAFB0",
+"Z c #F0F1F1",
+"` c #929394",
+" . c #0B0B0A",
+".. c #868686",
+"+. c #D9D9D9",
+"@. c #D3D3D3",
+"#. c #B8B8B8",
+"$. c #9B9B9B",
+"%. c #969696",
+"&. c #A0A0A0",
+"*. c #D1D1D1",
+"=. c #919192",
+"-. c #111111",
+";. c #3E3E3E",
+">. c #BEBEBE",
+",. c #EFEFEF",
+"'. c #E7E7E7",
+"). c #B0B0B0",
+"!. c #CFCFCF",
+"~. c #F4F4F4",
+"{. c #DFDFDF",
+"]. c #5D5D5D",
+"^. c #0C0C0C",
+"/. c #585858",
+"(. c #FFFFFF",
+"_. c #FDFDFD",
+":. c #FBFBFB",
+"<. c #8E8E8E",
+"[. c #252525",
+"}. c #424242",
+"|. c #7F7F7F",
+"1. c #A8A8A8",
+"2. c #939393",
+"3. c #6D6D6D",
+"4. c #191919",
+"5. c #4C4C4C",
+"6. c #6B6B6B",
+"7. c #8B8B8B",
+"8. c #ADADAD",
+"9. c #B4B4B4",
+"0. c #333333",
+"a. c #6C6C6C",
" . ",
" + @ # ",
" $ % & * = ",
/* XPM */\r
static char * edit_xpm[] = {\r
"16 16 44 1",\r
-" g None",\r
-". g #999999",\r
-"+ g #E9E9E9",\r
-"@ g #898989",\r
-"# g #B6B6B6",\r
-"$ g #606060",\r
-"% g #EBEBEB",\r
-"& g #BCBCBC",\r
-"* g #B8B8B8",\r
-"= g #E7E7E7",\r
-"- g #B1B1B1",\r
-"; g #FFFFFF",\r
-"> g #ECECEC",\r
-", g #D3D3D3",\r
-"' g #E8E8E8",\r
-") g #B0B0B0",\r
-"! g #878787",\r
-"~ g #DBDBDB",\r
-"{ g #CCCCCC",\r
-"] g #B7B7B7",\r
-"^ g #8A8A8A",\r
-"/ g #AEAEAE",\r
-"( g #E4E4E4",\r
-"_ g #ABABAB",\r
-": g #A5A5A5",\r
-"< g #717171",\r
-"[ g #CBCBCB",\r
-"} g #757575",\r
-"| g #5E5E5E",\r
-"1 g #8F8F8F",\r
-"2 g #868686",\r
-"3 g #424242",\r
-"4 g #595959",\r
-"5 g #9D9D9D",\r
-"6 g #D6D6D6",\r
-"7 g #C4C4C4",\r
-"8 g #000000",\r
-"9 g #636363",\r
-"0 g #8C8C8C",\r
-"a g #CACACA",\r
-"b g #DADADA",\r
-"c g #B2B2B2",\r
-"d g #EAEAEA",\r
-"e g #EEEEEE",\r
+" g None",\r
+". g #999999",\r
+"+ g #E9E9E9",\r
+"@ g #898989",\r
+"# g #B6B6B6",\r
+"$ g #606060",\r
+"% g #EBEBEB",\r
+"& g #BCBCBC",\r
+"* g #B8B8B8",\r
+"= g #E7E7E7",\r
+"- g #B1B1B1",\r
+"; g #FFFFFF",\r
+"> g #ECECEC",\r
+", g #D3D3D3",\r
+"' g #E8E8E8",\r
+") g #B0B0B0",\r
+"! g #878787",\r
+"~ g #DBDBDB",\r
+"{ g #CCCCCC",\r
+"] g #B7B7B7",\r
+"^ g #8A8A8A",\r
+"/ g #AEAEAE",\r
+"( g #E4E4E4",\r
+"_ g #ABABAB",\r
+": g #A5A5A5",\r
+"< g #717171",\r
+"[ g #CBCBCB",\r
+"} g #757575",\r
+"| g #5E5E5E",\r
+"1 g #8F8F8F",\r
+"2 g #868686",\r
+"3 g #424242",\r
+"4 g #595959",\r
+"5 g #9D9D9D",\r
+"6 g #D6D6D6",\r
+"7 g #C4C4C4",\r
+"8 g #000000",\r
+"9 g #636363",\r
+"0 g #8C8C8C",\r
+"a g #CACACA",\r
+"b g #DADADA",\r
+"c g #B2B2B2",\r
+"d g #EAEAEA",\r
+"e g #EEEEEE",\r
" ",\r
" . . . . . ",\r
" .+.+.+.+.+. ",\r
/* XPM */
static char * eject_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * fast_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * intf_xpm[] = {
"16 16 216 2",
-" c None",
-". c #715F39",
-"+ c #DDA434",
-"@ c #CD8A01",
-"# c #CC8A04",
-"$ c #B79042",
-"% c #D49411",
-"& c #D18D03",
-"* c #B27D11",
-"= c #ECECEC",
-"- c #FFFDFA",
-"; c #FEFBF8",
-"> c #FDFAF7",
-", c #FCFAF7",
-"' c #FCF9F6",
-") c #FBF8F6",
-"! c #F8F8FA",
-"~ c #BAAB8C",
-"{ c #D09824",
-"] c #CD8B02",
-"^ c #C88600",
-"/ c #987D48",
-"( c #CFD1D6",
-"_ c #B0B0AF",
-": c #FCFCFD",
-"< c #BAC7DC",
-"[ c #C0D1E6",
-"} c #C5D6E8",
-"| c #C9DAEB",
-"1 c #CDDEED",
-"2 c #CFE3F3",
-"3 c #C0CCD7",
-"4 c #BE9648",
-"5 c #D3910C",
-"6 c #CD8B03",
-"7 c #A06E0A",
-"8 c #868A90",
-"9 c #FFFFFF",
-"0 c #797979",
-"a c #B4B4B2",
-"b c #E9ECF2",
-"c c #2962B7",
-"d c #3C7ED0",
-"e c #4D8ED9",
-"f c #5B9DE2",
-"g c #66A9EA",
-"h c #64A8ED",
-"i c #868978",
-"j c #D4961A",
-"k c #CD8A02",
-"l c #C08205",
-"m c #5D5844",
-"n c #4977C2",
-"o c #7B7B7A",
-"p c #B5B4B1",
-"q c #ECEFF5",
-"r c #3670C4",
-"s c #3A7DD1",
-"t c #4A8DDA",
-"u c #5397E1",
-"v c #60A5EC",
-"w c #92ABC7",
-"x c #A88A4F",
-"y c #CF8E09",
-"z c #C88602",
-"A c #8E691F",
-"B c #295A9D",
-"C c #5287D4",
-"D c #F4F5F7",
-"E c #797978",
-"F c #B6B6B5",
-"G c #EDF0F5",
-"H c #2E68BD",
-"I c #3577CE",
-"J c #3F81D4",
-"K c #619BDE",
-"L c #639CDB",
-"M c #91A0B1",
-"N c #CFCDCB",
-"O c #A4916A",
-"P c #9F7012",
-"Q c #455C77",
-"R c #2268CA",
-"S c #4D7FCA",
-"T c #E9E9EB",
-"U c #787676",
-"V c #BAB9B6",
-"W c #EEF1F7",
-"X c #1850AF",
-"Y c #2363C2",
-"Z c #3878CE",
-"` c #4B8DDA",
-" . c #638DBE",
-".. c #C2C3C3",
-"+. c #C6C5C5",
-"@. c #8E8D8E",
-"#. c #4E6277",
-"$. c #2E6DC3",
-"%. c #1A5DC0",
-"&. c #3E6EBF",
-"*. c #E7E8E9",
-"=. c #797876",
-"-. c #BBBBB9",
-";. c #F0F3F9",
-">. c #1048AA",
-",. c #033FAB",
-"'. c #2465C3",
-"). c #4F96E0",
-"!. c #97A9BD",
-"~. c #CFCBC6",
-"{. c #949290",
-"]. c #6B7E8C",
-"^. c #6EA5D8",
-"/. c #2766C3",
-"(. c #023CAA",
-"_. c #3766BA",
-":. c #E5E6E7",
-"<. c #797976",
-"[. c #BDBBBA",
-"}. c #F1F4FA",
-"|. c #164EAF",
-"1. c #0948B1",
-"2. c #114FB2",
-"3. c #365885",
-"4. c #767472",
-"5. c #949495",
-"6. c #566E8D",
-"7. c #7DB0DB",
-"8. c #70AAE6",
-"9. c #0D4BB2",
-"0. c #0039A8",
-"a. c #3868BA",
-"b. c #E3E4E5",
-"c. c #BEBDBB",
-"d. c #F2F5FC",
-"e. c #215AB6",
-"f. c #1459C1",
-"g. c #21477E",
-"h. c #95918B",
-"i. c #17130F",
-"j. c #536774",
-"k. c #7FB4E5",
-"l. c #76B1E9",
-"m. c #2F6DC5",
-"n. c #1957BA",
-"o. c #0747B1",
-"p. c #3C6CBD",
-"q. c #E0E0E2",
-"r. c #BFBEBD",
-"s. c #F3F6FC",
-"t. c #2965BF",
-"u. c #1D5CB8",
-"v. c #344256",
-"w. c #3A352F",
-"x. c #020407",
-"y. c #789DBB",
-"z. c #5694E0",
-"A. c #397ACE",
-"B. c #3070C9",
-"C. c #2564C2",
-"D. c #1152B8",
-"E. c #4272C2",
-"F. c #DDDDDF",
-"G. c #C0BFBE",
-"H. c #F1F4FB",
-"I. c #346EC2",
-"J. c #4067A3",
-"K. c #29364B",
-"L. c #09182B",
-"M. c #336298",
-"N. c #4F93E1",
-"O. c #498DDC",
-"P. c #4386D8",
-"Q. c #3B7DD3",
-"R. c #2F71CB",
-"S. c #195CC0",
-"T. c #4879C8",
-"U. c #D9DADB",
-"V. c #C2C1C1",
-"W. c #FBFCFE",
-"X. c #BAC9E2",
-"Y. c #BFCADD",
-"Z. c #AFBBCB",
-"`. c #B2C6DE",
-" + c #BAD4F1",
-".+ c #B7CFE9",
-"++ c #B4CCE7",
-"@+ c #B0C8E3",
-"#+ c #ABC2DF",
-"$+ c #A4BBDA",
-"%+ c #9BB2D5",
-"&+ c #A8B9D5",
-"*+ c #D7D7D7",
-"=+ c #7B7B7B",
-"-+ c #848484",
-";+ c #FFFFFE",
-">+ c #FDFBF9",
-",+ c #F8F6F3",
-"'+ c #F3F0EC",
-")+ c #EFEBE7",
-"!+ c #EBE7E3",
-"~+ c #E8E5E0",
-"{+ c #E4E1DD",
-"]+ c #E1DED9",
-"^+ c #DEDBD6",
-"/+ c #D8D6D2",
-"(+ c #D3D3D3",
-"_+ c #535353",
-":+ c #4F4F4F",
-"<+ c #5B5B5B",
-"[+ c #5A5A5A",
-"}+ c #595959",
-"|+ c #575757",
-"1+ c #555555",
-"2+ c #545454",
-"3+ c #414141",
+" c None",
+". c #715F39",
+"+ c #DDA434",
+"@ c #CD8A01",
+"# c #CC8A04",
+"$ c #B79042",
+"% c #D49411",
+"& c #D18D03",
+"* c #B27D11",
+"= c #ECECEC",
+"- c #FFFDFA",
+"; c #FEFBF8",
+"> c #FDFAF7",
+", c #FCFAF7",
+"' c #FCF9F6",
+") c #FBF8F6",
+"! c #F8F8FA",
+"~ c #BAAB8C",
+"{ c #D09824",
+"] c #CD8B02",
+"^ c #C88600",
+"/ c #987D48",
+"( c #CFD1D6",
+"_ c #B0B0AF",
+": c #FCFCFD",
+"< c #BAC7DC",
+"[ c #C0D1E6",
+"} c #C5D6E8",
+"| c #C9DAEB",
+"1 c #CDDEED",
+"2 c #CFE3F3",
+"3 c #C0CCD7",
+"4 c #BE9648",
+"5 c #D3910C",
+"6 c #CD8B03",
+"7 c #A06E0A",
+"8 c #868A90",
+"9 c #FFFFFF",
+"0 c #797979",
+"a c #B4B4B2",
+"b c #E9ECF2",
+"c c #2962B7",
+"d c #3C7ED0",
+"e c #4D8ED9",
+"f c #5B9DE2",
+"g c #66A9EA",
+"h c #64A8ED",
+"i c #868978",
+"j c #D4961A",
+"k c #CD8A02",
+"l c #C08205",
+"m c #5D5844",
+"n c #4977C2",
+"o c #7B7B7A",
+"p c #B5B4B1",
+"q c #ECEFF5",
+"r c #3670C4",
+"s c #3A7DD1",
+"t c #4A8DDA",
+"u c #5397E1",
+"v c #60A5EC",
+"w c #92ABC7",
+"x c #A88A4F",
+"y c #CF8E09",
+"z c #C88602",
+"A c #8E691F",
+"B c #295A9D",
+"C c #5287D4",
+"D c #F4F5F7",
+"E c #797978",
+"F c #B6B6B5",
+"G c #EDF0F5",
+"H c #2E68BD",
+"I c #3577CE",
+"J c #3F81D4",
+"K c #619BDE",
+"L c #639CDB",
+"M c #91A0B1",
+"N c #CFCDCB",
+"O c #A4916A",
+"P c #9F7012",
+"Q c #455C77",
+"R c #2268CA",
+"S c #4D7FCA",
+"T c #E9E9EB",
+"U c #787676",
+"V c #BAB9B6",
+"W c #EEF1F7",
+"X c #1850AF",
+"Y c #2363C2",
+"Z c #3878CE",
+"` c #4B8DDA",
+" . c #638DBE",
+".. c #C2C3C3",
+"+. c #C6C5C5",
+"@. c #8E8D8E",
+"#. c #4E6277",
+"$. c #2E6DC3",
+"%. c #1A5DC0",
+"&. c #3E6EBF",
+"*. c #E7E8E9",
+"=. c #797876",
+"-. c #BBBBB9",
+";. c #F0F3F9",
+">. c #1048AA",
+",. c #033FAB",
+"'. c #2465C3",
+"). c #4F96E0",
+"!. c #97A9BD",
+"~. c #CFCBC6",
+"{. c #949290",
+"]. c #6B7E8C",
+"^. c #6EA5D8",
+"/. c #2766C3",
+"(. c #023CAA",
+"_. c #3766BA",
+":. c #E5E6E7",
+"<. c #797976",
+"[. c #BDBBBA",
+"}. c #F1F4FA",
+"|. c #164EAF",
+"1. c #0948B1",
+"2. c #114FB2",
+"3. c #365885",
+"4. c #767472",
+"5. c #949495",
+"6. c #566E8D",
+"7. c #7DB0DB",
+"8. c #70AAE6",
+"9. c #0D4BB2",
+"0. c #0039A8",
+"a. c #3868BA",
+"b. c #E3E4E5",
+"c. c #BEBDBB",
+"d. c #F2F5FC",
+"e. c #215AB6",
+"f. c #1459C1",
+"g. c #21477E",
+"h. c #95918B",
+"i. c #17130F",
+"j. c #536774",
+"k. c #7FB4E5",
+"l. c #76B1E9",
+"m. c #2F6DC5",
+"n. c #1957BA",
+"o. c #0747B1",
+"p. c #3C6CBD",
+"q. c #E0E0E2",
+"r. c #BFBEBD",
+"s. c #F3F6FC",
+"t. c #2965BF",
+"u. c #1D5CB8",
+"v. c #344256",
+"w. c #3A352F",
+"x. c #020407",
+"y. c #789DBB",
+"z. c #5694E0",
+"A. c #397ACE",
+"B. c #3070C9",
+"C. c #2564C2",
+"D. c #1152B8",
+"E. c #4272C2",
+"F. c #DDDDDF",
+"G. c #C0BFBE",
+"H. c #F1F4FB",
+"I. c #346EC2",
+"J. c #4067A3",
+"K. c #29364B",
+"L. c #09182B",
+"M. c #336298",
+"N. c #4F93E1",
+"O. c #498DDC",
+"P. c #4386D8",
+"Q. c #3B7DD3",
+"R. c #2F71CB",
+"S. c #195CC0",
+"T. c #4879C8",
+"U. c #D9DADB",
+"V. c #C2C1C1",
+"W. c #FBFCFE",
+"X. c #BAC9E2",
+"Y. c #BFCADD",
+"Z. c #AFBBCB",
+"`. c #B2C6DE",
+" + c #BAD4F1",
+".+ c #B7CFE9",
+"++ c #B4CCE7",
+"@+ c #B0C8E3",
+"#+ c #ABC2DF",
+"$+ c #A4BBDA",
+"%+ c #9BB2D5",
+"&+ c #A8B9D5",
+"*+ c #D7D7D7",
+"=+ c #7B7B7B",
+"-+ c #848484",
+";+ c #FFFFFE",
+">+ c #FDFBF9",
+",+ c #F8F6F3",
+"'+ c #F3F0EC",
+")+ c #EFEBE7",
+"!+ c #EBE7E3",
+"~+ c #E8E5E0",
+"{+ c #E4E1DD",
+"]+ c #E1DED9",
+"^+ c #DEDBD6",
+"/+ c #D8D6D2",
+"(+ c #D3D3D3",
+"_+ c #535353",
+":+ c #4F4F4F",
+"<+ c #5B5B5B",
+"[+ c #5A5A5A",
+"}+ c #595959",
+"|+ c #575757",
+"1+ c #555555",
+"2+ c #545454",
+"3+ c #414141",
" . + @ # ",
" $ % & * ",
" = - ; > , ' ) ! ~ { ] ^ / ( ",
/* XPM */
static char * loop_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ........... ",
/* XPM */
static char * next_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * pause_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * play_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"***..***********",
/* XPM */
static char * playlist_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * playlist_small_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ",
/* XPM */
static char * prev_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * repeat_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ........... ",
/* XPM */
static char * shuffle_on_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" . ",
" . ",
/* XPM */
static char * slow_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * speaker_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"*********..*****",
"********#=.=****",
"*******#>.******",
/* XPM */
static char * speaker_mute_xpm[] = {
"16 16 50 1",
-" c None",
-". c #000000",
-"+ c #FF0000",
-"@ c #FB0400",
-"# c #E81717",
-"$ c #880000",
-"% c #8D7272",
-"& c #966900",
-"* c #FFF700",
-"= c #837B7B",
-"- c #966969",
-"; c #FF1B1B",
-"> c #DA2400",
-", c #FFFF00",
-"' c #FFFFFF",
-") c #FFF3F3",
-"! c #D22D2D",
-"~ c #808000",
-"{ c #B64800",
-"] c #FF2424",
-"^ c #FFDF00",
-"/ c #808080",
-"( c #A55900",
-"_ c #FF9797",
-": c #FF0300",
-"< c #FF3939",
-"[ c #230000",
-"} c #867800",
-"| c #FF9999",
-"1 c #FF0900",
-"2 c #DD0000",
-"3 c #FF9292",
-"4 c #D82727",
-"5 c #807E7E",
-"6 c #4C0000",
-"7 c #650000",
-"8 c #DB0000",
-"9 c #FF6D6D",
-"0 c #FF5454",
-"a c #FF6565",
-"b c #817D7D",
-"c c #FFFBFB",
-"d c #FF7474",
-"e c #E11D1D",
-"f c #2D0000",
-"g c #837B00",
-"h c #FF8A8A",
-"i c #FA0404",
-"j c #F70000",
-"k c #E81700",
+" c None",
+". c #000000",
+"+ c #FF0000",
+"@ c #FB0400",
+"# c #E81717",
+"$ c #880000",
+"% c #8D7272",
+"& c #966900",
+"* c #FFF700",
+"= c #837B7B",
+"- c #966969",
+"; c #FF1B1B",
+"> c #DA2400",
+", c #FFFF00",
+"' c #FFFFFF",
+") c #FFF3F3",
+"! c #D22D2D",
+"~ c #808000",
+"{ c #B64800",
+"] c #FF2424",
+"^ c #FFDF00",
+"/ c #808080",
+"( c #A55900",
+"_ c #FF9797",
+": c #FF0300",
+"< c #FF3939",
+"[ c #230000",
+"} c #867800",
+"| c #FF9999",
+"1 c #FF0900",
+"2 c #DD0000",
+"3 c #FF9292",
+"4 c #D82727",
+"5 c #807E7E",
+"6 c #4C0000",
+"7 c #650000",
+"8 c #DB0000",
+"9 c #FF6D6D",
+"0 c #FF5454",
+"a c #FF6565",
+"b c #817D7D",
+"c c #FFFBFB",
+"d c #FF7474",
+"e c #E11D1D",
+"f c #2D0000",
+"g c #837B00",
+"h c #FF8A8A",
+"i c #FA0404",
+"j c #F70000",
+"k c #E81700",
" .. ",
" +++@#$% ",
" ++++++++ ",
/* XPM */
static char * stop_xpm[] = {
"16 16 17 1",
-"* c None",
-". c #000000",
-"+ c #800000",
-"@ c #008000",
-"# c #808000",
-"$ c #000080",
-"% c #800080",
-"& c #008080",
-" c #C0C0C0",
-"= c #808080",
-"- c #FF0000",
-"; c #00FF00",
-"> c #FFFF00",
-", c #0000FF",
-"' c #FF00FF",
-") c #00FFFF",
-"! c #FFFFFF",
+"* c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+" c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
"****************",
"****************",
"****************",
/* XPM */
static char * trash_xpm[] = {
"16 16 88 1",
-" c None",
-". c #2C2C2C",
-"+ c #6E6E6E",
-"@ c #555555",
-"# c #161616",
-"$ c #626154",
-"% c #6B6A5A",
-"& c #A1A095",
-"* c #9B9B98",
-"= c #A4A49D",
-"- c #A5A495",
-"; c #5C5C50",
-"> c #575649",
-", c #616057",
-"' c #D0CEBA",
-") c #CCCBBD",
-"! c #85847F",
-"~ c #4C4C48",
-"{ c #3D3C34",
-"] c #7E7C6B",
-"^ c #B2B09E",
-"/ c #B2B097",
-"( c #4D4C41",
-"_ c #616059",
-": c #E0E0DB",
-"< c #EBEBE4",
-"[ c #D8D7CD",
-"} c #CCCBBC",
-"| c #C0BEA8",
-"1 c #B8B69D",
-"2 c #C5C4AF",
-"3 c #AAA996",
-"4 c #414037",
-"5 c #4D4D42",
-"6 c #AAA99B",
-"7 c #D6D5CE",
-"8 c #EAE9E5",
-"9 c #E2E1DE",
-"0 c #D8D8CF",
-"a c #BCBBAE",
-"b c #9C9A89",
-"c c #737262",
-"d c #34332D",
-"e c #000000",
-"f c #41413C",
-"g c #888882",
-"h c #B3B2A8",
-"i c #BCBCAE",
-"j c #A3A18A",
-"k c #8F8D7A",
-"l c #606056",
-"m c #353530",
-"n c #676758",
-"o c #59594F",
-"p c #52524D",
-"q c #3D3D38",
-"r c #2A2A23",
-"s c #2E2E26",
-"t c #35352C",
-"u c #3D3D32",
-"v c #707060",
-"w c #919184",
-"x c #A0A098",
-"y c #707066",
-"z c #646458",
-"A c #606051",
-"B c #4D4D40",
-"C c #4E4E40",
-"D c #959587",
-"E c #B9B9AC",
-"F c #8E8E80",
-"G c #787868",
-"H c #7A7A67",
-"I c #565648",
-"J c #6E6E5D",
-"K c #939385",
-"L c #545445",
-"M c #46463C",
-"N c #868678",
-"O c #B2B2A5",
-"P c #8F8F82",
-"Q c #787865",
-"R c #515143",
-"S c #39392F",
-"T c #2F2F29",
-"U c #30302A",
-"V c #2C2C25",
-"W c #272720",
+" c None",
+". c #2C2C2C",
+"+ c #6E6E6E",
+"@ c #555555",
+"# c #161616",
+"$ c #626154",
+"% c #6B6A5A",
+"& c #A1A095",
+"* c #9B9B98",
+"= c #A4A49D",
+"- c #A5A495",
+"; c #5C5C50",
+"> c #575649",
+", c #616057",
+"' c #D0CEBA",
+") c #CCCBBD",
+"! c #85847F",
+"~ c #4C4C48",
+"{ c #3D3C34",
+"] c #7E7C6B",
+"^ c #B2B09E",
+"/ c #B2B097",
+"( c #4D4C41",
+"_ c #616059",
+": c #E0E0DB",
+"< c #EBEBE4",
+"[ c #D8D7CD",
+"} c #CCCBBC",
+"| c #C0BEA8",
+"1 c #B8B69D",
+"2 c #C5C4AF",
+"3 c #AAA996",
+"4 c #414037",
+"5 c #4D4D42",
+"6 c #AAA99B",
+"7 c #D6D5CE",
+"8 c #EAE9E5",
+"9 c #E2E1DE",
+"0 c #D8D8CF",
+"a c #BCBBAE",
+"b c #9C9A89",
+"c c #737262",
+"d c #34332D",
+"e c #000000",
+"f c #41413C",
+"g c #888882",
+"h c #B3B2A8",
+"i c #BCBCAE",
+"j c #A3A18A",
+"k c #8F8D7A",
+"l c #606056",
+"m c #353530",
+"n c #676758",
+"o c #59594F",
+"p c #52524D",
+"q c #3D3D38",
+"r c #2A2A23",
+"s c #2E2E26",
+"t c #35352C",
+"u c #3D3D32",
+"v c #707060",
+"w c #919184",
+"x c #A0A098",
+"y c #707066",
+"z c #646458",
+"A c #606051",
+"B c #4D4D40",
+"C c #4E4E40",
+"D c #959587",
+"E c #B9B9AC",
+"F c #8E8E80",
+"G c #787868",
+"H c #7A7A67",
+"I c #565648",
+"J c #6E6E5D",
+"K c #939385",
+"L c #545445",
+"M c #46463C",
+"N c #868678",
+"O c #B2B2A5",
+"P c #8F8F82",
+"Q c #787865",
+"R c #515143",
+"S c #39392F",
+"T c #2F2F29",
+"U c #30302A",
+"V c #2C2C25",
+"W c #272720",
" ",
" ",
" .+@# ",
/* XPM */
static char * type_afile_xpm[] = {
"16 16 107 2",
-" c None",
-". c #8F8F8F",
-"+ c #FFFFFF",
-"@ c #B7CFF9",
-"# c #B8CFF8",
-"$ c #BCD2F7",
-"% c #AFCAF4",
-"& c #93B7EE",
-"* c #5B91E2",
-"= c #4E88DE",
-"- c #4481D9",
-"; c #3A7AD6",
-"> c #2F73D2",
-", c #246CCD",
-"' c #1663CA",
-") c #F3F7FE",
-"! c #F1F6FD",
-"~ c #EFF5FD",
-"{ c #F2F7FF",
-"] c #F2F8FF",
-"^ c #E8EFFB",
-"/ c #E6EDF9",
-"( c #E7EFFB",
-"_ c #E2EAF7",
-": c #DCE5F1",
-"< c #D9E2EF",
-"[ c #D6E1EE",
-"} c #FFFFFE",
-"| c #EFEEED",
-"1 c #D5D5D3",
-"2 c #CDCBC9",
-"3 c #CCCBC9",
-"4 c #D4D2D0",
-"5 c #EAE8E5",
-"6 c #FCFBF8",
-"7 c #FBFAF7",
-"8 c #F9F7F4",
-"9 c #FAFAFA",
-"0 c #CFCFCF",
-"a c #A7A7A7",
-"b c #818181",
-"c c #696969",
-"d c #686868",
-"e c #808080",
-"f c #A5A5A5",
-"g c #C6C6C6",
-"h c #EFEFEF",
-"i c #F3F3F3",
-"j c #D2D2D2",
-"k c #B0B0B0",
-"l c #858585",
-"m c #828282",
-"n c #989898",
-"o c #999999",
-"p c #838383",
-"q c #848484",
-"r c #AEAEAE",
-"s c #CACACA",
-"t c #F0F0F0",
-"u c #F6F6F6",
-"v c #BDBDBD",
-"w c #9F9F9F",
-"x c #E8E8E8",
-"y c #C3C3C3",
-"z c #A1A1A1",
-"A c #ACACAC",
-"B c #BBBBBB",
-"C c #E4E4E4",
-"D c #F4F4F4",
-"E c #C9C9C9",
-"F c #C2C2C2",
-"G c #B8B8B8",
-"H c #B9B9B9",
-"I c #B5B5B5",
-"J c #C1C1C1",
-"K c #B1B1B1",
-"L c #E5E5E5",
-"M c #FEFEFE",
-"N c #ABABAB",
-"O c #EBEBEB",
-"P c #C0C0C0",
-"Q c #8B8B8B",
-"R c #BABABA",
-"S c #A6A6A6",
-"T c #F1F1F1",
-"U c #F9F9F9",
-"V c #DEDEDE",
-"W c #F2F2F2",
-"X c #909090",
-"Y c #D8D8D8",
-"Z c #F5F5F5",
-"` c #FCFCFC",
-" . c #DCDCDC",
-".. c #777777",
-"+. c #6D6D6D",
-"@. c #979797",
-"#. c #8C8C8C",
-"$. c #F7F7F7",
-"%. c #F8F8F8",
-"&. c #CECECE",
-"*. c #868686",
-"=. c #B2B2B2",
-"-. c #A8A8A8",
-";. c #EAEAEA",
-">. c #FBFBFB",
-",. c #FDFDFD",
-"'. c #EEEEEE",
+" c None",
+". c #8F8F8F",
+"+ c #FFFFFF",
+"@ c #B7CFF9",
+"# c #B8CFF8",
+"$ c #BCD2F7",
+"% c #AFCAF4",
+"& c #93B7EE",
+"* c #5B91E2",
+"= c #4E88DE",
+"- c #4481D9",
+"; c #3A7AD6",
+"> c #2F73D2",
+", c #246CCD",
+"' c #1663CA",
+") c #F3F7FE",
+"! c #F1F6FD",
+"~ c #EFF5FD",
+"{ c #F2F7FF",
+"] c #F2F8FF",
+"^ c #E8EFFB",
+"/ c #E6EDF9",
+"( c #E7EFFB",
+"_ c #E2EAF7",
+": c #DCE5F1",
+"< c #D9E2EF",
+"[ c #D6E1EE",
+"} c #FFFFFE",
+"| c #EFEEED",
+"1 c #D5D5D3",
+"2 c #CDCBC9",
+"3 c #CCCBC9",
+"4 c #D4D2D0",
+"5 c #EAE8E5",
+"6 c #FCFBF8",
+"7 c #FBFAF7",
+"8 c #F9F7F4",
+"9 c #FAFAFA",
+"0 c #CFCFCF",
+"a c #A7A7A7",
+"b c #818181",
+"c c #696969",
+"d c #686868",
+"e c #808080",
+"f c #A5A5A5",
+"g c #C6C6C6",
+"h c #EFEFEF",
+"i c #F3F3F3",
+"j c #D2D2D2",
+"k c #B0B0B0",
+"l c #858585",
+"m c #828282",
+"n c #989898",
+"o c #999999",
+"p c #838383",
+"q c #848484",
+"r c #AEAEAE",
+"s c #CACACA",
+"t c #F0F0F0",
+"u c #F6F6F6",
+"v c #BDBDBD",
+"w c #9F9F9F",
+"x c #E8E8E8",
+"y c #C3C3C3",
+"z c #A1A1A1",
+"A c #ACACAC",
+"B c #BBBBBB",
+"C c #E4E4E4",
+"D c #F4F4F4",
+"E c #C9C9C9",
+"F c #C2C2C2",
+"G c #B8B8B8",
+"H c #B9B9B9",
+"I c #B5B5B5",
+"J c #C1C1C1",
+"K c #B1B1B1",
+"L c #E5E5E5",
+"M c #FEFEFE",
+"N c #ABABAB",
+"O c #EBEBEB",
+"P c #C0C0C0",
+"Q c #8B8B8B",
+"R c #BABABA",
+"S c #A6A6A6",
+"T c #F1F1F1",
+"U c #F9F9F9",
+"V c #DEDEDE",
+"W c #F2F2F2",
+"X c #909090",
+"Y c #D8D8D8",
+"Z c #F5F5F5",
+"` c #FCFCFC",
+" . c #DCDCDC",
+".. c #777777",
+"+. c #6D6D6D",
+"@. c #979797",
+"#. c #8C8C8C",
+"$. c #F7F7F7",
+"%. c #F8F8F8",
+"&. c #CECECE",
+"*. c #868686",
+"=. c #B2B2B2",
+"-. c #A8A8A8",
+";. c #EAEAEA",
+">. c #FBFBFB",
+",. c #FDFDFD",
+"'. c #EEEEEE",
". . . . . . . . . . . . . . . . ",
". + @ # $ % & * = - ; > , ' + . ",
". + ) ! ~ { ] ^ / ( _ : < [ + . ",
/* XPM */
static char * type_card_xpm[] = {
"16 16 174 2",
-" c #FFFFFF",
-". c #E7E7E7",
-"+ c #888888",
-"@ c #696969",
-"# c #B1B1B1",
-"$ c #D4D4D4",
-"% c #5D5D5D",
-"& c #AFAFAF",
-"* c #DCDCDC",
-"= c #5E5E5E",
-"- c #ECECEC",
-"; c #FCFCFC",
-"> c #D9D9D9",
-", c #D3D3D3",
-"' c #D2D2D2",
-") c #CFCFCF",
-"! c #7D7D7D",
-"~ c #B2B6B1",
-"{ c #72896A",
-"] c #6D7E60",
-"^ c #6E7E5F",
-"/ c #6C7B5C",
-"( c #6B7A5B",
-"_ c #606C50",
-": c #616C4F",
-"< c #646F53",
-"[ c #5D684C",
-"} c #606A4F",
-"| c #536148",
-"1 c #717370",
-"2 c #989B95",
-"3 c #667B5C",
-"4 c #7F8C7B",
-"5 c #8D978A",
-"6 c #889185",
-"7 c #868F83",
-"8 c #858E81",
-"9 c #677163",
-"0 c #48563D",
-"a c #727C67",
-"b c #495642",
-"c c #697164",
-"d c #48573E",
-"e c #686B67",
-"f c #BFBFBF",
-"g c #FEFEFE",
-"h c #969993",
-"i c #7B8875",
-"j c #A9AAA8",
-"k c #B7B7B7",
-"l c #ADADAD",
-"m c #A8A8A8",
-"n c #A2A2A2",
-"o c #666766",
-"p c #545D4D",
-"q c #8A8D72",
-"r c #52573D",
-"s c #969276",
-"t c #3E4933",
-"u c #6D706C",
-"v c #9F9F9F",
-"w c #7E8C78",
-"x c #929492",
-"y c #959595",
-"z c #818181",
-"A c #7C7C7C",
-"B c #7F7F7F",
-"C c #4E4F4E",
-"D c #495143",
-"E c #857664",
-"F c #4D3C2B",
-"G c #936C5E",
-"H c #393F2C",
-"I c #676A66",
-"J c #9A9A9A",
-"K c #979B94",
-"L c #586B50",
-"M c #4F574C",
-"N c #535851",
-"O c #4F544D",
-"P c #4D514B",
-"Q c #4B4E49",
-"R c #393E37",
-"S c #3B432F",
-"T c #58634F",
-"U c #3D4737",
-"V c #545C4F",
-"W c #37432F",
-"X c #61635F",
-"Y c #A9A9A9",
-"Z c #FDFDFD",
-"` c #979C96",
-" . c #6D8462",
-".. c #536045",
-"+. c #484F39",
-"@. c #414833",
-"#. c #3E4531",
-"$. c #424733",
-"%. c #3E4430",
-"&. c #535B3F",
-"*. c #566445",
-"=. c #566243",
-"-. c #59634A",
-";. c #4E5843",
-">. c #696B67",
-",. c #F6F6F6",
-"'. c #979C95",
-"). c #81916F",
-"!. c #6C7257",
-"~. c #75795F",
-"{. c #676D55",
-"]. c #5E634A",
-"^. c #6B6E53",
-"/. c #566143",
-"(. c #576746",
-"_. c #65734F",
-":. c #69785B",
-"<. c #71736F",
-"[. c #676766",
-"}. c #989796",
-"|. c #7E7E7E",
-"1. c #959A93",
-"2. c #778663",
-"3. c #484834",
-"4. c #53523B",
-"5. c #54553D",
-"6. c #444431",
-"7. c #494733",
-"8. c #576143",
-"9. c #65724E",
-"0. c #62714D",
-"a. c #687859",
-"b. c #5E605C",
-"c. c #4A4A4A",
-"d. c #656565",
-"e. c #8C8C8C",
-"f. c #666666",
-"g. c #AEB1AC",
-"h. c #637A5A",
-"i. c #677352",
-"j. c #5E694A",
-"k. c #5E684A",
-"l. c #5D6748",
-"m. c #5B6647",
-"n. c #626E4C",
-"o. c #677450",
-"p. c #64714D",
-"q. c #445135",
-"r. c #293121",
-"s. c #161B12",
-"t. c #5C5C5C",
-"u. c #DEDEDE",
-"v. c #F8F8F8",
-"w. c #757B73",
-"x. c #A2A175",
-"y. c #9C9A70",
-"z. c #9C9A6F",
-"A. c #9B996E",
-"B. c #9A986D",
-"C. c #98956B",
-"D. c #323A2D",
-"E. c #AAAAAA",
-"F. c #979797",
-"G. c #AFB1AE",
-"H. c #6F6E59",
-"I. c #6C6B56",
-"J. c #6C6A55",
-"K. c #6B6A55",
-"L. c #6A6954",
-"M. c #5B5F58",
-"N. c #EEEEEE",
-"O. c #D7D7D7",
-"P. c #5F5F5F",
-"Q. c #EDEDED",
+" c #FFFFFF",
+". c #E7E7E7",
+"+ c #888888",
+"@ c #696969",
+"# c #B1B1B1",
+"$ c #D4D4D4",
+"% c #5D5D5D",
+"& c #AFAFAF",
+"* c #DCDCDC",
+"= c #5E5E5E",
+"- c #ECECEC",
+"; c #FCFCFC",
+"> c #D9D9D9",
+", c #D3D3D3",
+"' c #D2D2D2",
+") c #CFCFCF",
+"! c #7D7D7D",
+"~ c #B2B6B1",
+"{ c #72896A",
+"] c #6D7E60",
+"^ c #6E7E5F",
+"/ c #6C7B5C",
+"( c #6B7A5B",
+"_ c #606C50",
+": c #616C4F",
+"< c #646F53",
+"[ c #5D684C",
+"} c #606A4F",
+"| c #536148",
+"1 c #717370",
+"2 c #989B95",
+"3 c #667B5C",
+"4 c #7F8C7B",
+"5 c #8D978A",
+"6 c #889185",
+"7 c #868F83",
+"8 c #858E81",
+"9 c #677163",
+"0 c #48563D",
+"a c #727C67",
+"b c #495642",
+"c c #697164",
+"d c #48573E",
+"e c #686B67",
+"f c #BFBFBF",
+"g c #FEFEFE",
+"h c #969993",
+"i c #7B8875",
+"j c #A9AAA8",
+"k c #B7B7B7",
+"l c #ADADAD",
+"m c #A8A8A8",
+"n c #A2A2A2",
+"o c #666766",
+"p c #545D4D",
+"q c #8A8D72",
+"r c #52573D",
+"s c #969276",
+"t c #3E4933",
+"u c #6D706C",
+"v c #9F9F9F",
+"w c #7E8C78",
+"x c #929492",
+"y c #959595",
+"z c #818181",
+"A c #7C7C7C",
+"B c #7F7F7F",
+"C c #4E4F4E",
+"D c #495143",
+"E c #857664",
+"F c #4D3C2B",
+"G c #936C5E",
+"H c #393F2C",
+"I c #676A66",
+"J c #9A9A9A",
+"K c #979B94",
+"L c #586B50",
+"M c #4F574C",
+"N c #535851",
+"O c #4F544D",
+"P c #4D514B",
+"Q c #4B4E49",
+"R c #393E37",
+"S c #3B432F",
+"T c #58634F",
+"U c #3D4737",
+"V c #545C4F",
+"W c #37432F",
+"X c #61635F",
+"Y c #A9A9A9",
+"Z c #FDFDFD",
+"` c #979C96",
+" . c #6D8462",
+".. c #536045",
+"+. c #484F39",
+"@. c #414833",
+"#. c #3E4531",
+"$. c #424733",
+"%. c #3E4430",
+"&. c #535B3F",
+"*. c #566445",
+"=. c #566243",
+"-. c #59634A",
+";. c #4E5843",
+">. c #696B67",
+",. c #F6F6F6",
+"'. c #979C95",
+"). c #81916F",
+"!. c #6C7257",
+"~. c #75795F",
+"{. c #676D55",
+"]. c #5E634A",
+"^. c #6B6E53",
+"/. c #566143",
+"(. c #576746",
+"_. c #65734F",
+":. c #69785B",
+"<. c #71736F",
+"[. c #676766",
+"}. c #989796",
+"|. c #7E7E7E",
+"1. c #959A93",
+"2. c #778663",
+"3. c #484834",
+"4. c #53523B",
+"5. c #54553D",
+"6. c #444431",
+"7. c #494733",
+"8. c #576143",
+"9. c #65724E",
+"0. c #62714D",
+"a. c #687859",
+"b. c #5E605C",
+"c. c #4A4A4A",
+"d. c #656565",
+"e. c #8C8C8C",
+"f. c #666666",
+"g. c #AEB1AC",
+"h. c #637A5A",
+"i. c #677352",
+"j. c #5E694A",
+"k. c #5E684A",
+"l. c #5D6748",
+"m. c #5B6647",
+"n. c #626E4C",
+"o. c #677450",
+"p. c #64714D",
+"q. c #445135",
+"r. c #293121",
+"s. c #161B12",
+"t. c #5C5C5C",
+"u. c #DEDEDE",
+"v. c #F8F8F8",
+"w. c #757B73",
+"x. c #A2A175",
+"y. c #9C9A70",
+"z. c #9C9A6F",
+"A. c #9B996E",
+"B. c #9A986D",
+"C. c #98956B",
+"D. c #323A2D",
+"E. c #AAAAAA",
+"F. c #979797",
+"G. c #AFB1AE",
+"H. c #6F6E59",
+"I. c #6C6B56",
+"J. c #6C6A55",
+"K. c #6B6A55",
+"L. c #6A6954",
+"M. c #5B5F58",
+"N. c #EEEEEE",
+"O. c #D7D7D7",
+"P. c #5F5F5F",
+"Q. c #EDEDED",
" . + @ # ",
" $ % & * ",
" $ = - ",
/* XPM */
static char * type_cdda_xpm[] = {
"16 16 119 2",
-" c None",
-". c #7E7E7E",
-"+ c #A3A3A3",
-"@ c #000000",
-"# c #030303",
-"$ c #BDCCFF",
-"% c #C1CDF5",
-"& c #D8DDF1",
-"* c #C4CBE9",
-"= c #C0C8F0",
-"- c #646464",
-"; c #A8A8A8",
-"> c #DFF2FF",
-", c #F9FDFF",
-"' c #E0E7FB",
-") c #B1C3F7",
-"! c #F7FAFF",
-"~ c #FFFFFF",
-"{ c #DBDEEE",
-"] c #727EB7",
-"^ c #2A2928",
-"/ c #BBBBBB",
-"( c #E1E9FF",
-"_ c #FEFFFD",
-": c #BECDF6",
-"< c #E5ECFC",
-"[ c #E8EDFA",
-"} c #747CAA",
-"| c #85847F",
-"1 c #B8B8B8",
-"2 c #D4E6FF",
-"3 c #EBEEFB",
-"4 c #DDE5FB",
-"5 c #FEFFFF",
-"6 c #EFF3FE",
-"7 c #91ABF5",
-"8 c #B7BFE3",
-"9 c #7C7A7B",
-"0 c #878787",
-"a c #1A1A1A",
-"b c #D1E4FF",
-"c c #D8E1F8",
-"d c #FAFAFE",
-"e c #FFFFFE",
-"f c #D5E0FB",
-"g c #EFF0F9",
-"h c #FBFDFF",
-"i c #AAC0FA",
-"j c #B0C7FF",
-"k c #DEF0FF",
-"l c #8A8B8F",
-"m c #A4A49F",
-"n c #585857",
-"o c #D1E5FF",
-"p c #B9CAF5",
-"q c #C7D4F8",
-"r c #E4EBFC",
-"s c #F1F5FF",
-"t c #D4DDFD",
-"u c #C1C9E9",
-"v c #B2BEE9",
-"w c #D7E6FF",
-"x c #383428",
-"y c #8B8C90",
-"z c #D3E4FF",
-"A c #ABBEF3",
-"B c #BBCAF6",
-"C c #CAD8F8",
-"D c #CED9FC",
-"E c #B5C5FC",
-"F c #AFB4D7",
-"G c #DDE6FF",
-"H c #1D1B14",
-"I c #34322B",
-"J c #CFDCFF",
-"K c #C2D8FF",
-"L c #B8C8F4",
-"M c #ABBDF4",
-"N c #B8C9F6",
-"O c #D1DCFB",
-"P c #DAE2FE",
-"Q c #AFBAE2",
-"R c #CACDE3",
-"S c #F8FBFF",
-"T c #DAE7FF",
-"U c #C5D8FF",
-"V c #D5E6FF",
-"W c #5E6592",
-"X c #C4D3FF",
-"Y c #9BB1F2",
-"Z c #B0C4F5",
-"` c #D6DDF5",
-" . c #F5F6FA",
-".. c #E2EAFC",
-"+. c #DCE7FF",
-"@. c #515886",
-"#. c #C0D9FF",
-"$. c #B3C5FA",
-"%. c #FDFDFF",
-"&. c #FAFCFF",
-"*. c #E6EBFD",
-"=. c #DBDDEE",
-"-. c #CADBFF",
-";. c #FFFEFE",
-">. c #FEFDFF",
-",. c #F9FAFE",
-"'. c #C7D4F7",
-"). c #FDFDFE",
-"!. c #959AC1",
-"~. c #C7D7FF",
-"{. c #D2DEFC",
-"]. c #DCE5FF",
-"^. c #AFB3D2",
-"/. c #ADC1FF",
-"(. c #C7D2FF",
-"_. c #DBE0FA",
-":. c #D7DFF6",
-"<. c #A1AEDC",
-"[. c #98A1CC",
+" c None",
+". c #7E7E7E",
+"+ c #A3A3A3",
+"@ c #000000",
+"# c #030303",
+"$ c #BDCCFF",
+"% c #C1CDF5",
+"& c #D8DDF1",
+"* c #C4CBE9",
+"= c #C0C8F0",
+"- c #646464",
+"; c #A8A8A8",
+"> c #DFF2FF",
+", c #F9FDFF",
+"' c #E0E7FB",
+") c #B1C3F7",
+"! c #F7FAFF",
+"~ c #FFFFFF",
+"{ c #DBDEEE",
+"] c #727EB7",
+"^ c #2A2928",
+"/ c #BBBBBB",
+"( c #E1E9FF",
+"_ c #FEFFFD",
+": c #BECDF6",
+"< c #E5ECFC",
+"[ c #E8EDFA",
+"} c #747CAA",
+"| c #85847F",
+"1 c #B8B8B8",
+"2 c #D4E6FF",
+"3 c #EBEEFB",
+"4 c #DDE5FB",
+"5 c #FEFFFF",
+"6 c #EFF3FE",
+"7 c #91ABF5",
+"8 c #B7BFE3",
+"9 c #7C7A7B",
+"0 c #878787",
+"a c #1A1A1A",
+"b c #D1E4FF",
+"c c #D8E1F8",
+"d c #FAFAFE",
+"e c #FFFFFE",
+"f c #D5E0FB",
+"g c #EFF0F9",
+"h c #FBFDFF",
+"i c #AAC0FA",
+"j c #B0C7FF",
+"k c #DEF0FF",
+"l c #8A8B8F",
+"m c #A4A49F",
+"n c #585857",
+"o c #D1E5FF",
+"p c #B9CAF5",
+"q c #C7D4F8",
+"r c #E4EBFC",
+"s c #F1F5FF",
+"t c #D4DDFD",
+"u c #C1C9E9",
+"v c #B2BEE9",
+"w c #D7E6FF",
+"x c #383428",
+"y c #8B8C90",
+"z c #D3E4FF",
+"A c #ABBEF3",
+"B c #BBCAF6",
+"C c #CAD8F8",
+"D c #CED9FC",
+"E c #B5C5FC",
+"F c #AFB4D7",
+"G c #DDE6FF",
+"H c #1D1B14",
+"I c #34322B",
+"J c #CFDCFF",
+"K c #C2D8FF",
+"L c #B8C8F4",
+"M c #ABBDF4",
+"N c #B8C9F6",
+"O c #D1DCFB",
+"P c #DAE2FE",
+"Q c #AFBAE2",
+"R c #CACDE3",
+"S c #F8FBFF",
+"T c #DAE7FF",
+"U c #C5D8FF",
+"V c #D5E6FF",
+"W c #5E6592",
+"X c #C4D3FF",
+"Y c #9BB1F2",
+"Z c #B0C4F5",
+"` c #D6DDF5",
+" . c #F5F6FA",
+".. c #E2EAFC",
+"+. c #DCE7FF",
+"@. c #515886",
+"#. c #C0D9FF",
+"$. c #B3C5FA",
+"%. c #FDFDFF",
+"&. c #FAFCFF",
+"*. c #E6EBFD",
+"=. c #DBDDEE",
+"-. c #CADBFF",
+";. c #FFFEFE",
+">. c #FEFDFF",
+",. c #F9FAFE",
+"'. c #C7D4F7",
+"). c #FDFDFE",
+"!. c #959AC1",
+"~. c #C7D7FF",
+"{. c #D2DEFC",
+"]. c #DCE5FF",
+"^. c #AFB3D2",
+"/. c #ADC1FF",
+"(. c #C7D2FF",
+"_. c #DBE0FA",
+":. c #D7DFF6",
+"<. c #A1AEDC",
+"[. c #98A1CC",
" . ",
" + @ # ",
" $ % & * = @ @ - ; ",
/* XPM */
static char * type_directory_xpm[] = {
"16 16 83 1",
-" c None",
-". c #3274DB",
-"+ c #3273DB",
-"@ c #3373DB",
-"# c #3274DC",
-"$ c #3170D6",
-"% c #F5FBFD",
-"& c #F5F9FD",
-"* c #306DD2",
-"= c #E8F5FD",
-"- c #E8F6FD",
-"; c #E9F5FD",
-"> c #5F7DB1",
-", c #316DD1",
-"' c #306ED1",
-") c #316ED2",
-"! c #306DD1",
-"~ c #306ACC",
-"{ c #DBF0FD",
-"] c #DAEEFD",
-"^ c #DBEEFD",
-"/ c #DAF0FD",
-"( c #2F66C6",
-"_ c #CBE8FD",
-": c #CBE9FD",
-"< c #255FD1",
-"[ c #2E63C0",
-"} c #B9E2FD",
-"| c #BCE2FD",
-"1 c #B9E1FD",
-"2 c #BCE1FD",
-"3 c #9EC6EE",
-"4 c #FCFCFD",
-"5 c #ACD1FD",
-"6 c #2D61BD",
-"7 c #A9DAFD",
-"8 c #A9DBFD",
-"9 c #86B9EC",
-"0 c #8CBDFD",
-"a c #89BEFD",
-"b c #89BDFD",
-"c c #2C5EB8",
-"d c #99D3FD",
-"e c #2259CB",
-"f c #6BAAFD",
-"g c #6BA9FD",
-"h c #2259CC",
-"i c #2B5AB1",
-"j c #88CBFD",
-"k c #1F52C5",
-"l c #5098FD",
-"m c #4F98FD",
-"n c #4F97FD",
-"o c #1E52C5",
-"p c #2A58AE",
-"q c #7AC4FD",
-"r c #1C49BD",
-"s c #3987FD",
-"t c #3988FD",
-"u c #1B49BD",
-"v c #2955A8",
-"w c #6DBEFD",
-"x c #1840B5",
-"y c #287CFD",
-"z c #287BFD",
-"A c #277BFD",
-"B c #183FB5",
-"C c #2852A3",
-"D c #62B7FD",
-"E c #1337AA",
-"F c #FDFDFD",
-"G c #AEAEC6",
-"H c #1337AC",
-"I c #28509F",
-"J c #102DA2",
-"K c #274D9B",
-"L c #4FAEFD",
-"M c #0B2599",
-"N c #0C2599",
-"O c #274B97",
-"P c #091D91",
-"Q c #091E91",
-"R c #091E90",
+" c None",
+". c #3274DB",
+"+ c #3273DB",
+"@ c #3373DB",
+"# c #3274DC",
+"$ c #3170D6",
+"% c #F5FBFD",
+"& c #F5F9FD",
+"* c #306DD2",
+"= c #E8F5FD",
+"- c #E8F6FD",
+"; c #E9F5FD",
+"> c #5F7DB1",
+", c #316DD1",
+"' c #306ED1",
+") c #316ED2",
+"! c #306DD1",
+"~ c #306ACC",
+"{ c #DBF0FD",
+"] c #DAEEFD",
+"^ c #DBEEFD",
+"/ c #DAF0FD",
+"( c #2F66C6",
+"_ c #CBE8FD",
+": c #CBE9FD",
+"< c #255FD1",
+"[ c #2E63C0",
+"} c #B9E2FD",
+"| c #BCE2FD",
+"1 c #B9E1FD",
+"2 c #BCE1FD",
+"3 c #9EC6EE",
+"4 c #FCFCFD",
+"5 c #ACD1FD",
+"6 c #2D61BD",
+"7 c #A9DAFD",
+"8 c #A9DBFD",
+"9 c #86B9EC",
+"0 c #8CBDFD",
+"a c #89BEFD",
+"b c #89BDFD",
+"c c #2C5EB8",
+"d c #99D3FD",
+"e c #2259CB",
+"f c #6BAAFD",
+"g c #6BA9FD",
+"h c #2259CC",
+"i c #2B5AB1",
+"j c #88CBFD",
+"k c #1F52C5",
+"l c #5098FD",
+"m c #4F98FD",
+"n c #4F97FD",
+"o c #1E52C5",
+"p c #2A58AE",
+"q c #7AC4FD",
+"r c #1C49BD",
+"s c #3987FD",
+"t c #3988FD",
+"u c #1B49BD",
+"v c #2955A8",
+"w c #6DBEFD",
+"x c #1840B5",
+"y c #287CFD",
+"z c #287BFD",
+"A c #277BFD",
+"B c #183FB5",
+"C c #2852A3",
+"D c #62B7FD",
+"E c #1337AA",
+"F c #FDFDFD",
+"G c #AEAEC6",
+"H c #1337AC",
+"I c #28509F",
+"J c #102DA2",
+"K c #274D9B",
+"L c #4FAEFD",
+"M c #0B2599",
+"N c #0C2599",
+"O c #274B97",
+"P c #091D91",
+"Q c #091E91",
+"R c #091E90",
" .+@#.. ",
" $%&%&&&$ ",
"*===-=;=>,')'!, ",
/* XPM */
static char * type_disc_xpm[] = {
"16 16 91 1",
-" c None",
-". c #676767",
-"+ c #989898",
-"@ c #B7B7B7",
-"# c #BEBEBE",
-"$ c #919191",
-"% c #5B5B5B",
-"& c #CDCDCD",
-"* c #FEFEFE",
-"= c #FFFFFF",
-"- c #FDFDFD",
-"; c #BDBDBD",
-"> c #717171",
-", c #F3F3F3",
-"' c #FBFBFB",
-") c #F9F9F9",
-"! c #F7F7F7",
-"~ c #FAFAFA",
-"{ c #EDEDED",
-"] c #4A4A4A",
-"^ c #DFDFDF",
-"/ c #E4E4E4",
-"( c #F1F1F1",
-"_ c #F8F8F8",
-": c #F4F4F4",
-"< c #E5E5E5",
-"[ c #AEAEAE",
-"} c #D8D8D8",
-"| c #D6D6D6",
-"1 c #E2E2E2",
-"2 c #F5F5F5",
-"3 c #FCFCFC",
-"4 c #979797",
-"5 c #CFCFCF",
-"6 c #CCCCCC",
-"7 c #D7D7D7",
-"8 c #EBEBEB",
-"9 c #EEEEEE",
-"0 c #EAEAEA",
-"a c #E7E7E7",
-"b c #D5D5D5",
-"c c #6B6B6B",
-"d c #C8C8C8",
-"e c #E3E3E3",
-"f c #DBDBDB",
-"g c #C3C3C3",
-"h c #EFEFEF",
-"i c #DDDDDD",
-"j c #D2D2D2",
-"k c #D1D1D1",
-"l c #484848",
-"m c #787878",
-"n c #CBCBCB",
-"o c #CECECE",
-"p c #E6E6E6",
-"q c #C9C9C9",
-"r c #C4C4C4",
-"s c #5A5A5A",
-"t c #757575",
-"u c #E1E1E1",
-"v c #E9E9E9",
-"w c #E0E0E0",
-"x c #7D7D7D",
-"y c #BCBCBC",
-"z c #B9B9B9",
-"A c #515151",
-"B c #545454",
-"C c #DEDEDE",
-"D c #E8E8E8",
-"E c #DCDCDC",
-"F c #C7C7C7",
-"G c #BABABA",
-"H c #BBBBBB",
-"I c #C1C1C1",
-"J c #333333",
-"K c #ECECEC",
-"L c #C0C0C0",
-"M c #A6A6A6",
-"N c #777777",
-"O c #C2C2C2",
-"P c #C6C6C6",
-"Q c #555555",
-"R c #828282",
-"S c #9E9E9E",
-"T c #848484",
-"U c #9B9B9B",
-"V c #B4B4B4",
-"W c #DADADA",
-"X c #454545",
-"Y c #313131",
-"Z c #2F2F2F",
+" c None",
+". c #676767",
+"+ c #989898",
+"@ c #B7B7B7",
+"# c #BEBEBE",
+"$ c #919191",
+"% c #5B5B5B",
+"& c #CDCDCD",
+"* c #FEFEFE",
+"= c #FFFFFF",
+"- c #FDFDFD",
+"; c #BDBDBD",
+"> c #717171",
+", c #F3F3F3",
+"' c #FBFBFB",
+") c #F9F9F9",
+"! c #F7F7F7",
+"~ c #FAFAFA",
+"{ c #EDEDED",
+"] c #4A4A4A",
+"^ c #DFDFDF",
+"/ c #E4E4E4",
+"( c #F1F1F1",
+"_ c #F8F8F8",
+": c #F4F4F4",
+"< c #E5E5E5",
+"[ c #AEAEAE",
+"} c #D8D8D8",
+"| c #D6D6D6",
+"1 c #E2E2E2",
+"2 c #F5F5F5",
+"3 c #FCFCFC",
+"4 c #979797",
+"5 c #CFCFCF",
+"6 c #CCCCCC",
+"7 c #D7D7D7",
+"8 c #EBEBEB",
+"9 c #EEEEEE",
+"0 c #EAEAEA",
+"a c #E7E7E7",
+"b c #D5D5D5",
+"c c #6B6B6B",
+"d c #C8C8C8",
+"e c #E3E3E3",
+"f c #DBDBDB",
+"g c #C3C3C3",
+"h c #EFEFEF",
+"i c #DDDDDD",
+"j c #D2D2D2",
+"k c #D1D1D1",
+"l c #484848",
+"m c #787878",
+"n c #CBCBCB",
+"o c #CECECE",
+"p c #E6E6E6",
+"q c #C9C9C9",
+"r c #C4C4C4",
+"s c #5A5A5A",
+"t c #757575",
+"u c #E1E1E1",
+"v c #E9E9E9",
+"w c #E0E0E0",
+"x c #7D7D7D",
+"y c #BCBCBC",
+"z c #B9B9B9",
+"A c #515151",
+"B c #545454",
+"C c #DEDEDE",
+"D c #E8E8E8",
+"E c #DCDCDC",
+"F c #C7C7C7",
+"G c #BABABA",
+"H c #BBBBBB",
+"I c #C1C1C1",
+"J c #333333",
+"K c #ECECEC",
+"L c #C0C0C0",
+"M c #A6A6A6",
+"N c #777777",
+"O c #C2C2C2",
+"P c #C6C6C6",
+"Q c #555555",
+"R c #828282",
+"S c #9E9E9E",
+"T c #848484",
+"U c #9B9B9B",
+"V c #B4B4B4",
+"W c #DADADA",
+"X c #454545",
+"Y c #313131",
+"Z c #2F2F2F",
" .+@#$ ",
" %&*====-; ",
" >,='')!~-={] ",
/* XPM */
static char * type_net_xpm[] = {
"16 16 154 2",
-" c None",
-". c #667AAC",
-"+ c #8293BC",
-"@ c #8192BA",
-"# c #6677A0",
-"$ c #8C9BC3",
-"% c #E9EBF5",
-"& c #F8F8FC",
-"* c #FDFCFE",
-"= c #FFFFFF",
-"- c #FCFCFF",
-"; c #E7EBF9",
-"> c #8996B4",
-", c #99A5CD",
-"' c #E7E8F2",
-") c #CED2DD",
-"! c #C0C6D6",
-"~ c #CBD1E1",
-"{ c #E7E9F4",
-"] c #E8EAF5",
-"^ c #E7E8F4",
-"/ c #F0F2FE",
-"( c #919DC3",
-"_ c #53659F",
-": c #B3BBD7",
-"< c #98A2BB",
-"[ c #93A0BE",
-"} c #98A5C5",
-"| c #C8CEE1",
-"1 c #D5D8E7",
-"2 c #CBCFE0",
-"3 c #D0D4E5",
-"4 c #D7DBEC",
-"5 c #D0D5EF",
-"6 c #47578E",
-"7 c #3E579E",
-"8 c #5F709B",
-"9 c #7084B1",
-"0 c #7588B6",
-"a c #CBD1E5",
-"b c #EBEDF6",
-"c c #E2E6F1",
-"d c #D9DCEB",
-"e c #D3D7E9",
-"f c #CBCFE5",
-"g c #C0C5E2",
-"h c #7B89C2",
-"i c #29396C",
-"j c #6273AF",
-"k c #56699E",
-"l c #4A619B",
-"m c #49629E",
-"n c #A2AECE",
-"o c #E4E7F0",
-"p c #E9EBF3",
-"q c #E3E5F2",
-"r c #D4D8EB",
-"s c #C0C5DF",
-"t c #8D97BF",
-"u c #6F7FBD",
-"v c #1F2B51",
-"w c #3B4C83",
-"x c #98A1D3",
-"y c #A7AFD6",
-"z c #7481A9",
-"A c #1F397C",
-"B c #234089",
-"C c #2C4789",
-"D c #AEB7D0",
-"E c #EBEDF7",
-"F c #D4D8EC",
-"G c #959FC6",
-"H c #364B86",
-"I c #4159A0",
-"J c #152652",
-"K c #303D69",
-"L c #919CD1",
-"M c #AAB1D9",
-"N c #6B79A3",
-"O c #072670",
-"P c #0B2C7C",
-"Q c #001F73",
-"R c #7989B5",
-"S c #EDEDF8",
-"T c #B4BCDB",
-"U c #253D7D",
-"V c #374B87",
-"W c #4A62AA",
-"X c #05143D",
-"Y c #8490C8",
-"Z c #5A699A",
-"` c #123079",
-" . c #0A2B7C",
-".. c #0F2F7E",
-"+. c #09297A",
-"@. c #3B5495",
-"#. c #B6BDDB",
-"$. c #485F9C",
-"%. c #09266D",
-"&. c #5D6B9E",
-"*. c #7483BD",
-"=. c #415186",
-"-. c #2F488D",
-";. c #102E7A",
-">. c #1A3885",
-",. c #24418A",
-"'. c #29458D",
-"). c #27438B",
-"!. c #28438C",
-"~. c #0F2E7D",
-"{. c #233F89",
-"]. c #284694",
-"^. c #172C60",
-"/. c #294183",
-"(. c #39549C",
-"_. c #455D9D",
-":. c #4C62A0",
-"<. c #5065A1",
-"[. c #4D63A0",
-"}. c #455C9C",
-"|. c #41599B",
-"1. c #314E99",
-"2. c #0E2766",
-"3. c #2F3E6D",
-"4. c #6375AE",
-"5. c #7D8DC2",
-"6. c #7A88BC",
-"7. c #7C8BBF",
-"8. c #7385BC",
-"9. c #5065A0",
-"0. c #1F305C",
-"a. c #363D58",
-"b. c #888FB2",
-"c. c #676D8F",
-"d. c #282F49",
-"e. c #C6C6C9",
-"f. c #8A8A8C",
-"g. c #A8A8AF",
-"h. c #C6C6CC",
-"i. c #B9B9C0",
-"j. c #C2C2C6",
-"k. c #DADAD9",
-"l. c #ADADB2",
-"m. c #ABABB1",
-"n. c #CCCCD2",
-"o. c #8A8A91",
-"p. c #373739",
-"q. c #39393C",
-"r. c #626268",
-"s. c #68686C",
-"t. c #6C6C6E",
-"u. c #555559",
-"v. c #313134",
-"w. c #38383A",
+" c None",
+". c #667AAC",
+"+ c #8293BC",
+"@ c #8192BA",
+"# c #6677A0",
+"$ c #8C9BC3",
+"% c #E9EBF5",
+"& c #F8F8FC",
+"* c #FDFCFE",
+"= c #FFFFFF",
+"- c #FCFCFF",
+"; c #E7EBF9",
+"> c #8996B4",
+", c #99A5CD",
+"' c #E7E8F2",
+") c #CED2DD",
+"! c #C0C6D6",
+"~ c #CBD1E1",
+"{ c #E7E9F4",
+"] c #E8EAF5",
+"^ c #E7E8F4",
+"/ c #F0F2FE",
+"( c #919DC3",
+"_ c #53659F",
+": c #B3BBD7",
+"< c #98A2BB",
+"[ c #93A0BE",
+"} c #98A5C5",
+"| c #C8CEE1",
+"1 c #D5D8E7",
+"2 c #CBCFE0",
+"3 c #D0D4E5",
+"4 c #D7DBEC",
+"5 c #D0D5EF",
+"6 c #47578E",
+"7 c #3E579E",
+"8 c #5F709B",
+"9 c #7084B1",
+"0 c #7588B6",
+"a c #CBD1E5",
+"b c #EBEDF6",
+"c c #E2E6F1",
+"d c #D9DCEB",
+"e c #D3D7E9",
+"f c #CBCFE5",
+"g c #C0C5E2",
+"h c #7B89C2",
+"i c #29396C",
+"j c #6273AF",
+"k c #56699E",
+"l c #4A619B",
+"m c #49629E",
+"n c #A2AECE",
+"o c #E4E7F0",
+"p c #E9EBF3",
+"q c #E3E5F2",
+"r c #D4D8EB",
+"s c #C0C5DF",
+"t c #8D97BF",
+"u c #6F7FBD",
+"v c #1F2B51",
+"w c #3B4C83",
+"x c #98A1D3",
+"y c #A7AFD6",
+"z c #7481A9",
+"A c #1F397C",
+"B c #234089",
+"C c #2C4789",
+"D c #AEB7D0",
+"E c #EBEDF7",
+"F c #D4D8EC",
+"G c #959FC6",
+"H c #364B86",
+"I c #4159A0",
+"J c #152652",
+"K c #303D69",
+"L c #919CD1",
+"M c #AAB1D9",
+"N c #6B79A3",
+"O c #072670",
+"P c #0B2C7C",
+"Q c #001F73",
+"R c #7989B5",
+"S c #EDEDF8",
+"T c #B4BCDB",
+"U c #253D7D",
+"V c #374B87",
+"W c #4A62AA",
+"X c #05143D",
+"Y c #8490C8",
+"Z c #5A699A",
+"` c #123079",
+" . c #0A2B7C",
+".. c #0F2F7E",
+"+. c #09297A",
+"@. c #3B5495",
+"#. c #B6BDDB",
+"$. c #485F9C",
+"%. c #09266D",
+"&. c #5D6B9E",
+"*. c #7483BD",
+"=. c #415186",
+"-. c #2F488D",
+";. c #102E7A",
+">. c #1A3885",
+",. c #24418A",
+"'. c #29458D",
+"). c #27438B",
+"!. c #28438C",
+"~. c #0F2E7D",
+"{. c #233F89",
+"]. c #284694",
+"^. c #172C60",
+"/. c #294183",
+"(. c #39549C",
+"_. c #455D9D",
+":. c #4C62A0",
+"<. c #5065A1",
+"[. c #4D63A0",
+"}. c #455C9C",
+"|. c #41599B",
+"1. c #314E99",
+"2. c #0E2766",
+"3. c #2F3E6D",
+"4. c #6375AE",
+"5. c #7D8DC2",
+"6. c #7A88BC",
+"7. c #7C8BBF",
+"8. c #7385BC",
+"9. c #5065A0",
+"0. c #1F305C",
+"a. c #363D58",
+"b. c #888FB2",
+"c. c #676D8F",
+"d. c #282F49",
+"e. c #C6C6C9",
+"f. c #8A8A8C",
+"g. c #A8A8AF",
+"h. c #C6C6CC",
+"i. c #B9B9C0",
+"j. c #C2C2C6",
+"k. c #DADAD9",
+"l. c #ADADB2",
+"m. c #ABABB1",
+"n. c #CCCCD2",
+"o. c #8A8A91",
+"p. c #373739",
+"q. c #39393C",
+"r. c #626268",
+"s. c #68686C",
+"t. c #6C6C6E",
+"u. c #555559",
+"v. c #313134",
+"w. c #38383A",
" . + @ # ",
" $ % & * = - ; > ",
" , ' ) ! ~ { ] ^ / ( ",
/* XPM */
static char * type_node_xpm[] = {
"16 16 55 1",
-" c None",
-". c #949494",
-"+ c #919191",
-"@ c #FAFAFA",
-"# c #8F8F8F",
-"$ c #F5F5F5",
-"% c #F6F6F6",
-"& c #999999",
-"* c #909090",
-"= c #8D8D8D",
-"- c #F0F0F0",
-"; c #EFEFEF",
-"> c #898989",
-", c #E9E9E9",
-"' c #888888",
-") c #868686",
-"! c #E2E2E2",
-"~ c #E3E3E3",
-"{ c #D0D0D0",
-"] c #FDFDFD",
-"^ c #DCDCDC",
-"/ c #848484",
-"( c #DBDBDB",
-"_ c #C4C4C4",
-": c #CECECE",
-"< c #CDCDCD",
-"[ c #828282",
-"} c #D4D4D4",
-"| c #BFBFBF",
-"1 c #858585",
-"2 c #7E7E7E",
-"3 c #CCCCCC",
-"4 c #808080",
-"5 c #B1B1B1",
-"6 c #7F7F7F",
-"7 c #7C7C7C",
-"8 c #C6C6C6",
-"9 c #7A7A7A",
-"0 c #A5A5A5",
-"a c #797979",
-"b c #C0C0C0",
-"c c #747474",
-"d c #9C9C9C",
-"e c #9B9B9B",
-"f c #777777",
-"g c #BABABA",
-"h c #6D6D6D",
-"i c #FEFEFE",
-"j c #6E6E6E",
-"k c #676767",
-"l c #727272",
-"m c #606060",
-"n c #707070",
-"o c #5B5B5B",
-"p c #5A5A5A",
+" c None",
+". c #949494",
+"+ c #919191",
+"@ c #FAFAFA",
+"# c #8F8F8F",
+"$ c #F5F5F5",
+"% c #F6F6F6",
+"& c #999999",
+"* c #909090",
+"= c #8D8D8D",
+"- c #F0F0F0",
+"; c #EFEFEF",
+"> c #898989",
+", c #E9E9E9",
+"' c #888888",
+") c #868686",
+"! c #E2E2E2",
+"~ c #E3E3E3",
+"{ c #D0D0D0",
+"] c #FDFDFD",
+"^ c #DCDCDC",
+"/ c #848484",
+"( c #DBDBDB",
+"_ c #C4C4C4",
+": c #CECECE",
+"< c #CDCDCD",
+"[ c #828282",
+"} c #D4D4D4",
+"| c #BFBFBF",
+"1 c #858585",
+"2 c #7E7E7E",
+"3 c #CCCCCC",
+"4 c #808080",
+"5 c #B1B1B1",
+"6 c #7F7F7F",
+"7 c #7C7C7C",
+"8 c #C6C6C6",
+"9 c #7A7A7A",
+"0 c #A5A5A5",
+"a c #797979",
+"b c #C0C0C0",
+"c c #747474",
+"d c #9C9C9C",
+"e c #9B9B9B",
+"f c #777777",
+"g c #BABABA",
+"h c #6D6D6D",
+"i c #FEFEFE",
+"j c #6E6E6E",
+"k c #676767",
+"l c #727272",
+"m c #606060",
+"n c #707070",
+"o c #5B5B5B",
+"p c #5A5A5A",
" ...... ",
" +@@@@@@+ ",
"#$$$$$%$&##*### ",
/* XPM */
static char * type_playlist_xpm[] = {
"16 16 126 2",
-" c None",
-". c #959695",
-"+ c #000000",
-"@ c #0E0E0E",
-"# c #282828",
-"$ c #696969",
-"% c #DADBDA",
-"& c #E4E5E4",
-"* c #E6E7E6",
-"= c #D3D3D3",
-"- c #FFFFFF",
-"; c #F9F9F9",
-"> c #F9F9F8",
-", c #E7E7E7",
-"' c #E4E4E4",
-") c #CDCDCD",
-"! c #252525",
-"~ c #C8C9C8",
-"{ c #E3E4E3",
-"] c #F6F6F6",
-"^ c #DADADA",
-"/ c #9F9F9F",
-"( c #FEFEFE",
-"_ c #FCFCFB",
-": c #FBFBFB",
-"< c #F2F2F2",
-"[ c #AFAFAE",
-"} c #E9E9E9",
-"| c #B3B3B3",
-"1 c #383838",
-"2 c #CECFCE",
-"3 c #9E9E9E",
-"4 c #FDFDFD",
-"5 c #FAFAF9",
-"6 c #F3F3F3",
-"7 c #A9A9A8",
-"8 c #F0F0F0",
-"9 c #F4F4F4",
-"0 c #ABABAB",
-"a c #414141",
-"b c #9D9D9C",
-"c c #9A9A9A",
-"d c #9A9A99",
-"e c #9B9B9A",
-"f c #9D9C9C",
-"g c #0A0A0A",
-"h c #9B9B9B",
-"i c #F8F8F7",
-"j c #F7F6F5",
-"k c #F6F6F4",
-"l c #F4F3F2",
-"m c #F1F0EF",
-"n c #F0EFED",
-"o c #E5E4E2",
-"p c #848381",
-"q c #6A6763",
-"r c #F8F7F6",
-"s c #989897",
-"t c #989796",
-"u c #EBEAE8",
-"v c #E1DFDC",
-"w c #B6B6B4",
-"x c #72706C",
-"y c #B1B0AF",
-"z c #818180",
-"A c #AFAFAD",
-"B c #EFEFED",
-"C c #EFEEEC",
-"D c #ECEBE9",
-"E c #E8E7E5",
-"F c #A4A4A1",
-"G c #C4C3C0",
-"H c #817D74",
-"I c #7F7F7E",
-"J c #7F7E7D",
-"K c #EEEDEB",
-"L c #EDECEA",
-"M c #E8E7E4",
-"N c #E7E6E3",
-"O c #8B867D",
-"P c #7D7D7C",
-"Q c #ACABA9",
-"R c #91908E",
-"S c #8E8E8C",
-"T c #E6E4E1",
-"U c #A2A19F",
-"V c #646462",
-"W c #A49E93",
-"X c #7C7B7A",
-"Y c #7B7B7A",
-"Z c #E7E5E2",
-"` c #E4E3DF",
-" . c #E3E2DE",
-".. c #DEDDD9",
-"+. c #DDDCD8",
-"@. c #E0DFDB",
-"#. c #A19C90",
-"$. c #E6E5E2",
-"%. c #E5E4E1",
-"&. c #8E8E8B",
-"*. c #747371",
-"=. c #0B0B0B",
-"-. c #DCDBD7",
-";. c #DBD9D5",
-">. c #A19B90",
-",. c #E3E2DF",
-"'. c #E4E2DF",
-"). c #DCDAD6",
-"!. c #D9D7D3",
-"~. c #E1E0DC",
-"{. c #E2E1DD",
-"]. c #71716F",
-"^. c #0B0B0A",
-"/. c #706F6D",
-"(. c #D8D6D1",
-"_. c #9F998D",
-":. c #999891",
-"<. c #A39D92",
-"[. c #A39D91",
-"}. c #A29C90",
-"|. c #A19B8F",
-"1. c #9D978C",
-"2. c #9B968A",
-"3. c #676359",
-"4. c #919191",
-"5. c #757575",
+" c None",
+". c #959695",
+"+ c #000000",
+"@ c #0E0E0E",
+"# c #282828",
+"$ c #696969",
+"% c #DADBDA",
+"& c #E4E5E4",
+"* c #E6E7E6",
+"= c #D3D3D3",
+"- c #FFFFFF",
+"; c #F9F9F9",
+"> c #F9F9F8",
+", c #E7E7E7",
+"' c #E4E4E4",
+") c #CDCDCD",
+"! c #252525",
+"~ c #C8C9C8",
+"{ c #E3E4E3",
+"] c #F6F6F6",
+"^ c #DADADA",
+"/ c #9F9F9F",
+"( c #FEFEFE",
+"_ c #FCFCFB",
+": c #FBFBFB",
+"< c #F2F2F2",
+"[ c #AFAFAE",
+"} c #E9E9E9",
+"| c #B3B3B3",
+"1 c #383838",
+"2 c #CECFCE",
+"3 c #9E9E9E",
+"4 c #FDFDFD",
+"5 c #FAFAF9",
+"6 c #F3F3F3",
+"7 c #A9A9A8",
+"8 c #F0F0F0",
+"9 c #F4F4F4",
+"0 c #ABABAB",
+"a c #414141",
+"b c #9D9D9C",
+"c c #9A9A9A",
+"d c #9A9A99",
+"e c #9B9B9A",
+"f c #9D9C9C",
+"g c #0A0A0A",
+"h c #9B9B9B",
+"i c #F8F8F7",
+"j c #F7F6F5",
+"k c #F6F6F4",
+"l c #F4F3F2",
+"m c #F1F0EF",
+"n c #F0EFED",
+"o c #E5E4E2",
+"p c #848381",
+"q c #6A6763",
+"r c #F8F7F6",
+"s c #989897",
+"t c #989796",
+"u c #EBEAE8",
+"v c #E1DFDC",
+"w c #B6B6B4",
+"x c #72706C",
+"y c #B1B0AF",
+"z c #818180",
+"A c #AFAFAD",
+"B c #EFEFED",
+"C c #EFEEEC",
+"D c #ECEBE9",
+"E c #E8E7E5",
+"F c #A4A4A1",
+"G c #C4C3C0",
+"H c #817D74",
+"I c #7F7F7E",
+"J c #7F7E7D",
+"K c #EEEDEB",
+"L c #EDECEA",
+"M c #E8E7E4",
+"N c #E7E6E3",
+"O c #8B867D",
+"P c #7D7D7C",
+"Q c #ACABA9",
+"R c #91908E",
+"S c #8E8E8C",
+"T c #E6E4E1",
+"U c #A2A19F",
+"V c #646462",
+"W c #A49E93",
+"X c #7C7B7A",
+"Y c #7B7B7A",
+"Z c #E7E5E2",
+"` c #E4E3DF",
+" . c #E3E2DE",
+".. c #DEDDD9",
+"+. c #DDDCD8",
+"@. c #E0DFDB",
+"#. c #A19C90",
+"$. c #E6E5E2",
+"%. c #E5E4E1",
+"&. c #8E8E8B",
+"*. c #747371",
+"=. c #0B0B0B",
+"-. c #DCDBD7",
+";. c #DBD9D5",
+">. c #A19B90",
+",. c #E3E2DF",
+"'. c #E4E2DF",
+"). c #DCDAD6",
+"!. c #D9D7D3",
+"~. c #E1E0DC",
+"{. c #E2E1DD",
+"]. c #71716F",
+"^. c #0B0B0A",
+"/. c #706F6D",
+"(. c #D8D6D1",
+"_. c #9F998D",
+":. c #999891",
+"<. c #A39D92",
+"[. c #A39D91",
+"}. c #A29C90",
+"|. c #A19B8F",
+"1. c #9D978C",
+"2. c #9B968A",
+"3. c #676359",
+"4. c #919191",
+"5. c #757575",
". + + + + + + + + + @ # $ % & * ",
"+ = - - - - - ; > > , ' ) ! ~ { ",
"+ ] ^ / - ( _ : > < [ } - | 1 2 ",
/* XPM */
static char * type_unknown_xpm[] = {
"16 16 4 1",
-" c None",
-". c #FFFFFF",
-"+ c #000000",
-"@ c #BFBFBF",
+" c None",
+". c #FFFFFF",
+"+ c #000000",
+"@ c #BFBFBF",
"................",
"..++++++++......",
"..+......++.....",
/* XPM */
static char * type_vfile_xpm[] = {
"16 16 108 2",
-" c None",
-". c #8F8F8F",
-"+ c #FFFFFF",
-"@ c #B0B0B0",
-"# c #A7A7A7",
-"$ c #939393",
-"% c #8B8B8B",
-"& c #2B2B2B",
-"* c #0C0C0C",
-"= c #010101",
-"- c #000000",
-"; c #EFEFEF",
-"> c #ECECEC",
-", c #E8E8E8",
-"' c #E9E9E9",
-") c #DFDFDF",
-"! c #DCDCDC",
-"~ c #E3E3E3",
-"{ c #DADADA",
-"] c #D5D5D5",
-"^ c #D4D4D4",
-"/ c #D2D2D2",
-"( c #A6A6A6",
-"_ c #828181",
-": c #F2F2F2",
-"< c #FBFBFB",
-"[ c #FAFAFA",
-"} c #929292",
-"| c #3B3A3A",
-"1 c #656769",
-"2 c #626261",
-"3 c #E6E6E5",
-"4 c #FDFDFD",
-"5 c #868685",
-"6 c #292827",
-"7 c #9CA4AF",
-"8 c #E1F2FF",
-"9 c #A6AEB4",
-"0 c #5B5C5B",
-"a c #D7D7D7",
-"b c #F8F8F8",
-"c c #787777",
-"d c #1D1D1D",
-"e c #787C80",
-"f c #B6C2D2",
-"g c #E0F0FF",
-"h c #F3FEFF",
-"i c #C3C6C8",
-"j c #666666",
-"k c #CCCCCB",
-"l c #F4F4F4",
-"m c #707070",
-"n c #767E86",
-"o c #EAF8FF",
-"p c #BFC6D0",
-"q c #C4CCD6",
-"r c #EBF4FF",
-"s c #767575",
-"t c #9C9C9C",
-"u c #EDEDED",
-"v c #636363",
-"w c #0E0F0F",
-"x c #595C60",
-"y c #88909B",
-"z c #E6F1FD",
-"A c #F1FDFF",
-"B c #D4DBE1",
-"C c #CDCED0",
-"D c #7B7B7A",
-"E c #949494",
-"F c #F7F7F7",
-"G c #878787",
-"H c #0E0E0E",
-"I c #999A9B",
-"J c #ABB3BB",
-"K c #858D97",
-"L c #CCD7E5",
-"M c #B0B3B6",
-"N c #676665",
-"O c #A0A0A0",
-"P c #E4E4E4",
-"Q c #616161",
-"R c #7E7E80",
-"S c #F1F8FC",
-"T c #F7FFFF",
-"U c #A0ABB5",
-"V c #363738",
-"W c #363535",
-"X c #AEAEAE",
-"Y c #FCFCFC",
-"Z c #F1F1F1",
-"` c #FEFEFE",
-" . c #EEEEEE",
-".. c #686766",
-"+. c #76797D",
-"@. c #C5CFDC",
-"#. c #6A6D70",
-"$. c #3C3B3A",
-"%. c #BEBEBE",
-"&. c #A8A8A8",
-"*. c #F9F9F9",
-"=. c #F6F6F5",
-"-. c #767675",
-";. c #444444",
-">. c #525151",
-",. c #CFCFCF",
-"'. c #F0F0F0",
-"). c #ADADAD",
+" c None",
+". c #8F8F8F",
+"+ c #FFFFFF",
+"@ c #B0B0B0",
+"# c #A7A7A7",
+"$ c #939393",
+"% c #8B8B8B",
+"& c #2B2B2B",
+"* c #0C0C0C",
+"= c #010101",
+"- c #000000",
+"; c #EFEFEF",
+"> c #ECECEC",
+", c #E8E8E8",
+"' c #E9E9E9",
+") c #DFDFDF",
+"! c #DCDCDC",
+"~ c #E3E3E3",
+"{ c #DADADA",
+"] c #D5D5D5",
+"^ c #D4D4D4",
+"/ c #D2D2D2",
+"( c #A6A6A6",
+"_ c #828181",
+": c #F2F2F2",
+"< c #FBFBFB",
+"[ c #FAFAFA",
+"} c #929292",
+"| c #3B3A3A",
+"1 c #656769",
+"2 c #626261",
+"3 c #E6E6E5",
+"4 c #FDFDFD",
+"5 c #868685",
+"6 c #292827",
+"7 c #9CA4AF",
+"8 c #E1F2FF",
+"9 c #A6AEB4",
+"0 c #5B5C5B",
+"a c #D7D7D7",
+"b c #F8F8F8",
+"c c #787777",
+"d c #1D1D1D",
+"e c #787C80",
+"f c #B6C2D2",
+"g c #E0F0FF",
+"h c #F3FEFF",
+"i c #C3C6C8",
+"j c #666666",
+"k c #CCCCCB",
+"l c #F4F4F4",
+"m c #707070",
+"n c #767E86",
+"o c #EAF8FF",
+"p c #BFC6D0",
+"q c #C4CCD6",
+"r c #EBF4FF",
+"s c #767575",
+"t c #9C9C9C",
+"u c #EDEDED",
+"v c #636363",
+"w c #0E0F0F",
+"x c #595C60",
+"y c #88909B",
+"z c #E6F1FD",
+"A c #F1FDFF",
+"B c #D4DBE1",
+"C c #CDCED0",
+"D c #7B7B7A",
+"E c #949494",
+"F c #F7F7F7",
+"G c #878787",
+"H c #0E0E0E",
+"I c #999A9B",
+"J c #ABB3BB",
+"K c #858D97",
+"L c #CCD7E5",
+"M c #B0B3B6",
+"N c #676665",
+"O c #A0A0A0",
+"P c #E4E4E4",
+"Q c #616161",
+"R c #7E7E80",
+"S c #F1F8FC",
+"T c #F7FFFF",
+"U c #A0ABB5",
+"V c #363738",
+"W c #363535",
+"X c #AEAEAE",
+"Y c #FCFCFC",
+"Z c #F1F1F1",
+"` c #FEFEFE",
+" . c #EEEEEE",
+".. c #686766",
+"+. c #76797D",
+"@. c #C5CFDC",
+"#. c #6A6D70",
+"$. c #3C3B3A",
+"%. c #BEBEBE",
+"&. c #A8A8A8",
+"*. c #F9F9F9",
+"=. c #F6F6F5",
+"-. c #767675",
+";. c #444444",
+">. c #525151",
+",. c #CFCFCF",
+"'. c #F0F0F0",
+"). c #ADADAD",
". . . . . . . . . . . . . . . . ",
". + @ # $ % & * = - - - - - + . ",
". + ; > , ' ) ! ~ ~ { ] ^ / + . ",
/* XPM */
static char * update_ascii_xpm[] = {
"34 34 96 2",
-" c None",
-". c #BCBCBC",
-"+ c #F7F7F7",
-"@ c #F3F3F3",
-"# c #F1F1F1",
-"$ c #EFEFEF",
-"% c #ECECEC",
-"& c #EAEAEA",
-"* c #E9E9E9",
-"= c #C2C2C2",
-"- c #808080",
-"; c #FFFFFF",
-"> c #FEFEFE",
-", c #FBFBFB",
-"' c #F2F2F2",
-") c #EEEEEE",
-"! c #E3E3E3",
-"~ c #BDBDBD",
-"{ c #C0C0C0",
-"] c #BBBBBB",
-"^ c #B6B6B6",
-"/ c #AFAFAF",
-"( c #A2A2A2",
-"_ c #8E8E8E",
-": c #828282",
-"< c #FCFCFC",
-"[ c #F8F8F8",
-"} c #AEAEAE",
-"| c #A9A9A9",
-"1 c #9E9E9E",
-"2 c #C4C4C4",
-"3 c #BABABA",
-"4 c #CACACA",
-"5 c #C9C9C9",
-"6 c #B5B5B5",
-"7 c #F9F9F9",
-"8 c #E0E0E0",
-"9 c #CCCCCC",
-"0 c #BEBEBE",
-"a c #FDFDFD",
-"b c #FAFAFA",
-"c c #F5F5F5",
-"d c #BFBFBF",
-"e c #A0A0A0",
-"f c #D5D5D5",
-"g c #C6C6C6",
-"h c #F4F4F4",
-"i c #C1C1C1",
-"j c #E1E1E1",
-"k c #DBDBDB",
-"l c #CECECE",
-"m c #F6F6F6",
-"n c #D4D4D4",
-"o c #E4E4E4",
-"p c #DEDEDE",
-"q c #D1D1D1",
-"r c #EBEBEB",
-"s c #B8B8B8",
-"t c #B7B7B7",
-"u c #DCDCDC",
-"v c #D3D3D3",
-"w c #F0F0F0",
-"x c #E8E8E8",
-"y c #868686",
-"z c #DADADA",
-"A c #D2D2D2",
-"B c #E7E7E7",
-"C c #878787",
-"D c #888888",
-"E c #E5E5E5",
-"F c #E2E2E2",
-"G c #D7D7D7",
-"H c #DFDFDF",
-"I c #D0D0D0",
-"J c #E6E6E6",
-"K c #DDDDDD",
-"L c #767676",
-"M c #777777",
-"N c #CDCDCD",
-"O c #EDEDED",
-"P c #D8D8D8",
-"Q c #B9B9B9",
-"R c #D6D6D6",
-"S c #B3B3B3",
-"T c #CBCBCB",
-"U c #CFCFCF",
-"V c #787878",
-"W c #ACACAC",
-"X c #A6A6A6",
-"Y c #9D9D9D",
-"Z c #9A9A9A",
-"` c #969696",
-" . c #919191",
-".. c #8C8C8C",
-"+. c #848484",
-"@. c #818181",
+" c None",
+". c #BCBCBC",
+"+ c #F7F7F7",
+"@ c #F3F3F3",
+"# c #F1F1F1",
+"$ c #EFEFEF",
+"% c #ECECEC",
+"& c #EAEAEA",
+"* c #E9E9E9",
+"= c #C2C2C2",
+"- c #808080",
+"; c #FFFFFF",
+"> c #FEFEFE",
+", c #FBFBFB",
+"' c #F2F2F2",
+") c #EEEEEE",
+"! c #E3E3E3",
+"~ c #BDBDBD",
+"{ c #C0C0C0",
+"] c #BBBBBB",
+"^ c #B6B6B6",
+"/ c #AFAFAF",
+"( c #A2A2A2",
+"_ c #8E8E8E",
+": c #828282",
+"< c #FCFCFC",
+"[ c #F8F8F8",
+"} c #AEAEAE",
+"| c #A9A9A9",
+"1 c #9E9E9E",
+"2 c #C4C4C4",
+"3 c #BABABA",
+"4 c #CACACA",
+"5 c #C9C9C9",
+"6 c #B5B5B5",
+"7 c #F9F9F9",
+"8 c #E0E0E0",
+"9 c #CCCCCC",
+"0 c #BEBEBE",
+"a c #FDFDFD",
+"b c #FAFAFA",
+"c c #F5F5F5",
+"d c #BFBFBF",
+"e c #A0A0A0",
+"f c #D5D5D5",
+"g c #C6C6C6",
+"h c #F4F4F4",
+"i c #C1C1C1",
+"j c #E1E1E1",
+"k c #DBDBDB",
+"l c #CECECE",
+"m c #F6F6F6",
+"n c #D4D4D4",
+"o c #E4E4E4",
+"p c #DEDEDE",
+"q c #D1D1D1",
+"r c #EBEBEB",
+"s c #B8B8B8",
+"t c #B7B7B7",
+"u c #DCDCDC",
+"v c #D3D3D3",
+"w c #F0F0F0",
+"x c #E8E8E8",
+"y c #868686",
+"z c #DADADA",
+"A c #D2D2D2",
+"B c #E7E7E7",
+"C c #878787",
+"D c #888888",
+"E c #E5E5E5",
+"F c #E2E2E2",
+"G c #D7D7D7",
+"H c #DFDFDF",
+"I c #D0D0D0",
+"J c #E6E6E6",
+"K c #DDDDDD",
+"L c #767676",
+"M c #777777",
+"N c #CDCDCD",
+"O c #EDEDED",
+"P c #D8D8D8",
+"Q c #B9B9B9",
+"R c #D6D6D6",
+"S c #B3B3B3",
+"T c #CBCBCB",
+"U c #CFCFCF",
+"V c #787878",
+"W c #ACACAC",
+"X c #A6A6A6",
+"Y c #9D9D9D",
+"Z c #9A9A9A",
+"` c #969696",
+" . c #919191",
+".. c #8C8C8C",
+"+. c #848484",
+"@. c #818181",
" ",
" . . . . . . . . . . . . . . . . ",
" . + + + + + + + + @ # $ % & * = - ",
/* XPM */
static char * update_binary_xpm[] = {
"34 34 292 2",
-" c None",
-". c #BCBCBC",
-"+ c #F7F7F7",
-"@ c #F3F3F3",
-"# c #F1F1F1",
-"$ c #EFEFEF",
-"% c #ECECEC",
-"& c #EAEAEA",
-"* c #E9E9E9",
-"= c #C2C2C2",
-"- c #808080",
-"; c #FFFFFF",
-"> c #FEFEFE",
-", c #FBFBFB",
-"' c #F2F2F2",
-") c #EEEEEE",
-"! c #E3E3E3",
-"~ c #647EAA",
-"{ c #5B77A6",
-"] c #6584AD",
-"^ c #718DB3",
-"/ c #5F7FAA",
-"( c #6080AB",
-"_ c #5C7AA7",
-": c #6684AC",
-"< c #5D7EAA",
-"[ c #6E97BD",
-"} c #6F98BE",
-"| c #6082AD",
-"1 c #F6F6F8",
-"2 c #FDFDFD",
-"3 c #BDBDBD",
-"4 c #C0C0C0",
-"5 c #BBBBBB",
-"6 c #B6B6B6",
-"7 c #AFAFAF",
-"8 c #A2A2A2",
-"9 c #8E8E8E",
-"0 c #828282",
-"a c #FBFCFD",
-"b c #5A79A7",
-"c c #6081AB",
-"d c #6385AE",
-"e c #688CB1",
-"f c #7CA1C3",
-"g c #799FC2",
-"h c #D8E2ED",
-"i c #F5F6F7",
-"j c #F9F9F9",
-"k c #F8F8F8",
-"l c #DBDBDB",
-"m c #D0D0D0",
-"n c #C4C4C4",
-"o c #5975A4",
-"p c #607BA8",
-"q c #5C78A7",
-"r c #6587AE",
-"s c #7298BF",
-"t c #7CA2C5",
-"u c #84A7C7",
-"v c #8AABC9",
-"w c #D7E2EC",
-"x c #5D7BA8",
-"y c #E8E8E8",
-"z c #E2E2E2",
-"A c #D8D8D8",
-"B c #C9C9C9",
-"C c #B5B5B5",
-"D c #5D7DA8",
-"E c #C3D4E4",
-"F c #E3EBF2",
-"G c #DCE6EF",
-"H c #B7CBDE",
-"I c #80A4C5",
-"J c #96B4CF",
-"K c #9CB8D3",
-"L c #ABC2D8",
-"M c #E1E2E5",
-"N c #EEEFF0",
-"O c #EBEBEB",
-"P c #E4E4E4",
-"Q c #DADADA",
-"R c #CCCCCC",
-"S c #BEBEBE",
-"T c #A9C1D8",
-"U c #E6EDF3",
-"V c #B0C5DB",
-"W c #91B1CE",
-"X c #A0BAD3",
-"Y c #98B6D1",
-"Z c #9EB9D3",
-"` c #A6BFD7",
-" . c #ADC4DA",
-".. c #C1D2E2",
-"+. c #DDE7F0",
-"@. c #7F9AB8",
-"#. c #E0E1E3",
-"$. c #EBEBEC",
-"%. c #D5D5D5",
-"&. c #C6C6C6",
-"*. c #B9CDE0",
-"=. c #D4E0EB",
-"-. c #97B5D0",
-";. c #749CC1",
-">. c #6386AE",
-",. c #5771A2",
-"'. c #A7C0D8",
-"). c #B1C6DC",
-"!. c #BBCEE0",
-"~. c #CBDAE8",
-"{. c #D1DEEA",
-"]. c #718DB1",
-"^. c #E5E5E6",
-"/. c #E7E7E7",
-"(. c #DEDEDE",
-"_. c #CECECE",
-":. c #E0E8F1",
-"<. c #5976A6",
-"[. c #6279A5",
-"}. c #B7BBC4",
-"|. c #B9BDC5",
-"1. c #B2C8DD",
-"2. c #C9D8E6",
-"3. c #DFE8F0",
-"4. c #6082AB",
-"5. c #D5D6D9",
-"6. c #E1E1E2",
-"7. c #E0E0E0",
-"8. c #D1D1D1",
-"9. c #D9E4EE",
-"0. c #A4BED7",
-"a. c #BABEC7",
-"b. c #BFC3CB",
-"c. c #C2C5CC",
-"d. c #6182AE",
-"e. c #D0DEE9",
-"f. c #C6D5E5",
-"g. c #8DAECC",
-"h. c #5A76A5",
-"i. c #D5D6D8",
-"j. c #E5E5E5",
-"k. c #DCDCDC",
-"l. c #D3D3D3",
-"m. c #668AAF",
-"n. c #86A9C9",
-"o. c #B5BAC3",
-"p. c #BEC2CA",
-"q. c #C9CCD2",
-"r. c #D1D3D8",
-"s. c #D9DBDF",
-"t. c #94B3CF",
-"u. c #5A78A5",
-"v. c #C9CACE",
-"w. c #D2D2D2",
-"x. c #C4D5E5",
-"y. c #B8BCC5",
-"z. c #CED1D7",
-"A. c #DEDFE3",
-"B. c #EAEBED",
-"C. c #7AA0C3",
-"D. c #6589AE",
-"E. c #BEC0C6",
-"F. c #DFDFDF",
-"G. c #5F80AA",
-"H. c #6D94BC",
-"I. c #698EB4",
-"J. c #CEDCE9",
-"K. c #678BB0",
-"L. c #BDC1C9",
-"M. c #E4E6E9",
-"N. c #EFF0F1",
-"O. c #DBE5EE",
-"P. c #E6ECF3",
-"Q. c #5972A1",
-"R. c #A8ACB4",
-"S. c #B8BBC1",
-"T. c #81A5C6",
-"U. c #A3BCD4",
-"V. c #637AA6",
-"W. c #C6C9D0",
-"X. c #DEE0E4",
-"Y. c #EEEFF1",
-"Z. c #F5F7FA",
-"`. c #6177A3",
-" + c #A5A9B2",
-".+ c #ABAFB7",
-"++ c #BBBEC3",
-"@+ c #DDDDDD",
-"#+ c #D7D7D7",
-"$+ c #9AB6D1",
-"%+ c #6382AB",
-"&+ c #CBCED4",
-"*+ c #D6E1EB",
-"=+ c #EBF1F6",
-"-+ c #CCDAE9",
-";+ c #ABAEB6",
-">+ c #B7BABF",
-",+ c #C7C9CC",
-"'+ c #A3BDD6",
-")+ c #AEC5DB",
-"!+ c #EFF2F6",
-"~+ c #F6F9FB",
-"{+ c #A4A8B1",
-"]+ c #B8BBC0",
-"^+ c #D2D3D4",
-"/+ c #D4D4D4",
-"(+ c #5E7EA9",
-"_+ c #B4C9DD",
-":+ c #BECFE1",
-"<+ c #EAF0F5",
-"[+ c #F9FBFC",
-"}+ c #FCFDFD",
-"|+ c #657EA7",
-"1+ c #B3B6BC",
-"2+ c #C6C7CB",
-"3+ c #D6D6D6",
-"4+ c #CDCDCD",
-"5+ c #C2D3E3",
-"6+ c #D1DFEA",
-"7+ c #E4ECF3",
-"8+ c #ACC3D9",
-"9+ c #E9EEF4",
-"0+ c #85A8C8",
-"a+ c #BBBDC2",
-"b+ c #CDCED0",
-"c+ c #D4D5D5",
-"d+ c #9BB7D2",
-"e+ c #B6B9BE",
-"f+ c #CACBCD",
-"g+ c #D3D3D4",
-"h+ c #F2F6F9",
-"i+ c #6079A4",
-"j+ c #A3A7AF",
-"k+ c #B0B3B8",
-"l+ c #C6C7C9",
-"m+ c #CFD0D0",
-"n+ c #CACACA",
-"o+ c #B4B8C0",
-"p+ c #93B2CE",
-"q+ c #A3A7B0",
-"r+ c #A1A5AE",
-"s+ c #A1A5AD",
-"t+ c #A5A8B0",
-"u+ c #B3B5BA",
-"v+ c #C5C6C8",
-"w+ c #CECECF",
-"x+ c #CBCBCB",
-"y+ c #909398",
-"z+ c #BFC2C9",
-"A+ c #B8BBC3",
-"B+ c #82A6C7",
-"C+ c #5771A1",
-"D+ c #ADB1B7",
-"E+ c #B0B3B9",
-"F+ c #AFB2B8",
-"G+ c #AEB0B6",
-"H+ c #BFC1C4",
-"I+ c #C9CACB",
-"J+ c #9D9EA1",
-"K+ c #D6D8DC",
-"L+ c #C9CCD1",
-"M+ c #BDBFC6",
-"N+ c #A5A9B1",
-"O+ c #B7BAC0",
-"P+ c #C2C3C7",
-"Q+ c #C7C9CB",
-"R+ c #C6C7CA",
-"S+ c #C3C4C7",
-"T+ c #CACACB",
-"U+ c #CFCFCF",
-"V+ c #A4A5A5",
-"W+ c #EBEBED",
-"X+ c #DADBDD",
-"Y+ c #CDCFD2",
-"Z+ c #BABCC2",
-"`+ c #A7ABB2",
-" @ c #B3B6BB",
-".@ c #C2C4C7",
-"+@ c #CDCDCF",
-"@@ c #D0D1D1",
-"#@ c #CECFCF",
-"$@ c #CDCDCE",
-"%@ c #A8A8A8",
-"&@ c #A4A4A5",
-"*@ c #9F9FA0",
-"=@ c #969798",
-"-@ c #8B8D90",
-";@ c #7E8086",
-">@ c #777A7F",
-",@ c #76797E",
-"'@ c #7B7C80",
-")@ c #7F7F81",
+" c None",
+". c #BCBCBC",
+"+ c #F7F7F7",
+"@ c #F3F3F3",
+"# c #F1F1F1",
+"$ c #EFEFEF",
+"% c #ECECEC",
+"& c #EAEAEA",
+"* c #E9E9E9",
+"= c #C2C2C2",
+"- c #808080",
+"; c #FFFFFF",
+"> c #FEFEFE",
+", c #FBFBFB",
+"' c #F2F2F2",
+") c #EEEEEE",
+"! c #E3E3E3",
+"~ c #647EAA",
+"{ c #5B77A6",
+"] c #6584AD",
+"^ c #718DB3",
+"/ c #5F7FAA",
+"( c #6080AB",
+"_ c #5C7AA7",
+": c #6684AC",
+"< c #5D7EAA",
+"[ c #6E97BD",
+"} c #6F98BE",
+"| c #6082AD",
+"1 c #F6F6F8",
+"2 c #FDFDFD",
+"3 c #BDBDBD",
+"4 c #C0C0C0",
+"5 c #BBBBBB",
+"6 c #B6B6B6",
+"7 c #AFAFAF",
+"8 c #A2A2A2",
+"9 c #8E8E8E",
+"0 c #828282",
+"a c #FBFCFD",
+"b c #5A79A7",
+"c c #6081AB",
+"d c #6385AE",
+"e c #688CB1",
+"f c #7CA1C3",
+"g c #799FC2",
+"h c #D8E2ED",
+"i c #F5F6F7",
+"j c #F9F9F9",
+"k c #F8F8F8",
+"l c #DBDBDB",
+"m c #D0D0D0",
+"n c #C4C4C4",
+"o c #5975A4",
+"p c #607BA8",
+"q c #5C78A7",
+"r c #6587AE",
+"s c #7298BF",
+"t c #7CA2C5",
+"u c #84A7C7",
+"v c #8AABC9",
+"w c #D7E2EC",
+"x c #5D7BA8",
+"y c #E8E8E8",
+"z c #E2E2E2",
+"A c #D8D8D8",
+"B c #C9C9C9",
+"C c #B5B5B5",
+"D c #5D7DA8",
+"E c #C3D4E4",
+"F c #E3EBF2",
+"G c #DCE6EF",
+"H c #B7CBDE",
+"I c #80A4C5",
+"J c #96B4CF",
+"K c #9CB8D3",
+"L c #ABC2D8",
+"M c #E1E2E5",
+"N c #EEEFF0",
+"O c #EBEBEB",
+"P c #E4E4E4",
+"Q c #DADADA",
+"R c #CCCCCC",
+"S c #BEBEBE",
+"T c #A9C1D8",
+"U c #E6EDF3",
+"V c #B0C5DB",
+"W c #91B1CE",
+"X c #A0BAD3",
+"Y c #98B6D1",
+"Z c #9EB9D3",
+"` c #A6BFD7",
+" . c #ADC4DA",
+".. c #C1D2E2",
+"+. c #DDE7F0",
+"@. c #7F9AB8",
+"#. c #E0E1E3",
+"$. c #EBEBEC",
+"%. c #D5D5D5",
+"&. c #C6C6C6",
+"*. c #B9CDE0",
+"=. c #D4E0EB",
+"-. c #97B5D0",
+";. c #749CC1",
+">. c #6386AE",
+",. c #5771A2",
+"'. c #A7C0D8",
+"). c #B1C6DC",
+"!. c #BBCEE0",
+"~. c #CBDAE8",
+"{. c #D1DEEA",
+"]. c #718DB1",
+"^. c #E5E5E6",
+"/. c #E7E7E7",
+"(. c #DEDEDE",
+"_. c #CECECE",
+":. c #E0E8F1",
+"<. c #5976A6",
+"[. c #6279A5",
+"}. c #B7BBC4",
+"|. c #B9BDC5",
+"1. c #B2C8DD",
+"2. c #C9D8E6",
+"3. c #DFE8F0",
+"4. c #6082AB",
+"5. c #D5D6D9",
+"6. c #E1E1E2",
+"7. c #E0E0E0",
+"8. c #D1D1D1",
+"9. c #D9E4EE",
+"0. c #A4BED7",
+"a. c #BABEC7",
+"b. c #BFC3CB",
+"c. c #C2C5CC",
+"d. c #6182AE",
+"e. c #D0DEE9",
+"f. c #C6D5E5",
+"g. c #8DAECC",
+"h. c #5A76A5",
+"i. c #D5D6D8",
+"j. c #E5E5E5",
+"k. c #DCDCDC",
+"l. c #D3D3D3",
+"m. c #668AAF",
+"n. c #86A9C9",
+"o. c #B5BAC3",
+"p. c #BEC2CA",
+"q. c #C9CCD2",
+"r. c #D1D3D8",
+"s. c #D9DBDF",
+"t. c #94B3CF",
+"u. c #5A78A5",
+"v. c #C9CACE",
+"w. c #D2D2D2",
+"x. c #C4D5E5",
+"y. c #B8BCC5",
+"z. c #CED1D7",
+"A. c #DEDFE3",
+"B. c #EAEBED",
+"C. c #7AA0C3",
+"D. c #6589AE",
+"E. c #BEC0C6",
+"F. c #DFDFDF",
+"G. c #5F80AA",
+"H. c #6D94BC",
+"I. c #698EB4",
+"J. c #CEDCE9",
+"K. c #678BB0",
+"L. c #BDC1C9",
+"M. c #E4E6E9",
+"N. c #EFF0F1",
+"O. c #DBE5EE",
+"P. c #E6ECF3",
+"Q. c #5972A1",
+"R. c #A8ACB4",
+"S. c #B8BBC1",
+"T. c #81A5C6",
+"U. c #A3BCD4",
+"V. c #637AA6",
+"W. c #C6C9D0",
+"X. c #DEE0E4",
+"Y. c #EEEFF1",
+"Z. c #F5F7FA",
+"`. c #6177A3",
+" + c #A5A9B2",
+".+ c #ABAFB7",
+"++ c #BBBEC3",
+"@+ c #DDDDDD",
+"#+ c #D7D7D7",
+"$+ c #9AB6D1",
+"%+ c #6382AB",
+"&+ c #CBCED4",
+"*+ c #D6E1EB",
+"=+ c #EBF1F6",
+"-+ c #CCDAE9",
+";+ c #ABAEB6",
+">+ c #B7BABF",
+",+ c #C7C9CC",
+"'+ c #A3BDD6",
+")+ c #AEC5DB",
+"!+ c #EFF2F6",
+"~+ c #F6F9FB",
+"{+ c #A4A8B1",
+"]+ c #B8BBC0",
+"^+ c #D2D3D4",
+"/+ c #D4D4D4",
+"(+ c #5E7EA9",
+"_+ c #B4C9DD",
+":+ c #BECFE1",
+"<+ c #EAF0F5",
+"[+ c #F9FBFC",
+"}+ c #FCFDFD",
+"|+ c #657EA7",
+"1+ c #B3B6BC",
+"2+ c #C6C7CB",
+"3+ c #D6D6D6",
+"4+ c #CDCDCD",
+"5+ c #C2D3E3",
+"6+ c #D1DFEA",
+"7+ c #E4ECF3",
+"8+ c #ACC3D9",
+"9+ c #E9EEF4",
+"0+ c #85A8C8",
+"a+ c #BBBDC2",
+"b+ c #CDCED0",
+"c+ c #D4D5D5",
+"d+ c #9BB7D2",
+"e+ c #B6B9BE",
+"f+ c #CACBCD",
+"g+ c #D3D3D4",
+"h+ c #F2F6F9",
+"i+ c #6079A4",
+"j+ c #A3A7AF",
+"k+ c #B0B3B8",
+"l+ c #C6C7C9",
+"m+ c #CFD0D0",
+"n+ c #CACACA",
+"o+ c #B4B8C0",
+"p+ c #93B2CE",
+"q+ c #A3A7B0",
+"r+ c #A1A5AE",
+"s+ c #A1A5AD",
+"t+ c #A5A8B0",
+"u+ c #B3B5BA",
+"v+ c #C5C6C8",
+"w+ c #CECECF",
+"x+ c #CBCBCB",
+"y+ c #909398",
+"z+ c #BFC2C9",
+"A+ c #B8BBC3",
+"B+ c #82A6C7",
+"C+ c #5771A1",
+"D+ c #ADB1B7",
+"E+ c #B0B3B9",
+"F+ c #AFB2B8",
+"G+ c #AEB0B6",
+"H+ c #BFC1C4",
+"I+ c #C9CACB",
+"J+ c #9D9EA1",
+"K+ c #D6D8DC",
+"L+ c #C9CCD1",
+"M+ c #BDBFC6",
+"N+ c #A5A9B1",
+"O+ c #B7BAC0",
+"P+ c #C2C3C7",
+"Q+ c #C7C9CB",
+"R+ c #C6C7CA",
+"S+ c #C3C4C7",
+"T+ c #CACACB",
+"U+ c #CFCFCF",
+"V+ c #A4A5A5",
+"W+ c #EBEBED",
+"X+ c #DADBDD",
+"Y+ c #CDCFD2",
+"Z+ c #BABCC2",
+"`+ c #A7ABB2",
+" @ c #B3B6BB",
+".@ c #C2C4C7",
+"+@ c #CDCDCF",
+"@@ c #D0D1D1",
+"#@ c #CECFCF",
+"$@ c #CDCDCE",
+"%@ c #A8A8A8",
+"&@ c #A4A4A5",
+"*@ c #9F9FA0",
+"=@ c #969798",
+"-@ c #8B8D90",
+";@ c #7E8086",
+">@ c #777A7F",
+",@ c #76797E",
+"'@ c #7B7C80",
+")@ c #7F7F81",
" ",
" . . . . . . . . . . . . . . . . ",
" . + + + + + + + + @ # $ % & * = - ",
/* XPM */
static char * update_document_xpm[] = {
"34 34 102 2",
-" c None",
-". c #BCBCBC",
-"+ c #F7F7F7",
-"@ c #F3F3F3",
-"# c #F1F1F1",
-"$ c #EFEFEF",
-"% c #ECECEC",
-"& c #EAEAEA",
-"* c #E9E9E9",
-"= c #C2C2C2",
-"- c #808080",
-"; c #FFFFFF",
-"> c #FEFEFE",
-", c #FBFBFB",
-"' c #F2F2F2",
-") c #EEEEEE",
-"! c #B2B2B2",
-"~ c #E3E3E3",
-"{ c #B1B1B1",
-"] c #BDBDBD",
-"^ c #C0C0C0",
-"/ c #B6B6B6",
-"( c #AFAFAF",
-"_ c #A2A2A2",
-": c #8E8E8E",
-"< c #828282",
-"[ c #EDEDED",
-"} c #E2E2E2",
-"| c #DBDBDB",
-"1 c #D0D0D0",
-"2 c #C4C4C4",
-"3 c #FAFAFA",
-"4 c #F4F4F4",
-"5 c #D8D8D8",
-"6 c #C9C9C9",
-"7 c #B5B5B5",
-"8 c #E6E6E6",
-"9 c #DCDCDC",
-"0 c #DADADA",
-"a c #CCCCCC",
-"b c #BEBEBE",
-"c c #ADADAD",
-"d c #A8A8A8",
-"e c #EBEBEB",
-"f c #DFDFDF",
-"g c #D7D7D7",
-"h c #D5D5D5",
-"i c #C6C6C6",
-"j c #F9F9F9",
-"k c #F6F6F6",
-"l c #E7E7E7",
-"m c #CECECE",
-"n c #AEAEAE",
-"o c #ABABAB",
-"p c #AAAAAA",
-"q c #A4A4A4",
-"r c #9F9F9F",
-"s c #D1D1D1",
-"t c #F8F8F8",
-"u c #E0E0E0",
-"v c #DEDEDE",
-"w c #D3D3D3",
-"x c #A6A6A6",
-"y c #A5A5A5",
-"z c #D2D2D2",
-"A c #F5F5F5",
-"B c #A1A1A1",
-"C c #CBCBCB",
-"D c #C8C8C8",
-"E c #9D9D9D",
-"F c #ACACAC",
-"G c #E5E5E5",
-"H c #E4E4E4",
-"I c #9C9C9C",
-"J c #DDDDDD",
-"K c #A3A3A3",
-"L c #E1E1E1",
-"M c #9A9A9A",
-"N c #A7A7A7",
-"O c #A0A0A0",
-"P c #9E9E9E",
-"Q c #9B9B9B",
-"R c #989898",
-"S c #D4D4D4",
-"T c #CDCDCD",
-"U c #F0F0F0",
-"V c #E8E8E8",
-"W c #D6D6D6",
-"X c #B9B9B9",
-"Y c #969696",
-"Z c #959595",
-"` c #939393",
-" . c #B3B3B3",
-".. c #999999",
-"+. c #919191",
-"@. c #CACACA",
-"#. c #CFCFCF",
-"$. c #A9A9A9",
-"%. c #8C8C8C",
-"&. c #888888",
-"*. c #848484",
-"=. c #818181",
+" c None",
+". c #BCBCBC",
+"+ c #F7F7F7",
+"@ c #F3F3F3",
+"# c #F1F1F1",
+"$ c #EFEFEF",
+"% c #ECECEC",
+"& c #EAEAEA",
+"* c #E9E9E9",
+"= c #C2C2C2",
+"- c #808080",
+"; c #FFFFFF",
+"> c #FEFEFE",
+", c #FBFBFB",
+"' c #F2F2F2",
+") c #EEEEEE",
+"! c #B2B2B2",
+"~ c #E3E3E3",
+"{ c #B1B1B1",
+"] c #BDBDBD",
+"^ c #C0C0C0",
+"/ c #B6B6B6",
+"( c #AFAFAF",
+"_ c #A2A2A2",
+": c #8E8E8E",
+"< c #828282",
+"[ c #EDEDED",
+"} c #E2E2E2",
+"| c #DBDBDB",
+"1 c #D0D0D0",
+"2 c #C4C4C4",
+"3 c #FAFAFA",
+"4 c #F4F4F4",
+"5 c #D8D8D8",
+"6 c #C9C9C9",
+"7 c #B5B5B5",
+"8 c #E6E6E6",
+"9 c #DCDCDC",
+"0 c #DADADA",
+"a c #CCCCCC",
+"b c #BEBEBE",
+"c c #ADADAD",
+"d c #A8A8A8",
+"e c #EBEBEB",
+"f c #DFDFDF",
+"g c #D7D7D7",
+"h c #D5D5D5",
+"i c #C6C6C6",
+"j c #F9F9F9",
+"k c #F6F6F6",
+"l c #E7E7E7",
+"m c #CECECE",
+"n c #AEAEAE",
+"o c #ABABAB",
+"p c #AAAAAA",
+"q c #A4A4A4",
+"r c #9F9F9F",
+"s c #D1D1D1",
+"t c #F8F8F8",
+"u c #E0E0E0",
+"v c #DEDEDE",
+"w c #D3D3D3",
+"x c #A6A6A6",
+"y c #A5A5A5",
+"z c #D2D2D2",
+"A c #F5F5F5",
+"B c #A1A1A1",
+"C c #CBCBCB",
+"D c #C8C8C8",
+"E c #9D9D9D",
+"F c #ACACAC",
+"G c #E5E5E5",
+"H c #E4E4E4",
+"I c #9C9C9C",
+"J c #DDDDDD",
+"K c #A3A3A3",
+"L c #E1E1E1",
+"M c #9A9A9A",
+"N c #A7A7A7",
+"O c #A0A0A0",
+"P c #9E9E9E",
+"Q c #9B9B9B",
+"R c #989898",
+"S c #D4D4D4",
+"T c #CDCDCD",
+"U c #F0F0F0",
+"V c #E8E8E8",
+"W c #D6D6D6",
+"X c #B9B9B9",
+"Y c #969696",
+"Z c #959595",
+"` c #939393",
+" . c #B3B3B3",
+".. c #999999",
+"+. c #919191",
+"@. c #CACACA",
+"#. c #CFCFCF",
+"$. c #A9A9A9",
+"%. c #8C8C8C",
+"&. c #888888",
+"*. c #848484",
+"=. c #818181",
" . . . . . . . . . . . . . . . . ",
" . + + + + + + + + @ # $ % & * = - ",
" . + ; ; ; ; ; ; ; ; > ; , ' ) = ; - ",
/* XPM */
static char * update_info_xpm[] = {
"34 34 271 2",
-" c None",
-". c #BCBCBC",
-"+ c #F7F7F7",
-"@ c #F3F3F3",
-"# c #F1F1F1",
-"$ c #EFEFEF",
-"% c #ECECEC",
-"& c #EAEAEA",
-"* c #E9E9E9",
-"= c #C2C2C2",
-"- c #808080",
-"; c #FFFFFF",
-"> c #FEFEFE",
-", c #FBFBFB",
-"' c #F2F2F2",
-") c #EEEEEE",
-"! c #E3E3E3",
-"~ c #BDBDBD",
-"{ c #C0C0C0",
-"] c #BBBBBB",
-"^ c #B6B6B6",
-"/ c #AFAFAF",
-"( c #A2A2A2",
-"_ c #8E8E8E",
-": c #828282",
-"< c #FCFCFC",
-"[ c #F8F8F8",
-"} c #DBDBDB",
-"| c #D0D0D0",
-"1 c #C4C4C4",
-"2 c #F0F1F4",
-"3 c #D5DAE9",
-"4 c #B2BFD9",
-"5 c #9DACCF",
-"6 c #E8E8E8",
-"7 c #E2E2E2",
-"8 c #D8D8D8",
-"9 c #C9C9C9",
-"0 c #B5B5B5",
-"a c #F7F8FA",
-"b c #C8D0E2",
-"c c #8FA9DA",
-"d c #789ED7",
-"e c #87AFDF",
-"f c #98BCE4",
-"g c #8CA7D8",
-"h c #C2CBDC",
-"i c #E7E8EA",
-"j c #EBEBEB",
-"k c #E4E4E4",
-"l c #DADADA",
-"m c #CCCCCC",
-"n c #BEBEBE",
-"o c #ADBFE1",
-"p c #85A9DB",
-"q c #97BBE4",
-"r c #AFC6E8",
-"s c #B0C7E9",
-"t c #AEC5E7",
-"u c #A8C2E5",
-"v c #92B0E1",
-"w c #7F9DD7",
-"x c #A5B4D4",
-"y c #DDDFE1",
-"z c #D5D5D5",
-"A c #C6C6C6",
-"B c #F7F8FB",
-"C c #AFC0E3",
-"D c #87ABDC",
-"E c #A2BCE3",
-"F c #A5BEE4",
-"G c #9EBDE3",
-"H c #9AB8E1",
-"I c #99B9E0",
-"J c #92B3E1",
-"K c #91B1E0",
-"L c #78A2D6",
-"M c #A2B6D6",
-"N c #E0E1E3",
-"O c #DEDEDE",
-"P c #CECECE",
-"Q c #CAD6EA",
-"R c #89ADDB",
-"S c #87AADE",
-"T c #79A2DA",
-"U c #6C9CD7",
-"V c #678FD2",
-"W c #5F8CD0",
-"X c #5886D3",
-"Y c #618CD2",
-"Z c #6890D3",
-"` c #76A1D7",
-" . c #7196D2",
-".. c #B7C0D4",
-"+. c #D1D1D1",
-"@. c #F1F3F7",
-"#. c #93B0DE",
-"$. c #6C93D6",
-"%. c #638ED4",
-"&. c #5381CE",
-"*. c #4472C5",
-"=. c #3868C1",
-"-. c #3262BB",
-";. c #FDFDFD",
-">. c #2047A9",
-",. c #325CB3",
-"'. c #3666BD",
-"). c #386DC5",
-"!. c #4678CB",
-"~. c #4A7ACC",
-"{. c #7998C9",
-"]. c #D5D7DA",
-"^. c #DCDCDC",
-"/. c #D3D3D3",
-"(. c #D4DCEC",
-"_. c #6187CC",
-":. c #4674C9",
-"<. c #3867BD",
-"[. c #2F56AE",
-"}. c #2951A2",
-"|. c #274996",
-"1. c #264895",
-"2. c #183289",
-"3. c #254492",
-"4. c #254897",
-"5. c #2A509D",
-"6. c #2D55A6",
-"7. c #4B6CB6",
-"8. c #B9BFCF",
-"9. c #D2D2D2",
-"0. c #A9B7D5",
-"a. c #3A62B5",
-"b. c #2A57AB",
-"c. c #264F9B",
-"d. c #26448F",
-"e. c #223D83",
-"f. c #203A7D",
-"g. c #1E3879",
-"h. c #1F3974",
-"i. c #122871",
-"j. c #1F3A7E",
-"k. c #214388",
-"l. c #2E4E98",
-"m. c #949EB9",
-"n. c #95A4C8",
-"o. c #203E83",
-"p. c #11276E",
-"q. c #1B346E",
-"r. c #1A336D",
-"s. c #1C376F",
-"t. c #1F3D7F",
-"u. c #808CAC",
-"v. c #8E9AB4",
-"w. c #2F55AC",
-"x. c #2D53A2",
-"y. c #183593",
-"z. c #1C3473",
-"A. c #79839D",
-"B. c #D7D7D7",
-"C. c #9CA7C0",
-"D. c #274286",
-"E. c #3261B7",
-"F. c #3464BB",
-"G. c #244376",
-"H. c #838EA3",
-"I. c #C4CAD8",
-"J. c #38538D",
-"K. c #4C7FCB",
-"L. c #4A78CB",
-"M. c #406FC5",
-"N. c #2654BB",
-"O. c #284AB7",
-"P. c #34497F",
-"Q. c #A9AFBB",
-"R. c #D4D4D4",
-"S. c #E5E7ED",
-"T. c #697C9F",
-"U. c #8CAEE1",
-"V. c #7CA5DD",
-"W. c #739BD8",
-"X. c #3C61C1",
-"Y. c #4275C9",
-"Z. c #596990",
-"`. c #C3C5CA",
-" + c #CDCDCD",
-".+ c #FAFAFA",
-"++ c #B4BDCE",
-"@+ c #4C6DB8",
-"#+ c #D3DCF0",
-"$+ c #CDDAEE",
-"%+ c #C4D6EF",
-"&+ c #BBD3EC",
-"*+ c #8FA3D6",
-"=+ c #859DD4",
-"-+ c #7C97CF",
-";+ c #6F8BD0",
-">+ c #7DA8DE",
-",+ c #3D5591",
-"'+ c #9CA4B5",
-")+ c #B9B9B9",
-"!+ c #F4F4F4",
-"~+ c #E7E9ED",
-"{+ c #919EB6",
-"]+ c #4772BF",
-"^+ c #CDDAEF",
-"/+ c #EDF3F8",
-"(+ c #EAF2F9",
-"_+ c #E7EEF8",
-":+ c #E5EBF6",
-"<+ c #E0E9F5",
-"[+ c #DBE6F4",
-"}+ c #D6E1F1",
-"|+ c #92B3E0",
-"1+ c #39589E",
-"2+ c #818DA6",
-"3+ c #CACBCF",
-"4+ c #F5F5F5",
-"5+ c #DADDE5",
-"6+ c #8F9CB7",
-"7+ c #618BCF",
-"8+ c #B4C8E8",
-"9+ c #F7F8FC",
-"0+ c #F1F4FA",
-"a+ c #F1F2FA",
-"b+ c #F2F6FB",
-"c+ c #DFE8F4",
-"d+ c #9EBDE2",
-"e+ c #4D75BF",
-"f+ c #8290A9",
-"g+ c #C1C4CB",
-"h+ c #CACACA",
-"i+ c #B3B3B3",
-"j+ c #EDEDED",
-"k+ c #E0E2E6",
-"l+ c #ACB4C8",
-"m+ c #6A85BA",
-"n+ c #658ED2",
-"o+ c #7BA5D9",
-"p+ c #A5C0E6",
-"q+ c #729FD7",
-"r+ c #628BCF",
-"s+ c #647CB2",
-"t+ c #9EA6BA",
-"u+ c #C9CBCF",
-"v+ c #CBCBCB",
-"w+ c #E7E7E7",
-"x+ c #D0D3D9",
-"y+ c #B3BCCE",
-"z+ c #8E9EC1",
-"A+ c #7F8BAD",
-"B+ c #7E8AAC",
-"C+ c #8A9BBD",
-"D+ c #ABB3C6",
-"E+ c #C2C6CC",
-"F+ c #CFCFCF",
-"G+ c #ACACAC",
-"H+ c #E0E0E0",
-"I+ c #A9A9A9",
-"J+ c #E6E6E6",
-"K+ c #E1E1E1",
-"L+ c #DFDFDF",
-"M+ c #D6D6D6",
-"N+ c #A6A6A6",
-"O+ c #9D9D9D",
-"P+ c #9A9A9A",
-"Q+ c #969696",
-"R+ c #919191",
-"S+ c #8C8C8C",
-"T+ c #888888",
-"U+ c #848484",
-"V+ c #818181",
+" c None",
+". c #BCBCBC",
+"+ c #F7F7F7",
+"@ c #F3F3F3",
+"# c #F1F1F1",
+"$ c #EFEFEF",
+"% c #ECECEC",
+"& c #EAEAEA",
+"* c #E9E9E9",
+"= c #C2C2C2",
+"- c #808080",
+"; c #FFFFFF",
+"> c #FEFEFE",
+", c #FBFBFB",
+"' c #F2F2F2",
+") c #EEEEEE",
+"! c #E3E3E3",
+"~ c #BDBDBD",
+"{ c #C0C0C0",
+"] c #BBBBBB",
+"^ c #B6B6B6",
+"/ c #AFAFAF",
+"( c #A2A2A2",
+"_ c #8E8E8E",
+": c #828282",
+"< c #FCFCFC",
+"[ c #F8F8F8",
+"} c #DBDBDB",
+"| c #D0D0D0",
+"1 c #C4C4C4",
+"2 c #F0F1F4",
+"3 c #D5DAE9",
+"4 c #B2BFD9",
+"5 c #9DACCF",
+"6 c #E8E8E8",
+"7 c #E2E2E2",
+"8 c #D8D8D8",
+"9 c #C9C9C9",
+"0 c #B5B5B5",
+"a c #F7F8FA",
+"b c #C8D0E2",
+"c c #8FA9DA",
+"d c #789ED7",
+"e c #87AFDF",
+"f c #98BCE4",
+"g c #8CA7D8",
+"h c #C2CBDC",
+"i c #E7E8EA",
+"j c #EBEBEB",
+"k c #E4E4E4",
+"l c #DADADA",
+"m c #CCCCCC",
+"n c #BEBEBE",
+"o c #ADBFE1",
+"p c #85A9DB",
+"q c #97BBE4",
+"r c #AFC6E8",
+"s c #B0C7E9",
+"t c #AEC5E7",
+"u c #A8C2E5",
+"v c #92B0E1",
+"w c #7F9DD7",
+"x c #A5B4D4",
+"y c #DDDFE1",
+"z c #D5D5D5",
+"A c #C6C6C6",
+"B c #F7F8FB",
+"C c #AFC0E3",
+"D c #87ABDC",
+"E c #A2BCE3",
+"F c #A5BEE4",
+"G c #9EBDE3",
+"H c #9AB8E1",
+"I c #99B9E0",
+"J c #92B3E1",
+"K c #91B1E0",
+"L c #78A2D6",
+"M c #A2B6D6",
+"N c #E0E1E3",
+"O c #DEDEDE",
+"P c #CECECE",
+"Q c #CAD6EA",
+"R c #89ADDB",
+"S c #87AADE",
+"T c #79A2DA",
+"U c #6C9CD7",
+"V c #678FD2",
+"W c #5F8CD0",
+"X c #5886D3",
+"Y c #618CD2",
+"Z c #6890D3",
+"` c #76A1D7",
+" . c #7196D2",
+".. c #B7C0D4",
+"+. c #D1D1D1",
+"@. c #F1F3F7",
+"#. c #93B0DE",
+"$. c #6C93D6",
+"%. c #638ED4",
+"&. c #5381CE",
+"*. c #4472C5",
+"=. c #3868C1",
+"-. c #3262BB",
+";. c #FDFDFD",
+">. c #2047A9",
+",. c #325CB3",
+"'. c #3666BD",
+"). c #386DC5",
+"!. c #4678CB",
+"~. c #4A7ACC",
+"{. c #7998C9",
+"]. c #D5D7DA",
+"^. c #DCDCDC",
+"/. c #D3D3D3",
+"(. c #D4DCEC",
+"_. c #6187CC",
+":. c #4674C9",
+"<. c #3867BD",
+"[. c #2F56AE",
+"}. c #2951A2",
+"|. c #274996",
+"1. c #264895",
+"2. c #183289",
+"3. c #254492",
+"4. c #254897",
+"5. c #2A509D",
+"6. c #2D55A6",
+"7. c #4B6CB6",
+"8. c #B9BFCF",
+"9. c #D2D2D2",
+"0. c #A9B7D5",
+"a. c #3A62B5",
+"b. c #2A57AB",
+"c. c #264F9B",
+"d. c #26448F",
+"e. c #223D83",
+"f. c #203A7D",
+"g. c #1E3879",
+"h. c #1F3974",
+"i. c #122871",
+"j. c #1F3A7E",
+"k. c #214388",
+"l. c #2E4E98",
+"m. c #949EB9",
+"n. c #95A4C8",
+"o. c #203E83",
+"p. c #11276E",
+"q. c #1B346E",
+"r. c #1A336D",
+"s. c #1C376F",
+"t. c #1F3D7F",
+"u. c #808CAC",
+"v. c #8E9AB4",
+"w. c #2F55AC",
+"x. c #2D53A2",
+"y. c #183593",
+"z. c #1C3473",
+"A. c #79839D",
+"B. c #D7D7D7",
+"C. c #9CA7C0",
+"D. c #274286",
+"E. c #3261B7",
+"F. c #3464BB",
+"G. c #244376",
+"H. c #838EA3",
+"I. c #C4CAD8",
+"J. c #38538D",
+"K. c #4C7FCB",
+"L. c #4A78CB",
+"M. c #406FC5",
+"N. c #2654BB",
+"O. c #284AB7",
+"P. c #34497F",
+"Q. c #A9AFBB",
+"R. c #D4D4D4",
+"S. c #E5E7ED",
+"T. c #697C9F",
+"U. c #8CAEE1",
+"V. c #7CA5DD",
+"W. c #739BD8",
+"X. c #3C61C1",
+"Y. c #4275C9",
+"Z. c #596990",
+"`. c #C3C5CA",
+" + c #CDCDCD",
+".+ c #FAFAFA",
+"++ c #B4BDCE",
+"@+ c #4C6DB8",
+"#+ c #D3DCF0",
+"$+ c #CDDAEE",
+"%+ c #C4D6EF",
+"&+ c #BBD3EC",
+"*+ c #8FA3D6",
+"=+ c #859DD4",
+"-+ c #7C97CF",
+";+ c #6F8BD0",
+">+ c #7DA8DE",
+",+ c #3D5591",
+"'+ c #9CA4B5",
+")+ c #B9B9B9",
+"!+ c #F4F4F4",
+"~+ c #E7E9ED",
+"{+ c #919EB6",
+"]+ c #4772BF",
+"^+ c #CDDAEF",
+"/+ c #EDF3F8",
+"(+ c #EAF2F9",
+"_+ c #E7EEF8",
+":+ c #E5EBF6",
+"<+ c #E0E9F5",
+"[+ c #DBE6F4",
+"}+ c #D6E1F1",
+"|+ c #92B3E0",
+"1+ c #39589E",
+"2+ c #818DA6",
+"3+ c #CACBCF",
+"4+ c #F5F5F5",
+"5+ c #DADDE5",
+"6+ c #8F9CB7",
+"7+ c #618BCF",
+"8+ c #B4C8E8",
+"9+ c #F7F8FC",
+"0+ c #F1F4FA",
+"a+ c #F1F2FA",
+"b+ c #F2F6FB",
+"c+ c #DFE8F4",
+"d+ c #9EBDE2",
+"e+ c #4D75BF",
+"f+ c #8290A9",
+"g+ c #C1C4CB",
+"h+ c #CACACA",
+"i+ c #B3B3B3",
+"j+ c #EDEDED",
+"k+ c #E0E2E6",
+"l+ c #ACB4C8",
+"m+ c #6A85BA",
+"n+ c #658ED2",
+"o+ c #7BA5D9",
+"p+ c #A5C0E6",
+"q+ c #729FD7",
+"r+ c #628BCF",
+"s+ c #647CB2",
+"t+ c #9EA6BA",
+"u+ c #C9CBCF",
+"v+ c #CBCBCB",
+"w+ c #E7E7E7",
+"x+ c #D0D3D9",
+"y+ c #B3BCCE",
+"z+ c #8E9EC1",
+"A+ c #7F8BAD",
+"B+ c #7E8AAC",
+"C+ c #8A9BBD",
+"D+ c #ABB3C6",
+"E+ c #C2C6CC",
+"F+ c #CFCFCF",
+"G+ c #ACACAC",
+"H+ c #E0E0E0",
+"I+ c #A9A9A9",
+"J+ c #E6E6E6",
+"K+ c #E1E1E1",
+"L+ c #DFDFDF",
+"M+ c #D6D6D6",
+"N+ c #A6A6A6",
+"O+ c #9D9D9D",
+"P+ c #9A9A9A",
+"Q+ c #969696",
+"R+ c #919191",
+"S+ c #8C8C8C",
+"T+ c #888888",
+"U+ c #848484",
+"V+ c #818181",
" ",
" . . . . . . . . . . . . . . . . ",
" . + + + + + + + + @ # $ % & * = - ",
/* XPM */
static char * update_source_xpm[] = {
"34 34 143 2",
-" c None",
-". c #BCBCBC",
-"+ c #F7F7F7",
-"@ c #F3F3F3",
-"# c #F1F1F1",
-"$ c #EFEFEF",
-"% c #ECECEC",
-"& c #EAEAEA",
-"* c #E9E9E9",
-"= c #C2C2C2",
-"- c #808080",
-"; c #FFFFFF",
-"> c #003377",
-", c #CEDBEB",
-"' c #FBFBFB",
-") c #F2F2F2",
-"! c #EEEEEE",
-"~ c #BFD0E5",
-"{ c #E3E3E3",
-"] c #FEFEFE",
-"^ c #004F33",
-"/ c #BDCEE4",
-"( c #C2E1CF",
-"_ c #CCE6D7",
-": c #B6DBC5",
-"< c #BDBDBD",
-"[ c #C0C0C0",
-"} c #B6B6B6",
-"| c #AFAFAF",
-"1 c #A2A2A2",
-"2 c #8E8E8E",
-"3 c #828282",
-"4 c #008437",
-"5 c #EDEDED",
-"6 c #E2E2E2",
-"7 c #DBDBDB",
-"8 c #D0D0D0",
-"9 c #C4C4C4",
-"0 c #BCDDCA",
-"a c #B9DBC7",
-"b c #CEE4D7",
-"c c #FAFAFA",
-"d c #F4F4F4",
-"e c #D8D8D8",
-"f c #C9C9C9",
-"g c #B5B5B5",
-"h c #C5E0D0",
-"i c #B7D8C5",
-"j c #E6E6E6",
-"k c #DCDCDC",
-"l c #DADADA",
-"m c #CCCCCC",
-"n c #BEBEBE",
-"o c #BCDDC9",
-"p c #C6E0D1",
-"q c #F9F9F9",
-"r c #EBEBEB",
-"s c #DFDFDF",
-"t c #D7D7D7",
-"u c #D5D5D5",
-"v c #C6C6C6",
-"w c #F6F6F6",
-"x c #E7E7E7",
-"y c #CECECE",
-"z c #767676",
-"A c #8B8B8B",
-"B c #9F9F9F",
-"C c #B3B3B3",
-"D c #C7C7C7",
-"E c #9E9E9E",
-"F c #898989",
-"G c #616161",
-"H c #4C4C4C",
-"I c #383838",
-"J c #E4E4E4",
-"K c #D1D1D1",
-"L c #8D8D8D",
-"M c #9A9A9A",
-"N c #ACACAC",
-"O c #888888",
-"P c #777777",
-"Q c #676767",
-"R c #585858",
-"S c #A5A5A5",
-"T c #E0E0E0",
-"U c #DEDEDE",
-"V c #D3D3D3",
-"W c #E5E5E5",
-"X c #D2D2D2",
-"Y c #000000",
-"Z c #8C8C8C",
-"` c #BFBFBF",
-" . c #D6D6D6",
-".. c #565656",
-"+. c #454545",
-"@. c #989898",
-"#. c #737373",
-"$. c #9B9B9B",
-"%. c #656565",
-"&. c #4B4B4B",
-"*. c #848484",
-"=. c #DDDDDD",
-"-. c #F8F8F8",
-";. c #F5F5F5",
-">. c #E1E1E1",
-",. c #F0F0F0",
-"'. c #080808",
-"). c #D4D4D4",
-"!. c #CDCDCD",
-"~. c #272727",
-"{. c #1E1E1E",
-"]. c #2D2D2D",
-"^. c #232323",
-"/. c #D9D9D9",
-"(. c #343434",
-"_. c #B9B9B9",
-":. c #555555",
-"<. c #E8E8E8",
-"[. c #444444",
-"}. c #535353",
-"|. c #7A7A7A",
-"1. c #6E6E6E",
-"2. c #626262",
-"3. c #6A6A6A",
-"4. c #606060",
-"5. c #595959",
-"6. c #636363",
-"7. c #CACACA",
-"8. c #CBCBCB",
-"9. c #747474",
-"0. c #727272",
-"a. c #707070",
-"b. c #6B6B6B",
-"c. c #686868",
-"d. c #7B7B7B",
-"e. c #CFCFCF",
-"f. c #929292",
-"g. c #A9A9A9",
-"h. c #A6A6A6",
-"i. c #9D9D9D",
-"j. c #969696",
-"k. c #919191",
-"l. c #818181",
+" c None",
+". c #BCBCBC",
+"+ c #F7F7F7",
+"@ c #F3F3F3",
+"# c #F1F1F1",
+"$ c #EFEFEF",
+"% c #ECECEC",
+"& c #EAEAEA",
+"* c #E9E9E9",
+"= c #C2C2C2",
+"- c #808080",
+"; c #FFFFFF",
+"> c #003377",
+", c #CEDBEB",
+"' c #FBFBFB",
+") c #F2F2F2",
+"! c #EEEEEE",
+"~ c #BFD0E5",
+"{ c #E3E3E3",
+"] c #FEFEFE",
+"^ c #004F33",
+"/ c #BDCEE4",
+"( c #C2E1CF",
+"_ c #CCE6D7",
+": c #B6DBC5",
+"< c #BDBDBD",
+"[ c #C0C0C0",
+"} c #B6B6B6",
+"| c #AFAFAF",
+"1 c #A2A2A2",
+"2 c #8E8E8E",
+"3 c #828282",
+"4 c #008437",
+"5 c #EDEDED",
+"6 c #E2E2E2",
+"7 c #DBDBDB",
+"8 c #D0D0D0",
+"9 c #C4C4C4",
+"0 c #BCDDCA",
+"a c #B9DBC7",
+"b c #CEE4D7",
+"c c #FAFAFA",
+"d c #F4F4F4",
+"e c #D8D8D8",
+"f c #C9C9C9",
+"g c #B5B5B5",
+"h c #C5E0D0",
+"i c #B7D8C5",
+"j c #E6E6E6",
+"k c #DCDCDC",
+"l c #DADADA",
+"m c #CCCCCC",
+"n c #BEBEBE",
+"o c #BCDDC9",
+"p c #C6E0D1",
+"q c #F9F9F9",
+"r c #EBEBEB",
+"s c #DFDFDF",
+"t c #D7D7D7",
+"u c #D5D5D5",
+"v c #C6C6C6",
+"w c #F6F6F6",
+"x c #E7E7E7",
+"y c #CECECE",
+"z c #767676",
+"A c #8B8B8B",
+"B c #9F9F9F",
+"C c #B3B3B3",
+"D c #C7C7C7",
+"E c #9E9E9E",
+"F c #898989",
+"G c #616161",
+"H c #4C4C4C",
+"I c #383838",
+"J c #E4E4E4",
+"K c #D1D1D1",
+"L c #8D8D8D",
+"M c #9A9A9A",
+"N c #ACACAC",
+"O c #888888",
+"P c #777777",
+"Q c #676767",
+"R c #585858",
+"S c #A5A5A5",
+"T c #E0E0E0",
+"U c #DEDEDE",
+"V c #D3D3D3",
+"W c #E5E5E5",
+"X c #D2D2D2",
+"Y c #000000",
+"Z c #8C8C8C",
+"` c #BFBFBF",
+" . c #D6D6D6",
+".. c #565656",
+"+. c #454545",
+"@. c #989898",
+"#. c #737373",
+"$. c #9B9B9B",
+"%. c #656565",
+"&. c #4B4B4B",
+"*. c #848484",
+"=. c #DDDDDD",
+"-. c #F8F8F8",
+";. c #F5F5F5",
+">. c #E1E1E1",
+",. c #F0F0F0",
+"'. c #080808",
+"). c #D4D4D4",
+"!. c #CDCDCD",
+"~. c #272727",
+"{. c #1E1E1E",
+"]. c #2D2D2D",
+"^. c #232323",
+"/. c #D9D9D9",
+"(. c #343434",
+"_. c #B9B9B9",
+":. c #555555",
+"<. c #E8E8E8",
+"[. c #444444",
+"}. c #535353",
+"|. c #7A7A7A",
+"1. c #6E6E6E",
+"2. c #626262",
+"3. c #6A6A6A",
+"4. c #606060",
+"5. c #595959",
+"6. c #636363",
+"7. c #CACACA",
+"8. c #CBCBCB",
+"9. c #747474",
+"0. c #727272",
+"a. c #707070",
+"b. c #6B6B6B",
+"c. c #686868",
+"d. c #7B7B7B",
+"e. c #CFCFCF",
+"f. c #929292",
+"g. c #A9A9A9",
+"h. c #A6A6A6",
+"i. c #9D9D9D",
+"j. c #969696",
+"k. c #919191",
+"l. c #818181",
" . . . . . . . . . . . . . . . . ",
" . + + + + + + + + @ # $ % & * = - ",
" . + ; ; ; ; ; ; ; > , ; ' ) ! = ; - ",
/* XPM */
static char * video_xpm[] = {
"16 16 124 2",
-" c None",
-". c #FFFFFF",
-"+ c #1B4260",
-"@ c #1E4869",
-"# c #1E4B6D",
-"$ c #1E4A6B",
-"% c #204F73",
-"& c #215175",
-"* c #325C7C",
-"= c #37607E",
-"- c #255B84",
-"; c #296491",
-"> c #4D7CA0",
-", c #6A90AB",
-"' c #7697B0",
-") c #235174",
-"! c #2C6894",
-"~ c #3375A7",
-"{ c #3677A8",
-"] c #4E8BBA",
-"^ c #81ADCE",
-"/ c #AFCBE0",
-"( c #C7DAE9",
-"_ c #42759D",
-": c #275478",
-"< c #326D9B",
-"[ c #3C81B7",
-"} c #447FAE",
-"| c #5390BF",
-"1 c #5994C2",
-"2 c #5C95C2",
-"3 c #92B8D6",
-"4 c #C8DBEA",
-"5 c #4D7EA4",
-"6 c #2D5B80",
-"7 c #366E9D",
-"8 c #3974A3",
-"9 c #336893",
-"0 c #3D7DB0",
-"a c #5592C3",
-"b c #5792C3",
-"c c #89B3D5",
-"d c #B4CFE4",
-"e c #CADDEC",
-"f c #4A7DA6",
-"g c #3E6688",
-"h c #42749D",
-"i c #BDBDBD",
-"j c #326088",
-"k c #4380B5",
-"l c #396D99",
-"m c #6C9FCA",
-"n c #8CB6D8",
-"o c #99BDDD",
-"p c #6EA2CE",
-"q c #3C74A4",
-"r c #446B8C",
-"s c #000000",
-"t c #5F5F5F",
-"u c #969696",
-"v c #959595",
-"w c #447AA5",
-"x c #3D6B94",
-"y c #6198C9",
-"z c #6BA1D1",
-"A c #639CCE",
-"B c #4E8FC8",
-"C c #4279A9",
-"D c #424242",
-"E c #7F7F7F",
-"F c #606060",
-"G c #636363",
-"H c #484848",
-"I c #1E1E1E",
-"J c #7A7A7A",
-"K c #5C80A2",
-"L c #6594C1",
-"M c #70A5D6",
-"N c #6FA3D4",
-"O c #5E8AB4",
-"P c #8C8C8C",
-"Q c #383838",
-"R c #3D3D3D",
-"S c #5D5D5D",
-"T c #B8B8B8",
-"U c #6A6A6A",
-"V c #4C4C4C",
-"W c #171717",
-"X c #94BCE2",
-"Y c #205B07",
-"Z c #1F5A06",
-"` c #2A2A2A",
-" . c #4E4E4E",
-".. c #4B4B4B",
-"+. c #585858",
-"@. c #727272",
-"#. c #454545",
-"$. c #050505",
-"%. c #2B2B2B",
-"&. c #121212",
-"*. c #36960D",
-"=. c #318A0C",
-"-. c #246608",
-";. c #363636",
-">. c #323232",
-",. c #4D4D4D",
-"'. c #3E3E3E",
-"). c #1B1B1B",
-"!. c #154700",
-"~. c #236308",
-"{. c #2B780A",
-"]. c #31840E",
-"^. c #3E7326",
-"/. c #468A29",
-"(. c #0B0B0B",
-"_. c #040404",
-":. c #517D3E",
-"<. c #328E0B",
-"[. c #389013",
-"}. c #3E9A17",
-"|. c #2F840B",
-"1. c #308C09",
-"2. c #FDFDFD",
-"3. c #FBFBFB",
+" c None",
+". c #FFFFFF",
+"+ c #1B4260",
+"@ c #1E4869",
+"# c #1E4B6D",
+"$ c #1E4A6B",
+"% c #204F73",
+"& c #215175",
+"* c #325C7C",
+"= c #37607E",
+"- c #255B84",
+"; c #296491",
+"> c #4D7CA0",
+", c #6A90AB",
+"' c #7697B0",
+") c #235174",
+"! c #2C6894",
+"~ c #3375A7",
+"{ c #3677A8",
+"] c #4E8BBA",
+"^ c #81ADCE",
+"/ c #AFCBE0",
+"( c #C7DAE9",
+"_ c #42759D",
+": c #275478",
+"< c #326D9B",
+"[ c #3C81B7",
+"} c #447FAE",
+"| c #5390BF",
+"1 c #5994C2",
+"2 c #5C95C2",
+"3 c #92B8D6",
+"4 c #C8DBEA",
+"5 c #4D7EA4",
+"6 c #2D5B80",
+"7 c #366E9D",
+"8 c #3974A3",
+"9 c #336893",
+"0 c #3D7DB0",
+"a c #5592C3",
+"b c #5792C3",
+"c c #89B3D5",
+"d c #B4CFE4",
+"e c #CADDEC",
+"f c #4A7DA6",
+"g c #3E6688",
+"h c #42749D",
+"i c #BDBDBD",
+"j c #326088",
+"k c #4380B5",
+"l c #396D99",
+"m c #6C9FCA",
+"n c #8CB6D8",
+"o c #99BDDD",
+"p c #6EA2CE",
+"q c #3C74A4",
+"r c #446B8C",
+"s c #000000",
+"t c #5F5F5F",
+"u c #969696",
+"v c #959595",
+"w c #447AA5",
+"x c #3D6B94",
+"y c #6198C9",
+"z c #6BA1D1",
+"A c #639CCE",
+"B c #4E8FC8",
+"C c #4279A9",
+"D c #424242",
+"E c #7F7F7F",
+"F c #606060",
+"G c #636363",
+"H c #484848",
+"I c #1E1E1E",
+"J c #7A7A7A",
+"K c #5C80A2",
+"L c #6594C1",
+"M c #70A5D6",
+"N c #6FA3D4",
+"O c #5E8AB4",
+"P c #8C8C8C",
+"Q c #383838",
+"R c #3D3D3D",
+"S c #5D5D5D",
+"T c #B8B8B8",
+"U c #6A6A6A",
+"V c #4C4C4C",
+"W c #171717",
+"X c #94BCE2",
+"Y c #205B07",
+"Z c #1F5A06",
+"` c #2A2A2A",
+" . c #4E4E4E",
+".. c #4B4B4B",
+"+. c #585858",
+"@. c #727272",
+"#. c #454545",
+"$. c #050505",
+"%. c #2B2B2B",
+"&. c #121212",
+"*. c #36960D",
+"=. c #318A0C",
+"-. c #246608",
+";. c #363636",
+">. c #323232",
+",. c #4D4D4D",
+"'. c #3E3E3E",
+"). c #1B1B1B",
+"!. c #154700",
+"~. c #236308",
+"{. c #2B780A",
+"]. c #31840E",
+"^. c #3E7326",
+"/. c #468A29",
+"(. c #0B0B0B",
+"_. c #040404",
+":. c #517D3E",
+"<. c #328E0B",
+"[. c #389013",
+"}. c #3E9A17",
+"|. c #2F840B",
+"1. c #308C09",
+"2. c #FDFDFD",
+"3. c #FBFBFB",
". . . . . . . . . . . . . . . . ",
". + @ # $ % & & & & * = * & & . ",
". # - ; ; ; ; ; ; > , ' , > ; . ",
p_file_dialog = new wxFileDialog( NULL, wxU(_("Open File")),
wxT(""), wxT(""), wxT("*"), wxOPEN | wxMULTIPLE );
- p_file_dialog->SetWildcard(wxU(_("All Files (*.*)|*"
- "|Sound Files (*.mp3, *.ogg, etc.)|" EXTENSIONS_AUDIO
- "|Video Files (*.avi, *.mpg, etc.)|" EXTENSIONS_VIDEO
- "|Playlist Files (*.m3u, *.pls, etc.)|" EXTENSIONS_PLAYLIST
+ p_file_dialog->SetWildcard(wxU(_("All Files (*.*)|*"
+ "|Sound Files (*.mp3, *.ogg, etc.)|" EXTENSIONS_AUDIO
+ "|Video Files (*.avi, *.mpg, etc.)|" EXTENSIONS_VIDEO
+ "|Playlist Files (*.m3u, *.pls, etc.)|" EXTENSIONS_PLAYLIST
"|Subtitle Files (*.srt, *.sub, etc.)|" EXTENSIONS_SUBTITLE)));
if( p_file_dialog && p_file_dialog->ShowModal() == wxID_OK )
if( psz_tmp ) free( psz_tmp );
}
- main_sizer->Add( new wxStaticText( this, -1, wxU( _("\nAvailable "
+ main_sizer->Add( new wxStaticText( this, -1, wxU( _("\nAvailable "
"updates and related downloads.\n"
"(Double click on a file to download it)\n" ) ) ) );
main_sizer->Add( list );
wxU( INPUT_OPEN ) );
radioSizer->Add( input_radios[0], 0, wxALL, 5 );
input_radios[1] = new wxRadioButton( radio_panel, InputRadio1_Event ,
- wxU( INPUT_PL ) );
+ wxU( INPUT_PL ) );
radioSizer->Add( input_radios[1], 0, wxALL, 5 );
radio_panel->SetSizer( radioSizer );
/* Line 2 : codec */
video_sizer1->Add( new wxStaticText(this, -1, wxU(_("Codec"))),0,wxLEFT ,5);
video_combo = new wxComboBox( this, VideoCodec_Event, wxT(""),
- wxDefaultPosition, wxSize(200,25), 0, NULL,
+ wxDefaultPosition, wxSize(200,25), 0, NULL,
wxCB_DROPDOWN| wxCB_READONLY );
for( i= 0; vcodecs_array[i].psz_display != NULL; i++ )
{
/* Line 2 : codec */
audio_sizer1->Add( new wxStaticText(this, -1, wxU(_("Codec"))),0,wxLEFT,5);
audio_combo = new wxComboBox( this, AudioCodec_Event, wxT(""),
- wxDefaultPosition, wxSize(200,25), 0, NULL,
+ wxDefaultPosition, wxSize(200,25), 0, NULL,
wxCB_DROPDOWN| wxCB_READONLY );
for( i= 0; acodecs_array[i].psz_display != NULL; i++ )
{
psz_af = var_GetString( p_aout, "audio-filter" );
if( var_GetBool( p_aout, "equalizer-2pass" ) )
eq_2p_chkbox->SetValue( true );
- vlc_object_release( p_aout );
+ vlc_object_release( p_aout );
}
else
{
wxPanel *EqzPanel( wxWindow * );
wxPanel *AudioPanel( wxWindow * );
wxNotebook *notebook;
-
+
/* Equalizer */
wxCheckBox *eq_chkbox;
wxCheckBox *eq_2p_chkbox;
wxSlider *band_sliders[10];
wxStaticText *band_texts[10];
int i_values[10];
-
+
void OnEnableEqualizer( wxCommandEvent& );
void OnRestoreDefaults( wxCommandEvent& );
void OnChangeEqualizer( wxScrollEvent& );
/* following is only valid for horizontal a trackbar */
newpos = ((click.x-tRect.left-(thumb/2))*(max-min)+((tRect.right-tRect.left-thumb)/2))
- /(tRect.right-tRect.left-thumb);
+ /(tRect.right-tRect.left-thumb);
/* set new postion */
SendMessage(hWnd, TBM_SETPOS, TRUE, min+newpos);
if( (i_type & VLC_VAR_TYPE) != VLC_VAR_VARIABLE )
{
- /* Very evil hack ! intf-switch can have only one value */
+ /* Very evil hack ! intf-switch can have only one value */
if( !strcmp( psz_var, "intf-switch" ) ) return FALSE;
if( val.i_int == 1 && b_root ) return TRUE;
else return FALSE;
{
intf_thread_t *p_intf = (intf_thread_t *)p_this;
/* Test in we have an X*/
-#if defined HAVE_GETENV && (defined __WXGTK__ || defined __WXX11)
+#if defined HAVE_GETENV && (defined __WXGTK__ || defined __WXX11)
if( !getenv( "DISPLAY" ) )
{
msg_Err( p_intf, "no X server");
# define wxLocaleFree LocaleFree
#endif
}
-
+
/* From Locale functions to use for File Drop targets ... go figure */
#if defined( wxUSE_UNICODE ) && !defined( WIN32 )
static inline char *wxDnDFromLocale( const wxChar *stupid )
for( i = 0; (p_frame = id3_tag_findframe( p_id3_tag, "T", i )) != NULL; i++ )
{
int i_strings;
-
+
/* Special case TXXX is not the same beast */
if( ID_IS( "TXXX" ) )
continue;
if (!strcmp( owner, "http://musicbrainz.org" ))
{
/* ID3v2 UFID contains up to 64 bytes binary data
- * but in our case it will be a '\0'
+ * but in our case it will be a '\0'
* terminated string */
char *psz_ufid = (char*) malloc( 64 );
int j = 0;
{
p_txxx = dynamic_cast<TagLib::ID3v2::UserTextIdentificationFrame*>(*iter);
const char *psz_desc= p_txxx->description().toCString();
- vlc_meta_AddExtra( p_meta, psz_desc,
+ vlc_meta_AddExtra( p_meta, psz_desc,
p_txxx->fieldList().toString().toCString());
}
#if 0
(mtime_t) i_ogg_v_length * 1000000 );
vlc_object_release( p_input );
}
-
+
}
#if 0 /* at this moment, taglib is unable to detect ogg/flac files
* becauses type detection is based on file extension:
playlist_t *p_playlist = (playlist_t *)p_this;
meta_export_t *p_export = (meta_export_t *)p_playlist->p_private;
input_item_t *p_item = p_export->p_item;
-
+
if( p_item == NULL )
{
msg_Err( p_this, "Can't save meta data of an empty input" );
WRITE( Copyright, "TCOP" );
WRITE( EncodedBy, "TENC" );
WRITE( Language, "TLAN" );
-
+
#undef WRITE
}
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-/* audioscrobbler protocol version: 1.1
+/* audioscrobbler protocol version: 1.1
* http://audioscrobbler.net/wiki/Protocol1.1
* */
/* main loop */
while( !p_this->b_die )
{
- /* verify if there is data to submit
+ /* verify if there is data to submit
* and if waiting interval is elapsed */
if ( ( p_sys->p_first_queue->i_songs_nb > 0 ) &&
( time( NULL ) >= p_sys->time_next_exchange ) )
vlc_mutex_unlock ( &p_sys->lock );
break;
}
- /* handshake is done or failed, lets start from
+ /* handshake is done or failed, lets start from
* beginning to check it out and wait INTERVAL if needed
*/
continue;
stream_t *p_stream;
char *psz_handshake_url = NULL;
uint8_t *p_buffer = NULL;
- char *p_buffer_pos = NULL;
+ char *p_buffer_pos = NULL;
char *psz_url_parser = NULL;
char *psz_buffer_substring;
int i_url_pos, i;
msg_Dbg( p_this, "Meta data registered, waiting to be queued" );
}
-
- FREE_INPUT_AND_CHARS
+
+ FREE_INPUT_AND_CHARS
return VLC_SUCCESS;
#undef FREE_INPUT_AND_CHARS
#undef ALLOC_ITEM_META
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/* Used for the pause command */
mtime_t expiration;
-
+
/* The command to run */
char* psz_command;
};
p_sys->expiration = mdate() + (mtime_t)i_arg * (mtime_t)1000000;
return VLC_SUCCESS;
}
-
+
msg_Err( p_demux, "unknown command `%s'", psz_name );
free( p_sys );
else
msleep( 10000 );
break;
-
+
case COMMAND_NOP:
default:
b_eof = VLC_TRUE;
- break;
+ break;
}
vlc_object_release( p_playlist );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
p_msg->psz_module, p_msg->psz_msg );
else
syslog( i_priority, "%s: %s", p_msg->psz_module, p_msg->psz_msg );
-
+
}
#endif
/* Load Lua libraries */
luaL_openlibs( p_state ); /* XXX: Don't open all the libs? */
-
+
luaL_register( p_state, "vlc", p_reg );
-
+
lua_pushlightuserdata( p_state, p_this );
lua_setfield( p_state, lua_gettop( p_state ) - 1, "private" );
-
+
psz_meta = input_item_GetName( p_item );
lua_pushstring( p_state, psz_meta );
lua_setfield( p_state, lua_gettop( p_state ) - 1, "name" );
free( psz_meta );
-
+
psz_meta = input_item_GetArtist( p_item );
lua_pushstring( p_state, psz_meta );
lua_setfield( p_state, lua_gettop( p_state ) - 1, "artist" );
free( psz_meta );
-
+
psz_meta = input_item_GetTitle( p_item ) ;
lua_pushstring( p_state, psz_meta );
lua_setfield( p_state, lua_gettop( p_state ) - 1, "title" );
free( psz_meta );
-
+
psz_meta = input_item_GetAlbum( p_item );
lua_pushstring( p_state, psz_meta );
lua_setfield( p_state, lua_gettop( p_state ) - 1, "album" );
* functions. */
lua_pushnil( p_state );
lua_setglobal( p_state, "fetch_art" );
-
+
/* Load and run the script(s) */
if( luaL_dofile( p_state, psz_filename ) )
{
* functions. */
lua_pushnil( p_state );
lua_setglobal( p_state, "fetch_meta" );
-
+
/* Load and run the script(s) */
if( luaL_dofile( p_state, psz_filename ) )
{
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
lua_getglobal( p_state, "fetch_meta" );
-
+
if( !lua_isfunction( p_state, lua_gettop( p_state ) ) )
{
msg_Warn( p_this, "Error while runing script %s, "
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
if( lua_pcall( p_state, 0, 1, 0 ) )
{
msg_Warn( p_this, "Error while runing script %s, "
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
if((t = lua_gettop( p_state )))
{
meta_engine_t *p_me = (meta_engine_t *)p_this;
input_item_t *p_item = p_me->p_item;
lua_State *p_state = vlclua_meta_init( p_this, p_item );
-
+
int i_ret = vlclua_scripts_batch_execute( p_this, "luameta", &fetch_meta, p_state, p_item );
lua_close( p_state );
return i_ret;
playlist_t *p_playlist = (playlist_t *)p_this;
input_item_t *p_item = (input_item_t *)(p_playlist->p_private);
lua_State *p_state = vlclua_meta_init( p_this, p_item );
-
+
int i_ret = vlclua_scripts_batch_execute( p_this, "luameta", &fetch_art, p_state, p_item );
lua_close( p_state );
return i_ret;
demux_t * p_demux = (demux_t *)p_this;
p_demux->p_sys->psz_filename = strdup(psz_filename);
-
+
/* Ugly hack to delete previous versions of the probe() and parse()
* functions. */
lua_pushnil( p_state );
lua_pushnil( p_state );
lua_setglobal( p_state, "probe" );
lua_setglobal( p_state, "parse" );
-
+
/* Load and run the script(s) */
if( luaL_dofile( p_state, psz_filename ) )
{
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
lua_getglobal( p_state, "probe" );
-
+
if( !lua_isfunction( p_state, lua_gettop( p_state ) ) )
{
msg_Warn( p_demux, "Error while runing script %s, "
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
if( lua_pcall( p_state, 0, 1, 0 ) )
{
msg_Warn( p_demux, "Error while runing script %s, "
lua_pop( p_state, 1 );
return VLC_EGENERIC;
}
-
+
if( lua_gettop( p_state ) )
{
int i_ret = VLC_EGENERIC;
i_ret = VLC_SUCCESS;
}
lua_pop( p_state, 1 );
-
+
return i_ret;
}
return VLC_EGENERIC;
return VLC_ENOMEM;
}
# else
- if( asprintf( &ppsz_dir_list[1],
+ if( asprintf( &ppsz_dir_list[1],
"share" DIR_SEP "%s", luadirname ) < 0 )
return VLC_ENOMEM;
# ifdef HAVE_SYS_STAT_H
- {
+ {
struct stat stat_info;
if( ( utf8_stat( ppsz_dir_list[1], &stat_info ) == -1 )
|| !S_ISDIR( stat_info.st_mode ) )
{
free(ppsz_dir_list[1]);
- if( asprintf( &ppsz_dir_list[1],
+ if( asprintf( &ppsz_dir_list[1],
DATA_PATH DIR_SEP "%s", luadirname ) < 0 )
return VLC_ENOMEM;
}
for( ppsz_file = ppsz_filelist; ppsz_file < ppsz_fileend; ppsz_file++ )
{
char *psz_filename;
- if( asprintf( &psz_filename,
+ if( asprintf( &psz_filename,
"%s" DIR_SEP "%s", *ppsz_dir, *ppsz_file ) < 0)
return VLC_ENOMEM;
msg_Dbg( p_this, "Trying Lua playlist script %s", psz_filename );
-
+
i_ret = func( p_this, psz_filename, p_state, user_data );
-
+
free( psz_filename );
if( i_ret == VLC_SUCCESS ) break;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
{\
register unsigned long int dummy;\
__asm__ __volatile__(\
- "rep; movsb"\
- :"=&D"(to), "=&S"(from), "=&c"(dummy)\
+ "rep; movsb"\
+ :"=&D"(to), "=&S"(from), "=&c"(dummy)\
/* It's most portable way to notify compiler */\
/* that edi, esi and ecx are clobbered in asm block. */\
/* Thanks to A'rpi for hint!!! */\
:"0" (to), "1" (from),"2" (n)\
- : "memory");\
+ : "memory");\
}
#ifdef HAVE_SSE
void * fast_memcpy(void * to, const void * from, size_t len)
{
- void *retval;
- size_t i;
- retval = to;
+ void *retval;
+ size_t i;
+ retval = to;
#ifdef STATISTICS
- {
- static int freq[33];
- static int t=0;
- int i;
- for(i=0; len>(1<<i); i++);
- freq[i]++;
- t++;
- if(1024*1024*1024 % t == 0)
- for(i=0; i<32; i++)
- printf("freq < %8d %4d\n", 1<<i, freq[i]);
- }
+ {
+ static int freq[33];
+ static int t=0;
+ int i;
+ for(i=0; len>(1<<i); i++);
+ freq[i]++;
+ t++;
+ if(1024*1024*1024 % t == 0)
+ for(i=0; i<32; i++)
+ printf("freq < %8d %4d\n", 1<<i, freq[i]);
+ }
#endif
#ifndef HAVE_MMX1
/* PREFETCH has effect even for MOVSB instruction ;) */
- __asm__ __volatile__ (
- PREFETCH" (%0)\n"
- PREFETCH" 64(%0)\n"
- PREFETCH" 128(%0)\n"
- PREFETCH" 192(%0)\n"
- PREFETCH" 256(%0)\n"
- : : "r" (from) );
+ __asm__ __volatile__ (
+ PREFETCH" (%0)\n"
+ PREFETCH" 64(%0)\n"
+ PREFETCH" 128(%0)\n"
+ PREFETCH" 192(%0)\n"
+ PREFETCH" 256(%0)\n"
+ : : "r" (from) );
#endif
if(len >= MIN_LEN)
- {
- register unsigned long int delta;
+ {
+ register unsigned long int delta;
/* Align destinition to MMREG_SIZE -boundary */
delta = ((unsigned long int)to)&(MMREG_SIZE-1);
if(delta)
- {
- delta=MMREG_SIZE-delta;
- len -= delta;
- small_memcpy(to, from, delta);
- }
- i = len >> 6; /* len/64 */
- len&=63;
+ {
+ delta=MMREG_SIZE-delta;
+ len -= delta;
+ small_memcpy(to, from, delta);
+ }
+ i = len >> 6; /* len/64 */
+ len&=63;
/*
This algorithm is top effective when the code consequently
reads and writes blocks which have size of cache line.
processor's decoders, but it's not always possible.
*/
#ifdef HAVE_SSE /* Only P3 (may be Cyrix3) */
- if(((unsigned long)from) & 15)
- /* if SRC is misaligned */
- for(; i>0; i--)
- {
- __asm__ __volatile__ (
- PREFETCH" 320(%0)\n"
- "movups (%0), %%xmm0\n"
- "movups 16(%0), %%xmm1\n"
- "movups 32(%0), %%xmm2\n"
- "movups 48(%0), %%xmm3\n"
- "movntps %%xmm0, (%1)\n"
- "movntps %%xmm1, 16(%1)\n"
- "movntps %%xmm2, 32(%1)\n"
- "movntps %%xmm3, 48(%1)\n"
- :: "r" (from), "r" (to) : "memory");
- ((const unsigned char *)from)+=64;
- ((unsigned char *)to)+=64;
- }
- else
- /*
- Only if SRC is aligned on 16-byte boundary.
- It allows to use movaps instead of movups, which required data
- to be aligned or a general-protection exception (#GP) is generated.
- */
- for(; i>0; i--)
- {
- __asm__ __volatile__ (
- PREFETCH" 320(%0)\n"
- "movaps (%0), %%xmm0\n"
- "movaps 16(%0), %%xmm1\n"
- "movaps 32(%0), %%xmm2\n"
- "movaps 48(%0), %%xmm3\n"
- "movntps %%xmm0, (%1)\n"
- "movntps %%xmm1, 16(%1)\n"
- "movntps %%xmm2, 32(%1)\n"
- "movntps %%xmm3, 48(%1)\n"
- :: "r" (from), "r" (to) : "memory");
- ((const unsigned char *)from)+=64;
- ((unsigned char *)to)+=64;
- }
+ if(((unsigned long)from) & 15)
+ /* if SRC is misaligned */
+ for(; i>0; i--)
+ {
+ __asm__ __volatile__ (
+ PREFETCH" 320(%0)\n"
+ "movups (%0), %%xmm0\n"
+ "movups 16(%0), %%xmm1\n"
+ "movups 32(%0), %%xmm2\n"
+ "movups 48(%0), %%xmm3\n"
+ "movntps %%xmm0, (%1)\n"
+ "movntps %%xmm1, 16(%1)\n"
+ "movntps %%xmm2, 32(%1)\n"
+ "movntps %%xmm3, 48(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+ ((const unsigned char *)from)+=64;
+ ((unsigned char *)to)+=64;
+ }
+ else
+ /*
+ Only if SRC is aligned on 16-byte boundary.
+ It allows to use movaps instead of movups, which required data
+ to be aligned or a general-protection exception (#GP) is generated.
+ */
+ for(; i>0; i--)
+ {
+ __asm__ __volatile__ (
+ PREFETCH" 320(%0)\n"
+ "movaps (%0), %%xmm0\n"
+ "movaps 16(%0), %%xmm1\n"
+ "movaps 32(%0), %%xmm2\n"
+ "movaps 48(%0), %%xmm3\n"
+ "movntps %%xmm0, (%1)\n"
+ "movntps %%xmm1, 16(%1)\n"
+ "movntps %%xmm2, 32(%1)\n"
+ "movntps %%xmm3, 48(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+ ((const unsigned char *)from)+=64;
+ ((unsigned char *)to)+=64;
+ }
#else
- /* Align destination at BLOCK_SIZE boundary */
- for(; ((uintptr_t)to & (BLOCK_SIZE-1)) && i>0; i--)
- {
- __asm__ __volatile__ (
+ /* Align destination at BLOCK_SIZE boundary */
+ for(; ((uintptr_t)to & (BLOCK_SIZE-1)) && i>0; i--)
+ {
+ __asm__ __volatile__ (
#ifndef HAVE_MMX1
- PREFETCH" 320(%0)\n"
+ PREFETCH" 320(%0)\n"
#endif
- "movq (%0), %%mm0\n"
- "movq 8(%0), %%mm1\n"
- "movq 16(%0), %%mm2\n"
- "movq 24(%0), %%mm3\n"
- "movq 32(%0), %%mm4\n"
- "movq 40(%0), %%mm5\n"
- "movq 48(%0), %%mm6\n"
- "movq 56(%0), %%mm7\n"
- MOVNTQ" %%mm0, (%1)\n"
- MOVNTQ" %%mm1, 8(%1)\n"
- MOVNTQ" %%mm2, 16(%1)\n"
- MOVNTQ" %%mm3, 24(%1)\n"
- MOVNTQ" %%mm4, 32(%1)\n"
- MOVNTQ" %%mm5, 40(%1)\n"
- MOVNTQ" %%mm6, 48(%1)\n"
- MOVNTQ" %%mm7, 56(%1)\n"
- :: "r" (from), "r" (to) : "memory");
+ "movq (%0), %%mm0\n"
+ "movq 8(%0), %%mm1\n"
+ "movq 16(%0), %%mm2\n"
+ "movq 24(%0), %%mm3\n"
+ "movq 32(%0), %%mm4\n"
+ "movq 40(%0), %%mm5\n"
+ "movq 48(%0), %%mm6\n"
+ "movq 56(%0), %%mm7\n"
+ MOVNTQ" %%mm0, (%1)\n"
+ MOVNTQ" %%mm1, 8(%1)\n"
+ MOVNTQ" %%mm2, 16(%1)\n"
+ MOVNTQ" %%mm3, 24(%1)\n"
+ MOVNTQ" %%mm4, 32(%1)\n"
+ MOVNTQ" %%mm5, 40(%1)\n"
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
from = (const void *) (((const unsigned char *)from)+64);
- to = (void *) (((unsigned char *)to)+64);
- }
+ to = (void *) (((unsigned char *)to)+64);
+ }
-/* printf(" %p %p\n", (uintptr_t)from&1023, (uintptr_t)to&1023); */
- /* Pure Assembly cuz gcc is a bit unpredictable ;) */
+/* printf(" %p %p\n", (uintptr_t)from&1023, (uintptr_t)to&1023); */
+ /* Pure Assembly cuz gcc is a bit unpredictable ;) */
# if 0
- if(i>=BLOCK_SIZE/64)
- asm volatile(
- "xorl %%eax, %%eax \n\t"
- ".balign 16 \n\t"
- "1: \n\t"
- "movl (%0, %%eax), %%ebx \n\t"
- "movl 32(%0, %%eax), %%ebx \n\t"
- "movl 64(%0, %%eax), %%ebx \n\t"
- "movl 96(%0, %%eax), %%ebx \n\t"
- "addl $128, %%eax \n\t"
- "cmpl %3, %%eax \n\t"
- " jb 1b \n\t"
-
- "xorl %%eax, %%eax \n\t"
-
- ".balign 16 \n\t"
- "2: \n\t"
- "movq (%0, %%eax), %%mm0\n"
- "movq 8(%0, %%eax), %%mm1\n"
- "movq 16(%0, %%eax), %%mm2\n"
- "movq 24(%0, %%eax), %%mm3\n"
- "movq 32(%0, %%eax), %%mm4\n"
- "movq 40(%0, %%eax), %%mm5\n"
- "movq 48(%0, %%eax), %%mm6\n"
- "movq 56(%0, %%eax), %%mm7\n"
- MOVNTQ" %%mm0, (%1, %%eax)\n"
- MOVNTQ" %%mm1, 8(%1, %%eax)\n"
- MOVNTQ" %%mm2, 16(%1, %%eax)\n"
- MOVNTQ" %%mm3, 24(%1, %%eax)\n"
- MOVNTQ" %%mm4, 32(%1, %%eax)\n"
- MOVNTQ" %%mm5, 40(%1, %%eax)\n"
- MOVNTQ" %%mm6, 48(%1, %%eax)\n"
- MOVNTQ" %%mm7, 56(%1, %%eax)\n"
- "addl $64, %%eax \n\t"
- "cmpl %3, %%eax \n\t"
- "jb 2b \n\t"
+ if(i>=BLOCK_SIZE/64)
+ asm volatile(
+ "xorl %%eax, %%eax \n\t"
+ ".balign 16 \n\t"
+ "1: \n\t"
+ "movl (%0, %%eax), %%ebx \n\t"
+ "movl 32(%0, %%eax), %%ebx \n\t"
+ "movl 64(%0, %%eax), %%ebx \n\t"
+ "movl 96(%0, %%eax), %%ebx \n\t"
+ "addl $128, %%eax \n\t"
+ "cmpl %3, %%eax \n\t"
+ " jb 1b \n\t"
+
+ "xorl %%eax, %%eax \n\t"
+
+ ".balign 16 \n\t"
+ "2: \n\t"
+ "movq (%0, %%eax), %%mm0\n"
+ "movq 8(%0, %%eax), %%mm1\n"
+ "movq 16(%0, %%eax), %%mm2\n"
+ "movq 24(%0, %%eax), %%mm3\n"
+ "movq 32(%0, %%eax), %%mm4\n"
+ "movq 40(%0, %%eax), %%mm5\n"
+ "movq 48(%0, %%eax), %%mm6\n"
+ "movq 56(%0, %%eax), %%mm7\n"
+ MOVNTQ" %%mm0, (%1, %%eax)\n"
+ MOVNTQ" %%mm1, 8(%1, %%eax)\n"
+ MOVNTQ" %%mm2, 16(%1, %%eax)\n"
+ MOVNTQ" %%mm3, 24(%1, %%eax)\n"
+ MOVNTQ" %%mm4, 32(%1, %%eax)\n"
+ MOVNTQ" %%mm5, 40(%1, %%eax)\n"
+ MOVNTQ" %%mm6, 48(%1, %%eax)\n"
+ MOVNTQ" %%mm7, 56(%1, %%eax)\n"
+ "addl $64, %%eax \n\t"
+ "cmpl %3, %%eax \n\t"
+ "jb 2b \n\t"
#if CONFUSION_FACTOR > 0
- /* a few percent speedup on out of order executing CPUs */
- "movl %5, %%eax \n\t"
- "2: \n\t"
- "movl (%0), %%ebx \n\t"
- "movl (%0), %%ebx \n\t"
- "movl (%0), %%ebx \n\t"
- "movl (%0), %%ebx \n\t"
- "decl %%eax \n\t"
- " jnz 2b \n\t"
+ /* a few percent speedup on out of order executing CPUs */
+ "movl %5, %%eax \n\t"
+ "2: \n\t"
+ "movl (%0), %%ebx \n\t"
+ "movl (%0), %%ebx \n\t"
+ "movl (%0), %%ebx \n\t"
+ "movl (%0), %%ebx \n\t"
+ "decl %%eax \n\t"
+ " jnz 2b \n\t"
#endif
- "xorl %%eax, %%eax \n\t"
- "addl %3, %0 \n\t"
- "addl %3, %1 \n\t"
- "subl %4, %2 \n\t"
- "cmpl %4, %2 \n\t"
- " jae 1b \n\t"
- : "+r" (from), "+r" (to), "+r" (i)
- : "r" (BLOCK_SIZE), "i" (BLOCK_SIZE/64), "i" (CONFUSION_FACTOR)
- : "%eax", "%ebx"
- );
+ "xorl %%eax, %%eax \n\t"
+ "addl %3, %0 \n\t"
+ "addl %3, %1 \n\t"
+ "subl %4, %2 \n\t"
+ "cmpl %4, %2 \n\t"
+ " jae 1b \n\t"
+ : "+r" (from), "+r" (to), "+r" (i)
+ : "r" (BLOCK_SIZE), "i" (BLOCK_SIZE/64), "i" (CONFUSION_FACTOR)
+ : "%eax", "%ebx"
+ );
#endif
- for(; i>0; i--)
- {
- __asm__ __volatile__ (
+ for(; i>0; i--)
+ {
+ __asm__ __volatile__ (
#ifndef HAVE_MMX1
- PREFETCH" 320(%0)\n"
+ PREFETCH" 320(%0)\n"
#endif
- "movq (%0), %%mm0\n"
- "movq 8(%0), %%mm1\n"
- "movq 16(%0), %%mm2\n"
- "movq 24(%0), %%mm3\n"
- "movq 32(%0), %%mm4\n"
- "movq 40(%0), %%mm5\n"
- "movq 48(%0), %%mm6\n"
- "movq 56(%0), %%mm7\n"
- MOVNTQ" %%mm0, (%1)\n"
- MOVNTQ" %%mm1, 8(%1)\n"
- MOVNTQ" %%mm2, 16(%1)\n"
- MOVNTQ" %%mm3, 24(%1)\n"
- MOVNTQ" %%mm4, 32(%1)\n"
- MOVNTQ" %%mm5, 40(%1)\n"
- MOVNTQ" %%mm6, 48(%1)\n"
- MOVNTQ" %%mm7, 56(%1)\n"
- :: "r" (from), "r" (to) : "memory");
- from = (const void *) (((const unsigned char *)from)+64);
- to = (void *) (((unsigned char *)to)+64);
- }
+ "movq (%0), %%mm0\n"
+ "movq 8(%0), %%mm1\n"
+ "movq 16(%0), %%mm2\n"
+ "movq 24(%0), %%mm3\n"
+ "movq 32(%0), %%mm4\n"
+ "movq 40(%0), %%mm5\n"
+ "movq 48(%0), %%mm6\n"
+ "movq 56(%0), %%mm7\n"
+ MOVNTQ" %%mm0, (%1)\n"
+ MOVNTQ" %%mm1, 8(%1)\n"
+ MOVNTQ" %%mm2, 16(%1)\n"
+ MOVNTQ" %%mm3, 24(%1)\n"
+ MOVNTQ" %%mm4, 32(%1)\n"
+ MOVNTQ" %%mm5, 40(%1)\n"
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+ from = (const void *) (((const unsigned char *)from)+64);
+ to = (void *) (((unsigned char *)to)+64);
+ }
#endif /* Have SSE */
#ifdef HAVE_MMX2
/* since movntq is weakly-ordered, a "sfence"
- * is needed to become ordered again. */
- __asm__ __volatile__ ("sfence":::"memory");
+ * is needed to become ordered again. */
+ __asm__ __volatile__ ("sfence":::"memory");
#endif
#ifndef HAVE_SSE
- /* enables to use FPU */
- __asm__ __volatile__ (EMMS:::"memory");
+ /* enables to use FPU */
+ __asm__ __volatile__ (EMMS:::"memory");
#endif
- }
- /*
- * Now do the tail of the block
- */
- if(len) small_memcpy(to, from, len);
- return retval;
+ }
+ /*
+ * Now do the tail of the block
+ */
+ if(len) small_memcpy(to, from, len);
+ return retval;
}
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
static void * fast_memcpy( void * _to, const void * _from, size_t len )
{
asm (" \n"
- " cmplwi %cr0, %r5, 16 \n"
- " mr %r9, %r3 \n"
- " bc 4, 1, ._L3 \n"
- " andi. %r0, %r3, 15 \n"
- " bc 12, 2, ._L4 \n"
- " subfic %r0, %r0, 16 \n"
- " add %r11, %r3, %r0 \n"
- " cmplw %cr0, %r3, %r11 \n"
- " subf %r5, %r0, %r5 \n"
- " bc 4, 0, ._L4 \n"
- " ._L7: \n"
- " lbz %r0, 0(%r4) \n"
- " stb %r0, 0(%r9) \n"
- " addi %r9, %r9, 1 \n"
- " cmplw %cr0, %r9, %r11 \n"
- " addi %r4, %r4, 1 \n"
- " bc 12, 0, ._L7 \n"
- " ._L4: \n"
- " rlwinm. %r0, %r5, 0, 0, 27 \n"
- " bc 12, 2, ._L3 \n"
- " addi %r5, %r5, -16 \n"
- " li %r11, 15 \n"
- " lvsl %v12, 0, %r4 \n"
- " lvx %v1, 0, %r4 \n"
- " lvx %v0, %r11, %r4 \n"
- " rlwinm. %r0, %r5, 0, 0, 27 \n"
- " vperm %v13, %v1, %v0, %v12 \n"
- " addi %r4, %r4, 16 \n"
- " bc 12, 2, ._L11 \n"
- " ._L12: \n"
- " addi %r5, %r5, -16 \n"
- " li %r11, 15 \n"
- " lvx %v1, 0, %r4 \n"
- " lvx %v0, %r11, %r4 \n"
- " rlwinm. %r0, %r5, 0, 0, 27 \n"
- " stvx %v13, 0, %r9 \n"
- " vperm %v13, %v1, %v0, %v12 \n"
- " addi %r4, %r4, 16 \n"
- " addi %r9, %r9, 16 \n"
- " bc 4, 2, ._L12 \n"
- " ._L11: \n"
- " stvx %v13, 0, %r9 \n"
- " addi %r9, %r9, 16 \n"
- " ._L3: \n"
- " cmpwi %cr0, %r5, 0 \n"
- " bclr 12, 2 \n"
- " add %r5, %r9, %r5 \n"
- " cmplw %cr0, %r9, %r5 \n"
- " bclr 4, 0 \n"
- " ._L17: \n"
- " lbz %r0, 0(%r4) \n"
- " stb %r0, 0(%r9) \n"
- " addi %r9, %r9, 1 \n"
- " cmplw %cr0, %r9, %r5 \n"
- " addi %r4, %r4, 1 \n"
- " bc 12, 0, ._L17 \n"
+ " cmplwi %cr0, %r5, 16 \n"
+ " mr %r9, %r3 \n"
+ " bc 4, 1, ._L3 \n"
+ " andi. %r0, %r3, 15 \n"
+ " bc 12, 2, ._L4 \n"
+ " subfic %r0, %r0, 16 \n"
+ " add %r11, %r3, %r0 \n"
+ " cmplw %cr0, %r3, %r11 \n"
+ " subf %r5, %r0, %r5 \n"
+ " bc 4, 0, ._L4 \n"
+ " ._L7: \n"
+ " lbz %r0, 0(%r4) \n"
+ " stb %r0, 0(%r9) \n"
+ " addi %r9, %r9, 1 \n"
+ " cmplw %cr0, %r9, %r11 \n"
+ " addi %r4, %r4, 1 \n"
+ " bc 12, 0, ._L7 \n"
+ " ._L4: \n"
+ " rlwinm. %r0, %r5, 0, 0, 27 \n"
+ " bc 12, 2, ._L3 \n"
+ " addi %r5, %r5, -16 \n"
+ " li %r11, 15 \n"
+ " lvsl %v12, 0, %r4 \n"
+ " lvx %v1, 0, %r4 \n"
+ " lvx %v0, %r11, %r4 \n"
+ " rlwinm. %r0, %r5, 0, 0, 27 \n"
+ " vperm %v13, %v1, %v0, %v12 \n"
+ " addi %r4, %r4, 16 \n"
+ " bc 12, 2, ._L11 \n"
+ " ._L12: \n"
+ " addi %r5, %r5, -16 \n"
+ " li %r11, 15 \n"
+ " lvx %v1, 0, %r4 \n"
+ " lvx %v0, %r11, %r4 \n"
+ " rlwinm. %r0, %r5, 0, 0, 27 \n"
+ " stvx %v13, 0, %r9 \n"
+ " vperm %v13, %v1, %v0, %v12 \n"
+ " addi %r4, %r4, 16 \n"
+ " addi %r9, %r9, 16 \n"
+ " bc 4, 2, ._L12 \n"
+ " ._L11: \n"
+ " stvx %v13, 0, %r9 \n"
+ " addi %r9, %r9, 16 \n"
+ " ._L3: \n"
+ " cmpwi %cr0, %r5, 0 \n"
+ " bclr 12, 2 \n"
+ " add %r5, %r9, %r5 \n"
+ " cmplw %cr0, %r9, %r5 \n"
+ " bclr 4, 0 \n"
+ " ._L17: \n"
+ " lbz %r0, 0(%r4) \n"
+ " stb %r0, 0(%r9) \n"
+ " addi %r9, %r9, 1 \n"
+ " cmplw %cr0, %r9, %r5 \n"
+ " addi %r4, %r4, 1 \n"
+ " bc 12, 0, ._L17 \n"
);
}
intf_thread_t *p_intf = (intf_thread_t *)p_this;
playlist_t *p_playlist;
intf_sys_t *p_sys = malloc( sizeof( intf_sys_t ) );
-
+
if( !p_sys )
{
msg_Err( p_intf, "Out of memory" );
else /* else we show state-of-the art logo */
pix = gdk_pixbuf_new_from_file( DATA_PATH "/vlc48x48.png", &p_error );
- /* we need to replace '&' with '&' because '&' is a keyword of
+ /* we need to replace '&' with '&' because '&' is a keyword of
* notification-daemon parser */
int i_notify, i_len, i;
i_len = strlen( psz_tmp );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
if( !p_xml ) return VLC_EGENERIC;
p_reader = xml_ReaderCreate( p_xml, p_stream );
- if( xml_ReaderRead( p_reader ) != 1 ||
+ if( xml_ReaderRead( p_reader ) != 1 ||
xml_ReaderNodeType( p_reader ) != XML_READER_STARTELEM )
{
msg_Err( p_this, "invalid file (invalid root)" );
vlc_mutex_destroy( &p_media->lock );
if( p_media->psz_session_name ) free( p_media->psz_session_name );
- if( p_media->psz_session_description )
+ if( p_media->psz_session_description )
free( p_media->psz_session_description );
if( p_media->psz_session_url ) free( p_media->psz_session_url );
if( p_media->psz_session_email ) free( p_media->psz_session_email );
{
p_es->i_payload_type = 11;
}
- else if( p_fmt->audio.i_channels == 2 &&
+ else if( p_fmt->audio.i_channels == 2 &&
p_fmt->audio.i_rate == 44100 )
{
p_es->i_payload_type = 10;
}
/* */
if( p_64_sps && p_64_pps )
- if( asprintf( &p_es->psz_fmtp,
+ if( asprintf( &p_es->psz_fmtp,
"packetization-mode=1;profile-level-id=%s;"
"sprop-parameter-sets=%s,%s;", hexa, p_64_sps,
p_64_pps ) < 0 )
{
const char *psz_position = httpd_MsgGet( query, "Range" );
const char *psz_scale = httpd_MsgGet( query, "Scale" );
- if( psz_position )
+ if( psz_position )
psz_position = strstr( psz_position, "npt=" );
if( psz_position && !psz_scale )
{
if( psz_scale[0] == '-' ) /* rewind */
{
msg_Dbg( p_vod, "rewind request: %s", psz_scale );
- CommandPush( p_vod, RTSP_CMD_TYPE_REWIND, p_media,
+ CommandPush( p_vod, RTSP_CMD_TYPE_REWIND, p_media,
psz_session, f_scale, NULL );
}
else if(psz_scale[0] != '1' ) /* fast-forward */
{
- msg_Dbg( p_vod, "fastforward request: %s",
+ msg_Dbg( p_vod, "fastforward request: %s",
psz_scale );
CommandPush( p_vod, RTSP_CMD_TYPE_FORWARD, p_media,
psz_session, f_scale, NULL );
{
if( p_media->b_raw )
{
- if( asprintf( &psz_output,
+ if( asprintf( &psz_output,
"std{access=udp,dst=%s:%i,mux=%s}",
ip, i_port, p_media->psz_mux ) < 0 )
return VLC_ENOMEM;
}
else
{
- if( asprintf( &psz_output,
+ if( asprintf( &psz_output,
"rtp{dst=%s,port=%i,mux=%s}",
ip, i_port_video, p_media->psz_mux ) < 0 )
return VLC_ENOMEM;
}
else
{
- if( asprintf( &psz_output,
+ if( asprintf( &psz_output,
"rtp{dst=%s,port-video=%i,port-audio=%i}",
ip, i_port_video, i_port_audio ) < 0 )
return VLC_ENOMEM;
p_media->p_vod->p_sys->i_session_timeout );
else
httpd_MsgAdd( answer, "Session", "%s", psz_session );
- }
+ }
return VLC_SUCCESS;
}
# endif
/* gnome-screensaver changed it's D-Bus interface, so we need both */
screensaver_send_message_void( p_intf, p_connection, "Poke" );
- screensaver_send_message_void( p_intf, p_connection,
+ screensaver_send_message_void( p_intf, p_connection,
"SimulateUserActivity" );
}
# ifdef SCREENSAVER_DEBUG
rsvg_handle_set_size_callback( p_handle, svg_SizeCallback, p_filter, NULL );
if( ! rsvg_handle_write( p_handle,
- ( guchar* )p_svg->psz_text, strlen( p_svg->psz_text ),
- &error ) )
+ ( guchar* )p_svg->psz_text, strlen( p_svg->psz_text ),
+ &error ) )
{
msg_Err( p_filter, "error while rendering SVG: %s\n", error->message );
g_object_unref( G_OBJECT( p_handle ) );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
sprintf( psz_newvar, "blork-%i", i_var );
var_Set( p_this, psz_newvar, newval );
- return VLC_SUCCESS;
+ return VLC_SUCCESS;
}
/*****************************************************************************
static void CatalogAdd( xml_t *p_xml, const char *psz_arg1,
const char *psz_arg2, const char *psz_filename )
{
- xmlCatalogAdd( (unsigned char*)psz_arg1, (unsigned char*)psz_arg2,
+ xmlCatalogAdd( (unsigned char*)psz_arg1, (unsigned char*)psz_arg2,
(unsigned char*)psz_filename );
}
static int StreamRead( void *p_context, char *p_buffer, int i_buffer )
{
stream_t *s = (stream_t*)p_context;
- return stream_Read( s, p_buffer, i_buffer );
+ return stream_Read( s, p_buffer, i_buffer );
}
if( last->next == NULL ) break;
if( last ) last->next = l;
- l->prev = last;
+ l->prev = last;
return list;
}
char *name;
char *pcdata;
char *s;
- int xi;
+ int xi;
if( !parser->valid ) return NULL;
/* if this starts a comment tag, skip until end */
if( (parser->end - parser->start) > 7 &&
- xtag_cin( s[0], X_OPENTAG ) && xtag_cin( s[1], X_EMARK ) &&
+ xtag_cin( s[0], X_OPENTAG ) && xtag_cin( s[1], X_EMARK ) &&
xtag_cin( s[2], X_DASH ) && xtag_cin( s[3], X_DASH ) )
{
parser->start = s = &s[4];
/* ignore processing instructions '<?' ... '?>' */
if( (parser->end - parser->start) > 4 &&
- xtag_cin( s[0], X_OPENTAG ) && xtag_cin( s[1], X_QMARK ) )
+ xtag_cin( s[0], X_OPENTAG ) && xtag_cin( s[1], X_QMARK ) )
{
parser->start = s = &s[2];
while ((xi = xtag_index( parser, X_QMARK )) >= 0) {
/* ignore doctype '<!DOCTYPE' ... '>' */
if ( (parser->end - parser->start) > 8 &&
- !strncmp( s, "<!DOCTYPE", 9 ) ) {
+ !strncmp( s, "<!DOCTYPE", 9 ) ) {
xi = xtag_index( parser, X_CLOSETAG );
if ( xi > 0 ) {
parser->start = s = &s[xi+1];
return NULL;
/* parse CDATA content */
- if ( (parser->end - parser->start) > 8 &&
- !strncmp( s, "<![CDATA[", 9 ) ) {
+ if ( (parser->end - parser->start) > 8 &&
+ !strncmp( s, "<![CDATA[", 9 ) ) {
parser->start = s = &s[9];
while (parser->end - s > 2) {
if (strncmp( s, "]]>", 3 ) == 0) {
{
#ifdef XTAG_DEBUG
printf ("empty buffer");
-#endif
+#endif
return NULL;
}
else parser.end = (char *)&s[n];
int len, to_copy, total = 0;
va_start( ap, n );
-
+
for( s = va_arg( ap, char * ); s; s = va_arg( ap, char *) )
{
len = strlen (s);
for( l = xtag->attributes; l; l = l->next )
{
attr = (XAttribute *)l->data;
-
+
nn = xtag_snprints( buf, n, " ", attr->name, "=\"", attr->value,
"\"", NULL);
FORWARD( nn );
last[2] = ( i_size >> 8 )&0xff;
last[3] = ( i_size )&0xff;
- /* Skip blocks with SPS/PPS */
+ /* Skip blocks with SPS/PPS */
if( (last[4]&0x1f) == 7 || (last[4]&0x1f) == 8 )
{
; // FIXME Find a way to skip dat without frelling everything
uint8_t *p_buffer = p_stream->fmt.p_extra;
int i_buffer = p_stream->fmt.i_extra;
- while( i_buffer > 4 &&
+ while( i_buffer > 4 &&
p_buffer[0] == 0 && p_buffer[1] == 0 &&
p_buffer[2] == 0 && p_buffer[3] == 1 )
{
int i_offset = 1;
int i_size = 0;
int i_startcode = 0;
-
+
//msg_Dbg( p_stream, "we found a startcode for NAL with TYPE:%d", i_nal_type );
-
+
for( i_offset = 1; i_offset+3 < i_buffer ; i_offset++)
{
- if( p_buffer[i_offset] == 0 && p_buffer[i_offset+1] == 0 &&
+ if( p_buffer[i_offset] == 0 && p_buffer[i_offset+1] == 0 &&
p_buffer[i_offset+2] == 0 && p_buffer[i_offset+3] == 1 )
{
/* we found another startcode */
i_startcode = i_offset;
break;
- }
+ }
}
i_size = i_startcode ? i_startcode : i_buffer;
if( i_nal_type == 7 )
p_buffer += i_size;
}
}
-
+
/* FIXME use better value */
avcC = box_new( "avcC" );
bo_add_8( avcC, 1 ); /* configuration version */
i_length = i_size;
vals[3] = (unsigned char)(i_length & 0x7f);
i_length >>= 7;
- vals[2] = (unsigned char)((i_length & 0x7f) | 0x80);
+ vals[2] = (unsigned char)((i_length & 0x7f) | 0x80);
i_length >>= 7;
- vals[1] = (unsigned char)((i_length & 0x7f) | 0x80);
+ vals[1] = (unsigned char)((i_length & 0x7f) | 0x80);
i_length >>= 7;
vals[0] = (unsigned char)((i_length & 0x7f) | 0x80);
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
n = (i_pkt_size - i_hdr) / 8;
if( n < 0 )
return;
-
- i_residue = (i_pkt_size - i_hdr) % 8;
+
+ i_residue = (i_pkt_size - i_hdr) % 8;
for( i = 1; i < n + 1; i++ )
{
csa_BlockDecypher( kk, ib, block );
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
int i_system_header;
int i_dts_delay;
int i_rate_bound; /* units of 50 bytes/second */
-
+
int64_t i_instant_bitrate;
int64_t i_instant_size;
int64_t i_instant_dts;
{
sout_mux_sys_t *p_sys = p_mux->p_sys;
ps_stream_t *p_stream;
-
+
msg_Dbg( p_mux, "adding input codec=%4.4s",
(char*)&p_input->p_fmt->i_codec );
p_sys->i_instant_bitrate += p_input->p_fmt->i_bitrate + 1000/* overhead */;
/* FIXME -- spec requires an upper limit rate boundary in the system header;
- our codecs are VBR; using 2x nominal rate, convert to 50 bytes/sec */
+ our codecs are VBR; using 2x nominal rate, convert to 50 bytes/sec */
p_sys->i_rate_bound += p_input->p_fmt->i_bitrate * 2 / (8 * 50);
p_sys->i_psm_version++;
bits_write( &bits, 32, 0x01bb );
bits_write( &bits, 16, 12 - 6 + i_nb_stream * 3 );
bits_write( &bits, 1, 1 ); // marker bit
- bits_write( &bits, 22, i_rate_bound);
+ bits_write( &bits, 22, i_rate_bound);
bits_write( &bits, 1, 1 ); // marker bit
bits_write( &bits, 6, p_sys->i_audio_bound );
{
char *psz = p_input->p_fmt->p_extra_languages[i-1].psz_language;
const iso639_lang_t *pl = NULL;
-
+
if( strlen( psz ) == 2 )
{
pl = GetLang_1( psz );
p_stream->lang[i*3+0] = pl->psz_iso639_2T[0];
p_stream->lang[i*3+1] = pl->psz_iso639_2T[1];
p_stream->lang[i*3+2] = pl->psz_iso639_2T[2];
-
+
msg_Dbg( p_mux, " - lang=%c%c%c",
p_stream->lang[i*3+0], p_stream->lang[i*3+1],
p_stream->lang[i*3+2] );
}
/*****************************************************************************
- * Definitions of structures and functions used by this plugins
+ * Definitions of structures and functions used by this plugins
*****************************************************************************/
typedef struct
{
if( p_stream->i_cat == SPU_ES ||
p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) )
{
- /* Subtitles or Speex packets are quite small so they
+ /* Subtitles or Speex packets are quite small so they
* need to be flushed to be sent on time */
p_og = OggStreamFlush( p_mux, &p_stream->os, p_data->i_dts );
}
static int SDES_client_item_add( rtcp_client_t *p_client, int i_item, char *psz_name )
{
rtcp_SDES_item_t *p_item = NULL;
-
+
p_item = (rtcp_SDES_item_t *) malloc( sizeof( rtcp_SDES_item_t ) );
if( !p_item )
return VLC_ENOMEM;
rtcp_client_t *p_old = p_rtcp->pp_clients[i];
p_rtcp->pf_del_client( p_this, p_old->u_ssrc );
- pkt = rtcp_pkt_new( p_this, RTCP_BYE );
- if( pkt )
- {
- block_t *p_block = NULL;
- p_block = rtcp_encode_BYE( p_this, pkt, strdup("server is leaving") );
- /* FIXME:
+ pkt = rtcp_pkt_new( p_this, RTCP_BYE );
+ if( pkt )
+ {
+ block_t *p_block = NULL;
+ p_block = rtcp_encode_BYE( p_this, pkt, strdup("server is leaving") );
+ /* FIXME:
* if( p_block )
- * send_RTCP( p_this, p_block );
+ * send_RTCP( p_this, p_block );
*/
- }
-
+ }
+
}
/* wait till all clients have been signalled */
while( p_rtcp->i_clients != 0 )
vlc_bool_t b_sender, vlc_bool_t b_first )
{
rtcp_t *p_rtcp = (rtcp_t *) p_this;
- rtcp_client_t *p_client = NULL;
+ rtcp_client_t *p_client = NULL;
uint32_t i_rtcp_min = 5; /* seconds */
- uint32_t i_pos = 0;
- double i_bandwidth = u_bandwidth;
+ uint32_t i_pos = 0;
+ double i_bandwidth = u_bandwidth;
const double i_compensation = 2.71828 - 1.5;
double i_interval = 0;
int n = p_rtcp->i_clients;
p_client = p_rtcp->pf_find_client( p_this, u_ssrc, &i_pos );
if( !p_client )
return -1;
-
- i_interval = p_client->p_stats->u_avg_pkt_size * ( n / i_bandwidth );
+
+ i_interval = p_client->p_stats->u_avg_pkt_size * ( n / i_bandwidth );
if( i_interval < i_rtcp_min )
i_interval = i_rtcp_min;
i_interval = i_interval * ( drand48() + 0.5 );
*--------------------------------------------------------------------------
*/
void rtcp_expire( vlc_object_t *p_this, rtcp_event_t rtcp_event, uint64_t u_bandwidth,
- uint32_t u_ssrc, vlc_bool_t b_sender, vlc_bool_t *b_first )
+ uint32_t u_ssrc, vlc_bool_t b_sender, vlc_bool_t *b_first )
{
rtcp_t *p_rtcp = (rtcp_t *) p_this;
rtcp_client_t *p_client = NULL;
msg_Dbg( p_this, "decoding record: SR" );
/* parse sender info */
- p_pkt->u_payload_type = RTCP_SR;
+ p_pkt->u_payload_type = RTCP_SR;
p_pkt->report.sr.ntp_timestampH = bs_read( p_rtcp->bs, 32 );
p_pkt->report.sr.ntp_timestampL = bs_read( p_rtcp->bs, 32 );
p_pkt->report.sr.rtp_timestamp = bs_read( p_rtcp->bs, 32 );
p_client->p_stats->u_pkt_count,
p_client->p_stats->u_octet_count,
p_pkt->u_ssrc );
-
+
p_client->p_stats->u_fraction_lost = bs_read( p_rtcp->bs, 8 );
p_client->p_stats->u_pkt_lost = bs_read( p_rtcp->bs, 24 );
p_client->p_stats->u_highest_seq_no = bs_read( p_rtcp->bs, 32 );
p_client = p_rtcp->pp_clients[i_pos];
p_client->p_stats->u_RR_received++;
- msg_Dbg( p_this, "RR received %d, SSRC %d",
- p_client->p_stats->u_RR_received, u_ssrc );
+ msg_Dbg( p_this, "RR received %d, SSRC %d",
+ p_client->p_stats->u_RR_received, u_ssrc );
p_client->p_stats->u_fraction_lost = bs_read( p_rtcp->bs, 8 );
p_client->p_stats->u_pkt_lost = bs_read( p_rtcp->bs, 24 );
case RTCP_SDES_LOC:
case RTCP_SDES_TOOL:
case RTCP_SDES_NOTE:
- {
- char psz_name[255];
+ {
+ char psz_name[255];
u_length = bs_read( p_rtcp->bs, 8 );
for( i = 0 ; i < u_length; i++ )
psz_name[i] = bs_read( p_rtcp->bs, 8 );
}
SDES_client_item_add( p_client, u_item, psz_name );
- }
- break;
+ }
+ break;
case RTCP_SDES_PRIV: /* ignoring these */
{
uint8_t u_prefix_len = 0;
- uint8_t u_length = 0;
+ uint8_t u_length = 0;
char psz_prefix_name[255];
char psz_name[255];
}
psz_name[255] = '\0';
SDES_client_item_add( p_client, u_item, psz_name );
- }
- break;
+ }
+ break;
default:
return VLC_EGENERIC;
static int rtcp_decode_APP( vlc_object_t *p_this, rtcp_pkt_t *p_pkt )
{
rtcp_t *p_rtcp = (rtcp_t *) p_this;
- rtcp_client_t *p_client = NULL;
+ rtcp_client_t *p_client = NULL;
char psz_name[4];
char* psz_data = NULL;
- uint32_t u_ssrc = 0;
+ uint32_t u_ssrc = 0;
uint32_t i_pos = 0;
uint32_t i = 0;
int result = 0;
psz_name[i] = bs_read( p_rtcp->bs, 8 );
}
psz_name[4] = '\0';
-
+
p_pkt->u_payload_type = RTCP_APP;
p_pkt->report.app.psz_prefix = strdup( psz_name );
p_pkt->report.app.u_prefix_len = 4;
while( !bs_eof( p_rtcp->bs ) )
{
- uint32_t i_pos = 0;
-
+ uint32_t i_pos = 0;
+
switch( p_pkt->u_payload_type )
{
case RTCP_SR:
if( p_rtcp->u_active < p_rtcp->u_members )
{
- rtcp_event_t event = EVENT_BYE;
-
+ rtcp_event_t event = EVENT_BYE;
+
p_rtcp->i_next_date = p_rtcp->i_date +
(mtime_t) ( (p_rtcp->u_active / p_rtcp->u_members) *
(p_rtcp->i_next_date - p_rtcp->i_date) );
break;
case RTCP_SDES:
p_pkt->u_length += sizeof(rtcp_SDES_t);
- if( p_pkt->report.sdes.pp_items )
- p_pkt->u_length += p_pkt->report.sdes.u_items;
+ if( p_pkt->report.sdes.pp_items )
+ p_pkt->u_length += p_pkt->report.sdes.u_items;
break;
case RTCP_BYE:
p_pkt->u_length += sizeof(rtcp_BYE_t);
default:
msg_Err( p_this, "unknown RTCP packet type %d: "
"possible leaking of memory.",
- p_pkt->u_payload_type );
+ p_pkt->u_payload_type );
break;
}
free( p_pkt );
rtcp_stats_t *p_stats = NULL;
rtcp_client_t *p_client = NULL;
uint32_t i_pos = 0;
- int result = 0;
+ int result = 0;
if( p_pkt->u_payload_type != RTCP_SR )
return NULL;
block_t *p_block = NULL;
rtcp_stats_t *p_stats = NULL;
rtcp_client_t *p_client = NULL;
- uint32_t i_pos = 0;
- int result = 0;
+ uint32_t i_pos = 0;
+ int result = 0;
if( p_pkt->u_payload_type != RTCP_RR )
return NULL;
uint32_t i_count = strlen( p_pkt->report.sdes.pp_items[i_item]->psz_data );
uint8_t u_octet = i_count / 8; /* Octect count ??*/
rtcp_SDES_item_t *p_item = p_pkt->report.sdes.pp_items[i_item];
- uint32_t i_pos, i_pad, i_padding;
+ uint32_t i_pos, i_pad, i_padding;
bs_write( s, 8, p_item->u_type );
bs_write( s, 8, u_octet );
/* Give reason for leaving */
//FIXME: bs_write( s, 8, p_item->u_type );
bs_write( s, 8, u_octet );
-
+
for( i_pos = 0; i_pos < i_count; i_pos++ )
{
/* FIXME: must be UTF 8 encoded */
} rtcp_stats_t;
-typedef struct
+typedef struct
{
uint32_t u_version; /*< RTCP version number */
vlc_bool_t b_padding; /*< indicates if packets has padding */
int (*pf_add_client)( vlc_object_t *p_this, uint32_t u_ssrc, uint32_t *i_pos );
int (*pf_del_client)( vlc_object_t *p_this, uint32_t u_ssrc );
int (*pf_find_client)( vlc_object_t *p_this, uint32_t u_ssrc, uint32_t *i_pos );
- int (*pf_cleanup_clients)( vlc_object_t *p_this );
+ int (*pf_cleanup_clients)( vlc_object_t *p_this );
int (*pf_destroy_clients)( vlc_object_t *p_this );
} rtcp_t;
* it will return *b_first = VLC_FALSE;
*/
void rtcp_expire( vlc_object_t *p_this, rtcp_event_t rtcp_event, uint64_t u_bandwidth,
- uint32_t u_ssrc, vlc_bool_t b_sender, vlc_bool_t *b_first );
+ uint32_t u_ssrc, vlc_bool_t b_sender, vlc_bool_t *b_first );
/**
* rtcp_received
if( p_input->p_fmt->audio.i_physical_channels )
{
unsigned int i;
-
+
for( i = 0; i < sizeof(pi_channels_in)/sizeof(uint32_t); i++ )
{
if( p_input->p_fmt->audio.i_physical_channels & pi_channels_src[i])
/* FIXME: FFMPEG isn't happy at all if you leave this */
if( p_dec->fmt_out.i_extra ) free( p_dec->fmt_out.p_extra );
p_dec->fmt_out.i_extra = 0; p_dec->fmt_out.p_extra = NULL;
-
+
/* Set the new extradata */
p_dec->fmt_out.i_extra = p_sys->p_pps->i_buffer + p_sys->p_sps->i_buffer;
p_dec->fmt_out.p_extra = (uint8_t*)malloc( p_dec->fmt_out.i_extra );
}
else
{
- /* This type of stream contains data with 3 of 4 byte startcodes
+ /* This type of stream contains data with 3 of 4 byte startcodes
* The fmt_in.p_extra MAY contain SPS/PPS with 4 byte startcodes
* The fmt_out.p_extra should be the same */
-
+
/* Set callback */
p_dec->pf_packetize = Packetize;
/*****************************************************************************
* ParseNALBlock: parses annexB type NALs
- * All p_frag blocks are required to start with 0 0 0 1 4-byte startcode
+ * All p_frag blocks are required to start with 0 0 0 1 4-byte startcode
*****************************************************************************/
static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
{
p_sys->pp_last = &p_sys->p_frame;
p_sys->b_frame_slice = VLC_FALSE;
}
-// p_sys->i_interpolated_dts =
+// p_sys->i_interpolated_dts =
// p_sys->i_last_ref_pts = 0;
block_Release( *pp_block );
}
/* delete parent item */
- /* HACK: if i_children == 0 the item won't be deleted
+ /* HACK: if i_children == 0 the item won't be deleted
* That means that it _had_ children but they were deleted */
if( p_pl_item->i_children == 0 )
p_pl_item->i_children = -1;
if( s != INVALID_SOCKET )
{
INTERFACE_INFO ifaces[10]; // Assume there will be no more than 10 IP interfaces
- size_t len = sizeof(ifaces);
+ size_t len = sizeof(ifaces);
if( SOCKET_ERROR != WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0, &ifaces, len, &len, NULL, NULL) )
{
case UPNP_EVENT_SUBSCRIBE_COMPLETE:
msg_Warn( cookie->serviceDiscovery, "subscription complete" );
break;
-
+
case UPNP_DISCOVERY_SEARCH_TIMEOUT:
msg_Warn( cookie->serviceDiscovery, "search timeout" );
break;
-
+
default:
msg_Dbg( cookie->serviceDiscovery, "%s:%d: DEBUG: UNHANDLED EVENT ( TYPE=%d )", __FILE__, __LINE__, eventType );
break;
p_sys->p_input = vlc_object_find( p_stream, VLC_OBJECT_INPUT, FIND_PARENT );
if( !p_sys->p_input )
return NULL;
-
+
p_item = input_GetItem(p_sys->p_input);
p_fmt_copy = malloc(sizeof(es_format_t));
{
msg_Err( p_stream, "no suitable sout access module for `%s/%s://%s'",
psz_access, psz_mux, psz_dst );
- intf_UserFatal( p_stream, VLC_FALSE,
- _("Streaming / Transcoding failed"),
- _("There is no suitable stream-output access module for \"%s/%s://%s\"."),
- psz_access,
+ intf_UserFatal( p_stream, VLC_FALSE,
+ _("Streaming / Transcoding failed"),
+ _("There is no suitable stream-output access module for \"%s/%s://%s\"."),
+ psz_access,
psz_mux, psz_dst );
return( NULL );
}
{
msg_Err( p_stream, "no suitable sout mux module for `%s/%s://%s'",
psz_access, psz_mux, psz_dst );
- intf_UserFatal( p_stream, VLC_FALSE,
- _("Streaming / Transcoding failed"),
+ intf_UserFatal( p_stream, VLC_FALSE,
+ _("Streaming / Transcoding failed"),
_("There is no suitable stream-output access module "\
- "for \"%s/%s://%s\"."),
+ "for \"%s/%s://%s\"."),
psz_access, psz_mux, psz_dst );
sout_AccessOutDelete( p_access );
return( NULL );
continue;
/* needed both :sout-rtp-sdp= and rtp{sdp=} can be used */
- if( !strcmp( p_cfg->psz_value, psz ) )
+ if( !strcmp( p_cfg->psz_value, psz ) )
continue;
SDPHandleUrl( p_stream, p_cfg->psz_value );
id->i_port, id->i_port + 1 );
}
}
- else if( ( url.psz_protocol && !strcasecmp( url.psz_protocol, "sap" ) ) ||
+ else if( ( url.psz_protocol && !strcasecmp( url.psz_protocol, "sap" ) ) ||
( url.psz_host && !strcasecmp( url.psz_host, "sap" ) ) )
{
p_sys->b_export_sap = VLC_TRUE;
char *p_64_pps = NULL;
char hexa[6+1];
- while( i_buffer > 4 &&
+ while( i_buffer > 4 &&
p_buffer[0] == 0 && p_buffer[1] == 0 &&
p_buffer[2] == 0 && p_buffer[3] == 1 )
{
i_size = i_offset - ( p_buffer[i_offset-1] == 0 ? 1 : 0);
i_skip = i_offset;
break;
- }
+ }
}
/* TODO add STAP-A to remove a lot of overhead with small slice/sei/... */
rtp_packetize_h264_nal( p_stream, id, p_buffer, i_size,
msg_Err( p_stream, "cannot find decoder" );
return VLC_EGENERIC;
}
- id->p_decoder->fmt_out.audio.i_bitspersample =
+ id->p_decoder->fmt_out.audio.i_bitspersample =
audio_BitsPerSample( id->p_decoder->fmt_out.i_codec );
fmt_last = id->p_decoder->fmt_out;
/* Fix AAC SBR changing number of channels and sampling rate */
{
int new_level = new_blk->level;
int level = blk->level;
- if ( i1 > 64 || i2 > 64 || !blk->run || !new_blk->run ) return score;
+ if ( i1 > 64 || i2 > 64 || !blk->run || !new_blk->run ) return score;
if ( i1 + blk->run == i2 + new_blk->run )
{
- int64_t tmp = saturate(level * i_qscale)
+ int64_t tmp = saturate(level * i_qscale)
- saturate(new_level * i_qscale_new);
i1 += blk->run;
i2 += new_blk->run;
if (i < 64 ) goto normal_code;
}
fprintf(stderr, "Err in B14\n");
- tr->b_error = 1;
+ tr->b_error = 1;
break; /* illegal, check needed to avoid buffer overflow */
}
bs_flush( bs, 2 ); /* dump end of block code */
if (i < 64) goto normal_code;
}
fprintf(stderr, "Err in B15\n");
- tr->b_error = 1;
+ tr->b_error = 1;
break; /* illegal, check needed to avoid buffer overflow */
}
bs_flush( bs, 4 ); /* dump end of block code */
if (i < 64) goto normal_code;
}
fprintf(stderr, "Err in non-intra\n");
- tr->b_error = 1;
+ tr->b_error = 1;
break; /* illegal, check needed to avoid buffer overflow */
}
bs_flush( bs, 2 ); /* dump end of block code */
bs_write( bs, *(dc + i), *(dc_len + i) );
putintrablk( bs, new_block[i], tr->intra_vlc_format );
}
-
+
}
else
{
const static VLCtable cbptable[64]=
{
- {0x01,9}, {0x0b,5}, {0x09,5}, {0x0d,6},
- {0x0d,4}, {0x17,7}, {0x13,7}, {0x1f,8},
- {0x0c,4}, {0x16,7}, {0x12,7}, {0x1e,8},
- {0x13,5}, {0x1b,8}, {0x17,8}, {0x13,8},
- {0x0b,4}, {0x15,7}, {0x11,7}, {0x1d,8},
- {0x11,5}, {0x19,8}, {0x15,8}, {0x11,8},
- {0x0f,6}, {0x0f,8}, {0x0d,8}, {0x03,9},
- {0x0f,5}, {0x0b,8}, {0x07,8}, {0x07,9},
- {0x0a,4}, {0x14,7}, {0x10,7}, {0x1c,8},
- {0x0e,6}, {0x0e,8}, {0x0c,8}, {0x02,9},
- {0x10,5}, {0x18,8}, {0x14,8}, {0x10,8},
- {0x0e,5}, {0x0a,8}, {0x06,8}, {0x06,9},
- {0x12,5}, {0x1a,8}, {0x16,8}, {0x12,8},
- {0x0d,5}, {0x09,8}, {0x05,8}, {0x05,9},
+ {0x01,9}, {0x0b,5}, {0x09,5}, {0x0d,6},
+ {0x0d,4}, {0x17,7}, {0x13,7}, {0x1f,8},
+ {0x0c,4}, {0x16,7}, {0x12,7}, {0x1e,8},
+ {0x13,5}, {0x1b,8}, {0x17,8}, {0x13,8},
+ {0x0b,4}, {0x15,7}, {0x11,7}, {0x1d,8},
+ {0x11,5}, {0x19,8}, {0x15,8}, {0x11,8},
+ {0x0f,6}, {0x0f,8}, {0x0d,8}, {0x03,9},
+ {0x0f,5}, {0x0b,8}, {0x07,8}, {0x07,9},
+ {0x0a,4}, {0x14,7}, {0x10,7}, {0x1c,8},
+ {0x0e,6}, {0x0e,8}, {0x0c,8}, {0x02,9},
+ {0x10,5}, {0x18,8}, {0x14,8}, {0x10,8},
+ {0x0e,5}, {0x0a,8}, {0x06,8}, {0x06,9},
+ {0x12,5}, {0x1a,8}, {0x16,8}, {0x12,8},
+ {0x0d,5}, {0x09,8}, {0x05,8}, {0x05,9},
{0x0c,5}, {0x08,8}, {0x04,8}, {0x04,9},
{0x07,3}, {0x0a,5}, {0x08,5}, {0x0c,6}
};
22, 23, 24, 26, 28, 30, 32, 35,
23, 24, 26, 28, 30, 32, 35, 38,
25, 26, 28, 30, 32, 35, 38, 41,
- 27, 28, 30, 32, 35, 38, 41, 45,
+ 27, 28, 30, 32, 35, 38, 41, 45,
};
static const uint8_t mpeg4_default_non_intra_matrix[64] = {
vlc_bool_t b_transrate;
block_t *p_current_buffer;
- block_t *p_next_gop;
+ block_t *p_next_gop;
mtime_t i_next_gop_duration;
size_t i_next_gop_size;
p_cmap_b[ j ] = CLIP( b );
#if 0
- printf("+++Alloc RGB cmap %d (%d, %d, %d)\n", j,
- p_cmap_r[ j ] >>8, p_cmap_g[ j ] >>8,
- p_cmap_b[ j ] >>8);
+ printf("+++Alloc RGB cmap %d (%d, %d, %d)\n", j,
+ p_cmap_r[ j ] >>8, p_cmap_g[ j ] >>8,
+ p_cmap_b[ j ] >>8);
#endif
/* Allocate color */
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
}
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
} while(0)
#define MMX_END _mm_empty()
-
+
#define MMX_INIT_16 \
mm0 = _mm_cvtsi32_si64(*(int*)p_u); \
mm1 = _mm_cvtsi32_si64(*(int*)p_v); \
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#else // defined(MODULE_NAME_IS_i420_yuy2_sse2)
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
#else // defined(MODULE_NAME_IS_i420_yuy2_sse2)
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch|
#else // defined(MODULE_NAME_IS_i420_yuy2_sse2)
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch|
#else // defined(MODULE_NAME_IS_i420_yuy2_sse2)
/*
- ** SSE2 128 bits fetch/store instructions are faster
+ ** SSE2 128 bits fetch/store instructions are faster
** if memory access is 16 bytes aligned
*/
if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch|
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
} while(0)
#define MMX_END _mm_empty()
-
+
#define MMX_YUV420_YUYV \
mm1 = _mm_cvtsi32_si64(*(int*)p_u); \
mm2 = _mm_cvtsi32_si64(*(int*)p_v); \
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*(uint64_t*)p_line = (uint64_t)mm2; \
mm0 = _mm_unpackhi_pi8(mm0, mm1); \
*(uint64_t*)(p_line+8) = (uint64_t)mm0;
-
+
#define MMX_YUV422_YVYU \
mm0 = (__m64)*(uint64_t*)p_y; \
mm2 = _mm_cvtsi32_si64(*(int*)p_u); \
/* Completely transparent. Don't change pixel */
continue;
}
- else
+ else
{
int i_pos = i_x * i_pix_pitch;
if( i_trans == MAX_TRANS )
change_integer_list( pi_color_values, ppsz_color_descriptions, 0 );
add_integer( CFG_PREFIX "saturationthres", 20, NULL,
_("Saturaton threshold"), "", VLC_FALSE );
- add_integer( CFG_PREFIX "similaritythres", 15, NULL,
+ add_integer( CFG_PREFIX "similaritythres", 15, NULL,
_("Similarity threshold"), "", VLC_FALSE );
set_callbacks( Create, Destroy );
vlc_module_end();
while( (uintptr_t)p_s1 % 16 )
{
*p_dest++ = ( (uint16_t)(*p_s1++) + (uint16_t)(*p_s2++) ) >> 1;
- }
+ }
p_end = p_dest + i_bytes - 16;
while( p_dest < p_end )
{
* Copyright (C) 2004-2005 the VideoLAN team
* $Id: ???
*
- * Authors: Dugal Harris
+ * Authors: Dugal Harris
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
rectangle corner[s] */
int i_width; /* width of the rectangle */
int i_height; /* height of the rectangle */
-
+
int i_id;
int i_type;
-
+
char *p_description;
float *pf_param;
int i_param_size;
/*****************************************************************************
- * opencv_example.cpp : Example OpenCV internal video filter
+ * opencv_example.cpp : Example OpenCV internal video filter
* (performs face identification). Mostly taken from the facedetect.c
* OpenCV sample.
*****************************************************************************
set_callbacks( OpenFilter, CloseFilter );
add_string( "opencv-haarcascade-file", "c:\\haarcascade_frontalface_alt.xml", NULL,
- N_("Haar cascade filename"),
- N_("Name of XML file containing Haar cascade description"), VLC_FALSE);
+ N_("Haar cascade filename"),
+ N_("Name of XML file containing Haar cascade description"), VLC_FALSE);
vlc_module_end();
/*****************************************************************************
return VLC_EGENERIC;
}
- //init the video_filter_event_info_t struct
+ //init the video_filter_event_info_t struct
p_sys->event_info.i_region_size = 0;
p_sys->event_info.p_region = NULL;
p_sys->i_id = 0;
cvReleaseMemStorage( &p_filter->p_sys->p_storage );
if (NULL != p_filter->p_sys->event_info.p_region)
- free(p_filter->p_sys->event_info.p_region);
+ free(p_filter->p_sys->event_info.p_region);
free( p_sys );
/****************************************************************************
* Filter: Check for faces and raises an event when one is found.
****************************************************************************
- * p_pic: A picture_t with its p_data_orig member set to an array of
- * IplImages (one image for each picture_t plane).
+ * p_pic: A picture_t with its p_data_orig member set to an array of
+ * IplImages (one image for each picture_t plane).
****************************************************************************/
static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
{
int i_planes = 0;
CvPoint pt1, pt2;
int i, scale = 1;
-
+
if ((!p_pic) )
{
msg_Err( p_filter, "no image array" );
//perform face detection
cvClearMemStorage(p_filter->p_sys->p_storage);
- CvSeq* faces = NULL;
+ CvSeq* faces = NULL;
if( p_filter->p_sys->p_cascade )
{
//we should make some of these params config variables
- faces = cvHaarDetectObjects( p_img[0], p_filter->p_sys->p_cascade,
+ faces = cvHaarDetectObjects( p_img[0], p_filter->p_sys->p_cascade,
p_filter->p_sys->p_storage, 1.15, 5, CV_HAAR_DO_CANNY_PRUNING,
cvSize(20, 20) );
//create the video_filter_region_info_t struct
CvRect* r;
if (faces && (faces->total > 0))
{
- //msg_Dbg( p_filter, "Found %d face(s)\n", faces->total );
+ //msg_Dbg( p_filter, "Found %d face(s)\n", faces->total );
if (NULL != p_filter->p_sys->event_info.p_region)
{
free(p_filter->p_sys->event_info.p_region);
p_filter->p_sys->event_info.p_region = NULL;
- }
+ }
if( NULL == ( p_filter->p_sys->event_info.p_region =
(video_filter_region_info_t *)malloc(faces->total*sizeof(video_filter_region_info_t))))
{
ReleaseImages(p_vout);
vout_DatePicture( p_vout->p_sys->p_vout, p_outpic, p_pic->date );
-
+
vout_UnlinkPicture( p_vout->p_sys->p_vout, p_outpic );
vout_DisplayPicture( p_vout->p_sys->p_vout, p_outpic );
}
/*****************************************************************************
* create_text_region : compose a text region SPU
*****************************************************************************/
-static subpicture_region_t *create_text_region( filter_t *p_filter, subpicture_t *p_spu,
+static subpicture_region_t *create_text_region( filter_t *p_filter, subpicture_t *p_spu,
int i_width, int i_height, const char *psz_text )
{
subpicture_region_t *p_region;
static void init_precalc_table(filter_sys_t *p_filter)
{
float sigma = p_filter->f_sigma;
-
+
for(int i = 0; i < 512; ++i)
{
p_filter->tab_precalc[i] = (i - 256) * sigma;
(p_src[(i + 1) * i_src_pitch + j ] * v1) +
(p_src[(i + 1) * i_src_pitch + j + 1] * v1);
- pix = pix >= 0 ? clip(pix) : -clip(pix * -1);
- p_out[i * i_src_pitch + j] = clip( p_src[i * i_src_pitch + j] +
- p_filter->p_sys->tab_precalc[pix + 256] );
+ pix = pix >= 0 ? clip(pix) : -clip(pix * -1);
+ p_out[i * i_src_pitch + j] = clip( p_src[i * i_src_pitch + j] +
+ p_filter->p_sys->tab_precalc[pix + 256] );
}
}
w1 &= ~1;
h1 = w1 * VOUT_ASPECT_FACTOR / i_aspect&~1;
h1 &= ~1;
-
+
h2 = p_vout->output.i_height / p_vout->p_sys->i_row&~1;
h2 &= ~1;
w2 = h2 * i_aspect / VOUT_ASPECT_FACTOR&~1;
w2 &= ~1;
-
+
if ( h1 * p_vout->p_sys->i_row < p_vout->output.i_height )
{
unsigned int i_tmp;
- i_target_width = w2;
+ i_target_width = w2;
i_target_height = h2;
i_vstart = 0;
i_vend = p_vout->output.i_height;
p_vout->p_sys->i_vout = 0;
msg_Dbg( p_vout, "target window (%d,%d)-(%d,%d)", i_hstart,i_vstart,i_hend,i_vend );
-
+
i_top = 0;
i_height = 0;
else if( ( i_col + 1 ) * i_target_width < i_hstart ||
( i_col * i_target_width ) > i_hend )
{
- i_width = 0;
+ i_width = 0;
}
else
{
i_align |= VOUT_ALIGN_RIGHT;
}
}
-
+
if( i_row * i_target_height >= i_vstart &&
( i_row + 1 ) * i_target_height <= i_vend )
{
* Authors: Iuri Diniz <iuri@digizap.com.br>
*
* This code is based in sdl.c and fb.c, thanks for VideoLAN team.
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
vlc_module_end();
-static int Create( vlc_object_t *p_this )
+static int Create( vlc_object_t *p_this )
{
vout_thread_t *p_vout = (vout_thread_t *)p_this;
vout_sys_t *p_sys = NULL;
switch( p_sys->p_pixel_format )
{
- case DSPF_RGB332:
+ case DSPF_RGB332:
/* 8 bit RGB (1 byte, red 3@5, green 3@2, blue 2@0) */
/* i_pixel_pitch = 1; */
i_rlength = 3;
uint32_t i_height; /* height of main window */
uint32_t i_screen_depth;
vlc_bool_t b_double_buffered;
-
+
uint32_t u_current; /* Current output resolution. */
CascadeScreen *p_screen;
};
{
vout_thread_t *p_vout = (vout_thread_t *)p_this;
bool b_double_buffered = false;
-
+
p_vout->p_sys = (struct vout_sys_t*) malloc( sizeof(struct vout_sys_t) );
if( p_vout->p_sys == NULL )
{
/* Get current screen resolution */
msg_Dbg( p_vout, "number of screen resolutions supported %u",
p_vout->p_sys->p_screen->GetNumScreenResolutionsSupported() );
-
+
p_vout->p_sys->p_screen->GetCurrentScreenResolution( (u32) p_vout->p_sys->u_current );
p_vout->p_sys->p_screen->SetScreenResolution( (u32) p_vout->p_sys->u_current );
msg_Dbg( p_vout, "available screen resolutions:" );
for (u32 i=0; i<p_vout->p_sys->p_screen->GetNumScreenResolutionsSupported(); i++)
{
- u32 i_width=0;
- u32 i_height=0;
- u8 i_screen_depth=0;
- bool b_buffered;
-
+ u32 i_width=0;
+ u32 i_height=0;
+ u8 i_screen_depth=0;
+ bool b_buffered;
+
p_vout->p_sys->p_screen->GetSupportedScreenResolutionAt( i,
i_width, i_height, i_screen_depth, b_buffered);
msg_Dbg( p_vout, " screen index = %u, width = %u, height = %u, depth = %u, double buffered = %s",
i, i_width, i_height, i_screen_depth, (b_buffered ? "yes" : "no") );
}
-#endif
-
+#endif
+
p_vout->p_sys->p_screen->GetSupportedScreenResolutionAt( (u32) p_vout->p_sys->u_current,
(u32) p_vout->p_sys->i_width,
(u32) p_vout->p_sys->i_height,
p_vout->p_sys->i_height,
p_vout->p_sys->i_screen_depth,
p_vout->p_sys->b_double_buffered );
-
+
return VLC_SUCCESS;
}
free( p_pic->p_sys );
return -1;
}
-
+
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->p_pixels = (uint8_t*) p_pic->p_sys->p_image->MapLock();
p_pic->p->i_visible_pitch = p_pic->p->i_pixel_pitch
* p_vout->output.i_width;
- return VLC_SUCCESS;
+ return VLC_SUCCESS;
}
/*****************************************************************************
{ /* Just a test to see the effect described above. REMOVE THIS */
msg_Err( p_vout, "unlocking shared memory failed, already unlocked" );
}
-
+
if( p_pic->p_sys->p_image->Close() )
{
msg_Err( p_vout, "closing shared memory failed. Leaking memory of %ul",
p_pic->p_sys->p_image->GetSize() );
}
-
+
delete p_pic->p_sys->p_image;
free( p_pic->p_sys );
}
{
uint32_t i_width, i_height, i_x, i_y;
uint32_t i_offset = 0;
-
+
vout_PlacePicture( p_vout, p_vout->p_sys->i_width,
p_vout->p_sys->i_height,
&i_x, &i_y, &i_width, &i_height );
/* Currently the only pixel format supported is 32bpp RGBA.*/
p_vout->p_sys->p_screen->LockScreen();
-
+
/* Unlock the shared memory region first. */
- if( p_pic->p_sys->p_image->Unlock() )
+ if( p_pic->p_sys->p_image->Unlock() )
{
msg_Err( p_vout, "unlocking shared memory failed. Expect threading problems." );
}
-
+
p_vout->p_sys->p_screen->Blit( CascadePoint( (u32) i_x, (u32) i_y ), /* Place bitmap at */
(*p_pic->p_sys->p_image) , /* Image data */
(u32) i_offset, /* Offset in SharedMemoryZone */
(u32) i_height, /* Source bitmap height */
(u32) p_vout->p_sys->i_screen_depth, /* Source pixel depth */
CascadeRect( (u32) i_x, (u32) i_y, (u32) i_width, (u32) i_height ) );
-
+
p_vout->p_sys->p_screen->UnlockScreen();
}
if( winVer.dwMajorVersion > 5 )
{
/* Windows Vista or above, make this module the default */
- _got_vista_or_above = VLC_TRUE;
+ _got_vista_or_above = VLC_TRUE;
return 150;
}
}
#endif
/*****************************************************************************
- * CUSTOMVERTEX:
+ * CUSTOMVERTEX:
*****************************************************************************
*****************************************************************************/
-typedef struct
+typedef struct
{
- FLOAT x,y,z; // vertex untransformed position
+ FLOAT x,y,z; // vertex untransformed position
FLOAT rhw; // eye distance
D3DCOLOR diffuse; // diffuse color
FLOAT tu, tv; // texture relative coordinates
Display(p_vout, p_pic);
/*
- ** Video window is initially hidden, show it now since we got a
+ ** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
}
/*****************************************************************************
- * DirectD3DVoutCreate: Initialize and instance of Direct3D9
+ * DirectD3DVoutCreate: Initialize and instance of Direct3D9
*****************************************************************************
* This function initialize Direct3D and analyze available resources from
* default adapter.
D3DCREATE_SOFTWARE_VERTEXPROCESSING|
D3DCREATE_MULTITHREADED,
&d3dpp, &p_d3ddev );
- if( FAILED(hr) )
+ if( FAILED(hr) )
{
msg_Err(p_vout, "Could not create the D3D device! (hr=0x%lX)", hr);
return VLC_EGENERIC;
}
/*****************************************************************************
- * DirectD3DClose: release the Direct3D9 device
+ * DirectD3DClose: release the Direct3D9 device
*****************************************************************************/
static void Direct3DVoutClose( vout_thread_t *p_vout )
{
IDirect3DDevice9_Release(p_vout->p_sys->p_d3ddev);
p_vout->p_sys->p_d3ddev = NULL;
}
-
+
p_vout->p_sys->hmonitor = NULL;
}
/*****************************************************************************
- * DirectD3DClose: reset the Direct3D9 device
+ * DirectD3DClose: reset the Direct3D9 device
*****************************************************************************
* All resources must be deallocated before the reset occur, they will be
* realllocated once the reset has been performed successfully
//if( p_vout->p_sys->b_hw_yuv && ! _got_vista_or_above )
if( p_vout->p_sys->b_hw_yuv )
{
- /* it sounds like vista does not support YUV surfaces at all */
+ /* it sounds like vista does not support YUV surfaces at all */
switch( i_chroma )
{
case VLC_FOURCC('U','Y','V','Y'):
/* typically 3D textures don't support planar format
** fallback to packed version and use CPU for the conversion
*/
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_YUY2, D3DFMT_UYVY, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
case VLC_FOURCC('Y','U','Y','2'):
case VLC_FOURCC('Y','U','N','V'):
{
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_YUY2, D3DFMT_UYVY, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
{
case VLC_FOURCC('R', 'V', '1', '5'):
{
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
case VLC_FOURCC('R', 'V', '1', '6'):
{
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_R5G6B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
case VLC_FOURCC('R', 'V', '2', '4'):
{
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_R8G8B8, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
case VLC_FOURCC('R', 'V', '3', '2'):
{
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_A8R8G8B8, D3DFMT_X8R8G8B8 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
if( SUCCEEDED(hr))
{
/*
- ** some professional cards could use some advanced pixel format as default,
+ ** some professional cards could use some advanced pixel format as default,
** make sure we stick with chromas that we can handle internally
*/
switch( d3ddm.Format )
default:
{
/* if we fall here, that probably means that we need to render some YUV format */
- static const D3DFORMAT formats[] =
+ static const D3DFORMAT formats[] =
{ D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
msg_Dbg( p_vout, "defaulting to built-in pixel format");
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
D3DFORMAT format;
HRESULT hr;
size_t c;
- // if vout is already running, use current chroma, otherwise choose from upstream
+ // if vout is already running, use current chroma, otherwise choose from upstream
int i_chroma = p_vout->output.i_chroma ? : p_vout->render.i_chroma;
I_OUTPUTPICTURES = 0;
** find the appropriate D3DFORMAT for the render chroma, the format will be the closest to
** the requested chroma which is usable by the hardware in an offscreen surface, as they
** typically support more formats than textures
- */
+ */
format = Direct3DVoutFindFormat(p_vout, i_chroma, p_vout->p_sys->bbFormat);
if( VLC_SUCCESS != Direct3DVoutSetOutputFormat(p_vout, format) )
{
{
LPDIRECT3DSURFACE9 p_d3dsurf;
- picture_t *p_pic = p_vout->p_picture+c;
+ picture_t *p_pic = p_vout->p_picture+c;
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(p_d3ddev,
+ hr = IDirect3DDevice9_CreateOffscreenPlainSurface(p_d3ddev,
p_vout->render.i_width,
p_vout->render.i_height,
format,
/* fill surface with black color */
IDirect3DDevice9_ColorFill(p_d3ddev, p_d3dsurf, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0) );
-
+
/* assign surface to internal structure */
p_pic->p_sys = (void *)p_d3dsurf;
}
/*****************************************************************************
- * Direct3DVoutReleasePictures: destroy a picture vector
+ * Direct3DVoutReleasePictures: destroy a picture vector
*****************************************************************************
* release all video resources used for pictures
*****************************************************************************/
size_t c;
for( c=0; c<i_num_pics; ++c )
{
- picture_t *p_pic = p_vout->p_picture+c;
+ picture_t *p_pic = p_vout->p_picture+c;
if( p_pic->p_sys )
{
LPDIRECT3DSURFACE9 p_d3dsurf = (LPDIRECT3DSURFACE9)p_pic->p_sys;
** for performance reason, texture format is identical to backbuffer
** which would usually be a RGB format
*/
- hr = IDirect3DDevice9_CreateTexture(p_d3ddev,
+ hr = IDirect3DDevice9_CreateTexture(p_d3ddev,
p_vout->render.i_width,
p_vout->render.i_height,
1,
- D3DUSAGE_RENDERTARGET,
+ D3DUSAGE_RENDERTARGET,
p_vout->p_sys->bbFormat,
D3DPOOL_DEFAULT,
- &p_d3dtex,
+ &p_d3dtex,
NULL);
if( FAILED(hr))
{
p_vout->p_sys->p_d3dtex = p_d3dtex;
p_vout->p_sys->p_d3dvtc = p_d3dvtc;
- // Texture coordinates outside the range [0.0, 1.0] are set
+ // Texture coordinates outside the range [0.0, 1.0] are set
// to the texture color at 0.0 or 1.0, respectively.
IDirect3DDevice9_SetSamplerState(p_d3ddev, 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
IDirect3DDevice9_SetSamplerState(p_d3ddev, 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
HRESULT hr;
float f_width, f_height;
- // check if device is still available
+ // check if device is still available
hr = IDirect3DDevice9_TestCooperativeLevel(p_d3ddev);
if( FAILED(hr) )
{
(LONG)CreateSolidBrush( p_vout->p_sys->i_rgb_colorkey ) );
}
/*
- ** Video window is initially hidden, show it now since we got a
+ ** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, NULL, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, NULL, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
}
/* Update desktop */
- InvalidateRect( hwnd, NULL, TRUE );
+ InvalidateRect( hwnd, NULL, TRUE );
UpdateWindow( hwnd );
}
val.psz_string = strdup( VOUT_TITLE " (Direct3D output)" );
#endif
#ifdef MODULE_NAME_IS_vout_directx
- if( p_event->p_vout->p_sys->b_using_overlay ) val.psz_string =
+ if( p_event->p_vout->p_sys->b_using_overlay ) val.psz_string =
strdup( VOUT_TITLE " (hardware YUV overlay DirectX output)" );
- else if( p_event->p_vout->p_sys->b_hw_yuv ) val.psz_string =
+ else if( p_event->p_vout->p_sys->b_hw_yuv ) val.psz_string =
strdup( VOUT_TITLE " (hardware YUV DirectX output)" );
- else val.psz_string =
+ else val.psz_string =
strdup( VOUT_TITLE " (software RGB DirectX output)" );
#endif
}
{
if( p_vout->p_sys->i_align_dest_boundary )
rect_dest.left = ( rect_dest.left +
- p_vout->p_sys->i_align_dest_boundary / 2 ) &
+ p_vout->p_sys->i_align_dest_boundary / 2 ) &
~p_vout->p_sys->i_align_dest_boundary;
if( p_vout->p_sys->i_align_dest_size )
rect_dest.right = (( rect_dest.right - rect_dest.left +
- p_vout->p_sys->i_align_dest_size / 2 ) &
+ p_vout->p_sys->i_align_dest_size / 2 ) &
~p_vout->p_sys->i_align_dest_size) + rect_dest.left;
}
{
if( p_vout->p_sys->i_align_src_boundary )
rect_src_clipped.left = ( rect_src_clipped.left +
- p_vout->p_sys->i_align_src_boundary / 2 ) &
+ p_vout->p_sys->i_align_src_boundary / 2 ) &
~p_vout->p_sys->i_align_src_boundary;
if( p_vout->p_sys->i_align_src_size )
rect_src_clipped.right = (( rect_src_clipped.right -
rect_src_clipped.left +
- p_vout->p_sys->i_align_src_size / 2 ) &
+ p_vout->p_sys->i_align_src_size / 2 ) &
~p_vout->p_sys->i_align_src_size) + rect_src_clipped.left;
}
#endif
/*
** For overlay, DefWindowProc() will erase dirty regions
** with colorkey.
- ** For non-overlay, vout will paint the whole window at
+ ** For non-overlay, vout will paint the whole window at
** regular interval, therefore dirty regions can be ignored
** to minimize repaint.
*/
/* nothing to repaint */
ValidateRect(hwnd, NULL);
// fall through
-#endif
+#endif
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
}
-/* Internal wrapper over GetWindowPlacement / SetWindowPlacement */
+/* Internal wrapper over GetWindowPlacement / SetWindowPlacement */
static void SetWindowState(HWND hwnd, int nShowCmd)
{
WINDOWPLACEMENT window_placement;
GLSwapBuffers( p_vout );
/*
- ** Video window is initially hidden, show it now since we got a
+ ** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, NULL, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, NULL, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
static void FirstDisplayGDI( vout_thread_t *p_vout, picture_t *p_pic )
{
/*
- ** Video window is initially hidden, show it now since we got a
+ ** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
DisplayGAPI(p_vout, p_pic);
/*
- ** Video window is initially hidden, show it now since we got a
+ ** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
static const char *ppsz_effects[] = {
"none", "cube", "transparent-cube", "cylinder", "torus", "sphere","SQUAREXY","SQUARER", "ASINXY", "ASINR", "SINEXY", "SINER" };
static const char *ppsz_effects_text[] = {
- N_("None"), N_("Cube"), N_("Transparent Cube"),
+ N_("None"), N_("Cube"), N_("Transparent Cube"),
N_("Cylinder"), N_("Torus"), N_("Sphere"), N_("SQUAREXY"),N_("SQUARER"), N_("ASINXY"), N_("ASINR"), N_("SINEXY"), N_("SINER") };
#endif
static int SendEvents ( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
-#ifdef OPENGL_MORE_EFFECT
+#ifdef OPENGL_MORE_EFFECT
static float Z_Compute ( float, int, float, float );
static void Transform ( float, int, float, float, int, int, int, int, double *, double * );
{
p_sys->i_effect ++;
}
- if (pow(2,p_sys->i_effect) < INIFILE)
+ if (pow(2,p_sys->i_effect) < INIFILE)
p_sys->i_effect = pow(2,p_sys->i_effect);
else if ( strcmp( val.psz_string, ppsz_effects[p_sys->i_effect]))
{
glTranslatef( 0.0, 0.0, - 5.0 );
}
#ifdef OPENGL_MORE_EFFECT
- else
+ else
{
/* Set the perpective */
glMatrixMode( GL_PROJECTION );
case ASINR:
case SINEXY:
case SINER:
-#endif
+#endif
glEnable( GL_CULL_FACE );
break;
glTranslatef( 0.0, 0.0, - 5.0 );
}
#ifdef OPENGL_MORE_EFFECT
- else
+ else
{
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glTranslatef( 0.0, 0.0, -3.0 );
-
+
float f_pov_x, f_pov_y, f_pov_z;
f_pov_x = var_CreateGetFloat( p_vout, "opengl-pov-x");
f_pov_y = var_CreateGetFloat( p_vout, "opengl-pov-y");
f_pov_z = var_CreateGetFloat( p_vout, "opengl-pov-z");
gluLookAt(0, 0, 0, f_pov_x, f_pov_y, f_pov_z, 0, 1, 0);
}
-#endif
+#endif
}
if( p_sys->p_vout->pf_unlock )
}
#endif
// to align in real time in OPENGL
- if (p_sys->p_vout->i_alignment != p_vout->i_alignment)
- {
- p_vout->i_changes = VOUT_CROP_CHANGE; //to force change
- p_sys->p_vout->i_alignment = p_vout->i_alignment;
- }
-
+ if (p_sys->p_vout->i_alignment != p_vout->i_alignment)
+ {
+ p_vout->i_changes = VOUT_CROP_CHANGE; //to force change
+ p_sys->p_vout->i_alignment = p_vout->i_alignment;
+ }
+
return i_ret;
}
r = sqrt(x*x+y*y);
theta = atan2(y,x);
- switch (distortion)
+ switch (distortion)
{
/* GRID2D TRANSFORMATION */
case SINEXY:
float f_z = 0.0;
double d_p = p / 100.0;
- switch (distortion)
+ switch (distortion)
{
/* 3D MODEL */
case CYLINDER:
- if (d_p > 0)
+ if (d_p > 0)
f_z = (1 - d_p * d_p) / (2 * d_p) - sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x));
else
f_z = (1 - d_p * d_p) / (2 * d_p) + d_p + sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x));
break;
case TORUS:
- if (d_p > 0)
+ if (d_p > 0)
f_z = (1 - d_p * d_p) / (d_p) - sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x)) - sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - y * y));
else
f_z = (1 - d_p * d_p) / (d_p) + 2 * d_p + sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x)) + sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - y * y));
break;
case SPHERE:
- if (d_p > 0)
+ if (d_p > 0)
f_z = (1 - d_p * d_p) / (2 * d_p) - sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x - y * y));
else
f_z = (1 - d_p * d_p) / (2 * d_p) + d_p + sqrt(fabs((d_p * d_p + 1) / (2 * d_p) * (d_p * d_p + 1) / (2 * d_p) - x * x - y * y));
}
else
#ifdef OPENGL_MORE_EFFECT
- if ((p_sys->i_effect > OPENGL_EFFECT_TRANSPARENT_CUBE) ||
+ if ((p_sys->i_effect > OPENGL_EFFECT_TRANSPARENT_CUBE) ||
((p_sys->i_effect == OPENGL_EFFECT_NONE)))
{
unsigned int i_i, i_j;
unsigned int i_accuracy = config_GetInt( p_vout, "opengl-accuracy");
- unsigned int i_n = pow(2, i_accuracy);
+ unsigned int i_n = pow(2, i_accuracy);
unsigned int i_n_x = (p_vout->fmt_out.i_visible_width / (i_n * 2));
unsigned int i_n_y = (p_vout->fmt_out.i_visible_height / i_n);
double d_x, d_y;
int i_distortion = p_sys->i_effect;
- float f_p = p_sys->f_radius;
-
+ float f_p = p_sys->f_radius;
+
glEnable( VLCGL_TARGET );
- glBegin(GL_QUADS);
- for (i_i = 0; i_i < p_vout->fmt_out.i_visible_width; i_i += i_n_x)
+ glBegin(GL_QUADS);
+ for (i_i = 0; i_i < p_vout->fmt_out.i_visible_width; i_i += i_n_x)
{
if ( i_i == i_n_x * i_n / 2) i_n_x += p_vout->fmt_out.i_visible_width % i_n;
if ((i_i == (p_vout->fmt_out.i_visible_width / i_n) * i_n / 2 + i_n_x) &&
(p_vout->fmt_out.i_visible_width / i_n != i_n_x))
- i_n_x -= p_vout->fmt_out.i_visible_width % i_n;
+ i_n_x -= p_vout->fmt_out.i_visible_width % i_n;
int i_m;
int i_index_max = 0;
-
- for (i_j = 0; i_j < p_vout->fmt_out.i_visible_height; i_j += i_n_y)
+
+ for (i_j = 0; i_j < p_vout->fmt_out.i_visible_height; i_j += i_n_y)
{
if ( i_j == i_n_y * i_n / 2) i_n_y += p_vout->fmt_out.i_visible_height % i_n;
if ((i_j == (p_vout->fmt_out.i_visible_height / i_n) * i_n / 2 + i_n_y) &&
int i_k = ((i_m % 4) == 1) || ((i_m % 4) == 2);
int i_l = ((i_m % 4) == 2) || ((i_m % 4) == 3);
- Transform(f_p, i_distortion, f_width, f_height, i_i + i_k * i_n_x, i_j + i_l * i_n_y, p_vout->fmt_out.i_visible_width, p_vout->fmt_out.i_visible_height, &d_x, &d_y);
+ Transform(f_p, i_distortion, f_width, f_height, i_i + i_k * i_n_x, i_j + i_l * i_n_y, p_vout->fmt_out.i_visible_width, p_vout->fmt_out.i_visible_height, &d_x, &d_y);
glTexCoord2f(f_x + d_x, f_y + d_y);
d_x = - 1.0 + 2.0 * ((double)(i_k * i_n_x + i_i) / (double)p_vout->fmt_out.i_visible_width);
d_y = 1.0 - 2.0 * (((double)i_l * i_n_y + i_j) / (double)p_vout->fmt_out.i_visible_height);
- glVertex3f((float)d_x, (float)d_y, Z_Compute(f_p, i_distortion, (float)d_x, (float)d_y));
+ glVertex3f((float)d_x, (float)d_y, Z_Compute(f_p, i_distortion, (float)d_x, (float)d_y));
}
}
- }
+ }
glEnd();
}
else
#endif
#ifdef HAVE_OSSO
- p_vout->p_sys->i_backlight_on_counter = i_backlight_on_interval;
+ p_vout->p_sys->i_backlight_on_counter = i_backlight_on_interval;
p_vout->p_sys->p_octx = osso_initialize( "vlc", VERSION, 0, NULL );
if ( p_vout->p_sys->p_octx == NULL ) {
msg_Err( p_vout, "Could not get osso context" );
#ifdef HAVE_XSP
DisablePixelDoubling(p_vout);
#endif
-
+
DestroyCursor( p_vout );
EnableXScreenSaver( p_vout );
DestroyWindow( p_vout, &p_vout->p_sys->original_window );
first_field);
XVMCUNLOCKDISPLAY( p_vout->p_sys->p_display );
- if( p_vout->p_sys->xvmc_deinterlace_method == 2 )
+ if( p_vout->p_sys->xvmc_deinterlace_method == 2 )
{ /* BOB DEINTERLACE */
if( p_picture->p_sys->nb_display == 0 )/* && ((t2-t1) < 15000)) */
{
#ifdef MODULE_NAME_IS_xvmc
xvmc_context_reader_unlock( &p_vout->p_sys->xvmc_lock );
#endif
-
+
#ifdef HAVE_OSSO
if ( p_vout->p_sys->p_octx != NULL ) {
if ( p_vout->p_sys->i_backlight_on_counter == i_backlight_on_interval ) {
if ( osso_display_blanking_pause( p_vout->p_sys->p_octx ) != OSSO_OK ) {
msg_Err( p_vout, "Could not disable backlight blanking" );
- } else {
+ } else {
msg_Dbg( p_vout, "Backlight blanking disabled" );
}
p_vout->p_sys->i_backlight_on_counter = 0;
}
}
#endif
-
+
vlc_mutex_unlock( &p_vout->p_sys->lock );
return 0;
}
p_pic->p_sys->p_image =
CreateImage( p_vout, p_vout->p_sys->p_display,
#if defined(MODULE_NAME_IS_xvideo) || defined(MODULE_NAME_IS_xvmc)
- p_vout->p_sys->i_xvport,
+ p_vout->p_sys->i_xvport,
VLC2X11_FOURCC(p_vout->output.i_chroma),
p_pic->format.i_bits_per_pixel,
#else
#ifdef HAVE_XSP
EnablePixelDoubling( p_vout );
#endif
-
+
}
else
{
#ifdef HAVE_XSP
int i_hw_scale;
-#endif
+#endif
#ifdef HAVE_OSSO
osso_context_t *p_octx;
int i_backlight_on_counter;
#endif
-
+
};
/*****************************************************************************
{
int i;
xvmc_surface_handler_t *handler = &p_vout->p_sys->xvmc_surf_handler;
-
+
pthread_mutex_init( &handler->mutex, NULL );
for( i=0; i<XVMC_MAX_SURFACES; ++i )
{
xvmc_context_writer_unlock( &p_vout->p_sys->xvmc_lock );
return VLC_SUCCESS;
}
- XVMCLOCKDISPLAY( p_vout->p_sys->p_display );
+ XVMCLOCKDISPLAY( p_vout->p_sys->p_display );
XvMCDestroyContext( p_vout->p_sys->p_display, &c );
xxmc_xvmc_surface_handler_construct(p_vout );
/* p_vout->p_sys->capabilities |= VO_CAP_XXMC; */
void initPCM(int samples)
{
- int i;
+ int i;
//Allocate memory for PCM data buffer
PCMd = (double **)malloc(2 * sizeof(double *));
PCMd[0] = (double *)malloc(samples * sizeof(double));
PCMd[1] = (double *)malloc(samples * sizeof(double));
-
+
maxsamples=samples;
new=0;
int i,j;
int samples=512;
- for(i=0;i<samples;i++)
- {
- j=i+start;
- PCMd[0][j%maxsamples]=(PCMdata[0][i]/16384.0);
- PCMd[1][j%maxsamples]=(PCMdata[1][i]/16384.0);
- }
-
+ for(i=0;i<samples;i++)
+ {
+ j=i+start;
+ PCMd[0][j%maxsamples]=(PCMdata[0][i]/16384.0);
+ PCMd[1][j%maxsamples]=(PCMdata[1][i]/16384.0);
+ }
+
- // printf("Added %d samples %d %d %f\n",samples,start,(start+samples)%maxsamples,PCM[0][start+10]);
+ // printf("Added %d samples %d %d %f\n",samples,start,(start+samples)%maxsamples,PCM[0][start+10]);
start+=samples;
start=start%maxsamples;
void getPCM(double *PCMdata, int samples, int channel, int freq, double smoothing, int derive)
{
int i,index;
-
+
index=start-1;
if (index<0) index=maxsamples+index;
PCMdata[0]=PCMd[channel][index];
-
+
for(i=1;i<samples;i++)
{
index=start-1-i;
if (index<0) index=maxsamples+index;
-
+
PCMdata[i]=(1-smoothing)*PCMd[channel][index]+smoothing*PCMdata[i-1];
}
-
+
//return derivative of PCM data
if(derive)
{
for(i=0;i<samples-1;i++)
- {
- PCMdata[i]=PCMdata[i]-PCMdata[i+1];
- }
+ {
+ PCMdata[i]=PCMdata[i]-PCMdata[i+1];
+ }
PCMdata[samples-1]=0;
}
if (freq) rdft(samples, 1, PCMdata, ip, w);
-
+
}
//getPCMnew
int getPCMnew(double *PCMdata, int channel, int freq, double smoothing, int derive, int reset)
{
int i,index;
-
+
index=start-1;
if (index<0) index=maxsamples+index;
PCMdata[0]=PCMd[channel][index];
-
+
for(i=1;i<new;i++)
{
index=start-1-i;
if (index<0) index=maxsamples+index;
-
+
PCMdata[i]=(1-smoothing)*PCMd[channel][index]+smoothing*PCMdata[i-1];
}
-
+
//return derivative of PCM data
if(derive)
{
for(i=0;i<new-1;i++)
- {
- PCMdata[i]=PCMdata[i]-PCMdata[i+1];
- }
+ {
+ PCMdata[i]=PCMdata[i]-PCMdata[i+1];
+ }
PCMdata[new-1]=0;
}
void initBeatDetect()
{
- int x,y;
+ int x,y;
vol_instant=0;
vol_history=0;
beat_att[x]=1.0;
beat_variance[x]=0;
for (y=0;y<80;y++)
- {
- beat_buffer[x][y]=0;
- }
+ {
+ beat_buffer[x][y]=0;
+ }
}
-}
+}
void getBeatVals(double *vdataL,double *vdataR, double *vol)
{
vol_instant=0;
for ( x=0;x<16;x++)
- {
-
- beat_instant[x]=0;
- for ( y=linear*2;y<(linear+8+x)*2;y++)
- {
- beat_instant[x]+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/(8+x));
- vol_instant+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/512.0);
-
- }
-
- linear=y/2;
- beat_history[x]-=(beat_buffer[x][beat_buffer_pos])*.0125;
- beat_buffer[x][beat_buffer_pos]=beat_instant[x];
- beat_history[x]+=(beat_instant[x])*.0125;
-
- beat_val[x]=(beat_instant[x])/(beat_history[x]);
-
- beat_att[x]+=(beat_instant[x])/(beat_history[x]);
-
-
-
- }
-
+ {
+
+ beat_instant[x]=0;
+ for ( y=linear*2;y<(linear+8+x)*2;y++)
+ {
+ beat_instant[x]+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/(8+x));
+ vol_instant+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/512.0);
+
+ }
+
+ linear=y/2;
+ beat_history[x]-=(beat_buffer[x][beat_buffer_pos])*.0125;
+ beat_buffer[x][beat_buffer_pos]=beat_instant[x];
+ beat_history[x]+=(beat_instant[x])*.0125;
+
+ beat_val[x]=(beat_instant[x])/(beat_history[x]);
+
+ beat_att[x]+=(beat_instant[x])/(beat_history[x]);
+
+
+
+ }
+
vol_history-=(vol_buffer[beat_buffer_pos])*.0125;
vol_buffer[beat_buffer_pos]=vol_instant;
vol_history+=(vol_instant)*.0125;
double temp2=0;
mid=0;
for(x=1;x<10;x++)
- {
- mid+=(beat_instant[x]);
- temp2+=(beat_history[x]);
-
- }
-
- mid=mid/(1.5*temp2);
- temp2=0;
- treb=0;
- for(x=10;x<16;x++)
- {
- treb+=(beat_instant[x]);
- temp2+=(beat_history[x]);
- }
- treb=treb/(1.5*temp2);
- *vol=vol_instant/(1.5*vol_history);
-
- bass=(beat_instant[0])/(1.5*beat_history[0]);
-
- treb_att=.6 * treb_att + .4 * treb;
- mid_att=.6 * mid_att + .4 * mid;
- bass_att=.6 * bass_att + .4 * bass;
- //printf("%f %f %f %f\n",bass,mid,treb,*vol);
- // *vol=(beat_instant[3])/(beat_history[3]);
- beat_buffer_pos++;
- if( beat_buffer_pos>79)beat_buffer_pos=0;
-
+ {
+ mid+=(beat_instant[x]);
+ temp2+=(beat_history[x]);
+
+ }
+
+ mid=mid/(1.5*temp2);
+ temp2=0;
+ treb=0;
+ for(x=10;x<16;x++)
+ {
+ treb+=(beat_instant[x]);
+ temp2+=(beat_history[x]);
+ }
+ treb=treb/(1.5*temp2);
+ *vol=vol_instant/(1.5*vol_history);
+
+ bass=(beat_instant[0])/(1.5*beat_history[0]);
+
+ treb_att=.6 * treb_att + .4 * treb;
+ mid_att=.6 * mid_att + .4 * mid;
+ bass_att=.6 * bass_att + .4 * bass;
+ //printf("%f %f %f %f\n",bass,mid,treb,*vol);
+ // *vol=(beat_instant[3])/(beat_history[3]);
+ beat_buffer_pos++;
+ if( beat_buffer_pos>79)beat_buffer_pos=0;
+
}
void freeBeatDetect()
{
#include <math.h>
/* Values to optimize the sigmoid function */
-#define R 32767
-#define RR 65534
+#define R 32767
+#define RR 65534
inline double int_wrapper(double * arg_list) {
inline double sqr_wrapper(double * arg_list) {
-
- return pow(2, arg_list[0]);
-}
-
-
-inline double sign_wrapper(double * arg_list) {
-
- return -arg_list[0];
-}
+
+ return pow(2, arg_list[0]);
+}
+
+
+inline double sign_wrapper(double * arg_list) {
+
+ return -arg_list[0];
+}
inline double min_wrapper(double * arg_list) {
-
- if (arg_list[0] > arg_list[1])
- return arg_list[1];
-
- return arg_list[0];
-}
+
+ if (arg_list[0] > arg_list[1])
+ return arg_list[1];
+
+ return arg_list[0];
+}
inline double max_wrapper(double * arg_list) {
- if (arg_list[0] > arg_list[1])
- return arg_list[0];
+ if (arg_list[0] > arg_list[1])
+ return arg_list[0];
- return arg_list[1];
+ return arg_list[1];
}
/* consult your AI book */
inline double sigmoid_wrapper(double * arg_list) {
return (RR / (1 + exp( -(((double)(arg_list[0])) * arg_list[1]) / R) - R));
}
-
-
+
+
inline double bor_wrapper(double * arg_list) {
- return (double)((int)arg_list[0] || (int)arg_list[1]);
-}
-
+ return (double)((int)arg_list[0] || (int)arg_list[1]);
+}
+
inline double band_wrapper(double * arg_list) {
- return (double)((int)arg_list[0] && (int)arg_list[1]);
-}
+ return (double)((int)arg_list[0] && (int)arg_list[1]);
+}
inline double bnot_wrapper(double * arg_list) {
- return (double)(!(int)arg_list[0]);
-}
+ return (double)(!(int)arg_list[0]);
+}
inline double if_wrapper(double * arg_list) {
- if ((int)arg_list[0] == 0)
- return arg_list[2];
- return arg_list[1];
-}
+ if ((int)arg_list[0] == 0)
+ return arg_list[2];
+ return arg_list[1];
+}
inline double rand_wrapper(double * arg_list) {
l = (double)((rand()) % ((int)arg_list[0]));
//printf("VAL: %f\n", l);
return l;
-}
+}
inline double equal_wrapper(double * arg_list) {
- return (arg_list[0] == arg_list[1]);
-}
+ return (arg_list[0] == arg_list[1]);
+}
inline double above_wrapper(double * arg_list) {
- return (arg_list[0] > arg_list[1]);
-}
+ return (arg_list[0] > arg_list[1]);
+}
inline double below_wrapper(double * arg_list) {
- return (arg_list[0] < arg_list[1]);
+ return (arg_list[0] < arg_list[1]);
}
inline double sin_wrapper(double * arg_list) {
- return (sin (arg_list[0]));
+ return (sin (arg_list[0]));
}
inline double cos_wrapper(double * arg_list) {
- return (cos (arg_list[0]));
+ return (cos (arg_list[0]));
}
inline double tan_wrapper(double * arg_list) {
- return (tan(arg_list[0]));
+ return (tan(arg_list[0]));
}
inline double asin_wrapper(double * arg_list) {
- return (asin (arg_list[0]));
+ return (asin (arg_list[0]));
}
inline double acos_wrapper(double * arg_list) {
- return (acos (arg_list[0]));
+ return (acos (arg_list[0]));
}
inline double atan_wrapper(double * arg_list) {
- return (atan (arg_list[0]));
+ return (atan (arg_list[0]));
}
inline double atan2_wrapper(double * arg_list) {
int result = 1;
-
+
int n = (int)arg_list[0];
-
+
while (n > 1) {
result = result * n;
n--;
-/* Wrappers for all the builtin functions
+/* Wrappers for all the builtin functions
The arg_list pointer is a list of doubles. Its
size is equal to the number of arguments the parameter
takes */
#endif
#ifndef FALSE
#define FALSE 0
-#endif
+#endif
#define PROJECTM_FILE_EXTENSION ".prjm"
#define MILKDROP_FILE_EXTENSION ".milk"
/* Initialize tree data structures */
- if ((custom_shape->param_tree =
+ if ((custom_shape->param_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_shape(custom_shape);
return NULL;
}
- if ((custom_shape->per_frame_eqn_tree =
+ if ((custom_shape->per_frame_eqn_tree =
create_splaytree(compare_int, copy_int, free_int)) == NULL) {
free_custom_shape(custom_shape);
return NULL;
}
- if ((custom_shape->init_cond_tree =
+ if ((custom_shape->init_cond_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_shape(custom_shape);
return NULL;
}
-
- if ((custom_shape->per_frame_init_eqn_tree =
+
+ if ((custom_shape->per_frame_init_eqn_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_shape(custom_shape);
return NULL;
if ((param = new_param_double("b", P_FLAG_NONE, &custom_shape->b, NULL, 1.0, 0.0, .5)) == NULL){
free_custom_shape(custom_shape);
- return NULL;
+ return NULL;
}
if (insert_param(param, custom_shape->param_tree) < 0) {
if ((param = new_param_double("border_b", P_FLAG_NONE, &custom_shape->border_b, NULL, 1.0, 0.0, .5)) == NULL){
free_custom_shape(custom_shape);
- return NULL;
+ return NULL;
}
if (insert_param(param, custom_shape->param_tree) < 0) {
if ((param = new_param_double("b2", P_FLAG_NONE, &custom_shape->b2, NULL, 1.0, 0.0, .5)) == NULL){
free_custom_shape(custom_shape);
- return NULL;
+ return NULL;
}
if (insert_param(param, custom_shape->param_tree) < 0) {
free_custom_shape(custom_shape);
return NULL;
}
-
+
if (insert_param(param, custom_shape->param_tree) < 0) {
free_custom_shape(custom_shape);
return NULL;
free_custom_shape(custom_shape);
return NULL;
}
-
+
if ((param = new_param_double("tex_ang", P_FLAG_NONE, &custom_shape->tex_ang, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) {
free_custom_shape(custom_shape);
return NULL;
}
/* End of parameter loading. Note that the read only parameters associated
- with custom shapes (ie, sample) are global variables, and not specific to
+ with custom shapes (ie, sample) are global variables, and not specific to
the custom shape datastructure. */
destroy_init_cond_tree_shape(custom_shape->init_cond_tree);
destroy_param_db_tree_shape(custom_shape->param_tree);
destroy_per_frame_init_eqn_tree_shape(custom_shape->per_frame_init_eqn_tree);
-
+
free(custom_shape);
return;
if (preset == NULL)
return NULL;
-
+
if ((custom_shape = splay_find(&id, preset->custom_shape_tree)) == NULL) {
-
+
if (CUSTOM_SHAPE_DEBUG) { printf("find_custom_shape: creating custom shape (id = %d)...", id);fflush(stdout);}
-
+
if (create_flag == FALSE) {
if (CUSTOM_SHAPE_DEBUG) printf("you specified not to (create flag = false), returning null\n");
return NULL;
}
-
+
if ((custom_shape = new_custom_shape(id)) == NULL) {
if (CUSTOM_SHAPE_DEBUG) printf("failed...out of memory?\n");
return NULL;
}
-
+
if (CUSTOM_SHAPE_DEBUG) { printf("success.Inserting..."); fflush(stdout);}
-
+
if (splay_insert(custom_shape, &custom_shape->id, preset->custom_shape_tree) < 0) {
if (CUSTOM_SHAPE_DEBUG) printf("failed, probably a duplicated!!\n");
free_custom_shape(custom_shape);
return NULL;
}
-
+
if (CUSTOM_SHAPE_DEBUG) printf("done.\n");
}
-
+
return custom_shape;
}
/* If initial condition was not defined by the preset file, force a default one
with the following code */
if ((init_cond = splay_find(param->name, interface_shape->init_cond_tree)) == NULL) {
-
+
/* Make sure initial condition does not exist in the set of per frame initial equations */
if ((init_cond = splay_find(param->name, interface_shape->per_frame_init_eqn_tree)) != NULL)
return;
-
+
if (param->type == P_TYPE_BOOL)
init_val.bool_val = 0;
-
+
else if (param->type == P_TYPE_INT)
init_val.int_val = *(int*)param->engine_val;
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL)
return;
-
+
/* Insert the initial condition into this presets tree */
if (splay_insert(init_cond, init_cond->param->name, interface_shape->init_cond_tree) < 0) {
free_init_cond(init_cond);
return;
}
-
+
}
}
double tex_zoom;
double tex_ang;
-
+
double x; /* x position for per point equations */
double y; /* y position for per point equations */
double rad;
char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE];
char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE];
/* Per point equation array */
-
-
+
+
} custom_shape_t;
custom_wave_t * custom_wave;
param_t * param;
-
+
if ((custom_wave = (custom_wave_t*)malloc(sizeof(custom_wave_t))) == NULL)
return NULL;
custom_wave->sample_mesh = malloc(MAX_SAMPLE_SIZE*sizeof(double));
/* Initialize tree data structures */
-
- if ((custom_wave->param_tree =
+
+ if ((custom_wave->param_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
- if ((custom_wave->per_point_eqn_tree =
+ if ((custom_wave->per_point_eqn_tree =
create_splaytree(compare_int, copy_int, free_int)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
- if ((custom_wave->per_frame_eqn_tree =
+ if ((custom_wave->per_frame_eqn_tree =
create_splaytree(compare_int, copy_int, free_int)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
- if ((custom_wave->init_cond_tree =
+ if ((custom_wave->init_cond_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
-
- if ((custom_wave->per_frame_init_eqn_tree =
+
+ if ((custom_wave->per_frame_init_eqn_tree =
create_splaytree(compare_string, copy_string, free_string)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
-
+
/* Start: Load custom wave parameters */
if ((param = new_param_double("r", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->r, custom_wave->r_mesh, 1.0, 0.0, .5)) == NULL) {
if ((param = new_param_double("b", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->b, custom_wave->b_mesh, 1.0, 0.0, .5)) == NULL){
free_custom_wave(custom_wave);
- return NULL;
+ return NULL;
}
if (insert_param(param, custom_wave->param_tree) < 0) {
free_custom_wave(custom_wave);
return NULL;
}
-
+
if (insert_param(param, custom_wave->param_tree) < 0) {
free_custom_wave(custom_wave);
return NULL;
}
if ((param = new_param_double("sample", P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX | P_FLAG_ALWAYS_MATRIX | P_FLAG_PER_POINT,
- &custom_wave->sample, custom_wave->sample_mesh, 1.0, 0.0, 0.0)) == NULL) {
+ &custom_wave->sample, custom_wave->sample_mesh, 1.0, 0.0, 0.0)) == NULL) {
free_custom_wave(custom_wave);
return NULL;
}
free_custom_wave(custom_wave);
return NULL;
}
-
+
/* End of parameter loading. Note that the read only parameters associated
- with custom waves (ie, sample) are global variables, and not specific to
+ with custom waves (ie, sample) are global variables, and not specific to
the custom wave datastructure. */
/* Argument checks */
if (custom_wave == NULL)
- return FAILURE;
+ return FAILURE;
if (gen_expr == NULL)
- return FAILURE;
+ return FAILURE;
if (name == NULL)
- return FAILURE;
-
+ return FAILURE;
+
if (CUSTOM_WAVE_DEBUG) printf("add_per_point_eqn: per pixel equation (name = \"%s\")\n", name);
/* Search for the parameter so we know what matrix the per pixel equation is referencing */
if (CUSTOM_WAVE_DEBUG) printf("add_per_point_eqn: failed to allocate a new parameter!\n");
return FAILURE;
- }
+ }
/* Find most largest index in the splaytree */
if ((per_point_eqn = splay_find_max(custom_wave->per_point_eqn_tree)) == NULL)
/* Create the per pixel equation given the index, parameter, and general expression */
if ((per_point_eqn = new_per_point_eqn(index, param, gen_expr)) == NULL)
- return FAILURE;
- if (CUSTOM_WAVE_DEBUG)
+ return FAILURE;
+ if (CUSTOM_WAVE_DEBUG)
printf("add_per_point_eqn: created new equation (index = %d) (name = \"%s\")\n", per_point_eqn->index, per_point_eqn->param->name);
/* Insert the per pixel equation into the preset per pixel database */
if (splay_insert(per_point_eqn, &per_point_eqn->index, custom_wave->per_point_eqn_tree) < 0) {
- free_per_point_eqn(per_point_eqn);
- return FAILURE;
+ free_per_point_eqn(per_point_eqn);
+ return FAILURE;
}
-
- /* Done */
+
+ /* Done */
return SUCCESS;
}
per_point_eqn_t * new_per_point_eqn(int index, param_t * param, gen_expr_t * gen_expr) {
- per_point_eqn_t * per_point_eqn;
-
- if (param == NULL)
- return NULL;
- if (gen_expr == NULL)
- return NULL;
-
- if ((per_point_eqn = (per_point_eqn_t*)malloc(sizeof(per_point_eqn_t))) == NULL)
- return NULL;
-
-
- per_point_eqn->index = index;
- per_point_eqn->gen_expr = gen_expr;
- per_point_eqn->param = param;
- return per_point_eqn;
+ per_point_eqn_t * per_point_eqn;
+
+ if (param == NULL)
+ return NULL;
+ if (gen_expr == NULL)
+ return NULL;
+
+ if ((per_point_eqn = (per_point_eqn_t*)malloc(sizeof(per_point_eqn_t))) == NULL)
+ return NULL;
+
+
+ per_point_eqn->index = index;
+ per_point_eqn->gen_expr = gen_expr;
+ per_point_eqn->param = param;
+ return per_point_eqn;
}
void free_per_point_eqn(per_point_eqn_t * per_point_eqn) {
- if (per_point_eqn == NULL)
- return;
-
- free_gen_expr(per_point_eqn->gen_expr);
-
- free(per_point_eqn);
-
- return;
+ if (per_point_eqn == NULL)
+ return;
+
+ free_gen_expr(per_point_eqn->gen_expr);
+
+ free(per_point_eqn);
+
+ return;
}
custom_wave_t * find_custom_wave(int id, preset_t * preset, int create_flag) {
if (preset == NULL)
return NULL;
-
+
if ((custom_wave = splay_find(&id, preset->custom_wave_tree)) == NULL) {
if (CUSTOM_WAVE_DEBUG) { printf("find_custom_wave: creating custom wave (id = %d)...", id);fflush(stdout);}
}
-inline void evalPerPointEqns() {
+inline void evalPerPointEqns() {
int x;
/* Evaluates a per point equation for the current custom wave given by interface_wave ptr */
inline void evalPerPointEqn(per_point_eqn_t * per_point_eqn) {
-
-
+
+
int samples, size;
double * param_matrix;
gen_expr_t * eqn_ptr;
return;
memset(param_matrix, 0, size);
}
- else
+ else
param_matrix = (double*)per_point_eqn->param->matrix;
-
- for (mesh_i = 0; mesh_i < samples; mesh_i++) {
+
+ for (mesh_i = 0; mesh_i < samples; mesh_i++) {
param_matrix[mesh_i] = eval_gen_expr(eqn_ptr);
}
-
+
/* Now that this parameter has been referenced with a per
point equation, we let the evaluator know by setting
this flag */
- per_point_eqn->param->matrix_flag = 1;
+ per_point_eqn->param->matrix_flag = 1;
}
/* If initial condition was not defined by the preset file, force a default one
with the following code */
if ((init_cond = splay_find(param->name, interface_wave->init_cond_tree)) == NULL) {
-
+
/* Make sure initial condition does not exist in the set of per frame initial equations */
if ((init_cond = splay_find(param->name, interface_wave->per_frame_init_eqn_tree)) != NULL)
return;
-
+
if (param->type == P_TYPE_BOOL)
init_val.bool_val = 0;
-
+
else if (param->type == P_TYPE_INT)
init_val.int_val = *(int*)param->engine_val;
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL)
return;
-
+
/* Insert the initial condition into this presets tree */
if (splay_insert(init_cond, init_cond->param->name, interface_wave->init_cond_tree) < 0) {
free_init_cond(init_cond);
return;
}
-
+
}
}
typedef struct PER_POINT_EQN_T {
int index;
param_t * param;
- gen_expr_t * gen_expr;
+ gen_expr_t * gen_expr;
} per_point_eqn_t;
typedef struct CUSTOM_WAVE_T {
char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE];
/* Per point equation array */
gen_expr_t * per_point_eqn_array[NUM_POINT_OPS];
-
+
} custom_wave_t;
double mv_y = 12.0;
double mv_dy = 0.02;
double mv_dx = 0.02;
-
+
int meshx = 0;
int meshy = 0;
extern int bSolarize;
extern int bInvert;
extern int bMotionVectorsOn;
-extern int fps;
+extern int fps;
extern double fWaveAlpha ;
extern double fWaveScale;
inline double eval_gen_expr(gen_expr_t * gen_expr) {
double l;
- if (gen_expr == NULL)
- return 0;
-
+ if (gen_expr == NULL)
+ return 0;
+
switch(gen_expr->type) {
- case VAL_T:
+ case VAL_T:
return eval_val_expr(gen_expr->item);
case PREFUN_T:
l = eval_prefun_expr(gen_expr->item);
//if (EVAL_DEBUG) printf("eval_gen_expr: prefix function return value: %f\n", l);
- return l;
+ return l;
case TREE_T:
return eval_tree_expr(gen_expr->item);
default:
printf("eval_gen_expr: general expression matched no cases!\n");
#endif
return EVAL_ERROR;
- }
-
+ }
+
}
/* Evaluates functions in prefix form */
static inline double eval_prefun_expr(prefun_expr_t * prefun_expr) {
- int i;
-
-
- /* This is slightly less than safe, since
- who knows if the passed argument is valid. For
- speed purposes we'll go with this */
- double arg_list[prefun_expr->num_args];
-
- #ifdef EVAL_DEBUG
- printf("fn[");
- fflush(stdout);
- #endif
- /* Evaluate each argument before calling the function itself */
- for (i = 0; i < prefun_expr->num_args; i++) {
- arg_list[i] = eval_gen_expr(prefun_expr->expr_list[i]);
- #ifdef EVAL_DEBUG
- if (i < (prefun_expr->num_args - 1))
- printf(", ");
- fflush(stdout);
- #endif
- }
-
- #ifdef EVAL_DEBUG
- printf("]");
- fflush(stdout);
- #endif
-
- /* Now we call the function, passing a list of
- doubles as its argument */
-
+ int i;
+
+
+ /* This is slightly less than safe, since
+ who knows if the passed argument is valid. For
+ speed purposes we'll go with this */
+ double arg_list[prefun_expr->num_args];
+
+ #ifdef EVAL_DEBUG
+ printf("fn[");
+ fflush(stdout);
+ #endif
+ /* Evaluate each argument before calling the function itself */
+ for (i = 0; i < prefun_expr->num_args; i++) {
+ arg_list[i] = eval_gen_expr(prefun_expr->expr_list[i]);
+ #ifdef EVAL_DEBUG
+ if (i < (prefun_expr->num_args - 1))
+ printf(", ");
+ fflush(stdout);
+ #endif
+ }
+
+ #ifdef EVAL_DEBUG
+ printf("]");
+ fflush(stdout);
+ #endif
+
+ /* Now we call the function, passing a list of
+ doubles as its argument */
+
-
- return (prefun_expr->func_ptr)(arg_list);
-}
+
+ return (prefun_expr->func_ptr)(arg_list);
+}
/* Evaluates a value expression */
static inline double eval_val_expr(val_expr_t * val_expr) {
/* Value is a constant, return the double value */
if (val_expr->type == CONSTANT_TERM_T) {
- #ifdef EVAL_DEBUG
- printf("%.4f", val_expr->term.constant);
- fflush(stdout);
+ #ifdef EVAL_DEBUG
+ printf("%.4f", val_expr->term.constant);
+ fflush(stdout);
#endif
return (val_expr->term.constant);
}
/* Value is variable, dereference it */
if (val_expr->type == PARAM_TERM_T) {
- switch (val_expr->term.param->type) {
-
- case P_TYPE_BOOL:
- #ifdef EVAL_DEBUG
- printf("(%s:%.4f)", val_expr->term.param->name, (double)(*((int*)(val_expr->term.param->engine_val))));
- fflush(stdout);
- #endif
-
-
- return (double)(*((int*)(val_expr->term.param->engine_val)));
- case P_TYPE_INT:
- #ifdef EVAL_DEBUG
- printf("(%s:%.4f)", val_expr->term.param->name, (double)(*((int*)(val_expr->term.param->engine_val))));
- fflush(stdout);
- #endif
-
-
- return (double)(*((int*)(val_expr->term.param->engine_val)));
- case P_TYPE_DOUBLE:
- #ifdef EVAL_DEBUG
- printf("(%s:%.4f)", val_expr->term.param->name, (*((double*)val_expr->term.param->engine_val)));
- fflush(stdout);
- #endif
-
- if (val_expr->term.param->matrix_flag | (val_expr->term.param->flags & P_FLAG_ALWAYS_MATRIX)) {
- if (mesh_j >= 0) {
- return (((double**)val_expr->term.param->matrix)[mesh_i][mesh_j]);
- }
- else {
- return (((double*)val_expr->term.param->matrix)[mesh_i]);
- }
- }
- return *((double*)(val_expr->term.param->engine_val));
- default:
- return ERROR;
+ switch (val_expr->term.param->type) {
+
+ case P_TYPE_BOOL:
+ #ifdef EVAL_DEBUG
+ printf("(%s:%.4f)", val_expr->term.param->name, (double)(*((int*)(val_expr->term.param->engine_val))));
+ fflush(stdout);
+ #endif
+
+
+ return (double)(*((int*)(val_expr->term.param->engine_val)));
+ case P_TYPE_INT:
+ #ifdef EVAL_DEBUG
+ printf("(%s:%.4f)", val_expr->term.param->name, (double)(*((int*)(val_expr->term.param->engine_val))));
+ fflush(stdout);
+ #endif
+
+
+ return (double)(*((int*)(val_expr->term.param->engine_val)));
+ case P_TYPE_DOUBLE:
+ #ifdef EVAL_DEBUG
+ printf("(%s:%.4f)", val_expr->term.param->name, (*((double*)val_expr->term.param->engine_val)));
+ fflush(stdout);
+ #endif
+
+ if (val_expr->term.param->matrix_flag | (val_expr->term.param->flags & P_FLAG_ALWAYS_MATRIX)) {
+ if (mesh_j >= 0) {
+ return (((double**)val_expr->term.param->matrix)[mesh_i][mesh_j]);
+ }
+ else {
+ return (((double*)val_expr->term.param->matrix)[mesh_i]);
+ }
+ }
+ return *((double*)(val_expr->term.param->engine_val));
+ default:
+ return ERROR;
}
}
/* Unknown type, return failure */
/* Evaluates an expression tree */
static inline double eval_tree_expr(tree_expr_t * tree_expr) {
-
- double left_arg, right_arg;
- infix_op_t * infix_op;
-
- /* Shouldn't happen */
- if (tree_expr == NULL)
- return EVAL_ERROR;
-
- /* A leaf node, evaluate the general expression. If the expression is null as well, return zero */
- if (tree_expr->infix_op == NULL) {
- if (tree_expr->gen_expr == NULL)
- return 0;
- else
- return eval_gen_expr(tree_expr->gen_expr);
- }
-
- /* Otherwise, this node is an infix operator. Evaluate
- accordingly */
-
- infix_op = (infix_op_t*)tree_expr->infix_op;
- #ifdef EVAL_DEBUG
- printf("(");
- fflush(stdout);
- #endif
-
- left_arg = eval_tree_expr(tree_expr->left);
-
- #ifdef EVAL_DEBUG
-
- switch (infix_op->type) {
- case INFIX_ADD:
- printf("+");
- break;
- case INFIX_MINUS:
- printf("-");
- break;
- case INFIX_MULT:
- printf("*");
- break;
- case INFIX_MOD:
- printf("%%");
- break;
- case INFIX_OR:
- printf("|");
- break;
- case INFIX_AND:
- printf("&");
- break;
- case INFIX_DIV:
- printf("/");
- break;
- default:
- printf("?");
- }
-
- fflush(stdout);
- #endif
-
- right_arg = eval_tree_expr(tree_expr->right);
-
- #ifdef EVAL_DEBUG
- printf(")");
- fflush(stdout);
- #endif
-
- switch (infix_op->type) {
- case INFIX_ADD:
- return (left_arg + right_arg);
- case INFIX_MINUS:
- return (left_arg - right_arg);
- case INFIX_MULT:
- return (left_arg * right_arg);
- case INFIX_MOD:
- if ((int)right_arg == 0) {
- #ifdef EVAL_DEBUG
- printf("eval_tree_expr: modulo zero!\n");
- #endif
- return DIV_BY_ZERO;
- }
- return ((int)left_arg % (int)right_arg);
- case INFIX_OR:
- return ((int)left_arg | (int)right_arg);
- case INFIX_AND:
- return ((int)left_arg & (int)right_arg);
- case INFIX_DIV:
- if (right_arg == 0) {
- #ifdef EVAL_DEBUG
- printf("eval_tree_expr: division by zero!\n");
- #endif
- return MAX_DOUBLE_SIZE;
- }
- return (left_arg / right_arg);
- default:
- #ifdef EVAL_DEBUG
- printf("eval_tree_expr: unknown infix operator!\n");
+
+ double left_arg, right_arg;
+ infix_op_t * infix_op;
+
+ /* Shouldn't happen */
+ if (tree_expr == NULL)
+ return EVAL_ERROR;
+
+ /* A leaf node, evaluate the general expression. If the expression is null as well, return zero */
+ if (tree_expr->infix_op == NULL) {
+ if (tree_expr->gen_expr == NULL)
+ return 0;
+ else
+ return eval_gen_expr(tree_expr->gen_expr);
+ }
+
+ /* Otherwise, this node is an infix operator. Evaluate
+ accordingly */
+
+ infix_op = (infix_op_t*)tree_expr->infix_op;
+ #ifdef EVAL_DEBUG
+ printf("(");
+ fflush(stdout);
+ #endif
+
+ left_arg = eval_tree_expr(tree_expr->left);
+
+ #ifdef EVAL_DEBUG
+
+ switch (infix_op->type) {
+ case INFIX_ADD:
+ printf("+");
+ break;
+ case INFIX_MINUS:
+ printf("-");
+ break;
+ case INFIX_MULT:
+ printf("*");
+ break;
+ case INFIX_MOD:
+ printf("%%");
+ break;
+ case INFIX_OR:
+ printf("|");
+ break;
+ case INFIX_AND:
+ printf("&");
+ break;
+ case INFIX_DIV:
+ printf("/");
+ break;
+ default:
+ printf("?");
+ }
+
+ fflush(stdout);
+ #endif
+
+ right_arg = eval_tree_expr(tree_expr->right);
+
+ #ifdef EVAL_DEBUG
+ printf(")");
+ fflush(stdout);
+ #endif
+
+ switch (infix_op->type) {
+ case INFIX_ADD:
+ return (left_arg + right_arg);
+ case INFIX_MINUS:
+ return (left_arg - right_arg);
+ case INFIX_MULT:
+ return (left_arg * right_arg);
+ case INFIX_MOD:
+ if ((int)right_arg == 0) {
+ #ifdef EVAL_DEBUG
+ printf("eval_tree_expr: modulo zero!\n");
+ #endif
+ return DIV_BY_ZERO;
+ }
+ return ((int)left_arg % (int)right_arg);
+ case INFIX_OR:
+ return ((int)left_arg | (int)right_arg);
+ case INFIX_AND:
+ return ((int)left_arg & (int)right_arg);
+ case INFIX_DIV:
+ if (right_arg == 0) {
+ #ifdef EVAL_DEBUG
+ printf("eval_tree_expr: division by zero!\n");
+ #endif
+ return MAX_DOUBLE_SIZE;
+ }
+ return (left_arg / right_arg);
+ default:
+ #ifdef EVAL_DEBUG
+ printf("eval_tree_expr: unknown infix operator!\n");
#endif
- return ERROR;
- }
-
- return ERROR;
-}
+ return ERROR;
+ }
+
+ return ERROR;
+}
/* Converts a double value to a general expression */
gen_expr_t * const_to_expr(double val) {
gen_expr_t * gen_expr;
val_expr_t * val_expr;
term_t term;
-
+
term.constant = val;
-
+
if ((val_expr = new_val_expr(CONSTANT_TERM_T, term)) == NULL)
return NULL;
gen_expr = new_gen_expr(VAL_T, (void*)val_expr);
if (gen_expr == NULL) {
- free_val_expr(val_expr);
+ free_val_expr(val_expr);
}
-
+
return gen_expr;
}
return NULL;
/* This code is still a work in progress. We need
- to figure out if the initial condition is used for
+ to figure out if the initial condition is used for
each per frame equation or not. I am guessing that
it isn't, and it is thusly implemented this way */
-
+
/* Current guess of true behavior (08/01/03) note from carm
- First try to use the per_pixel_expr (with cloning).
+ First try to use the per_pixel_expr (with cloning).
If it is null however, use the engine variable instead. */
-
+
/* 08/20/03 : Presets are now objects, as well as per pixel equations. This ends up
making the parser handle the case where parameters are essentially per pixel equation
substitutions */
-
-
+
+
term.param = param;
if ((val_expr = new_val_expr(PARAM_TERM_T, term)) == NULL)
return NULL;
-
+
if ((gen_expr = new_gen_expr(VAL_T, (void*)val_expr)) == NULL) {
free_val_expr(val_expr);
- return NULL;
- }
+ return NULL;
+ }
return gen_expr;
}
gen_expr_t * gen_expr;
prefun_expr_t * prefun_expr;
-
+
/* Malloc a new prefix function expression */
prefun_expr = (prefun_expr_t*)malloc(sizeof(prefun_expr_t));
if (prefun_expr == NULL)
- return NULL;
-
+ return NULL;
+
prefun_expr->num_args = num_args;
prefun_expr->func_ptr = func_ptr;
prefun_expr->expr_list = expr_list;
gen_expr = new_gen_expr(PREFUN_T, (void*)prefun_expr);
if (gen_expr == NULL)
- free_prefun_expr(prefun_expr);
-
+ free_prefun_expr(prefun_expr);
+
return gen_expr;
}
/* Creates a new tree expression */
tree_expr_t * new_tree_expr(infix_op_t * infix_op, gen_expr_t * gen_expr, tree_expr_t * left, tree_expr_t * right) {
- tree_expr_t * tree_expr;
- tree_expr = (tree_expr_t*)malloc(sizeof(tree_expr_t));
-
- if (tree_expr == NULL)
- return NULL;
- tree_expr->infix_op = infix_op;
- tree_expr->gen_expr = gen_expr;
- tree_expr->left = left;
- tree_expr->right = right;
- return tree_expr;
+ tree_expr_t * tree_expr;
+ tree_expr = (tree_expr_t*)malloc(sizeof(tree_expr_t));
+
+ if (tree_expr == NULL)
+ return NULL;
+ tree_expr->infix_op = infix_op;
+ tree_expr->gen_expr = gen_expr;
+ tree_expr->left = left;
+ tree_expr->right = right;
+ return tree_expr;
}
/* Creates a new general expression */
gen_expr_t * new_gen_expr(int type, void * item) {
- gen_expr_t * gen_expr;
+ gen_expr_t * gen_expr;
- gen_expr = (gen_expr_t*)malloc(sizeof(gen_expr_t));
- if (gen_expr == NULL)
- return NULL;
- gen_expr->type = type;
- gen_expr->item = item;
+ gen_expr = (gen_expr_t*)malloc(sizeof(gen_expr_t));
+ if (gen_expr == NULL)
+ return NULL;
+ gen_expr->type = type;
+ gen_expr->item = item;
- return gen_expr;
+ return gen_expr;
}
/* Frees a general expression */
int free_gen_expr(gen_expr_t * gen_expr) {
- if (gen_expr == NULL)
- return SUCCESS;
-
- switch (gen_expr->type) {
- case VAL_T:
- free_val_expr(gen_expr->item);
- break;
- case PREFUN_T:
- free_prefun_expr(gen_expr->item);
- break;
- case TREE_T:
- free_tree_expr(gen_expr->item);
- break;
- default:
- return FAILURE;
- }
-
- free(gen_expr);
- return SUCCESS;
+ if (gen_expr == NULL)
+ return SUCCESS;
+
+ switch (gen_expr->type) {
+ case VAL_T:
+ free_val_expr(gen_expr->item);
+ break;
+ case PREFUN_T:
+ free_prefun_expr(gen_expr->item);
+ break;
+ case TREE_T:
+ free_tree_expr(gen_expr->item);
+ break;
+ default:
+ return FAILURE;
+ }
+
+ free(gen_expr);
+ return SUCCESS;
}
/* Frees a function in prefix notation */
int free_prefun_expr(prefun_expr_t * prefun_expr) {
- int i;
- if (prefun_expr == NULL)
- return SUCCESS;
-
- /* Free every element in expression list */
- for (i = 0 ; i < prefun_expr->num_args; i++) {
- free_gen_expr(prefun_expr->expr_list[i]);
- }
-
- free(prefun_expr);
- return SUCCESS;
+ int i;
+ if (prefun_expr == NULL)
+ return SUCCESS;
+
+ /* Free every element in expression list */
+ for (i = 0 ; i < prefun_expr->num_args; i++) {
+ free_gen_expr(prefun_expr->expr_list[i]);
+ }
+
+ free(prefun_expr);
+ return SUCCESS;
}
/* Frees values of type VARIABLE and CONSTANT */
int free_val_expr(val_expr_t * val_expr) {
- if (val_expr == NULL)
- return SUCCESS;
-
- free(val_expr);
- return SUCCESS;
+ if (val_expr == NULL)
+ return SUCCESS;
+
+ free(val_expr);
+ return SUCCESS;
}
/* Frees a tree expression */
int free_tree_expr(tree_expr_t * tree_expr) {
- if (tree_expr == NULL)
- return SUCCESS;
-
- /* free left tree */
- free_tree_expr(tree_expr->left);
-
- /* free general expression object */
- free_gen_expr(tree_expr->gen_expr);
-
- /* Note that infix operators are always
- stored in memory unless the program
- exits, so we don't remove them here */
-
- /* free right tree */
- free_tree_expr(tree_expr->right);
-
-
- /* finally, free the struct itself */
- free(tree_expr);
- return SUCCESS;
+ if (tree_expr == NULL)
+ return SUCCESS;
+
+ /* free left tree */
+ free_tree_expr(tree_expr->left);
+
+ /* free general expression object */
+ free_gen_expr(tree_expr->gen_expr);
+
+ /* Note that infix operators are always
+ stored in memory unless the program
+ exits, so we don't remove them here */
+
+ /* free right tree */
+ free_tree_expr(tree_expr->right);
+
+
+ /* finally, free the struct itself */
+ free(tree_expr);
+ return SUCCESS;
}
/* Initializes all infix operators */
int init_infix_ops() {
- infix_add = new_infix_op(INFIX_ADD, 4);
- infix_minus = new_infix_op(INFIX_MINUS, 3);
- infix_div = new_infix_op(INFIX_DIV, 2);
- infix_or = new_infix_op(INFIX_OR, 5);
- infix_and = new_infix_op(INFIX_AND,4);
- infix_mod = new_infix_op(INFIX_MOD, 1);
- infix_mult = new_infix_op(INFIX_MULT, 2);
-
- /* Prefix operators */
- infix_positive = new_infix_op(INFIX_ADD, 0);
- infix_negative = new_infix_op(INFIX_MINUS, 0);
-
- return SUCCESS;
+ infix_add = new_infix_op(INFIX_ADD, 4);
+ infix_minus = new_infix_op(INFIX_MINUS, 3);
+ infix_div = new_infix_op(INFIX_DIV, 2);
+ infix_or = new_infix_op(INFIX_OR, 5);
+ infix_and = new_infix_op(INFIX_AND,4);
+ infix_mod = new_infix_op(INFIX_MOD, 1);
+ infix_mult = new_infix_op(INFIX_MULT, 2);
+
+ /* Prefix operators */
+ infix_positive = new_infix_op(INFIX_ADD, 0);
+ infix_negative = new_infix_op(INFIX_MINUS, 0);
+
+ return SUCCESS;
}
/* Destroys the infix operator list. This should
/* Initializes an infix operator */
infix_op_t * new_infix_op(int type, int precedence) {
- infix_op_t * infix_op;
-
- infix_op = (infix_op_t*)malloc(sizeof(infix_op_t));
-
- if (infix_op == NULL)
- return NULL;
-
- infix_op->type = type;
- infix_op->precedence = precedence;
-
- return infix_op;
+ infix_op_t * infix_op;
+
+ infix_op = (infix_op_t*)malloc(sizeof(infix_op_t));
+
+ if (infix_op == NULL)
+ return NULL;
+
+ infix_op->type = type;
+ infix_op->precedence = precedence;
+
+ return infix_op;
}
}
new_gen_expr->item = (void*)val_expr;
break;
-
+
case PREFUN_T: /* prefix function expression */
if ((prefun_expr = clone_prefun_expr((prefun_expr_t*)gen_expr->item)) == NULL) {
free(new_gen_expr);
}
new_gen_expr->item = (void*)prefun_expr;
break;
-
+
case TREE_T: /* tree expression */
if ((tree_expr = clone_tree_expr((tree_expr_t*)gen_expr->item)) == NULL) {
free(new_gen_expr);
}
new_gen_expr->item = (void*)tree_expr;
break;
-
+
default: /* unknown type, ut oh.. */
free(new_gen_expr);
return NULL;
}
-
+
return new_gen_expr; /* Return the new (cloned) general expression */
}
/* Null argument */
if (tree_expr == NULL)
return NULL;
-
+
/* Out of memory */
- if ((new_tree_expr = (tree_expr_t*)malloc(sizeof(tree_expr_t))) == NULL)
+ if ((new_tree_expr = (tree_expr_t*)malloc(sizeof(tree_expr_t))) == NULL)
return NULL;
-
+
/* Set each argument in tree_expr_t struct */
new_tree_expr->infix_op = tree_expr->infix_op; /* infix operators are in shared memory */
new_tree_expr->gen_expr = clone_gen_expr(tree_expr->gen_expr); /* clone the general expression */
return new_tree_expr; /* Return the new (cloned) tree expression */
}
-/* Clones a value expression, currently only passes the pointer to
+/* Clones a value expression, currently only passes the pointer to
the value that this object represents, not a pointer to a copy of the value */
val_expr_t * clone_val_expr(val_expr_t * val_expr) {
/* Null argument */
if (val_expr == NULL)
return NULL;
-
+
/* Allocate space, check for out of memory */
- if ((new_val_expr = (val_expr_t*)malloc(sizeof(val_expr_t))) == NULL)
+ if ((new_val_expr = (val_expr_t*)malloc(sizeof(val_expr_t))) == NULL)
return NULL;
/* Set the values in the val_expr_t struct */
new_val_expr->type = val_expr->type;
new_val_expr->term = val_expr->term;
-
+
/* Return the new (cloned) value expression */
return new_val_expr;
}
int i;
prefun_expr_t * new_prefun_expr;
-
+
/* Null argument */
if (prefun_expr == NULL)
return NULL;
-
+
/* Out of memory */
- if ((new_prefun_expr = (prefun_expr_t*)malloc(sizeof(prefun_expr_t))) == NULL)
+ if ((new_prefun_expr = (prefun_expr_t*)malloc(sizeof(prefun_expr_t))) == NULL)
return NULL;
-
+
/* Set the function argument paired with its number of arguments */
new_prefun_expr->num_args = prefun_expr->num_args;
new_prefun_expr->func_ptr = prefun_expr->func_ptr;
}
/* Now copy each general expression from the argument expression list */
- for (i = 0; i < new_prefun_expr->num_args;i++)
+ for (i = 0; i < new_prefun_expr->num_args;i++)
new_prefun_expr->expr_list[i] = clone_gen_expr(prefun_expr->expr_list[i]);
-
+
/* Finally, return the new (cloned) prefix function expression */
return new_prefun_expr;
}
zoomexp= 1.0;
rot= 0.0;
warp= 0.0;
-
+
sx= 1.0;
sy= 1.0;
dx= 0.0;
cx= 0.5;
cy= 0.5;
-
+
decay=.98;
-
+
wave_r= 1.0;
wave_g= 0.2;
wave_b= 0.0;
mv_y = 12.0;
mv_dy = 0.02;
mv_dx = 0.02;
-
+
meshx = 0;
meshy = 0;
#define INFIX_OR 5
#define INFIX_AND 6
-//#define EVAL_DEBUG
+//#define EVAL_DEBUG
inline double eval_gen_expr(gen_expr_t * gen_expr);
/* Infix Operator Function */
typedef struct INFIX_OP_T {
int type;
- int precedence;
+ int precedence;
} infix_op_t;
/* A binary expression tree ordered by operator precedence */
n >= 1, n = power of 2
a[0...2*n-1] :input/output data (double *)
input data
- a[2*j] = Re(x[j]),
+ a[2*j] = Re(x[j]),
a[2*j+1] = Im(x[j]), 0<=j<n
output data
- a[2*k] = Re(X[k]),
+ a[2*k] = Re(X[k]),
a[2*k+1] = Im(X[k]), 0<=k<n
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n/2-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
cdft(2*n, -1, a, ip, w);
- is
+ is
cdft(2*n, 1, a, ip, w);
for (j = 0; j <= 2 * n - 1; j++) {
a[j] *= 1.0 / n;
R[k] = sum_j=0^n-1 a[j]*cos(2*pi*j*k/n), 0<=k<=n/2
I[k] = sum_j=0^n-1 a[j]*sin(2*pi*j*k/n), 0<k<n/2
<case2> IRDFT (excluding scale)
- a[k] = (R[0] + R[n/2]*cos(pi*k))/2 +
- sum_j=1^n/2-1 R[j]*cos(2*pi*j*k/n) +
+ a[k] = (R[0] + R[n/2]*cos(pi*k))/2 +
+ sum_j=1^n/2-1 R[j]*cos(2*pi*j*k/n) +
sum_j=1^n/2-1 I[j]*sin(2*pi*j*k/n), 0<=k<n
[usage]
<case1>
a[1] = R[n/2]
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n/2)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n/2+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n/2-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
rdft(n, 1, a, ip, w);
- is
+ is
rdft(n, -1, a, ip, w);
for (j = 0; j <= n - 1; j++) {
a[j] *= 2.0 / n;
a[k] = C[k], 0<=k<n
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n/2)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n/2+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n*5/4-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
ddct(n, -1, a, ip, w);
- is
+ is
a[0] *= 0.5;
ddct(n, 1, a, ip, w);
for (j = 0; j <= n - 1; j++) {
a[0] = S[n]
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n/2)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n/2+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n*5/4-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
ddst(n, -1, a, ip, w);
- is
+ is
a[0] *= 0.5;
ddst(n, 1, a, ip, w);
for (j = 0; j <= n - 1; j++) {
t[0...n/2] :work area (double *)
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n/4)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n/4+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n*5/8-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
a[0] *= 0.5;
a[n] *= 0.5;
dfct(n, a, t, ip, w);
- is
+ is
a[0] *= 0.5;
a[n] *= 0.5;
dfct(n, a, t, ip, w);
t[0...n/2-1] :work area (double *)
ip[0...*] :work area for bit reversal (int *)
length of ip >= 2+sqrt(n/4)
- strictly,
- length of ip >=
+ strictly,
+ length of ip >=
2+(1<<(int)(log(n/4+0.5)/log(2))/2).
ip[0],ip[1] are pointers of the cos/sin table.
w[0...n*5/8-1] :cos/sin table (double *)
w[],ip[] are initialized if ip[0] == 0.
[remark]
- Inverse of
+ Inverse of
dfst(n, a, t, ip, w);
- is
+ is
dfst(n, a, t, ip, w);
for (j = 1; j <= n - 1; j++) {
a[j] *= 2.0 / n;
void cftfsub(int n, double *a, int *ip, int nw, double *w);
void cftbsub(int n, double *a, int *ip, int nw, double *w);
int nw;
-
+
nw = ip[0];
if (n > (nw << 2)) {
nw = n >> 2;
void rftbsub(int n, double *a, int nc, double *c);
int nw, nc;
double xi;
-
+
nw = ip[0];
if (n > (nw << 2)) {
nw = n >> 2;
void dctsub(int n, double *a, int nc, double *c);
int j, nw, nc;
double xr;
-
+
nw = ip[0];
if (n > (nw << 2)) {
nw = n >> 2;
void dstsub(int n, double *a, int nc, double *c);
int j, nw, nc;
double xr;
-
+
nw = ip[0];
if (n > (nw << 2)) {
nw = n >> 2;
void dctsub(int n, double *a, int nc, double *c);
int j, k, l, m, mh, nw, nc;
double xr, xi, yr, yi;
-
+
nw = ip[0];
if (n > (nw << 3)) {
nw = n >> 3;
void dstsub(int n, double *a, int nc, double *c);
int j, k, l, m, mh, nw, nc;
double xr, xi, yr, yi;
-
+
nw = ip[0];
if (n > (nw << 3)) {
nw = n >> 3;
void makeipt(int nw, int *ip);
int j, nwh, nw0, nw1;
double delta, wn4r, wk1r, wk1i, wk3r, wk3i;
-
+
ip[0] = nw;
ip[1] = 1;
if (nw > 2) {
void makeipt(int nw, int *ip)
{
int j, l, m, m2, p, q;
-
+
ip[2] = 0;
ip[3] = 16;
m = 2;
{
int j, nch;
double delta;
-
+
ip[1] = nc;
if (nc > 1) {
nch = nc >> 1;
#ifdef USE_CDFT_THREADS
void cftrec4_th(int n, double *a, int nw, double *w);
#endif /* USE_CDFT_THREADS */
-
+
if (n > 8) {
if (n > 32) {
cftf1st(n, a, &w[nw - (n >> 2)]);
#ifdef USE_CDFT_THREADS
if (n > CDFT_THREADS_BEGIN_N) {
cftrec4_th(n, a, nw, w);
- } else
+ } else
#endif /* USE_CDFT_THREADS */
if (n > 512) {
cftrec4(n, a, nw, w);
#ifdef USE_CDFT_THREADS
void cftrec4_th(int n, double *a, int nw, double *w);
#endif /* USE_CDFT_THREADS */
-
+
if (n > 8) {
if (n > 32) {
cftb1st(n, a, &w[nw - (n >> 2)]);
#ifdef USE_CDFT_THREADS
if (n > CDFT_THREADS_BEGIN_N) {
cftrec4_th(n, a, nw, w);
- } else
+ } else
#endif /* USE_CDFT_THREADS */
if (n > 512) {
cftrec4(n, a, nw, w);
{
int j, j1, k, k1, l, m, nh, nm;
double xr, xi, yr, yi;
-
+
m = 1;
for (l = n >> 2; l > 8; l >>= 2) {
m <<= 1;
{
int j, j1, k, k1, l, m, nh, nm;
double xr, xi, yr, yi;
-
+
m = 1;
for (l = n >> 2; l > 8; l >>= 2) {
m <<= 1;
void bitrv216(double *a)
{
- double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
- x5r, x5i, x7r, x7i, x8r, x8i, x10r, x10i,
+ double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
+ x5r, x5i, x7r, x7i, x8r, x8i, x10r, x10i,
x11r, x11i, x12r, x12i, x13r, x13i, x14r, x14i;
-
+
x1r = a[2];
x1i = a[3];
x2r = a[4];
void bitrv216neg(double *a)
{
- double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
- x5r, x5i, x6r, x6i, x7r, x7i, x8r, x8i,
- x9r, x9i, x10r, x10i, x11r, x11i, x12r, x12i,
+ double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
+ x5r, x5i, x6r, x6i, x7r, x7i, x8r, x8i,
+ x9r, x9i, x10r, x10i, x11r, x11i, x12r, x12i,
x13r, x13i, x14r, x14i, x15r, x15i;
-
+
x1r = a[2];
x1i = a[3];
x2r = a[4];
void bitrv208(double *a)
{
double x1r, x1i, x3r, x3i, x4r, x4i, x6r, x6i;
-
+
x1r = a[2];
x1i = a[3];
x3r = a[6];
void bitrv208neg(double *a)
{
- double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
+ double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i,
x5r, x5i, x6r, x6i, x7r, x7i;
-
+
x1r = a[2];
x1i = a[3];
x2r = a[4];
void cftf1st(int n, double *a, double *w)
{
int j, j0, j1, j2, j3, k, m, mh;
- double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i,
+ double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i,
wd1r, wd1i, wd3r, wd3i;
- double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
+ double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i;
-
+
mh = n >> 3;
m = 2 * mh;
j1 = m;
void cftb1st(int n, double *a, double *w)
{
int j, j0, j1, j2, j3, k, m, mh;
- double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i,
+ double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i,
wd1r, wd1i, wd3r, wd3i;
- double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
+ double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i;
-
+
mh = n >> 3;
m = 2 * mh;
j1 = m;
int i, idiv4, m, nthread;
cdft_thread_t th[4];
cdft_arg_t ag[4];
-
+
nthread = 2;
idiv4 = 0;
m = n >> 1;
void cftmdl1(int n, double *a, double *w);
int isplt, j, k, m, n, n0, nw;
double *a, *w;
-
+
n0 = ((cdft_arg_t *) p)->n0;
n = ((cdft_arg_t *) p)->n;
a = ((cdft_arg_t *) p)->a;
void cftmdl2(int n, double *a, double *w);
int isplt, j, k, m, n, n0, nw;
double *a, *w;
-
+
n0 = ((cdft_arg_t *) p)->n0;
n = ((cdft_arg_t *) p)->n;
a = ((cdft_arg_t *) p)->a;
void cftleaf(int n, int isplt, double *a, int nw, double *w);
void cftmdl1(int n, double *a, double *w);
int isplt, j, k, m;
-
+
m = n;
while (m > 512) {
m >>= 2;
void cftmdl1(int n, double *a, double *w);
void cftmdl2(int n, double *a, double *w);
int i, isplt, m;
-
+
if ((k & 3) != 0) {
isplt = k & 1;
if (isplt != 0) {
void cftf162(double *a, double *w);
void cftf081(double *a, double *w);
void cftf082(double *a, double *w);
-
+
if (n == 512) {
cftmdl1(128, a, &w[nw - 64]);
cftf161(a, &w[nw - 8]);
int j, j0, j1, j2, j3, k, m, mh;
double wn4r, wk1r, wk1i, wk3r, wk3i;
double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
-
+
mh = n >> 3;
m = 2 * mh;
j1 = m;
int j, j0, j1, j2, j3, k, kr, m, mh;
double wn4r, wk1r, wk1i, wk3r, wk3i, wd1r, wd1i, wd3r, wd3i;
double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y2r, y2i;
-
+
mh = n >> 3;
m = 2 * mh;
wn4r = w[1];
void cftf162(double *a, double *w);
void cftf081(double *a, double *w);
void cftf082(double *a, double *w);
-
+
if (n == 128) {
cftf161(a, &w[nw - 8]);
cftf162(&a[32], &w[nw - 32]);
void cftf161(double *a, double *w)
{
- double wn4r, wk1r, wk1i,
- x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
- y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
- y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i,
- y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i,
+ double wn4r, wk1r, wk1i,
+ x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
+ y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
+ y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i,
+ y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i,
y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i;
-
+
wn4r = w[1];
wk1r = w[2];
wk1i = w[3];
void cftf162(double *a, double *w)
{
- double wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i,
- x0r, x0i, x1r, x1i, x2r, x2i,
- y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
- y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i,
- y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i,
+ double wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i,
+ x0r, x0i, x1r, x1i, x2r, x2i,
+ y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
+ y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i,
+ y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i,
y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i;
-
+
wn4r = w[1];
wk1r = w[4];
wk1i = w[5];
void cftf081(double *a, double *w)
{
- double wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
- y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
+ double wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
+ y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
-
+
wn4r = w[1];
x0r = a[0] + a[8];
x0i = a[1] + a[9];
void cftf082(double *a, double *w)
{
- double wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i,
- y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
+ double wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i,
+ y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i,
y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
-
+
wn4r = w[1];
wk1r = w[2];
wk1i = w[3];
void cftf040(double *a)
{
double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
-
+
x0r = a[0] + a[4];
x0i = a[1] + a[5];
x1r = a[0] - a[4];
void cftb040(double *a)
{
double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
-
+
x0r = a[0] + a[4];
x0i = a[1] + a[5];
x1r = a[0] - a[4];
void cftx020(double *a)
{
double x0r, x0i;
-
+
x0r = a[0] - a[2];
x0i = a[1] - a[3];
a[0] += a[2];
{
int j, k, kk, ks, m;
double wkr, wki, xr, xi, yr, yi;
-
+
m = n >> 1;
ks = 2 * nc / m;
kk = 0;
{
int j, k, kk, ks, m;
double wkr, wki, xr, xi, yr, yi;
-
+
m = n >> 1;
ks = 2 * nc / m;
kk = 0;
{
int j, k, kk, ks, m;
double wkr, wki, xr;
-
+
m = n >> 1;
ks = nc / n;
kk = 0;
{
int j, k, kk, ks, m;
double wkr, wki, xr;
-
+
m = n >> 1;
ks = nc / n;
kk = 0;
void * copy_func_key(char * string) {
-
- char * clone_string;
-
- if ((clone_string = malloc(MAX_TOKEN_SIZE)) == NULL)
- return NULL;
-
- strncpy(clone_string, string, MAX_TOKEN_SIZE-1);
-
- return (void*)clone_string;
-}
+
+ char * clone_string;
+
+ if ((clone_string = malloc(MAX_TOKEN_SIZE)) == NULL)
+ return NULL;
+
+ strncpy(clone_string, string, MAX_TOKEN_SIZE-1);
+
+ return (void*)clone_string;
+}
func_t * create_func (char * name, double (*func_ptr)(), int num_args) {
if (func == NULL)
return NULL;
-
+
/* Clear name space */
memset(func->name, 0, MAX_TOKEN_SIZE);
/* Copy given name into function structure */
- strncpy(func->name, name, MAX_TOKEN_SIZE);
+ strncpy(func->name, name, MAX_TOKEN_SIZE);
/* Assign value pointer */
func->func_ptr = func_ptr;
/* First look in the builtin database */
func = (func_t *)splay_find(name, builtin_func_tree);
-
+
return func;
}
/* Uses string comparison function */
cmpval = strncmp(name, name2, MAX_TOKEN_SIZE-1);
-
+
return cmpval;
}
/* Loads a builtin function */
int load_builtin_func(char * name, double (*func_ptr)(), int num_args) {
- func_t * func;
- int retval;
+ func_t * func;
+ int retval;
/* Create new function */
func = create_func(name, func_ptr, num_args);
/* Loads all builtin functions */
int load_all_builtin_func() {
-
+
if (load_builtin_func("int", int_wrapper, 1) < 0)
return ERROR;
if (load_builtin_func("abs", abs_wrapper, 1) < 0)
/* Function Type */
typedef struct FUNC_T {
- char name[MAX_TOKEN_SIZE];
+ char name[MAX_TOKEN_SIZE];
double (*func_ptr)();
int num_args;
} func_t;
/* Parameter is of boolean type, either a 1 or 0 value integer */
/* Set matrix flag to zero. This ensures
- its constant value will be used rather than a matrix value
+ its constant value will be used rather than a matrix value
*/
init_cond->param->matrix_flag = 0;
if (init_cond->param->type == P_TYPE_BOOL) {
- if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE BOOL)\n", init_cond->param->name, init_cond->init_val.bool_val);
- *((int*)init_cond->param->engine_val) = init_cond->init_val.bool_val;
+ if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE BOOL)\n", init_cond->param->name, init_cond->init_val.bool_val);
+ *((int*)init_cond->param->engine_val) = init_cond->init_val.bool_val;
return;
}
-
+
/* Parameter is an integer type, just like C */
-
+
if (init_cond->param->type == P_TYPE_INT) {
- if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE INT)\n", init_cond->param->name, init_cond->init_val.int_val);
- *((int*)init_cond->param->engine_val) = init_cond->init_val.int_val;
+ if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE INT)\n", init_cond->param->name, init_cond->init_val.int_val);
+ *((int*)init_cond->param->engine_val) = init_cond->init_val.int_val;
return;
}
/* Parameter is of a double type, just like C */
if (init_cond->param->type == P_TYPE_DOUBLE) {
- if (INIT_COND_DEBUG) printf("init_cond: %s = %f (TYPE DOUBLE)\n", init_cond->param->name, init_cond->init_val.double_val);
- *((double*)init_cond->param->engine_val) = init_cond->init_val.double_val;
+ if (INIT_COND_DEBUG) printf("init_cond: %s = %f (TYPE DOUBLE)\n", init_cond->param->name, init_cond->init_val.double_val);
+ *((double*)init_cond->param->engine_val) = init_cond->init_val.double_val;
return;
}
init_cond_t * init_cond;
init_cond = (init_cond_t*)malloc(sizeof(init_cond_t));
-
+
if (init_cond == NULL)
return NULL;
/* WIP */
void init_cond_to_string(init_cond_t * init_cond) {
-
- int string_length;
- char string[MAX_TOKEN_SIZE];
-
- if (init_cond == NULL)
- return;
-
- /* Create a string "param_name=val" */
- switch (init_cond->param->type) {
+
+ int string_length;
+ char string[MAX_TOKEN_SIZE];
+
+ if (init_cond == NULL)
+ return;
+
+ /* Create a string "param_name=val" */
+ switch (init_cond->param->type) {
lldiv_t div;
-
- case P_TYPE_BOOL:
- sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.bool_val);
- break;
- case P_TYPE_INT:
- sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.int_val);
- break;
- case P_TYPE_DOUBLE:
+
+ case P_TYPE_BOOL:
+ sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.bool_val);
+ break;
+ case P_TYPE_INT:
+ sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.int_val);
+ break;
+ case P_TYPE_DOUBLE:
div = lldiv( init_cond->init_val.double_val * 1000000,
1000000 );
- sprintf(string, "%s="I64Fd".%06u\n", init_cond->param->name, div.quot, (unsigned int) div.rem );
- break;
- default:
- return;
- }
-
- /* Compute the length of the string */
- string_length = strlen(string);
-
- /* Buffer overflow check */
- if ((init_cond_string_buffer_index + string_length + 1) > (STRING_BUFFER_SIZE - 1))
- return;
-
- /* Copy the string into the initial condition string buffer */
-
- strncpy(init_cond_string_buffer + init_cond_string_buffer_index, string, string_length);
-
- /* Increment the string buffer, offset by one for the null terminator, which will be
- overwritten by the next call to this function */
- init_cond_string_buffer_index+= string_length + 1;
-
+ sprintf(string, "%s="I64Fd".%06u\n", init_cond->param->name, div.quot, (unsigned int) div.rem );
+ break;
+ default:
+ return;
+ }
+
+ /* Compute the length of the string */
+ string_length = strlen(string);
+
+ /* Buffer overflow check */
+ if ((init_cond_string_buffer_index + string_length + 1) > (STRING_BUFFER_SIZE - 1))
+ return;
+
+ /* Copy the string into the initial condition string buffer */
+
+ strncpy(init_cond_string_buffer + init_cond_string_buffer_index, string, string_length);
+
+ /* Increment the string buffer, offset by one for the null terminator, which will be
+ overwritten by the next call to this function */
+ init_cond_string_buffer_index+= string_length + 1;
+
}
char * create_init_cond_string_buffer(splaytree_t * init_cond_tree) {
- if (init_cond_tree == NULL)
- return NULL;
-
- init_cond_string_buffer_index = 0;
-
- splay_traverse(init_cond_to_string, init_cond_tree);
-
- return init_cond_string_buffer;
-
+ if (init_cond_tree == NULL)
+ return NULL;
+
+ init_cond_string_buffer_index = 0;
+
+ splay_traverse(init_cond_to_string, init_cond_tree);
+
+ return init_cond_string_buffer;
+
}
#include "expr_types.h"
#include "eval.h"
-#include "engine_vars.h"
+#include "engine_vars.h"
void reset_param(param_t * param);
/* Private function prototypes */
int compare_param(char * name, char * name2);
-int load_builtin_param_double(char * name, void * engine_val, void * matrix, short int flags,
- double init_val, double upper_bound, double lower_bound, char * alt_name);
-
-int load_builtin_param_int(char * name, void * engine_val, short int flags,
- int init_val, int upper_bound, int lower_bound, char * alt_name);
-
-int load_builtin_param_bool(char * name, void * engine_val, short int flags,
- int init_val, char * alt_name);
-
-
-
+int load_builtin_param_double(char * name, void * engine_val, void * matrix, short int flags,
+ double init_val, double upper_bound, double lower_bound, char * alt_name);
+
+int load_builtin_param_int(char * name, void * engine_val, short int flags,
+ int init_val, int upper_bound, int lower_bound, char * alt_name);
+
+int load_builtin_param_bool(char * name, void * engine_val, short int flags,
+ int init_val, char * alt_name);
+
+
+
param_t * create_param (char * name, short int type, short int flags, void * engine_val, void * matrix,
- value_t default_init_val, value_t upper_bound, value_t lower_bound) {
+ value_t default_init_val, value_t upper_bound, value_t lower_bound) {
param_t * param = NULL;
param = (param_t*)malloc(sizeof(param_t));
if (param == NULL) {
- printf("create_param: out of memory!!!\n");
- return NULL;
+ printf("create_param: out of memory!!!\n");
+ return NULL;
}
-
+
/* Clear name space, think the strncpy statement makes this redundant */
//memset(param->name, 0, MAX_TOKEN_SIZE);
/* Copy given name into parameter structure */
- strncpy(param->name, name, MAX_TOKEN_SIZE-1);
-
+ strncpy(param->name, name, MAX_TOKEN_SIZE-1);
+
/* Assign other entries in a constructor like fashion */
param->type = type;
param->flags = flags;
//*param->init_val = default_init_val;
param->upper_bound = upper_bound;
param->lower_bound = lower_bound;
-
+
/* Return instantiated parameter */
return param;
value_t ub;
value_t lb;
double * engine_val;
-
+
/* Set initial values to default */
iv.double_val = DEFAULT_DOUBLE_IV;
ub.double_val = DEFAULT_DOUBLE_UB;
return NULL;
(*engine_val) = iv.double_val; /* set some default init value */
-
+
/* Create the new user parameter */
if ((param = create_param(name, P_TYPE_DOUBLE, P_FLAG_USERDEF, engine_val, NULL, iv, ub, lb)) == NULL) {
free(engine_val);
/* Initialize the builtin parameter database.
Should only be necessary once */
int init_builtin_param_db() {
-
+
/* Create the builtin parameter splay tree (go Sleator...) */
if ((builtin_param_tree = create_splaytree(compare_string, copy_string, free_string)) == NULL) {
- if (PARAM_DEBUG) printf("init_builtin_param_db: failed to initialize database (FATAL)\n");
- return OUTOFMEM_ERROR;
- }
+ if (PARAM_DEBUG) printf("init_builtin_param_db: failed to initialize database (FATAL)\n");
+ return OUTOFMEM_ERROR;
+ }
if (PARAM_DEBUG) {
- printf("init_builtin_param: loading database...");
- fflush(stdout);
+ printf("init_builtin_param: loading database...");
+ fflush(stdout);
}
-
+
/* Loads all builtin parameters into the database */
if (load_all_builtin_param() < 0) {
- if (PARAM_DEBUG) printf("failed loading builtin parameters (FATAL)\n");
+ if (PARAM_DEBUG) printf("failed loading builtin parameters (FATAL)\n");
return ERROR;
}
-
+
if (PARAM_DEBUG) printf("success!\n");
-
+
/* Finished, no errors */
return SUCCESS;
}
/* Destroy the builtin parameter database.
Generally, do this on projectm exit */
int destroy_builtin_param_db() {
-
+
splay_traverse(free_param, builtin_param_tree);
destroy_splaytree(builtin_param_tree);
builtin_param_tree = NULL;
- return SUCCESS;
+ return SUCCESS;
}
/* Insert a parameter into the database with an alternate name */
int insert_param_alt_name(param_t * param, char * alt_name) {
-
+
if (param == NULL)
return ERROR;
if (alt_name == NULL)
- return ERROR;
-
+ return ERROR;
+
splay_insert_link(alt_name, param->name, builtin_param_tree);
return SUCCESS;
/* Null argument checks */
if (name == NULL)
- return NULL;
-
+ return NULL;
+
return splay_find(name, builtin_param_tree);
}
/* Null argument checks */
if (name == NULL)
- return NULL;
+ return NULL;
if (preset == NULL)
- return NULL;
-
+ return NULL;
+
/* First look in the builtin database */
param = (param_t *)splay_find(name, builtin_param_tree);
if (param == NULL) {
param = (param_t*)splay_find(name, preset->user_param_tree);
}
- /* If it doesn't exist in the user (or builtin) database and
- create_flag is set, then make it and insert into the database
+ /* If it doesn't exist in the user (or builtin) database and
+ create_flag is set, then make it and insert into the database
*/
-
+
if ((param == NULL) && (flags & P_CREATE)) {
-
- /* Check if string is valid */
+
+ /* Check if string is valid */
if (!is_valid_param_string(name)) {
if (PARAM_DEBUG) printf("find_param: invalid parameter name:\"%s\"\n", name);
return NULL;
if (PARAM_DEBUG) printf("PARAM \"%s\" already exists in user parameter tree!\n", param->name);
free_param(param);
return NULL;
- }
-
- }
-
+ }
+
+ }
+
/* Return the found (or created) parameter. Note that if P_CREATE is not set, this could be null */
return param;
-
+
}
/* Compare string name with parameter name */
printf("am i used\n");
/* Uses string comparison function */
cmpval = strncmp(name, name2, MAX_TOKEN_SIZE-1);
-
+
return cmpval;
}
load_builtin_param_double("echo_zoom", (void*)&fVideoEchoZoom, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoZoom");
load_builtin_param_double("echo_alpha", (void*)&fVideoEchoAlpha, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoAlpha");
load_builtin_param_double("wave_a", (void*)&fWaveAlpha, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fWaveAlpha");
- load_builtin_param_double("fWaveSmoothing", (void*)&fWaveSmoothing, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
+ load_builtin_param_double("fWaveSmoothing", (void*)&fWaveSmoothing, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
load_builtin_param_double("fModWaveAlphaStart", (void*)&fModWaveAlphaStart, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
load_builtin_param_double("fModWaveAlphaEnd", (void*)&fModWaveAlphaEnd, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
load_builtin_param_double("fWarpAnimSpeed", (void*)&fWarpAnimSpeed, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
// load_builtin_param_double("warp", (void*)&warp, warp_mesh, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
-
+
load_builtin_param_double("fShader", (void*)&fShader, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
load_builtin_param_double("decay", (void*)&decay, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fDecay");
load_builtin_param_int("echo_orient", (void*)&nVideoEchoOrientation, P_FLAG_NONE, 0, 3, 0, "nVideoEchoOrientation");
load_builtin_param_int("wave_mode", (void*)&nWaveMode, P_FLAG_NONE, 0, 7, 0, "nWaveMode");
-
+
load_builtin_param_bool("wave_additive", (void*)&bAdditiveWaves, P_FLAG_NONE, FALSE, "bAdditiveWaves");
load_builtin_param_bool("bModWaveAlphaByVolume", (void*)&bModWaveAlphaByVolume, P_FLAG_NONE, FALSE, NULL);
load_builtin_param_bool("wave_brighten", (void*)&bMaximizeWaveColor, P_FLAG_NONE, FALSE, "bMaximizeWaveColor");
load_builtin_param_bool("wave_dots", (void*)&bWaveDots, P_FLAG_NONE, FALSE, "bWaveDots");
load_builtin_param_bool("wave_thick", (void*)&bWaveThick, P_FLAG_NONE, FALSE, "bWaveThick");
-
-
+
+
load_builtin_param_double("zoom", (void*)&zoom, zoom_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
load_builtin_param_double("rot", (void*)&rot, rot_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, MIN_DOUBLE_SIZE, NULL);
load_builtin_param_double("zoomexp", (void*)&zoomexp, zoomexp_mesh, P_FLAG_PER_PIXEL |P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fZoomExponent");
load_builtin_param_double("wave_x", (void*)&wave_x, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL);
load_builtin_param_double("wave_y", (void*)&wave_y, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL);
load_builtin_param_double("wave_mystery", (void*)&wave_mystery, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, "fWaveParam");
-
+
load_builtin_param_double("ob_size", (void*)&ob_size, NULL, P_FLAG_NONE, 0.0, 0.5, 0, NULL);
load_builtin_param_double("ob_r", (void*)&ob_r, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL);
load_builtin_param_double("ob_g", (void*)&ob_g, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL);
load_builtin_param_double("mv_dx", (void*)&mv_dx, NULL,P_FLAG_NONE, 0.0, 1.0, -1.0, NULL);
load_builtin_param_double("mv_a", (void*)&mv_a, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL);
- load_builtin_param_double("time", (void*)&Time, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0.0, NULL);
+ load_builtin_param_double("time", (void*)&Time, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0.0, NULL);
load_builtin_param_double("bass", (void*)&bass, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0.0, NULL);
- load_builtin_param_double("mid", (void*)&mid, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
+ load_builtin_param_double("mid", (void*)&mid, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
load_builtin_param_double("bass_att", (void*)&bass_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
load_builtin_param_double("mid_att", (void*)&mid_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
load_builtin_param_double("treb_att", (void*)&treb_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL);
- load_builtin_param_double("x", (void*)&x_per_pixel, x_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
- 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
- load_builtin_param_double("y", (void*)&y_per_pixel, y_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX |P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
- 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
- load_builtin_param_double("ang", (void*)&ang_per_pixel, theta_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
- 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
- load_builtin_param_double("rad", (void*)&rad_per_pixel, rad_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
- 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
+ load_builtin_param_double("x", (void*)&x_per_pixel, x_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
+ 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
+ load_builtin_param_double("y", (void*)&y_per_pixel, y_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX |P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
+ 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
+ load_builtin_param_double("ang", (void*)&ang_per_pixel, theta_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
+ 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
+ load_builtin_param_double("rad", (void*)&rad_per_pixel, rad_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX,
+ 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
load_builtin_param_double("q1", (void*)&q1, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);
load_builtin_param_int("meshx", (void*)&gx, P_FLAG_READONLY, 32, 96, 8, NULL);
load_builtin_param_int("meshy", (void*)&gy, P_FLAG_READONLY, 24, 72, 6, NULL);
- return SUCCESS;
-
+ return SUCCESS;
+
}
/* Free's a parameter type */
void free_param(param_t * param) {
int x;
if (param == NULL)
- return;
-
+ return;
+
if (param->flags & P_FLAG_USERDEF) {
free(param->engine_val);
free(param->matrix);
else if (param->flags & P_FLAG_PER_PIXEL) {
- for(x = 0; x < gx; x++)
- free(((double**)param->matrix)[x]);
+ for(x = 0; x < gx; x++)
+ free(((double**)param->matrix)[x]);
free(param->matrix);
}
}
}
/* Loads a double parameter into the builtin database */
-int load_builtin_param_double(char * name, void * engine_val, void * matrix, short int flags,
- double init_val, double upper_bound, double lower_bound, char * alt_name) {
+int load_builtin_param_double(char * name, void * engine_val, void * matrix, short int flags,
+ double init_val, double upper_bound, double lower_bound, char * alt_name) {
param_t * param = NULL;
value_t iv, ub, lb;
iv.double_val = init_val;
ub.double_val = upper_bound;
lb.double_val = lower_bound;
-
+
/* Create new parameter of type double */
if (PARAM_DEBUG == 2) {
- printf("load_builtin_param_double: (name \"%s\") (alt_name = \"%s\") ", name, alt_name);
- fflush(stdout);
- }
-
+ printf("load_builtin_param_double: (name \"%s\") (alt_name = \"%s\") ", name, alt_name);
+ fflush(stdout);
+ }
+
if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix, iv, ub, lb)) == NULL) {
return OUTOFMEM_ERROR;
}
-
+
if (PARAM_DEBUG == 2) {
- printf("created...");
- fflush(stdout);
- }
-
+ printf("created...");
+ fflush(stdout);
+ }
+
/* Insert the paremeter into the database */
if (insert_builtin_param(param) < 0) {
- free_param(param);
+ free_param(param);
return ERROR;
}
if (PARAM_DEBUG == 2) {
- printf("inserted...");
- fflush(stdout);
- }
-
+ printf("inserted...");
+ fflush(stdout);
+ }
+
/* If this parameter has an alternate name, insert it into the database as link */
-
+
if (alt_name != NULL) {
- insert_param_alt_name(param, alt_name);
+ insert_param_alt_name(param, alt_name);
if (PARAM_DEBUG == 2) {
- printf("alt_name inserted...");
- fflush(stdout);
- }
-
-
- }
-
- if (PARAM_DEBUG == 2) printf("finished\n");
+ printf("alt_name inserted...");
+ fflush(stdout);
+ }
+
+
+ }
+
+ if (PARAM_DEBUG == 2) printf("finished\n");
/* Finished, return success */
return SUCCESS;
}
/* Loads a double parameter into the builtin database */
param_t * new_param_double(char * name, short int flags, void * engine_val, void * matrix,
- double upper_bound, double lower_bound, double init_val) {
+ double upper_bound, double lower_bound, double init_val) {
param_t * param;
value_t iv, ub, lb;
iv.double_val = init_val;
ub.double_val = upper_bound;
lb.double_val = lower_bound;
-
- if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix,iv, ub, lb)) == NULL)
+
+ if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix,iv, ub, lb)) == NULL)
return NULL;
-
-
+
+
/* Finished, return success */
return param;
}
/* Creates a new parameter of type int */
param_t * new_param_int(char * name, short int flags, void * engine_val,
- int upper_bound, int lower_bound, int init_val) {
+ int upper_bound, int lower_bound, int init_val) {
param_t * param;
value_t iv, ub, lb;
iv.int_val = init_val;
ub.int_val = upper_bound;
lb.int_val = lower_bound;
-
- if ((param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb)) == NULL)
+
+ if ((param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb)) == NULL)
return NULL;
-
+
/* Finished, return success */
return param;
/* Creates a new parameter of type bool */
param_t * new_param_bool(char * name, short int flags, void * engine_val,
- int upper_bound, int lower_bound, int init_val) {
+ int upper_bound, int lower_bound, int init_val) {
param_t * param;
value_t iv, ub, lb;
iv.bool_val = init_val;
ub.bool_val = upper_bound;
lb.bool_val = lower_bound;
-
+
if ((param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb)) == NULL)
return NULL;
-
+
/* Finished, return success */
return param;
/* Loads a integer parameter into the builtin database */
int load_builtin_param_int(char * name, void * engine_val, short int flags,
- int init_val, int upper_bound, int lower_bound, char * alt_name) {
+ int init_val, int upper_bound, int lower_bound, char * alt_name) {
param_t * param;
value_t iv, ub, lb;
iv.int_val = init_val;
ub.int_val = upper_bound;
- lb.int_val = lower_bound;
-
+ lb.int_val = lower_bound;
+
param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb);
if (param == NULL) {
}
if (insert_builtin_param(param) < 0) {
- free_param(param);
+ free_param(param);
return ERROR;
}
-
+
if (alt_name != NULL) {
- insert_param_alt_name(param, alt_name);
- }
-
+ insert_param_alt_name(param, alt_name);
+ }
+
return SUCCESS;
-}
-
+}
+
/* Loads a boolean parameter */
-int load_builtin_param_bool(char * name, void * engine_val, short int flags,
- int init_val, char * alt_name) {
+int load_builtin_param_bool(char * name, void * engine_val, short int flags,
+ int init_val, char * alt_name) {
param_t * param;
value_t iv, ub, lb;
iv.int_val = init_val;
ub.int_val = TRUE;
- lb.int_val = FALSE;
-
+ lb.int_val = FALSE;
+
param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb);
if (param == NULL) {
}
if (insert_builtin_param(param) < 0) {
- free_param(param);
+ free_param(param);
return ERROR;
}
-
+
if (alt_name != NULL) {
- insert_param_alt_name(param, alt_name);
- }
-
+ insert_param_alt_name(param, alt_name);
+ }
+
return SUCCESS;
}
-
+
/* Returns nonzero if the string is valid parameter name */
int is_valid_param_string(char * string) {
-
+
if (string == NULL)
return FALSE;
-
+
/* This ensures the first character is non numeric */
if( ((*string) >= 48) && ((*string) <= 57))
- return FALSE;
+ return FALSE;
/* These probably should never happen */
if (*string == '.')
- return FALSE;
-
+ return FALSE;
+
if (*string == '+')
- return FALSE;
-
+ return FALSE;
+
if (*string == '-')
- return FALSE;
-
+ return FALSE;
+
/* Could also add checks for other symbols. May do later */
-
+
return TRUE;
-
+
}
/* Inserts a parameter into the builtin database */
int insert_builtin_param(param_t * param) {
- if (param == NULL)
- return FAILURE;
-
- return splay_insert(param, param->name, builtin_param_tree);
+ if (param == NULL)
+ return FAILURE;
+
+ return splay_insert(param, param->name, builtin_param_tree);
}
/* Inserts a parameter into the builtin database */
int insert_param(param_t * param, splaytree_t * database) {
- if (param == NULL)
- return FAILURE;
- if (database == NULL)
- return FAILURE;
+ if (param == NULL)
+ return FAILURE;
+ if (database == NULL)
+ return FAILURE;
- return splay_insert(param, param->name, database);
+ return splay_insert(param, param->name, database);
}
/* Sets the parameter engine value to value val.
- clipping occurs if necessary */
+ clipping occurs if necessary */
void set_param(param_t * param, double val) {
- switch (param->type) {
-
- case P_TYPE_BOOL:
- if (val < 0)
- *((int*)param->engine_val) = 0;
- else if (val > 0)
- *((int*)param->engine_val) = 1;
- else
- *((int*)param->engine_val) = 0;
- break;
- case P_TYPE_INT:
- /* Make sure value is an integer */
- val = floor(val);
- if (val < param->lower_bound.int_val)
- *((int*)param->engine_val) = param->lower_bound.int_val;
- else if (val > param->upper_bound.int_val)
- *((int*)param->engine_val) = param->upper_bound.int_val;
- else
- *((int*)param->engine_val) = val;
- break;
- case P_TYPE_DOUBLE:
- /* Make sure value is an integer */
-
-
- if (val < param->lower_bound.double_val)
- *((double*)param->engine_val) = param->lower_bound.double_val;
- else if (val > param->upper_bound.double_val)
- *((double*)param->engine_val) = param->upper_bound.double_val;
- else
- *((double*)param->engine_val) = val;
- break;
- default:
- break;
-
- }
-
- return;
+ switch (param->type) {
+
+ case P_TYPE_BOOL:
+ if (val < 0)
+ *((int*)param->engine_val) = 0;
+ else if (val > 0)
+ *((int*)param->engine_val) = 1;
+ else
+ *((int*)param->engine_val) = 0;
+ break;
+ case P_TYPE_INT:
+ /* Make sure value is an integer */
+ val = floor(val);
+ if (val < param->lower_bound.int_val)
+ *((int*)param->engine_val) = param->lower_bound.int_val;
+ else if (val > param->upper_bound.int_val)
+ *((int*)param->engine_val) = param->upper_bound.int_val;
+ else
+ *((int*)param->engine_val) = val;
+ break;
+ case P_TYPE_DOUBLE:
+ /* Make sure value is an integer */
+
+
+ if (val < param->lower_bound.double_val)
+ *((double*)param->engine_val) = param->lower_bound.double_val;
+ else if (val > param->upper_bound.double_val)
+ *((double*)param->engine_val) = param->upper_bound.double_val;
+ else
+ *((double*)param->engine_val) = val;
+ break;
+ default:
+ break;
+
+ }
+
+ return;
}
-/* Search for parameter 'name' in 'database', if create_flag is true, then generate the parameter
+/* Search for parameter 'name' in 'database', if create_flag is true, then generate the parameter
and insert it into 'database' */
param_t * find_param_db(char * name, splaytree_t * database, int create_flag) {
return NULL;
if (database == NULL)
return NULL;
-
+
/* First look in the builtin database */
param = (param_t *)splay_find(name, database);
-
+
if (((param = (param_t *)splay_find(name, database)) == NULL) && (create_flag == TRUE)) {
-
- /* Check if string is valid */
- if (!is_valid_param_string(name))
- return NULL;
-
- /* Now, create the user defined parameter given the passed name */
- if ((param = create_user_param(name)) == NULL)
- return NULL;
-
- /* Finally, insert the new parameter into this preset's proper splaytree */
- if (splay_insert(param, param->name, database) < 0) {
- free_param(param);
- return NULL;
- }
-
- }
-
+
+ /* Check if string is valid */
+ if (!is_valid_param_string(name))
+ return NULL;
+
+ /* Now, create the user defined parameter given the passed name */
+ if ((param = create_user_param(name)) == NULL)
+ return NULL;
+
+ /* Finally, insert the new parameter into this preset's proper splaytree */
+ if (splay_insert(param, param->name, database) < 0) {
+ free_param(param);
+ return NULL;
+ }
+
+ }
+
/* Return the found (or created) parameter. Note that this could be null */
return param;
/* Function prototypes */
param_t * create_param (char * name, short int type, short int flags, void * eqn_val, void * matrix,
- value_t default_init_val, value_t upper_bound, value_t lower_bound);
+ value_t default_init_val, value_t upper_bound, value_t lower_bound);
param_t * create_user_param(char * name);
int init_builtin_param_db();
int init_user_param_db();
int insert_param(param_t * param, splaytree_t * database);
param_t * find_builtin_param(char * name);
param_t * new_param_double(char * name, short int flags, void * engine_val, void * matrix,
- double upper_bound, double lower_bound, double init_val);
+ double upper_bound, double lower_bound, double init_val);
param_t * new_param_int(char * name, short int flags, void * engine_val,
- int upper_bound, int lower_bound, int init_val);
+ int upper_bound, int lower_bound, int init_val);
param_t * new_param_bool(char * name, short int flags, void * engine_val,
- int upper_bound, int lower_bound, int init_val);
+ int upper_bound, int lower_bound, int init_val);
param_t * find_param_db(char * name, splaytree_t * database, int create_flag);
typedef union VALUE_T {
int bool_val;
int int_val;
- double double_val;
+ double double_val;
} value_t;
/* Parameter Type */
typedef struct PARAM_T {
char name[MAX_TOKEN_SIZE]; /* name of the parameter, not necessary but useful neverthless */
- short int type; /* parameter number type (int, bool, or double) */
- short int flags; /* read, write, user defined, etc */
+ short int type; /* parameter number type (int, bool, or double) */
+ short int flags; /* read, write, user defined, etc */
short int matrix_flag; /* for optimization purposes */
void * engine_val; /* pointer to the engine variable */
void * matrix; /* per pixel / per point matrix for this variable */
#define WAVE_INIT_STRING_LENGTH 4
/* Stores a line of a file as its being parsed */
-char string_line_buffer[STRING_LINE_SIZE];
+char string_line_buffer[STRING_LINE_SIZE];
/* The current position of the string line buffer (see above) */
int string_line_buffer_index = 0;
to the raw string */
token_t parseToken(FILE * fs, char * string) {
-
+
char c;
int i;
-
+
if (string != NULL)
memset(string, 0, MAX_TOKEN_SIZE);
-
+
/* Loop until a delimiter is found, or the maximum string size is found */
for (i = 0; i < MAX_TOKEN_SIZE;i++) {
c = fgetc(fs);
-
+
/* If the string line buffer is full, quit */
if (string_line_buffer_index == (STRING_LINE_SIZE - 1))
return tStringBufferFilled;
-
+
/* Otherwise add this character to the string line buffer */
string_line_buffer[string_line_buffer_index++] = c;
/* Now interpret the character */
switch (c) {
-
+
case '+':
- return tPlus;
+ return tPlus;
case '-':
return tMinus;
case '%':
return tMod;
case '/':
-
+
/* check for line comment here */
if ((c = fgetc(fs)) == '/') {
- while(1) {
- c = fgetc(fs);
- if (c == EOF) {
- line_mode = NORMAL_LINE_MODE;
- return tEOF;
- }
- if (c == '\n') {
- line_mode = NORMAL_LINE_MODE;
- return tEOL;
- }
- }
-
+ while(1) {
+ c = fgetc(fs);
+ if (c == EOF) {
+ line_mode = NORMAL_LINE_MODE;
+ return tEOF;
+ }
+ if (c == '\n') {
+ line_mode = NORMAL_LINE_MODE;
+ return tEOL;
+ }
+ }
+
}
-
+
/* Otherwise, just a regular division operator */
ungetc(c, fs);
return tDiv;
-
+
case '*':
return tMult;
case '|':
return tOr;
case '&':
return tAnd;
- case '(':
+ case '(':
return tLPr;
case ')':
return tRPr;
- case '[':
+ case '[':
return tLBr;
case ']':
return tRBr;
- case '=':
+ case '=':
return tEq;
// case '\r':
//break;
line_count = 1;
line_mode = NORMAL_LINE_MODE;
return tEOF;
-
- default:
+
+ default:
if (string != NULL)
- string[i] = c;
- }
-
+ string[i] = c;
+ }
+
}
-
- /* String reached maximum length, return special token error */
+
+ /* String reached maximum length, return special token error */
return tStringTooLong;
-
+
}
-/* Parse input in the form of "exp, exp, exp, ...)"
+/* Parse input in the form of "exp, exp, exp, ...)"
Returns a general expression list */
gen_expr_t ** parse_prefix_args(FILE * fs, int num_args, struct PRESET_T * preset) {
int i, j;
gen_expr_t ** expr_list; /* List of arguments to function */
gen_expr_t * gen_expr;
-
+
/* Malloc the expression list */
expr_list = (gen_expr_t**)malloc(sizeof(gen_expr_t*)*num_args);
-
+
/* Malloc failed */
if (expr_list == NULL)
return NULL;
-
-
+
+
i = 0;
while (i < num_args) {
/* Parse the ith expression in the list */
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
//if (PARSE_DEBUG) printf("parse_prefix_args: failed to get parameter # %d for function (LINE %d)\n", i+1, line_count);
- for (j = 0; j < i; j++)
- free_gen_expr(expr_list[j]);
+ for (j = 0; j < i; j++)
+ free_gen_expr(expr_list[j]);
free(expr_list);
return NULL;
}
/* Assign entry in expression list */
expr_list[i++] = gen_expr;
}
-
- //if (PARSE_DEBUG) printf("parse_prefix_args: finished parsing %d arguments (LINE %d)\n", num_args, line_count);
+
+ //if (PARSE_DEBUG) printf("parse_prefix_args: finished parsing %d arguments (LINE %d)\n", num_args, line_count);
/* Finally, return the resulting expression list */
return expr_list;
-
+
}
/* Parses a comment at the top of the file. Stops when left bracket is found */
char string[MAX_TOKEN_SIZE];
token_t token;
-
+
/* Process tokens until left bracket is found */
while ((token = parseToken(fs, string)) != tLBr) {
- if (token == tEOF)
+ if (token == tEOF)
return PARSE_ERROR;
}
/* Done, return success */
- return SUCCESS;
-}
+ return SUCCESS;
+}
/* Right Bracket is parsed by this function.
puts a new string into name */
token_t token;
if (name == NULL)
- return FAILURE;
+ return FAILURE;
if ((token = parseToken(fs, name)) != tRBr)
return PARSE_ERROR;
-
+
//if (PARSE_DEBUG) printf("parse_preset_name: parsed preset (name = \"%s\")\n", name);
-
+
return SUCCESS;
}
if (PARSE_DEBUG) printf("parse_per_pixel: per_pixel equation parsing start...(LINE %d)\n", line_count);
if (parseToken(fs, string) != tEq) { /* parse per pixel operator name */
- if (PARSE_DEBUG) printf("parse_per_pixel: equal operator expected after per pixel operator \"%s\", but not found (LINE %d)\n",
- string, line_count);
+ if (PARSE_DEBUG) printf("parse_per_pixel: equal operator expected after per pixel operator \"%s\", but not found (LINE %d)\n",
+ string, line_count);
return PARSE_ERROR;
}
-
+
/* Parse right side of equation as an expression */
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
if (PARSE_DEBUG) printf("parse_per_pixel: equation evaluated to null? (LINE %d)\n", line_count);
return PARSE_ERROR;
}
-
+
/* Add the per pixel equation */
if (add_per_pixel_eqn(string, gen_expr, preset) < 0) {
free_gen_expr(gen_expr);
token_t token;
init_cond_t * init_cond;
per_frame_eqn_t * per_frame_eqn;
-
+
/* Clear the string line buffer */
memset(string_line_buffer, 0, STRING_LINE_SIZE);
string_line_buffer_index = 0;
-
-
+
+
switch (token = parseToken(fs, eqn_string)) {
-
+
/* Invalid Cases */
case tRBr:
case tLPr:
case tOr:
case tAnd:
case tDiv:
-
+
// if (PARSE_DEBUG) printf("parse_line: invalid token found at start of line (LINE %d)\n", line_count);
/* Invalid token found, return a parse error */
return PARSE_ERROR;
-
-
+
+
case tEOL: /* Empty line */
line_mode = NORMAL_LINE_MODE;
return SUCCESS;
-
+
case tEOF: /* End of File */
line_mode = NORMAL_LINE_MODE;
line_count = 1;
return EOF;
-
+
case tSemiColon: /* Indicates end of expression */
return SUCCESS;
-
+
/* Valid Case, either an initial condition or equation should follow */
case tEq:
-
- /* CASE: PER FRAME INIT EQUATION */
+
+ /* CASE: PER FRAME INIT EQUATION */
if (!strncmp(eqn_string, PER_FRAME_INIT_STRING, PER_FRAME_INIT_STRING_LENGTH)) {
-
+
//if (PARSE_DEBUG) printf("parse_line: per frame init equation found...(LINE %d)\n", line_count);
-
+
/* Set the line mode to normal */
line_mode = NORMAL_LINE_MODE;
-
+
/* Parse the per frame equation */
if ((init_cond = parse_per_frame_init_eqn(fs, preset, NULL)) == NULL) {
- //if (PARSE_DEBUG) printf("parse_line: per frame init equation parsing failed (LINE %d)\n", line_count);
- return PARSE_ERROR;
- }
-
+ //if (PARSE_DEBUG) printf("parse_line: per frame init equation parsing failed (LINE %d)\n", line_count);
+ return PARSE_ERROR;
+ }
+
/* Insert the equation in the per frame equation tree */
if (splay_insert(init_cond, init_cond->param->name, preset->per_frame_init_eqn_tree) < 0) {
- //if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
- free_init_cond(init_cond); /* will free the gen expr too */
- return ERROR;
+ //if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
+ free_init_cond(init_cond); /* will free the gen expr too */
+ return ERROR;
}
-
-
- if (update_string_buffer(preset->per_frame_init_eqn_string_buffer,
- &preset->per_frame_init_eqn_string_index) < 0)
- { return FAILURE;}
-
+
+
+ if (update_string_buffer(preset->per_frame_init_eqn_string_buffer,
+ &preset->per_frame_init_eqn_string_index) < 0)
+ { return FAILURE;}
+
return SUCCESS;
-
+
}
- /* Per frame equation case */
+ /* Per frame equation case */
if (!strncmp(eqn_string, PER_FRAME_STRING, PER_FRAME_STRING_LENGTH)) {
-
+
/* Sometimes per frame equations are implicitly defined without the
- per_frame_ prefix. This informs the parser that one could follow */
+ per_frame_ prefix. This informs the parser that one could follow */
line_mode = PER_FRAME_LINE_MODE;
-
+
//if (PARSE_DEBUG) printf("parse_line: per frame equation found...(LINE %d)\n", line_count);
-
+
/* Parse the per frame equation */
if ((per_frame_eqn = parse_per_frame_eqn(fs, ++per_frame_eqn_count, preset)) == NULL) {
- if (PARSE_DEBUG) printf("parse_line: per frame equation parsing failed (LINE %d)\n", line_count);
- return PARSE_ERROR;
- }
-
+ if (PARSE_DEBUG) printf("parse_line: per frame equation parsing failed (LINE %d)\n", line_count);
+ return PARSE_ERROR;
+ }
+
/* Insert the equation in the per frame equation tree */
if (splay_insert(per_frame_eqn, &per_frame_eqn_count, preset->per_frame_eqn_tree) < 0) {
- if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
- free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */
- return ERROR;
+ if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
+ free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */
+ return ERROR;
}
-
- if (update_string_buffer(preset->per_frame_eqn_string_buffer,
- &preset->per_frame_eqn_string_index) < 0)
- return FAILURE;
-
-
-
+
+ if (update_string_buffer(preset->per_frame_eqn_string_buffer,
+ &preset->per_frame_eqn_string_index) < 0)
+ return FAILURE;
+
+
+
return SUCCESS;
-
+
}
-
+
/* Wavecode initial condition case */
if (!strncmp(eqn_string, WAVECODE_STRING, WAVECODE_STRING_LENGTH)) {
-
+
line_mode = CUSTOM_WAVE_WAVECODE_LINE_MODE;
- //if (PARSE_DEBUG)
+ //if (PARSE_DEBUG)
// printf("parse_line: wavecode prefix found: \"%s\"\n", eqn_string);
- // printf("string:%d\n", 5);
+ // printf("string:%d\n", 5);
- //SUPER MYSTERIO-BUG - Don't Remove
- printf("");
-
+ //SUPER MYSTERIO-BUG - Don't Remove
+ printf("");
+
return parse_wavecode(eqn_string, fs, preset);
}
-
+
/* Custom Wave Prefix */
- if ((!strncmp(eqn_string, WAVE_STRING, WAVE_STRING_LENGTH)) &&
- ((eqn_string[5] >= 48) && (eqn_string[5] <= 57))) {
-
+ if ((!strncmp(eqn_string, WAVE_STRING, WAVE_STRING_LENGTH)) &&
+ ((eqn_string[5] >= 48) && (eqn_string[5] <= 57))) {
+
// if (PARSE_DEBUG) printf("parse_line wave prefix found: \"%s\"\n", eqn_string);
-
+
return parse_wave(eqn_string, fs, preset);
-
+
}
-
-
+
+
/* Shapecode initial condition case */
if (!strncmp(eqn_string, SHAPECODE_STRING, SHAPECODE_STRING_LENGTH)) {
-
+
line_mode = CUSTOM_SHAPE_SHAPECODE_LINE_MODE;
-
+
if (PARSE_DEBUG) printf("parse_line: shapecode prefix found: \"%s\"\n", eqn_string);
-
+
return parse_shapecode(eqn_string, fs, preset);
}
-
+
/* Custom Shape Prefix */
- if ((!strncmp(eqn_string, SHAPE_STRING, SHAPE_STRING_LENGTH)) &&
- ((eqn_string[6] >= 48) && (eqn_string[6] <= 57))) {
-
+ if ((!strncmp(eqn_string, SHAPE_STRING, SHAPE_STRING_LENGTH)) &&
+ ((eqn_string[6] >= 48) && (eqn_string[6] <= 57))) {
+
if (PARSE_DEBUG) printf("parse_line shape prefix found: \"%s\"\n", eqn_string);
return parse_shape(eqn_string, fs, preset);
-
+
}
-
+
/* Per pixel equation case */
if (!strncmp(eqn_string, PER_PIXEL_STRING, PER_PIXEL_STRING_LENGTH)) {
line_mode = PER_PIXEL_LINE_MODE;
-
+
if (parse_per_pixel_eqn(fs, preset) < 0)
- return PARSE_ERROR;
-
-
- if (update_string_buffer(preset->per_pixel_eqn_string_buffer,
- &preset->per_pixel_eqn_string_index) < 0)
- return FAILURE;
-
+ return PARSE_ERROR;
+
+
+ if (update_string_buffer(preset->per_pixel_eqn_string_buffer,
+ &preset->per_pixel_eqn_string_index) < 0)
+ return FAILURE;
+
if (PARSE_DEBUG) printf("parse_line: finished parsing per pixel equation (LINE %d)\n", line_count);
return SUCCESS;
- }
-
+ }
+
/* Sometimes equations are written implicitly in milkdrop files, in the form
-
- per_frame_1 = p1 = eqn1; p2 = eqn2; p3 = eqn3;..;
-
+
+ per_frame_1 = p1 = eqn1; p2 = eqn2; p3 = eqn3;..;
+
which is analagous to:
-
+
per_frame_1 = p1 = eqn1; per_frame_2 = p2 = eqn2; per_frame_3 = p3 = eqn3; ...;
-
- The following line mode hack allows such implicit declaration of the
+
+ The following line mode hack allows such implicit declaration of the
prefix that specifies the equation type. An alternative method
may be to associate each equation line as list of equations separated
by semicolons (and a new line ends the list). Instead, however, a global
variable called "line_mode" specifies the last type of equation found,
and bases any implicitly typed input on this fact
-
+
Note added by Carmelo Piccione (cep@andrew.cmu.edu) 10/19/03
*/
-
+
/* Per frame line mode previously, try to parse the equation implicitly */
if (line_mode == PER_FRAME_LINE_MODE) {
if ((per_frame_eqn = parse_implicit_per_frame_eqn(fs, eqn_string, ++per_frame_eqn_count, preset)) == NULL)
- return PARSE_ERROR;
-
+ return PARSE_ERROR;
+
/* Insert the equation in the per frame equation tree */
if (splay_insert(per_frame_eqn, &per_frame_eqn_count, preset->per_frame_eqn_tree) < 0) {
- if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
- free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */
- return ERROR;
+ if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n");
+ free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */
+ return ERROR;
}
-
-
- if (update_string_buffer(preset->per_frame_eqn_string_buffer,
- &preset->per_frame_eqn_string_index) < 0)
- return FAILURE;
-
-
-
+
+
+ if (update_string_buffer(preset->per_frame_eqn_string_buffer,
+ &preset->per_frame_eqn_string_index) < 0)
+ return FAILURE;
+
+
+
return SUCCESS;
}
-
+
//if (PARSE_DEBUG) printf("parse_line: found initial condition: name = \"%s\" (LINE %d)\n", eqn_string, line_count);
-
+
/* Evaluate the initial condition */
if ((init_cond = parse_init_cond(fs, eqn_string, preset)) == NULL) {
if (PARSE_DEBUG) printf("parse_line: failed to parse initial condition (LINE %d)\n", line_count);
- return PARSE_ERROR;
- }
-
+ return PARSE_ERROR;
+ }
+
/* Add equation to initial condition tree */
if (splay_insert(init_cond, init_cond->param->name, preset->init_cond_tree) < 0) {
- if (PARSE_DEBUG) printf("parse_line: failed to add initial condition \"%s\" to equation tree (LINE %d)\n",
- init_cond->param->name, line_count);
+ if (PARSE_DEBUG) printf("parse_line: failed to add initial condition \"%s\" to equation tree (LINE %d)\n",
+ init_cond->param->name, line_count);
free_init_cond(init_cond);
return FAILURE;
}
-
+
/* Finished with initial condition line */
// if (PARSE_DEBUG) printf("parse_line: initial condition parsed successfully\n");
-
+
return SUCCESS;
-
+
/* END INITIAL CONDITIONING PARSING */
-
-
+
+
default: /* an uncaught type or an error has occurred */
- if (PARSE_DEBUG) printf("parse_line: uncaught case, token val = %d\n", token);
+ if (PARSE_DEBUG) printf("parse_line: uncaught case, token val = %d\n", token);
return PARSE_ERROR;
}
-
- /* Because of the default in the case statement,
- control flow should never actually reach here */
+
+ /* Because of the default in the case statement,
+ control flow should never actually reach here */
return PARSE_ERROR;
}
/* Parses a general expression, this function is the meat of the parser */
gen_expr_t * parse_gen_expr (FILE * fs, tree_expr_t * tree_expr, struct PRESET_T * preset) {
-
+
int i;
char string[MAX_TOKEN_SIZE];
token_t token;
switch (token = parseToken(fs,string)) {
/* Left Parentice Case */
case tLPr:
-
+
/* CASE 1 (Left Parentice): See if the previous string before this parentice is a function name */
if ((func = find_func(string)) != NULL) {
if (PARSE_DEBUG) printf("parse_gen_expr: found prefix function (name = %s) (LINE %d)\n", func->name, line_count);
-
+
/* Parse the functions arguments */
if ((expr_list = parse_prefix_args(fs, func->num_args, preset)) == NULL) {
- if (PARSE_DEBUG) printf("parse_prefix_args: failed to generate an expresion list! (LINE %d) \n", line_count);
- free_tree_expr(tree_expr);
- return NULL;
+ if (PARSE_DEBUG) printf("parse_prefix_args: failed to generate an expresion list! (LINE %d) \n", line_count);
+ free_tree_expr(tree_expr);
+ return NULL;
}
-
+
/* Convert function to expression */
- if ((gen_expr = prefun_to_expr((void*)func->func_ptr, expr_list, func->num_args)) == NULL) {
- if (PARSE_DEBUG) printf("parse_prefix_args: failed to convert prefix function to general expression (LINE %d) \n",
- line_count);
- free_tree_expr(tree_expr);
- for (i = 0; i < func->num_args;i++)
- free_gen_expr(expr_list[i]);
- free(expr_list);
- return NULL;
+ if ((gen_expr = prefun_to_expr((void*)func->func_ptr, expr_list, func->num_args)) == NULL) {
+ if (PARSE_DEBUG) printf("parse_prefix_args: failed to convert prefix function to general expression (LINE %d) \n",
+ line_count);
+ free_tree_expr(tree_expr);
+ for (i = 0; i < func->num_args;i++)
+ free_gen_expr(expr_list[i]);
+ free(expr_list);
+ return NULL;
}
-
-
-
+
+
+
token = parseToken(fs, string);
if (*string != 0) {
- if (PARSE_DEBUG) printf("parse_prefix_args: empty string expected, but not found...(LINE %d)\n", line_count);
- /* continue anyway for now, could be implicit multiplication */
- }
-
+ if (PARSE_DEBUG) printf("parse_prefix_args: empty string expected, but not found...(LINE %d)\n", line_count);
+ /* continue anyway for now, could be implicit multiplication */
+ }
+
return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
}
-
-
- /* Case 2: (Left Parentice), a string coupled with a left parentice. Either an error or implicit
+
+
+ /* Case 2: (Left Parentice), a string coupled with a left parentice. Either an error or implicit
multiplication operator. For now treat it as an error */
if (*string != 0) {
if (PARSE_DEBUG) printf("parse_gen_expr: implicit multiplication case unimplemented!\n");
free_tree_expr(tree_expr);
return NULL;
}
-
+
/* CASE 3 (Left Parentice): the following is enclosed parentices to change order
of operations. So we create a new expression tree */
-
+
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
//if (PARSE_DEBUG) printf("parse_gen_expr: found left parentice, but failed to create new expression tree \n");
free_tree_expr(tree_expr);
return NULL;
}
-
- if (PARSE_DEBUG) printf("parse_gen_expr: finished enclosed expression tree...\n");
+
+ if (PARSE_DEBUG) printf("parse_gen_expr: finished enclosed expression tree...\n");
token = parseToken(fs, string);
return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
/* Plus is a prefix operator check */
case tPlus:
if (*string == 0) {
-
+
//if (PARSE_DEBUG) printf("parse_gen_expr: plus used as prefix (LINE %d)\n", line_count);
- /* Treat prefix plus as implict 0 preceding operator */
+ /* Treat prefix plus as implict 0 preceding operator */
gen_expr = const_to_expr(0);
- return parse_infix_op(fs, tPositive, insert_gen_expr(gen_expr, &tree_expr), preset);
+ return parse_infix_op(fs, tPositive, insert_gen_expr(gen_expr, &tree_expr), preset);
}
-
+
/* Minus is a prefix operator check */
case tMinus:
if (*string == 0) {
-
+
/* Use the negative infix operator, but first add an implicit zero to the operator tree */
gen_expr = const_to_expr(0);
//return parse_gen_expr(fs, insert_gen_expr(gen_expr, &tree_expr), preset);
- return parse_infix_op(fs, tNegative, insert_gen_expr(gen_expr, &tree_expr), preset);
+ return parse_infix_op(fs, tNegative, insert_gen_expr(gen_expr, &tree_expr), preset);
}
-
+
/* All the following cases are strings followed by an infix operator or terminal */
case tRPr:
- case tEOL:
+ case tEOL:
case tEOF:
case tSemiColon:
case tComma:
-
+
/* CASE 1 (terminal): string is empty, but not null. Not sure if this will actually happen
any more. */
if (*string == 0) {
//if (PARSE_DEBUG) printf("parse_gen_expr: empty string coupled with terminal (LINE %d) \n", line_count);
return parse_infix_op(fs, token, tree_expr, preset);
-
+
}
-
- default:
+
+ default:
/* CASE 0: Empty string, parse error */
if (*string == 0) {
/* CASE 1: Check if string is a just a floating point number */
if (string_to_float(string, &val) != PARSE_ERROR) {
if ((gen_expr = const_to_expr(val)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
+ free_tree_expr(tree_expr);
+ return NULL;
}
-
+
/* Parse the rest of the line */
- return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
-
+ return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
+
}
-
+
/* CASE 4: custom shape variable */
if (current_shape != NULL) {
if ((param = find_param_db(string, current_shape->param_tree, FALSE)) == NULL) {
- if ((param = find_builtin_param(string)) == NULL)
- if ((param = find_param_db(string, current_shape->param_tree, TRUE)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
- }
+ if ((param = find_builtin_param(string)) == NULL)
+ if ((param = find_param_db(string, current_shape->param_tree, TRUE)) == NULL) {
+ free_tree_expr(tree_expr);
+ return NULL;
}
-
+ }
+
if (PARSE_DEBUG) {
- printf("parse_gen_expr: custom shape parameter (name = %s)... ", param->name);
- fflush(stdout);
- }
-
+ printf("parse_gen_expr: custom shape parameter (name = %s)... ", param->name);
+ fflush(stdout);
+ }
+
/* Convert parameter to an expression */
if ((gen_expr = param_to_expr(param)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
+ free_tree_expr(tree_expr);
+ return NULL;
}
-
+
//if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count);
-
+
/* Parse the rest of the line */
return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
}
-
+
/* CASE 5: custom wave variable */
if (current_wave != NULL) {
if ((param = find_param_db(string, current_wave->param_tree, FALSE)) == NULL) {
- if ((param = find_builtin_param(string)) == NULL)
- if ((param = find_param_db(string, current_wave->param_tree, TRUE)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
- }
-
+ if ((param = find_builtin_param(string)) == NULL)
+ if ((param = find_param_db(string, current_wave->param_tree, TRUE)) == NULL) {
+ free_tree_expr(tree_expr);
+ return NULL;
+ }
+
}
if (PARSE_DEBUG) {
- printf("parse_gen_expr: custom wave parameter (name = %s)... ", param->name);
- fflush(stdout);
+ printf("parse_gen_expr: custom wave parameter (name = %s)... ", param->name);
+ fflush(stdout);
}
-
- /* Convert parameter to an expression */
- if ((gen_expr = param_to_expr(param)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
- }
-
- if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count);
-
- /* Parse the rest of the line */
- return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
-
+
+ /* Convert parameter to an expression */
+ if ((gen_expr = param_to_expr(param)) == NULL) {
+ free_tree_expr(tree_expr);
+ return NULL;
+ }
+
+ if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count);
+
+ /* Parse the rest of the line */
+ return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
+
}
/* CASE 6: regular parameter. Will be created if necessary and the string has no invalid characters */
if ((param = find_param(string, preset, P_CREATE)) != NULL) {
-
+
if (PARSE_DEBUG) {
- printf("parse_gen_expr: parameter (name = %s)... ", param->name);
- fflush(stdout);
- }
-
- /* Convert parameter to an expression */
+ printf("parse_gen_expr: parameter (name = %s)... ", param->name);
+ fflush(stdout);
+ }
+
+ /* Convert parameter to an expression */
if ((gen_expr = param_to_expr(param)) == NULL) {
- free_tree_expr(tree_expr);
- return NULL;
+ free_tree_expr(tree_expr);
+ return NULL;
}
-
+
if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count);
-
+
/* Parse the rest of the line */
return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset);
-
+
}
-
+
/* CASE 7: Bad string, give up */
if (PARSE_DEBUG) printf("parse_gen_expr: syntax error [string = \"%s\"] (LINE %d)\n", string, line_count);
free_tree_expr(tree_expr);
return NULL;
}
}
-
+
/* Inserts expressions into tree according to operator precedence.
tree_expr_t * insert_infix_op(infix_op_t * infix_op, tree_expr_t **root) {
tree_expr_t * new_root;
-
+
/* Sanity check */
if (infix_op == NULL)
return NULL;
-
+
/* The root is null, so make this operator
the new root */
-
+
if (*root == NULL) {
new_root = new_tree_expr(infix_op, NULL, NULL, NULL);
*root = new_root;
- return new_root;
+ return new_root;
}
-
+
/* The root node is not an infix function,
- so we make this infix operator the new root */
-
+ so we make this infix operator the new root */
+
if ((*root)->infix_op == NULL) {
new_root = new_tree_expr(infix_op, NULL, *root, NULL);
(*root) = new_root;
return new_root;
}
-
+
/* The root is an infix function. If the precedence
of the item to be inserted is greater than the root's
precedence, then make gen_expr the root */
-
+
if (infix_op->precedence > (*root)->infix_op->precedence) {
new_root = new_tree_expr(infix_op, NULL, *root, NULL);
(*root) = new_root;
return new_root;
}
-
+
/* If control flow reaches here, use a recursive helper
with the knowledge that the root is higher precedence
than the item to be inserted */
-
+
insert_infix_rec(infix_op, *root);
return *root;
-
+
}
tree_expr_t * insert_gen_expr(gen_expr_t * gen_expr, tree_expr_t ** root) {
tree_expr_t * new_root;
-
+
/* If someone foolishly passes a null
pointer to insert, return the original tree */
-
+
if (gen_expr == NULL) {
return *root;
}
/* If the root is null, generate a new expression tree,
using the passed expression as the root element */
-
+
if (*root == NULL) {
new_root = new_tree_expr(NULL, gen_expr, NULL, NULL);
*root = new_root;
return new_root;
}
-
-
+
+
/* Otherwise. the new element definitely will not replace the current root.
Use a recursive helper function to do insertion */
/* A recursive helper function to insert general expression elements into the operator tree */
int insert_gen_rec(gen_expr_t * gen_expr, tree_expr_t * root) {
-
+
/* Trivial Case: root is null */
-
+
if (root == NULL) {
////if (PARSE_DEBUG) printf("insert_gen_rec: root is null, returning failure\n");
return FAILURE;
}
-
-
+
+
/* The current node's left pointer is null, and this
current node is an infix operator, so insert the
general expression at the left pointer */
-
+
if ((root->left == NULL) && (root->infix_op != NULL)) {
root->left = new_tree_expr(NULL, gen_expr, NULL, NULL);
return SUCCESS;
}
-
+
/* The current node's right pointer is null, and this
current node is an infix operator, so insert the
general expression at the right pointer */
-
+
if ((root->right == NULL) && (root->infix_op != NULL)) {
root->right = new_tree_expr(NULL, gen_expr, NULL, NULL);
return SUCCESS;
}
-
+
/* Otherwise recurse down to the left. If
this succeeds then return. If it fails, try
recursing down to the right */
-
- if (insert_gen_rec(gen_expr, root->left) == FAILURE)
+
+ if (insert_gen_rec(gen_expr, root->left) == FAILURE)
return insert_gen_rec(gen_expr, root->right);
/* Impossible for control flow to reach here, but in
the world of C programming, who knows... */
- //if (PARSE_DEBUG) printf("insert_gen_rec: should never reach here!\n");
- return FAILURE;
-}
+ //if (PARSE_DEBUG) printf("insert_gen_rec: should never reach here!\n");
+ return FAILURE;
+}
/* A recursive helper function to insert infix arguments by operator precedence */
if (root == NULL)
return FAILURE;
-
+
/* Also shouldn't happen, also implies a (different) parse error */
if (root->infix_op == NULL)
return FAILURE;
- /* Left tree is empty, attach this operator to it.
+ /* Left tree is empty, attach this operator to it.
I don't think this will ever happen */
if (root->left == NULL) {
root->left = new_tree_expr(infix_op, NULL, root->left, NULL);
root->right = new_tree_expr(infix_op, NULL, root->right, NULL);
return SUCCESS;
}
-
+
/* Traverse deeper if the inserting operator precedence is less than the
the root's right operator precedence */
- if (infix_op->precedence < root->right->infix_op->precedence)
+ if (infix_op->precedence < root->right->infix_op->precedence)
return insert_infix_rec(infix_op, root->right);
/* Otherwise, insert the operator here */
-
+
root->right = new_tree_expr(infix_op, NULL, root->right, NULL);
return SUCCESS;
/* Parses an infix operator */
gen_expr_t * parse_infix_op(FILE * fs, token_t token, tree_expr_t * tree_expr, struct PRESET_T * preset) {
-
+
gen_expr_t * gen_expr;
switch (token) {
- /* All the infix operators */
+ /* All the infix operators */
case tPlus:
//if (PARSE_DEBUG) printf("parse_infix_op: found addition operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_add, &tree_expr), preset);
//if (PARSE_DEBUG) printf("parse_infix_op: found multiplication operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_mult, &tree_expr), preset);
case tDiv:
- //if (PARSE_DEBUG) printf("parse_infix_op: found division operator (LINE %d)\n", line_count);
+ //if (PARSE_DEBUG) printf("parse_infix_op: found division operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_div, &tree_expr), preset);
case tMod:
- //if (PARSE_DEBUG) printf("parse_infix_op: found modulo operator (LINE %d)\n", line_count);
+ //if (PARSE_DEBUG) printf("parse_infix_op: found modulo operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_mod, &tree_expr), preset);
- case tOr:
- //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise or operator (LINE %d)\n", line_count);
+ case tOr:
+ //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise or operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_or, &tree_expr), preset);
- case tAnd:
- //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise and operator (LINE %d)\n", line_count);
+ case tAnd:
+ //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise and operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_and, &tree_expr), preset);
case tPositive:
- //if (PARSE_DEBUG) printf("parse_infix_op: found positive operator (LINE %d)\n", line_count);
+ //if (PARSE_DEBUG) printf("parse_infix_op: found positive operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_positive, &tree_expr), preset);
case tNegative:
- //if (PARSE_DEBUG) printf("parse_infix_op: found negative operator (LINE %d)\n", line_count);
+ //if (PARSE_DEBUG) printf("parse_infix_op: found negative operator (LINE %d)\n", line_count);
return parse_gen_expr(fs, insert_infix_op(infix_negative, &tree_expr), preset);
case tEOL:
case tEOF:
case tSemiColon:
case tRPr:
- case tComma:
- //if (PARSE_DEBUG) printf("parse_infix_op: terminal found (LINE %d)\n", line_count);
- gen_expr = new_gen_expr(TREE_T, (void*)tree_expr);
- return gen_expr;
+ case tComma:
+ //if (PARSE_DEBUG) printf("parse_infix_op: terminal found (LINE %d)\n", line_count);
+ gen_expr = new_gen_expr(TREE_T, (void*)tree_expr);
+ return gen_expr;
default:
//if (PARSE_DEBUG) printf("parse_infix_op: operator or terminal expected, but not found (LINE %d)\n", line_count);
free_tree_expr(tree_expr);
return NULL;
- }
+ }
/* Will never happen */
return NULL;
-
+
}
/* Parses an integer, checks for +/- prefix */
token_t token;
int sign;
char * end_ptr = " ";
-
+
token = parseToken(fs, string);
switch (token) {
case tMinus:
sign = -1;
- token = parseToken(fs, string);
+ token = parseToken(fs, string);
break;
case tPlus:
sign = 1;
token = parseToken(fs, string);
break;
- default:
+ default:
sign = 1;
break;
}
- if (string[0] == 0)
+ if (string[0] == 0)
return PARSE_ERROR;
-
+
/* Convert the string to an integer. *end_ptr
- should end up pointing to null terminator of 'string'
+ should end up pointing to null terminator of 'string'
if the conversion was successful. */
// printf("STRING: \"%s\"\n", string);
(*int_ptr) = sign*strtol(string, &end_ptr, 10);
/* If end pointer is a return character or null terminator, all is well */
- if ((*end_ptr == '\r') || (*end_ptr == '\0'))
+ if ((*end_ptr == '\r') || (*end_ptr == '\0'))
return SUCCESS;
return PARSE_ERROR;
-
+
}
/* Parses a floating point number */
int string_to_float(char * string, double * float_ptr) {
return PARSE_ERROR;
error_ptr = malloc(sizeof(char**));
-
+
(*float_ptr) = strtod(string, error_ptr);
/* These imply a succesful parse of the string */
free(error_ptr);
return SUCCESS;
}
-
+
(*float_ptr) = 0;
free(error_ptr);
- return PARSE_ERROR;
+ return PARSE_ERROR;
}
/* Parses a floating point number */
char ** error_ptr;
token_t token;
int sign;
-
+
error_ptr = malloc(sizeof(char**));
token = parseToken(fs, string);
switch (token) {
case tMinus:
sign = -1;
- token = parseToken(fs, string);
+ token = parseToken(fs, string);
break;
case tPlus:
sign = 1;
token = parseToken(fs, string);
break;
- default:
- sign = 1;
+ default:
+ sign = 1;
}
if (string[0] == 0) {
free(error_ptr);
return SUCCESS;
}
-
+
//if (PARSE_DEBUG) printf("parse_float: double conversion failed for string \"%s\"\n", string);
(*float_ptr) = 0;
free(error_ptr);
return PARSE_ERROR;
-
+
-
+
}
/* Parses a per frame equation. That is, interprets a stream of data as a per frame equation */
per_frame_eqn_t * parse_per_frame_eqn(FILE * fs, int index, struct PRESET_T * preset) {
-
+
char string[MAX_TOKEN_SIZE];
param_t * param;
per_frame_eqn_t * per_frame_eqn;
gen_expr_t * gen_expr;
-
+
if (parseToken(fs, string) != tEq) {
//if (PARSE_DEBUG) printf("parse_per_frame_eqn: no equal sign after string \"%s\" (LINE %d)\n", string, line_count);
- return NULL;
+ return NULL;
}
-
+
/* Find the parameter associated with the string, create one if necessary */
- if ((param = find_param(string, preset, P_CREATE)) == NULL) {
- return NULL;
+ if ((param = find_param(string, preset, P_CREATE)) == NULL) {
+ return NULL;
}
-
+
/* Make sure parameter is writable */
if (param->flags & P_FLAG_READONLY) {
- //if (PARSE_DEBUG) printf("parse_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
+ //if (PARSE_DEBUG) printf("parse_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
return NULL;
}
-
+
/* Parse right side of equation as an expression */
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
//if (PARSE_DEBUG) printf("parse_per_frame_eqn: equation evaluated to null (LINE %d)\n", line_count);
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_per_frame_eqn: finished per frame equation evaluation (LINE %d)\n", line_count);
-
+
/* Create a new per frame equation */
if ((per_frame_eqn = new_per_frame_eqn(index, param, gen_expr)) == NULL) {
//if (PARSE_DEBUG) printf("parse_per_frame_eqn: failed to create a new per frame eqn, out of memory?\n");
free_gen_expr(gen_expr);
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_per_frame_eqn: per_frame eqn parsed succesfully\n");
-
+
return per_frame_eqn;
}
/* Parses an 'implicit' per frame equation. That is, interprets a stream of data as a per frame equation without a prefix */
per_frame_eqn_t * parse_implicit_per_frame_eqn(FILE * fs, char * param_string, int index, struct PRESET_T * preset) {
-
+
param_t * param;
per_frame_eqn_t * per_frame_eqn;
gen_expr_t * gen_expr;
-
+
if (fs == NULL)
return NULL;
if (param_string == NULL)
//rintf("param string: %s\n", param_string);
/* Find the parameter associated with the string, create one if necessary */
- if ((param = find_param(param_string, preset, P_CREATE)) == NULL) {
- return NULL;
+ if ((param = find_param(param_string, preset, P_CREATE)) == NULL) {
+ return NULL;
}
-
+
//printf("parse_implicit_per_frame_eqn: param is %s\n", param->name);
/* Make sure parameter is writable */
if (param->flags & P_FLAG_READONLY) {
- //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
+ //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
return NULL;
}
-
+
/* Parse right side of equation as an expression */
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
//if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: equation evaluated to null (LINE %d)\n", line_count);
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: finished per frame equation evaluation (LINE %d)\n", line_count);
-
+
/* Create a new per frame equation */
if ((per_frame_eqn = new_per_frame_eqn(index, param, gen_expr)) == NULL) {
//if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: failed to create a new per frame eqn, out of memory?\n");
free_gen_expr(gen_expr);
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: per_frame eqn parsed succesfully\n");
-
+
return per_frame_eqn;
}
param_t * param;
value_t init_val;
init_cond_t * init_cond;
-
+
if (name == NULL)
return NULL;
if (preset == NULL)
return NULL;
-
+
/* Search for the paramater in the database, creating it if necessary */
if ((param = find_param(name, preset, P_CREATE)) == NULL) {
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_init_cond: parameter = \"%s\" (LINE %d)\n", param->name, line_count);
-
+
if (param->flags & P_FLAG_READONLY) {
//if (PARSE_DEBUG) printf("parse_init_cond: builtin parameter \"%s\" marked as read only!\n", param->name);
return NULL;
- }
-
+ }
+
/* At this point, a parameter has been created or was found
in the database. */
-
+
//if (PARSE_DEBUG) printf("parse_init_cond: parsing initial condition value... (LINE %d)\n", line_count);
-
+
/* integer value (boolean is an integer in C) */
if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) {
- if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
+ if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
//if (PARSE_DEBUG) printf("parse_init_cond: error parsing integer!\n");
return NULL;
}
}
-
+
/* double value */
else if (param->type == P_TYPE_DOUBLE) {
if ((parse_float(fs, (double*)&init_val.double_val)) == PARSE_ERROR) {
return NULL;
}
}
-
+
/* Unknown value */
else {
//if (PARSE_DEBUG) printf("parse_init_cond: unknown parameter type!\n");
return NULL;
}
-
+
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL) {
//if (PARSE_DEBUG) printf("parse_init_cond: new_init_cond failed!\n");
return NULL;
}
-
+
/* Finished */
return init_cond;
}
/* Parses a per frame init equation, not sure if this works right now */
init_cond_t * parse_per_frame_init_eqn(FILE * fs, struct PRESET_T * preset, splaytree_t * database) {
-
+
char name[MAX_TOKEN_SIZE];
param_t * param = NULL;
value_t init_val;
if ((token = parseToken(fs, name)) != tEq)
return NULL;
-
+
/* If a database was specified,then use find_param_db instead */
if ((database != NULL) && ((param = find_param_db(name, database, TRUE)) == NULL)) {
if ((param == NULL) && ((param = find_param(name, preset, P_CREATE)) == NULL)) {
return NULL;
}
-
+
//if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: parameter = \"%s\" (LINE %d)\n", param->name, line_count);
-
+
if (param->flags & P_FLAG_READONLY) {
//if (PARSE_DEBUG) printf("pars_per_frame_init_eqn: builtin parameter \"%s\" marked as read only!\n", param->name);
return NULL;
- }
-
+ }
+
/* At this point, a parameter has been created or was found
in the database. */
-
+
//if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: parsing right hand side of per frame init equation.. (LINE %d)\n", line_count);
-
+
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
//if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: failed to parse general expresion!\n");
return NULL;
/* Compute initial condition value */
val = eval_gen_expr(gen_expr);
-
+
/* Free the general expression now that we are done with it */
free_gen_expr(gen_expr);
if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) {
init_val.int_val = (int)val;
}
-
+
/* double value */
else if (param->type == P_TYPE_DOUBLE) {
init_val.double_val = val;
}
-
+
/* Unknown value */
else {
//if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: unknown parameter type!\n");
return NULL;
}
-
+
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL) {
return FAILURE;
/* token should be in the form wavecode_N_var, such as wavecode_1_samples */
-
+
/* Get id and variable name from token string */
- if (parse_wavecode_prefix(token, &id, &var_string) < 0)
+ if (parse_wavecode_prefix(token, &id, &var_string) < 0)
return PARSE_ERROR;
-
+
//if (PARSE_DEBUG) printf("parse_wavecode: wavecode id = %d, parameter = \"%s\"\n", id, var_string);
/* Retrieve custom wave information from preset. The 3rd argument
/* integer value (boolean is an integer in C) */
if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) {
- if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
+ if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
//if (PARSE_DEBUG) printf("parse_wavecode: error parsing integer!\n");
return PARSE_ERROR;
}
}
-
+
/* double value */
else if (param->type == P_TYPE_DOUBLE) {
if ((parse_float(fs, (double*)&init_val.double_val)) == PARSE_ERROR) {
return PARSE_ERROR;
}
}
-
+
/* Unknown value */
else {
//if (PARSE_DEBUG) printf("parse_wavecode: unknown parameter type!\n");
return PARSE_ERROR;
}
-
+
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL) {
//if (PARSE_DEBUG) printf("parse_wavecode: new_init_cond failed!\n");
return FAILURE;
}
-
+
if (splay_insert(init_cond, param->name, custom_wave->init_cond_tree) < 0) {
free_init_cond(init_cond);
return PARSE_ERROR;
return FAILURE;
/* token should be in the form shapecode_N_var, such as shapecode_1_samples */
-
+
/* Get id and variable name from token string */
- if (parse_shapecode_prefix(token, &id, &var_string) < 0)
+ if (parse_shapecode_prefix(token, &id, &var_string) < 0)
return PARSE_ERROR;
-
+
//if (PARSE_DEBUG) printf("parse_shapecode: shapecode id = %d, parameter = \"%s\"\n", id, var_string);
/* Retrieve custom shape information from preset. The 3rd argument
/* integer value (boolean is an integer in C) */
if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) {
- if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
+ if ((parse_int(fs, (int*)&init_val.int_val)) == PARSE_ERROR) {
//if (PARSE_DEBUG) printf("parse_shapecode: error parsing integer!\n");
return PARSE_ERROR;
}
}
-
+
/* double value */
else if (param->type == P_TYPE_DOUBLE) {
if ((parse_float(fs, (double*)&init_val.double_val)) == PARSE_ERROR) {
return PARSE_ERROR;
}
}
-
+
/* Unknown value */
else {
//if (PARSE_DEBUG) printf("parse_shapecode: unknown parameter type!\n");
return PARSE_ERROR;
}
-
+
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL) {
//if (PARSE_DEBUG) printf("parse_shapecode: new_init_cond failed!\n");
int parse_wavecode_prefix(char * token, int * id, char ** var_string) {
int len, i, j;
-
+
if (token == NULL)
return FAILURE;
if (*var_string == NULL)
return FAILURE;
if (id == NULL)
return FAILURE;
-
+
len = strlen(token);
/* Move pointer passed "wavecode_" prefix */
i = WAVECODE_STRING_LENGTH;
j = 0;
(*id) = 0;
-
+
/* This loop grabs the integer id for this custom wave */
while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) {
if (j >= MAX_TOKEN_SIZE)
return FAILURE;
-
+
(*id) = 10*(*id) + (token[i]-48);
j++;
i++;
if (i > (len - 2))
return FAILURE;
-
+
*var_string = token + i + 1;
return SUCCESS;
int parse_shapecode_prefix(char * token, int * id, char ** var_string) {
int len, i, j;
-
+
if (token == NULL)
return FAILURE;
if (*var_string == NULL)
return FAILURE;
if (id == NULL)
return FAILURE;
-
+
len = strlen(token);
/* Move pointer passed "shapecode_" prefix */
i = SHAPECODE_STRING_LENGTH;
j = 0;
(*id) = 0;
-
+
/* This loop grabs the integer id for this custom shape */
while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) {
if (j >= MAX_TOKEN_SIZE)
return FAILURE;
-
+
(*id) = 10*(*id) + (token[i]-48);
j++;
i++;
if (i > (len - 2))
return FAILURE;
-
+
*var_string = token + i + 1;
return SUCCESS;
int parse_wave_prefix(char * token, int * id, char ** eqn_string) {
int len, i, j;
-
+
if (token == NULL)
return FAILURE;
if (eqn_string == NULL)
return FAILURE;
if (id == NULL)
return FAILURE;
-
+
len = strlen(token);
if (len <= WAVE_STRING_LENGTH)
i = WAVE_STRING_LENGTH;
j = 0;
(*id) = 0;
-
+
/* This loop grabs the integer id for this custom wave */
while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) {
if (j >= MAX_TOKEN_SIZE)
return FAILURE;
-
+
(*id) = 10*(*id) + (token[i]-48);
j++;
i++;
int parse_shape_prefix(char * token, int * id, char ** eqn_string) {
int len, i, j;
-
+
if (token == NULL)
return FAILURE;
if (eqn_string == NULL)
return FAILURE;
if (id == NULL)
return FAILURE;
-
+
len = strlen(token);
if (len <= SHAPE_STRING_LENGTH)
i = SHAPE_STRING_LENGTH;
j = 0;
(*id) = 0;
-
+
/* This loop grabs the integer id for this custom wave */
while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) {
if (j >= MAX_TOKEN_SIZE)
return FAILURE;
-
+
(*id) = 10*(*id) + (token[i]-48);
j++;
i++;
/* Parses custom wave equations */
int parse_wave(char * token, FILE * fs, preset_t * preset) {
-
+
int id;
char * eqn_type;
char string[MAX_TOKEN_SIZE];
return FAILURE;
if (preset == NULL)
return FAILURE;
-
+
/* Grab custom wave id and equation type (per frame or per point) from string token */
if (parse_wave_prefix(token, &id, &eqn_type) < 0) {
//if (PARSE_DEBUG) printf("parse_wave: syntax error in custom wave prefix!\n");
return FAILURE;
- /* per frame init equation case */
+ /* per frame init equation case */
if (!strncmp(eqn_type, WAVE_INIT_STRING, WAVE_INIT_STRING_LENGTH)) {
//if (PARSE_DEBUG) printf("parse_wave (per frame init): [begin] (LINE %d)\n", line_count);
if ((init_cond = parse_per_frame_init_eqn(fs, preset, custom_wave->param_tree)) == NULL) {
//if (PARSE_DEBUG) printf("parse_wave (per frame init): equation parsing failed (LINE %d)\n", line_count);
return PARSE_ERROR;
- }
+ }
/* Insert the equation in the per frame equation tree */
if (splay_insert(init_cond, init_cond->param->name, custom_wave->per_frame_init_eqn_tree) < 0) {
//if (PARSE_DEBUG) printf("parse_wave (per frame init): failed to add equation (ERROR)\n");
- free_init_cond(init_cond); /* will free the gen expr too */
+ free_init_cond(init_cond); /* will free the gen expr too */
return FAILURE;
}
-
- if (update_string_buffer(custom_wave->per_frame_init_eqn_string_buffer,
- &custom_wave->per_frame_init_eqn_string_index) < 0)
+
+ if (update_string_buffer(custom_wave->per_frame_init_eqn_string_buffer,
+ &custom_wave->per_frame_init_eqn_string_index) < 0)
return FAILURE;
-
+
return SUCCESS;
-
+
}
/* per frame equation case */
if (!strncmp(eqn_type, PER_FRAME_STRING_NO_UNDERSCORE, PER_FRAME_STRING_NO_UNDERSCORE_LENGTH)) {
//if (PARSE_DEBUG) printf("parse_wave (per_frame): [start] (custom wave id = %d)\n", custom_wave->id);
-
+
if (parseToken(fs, string) != tEq) {
//if (PARSE_DEBUG) printf("parse_wave (per_frame): no equal sign after string \"%s\" (LINE %d)\n", string, line_count);
- return PARSE_ERROR;
+ return PARSE_ERROR;
}
-
+
/* Find the parameter associated with the string in the custom wave database */
- if ((param = find_param_db(string, custom_wave->param_tree, TRUE)) == NULL) {
+ if ((param = find_param_db(string, custom_wave->param_tree, TRUE)) == NULL) {
//if (PARSE_DEBUG) printf("parse_wave (per_frame): parameter \"%s\" not found or cannot be malloc'ed!!\n", string);
- return FAILURE;
+ return FAILURE;
}
-
-
+
+
/* Make sure parameter is writable */
if (param->flags & P_FLAG_READONLY) {
- //if (PARSE_DEBUG) printf("parse_wave (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
+ //if (PARSE_DEBUG) printf("parse_wave (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
return FAILURE;
}
-
+
/* Parse right side of equation as an expression */
current_wave = custom_wave;
current_wave = NULL;
//if (PARSE_DEBUG) printf("parse_wave (per_frame): [finished parsing equation] (LINE %d)\n", line_count);
-
+
/* Create a new per frame equation */
if ((per_frame_eqn = new_per_frame_eqn(custom_wave->per_frame_count++, param, gen_expr)) == NULL) {
//if (PARSE_DEBUG) printf("parse_wave (per_frame): failed to create a new per frame eqn, out of memory?\n");
free_per_frame_eqn(per_frame_eqn);
return FAILURE;
}
-
- //if (PARSE_DEBUG) printf("parse_wave (per_frame): equation %d associated with custom wave %d [success]\n",
- // per_frame_eqn->index, custom_wave->id);
+
+ //if (PARSE_DEBUG) printf("parse_wave (per_frame): equation %d associated with custom wave %d [success]\n",
+ // per_frame_eqn->index, custom_wave->id);
-
- /* Need to add stuff to string buffer so the editor can read the equations.
+
+ /* Need to add stuff to string buffer so the editor can read the equations.
Why not make a nice little helper function for this? - here it is: */
-
+
if (update_string_buffer(custom_wave->per_frame_eqn_string_buffer, &custom_wave->per_frame_eqn_string_index) < 0)
return FAILURE;
//if (PARSE_DEBUG) printf("parse_wave (per_point): equal operator missing after per pixel operator! (LINE %d)\n", line_count);
return PARSE_ERROR;
}
-
+
/* Parse right side of equation as an expression */
current_wave = custom_wave;
if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) {
return PARSE_ERROR;
}
-
+
if (update_string_buffer(custom_wave->per_point_eqn_string_buffer, &custom_wave->per_point_eqn_string_index) < 0)
return FAILURE;
/* Parses custom shape equations */
int parse_shape(char * token, FILE * fs, preset_t * preset) {
-
+
int id;
char * eqn_type;
char string[MAX_TOKEN_SIZE];
return FAILURE;
if (preset == NULL)
return FAILURE;
-
+
/* Grab custom shape id and equation type (per frame or per point) from string token */
if (parse_shape_prefix(token, &id, &eqn_type) < 0) {
//if (PARSE_DEBUG) printf("parse_shape: syntax error in custom shape prefix!\n");
return FAILURE;
- /* per frame init equation case */
+ /* per frame init equation case */
if (!strncmp(eqn_type, SHAPE_INIT_STRING, SHAPE_INIT_STRING_LENGTH)) {
//if (PARSE_DEBUG) printf("parse_shape (per frame init): [begin] (LINE %d)\n", line_count);
if ((init_cond = parse_per_frame_init_eqn(fs, preset, custom_shape->param_tree)) == NULL) {
//if (PARSE_DEBUG) printf("parse_shape (per frame init): equation parsing failed (LINE %d)\n", line_count);
return PARSE_ERROR;
- }
-
+ }
+
/* Insert the equation in the per frame equation tree */
if (splay_insert(init_cond, init_cond->param->name, custom_shape->per_frame_init_eqn_tree) < 0) {
//if (PARSE_DEBUG) printf("parse_shape (per frame init): failed to add equation (ERROR)\n");
- free_init_cond(init_cond); /* will free the gen expr too */
+ free_init_cond(init_cond); /* will free the gen expr too */
return ERROR;
}
- if (update_string_buffer(custom_shape->per_frame_init_eqn_string_buffer,
- &custom_shape->per_frame_init_eqn_string_index) < 0)
+ if (update_string_buffer(custom_shape->per_frame_init_eqn_string_buffer,
+ &custom_shape->per_frame_init_eqn_string_index) < 0)
return FAILURE;
-
+
return SUCCESS;
-
+
}
/* per frame equation case */
if (!strncmp(eqn_type, PER_FRAME_STRING_NO_UNDERSCORE, PER_FRAME_STRING_NO_UNDERSCORE_LENGTH)) {
//if (PARSE_DEBUG) printf("parse_shape (per_frame): [start] (custom shape id = %d)\n", custom_shape->id);
-
+
if (parseToken(fs, string) != tEq) {
//if (PARSE_DEBUG) printf("parse_shape (per_frame): no equal sign after string \"%s\" (LINE %d)\n", string, line_count);
- return PARSE_ERROR;
+ return PARSE_ERROR;
}
-
+
/* Find the parameter associated with the string in the custom shape database */
- if ((param = find_param_db(string, custom_shape->param_tree, TRUE)) == NULL) {
+ if ((param = find_param_db(string, custom_shape->param_tree, TRUE)) == NULL) {
//if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter \"%s\" not found or cannot be malloc'ed!!\n", string);
- return FAILURE;
+ return FAILURE;
}
-
-
+
+
/* Make sure parameter is writable */
if (param->flags & P_FLAG_READONLY) {
- //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
+ //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count);
return FAILURE;
}
-
+
/* Parse right side of equation as an expression */
current_shape = custom_shape;
current_shape = NULL;
//if (PARSE_DEBUG) printf("parse_shape (per_frame): [finished parsing equation] (LINE %d)\n", line_count);
-
+
/* Create a new per frame equation */
if ((per_frame_eqn = new_per_frame_eqn(custom_shape->per_frame_count++, param, gen_expr)) == NULL) {
//if (PARSE_DEBUG) printf("parse_shape (per_frame): failed to create a new per frame eqn, out of memory?\n");
free_per_frame_eqn(per_frame_eqn);
return FAILURE;
}
-
- //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation %d associated with custom shape %d [success]\n",
- // per_frame_eqn->index, custom_shape->id);
+
+ //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation %d associated with custom shape %d [success]\n",
+ // per_frame_eqn->index, custom_shape->id);
-
+
/* Need to add stuff to string buffer so the editor can read the equations.
Why not make a nice little helper function for this? - here it is: */
-
+
if (update_string_buffer(custom_shape->per_frame_eqn_string_buffer, &custom_shape->per_frame_eqn_string_index) < 0)
return FAILURE;
if (!index)
return FAILURE;
-
+
/* If the string line buffer used by the parser is already full then quit */
if (string_line_buffer_index == (STRING_LINE_SIZE-1))
return FAILURE;
return FAILURE;
/* Add line to string buffer */
- strncpy(buffer + (*index),
- string_line_buffer + skip_size, string_length);
-
+ strncpy(buffer + (*index),
+ string_line_buffer + skip_size, string_length);
+
/* Buffer full, quit */
if ((*index) > (STRING_BUFFER_SIZE - 1)) {
//if (PARSE_DEBUG) printf("update_string_buffer: string buffer full!\n");
return FAILURE;
- }
-
+ }
+
/* Otherwise, increment string index by the added string length */
(*index)+=string_length;
-
+
return SUCCESS;
-
+
}
*/
int get_string_prefix_len(char * string) {
-
+
int i = 0;
/* Null argument check */
if (string == NULL)
return FAILURE;
-
+
/* First find the equal sign */
while (string[i] != '=') {
if (string[i] == 0)
if (per_frame_eqn == NULL)
return;
- if (PER_FRAME_EQN_DEBUG) {
- printf("per_frame_%d=%s= ", per_frame_eqn->index, per_frame_eqn->param->name);
- fflush(stdout);
- }
-
+ if (PER_FRAME_EQN_DEBUG) {
+ printf("per_frame_%d=%s= ", per_frame_eqn->index, per_frame_eqn->param->name);
+ fflush(stdout);
+ }
+
//*((double*)per_frame_eqn->param->engine_val) = eval_gen_expr(per_frame_eqn->gen_expr);
- set_param(per_frame_eqn->param, eval_gen_expr(per_frame_eqn->gen_expr));
- if (PER_FRAME_EQN_DEBUG) printf(" = %.4f\n", *((double*)per_frame_eqn->param->engine_val));
-
+ set_param(per_frame_eqn->param, eval_gen_expr(per_frame_eqn->gen_expr));
+ if (PER_FRAME_EQN_DEBUG) printf(" = %.4f\n", *((double*)per_frame_eqn->param->engine_val));
+
}
/*
if (per_frame_eqn == NULL)
return;
- if (PER_FRAME_EQN_DEBUG) {
- printf("per_frame_init: %s = ", per_frame_eqn->param->name);
- fflush(stdout);
- }
-
-
+ if (PER_FRAME_EQN_DEBUG) {
+ printf("per_frame_init: %s = ", per_frame_eqn->param->name);
+ fflush(stdout);
+ }
+
+
val = *((double*)per_frame_eqn->param->engine_val) = eval_gen_expr(per_frame_eqn->gen_expr);
- if (PER_FRAME_EQN_DEBUG) printf(" = %f\n", *((double*)per_frame_eqn->param->engine_val));
-
- if (per_frame_eqn->param->flags & P_FLAG_QVAR) {
-
- per_frame_eqn->param->init_val.double_val = val;
- if ((init_cond = new_init_cond(per_frame_eqn->param)) == NULL)
- return;
-
- if ((list_append(init_cond_list, init_cond)) < 0) {
- free_init_cond(init_cond);
- return;
- }
+ if (PER_FRAME_EQN_DEBUG) printf(" = %f\n", *((double*)per_frame_eqn->param->engine_val));
+
+ if (per_frame_eqn->param->flags & P_FLAG_QVAR) {
+
+ per_frame_eqn->param->init_val.double_val = val;
+ if ((init_cond = new_init_cond(per_frame_eqn->param)) == NULL)
+ return;
+
+ if ((list_append(init_cond_list, init_cond)) < 0) {
+ free_init_cond(init_cond);
+ return;
+ }
}
}
*/
/* Frees perframe equation structure */
void free_per_frame_eqn(per_frame_eqn_t * per_frame_eqn) {
- if (per_frame_eqn == NULL)
- return;
-
+ if (per_frame_eqn == NULL)
+ return;
+
free_gen_expr(per_frame_eqn->gen_expr);
free(per_frame_eqn);
}
gen_expr_t * eqn_ptr = NULL;
int x,y;
- eqn_ptr = per_pixel_eqn->gen_expr;
+ eqn_ptr = per_pixel_eqn->gen_expr;
if (per_pixel_eqn->param->matrix == NULL) {
- if (PER_PIXEL_EQN_DEBUG) printf("evalPerPixelEqn: [begin initializing matrix] (index = %d) (name = %s)\n",
- per_pixel_eqn->index, per_pixel_eqn->param->name);
-
+ if (PER_PIXEL_EQN_DEBUG) printf("evalPerPixelEqn: [begin initializing matrix] (index = %d) (name = %s)\n",
+ per_pixel_eqn->index, per_pixel_eqn->param->name);
+
param_matrix = per_pixel_eqn->param->matrix = (double**)malloc(gx*sizeof(double*));
-
+
for(x = 0; x < gx; x++)
param_matrix[x] = (double *)malloc(gy * sizeof(double));
for (x = 0; x < gx; x++)
for (y = 0; y < gy; y++)
- param_matrix[x][y] = 0.0;
+ param_matrix[x][y] = 0.0;
if (per_pixel_eqn->param->name == NULL)
printf("null parameter?\n");
// printf("PARAM MATRIX: \"%s\" initialized.\n", per_pixel_eqn->param->name);
}
- else
+ else
param_matrix = (double**)per_pixel_eqn->param->matrix;
if (eqn_ptr == NULL)
printf("something is seriously wrong...\n");
- for (mesh_i = 0; mesh_i < gx; mesh_i++) {
- for (mesh_j = 0; mesh_j < gy; mesh_j++) {
+ for (mesh_i = 0; mesh_i < gx; mesh_i++) {
+ for (mesh_j = 0; mesh_j < gy; mesh_j++) {
param_matrix[mesh_i][mesh_j] = eval_gen_expr(eqn_ptr);
}
}
-
+
/* Now that this parameter has been referenced with a per
pixel equation, we let the evaluator know by setting
this flag */
- per_pixel_eqn->param->matrix_flag = 1;
+ per_pixel_eqn->param->matrix_flag = 1;
}
inline void evalPerPixelEqns() {
/* Argument checks */
if (preset == NULL)
- return FAILURE;
+ return FAILURE;
if (gen_expr == NULL)
- return FAILURE;
+ return FAILURE;
if (name == NULL)
- return FAILURE;
-
+ return FAILURE;
+
if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: per pixel equation (name = \"%s\")\n", name);
- if (!strncmp(name, "dx", strlen("dx")))
+ if (!strncmp(name, "dx", strlen("dx")))
preset->per_pixel_flag[DX_OP] = TRUE;
- else if (!strncmp(name, "dy", strlen("dy")))
+ else if (!strncmp(name, "dy", strlen("dy")))
preset->per_pixel_flag[DY_OP] = TRUE;
- else if (!strncmp(name, "cx", strlen("cx")))
+ else if (!strncmp(name, "cx", strlen("cx")))
preset->per_pixel_flag[CX_OP] = TRUE;
- else if (!strncmp(name, "cy", strlen("cy")))
+ else if (!strncmp(name, "cy", strlen("cy")))
preset->per_pixel_flag[CX_OP] = TRUE;
- else if (!strncmp(name, "zoom", strlen("zoom")))
+ else if (!strncmp(name, "zoom", strlen("zoom")))
preset->per_pixel_flag[ZOOM_OP] = TRUE;
- else if (!strncmp(name, "zoomexp", strlen("zoomexp")))
+ else if (!strncmp(name, "zoomexp", strlen("zoomexp")))
preset->per_pixel_flag[ZOOMEXP_OP] = TRUE;
else if (!strncmp(name, "rot", strlen("rot")))
preset->per_pixel_flag[ROT_OP] = TRUE;
if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: failed to allocate a new parameter!\n");
return FAILURE;
- }
+ }
/* Find most largest index in the splaytree */
// if ((per_pixel_eqn = splay_find_max(active_preset->per_pixel_eqn_tree)) == NULL)
// index = 0;
// else
index = splay_size(preset->per_pixel_eqn_tree);
-
+
/* Create the per pixel equation given the index, parameter, and general expression */
if ((per_pixel_eqn = new_per_pixel_eqn(index, param, gen_expr)) == NULL) {
if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: failed to create new per pixel equation!\n");
}
- if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: new equation (index = %d) (param = \"%s\")\n",
- per_pixel_eqn->index, per_pixel_eqn->param->name);
+ if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: new equation (index = %d) (param = \"%s\")\n",
+ per_pixel_eqn->index, per_pixel_eqn->param->name);
/* Insert the per pixel equation into the preset per pixel database */
if (splay_insert(per_pixel_eqn, &per_pixel_eqn->index, preset->per_pixel_eqn_tree) < 0) {
free_per_pixel_eqn(per_pixel_eqn);
printf("failed to add per pixel eqn!\n");
- return FAILURE;
+ return FAILURE;
}
- /* Done */
+ /* Done */
return SUCCESS;
}
per_pixel_eqn_t * new_per_pixel_eqn(int index, param_t * param, gen_expr_t * gen_expr) {
- per_pixel_eqn_t * per_pixel_eqn;
-
- if (index < 0)
- return NULL;
- if (param == NULL)
- return NULL;
- if (gen_expr == NULL)
- return NULL;
-
- if ((per_pixel_eqn = (per_pixel_eqn_t*)malloc(sizeof(per_pixel_eqn_t))) == NULL)
- return NULL;
-
-
- per_pixel_eqn->index = index;
- per_pixel_eqn->param = param;
- per_pixel_eqn->gen_expr = gen_expr;
-
- return per_pixel_eqn;
+ per_pixel_eqn_t * per_pixel_eqn;
+
+ if (index < 0)
+ return NULL;
+ if (param == NULL)
+ return NULL;
+ if (gen_expr == NULL)
+ return NULL;
+
+ if ((per_pixel_eqn = (per_pixel_eqn_t*)malloc(sizeof(per_pixel_eqn_t))) == NULL)
+ return NULL;
+
+
+ per_pixel_eqn->index = index;
+ per_pixel_eqn->param = param;
+ per_pixel_eqn->gen_expr = gen_expr;
+
+ return per_pixel_eqn;
}
void free_per_pixel_eqn(per_pixel_eqn_t * per_pixel_eqn) {
- if (per_pixel_eqn == NULL)
- return;
-
- free_gen_expr(per_pixel_eqn->gen_expr);
-
- free(per_pixel_eqn);
-
- return;
+ if (per_pixel_eqn == NULL)
+ return;
+
+ free_gen_expr(per_pixel_eqn->gen_expr);
+
+ free(per_pixel_eqn);
+
+ return;
}
inline int isPerPixelEqn(int op) {
-
+
return active_preset->per_pixel_flag[op];
}
typedef struct PER_PIXEL_EQN_T {
int index; /* used for splay tree ordering. */
int flags; /* primarily to specify if this variable is user-defined */
- param_t * param;
- gen_expr_t * gen_expr;
+ param_t * param;
+ gen_expr_t * gen_expr;
} per_pixel_eqn_t;
typedef struct PER_POINT_EQN {
custom_wave_t * custom_wave;
-
+
} per_point_eqn_t;
splaytree_t * chrono_order_preset_name_tree = NULL;
int get_preset_path(char ** preset_path_ptr, char * filepath, char * filename);
preset_t * load_preset(char * pathname);
-int is_valid_extension(char * name);
+int is_valid_extension(char * name);
int load_preset_file(char * pathname, preset_t * preset);
int close_preset(preset_t * preset);
/* loadPresetDir: opens the directory buffer
denoted by 'dir' to load presets */
-
+
int loadPresetDir(char * dir) {
struct dirent ** name_list;
char * preset_name;
int i, j, dir_size;
-
+
if (dir == NULL)
- return ERROR;
+ return ERROR;
if (chrono_order_preset_name_tree != NULL) {
- if (PRESET_DEBUG) printf("loadPresetDir: previous directory doesn't appear to be closed!\n");
- /* Let this slide for now */
- }
-
- /* Scan the entire directory, storing each entry in a dirent struct array that needs
+ if (PRESET_DEBUG) printf("loadPresetDir: previous directory doesn't appear to be closed!\n");
+ /* Let this slide for now */
+ }
+
+ /* Scan the entire directory, storing each entry in a dirent struct array that needs
to be freed later. For more information, consult scandir(3) in the man pages */
if ((dir_size = scandir(dir, &name_list, 0, alphasort)) < 0) {
- if (PRESET_DEBUG) printf("loadPresetDir: failed to open directory \"%s\"\n", dir);
- return ERROR;
+ if (PRESET_DEBUG) printf("loadPresetDir: failed to open directory \"%s\"\n", dir);
+ return ERROR;
}
-
+
chrono_order_preset_name_tree = create_splaytree(compare_int, copy_int, free_int);
-
+
/* Iterate through entire dirent name list, adding to the preset name list if it
- is valid */
+ is valid */
for (i = 0; ((i < dir_size) && (i < MAX_PRESETS_IN_DIR));i++) {
- /* Only perform the next set of operations if the preset name
- contains a valid extension */
- if (is_valid_extension(name_list[i]->d_name)) {
-
- /* Handle the out of memory case. My guess is xmms would
- crash before this program would, but whatever...*/
- if ((preset_name = (char*)malloc(MAX_PATH_SIZE)) == NULL) {
- if (PRESET_DEBUG) printf("loadPresetDir: out of memory! \n");
-
- /* Free the rest of the dirent name list */
- for (j = i; j < dir_size; j++)
- free(name_list[j]);
- destroy_splaytree(chrono_order_preset_name_tree);
- return OUTOFMEM_ERROR;
- }
-
- /* Now create the full path */
- if (get_preset_path(&preset_name, dir, name_list[i]->d_name) < 0) {
- if (PRESET_DEBUG) printf("loadPresetDir: failed to generate full preset path name!\n");
-
- /* Free the rest of the dirent name list */
- for (j = i; j < dir_size; j++)
- free(name_list[j]);
- destroy_splaytree(chrono_order_preset_name_tree);
- return OUTOFMEM_ERROR;
-
- }
-
- /* Insert the character string into the splay tree, with the key being its sequence number */
- splay_insert(preset_name, &preset_name_buffer_size, chrono_order_preset_name_tree);
- preset_name_buffer_size++;
- }
-
- /* Free the dirent struct */
- free(name_list[i]);
-
- }
-
+ /* Only perform the next set of operations if the preset name
+ contains a valid extension */
+ if (is_valid_extension(name_list[i]->d_name)) {
+
+ /* Handle the out of memory case. My guess is xmms would
+ crash before this program would, but whatever...*/
+ if ((preset_name = (char*)malloc(MAX_PATH_SIZE)) == NULL) {
+ if (PRESET_DEBUG) printf("loadPresetDir: out of memory! \n");
+
+ /* Free the rest of the dirent name list */
+ for (j = i; j < dir_size; j++)
+ free(name_list[j]);
+ destroy_splaytree(chrono_order_preset_name_tree);
+ return OUTOFMEM_ERROR;
+ }
+
+ /* Now create the full path */
+ if (get_preset_path(&preset_name, dir, name_list[i]->d_name) < 0) {
+ if (PRESET_DEBUG) printf("loadPresetDir: failed to generate full preset path name!\n");
+
+ /* Free the rest of the dirent name list */
+ for (j = i; j < dir_size; j++)
+ free(name_list[j]);
+ destroy_splaytree(chrono_order_preset_name_tree);
+ return OUTOFMEM_ERROR;
+
+ }
+
+ /* Insert the character string into the splay tree, with the key being its sequence number */
+ splay_insert(preset_name, &preset_name_buffer_size, chrono_order_preset_name_tree);
+ preset_name_buffer_size++;
+ }
+
+ /* Free the dirent struct */
+ free(name_list[i]);
+
+ }
+
free(name_list);
-
+
/* No valid files in directory! */
if (chrono_order_preset_name_tree->root == NULL) {
- if (PRESET_DEBUG) printf("loadPresetDir: no valid files in directory \"%s\"\n", dir);
- destroy_splaytree(chrono_order_preset_name_tree);
- chrono_order_preset_name_tree = NULL;
- return FAILURE;
- }
-
+ if (PRESET_DEBUG) printf("loadPresetDir: no valid files in directory \"%s\"\n", dir);
+ destroy_splaytree(chrono_order_preset_name_tree);
+ chrono_order_preset_name_tree = NULL;
+ return FAILURE;
+ }
+
/* Start the prefix index right before the first entry, so next preset
starts at the top of the list */
preset_index = -1;
-
+
/* Start the first preset */
switchPreset(ALPHA_NEXT, HARD_CUT);
-
+
return SUCCESS;
}
int closePresetDir() {
- /* No preset director appears to be loaded */
- if (chrono_order_preset_name_tree == NULL)
+ /* No preset director appears to be loaded */
+ if (chrono_order_preset_name_tree == NULL)
return SUCCESS;
-
+
if (PRESET_DEBUG) {
- printf("closePresetDir: freeing directory buffer...");
- fflush(stdout);
- }
-
+ printf("closePresetDir: freeing directory buffer...");
+ fflush(stdout);
+ }
+
/* Free each entry in the directory preset name tree */
splay_traverse(free_int, chrono_order_preset_name_tree);
-
+
/* Destroy the chronological order splay tree */
destroy_splaytree(chrono_order_preset_name_tree);
chrono_order_preset_name_tree = NULL;
preset_name_buffer_size = 0;
if (PRESET_DEBUG) printf("finished\n");
-
+
return SUCCESS;
}
-/* Converts a preset file name to a full path */
+/* Converts a preset file name to a full path */
int get_preset_path(char ** preset_path_ptr, char * filepath, char * filename) {
char * preset_path;
-
+
/* An insanely paranoid sequence of argument checks */
if (preset_path_ptr == NULL)
- return ERROR;
+ return ERROR;
if (*preset_path_ptr == NULL)
return ERROR;
if (filename == NULL)
- return ERROR;
+ return ERROR;
if (filepath == NULL)
- return ERROR;
-
+ return ERROR;
+
/* Mostly here for looks */
preset_path = *preset_path_ptr;
/* Clear the name space first */
memset(preset_path, 0, MAX_PATH_SIZE);
-
+
/* Now create the string "PATH/FILENAME", where path is either absolute or relative location
of the .milk file, and filename is the name of the preset file itself */
strcat(
- strcat(
- strncpy(
- preset_path,
- filepath,
- MAX_PATH_SIZE-1),
- "/"),
- filename);
+ strcat(
+ strncpy(
+ preset_path,
+ filepath,
+ MAX_PATH_SIZE-1),
+ "/"),
+ filename);
return SUCCESS;
-}
+}
/* switchPreset: loads the next preset from the directory stream.
loadPresetDir() must be called first. This is a
int switchPreset(switch_mode_t switch_mode, int cut_type) {
preset_t * new_preset;
-
+
int switch_index;
-
+
/* Make sure a preset directory list is in the buffer */
if (chrono_order_preset_name_tree == NULL) {
if (PRESET_DEBUG) printf("switchPreset: it helps if you open a directory first with a loadPresetDir() call\n");
return ERROR;
}
-
-
+
+
switch (switch_mode) {
-
+
case ALPHA_NEXT:
/* An index variable that iterates through the directory
buffer, doing wrap around when it reaches the end of
- the buffer */
-
+ the buffer */
+
if (preset_index == (preset_name_buffer_size - 1))
- switch_index = preset_index = 0;
- else
- switch_index = ++preset_index;
+ switch_index = preset_index = 0;
+ else
+ switch_index = ++preset_index;
break;
case ALPHA_PREVIOUS:
-
+
if (preset_index == 0)
- switch_index = preset_index = preset_name_buffer_size - 1;
- else
- switch_index = --preset_index;
+ switch_index = preset_index = preset_name_buffer_size - 1;
+ else
+ switch_index = --preset_index;
break;
-
+
case RANDOM_NEXT:
- switch_index = (int) (preset_name_buffer_size*(rand()/(RAND_MAX+1.0)));
- break;
+ switch_index = (int) (preset_name_buffer_size*(rand()/(RAND_MAX+1.0)));
+ break;
case RESTART_ACTIVE:
- switch_index = preset_index;
- break;
+ switch_index = preset_index;
+ break;
default:
- return FAILURE;
+ return FAILURE;
}
-
-
+
+
/* Finally, load the preset using its actual path */
if ((new_preset = load_preset((char*)splay_find(&switch_index, chrono_order_preset_name_tree))) == NULL) {
- if (PRESET_DEBUG) printf("switchPreset: failed to load preset\n");
- return ERROR;
+ if (PRESET_DEBUG) printf("switchPreset: failed to load preset\n");
+ return ERROR;
}
/* Closes a preset currently loaded, if any */
/* Finally, load the preset using its actual path */
if ((new_preset = load_preset(filename)) == NULL) {
- if (PRESET_DEBUG) printf("loadPresetByFile: failed to load preset!\n");
- return ERROR;
+ if (PRESET_DEBUG) printf("loadPresetByFile: failed to load preset!\n");
+ return ERROR;
}
/* Closes a preset currently loaded, if any */
if ((active_preset != NULL) && (active_preset != idle_preset))
- close_preset(active_preset);
+ close_preset(active_preset);
/* Sets active preset global pointer */
active_preset = new_preset;
/* Add any missing initial conditions */
load_init_conditions();
-
+
/* Need to do this once for menu */
evalInitConditions();
// evalPerFrameInitEquations();
if ((preset = (preset_t*)malloc(sizeof(preset_t))) == NULL)
return FAILURE;
-
+
strncpy(preset->name, "idlepreset", strlen("idlepreset"));
/* Initialize equation trees */
preset->custom_wave_tree = create_splaytree(compare_int, copy_int, free_int);
preset->custom_shape_tree = create_splaytree(compare_int, copy_int, free_int);
- /* Set file path to dummy name */
+ /* Set file path to dummy name */
strncpy(preset->file_path, "IDLE PRESET", MAX_PATH_SIZE-1);
-
+
/* Set initial index values */
preset->per_pixel_eqn_string_index = 0;
preset->per_frame_eqn_string_index = 0;
preset->per_frame_init_eqn_string_index = 0;
memset(preset->per_pixel_flag, 0, sizeof(int)*NUM_OPS);
-
+
/* Clear string buffers */
memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
memset(preset->per_frame_init_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
idle_preset = preset;
-
+
return SUCCESS;
}
int destroy_idle_preset() {
return close_preset(idle_preset);
-
+
}
/* initPresetLoader: initializes the preset
/* Initializes the builtin function database */
init_builtin_func_db();
-
+
/* Initializes all infix operators */
init_infix_ops();
}
/* destroyPresetLoader: closes the preset
- loading library. This should be done when
+ loading library. This should be done when
projectM does cleanup */
int destroyPresetLoader() {
-
- if ((active_preset != NULL) && (active_preset != idle_preset)) {
- close_preset(active_preset);
- }
+
+ if ((active_preset != NULL) && (active_preset != idle_preset)) {
+ close_preset(active_preset);
+ }
active_preset = NULL;
-
+
destroy_idle_preset();
destroy_builtin_param_db();
destroy_builtin_func_db();
/* load_preset_file: private function that loads a specific preset denoted
by the given pathname */
-int load_preset_file(char * pathname, preset_t * preset) {
+int load_preset_file(char * pathname, preset_t * preset) {
FILE * fs;
int retval;
if (pathname == NULL)
- return FAILURE;
+ return FAILURE;
if (preset == NULL)
- return FAILURE;
-
+ return FAILURE;
+
/* Open the file corresponding to pathname */
if ((fs = utf8_fopen(pathname, "r")) == 0) {
if (PRESET_DEBUG) printf("load_preset_file: loading of file %s failed!\n", pathname);
- return ERROR;
+ return ERROR;
}
if (PRESET_DEBUG) printf("load_preset_file: file stream \"%s\" opened successfully\n", pathname);
fclose(fs);
return FAILURE;
}
-
+
/* Parse the preset name and a left bracket */
if (parse_preset_name(fs, preset->name) < 0) {
if (PRESET_DEBUG) printf("load_preset_file: loading of preset name in file \"%s\" failed\n", pathname);
fclose(fs);
return ERROR;
}
-
+
if (PRESET_DEBUG) printf("load_preset_file: preset \"%s\" parsed\n", preset->name);
/* Parse each line until end of file */
if (PRESET_DEBUG > 1) printf("load_preset_file: parse error in file \"%s\"\n", pathname);
}
}
-
- if (PRESET_DEBUG) printf("load_preset_file: finished line parsing successfully\n");
+
+ if (PRESET_DEBUG) printf("load_preset_file: finished line parsing successfully\n");
/* Now the preset has been loaded.
Evaluation calls can be made at appropiate
times in the frame loop */
-
+
fclose(fs);
-
+
if (PRESET_DEBUG) printf("load_preset_file: file \"%s\" closed, preset ready\n", pathname);
return SUCCESS;
-
+
}
void evalInitConditions() {
void evalPerFrameInitEquations() {
//printf("evalPerFrameInitEquations: per frame init unimplemented!\n");
// splay_traverse(eval_per_frame_eqn, active_preset->per_frame_init_eqn_tree);
-}
+}
/* Returns nonzero if string 'name' contains .milk or
(the better) .prjm extension. Not a very strong function currently */
int is_valid_extension(char * name) {
- if (PRESET_DEBUG > 1) {
- printf("is_valid_extension: scanning string \"%s\"...", name);
- fflush(stdout);
- }
-
- if (strstr(name, MILKDROP_FILE_EXTENSION)) {
- if (PRESET_DEBUG > 1) printf("\".milk\" extension found in string [true]\n");
- return TRUE;
- }
-
- if (strstr(name, PROJECTM_FILE_EXTENSION)) {
- if (PRESET_DEBUG > 1) printf("\".prjm\" extension found in string [true]\n");
- return TRUE;
- }
-
- if (PRESET_DEBUG > 1) printf("no valid extension found [false]\n");
- return FALSE;
+ if (PRESET_DEBUG > 1) {
+ printf("is_valid_extension: scanning string \"%s\"...", name);
+ fflush(stdout);
+ }
+
+ if (strstr(name, MILKDROP_FILE_EXTENSION)) {
+ if (PRESET_DEBUG > 1) printf("\".milk\" extension found in string [true]\n");
+ return TRUE;
+ }
+
+ if (strstr(name, PROJECTM_FILE_EXTENSION)) {
+ if (PRESET_DEBUG > 1) printf("\".prjm\" extension found in string [true]\n");
+ return TRUE;
+ }
+
+ if (PRESET_DEBUG > 1) printf("no valid extension found [false]\n");
+ return FALSE;
}
/* Private function to close a preset file */
splay_traverse(free_init_cond, preset->init_cond_tree);
destroy_splaytree(preset->init_cond_tree);
-
+
splay_traverse(free_init_cond, preset->per_frame_init_eqn_tree);
destroy_splaytree(preset->per_frame_init_eqn_tree);
-
+
splay_traverse(free_per_pixel_eqn, preset->per_pixel_eqn_tree);
destroy_splaytree(preset->per_pixel_eqn_tree);
-
+
splay_traverse(free_per_frame_eqn, preset->per_frame_eqn_tree);
destroy_splaytree(preset->per_frame_eqn_tree);
-
+
splay_traverse(free_param, preset->user_param_tree);
destroy_splaytree(preset->user_param_tree);
-
+
splay_traverse(free_custom_wave, preset->custom_wave_tree);
destroy_splaytree(preset->custom_wave_tree);
splay_traverse(free_custom_shape, preset->custom_shape_tree);
destroy_splaytree(preset->custom_shape_tree);
- free(preset);
-
+ free(preset);
+
return SUCCESS;
}
void reloadPerPixel(char *s, preset_t * preset) {
-
+
FILE * fs;
int slen;
char c;
/* Initialize preset struct */
if ((preset = (preset_t*)malloc(sizeof(preset_t))) == NULL)
return NULL;
-
+
/* Initialize equation trees */
preset->init_cond_tree = create_splaytree(compare_string, copy_string, free_string);
preset->user_param_tree = create_splaytree(compare_string, copy_string, free_string);
memset(preset->per_pixel_flag, 0, sizeof(int)*NUM_OPS);
- /* Copy file path */
+ /* Copy file path */
strncpy(preset->file_path, pathname, MAX_PATH_SIZE-1);
-
+
/* Set initial index values */
preset->per_pixel_eqn_string_index = 0;
preset->per_frame_eqn_string_index = 0;
preset->per_frame_init_eqn_string_index = 0;
-
-
+
+
/* Clear string buffers */
memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
memset(preset->per_frame_init_eqn_string_buffer, 0, STRING_BUFFER_SIZE);
-
-
+
+
if (load_preset_file(pathname, preset) < 0) {
- if (PRESET_DEBUG) printf("load_preset: failed to load file \"%s\"\n", pathname);
- close_preset(preset);
- return NULL;
+ if (PRESET_DEBUG) printf("load_preset: failed to load file \"%s\"\n", pathname);
+ close_preset(preset);
+ return NULL;
}
/* It's kind of ugly to reset these values here. Should definitely be placed in the parser somewhere */
if (filename == NULL)
return;
-
+
/* Open the file corresponding to pathname */
if ((fs = utf8_fopen(filename, "w+")) == 0) {
if (PRESET_DEBUG) printf("savePreset: failed to create filename \"%s\"!\n", filename);
- return;
+ return;
}
write_stream = fs;
splay_traverse(write_init, active_preset->init_cond_tree);
-
+
return SUCCESS;
}
if (init_cond->param->type == P_TYPE_BOOL)
sprintf(s, "%s=%d\n", init_cond->param->name, init_cond->init_val.bool_val);
- else if (init_cond->param->type == P_TYPE_INT)
+ else if (init_cond->param->type == P_TYPE_INT)
sprintf(s, "%s=%d\n", init_cond->param->name, init_cond->init_val.int_val);
else if (init_cond->param->type == P_TYPE_DOUBLE)
return FAILURE;
if (active_preset == NULL)
return FAILURE;
-
+
len = strlen(active_preset->per_frame_init_eqn_string_buffer);
if (fwrite(active_preset->per_frame_init_eqn_string_buffer, 1, len, fs) != len)
/* If initial condition was not defined by the preset file, force a default one
with the following code */
if ((init_cond = splay_find(param->name, active_preset->init_cond_tree)) == NULL) {
-
+
/* Make sure initial condition does not exist in the set of per frame initial equations */
if ((init_cond = splay_find(param->name, active_preset->per_frame_init_eqn_tree)) != NULL)
return;
-
+
if (param->type == P_TYPE_BOOL)
init_val.bool_val = 0;
-
+
else if (param->type == P_TYPE_INT)
init_val.int_val = *(int*)param->engine_val;
/* Create new initial condition */
if ((init_cond = new_init_cond(param, init_val)) == NULL)
return;
-
+
/* Insert the initial condition into this presets tree */
if (splay_insert(init_cond, init_cond->param->name, active_preset->init_cond_tree) < 0) {
free_init_cond(init_cond);
return;
}
-
+
}
}
#include "expr_types.h"
#include "per_pixel_eqn_types.h"
-typedef enum {
+typedef enum {
ALPHA_NEXT,
ALPHA_PREVIOUS,
RANDOM_NEXT,
} switch_mode_t;
typedef struct PRESET_T {
-
+
char name[MAX_TOKEN_SIZE]; /* preset name as parsed in file */
char file_path[MAX_PATH_SIZE]; /* Points to the preset file name */
-
+
int per_pixel_eqn_string_index;
int per_frame_eqn_string_index;
int per_frame_init_eqn_string_index;
-
+
int per_pixel_flag[NUM_OPS];
char per_pixel_eqn_string_buffer[STRING_BUFFER_SIZE];
char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE];
/*
An implementation of top-down splaying
D. Sleator <sleator@cs.cmu.edu>
- March 1992
+ March 1992
"Splay trees", or "self-adjusting search trees" are a simple and
efficient data structure for storing an ordered set. The data
The following code was written by Daniel Sleator, and is released
in the public domain. It has been heavily modified by Carmelo Piccione,
- (cep@andrew.cmu.edu), to suit personal needs,
+ (cep@andrew.cmu.edu), to suit personal needs,
*/
#include <stdlib.h>
splaytree->compare = compare;
splaytree->copy_key = copy_key;
splaytree->free_key = free_key;
-
+
/* Return instantiated splay tree */
return splaytree;
}
/* Free the splaytree struct itself */
free(splaytree);
-
+
/* Done, return success */
return SUCCESS;
/* Free left node */
free_splaynode(splaynode->left, free_key);
-
+
/* Free right node */
free_splaynode(splaynode->right, free_key);
-
+
/* Free this node's key */
free_key(splaynode->key);
-
+
/* Note that the data pointers are not freed here.
Should be freed with a splay traversal function */
-
+
/* Free the splaynode structure itself */
free(splaynode);
/* Null argument check */
if (splaytree == NULL)
- return;
+ return;
if (func_ptr == NULL)
- return;
-
+ return;
+
/* Call recursive helper function */
splay_traverse_helper(func_ptr, splaytree->root);
}
/* Helper function to traverse the entire splaytree */
-static inline void splay_traverse_helper (void (*func_ptr)(), splaynode_t * splaynode) {
+static inline void splay_traverse_helper (void (*func_ptr)(), splaynode_t * splaynode) {
/* Normal if this happens, its a base case of recursion */
if (splaynode == NULL)
/* Recursively traverse to the left */
splay_traverse_helper(func_ptr, splaynode->left);
-
-
+
+
/* Node is a of regular type, so its ok to perform the function on it */
if (splaynode->type == REGULAR_NODE_TYPE)
- func_ptr(splaynode->data);
-
+ func_ptr(splaynode->data);
+
/* Node is of symbolic link type, do nothing */
else if (splaynode->type == SYMBOLIC_NODE_TYPE)
- ;
-
+ ;
+
/* Unknown node type */
else
;
-
+
/* Recursively traverse to the right */
splay_traverse_helper(func_ptr, splaynode->right);
int match_type;
if (key == NULL)
- return NULL;
-
+ return NULL;
+
if (splaytree == NULL)
- return NULL;
-
+ return NULL;
+
splaynode = splaytree->root;
-
+
/* Bring the targeted splay node to the top of the splaytree */
splaynode = splay(key, splaynode, &match_type, splaytree->compare);
splaytree->root = splaynode;
-
-
+
+
/* We only want perfect matches, so return null when match isn't perfect */
- if (match_type == CLOSEST_MATCH)
+ if (match_type == CLOSEST_MATCH)
return NULL;
/* This shouldn't happen because of the match type check, but whatever */
if (splaytree->root == NULL)
- return NULL;
-
+ return NULL;
+
/* Node is a regular type, return its data pointer */
if (splaytree->root->type == REGULAR_NODE_TYPE) /* regular node */
- return splaytree->root->data;
-
+ return splaytree->root->data;
+
/* If the node is a symlink, pursue one link */
if (splaytree->root->type == SYMBOLIC_NODE_TYPE) /* symbolic node */
- return ((splaynode_t*)splaytree->root->data)->data;
-
-
+ return ((splaynode_t*)splaytree->root->data)->data;
+
+
/* Unknown type */
return NULL;
}
splaynode_t * splaynode;
int match_type;
-
- /* Null argument checks */
+
+ /* Null argument checks */
if (splaytree == NULL)
- return NULL;
-
+ return NULL;
+
if (key == NULL)
- return NULL;
-
+ return NULL;
+
splaynode = splaytree->root;
/* Find the splaynode */
/* Finds the desired node, and changes the tree such that it is the root */
static inline splaynode_t * splay (void * key, splaynode_t * t, int * match_type, int (*compare)()) {
-
-/* Simple top down splay, not requiring key to be in the tree t.
+
+/* Simple top down splay, not requiring key to be in the tree t.
What it does is described above. */
splaynode_t N, *l, *r, *y;
*match_type = CLOSEST_MATCH;
-
- if (t == NULL) return t;
+
+ if (t == NULL) return t;
N.left = N.right = NULL;
l = r = &N;
-
+
for (;;) {
- if (compare(key, t->key) < 0) {
- if (t->left == NULL) break;
- if (compare(key, t->left->key) < 0) {
- y = t->left; /* rotate right */
- t->left = y->right;
- y->right = t;
- t = y;
- if (t->left == NULL) break;
- }
- r->left = t; /* link right */
- r = t;
- t = t->left;
- } else if (compare(key, t->key) > 0) {
- if (t->right == NULL) break;
- if (compare(key, t->right->key) > 0) {
- y = t->right; /* rotate left */
- t->right = y->left;
- y->left = t;
- t = y;
- if (t->right == NULL) break;
- }
- l->right = t; /* link left */
- l = t;
- t = t->right;
- } else {
- *match_type = PERFECT_MATCH;
- break;
- }
+ if (compare(key, t->key) < 0) {
+ if (t->left == NULL) break;
+ if (compare(key, t->left->key) < 0) {
+ y = t->left; /* rotate right */
+ t->left = y->right;
+ y->right = t;
+ t = y;
+ if (t->left == NULL) break;
+ }
+ r->left = t; /* link right */
+ r = t;
+ t = t->left;
+ } else if (compare(key, t->key) > 0) {
+ if (t->right == NULL) break;
+ if (compare(key, t->right->key) > 0) {
+ y = t->right; /* rotate left */
+ t->right = y->left;
+ y->left = t;
+ t = y;
+ if (t->right == NULL) break;
+ }
+ l->right = t; /* link left */
+ l = t;
+ t = t->right;
+ } else {
+ *match_type = PERFECT_MATCH;
+ break;
+ }
}
l->right = t->left; /* assemble */
r->left = t->right;
t->left = N.right;
t->right = N.left;
-
+
return t;
//return NULL;
/* Deletes a splay node from a splay tree. If the node doesn't exist
then nothing happens */
inline int splay_delete(void * key, splaytree_t * splaytree) {
-
+
splaynode_t * splaynode;
/* Use helper function to delete the node and return the resulting tree */
if ((splaynode = splay_delete_helper(key, splaytree->root, splaytree->compare, splaytree->free_key)) == NULL)
- return FAILURE;
-
+ return FAILURE;
+
/* Set new splaytree root equal to the returned splaynode after deletion */
splaytree->root = splaynode;
-
+
/* Finished, no errors */
return SUCCESS;
}
/* Deletes a splay node */
static inline splaynode_t * splay_delete_helper(void * key, splaynode_t * splaynode, int (*compare)(), void (*free_key)()) {
-
+
splaynode_t * new_root;
int match_type;
-
- /* Argument check */
- if (splaynode == NULL)
- return NULL;
-
+
+ /* Argument check */
+ if (splaynode == NULL)
+ return NULL;
+
splaynode = splay(key, splaynode, &match_type, compare);
-
- /* If entry wasn't found, quit here */
- if (match_type == CLOSEST_MATCH)
- return NULL;
-
- /* If the targeted node's left pointer is null, then set the new root
- equal to the splaynode's right child */
- if (splaynode->left == NULL) {
- new_root = splaynode->right;
- }
-
- /* Otherwise, do something I don't currently understand */
- else {
- new_root = splay(key, splaynode->left, &match_type, compare);
- new_root->right = splaynode->right;
- }
-
- /* Set splay nodes children pointers to null */
- splaynode->left = splaynode->right = NULL;
-
- /* Free the splaynode (and only this node since its children are now empty */
- free_splaynode(splaynode, free_key);
-
- /* Return the resulting tree */
- return new_root;
-
+
+ /* If entry wasn't found, quit here */
+ if (match_type == CLOSEST_MATCH)
+ return NULL;
+
+ /* If the targeted node's left pointer is null, then set the new root
+ equal to the splaynode's right child */
+ if (splaynode->left == NULL) {
+ new_root = splaynode->right;
+ }
+
+ /* Otherwise, do something I don't currently understand */
+ else {
+ new_root = splay(key, splaynode->left, &match_type, compare);
+ new_root->right = splaynode->right;
+ }
+
+ /* Set splay nodes children pointers to null */
+ splaynode->left = splaynode->right = NULL;
+
+ /* Free the splaynode (and only this node since its children are now empty */
+ free_splaynode(splaynode, free_key);
+
+ /* Return the resulting tree */
+ return new_root;
+
}
/* Create a new splay node type */
static inline splaynode_t * new_splaynode(int type, void * key, void * data) {
- splaynode_t * splaynode;
- /* Argument checks */
- if (data == NULL)
- return NULL;
-
- if (key == NULL)
- return NULL;
-
- /* Creates the new splay node struct */
- if ((splaynode = (splaynode_t*)malloc(sizeof(splaynode_t))) == NULL)
- return NULL;
-
- splaynode->data = data;
- splaynode->type = type;
- splaynode->key = key;
-
- /* Return the new splay node */
- return splaynode;
+ splaynode_t * splaynode;
+ /* Argument checks */
+ if (data == NULL)
+ return NULL;
+
+ if (key == NULL)
+ return NULL;
+
+ /* Creates the new splay node struct */
+ if ((splaynode = (splaynode_t*)malloc(sizeof(splaynode_t))) == NULL)
+ return NULL;
+
+ splaynode->data = data;
+ splaynode->type = type;
+ splaynode->key = key;
+
+ /* Return the new splay node */
+ return splaynode;
}
/* Inserts a link into the splay tree */
splaynode_t * splaynode, * data_node;
void * key_clone;
- /* Null arguments */
+ /* Null arguments */
if (splaytree == NULL)
- return FAILURE;
-
+ return FAILURE;
+
if (alias_key == NULL)
- return FAILURE;
+ return FAILURE;
if (orig_key == NULL)
- return FAILURE;
-
+ return FAILURE;
+
/* Find the splaynode corresponding to the original key */
if ((data_node = get_splaynode_of(orig_key, splaytree)) == NULL)
- return FAILURE;
-
+ return FAILURE;
+
/* Create a new splay node of symbolic link type */
if ((splaynode = new_splaynode(SYMBOLIC_NODE_TYPE, (key_clone = splaytree->copy_key(alias_key)), data_node)) == NULL) {
- splaytree->free_key(key_clone);
- return OUTOFMEM_ERROR;
+ splaytree->free_key(key_clone);
+ return OUTOFMEM_ERROR;
}
/* Insert the splaynode into the given splaytree */
splaynode->left=splaynode->right = NULL;
free_splaynode(splaynode, splaytree->free_key);
return FAILURE;
- }
-
+ }
+
/* Done, return success */
return SUCCESS;
-}
+}
/* Inserts 'data' into the 'splaytree' paired with the passed 'key' */
inline int splay_insert(void * data, void * key, splaytree_t * splaytree) {
- splaynode_t * splaynode;
- void * key_clone;
-
- /* Null argument checks */
- if (splaytree == NULL) {
- return FAILURE;
- }
-
- if (key == NULL)
- return FAILURE;
-
- /* Clone the key argument */
- key_clone = splaytree->copy_key(key);
-
- /* Create a new splaynode (of regular type) */
- if ((splaynode = new_splaynode(REGULAR_NODE_TYPE, key_clone, data)) == NULL) {
- splaytree->free_key(key_clone);
- return OUTOFMEM_ERROR;
- }
-
-
- /* Inserts the splaynode into the splaytree */
- if (splay_insert_node(splaynode, splaytree) < 0) {
- splaynode->left=splaynode->right=NULL;
- free_splaynode(splaynode, splaytree->free_key);
- return FAILURE;
- }
-
-
- return SUCCESS;
+ splaynode_t * splaynode;
+ void * key_clone;
+
+ /* Null argument checks */
+ if (splaytree == NULL) {
+ return FAILURE;
+ }
+
+ if (key == NULL)
+ return FAILURE;
+
+ /* Clone the key argument */
+ key_clone = splaytree->copy_key(key);
+
+ /* Create a new splaynode (of regular type) */
+ if ((splaynode = new_splaynode(REGULAR_NODE_TYPE, key_clone, data)) == NULL) {
+ splaytree->free_key(key_clone);
+ return OUTOFMEM_ERROR;
+ }
+
+
+ /* Inserts the splaynode into the splaytree */
+ if (splay_insert_node(splaynode, splaytree) < 0) {
+ splaynode->left=splaynode->right=NULL;
+ free_splaynode(splaynode, splaytree->free_key);
+ return FAILURE;
+ }
+
+
+ return SUCCESS;
}
/* Helper function to insert splaynodes into the splaytree */
int cmpval;
void * key;
splaynode_t * t;
-
+
/* Null argument checks */
if (splaytree == NULL)
return FAILURE;
if (splaynode == NULL)
- return FAILURE;
-
+ return FAILURE;
+
key = splaynode->key;
-
- t = splaytree->root;
+
+ t = splaytree->root;
/* Root is null, insert splaynode here */
if (t == NULL) {
- splaynode->left = splaynode->right = NULL;
- splaytree->root = splaynode;
- return SUCCESS;
+ splaynode->left = splaynode->right = NULL;
+ splaytree->root = splaynode;
+ return SUCCESS;
}
-
+
t = splay(key, t, &match_type, splaytree->compare);
-
+
if ((cmpval = splaytree->compare(key,t->key)) < 0) {
- splaynode->left = t->left;
- splaynode->right = t;
- t->left = NULL;
- splaytree->root = splaynode;
- return SUCCESS;
+ splaynode->left = t->left;
+ splaynode->right = t;
+ t->left = NULL;
+ splaytree->root = splaynode;
+ return SUCCESS;
- }
+ }
else if (cmpval > 0) {
- splaynode->right = t->right;
- splaynode->left = t;
- t->right = NULL;
- splaytree->root = splaynode;
- return SUCCESS;
- }
-
+ splaynode->right = t->right;
+ splaynode->left = t;
+ t->right = NULL;
+ splaytree->root = splaynode;
+ return SUCCESS;
+ }
+
/* Item already exists in tree, don't reinsert */
else {
-
+
return FAILURE;
}
}
/* Returns the 'maximum' key that is less than the given key in the splaytree */
inline void * splay_find_below_max(void * key, splaytree_t * splaytree) {
-
- void * closest_key;
-
- if (splaytree == NULL)
- return NULL;
- if (splaytree->root == NULL)
- return NULL;
- if (key == NULL)
- return NULL;
-
- closest_key = NULL;
-
- splay_find_below_max_helper(key, &closest_key, splaytree->root, splaytree->compare);
-
- if (closest_key == NULL) return NULL;
- return splay_find(closest_key, splaytree);
+
+ void * closest_key;
+
+ if (splaytree == NULL)
+ return NULL;
+ if (splaytree->root == NULL)
+ return NULL;
+ if (key == NULL)
+ return NULL;
+
+ closest_key = NULL;
+
+ splay_find_below_max_helper(key, &closest_key, splaytree->root, splaytree->compare);
+
+ if (closest_key == NULL) return NULL;
+ return splay_find(closest_key, splaytree);
}
/* Returns the 'minimum' key that is greater than the given key in the splaytree */
inline void * splay_find_above_min(void * key, splaytree_t * splaytree) {
-
- void * closest_key;
-
- if (splaytree == NULL)
- return NULL;
- if (splaytree->root == NULL)
- return NULL;
- if (key == NULL)
- return NULL;
- closest_key = NULL;
-
- splay_find_above_min_helper(key, &closest_key, splaytree->root, splaytree->compare);
-
- if (closest_key == NULL) {
- return NULL;
- }
-
- return splay_find(closest_key, splaytree);
+
+ void * closest_key;
+
+ if (splaytree == NULL)
+ return NULL;
+ if (splaytree->root == NULL)
+ return NULL;
+ if (key == NULL)
+ return NULL;
+ closest_key = NULL;
+
+ splay_find_above_min_helper(key, &closest_key, splaytree->root, splaytree->compare);
+
+ if (closest_key == NULL) {
+ return NULL;
+ }
+
+ return splay_find(closest_key, splaytree);
}
/* Helper function */
static inline void splay_find_below_max_helper(void * min_key, void ** closest_key, splaynode_t * root, int (*compare)()) {
- /* Empty root, return*/
- if (root == NULL)
- return;
-
- /* The root key is less than the previously found closest key.
- Also try to make the key non null if the value is less than the max key */
-
- if ((*closest_key == NULL) || (compare(root->key, *closest_key) < 0)) {
-
- /* The root key is less than the given max key, so this is the
- smallest change from the given max key */
- if (compare(root->key, min_key) > 0) {
-
- *closest_key = root->key;
-
- /* Look right again in case even a greater key exists that is
- still less than the given max key */
- splay_find_below_max_helper(min_key, closest_key, root->left, compare);
- }
-
- /* The root key is greater than the given max key, and greater than
- the closest key, so search left */
- else {
- splay_find_below_max_helper(min_key, closest_key, root->right, compare);
- }
- }
-
- /* The root key is less than the found closest key, search right */
- else {
- splay_find_below_max_helper(min_key, closest_key, root->left, compare);
- }
-
+ /* Empty root, return*/
+ if (root == NULL)
+ return;
+
+ /* The root key is less than the previously found closest key.
+ Also try to make the key non null if the value is less than the max key */
+
+ if ((*closest_key == NULL) || (compare(root->key, *closest_key) < 0)) {
+
+ /* The root key is less than the given max key, so this is the
+ smallest change from the given max key */
+ if (compare(root->key, min_key) > 0) {
+
+ *closest_key = root->key;
+
+ /* Look right again in case even a greater key exists that is
+ still less than the given max key */
+ splay_find_below_max_helper(min_key, closest_key, root->left, compare);
+ }
+
+ /* The root key is greater than the given max key, and greater than
+ the closest key, so search left */
+ else {
+ splay_find_below_max_helper(min_key, closest_key, root->right, compare);
+ }
+ }
+
+ /* The root key is less than the found closest key, search right */
+ else {
+ splay_find_below_max_helper(min_key, closest_key, root->left, compare);
+ }
+
}
/* Helper function */
static inline void splay_find_above_min_helper(void * max_key, void ** closest_key, splaynode_t * root, int (*compare)()) {
- /* Empty root, stop */
- if (root == NULL)
- return;
-
- /* The root key is greater than the previously found closest key.
- Also try to make the key non null if the value is less than the min key */
-
- if ((*closest_key == NULL) || (compare(root->key, *closest_key) > 0)) {
-
- /* The root key is greater than the given min key, so this is the
- smallest change from the given min key */
- if (compare(root->key, max_key) < 0) {
-
- *closest_key = root->key;
-
- /* Look left again in case even a smaller key exists that is
- still greater than the given min key */
- splay_find_above_min_helper(max_key, closest_key, root->right, compare);
- }
-
- /* The root key is less than the given min key, and less than
- the closest key, so search right */
- else {
- splay_find_above_min_helper(max_key, closest_key, root->left, compare);
- }
- }
-
- /* The root key is greater than the found closest key, search left */
- else {
- splay_find_above_min_helper(max_key, closest_key, root->right, compare);
- }
-}
+ /* Empty root, stop */
+ if (root == NULL)
+ return;
+
+ /* The root key is greater than the previously found closest key.
+ Also try to make the key non null if the value is less than the min key */
+
+ if ((*closest_key == NULL) || (compare(root->key, *closest_key) > 0)) {
+
+ /* The root key is greater than the given min key, so this is the
+ smallest change from the given min key */
+ if (compare(root->key, max_key) < 0) {
+
+ *closest_key = root->key;
+
+ /* Look left again in case even a smaller key exists that is
+ still greater than the given min key */
+ splay_find_above_min_helper(max_key, closest_key, root->right, compare);
+ }
+
+ /* The root key is less than the given min key, and less than
+ the closest key, so search right */
+ else {
+ splay_find_above_min_helper(max_key, closest_key, root->left, compare);
+ }
+ }
+
+ /* The root key is greater than the found closest key, search left */
+ else {
+ splay_find_above_min_helper(max_key, closest_key, root->right, compare);
+ }
+}
/* Find the minimum entry of the splay tree */
inline void * splay_find_min(splaytree_t * t) {
- splaynode_t * splaynode;
-
- if (t == NULL)
- return NULL;
- if (t->root == NULL)
- return NULL;
-
- splaynode = t->root;
-
- while (splaynode->left != NULL)
- splaynode= splaynode->left;
-
- return splaynode->data;
+ splaynode_t * splaynode;
+
+ if (t == NULL)
+ return NULL;
+ if (t->root == NULL)
+ return NULL;
+
+ splaynode = t->root;
+
+ while (splaynode->left != NULL)
+ splaynode= splaynode->left;
+
+ return splaynode->data;
}
/* Find the maximum entry of the splay tree */
inline void * splay_find_max(splaytree_t * t) {
- splaynode_t * splaynode;
-
- if (t == NULL)
- return NULL;
- if (t->root == NULL)
- return NULL;
-
- splaynode = t->root;
-
- while (splaynode->right != NULL) {
- printf("data:%d\n", *(int*)splaynode->key);
- splaynode = splaynode->right;
- }
- return splaynode->data;
+ splaynode_t * splaynode;
+
+ if (t == NULL)
+ return NULL;
+ if (t->root == NULL)
+ return NULL;
+
+ splaynode = t->root;
+
+ while (splaynode->right != NULL) {
+ printf("data:%d\n", *(int*)splaynode->key);
+ splaynode = splaynode->right;
+ }
+ return splaynode->data;
}
inline int splay_size(splaytree_t * t) {
- if (t == NULL)
- return 0;
- if (t->root == NULL)
- return 0;
-
- return splay_rec_size(t->root);
-
+ if (t == NULL)
+ return 0;
+ if (t->root == NULL)
+ return 0;
+
+ return splay_rec_size(t->root);
+
}
static inline int splay_rec_size(splaynode_t * splaynode) {
/* Compares integer value numbers in 32 bit range */
int compare_int(int * num1, int * num2) {
- if ((*num1) < (*num2))
- return -1;
- if ((*num1) > (*num2))
- return 1;
-
- return 0;
+ if ((*num1) < (*num2))
+ return -1;
+ if ((*num1) > (*num2))
+ return 1;
+
+ return 0;
}
/* Compares strings in lexographical order */
// printf("comparing \"%s\" to \"%s\"\n", str1, str2);
//return strcmp(str1, str2);
return strncmp(str1, str2, MAX_TOKEN_SIZE-1);
-
-}
+
+}
/* Compares a string in version order. That is, file1 < file2 < file10 */
int compare_string_version(char * str1, char * str2) {
void free_int(void * num) {
- free(num);
+ free(num);
}
void free_string(char * string) {
-
- free(string);
-}
+
+ free(string);
+}
void * copy_int(int * num) {
-
- int * new_num;
-
- if ((new_num = (int*)malloc(sizeof(int))) == NULL)
- return NULL;
+
+ int * new_num;
+
+ if ((new_num = (int*)malloc(sizeof(int))) == NULL)
+ return NULL;
- *new_num = *num;
-
- return (void*)new_num;
-}
+ *new_num = *num;
+
+ return (void*)new_num;
+}
void * copy_string(char * string) {
-
- char * new_string;
-
- if ((new_string = (char*)malloc(MAX_TOKEN_SIZE)) == NULL)
- return NULL;
-
- strncpy(new_string, string, MAX_TOKEN_SIZE-1);
-
- return (void*)new_string;
+
+ char * new_string;
+
+ if ((new_string = (char*)malloc(MAX_TOKEN_SIZE)) == NULL)
+ return NULL;
+
+ strncpy(new_string, string, MAX_TOKEN_SIZE-1);
+
+ return (void*)new_string;
}
void setup_opengl( int w, int h )
{
-
+
/* Our shading model--Gouraud (smooth). */
glShadeModel( GL_SMOOTH);
/* Culling. */
*/
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
-
+
// gluOrtho2D(0.0, (GLfloat) width, 0.0, (GLfloat) height);
glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
+ glLoadIdentity();
+
// glFrustum(0.0, height, 0.0,width,10,40);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
-glDrawBuffer(GL_BACK);
- glReadBuffer(GL_BACK);
- glEnable(GL_BLEND);
+glDrawBuffer(GL_BACK);
+ glReadBuffer(GL_BACK);
+ glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- // glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ // glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POINT_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,0,0,texsize,texsize,0);
//glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,texsize,texsize);
glLineStipple(2, 0xAAAA);
-
-
+
+
}
void CreateRenderTarget(int texsize,int *RenderTargetTextureID, int *RenderTarget )
/* Create the render target */
*RenderTarget = SDL_GL_CreateRenderTarget(texsize,texsize, NULL);
if ( *RenderTarget ) {
-
- int value;
-
- //printf("Created render target:\n");
- SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_RED_SIZE, &value );
- // printf( "SDL_GL_RED_SIZE: %d\n", value);
- SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_GREEN_SIZE, &value );
- // printf( "SDL_GL_GREEN_SIZE: %d\n", value);
- SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_BLUE_SIZE, &value );
- // printf( "SDL_GL_BLUE_SIZE: %d\n", value);
- SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_ALPHA_SIZE, &value );
- // printf( "SDL_GL_ALPHA_SIZE: %d\n", value);
- SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_DEPTH_SIZE, &value );
- // printf( "SDL_GL_DEPTH_SIZE: %d\n", value );
-
- SDL_GL_BindRenderTarget(*RenderTarget, *RenderTargetTextureID);
-
+
+ int value;
+
+ //printf("Created render target:\n");
+ SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_RED_SIZE, &value );
+ // printf( "SDL_GL_RED_SIZE: %d\n", value);
+ SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_GREEN_SIZE, &value );
+ // printf( "SDL_GL_GREEN_SIZE: %d\n", value);
+ SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_BLUE_SIZE, &value );
+ // printf( "SDL_GL_BLUE_SIZE: %d\n", value);
+ SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_ALPHA_SIZE, &value );
+ // printf( "SDL_GL_ALPHA_SIZE: %d\n", value);
+ SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_DEPTH_SIZE, &value );
+ // printf( "SDL_GL_DEPTH_SIZE: %d\n", value );
+
+ SDL_GL_BindRenderTarget(*RenderTarget, *RenderTargetTextureID);
+
} else {
#endif
/* We can fake a render target in this demo by rendering to the
glBindTexture(GL_TEXTURE_2D, *RenderTargetTextureID);
glTexImage2D(GL_TEXTURE_2D,
- 0,
- GL_RGB,
- texsize, texsize,
- 0,
- GL_RGB,
- GL_UNSIGNED_BYTE,
- buffer);
+ 0,
+ GL_RGB,
+ texsize, texsize,
+ 0,
+ GL_RGB,
+ GL_UNSIGNED_BYTE,
+ buffer);
// }
}
{
for( k = 0 ; k< 3 ; k ++)
{
- //* Draw the peak
+ //* Draw the peak
*(p_picture->p[0].p_pixels +
(p_picture->p[0].i_lines - i_line -1 -k ) *
p_picture->p[0].i_pitch + (i_band_width*i +j) )
* $Id$
*
* Mainly taken from XMMS's code
- *
+ *
* Authors: Richard Boulton <richard@tartarus.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
LibvlcRootNPObject(NPP instance, const NPClass *aClass) :\r
RuntimeNPObject(instance, aClass),\r
- audioObj(NULL),\r
- inputObj(NULL),\r
- logObj(NULL),\r
- playlistObj(NULL),\r
- videoObj(NULL) {};\r
+ audioObj(NULL),\r
+ inputObj(NULL),\r
+ logObj(NULL),\r
+ playlistObj(NULL),\r
+ videoObj(NULL) {};\r
\r
virtual ~LibvlcRootNPObject();\r
\r
friend class RuntimeNPClass<LibvlcLogNPObject>;\r
\r
LibvlcLogNPObject(NPP instance, const NPClass *aClass) :\r
- RuntimeNPObject(instance, aClass),\r
- messagesObj(NULL) {};\r
+ RuntimeNPObject(instance, aClass),\r
+ messagesObj(NULL) {};\r
\r
virtual ~LibvlcLogNPObject();\r
\r
friend class RuntimeNPClass<LibvlcPlaylistNPObject>;\r
\r
LibvlcPlaylistNPObject(NPP instance, const NPClass *aClass) :\r
- RuntimeNPObject(instance, aClass),\r
- playlistItemsObj(NULL) {};\r
- \r
+ RuntimeNPObject(instance, aClass),\r
+ playlistItemsObj(NULL) {};\r
+ \r
virtual ~LibvlcPlaylistNPObject();\r
\r
static const int propertyCount;\r
char* RuntimeNPObject::stringValue(const NPVariant &v)
{
char *s = NULL;
- if( NPVARIANT_IS_STRING(v) )
+ if( NPVARIANT_IS_STRING(v) )
{
return stringValue(NPVARIANT_TO_STRING(v));
}
// and to set flags used by the security system
class ClassInfo : public nsIClassInfo
{
- // These flags are used by the DOM and security systems to signal that
+ // These flags are used by the DOM and security systems to signal that
// JavaScript callers are allowed to call this object's scritable methods.
NS_IMETHOD GetFlags(PRUint32 *aFlags)
{*aFlags = nsIClassInfo::PLUGIN_OBJECT | nsIClassInfo::DOM_OBJECT;
#undef TARGET_RT_MAC_CFM
//
-// A4Stuff.h contains the definition of EnterCodeResource and
+// A4Stuff.h contains the definition of EnterCodeResource and
// EnterCodeResource, used for setting up the code resource’s
// globals for 68K (analagous to the function SetCurrentA5
// defined by the toolbox).
// Metrowerks with the exception of pointer return types, which
// in Metrowerks 68K are returned in A0, instead of the standard
// D0. Thus, since NPN_MemAlloc and NPN_UserAgent return pointers,
-// Mixed Mode will return the values to a 68K plugin in D0, but
+// Mixed Mode will return the values to a 68K plugin in D0, but
// a 68K plugin compiled by Metrowerks will expect the result in
// A0. The following pragma forces Metrowerks to use D0 instead.
//
#endif
// The following fix for static initializers (which fixes a previous
-// incompatibility with some parts of PowerPlant, was submitted by
+// incompatibility with some parts of PowerPlant, was submitted by
// Jan Ulbrich.
#ifdef __MWERKS__
#ifdef __cplusplus
if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
{
- err = CallNPN_PostURLNotifyProc(gNetscapeFuncs.posturlnotify, instance, url,
+ err = CallNPN_PostURLNotifyProc(gNetscapeFuncs.posturlnotify, instance, url,
window, len, buf, file, notifyData);
}
else
//
// Wrapper functions for all calls from Netscape to the plugin.
// These functions let the plugin developer just create the APIs
-// as documented and defined in npapi.h, without needing to
+// as documented and defined in npapi.h, without needing to
// install those functions in the function table or worry about
// setting up globals for 68K plugins.
//
NPError ret = NPP_New(pluginType, instance, mode, argc, argn, argv, saved);
PLUGINDEBUGSTR("\pNew;g;");
ExitCodeResource();
- return ret;
+ return ret;
}
NPError Private_Destroy(NPP instance, NPSavedData** save)
#endif
//
- // Memorize the plugin’s resource file
+ // Memorize the plugin’s resource file
// refnum for later use.
//
gResFile = CurResFile();
if (hasCFM)
{
//
- // GetProcessInformation takes a process serial number and
+ // GetProcessInformation takes a process serial number and
// will give us back the name and FSSpec of the application.
// See the Process Manager in IM.
//
//
// Now that we know the app name and FSSpec, we can call GetDiskFragment
// to get a connID to use in a subsequent call to FindSymbol (it will also
- // return the address of “main” in app, which we ignore). If GetDiskFragment
+ // return the address of “main” in app, which we ignore). If GetDiskFragment
// returns an error, we assume the app must be 68K.
//
Ptr mainAddr;
kLoadCFrag, &connID, (Ptr*)&mainAddr, errName);
}
- if (result == noErr)
+ if (result == noErr)
{
//
// The app is a PPC code fragment, so call FindSymbol
gNetscapeFuncs.forceredraw = (NPN_ForceRedrawUPP)HOST_TO_PLUGIN_GLUE(forceredraw, nsTable->forceredraw);
if( navMinorVers >= 14 )
{
- // NPRuntime support
+ // NPRuntime support
gNetscapeFuncs.getstringidentifier = (NPN_GetStringIdentifierUPP)HOST_TO_PLUGIN_GLUE(getstringidentifier, nsTable->getstringidentifier);
gNetscapeFuncs.getstringidentifiers = (NPN_GetStringIdentifiersUPP)HOST_TO_PLUGIN_GLUE(getstringidentifiers, nsTable->getstringidentifiers);
gNetscapeFuncs.getintidentifier = (NPN_GetIntIdentifierUPP)HOST_TO_PLUGIN_GLUE(getintidentifier, nsTable->getintidentifier);
gNetscapeFuncs.forceredraw = nsTable->forceredraw;
if( navMinorVers >= 14 )
{
- // NPRuntime support
+ // NPRuntime support
gNetscapeFuncs.getstringidentifier = nsTable->getstringidentifier;
gNetscapeFuncs.getstringidentifiers = nsTable->getstringidentifiers;
gNetscapeFuncs.getintidentifier = nsTable->getintidentifier;
if( pluginFuncs == NULL )
return NPERR_INVALID_FUNCTABLE_ERROR;
- /*if (pluginFuncs->size < sizeof(NPPluginFuncs))
+ /*if (pluginFuncs->size < sizeof(NPPluginFuncs))
return NPERR_INVALID_FUNCTABLE_ERROR;*/
/*
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
- *
+ *
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
- *
+ *
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
- * Contributor(s):
+ * Contributor(s):
* Stephen Mak <smak@sun.com>
*/
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_GetStringIdentifierProc( gNetscapeFuncs.getstringidentifier, name);
}
return NULL;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
CallNPN_GetStringIdentifiersProc( gNetscapeFuncs.getstringidentifiers, names, nameCount, identifiers);
}
}
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_GetIntIdentifierProc( gNetscapeFuncs.getintidentifier, intid);
}
return NULL;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_IdentifierIsStringProc( gNetscapeFuncs.identifierisstring, identifier);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_UTF8FromIdentifierProc( gNetscapeFuncs.utf8fromidentifier, identifier);
}
return NULL;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_IntFromIdentifierProc( gNetscapeFuncs.intfromidentifier, identifier);
}
return 0;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_CreateObjectProc( gNetscapeFuncs.createobject, instance, aClass);
}
return NULL;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_RetainObjectProc( gNetscapeFuncs.retainobject, npobj);
}
return NULL;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
CallNPN_ReleaseObjectProc( gNetscapeFuncs.releaseobject, npobj);
}
}
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_InvokeProc( gNetscapeFuncs.invoke, instance, npobj, methodName, args, argCount, result);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_InvokeDefaultProc( gNetscapeFuncs.invokeDefault, instance, npobj, args, argCount, result);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_EvaluateProc( gNetscapeFuncs.evaluate, instance, npobj, script, result);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_GetPropertyProc( gNetscapeFuncs.getproperty, instance, npobj, propertyName, result);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_SetPropertyProc( gNetscapeFuncs.setproperty, instance, npobj, propertyName, value);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_RemovePropertyProc( gNetscapeFuncs.removeproperty, instance, npobj, propertyName);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_HasPropertyProc( gNetscapeFuncs.hasproperty, instance, npobj, propertyName);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return CallNPN_HasMethodProc( gNetscapeFuncs.hasmethod, instance, npobj, methodName);
}
return false;
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
CallNPN_ReleaseVariantValueProc( gNetscapeFuncs.releasevariantvalue, variant);
}
}
{
int navMinorVers = gNetscapeFuncs.version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
CallNPN_SetExceptionProc( gNetscapeFuncs.setexception, npobj, message);
}
}
* Wrapper functions : Netscape Navigator -> plugin
*
* These functions let the plugin developer just create the APIs
- * as documented and defined in npapi.h, without needing to
+ * as documented and defined in npapi.h, without needing to
* install those functions in the function table or worry about
* setting up globals for 68K plugins.
*
NPError ret;
PLUGINDEBUGSTR("New");
ret = NPP_New(pluginType, instance, mode, argc, argn, argv, saved);
- return ret;
+ return ret;
}
NPError
void
Private_URLNotify(NPP instance, const char* url,
NPReason reason, void* notifyData)
-
+
{
PLUGINDEBUGSTR("URLNotify");
NPP_URLNotify(instance, url, reason, notifyData);
return NULL;
}
-/***********************************************************************
+/***********************************************************************
*
* These functions are located automagically by netscape.
*
NPError err = NPERR_NO_ERROR;
PLUGINDEBUGSTR("NP_Initialize");
-
+
/* validate input parameters */
if ((nsTable == NULL) || (pluginFuncs == NULL))
err = NPERR_INVALID_FUNCTABLE_ERROR;
-
+
/*
* Check the major version passed in Netscape's function table.
* We won't load if the major version is newer than what we expect.
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
if (nsTable->size < sizeof(NPNetscapeFuncs))
err = NPERR_INVALID_FUNCTABLE_ERROR;
- if (pluginFuncs->size < sizeof(NPPluginFuncs))
+ if (pluginFuncs->size < sizeof(NPPluginFuncs))
err = NPERR_INVALID_FUNCTABLE_ERROR;
}
-
+
if (err == NPERR_NO_ERROR) {
/*
* Copy all the fields of Netscape function table into our
gNetscapeFuncs.getJavaPeer = nsTable->getJavaPeer;
}
if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
- {
+ {
gNetscapeFuncs.geturlnotify = nsTable->geturlnotify;
gNetscapeFuncs.posturlnotify = nsTable->posturlnotify;
}
gNetscapeFuncs.invalidateregion = nsTable->invalidateregion;
gNetscapeFuncs.forceredraw = nsTable->forceredraw;
if( navMinorVers >= 14 )
- {
- // NPRuntime support
+ {
+ // NPRuntime support
gNetscapeFuncs.getstringidentifier = nsTable->getstringidentifier;
gNetscapeFuncs.getstringidentifiers = nsTable->getstringidentifiers;
gNetscapeFuncs.getintidentifier = nsTable->getintidentifier;
pluginFuncs->getvalue = NewNPP_GetValueProc(Private_GetValue);
pluginFuncs->setvalue = NewNPP_SetValueProc(Private_SetValue);
if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
- {
- pluginFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify);
+ {
+ pluginFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify);
}
#ifdef OJI
if( navMinorVers >= NPVERS_HAS_LIVECONNECT )
#else
pluginFuncs->javaClass = NULL;
#endif
-
+
err = NPP_Initialize();
}
-
+
return err;
}
*
* The Original Code is Mozilla Communicator client code.
*
- * The Initial Developer of the Original Code is
+ * The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
-// PLUGIN DLL entry points
+// PLUGIN DLL entry points
//
// These are the Windows specific DLL entry points. They must be exoprted
//
#endif
NP_GetEntryPoints(NPPluginFuncs* pFuncs)
{
- // trap a NULL ptr
+ // trap a NULL ptr
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
// if the plugin's function table is smaller than the plugin expects,
- // then they are incompatible, and should return an error
+ // then they are incompatible, and should return an error
pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
pFuncs->newp = NPP_New;
pFuncs->writeready = NPP_WriteReady;
pFuncs->write = NPP_Write;
pFuncs->print = NPP_Print;
- pFuncs->event = 0; /// reserved
+ pFuncs->event = 0; /// reserved
pFuncs->getvalue = NPP_GetValue;
pFuncs->setvalue = NPP_SetValue;
#ifdef __MINGW32__
extern "C" __declspec(dllexport) NPError WINAPI
#else
-NPError WINAPI NP_EXPORT
+NPError WINAPI NP_EXPORT
#endif
NP_Initialize(NPNetscapeFuncs* pFuncs)
{
- // trap a NULL ptr
+ // trap a NULL ptr
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
- g_pNavigatorFuncs = pFuncs; // save it for future reference
+ g_pNavigatorFuncs = pFuncs; // save it for future reference
// if the plugin's major ver level is lower than the Navigator's,
- // then they are incompatible, and should return an error
+ // then they are incompatible, and should return an error
if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
return NPERR_INCOMPATIBLE_VERSION_ERROR;
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
g_pluginFuncs->urlnotify = NPP_URLNotify;
}
-
+
if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) {
g_pluginFuncs->javaClass = Private_GetJavaClass();
}
//
// called immediately before the plugin DLL is unloaded.
// This functio shuold check for some ref count on the dll to see if it is
-// unloadable or it needs to stay in memory.
+// unloadable or it needs to stay in memory.
//
#ifdef __MINGW32__
extern "C" __declspec(dllexport) NPError WINAPI
#else
-NPError WINAPI NP_EXPORT
+NPError WINAPI NP_EXPORT
#endif
NP_Shutdown()
{
return NPERR_NO_ERROR;
}
-// END - PLUGIN DLL entry points
+// END - PLUGIN DLL entry points
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
/* Creates a new stream of data from the plug-in to be interpreted
by Netscape in the current window.
*/
-NPError NPN_NewStream(NPP instance, NPMIMEType type,
+NPError NPN_NewStream(NPP instance, NPMIMEType type,
const char* target, NPStream** stream)
{
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
return result;
}
-/* Closes a stream object.
+/* Closes a stream object.
reason indicates why the stream was closed.
*/
NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->getstringidentifier(name);
}
return NULL;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
g_pNavigatorFuncs->getstringidentifiers(names, nameCount, identifiers);
}
}
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->getintidentifier(intid);
}
return NULL;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->identifierisstring(identifier);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->utf8fromidentifier(identifier);
}
return NULL;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->intfromidentifier(identifier);
}
return 0;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->createobject(instance, aClass);
}
return NULL;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->retainobject(npobj);
}
return NULL;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
g_pNavigatorFuncs->releaseobject(npobj);
}
}
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->invoke(instance, npobj, methodName, args, argCount, result);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->invokeDefault(instance, npobj, args, argCount, result);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->evaluate(instance, npobj, script, result);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->getproperty(instance, npobj, propertyName, result);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->setproperty(instance, npobj, propertyName, value);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->removeproperty(instance, npobj, propertyName);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->hasproperty(instance, npobj, propertyName);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
return g_pNavigatorFuncs->hasmethod(instance, npobj, methodName);
}
return false;
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
g_pNavigatorFuncs->releasevariantvalue(variant);
}
}
{
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
if( navMinorVers >= 14 )
- {
+ {
g_pNavigatorFuncs->setexception(npobj, message);
}
}
}
static bool boolValue(const char *value) {
- return ( !strcmp(value, "1") ||
+ return ( !strcmp(value, "1") ||
!strcasecmp(value, "true") ||
!strcasecmp(value, "yes") );
}
return href;
}
- /* find last path component and replace it */
+ /* find last path component and replace it */
while( '/' != *pathend)
--pathend;
url = ++p;
continue;
}
- if( '.' != *p )
+ if( '.' != *p )
break;
++p;
if( '\0' == *p )
}
else
{
- if( '/' != *p )
+ if( '/' != *p )
break;
/* relative url starts with '../' */
++p;
class VlcPlugin
{
public:
- VlcPlugin( NPP, uint16 );
+ VlcPlugin( NPP, uint16 );
virtual ~VlcPlugin();
NPError init(int argc, char* const argn[], char* const argv[]);
- libvlc_instance_t* getVLC()
+ libvlc_instance_t* getVLC()
{ return libvlc_instance; };
NPP getBrowser()
{ return p_browser; };
FillRect( hdc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH) );
SetTextColor(hdc, RGB(255, 255, 255));
SetBkColor(hdc, RGB(0, 0, 0));
- DrawText( hdc, WINDOW_TEXT, strlen(WINDOW_TEXT), &rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
+ DrawText( hdc, WINDOW_TEXT, strlen(WINDOW_TEXT), &rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
EndPaint( p_hwnd, &paintstruct );
return 0L;
#define __NEWRES_H__
#if !defined(UNDER_CE)
- #define UNDER_CE _WIN32_WCE
+ #define UNDER_CE _WIN32_WCE
#endif
#if defined(_WIN32_WCE)
- #if !defined(WCEOLE_ENABLE_DIALOGEX)
- #define DIALOGEX DIALOG DISCARDABLE
- #endif
- #include <commctrl.h>
- #define SHMENUBAR RCDATA
- #if defined(WIN32_PLATFORM_PSPC) && (_WIN32_WCE >= 300)
- #include <aygshell.h>
- #else
- #define I_IMAGENONE (-2)
- #define NOMENU 0xFFFF
- #define IDS_SHNEW 1
+ #if !defined(WCEOLE_ENABLE_DIALOGEX)
+ #define DIALOGEX DIALOG DISCARDABLE
+ #endif
+ #include <commctrl.h>
+ #define SHMENUBAR RCDATA
+ #if defined(WIN32_PLATFORM_PSPC) && (_WIN32_WCE >= 300)
+ #include <aygshell.h>
+ #else
+ #define I_IMAGENONE (-2)
+ #define NOMENU 0xFFFF
+ #define IDS_SHNEW 1
- #define IDM_SHAREDNEW 10
- #define IDM_SHAREDNEWDEFAULT 11
- #endif
+ #define IDM_SHAREDNEW 10
+ #define IDM_SHAREDNEWDEFAULT 11
+ #endif
#endif // _WIN32_WCE
#ifdef RC_INVOKED
#ifndef _INC_WINDOWS
#define _INC_WINDOWS
- #include "winuser.h" // extract from windows header
+ #include "winuser.h" // extract from windows header
#endif
#endif
/* XPM */
static const char *const familiar_forwardb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" .. ... ",
/* XPM */
static const char *const familiar_openb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" .. ",
/* XPM */
static const char *const familiar_pauseb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" .... .... ",
/* XPM */
static const char *const familiar_playb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" .. ",
/* XPM */
static const char *const familiar_playlistb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ............ ",
" ............ ",
/* XPM */
static const char *const familiar_preferencesb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ....... ",
/* XPM */
static const char *const familiar_rewindb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ... .. ",
/* XPM */
static const char *const familiar_stopb16x16_xpm[] = {
"16 16 2 1",
-" c None",
-". c #000000",
+" c None",
+". c #000000",
" ",
" ",
" ",
#define ID_FILE_NETWORKSTREAM 40013
// Next default values for new objects
-//
+//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 104
if( *pi_nb_filters + 1 > AOUT_MAX_FILTERS )
{
msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
_("The maximum number of filters (%d) was reached."),
AOUT_MAX_FILTERS );
return -1;
{
ReleaseFilter( pp_filters[0] );
msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
_("The maximum number of filters (%d) was reached."),
AOUT_MAX_FILTERS );
return -1;
{
ReleaseFilter( pp_filters[0] );
msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
- intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+ intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
_("The maximum number of filters (%d) was reached."),
AOUT_MAX_FILTERS );
return -1;
if( !p_new ) RAISENULL( "Out of memory" );
/** \todo Look for interface settings. If we don't have any, add -I dummy */
- /* Because we probably don't want a GUI by default */
+ /* Because we probably don't want a GUI by default */
if( libvlc_InternalInit( p_libvlc_int, argc, argv ) )
RAISENULL( "VLC initialization failed" );
p_new->p_callback_list = NULL;
vlc_mutex_init(p_libvlc_int, &p_new->instance_lock);
vlc_mutex_init(p_libvlc_int, &p_new->event_callback_lock);
-
+
libvlc_event_init(p_new, p_e);
return p_new;
libvlc_media_list_unlock( p_dmlist->p_mlist );
return;
}
-
+
libvlc_media_list_lock( p_dmlist->p_mlist );
libvlc_media_list_add_media_descriptor( p_dmlist->p_mlist, p_md, NULL );
libvlc_media_list_unlock( p_dmlist->p_mlist );
if( libvlc_tag_query_match( p_dmlist->p_query, p_md, NULL ) )
{
int i;
- libvlc_media_list_lock( p_dmlist->p_mlist );
+ libvlc_media_list_lock( p_dmlist->p_mlist );
i = libvlc_media_list_index_of_item( p_dmlist->p_mlist, p_md, NULL );
if ( i < 0 )
{
/* We've missed one item addition, that could happen especially
* if we add item in a threaded maner, so we just ignore */
libvlc_media_list_unlock( p_dmlist->p_mlist );
- //libvlc_media_descriptor_unlock( p_md );
+ //libvlc_media_descriptor_unlock( p_md );
return;
}
libvlc_media_list_remove_index( p_dmlist->p_mlist, i, NULL );
libvlc_media_list_retain( p_mlist );
p_dmlist->p_media_provider = p_mlist;
- libvlc_media_list_lock( p_mlist );
-
+ libvlc_media_list_lock( p_mlist );
+
count = libvlc_media_list_count( p_mlist, p_e );
/* This should be running in a thread, a good plan to achieve that
libvlc_event_attach( p_em, libvlc_MediaListItemDeleted,
dynamic_list_remove_item, p_dmlist, p_e );
- libvlc_media_list_unlock( p_mlist );
+ libvlc_media_list_unlock( p_mlist );
/* Make sure item added/removed will gain/loose our mark */
p_em = libvlc_media_list_event_manager( p_dmlist->p_mlist, p_e );
libvlc_exception_raise( p_e, "No Memory left" );
return;
}
-
+
listener->event_type = event_type;
listener->p_user_data = p_user_data;
listener->pf_callback = pf_callback;
libvlc_media_list_t * p_submlist )
{
trace("\n");
- int count = libvlc_media_list_count( p_submlist, NULL );
+ int count = libvlc_media_list_count( p_submlist, NULL );
int i;
uninstall_media_list_observer( p_mlist, p_submlist );
/**************************************************************************
- * add_item (private)
+ * add_item (private)
**************************************************************************/
static void
add_item( libvlc_media_list_t * p_mlist, libvlc_media_descriptor_t * p_md )
p_md, NULL );
install_flat_mlist_observer( p_mlist );
libvlc_media_list_unlock( p_mlist->p_flat_mlist );
-
+
}
}
}
/**************************************************************************
- * remove_item (private)
+ * remove_item (private)
**************************************************************************/
static void
remove_item( libvlc_media_list_t * p_mlist, libvlc_media_descriptor_t * p_md )
libvlc_media_list_t * p_submlist,
libvlc_media_descriptor_t * p_md )
{
- libvlc_media_descriptor_t * p_md_insub;
- int count = libvlc_media_list_count( p_submlist, NULL );
+ libvlc_media_descriptor_t * p_md_insub;
+ int count = libvlc_media_list_count( p_submlist, NULL );
int i;
trace("p_md '%s'\n", p_md->p_input_item->psz_name);
subitems_created, p_mlist, NULL );
/* Add in our root */
- uninstall_media_list_observer( p_mlist, p_mlist );
+ uninstall_media_list_observer( p_mlist, p_mlist );
libvlc_media_list_add_media_descriptor( p_mlist, p_md, NULL );
install_media_list_observer( p_mlist, p_mlist );
}
libvlc_media_descriptor_t * p_md; /* The media_descriptor from which the
* mlist comes, if any. */
DECL_ARRAY(void *) items;
-
+
/* Other way to see that media list */
/* Used in flat_media_list.c */
libvlc_media_list_t * p_flat_mlist;
libvlc_media_list_t * p_mlist;
};
-/*
+/*
* Event Handling
*/
/* Example usage
libvlc_log_t *libvlc_log_open( const libvlc_instance_t *p_instance, libvlc_exception_t *p_e )
{
-
+
struct libvlc_log_t *p_log =
(struct libvlc_log_t *)malloc(sizeof(struct libvlc_log_t));
libvlc_event_t event;
p_md_child = libvlc_media_descriptor_new_from_input_item(
- p_md->p_libvlc_instance,
+ p_md->p_libvlc_instance,
p_event->u.input_item_subitem_added.p_new_child, NULL );
/* Add this to our media list */
vlc_dictionary_init( &p_md->tags, 1 );
p_md->p_event_manager = libvlc_event_manager_new( p_md, p_instance, p_e );
- libvlc_event_manager_register_event_type( p_md->p_event_manager,
+ libvlc_event_manager_register_event_type( p_md->p_event_manager,
libvlc_MediaDescriptorMetaChanged, p_e );
- libvlc_event_manager_register_event_type( p_md->p_event_manager,
+ libvlc_event_manager_register_event_type( p_md->p_event_manager,
libvlc_MediaDescriptorSubItemAdded, p_e );
vlc_gc_incref( p_md->p_input_item );
if( !tag || !key )
return;
-
+
p_ts = vlc_dictionary_value_for_key( &p_md->tags, key );
if( !p_ts )
p_ts->ppsz_tags = malloc(sizeof(char*)*(p_ts->i_count));
else
p_ts->ppsz_tags = realloc(p_ts->ppsz_tags, sizeof(char*)*(p_ts->i_count));
-
+
p_ts->ppsz_tags[p_ts->i_count-1] = strdup( tag );
}
if( !tag || !key )
return;
-
+
p_ts = vlc_dictionary_value_for_key( &p_md->tags, key );
if( !p_ts )
if( !key )
return 0;
-
+
p_ts = vlc_dictionary_value_for_key( &p_md->tags, key );
if( !p_ts )
if( !key )
return NULL;
-
+
p_ts = vlc_dictionary_value_for_key( &p_md->tags, key );
if( !p_ts )
return NULL;
-
+
return strdup( p_ts->ppsz_tags[i] );
}
libvlc_exception_t * p_e )
{
libvlc_media_discoverer_t * p_mdis;
-
+
p_mdis = malloc(sizeof(libvlc_media_discoverer_t));
if( !p_mdis )
{
vlc_ServicesDiscoveryItemRemoved,
services_discovery_item_removed,
p_mdis );
-
+
services_discovery_Start( p_mdis->p_sd );
/* Here we go */
*
* Object lock is NOT held.
*/
-static void release_input_thread( libvlc_media_instance_t *p_mi )
+static void release_input_thread( libvlc_media_instance_t *p_mi )
{
input_thread_t *p_input_thread;
vlc_bool_t should_destroy;
if( !p_input_thread )
return;
-
+
/* release for previous vlc_object_get */
vlc_object_release( p_input_thread );
* Object lock is held.
*/
input_thread_t *libvlc_get_input_thread( libvlc_media_instance_t *p_mi,
- libvlc_exception_t *p_e )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
{
libvlc_media_instance_t * p_mi = p_userdata;
vlc_value_t val;
-
+
if (!strcmp(psz_cmd, "intf" /* "-change" no need to go further */))
{
input_thread_t * p_input = (input_thread_t *)p_this;
}
p_mi->i_input_id = p_input->i_object_id;
-
+
/* will be released in media_instance_release() */
vlc_object_yield( p_input );
return;
vlc_mutex_lock( &p_mi->object_lock );
-
+
p_mi->i_refcount--;
if( p_mi->i_refcount > 0 )
vlc_mutex_destroy( &p_mi->object_lock );
libvlc_event_manager_release( p_mi->p_event_manager );
-
+
release_input_thread( p_mi );
libvlc_media_descriptor_release( p_mi->p_md );
libvlc_media_descriptor_retain( p_md );
p_mi->p_md = p_md;
-
+
/* The policy here is to ignore that we were created using a different
* libvlc_instance, because we don't really care */
p_mi->p_libvlc_instance = p_md->p_libvlc_instance;
{
input_thread_t * p_input_thread;
- if( (p_input_thread = libvlc_get_input_thread( p_mi, p_e )) )
+ if( (p_input_thread = libvlc_get_input_thread( p_mi, p_e )) )
{
- /* A thread alread exists, send it a play message */
+ /* A thread alread exists, send it a play message */
vlc_value_t val;
val.i_int = PLAYING_S;
libvlc_exception_clear( p_e );
vlc_mutex_lock( &p_mi->object_lock );
-
+
if( !p_mi->p_md )
{
libvlc_exception_raise( p_e, "no associated media descriptor" );
void libvlc_media_instance_set_position(
libvlc_media_instance_t *p_mi,
float position,
- libvlc_exception_t *p_e )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
float libvlc_media_instance_get_fps(
libvlc_media_instance_t *p_mi,
- libvlc_exception_t *p_e)
+ libvlc_exception_t *p_e)
{
double f_fps = 0.0;
input_thread_t *p_input_thread;
vlc_bool_t libvlc_media_instance_will_play(
libvlc_media_instance_t *p_mi,
- libvlc_exception_t *p_e)
+ libvlc_exception_t *p_e)
{
input_thread_t *p_input_thread =
libvlc_get_input_thread ( p_mi, p_e);
if ( !p_input_thread )
return VLC_FALSE;
- if ( !p_input_thread->b_die && !p_input_thread->b_dead )
+ if ( !p_input_thread->b_die && !p_input_thread->b_dead )
{
vlc_object_release( p_input_thread );
return VLC_TRUE;
void libvlc_media_instance_set_rate(
libvlc_media_instance_t *p_mi,
float rate,
- libvlc_exception_t *p_e )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
libvlc_media_library_new( libvlc_instance_t * p_inst,
libvlc_exception_t * p_e )
{
- (void)p_e;
+ (void)p_e;
libvlc_media_library_t * p_mlib;
- p_mlib = malloc(sizeof(libvlc_media_library_t));
+ p_mlib = malloc(sizeof(libvlc_media_library_t));
- if( !p_mlib )
- return NULL;
+ if( !p_mlib )
+ return NULL;
- p_mlib->p_libvlc_instance = p_inst;
+ p_mlib->p_libvlc_instance = p_inst;
p_mlib->i_refcount = 1;
p_mlib->p_mlist = NULL;
p_mlib->p_event_manager = libvlc_event_manager_new( p_mlib, p_inst, p_e );
- return p_mlib;
+ return p_mlib;
}
/**************************************************************************
return;
libvlc_event_manager_release( p_mlib->p_event_manager );
- free( p_mlib );
+ free( p_mlib );
}
/**************************************************************************
**************************************************************************/
void libvlc_media_library_retain( libvlc_media_library_t * p_mlib )
{
- p_mlib->i_refcount++;
+ p_mlib->i_refcount++;
}
/**************************************************************************
libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e )
{
- (void)p_e;
+ (void)p_e;
if( p_mlib->p_mlist )
libvlc_media_list_retain( p_mlib->p_mlist );
return p_mlib->p_mlist;
if( !p_mlist )
return NULL;
-
+
p_mlist->p_libvlc_instance = p_inst;
p_mlist->p_event_manager = libvlc_event_manager_new( p_mlist, p_inst, p_e );
}
vlc_mutex_init( p_inst->p_libvlc_int, &p_mlist->object_lock );
-
+
ARRAY_INIT(p_mlist->items);
p_mlist->i_refcount = 1;
p_mlist->p_md = NULL;
p_mlist->i_refcount--;
if( p_mlist->i_refcount > 0 )
{
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->object_lock );
return;
}
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->object_lock );
/* Refcount null, time to free */
*
* Lock should be hold when entering.
**************************************************************************/
-void libvlc_media_list_add_media_descriptor(
+void libvlc_media_list_add_media_descriptor(
libvlc_media_list_t * p_mlist,
libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e )
*
* Lock should be hold when entering.
**************************************************************************/
-void libvlc_media_list_insert_media_descriptor(
+void libvlc_media_list_insert_media_descriptor(
libvlc_media_list_t * p_mlist,
libvlc_media_descriptor_t * p_md,
int index,
p_current_mlist = libvlc_media_descriptor_subitems( p_md, NULL );
libvlc_media_descriptor_release( p_md );
-
+
if( !p_current_mlist )
return NULL;
/* Not found, shouldn't happen if the p_path is not empty */
if( p_current_mlist != p_mlist )
libvlc_media_list_release( p_current_mlist );
- return NULL;
+ return NULL;
}
/**************************************************************************
p_current_mlist = libvlc_media_descriptor_subitems( p_md, NULL );
libvlc_media_descriptor_release( p_md );
-
+
if( !p_current_mlist )
return NULL;
/* Not found, shouldn't happen if the p_path is not empty */
if( p_current_mlist != p_mlist )
libvlc_media_list_release( p_current_mlist );
- return NULL;
+ return NULL;
}
/**************************************************************************
libvlc_media_descriptor_t * p_md = libvlc_media_list_item_at_path( p_mlist, path );
if( !p_md )
return NULL;
-
+
ret = libvlc_media_descriptor_subitems( p_md, NULL );
libvlc_media_descriptor_release( p_md );
-
- return ret;
+
+ return ret;
}
#endif
static libvlc_media_list_path_t
get_next_path( libvlc_media_list_player_t * p_mlp )
{
- /* We are entered with libvlc_media_list_lock( p_mlp->p_list ) */
- libvlc_media_list_path_t ret;
- libvlc_media_list_t * p_parent_of_playing_item;
- libvlc_media_list_t * p_sublist_of_playing_item;
+ /* We are entered with libvlc_media_list_lock( p_mlp->p_list ) */
+ libvlc_media_list_path_t ret;
+ libvlc_media_list_t * p_parent_of_playing_item;
+ libvlc_media_list_t * p_sublist_of_playing_item;
p_sublist_of_playing_item = libvlc_media_list_sublist_at_path(
p_mlp->p_mlist,
p_mlp->current_playing_item_path );
-
+
/* If item just gained a sublist just play it */
if( p_sublist_of_playing_item )
{
ret = libvlc_media_list_path_copy( p_mlp->current_playing_item_path );
- while( ret[deepness-1] >= libvlc_media_list_count( p_parent_of_playing_item, NULL ) )
- {
+ while( ret[deepness-1] >= libvlc_media_list_count( p_parent_of_playing_item, NULL ) )
+ {
deepness--;
if( deepness <= 0 )
{
ret );
}
libvlc_media_list_release( p_parent_of_playing_item );
- return ret;
+ return ret;
}
/**************************************************************************
* media_instance_reached_end (private) (Event Callback)
**************************************************************************/
-static void
+static void
media_instance_reached_end( const libvlc_event_t * p_event,
void * p_user_data )
{
- libvlc_media_list_player_t * p_mlp = p_user_data;
- libvlc_media_instance_t * p_mi = p_event->p_obj;
+ libvlc_media_list_player_t * p_mlp = p_user_data;
+ libvlc_media_instance_t * p_mi = p_event->p_obj;
libvlc_media_descriptor_t *p_md, * p_current_md;
p_md = libvlc_media_instance_get_media_descriptor( p_mi, NULL );
p_current_md = libvlc_media_list_item_at_path(
p_mlp->p_mlist,
p_mlp->current_playing_item_path );
- if( p_md != p_current_md )
- {
- msg_Warn( p_mlp->p_libvlc_instance->p_libvlc_int,
- "We are not sync-ed with the media instance" );
+ if( p_md != p_current_md )
+ {
+ msg_Warn( p_mlp->p_libvlc_instance->p_libvlc_int,
+ "We are not sync-ed with the media instance" );
libvlc_media_descriptor_release( p_md );
libvlc_media_descriptor_release( p_current_md );
- return;
- }
+ return;
+ }
libvlc_media_descriptor_release( p_md );
libvlc_media_descriptor_release( p_current_md );
- libvlc_media_list_player_next( p_mlp, NULL );
+ libvlc_media_list_player_next( p_mlp, NULL );
}
/**************************************************************************
* playlist_item_deleted (private) (Event Callback)
**************************************************************************/
-static void
+static void
mlist_item_deleted( const libvlc_event_t * p_event, void * p_user_data )
{
- libvlc_media_descriptor_t * p_current_md;
- libvlc_media_list_player_t * p_mlp = p_user_data;
- libvlc_media_list_t * p_emitting_mlist = p_event->p_obj;
+ libvlc_media_descriptor_t * p_current_md;
+ libvlc_media_list_player_t * p_mlp = p_user_data;
+ libvlc_media_list_t * p_emitting_mlist = p_event->p_obj;
/* XXX: need if p_mlp->p_current_playing_index is beyond */
p_current_md = libvlc_media_list_item_at_path(
p_mlp->p_mlist,
p_mlp->current_playing_item_path );
- if( p_event->u.media_list_item_deleted.item == p_current_md &&
- p_emitting_mlist == p_mlp->p_mlist )
- {
- /* We are playing this item, we choose to stop */
- libvlc_media_list_player_stop( p_mlp, NULL );
- }
+ if( p_event->u.media_list_item_deleted.item == p_current_md &&
+ p_emitting_mlist == p_mlp->p_mlist )
+ {
+ /* We are playing this item, we choose to stop */
+ libvlc_media_list_player_stop( p_mlp, NULL );
+ }
}
/**************************************************************************
static void
install_playlist_observer( libvlc_media_list_player_t * p_mlp )
{
- libvlc_event_attach( libvlc_media_list_event_manager( p_mlp->p_mlist, NULL ),
+ libvlc_event_attach( libvlc_media_list_event_manager( p_mlp->p_mlist, NULL ),
libvlc_MediaListItemDeleted, mlist_item_deleted, p_mlp, NULL );
}
static void
install_media_instance_observer( libvlc_media_list_player_t * p_mlp )
{
- libvlc_event_attach( libvlc_media_instance_event_manager( p_mlp->p_mi, NULL ),
+ libvlc_event_attach( libvlc_media_instance_event_manager( p_mlp->p_mi, NULL ),
libvlc_MediaInstanceReachedEnd,
- media_instance_reached_end, p_mlp, NULL );
+ media_instance_reached_end, p_mlp, NULL );
}
static void
uninstall_media_instance_observer( libvlc_media_list_player_t * p_mlp )
{
- libvlc_event_detach( libvlc_media_instance_event_manager( p_mlp->p_mi, NULL ),
+ libvlc_event_detach( libvlc_media_instance_event_manager( p_mlp->p_mi, NULL ),
libvlc_MediaInstanceReachedEnd,
- media_instance_reached_end, p_mlp, NULL );
+ media_instance_reached_end, p_mlp, NULL );
}
/**************************************************************************
libvlc_media_list_path_t path,
libvlc_exception_t * p_e )
{
- libvlc_media_descriptor_t * p_md;
-
- p_md = libvlc_media_list_item_at_path( p_mlp->p_mlist, path );
- if( !p_md )
- {
- if( !libvlc_exception_raised( p_e ) )
- libvlc_exception_raise( p_e, "Can't obtain a media" );
- return;
- }
+ libvlc_media_descriptor_t * p_md;
+ p_md = libvlc_media_list_item_at_path( p_mlp->p_mlist, path );
+ if( !p_md )
+ {
+ if( !libvlc_exception_raised( p_e ) )
+ libvlc_exception_raise( p_e, "Can't obtain a media" );
+ return;
+ }
+
vlc_mutex_lock( &p_mlp->object_lock );
-
+
free( p_mlp->current_playing_item_path );
p_mlp->current_playing_item_path = path;
- /* We are not interested in getting media_descriptor stop event now */
- uninstall_media_instance_observer( p_mlp );
+ /* We are not interested in getting media_descriptor stop event now */
+ uninstall_media_instance_observer( p_mlp );
if( p_md->p_subitems && libvlc_media_list_count( p_md->p_subitems, NULL ) > 0 )
{
libvlc_media_descriptor_t * p_submd;
}
else
libvlc_media_instance_set_media_descriptor( p_mlp->p_mi, p_md, NULL );
-// wait_playing_state(); /* If we want to be synchronous */
- install_media_instance_observer( p_mlp );
+// wait_playing_state(); /* If we want to be synchronous */
+ install_media_instance_observer( p_mlp );
vlc_mutex_unlock( &p_mlp->object_lock );
- libvlc_media_list_unlock( p_mlp->p_mlist );
-
- libvlc_media_descriptor_release( p_md ); /* for libvlc_media_list_item_at_index */
+ libvlc_media_list_unlock( p_mlp->p_mlist );
+
+ libvlc_media_descriptor_release( p_md ); /* for libvlc_media_list_item_at_index */
}
/*
(void)p_e;
libvlc_media_list_player_t * p_mlp;
p_mlp = malloc(sizeof(libvlc_media_list_player_t));
- p_mlp->current_playing_item_path = NULL;
+ p_mlp->current_playing_item_path = NULL;
p_mlp->p_mi = NULL;
p_mlp->p_mlist = NULL;
vlc_mutex_init( p_instance->p_libvlc_int, &p_mlp->object_lock );
libvlc_event_manager_register_event_type( p_mlp->p_event_manager,
libvlc_MediaListPlayerNextItemSet, p_e );
- return p_mlp;
+ return p_mlp;
}
/**************************************************************************
{
vlc_mutex_lock( &p_mlp->object_lock );
- if( p_mlp->p_mi )
- {
- uninstall_media_instance_observer( p_mlp );
- libvlc_media_instance_release( p_mlp->p_mi );
- }
- libvlc_media_instance_retain( p_mi );
- p_mlp->p_mi = p_mi;
+ if( p_mlp->p_mi )
+ {
+ uninstall_media_instance_observer( p_mlp );
+ libvlc_media_instance_release( p_mlp->p_mi );
+ }
+ libvlc_media_instance_retain( p_mi );
+ p_mlp->p_mi = p_mi;
install_media_instance_observer( p_mlp );
libvlc_exception_t * p_e )
{
vlc_mutex_lock( &p_mlp->object_lock );
-
- if( libvlc_media_list_player_is_playing( p_mlp, p_e ) )
+
+ if( libvlc_media_list_player_is_playing( p_mlp, p_e ) )
{
libvlc_media_instance_stop( p_mlp->p_mi, p_e );
/* Don't bother if there was an error. */
libvlc_exception_clear( p_e );
}
- if( p_mlp->p_mlist )
- {
- uninstall_playlist_observer( p_mlp );
- libvlc_media_list_release( p_mlp->p_mlist );
- }
- libvlc_media_list_retain( p_mlist );
- p_mlp->p_mlist = p_mlist;
-
- install_playlist_observer( p_mlp );
+ if( p_mlp->p_mlist )
+ {
+ uninstall_playlist_observer( p_mlp );
+ libvlc_media_list_release( p_mlp->p_mlist );
+ }
+ libvlc_media_list_retain( p_mlist );
+ p_mlp->p_mlist = p_mlist;
+
+ install_playlist_observer( p_mlp );
vlc_mutex_unlock( &p_mlp->object_lock );
}
return; /* Will set to play */
}
- libvlc_media_instance_play( p_mlp->p_mi, p_e );
+ libvlc_media_instance_play( p_mlp->p_mi, p_e );
}
/**************************************************************************
int i_index,
libvlc_exception_t * p_e )
{
- set_current_playing_item( p_mlp, libvlc_media_list_path_with_root_index(i_index), p_e );
+ set_current_playing_item( p_mlp, libvlc_media_list_path_with_root_index(i_index), p_e );
- if( libvlc_exception_raised( p_e ) )
- return;
+ if( libvlc_exception_raised( p_e ) )
+ return;
/* Send the next item event */
libvlc_event_t event;
event.type = libvlc_MediaListPlayerNextItemSet;
libvlc_event_send( p_mlp->p_event_manager, &event );
- libvlc_media_instance_play( p_mlp->p_mi, p_e );
+ libvlc_media_instance_play( p_mlp->p_mi, p_e );
}
/**************************************************************************
libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e )
{
- libvlc_media_list_path_t path = libvlc_media_list_path_of_item( p_mlp->p_mlist, p_md );
+ libvlc_media_list_path_t path = libvlc_media_list_path_of_item( p_mlp->p_mlist, p_md );
if( !path )
{
libvlc_exception_raise( p_e, "No such item in media list" );
return;
}
- set_current_playing_item( p_mlp, path, p_e );
+ set_current_playing_item( p_mlp, path, p_e );
- if( libvlc_exception_raised( p_e ) )
- return;
+ if( libvlc_exception_raised( p_e ) )
+ return;
- libvlc_media_instance_play( p_mlp->p_mi, p_e );
+ libvlc_media_instance_play( p_mlp->p_mi, p_e );
}
/**************************************************************************
void libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e )
{
- libvlc_media_instance_stop( p_mlp->p_mi, p_e );
+ libvlc_media_instance_stop( p_mlp->p_mi, p_e );
vlc_mutex_lock( &p_mlp->object_lock );
- p_mlp->current_playing_item_path = NULL;
+ p_mlp->current_playing_item_path = NULL;
vlc_mutex_unlock( &p_mlp->object_lock );
}
**************************************************************************/
void libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e )
-{
- libvlc_media_list_path_t path;
-
- libvlc_media_list_lock( p_mlp->p_mlist );
-
- path = get_next_path( p_mlp );
-
- if( !path )
- {
- libvlc_media_list_unlock( p_mlp->p_mlist );
- libvlc_exception_raise( p_e, "No more element to play" );
- libvlc_media_list_player_stop( p_mlp, p_e );
- return;
- }
-
- set_current_playing_item( p_mlp, path, p_e );
-
+{
+ libvlc_media_list_path_t path;
+
+ libvlc_media_list_lock( p_mlp->p_mlist );
+
+ path = get_next_path( p_mlp );
+
+ if( !path )
+ {
+ libvlc_media_list_unlock( p_mlp->p_mlist );
+ libvlc_exception_raise( p_e, "No more element to play" );
+ libvlc_media_list_player_stop( p_mlp, p_e );
+ return;
+ }
+
+ set_current_playing_item( p_mlp, path, p_e );
+
libvlc_media_instance_play( p_mlp->p_mi, p_e );
libvlc_media_list_unlock( p_mlp->p_mlist );
if( p_snapshot )
{
p_pic = private_mediacontrol_createRGBPicture( p_snapshot->i_width,
- p_snapshot->i_height,
- VLC_FOURCC( 'p','n','g',' ' ),
- p_snapshot->date,
- p_snapshot->p_data,
- p_snapshot->i_datasize );
+ p_snapshot->i_height,
+ VLC_FOURCC( 'p','n','g',' ' ),
+ p_snapshot->date,
+ p_snapshot->p_data,
+ p_snapshot->i_datasize );
if( !p_pic )
{
free( p_snapshot->p_data );
int
mediacontrol_get_rate( mediacontrol_Instance *self,
- mediacontrol_Exception *exception )
+ mediacontrol_Exception *exception )
{
libvlc_exception_t ex;
libvlc_media_instance_t* p_mi;
void
mediacontrol_set_rate( mediacontrol_Instance *self,
- const int rate,
- mediacontrol_Exception *exception )
+ const int rate,
+ mediacontrol_Exception *exception )
{
libvlc_exception_t ex;
libvlc_media_instance_t* p_mi;
int
mediacontrol_get_fullscreen( mediacontrol_Instance *self,
- mediacontrol_Exception *exception )
+ mediacontrol_Exception *exception )
{
libvlc_exception_t ex;
libvlc_media_instance_t* p_mi;
void
mediacontrol_set_fullscreen( mediacontrol_Instance *self,
- const int b_fullscreen,
- mediacontrol_Exception *exception )
+ const int b_fullscreen,
+ mediacontrol_Exception *exception )
{
libvlc_exception_t ex;
libvlc_media_instance_t* p_mi;
mediacontrol_exception_init( exception );
retval = ( mediacontrol_Instance* )malloc( sizeof( mediacontrol_Instance ) );
- if( !retval )
+ if( !retval )
RAISE_NULL( mediacontrol_InternalException, "Out of memory" );
- /* Prepend a dummy argv[0] so that users of the API do not have to
- do it themselves, and can simply provide the args list. */
- ppsz_argv = malloc( ( argc + 2 ) * sizeof( char * ) ) ;
- if( ! ppsz_argv )
- RAISE_NULL( mediacontrol_InternalException, "Out of memory" );
-
- ppsz_argv[0] = strdup("vlc");
- for ( i_index = 0; i_index < argc; i_index++ )
- ppsz_argv[i_index + 1] = argv[i_index];
- ppsz_argv[argc + 1] = NULL;
-
+ /* Prepend a dummy argv[0] so that users of the API do not have to
+ do it themselves, and can simply provide the args list. */
+ ppsz_argv = malloc( ( argc + 2 ) * sizeof( char * ) ) ;
+ if( ! ppsz_argv )
+ RAISE_NULL( mediacontrol_InternalException, "Out of memory" );
+
+ ppsz_argv[0] = strdup("vlc");
+ for ( i_index = 0; i_index < argc; i_index++ )
+ ppsz_argv[i_index + 1] = argv[i_index];
+ ppsz_argv[argc + 1] = NULL;
+
retval->p_instance = libvlc_new( argc + 1, ppsz_argv, &ex );
retval->p_playlist = retval->p_instance->p_libvlc_int->p_playlist;
HANDLE_LIBVLC_EXCEPTION_NULL( &ex );
- return retval;
+ return retval;
};
void
mediacontrol_Instance *
mediacontrol_new_from_instance( libvlc_instance_t* p_instance,
- mediacontrol_Exception *exception )
+ mediacontrol_Exception *exception )
{
mediacontrol_Instance* retval;
retval = ( mediacontrol_Instance* )malloc( sizeof( mediacontrol_Instance ) );
if( ! retval )
- {
+ {
RAISE_NULL( mediacontrol_InternalException, "Out of memory" );
}
retval->p_instance = p_instance;
retval->p_playlist = retval->p_instance->p_libvlc_int->p_playlist;
- return retval;
+ return retval;
}
/**************************************************************************
* Known issues: since moving in the playlist using playlist_Next
* or playlist_Prev implies starting to play items, the a_position
* argument will be only honored for the 1st item in the list.
- *
+ *
* XXX:FIXME split moving in the playlist and playing items two
* different actions or make playlist_<Next|Prev> accept a time
* value to start to play from.
};
vlc_int64_t private_mediacontrol_unit_convert( input_thread_t *p_input,
- mediacontrol_PositionKey from,
- mediacontrol_PositionKey to,
- vlc_int64_t value );
+ mediacontrol_PositionKey from,
+ mediacontrol_PositionKey to,
+ vlc_int64_t value );
vlc_int64_t private_mediacontrol_position2microsecond( input_thread_t *p_input,
- const mediacontrol_Position *pos );
+ const mediacontrol_Position *pos );
/**
* Allocate a RGBPicture structure.
mediacontrol_PlaylistSeq *private_mediacontrol_PlaylistSeq__alloc( int size );
-#define RAISE( c, m ) if( exception ) { exception->code = c; \
+#define RAISE( c, m ) if( exception ) { exception->code = c; \
exception->message = strdup(m); }
#define RAISE_NULL( c, m ) { RAISE( c, m ); return NULL; }
#define RAISE_VOID( c, m ) { RAISE( c, m ); return; }
-#define HANDLE_LIBVLC_EXCEPTION_VOID( e ) if( libvlc_exception_raised( e ) ) { \
- RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
+#define HANDLE_LIBVLC_EXCEPTION_VOID( e ) if( libvlc_exception_raised( e ) ) { \
+ RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
libvlc_exception_clear( e ); \
return; }
-#define HANDLE_LIBVLC_EXCEPTION_NULL( e ) if( libvlc_exception_raised( e ) ) { \
+#define HANDLE_LIBVLC_EXCEPTION_NULL( e ) if( libvlc_exception_raised( e ) ) { \
RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
libvlc_exception_clear( e ); \
return NULL; }
// if( p_input->stream.i_mux_rate == 0 )
// return 0;
-//
+//
// /* Convert an offset into milliseconds. Taken from input_ext-intf.c.
// The 50 hardcoded constant comes from the definition of i_mux_rate :
// i_mux_rate : the rate we read the stream (in units of 50 bytes/s) ;
// 0 if undef */
// if( to == mediacontrol_MediaTime )
// return ( vlc_int64_t )( 1000 * value / 50 / p_input->stream.i_mux_rate );
-//
+//
// if( to == mediacontrol_SampleCount )
// {
// double f_fps;
mediacontrol_exception_create( void )
{
mediacontrol_Exception* exception;
-
+
exception = ( mediacontrol_Exception* )malloc( sizeof( mediacontrol_Exception ) );
mediacontrol_exception_init( exception );
return exception;
#include "vlc_arrays.h"
/* XXX This API is in construction
- *
+ *
* It's goal is to represent a meta tag query
* It should be also able to say if a query can be matched in a media
* descriptor through libvlc_query_match.
libvlc_tag_query_new( libvlc_instance_t * p_inst,
libvlc_exception_t * p_e )
{
- (void)p_e;
+ (void)p_e;
libvlc_tag_query_t * p_q;
- p_q = malloc(sizeof(libvlc_tag_query_t));
+ p_q = malloc(sizeof(libvlc_tag_query_t));
- if( !p_q )
- return NULL;
-
- p_q->p_libvlc_instance = p_inst;
+ if( !p_q )
+ return NULL;
+
+ p_q->p_libvlc_instance = p_inst;
p_q->i_refcount = 1;
p_q->tag = NULL;
p_q->psz_tag_key = NULL;
- return p_q;
+ return p_q;
}
/**************************************************************************
free( p_q->tag );
free( p_q->psz_tag_key );
-
- free( p_q );
+
+ free( p_q );
}
/**************************************************************************
**************************************************************************/
void libvlc_tag_query_retain( libvlc_tag_query_t * p_q )
{
- p_q->i_refcount++;
+ p_q->i_refcount++;
}
/**************************************************************************
int i;
struct libvlc_tags_storage_t * p_ts;
(void)p_e;
-
+
if( !p_q->psz_tag_key )
return 1;
}
int libvlc_video_get_height( libvlc_media_instance_t *p_mi,
- libvlc_exception_t *p_e )
+ libvlc_exception_t *p_e )
{
vout_thread_t *p_vout1 = GetVout( p_mi, p_e );
if( !p_vout1 )
}
int libvlc_video_get_width( libvlc_media_instance_t *p_mi,
- libvlc_exception_t *p_e )
+ libvlc_exception_t *p_e )
{
vout_thread_t *p_vout1 = GetVout( p_mi, p_e );
if( !p_vout1 )
libvlc_drawable_t libvlc_video_get_parent( libvlc_instance_t *p_instance, libvlc_exception_t *p_e )
{
libvlc_drawable_t result;
-
+
result = var_GetInteger( p_instance->p_libvlc_int, "drawable" );
-
+
return result;
}
libvlc_exception_t *p_e )
{
vout_thread_t *p_vout = GetVout( p_mi, p_e );
- vlc_object_detach( p_vout );
+ vlc_object_detach( p_vout );
vlc_object_release( p_vout );
vout_Destroy( p_vout );
void libvlc_vlm_play_media( libvlc_instance_t *p_instance, char *psz_name,
libvlc_exception_t *p_exception )
-
+
{
vlm_t *p_vlm;
int64_t id;
void libvlc_vlm_stop_media( libvlc_instance_t *p_instance, char *psz_name,
libvlc_exception_t *p_exception )
-
+
{
vlm_t *p_vlm;
int64_t id;
void libvlc_vlm_pause_media( libvlc_instance_t *p_instance, char *psz_name,
libvlc_exception_t *p_exception )
-
+
{
vlm_t *p_vlm;
int64_t id;
void libvlc_vlm_seek_media( libvlc_instance_t *p_instance, char *psz_name,
float f_percentage, libvlc_exception_t *p_exception )
-
+
{
vlm_t *p_vlm;
int64_t id;
/*
* dirent.c
*
- * Derived from DIRLIB.C by Matt J. Weinstein
+ * Derived from DIRLIB.C by Matt J. Weinstein
* This note appears in the DIRLIB.H
* DIRLIB.H by M. J. Weinstein Released to public domain 1-Jan-89
*
* Updated by Jeremy Bettis <jeremy@hksys.com>
* Significantly revised and rewinddir, seekdir and telldir added by Colin
* Peters <colin@fu.is.saga-u.ac.jp>
- *
+ *
* $Revision: 1.6 $
* $Author: sam $
* $Date: 2002/11/13 20:51:04 $
struct dirent
{
- long d_ino; /* Always zero. */
- unsigned short d_reclen; /* Always zero. */
- unsigned short d_namlen; /* Length of name in d_name. */
- char d_name[FILENAME_MAX]; /* File name. */
+ long d_ino; /* Always zero. */
+ unsigned short d_reclen; /* Always zero. */
+ unsigned short d_namlen; /* Length of name in d_name. */
+ char d_name[FILENAME_MAX]; /* File name. */
};
typedef struct
{
- /* disk transfer area for this dir */
- WIN32_FIND_DATA dd_dta;
+ /* disk transfer area for this dir */
+ WIN32_FIND_DATA dd_dta;
- /* dirent struct to return from dir (NOTE: this makes this thread
- * safe as long as only one thread uses a particular DIR struct at
- * a time) */
- struct dirent dd_dir;
+ /* dirent struct to return from dir (NOTE: this makes this thread
+ * safe as long as only one thread uses a particular DIR struct at
+ * a time) */
+ struct dirent dd_dir;
- /* findnext handle */
- HANDLE dd_handle;
+ /* findnext handle */
+ HANDLE dd_handle;
- /*
+ /*
* Status of search:
- * 0 = not started yet (next entry to read is first entry)
- * -1 = off the end
- * positive = 0 based index of next entry
- */
- int dd_stat;
-
- /* given path for dir with search pattern (struct is extended) */
- char dd_name[1];
+ * 0 = not started yet (next entry to read is first entry)
+ * -1 = off the end
+ * positive = 0 based index of next entry
+ */
+ int dd_stat;
+
+ /* given path for dir with search pattern (struct is extended) */
+ char dd_name[1];
} DIR;
/*
* Returns a pointer to a DIR structure appropriately filled in to begin
* searching a directory.
*/
-DIR *
+DIR *
vlc_opendir (const CHAR *szPath)
{
DIR *nd;
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
+#ifdef __GNU_LIBRARY__
/* Don't include stdlib.h for non-GNU C libraries because some of them
contain conflicting prototypes for getopt. */
#include <stdlib.h>
When compiling libc, the _ macro is predefined. */
#ifdef HAVE_LIBINTL_H
#include <libintl.h>
-#define _(msgid) gettext (msgid)
+#define _(msgid) gettext (msgid)
#else
-#define _(msgid) (msgid)
+#define _(msgid) (msgid)
#endif
#endif
static enum
{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
}
ordering;
/* Value of POSIXLY_CORRECT environment variable. */
static char *posixly_correct;
\f
-#ifdef __GNU_LIBRARY__
+#ifdef __GNU_LIBRARY__
/* We want to avoid inclusion of string.h with non-GNU libraries
because there are many ways it can cause trouble.
On some systems, it contains special magic macros that don't work
in GCC. */
#include <string.h>
-#define my_index strchr
+#define my_index strchr
#else
/* Avoid depending on library functions or files
const char *str;
int chr;
{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
+ while (*str)
+ {
+ if (*str == chr)
+ return (char *) str;
+ str++;
+ }
+ return 0;
}
/* If using GCC, we can safely declare strlen this way.
static void
store_args(int argc, char *const *argv)
{
- /* XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
- original_argc = argc;
- original_argv = argv;
+ /* XXX This is no good solution. We should rather copy the args so
+ that we can compare them later. But we must not use malloc(3). */
+ original_argc = argc;
+ original_argv = argv;
}
text_set_element(__libc_subinit, store_args);
#endif
exchange(argv)
char **argv;
{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
+ int bottom = first_nonopt;
+ int middle = last_nonopt;
+ int top = optind;
+ char *tem;
+
+ /* Exchange the shorter segment with the far end of the longer segment.
+ That puts the shorter segment into the right place.
+ It leaves the longer segment in the right place overall,
+ but it consists of two parts that need to be swapped next. */
+
+ while (top > middle && middle > bottom)
+ {
+ if (top - middle > middle - bottom)
+ {
+ /* Bottom segment is the short one. */
+ int len = middle - bottom;
+ register int i;
+
+ /* Swap it with the top part of the top segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[top - (middle - bottom) + i];
+ argv[top - (middle - bottom) + i] = tem;
+ }
+ /* Exclude the moved bottom segment from further swapping. */
+ top -= len;
+ }
+ else
+ {
+ /* Top segment is the short one. */
+ int len = top - middle;
+ register int i;
+
+ /* Swap it with the bottom part of the bottom segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[middle + i];
+ argv[middle + i] = tem;
+ }
+ /* Exclude the moved top segment from further swapping. */
+ bottom += len;
+ }
+ }
+
+ /* Update records for the slots the non-options now occupy. */
+
+ first_nonopt += (optind - last_nonopt);
+ last_nonopt = optind;
}
/* Initialize the internal data when the first call is made. */
char *const *argv;
const char *optstring;
{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
+ /* Start processing options with ARGV-element 1 (since ARGV-element 0
+ is the program name); the sequence of previously skipped
+ non-option ARGV-elements is empty. */
- first_nonopt = last_nonopt = optind = 1;
+ first_nonopt = last_nonopt = optind = 1;
- nextchar = NULL;
+ nextchar = NULL;
- posixly_correct = getenv("POSIXLY_CORRECT");
+ posixly_correct = getenv("POSIXLY_CORRECT");
- /* Determine how to handle the ordering of options and nonoptions. */
+ /* Determine how to handle the ordering of options and nonoptions. */
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
+ if (optstring[0] == '-')
+ {
+ ordering = RETURN_IN_ORDER;
+ ++optstring;
+ }
+ else if (optstring[0] == '+')
+ {
+ ordering = REQUIRE_ORDER;
+ ++optstring;
+ }
+ else if (posixly_correct != NULL)
+ ordering = REQUIRE_ORDER;
+ else
+ ordering = PERMUTE;
#ifdef _LIBC
- if (posixly_correct == NULL
- && argc == original_argc && argv == original_argv)
- {
- /* Bash 2.0 puts a special variable in the environment for each
- command it runs, specifying which ARGV elements are the results of
- file name wildcard expansion and therefore should not be
- considered as options. */
- char var[100];
-
- sprintf(var, "_%d_GNU_nonoption_argv_flags_", getpid());
- nonoption_flags = getenv(var);
- if (nonoption_flags == NULL)
- nonoption_flags_len = 0;
- else
- nonoption_flags_len = strlen(nonoption_flags);
- }
- else
- nonoption_flags_len = 0;
+ if (posixly_correct == NULL
+ && argc == original_argc && argv == original_argv)
+ {
+ /* Bash 2.0 puts a special variable in the environment for each
+ command it runs, specifying which ARGV elements are the results of
+ file name wildcard expansion and therefore should not be
+ considered as options. */
+ char var[100];
+
+ sprintf(var, "_%d_GNU_nonoption_argv_flags_", getpid());
+ nonoption_flags = getenv(var);
+ if (nonoption_flags == NULL)
+ nonoption_flags_len = 0;
+ else
+ nonoption_flags_len = strlen(nonoption_flags);
+ }
+ else
+ nonoption_flags_len = 0;
#endif
- return optstring;
+ return optstring;
}
\f
/* Scan elements of ARGV (whose length is ARGC) for option characters
int *longind;
int long_only;
{
- optarg = NULL;
-
- if (!__getopt_initialized || optind == 0)
- {
- optstring = _getopt_initialize(argc, argv, optstring);
- optind = 1; /* Don't scan ARGV[0], the program name. */
- __getopt_initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
+ optarg = NULL;
+
+ if (!__getopt_initialized || optind == 0)
+ {
+ optstring = _getopt_initialize(argc, argv, optstring);
+ optind = 1; /* Don't scan ARGV[0], the program name. */
+ __getopt_initialized = 1;
+ }
+
+ /* Test whether ARGV[optind] points to a non-option argument.
+ Either it does not have option syntax, or there is an environment flag
+ from the shell indicating it is not an option. The later information
+ is only used when the used in the GNU libc. */
#ifdef _LIBC
-#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && nonoption_flags[optind] == '1'))
+#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
+ || (optind < nonoption_flags_len \
+ && nonoption_flags[optind] == '1'))
#else
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
#endif
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp(argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (ordering == REQUIRE_ORDER)
- return -1;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index(optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp(p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar)
- == (unsigned int) strlen(p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (opterr)
- fprintf(stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen(nextchar);
- optind++;
- optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- {
- if (argv[optind - 1][1] == '-')
- /* --option */
- fprintf(stderr,
- _("%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
- else
- /* +option or -option */
- fprintf(stderr,
- _("%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
- }
-
- nextchar += strlen(nextchar);
-
- optopt = pfound->val;
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf(stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen(nextchar);
- optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen(nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index(optstring, *nextchar) == NULL)
- {
- if (opterr)
- {
- if (argv[optind][1] == '-')
- /* --option */
- fprintf(stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
- else
- /* +option or -option */
- fprintf(stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
- }
- nextchar = (char *) "";
- optind++;
- optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index(optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (opterr)
- {
- if (posixly_correct)
- /* 1003.2 specifies the format of this message. */
- fprintf(stderr, _("%s: illegal option -- %c\n"),
- argv[0], c);
- else
- fprintf(stderr, _("%s: invalid option -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf(stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp(p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar) == strlen(p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (opterr)
- fprintf(stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen(nextchar);
- optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- fprintf(stderr, _("\
+ if (nextchar == NULL || *nextchar == '\0')
+ {
+ /* Advance to the next ARGV-element. */
+
+ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+ moved back by the user (who may also have changed the arguments). */
+ if (last_nonopt > optind)
+ last_nonopt = optind;
+ if (first_nonopt > optind)
+ first_nonopt = optind;
+
+ if (ordering == PERMUTE)
+ {
+ /* If we have just processed some options following some non-options,
+ exchange them so that the options come first. */
+
+ if (first_nonopt != last_nonopt && last_nonopt != optind)
+ exchange((char **) argv);
+ else if (last_nonopt != optind)
+ first_nonopt = optind;
+
+ /* Skip any additional non-options
+ and extend the range of non-options previously skipped. */
+
+ while (optind < argc && NONOPTION_P)
+ optind++;
+ last_nonopt = optind;
+ }
+
+ /* The special ARGV-element `--' means premature end of options.
+ Skip it like a null option,
+ then exchange with previous non-options as if it were an option,
+ then skip everything else like a non-option. */
+
+ if (optind != argc && !strcmp(argv[optind], "--"))
+ {
+ optind++;
+
+ if (first_nonopt != last_nonopt && last_nonopt != optind)
+ exchange((char **) argv);
+ else if (first_nonopt == last_nonopt)
+ first_nonopt = optind;
+ last_nonopt = argc;
+
+ optind = argc;
+ }
+
+ /* If we have done all the ARGV-elements, stop the scan
+ and back over any non-options that we skipped and permuted. */
+
+ if (optind == argc)
+ {
+ /* Set the next-arg-index to point at the non-options
+ that we previously skipped, so the caller will digest them. */
+ if (first_nonopt != last_nonopt)
+ optind = first_nonopt;
+ return -1;
+ }
+
+ /* If we have come to a non-option and did not permute it,
+ either stop the scan or describe it to the caller and pass it by. */
+
+ if (NONOPTION_P)
+ {
+ if (ordering == REQUIRE_ORDER)
+ return -1;
+ optarg = argv[optind++];
+ return 1;
+ }
+
+ /* We have found another option-ARGV-element.
+ Skip the initial punctuation. */
+
+ nextchar = (argv[optind] + 1
+ + (longopts != NULL && argv[optind][1] == '-'));
+ }
+
+ /* Decode the current option-ARGV-element. */
+
+ /* Check whether the ARGV-element is a long option.
+
+ If long_only and the ARGV-element has the form "-f", where f is
+ a valid short option, don't consider it an abbreviated form of
+ a long option that starts with f. Otherwise there would be no
+ way to give the -f short option.
+
+ On the other hand, if there's a long option "fubar" and
+ the ARGV-element is "-fu", do consider that an abbreviation of
+ the long option, just like "--fu", and not "-f" with arg "u".
+
+ This distinction seems to be the most useful approach. */
+
+ if (longopts != NULL
+ && (argv[optind][1] == '-'
+ || (long_only && (argv[optind][2] || !my_index(optstring, argv[optind][1])))))
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = -1;
+ int option_index;
+
+ for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp(p->name, nextchar, nameend - nextchar))
+ {
+ if ((unsigned int) (nameend - nextchar)
+ == (unsigned int) strlen(p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+
+ if (ambig && !exact)
+ {
+ if (opterr)
+ fprintf(stderr, _("%s: option `%s' is ambiguous\n"),
+ argv[0], argv[optind]);
+ nextchar += strlen(nextchar);
+ optind++;
+ optopt = 0;
+ return '?';
+ }
+
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ optind++;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ optarg = nameend + 1;
+ else
+ {
+ if (opterr)
+ {
+ if (argv[optind - 1][1] == '-')
+ /* --option */
+ fprintf(stderr,
+ _("%s: option `--%s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+ else
+ /* +option or -option */
+ fprintf(stderr,
+ _("%s: option `%c%s' doesn't allow an argument\n"),
+ argv[0], argv[optind - 1][0], pfound->name);
+ }
+
+ nextchar += strlen(nextchar);
+
+ optopt = pfound->val;
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (optind < argc)
+ optarg = argv[optind++];
+ else
+ {
+ if (opterr)
+ fprintf(stderr,
+ _("%s: option `%s' requires an argument\n"),
+ argv[0], argv[optind - 1]);
+ nextchar += strlen(nextchar);
+ optopt = pfound->val;
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ nextchar += strlen(nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+
+ /* Can't find it as a long option. If this is not getopt_long_only,
+ or the option starts with '--' or is not a valid short
+ option, then it's an error.
+ Otherwise interpret it as a short option. */
+ if (!long_only || argv[optind][1] == '-'
+ || my_index(optstring, *nextchar) == NULL)
+ {
+ if (opterr)
+ {
+ if (argv[optind][1] == '-')
+ /* --option */
+ fprintf(stderr, _("%s: unrecognized option `--%s'\n"),
+ argv[0], nextchar);
+ else
+ /* +option or -option */
+ fprintf(stderr, _("%s: unrecognized option `%c%s'\n"),
+ argv[0], argv[optind][0], nextchar);
+ }
+ nextchar = (char *) "";
+ optind++;
+ optopt = 0;
+ return '?';
+ }
+ }
+
+ /* Look at and handle the next short option-character. */
+
+ {
+ char c = *nextchar++;
+ char *temp = my_index(optstring, c);
+
+ /* Increment `optind' when we start to process its last character. */
+ if (*nextchar == '\0')
+ ++optind;
+
+ if (temp == NULL || c == ':')
+ {
+ if (opterr)
+ {
+ if (posixly_correct)
+ /* 1003.2 specifies the format of this message. */
+ fprintf(stderr, _("%s: illegal option -- %c\n"),
+ argv[0], c);
+ else
+ fprintf(stderr, _("%s: invalid option -- %c\n"),
+ argv[0], c);
+ }
+ optopt = c;
+ return '?';
+ }
+ /* Convenience. Treat POSIX -W foo same as long option --foo */
+ if (temp[0] == 'W' && temp[1] == ';')
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = 0;
+ int option_index;
+
+ /* This is an option that requires an argument. */
+ if (*nextchar != '\0')
+ {
+ optarg = nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ optind++;
+ }
+ else if (optind == argc)
+ {
+ if (opterr)
+ {
+ /* 1003.2 specifies the format of this message. */
+ fprintf(stderr, _("%s: option requires an argument -- %c\n"),
+ argv[0], c);
+ }
+ optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ return c;
+ }
+ else
+ /* We already incremented `optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ optarg = argv[optind++];
+
+ /* optarg is now the argument, see if it's in the
+ table of longopts. */
+
+ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp(p->name, nextchar, nameend - nextchar))
+ {
+ if ((unsigned int) (nameend - nextchar) == strlen(p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+ if (ambig && !exact)
+ {
+ if (opterr)
+ fprintf(stderr, _("%s: option `-W %s' is ambiguous\n"),
+ argv[0], argv[optind]);
+ nextchar += strlen(nextchar);
+ optind++;
+ return '?';
+ }
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ optarg = nameend + 1;
+ else
+ {
+ if (opterr)
+ fprintf(stderr, _("\
%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-
- nextchar += strlen(nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf(stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen(nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen(nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf(stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
+ argv[0], pfound->name);
+
+ nextchar += strlen(nextchar);
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (optind < argc)
+ optarg = argv[optind++];
+ else
+ {
+ if (opterr)
+ fprintf(stderr,
+ _("%s: option `%s' requires an argument\n"),
+ argv[0], argv[optind - 1]);
+ nextchar += strlen(nextchar);
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ nextchar += strlen(nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+ nextchar = NULL;
+ return 'W'; /* Let the application handle it. */
+ }
+ if (temp[1] == ':')
+ {
+ if (temp[2] == ':')
+ {
+ /* This is an option that accepts an argument optionally. */
+ if (*nextchar != '\0')
+ {
+ optarg = nextchar;
+ optind++;
+ }
+ else
+ optarg = NULL;
+ nextchar = NULL;
+ }
+ else
+ {
+ /* This is an option that requires an argument. */
+ if (*nextchar != '\0')
+ {
+ optarg = nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ optind++;
+ }
+ else if (optind == argc)
+ {
+ if (opterr)
+ {
+ /* 1003.2 specifies the format of this message. */
+ fprintf(stderr,
+ _("%s: option requires an argument -- %c\n"),
+ argv[0], c);
+ }
+ optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ }
+ else
+ /* We already incremented `optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ optarg = argv[optind++];
+ nextchar = NULL;
+ }
+ }
+ return c;
+ }
}
int
char *const *argv;
const char *optstring;
{
- return _getopt_internal(argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
+ return _getopt_internal(argc, argv, optstring,
+ (const struct option *) 0,
+ (int *) 0,
+ 0);
}
#endif /* Not ELIDE_CODE. */
int argc;
char **argv;
{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt(argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf("option %c\n", c);
- break;
-
- case 'a':
- printf("option a\n");
- break;
-
- case 'b':
- printf("option b\n");
- break;
-
- case 'c':
- printf("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf("non-option ARGV-elements: ");
- while (optind < argc)
- printf("%s ", argv[optind++]);
- printf("\n");
- }
-
- exit(0);
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+
+ c = getopt(argc, argv, "abc:d:0123456789");
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf("option %c\n", c);
+ break;
+
+ case 'a':
+ printf("option a\n");
+ break;
+
+ case 'b':
+ printf("option b\n");
+ break;
+
+ case 'c':
+ printf("option c with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf("%s ", argv[optind++]);
+ printf("\n");
+ }
+
+ exit(0);
}
#endif /* TEST */
#ifndef _GETOPT_H
#define _GETOPT_H 1
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C"
{
#endif
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
- extern char *optarg;
+ extern char *optarg;
/* Index in ARGV of the next element to be scanned.
This is used for communication to and from the caller
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
- extern int optind;
+ extern int optind;
/* Callers store zero here to inhibit the error message `getopt' prints
for unrecognized options. */
- extern int opterr;
+ extern int opterr;
/* Set to an option character which was unrecognized. */
- extern int optopt;
+ extern int optopt;
/* Describe the long-named options requested by the application.
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
one). For long options that have a zero `flag' field, `getopt'
returns the contents of the `val' field. */
- struct option
- {
+ struct option
+ {
#if defined (__STDC__) && __STDC__
- const char *name;
+ const char *name;
#else
- char *name;
+ char *name;
#endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
- };
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+ };
/* Names for the values of the `has_arg' field of `struct option'. */
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
#if defined (__STDC__) && __STDC__
#ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
- extern int getopt(int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
- extern int getopt();
-#endif /* __GNU_LIBRARY__ */
- extern int getopt_long(int argc, char *const *argv, const char *shortopts,
- const struct option *longopts, int *longind);
- extern int getopt_long_only(int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind);
+ extern int getopt(int argc, char *const *argv, const char *shortopts);
+#else /* not __GNU_LIBRARY__ */
+ extern int getopt();
+#endif /* __GNU_LIBRARY__ */
+ extern int getopt_long(int argc, char *const *argv, const char *shortopts,
+ const struct option *longopts, int *longind);
+ extern int getopt_long_only(int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind);
/* Internal only. Users should not call this directly. */
- extern int _getopt_internal(int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind,
- int long_only);
-#else /* not __STDC__ */
- extern int getopt();
- extern int getopt_long();
- extern int getopt_long_only();
-
- extern int _getopt_internal();
-#endif /* __STDC__ */
-
-#ifdef __cplusplus
+ extern int _getopt_internal(int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind,
+ int long_only);
+#else /* not __STDC__ */
+ extern int getopt();
+ extern int getopt_long();
+ extern int getopt_long_only();
+
+ extern int _getopt_internal();
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
}
#endif
-#endif /* _GETOPT_H */
+#endif /* _GETOPT_H */
#include <stdlib.h>
#endif
-#ifndef NULL
+#ifndef NULL
#define NULL 0
#endif
const struct option *long_options;
int *opt_index;
{
- return _getopt_internal(argc, argv, options, long_options, opt_index, 0);
+ return _getopt_internal(argc, argv, options, long_options, opt_index, 0);
}
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
const struct option *long_options;
int *opt_index;
{
- return _getopt_internal(argc, argv, options, long_options, opt_index, 1);
+ return _getopt_internal(argc, argv, options, long_options, opt_index, 1);
}
#endif /* Not ELIDE_CODE. */
int argc;
char **argv;
{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long(argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf("option %s", long_options[option_index].name);
- if (optarg)
- printf(" with arg %s", optarg);
- printf("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf("option %c\n", c);
- break;
-
- case 'a':
- printf("option a\n");
- break;
-
- case 'b':
- printf("option b\n");
- break;
-
- case 'c':
- printf("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf("non-option ARGV-elements: ");
- while (optind < argc)
- printf("%s ", argv[optind++]);
- printf("\n");
- }
-
- exit(0);
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+ int option_index = 0;
+ static struct option long_options[] =
+ {
+ {"add", 1, 0, 0},
+ {"append", 0, 0, 0},
+ {"delete", 1, 0, 0},
+ {"verbose", 0, 0, 0},
+ {"create", 0, 0, 0},
+ {"file", 1, 0, 0},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long(argc, argv, "abc:d:0123456789",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case 0:
+ printf("option %s", long_options[option_index].name);
+ if (optarg)
+ printf(" with arg %s", optarg);
+ printf("\n");
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf("option %c\n", c);
+ break;
+
+ case 'a':
+ printf("option a\n");
+ break;
+
+ case 'b':
+ printf("option b\n");
+ break;
+
+ case 'c':
+ printf("option c with value `%s'\n", optarg);
+ break;
+
+ case 'd':
+ printf("option d with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf("%s ", argv[optind++]);
+ printf("\n");
+ }
+
+ exit(0);
}
#endif /* TEST */
#endif
/*****************************************************************************
- * strnlen:
+ * strnlen:
*****************************************************************************/
#if !defined( HAVE_STRNLEN )
size_t vlc_strnlen( const char *psz, size_t n )
if( !psz_big || !psz_little || !*psz_little ) return p_pos;
- while( *p_pos )
+ while( *p_pos )
{
if( toupper( *p_pos ) == toupper( *psz_little ) )
{
if( p_dec == NULL )
{
msg_Err( p_input, "could not create packetizer" );
- intf_UserFatal( p_input, VLC_FALSE, _("Streaming / Transcoding failed"),
+ intf_UserFatal( p_input, VLC_FALSE, _("Streaming / Transcoding failed"),
_("VLC could not open the packetizer module.") );
return NULL;
}
if( p_dec == NULL )
{
msg_Err( p_input, "could not create decoder" );
- intf_UserFatal( p_input, VLC_FALSE, _("Streaming / Transcoding failed"),
+ intf_UserFatal( p_input, VLC_FALSE, _("Streaming / Transcoding failed"),
_("VLC could not open the decoder module.") );
return NULL;
}
pl_Release( p_playlist );
}
return VLC_SUCCESS;
-
+
case ES_OUT_SET_DEFAULT:
{
es = (es_out_id_t*) va_arg( args, es_out_id_t * );
else
i_seekpoint--;
}
- else if( i_type == INPUT_CONTROL_SET_SEEKPOINT_NEXT )
+ else if( i_type == INPUT_CONTROL_SET_SEEKPOINT_NEXT )
i_seekpoint = p_access->info.i_seekpoint + 1;
else
i_seekpoint = val.i_int;
input_ExtractAttachmentAndCacheArt( p_input );
}
free( psz_arturl );
-
+
input_item_SetPreparsed( p_item, VLC_TRUE );
/* A bit ugly */
case STREAM_SET_POSITION:
i_64 = (int64_t)va_arg( args, int64_t );
i_64 = __MAX( i_64, 0 );
- i_64 = __MIN( i_64, s->p_sys->i_size );
+ i_64 = __MIN( i_64, s->p_sys->i_size );
p_sys->i_pos = i_64;
break;
int i_index;
MISSING( "inputdeln" );
-
+
i_index = atoi( psz_value );
if( i_index > 0 && i_index <= p_cfg->i_input )
TAB_REMOVE( p_cfg->i_input, p_cfg->ppsz_input, p_cfg->ppsz_input[i_index-1] );
vlm_media_instance_sys_t **instance;
} vlm_media_sys_t;
-typedef struct
+typedef struct
{
/* names "schedule" is reserved */
char *psz_name;
"README.MacOSX.rtf file.");
return VLC_EGENERIC;
}
-
+
/* If the main interface does not have a run function,
* implement a waiting loop ourselves
*/
/* append MRLs */
dbus_message_iter_init_append( p_dbus_msg, &dbus_args );
- if ( !dbus_message_iter_append_basic( &dbus_args,
+ if ( !dbus_message_iter_append_basic( &dbus_args,
DBUS_TYPE_STRING, &ppsz_argv[i_input] ) )
{
msg_Err( p_libvlc, "Out of memory" );
p_libvlc = NULL;
/* Stop thread system: last one out please shut the door!
- * The number of initializations of the thread system is counted, we
+ * The number of initializations of the thread system is counted, we
* can call this each time */
vlc_threads_end( p_libvlc_global );
#if defined (WIN32) || defined (__APPLE__)
static const char *ppsz_language[] =
{ "auto", "ar", "en", "en_GB", "ca", "cs", "da", "de", "es", "fa" "fr", "gl",
- "he", "hu", "it", "ja", "ka", "ko", "ms", "nl", "oc", "pl", "pt_BR", "ro",
+ "he", "hu", "it", "ja", "ka", "ko", "ms", "nl", "oc", "pl", "pt_BR", "ro",
"ru", "sk", "sl", "sv", "tr", "zh_CN", "zh_TW" };
static const char *ppsz_language_text[] =
N_("Catalan"), N_("Czech"), N_("Danish"), N_("German"), N_("Spanish"),
N_("Persian"), N_("French"), N_("Galician"), N_("Hebrew"), N_("Hungarian"),
N_("Italian"), N_("Japanese"),N_("Georgian"), N_("Korean"), N_("Malay"),
-N_("Dutch"), N_("Occitan"), N_("Polish"), N_("Brazilian Portuguese"),
+N_("Dutch"), N_("Occitan"), N_("Polish"), N_("Brazilian Portuguese"),
N_("Romanian"), N_("Russian"), N_("Slovak"), N_("Slovenian"), N_("Swedish"),
N_("Turkish"), N_("Simplified Chinese"), N_("Chinese Traditional") };
#endif
while ( (file = readdir(dir)) )
{
/* we should probably filter out garbage */
- /* we can't use CFStringCreateWithFileSystemRepresentation as it is
+ /* we can't use CFStringCreateWithFileSystemRepresentation as it is
* supported only on post-10.4 (and this function is only for pre-10.4) */
CFStringRef locale = CFStringCreateWithCString( kCFAllocatorDefault, file->d_name, kCFStringEncodingUTF8 );
CFArrayAppendValue( available_locales, (void*)locale );
/*
Retrieve the preferred language as chosen in System Preferences.app
(note that CFLocaleCopyCurrent() is not used because it returns the
- prefered locale not language)
+ prefered locale not language)
*/
CFArrayRef all_locales, preferred_locales;
char psz_locale[50];
} vlc_event_listeners_group_t;
#ifdef DEBUG_EVENT
-static const char * ppsz_event_type_to_name[] =
+static const char * ppsz_event_type_to_name[] =
{
[vlc_InputItemMetaChanged] = "vlc_InputItemMetaChanged",
[vlc_InputItemSubItemAdded] = "vlc_InputItemSubItemAdded",
#endif
/*****************************************************************************
- *
+ *
*****************************************************************************/
/**
listeners_group->event_type = event_type;
ARRAY_INIT( listeners_group->listeners );
-
+
vlc_mutex_lock( &p_em->object_lock );
ARRAY_APPEND( p_em->listeners_groups, listeners_group );
vlc_mutex_unlock( &p_em->object_lock );
}
FOREACH_END()
vlc_mutex_unlock( &p_em->object_lock );
-
+
/* Call the function attached */
cached_listener = array_of_cached_listeners;
for( i = 0; i < i_cached_listeners; i++ )
listener = malloc(sizeof(vlc_event_listener_t));
if( !listener )
return VLC_ENOMEM;
-
+
listener->p_user_data = p_user_data;
listener->pf_callback = pf_callback;
#ifdef DEBUG_EVENT
static unsigned prec = 0;
static volatile mtime_t cached_time = 0;
-#if defined( HAVE_CLOCK_NANOSLEEP )
+#if defined( HAVE_CLOCK_NANOSLEEP )
# if (_POSIX_MONOTONIC_CLOCK - 0 < 0)
# define CLOCK_MONOTONIC CLOCK_REALTIME
# endif
{
mtime_t earlier = cached_time;
-#if defined( HAVE_CLOCK_NANOSLEEP )
+#if defined( HAVE_CLOCK_NANOSLEEP )
lldiv_t d = lldiv( delay, 1000000 );
struct timespec ts = { d.quot, d.rem * 1000 };
memcpy (p_buf, &val, count);
break;
}
-
+
memcpy (p_buf, &val, sizeof (val));
count -= sizeof (val);
p_buf += sizeof (val);
|| !CloseHandle( p_condvar->semaphore );
if( p_condvar->semaphore != NULL )
- DeleteCriticalSection( &p_condvar->csection );
+ DeleteCriticalSection( &p_condvar->csection );
#elif defined( HAVE_KERNEL_SCHEDULER_H )
p_condvar->init = 0;
DWORD threadId;
HANDLE hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)func,
(LPVOID)p_data, CREATE_SUSPENDED,
- &threadId );
+ &threadId );
#else
unsigned threadId;
uintptr_t hThread = _beginthreadex( NULL, 0,
- (LPTHREAD_START_ROUTINE)func,
+ (LPTHREAD_START_ROUTINE)func,
(void*)p_data, CREATE_SUSPENDED,
- &threadId );
+ &threadId );
#endif
p_priv->thread_id.id = (DWORD)threadId;
p_priv->thread_id.hThread = (HANDLE)hThread;
- ResumeThread((HANDLE)hThread);
+ ResumeThread((HANDLE)hThread);
}
i_ret = ( p_priv->thread_id.hThread ? 0 : 1 );
#if defined( WIN32 ) || defined( UNDER_CE )
msg_Dbg( p_this, "thread %u (%s) created at priority %d (%s:%d)",
(unsigned int)p_priv->thread_id.id, psz_name,
- i_priority, psz_file, i_line );
+ i_priority, psz_file, i_line );
#else
msg_Dbg( p_this, "thread %u (%s) created at priority %d (%s:%d)",
(unsigned int)p_priv->thread_id, psz_name, i_priority,
FILETIME create_ft, exit_ft, kernel_ft, user_ft;
int64_t real_time, kernel_time, user_time;
HANDLE hThread;
-
+
/*
- ** object will close its thread handle when destroyed, duplicate it here
+ ** object will close its thread handle when destroyed, duplicate it here
** to be on the safe side
*/
if( ! DuplicateHandle(GetCurrentProcess(),
{
msg_Err( p_this, "thread_join(%u) failed at %s:%d (%s)",
(unsigned int)p_priv->thread_id.id,
- psz_file, i_line, GetLastError() );
+ psz_file, i_line, GetLastError() );
p_priv->b_thread = VLC_FALSE;
return;
}
WaitForSingleObject( hThread, INFINITE );
msg_Dbg( p_this, "thread %u joined (%s:%d)",
- (unsigned int)p_priv->thread_id.id,
- psz_file, i_line );
+ (unsigned int)p_priv->thread_id.id,
+ psz_file, i_line );
#if defined( UNDER_CE )
hmodule = GetModuleHandle( _T("COREDLL") );
#else
#ifndef HAVE_RELEASE
{
- /* remove trailing \.libs from executable dir path if seen,
+ /* remove trailing \.libs from executable dir path if seen,
we assume we are running vlc through libtool wrapper in build dir */
int offset = strlen(psz_path)-sizeof("\\.libs")+1;
if( offset > 0 )
snprintf( name, sizeof (name), "%s%s", psz_prefix, optname );
if( var_Create( p_this, name,
config_GetType( p_this, name ) | VLC_VAR_DOINHERIT ) )
- return /* VLC_xxx */;
+ return /* VLC_xxx */;
}
/* Now parse options and set value */
{
if( long_name && ( m->psz_longname != NULL) )
return m->psz_longname;
-
+
return m->psz_shortname ?: m->psz_object_name;
}
psz_ret[count] = NULL;
vlc_list_release( p_list );
-
+
return psz_ret;
}
*ptr++ = '\0'; /* separate address from mask length */
if( (ptr != NULL)
- ? ACL_AddNet( p_acl, psz_ip, atoi( ptr ), VLC_TRUE )
+ ? ACL_AddNet( p_acl, psz_ip, atoi( ptr ), VLC_TRUE )
: ACL_AddHost( p_acl, psz_ip, VLC_TRUE ) )
{
msg_Err( p_acl->p_owner, "cannot add ACL from %s", psz_path );
getnameinfo (const struct sockaddr *sa, socklen_t salen,
char *host, DWORD hostlen, char *serv, DWORD servlen, int flags)
#else
-static int
+static int
getnameinfo (const struct sockaddr *sa, socklen_t salen,
char *host, int hostlen, char *serv, int servlen, int flags)
#endif
getaddrinfo (const char *node, const char *service,
const struct addrinfo *hints, struct addrinfo **res)
#else
-static int
+static int
getaddrinfo (const char *node, const char *service,
const struct addrinfo *hints, struct addrinfo **res)
#endif
if (entry == NULL)
{
/* not found, use replacement API instead */
- entry = getnameinfo;
+ entry = getnameinfo;
}
/* call API before replacing function pointer to avoid crash */
if ((entry == NULL) || (freentry == NULL))
{
/* not found, use replacement API instead */
- entry = getaddrinfo;
- freentry = freeaddrinfo;
+ entry = getaddrinfo;
+ freentry = freeaddrinfo;
}
/* call API before replacing function pointer to avoid crash */
result = entry (node, service, hints, res);
memset(&addr, 0, sizeof(addr));
addr.sin6_family = AF_INET6;
addr.sin6_addr = *((struct in6_addr*)src);
- if( 0 == WSAAddressToStringA((LPSOCKADDR)&addr,
- sizeof(struct sockaddr_in6),
+ if( 0 == WSAAddressToStringA((LPSOCKADDR)&addr,
+ sizeof(struct sockaddr_in6),
NULL, dst, &cnt) )
{
dst[cnt] = '\0';
i_socks_version = 5;
}
- if( i_socks_version == 5 &&
+ if( i_socks_version == 5 &&
SocksNegociate( p_obj, fd, i_socks_version,
psz_socks_user, psz_socks_passwd ) )
return VLC_EGENERIC;
struct addrinfo hints, *p_res;
/* v4 only support ipv4 */
- memset (&hints, 0, sizeof (hints));
+ memset (&hints, 0, sizeof (hints));
hints.ai_family = AF_INET;
if( vlc_getaddrinfo( p_obj, psz_host, 0, &hints, &p_res ) )
return VLC_EGENERIC;
i_len = buffer[4] + 2;
else if( buffer[3] == 0x04 )
i_len = 16-1+2;
- else
+ else
return VLC_EGENERIC;
if( net_Read( p_obj, fd, NULL, buffer, i_len, VLC_TRUE ) != i_len )
vlc_mutex_lock( lockval.p_address );
vlc_object_release( p_tls );
-
+
i = p_tls->i_refcount;
if( i == 0 )
vlc_object_detach( p_tls );
p_tls = tls_Init( p_this );
if( p_tls == NULL )
return NULL;
-
+
p_session = p_tls->pf_client_create( p_tls );
if( p_session != NULL )
{
{
int proto, cmd;
- /* There is some confusion in the world whether IP_MULTICAST_TTL
+ /* There is some confusion in the world whether IP_MULTICAST_TTL
* takes a byte or an int as an argument.
* BSD seems to indicate byte so we are going with that and use
* int as a fallback to be safe */
msg_Dbg (obj, "Multicast %sgroup join request", src ? "source " : "");
- if (setsockopt (fd, level,
+ if (setsockopt (fd, level,
src ? MCAST_JOIN_SOURCE_GROUP : MCAST_JOIN_GROUP,
(void *)&opt, optlen) == 0)
return 0;
return p_states;
}
-/* The volume can be modified in another interface while the OSD Menu
+/* The volume can be modified in another interface while the OSD Menu
* has not been instantiated yet. This routines updates the "volume OSD menu item"
* to reflect the current state of the GUI.
*/
p_button = p_osd->p_state->p_visible;
if( p_button )
{
- if( !p_button->b_range )
+ if( !p_button->b_range )
p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_UNSELECT );
p_osd->p_state->p_visible = p_osd->p_button;
p_button = p_osd->p_state->p_visible;
if( p_button )
{
- if( !p_button->b_range )
+ if( !p_button->b_range )
p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_UNSELECT );
if( p_button->p_next )
p_osd->p_state->p_visible = p_button->p_next;
p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,
p_osd->p_state->p_visible->p_current_state->p_pic );
osd_SetMenuUpdate( p_osd, VLC_TRUE );
- /* If this is a range style action with associated images of only one state,
+ /* If this is a range style action with associated images of only one state,
* then perform "menu select" on every menu navigation
*/
if( p_button->b_range )
}
}
#if defined(OSD_MENU_DEBUG)
- msg_Dbg( p_osd, "direction down [button %s]", p_osd->p_state->p_visible->psz_action );
+ msg_Dbg( p_osd, "direction down [button %s]", p_osd->p_state->p_visible->psz_action );
#endif
vlc_object_release( (vlc_object_t*) p_osd );
b_play = var_CreateGetBool( p_playlist, "playlist-autostart" );
/* This part is really hakish, but this playlist system isn't simple */
- /* First check if we haven't already added the item as we are
- * listening using the onelevel and the category representent
+ /* First check if we haven't already added the item as we are
+ * listening using the onelevel and the category representent
* (Because of the playlist design) */
p_child_in_category = playlist_ItemFindFromInputAndRoot(
p_playlist, p_child->i_id,
p_item_in_category, VLC_TRUE );
p_item_in_category->p_input->i_type = ITEM_TYPE_PLAYLIST;
}
-
- playlist_BothAddInput( p_playlist, p_child, p_item_in_category,
+
+ playlist_BothAddInput( p_playlist, p_child, p_item_in_category,
PLAYLIST_APPEND | PLAYLIST_SPREPARSE , PLAYLIST_END,
NULL, NULL, VLC_TRUE );
VLC_TRUE, p_item_in_category, NULL );
}
}
-
+
PL_UNLOCK;
}
vlc_event_detach( &p_input->event_manager, vlc_InputItemSubItemAdded,
input_item_subitem_added,
p_item );
-
+
}
/*****************************************************************************
i_test = strcasecmp( psz_i, psz_ismall ); \
free( psz_i ); \
free( psz_ismall ); \
-}
-
+}
+
#define DO_META_SORT( node ) { \
char *psz_a = input_item_GetMeta( pp_items[i]->p_input, vlc_meta_##node ); \
/**
* Get the node in the preferred tree from a node in one of category
- * or onelevel tree.
+ * or onelevel tree.
* For example, for the SAP node, it will return the node in the category
* tree if --playlist-tree is not set to never, because the SAP node prefers
* category
if( p_input )
{
stats_UpdateInteger( p_input, p_input->p->counters.p_sout_sent_packets,
- 30, NULL );
+ 30, NULL );
stats_UpdateInteger( p_input, p_input->p->counters.p_sout_sent_bytes,
p_access->i_sent_bytes, &i_total );
stats_UpdateFloat( p_input, p_input->p->counters.p_sout_send_bitrate,
- (float)i_total, NULL );
+ (float)i_total, NULL );
p_access->i_sent_bytes = 0;
vlc_object_release( p_input );
}
{
i_now = mdate();
i_stop = i_now + (mtime_t)(p_vout->i_title_timeout * 1000);
- char *psz_nowplaying =
+ char *psz_nowplaying =
input_item_GetNowPlaying( input_GetItem( p_input ) );
char *psz_artist = input_item_GetArtist( input_GetItem( p_input ) );
char *psz_name = input_item_GetTitle( input_GetItem( p_input ) );
{
*pi_width = (int)( p_vout->fmt_in.i_visible_width * ll_zoom *
p_vout->fmt_in.i_sar_num / p_vout->fmt_in.i_sar_den / FP_FACTOR );
- *pi_height = (int)( p_vout->fmt_in.i_visible_height * ll_zoom
+ *pi_height = (int)( p_vout->fmt_in.i_visible_height * ll_zoom
/ FP_FACTOR );
}
else
{
- *pi_width = (int)( p_vout->fmt_in.i_visible_width * ll_zoom
+ *pi_width = (int)( p_vout->fmt_in.i_visible_width * ll_zoom
/ FP_FACTOR );
*pi_height = (int)( p_vout->fmt_in.i_visible_height * ll_zoom *
p_vout->fmt_in.i_sar_den / p_vout->fmt_in.i_sar_num / FP_FACTOR );
}
initwsize_end:
- msg_Dbg( p_vout, "window size: %dx%d", p_vout->i_window_width,
+ msg_Dbg( p_vout, "window size: %dx%d", p_vout->i_window_width,
p_vout->i_window_height );
#undef FP_FACTOR
fprintf( stderr, "**** Begin Dump ****\n" );
for( i = 0 ; i < p_dict->i_entries; i++ )
{
- fprintf( stderr, "Entry %i - hash %lli int %i string %s data %i\n",
+ fprintf( stderr, "Entry %i - hash %lli int %i string %s data %i\n",
i, p_dict->p_entries[i].i_hash,
p_dict->p_entries[i].i_int,
p_dict->p_entries[i].psz_string,
/* Initial status */
libvlc_playlist_play( p_instance, 0, 0, argv, &exception );
- ASSERT( libvlc_exception_raised( &exception ),
+ ASSERT( libvlc_exception_raised( &exception ),
"Playlist empty and exception not raised" );
libvlc_exception_clear( &exception );
ASSERT_NOEXCEPTION;
ASSERT( i_playing == 0, "Playlist shouldn't be running" );
- /* */
-
+ /* */
+
Py_INCREF( Py_None );
return Py_None;
}
p_instance = libvlc_new( 2, argv, &exception );
ASSERT_NOEXCEPTION;
-
+
/* Test that working on unexisting streams fail */
libvlc_vlm_set_enabled( p_instance, "test", 1, &exception );
ASSERT_EXCEPTION;
vlc_threadvar_create( NULL, &key2 );
vlc_threadvar_set( &key2, NULL );
ASSERT( vlc_threadvar_get( &key2 ) == NULL, "key2 does not match" );
-
+
Py_INCREF( Py_None );
return Py_None;
}