// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#include "autoversion.h"
#include "winres.h"

#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// TYPELIB
//

IDR_WEBKIT              TYPELIB                 "WebKit.tlb"

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION __VERSION_MAJOR__,__BUILD_NUMBER_MAJOR__,__BUILD_NUMBER_MINOR__,__BUILD_NUMBER_VARIANT__
 PRODUCTVERSION __VERSION_MAJOR__,__VERSION_MINOR__,__VERSION_TINY__,0
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "WebKit Dynamic Link Library"
            VALUE "FileVersion", __VERSION_TEXT__
            VALUE "CompanyName", "Apple Inc."
            VALUE "InternalName", "WebKit"
            VALUE "LegalCopyright", "Copyright Apple Inc. 2003-2008"
            VALUE "OriginalFilename", "WebKit.dll"
            VALUE "ProductName", " WebKit"
            VALUE "ProductVersion", __BUILD_NUMBER_SHORT__
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END


/////////////////////////////////////////////////////////////////////////////
//
// PNG
//

IDR_RESIZE_CORNER                PNG                     "textAreaResizeCorner.png"
IDR_MISSING_IMAGE                PNG                     "missingImage.png"
IDR_URL_ICON                     PNG                     "urlIcon.png"
IDR_NULL_PLUGIN                  PNG                     "nullplugin.png"
IDR_DELETE_BUTTON                PNG                     "deleteButton.png"
IDR_DELETE_BUTTON_PRESSED        PNG                     "deleteButtonPressed.png"
IDR_ZOOM_IN_CURSOR               PNG                     "zoomInCursor.png"
IDR_ZOOM_OUT_CURSOR              PNG                     "zoomOutCursor.png"
IDR_VERTICAL_TEXT_CURSOR         PNG                     "verticalTextCursor.png"

