ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
July 2008
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
25 participants
761 discussions
Start a n
N
ew thread
[silverblade] 34258: Implemented routines for destroying legacy sound devices. Updated SB16_NT4 so that it may now correctly create and destroy devices. It can also register and unregister an interrupt handler (currently hard-coded to IRQ 5 but will be selectable later).
by silverblade@svn.reactos.org
Author: silverblade Date: Wed Jul 2 07:28:32 2008 New Revision: 34258 URL:
http://svn.reactos.org/svn/reactos?rev=34258&view=rev
Log: Implemented routines for destroying legacy sound devices. Updated SB16_NT4 so that it may now correctly create and destroy devices. It can also register and unregister an interrupt handler (currently hard-coded to IRQ 5 but will be selectable later). Added: branches/silverblade-audio/include/reactos/libs/sound/hardware.h (with props) Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild branches/silverblade-audio/include/reactos/libs/sound/devname.h branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h branches/silverblade-audio/lib/drivers/sound/legacy/devname.c branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multi…
============================================================================== --- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c [iso-8859-1] (original) +++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -20,6 +20,7 @@ #include <ntddsnd.h> #include <debug.h> +#include <hardware.h> #include <sbdsp.h> #include <devname.h> @@ -94,12 +95,65 @@ IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS;} + + +/* + ============ HACKY TESTING CODE FOLLOWS ============== +*/ + +PDEVICE_OBJECT g_device; +PKINTERRUPT g_interrupt = 0; + +STDCALL +BOOLEAN +InterruptService( + IN struct _KINTERRUPT *Interrupt, + IN PVOID ServiceContext) +{ + DbgPrint("ISR called\n"); + return TRUE; +} + + + +NTSTATUS +PrepareSoundBlaster( + IN PDRIVER_OBJECT DriverObject) +{ + NTSTATUS result; + + DbgPrint("Creating sound device\n"); + result = CreateSoundDeviceWithDefaultName(DriverObject, 0, 69, 0, &g_device); + DbgPrint("Request returned status 0x%08x\n", + result); + + DbgPrint("Attaching interrupt\n"); + /* Interrupt */ + result = LegacyAttachInterrupt(g_device, 5, InterruptService, &g_interrupt); + DbgPrint("Request %s\n", + result == STATUS_SUCCESS ? "succeeded" : "failed"); + + return result; +} + VOID STDCALL UnloadSoundBlaster( IN PDRIVER_OBJECT DriverObject) { + NTSTATUS Status; DbgPrint("Sound Blaster driver being unloaded\n"); + + if ( g_interrupt ) + { + DbgPrint("Disconnecting interrupt\n"); + IoDisconnectInterrupt(g_interrupt); + } + + DbgPrint("Destroying devices\n"); + Status = DestroySoundDeviceWithDefaultName(g_device, 0, 69); + DbgPrint("Status 0x%08x\n", Status); + /*INFO_(IHVAUDIO, "Sound Blaster driver being unloaded");*/ } @@ -158,15 +212,12 @@ STDCALL NTSTATUS -ThisIsSparta(IN PDRIVER_OBJECT DriverObject) -{ - DEVICE_OBJECT device; +TestSoundBlasterLibrary() +{ NTSTATUS result; - BOOLEAN speaker_state = TRUE; + BOOLEAN speaker_state = TRUE, agc_enabled = FALSE; UCHAR major = 0x69, minor = 0x96; UCHAR level = 0; - - /*CreateSoundDeviceWithDefaultName(DriverObject, 0, 69, 0, &device);*/ /* 0x220 is the port we expect to work */ DbgPrint("Resetting Sound Blaster DSP at 0x220\n"); @@ -188,6 +239,8 @@ result == STATUS_SUCCESS ? "successful" : "unsuccessful"); DbgPrint("Sound Blaster DSP version is %d.%02d\n", major, minor); + /* Speaker tests */ + result = SbDspIsSpeakerEnabled((PUCHAR)0x220, &speaker_state, SB_DEFAULT_TIMEOUT); DbgPrint("Speaker state retrieval %s\n", result == STATUS_SUCCESS ? "succeeded" : "failed"); @@ -214,6 +267,9 @@ result == STATUS_SUCCESS ? "succeeded" : "failed"); DbgPrint("Speaker state is now %s\n", speaker_state ? "ENABLED" : "DISABLED"); + + + /* Mixer tests */ DbgPrint("Resetting SB Mixer\n"); SbMixerReset((PUCHAR)0x220); @@ -229,8 +285,23 @@ result == STATUS_SUCCESS ? "succeeded" : "failed"); DbgPrint("Level is 0x%x\n", level); + + /* AGC testing */ + + agc_enabled = SbMixerIsAGCEnabled((PUCHAR)0x220); + DbgPrint("AGC enabled? %d\n", agc_enabled); + + SbMixerEnableAGC((PUCHAR)0x220); + agc_enabled = SbMixerIsAGCEnabled((PUCHAR)0x220); + DbgPrint("AGC enabled? %d\n", agc_enabled); + + SbMixerDisableAGC((PUCHAR)0x220); + agc_enabled = SbMixerIsAGCEnabled((PUCHAR)0x220); + DbgPrint("AGC enabled? %d\n", agc_enabled); + return STATUS_SUCCESS; } + @@ -254,5 +325,6 @@ DriverObject->DriverUnload = UnloadSoundBlaster; /* Hax */ - return ThisIsSparta(DriverObject); -} + TestSoundBlasterLibrary(); + return PrepareSoundBlaster(DriverObject); +} Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multi…
============================================================================== --- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild [iso-8859-1] (original) +++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -8,6 +8,7 @@ <importlibrary definition="sb16_nt4.def" /> <library>soundblaster</library> <library>audio</library> + <library>audioleg</library> <library>ntoskrnl</library> <library>hal</library> <file>main.c</file> Modified: branches/silverblade-audio/include/reactos/libs/sound/devname.h URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/include/react…
============================================================================== --- branches/silverblade-audio/include/reactos/libs/sound/devname.h [iso-8859-1] (original) +++ branches/silverblade-audio/include/reactos/libs/sound/devname.h [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -92,7 +92,7 @@ IN PCWSTR WideDosDeviceName, IN UCHAR Index, IN ULONG ExtensionSize, - OUT PDEVICE_OBJECT DeviceObject); + OUT PDEVICE_OBJECT* DeviceObject); /* @@ -108,6 +108,31 @@ IN UCHAR DeviceType, IN UCHAR Index, IN ULONG ExtensionSize, - OUT PDEVICE_OBJECT DeviceObject); + OUT PDEVICE_OBJECT* DeviceObject); + + +/* + DestroySoundDevice + + Destroy a device and its symbolic link +*/ +NTSTATUS +DestroySoundDevice( + IN PDEVICE_OBJECT DeviceObject, + IN PCWSTR WideDosDeviceName, + IN UCHAR Index); + + +/* + DestroySoundDeviceWithDefaultName + + Similar to DestroySoundDevice, but operating on one of the + default device names. +*/ +NTSTATUS +DestroySoundDeviceWithDefaultName( + IN PDEVICE_OBJECT DeviceObject, + IN UCHAR DeviceType, + IN UCHAR Index); #endif Added: branches/silverblade-audio/include/reactos/libs/sound/hardware.h URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/include/react…
============================================================================== --- branches/silverblade-audio/include/reactos/libs/sound/hardware.h (added) +++ branches/silverblade-audio/include/reactos/libs/sound/hardware.h [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -1,0 +1,23 @@ +/* + ReactOS Sound System + Legacy support + Hardware interaction helper + + Author: + Andrew Greenwood (silverblade(a)reactos.org) + + History: + 2 July 2008 - Created +*/ + +#ifndef ROS_AUDIOLEG_HARDWARE_H +#define ROS_AUDIOLEG_HARDWARE_H + +NTSTATUS +LegacyAttachInterrupt( + IN PDEVICE_OBJECT DeviceObject, + IN UCHAR Irq, + IN PKSERVICE_ROUTINE ServiceRoutine, + OUT PKINTERRUPT* InterruptObject); + +#endif Propchange: branches/silverblade-audio/include/reactos/libs/sound/hardware.h ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/include/react…
============================================================================== --- branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h [iso-8859-1] (original) +++ branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -116,6 +116,18 @@ #define SB_MIX_BASS_LEFT_LEVEL 0x46 #define SB_MIX_BASS_RIGHT_LEVEL 0x47 +/* + Mixer switches + (are these correct?) +*/ +#define SB_MIX_MIDI_LEFT_SWITCH 0x01 +#define SB_MIX_MIDI_RIGHT_SWITCH 0x02 +#define SB_MIX_LINE_LEFT_SWITCH 0x04 +#define SB_MIX_LINE_RIGHT_SWITCH 0x08 +#define SB_MIX_CD_LEFT_SWITCH 0x10 +#define SB_MIX_CD_RIGHT_SWITCH 0x20 +#define SB_MIX_MIC_SWITCH 0x40 + /* Reset the Sound Blaster DSP. @@ -290,5 +302,23 @@ IN UCHAR Line, OUT PUCHAR Level); +/* + Enable automatic gain control +*/ +VOID +SbMixerEnableAGC(IN PUCHAR BasePort); + +/* + Disable automatic gain control +*/ +VOID +SbMixerDisableAGC(IN PUCHAR BasePort); + +/* + Retrieve the current state of the automatic gain control +*/ +BOOLEAN +SbMixerIsAGCEnabled(IN PUCHAR BasePort); + #endif Modified: branches/silverblade-audio/lib/drivers/sound/legacy/devname.c URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/lib/drivers/s…
============================================================================== --- branches/silverblade-audio/lib/drivers/sound/legacy/devname.c [iso-8859-1] (original) +++ branches/silverblade-audio/lib/drivers/sound/legacy/devname.c [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -167,17 +167,25 @@ OUT PCWSTR* DeviceNameBody, OUT PCWSTR* DosDeviceNameBody) { - ASSERT(DeviceNameBody != NULL); - ASSERT(DosDeviceNameBody != NULL); - if ( DeviceType > MAX_DEVICE_TYPE ) { DPRINT("Invalid device type"); return STATUS_INVALID_PARAMETER; } - *DeviceNameBody = SoundDeviceNameBodies[DeviceType].DeviceName; - *DosDeviceNameBody = SoundDeviceNameBodies[DeviceType].DosDeviceName; + if ( DeviceNameBody ) + { + DPRINT("Reporting device name\n"); + *DeviceNameBody = SoundDeviceNameBodies[DeviceType].DeviceName; + DPRINT("%ws\n", *DeviceNameBody); + } + + if ( DosDeviceNameBody ) + { + DPRINT("Reporting DOS device name\n"); + *DosDeviceNameBody = SoundDeviceNameBodies[DeviceType].DosDeviceName; + DPRINT("%ws\n", *DosDeviceNameBody); + } return STATUS_SUCCESS; } @@ -254,7 +262,7 @@ IN PCWSTR WideDosDeviceName, IN UCHAR Index, IN ULONG ExtensionSize, - OUT PDEVICE_OBJECT DeviceObject) + OUT PDEVICE_OBJECT* DeviceObject) { NTSTATUS Status; @@ -287,6 +295,8 @@ { return Status; } + + DPRINT("Creating device %ws\n", WideDeviceName); /* Now create the device */ Status = IoCreateDevice(DriverObject, @@ -295,7 +305,7 @@ FILE_DEVICE_SOUND, 0, FALSE, - &DeviceObject); + DeviceObject); if ( ! NT_SUCCESS(Status) ) { @@ -306,12 +316,14 @@ return Status; } + DPRINT("Creating link %ws\n", WideDosDeviceName); + /* Create a symbolic link for the DOS deviec name */ Status = IoCreateSymbolicLink(&DosDeviceName, &DeviceName); if ( ! NT_SUCCESS(Status) ) { - /* IoDeleteDevice( --- What are we deleting? */ + IoDeleteDevice(*DeviceObject); /* These will have been allocated by ConstructSoundDeviceNames */ FreeUnicodeStringBuffer(&DeviceName); @@ -337,7 +349,7 @@ IN UCHAR DeviceType, IN UCHAR Index, IN ULONG ExtensionSize, - OUT PDEVICE_OBJECT DeviceObject) + OUT PDEVICE_OBJECT* DeviceObject) { NTSTATUS Status; PCWSTR WideDeviceName = NULL; @@ -383,3 +395,86 @@ return STATUS_SUCCESS; } + +NTSTATUS +DestroySoundDevice( + IN PDEVICE_OBJECT DeviceObject, + IN PCWSTR WideDosDeviceName, + IN UCHAR Index) +{ + NTSTATUS Status; + UNICODE_STRING DosDeviceName; + + /* Check for NULL parameters */ + if ( ( ! WideDosDeviceName ) || ( ! DeviceObject ) ) + { + DPRINT("Unexpected NULL parameter"); + return STATUS_INVALID_PARAMETER; + } + + /* Range-check */ + if ( Index >= SOUND_MAX_DEVICES ) + { + DPRINT("Device %d exceeds maximum", Index); + return STATUS_INVALID_PARAMETER; + } + + Status = ConstructDeviceName(WideDosDeviceName, Index, &DosDeviceName); + + if ( ! NT_SUCCESS(Status) ) + { + return Status; + } + + DPRINT("Deleting symlink %ws\n", WideDosDeviceName); + + Status = IoDeleteSymbolicLink(&DosDeviceName); + DPRINT("Status of symlink deletion is 0x%08x\n", Status); +/* + ASSERT(NT_SUCCESS(Status)); +*/ + + IoDeleteDevice(DeviceObject); + + return STATUS_SUCCESS; +} + +NTSTATUS +DestroySoundDeviceWithDefaultName( + IN PDEVICE_OBJECT DeviceObject, + IN UCHAR DeviceType, + IN UCHAR Index) +{ + NTSTATUS Status; + PCWSTR WideDosDeviceName = NULL; + + /* Check for NULL parameters */ + if ( ( ! DeviceObject ) ) + { + DPRINT("Unexpected NULL parameter"); + return STATUS_INVALID_PARAMETER; + } + + /* Range-check */ + if ( Index >= SOUND_MAX_DEVICES ) + { + DPRINT("Device index %d exceeds maximum", Index); + return STATUS_INVALID_PARAMETER; + } + + /* Look-up the default name based on the device type */ + Status = GetDefaultSoundDeviceNameBodies(DeviceType, + NULL, + &WideDosDeviceName); + + if ( ! NT_SUCCESS(Status) ) + { + return Status; + } + + DPRINT("DOS device name at %p\n", WideDosDeviceName); + + DPRINT("DOS device name is based on %ws\n", WideDosDeviceName); + + return DestroySoundDevice(DeviceObject, WideDosDeviceName, Index); +} Modified: branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/lib/drivers/s…
============================================================================== --- branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c [iso-8859-1] (original) +++ branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c [iso-8859-1] Wed Jul 2 07:28:32 2008 @@ -12,8 +12,10 @@ Notes: Functions documented in sbdsp.h - Currently, input/output switches and AGC are not - supported. Nor is PC speaker volume. + Currently, input/output switches and PC speaker volume + level are not supported. + + The I/O switches are used for muting/unmuting mic, etc. */ #include <ntddk.h> @@ -218,3 +220,27 @@ return STATUS_SUCCESS; } + +VOID +SbMixerEnableAGC(IN PUCHAR BasePort) +{ + /* Untested... */ + WRITE_SB_MIXER_REGISTER(BasePort, SB_MIX_AGC); + WRITE_SB_MIXER_DATA(BasePort, 1); +} + +VOID +SbMixerDisableAGC(IN PUCHAR BasePort) +{ + /* Untested... */ + WRITE_SB_MIXER_REGISTER(BasePort, SB_MIX_AGC); + WRITE_SB_MIXER_DATA(BasePort, 0); +} + +BOOLEAN +SbMixerIsAGCEnabled(IN PUCHAR BasePort) +{ + /* Untested... */ + WRITE_SB_MIXER_REGISTER(BasePort, SB_MIX_AGC); + return (READ_SB_MIXER_DATA(BasePort) != 0); +}
16 years, 5 months
1
0
0
0
[silverblade] 34257: Implemented Sound Blaster mixer register read/write. Tested ability to set and get the master volume level, under VirtualBox. Appears to function correctly. Temporary test code added to sb16_nt4.
by silverblade@svn.reactos.org
Author: silverblade Date: Wed Jul 2 05:23:18 2008 New Revision: 34257 URL:
http://svn.reactos.org/svn/reactos?rev=34257&view=rev
Log: Implemented Sound Blaster mixer register read/write. Tested ability to set and get the master volume level, under VirtualBox. Appears to function correctly. Temporary test code added to sb16_nt4. Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multi…
============================================================================== --- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c [iso-8859-1] (original) +++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c [iso-8859-1] Wed Jul 2 05:23:18 2008 @@ -164,6 +164,7 @@ NTSTATUS result; BOOLEAN speaker_state = TRUE; UCHAR major = 0x69, minor = 0x96; + UCHAR level = 0; /*CreateSoundDeviceWithDefaultName(DriverObject, 0, 69, 0, &device);*/ @@ -213,6 +214,20 @@ result == STATUS_SUCCESS ? "succeeded" : "failed"); DbgPrint("Speaker state is now %s\n", speaker_state ? "ENABLED" : "DISABLED"); + + DbgPrint("Resetting SB Mixer\n"); + SbMixerReset((PUCHAR)0x220); + + DbgPrint("Setting master level to 0F\n"); + result = SbMixerSetLevel((PUCHAR)0x220, SB_MIX_MASTER_LEVEL, 0x0f); + DbgPrint("Request %s\n", + result == STATUS_SUCCESS ? "succeeded" : "failed"); + + DbgPrint("Getting master level\n"); + result = SbMixerGetLevel((PUCHAR)0x220, SB_MIX_MASTER_LEVEL, &level); + DbgPrint("Request %s\n", + result == STATUS_SUCCESS ? "succeeded" : "failed"); + DbgPrint("Level is 0x%x\n", level); return STATUS_SUCCESS; } Modified: branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/include/react…
============================================================================== --- branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h [iso-8859-1] (original) +++ branches/silverblade-audio/include/reactos/libs/sound/sbdsp.h [iso-8859-1] Wed Jul 2 05:23:18 2008 @@ -90,6 +90,7 @@ /* Mixer lines */ +#define SB_MIX_RESET 0x00 #define SB_MIX_MASTER_LEFT_LEVEL 0x30 #define SB_MIX_MASTER_RIGHT_LEVEL 0x31 #define SB_MIX_VOC_LEFT_LEVEL 0x32 @@ -103,8 +104,8 @@ #define SB_MIX_MIC_LEVEL 0x3A #define SB_MIX_PC_SPEAKER_LEVEL 0x3B #define SB_MIX_OUTPUT_SWITCHES 0x3C -#define SB_MIX_INPUT_LEFT_LEVEL 0x3D -#define SB_MIX_INPUT_RIGHT_LEVEL 0x3E +#define SB_MIX_INPUT_LEFT_SWITCHES 0x3D +#define SB_MIX_INPUT_RIGHT_SWITCHES 0x3E #define SB_MIX_INPUT_LEFT_GAIN 0x3F #define SB_MIX_INPUT_RIGHT_GAIN 0x40 #define SB_MIX_OUTPUT_LEFT_GAIN 0x41 @@ -247,4 +248,47 @@ IN ULONG Timeout); +/* + Reset the mixer +*/ +VOID +SbMixerReset(IN PUCHAR BasePort); + +/* + Pack mixer level data +*/ +NTSTATUS +SbMixerPackLevelData( + IN UCHAR Line, + IN UCHAR Level, + OUT PUCHAR PackedLevel); + +/* + Unpack mixer level data +*/ +NTSTATUS +SbMixerUnpackLevelData( + IN UCHAR Line, + IN UCHAR PackedLevel, + OUT PUCHAR Level); + +/* + Set a mixer line level +*/ +NTSTATUS +SbMixerSetLevel( + IN PUCHAR BasePort, + IN UCHAR Line, + IN UCHAR Level); + +/* + Get a mixer line level +*/ +NTSTATUS +SbMixerGetLevel( + IN PUCHAR BasePort, + IN UCHAR Line, + OUT PUCHAR Level); + + #endif Modified: branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c URL:
http://svn.reactos.org/svn/reactos/branches/silverblade-audio/lib/drivers/s…
============================================================================== --- branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c [iso-8859-1] (original) +++ branches/silverblade-audio/lib/drivers/sound/soundblaster/mixer.c [iso-8859-1] Wed Jul 2 05:23:18 2008 @@ -11,6 +11,9 @@ Notes: Functions documented in sbdsp.h + + Currently, input/output switches and AGC are not + supported. Nor is PC speaker volume. */ #include <ntddk.h> @@ -18,4 +21,200 @@ #include <sbdsp.h> -/* Stub... */ +VOID +SbMixerReset(IN PUCHAR BasePort) +{ + WRITE_SB_MIXER_REGISTER(BasePort, SB_MIX_RESET); + /* Are we meant to send anything else? */ +} + +NTSTATUS +SbMixerPackLevelData( + IN UCHAR Line, + IN UCHAR Level, + OUT PUCHAR PackedLevel) +{ + if ( ! PackedLevel ) + return STATUS_INVALID_PARAMETER_3; + + switch ( Line ) + { + case SB_MIX_MASTER_LEFT_LEVEL : + case SB_MIX_MASTER_RIGHT_LEVEL : + case SB_MIX_VOC_LEFT_LEVEL : + case SB_MIX_VOC_RIGHT_LEVEL : + case SB_MIX_MIDI_LEFT_LEVEL : + case SB_MIX_MIDI_RIGHT_LEVEL : + case SB_MIX_CD_LEFT_LEVEL : + case SB_MIX_CD_RIGHT_LEVEL : + case SB_MIX_LINE_LEFT_LEVEL : + case SB_MIX_LINE_RIGHT_LEVEL : + case SB_MIX_MIC_LEVEL : + case SB_MIX_LEGACY_MIC_LEVEL : /* is this correct? */ + { + if ( Level >= 0x20 ) + return STATUS_INVALID_PARAMETER_2; + + *PackedLevel = Level << 3; + return STATUS_SUCCESS; + } + + case SB_MIX_INPUT_LEFT_GAIN : + case SB_MIX_INPUT_RIGHT_GAIN : + case SB_MIX_OUTPUT_LEFT_GAIN : + case SB_MIX_OUTPUT_RIGHT_GAIN : + { + if ( Level >= 0x04 ) + return STATUS_INVALID_PARAMETER_2; + + *PackedLevel = Level << 6; + return STATUS_SUCCESS; + } + + case SB_MIX_VOC_LEVEL : /* legacy */ + case SB_MIX_MASTER_LEVEL : + case SB_MIX_FM_LEVEL : + case SB_MIX_CD_LEVEL : + case SB_MIX_LINE_LEVEL : + case SB_MIX_TREBLE_LEFT_LEVEL : /* bass/treble */ + case SB_MIX_TREBLE_RIGHT_LEVEL : + case SB_MIX_BASS_LEFT_LEVEL : + case SB_MIX_BASS_RIGHT_LEVEL : + { + if ( Level >= 0x10 ) + return STATUS_INVALID_PARAMETER_2; + + *PackedLevel = Level << 4; + return STATUS_SUCCESS; + } + + default : + return STATUS_INVALID_PARAMETER_1; + }; +} + +NTSTATUS +SbMixerUnpackLevelData( + IN UCHAR Line, + IN UCHAR PackedLevel, + OUT PUCHAR Level) +{ + if ( ! Level ) + return STATUS_INVALID_PARAMETER_3; + + switch ( Line ) + { + case SB_MIX_MASTER_LEFT_LEVEL : + case SB_MIX_MASTER_RIGHT_LEVEL : + case SB_MIX_VOC_LEFT_LEVEL : + case SB_MIX_VOC_RIGHT_LEVEL : + case SB_MIX_MIDI_LEFT_LEVEL : + case SB_MIX_MIDI_RIGHT_LEVEL : + case SB_MIX_CD_LEFT_LEVEL : + case SB_MIX_CD_RIGHT_LEVEL : + case SB_MIX_LINE_LEFT_LEVEL : + case SB_MIX_LINE_RIGHT_LEVEL : + case SB_MIX_MIC_LEVEL : + { + *Level = PackedLevel >> 3; + return STATUS_SUCCESS; + } + + case SB_MIX_INPUT_LEFT_GAIN : + case SB_MIX_INPUT_RIGHT_GAIN : + case SB_MIX_OUTPUT_LEFT_GAIN : + case SB_MIX_OUTPUT_RIGHT_GAIN : + { + *Level = PackedLevel >> 6; + return STATUS_SUCCESS; + } + + case SB_MIX_VOC_LEVEL : /* legacy */ + case SB_MIX_MASTER_LEVEL : + case SB_MIX_FM_LEVEL : + case SB_MIX_CD_LEVEL : + case SB_MIX_LINE_LEVEL : + case SB_MIX_TREBLE_LEFT_LEVEL : /* bass/treble */ + case SB_MIX_TREBLE_RIGHT_LEVEL : + case SB_MIX_BASS_LEFT_LEVEL : + case SB_MIX_BASS_RIGHT_LEVEL : + { + *Level = PackedLevel >> 4; + return STATUS_SUCCESS; + } + + default : + return STATUS_INVALID_PARAMETER_1; + }; +} + +NTSTATUS +SbMixerSetLevel( + IN PUCHAR BasePort, + IN UCHAR Line, + IN UCHAR Level) +{ + UCHAR PackedLevel = 0; + NTSTATUS Status; + + Status = SbMixerPackLevelData(Line, Level, &PackedLevel); + + switch ( Status ) + { + case STATUS_SUCCESS : + break; + + case STATUS_INVALID_PARAMETER_1 : + return STATUS_INVALID_PARAMETER_2; + + case STATUS_INVALID_PARAMETER_2 : + return STATUS_INVALID_PARAMETER_3; + + default : + return Status; + }; + + DbgPrint("SbMixerSetLevel: Line 0x%x, raw level 0x%x, packed 0x%x\n", Line, Level, PackedLevel); + + WRITE_SB_MIXER_REGISTER(BasePort, Line); + WRITE_SB_MIXER_DATA(BasePort, PackedLevel); + + return STATUS_SUCCESS; +} + +NTSTATUS +SbMixerGetLevel( + IN PUCHAR BasePort, + IN UCHAR Line, + OUT PUCHAR Level) +{ + UCHAR PackedLevel = 0; + NTSTATUS Status; + + if ( ! Level ) + return STATUS_INVALID_PARAMETER_3; + + WRITE_SB_MIXER_REGISTER(BasePort, Line); + PackedLevel = READ_SB_MIXER_DATA(BasePort); + + Status = SbMixerUnpackLevelData(Line, PackedLevel, Level); + + switch ( Status ) + { + case STATUS_SUCCESS : + break; + + case STATUS_INVALID_PARAMETER_1 : + return STATUS_INVALID_PARAMETER_2; + + case STATUS_INVALID_PARAMETER_2 : + return STATUS_INVALID_PARAMETER_3; + + default : + return Status; + }; + + DbgPrint("SbMixerGetLevel: Line 0x%x, raw level 0x%x, packed 0x%x\n", Line, Level, PackedLevel); + + return STATUS_SUCCESS; +}
16 years, 5 months
1
0
0
0
[fireball] 34256: - Prevent crashes when heapPtr is NULL, also fix broken heap magic output. Thanks Mephisto!
by fireball@svn.reactos.org
Author: fireball Date: Wed Jul 2 05:00:12 2008 New Revision: 34256 URL:
http://svn.reactos.org/svn/reactos?rev=34256&view=rev
Log: - Prevent crashes when heapPtr is NULL, also fix broken heap magic output. Thanks Mephisto! Modified: trunk/reactos/lib/rtl/heap.c Modified: trunk/reactos/lib/rtl/heap.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/heap.c?rev=34256&r…
============================================================================== --- trunk/reactos/lib/rtl/heap.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/heap.c [iso-8859-1] Wed Jul 2 05:00:12 2008 @@ -335,7 +335,10 @@ HEAP *heapPtr = (HEAP *)heap; if (!heapPtr || (heapPtr->magic != HEAP_MAGIC)) { - ERR("Invalid heap %p, magic:%4s!\n", heap,heapPtr->magic ); + if (heapPtr) + ERR("Invalid heap %p, magic:%.4s!\n", heap, &heapPtr->magic ); + else + ERR("Invalid heap %p!\n", heap ); //KeDumpStackFrames(NULL); return NULL; }
16 years, 5 months
1
0
0
0
[gedmurphy] 34255: - the lib has an entry point - remove all non-needed stuff
by gedmurphy@svn.reactos.org
Author: gedmurphy Date: Wed Jul 2 03:49:10 2008 New Revision: 34255 URL:
http://svn.reactos.org/svn/reactos?rev=34255&view=rev
Log: - the lib has an entry point - remove all non-needed stuff Modified: trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild Modified: trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvcrt40/msvcrt4…
============================================================================== --- trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild [iso-8859-1] Wed Jul 2 03:49:10 2008 @@ -1,18 +1,15 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> <group> -<module name="msvcrt40" type="win32dll" baseaddress="${BASEADDRESS_MSVCRT40}" installbase="system32" installname="msvcrt40.dll" allowwarnings="true" entrypoint="0"> +<module name="msvcrt40" type="win32dll" baseaddress="${BASEADDRESS_MSVCRT40}" installbase="system32" installname="msvcrt40.dll"> <importlibrary definition="msvcrt40.spec.def" /> <include base="msvcrt40">.</include> <include base="ReactOS">include/reactos/wine</include> <define name="__WINESRC__" /> - <define name="WINVER">0x600</define> - <define name="_WIN32_WINNT">0x600</define> <file>msvcrt40.c</file> <file>msvcrt40.spec</file> <library>wine</library> <library>msvcrt</library> <library>kernel32</library> - <library>ntdll</library> </module> </group>
16 years, 5 months
1
0
0
0
[dchapyshev] 34254: - Add msvcrt40 to bootcd
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Jul 2 03:22:52 2008 New Revision: 34254 URL:
http://svn.reactos.org/svn/reactos?rev=34254&view=rev
Log: - Add msvcrt40 to bootcd Modified: trunk/reactos/boot/bootdata/packages/reactos.dff Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Wed Jul 2 03:22:52 2008 @@ -272,6 +272,7 @@ dll\win32\msimg32\msimg32.dll 1 dll\win32\msvcrt\msvcrt.dll 1 dll\win32\msvcrt20\msvcrt20.dll 1 +dll\win32\msvcrt40\msvcrt40.dll 1 dll\win32\msvfw32\msvfw32.dll 1 dll\win32\mswsock\mswsock.dll 1 dll\win32\msxml3\msxml3.dll 1
16 years, 5 months
1
0
0
0
[dchapyshev] 34253: - Add baseaddress for msvcrt40
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Jul 2 03:21:39 2008 New Revision: 34253 URL:
http://svn.reactos.org/svn/reactos?rev=34253&view=rev
Log: - Add baseaddress for msvcrt40 Modified: trunk/reactos/baseaddress.rbuild Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=342…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Wed Jul 2 03:21:39 2008 @@ -179,6 +179,7 @@ <property name="BASEADDRESS_DNSAPI" value="0x77fb0000" /> <property name="BASEADDRESS_MSVCRT" value="0x78000000" /> <property name="BASEADDRESS_MSVCRT20" value="0x78500000" /> + <property name="BASEADDRESS_MSVCRT40" value="0x78700000" /> <property name="BASEADDRESS_MSCOREE" value="0x79000000" /> <property name="BASEADDRESS_KERNEL32" value="0x7c800000" /> <property name="BASEADDRESS_NTDLL" value="0x7c900000" />
16 years, 5 months
1
0
0
0
[dchapyshev] 34252: - Add msvcrt40 from Wine
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Jul 2 03:20:43 2008 New Revision: 34252 URL:
http://svn.reactos.org/svn/reactos?rev=34252&view=rev
Log: - Add msvcrt40 from Wine Added: trunk/reactos/dll/win32/msvcrt40/ trunk/reactos/dll/win32/msvcrt40/msvcrt40.c (with props) trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild (with props) trunk/reactos/dll/win32/msvcrt40/msvcrt40.spec (with props) Modified: trunk/reactos/dll/win32/win32.rbuild Added: trunk/reactos/dll/win32/msvcrt40/msvcrt40.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvcrt40/msvcrt4…
============================================================================== --- trunk/reactos/dll/win32/msvcrt40/msvcrt40.c (added) +++ trunk/reactos/dll/win32/msvcrt40/msvcrt40.c [iso-8859-1] Wed Jul 2 03:20:43 2008 @@ -1,0 +1,42 @@ +/* + * msvcrt40 main file + * + * Copyright (C) 2007 Louis Lenders + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msvcrt40); + +BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) +{ + switch (reason) + { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls( inst ); + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} Propchange: trunk/reactos/dll/win32/msvcrt40/msvcrt40.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvcrt40/msvcrt4…
============================================================================== --- trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild (added) +++ trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild [iso-8859-1] Wed Jul 2 03:20:43 2008 @@ -1,0 +1,18 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> +<module name="msvcrt40" type="win32dll" baseaddress="${BASEADDRESS_MSVCRT40}" installbase="system32" installname="msvcrt40.dll" allowwarnings="true" entrypoint="0"> + <importlibrary definition="msvcrt40.spec.def" /> + <include base="msvcrt40">.</include> + <include base="ReactOS">include/reactos/wine</include> + <define name="__WINESRC__" /> + <define name="WINVER">0x600</define> + <define name="_WIN32_WINNT">0x600</define> + <file>msvcrt40.c</file> + <file>msvcrt40.spec</file> + <library>wine</library> + <library>msvcrt</library> + <library>kernel32</library> + <library>ntdll</library> +</module> +</group> Propchange: trunk/reactos/dll/win32/msvcrt40/msvcrt40.rbuild ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/msvcrt40/msvcrt40.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvcrt40/msvcrt4…
============================================================================== --- trunk/reactos/dll/win32/msvcrt40/msvcrt40.spec (added) +++ trunk/reactos/dll/win32/msvcrt40/msvcrt40.spec [iso-8859-1] Wed Jul 2 03:20:43 2008 @@ -1,0 +1,1165 @@ +@ stub ??0Iostream_init@@QAE@AAVios@@H@Z +@ stub ??0Iostream_init@@QAE@XZ +@ cdecl -i386 ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) msvcrt.??0__non_rtti_object@@QAE@ABV0@@Z +@ cdecl -i386 ??0__non_rtti_object@@QAE@PBD@Z(ptr) msvcrt.??0__non_rtti_object@@QAE@PBD@Z +@ cdecl -i386 ??0bad_cast@@QAE@ABQBD@Z(ptr) msvcrt.??0bad_cast@@QAE@ABQBD@Z +@ cdecl -i386 ??0bad_cast@@QAE@ABV0@@Z(ptr) msvcrt.??0bad_cast@@QAE@ABV0@@Z +@ cdecl -i386 ??0bad_typeid@@QAE@ABV0@@Z(ptr) msvcrt.??0bad_typeid@@QAE@ABV0@@Z +@ cdecl -i386 ??0bad_typeid@@QAE@PBD@Z(ptr) msvcrt.??0bad_typeid@@QAE@PBD@Z +@ cdecl -i386 ??0exception@@QAE@ABQBD@Z(ptr) msvcrt.??0exception@@QAE@ABQBD@Z +@ cdecl -i386 ??0exception@@QAE@ABV0@@Z(ptr) msvcrt.??0exception@@QAE@ABV0@@Z +@ cdecl -i386 ??0exception@@QAE@XZ() msvcrt.??0exception@@QAE@XZ +@ stub ??0filebuf@@QAE@ABV0@@Z +@ stub ??0filebuf@@QAE@H@Z +@ stub ??0filebuf@@QAE@HPADH@Z +@ stub ??0filebuf@@QAE@XZ +@ stub ??0fstream@@QAE@ABV0@@Z +@ stub ??0fstream@@QAE@H@Z +@ stub ??0fstream@@QAE@HPADH@Z +@ stub ??0fstream@@QAE@PBDHH@Z +@ stub ??0fstream@@QAE@XZ +@ stub ??0ifstream@@QAE@ABV0@@Z +@ stub ??0ifstream@@QAE@H@Z +@ stub ??0ifstream@@QAE@HPADH@Z +@ stub ??0ifstream@@QAE@PBDHH@Z +@ stub ??0ifstream@@QAE@XZ +@ stub ??0ios@@IAE@ABV0@@Z +@ stub ??0ios@@IAE@XZ +@ stub ??0ios@@QAE@PAVstreambuf@@@Z +@ stub ??0iostream@@IAE@ABV0@@Z +@ stub ??0iostream@@IAE@XZ +@ stub ??0iostream@@QAE@PAVstreambuf@@@Z +@ stub ??0istream@@IAE@ABV0@@Z +@ stub ??0istream@@IAE@XZ +@ stub ??0istream@@QAE@PAVstreambuf@@@Z +@ stub ??0istream_withassign@@QAE@ABV0@@Z +@ stub ??0istream_withassign@@QAE@PAVstreambuf@@@Z +@ stub ??0istream_withassign@@QAE@XZ +@ stub ??0istrstream@@QAE@ABV0@@Z +@ stub ??0istrstream@@QAE@PAD@Z +@ stub ??0istrstream@@QAE@PADH@Z +@ stub ??0logic_error@@QAE@ABQBD@Z +@ stub ??0logic_error@@QAE@ABV0@@Z +@ stub ??0ofstream@@QAE@ABV0@@Z +@ stub ??0ofstream@@QAE@H@Z +@ stub ??0ofstream@@QAE@HPADH@Z +@ stub ??0ofstream@@QAE@PBDHH@Z +@ stub ??0ofstream@@QAE@XZ +@ stub ??0ostream@@IAE@ABV0@@Z +@ stub ??0ostream@@IAE@XZ +@ stub ??0ostream@@QAE@PAVstreambuf@@@Z +@ stub ??0ostream_withassign@@QAE@ABV0@@Z +@ stub ??0ostream_withassign@@QAE@PAVstreambuf@@@Z +@ stub ??0ostream_withassign@@QAE@XZ +@ stub ??0ostrstream@@QAE@ABV0@@Z +@ stub ??0ostrstream@@QAE@PADHH@Z +@ stub ??0ostrstream@@QAE@XZ +@ stub ??0stdiobuf@@QAE@ABV0@@Z +@ stub ??0stdiobuf@@QAE@PAU_iobuf@@@Z +@ stub ??0stdiostream@@QAE@ABV0@@Z +@ stub ??0stdiostream@@QAE@PAU_iobuf@@@Z +@ stub ??0streambuf@@IAE@PADH@Z +@ stub ??0streambuf@@IAE@XZ +@ stub ??0streambuf@@QAE@ABV0@@Z +@ stub ??0strstream@@QAE@ABV0@@Z +@ stub ??0strstream@@QAE@PADHH@Z +@ stub ??0strstream@@QAE@XZ +@ stub ??0strstreambuf@@QAE@ABV0@@Z +@ stub ??0strstreambuf@@QAE@H@Z +@ stub ??0strstreambuf@@QAE@P6APAXJ@ZP6AXPAX@Z@Z +@ stub ??0strstreambuf@@QAE@PADH0@Z +@ stub ??0strstreambuf@@QAE@XZ +@ stub ??1Iostream_init@@QAE@XZ +@ cdecl -i386 ??1__non_rtti_object@@UAE@XZ() msvcrt.??1__non_rtti_object@@UAE@XZ +@ cdecl -i386 ??1bad_cast@@UAE@XZ() msvcrt.??1bad_cast@@UAE@XZ +@ cdecl -i386 ??1bad_typeid@@UAE@XZ() msvcrt.??1bad_typeid@@UAE@XZ +@ cdecl -i386 ??1exception@@UAE@XZ() msvcrt.??1exception@@UAE@XZ +@ stub ??1filebuf@@UAE@XZ +@ stub ??1fstream@@UAE@XZ +@ stub ??1ifstream@@UAE@XZ +@ stub ??1ios@@UAE@XZ +@ stub ??1iostream@@UAE@XZ +@ stub ??1istream@@UAE@XZ +@ stub ??1istream_withassign@@UAE@XZ +@ stub ??1istrstream@@UAE@XZ +@ stub ??1logic_error@@UAE@XZ +@ stub ??1ofstream@@UAE@XZ +@ stub ??1ostream@@UAE@XZ +@ stub ??1ostream_withassign@@UAE@XZ +@ stub ??1ostrstream@@UAE@XZ +@ stub ??1stdiobuf@@UAE@XZ +@ stub ??1stdiostream@@UAE@XZ +@ stub ??1streambuf@@UAE@XZ +@ stub ??1strstream@@UAE@XZ +@ stub ??1strstreambuf@@UAE@XZ +@ cdecl -i386 ??1type_info@@UAE@XZ() msvcrt.??1type_info@@UAE@XZ +@ cdecl ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z +@ cdecl ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z +@ stub ??4Iostream_init@@QAEAAV0@ABV0@@Z +@ cdecl -i386 ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z +@ cdecl -i386 ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4bad_cast@@QAEAAV0@ABV0@@Z +@ cdecl -i386 ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4bad_typeid@@QAEAAV0@ABV0@@Z +@ cdecl -i386 ??4exception@@QAEAAV0@ABV0@@Z(ptr) msvcrt.??4exception@@QAEAAV0@ABV0@@Z +@ stub ??4filebuf@@QAEAAV0@ABV0@@Z +@ stub ??4fstream@@QAEAAV0@AAV0@@Z +@ stub ??4ifstream@@QAEAAV0@ABV0@@Z +@ stub ??4ios@@IAEAAV0@ABV0@@Z +@ stub ??4iostream@@IAEAAV0@AAV0@@Z +@ stub ??4iostream@@IAEAAV0@PAVstreambuf@@@Z +@ stub ??4istream@@IAEAAV0@ABV0@@Z +@ stub ??4istream@@IAEAAV0@PAVstreambuf@@@Z +@ stub ??4istream_withassign@@QAEAAV0@ABV0@@Z +@ stub ??4istream_withassign@@QAEAAVistream@@ABV1@@Z +@ stub ??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z +@ stub ??4istrstream@@QAEAAV0@ABV0@@Z +@ stub ??4logic_error@@QAEAAV0@ABV0@@Z +@ stub ??4ofstream@@QAEAAV0@ABV0@@Z +@ stub ??4ostream@@IAEAAV0@ABV0@@Z +@ stub ??4ostream@@IAEAAV0@PAVstreambuf@@@Z +@ stub ??4ostream_withassign@@QAEAAV0@ABV0@@Z +@ stub ??4ostream_withassign@@QAEAAVostream@@ABV1@@Z +@ stub ??4ostream_withassign@@QAEAAVostream@@PAVstreambuf@@@Z +@ stub ??4ostrstream@@QAEAAV0@ABV0@@Z +@ stub ??4stdiobuf@@QAEAAV0@ABV0@@Z +@ stub ??4stdiostream@@QAEAAV0@AAV0@@Z +@ stub ??4streambuf@@QAEAAV0@ABV0@@Z +@ stub ??4strstream@@QAEAAV0@AAV0@@Z +@ stub ??4strstreambuf@@QAEAAV0@ABV0@@Z +@ stub ??5istream@@QAEAAV0@AAC@Z +@ stub ??5istream@@QAEAAV0@AAD@Z +@ stub ??5istream@@QAEAAV0@AAE@Z +@ stub ??5istream@@QAEAAV0@AAF@Z +@ stub ??5istream@@QAEAAV0@AAG@Z +@ stub ??5istream@@QAEAAV0@AAH@Z +@ stub ??5istream@@QAEAAV0@AAI@Z +@ stub ??5istream@@QAEAAV0@AAJ@Z +@ stub ??5istream@@QAEAAV0@AAK@Z +@ stub ??5istream@@QAEAAV0@AAM@Z +@ stub ??5istream@@QAEAAV0@AAN@Z +@ stub ??5istream@@QAEAAV0@AAO@Z +@ stub ??5istream@@QAEAAV0@P6AAAV0@AAV0@@Z@Z +@ stub ??5istream@@QAEAAV0@P6AAAVios@@AAV1@@Z@Z +@ stub ??5istream@@QAEAAV0@PAC@Z +@ stub ??5istream@@QAEAAV0@PAD@Z +@ stub ??5istream@@QAEAAV0@PAE@Z +@ stub ??5istream@@QAEAAV0@PAVstreambuf@@@Z +@ stub ??6ostream@@QAEAAV0@C@Z +@ stub ??6ostream@@QAEAAV0@D@Z +@ stub ??6ostream@@QAEAAV0@E@Z +@ stub ??6ostream@@QAEAAV0@F@Z +@ stub ??6ostream@@QAEAAV0@G@Z +@ stub ??6ostream@@QAEAAV0@H@Z +@ stub ??6ostream@@QAEAAV0@I@Z +@ stub ??6ostream@@QAEAAV0@J@Z +@ stub ??6ostream@@QAEAAV0@K@Z +@ stub ??6ostream@@QAEAAV0@M@Z +@ stub ??6ostream@@QAEAAV0@N@Z +@ stub ??6ostream@@QAEAAV0@O@Z +@ stub ??6ostream@@QAEAAV0@P6AAAV0@AAV0@@Z@Z +@ stub ??6ostream@@QAEAAV0@P6AAAVios@@AAV1@@Z@Z +@ stub ??6ostream@@QAEAAV0@PAVstreambuf@@@Z +@ stub ??6ostream@@QAEAAV0@PBC@Z +@ stub ??6ostream@@QAEAAV0@PBD@Z +@ stub ??6ostream@@QAEAAV0@PBE@Z +@ stub ??6ostream@@QAEAAV0@PBX@Z +@ stub ??7ios@@QBEHXZ +@ cdecl -i386 ??8type_info@@QBEHABV0@@Z(ptr) msvcrt.??8type_info@@QBEHABV0@@Z +@ cdecl -i386 ??9type_info@@QBEHABV0@@Z(ptr) msvcrt.??9type_info@@QBEHABV0@@Z +@ stub ??Bios@@QBEPAXXZ +@ extern -i386 ??_7__non_rtti_object@@6B@ msvcrt.??_7__non_rtti_object@@6B@ +@ extern -i386 ??_7bad_cast@@6B@ msvcrt.??_7bad_cast@@6B@ +@ extern -i386 ??_7bad_typeid@@6B@ msvcrt.??_7bad_typeid@@6B@ +@ extern -i386 ??_7exception@@6B@ msvcrt.??_7exception@@6B@ +@ stub ??_7filebuf@@6B@ +@ stub ??_7fstream@@6B@ +@ stub ??_7ifstream@@6B@ +@ stub ??_7ios@@6B@ +@ stub ??_7iostream@@6B@ +@ stub ??_7istream@@6B@ +@ stub ??_7istream_withassign@@6B@ +@ stub ??_7istrstream@@6B@ +@ stub ??_7logic_error@@6B@ +@ stub ??_7ofstream@@6B@ +@ stub ??_7ostream@@6B@ +@ stub ??_7ostream_withassign@@6B@ +@ stub ??_7ostrstream@@6B@ +@ stub ??_7stdiobuf@@6B@ +@ stub ??_7stdiostream@@6B@ +@ stub ??_7streambuf@@6B@ +@ stub ??_7strstream@@6B@ +@ stub ??_7strstreambuf@@6B@ +@ stub ??_8fstream@@7Bistream@@@ +@ stub ??_8fstream@@7Bostream@@@ +@ stub ??_8ifstream@@7B@ +@ stub ??_8iostream@@7Bistream@@@ +@ stub ??_8iostream@@7Bostream@@@ +@ stub ??_8istream@@7B@ +@ stub ??_8istream_withassign@@7B@ +@ stub ??_8istrstream@@7B@ +@ stub ??_8ofstream@@7B@ +@ stub ??_8ostream@@7B@ +@ stub ??_8ostream_withassign@@7B@ +@ stub ??_8ostrstream@@7B@ +@ stub ??_8stdiostream@@7Bistream@@@ +@ stub ??_8stdiostream@@7Bostream@@@ +@ stub ??_8strstream@@7Bistream@@@ +@ stub ??_8strstream@@7Bostream@@@ +@ stub ??_Dfstream@@QAEXXZ +@ stub ??_Difstream@@QAEXXZ +@ stub ??_Diostream@@QAEXXZ +@ stub ??_Distream@@QAEXXZ +@ stub ??_Distream_withassign@@QAEXXZ +@ stub ??_Distrstream@@QAEXXZ +@ stub ??_Dofstream@@QAEXXZ +@ stub ??_Dostream@@QAEXXZ +@ stub ??_Dostream_withassign@@QAEXXZ +@ stub ??_Dostrstream@@QAEXXZ +@ stub ??_Dstdiostream@@QAEXXZ +@ stub ??_Dstrstream@@QAEXXZ +@ stub ??_EIostream_init@@QAEPAXI@Z +@ cdecl -i386 ??_E__non_rtti_object@@UAEPAXI@Z(long) msvcrt.??_E__non_rtti_object@@UAEPAXI@Z +@ cdecl -i386 ??_Ebad_cast@@UAEPAXI@Z(long) msvcrt.??_Ebad_cast@@UAEPAXI@Z +@ cdecl -i386 ??_Ebad_typeid@@UAEPAXI@Z(long) msvcrt.??_Ebad_typeid@@UAEPAXI@Z +@ cdecl -i386 ??_Eexception@@UAEPAXI@Z(long) msvcrt.??_Eexception@@UAEPAXI@Z +@ stub ??_Efilebuf@@UAEPAXI@Z +@ stub ??_Efstream@@UAEPAXI@Z +@ stub ??_Eifstream@@UAEPAXI@Z +@ stub ??_Eios@@UAEPAXI@Z +@ stub ??_Eiostream@@UAEPAXI@Z +@ stub ??_Eistream@@UAEPAXI@Z +@ stub ??_Eistream_withassign@@UAEPAXI@Z +@ stub ??_Eistrstream@@UAEPAXI@Z +@ stub ??_Elogic_error@@UAEPAXI@Z +@ stub ??_Eofstream@@UAEPAXI@Z +@ stub ??_Eostream@@UAEPAXI@Z +@ stub ??_Eostream_withassign@@UAEPAXI@Z +@ stub ??_Eostrstream@@UAEPAXI@Z +@ stub ??_Estdiobuf@@UAEPAXI@Z +@ stub ??_Estdiostream@@UAEPAXI@Z +@ stub ??_Estreambuf@@UAEPAXI@Z +@ stub ??_Estrstream@@UAEPAXI@Z +@ stub ??_Estrstreambuf@@UAEPAXI@Z +@ stub ??_GIostream_init@@QAEPAXI@Z +@ cdecl -i386 ??_G__non_rtti_object@@UAEPAXI@Z(long) msvcrt.??_G__non_rtti_object@@UAEPAXI@Z +@ cdecl -i386 ??_Gbad_cast@@UAEPAXI@Z(long) msvcrt.??_Gbad_cast@@UAEPAXI@Z +@ cdecl -i386 ??_Gbad_typeid@@UAEPAXI@Z(long) msvcrt.??_Gbad_typeid@@UAEPAXI@Z +@ cdecl -i386 ??_Gexception@@UAEPAXI@Z(long) msvcrt.??_Gexception@@UAEPAXI@Z +@ stub ??_Gfilebuf@@UAEPAXI@Z +@ stub ??_Gfstream@@UAEPAXI@Z +@ stub ??_Gifstream@@UAEPAXI@Z +@ stub ??_Gios@@UAEPAXI@Z +@ stub ??_Giostream@@UAEPAXI@Z +@ stub ??_Gistream@@UAEPAXI@Z +@ stub ??_Gistream_withassign@@UAEPAXI@Z +@ stub ??_Gistrstream@@UAEPAXI@Z +@ stub ??_Glogic_error@@UAEPAXI@Z +@ stub ??_Gofstream@@UAEPAXI@Z +@ stub ??_Gostream@@UAEPAXI@Z +@ stub ??_Gostream_withassign@@UAEPAXI@Z +@ stub ??_Gostrstream@@UAEPAXI@Z +@ stub ??_Gstdiobuf@@UAEPAXI@Z +@ stub ??_Gstdiostream@@UAEPAXI@Z +@ stub ??_Gstreambuf@@UAEPAXI@Z +@ stub ??_Gstrstream@@UAEPAXI@Z +@ stub ??_Gstrstreambuf@@UAEPAXI@Z +@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ +@ cdecl ?_query_new_mode@@YAHXZ() msvcrt.?_query_new_mode@@YAHXZ +@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) msvcrt.?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z +@ cdecl ?_set_new_mode@@YAHH@Z(long) msvcrt.?_set_new_mode@@YAHH@Z +@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) msvcrt.?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z +@ stub ?adjustfield@ios@@2JB +@ stub ?allocate@streambuf@@IAEHXZ +@ stub ?attach@filebuf@@QAEPAV1@H@Z +@ stub ?attach@fstream@@QAEXH@Z +@ stub ?attach@ifstream@@QAEXH@Z +@ stub ?attach@ofstream@@QAEXH@Z +@ stub ?bad@ios@@QBEHXZ +@ stub ?base@streambuf@@IBEPADXZ +@ stub ?basefield@ios@@2JB +@ cdecl -i386 ?before@type_info@@QBEHABV1@@Z(ptr) msvcrt.?before@type_info@@QBEHABV1@@Z +@ stub ?binary@filebuf@@2HB +@ stub ?bitalloc@ios@@SAJXZ +@ stub ?blen@streambuf@@IBEHXZ +@ stub ?cerr@@3Vostream_withassign@@A +@ stub ?cin@@3Vistream_withassign@@A +@ stub ?clear@ios@@QAEXH@Z +@ stub ?clog@@3Vostream_withassign@@A +@ stub ?close@filebuf@@QAEPAV1@XZ +@ stub ?close@fstream@@QAEXXZ +@ stub ?close@ifstream@@QAEXXZ +@ stub ?close@ofstream@@QAEXXZ +@ stub ?clrlock@ios@@QAAXXZ +@ stub ?clrlock@streambuf@@QAEXXZ +@ stub ?cout@@3Vostream_withassign@@A +@ stub ?dbp@streambuf@@QAEXXZ +@ stub ?dec@@YAAAVios@@AAV1@@Z +@ stub ?delbuf@ios@@QAEXH@Z +@ stub ?delbuf@ios@@QBEHXZ +@ stub ?doallocate@streambuf@@MAEHXZ +@ stub ?doallocate@strstreambuf@@MAEHXZ +@ stub ?eatwhite@istream@@QAEXXZ +@ stub ?eback@streambuf@@IBEPADXZ +@ stub ?ebuf@streambuf@@IBEPADXZ +@ stub ?egptr@streambuf@@IBEPADXZ +@ stub ?endl@@YAAAVostream@@AAV1@@Z +@ stub ?ends@@YAAAVostream@@AAV1@@Z +@ stub ?eof@ios@@QBEHXZ +@ stub ?epptr@streambuf@@IBEPADXZ +@ stub ?fLockcInit@ios@@0HA +@ stub ?fail@ios@@QBEHXZ +@ stub ?fd@filebuf@@QBEHXZ +@ stub ?fd@fstream@@QBEHXZ +@ stub ?fd@ifstream@@QBEHXZ +@ stub ?fd@ofstream@@QBEHXZ +@ stub ?fill@ios@@QAEDD@Z +@ stub ?fill@ios@@QBEDXZ +@ stub ?flags@ios@@QAEJJ@Z +@ stub ?flags@ios@@QBEJXZ +@ stub ?floatfield@ios@@2JB +@ stub ?flush@@YAAAVostream@@AAV1@@Z +@ stub ?flush@ostream@@QAEAAV1@XZ +@ stub ?freeze@strstreambuf@@QAEXH@Z +@ stub ?gbump@streambuf@@IAEXH@Z +@ stub ?gcount@istream@@QBEHXZ +@ stub ?get@istream@@IAEAAV1@PADHH@Z +@ stub ?get@istream@@QAEAAV1@AAC@Z +@ stub ?get@istream@@QAEAAV1@AAD@Z +@ stub ?get@istream@@QAEAAV1@AAE@Z +@ stub ?get@istream@@QAEAAV1@AAVstreambuf@@D@Z +@ stub ?get@istream@@QAEAAV1@PACHD@Z +@ stub ?get@istream@@QAEAAV1@PADHD@Z +@ stub ?get@istream@@QAEAAV1@PAEHD@Z +@ stub ?get@istream@@QAEHXZ +@ stub ?getdouble@istream@@AAEHPADH@Z +@ stub ?getint@istream@@AAEHPAD@Z +@ stub ?getline@istream@@QAEAAV1@PACHD@Z +@ stub ?getline@istream@@QAEAAV1@PADHD@Z +@ stub ?getline@istream@@QAEAAV1@PAEHD@Z +@ stub ?good@ios@@QBEHXZ +@ stub ?gptr@streambuf@@IBEPADXZ +@ stub ?hex@@YAAAVios@@AAV1@@Z +@ stub ?ignore@istream@@QAEAAV1@HH@Z +@ stub ?in_avail@streambuf@@QBEHXZ +@ stub ?init@ios@@IAEXPAVstreambuf@@@Z +@ stub ?ipfx@istream@@QAEHH@Z +@ stub ?is_open@filebuf@@QBEHXZ +@ stub ?is_open@fstream@@QBEHXZ +@ stub ?is_open@ifstream@@QBEHXZ +@ stub ?is_open@ofstream@@QBEHXZ +@ stub ?isfx@istream@@QAEXXZ +@ stub ?iword@ios@@QBEAAJH@Z +@ stub ?lock@ios@@QAAXXZ +@ stub ?lock@streambuf@@QAEXXZ +@ stub ?lockbuf@ios@@QAAXXZ +@ stub ?lockc@ios@@KAXXZ +@ stub ?lockptr@ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ +@ stub ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ +@ cdecl -i386 ?name@type_info@@QBEPBDXZ() msvcrt.?name@type_info@@QBEPBDXZ +@ stub ?oct@@YAAAVios@@AAV1@@Z +@ stub ?open@filebuf@@QAEPAV1@PBDHH@Z +@ stub ?open@fstream@@QAEXPBDHH@Z +@ stub ?open@ifstream@@QAEXPBDHH@Z +@ stub ?open@ofstream@@QAEXPBDHH@Z +@ stub ?openprot@filebuf@@2HB +@ stub ?opfx@ostream@@QAEHXZ +@ stub ?osfx@ostream@@QAEXXZ +@ stub ?out_waiting@streambuf@@QBEHXZ +@ stub ?overflow@filebuf@@UAEHH@Z +@ stub ?overflow@stdiobuf@@UAEHH@Z +@ stub ?overflow@strstreambuf@@UAEHH@Z +@ stub ?pbackfail@stdiobuf@@UAEHH@Z +@ stub ?pbackfail@streambuf@@UAEHH@Z +@ stub ?pbase@streambuf@@IBEPADXZ +@ stub ?pbump@streambuf@@IAEXH@Z +@ stub ?pcount@ostrstream@@QBEHXZ +@ stub ?pcount@strstream@@QBEHXZ +@ stub ?peek@istream@@QAEHXZ +@ stub ?pptr@streambuf@@IBEPADXZ +@ stub ?precision@ios@@QAEHH@Z +@ stub ?precision@ios@@QBEHXZ +@ stub ?put@ostream@@QAEAAV1@C@Z +@ stub ?put@ostream@@QAEAAV1@D@Z +@ stub ?put@ostream@@QAEAAV1@E@Z +@ stub ?putback@istream@@QAEAAV1@D@Z +@ stub ?pword@ios@@QBEAAPAXH@Z +@ cdecl -i386 ?raw_name@type_info@@QBEPBDXZ() msvcrt.?raw_name@type_info@@QBEPBDXZ +@ stub ?rdbuf@fstream@@QBEPAVfilebuf@@XZ +@ stub ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ +@ stub ?rdbuf@ios@@QBEPAVstreambuf@@XZ +@ stub ?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ +@ stub ?rdbuf@ofstream@@QBEPAVfilebuf@@XZ +@ stub ?rdbuf@ostrstream@@QBEPAVstrstreambuf@@XZ +@ stub ?rdbuf@stdiostream@@QBEPAVstdiobuf@@XZ +@ stub ?rdbuf@strstream@@QBEPAVstrstreambuf@@XZ +@ stub ?rdstate@ios@@QBEHXZ +@ stub ?read@istream@@QAEAAV1@PACH@Z +@ stub ?read@istream@@QAEAAV1@PADH@Z +@ stub ?read@istream@@QAEAAV1@PAEH@Z +@ stub ?sbumpc@streambuf@@QAEHXZ +@ stub ?seekg@istream@@QAEAAV1@J@Z +@ stub ?seekg@istream@@QAEAAV1@JW4seek_dir@ios@@@Z +@ stub ?seekoff@filebuf@@UAEJJW4seek_dir@ios@@H@Z +@ stub ?seekoff@stdiobuf@@UAEJJW4seek_dir@ios@@H@Z +@ stub ?seekoff@streambuf@@UAEJJW4seek_dir@ios@@H@Z +@ stub ?seekoff@strstreambuf@@UAEJJW4seek_dir@ios@@H@Z +@ stub ?seekp@ostream@@QAEAAV1@J@Z +@ stub ?seekp@ostream@@QAEAAV1@JW4seek_dir@ios@@@Z +@ stub ?seekpos@streambuf@@UAEJJH@Z +@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_new_handler@@YAP6AXXZP6AXXZ@Z +@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_terminate@@YAP6AXXZP6AXXZ@Z +@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ@Z +@ stub ?setb@streambuf@@IAEXPAD0H@Z +@ stub ?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z +@ stub ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z +@ stub ?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z +@ stub ?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z +@ stub ?setbuf@streambuf@@UAEPAV1@PADH@Z +@ stub ?setbuf@strstreambuf@@UAEPAVstreambuf@@PADH@Z +@ stub ?setf@ios@@QAEJJ@Z +@ stub ?setf@ios@@QAEJJJ@Z +@ stub ?setg@streambuf@@IAEXPAD00@Z +@ stub ?setlock@ios@@QAAXXZ +@ stub ?setlock@streambuf@@QAEXXZ +@ stub ?setmode@filebuf@@QAEHH@Z +@ stub ?setmode@fstream@@QAEHH@Z +@ stub ?setmode@ifstream@@QAEHH@Z +@ stub ?setmode@ofstream@@QAEHH@Z +@ stub ?setp@streambuf@@IAEXPAD0@Z +@ stub ?setrwbuf@stdiobuf@@QAEHHH@Z +@ stub ?sgetc@streambuf@@QAEHXZ +@ stub ?sgetn@streambuf@@QAEHPADH@Z +@ stub ?sh_none@filebuf@@2HB +@ stub ?sh_read@filebuf@@2HB +@ stub ?sh_write@filebuf@@2HB +@ stub ?snextc@streambuf@@QAEHXZ +@ stub ?sputbackc@streambuf@@QAEHD@Z +@ stub ?sputc@streambuf@@QAEHH@Z +@ stub ?sputn@streambuf@@QAEHPBDH@Z +@ stub ?stdiofile@stdiobuf@@QAEPAU_iobuf@@XZ +@ stub ?stossc@streambuf@@QAEXXZ +@ stub ?str@istrstream@@QAEPADXZ +@ stub ?str@ostrstream@@QAEPADXZ +@ stub ?str@strstream@@QAEPADXZ +@ stub ?str@strstreambuf@@QAEPADXZ +@ stub ?sunk_with_stdio@ios@@0HA +@ stub ?sync@filebuf@@UAEHXZ +@ stub ?sync@istream@@QAEHXZ +@ stub ?sync@stdiobuf@@UAEHXZ +@ stub ?sync@streambuf@@UAEHXZ +@ stub ?sync@strstreambuf@@UAEHXZ +@ stub ?sync_with_stdio@ios@@SAXXZ +@ stub ?tellg@istream@@QAEJXZ +@ stub ?tellp@ostream@@QAEJXZ +@ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ +@ stub ?text@filebuf@@2HB +@ stub ?tie@ios@@QAEPAVostream@@PAV2@@Z +@ stub ?tie@ios@@QBEPAVostream@@XZ +@ stub ?unbuffered@streambuf@@IAEXH@Z +@ stub ?unbuffered@streambuf@@IBEHXZ +@ stub ?underflow@filebuf@@UAEHXZ +@ stub ?underflow@stdiobuf@@UAEHXZ +@ stub ?underflow@strstreambuf@@UAEHXZ +@ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ +@ stub ?unlock@ios@@QAAXXZ +@ stub ?unlock@streambuf@@QAEXXZ +@ stub ?unlockbuf@ios@@QAAXXZ +@ stub ?unlockc@ios@@KAXXZ +@ stub ?unsetf@ios@@QAEJJ@Z +@ cdecl -i386 ?what@exception@@UBEPBDXZ() msvcrt.?what@exception@@UBEPBDXZ +@ stub ?width@ios@@QAEHH@Z +@ stub ?width@ios@@QBEHXZ +@ stub ?write@ostream@@QAEAAV1@PBCH@Z +@ stub ?write@ostream@@QAEAAV1@PBDH@Z +@ stub ?write@ostream@@QAEAAV1@PBEH@Z +@ stub ?writepad@ostream@@AAEAAV1@PBD0@Z +@ stub ?ws@@YAAAVistream@@AAV1@@Z +@ stub ?x_curindex@ios@@0HA +@ stub ?x_lockc@ios@@0U_CRT_CRITICAL_SECTION@@A +@ stub ?x_maxbit@ios@@0JA +@ stub ?x_statebuf@ios@@0PAJA +@ stub ?xalloc@ios@@SAHXZ +@ stub ?xsgetn@streambuf@@UAEHPADH@Z +@ stub ?xsputn@streambuf@@UAEHPBDH@Z +@ cdecl $I10_OUTPUT() msvcrt.$I10_OUTPUT +@ cdecl _CIacos() msvcrt._CIacos +@ cdecl _CIasin() msvcrt._CIasin +@ cdecl _CIatan() msvcrt._CIatan +@ cdecl _CIatan2() msvcrt._CIatan2 +@ cdecl _CIcos() msvcrt._CIcos +@ cdecl _CIcosh() msvcrt._CIcosh +@ cdecl _CIexp() msvcrt._CIexp +@ cdecl _CIfmod() msvcrt._CIfmod +@ cdecl _CIlog() msvcrt._CIlog +@ cdecl _CIlog10() msvcrt._CIlog10 +@ cdecl _CIpow() msvcrt._CIpow +@ cdecl _CIsin() msvcrt._CIsin +@ cdecl _CIsinh() msvcrt._CIsinh +@ cdecl _CIsqrt() msvcrt._CIsqrt +@ cdecl _CItan() msvcrt._CItan +@ cdecl _CItanh() msvcrt._CItanh +@ cdecl _CxxThrowException(long long) msvcrt._CxxThrowException +@ cdecl -i386 _EH_prolog() msvcrt._EH_prolog +@ extern _HUGE msvcrt._HUGE +@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter +@ cdecl -i386 __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler +@ stdcall __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind +@ cdecl __RTCastToVoid(ptr) msvcrt.__RTCastToVoid +@ cdecl __RTDynamicCast(ptr long ptr ptr long) msvcrt.__RTDynamicCast +@ cdecl __RTtypeid(ptr) msvcrt.__RTtypeid +@ cdecl __STRINGTOLD(ptr ptr str long) msvcrt.__STRINGTOLD +@ extern __argc msvcrt.__argc +@ extern __argv msvcrt.__argv +@ cdecl __dllonexit(ptr ptr ptr) msvcrt.__dllonexit +@ cdecl __doserrno() msvcrt.__doserrno +@ cdecl __fpecode() msvcrt.__fpecode +@ cdecl __getmainargs(ptr ptr ptr long ptr) msvcrt.__getmainargs +@ extern __initenv msvcrt.__initenv +@ cdecl __isascii(long) msvcrt.__isascii +@ cdecl __iscsym(long) msvcrt.__iscsym +@ cdecl __iscsymf(long) msvcrt.__iscsymf +@ cdecl __lconv_init() msvcrt.__lconv_init +@ extern __mb_cur_max msvcrt.__mb_cur_max +@ cdecl __p___argc() msvcrt.__p___argc +@ cdecl __p___argv() msvcrt.__p___argv +@ cdecl __p___initenv() msvcrt.__p___initenv +@ cdecl __p___mb_cur_max() msvcrt.__p___mb_cur_max +@ cdecl __p___wargv() msvcrt.__p___wargv +@ cdecl __p___winitenv() msvcrt.__p___winitenv +@ cdecl __p__acmdln() msvcrt.__p__acmdln +@ cdecl __p__amblksiz() msvcrt.__p__amblksiz +@ cdecl __p__commode() msvcrt.__p__commode +@ cdecl __p__daylight() msvcrt.__p__daylight +@ cdecl __p__dstbias() msvcrt.__p__dstbias +@ cdecl __p__environ() msvcrt.__p__environ +@ cdecl __p__fmode() msvcrt.__p__fmode +@ cdecl __p__iob() msvcrt.__p__iob +@ cdecl __p__mbctype() msvcrt.__p__mbctype +@ cdecl __p__osver() msvcrt.__p__osver +@ cdecl __p__pctype() msvcrt.__p__pctype +@ cdecl __p__pgmptr() msvcrt.__p__pgmptr +@ cdecl __p__pwctype() msvcrt.__p__pwctype +@ cdecl __p__timezone() msvcrt.__p__timezone +@ cdecl __p__tzname() msvcrt.__p__tzname +@ cdecl __p__wcmdln() msvcrt.__p__wcmdln +@ cdecl __p__wenviron() msvcrt.__p__wenviron +@ cdecl __p__winmajor() msvcrt.__p__winmajor +@ cdecl __p__winminor() msvcrt.__p__winminor +@ cdecl __p__winver() msvcrt.__p__winver +@ cdecl __p__wpgmptr() msvcrt.__p__wpgmptr +@ cdecl __pxcptinfoptrs() msvcrt.__pxcptinfoptrs +@ cdecl __set_app_type(long) msvcrt.__set_app_type +@ cdecl __setusermatherr(ptr) msvcrt.__setusermatherr +@ cdecl __threadhandle() msvcrt.__threadhandle +@ cdecl __threadid() msvcrt.__threadid +@ cdecl __toascii(long) msvcrt.__toascii +@ cdecl __unDName(long str ptr ptr long) msvcrt.__unDName +@ extern __wargv msvcrt.__wargv +@ cdecl __wgetmainargs(ptr ptr ptr long ptr) msvcrt.__wgetmainargs +@ extern __winitenv msvcrt.__winitenv +@ cdecl _abnormal_termination() msvcrt._abnormal_termination +@ cdecl _access(str long) msvcrt._access +@ extern _acmdln msvcrt._acmdln +@ stdcall _adj_fdiv_m16i(long) msvcrt._adj_fdiv_m16i +@ stdcall _adj_fdiv_m32(long) msvcrt._adj_fdiv_m32 +@ stdcall _adj_fdiv_m32i(long) msvcrt._adj_fdiv_m32i +@ stdcall _adj_fdiv_m64(long long) msvcrt._adj_fdiv_m64 +@ cdecl _adj_fdiv_r() msvcrt._adj_fdiv_r +@ stdcall _adj_fdivr_m16i(long) msvcrt._adj_fdivr_m16i +@ stdcall _adj_fdivr_m32(long) msvcrt._adj_fdivr_m32 +@ stdcall _adj_fdivr_m32i(long) msvcrt._adj_fdivr_m32i +@ stdcall _adj_fdivr_m64(long long) msvcrt._adj_fdivr_m64 +@ cdecl _adj_fpatan() msvcrt._adj_fpatan +@ cdecl _adj_fprem() msvcrt._adj_fprem +@ cdecl _adj_fprem1() msvcrt._adj_fprem1 +@ cdecl _adj_fptan() msvcrt._adj_fptan +@ extern _adjust_fdiv msvcrt._adjust_fdiv +@ extern _aexit_rtn msvcrt._aexit_rtn +@ cdecl _amsg_exit(long) msvcrt._amsg_exit +@ cdecl _assert(str str long) msvcrt._assert +@ cdecl _atodbl(ptr str) msvcrt._atodbl +@ cdecl _atoldbl(ptr str) msvcrt._atoldbl +@ cdecl _beep(long long) msvcrt._beep +@ cdecl _beginthread(ptr long ptr) msvcrt._beginthread +@ cdecl _beginthreadex(ptr long ptr ptr long ptr) msvcrt._beginthreadex +@ cdecl _c_exit() msvcrt._c_exit +@ cdecl _cabs(long) msvcrt._cabs +@ cdecl _cexit() msvcrt._cexit +@ cdecl _cgets(str) msvcrt._cgets +@ cdecl _chdir(str) msvcrt._chdir +@ cdecl _chdrive(long) msvcrt._chdrive +@ cdecl _chgsign( double ) msvcrt._chgsign +@ cdecl _chmod(str long) msvcrt._chmod +@ cdecl _chsize(long long) msvcrt._chsize +@ cdecl _clearfp() msvcrt._clearfp +@ cdecl _close(long) msvcrt._close +@ cdecl _commit(long) msvcrt._commit +@ extern _commode msvcrt._commode +@ cdecl _control87(long long) msvcrt._control87 +@ cdecl _controlfp(long long) msvcrt._controlfp +@ cdecl _copysign( double double ) msvcrt._copysign +@ varargs _cprintf(str) msvcrt._cprintf +@ cdecl _cputs(str) msvcrt._cputs +@ cdecl _creat(str long) msvcrt._creat +@ varargs _cscanf(str) msvcrt._cscanf +@ extern _ctype msvcrt._ctype +@ cdecl _cwait(ptr long long) msvcrt._cwait +@ extern _daylight msvcrt._daylight +@ extern _dstbias msvcrt._dstbias +@ cdecl _dup(long) msvcrt._dup +@ cdecl _dup2(long long) msvcrt._dup2 +@ cdecl _ecvt( double long ptr ptr) msvcrt._ecvt +@ cdecl _endthread() msvcrt._endthread +@ cdecl _endthreadex(long) msvcrt._endthreadex +@ extern _environ msvcrt._environ +@ cdecl _eof(long) msvcrt._eof +@ cdecl _errno() msvcrt._errno +@ cdecl _except_handler2(ptr ptr ptr ptr) msvcrt._except_handler2 +@ cdecl _except_handler3(ptr ptr ptr ptr) msvcrt._except_handler3 +@ varargs _execl(str str) msvcrt._execl +@ varargs _execle(str str) msvcrt._execle +@ varargs _execlp(str str) msvcrt._execlp +@ varargs _execlpe(str str) msvcrt._execlpe +@ cdecl _execv(str ptr) msvcrt._execv +@ cdecl _execve(str ptr ptr) msvcrt._execve +@ cdecl _execvp(str ptr) msvcrt._execvp +@ cdecl _execvpe(str ptr ptr) msvcrt._execvpe +@ cdecl _exit(long) msvcrt._exit +@ cdecl _expand(ptr long) msvcrt._expand +@ cdecl _fcloseall() msvcrt._fcloseall +@ cdecl _fcvt( double long ptr ptr) msvcrt._fcvt +@ cdecl _fdopen(long str) msvcrt._fdopen +@ cdecl _fgetchar() msvcrt._fgetchar +@ cdecl _fgetwchar() msvcrt._fgetwchar +@ cdecl _filbuf(ptr) msvcrt._filbuf +@ extern _fileinfo msvcrt._fileinfo +@ cdecl _filelength(long) msvcrt._filelength +@ cdecl -ret64 _filelengthi64(long) msvcrt._filelengthi64 +@ cdecl _fileno(ptr) msvcrt._fileno +@ cdecl _findclose(long) msvcrt._findclose +@ cdecl _findfirst(str ptr) msvcrt._findfirst +@ cdecl _findfirsti64(str ptr) msvcrt._findfirsti64 +@ cdecl _findnext(long ptr) msvcrt._findnext +@ cdecl _findnexti64(long ptr) msvcrt._findnexti64 +@ cdecl _finite( double ) msvcrt._finite +@ cdecl _flsbuf(long ptr) msvcrt._flsbuf +@ cdecl _flushall() msvcrt._flushall +@ extern _fmode msvcrt._fmode +@ cdecl _fpclass(double) msvcrt._fpclass +@ cdecl _fpieee_flt(long ptr ptr) msvcrt._fpieee_flt +@ cdecl _fpreset() msvcrt._fpreset +@ cdecl _fputchar(long) msvcrt._fputchar +@ cdecl _fputwchar(long) msvcrt._fputwchar +@ cdecl _fsopen(str str long) msvcrt._fsopen +@ cdecl _fstat(long ptr) msvcrt._fstat +@ cdecl _fstati64(long ptr) msvcrt._fstati64 +@ cdecl _ftime(ptr) msvcrt._ftime +@ cdecl -ret64 _ftol() msvcrt._ftol +@ cdecl _fullpath(ptr str long) msvcrt._fullpath +@ cdecl _futime(long ptr) msvcrt._futime +@ cdecl _gcvt( double long str) msvcrt._gcvt +@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle +@ cdecl _getch() msvcrt._getch +@ cdecl _getche() msvcrt._getche +@ cdecl _getcwd(str long) msvcrt._getcwd +@ cdecl _getdcwd(long str long) msvcrt._getdcwd +@ cdecl _getdiskfree(long ptr) msvcrt._getdiskfree +@ cdecl _getdllprocaddr(long str long) msvcrt._getdllprocaddr +@ cdecl _getdrive() msvcrt._getdrive +@ cdecl _getdrives() msvcrt._getdrives +@ cdecl _getmaxstdio() msvcrt._getmaxstdio +@ cdecl _getmbcp() msvcrt._getmbcp +@ cdecl _getpid() msvcrt._getpid +@ cdecl _getsystime(ptr) msvcrt._getsystime +@ cdecl _getw(ptr) msvcrt._getw +@ cdecl _getws(ptr) msvcrt._getws +@ cdecl _global_unwind2(ptr) msvcrt._global_unwind2 +@ cdecl _heapadd(ptr long) msvcrt._heapadd +@ cdecl _heapchk() msvcrt._heapchk +@ cdecl _heapmin() msvcrt._heapmin +@ cdecl _heapset(long) msvcrt._heapset +@ cdecl _heapused(ptr ptr) msvcrt._heapused +@ cdecl _heapwalk(ptr) msvcrt._heapwalk +@ cdecl _hypot(double double) msvcrt._hypot +@ cdecl _initterm(ptr ptr) msvcrt._initterm +@ cdecl -i386 _inp(long) msvcrt._inp +@ cdecl -i386 _inpd(long) msvcrt._inpd +@ cdecl -i386 _inpw(long) msvcrt._inpw +@ extern _iob msvcrt._iob +@ cdecl _isatty(long) msvcrt._isatty +@ cdecl _isctype(long long) msvcrt._isctype +@ cdecl _ismbbalnum(long) msvcrt._ismbbalnum +@ cdecl _ismbbalpha(long) msvcrt._ismbbalpha +@ cdecl _ismbbgraph(long) msvcrt._ismbbgraph +@ cdecl _ismbbkalnum(long) msvcrt._ismbbkalnum +@ cdecl _ismbbkana(long) msvcrt._ismbbkana +@ cdecl _ismbbkprint(long) msvcrt._ismbbkprint +@ cdecl _ismbbkpunct(long) msvcrt._ismbbkpunct +@ cdecl _ismbblead(long) msvcrt._ismbblead +@ cdecl _ismbbprint(long) msvcrt._ismbbprint +@ cdecl _ismbbpunct(long) msvcrt._ismbbpunct +@ cdecl _ismbbtrail(long) msvcrt._ismbbtrail +@ cdecl _ismbcalnum(long) msvcrt._ismbcalnum +@ cdecl _ismbcalpha(long) msvcrt._ismbcalpha +@ cdecl _ismbcdigit(long) msvcrt._ismbcdigit +@ cdecl _ismbcgraph(long) msvcrt._ismbcgraph +@ cdecl _ismbchira(long) msvcrt._ismbchira +@ cdecl _ismbckata(long) msvcrt._ismbckata +@ cdecl _ismbcl0(long) msvcrt._ismbcl0 +@ cdecl _ismbcl1(long) msvcrt._ismbcl1 +@ cdecl _ismbcl2(long) msvcrt._ismbcl2 +@ cdecl _ismbclegal(long) msvcrt._ismbclegal +@ cdecl _ismbclower(long) msvcrt._ismbclower +@ cdecl _ismbcprint(long) msvcrt._ismbcprint +@ cdecl _ismbcpunct(long) msvcrt._ismbcpunct +@ cdecl _ismbcspace(long) msvcrt._ismbcspace +@ cdecl _ismbcsymbol(long) msvcrt._ismbcsymbol +@ cdecl _ismbcupper(long) msvcrt._ismbcupper +@ cdecl _ismbslead(ptr ptr) msvcrt._ismbslead +@ cdecl _ismbstrail(ptr ptr) msvcrt._ismbstrail +@ cdecl _isnan( double ) msvcrt._isnan +@ cdecl _itoa(long ptr long) msvcrt._itoa +@ cdecl _itow(long ptr long) msvcrt._itow +@ cdecl _j0(double) msvcrt._j0 +@ cdecl _j1(double) msvcrt._j1 +@ cdecl _jn(long double) msvcrt._jn +@ cdecl _kbhit() msvcrt._kbhit +@ cdecl _lfind(ptr ptr ptr long ptr) msvcrt._lfind +@ cdecl _loaddll(str) msvcrt._loaddll +@ cdecl _local_unwind2(ptr long) msvcrt._local_unwind2 +@ cdecl _locking(long long long) msvcrt._locking +@ cdecl _logb(double) msvcrt._logb +@ cdecl _longjmpex(ptr long) msvcrt._longjmpex +@ cdecl _lrotl(long long) msvcrt._lrotl +@ cdecl _lrotr(long long) msvcrt._lrotr +@ cdecl _lsearch(ptr ptr long long ptr) msvcrt._lsearch +@ cdecl _lseek(long long long) msvcrt._lseek +@ cdecl -ret64 _lseeki64(long long long long) msvcrt._lseeki64 +@ cdecl _ltoa(long ptr long) msvcrt._ltoa +@ cdecl _ltow(long ptr long) msvcrt._ltow +@ cdecl _makepath(str str str str str) msvcrt._makepath +@ cdecl _mbbtombc(long) msvcrt._mbbtombc +@ cdecl _mbbtype(long long) msvcrt._mbbtype +@ cdecl _mbccpy(str str) msvcrt._mbccpy +@ cdecl _mbcjistojms(long) msvcrt._mbcjistojms +@ cdecl _mbcjmstojis(long) msvcrt._mbcjmstojis +@ cdecl _mbclen(ptr) msvcrt._mbclen +@ cdecl _mbctohira(long) msvcrt._mbctohira +@ cdecl _mbctokata(long) msvcrt._mbctokata +@ cdecl _mbctolower(long) msvcrt._mbctolower +@ cdecl _mbctombb(long) msvcrt._mbctombb +@ cdecl _mbctoupper(long) msvcrt._mbctoupper +@ extern _mbctype msvcrt._mbctype +@ cdecl _mbsbtype(str long) msvcrt._mbsbtype +@ cdecl _mbscat(str str) msvcrt._mbscat +@ cdecl _mbschr(str long) msvcrt._mbschr +@ cdecl _mbscmp(str str) msvcrt._mbscmp +@ cdecl _mbscoll(str str) msvcrt._mbscoll +@ cdecl _mbscpy(ptr str) msvcrt._mbscpy +@ cdecl _mbscspn(str str) msvcrt._mbscspn +@ cdecl _mbsdec(ptr ptr) msvcrt._mbsdec +@ cdecl _mbsdup(str) msvcrt._mbsdup +@ cdecl _mbsicmp(str str) msvcrt._mbsicmp +@ cdecl _mbsicoll(str str) msvcrt._mbsicoll +@ cdecl _mbsinc(str) msvcrt._mbsinc +@ cdecl _mbslen(str) msvcrt._mbslen +@ cdecl _mbslwr(str) msvcrt._mbslwr +@ cdecl _mbsnbcat(str str long) msvcrt._mbsnbcat +@ cdecl _mbsnbcmp(str str long) msvcrt._mbsnbcmp +@ cdecl _mbsnbcnt(ptr long) msvcrt._mbsnbcnt +@ cdecl _mbsnbcoll(str str long) msvcrt._mbsnbcoll +@ cdecl _mbsnbcpy(ptr str long) msvcrt._mbsnbcpy +@ cdecl _mbsnbicmp(str str long) msvcrt._mbsnbicmp +@ cdecl _mbsnbicoll(str str long) msvcrt._mbsnbicoll +@ cdecl _mbsnbset(str long long) msvcrt._mbsnbset +@ cdecl _mbsncat(str str long) msvcrt._mbsncat +@ cdecl _mbsnccnt(str long) msvcrt._mbsnccnt +@ cdecl _mbsncmp(str str long) msvcrt._mbsncmp +@ cdecl _mbsncoll(str str long) msvcrt._mbsncoll +@ cdecl _mbsncpy(str str long) msvcrt._mbsncpy +@ cdecl _mbsnextc(str) msvcrt._mbsnextc +@ cdecl _mbsnicmp(str str long) msvcrt._mbsnicmp +@ cdecl _mbsnicoll(str str long) msvcrt._mbsnicoll +@ cdecl _mbsninc(str long) msvcrt._mbsninc +@ cdecl _mbsnset(str long long) msvcrt._mbsnset +@ cdecl _mbspbrk(str str) msvcrt._mbspbrk +@ cdecl _mbsrchr(str long) msvcrt._mbsrchr +@ cdecl _mbsrev(str) msvcrt._mbsrev +@ cdecl _mbsset(str long) msvcrt._mbsset +@ cdecl _mbsspn(str str) msvcrt._mbsspn +@ cdecl _mbsspnp(str str) msvcrt._mbsspnp +@ cdecl _mbsstr(str str) msvcrt._mbsstr +@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstrlen(str) msvcrt._mbstrlen +@ cdecl _mbsupr(str) msvcrt._mbsupr +@ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy +@ cdecl _memicmp(str str long) msvcrt._memicmp +@ cdecl _mkdir(str) msvcrt._mkdir +@ cdecl _mktemp(str) msvcrt._mktemp +@ cdecl _msize(ptr) msvcrt._msize +@ stub _mtlock +@ stub _mtunlock +@ cdecl _nextafter(double double) msvcrt._nextafter +@ cdecl _onexit(ptr) msvcrt._onexit +@ varargs _open(str long) msvcrt._open +@ cdecl _open_osfhandle(long long) msvcrt._open_osfhandle +@ extern _osver msvcrt._osver +@ cdecl -i386 _outp(long long) msvcrt._outp +@ cdecl -i386 _outpd(long long) msvcrt._outpd +@ cdecl -i386 _outpw(long long) msvcrt._outpw +@ cdecl _pclose(ptr) msvcrt._pclose +@ extern _pctype msvcrt._pctype +@ extern _pgmptr msvcrt._pgmptr +@ cdecl _pipe(ptr long long) msvcrt._pipe +@ cdecl _popen(str str) msvcrt._popen +@ cdecl _purecall() msvcrt._purecall +@ cdecl _putch(long) msvcrt._putch +@ cdecl _putenv(str) msvcrt._putenv +@ cdecl _putw(long ptr) msvcrt._putw +@ cdecl _putws(wstr) msvcrt._putws +@ extern _pwctype msvcrt._pwctype +@ cdecl _read(long ptr long) msvcrt._read +@ cdecl _rmdir(str) msvcrt._rmdir +@ cdecl _rmtmp() msvcrt._rmtmp +@ cdecl _rotl(long long) msvcrt._rotl +@ cdecl _rotr(long long) msvcrt._rotr +@ cdecl _safe_fdiv() msvcrt._safe_fdiv +@ cdecl _safe_fdivr() msvcrt._safe_fdivr +@ cdecl _safe_fprem() msvcrt._safe_fprem +@ cdecl _safe_fprem1() msvcrt._safe_fprem1 +@ cdecl _scalb( double long) msvcrt._scalb +@ cdecl _searchenv(str str ptr) msvcrt._searchenv +@ stdcall -i386 _seh_longjmp_unwind(ptr) msvcrt._seh_longjmp_unwind +@ cdecl _set_error_mode(long) msvcrt._set_error_mode +@ cdecl _seterrormode(long) msvcrt._seterrormode +@ cdecl -i386 _setjmp(ptr) msvcrt._setjmp +@ cdecl -i386 _setjmp3(ptr long) msvcrt._setjmp3 +@ cdecl _setmaxstdio(long) msvcrt._setmaxstdio +@ cdecl _setmbcp(long) msvcrt._setmbcp +@ cdecl _setmode(long long) msvcrt._setmode +@ cdecl _setsystime(ptr long) msvcrt._setsystime +@ cdecl _sleep(long) msvcrt._sleep +@ varargs _snprintf(str long str) msvcrt._snprintf +@ varargs _snwprintf(wstr long wstr) msvcrt._snwprintf +@ varargs _sopen(str long long) msvcrt._sopen +@ varargs _spawnl(long str str) msvcrt._spawnl +@ varargs _spawnle(long str str) msvcrt._spawnle +@ varargs _spawnlp(long str str) msvcrt._spawnlp +@ varargs _spawnlpe(long str str) msvcrt._spawnlpe +@ cdecl _spawnv(long str ptr) msvcrt._spawnv +@ cdecl _spawnve(long str ptr ptr) msvcrt._spawnve +@ cdecl _spawnvp(long str ptr) msvcrt._spawnvp +@ cdecl _spawnvpe(long str ptr ptr) msvcrt._spawnvpe +@ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath +@ cdecl _stat(str ptr) msvcrt._stat +@ cdecl _stati64(str ptr) msvcrt._stati64 +@ cdecl _statusfp() msvcrt._statusfp +@ cdecl _strcmpi(str str) msvcrt._strcmpi +@ cdecl _strdate(ptr) msvcrt._strdate +@ cdecl _strdup(str) msvcrt._strdup +@ cdecl _strerror(long) msvcrt._strerror +@ cdecl _stricmp(str str) msvcrt._stricmp +@ cdecl _stricoll(str str) msvcrt._stricoll +@ cdecl _strlwr(str) msvcrt._strlwr +@ cdecl _strncoll(str str long) msvcrt._strncoll +@ cdecl _strnicmp(str str long) msvcrt._strnicmp +@ cdecl _strnicoll(str str long) msvcrt._strnicoll +@ cdecl _strnset(str long long) msvcrt._strnset +@ cdecl _strrev(str) msvcrt._strrev +@ cdecl _strset(str long) msvcrt._strset +@ cdecl _strtime(ptr) msvcrt._strtime +@ cdecl _strupr(str) msvcrt._strupr +@ cdecl _swab(str str long) msvcrt._swab +@ extern _sys_errlist msvcrt._sys_errlist +@ extern _sys_nerr msvcrt._sys_nerr +@ cdecl _tell(long) msvcrt._tell +@ cdecl -ret64 _telli64(long) msvcrt._telli64 +@ cdecl _tempnam(str str) msvcrt._tempnam +@ extern _timezone msvcrt._timezone +@ cdecl _tolower(long) msvcrt._tolower +@ cdecl _toupper(long) msvcrt._toupper +@ extern _tzname msvcrt._tzname +@ cdecl _tzset() msvcrt._tzset +@ cdecl _ultoa(long ptr long) msvcrt._ultoa +@ cdecl _ultow(long ptr long) msvcrt._ultow +@ cdecl _umask(long) msvcrt._umask +@ cdecl _ungetch(long) msvcrt._ungetch +@ cdecl _unlink(str) msvcrt._unlink +@ cdecl _unloaddll(long) msvcrt._unloaddll +@ cdecl _utime(str ptr) msvcrt._utime +@ cdecl _vsnprintf(ptr long ptr ptr) msvcrt._vsnprintf +@ cdecl _vsnwprintf(ptr long wstr long) msvcrt._vsnwprintf +@ cdecl _waccess(wstr long) msvcrt._waccess +@ cdecl _wasctime(ptr) msvcrt._wasctime +@ cdecl _wchdir(wstr) msvcrt._wchdir +@ cdecl _wchmod(wstr long) msvcrt._wchmod +@ extern _wcmdln msvcrt._wcmdln +@ cdecl _wcreat(wstr long) msvcrt._wcreat +@ cdecl _wcsdup(wstr) msvcrt._wcsdup +@ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp +@ cdecl _wcsicoll(wstr wstr) msvcrt._wcsicoll +@ cdecl _wcslwr(wstr) msvcrt._wcslwr +@ cdecl _wcsncoll(wstr wstr long) msvcrt._wcsncoll +@ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp +@ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll +@ cdecl _wcsnset(wstr long long) msvcrt._wcsnset +@ cdecl _wcsrev(wstr) msvcrt._wcsrev +@ cdecl _wcsset(wstr long) msvcrt._wcsset +@ cdecl _wcsupr(wstr) msvcrt._wcsupr +@ cdecl _wctime(ptr) msvcrt._wctime +@ extern _wenviron msvcrt._wenviron +@ varargs _wexecl(wstr wstr) msvcrt._wexecl +@ varargs _wexecle(wstr wstr) msvcrt._wexecle +@ varargs _wexeclp(wstr wstr) msvcrt._wexeclp +@ varargs _wexeclpe(wstr wstr) msvcrt._wexeclpe +@ varargs _wexecv(wstr ptr) msvcrt._wexecv +@ varargs _wexecve(wstr ptr ptr) msvcrt._wexecve +@ varargs _wexecvp(wstr ptr) msvcrt._wexecvp +@ varargs _wexecvpe(wstr ptr ptr) msvcrt._wexecvpe +@ cdecl _wfdopen(long wstr) msvcrt._wfdopen +@ cdecl _wfindfirst(wstr ptr) msvcrt._wfindfirst +@ cdecl _wfindfirsti64(wstr ptr) msvcrt._wfindfirsti64 +@ cdecl _wfindnext(long ptr) msvcrt._wfindnext +@ cdecl _wfindnexti64(long ptr) msvcrt._wfindnexti64 +@ cdecl _wfopen(wstr wstr) msvcrt._wfopen +@ cdecl _wfreopen(wstr wstr ptr) msvcrt._wfreopen +@ cdecl _wfsopen(wstr wstr long) msvcrt._wfsopen +@ cdecl _wfullpath(ptr wstr long) msvcrt._wfullpath +@ cdecl _wgetcwd(wstr long) msvcrt._wgetcwd +@ cdecl _wgetdcwd(long wstr long) msvcrt._wgetdcwd +@ cdecl _wgetenv(wstr) msvcrt._wgetenv +@ extern _winmajor msvcrt._winmajor +@ extern _winminor msvcrt._winminor +@ extern _winver msvcrt._winver +@ cdecl _wmakepath(wstr wstr wstr wstr wstr) msvcrt._wmakepath +@ cdecl _wmkdir(wstr) msvcrt._wmkdir +@ cdecl _wmktemp(wstr) msvcrt._wmktemp +@ varargs _wopen(wstr long) msvcrt._wopen +@ cdecl _wperror(wstr) msvcrt._wperror +@ extern _wpgmptr msvcrt._wpgmptr +@ cdecl _wpopen(wstr wstr) msvcrt._wpopen +@ cdecl _wputenv(wstr) msvcrt._wputenv +@ cdecl _wremove(wstr) msvcrt._wremove +@ cdecl _wrename(wstr wstr) msvcrt._wrename +@ cdecl _write(long ptr long) msvcrt._write +@ cdecl _wrmdir(wstr) msvcrt._wrmdir +@ cdecl _wsearchenv(wstr wstr ptr) msvcrt._wsearchenv +@ cdecl _wsetlocale(long wstr) msvcrt._wsetlocale +@ varargs _wsopen(wstr long long) msvcrt._wsopen +@ varargs _wspawnl(long wstr wstr) msvcrt._wspawnl +@ varargs _wspawnle(long wstr wstr) msvcrt._wspawnle +@ varargs _wspawnlp(long wstr wstr) msvcrt._wspawnlp +@ varargs _wspawnlpe(long wstr wstr) msvcrt._wspawnlpe +@ cdecl _wspawnv(long wstr ptr) msvcrt._wspawnv +@ cdecl _wspawnve(long wstr ptr ptr) msvcrt._wspawnve +@ cdecl _wspawnvp(long wstr ptr) msvcrt._wspawnvp +@ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe +@ cdecl _wsplitpath(wstr wstr wstr wstr wstr) msvcrt._wsplitpath +@ cdecl _wstat(wstr ptr) msvcrt._wstat +@ cdecl _wstati64(wstr ptr) msvcrt._wstati64 +@ cdecl _wstrdate(ptr) msvcrt._wstrdate +@ cdecl _wstrtime(ptr) msvcrt._wstrtime +@ cdecl _wsystem(wstr) msvcrt._wsystem +@ cdecl _wtempnam(wstr wstr) msvcrt._wtempnam +@ cdecl _wtmpnam(ptr) msvcrt._wtmpnam +@ cdecl _wtoi(wstr) msvcrt._wtoi +@ cdecl _wtol(wstr) msvcrt._wtol +@ cdecl _wunlink(wstr) msvcrt._wunlink +@ cdecl _wutime(wstr ptr) msvcrt._wutime +@ cdecl _y0(double) msvcrt._y0 +@ cdecl _y1(double) msvcrt._y1 +@ cdecl _yn(long double ) msvcrt._yn +@ cdecl abort() msvcrt.abort +@ cdecl abs(long) msvcrt.abs +@ cdecl acos(double) msvcrt.acos +@ cdecl asctime(ptr) msvcrt.asctime +@ cdecl asin(double) msvcrt.asin +@ cdecl atan(double) msvcrt.atan +@ cdecl atan2(double double) msvcrt.atan2 +@ cdecl atexit(ptr) msvcrt.atexit +@ cdecl atof(str) msvcrt.atof +@ cdecl atoi(str) msvcrt.atoi +@ cdecl atol(str) msvcrt.atol +@ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch +@ cdecl calloc(long long) msvcrt.calloc +@ cdecl ceil(double) msvcrt.ceil +@ cdecl clearerr(ptr) msvcrt.clearerr +@ cdecl clock() msvcrt.clock +@ cdecl cos(double) msvcrt.cos +@ cdecl cosh(double) msvcrt.cosh +@ cdecl ctime(ptr) msvcrt.ctime +@ cdecl difftime(long long) msvcrt.difftime +@ cdecl div(long long) msvcrt.div +@ cdecl exit(long) msvcrt.exit +@ cdecl exp(double) msvcrt.exp +@ cdecl fabs(double) msvcrt.fabs +@ cdecl fclose(ptr) msvcrt.fclose +@ cdecl feof(ptr) msvcrt.feof +@ cdecl ferror(ptr) msvcrt.ferror +@ cdecl fflush(ptr) msvcrt.fflush +@ cdecl fgetc(ptr) msvcrt.fgetc +@ cdecl fgetpos(ptr ptr) msvcrt.fgetpos +@ cdecl fgets(ptr long ptr) msvcrt.fgets +@ cdecl fgetwc(ptr) msvcrt.fgetwc +@ cdecl fgetws(ptr long ptr) msvcrt.fgetws +@ cdecl floor(double) msvcrt.floor +@ cdecl fmod(double double) msvcrt.fmod +@ cdecl fopen(str str) msvcrt.fopen +@ varargs fprintf(ptr str) msvcrt.fprintf +@ cdecl fputc(long ptr) msvcrt.fputc +@ cdecl fputs(str ptr) msvcrt.fputs +@ cdecl fputwc(long ptr) msvcrt.fputwc +@ cdecl fputws(wstr ptr) msvcrt.fputws +@ cdecl fread(ptr long long ptr) msvcrt.fread +@ cdecl free(ptr) msvcrt.free +@ cdecl freopen(str str ptr) msvcrt.freopen +@ cdecl frexp(double ptr) msvcrt.frexp +@ varargs fscanf(ptr str) msvcrt.fscanf +@ cdecl fseek(ptr long long) msvcrt.fseek +@ cdecl fsetpos(ptr ptr) msvcrt.fsetpos +@ cdecl ftell(ptr) msvcrt.ftell +@ varargs fwprintf(ptr wstr) msvcrt.fwprintf +@ cdecl fwrite(ptr long long ptr) msvcrt.fwrite +@ varargs fwscanf(ptr wstr) msvcrt.fwscanf +@ cdecl getc(ptr) msvcrt.getc +@ cdecl getchar() msvcrt.getchar +@ cdecl getenv(str) msvcrt.getenv +@ cdecl gets(str) msvcrt.gets +@ cdecl getwc(ptr) msvcrt.getwc +@ cdecl getwchar() msvcrt.getwchar +@ cdecl gmtime(ptr) msvcrt.gmtime +@ cdecl is_wctype(long long) msvcrt.is_wctype +@ cdecl isalnum(long) msvcrt.isalnum +@ cdecl isalpha(long) msvcrt.isalpha +@ cdecl iscntrl(long) msvcrt.iscntrl +@ cdecl isdigit(long) msvcrt.isdigit +@ cdecl isgraph(long) msvcrt.isgraph +@ cdecl isleadbyte(long) msvcrt.isleadbyte +@ cdecl islower(long) msvcrt.islower +@ cdecl isprint(long) msvcrt.isprint +@ cdecl ispunct(long) msvcrt.ispunct +@ cdecl isspace(long) msvcrt.isspace +@ cdecl isupper(long) msvcrt.isupper +@ cdecl iswalnum(long) msvcrt.iswalnum +@ cdecl iswalpha(long) msvcrt.iswalpha +@ cdecl iswascii(long) msvcrt.iswascii +@ cdecl iswcntrl(long) msvcrt.iswcntrl +@ cdecl iswctype(long long) msvcrt.iswctype +@ cdecl iswdigit(long) msvcrt.iswdigit +@ cdecl iswgraph(long) msvcrt.iswgraph +@ cdecl iswlower(long) msvcrt.iswlower +@ cdecl iswprint(long) msvcrt.iswprint +@ cdecl iswpunct(long) msvcrt.iswpunct +@ cdecl iswspace(long) msvcrt.iswspace +@ cdecl iswupper(long) msvcrt.iswupper +@ cdecl iswxdigit(long) msvcrt.iswxdigit +@ cdecl isxdigit(long) msvcrt.isxdigit +@ cdecl labs(long) msvcrt.labs +@ cdecl ldexp( double long) msvcrt.ldexp +@ cdecl ldiv(long long) msvcrt.ldiv +@ cdecl localeconv() msvcrt.localeconv +@ cdecl localtime(ptr) msvcrt.localtime +@ cdecl log(double) msvcrt.log +@ cdecl log10(double) msvcrt.log10 +@ cdecl -i386 longjmp(ptr long) msvcrt.longjmp +@ cdecl malloc(long) msvcrt.malloc +@ cdecl mblen(ptr long) msvcrt.mblen +@ cdecl mbstowcs(ptr str long) msvcrt.mbstowcs +@ cdecl mbtowc(wstr str long) msvcrt.mbtowc +@ cdecl memchr(ptr long long) msvcrt.memchr +@ cdecl memcmp(ptr ptr long) msvcrt.memcmp +@ cdecl memcpy(ptr ptr long) msvcrt.memcpy +@ cdecl memmove(ptr ptr long) msvcrt.memmove +@ cdecl memset(ptr long long) msvcrt.memset +@ cdecl mktime(ptr) msvcrt.mktime +@ cdecl modf(double ptr) msvcrt.modf +@ cdecl perror(str) msvcrt.perror +@ cdecl pow(double double) msvcrt.pow +@ varargs printf(str) msvcrt.printf +@ cdecl putc(long ptr) msvcrt.putc +@ cdecl putchar(long) msvcrt.putchar +@ cdecl puts(str) msvcrt.puts +@ cdecl putwc(long ptr) msvcrt.putwc +@ cdecl putwchar(long) msvcrt.putwchar +@ cdecl qsort(ptr long long ptr) msvcrt.qsort +@ cdecl raise(long) msvcrt.raise +@ cdecl rand() msvcrt.rand +@ cdecl realloc(ptr long) msvcrt.realloc +@ cdecl remove(str) msvcrt.remove +@ cdecl rename(str str) msvcrt.rename +@ cdecl rewind(ptr) msvcrt.rewind +@ varargs scanf(str) msvcrt.scanf +@ cdecl setbuf(ptr ptr) msvcrt.setbuf +@ cdecl setlocale(long str) msvcrt.setlocale +@ cdecl setvbuf(ptr str long long) msvcrt.setvbuf +@ cdecl signal(long long) msvcrt.signal +@ cdecl sin(double) msvcrt.sin +@ cdecl sinh(double) msvcrt.sinh +@ varargs sprintf(ptr str) msvcrt.sprintf +@ cdecl sqrt(double) msvcrt.sqrt +@ cdecl srand(long) msvcrt.srand +@ varargs sscanf(str str) msvcrt.sscanf +@ cdecl strcat(str str) msvcrt.strcat +@ cdecl strchr(str long) msvcrt.strchr +@ cdecl strcmp(str str) msvcrt.strcmp +@ cdecl strcoll(str str) msvcrt.strcoll +@ cdecl strcpy(ptr str) msvcrt.strcpy +@ cdecl strcspn(str str) msvcrt.strcspn +@ cdecl strerror(long) msvcrt.strerror +@ cdecl strftime(str long str ptr) msvcrt.strftime +@ cdecl strlen(str) msvcrt.strlen +@ cdecl strncat(str str long) msvcrt.strncat +@ cdecl strncmp(str str long) msvcrt.strncmp +@ cdecl strncpy(ptr str long) msvcrt.strncpy +@ cdecl strpbrk(str str) msvcrt.strpbrk +@ cdecl strrchr(str long) msvcrt.strrchr +@ cdecl strspn(str str) msvcrt.strspn +@ cdecl strstr(str str) msvcrt.strstr +@ cdecl strtod(str ptr) msvcrt.strtod +@ cdecl strtok(str str) msvcrt.strtok +@ cdecl strtol(str ptr long) msvcrt.strtol +@ cdecl strtoul(str ptr long) msvcrt.strtoul +@ cdecl strxfrm(ptr str long) msvcrt.strxfrm +@ varargs swprintf(wstr wstr) msvcrt.swprintf +@ varargs swscanf(wstr wstr) msvcrt.swscanf +@ cdecl system(str) msvcrt.system +@ cdecl tan(double) msvcrt.tan +@ cdecl tanh(double) msvcrt.tanh +@ cdecl time(ptr) msvcrt.time +@ cdecl tmpfile() msvcrt.tmpfile +@ cdecl tmpnam(ptr) msvcrt.tmpnam +@ cdecl tolower(long) msvcrt.tolower +@ cdecl toupper(long) msvcrt.toupper +@ cdecl towlower(long) msvcrt.towlower +@ cdecl towupper(long) msvcrt.towupper +@ cdecl ungetc(long ptr) msvcrt.ungetc +@ cdecl ungetwc(long ptr) msvcrt.ungetwc +@ cdecl vfprintf(ptr str long) msvcrt.vfprintf +@ cdecl vfwprintf(ptr wstr long) msvcrt.vfwprintf +@ cdecl vprintf(str long) msvcrt.vprintf +@ cdecl vsprintf(ptr str ptr) msvcrt.vsprintf +@ cdecl vswprintf(ptr wstr long) msvcrt.vswprintf +@ cdecl vwprintf(wstr long) msvcrt.vwprintf +@ cdecl wcscat(wstr wstr) msvcrt.wcscat +@ cdecl wcschr(wstr long) msvcrt.wcschr +@ cdecl wcscmp(wstr wstr) msvcrt.wcscmp +@ cdecl wcscoll(wstr wstr) msvcrt.wcscoll +@ cdecl wcscpy(ptr wstr) msvcrt.wcscpy +@ cdecl wcscspn(wstr wstr) msvcrt.wcscspn +@ cdecl wcsftime(ptr long wstr ptr) msvcrt.wcsftime +@ cdecl wcslen(wstr) msvcrt.wcslen +@ cdecl wcsncat(wstr wstr long) msvcrt.wcsncat +@ cdecl wcsncmp(wstr wstr long) msvcrt.wcsncmp +@ cdecl wcsncpy(ptr wstr long) msvcrt.wcsncpy +@ cdecl wcspbrk(wstr wstr) msvcrt.wcspbrk +@ cdecl wcsrchr(wstr long) msvcrt.wcsrchr +@ cdecl wcsspn(wstr wstr) msvcrt.wcsspn +@ cdecl wcsstr(wstr wstr) msvcrt.wcsstr +@ cdecl wcstod(wstr ptr) msvcrt.wcstod +@ cdecl wcstok(wstr wstr) msvcrt.wcstok +@ cdecl wcstol(wstr ptr long) msvcrt.wcstol +@ cdecl wcstombs(ptr ptr long) msvcrt.wcstombs +@ cdecl wcstoul(wstr ptr long) msvcrt.wcstoul +@ cdecl wcsxfrm(ptr wstr long) msvcrt.wcsxfrm +@ cdecl wctomb(ptr long) msvcrt.wctomb +@ varargs wprintf(wstr) msvcrt.wprintf +@ varargs wscanf(wstr) msvcrt.wscanf Propchange: trunk/reactos/dll/win32/msvcrt40/msvcrt40.spec ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/win32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/win32.rbuild?rev…
============================================================================== --- trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] Wed Jul 2 03:20:43 2008 @@ -172,6 +172,9 @@ <directory name="msvcrt20"> <xi:include href="msvcrt20/msvcrt20.rbuild" /> </directory> +<directory name="msvcrt40"> + <xi:include href="msvcrt40/msvcrt40.rbuild" /> +</directory> <directory name="msvfw32"> <xi:include href="msvfw32/msvfw32.rbuild" /> </directory>
16 years, 5 months
1
0
0
0
[dchapyshev] 34251: - Sync with Wine HEAD
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Jul 2 03:19:00 2008 New Revision: 34251 URL:
http://svn.reactos.org/svn/reactos?rev=34251&view=rev
Log: - Sync with Wine HEAD Modified: trunk/reactos/dll/win32/gdiplus/brush.c trunk/reactos/dll/win32/gdiplus/font.c trunk/reactos/dll/win32/gdiplus/gdiplus.spec trunk/reactos/dll/win32/gdiplus/gdiplus_private.h trunk/reactos/dll/win32/gdiplus/graphics.c trunk/reactos/dll/win32/gdiplus/graphicspath.c trunk/reactos/dll/win32/gdiplus/image.c trunk/reactos/dll/win32/gdiplus/imageattributes.c trunk/reactos/dll/win32/gdiplus/pathiterator.c trunk/reactos/dll/win32/gdiplus/pen.c trunk/reactos/dll/win32/gdiplus/region.c Modified: trunk/reactos/dll/win32/gdiplus/brush.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/brush.c?…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/brush.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/brush.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -555,6 +555,17 @@ return NotImplemented; } +GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient *brush, + GpWrapMode *wrapmode) +{ + if(!brush || !wrapmode) + return InvalidParameter; + + *wrapmode = brush->wrap; + + return Ok; +} + GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill *sf, ARGB *argb) { if(!sf || !argb) @@ -821,6 +832,9 @@ { GpRectF rectF; GpStatus ret; + + if(!rect) + return InvalidParameter; ret = GdipGetLineRect(brush, &rectF); Modified: trunk/reactos/dll/win32/gdiplus/font.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/font.c?r…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/font.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/font.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -22,11 +22,140 @@ #include "winbase.h" #include "wingdi.h" #include "winnls.h" +#include "winreg.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL (gdiplus); #include "objbase.h" #include "gdiplus.h" #include "gdiplus_private.h" + +static const REAL mm_per_inch = 25.4; +static const REAL inch_per_point = 1.0/72.0; + +static inline REAL get_dpi (void) +{ + REAL dpi; + GpGraphics *graphics; + HDC hdc = GetDC(0); + GdipCreateFromHDC (hdc, &graphics); + GdipGetDpiX(graphics, &dpi); + GdipDeleteGraphics(graphics); + ReleaseDC (0, hdc); + + return dpi; +} + +static inline REAL point_to_pixel (REAL point) +{ + return point * get_dpi() * inch_per_point; +} + +static inline REAL inch_to_pixel (REAL inch) +{ + return inch * get_dpi(); +} + +static inline REAL document_to_pixel (REAL doc) +{ + return doc * (get_dpi() / 300.0); /* Per MSDN */ +} + +static inline REAL mm_to_pixel (REAL mm) +{ + return mm * (get_dpi() / mm_per_inch); +} + +/******************************************************************************* + * GdipCreateFont [GDIPLUS.@] + * + * Create a new font based off of a FontFamily + * + * PARAMS + * *fontFamily [I] Family to base the font off of + * emSize [I] Size of the font + * style [I] Bitwise OR of FontStyle enumeration + * unit [I] Unit emSize is measured in + * **font [I] the resulting Font object + * + * RETURNS + * SUCCESS: Ok + * FAILURE: InvalidParameter if fontfamily or font is NULL. + * FAILURE: FontFamilyNotFound if an invalid FontFamily is given + * + * NOTES + * UnitDisplay is unsupported. + * emSize is stored separately from lfHeight, to hold the fraction. + */ +GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily *fontFamily, + REAL emSize, INT style, Unit unit, GpFont **font) +{ + WCHAR facename[LF_FACESIZE]; + LOGFONTW* lfw; + const TEXTMETRICW* tmw; + GpStatus stat; + + if (!fontFamily || !fontFamily->FamilyName || !font) + return InvalidParameter; + + TRACE("%p (%s), %f, %d, %d, %p\n", fontFamily, + debugstr_w(fontFamily->FamilyName), emSize, style, unit, font); + + stat = GdipGetFamilyName (fontFamily, facename, 0); + if (stat != Ok) return stat; + *font = GdipAlloc(sizeof(GpFont)); + + tmw = &fontFamily->tmw; + lfw = &((*font)->lfw); + ZeroMemory(&(*lfw), sizeof(*lfw)); + + lfw->lfWeight = tmw->tmWeight; + lfw->lfItalic = tmw->tmItalic; + lfw->lfUnderline = tmw->tmUnderlined; + lfw->lfStrikeOut = tmw->tmStruckOut; + lfw->lfCharSet = tmw->tmCharSet; + lfw->lfPitchAndFamily = tmw->tmPitchAndFamily; + lstrcpynW((lfw->lfFaceName), facename, sizeof(WCHAR) * LF_FACESIZE); + + switch (unit) + { + case UnitWorld: + /* FIXME: Figure out when World != Pixel */ + lfw->lfHeight = emSize; break; + case UnitDisplay: + FIXME("Unknown behavior for UnitDisplay! Please report!\n"); + /* FIXME: Figure out how this works... + * MSDN says that if "DISPLAY" is a monitor, then pixel should be + * used. That's not what I got. Tests on Windows revealed no output, + * and the tests in tests/font crash windows */ + lfw->lfHeight = 0; break; + case UnitPixel: + lfw->lfHeight = emSize; break; + case UnitPoint: + lfw->lfHeight = point_to_pixel(emSize); break; + case UnitInch: + lfw->lfHeight = inch_to_pixel(emSize); break; + case UnitDocument: + lfw->lfHeight = document_to_pixel(emSize); break; + case UnitMillimeter: + lfw->lfHeight = mm_to_pixel(emSize); break; + } + + lfw->lfHeight *= -1; + + lfw->lfWeight = style & FontStyleBold ? 700 : 400; + lfw->lfItalic = style & FontStyleItalic; + lfw->lfUnderline = style & FontStyleUnderline; + lfw->lfStrikeOut = style & FontStyleStrikeout; + + (*font)->unit = unit; + (*font)->emSize = emSize; + + return Ok; +} GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC hdc, GDIPCONST LOGFONTW *logfont, GpFont **font) @@ -47,6 +176,9 @@ (*font)->lfw.lfUnderline = logfont->lfUnderline; (*font)->lfw.lfStrikeOut = logfont->lfStrikeOut; + (*font)->emSize = logfont->lfHeight; + (*font)->unit = UnitPixel; + hfont = CreateFontIndirectW(&(*font)->lfw); oldfont = SelectObject(hdc, hfont); GetTextMetricsW(hdc, &textmet); @@ -106,6 +238,51 @@ return GdipCreateFontFromLogfontW(hdc, &lfw, font); } +/****************************************************************************** + * GdipGetFontSize [GDIPLUS.@] + * + * Returns the size of the font in Units + * + * PARAMS + * *font [I] The font to retrieve size from + * *size [O] Pointer to hold retrieved value + * + * RETURNS + * SUCCESS: Ok + * FAILURE: InvalidParamter (font or size was NULL) + * + * NOTES + * Size returned is actually emSize -- not internal size used for drawing. + */ +GpStatus WINGDIPAPI GdipGetFontSize(GpFont *font, REAL *size) +{ + if (!(font && size)) return InvalidParameter; + + *size = font->emSize; + + return Ok; +} + +/******************************************************************************* + * GdipGetFontUnit [GDIPLUS.@] + * + * PARAMS + * font [I] Font to retrieve from + * unit [O] Return value + * + * RETURNS + * FAILURE: font or unit was NULL + * OK: otherwise + */ +GpStatus WINGDIPAPI GdipGetFontUnit(GpFont *font, Unit *unit) +{ + if (!(font && unit)) return InvalidParameter; + + *unit = font->unit; + + return Ok; +} + /* FIXME: use graphics */ GpStatus WINGDIPAPI GdipGetLogFontW(GpFont *font, GpGraphics *graphics, LOGFONTW *lfw) @@ -130,3 +307,211 @@ return Ok; } + +/* Borrowed from GDI32 */ +static INT CALLBACK is_font_installed_proc(const LOGFONTW *elf, + const TEXTMETRICW *ntm, DWORD type, LPARAM lParam) +{ + return 0; +} + +static BOOL is_font_installed(const WCHAR *name) +{ + HDC hdc = GetDC(0); + BOOL ret = FALSE; + + if(!EnumFontFamiliesW(hdc, name, is_font_installed_proc, 0)) + ret = TRUE; + + ReleaseDC(0, hdc); + return ret; +} + +/******************************************************************************* + * GdipCreateFontFamilyFromName [GDIPLUS.@] + * + * Creates a font family object based on a supplied name + * + * PARAMS + * name [I] Name of the font + * fontCollection [I] What font collection (if any) the font belongs to (may be NULL) + * FontFamily [O] Pointer to the resulting FontFamily object + * + * RETURNS + * SUCCESS: Ok + * FAILURE: FamilyNotFound if the requested FontFamily does not exist on the system + * FAILURE: Invalid parameter if FontFamily or name is NULL + * + * NOTES + * If fontCollection is NULL then the object is not part of any collection + * + */ + +GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR *name, + GpFontCollection *fontCollection, + GpFontFamily **FontFamily) +{ + GpFontFamily* ffamily; + HDC hdc; + HFONT hFont, hfont_old; + LOGFONTW lfw; + + TRACE("%s, %p %p\n", debugstr_w(name), fontCollection, FontFamily); + + if (!(name && FontFamily)) + return InvalidParameter; + if (fontCollection) + FIXME("No support for FontCollections yet!\n"); + if (!is_font_installed(name)) + return FontFamilyNotFound; + + ffamily = GdipAlloc(sizeof (GpFontFamily)); + if (!ffamily) return OutOfMemory; + + hdc = GetDC(0); + lstrcpynW(lfw.lfFaceName, name, sizeof(WCHAR) * LF_FACESIZE); + hFont = CreateFontIndirectW (&lfw); + hfont_old = SelectObject(hdc, hFont); + + GetTextMetricsW(hdc, &ffamily->tmw); + DeleteObject(SelectObject(hdc, hfont_old)); + + ffamily->FamilyName = GdipAlloc(LF_FACESIZE * sizeof (WCHAR)); + if (!ffamily->FamilyName) + { + GdipFree(ffamily); + ReleaseDC(0, hdc); + return OutOfMemory; + } + + lstrcpynW(ffamily->FamilyName, name, sizeof(WCHAR) * LF_FACESIZE); + + *FontFamily = ffamily; + ReleaseDC(0, hdc); + + return Ok; +} + +/******************************************************************************* + * GdipGetFamilyName [GDIPLUS.@] + * + * Returns the family name into name + * + * PARAMS + * *family [I] Family to retrieve from + * *name [O] WCHARS of the family name + * LANGID [I] charset + * + * RETURNS + * SUCCESS: Ok + * FAILURE: InvalidParameter if family is NULL + * + * NOTES + * If name is a NULL ptr, then both XP and Vista will crash (so we do as well) + */ +GpStatus WINGDIPAPI GdipGetFamilyName (GDIPCONST GpFontFamily *family, + WCHAR *name, LANGID language) +{ + if (family == NULL) + return InvalidParameter; + + TRACE("%p, %p, %d\n", family, name, language); + + if (language != LANG_NEUTRAL) + FIXME("No support for handling of multiple languages!\n"); + + lstrcpynW (name, family->FamilyName, LF_FACESIZE); + + return Ok; +} + + +/***************************************************************************** + * GdipDeleteFontFamily [GDIPLUS.@] + * + * Removes the specified FontFamily + * + * PARAMS + * *FontFamily [I] The family to delete + * + * RETURNS + * SUCCESS: Ok + * FAILURE: InvalidParameter if FontFamily is NULL. + * + */ +GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily *FontFamily) +{ + if (!FontFamily) + return InvalidParameter; + TRACE("Deleting %p (%s)\n", FontFamily, debugstr_w(FontFamily->FamilyName)); + + if (FontFamily->FamilyName) GdipFree (FontFamily->FamilyName); + GdipFree (FontFamily); + + return Ok; +} + +/***************************************************************************** + * GdipGetGenericFontFamilyMonospace [GDIPLUS.@] + * + * Obtains a serif family (Courier New on Windows) + * + * PARAMS + * **nativeFamily [I] Where the font will be stored + * + * RETURNS + * InvalidParameter if nativeFamily is NULL. + * Ok otherwise. + */ +GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily **nativeFamily) +{ + static const WCHAR CourierNew[] = {'C','o','u','r','i','e','r',' ','N','e','w','\0'}; + + if (nativeFamily == NULL) return InvalidParameter; + + return GdipCreateFontFamilyFromName(CourierNew, NULL, nativeFamily); +} + +/***************************************************************************** + * GdipGetGenericFontFamilySerif [GDIPLUS.@] + * + * Obtains a serif family (Times New Roman on Windows) + * + * PARAMS + * **nativeFamily [I] Where the font will be stored + * + * RETURNS + * InvalidParameter if nativeFamily is NULL. + * Ok otherwise. + */ +GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily **nativeFamily) +{ + static const WCHAR TimesNewRoman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n','\0'}; + + if (nativeFamily == NULL) return InvalidParameter; + + return GdipCreateFontFamilyFromName(TimesNewRoman, NULL, nativeFamily); +} + +/***************************************************************************** + * GdipGetGenericFontFamilySansSerif [GDIPLUS.@] + * + * Obtains a serif family (Microsoft Sans Serif on Windows) + * + * PARAMS + * **nativeFamily [I] Where the font will be stored + * + * RETURNS + * InvalidParameter if nativeFamily is NULL. + * Ok otherwise. + */ +GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamily) +{ + /* FIXME: On Windows this is called Microsoft Sans Serif, this shouldn't + * affect anything */ + static const WCHAR MSSansSerif[] = {'M','S',' ','S','a','n','s',' ','S','e','r','i','f','\0'}; + + if (nativeFamily == NULL) return InvalidParameter; + + return GdipCreateFontFamilyFromName(MSSansSerif, NULL, nativeFamily); +} Modified: trunk/reactos/dll/win32/gdiplus/gdiplus.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus.…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus.spec [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -23,12 +23,12 @@ @ stdcall GdipAddPathPath(ptr ptr long) @ stub GdipAddPathPie @ stub GdipAddPathPieI -@ stub GdipAddPathPolygon -@ stub GdipAddPathPolygonI +@ stdcall GdipAddPathPolygon(ptr ptr long) +@ stdcall GdipAddPathPolygonI(ptr ptr long) @ stdcall GdipAddPathRectangle(ptr long long long long) @ stdcall GdipAddPathRectangleI(ptr long long long long) -@ stub GdipAddPathRectangles -@ stub GdipAddPathRectanglesI +@ stdcall GdipAddPathRectangles(ptr ptr long) +@ stdcall GdipAddPathRectanglesI(ptr ptr long) @ stub GdipAddPathString @ stub GdipAddPathStringI @ stdcall GdipAlloc(long) @@ -45,7 +45,7 @@ @ stub GdipBitmapSetPixel @ stub GdipBitmapSetResolution @ stdcall GdipBitmapUnlockBits(ptr ptr) -@ stub GdipClearPathMarkers +@ stdcall GdipClearPathMarkers(ptr) @ stub GdipCloneBitmapArea @ stub GdipCloneBitmapAreaI @ stdcall GdipCloneBrush(ptr ptr) @@ -53,7 +53,7 @@ @ stdcall GdipCloneFont(ptr ptr) @ stub GdipCloneFontFamily @ stub GdipCloneImage -@ stub GdipCloneImageAttributes +@ stdcall GdipCloneImageAttributes(ptr ptr) @ stdcall GdipCloneMatrix(ptr ptr) @ stdcall GdipClonePath(ptr ptr) @ stdcall GdipClonePen(ptr ptr) @@ -62,9 +62,9 @@ @ stdcall GdipClosePathFigure(ptr) @ stdcall GdipClosePathFigures(ptr) @ stub GdipCombineRegionPath -@ stub GdipCombineRegionRect -@ stub GdipCombineRegionRectI -@ stub GdipCombineRegionRegion +@ stdcall GdipCombineRegionRect(ptr ptr long) +@ stdcall GdipCombineRegionRectI(ptr ptr long) +@ stdcall GdipCombineRegionRegion(ptr ptr long) @ stub GdipComment @ stdcall GdipConvertToEmfPlus(ptr ptr ptr long ptr ptr) @ stub GdipConvertToEmfPlusToFile @@ -84,8 +84,8 @@ @ stub GdipCreateCachedBitmap @ stdcall GdipCreateCustomLineCap(ptr ptr long long ptr) @ stub GdipCreateEffect -@ stub GdipCreateFont -@ stub GdipCreateFontFamilyFromName +@ stdcall GdipCreateFont(ptr long long long ptr) +@ stdcall GdipCreateFontFamilyFromName(wstr ptr ptr) @ stdcall GdipCreateFontFromDC(long ptr) @ stdcall GdipCreateFontFromLogfontA(long ptr ptr) @ stdcall GdipCreateFontFromLogfontW(long ptr ptr) @@ -125,8 +125,8 @@ @ stdcall GdipCreateRegion(ptr) @ stub GdipCreateRegionHrgn @ stdcall GdipCreateRegionPath(ptr ptr) -@ stub GdipCreateRegionRect -@ stub GdipCreateRegionRectI +@ stdcall GdipCreateRegionRect(ptr ptr) +@ stdcall GdipCreateRegionRectI(ptr ptr) @ stub GdipCreateRegionRgnData @ stdcall GdipCreateSolidFill(long ptr) @ stdcall GdipCreateStreamOnFile(ptr long ptr) @@ -141,7 +141,7 @@ @ stdcall GdipDeleteCustomLineCap(ptr) @ stub GdipDeleteEffect @ stdcall GdipDeleteFont(ptr) -@ stub GdipDeleteFontFamily +@ stdcall GdipDeleteFontFamily(ptr) @ stdcall GdipDeleteGraphics(ptr) @ stdcall GdipDeleteMatrix(ptr) @ stdcall GdipDeletePath(ptr) @@ -170,8 +170,8 @@ @ stdcall GdipDrawCurve(ptr ptr ptr long) @ stdcall GdipDrawCurveI(ptr ptr ptr long) @ stub GdipDrawDriverString -@ stub GdipDrawEllipse -@ stub GdipDrawEllipseI +@ stdcall GdipDrawEllipse(ptr ptr long long long long) +@ stdcall GdipDrawEllipseI(ptr ptr long long long long) @ stdcall GdipDrawImage(ptr ptr long long) @ stub GdipDrawImageFX @ stdcall GdipDrawImageI(ptr ptr long long) @@ -234,7 +234,7 @@ @ stdcall GdipFindFirstImageItem(ptr ptr) @ stub GdipFindNextImageItem @ stub GdipFlattenPath -@ stub GdipFlush +@ stdcall GdipFlush(ptr long) @ stdcall GdipFree(ptr) @ stub GdipGetAdjustableArrowCapFillState @ stub GdipGetAdjustableArrowCapHeight @@ -264,17 +264,17 @@ @ stub GdipGetEncoderParameterList @ stub GdipGetEncoderParameterListSize @ stub GdipGetFamily -@ stub GdipGetFamilyName +@ stdcall GdipGetFamilyName(ptr ptr long) @ stub GdipGetFontCollectionFamilyCount @ stub GdipGetFontCollectionFamilyList @ stub GdipGetFontHeight @ stub GdipGetFontHeightGivenDPI -@ stub GdipGetFontSize +@ stdcall GdipGetFontSize(ptr ptr) @ stub GdipGetFontStyle -@ stub GdipGetFontUnit -@ stub GdipGetGenericFontFamilyMonospace -@ stub GdipGetGenericFontFamilySansSerif -@ stub GdipGetGenericFontFamilySerif +@ stdcall GdipGetFontUnit(ptr ptr) +@ stdcall GdipGetGenericFontFamilyMonospace(ptr) +@ stdcall GdipGetGenericFontFamilySansSerif(ptr) +@ stdcall GdipGetGenericFontFamilySerif(ptr) @ stub GdipGetHatchBackgroundColor @ stub GdipGetHatchForegroundColor @ stub GdipGetHatchStyle @@ -323,7 +323,7 @@ @ stub GdipGetNearestColor @ stdcall GdipGetPageScale(ptr ptr) @ stdcall GdipGetPageUnit(ptr ptr) -@ stub GdipGetPathData +@ stdcall GdipGetPathData(ptr ptr) @ stdcall GdipGetPathFillMode(ptr ptr) @ stub GdipGetPathGradientBlend @ stub GdipGetPathGradientBlendCount @@ -341,8 +341,8 @@ @ stub GdipGetPathGradientSurroundColorCount @ stdcall GdipGetPathGradientSurroundColorsWithCount(ptr ptr ptr) @ stub GdipGetPathGradientTransform -@ stub GdipGetPathGradientWrapMode -@ stub GdipGetPathLastPoint +@ stdcall GdipGetPathGradientWrapMode(ptr ptr) +@ stdcall GdipGetPathLastPoint(ptr ptr) @ stdcall GdipGetPathPoints(ptr ptr long) @ stdcall GdipGetPathPointsI(ptr ptr long) @ stdcall GdipGetPathTypes(ptr ptr long) @@ -355,19 +355,19 @@ @ stub GdipGetPenCustomEndCap @ stub GdipGetPenCustomStartCap @ stdcall GdipGetPenDashArray(ptr ptr long) -@ stub GdipGetPenDashCap197819 +@ stdcall GdipGetPenDashCap197819(ptr ptr) @ stub GdipGetPenDashCount @ stdcall GdipGetPenDashOffset(ptr ptr) @ stdcall GdipGetPenDashStyle(ptr ptr) -@ stub GdipGetPenEndCap +@ stdcall GdipGetPenEndCap(ptr ptr) @ stub GdipGetPenFillType -@ stub GdipGetPenLineJoin -@ stub GdipGetPenMiterLimit +@ stdcall GdipGetPenLineJoin(ptr ptr) +@ stdcall GdipGetPenMiterLimit(ptr ptr) @ stub GdipGetPenMode -@ stub GdipGetPenStartCap +@ stdcall GdipGetPenStartCap(ptr ptr) @ stub GdipGetPenTransform -@ stub GdipGetPenUnit -@ stub GdipGetPenWidth +@ stdcall GdipGetPenUnit(ptr ptr) +@ stdcall GdipGetPenWidth(ptr ptr) @ stdcall GdipGetPixelOffsetMode(ptr ptr) @ stdcall GdipGetPointCount(ptr ptr) @ stub GdipGetPropertyCount @@ -377,8 +377,8 @@ @ stub GdipGetPropertySize @ stub GdipGetRegionBounds @ stub GdipGetRegionBoundsI -@ stub GdipGetRegionData -@ stub GdipGetRegionDataSize +@ stdcall GdipGetRegionData(ptr ptr long ptr) +@ stdcall GdipGetRegionDataSize(ptr ptr) @ stdcall GdipGetRegionHRgn(ptr ptr ptr) @ stub GdipGetRegionScans @ stub GdipGetRegionScansCount @@ -407,7 +407,7 @@ @ stub GdipGraphicsSetAbort @ stub GdipImageForceValidation @ stdcall GdipImageGetFrameCount(ptr ptr ptr) -@ stub GdipImageGetFrameDimensionsCount +@ stdcall GdipImageGetFrameDimensionsCount(ptr ptr) @ stdcall GdipImageGetFrameDimensionsList(ptr ptr long) @ stub GdipImageRotateFlip @ stdcall GdipImageSelectActiveFrame(ptr ptr long) @@ -452,7 +452,7 @@ @ stub GdipNewPrivateFontCollection @ stdcall GdipPathIterCopyData(ptr ptr ptr ptr long long) @ stub GdipPathIterEnumerate -@ stub GdipPathIterGetCount +@ stdcall GdipPathIterGetCount(ptr ptr) @ stub GdipPathIterGetSubpathCount @ stub GdipPathIterHasCurve @ stub GdipPathIterIsValid @@ -561,7 +561,7 @@ @ stdcall GdipSetPathGradientSurroundColorsWithCount(ptr ptr ptr) @ stub GdipSetPathGradientTransform @ stdcall GdipSetPathGradientWrapMode(ptr long) -@ stub GdipSetPathMarker +@ stdcall GdipSetPathMarker(ptr) @ stdcall GdipSetPenBrushFill(ptr ptr) @ stdcall GdipSetPenColor(ptr long) @ stub GdipSetPenCompoundArray Modified: trunk/reactos/dll/win32/gdiplus/gdiplus_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus_…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus_private.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus_private.h [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -174,6 +174,8 @@ struct GpFont{ LOGFONTW lfw; + REAL emSize; + Unit unit; }; struct GpStringFormat{ @@ -185,4 +187,13 @@ StringAlignment vertalign; }; +struct GpFontCollection{ + GpFontFamily* FontFamilies; +}; + +struct GpFontFamily{ + TEXTMETRICW tmw; + WCHAR* FamilyName; +}; + #endif Modified: trunk/reactos/dll/win32/gdiplus/graphics.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/graphics…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/graphics.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/graphics.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -1106,6 +1106,40 @@ return ret; } +GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics *graphics, GpPen *pen, REAL x, + REAL y, REAL width, REAL height) +{ + INT save_state; + GpPointF ptf[2]; + POINT pti[2]; + + if(!graphics || !pen) + return InvalidParameter; + + ptf[0].X = x; + ptf[0].Y = y; + ptf[1].X = x + width; + ptf[1].Y = y + height; + + save_state = prepare_dc(graphics, pen); + SelectObject(graphics->hdc, GetStockObject(NULL_BRUSH)); + + transform_and_round_points(graphics, pti, ptf, 2); + + Ellipse(graphics->hdc, pti[0].x, pti[0].y, pti[1].x, pti[1].y); + + restore_dc(graphics, save_state); + + return Ok; +} + +GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x, + INT y, INT width, INT height) +{ + return GdipDrawEllipse(graphics,pen,(REAL)x,(REAL)y,(REAL)width,(REAL)height); +} + + GpStatus WINGDIPAPI GdipDrawImage(GpGraphics *graphics, GpImage *image, REAL x, REAL y) { /* IPicture::Render uses LONG coords */ @@ -1957,6 +1991,19 @@ return ret; } +GpStatus WINGDIPAPI GdipFlush(GpGraphics *graphics, GpFlushIntention intention) +{ + static int calls; + + if(!graphics) + return InvalidParameter; + + if(!(calls++)) + FIXME("not implemented\n"); + + return NotImplemented; +} + /* FIXME: Compositing mode is not used anywhere except the getter/setter. */ GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics *graphics, CompositingMode *mode) Modified: trunk/reactos/dll/win32/gdiplus/graphicspath.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/graphics…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/graphicspath.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/graphicspath.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -346,6 +346,55 @@ return Ok; } +GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath *path, GDIPCONST GpPointF *points, INT count) +{ + INT old_count; + + if(!path || !points || count < 3) + return InvalidParameter; + + if(!lengthen_path(path, count)) + return OutOfMemory; + + old_count = path->pathdata.Count; + + memcpy(&path->pathdata.Points[old_count], points, count*sizeof(GpPointF)); + memset(&path->pathdata.Types[old_count + 1], PathPointTypeLine, count - 1); + + /* A polygon is an intrinsic figure */ + path->pathdata.Types[old_count] = PathPointTypeStart; + path->pathdata.Types[old_count + count - 1] |= PathPointTypeCloseSubpath; + path->newfigure = TRUE; + path->pathdata.Count += count; + + return Ok; +} + +GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath *path, GDIPCONST GpPoint *points, INT count) +{ + GpPointF *ptf; + GpStatus status; + INT i; + + if(!points || count < 3) + return InvalidParameter; + + ptf = GdipAlloc(sizeof(GpPointF) * count); + if(!ptf) + return OutOfMemory; + + for(i = 0; i < count; i++){ + ptf[i].X = (REAL)points[i].X; + ptf[i].Y = (REAL)points[i].Y; + } + + status = GdipAddPathPolygon(path, ptf, count); + + GdipFree(ptf); + + return status; +} + GpStatus WINGDIPAPI GdipClonePath(GpPath* path, GpPath **clone) { if(!path || !clone) @@ -479,12 +528,39 @@ return Ok; } +GpStatus WINGDIPAPI GdipGetPathData(GpPath *path, GpPathData* pathData) +{ + if(!path || !pathData) + return InvalidParameter; + + /* Only copy data. pathData allocation/freeing controlled by wrapper class. + Assumed that pathData is enough wide to get all data - controlled by wrapper too. */ + memcpy(pathData->Points, path->pathdata.Points, sizeof(PointF) * pathData->Count); + memcpy(pathData->Types , path->pathdata.Types , pathData->Count); + + return Ok; +} + GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath *path, GpFillMode *fillmode) { if(!path || !fillmode) return InvalidParameter; *fillmode = path->fill; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath* path, GpPointF* lastPoint) +{ + INT count; + + if(!path || !lastPoint) + return InvalidParameter; + + count = path->pathdata.Count; + if(count > 0) + *lastPoint = path->pathdata.Points[count-1]; return Ok; } @@ -758,3 +834,98 @@ { return GdipAddPathRectangle(path,(REAL)x,(REAL)y,(REAL)width,(REAL)height); } + +GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath *path, GDIPCONST GpRectF *rects, INT count) +{ + GpPath *backup; + GpStatus retstat; + INT i; + + /* count == 0 - verified condition */ + if(!path || !rects || count == 0) + return InvalidParameter; + + if(count < 0) + return OutOfMemory; + + /* make a backup copy */ + if((retstat = GdipClonePath(path, &backup)) != Ok) + return retstat; + + for(i = 0; i < count; i++){ + if((retstat = GdipAddPathRectangle(path,rects[i].X,rects[i].Y,rects[i].Width,rects[i].Height)) != Ok) + goto fail; + } + + /* free backup */ + GdipDeletePath(backup); + return Ok; + +fail: + /* reverting */ + GdipDeletePath(path); + GdipClonePath(backup, &path); + GdipDeletePath(backup); + + return retstat; +} + +GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath *path, GDIPCONST GpRect *rects, INT count) +{ + GpRectF *rectsF; + GpStatus retstat; + INT i; + + if(!rects || count == 0) + return InvalidParameter; + + if(count < 0) + return OutOfMemory; + + rectsF = GdipAlloc(sizeof(GpRectF)*count); + + for(i = 0;i < count;i++){ + rectsF[i].X = (REAL)rects[i].X; + rectsF[i].Y = (REAL)rects[i].Y; + rectsF[i].Width = (REAL)rects[i].Width; + rectsF[i].Height = (REAL)rects[i].Height; + } + + retstat = GdipAddPathRectangles(path, rectsF, count); + GdipFree(rectsF); + + return retstat; +} + +GpStatus WINGDIPAPI GdipSetPathMarker(GpPath* path) +{ + INT count; + + if(!path) + return InvalidParameter; + + count = path->pathdata.Count; + + /* set marker flag */ + if(count > 0) + path->pathdata.Types[count-1] |= PathPointTypePathMarker; + + return Ok; +} + +GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath* path) +{ + INT count; + INT i; + + if(!path) + return InvalidParameter; + + count = path->pathdata.Count; + + for(i = 0; i < count - 1; i++){ + path->pathdata.Types[i] &= ~PathPointTypePathMarker; + } + + return Ok; +} Modified: trunk/reactos/dll/win32/gdiplus/image.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/image.c?…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/image.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/image.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -101,15 +101,25 @@ BITMAPINFO bmi; BYTE *buff = NULL; UINT abs_height; + GpRect act_rect; /* actual rect to be used */ TRACE("%p %p %d %d %p\n", bitmap, rect, flags, format, lockeddata); - if(!lockeddata || !bitmap || !rect) - return InvalidParameter; - - if(rect->X < 0 || rect->Y < 0 || (rect->X + rect->Width > bitmap->width) || - (rect->Y + rect->Height > bitmap->height) || !flags) - return InvalidParameter; + if(!lockeddata || !bitmap) + return InvalidParameter; + + if(rect){ + if(rect->X < 0 || rect->Y < 0 || (rect->X + rect->Width > bitmap->width) || + (rect->Y + rect->Height > bitmap->height) || !flags) + return InvalidParameter; + + act_rect = *rect; + } + else{ + act_rect.X = act_rect.Y = 0; + act_rect.Width = bitmap->width; + act_rect.Height = bitmap->height; + } if(flags & ImageLockModeUserInputBuf) return NotImplemented; @@ -151,19 +161,19 @@ if(!buff) return OutOfMemory; - lockeddata->Width = rect->Width; - lockeddata->Height = rect->Height; + lockeddata->Width = act_rect.Width; + lockeddata->Height = act_rect.Height; lockeddata->PixelFormat = format; lockeddata->Reserved = flags; if(bmi.bmiHeader.biHeight > 0){ lockeddata->Stride = -stride; - lockeddata->Scan0 = buff + (bitspp / 8) * rect->X + - stride * (abs_height - 1 - rect->Y); + lockeddata->Scan0 = buff + (bitspp / 8) * act_rect.X + + stride * (abs_height - 1 - act_rect.Y); } else{ lockeddata->Stride = stride; - lockeddata->Scan0 = buff + (bitspp / 8) * rect->X + stride * rect->Y; + lockeddata->Scan0 = buff + (bitspp / 8) * act_rect.X + stride * act_rect.Y; } bitmap->lockmode = flags; @@ -676,6 +686,19 @@ FIXME("not implemented\n"); return NotImplemented; +} + +GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage *image, + UINT* count) +{ + if(!image || !count) + return InvalidParameter; + + *count = 1; + + FIXME("stub\n"); + + return Ok; } GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage* image, Modified: trunk/reactos/dll/win32/gdiplus/imageattributes.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/imageatt…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/imageattributes.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/imageattributes.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -26,6 +26,17 @@ #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(gdiplus); + +GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes *imageattr, + GpImageAttributes **cloneImageattr) +{ + if(!imageattr || !cloneImageattr) + return InvalidParameter; + + **cloneImageattr = *imageattr; + + return Ok; +} GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes **imageattr) { Modified: trunk/reactos/dll/win32/gdiplus/pathiterator.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/pathiter…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/pathiterator.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/pathiterator.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -131,3 +131,13 @@ return Ok; } + +GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator* iterator, INT* count) +{ + if(!iterator || !count) + return InvalidParameter; + + *count = iterator->pathdata.Count; + + return Ok; +} Modified: trunk/reactos/dll/win32/gdiplus/pen.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/pen.c?re…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/pen.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/pen.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -88,14 +88,19 @@ GpPen **pen) { GpBrush *brush; + GpStatus status; + GdipCreateSolidFill(color, (GpSolidFill **)(&brush)); - return GdipCreatePen2(brush, width, unit, pen); + status = GdipCreatePen2(brush, width, unit, pen); + GdipDeleteBrush(brush); + return status; } GpStatus WINGDIPAPI GdipCreatePen2(GpBrush *brush, REAL width, GpUnit unit, GpPen **pen) { GpPen *gp_pen; + GpBrush *clone_brush; if(!pen || !brush) return InvalidParameter; @@ -111,13 +116,15 @@ gp_pen->miterlimit = 10.0; gp_pen->dash = DashStyleSolid; gp_pen->offset = 0.0; - gp_pen->brush = brush; if(!((gp_pen->unit == UnitWorld) || (gp_pen->unit == UnitPixel))) { FIXME("UnitWorld, UnitPixel only supported units\n"); GdipFree(gp_pen); return NotImplemented; } + + GdipCloneBrush(brush, &clone_brush); + gp_pen->brush = clone_brush; *pen = gp_pen; @@ -170,6 +177,16 @@ return Ok; } +GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen *pen, GpDashCap *dashCap) +{ + if(!pen || !dashCap) + return InvalidParameter; + + *dashCap = pen->dashcap; + + return Ok; +} + GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen *pen, REAL *offset) { if(!pen || !offset) @@ -186,6 +203,66 @@ return InvalidParameter; *dash = pen->dash; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen *pen, GpLineCap *endCap) +{ + if(!pen || !endCap) + return InvalidParameter; + + *endCap = pen->endcap; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen *pen, GpLineJoin *lineJoin) +{ + if(!pen || !lineJoin) + return InvalidParameter; + + *lineJoin = pen->join; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen *pen, REAL *miterLimit) +{ + if(!pen || !miterLimit) + return InvalidParameter; + + *miterLimit = pen->miterlimit; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen *pen, GpLineCap *startCap) +{ + if(!pen || !startCap) + return InvalidParameter; + + *startCap = pen->startcap; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenUnit(GpPen *pen, GpUnit *unit) +{ + if(!pen || !unit) + return InvalidParameter; + + *unit = pen->unit; + + return Ok; +} + +GpStatus WINGDIPAPI GdipGetPenWidth(GpPen *pen, REAL *width) +{ + if(!pen || !width) + return InvalidParameter; + + *width = pen->width; return Ok; } Modified: trunk/reactos/dll/win32/gdiplus/region.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/region.c…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/region.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/region.c [iso-8859-1] Wed Jul 2 03:19:00 2008 @@ -67,6 +67,27 @@ * */ +GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *region, GDIPCONST GpRectF *rect, + CombineMode mode) +{ + FIXME("(%p %p %d): stub\n", region, rect, mode); + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *region, GDIPCONST GpRect *rect, + CombineMode mode) +{ + FIXME("(%p %p %d): stub\n", region, rect, mode); + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *region1, GpRegion *region2, + CombineMode mode) +{ + FIXME("(%p %p %d): stub\n", region1, region2, mode); + return NotImplemented; +} + GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **region) { FIXME("(%p): stub\n", region); @@ -83,9 +104,39 @@ return NotImplemented; } +GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *rect, GpRegion **region) +{ + FIXME("(%p, %p): stub\n", rect, region); + + *region = NULL; + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect *rect, GpRegion **region) +{ + FIXME("(%p, %p): stub\n", rect, region); + + *region = NULL; + return NotImplemented; +} + GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *region) { FIXME("(%p): stub\n", region); + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipGetRegionData(GpRegion *region, BYTE *buffer, UINT size, UINT *needed) +{ + FIXME("(%p, %p, %d, %p): stub\n", region, buffer, size, needed); + + return NotImplemented; +} + +GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *region, UINT *needed) +{ + FIXME("(%p, %p): stub\n", region, needed); + return NotImplemented; }
16 years, 5 months
1
0
0
0
[dchapyshev] 34250: - Update gdiplus headers
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Jul 2 03:18:06 2008 New Revision: 34250 URL:
http://svn.reactos.org/svn/reactos?rev=34250&view=rev
Log: - Update gdiplus headers Modified: trunk/reactos/include/psdk/gdiplusenums.h trunk/reactos/include/psdk/gdiplusflat.h trunk/reactos/include/psdk/gdiplusgpstubs.h Modified: trunk/reactos/include/psdk/gdiplusenums.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/gdiplusenums.…
============================================================================== --- trunk/reactos/include/psdk/gdiplusenums.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/gdiplusenums.h [iso-8859-1] Wed Jul 2 03:18:06 2008 @@ -250,6 +250,16 @@ StringTrimmingEllipsisPath = 5 }; +enum FontStyle +{ + FontStyleRegular = 0, + FontStyleBold = 1, + FontStyleItalic = 2, + FontStyleBoldItalic = 3, + FontStyleUnderline = 4, + FontStyleStrikeout = 8 +}; + enum HotkeyPrefix { HotkeyPrefixNone = 0, @@ -296,6 +306,12 @@ CombineModeXor, CombineModeExclude, CombineModeComplement +}; + +enum FlushIntention +{ + FlushIntentionFlush = 0, + FlushIntentionSync = 1 }; #ifndef __cplusplus @@ -324,11 +340,13 @@ typedef enum TextRenderingHint TextRenderingHint; typedef enum StringAlignment StringAlignment; typedef enum StringTrimming StringTrimming; +typedef enum FontStyle FontStyle; typedef enum StringFormatFlags StringFormatFlags; typedef enum HotkeyPrefix HotkeyPrefix; typedef enum PenAlignment GpPenAlignment; typedef enum ImageCodecFlags ImageCodecFlags; typedef enum CombineMode CombineMode; +typedef enum FlushIntention FlushIntention; #endif /* end of c typedefs */ Modified: trunk/reactos/include/psdk/gdiplusflat.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/gdiplusflat.h…
============================================================================== --- trunk/reactos/include/psdk/gdiplusflat.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/gdiplusflat.h [iso-8859-1] Wed Jul 2 03:18:06 2008 @@ -49,6 +49,13 @@ GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL); GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap); GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL); +GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*); +GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*); +GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*); +GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*); +GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*); +GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*); +GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*); GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**); GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC,HANDLE,GpGraphics**); @@ -146,6 +153,8 @@ GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode); GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL); GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit); +GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*); +GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*); GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode); GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode); GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint); @@ -213,8 +222,12 @@ GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath*,GDIPCONST GpPoint*,INT); GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT); GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL); +GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath*,GDIPCONST GpPointF*,INT); +GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath*,GDIPCONST GpPoint*,INT); GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath*,REAL,REAL,REAL,REAL); GpStatus WINGDIPAPI GdipAddPathRectangleI(GpPath*,INT,INT,INT,INT); +GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath*,GDIPCONST GpRectF*,INT); +GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath*,GDIPCONST GpRect*,INT); GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**); GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*); GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*); @@ -223,7 +236,9 @@ GpFillMode,GpPath**); GpStatus WINGDIPAPI GdipCreatePath2I(GDIPCONST GpPoint*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**); GpStatus WINGDIPAPI GdipDeletePath(GpPath*); +GpStatus WINGDIPAPI GdipGetPathData(GpPath*,GpPathData*); GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*); +GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath*,GpPointF*); GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT); GpStatus WINGDIPAPI GdipGetPathPointsI(GpPath*,GpPoint*,INT); GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT); @@ -266,6 +281,7 @@ INT,INT); GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*); GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*); +GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*); GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**); GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL, @@ -315,6 +331,7 @@ GpStatus WINGDIPAPI GdipGetMetafileHeaderFromWmf(HMETAFILE,GDIPCONST WmfPlaceableFileHeader*,MetafileHeader*); GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*); GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*); +GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage*,UINT*); GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT); GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT); GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR*,GpImage**); @@ -327,6 +344,7 @@ GDIPCONST CLSID*,GDIPCONST EncoderParameters*); GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*); +GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**); GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**); GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*); GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*, @@ -337,12 +355,25 @@ GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode, ARGB,BOOL); +GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*, REAL, INT, Unit, + GpFont**); GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**); GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**); GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**); GpStatus WINGDIPAPI GdipDeleteFont(GpFont*); GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*); GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**); +GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*, Unit*); +GpStatus WINGDIPAPI GdipGetFontSize(GpFont*, REAL*); + +GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*, + GpFontCollection*, GpFontFamily**); +GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*); +GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*, WCHAR*, LANGID); + +GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**); +GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**); +GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**); GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**); GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*); @@ -359,13 +390,21 @@ GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*); GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*); +GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *, GDIPCONST GpRectF *, CombineMode); +GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *, GDIPCONST GpRect *, CombineMode); +GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *, GpRegion *, CombineMode); GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **); GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *, GpRegion **); +GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *, GpRegion **); +GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect *, GpRegion **); GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *); +GpStatus WINGDIPAPI GdipGetRegionData(GpRegion *, BYTE *, UINT, UINT *); +GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *, UINT *); GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *, GpGraphics *, HRGN *); GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *); GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *); +GpStatus WINGDIPAPI GdipFlush(GpGraphics*, GpFlushIntention); #ifdef __cplusplus } Modified: trunk/reactos/include/psdk/gdiplusgpstubs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/gdiplusgpstub…
============================================================================== --- trunk/reactos/include/psdk/gdiplusgpstubs.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/gdiplusgpstubs.h [iso-8859-1] Wed Jul 2 03:18:06 2008 @@ -37,6 +37,8 @@ class GpLineGradient : public GpBrush {}; class GpTexture : public GpBrush {}; class GpFont {}; +class GpFontCollection {}; +class GpFontFamily {}; class GpStringFormat {}; class GpRegion {}; class CGpEffect {}; @@ -59,6 +61,8 @@ typedef struct GpLineGradient GpLineGradient; typedef struct GpTexture GpTexture; typedef struct GpFont GpFont; +typedef struct GpFontCollection GpFontCollection; +typedef struct GpFontFamily GpFontFamily; typedef struct GpStringFormat GpStringFormat; typedef struct GpRegion GpRegion; typedef struct CGpEffect CGpEffect; @@ -81,5 +85,6 @@ typedef Point GpPoint; typedef WrapMode GpWrapMode; typedef Color GpColor; +typedef FlushIntention GpFlushIntention; #endif
16 years, 5 months
1
0
0
0
[jimtabor] 34249: Fix build.
by jimtabor@svn.reactos.org
Author: jimtabor Date: Wed Jul 2 02:54:01 2008 New Revision: 34249 URL:
http://svn.reactos.org/svn/reactos?rev=34249&view=rev
Log: Fix build. Modified: trunk/reactos/subsystems/win32/win32k/objects/drawing.c Modified: trunk/reactos/subsystems/win32/win32k/objects/drawing.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/drawing.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/drawing.c [iso-8859-1] Wed Jul 2 02:54:01 2008 @@ -1392,7 +1392,7 @@ if (Wellipse > r.width) { if (Hellipse > r.height) // > W > H - ret = app_fill_ellipse(dc, r, FillBrushObj); + app_fill_ellipse(dc, r, FillBrushObj); else // > W < H {
16 years, 5 months
1
0
0
0
← Newer
1
...
71
72
73
74
75
76
77
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Results per page:
10
25
50
100
200