mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 06:43:06 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
12
base/applications/fontview/CMakeLists.txt
Normal file
12
base/applications/fontview/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
list(APPEND SOURCE
|
||||
display.c
|
||||
fontview.c
|
||||
precomp.h)
|
||||
|
||||
add_rc_deps(fontview.rc ${CMAKE_CURRENT_SOURCE_DIR}/ttf.ico)
|
||||
add_executable(fontview ${SOURCE} fontview.rc)
|
||||
set_module_type(fontview win32gui UNICODE)
|
||||
add_importlibs(fontview comdlg32 gdi32 shell32 user32 msvcrt kernel32 advapi32)
|
||||
add_pch(fontview precomp.h SOURCE)
|
||||
add_cd_file(TARGET fontview DESTINATION reactos/system32 FOR all)
|
577
base/applications/fontview/display.c
Normal file
577
base/applications/fontview/display.c
Normal file
|
@ -0,0 +1,577 @@
|
|||
/*
|
||||
* fontview display class
|
||||
*
|
||||
* display.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <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
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#define SPACING1 8
|
||||
#define SPACING2 5
|
||||
|
||||
extern INT g_NumFonts;
|
||||
extern WCHAR g_FontTitle[];
|
||||
|
||||
const WCHAR g_szFontDisplayClassName[] = L"FontDisplayClass";
|
||||
LRESULT CALLBACK DisplayProc(HWND, UINT, WPARAM, LPARAM);
|
||||
|
||||
/* Internal data storage type */
|
||||
typedef struct
|
||||
{
|
||||
int nPageHeight;
|
||||
WCHAR szTypeFaceName[LF_FULLFACESIZE];
|
||||
WCHAR szFormat[MAX_FORMAT];
|
||||
WCHAR szString[MAX_STRING];
|
||||
|
||||
HFONT hCaptionFont;
|
||||
HFONT hCharSetFont;
|
||||
HFONT hSizeFont;
|
||||
HFONT hFonts[MAX_SIZES];
|
||||
int nSizes[MAX_SIZES];
|
||||
int nHeights[MAX_SIZES];
|
||||
} DISPLAYDATA;
|
||||
|
||||
/* This is the only public function, it registers the class */
|
||||
BOOL
|
||||
Display_InitClass(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASSEXW wincl;
|
||||
|
||||
/* Set the fontdisplay window class structure */
|
||||
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = DisplayProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hInstance;
|
||||
wincl.hIcon = NULL;
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = GetStockObject(WHITE_BRUSH);
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontDisplayClassName;
|
||||
wincl.hIconSm = NULL;
|
||||
|
||||
/* Register the window class, and if it fails return FALSE */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
Display_DrawText(HDC hDC, DISPLAYDATA* pData, int nYPos)
|
||||
{
|
||||
HFONT hOldFont;
|
||||
TEXTMETRIC tm;
|
||||
int i, y;
|
||||
WCHAR szSize[5];
|
||||
WCHAR szCaption[LF_FULLFACESIZE + 20];
|
||||
|
||||
/* This is the location on the DC where we draw */
|
||||
y = -nYPos;
|
||||
|
||||
hOldFont = SelectObject(hDC, pData->hCaptionFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
|
||||
swprintf(szCaption, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + SPACING1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* TODO: Output font info */
|
||||
|
||||
/* Output Character set */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
swprintf(szCaption, L"abcdefghijklmnopqrstuvwxyz");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"0123456789.:,;(\"~!@#$%%^&*')");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* Output the strings for different sizes */
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
SelectObject(hDC, pData->hFonts[i]);
|
||||
TextOutW(hDC, 20, y, pData->szString, (INT)wcslen(pData->szString));
|
||||
GetTextMetrics(hDC, &tm);
|
||||
y += tm.tmHeight + 1;
|
||||
SelectObject(hDC, pData->hSizeFont);
|
||||
swprintf(szSize, L"%d", pData->nSizes[i]);
|
||||
TextOutW(hDC, 0, y - 13 - tm.tmDescent, szSize, (INT)wcslen(szSize));
|
||||
}
|
||||
SelectObject(hDC, hOldFont);
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
static int
|
||||
CALLBACK
|
||||
EnumFontFamProcW(
|
||||
const LOGFONTW *lpelfe,
|
||||
const TEXTMETRICW *lptm,
|
||||
DWORD FontType,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PNEWTEXTMETRICW pntmw = (PNEWTEXTMETRICW)lptm;
|
||||
PBOOL pfOpenType = (PBOOL)lParam;
|
||||
|
||||
if (FontType & TRUETYPE_FONTTYPE)
|
||||
{
|
||||
if (pntmw->ntmFlags & (NTM_TT_OPENTYPE | NTM_PS_OPENTYPE))
|
||||
{
|
||||
*pfOpenType = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
TEXTMETRIC tm;
|
||||
HDC hDC;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
LOGFONTW logfont;
|
||||
BOOL fOpenType;
|
||||
BYTE Buffer[512];
|
||||
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
|
||||
LPWSTR pch;
|
||||
|
||||
/* Set the new type face name */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
|
||||
ARRAYSIZE(pData->szTypeFaceName));
|
||||
|
||||
/* Create the new fonts */
|
||||
hDC = GetDC(hwnd);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
|
||||
logfont = *pLogFont;
|
||||
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
|
||||
pData->hCharSetFont = CreateFontIndirectW(&logfont);
|
||||
|
||||
/* Get font format */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
|
||||
{
|
||||
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
|
||||
{
|
||||
LPBYTE pb = Buffer;
|
||||
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
|
||||
pch = (LPWSTR)pb;
|
||||
if (*pch)
|
||||
{
|
||||
lstrcatW(pData->szTypeFaceName, L" ");
|
||||
lstrcatW(pData->szTypeFaceName, pch);
|
||||
}
|
||||
}
|
||||
|
||||
fOpenType = FALSE;
|
||||
EnumFontFamiliesExW(hDC, &logfont,
|
||||
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
|
||||
|
||||
if (fOpenType)
|
||||
swprintf(pData->szFormat, L" (OpenType)");
|
||||
else
|
||||
swprintf(pData->szFormat, L" (TrueType)");
|
||||
}
|
||||
else if (tm.tmPitchAndFamily & TMPF_VECTOR)
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Vector)");
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Raster)");
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
logfont.lfHeight = -MulDiv(pData->nSizes[i], GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||
pData->hFonts[i] = CreateFontIndirectW(&logfont);
|
||||
}
|
||||
|
||||
/* Calculate new page dimensions */
|
||||
pData->nPageHeight = Display_DrawText(hDC, pData, 0);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
|
||||
/* Set the vertical scrolling range and page size */
|
||||
GetClientRect(hwnd, &rect);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
|
||||
si.nMin = 0;
|
||||
si.nMax = pData->nPageHeight;
|
||||
si.nPage = rect.bottom;
|
||||
si.nPos = 0;
|
||||
si.nTrackPos = 0;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetString(HWND hwnd, LPCWSTR pszString)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnCreate(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
|
||||
int i;
|
||||
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
|
||||
DEFAULT_PITCH , L"MS Shell Dlg"};
|
||||
|
||||
/* Create data structure */
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Set the window's GWLP_USERDATA to our data structure */
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
pData->nSizes[i] = nSizes[i];
|
||||
}
|
||||
|
||||
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
|
||||
LogFont.lfHeight = 12;
|
||||
pData->hSizeFont = CreateFontIndirectW(&LogFont);
|
||||
|
||||
Display_SetString(hwnd,
|
||||
L"Jackdaws love my big sphinx of quartz. 1234567890");
|
||||
|
||||
Display_SetTypeFace(hwnd, &LogFont);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnPaint(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
PAINTSTRUCT ps;
|
||||
SCROLLINFO si;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Get the Scroll position */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
BeginPaint(hwnd, &ps);
|
||||
|
||||
/* Erase background */
|
||||
FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH));
|
||||
|
||||
/* Draw the text */
|
||||
Display_DrawText(ps.hdc, pData, si.nPos);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int nOldPos;
|
||||
|
||||
GetClientRect(hwnd, &rect);
|
||||
|
||||
/* Get the old scroll pos */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
nOldPos = si.nPos;
|
||||
|
||||
/* Set the new page size */
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = rect.bottom;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
/* Get the new scroll pos */
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
/* If they don't match ... */
|
||||
if (nOldPos != si.nPos)
|
||||
{
|
||||
/* ... scroll the window */
|
||||
ScrollWindowEx(hwnd, 0, nOldPos - si.nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnVScroll(HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
int nPos;
|
||||
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_PAGEUP:
|
||||
nPos = si.nPos - 50;
|
||||
break;
|
||||
case SB_PAGEDOWN:
|
||||
nPos = si.nPos + 50;
|
||||
break;
|
||||
case SB_LINEUP:
|
||||
nPos = si.nPos - 10;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
nPos = si.nPos + 10;
|
||||
break;
|
||||
case SB_THUMBTRACK:
|
||||
case SB_THUMBPOSITION:
|
||||
nPos = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
nPos = si.nPos;
|
||||
}
|
||||
|
||||
nPos = max(nPos, si.nMin);
|
||||
nPos = min(nPos, si.nMax);
|
||||
if (nPos != si.nPos)
|
||||
{
|
||||
ScrollWindowEx(hwnd, 0, si.nPos - nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
si.cbSize = sizeof(si);
|
||||
si.nPos = nPos;
|
||||
si.fMask = SIF_POS;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnDestroy(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
int i;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Delete the fonts */
|
||||
DeleteObject(pData->hCaptionFont);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
DeleteObject(pData->hSizeFont);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
}
|
||||
|
||||
/* Free the data structure */
|
||||
free(pData);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
Display_OnPrint(HWND hwnd)
|
||||
{
|
||||
PRINTDLG pfont;
|
||||
TEXTMETRIC tm;
|
||||
int copies, yPos;
|
||||
|
||||
/* Clears the memory before using it */
|
||||
ZeroMemory(&pfont, sizeof(pfont));
|
||||
|
||||
pfont.lStructSize = sizeof(pfont);
|
||||
pfont.hwndOwner = hwnd;
|
||||
pfont.hDevMode = NULL;
|
||||
pfont.hDevNames = NULL;
|
||||
pfont.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
|
||||
pfont.nCopies = 1;
|
||||
pfont.nFromPage = 0xFFFF;
|
||||
pfont.nToPage = 0xFFFF;
|
||||
pfont.nMinPage = 1;
|
||||
pfont.nMaxPage = 0xFFFF;
|
||||
|
||||
/* Opens up the print dialog box */
|
||||
if (PrintDlg(&pfont))
|
||||
{
|
||||
DOCINFO docinfo;
|
||||
#if 0
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Sets up the font layout */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
#endif
|
||||
docinfo.cbSize = sizeof(DOCINFO);
|
||||
docinfo.lpszDocName = L"Printing Font";
|
||||
docinfo.lpszOutput = NULL;
|
||||
docinfo.lpszDatatype = NULL;
|
||||
docinfo.fwType = 0;
|
||||
|
||||
/* We start printing */
|
||||
StartDoc(pfont.hDC, &docinfo);
|
||||
|
||||
/* Grabs the text metrics for the printer */
|
||||
GetTextMetrics(pfont.hDC, &tm);
|
||||
|
||||
/* Start out with 0 for the y position for the page */
|
||||
yPos = 0;
|
||||
|
||||
/* Starts out with the current page */
|
||||
StartPage(pfont.hDC);
|
||||
|
||||
/* Used when printing for more than one copy */
|
||||
for (copies = 0; copies < pfont.nCopies; copies++)
|
||||
{
|
||||
/* Test output */
|
||||
TextOutW(pfont.hDC, 10, yPos, L"Testing...1...2...3", 19);
|
||||
|
||||
/* TODO: Determine if using Display_DrawText() will work for both rendering out to the
|
||||
window and to the printer output */
|
||||
#if 0
|
||||
Display_DrawText(pfont.hDC, pData, yPos);
|
||||
#endif
|
||||
|
||||
/* Ends the current page */
|
||||
EndPage(pfont.hDC);
|
||||
|
||||
/* If we are making more than one copy, start a new page */
|
||||
if (copies != pfont.nCopies)
|
||||
{
|
||||
yPos = 0;
|
||||
StartPage(pfont.hDC);
|
||||
}
|
||||
}
|
||||
|
||||
/* The printing is now over */
|
||||
EndDoc(pfont.hDC);
|
||||
|
||||
DeleteDC(pfont.hDC);
|
||||
#if 0
|
||||
/* Frees the memory since we no longer need it for now */
|
||||
free(pData);
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
Display_GetFullName(HWND hwnd, INT length, PWSTR ptr)
|
||||
{
|
||||
DISPLAYDATA *pData;
|
||||
INT len;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
len = wcslen(pData->szTypeFaceName) + wcslen(pData->szFormat) + 2;
|
||||
|
||||
if (ptr != NULL && length >= len)
|
||||
{
|
||||
swprintf(ptr, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
}
|
||||
|
||||
return (LRESULT)len;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return Display_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return Display_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return Display_OnSize(hwnd);
|
||||
|
||||
case WM_VSCROLL:
|
||||
return Display_OnVScroll(hwnd, wParam);
|
||||
|
||||
case FVM_SETTYPEFACE:
|
||||
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
|
||||
|
||||
case FVM_SETSTRING:
|
||||
return Display_SetString(hwnd, (WCHAR *)lParam);
|
||||
|
||||
case FVM_GETFULLNAME:
|
||||
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return Display_OnDestroy(hwnd);
|
||||
|
||||
default:
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
17
base/applications/fontview/display.h
Normal file
17
base/applications/fontview/display.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
#pragma once
|
||||
|
||||
/* Messages for the display class */
|
||||
#define FVM_SETTYPEFACE WM_USER
|
||||
#define FVM_SETSTRING (WM_USER + 1)
|
||||
#define FVM_GETFULLNAME (WM_USER + 2)
|
||||
|
||||
/* Size restrictions */
|
||||
#define MAX_STRING 100
|
||||
#define MAX_FORMAT 20
|
||||
#define MAX_SIZES 8
|
||||
|
||||
extern const WCHAR g_szFontDisplayClassName[];
|
||||
|
||||
/* Public function */
|
||||
BOOL Display_InitClass(HINSTANCE hInstance);
|
||||
LRESULT Display_OnPrint(HWND hwnd);
|
602
base/applications/fontview/fontview.c
Normal file
602
base/applications/fontview/fontview.c
Normal file
|
@ -0,0 +1,602 @@
|
|||
/*
|
||||
* fontview
|
||||
*
|
||||
* fontview.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
|
||||
* Copyright (C) 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.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
|
||||
* 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
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#include <winnls.h>
|
||||
#include <shellapi.h>
|
||||
#include <windowsx.h>
|
||||
#include <winreg.h>
|
||||
|
||||
#include "fontview.h"
|
||||
#include "resource.h"
|
||||
|
||||
HINSTANCE g_hInstance;
|
||||
INT g_FontIndex = 0;
|
||||
INT g_NumFonts = 0;
|
||||
LOGFONTW g_LogFonts[64];
|
||||
LPCWSTR g_fileName;
|
||||
WCHAR g_FontTitle[1024] = L"";
|
||||
BOOL g_FontPrint = FALSE;
|
||||
|
||||
static const WCHAR g_szFontViewClassName[] = L"FontViewWClass";
|
||||
|
||||
/* GetFontResourceInfoW is undocumented */
|
||||
BOOL WINAPI GetFontResourceInfoW(LPCWSTR lpFileName, DWORD *pdwBufSize, void* lpBuffer, DWORD dwType);
|
||||
|
||||
DWORD
|
||||
FormatString(
|
||||
DWORD dwFlags,
|
||||
HINSTANCE hInstance,
|
||||
DWORD dwStringId,
|
||||
DWORD dwLanguageId,
|
||||
LPWSTR lpBuffer,
|
||||
DWORD nSize,
|
||||
va_list* Arguments
|
||||
)
|
||||
{
|
||||
DWORD dwRet;
|
||||
int len;
|
||||
WCHAR Buffer[1000];
|
||||
|
||||
len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000);
|
||||
|
||||
if (len)
|
||||
{
|
||||
dwFlags |= FORMAT_MESSAGE_FROM_STRING;
|
||||
dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM);
|
||||
dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments);
|
||||
return dwRet;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
ErrorMsgBox(HWND hParent, DWORD dwMessageId, ...)
|
||||
{
|
||||
HLOCAL hMemCaption = NULL;
|
||||
HLOCAL hMemText = NULL;
|
||||
va_list args;
|
||||
|
||||
va_start(args, dwMessageId);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args);
|
||||
va_end(args);
|
||||
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, IDS_ERROR, 0, (LPWSTR)&hMemCaption, 0, NULL);
|
||||
|
||||
MessageBoxW(hParent, hMemText, hMemCaption, MB_ICONERROR);
|
||||
|
||||
LocalFree(hMemCaption);
|
||||
LocalFree(hMemText);
|
||||
}
|
||||
|
||||
int WINAPI
|
||||
wWinMain(HINSTANCE hThisInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPWSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
int argc;
|
||||
INT i;
|
||||
WCHAR** argv;
|
||||
WCHAR szFileName[MAX_PATH] = L"";
|
||||
DWORD dwSize;
|
||||
HWND hMainWnd;
|
||||
MSG msg;
|
||||
WNDCLASSEXW wincl;
|
||||
LPCWSTR fileName;
|
||||
|
||||
switch (GetUserDefaultUILanguage())
|
||||
{
|
||||
case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT):
|
||||
SetProcessDefaultLayout(LAYOUT_RTL);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
g_hInstance = hThisInstance;
|
||||
|
||||
/* Get unicode command line */
|
||||
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (argc < 2)
|
||||
{
|
||||
OPENFILENAMEW fontOpen;
|
||||
WCHAR filter[MAX_PATH*2], dialogTitle[MAX_PATH];
|
||||
|
||||
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
|
||||
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter));
|
||||
|
||||
/* Clears out any values of fontOpen before we use it */
|
||||
ZeroMemory(&fontOpen, sizeof(fontOpen));
|
||||
|
||||
/* Sets up the open dialog box */
|
||||
fontOpen.lStructSize = sizeof(fontOpen);
|
||||
fontOpen.hwndOwner = NULL;
|
||||
fontOpen.lpstrFilter = filter;
|
||||
fontOpen.lpstrFile = szFileName;
|
||||
fontOpen.lpstrTitle = dialogTitle;
|
||||
fontOpen.nMaxFile = MAX_PATH;
|
||||
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
fontOpen.lpstrDefExt = L"ttf";
|
||||
|
||||
/* Opens up the Open File dialog box in order to chose a font file. */
|
||||
if(GetOpenFileNameW(&fontOpen))
|
||||
{
|
||||
fileName = fontOpen.lpstrFile;
|
||||
g_fileName = fileName;
|
||||
} else {
|
||||
/* If the user decides to close out of the open dialog effectively
|
||||
exiting the program altogether */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try to add the font resource from command line */
|
||||
// fileName = argv[1];
|
||||
if (argc == 2)
|
||||
{
|
||||
fileName = argv[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Windows fontview supports the /p option, which displays print dialog */
|
||||
fileName = argv[2];
|
||||
if (wcscmp(argv[1], L"/p") == 0)
|
||||
{
|
||||
g_FontPrint = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
fileName = argv[1];
|
||||
}
|
||||
}
|
||||
g_fileName = fileName;
|
||||
}
|
||||
|
||||
if (!AddFontResourceW(fileName))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Get the font name */
|
||||
dwSize = sizeof(g_LogFonts);
|
||||
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
|
||||
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
g_NumFonts = 0;
|
||||
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
|
||||
{
|
||||
if (g_LogFonts[i].lfFaceName[0] == 0)
|
||||
break;
|
||||
|
||||
++g_NumFonts;
|
||||
}
|
||||
if (g_NumFonts == 0)
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get font title */
|
||||
dwSize = sizeof(g_FontTitle);
|
||||
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
|
||||
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
|
||||
|
||||
if (!Display_InitClass(hThisInstance))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* The main window class */
|
||||
wincl.cbSize = sizeof (WNDCLASSEXW);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = MainWndProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hThisInstance;
|
||||
wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontViewClassName;
|
||||
wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
|
||||
/* Register the window class, and if it fails quit the program */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The class is registered, let's create the main window */
|
||||
hMainWnd = CreateWindowExW(
|
||||
0, /* Extended possibilities for variation */
|
||||
g_szFontViewClassName, /* Classname */
|
||||
g_FontTitle, /* Title Text */
|
||||
WS_OVERLAPPEDWINDOW, /* default window */
|
||||
CW_USEDEFAULT, /* Windows decides the position */
|
||||
CW_USEDEFAULT, /* where the window ends up on the screen */
|
||||
544, /* The programs width */
|
||||
375, /* and height in pixels */
|
||||
HWND_DESKTOP, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
hThisInstance, /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
|
||||
/* Main message loop */
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (IsDialogMessage(hMainWnd, &msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
RemoveFontResourceW(argv[1]);
|
||||
|
||||
return (int)msg.wParam;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnCreate(HWND hwnd)
|
||||
{
|
||||
WCHAR szQuit[MAX_BUTTONNAME];
|
||||
WCHAR szPrint[MAX_BUTTONNAME];
|
||||
WCHAR szString[MAX_STRING];
|
||||
WCHAR szPrevious[MAX_STRING];
|
||||
WCHAR szNext[MAX_STRING];
|
||||
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
|
||||
|
||||
/* create the display window */
|
||||
hDisplay = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
g_szFontDisplayClassName, /* Classname */
|
||||
L"", /* Title text */
|
||||
WS_CHILD | WS_VSCROLL, /* Window style */
|
||||
0, /* X-pos */
|
||||
HEADER_SIZE, /* Y-Pos */
|
||||
550, /* Width */
|
||||
370-HEADER_SIZE, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_DISPLAY, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
|
||||
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
|
||||
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
|
||||
|
||||
/* Create the install button */
|
||||
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
|
||||
hButtonInstall = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szQuit, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
BUTTON_POS_X, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_INSTALL, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonInstall, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the print button */
|
||||
LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME);
|
||||
hButtonPrint = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrint, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PRINT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the previous button */
|
||||
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
|
||||
hButtonPrev = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrevious, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PREV, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the next button */
|
||||
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
|
||||
hButtonNext = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szNext, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_NEXT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
EnableWindow(hButtonPrev, FALSE);
|
||||
if (g_NumFonts <= 1)
|
||||
EnableWindow(hButtonNext, FALSE);
|
||||
|
||||
/* Init the display window with the font name */
|
||||
g_FontIndex = 0;
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
ShowWindow(hDisplay, SW_SHOWNORMAL);
|
||||
|
||||
if (g_FontPrint)
|
||||
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rc;
|
||||
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
|
||||
HDWP hDWP;
|
||||
|
||||
GetClientRect(hwnd, &rc);
|
||||
|
||||
hDWP = BeginDeferWindowPos(5);
|
||||
|
||||
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrint = GetDlgItem(hwnd, IDC_PRINT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrev = GetDlgItem(hwnd, IDC_PREV);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hNext = GetDlgItem(hwnd, IDC_NEXT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
|
||||
|
||||
EndDeferWindowPos(hDWP);
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnPaint(HWND hwnd)
|
||||
{
|
||||
HDC hDC;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
|
||||
hDC = BeginPaint(hwnd, &ps);
|
||||
GetClientRect(hwnd, &rc);
|
||||
rc.top = HEADER_SIZE - 2;
|
||||
rc.bottom = HEADER_SIZE;
|
||||
FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH));
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnInstall(HWND hwnd)
|
||||
{
|
||||
WCHAR szFullName[64];
|
||||
|
||||
WCHAR szSrcPath[MAX_PATH];
|
||||
WCHAR szDestPath[MAX_PATH];
|
||||
PWSTR pszFileName;
|
||||
LONG res;
|
||||
HKEY hKey;
|
||||
|
||||
SendDlgItemMessage(hwnd, IDC_DISPLAY, FVM_GETFULLNAME, 64, (LPARAM)szFullName);
|
||||
// MessageBoxW(hwnd, szFullName, L"Debug", MB_OK);
|
||||
|
||||
/* First, we have to find out if the font still exists */
|
||||
if (GetFileAttributes(g_fileName) == INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
/* Fail, if the source file does not exist */
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Build the full destination file name */
|
||||
GetFullPathNameW(g_fileName, MAX_PATH, szSrcPath, &pszFileName);
|
||||
|
||||
GetWindowsDirectoryW(szDestPath, MAX_PATH);
|
||||
wcscat(szDestPath, L"\\Fonts\\");
|
||||
wcscat(szDestPath, pszFileName);
|
||||
|
||||
/* Debug Message */
|
||||
// MessageBoxW(hwnd, szDestPath, L"szDestPath", MB_OK);
|
||||
// MessageBoxW(hwnd, pszFileName, L"pszFileExt", MB_OK);
|
||||
|
||||
/* Check if the file already exists */
|
||||
if (GetFileAttributesW(szDestPath) != INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
MessageBoxW(hwnd, L"This font is already installed!", L"Already Installed", MB_OK);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the font file */
|
||||
if (!CopyFileW(g_fileName, szDestPath, TRUE))
|
||||
{
|
||||
MessageBoxW(hwnd,L"Failed to copy the font file!", L"File Error", MB_OK);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Open the fonts key */
|
||||
res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||
L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
|
||||
0,
|
||||
KEY_ALL_ACCESS,
|
||||
&hKey);
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed top open the fonts key!", L"Debug1", MB_OK);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Register the font */
|
||||
res = RegSetValueExW(hKey,
|
||||
szFullName,
|
||||
0,
|
||||
REG_SZ,
|
||||
(LPBYTE)pszFileName,
|
||||
(wcslen(pszFileName) + 1) * sizeof(WCHAR));
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed to register the new font!", L"Debug2", MB_OK);
|
||||
RegCloseKey(hKey);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Close the fonts key */
|
||||
RegCloseKey(hKey);
|
||||
|
||||
/* if all of this goes correctly, message the user about success */
|
||||
MessageBoxW(hwnd, L"Font Installation Completed.", L"Success", MB_OK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnPrev(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex > 0)
|
||||
{
|
||||
--g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
|
||||
if (g_FontIndex == 0)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnNext(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex + 1 < g_NumFonts)
|
||||
{
|
||||
++g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
|
||||
if (g_FontIndex == g_NumFonts - 1)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return MainWnd_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return MainWnd_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return MainWnd_OnSize(hwnd);
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_INSTALL:
|
||||
return MainWnd_OnInstall(hwnd);
|
||||
|
||||
case IDC_PRINT:
|
||||
return Display_OnPrint(hwnd);
|
||||
|
||||
case IDC_PREV:
|
||||
return MainWnd_OnPrev(hwnd);
|
||||
|
||||
case IDC_NEXT:
|
||||
return MainWnd_OnNext(hwnd);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
|
||||
break;
|
||||
|
||||
default: /* for messages that we don't deal with */
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
23
base/applications/fontview/fontview.h
Normal file
23
base/applications/fontview/fontview.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
#define MAX_LOADSTRING 50
|
||||
#define MAX_BUTTONNAME 30
|
||||
|
||||
#define HEADER_SIZE 37
|
||||
#define BUTTON_POS_X 6
|
||||
#define BUTTON_POS_Y 8
|
||||
#define BUTTON_WIDTH 80
|
||||
#define BUTTON_HEIGHT 21
|
||||
#define BUTTON_PADDING 8
|
||||
|
||||
#define IDC_INSTALL 1001
|
||||
#define IDC_PRINT 1002
|
||||
#define IDC_DISPLAY 1003
|
||||
#define IDC_PREV 1004
|
||||
#define IDC_NEXT 1005
|
||||
|
||||
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||
|
||||
BOOL LoadFont(LPWSTR lpCmdLine);
|
||||
|
||||
extern INT g_FontIndex;
|
89
base/applications/fontview/fontview.rc
Normal file
89
base/applications/fontview/fontview.rc
Normal file
|
@ -0,0 +1,89 @@
|
|||
#include <windef.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Font Viewer"
|
||||
#define REACTOS_STR_INTERNAL_NAME "fontview"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "fontview.exe"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
IDI_TT ICON "ttf.ico"
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CHARSLOWER "abcdefghijklmnopqrstuvwxyz"
|
||||
IDS_CHARSUPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
IDS_SPECIALCHARS "0123456789.:,;(*!?')"
|
||||
END
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
#ifdef LANGUAGE_BG_BG
|
||||
#include "lang/bg-BG.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_CS_CZ
|
||||
#include "lang/cs-CZ.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_DE_DE
|
||||
#include "lang/de-DE.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_EN_US
|
||||
#include "lang/en-US.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ES_ES
|
||||
#include "lang/es-ES.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_FR_FR
|
||||
#include "lang/fr-FR.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_HE_IL
|
||||
#include "lang/he-IL.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
#include "lang/it-IT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_LT_LT
|
||||
#include "lang/lt-LT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_MS_MY
|
||||
#include "lang/ms-MY.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_NB_NO
|
||||
#include "lang/no-NO.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_PL_PL
|
||||
#include "lang/pl-PL.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_PT_BR
|
||||
#include "lang/pt-BR.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_RO_RO
|
||||
#include "lang/ro-RO.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_RU_RU
|
||||
#include "lang/ru-RU.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_SK_SK
|
||||
#include "lang/sk-SK.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_SQ_AL
|
||||
#include "lang/sq-AL.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_SV_SE
|
||||
#include "lang/sv-SE.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_TR_TR
|
||||
#include "lang/tr-TR.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_UK_UA
|
||||
#include "lang/uk-UA.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_CN
|
||||
#include "lang/zh-CN.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_ZH_TW
|
||||
#include "lang/zh-TW.rc"
|
||||
#endif
|
22
base/applications/fontview/lang/bg-BG.rc
Normal file
22
base/applications/fontview/lang/bg-BG.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "Печат"
|
||||
IDS_STRING "Абвгд ежзий клмно прсту фхцчш щъьюя. 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Грешка"
|
||||
IDS_ERROR_NOMEM "Няма достатъчно място за завършване на действието."
|
||||
IDS_ERROR_NOFONT "%1 не е редовен шрифтов файл."
|
||||
IDS_ERROR_NOCLASS "Неуспешно изпълнение на класа на прозореца."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
22
base/applications/fontview/lang/cs-CZ.rc
Normal file
22
base/applications/fontview/lang/cs-CZ.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Nainstalovat"
|
||||
IDS_PRINT "&Tisk"
|
||||
IDS_STRING "Příliš žluťoučký kůň úpěl ďábelské ódy. 1234567890"
|
||||
IDS_OPEN "Otevřít soubor písma..."
|
||||
IDS_ERROR "Chyba"
|
||||
IDS_ERROR_NOMEM "K dokončení operace není dostatek paměti."
|
||||
IDS_ERROR_NOFONT "Soubor %1 není platným souborem písma."
|
||||
IDS_ERROR_NOCLASS "Inicializace okna aplikace selhala."
|
||||
IDS_FILTER_LIST "Podporované soubory písem (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Písmo Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Písmo TrueType (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
Písmo OpenType (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< &Previous"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
22
base/applications/fontview/lang/de-DE.rc
Normal file
22
base/applications/fontview/lang/de-DE.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Installieren"
|
||||
IDS_PRINT "&Drucken"
|
||||
IDS_STRING "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. 1234567890"
|
||||
IDS_OPEN "Schriftartendatei öffnen..."
|
||||
IDS_ERROR "Fehler"
|
||||
IDS_ERROR_NOMEM "Es steht nicht genügend Speicher zur Verfügung."
|
||||
IDS_ERROR_NOFONT "Die angegebene Datei %1 ist keine gültige Schriftartendatei."
|
||||
IDS_ERROR_NOCLASS "Fehler beim Initialisieren der Fensterklasse."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
22
base/applications/fontview/lang/en-US.rc
Normal file
22
base/applications/fontview/lang/en-US.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "&Print"
|
||||
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Error"
|
||||
IDS_ERROR_NOMEM "There is not enough memory to complete the operation."
|
||||
IDS_ERROR_NOFONT "The file %1 is not a valid font file."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
24
base/applications/fontview/lang/es-ES.rc
Normal file
24
base/applications/fontview/lang/es-ES.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Spanish language file by Javier Remacha <2007-09-21> and Ismael Ferreras Morezuelas <2014-11-07> */
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Instalar"
|
||||
IDS_PRINT "Im&primir"
|
||||
IDS_STRING "Jovencillo emponzoñado de whisky: ¡qué figurota exhibe! 1234567890"
|
||||
IDS_OPEN "Abrir fuente..."
|
||||
IDS_ERROR "Error"
|
||||
IDS_ERROR_NOMEM "No hay memoria suficiente para completar la operación."
|
||||
IDS_ERROR_NOFONT "El archivo %1 no es un archivo de fuente válido."
|
||||
IDS_ERROR_NOCLASS "No es posible iniciar la clase de ventana."
|
||||
IDS_FILTER_LIST "Todas las tipografías (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Tipografía de mapa de bits (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Tipografía TrueType (*.ttf)\0*.ttf\0\
|
||||
Colección de tipografías TrueType (*.ttc)\0*.ttc\0\
|
||||
Tipografía OpenType (*.otf)\0*.otf\0\
|
||||
Colección de tipografías OpenType (*.otc)\0*.otc\0\
|
||||
Todos los archivos (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< Ante&rior"
|
||||
IDS_NEXT "Siguie&nte >"
|
||||
END
|
22
base/applications/fontview/lang/fr-FR.rc
Normal file
22
base/applications/fontview/lang/fr-FR.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Installer"
|
||||
IDS_PRINT "Im&primer"
|
||||
IDS_STRING "Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwis. 1234567890"
|
||||
IDS_OPEN "Ouvrir un fichier police..."
|
||||
IDS_ERROR "Erreur"
|
||||
IDS_ERROR_NOMEM "Mémoire insuffisante pour terminer l'opération."
|
||||
IDS_ERROR_NOFONT "Le fichier %1 n'est pas un fichier de polices valide."
|
||||
IDS_ERROR_NOCLASS "Impossible d'initialiser la classe de fenêtre."
|
||||
IDS_FILTER_LIST "Toutes polices supportées (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fichier de polices (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fichier de polices TrueType (*.ttf)\0*.ttf\0\
|
||||
Fichier collection de polices TrueType (*.ttc)\0*.ttc\0\
|
||||
Fichier de polices OpenType (*.otf)\0*.otf\0\
|
||||
Fichier collection de polices OpenType (*.otc)\0*.otc\0\
|
||||
Tous les fichiers (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&récédent"
|
||||
IDS_NEXT "Suiva&nt >"
|
||||
END
|
24
base/applications/fontview/lang/he-IL.rc
Normal file
24
base/applications/fontview/lang/he-IL.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Translated by Baruch Rutman */
|
||||
|
||||
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "התקן"
|
||||
IDS_PRINT "הדפס"
|
||||
IDS_STRING "דג סקרן שט לו בים זך אך לפתע פגש חבורה נחמדה שצצה כך. 1234567890"
|
||||
IDS_OPEN "פתח גופן..."
|
||||
IDS_ERROR "שגיאה"
|
||||
IDS_ERROR_NOMEM "אין מספיק זיכרון כדי להשלים את הפעולה."
|
||||
IDS_ERROR_NOFONT "הקובץ %1 אינו קובץ גופנים חוקי."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
22
base/applications/fontview/lang/it-IT.rc
Normal file
22
base/applications/fontview/lang/it-IT.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Installa"
|
||||
IDS_PRINT "Stam&pa"
|
||||
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
|
||||
IDS_OPEN "Apri Font..."
|
||||
IDS_ERROR "Errore"
|
||||
IDS_ERROR_NOMEM "Memoria insufficiente per completare l'operazione."
|
||||
IDS_ERROR_NOFONT "Il file% 1 non è un file di origine valido."
|
||||
IDS_ERROR_NOCLASS "Impossibile avviare la classe."
|
||||
IDS_FILTER_LIST "Tutti i font supportati (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Font TrueType (*.ttf)\0*.ttf\0\
|
||||
Collezione Font TrueType (*.ttc)\0*.ttc\0\
|
||||
Font OpenType (*.otf)\0*.otf\0\
|
||||
Collezione Font OpenType (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&recedente"
|
||||
IDS_NEXT "Ava&nti >"
|
||||
END
|
24
base/applications/fontview/lang/lt-LT.rc
Normal file
24
base/applications/fontview/lang/lt-LT.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Translation by Vytis "CMan" Girdžijauskas (cman@cman.us) */
|
||||
|
||||
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "&Spausdinti"
|
||||
IDS_STRING "ABCDEFGHIYJKLMNOPQRSTUVWXZ ąčęėįšųūž 1234567890"
|
||||
IDS_OPEN "Aatvira šriftas..."
|
||||
IDS_ERROR "Klaida"
|
||||
IDS_ERROR_NOMEM "Užduočiai užbaigti, nepakanka atminties."
|
||||
IDS_ERROR_NOFONT "%1 nėra teisinga šrifto byla."
|
||||
IDS_ERROR_NOCLASS "Nepavyko inicijuoti lango klasės."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
24
base/applications/fontview/lang/ms-MY.rc
Normal file
24
base/applications/fontview/lang/ms-MY.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Malay translation by Henry Tang Ih 2016 (henrytang2@hotmail.com) */
|
||||
|
||||
LANGUAGE LANG_MALAY, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Memasang"
|
||||
IDS_PRINT "M&encetak"
|
||||
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
|
||||
IDS_OPEN "Buka fon..."
|
||||
IDS_ERROR "Ralat"
|
||||
IDS_ERROR_NOMEM "Terdapat tidak cukup ingatan untuk melengkapkan operasi ini."
|
||||
IDS_ERROR_NOFONT "Fail %1 bukanlah fail fon yang sah."
|
||||
IDS_ERROR_NOCLASS "Tidak dapat mengawalkan kelas tetingkap."
|
||||
IDS_FILTER_LIST "Semuanya disokong fon (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
22
base/applications/fontview/lang/no-NO.rc
Normal file
22
base/applications/fontview/lang/no-NO.rc
Normal file
|
@ -0,0 +1,22 @@
|
|||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "&Skriv"
|
||||
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Feil"
|
||||
IDS_ERROR_NOMEM "Det er ikke nok minne for å fullføre oppgaven."
|
||||
IDS_ERROR_NOFONT "Filen %1 er ikke et gyldig skriftfil."
|
||||
IDS_ERROR_NOCLASS "Kunne ikke initialise vindu klassen."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
30
base/applications/fontview/lang/pl-PL.rc
Normal file
30
base/applications/fontview/lang/pl-PL.rc
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Translated by Caemyr - Olaf Siejka (Feb, 2008; Jul, 2012)
|
||||
* Use ReactOS forum PM or IRC to contact me
|
||||
* http://www.reactos.org
|
||||
* IRC: irc.freenode.net #reactos-pl;
|
||||
* UTF-8 conversion by Caemyr (May, 2011)
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Instaluj"
|
||||
IDS_PRINT "&Drukuj"
|
||||
IDS_STRING "Zażółć gęślą Jaźń żółwiątkiem. 1234567890. !@#$%^&*()_+=-/?"
|
||||
IDS_OPEN "Otwórz czcionkę..."
|
||||
IDS_ERROR "Błąd"
|
||||
IDS_ERROR_NOMEM "Brakuje pamięci do ukończenia tej operacji."
|
||||
IDS_ERROR_NOFONT "Plik %1 nie jest poprawnym plikiem czcionki."
|
||||
IDS_ERROR_NOCLASS "Nie udało się zainicjować klasy window."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&oprzednia"
|
||||
IDS_NEXT "&Następna >"
|
||||
END
|
24
base/applications/fontview/lang/pt-BR.rc
Normal file
24
base/applications/fontview/lang/pt-BR.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Translation and UTF-8 Conversion by mkbu95 <mkbu95@gmail.com> (August, 2011) */
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "Im&primir"
|
||||
IDS_STRING "Jackdaws ama minha grande esfinge de quartzo. 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Erro"
|
||||
IDS_ERROR_NOMEM "Não há memória suficiente para completar a operação."
|
||||
IDS_ERROR_NOFONT "O arquivo %1 não é um arquivo de fonte válida."
|
||||
IDS_ERROR_NOCLASS "Não foi possível inicializar a janela."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
24
base/applications/fontview/lang/ro-RO.rc
Normal file
24
base/applications/fontview/lang/ro-RO.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot md) */
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "Inst&alează"
|
||||
IDS_PRINT "I&mprimă"
|
||||
IDS_STRING "Turubinele eoliene generează câțiva MJ (câțiva kW•h) în exces, acoperind și necesarul familiei. QY 1234567890"
|
||||
IDS_OPEN "Deschidere font…"
|
||||
IDS_ERROR "Eroare"
|
||||
IDS_ERROR_NOMEM "Nu e destulă memorie pentru a încheia operația."
|
||||
IDS_ERROR_NOFONT "Fișierul «%1» este un fișier font deteriorat."
|
||||
IDS_ERROR_NOCLASS "Clasa de ferestre nu a putut fi inițializată."
|
||||
IDS_FILTER_LIST "Toate fonturile recunoscute (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fișiere de tip Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fonturi de tip TrueType (*.ttf)\0*.ttf\0\
|
||||
Colecție de fonturi TrueType (*.ttc)\0*.ttc\0\
|
||||
Fonturi de tip OpenType (*.otf)\0*.otf\0\
|
||||
Colecție de fonturi OpenType (*.otc)\0*.otc\0\
|
||||
Orice fișier (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< Înap&oi"
|
||||
IDS_NEXT "În&ainte >"
|
||||
END
|
24
base/applications/fontview/lang/ru-RU.rc
Normal file
24
base/applications/fontview/lang/ru-RU.rc
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Russian language resource file (Dmitry Chapyshev, 2007-06-21) */
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "Установить"
|
||||
IDS_PRINT "Печать"
|
||||
IDS_STRING "Съешь же ещё этих мягких французских булок, да выпей чаю. 1234567890"
|
||||
IDS_OPEN "Открыть шрифт..."
|
||||
IDS_ERROR "Ошибка"
|
||||
IDS_ERROR_NOMEM "Недостаточно памяти для выполнения операции."
|
||||
IDS_ERROR_NOFONT "%1 не является корректным файлом шрифта."
|
||||
IDS_ERROR_NOCLASS "Невозможно инициализировать класс окна."
|
||||
IDS_FILTER_LIST "Все поддерживаемые шрифты (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Файлы шрифтов (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType шрифты (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType шрифты (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
Все файлы (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< &Предыдущий"
|
||||
IDS_NEXT "&Следующий >"
|
||||
END
|
27
base/applications/fontview/lang/sk-SK.rc
Normal file
27
base/applications/fontview/lang/sk-SK.rc
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR: 31-07-2007
|
||||
* UPDATED : 21-07-2012
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "Nainštalovať"
|
||||
IDS_PRINT "Tlačiť"
|
||||
IDS_STRING "Kŕdeľ ďatľov učí koňa žrať kôru. 1234567890"
|
||||
IDS_OPEN "Otvoriť písmo..."
|
||||
IDS_ERROR "Chyba"
|
||||
IDS_ERROR_NOMEM "Na vykonanie tejto operácie nie je dostatok voľnej pamäte."
|
||||
IDS_ERROR_NOFONT "Požadovaný súbor %1 nie je platným súborom písiem."
|
||||
IDS_ERROR_NOCLASS "Nepodarilo sa inicializovať triedu window."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
26
base/applications/fontview/lang/sq-AL.rc
Normal file
26
base/applications/fontview/lang/sq-AL.rc
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com)
|
||||
* DATE OF TR: 29-11-2013
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Instalo"
|
||||
IDS_PRINT "&Printo"
|
||||
IDS_STRING "Jackdaws dashuron sphinxin tim të madh prej kuartzi. 1234567890"
|
||||
IDS_OPEN "Hap fontin..."
|
||||
IDS_ERROR "Error"
|
||||
IDS_ERROR_NOMEM "Nuk ka memorie të mjaftueshme për të përfunduar operacionin."
|
||||
IDS_ERROR_NOFONT "Dokumenti %1 nuk është një font i vlefshem."
|
||||
IDS_ERROR_NOCLASS "Nuk mund të fillojë dritaren e klases."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
29
base/applications/fontview/lang/sv-SE.rc
Normal file
29
base/applications/fontview/lang/sv-SE.rc
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* PROJECT: ReactOS FontView
|
||||
* FILE: base/applications/fontview/lang/sv-SE.rc
|
||||
* PURPOSE: Swedish resource file
|
||||
* TRANSLATOR: Jaix Bly
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "&Skriv ut"
|
||||
IDS_STRING "Jackdaws love my big sphinx of quartz. 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Fel"
|
||||
IDS_ERROR_NOMEM "Det er inte nog minne för att slutföre operationen."
|
||||
IDS_ERROR_NOFONT "Filen %1 är inte en giltig typsnittsfil."
|
||||
IDS_ERROR_NOCLASS "Kunde inte initialisera Windows klassen."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
23
base/applications/fontview/lang/tr-TR.rc
Normal file
23
base/applications/fontview/lang/tr-TR.rc
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* TRANSLATOR: 2013, 2014, 2017 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
|
||||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Kur..."
|
||||
IDS_PRINT "&Yazdır..."
|
||||
IDS_STRING "Pijamalı hasta, yağız şoföre çabucak güvendi. 1234567890"
|
||||
IDS_OPEN "Yazı Tipi Aç..."
|
||||
IDS_ERROR "Yanlışlık"
|
||||
IDS_ERROR_NOMEM "Bu işlemi bitirmek için yeterli bellek yok."
|
||||
IDS_ERROR_NOFONT "%1 kütüğü, geçerli bir yazı tipi kütüğü değil."
|
||||
IDS_ERROR_NOCLASS "Pencere sınıfı başlatılamadı."
|
||||
IDS_FILTER_LIST "Tüm Desteklenen Yazı Tipleri (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Yazı Tipi Kütüğü (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Yazı Tipi (*.ttf)\0*.ttf\0\
|
||||
TrueType Yazı Tipi Derlemi (*.ttc)\0*.ttc\0\
|
||||
OpenType Yazı Tipi (*.otf)\0*.otf\0\
|
||||
OpenType Yazı Tipi Derlemi (*.otc)\0*.otc\0\
|
||||
Tüm Kütükler (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< &Geri"
|
||||
IDS_NEXT "&İleri >"
|
||||
END
|
30
base/applications/fontview/lang/uk-UA.rc
Normal file
30
base/applications/fontview/lang/uk-UA.rc
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/fontview/lang/uk-UA.rc
|
||||
* PURPOSE: Ukraianian Language File for fontview
|
||||
* TRANSLATOR: Artem Reznikov
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Install"
|
||||
IDS_PRINT "Друк"
|
||||
IDS_STRING "Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів! 1234567890"
|
||||
IDS_OPEN "Open Font..."
|
||||
IDS_ERROR "Помилка"
|
||||
IDS_ERROR_NOMEM "Недостатньо пам'яті для завершення операції."
|
||||
IDS_ERROR_NOFONT "Файл %1 не є коректним файлом шрифту."
|
||||
IDS_ERROR_NOCLASS "Неможливо ініціалізувати віконний клас."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
30
base/applications/fontview/lang/zh-CN.rc
Normal file
30
base/applications/fontview/lang/zh-CN.rc
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* PROJECT: ReactOS FontView
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/fontview/lang/zh-CN.rc
|
||||
* PURPOSE: Chinese (Simplified) Language File for FontView
|
||||
* TRANSLATOR: Elton Chung aka MfldElton <elton328@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "安装"
|
||||
IDS_PRINT "列印"
|
||||
IDS_STRING "ReactOS 给所有人一个自由的操作系统!1234567890"
|
||||
IDS_OPEN "打开字体档案..."
|
||||
IDS_ERROR "错误"
|
||||
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
|
||||
IDS_ERROR_NOFONT "%1不是一个有效的字体档案。"
|
||||
IDS_ERROR_NOCLASS "窗口无法初始化。"
|
||||
IDS_FILTER_LIST "支持所有的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字体 (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType 字体 (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
所有文件 (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
30
base/applications/fontview/lang/zh-TW.rc
Normal file
30
base/applications/fontview/lang/zh-TW.rc
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* PROJECT: ReactOS FontView
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/fontview/lang/zh-TW.rc
|
||||
* PURPOSE: Chinese (Traditional) Language File for FontView
|
||||
* TRANSLATOR: Elton Chung aka MfldElton <elton328@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "安裝"
|
||||
IDS_PRINT "列印"
|
||||
IDS_STRING "ReactOS 給所有人一個自由的操作系統! 1234567890"
|
||||
IDS_OPEN "打開字體..."
|
||||
IDS_ERROR "錯誤"
|
||||
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
|
||||
IDS_ERROR_NOFONT "%1 不是一個有效的字體檔案。"
|
||||
IDS_ERROR_NOCLASS "窗口無法初始化。"
|
||||
IDS_FILTER_LIST "所有支援的字體 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字體檔 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字體 (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType 字體 (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
所有檔 (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
END
|
14
base/applications/fontview/precomp.h
Normal file
14
base/applications/fontview/precomp.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef _FONTVIEW_PCH_
|
||||
#define _FONTVIEW_PCH_
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <wingdi.h>
|
||||
#include <winuser.h>
|
||||
#include <commdlg.h>
|
||||
|
||||
#include "display.h"
|
||||
|
||||
#endif /* _FONTVIEW_PCH_ */
|
21
base/applications/fontview/resource.h
Normal file
21
base/applications/fontview/resource.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#define IDS_ERROR 100
|
||||
#define IDS_ERROR_NOMEM 101
|
||||
#define IDS_ERROR_NOFONT 102
|
||||
#define IDS_ERROR_NOCLASS 103
|
||||
#define IDS_FILTER_LIST 104
|
||||
|
||||
#define IDS_INSTALL 500
|
||||
#define IDS_PRINT 501
|
||||
#define IDS_STRING 502
|
||||
#define IDS_OPEN 503
|
||||
|
||||
#define IDS_CHARSLOWER 700
|
||||
#define IDS_CHARSUPPER 701
|
||||
#define IDS_SPECIALCHARS 702
|
||||
|
||||
#define IDS_PREVIOUS 800
|
||||
#define IDS_NEXT 801
|
||||
|
||||
#define IDI_TT 800
|
BIN
base/applications/fontview/ttf.ico
Normal file
BIN
base/applications/fontview/ttf.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Loading…
Add table
Add a link
Reference in a new issue