dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnetlib ChangeLog System.Drawing/Drawing2D/Grap...


From: Heiko Weiss
Subject: [dotgnu-pnet-commits] pnetlib ChangeLog System.Drawing/Drawing2D/Grap...
Date: Fri, 16 Mar 2007 07:14:18 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    pnetlib
Changes by:     Heiko Weiss <brubbel>   07/03/16 07:14:18

Modified files:
        .              : ChangeLog 
        System.Drawing/Drawing2D: GraphicsPath.cs 
        runtime/System/Runtime/Serialization/Formatters/Binary: 
                                                                
BinaryValueReader.cs 

Log message:
        GraphicsPath : fixed calculation ellipse and pie
        BinaryValueReader: optimized performance reading byte arrays, factor 
500!

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnetlib/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2485&r2=1.2486
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Drawing/Drawing2D/GraphicsPath.cs?cvsroot=dotgnu-pnet&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pnetlib/runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/ChangeLog,v
retrieving revision 1.2485
retrieving revision 1.2486
diff -u -b -r1.2485 -r1.2486
--- ChangeLog   9 Mar 2007 17:10:13 -0000       1.2485
+++ ChangeLog   16 Mar 2007 07:14:17 -0000      1.2486
@@ -1,3 +1,14 @@
+2007-03-15  Heiko Weiss <address@hidden>
+
+       * 
runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs:
+       optimized performance in ReadPrimitiveTypeArray by reading 
+       arrays once instead of reading it for each object.
+
+2007-03-12  Heiko Weiss <address@hidden>
+
+       * System.Drawing/Drawing2D/GraphicsPath.cs: fixed calculation
+       ellipse and pie.
+
 2007-03-09  Radek Polak  <address@hidden>
 
        * runtime/System/Private/DebuggerHelper.cs: Managed helper class for

Index: System.Drawing/Drawing2D/GraphicsPath.cs
===================================================================
RCS file: 
/sources/dotgnu-pnet/pnetlib/System.Drawing/Drawing2D/GraphicsPath.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- System.Drawing/Drawing2D/GraphicsPath.cs    25 Jan 2007 20:08:51 -0000      
1.9
+++ System.Drawing/Drawing2D/GraphicsPath.cs    16 Mar 2007 07:14:17 -0000      
1.10
@@ -1097,6 +1097,7 @@
        
        }; // class PathObject
 
+       
        // Arc path objects.
        private sealed class ArcPathObject : PathObject
        {
@@ -1137,14 +1138,14 @@
                        double rx = this.width/2;
                        double ry = this.height/2;
                        for( int i = 0; i < iCount-1; i++ ) {
-                               px = rx*( 1 + DegCosinus( dStart ) ) + this.x+1;
-                               py = ry*( 1 + DegSinus  ( dStart ) ) + this.y+1;
+                               px = rx*( 1 + DegCosinus( dStart ) ) + this.x;
+                               py = ry*( 1 + DegSinus  ( dStart ) ) + this.y;
                                points[i] = new PointF( (float)px,(float)py );
                                if( i == 0 ) startPoint = points[i];
                                dStart += dDelta;
                        }
-                       px = rx*( 1 + DegCosinus( dEnd ) ) + this.x+1;
-                       py = ry*( 1 + DegSinus  ( dEnd ) ) + this.y+1;
+                       px = rx*( 1 + DegCosinus( dEnd ) ) + this.x;
+                       py = ry*( 1 + DegSinus  ( dEnd ) ) + this.y;
                        points[iCount-1] = new PointF( (float)px,(float)py );
                        endPoint = points[iCount-1];
                        return points;
@@ -1504,13 +1505,13 @@
                        double ry = this.height/2;
                        points[0] = new PointF( 
(float)(this.x+rx),(float)(this.y+ry) );
                        for( int i = 1; i < iCount; i++ ) {
-                               xP = rx*( 1 + DegCosinus( dStart ) ) + this.x+1;
-                               yP = ry*( 1 + DegSinus  ( dStart ) ) + this.y+1;
+                               xP = rx*( 1 + DegCosinus( dStart ) ) + this.x;
+                               yP = ry*( 1 + DegSinus  ( dStart ) ) + this.y;
                                points[i] = new PointF( (float)xP,(float)yP );
                                dStart += dDelta;
                        }
-                       xP = rx*( 1 + DegCosinus( dEnd ) ) + this.x+1;
-                       yP = ry*( 1 + DegSinus  ( dEnd ) ) + this.y+1;
+                       xP = rx*( 1 + DegCosinus( dEnd ) ) + this.x;
+                       yP = ry*( 1 + DegSinus  ( dEnd ) ) + this.y;
                        points[iCount]   = new PointF( (float)xP,(float)yP );
                        points[iCount+1] = points[0];
                        return points;

Index: 
runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs
===================================================================
RCS file: 
/sources/dotgnu-pnet/pnetlib/runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs 
21 Nov 2005 06:51:21 -0000      1.6
+++ runtime/System/Runtime/Serialization/Formatters/Binary/BinaryValueReader.cs 
16 Mar 2007 07:14:18 -0000      1.7
@@ -518,123 +518,116 @@
                }
        }
                
-       public static void ReadPrimitiveTypeArray(DeserializationContext 
context, BinaryPrimitiveTypeCode typeCode, Array array) 
+       internal static Array ReadPrimitiveTypeArray(DeserializationContext 
context, BinaryPrimitiveTypeCode typeCode, int count ) 
        {
-               int count = array.GetLength(0);
                switch(typeCode) 
                {
                        case BinaryPrimitiveTypeCode.Boolean:
-                               bool[] boolArray = (bool[]) array;
+                               bool[] boolArray = new bool[count];
                                for(int i = 0; i < count; i++) {
                                        boolArray[i] = 
context.Reader.ReadBoolean();
                                }
-                               break;
+                               return boolArray;
 
                        case BinaryPrimitiveTypeCode.Byte:
-                               byte[] byteArray = (byte[]) array;
-                               for(int i = 0; i < count; i++) {
-                                       byteArray[i] = 
context.Reader.ReadByte();
-                               }
-                               break;
+                               byte[] byteArray = 
context.Reader.ReadBytes(count);
+                               return byteArray;
 
                        case BinaryPrimitiveTypeCode.Char:
-                               char[] charArray = (char[]) array;
-                               for(int i = 0; i < count; i++) {
-                                       charArray[i] = 
context.Reader.ReadChar();
-                               }
-                               break;
+                               char[] charArray = 
context.Reader.ReadChars(count);
+                               return charArray;
 
                        case BinaryPrimitiveTypeCode.Decimal:
-                               decimal[] decimalArray = (decimal[]) array;
+                               decimal[] decimalArray = new decimal[count];
                                for(int i = 0; i < count; i++) {
                                        decimalArray[i] = 
Decimal.Parse(context.Reader.ReadString());
                                }
-                               break;
+                               return decimalArray;
 
                        case BinaryPrimitiveTypeCode.Double:
-                               double[] doubleArray = (double[]) array;
+                               double[] doubleArray = new double[count];
                                for(int i = 0; i < count; i++) {
                                        doubleArray[i] = 
context.Reader.ReadDouble();
                                }
-                               break;
+                               return doubleArray;
 
                        case BinaryPrimitiveTypeCode.Int16:
-                               short[] shortArray = (short[]) array;
+                               short[] shortArray = new short[count];
                                for(int i = 0; i < count; i++) {
                                        shortArray[i] = 
context.Reader.ReadInt16();
                                }
-                               break;
+                               return shortArray;
 
                        case BinaryPrimitiveTypeCode.Int32:
-                               int[] intArray = (int[]) array;
+                               int[] intArray = new int[count];
                                for(int i = 0; i < count; i++) {
                                        intArray[i] = 
context.Reader.ReadInt32();
                                }
-                               break;
+                               return intArray;
 
                        case BinaryPrimitiveTypeCode.Int64:
-                               long[] longArray = (long[]) array;
+                               long[] longArray = new long[count];
                                for(int i = 0; i < count; i++) {
                                        longArray[i] = 
context.Reader.ReadInt64();
                                }
-                               break;
+                               return longArray;
 
                        case BinaryPrimitiveTypeCode.SByte:
-                               sbyte[] sbyteArray = (sbyte[]) array;
+                               sbyte[] sbyteArray = new sbyte[count];
                                for(int i = 0; i < count; i++) {
                                        sbyteArray[i] = 
context.Reader.ReadSByte();
                                }
-                               break;
+                               return sbyteArray;
 
                        case BinaryPrimitiveTypeCode.Single:
-                               float[] singleArray = (float[]) array;
+                               float[] singleArray = new float[count];
                                for(int i = 0; i < count; i++) {
                                        singleArray[i] = 
context.Reader.ReadChar();
                                }
-                               break;
+                               return singleArray;
 
                        case BinaryPrimitiveTypeCode.TimeSpan:
-                               TimeSpan[] tsArray = (TimeSpan[]) array;
+                               TimeSpan[] tsArray = new TimeSpan[count];
                                for(int i = 0; i < count; i++) {
                                        tsArray[i] = new 
TimeSpan(context.Reader.ReadInt64());
                                }
-                               break;
+                               return tsArray;
 
                        case BinaryPrimitiveTypeCode.DateTime:
-                               DateTime[] dtArray = (DateTime[]) array;
+                               DateTime[] dtArray = new DateTime[count];
                                for(int i = 0; i < count; i++) {
                                        dtArray[i] = new 
DateTime(context.Reader.ReadInt64());
                                }
-                               break;
+                               return dtArray;
 
                        case BinaryPrimitiveTypeCode.UInt16:
-                               ushort[] ushortArray = (ushort[]) array;
+                               ushort[] ushortArray = new ushort[count];
                                for(int i = 0; i < count; i++) {
                                        ushortArray[i] = 
context.Reader.ReadUInt16();
 
                                }
-                               break;
+                               return ushortArray;
 
                        case BinaryPrimitiveTypeCode.UInt32:
-                               uint[] uintArray = (uint[]) array;
+                               uint[] uintArray = new uint[count];
                                for(int i = 0; i < count; i++) {
                                        uintArray[i] = 
context.Reader.ReadUInt32();
                                }
-                               break;
+                               return uintArray;
 
                        case BinaryPrimitiveTypeCode.UInt64:
-                               ulong[] ulongArray = (ulong[]) array;
+                               ulong[] ulongArray = new ulong[count];
                                for(int i = 0; i < count; i++) {
                                        ulongArray[i] = 
context.Reader.ReadUInt64();
                                }
-                               break;
+                               return ulongArray; 
 
                        case BinaryPrimitiveTypeCode.String:
-                               string[] stringArray = (string[]) array;
+                               string[] stringArray = new string[count];
                                for(int i = 0; i < count; i++) {
                                        stringArray[i] = 
context.Reader.ReadString();
                                }
-                               break;
+                               return stringArray;
 
                        default:
                                throw new SerializationException("unknown 
primitive type code:"+typeCode);
@@ -852,20 +845,18 @@
        {
                bool ret = true;
 
-               Type convertedType;
                Array array;
 
                if(type is BinaryPrimitiveTypeCode) 
                {
                        // this is a primitive array
-                       convertedType = 
GetPrimitiveType((BinaryPrimitiveTypeCode) type);
-                       array = Array.CreateInstance(convertedType, (int) 
count);
-                       ReadPrimitiveTypeArray(context, 
(BinaryPrimitiveTypeCode) type, array);
+                       array = ReadPrimitiveTypeArray(context, 
(BinaryPrimitiveTypeCode) type, (int) count);
+                       
                }
                else if(type is Type)
                {
                        // this is an object array
-                       convertedType = (Type) type;
+                       Type convertedType = (Type) type;
                        array = Array.CreateInstance(convertedType, (int) 
count);
                        for(int i = 0; i < count; i++) 
                        {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]