--- a/windowing/windowserver/TClick/LOGWIN.CPP Fri Jun 11 14:58:47 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// Extracted from DEBLOGWN.CPP
-// Code to run the WIN32 windows with the output
-//
-//
-
-#include <e32std.h>
-#include <e32base.h>
-#include <emulator.h>
-#include "LOGWIN.H"
-
-GLDEF_D struct TSharedMemory GSharedMemory;
-//GLDEF_D struct HWND__ *Hwnd;
-//LOCAL_D RSemaphore Sem;
-
-const TUint KHeapSize=0x8000;
-
-
-TInt numLines(const CArrayVarSeg<TText> &aTextArray, TBool aOutOfMemory)
- {
- return (TInt)(aOutOfMemory)?
- aTextArray.Count():
- aTextArray.Count()-1;
- }
-
-TInt numVisibleLines(TInt aHeight, TInt aTextHeight)
- {
- return aHeight/aTextHeight;
- }
-
-TInt32 __stdcall WndProc(struct HWND__ *aHwnd, TUint aMessage, TUint wParam, TInt32 lParam)
- {
- HDC hdc;
- PAINTSTRUCT ps;
- HFONT hfont;
- RECT rect;
- TInt i,
- paintMin,
- paintMax;
- static LOGFONT logFont;
- static TEXTMETRIC tm;
- static TInt textHeight,
- width,
- height,
- scrollMin=0,
- scrollMax,
- numLinesAbove=scrollMin,
- prevNumLinesAbove;
- static CArrayVarSeg<TText> *pmsg;
- static TBool outOfMemory=EFalse;
-
- switch (aMessage)
- {
- case WM_CREATE:
- hdc=GetDC(aHwnd);
-
- pmsg=new(ELeave) CArrayVarSeg<TText>(20);
- {
- TBuf<0x20> errorMsg;
- errorMsg=_L("ERROR: out of memory");
- errorMsg.ZeroTerminate();
- TRAPD(err,pmsg->AppendL(*errorMsg.Ptr(), (errorMsg.Length()+1)*sizeof(TText)));
- if (err!=KErrNone)
- return(err);
- }
- GetTextMetrics(hdc, &tm);
- textHeight=tm.tmHeight+tm.tmExternalLeading;
- GetClientRect(aHwnd, &rect);
- width=rect.right;
- height=rect.bottom;
- scrollMax=numLines(*pmsg, outOfMemory);
- SetScrollPos(aHwnd, SB_VERT, numLinesAbove, TRUE);
- SetScrollRange(aHwnd, SB_VERT, scrollMin, scrollMax, FALSE);
- logFont.lfHeight=8;
- wsprintf(logFont.lfFaceName, (LPCTSTR)_S("courier"));
-
- ReleaseDC(aHwnd, hdc);
- return 0;
- case WM_USER+EAppendText:
- {
- TRAPD(err,pmsg->InsertL(pmsg->Count()-1, *(TText *)lParam, wParam));
- if (err!=KErrNone)
- {
- pmsg->Delete(0, Max(0, (TInt)pmsg->Count()-1));
- numLinesAbove=scrollMax=scrollMin;
- SetScrollPos(aHwnd, SB_VERT, numLinesAbove, TRUE);
- SetScrollRange(aHwnd, SB_VERT, scrollMin, scrollMax, FALSE);
- hdc=GetDC(aHwnd);
- PatBlt(hdc, 0, 0, width, height, WHITENESS);
- ReleaseDC(aHwnd, hdc);
- return(err);
- }
- // adjust the scroll position so that the last line added is visible
- if (numLinesAbove<numLines(*pmsg, outOfMemory)-numVisibleLines(height, textHeight))
- {
- prevNumLinesAbove=numLinesAbove;
- numLinesAbove=numLines(*pmsg, outOfMemory)-numVisibleLines(height, textHeight);
- scrollMax=numLines(*pmsg, outOfMemory);
- SendMessage(aHwnd, WM_USER+EScrollToPos, 0, 0L);
- }
- else
- {
- hdc=GetDC(aHwnd);
- hfont=(HFONT)SelectObject(hdc, CreateFontIndirect(&logFont));
- TText *text=&((*pmsg)[scrollMax]);
- TextOut(hdc, 0, (scrollMax-numLinesAbove)*textHeight, (LPCTSTR)text, User::StringLength(text));
- scrollMax=numLines(*pmsg, outOfMemory);
- ReleaseDC(aHwnd, hdc);
- }
- return KErrNone;
- }
- case WM_USER+EScrollToPos:
- SetScrollPos(aHwnd, SB_VERT, numLinesAbove, TRUE);
- SetScrollRange(aHwnd, SB_VERT, scrollMin, scrollMax, FALSE);
-
- hdc=GetDC(aHwnd);
- hfont=(HFONT)SelectObject(hdc, CreateFontIndirect(&logFont));
-
- if (numLinesAbove>prevNumLinesAbove)
- // scrolling towards end, therefore text moves up on screen
- {
- TInt numLinesToDraw=numLinesAbove-prevNumLinesAbove;
- TInt numLinesToBlt=numVisibleLines(height, textHeight)-numLinesToDraw;
- if (numLinesToBlt>0)
- ScrollWindow(aHwnd, 0, -numLinesToDraw*textHeight, NULL, NULL);
- PatBlt(hdc, 0, numLinesToBlt*textHeight, width, numLinesToDraw*textHeight, WHITENESS);
- paintMin=Max(Min(numLinesAbove+numLinesToBlt, scrollMax), scrollMin);
- paintMax=Min(paintMin+numLinesToDraw, scrollMax);
- for (i=paintMin; i<paintMax; i++)
- {
- TText *text=&((*pmsg)[i]);
- TextOut(hdc, 0, (i-numLinesAbove)*textHeight, (LPCTSTR)text, User::StringLength(text));
- }
- }
- else
- // scrolling towards beginning, therefore text moves down on screen
- {
- TInt numLinesToDraw=prevNumLinesAbove-numLinesAbove;
- TInt numLinesToBlt=numVisibleLines(height, textHeight)-numLinesToDraw;
- if (numLinesToBlt>0)
- ScrollWindow(aHwnd, 0, numLinesToDraw*textHeight, NULL, NULL);
- PatBlt(hdc, 0, 0, width, numLinesToDraw*textHeight, WHITENESS);
- paintMin=Max(Min(numLinesAbove, scrollMax), scrollMin);
- paintMax=Min(paintMin+numLinesToDraw, scrollMax);
- for (i=paintMin; i<paintMax; i++)
- {
- TText *text=&((*pmsg)[i]);
- TextOut(hdc, 0, (i-numLinesAbove)*textHeight, (LPCTSTR)text, User::StringLength(text));
- }
- }
-
- DeleteObject(hfont);
- ReleaseDC(aHwnd, hdc);
- return 0;
- case WM_PAINT:
- hdc=BeginPaint(aHwnd, &ps);
- hfont=(HFONT)SelectObject(hdc, CreateFontIndirect(&logFont));
-
- paintMin=Max(scrollMin, numLinesAbove);
- paintMax=Min(numLines(*pmsg, outOfMemory), numLinesAbove+numVisibleLines(height, textHeight));
- for (i=paintMin; i<paintMax; i++)
- {
- TText *text=&((*pmsg)[i]);
- TextOut(hdc, 0, (i-numLinesAbove)*textHeight, (LPCTSTR)text, User::StringLength(text));
- }
-
- DeleteObject(hfont);
- EndPaint(aHwnd, &ps);
- return 0;
- case WM_SIZE:
- width=LOWORD(lParam);
- height=HIWORD(lParam);
- return 0;
- case WM_VSCROLL:
- prevNumLinesAbove=numLinesAbove;
- switch (LOWORD(wParam))
- {
- case SB_TOP:
- numLinesAbove=scrollMin;
- break;
- case SB_BOTTOM:
- numLinesAbove=scrollMax;
- break;
- case SB_LINEUP:
- numLinesAbove--;
- break;
- case SB_LINEDOWN:
- numLinesAbove++;
- break;
- case SB_PAGEUP:
- numLinesAbove-=numVisibleLines(height, textHeight);
- break;
- case SB_PAGEDOWN:
- numLinesAbove+=numVisibleLines(height, textHeight);
- break;
- case SB_THUMBTRACK:
- numLinesAbove=HIWORD(wParam);
- break;
- }
- numLinesAbove=max(scrollMin, min(numLinesAbove, scrollMax));
-
- if (numLinesAbove!=prevNumLinesAbove)
- SendMessage(aHwnd, WM_USER+EScrollToPos, 0, 0L);
- return 0;
- case WM_KEYDOWN:
- switch (wParam)
- {
- case VK_HOME:
- SendMessage(aHwnd, WM_VSCROLL, SB_TOP, 0L);
- break;
- case VK_END:
- SendMessage(aHwnd, WM_VSCROLL, SB_BOTTOM, 0L);
- break;
- case VK_PRIOR:
- SendMessage(aHwnd, WM_VSCROLL, SB_PAGEUP, 0L);
- break;
- case VK_NEXT:
- SendMessage(aHwnd, WM_VSCROLL, SB_PAGEDOWN, 0L);
- break;
- case VK_UP:
- SendMessage(aHwnd, WM_VSCROLL, SB_LINEUP, 0L);
- break;
- case VK_DOWN:
- SendMessage(aHwnd, WM_VSCROLL, SB_LINEDOWN, 0L);
- break;
- }
- return 0;
- case WM_DESTROY:
- delete pmsg;
- PostQuitMessage(0);
- return 0;
- }
-
- return DefWindowProc(aHwnd, aMessage, wParam, lParam);
- }
-
-TInt logWinMain(TAny *)
- {
- MSG msg;
- WNDCLASS wndclass;
- const TText *szAppName=_S("Window Server Log");
-
- wndclass.style=CS_HREDRAW|CS_VREDRAW;
- wndclass.lpfnWndProc=WndProc;
- wndclass.cbClsExtra=0;
- wndclass.cbWndExtra=0;
- wndclass.hInstance=NULL;
- wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
- //wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
- wndclass.hbrBackground=(HBRUSH)GetSysColorBrush(COLOR_BTNFACE);
- wndclass.lpszMenuName=NULL;
- wndclass.lpszClassName=(LPCTSTR)szAppName;
-
- RegisterClass(&wndclass);
-
- GSharedMemory.iHwnd=CreateWindow((LPCTSTR)szAppName,
- (LPCTSTR)szAppName,
- WS_OVERLAPPEDWINDOW,
- //WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_MINIMIZE,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- NULL,
- NULL,
- NULL,
- NULL);
-
- ShowWindow(GSharedMemory.iHwnd, SW_SHOWMINNOACTIVE);
- //ShowWindow(GSharedMemory.iHwnd, SW_MINIMIZE);
- UpdateWindow(GSharedMemory.iHwnd);
- GSharedMemory.iStartSemaphore.Signal(); // allows logging to start now that the window, etc. has been set up
- Emulator::Escape();
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- Emulator::Reenter();
- return msg.wParam;
- }
-
-GLDEF_C void CreateLogWinThreadL()
- {
- _LIT(KLogWin,"LogingWindow");
- RThread wsThread;
- GSharedMemory.iStartSemaphore.CreateLocal(0);
- User::LeaveIfError(wsThread.Create(KLogWin,logWinMain,KDefaultStackSize,KHeapSize,KHeapSize,NULL));
- wsThread.Resume();
- GSharedMemory.iStartSemaphore.Wait();
- }