[ros-diffs] [jimtabor] 34540: make does like tabs, right? Fix build.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Wed Jul 16 03:22:26 CEST 2008


Author: jimtabor
Date: Tue Jul 15 20:22:26 2008
New Revision: 34540

URL: http://svn.reactos.org/svn/reactos?rev=34540&view=rev
Log:
make does like tabs, right? Fix build.

Modified:
    trunk/reactos/Makefile
    trunk/reactos/dll/win32/user32/windows/defwnd.c
    trunk/reactos/dll/win32/user32/windows/window.c
    trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
    trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
    trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
    trunk/reactos/subsystems/win32/win32k/ntuser/window.c
    trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
    trunk/reactos/subsystems/win32/win32k/objects/path.c
    trunk/reactos/subsystems/win32/win32k/objects/text.c

Modified: trunk/reactos/Makefile
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/Makefile [iso-8859-1] (original)
+++ trunk/reactos/Makefile [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -167,20 +167,20 @@
 .SUFFIXES:
 
 ifeq ($(HOST),)
-	ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
-		ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
-			export OSTYPE = msys
-			HOST=mingw32-linux
-			HOST_CFLAGS+=-fshort-wchar
-			HOST_CPPFLAGS+=-fshort-wchar
-		else
-			HOST=mingw32-windows
-		endif
-	else
-		HOST=mingw32-linux
-		HOST_CFLAGS+=-fshort-wchar
-		HOST_CPPFLAGS+=-fshort-wchar
-	endif
+ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
+ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
+export OSTYPE = msys
+HOST=mingw32-linux
+HOST_CFLAGS+=-fshort-wchar
+HOST_CPPFLAGS+=-fshort-wchar
+else
+HOST=mingw32-windows
+endif
+else
+HOST=mingw32-linux
+HOST_CFLAGS+=-fshort-wchar
+HOST_CPPFLAGS+=-fshort-wchar
+endif
 endif
 
 # Default to half-verbose mode

Modified: trunk/reactos/dll/win32/user32/windows/defwnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/defwnd.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -742,8 +742,12 @@
 LRESULT
 DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
 {
-  WINDOWPLACEMENT wp;
+//  WINDOWPLACEMENT wp;
   POINT Pt;
+
+  // ATM, This is for Hook call.
+  if (NtUserMessageCall( hWnd, WM_SYSCOMMAND, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE))
+    return 0;
 
   switch (wParam & 0xfff0)
     {
@@ -752,28 +756,40 @@
 	DefWndDoSizeMove(hWnd, wParam);
 	break;
       case SC_MINIMIZE:
-        wp.length = sizeof(WINDOWPLACEMENT);
+        FIXME("SysCommand SC_MINIMIZE\n");
+/*        wp.length = sizeof(WINDOWPLACEMENT);
         if(GetWindowPlacement(hWnd, &wp))
         {
           wp.showCmd = SW_MINIMIZE;
           SetWindowPlacement(hWnd, &wp);
-        }
+        }*/
+        if (hWnd == GetForegroundWindow())
+        ShowOwnedPopups(hWnd,FALSE);
+        ShowWindow( hWnd, SW_MINIMIZE );
         break;
       case SC_MAXIMIZE:
-        wp.length = sizeof(WINDOWPLACEMENT);
+        FIXME("SysCommand SC_MAXIMIZE\n");
+/*      wp.length = sizeof(WINDOWPLACEMENT);
         if(GetWindowPlacement(hWnd, &wp))
         {
           wp.showCmd = SW_MAXIMIZE;
           SetWindowPlacement(hWnd, &wp);
-        }
+        }*/
+        if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
+        ShowOwnedPopups(hWnd,TRUE);
+        ShowWindow( hWnd, SW_MAXIMIZE );
         break;
       case SC_RESTORE:
-        wp.length = sizeof(WINDOWPLACEMENT);
+        FIXME("SysCommand SC_RESTORE\n");
+/*        wp.length = sizeof(WINDOWPLACEMENT);
         if(GetWindowPlacement(hWnd, &wp))
         {
           wp.showCmd = SW_RESTORE;
           SetWindowPlacement(hWnd, &wp);
-        }
+        }*/
+        if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
+        ShowOwnedPopups(hWnd,TRUE);
+        ShowWindow( hWnd, SW_RESTORE );
         break;
       case SC_CLOSE:
         SendMessageA(hWnd, WM_CLOSE, 0, 0);
@@ -1410,7 +1426,8 @@
 
         case WM_SHOWWINDOW:
         {
-            NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
+            if (lParam) // Call when it is necessary.
+               NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
             break;
         }
 

Modified: trunk/reactos/dll/win32/user32/windows/window.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/window.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -1617,6 +1617,7 @@
 	     int cy,
 	     UINT uFlags)
 {
+  FIXME("SetWindowPos\n");
   return NtUserSetWindowPos(hWnd,hWndInsertAfter, X, Y, cx, cy, uFlags);
 }
 
@@ -1713,6 +1714,7 @@
 ShowWindow(HWND hWnd,
 	   int nCmdShow)
 {
+  FIXME("ShowWindow\n");
   return NtUserShowWindow(hWnd, nCmdShow);
 }
 

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -13,7 +13,15 @@
 #define NDEBUG
 #include <debug.h>
 
+LRESULT FASTCALL
+IntDefWinHandleSysCommand( PWINDOW_OBJECT Window, WPARAM wParam, LPARAM lParam )
+{
+   DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam );
 
+   if (co_HOOK_CallHooks(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam))
+      return 1;
+   return 0;
+}
 /*
    Win32k counterpart of User DefWindowProc
  */
@@ -25,6 +33,7 @@
    LPARAM lParam)
 {
    PWINDOW Wnd;
+   LRESULT lResult = 0;
 
    if (Msg > WM_USER) return 0;
 
@@ -33,6 +42,11 @@
 
    switch (Msg)
    {
+      case WM_SYSCOMMAND:
+      {
+          lResult = IntDefWinHandleSysCommand( Window, wParam, lParam );
+          break;
+      }
       case WM_SHOWWINDOW:
       {
          if ((Wnd->Style & WS_VISIBLE) && wParam) break;
@@ -54,7 +68,7 @@
       break;
    }
 
-   return 0;
+   return lResult;
 }
 
 

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/hook.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -107,11 +107,14 @@
    Hook->Thread = Thread;
    Hook->HookId = HookId;
 
-   W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
-   ASSERT(W32Thread != NULL);
-   W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
-   if (W32Thread->ThreadInfo != NULL)
-       W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
+   if (Thread)
+   {
+      W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
+      ASSERT(W32Thread != NULL);
+      W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
+      if (W32Thread->ThreadInfo != NULL)
+          W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
+   }
 
    RtlInitUnicodeString(&Hook->ModuleName, NULL);
 
@@ -318,7 +321,7 @@
       return IntCallLowLevelHook(HookId, Code, wParam, lParam, Hook);
    }
 
-   if (Hook->Thread != PsGetCurrentThread())
+   if ((Hook->Thread != PsGetCurrentThread()) && (Hook->Thread != NULL))
    {
       DPRINT1("Calling hooks in other threads not implemented yet");
       return 0;
@@ -570,7 +573,7 @@
    /* We only (partially) support local WH_CBT hooks and
     * WH_KEYBOARD_LL/WH_MOUSE_LL hooks for now */
    if ((WH_CBT != HookId || Global)
-         && WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId) // && WH_GETMESSAGE != HookId)
+         && WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId && WH_GETMESSAGE != HookId)
    {
 #if 0 /* Removed to get winEmbed working again */
       UNIMPLEMENTED

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -736,6 +736,7 @@
 
       case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
          Ret = co_IntSetForegroundWindow(Window);
+         DPRINT1("Leave NtUserCallHwndLock SetForegroundWindow, ret=%i\n",Ret);
          break;
 
       case HWNDLOCK_ROUTINE_UPDATEWINDOW:

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/window.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -3333,6 +3333,7 @@
          break;
 
       case GW_HWNDNEXT:
+         DPRINT1("GW_HWNDNEXT\n");
          if (Window->NextSibling)
             hWndResult = Window->NextSibling->hSelf;
          break;
@@ -3374,13 +3375,13 @@
 {
    DECLARE_RETURN(HWND);
 
-   DPRINT("Enter NtUserGetWindow\n");
+   DPRINT1("Enter NtUserGetWindow\n");
    UserEnterShared();
 
    RETURN(UserGetWindow(hWnd, Relationship));
 
 CLEANUP:
-   DPRINT("Leave NtUserGetWindow, ret=%i\n",_ret_);
+   DPRINT1("Leave NtUserGetWindow, ret=%i\n",_ret_);
    UserLeave();
    END_CLEANUP;
 }
@@ -4244,7 +4245,7 @@
    BOOL ret;
    USER_REFERENCE_ENTRY Ref;
 
-   DPRINT("Enter NtUserSetWindowPos\n");
+   DPRINT1("Enter NtUserSetWindowPos\n");
    UserEnterExclusive();
 
    if (!(Window = UserGetWindowObject(hWnd)))
@@ -4259,7 +4260,7 @@
    RETURN(ret);
 
 CLEANUP:
-   DPRINT("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
+   DPRINT1("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
    UserLeave();
    END_CLEANUP;
 }
@@ -4407,7 +4408,7 @@
    DECLARE_RETURN(BOOL);
    USER_REFERENCE_ENTRY Ref;
 
-   DPRINT("Enter NtUserShowWindow\n");
+   DPRINT1("Enter NtUserShowWindow\n");
    UserEnterExclusive();
 
    if (!(Window = UserGetWindowObject(hWnd)))
@@ -4422,7 +4423,7 @@
    RETURN(ret);
 
 CLEANUP:
-   DPRINT("Leave NtUserShowWindow, ret=%i\n",_ret_);
+   DPRINT1("Leave NtUserShowWindow, ret=%i\n",_ret_);
    UserLeave();
    END_CLEANUP;
 }

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -306,15 +306,24 @@
    Size.x = Wnd->WindowRect.left;
    Size.y = Wnd->WindowRect.top;
    WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect);
-
-      if (Wnd->Style & WS_MINIMIZE)
-      {
-         if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
-         {
-            return(SWP_NOSIZE | SWP_NOMOVE);
-         }
-         SwpFlags |= SWP_NOCOPYBITS;
-      }
+   
+   if (co_HOOK_CallHooks(WH_CBT, HCBT_MINMAX, (WPARAM)Window->hSelf, ShowFlag))
+      return SWP_NOSIZE | SWP_NOMOVE;
+
+   if (Wnd->Style & WS_MINIMIZE)
+   {
+      switch (ShowFlag)
+      {
+         case SW_MINIMIZE:
+            return SWP_NOSIZE | SWP_NOMOVE;
+      }
+      if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
+      {
+         return(SWP_NOSIZE | SWP_NOMOVE);
+      }
+      SwpFlags |= SWP_NOCOPYBITS;
+   }
+
       switch (ShowFlag)
       {
          case SW_MINIMIZE:
@@ -1216,7 +1225,7 @@
          if (RgnType != ERROR && RgnType != NULLREGION)
          {
                       /* old code
-            NtGdiOffsetRgn(DirtyRgn, Window->WindowRect.left, Window->WindowRect.top);
+            NtGdiOffsetRgn(DirtyRgn, Window->Wnd->WindowRect.left, Window->Wnd->WindowRect.top);
             IntInvalidateWindows(Window, DirtyRgn,
                RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
          }
@@ -1314,7 +1323,7 @@
 {
    BOOLEAN WasVisible;
    UINT Swp = 0;
-   RECT NewPos;
+   RECT NewPos = {0, 0, 0, 0};
    BOOLEAN ShowFlag;
    //  HRGN VisibleRgn;
    PWINDOW Wnd;
@@ -1334,53 +1343,29 @@
             }
             Swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE;
             if (Window->hSelf != UserGetActiveWindow())
+//            if (Wnd->Style & WS_CHILD)
                Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
             break;
          }
 
       case SW_SHOWMINNOACTIVE:
+      case SW_MINIMIZE:
          Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
          /* Fall through. */
       case SW_SHOWMINIMIZED:
-         Swp |= SWP_SHOWWINDOW;
-         /* Fall through. */
-      case SW_MINIMIZE:
-         {
-            Swp |= SWP_NOACTIVATE;
-            if (!(Wnd->Style & WS_MINIMIZE))
-            {
-               Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos) |
-                      SWP_FRAMECHANGED;
-            }
-            else
-            {
-               Swp |= SWP_NOSIZE | SWP_NOMOVE;
-               if (! WasVisible)
-               {
-                  Swp |= SWP_FRAMECHANGED;
-               }
-            }
-            break;
-         }
+         DPRINT1("ShowWindow _MINIMIZE\n");
+         Swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
+         Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos);
+//         if ((Wnd->Style & WS_MINIMIZE) && WasVisible) return TRUE;
+         break;
 
       case SW_SHOWMAXIMIZED:
-         {
-            Swp |= SWP_SHOWWINDOW;
-            if (!(Wnd->Style & WS_MAXIMIZE))
-            {
-               Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos) |
-                      SWP_FRAMECHANGED;
-            }
-            else
-            {
-               Swp |= SWP_NOSIZE | SWP_NOMOVE;
-               if (! WasVisible)
-               {
-                  Swp |= SWP_FRAMECHANGED;
-               }
-            }
-            break;
-         }
+         DPRINT1("ShowWindow _MAXIMIZE\n");
+         if (!WasVisible) Swp |= SWP_SHOWWINDOW;
+         Swp |= SWP_FRAMECHANGED;
+         Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos);
+//         if ((Wnd->Style & WS_MAXIMIZE) && WasVisible) return TRUE;
+         break;
 
       case SW_SHOWNA:
          Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
@@ -1392,27 +1377,32 @@
          break;
 
       case SW_SHOWNOACTIVATE:
-         //Swp |= SWP_NOZORDER;
          Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
          /* Fall through. */
       case SW_SHOWNORMAL:
       case SW_SHOWDEFAULT:
       case SW_RESTORE:
-         Swp |= SWP_SHOWWINDOW;
+         DPRINT1("ShowWindow _RESTORE\n");
+         if (!WasVisible) Swp |= SWP_SHOWWINDOW;
          if (Wnd->Style & (WS_MINIMIZE | WS_MAXIMIZE))
          {
-            Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos) |
-                   SWP_FRAMECHANGED;
+            Swp |= SWP_FRAMECHANGED;
+            Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos);
          }
          else
          {
+//            if (WasVisible) return TRUE;
             Swp |= SWP_NOSIZE | SWP_NOMOVE;
-            if (! WasVisible)
-            {
-               Swp |= SWP_FRAMECHANGED;
-            }
-         }
+         }
+         if (Wnd->Style & WS_CHILD) Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
          break;
+
+       case SW_FORCEMINIMIZE:
+        // Fixme!
+         DPRINT1("Force hung application down! pWindow: %x\n",Window);
+         return WasVisible;
+       default:
+         return WasVisible;
    }
 
    ShowFlag = (Cmd != SW_HIDE);

Modified: trunk/reactos/subsystems/win32/win32k/objects/path.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/path.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -869,6 +869,8 @@
   ASSERT ( counts );
   ASSERT ( polygons );
 
+  if (polygons == 1) return PATH_Polygon ( dc, pts, *counts );
+
   pPath = PATH_LockPath( dc->DcLevel.hPath );
   if (!pPath) return FALSE;
 
@@ -878,6 +880,9 @@
     PATH_UnlockPath( pPath );
     return FALSE;
   }
+
+  startpt.x = 0;
+  startpt.y = 0;
 
   for(i = 0, poly = 0; poly < polygons; poly++)
   {
@@ -886,7 +891,7 @@
       pt = pts[i];
       CoordLPtoDP ( dc, &pt );
       if(point == 0) startpt = pt;
-        PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
+      PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
     }
     /* win98 adds an extra line to close the figure for some reason */
     PATH_AddEntry(pPath, &startpt, PT_LINETO | PT_CLOSEFIGURE);

Modified: trunk/reactos/subsystems/win32/win32k/objects/text.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/text.c?rev=34540&r1=34539&r2=34540&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -34,6 +34,7 @@
 #include <freetype/ftglyph.h>
 #include <freetype/ftoutln.h>
 #include <freetype/ftwinfnt.h>
+#include <freetype/ftmodapi.h>
 
 #define NDEBUG
 #include <debug.h>
@@ -135,6 +136,35 @@
   { DEFAULT_CHARSET, 0, FS(0)},
   { SYMBOL_CHARSET, 42 /* CP_SYMBOL */, FS(31)},
 };
+
+static FT_TrueTypeEngineType (*pFT_Get_TrueType_Engine_Type)(FT_Library);
+
+static
+BOOL
+is_hinting_enabled(void)
+{
+    /* Use the >= 2.2.0 function if available */
+    if(pFT_Get_TrueType_Engine_Type)
+    {
+        FT_TrueTypeEngineType type = pFT_Get_TrueType_Engine_Type(library);
+        return type == FT_TRUETYPE_ENGINE_TYPE_PATENTED;
+    }
+#ifdef FT_DRIVER_HAS_HINTER
+    else
+    {
+        FT_Module mod;
+
+        /* otherwise if we've been compiled with < 2.2.0 headers 
+           use the internal macro */
+        mod = pFT_Get_Module(library, "truetype");
+        if(mod && FT_DRIVER_HAS_HINTER(mod))
+            return TRUE;
+    }
+#endif
+
+    return FALSE;
+}
+
 
 BOOL FASTCALL
 InitFontSupport(VOID)
@@ -3295,7 +3325,12 @@
     OUT LPRASTERIZER_STATUS praststat,
     IN ULONG cjBytes)
 {
-  UNIMPLEMENTED;
+  static int hinting = -1;
+  
+  if(hinting == -1)
+  {
+     hinting = is_hinting_enabled();
+  }
   return FALSE;
 }
 
@@ -3902,11 +3937,23 @@
 BOOL
 STDCALL
 NtGdiSetTextJustification(HDC  hDC,
-                               int  BreakExtra,
-                               int  BreakCount)
-{
-  UNIMPLEMENTED;
-  return FALSE;
+                          int  BreakExtra,
+                          int  BreakCount)
+{
+  PDC Dc;
+  PDC_ATTR Dc_Attr;
+  Dc = DC_LockDc(hDC);
+  if (!Dc)
+  {
+     return FALSE;
+  }
+  Dc_Attr = Dc->pDc_Attr;
+  if(!Dc_Attr) Dc_Attr = &Dc->Dc_Attr;
+
+  Dc_Attr->cBreak = BreakCount;
+  Dc_Attr->lBreakExtra = BreakExtra;
+  DC_UnlockDc(Dc);
+  return TRUE;
 }
 
 DWORD STDCALL



More information about the Ros-diffs mailing list