/// <summary> /// Copy the native GDI+ EncoderParameters data from a chunk of memory into a managed EncoderParameters object. /// See ConvertToMemory for more info. /// </summary> internal static EncoderParameters ConvertFromMemory(IntPtr memory) { if (memory == IntPtr.Zero) { throw Gdip.StatusException(Gdip.InvalidParameter); } int count = Marshal.ReadInt32(memory); EncoderParameters p = new EncoderParameters(count); int size = Marshal.SizeOf(typeof(EncoderParameter)); long arrayOffset = (long)memory + Marshal.SizeOf(typeof(IntPtr)); for (int i = 0; i < count; i++) { Guid guid = (Guid)Marshal.PtrToStructure((IntPtr)(i * size + arrayOffset), typeof(Guid)); int numberOfValues = Marshal.ReadInt32((IntPtr)(i * size + arrayOffset + 16)); EncoderParameterValueType type = (EncoderParameterValueType)Marshal.ReadInt32((IntPtr)(i * size + arrayOffset + 20)); IntPtr value = Marshal.ReadIntPtr((IntPtr)(i * size + arrayOffset + 24)); p._param[i] = new EncoderParameter(new Encoder(guid), numberOfValues, type, value); } return(p); }
public EncoderParameter(Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { _parameterGuid = encoder.Guid; if (numerator1.Length != denominator1.Length || numerator1.Length != denominator2.Length || denominator1.Length != denominator2.Length) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); } _parameterValueType = EncoderParameterValueType.ValueTypeRationalRange; _numberOfValues = numerator1.Length; int size = Marshal.SizeOf(typeof(Int32)); _parameterValue = Marshal.AllocHGlobal(checked (_numberOfValues * 4 * size)); if (_parameterValue == IntPtr.Zero) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); } for (int i = 0; i < _numberOfValues; i++) { Marshal.WriteInt32(Add(_parameterValue, 4 * i * size), numerator1[i]); Marshal.WriteInt32(Add(_parameterValue, (4 * i + 1) * size), denominator1[i]); Marshal.WriteInt32(Add(_parameterValue, (4 * i + 2) * size), numerator2[i]); Marshal.WriteInt32(Add(_parameterValue, (4 * i + 3) * size), denominator2[i]); } GC.KeepAlive(this); }
public EncoderParameter(Encoder encoder, int[] numerator, int[] denominator) { _parameterGuid = encoder.Guid; if (numerator.Length != denominator.Length) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); } _parameterValueType = EncoderParameterValueType.ValueTypeRational; _numberOfValues = numerator.Length; int size = Marshal.SizeOf(typeof(Int32)); _parameterValue = Marshal.AllocHGlobal(checked (_numberOfValues * 2 * size)); if (_parameterValue == IntPtr.Zero) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); } for (int i = 0; i < _numberOfValues; i++) { Marshal.WriteInt32(Add(i * 2 * size, _parameterValue), (int)numerator[i]); Marshal.WriteInt32(Add((i * 2 + 1) * size, _parameterValue), (int)denominator[i]); } GC.KeepAlive(this); }
public EncoderParameter(Encoder encoder, int NumberOfValues, int Type, int Value) { this.encoder = encoder; this.valuePtr = (IntPtr)Value; this.valuesCount = NumberOfValues; this.type = (EncoderParameterValueType)Type; }
public EncoderParameter(Encoder encoder, short value) { this.encoder = encoder.Guid; this.numberOfValues = 1; this.type = EncoderParameterValueType.ValueTypeShort; this.value = value; }
public unsafe EncoderParameter(Encoder encoder, long[] value) { _parameterGuid = encoder.Guid; _parameterValueType = EncoderParameterValueType.ValueTypeLong; _numberOfValues = value.Length; int size = Marshal.SizeOf(typeof(Int32)); _parameterValue = Marshal.AllocHGlobal(checked (_numberOfValues * size)); if (_parameterValue == IntPtr.Zero) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); } int *dest = (int *)_parameterValue; fixed(long *source = value) { for (int i = 0; i < value.Length; i++) { dest[i] = unchecked ((int)source[i]); } } GC.KeepAlive(this); }
public EncoderParameter(Encoder encoder, long[] rangebegin, long[] rangeend) { _parameterGuid = encoder.Guid; if (rangebegin.Length != rangeend.Length) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); } _parameterValueType = EncoderParameterValueType.ValueTypeLongRange; _numberOfValues = rangebegin.Length; int size = Marshal.SizeOf(typeof(Int32)); _parameterValue = Marshal.AllocHGlobal(checked (_numberOfValues * 2 * size)); if (_parameterValue == IntPtr.Zero) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); } for (int i = 0; i < _numberOfValues; i++) { Marshal.WriteInt32(Add(i * 2 * size, _parameterValue), unchecked ((int)rangebegin[i])); Marshal.WriteInt32(Add((i * 2 + 1) * size, _parameterValue), unchecked ((int)rangeend[i])); } GC.KeepAlive(this); }
public void Ctor_Encoder_NumberOfValues_Type_Value(int numberOfValues, EncoderParameterValueType type, IntPtr value) { using (EncoderParameter ep = new EncoderParameter(s_anyEncoder, numberOfValues, type, value)) { CheckEncoderParameter(ep, s_anyEncoder, type, numberOfValues); } }
public void Ctor_Encoder_ByteArray_Bool(byte[] value, bool undefined, EncoderParameterValueType expected) { using (EncoderParameter ep = new EncoderParameter(s_anyEncoder, value, undefined)) { CheckEncoderParameter(ep, s_anyEncoder, expected, value.Length); } }
public EncoderParameter(Encoder encoder, String value) { this.encoder = encoder.Guid; this.numberOfValues = value.Length + 1; this.type = EncoderParameterValueType.ValueTypeAscii; this.value = value; }
public EncoderParameter(Encoder encoder, long value) { this.encoder = encoder.Guid; this.numberOfValues = 1; this.type = EncoderParameterValueType.ValueTypeLong; this.value = value; }
public EncoderParameter(Encoder encoder, long rangebegin, long rangeend) { this.encoder = encoder.Guid; this.numberOfValues = 1; this.type = EncoderParameterValueType.ValueTypeLongRange; this.value = new Tuple(rangebegin, rangeend); }
public EncoderParameter(Encoder encoder, int numerator, int denominator) { this.encoder = encoder.Guid; this.numberOfValues = 1; this.type = EncoderParameterValueType.ValueTypeRational; this.value = new Tuple(numerator, denominator); }
public EncoderParameter(Encoder encoder, byte[] value) { this.encoder = encoder.Guid; this.numberOfValues = value.Length; this.type = EncoderParameterValueType.ValueTypeByte; this.value = value; }
public EncoderParameter( Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { if (numerator1.Length != denominator1.Length || numerator2.Length != denominator2.Length || numerator1.Length != numerator2.Length) { throw new ArgumentException("Invalid parameter used."); } this.encoder = encoder; this.valuesCount = numerator1.Length; this.type = EncoderParameterValueType.ValueTypeRationalRange; this.valuePtr = Marshal.AllocHGlobal(4 * valuesCount * 4); IntPtr dest = this.valuePtr; for (int i = 0; i < valuesCount; i++) { Marshal.WriteInt32(dest, i * 4, numerator1[i]); Marshal.WriteInt32(dest, (i + 1) * 4, denominator1[i]); Marshal.WriteInt32(dest, (i + 2) * 4, numerator2[i]); Marshal.WriteInt32(dest, (i + 3) * 4, denominator2[i]); } }
public void Ctor_Encoder_NegativeNumberOfValues_Type_Value_OutOfMemoryException(int numberOfValues) { IntPtr anyValue = IntPtr.Zero; EncoderParameterValueType anyTypw = EncoderParameterValueType.ValueTypeAscii; Assert.Throws <OutOfMemoryException>(() => new EncoderParameter(s_anyEncoder, numberOfValues, anyTypw, anyValue)); }
public EncoderParameter(Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { _parameterGuid = encoder.Guid; if (numerator1.Length != denominator1.Length || numerator1.Length != denominator2.Length || denominator1.Length != denominator2.Length) { throw Gdip.StatusException(Gdip.InvalidParameter); } _parameterValueType = EncoderParameterValueType.ValueTypeRationalRange; _numberOfValues = numerator1.Length; _parameterValue = Marshal.AllocHGlobal(checked (_numberOfValues * 4 * sizeof(int))); for (int i = 0; i < _numberOfValues; i++) { ((int *)_parameterValue)[i * 4 + 0] = numerator1[i]; ((int *)_parameterValue)[i * 4 + 1] = denominator1[i]; ((int *)_parameterValue)[i * 4 + 2] = numerator2[i]; ((int *)_parameterValue)[i * 4 + 3] = denominator2[i]; } GC.KeepAlive(this); }
internal static EncoderParameters ConvertFromMemory(IntPtr memory) { if (memory == IntPtr.Zero) { throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); } int count = Marshal.ReadIntPtr(memory).ToInt32(); EncoderParameters p = new EncoderParameters(count); int size = Marshal.SizeOf(typeof(EncoderParameter)); long arrayOffset = (long)memory + Marshal.SizeOf(typeof(IntPtr)); IntSecurity.UnmanagedCode.Assert(); try { for (int i = 0; i < count; i++) { Guid guid = (Guid)UnsafeNativeMethods.PtrToStructure((IntPtr)(i * size + arrayOffset), typeof(Guid)); int numberOfValues = Marshal.ReadInt32((IntPtr)(i * size + arrayOffset + 16)); EncoderParameterValueType type = (EncoderParameterValueType)Marshal.ReadInt32((IntPtr)(i * size + arrayOffset + 20)); IntPtr value = Marshal.ReadIntPtr((IntPtr)(i * size + arrayOffset + 24)); p.param[i] = new EncoderParameter(new Encoder(guid), numberOfValues, type, value); } } finally { System.Security.CodeAccessPermission.RevertAssert(); } return(p); }
public EncoderParameter(Encoder encoder, int numberOfValues, int type, int value) { this.encoder = encoder; this.valuePtr = (IntPtr)value; this.valuesCount = numberOfValues; this.type = (EncoderParameterValueType)type; }
public EncoderParameter(Encoder encoder, short value) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeShort; this.valuePtr = Marshal.AllocHGlobal(2); Marshal.WriteInt16(this.valuePtr, value); }
public EncoderParameter(Encoder encoder, byte[] value) { this.encoder = encoder; this.valuesCount = value.Length; this.type = EncoderParameterValueType.ValueTypeByte; this.valuePtr = Marshal.AllocHGlobal(1 * valuesCount); Marshal.Copy(value, 0, this.valuePtr, valuesCount); }
public EncoderParameter(Encoder encoder, long value) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeLong; this.valuePtr = Marshal.AllocHGlobal(4); Marshal.WriteInt32(this.valuePtr, (int)value); }
public EncoderParameter(Encoder encoder, int NumberOfValues, int Type, int Value) { this.encoder = encoder.Guid; this.numberOfValues = NumberOfValues; this.type = (EncoderParameterValueType)Type; this.value = Value; }
public EncoderParameter(Encoder encoder, byte value) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeByte; this.valuePtr = Marshal.AllocHGlobal(1); Marshal.WriteByte(this.valuePtr, value); }
public EncoderParameter(Encoder encoder, short[] value) { this.encoder = encoder; this.valuesCount = value.Length; this.type = EncoderParameterValueType.ValueTypeShort; this.valuePtr = Marshal.AllocHGlobal(2 * valuesCount); Marshal.Copy(value, 0, this.valuePtr, valuesCount); }
public EncoderParameter(Encoder encoder, byte value, bool undefined) { this.encoder = encoder.Guid; this.numberOfValues = 1; this.type = (undefined ? EncoderParameterValueType.ValueTypeUndefined : EncoderParameterValueType.ValueTypeByte); this.value = value; }
public EncoderParameter(Encoder encoder, int numerator1, int denominator1, int numerator2, int denominator2) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeRationalRange; this.valuePtr = Marshal.AllocHGlobal(4 * 4); int[] valuearray = { numerator1, denominator1, numerator2, denominator2 }; Marshal.Copy(valuearray, 0, this.valuePtr, 4); }
public EncoderParameter(Encoder encoder, int numerator, int denominator) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeRational; this.valuePtr = Marshal.AllocHGlobal(8); int[] valuearray = { numerator, denominator }; Marshal.Copy(valuearray, 0, this.valuePtr, valuearray.Length); }
public EncoderParameter(Encoder encoder, string value) { _parameterGuid = encoder.Guid; _parameterValueType = EncoderParameterValueType.ValueTypeAscii; _numberOfValues = value.Length; _parameterValue = Marshal.StringToHGlobalAnsi(value); GC.KeepAlive(this); }
public EncoderParameter(Encoder encoder, long rangebegin, long rangeend) { this.encoder = encoder; this.valuesCount = 1; this.type = EncoderParameterValueType.ValueTypeLongRange; this.valuePtr = Marshal.AllocHGlobal(8); int[] valuearray = { (int)rangebegin, (int)rangeend }; Marshal.Copy(valuearray, 0, this.valuePtr, valuearray.Length); }
public EncoderParameter(Encoder encoder, byte[] value, bool undefined) { this.encoder = encoder.Guid; this.numberOfValues = value.Length; this.type = (undefined ? EncoderParameterValueType.ValueTypeUndefined : EncoderParameterValueType.ValueTypeByte); this.value = value; }
public EncoderParameter(Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { this.encoder = encoder.Guid; this.numberOfValues = numerator1.Length; this.type = EncoderParameterValueType.ValueTypeRationalRange; this.value = new Tuple(numerator1, denominator1, numerator2, denominator2); }
public EncoderParameter(Encoder encoder, int numberValues, EncoderParameterValueType type, IntPtr value) { int size; IntSecurity.UnmanagedCode.Demand(); switch (type) { case EncoderParameterValueType.ValueTypeByte: case EncoderParameterValueType.ValueTypeAscii: size = 1; break; case EncoderParameterValueType.ValueTypeShort: size = 2; break; case EncoderParameterValueType.ValueTypeLong: size = 4; break; case EncoderParameterValueType.ValueTypeRational: case EncoderParameterValueType.ValueTypeLongRange: size = 2 * 4; break; case EncoderParameterValueType.ValueTypeUndefined: size = 1; break; case EncoderParameterValueType.ValueTypeRationalRange: size = 2 * 2 * 4; break; default: throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.WrongState); // } int bytes = checked(size * numberValues); parameterValue = Marshal.AllocHGlobal(bytes); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); for (int i = 0; i < bytes; i++) { Marshal.WriteByte(Add(parameterValue, i), Marshal.ReadByte((IntPtr)(value + i))); } parameterValueType = type; numberOfValues = numberValues; parameterGuid = encoder.Guid; GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, byte value) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeByte; numberOfValues = 1; parameterValue = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Byte))); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.WriteByte(parameterValue, value); GC.KeepAlive(this); }
// Consider supporting a 'float' and converting to numerator/denominator /// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter5"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, long rangebegin, long rangeend) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeLongRange; numberOfValues = 1; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(2*size); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.WriteInt32(parameterValue, unchecked((int)rangebegin)); Marshal.WriteInt32(Add(parameterValue, size), unchecked((int)rangeend)); GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter3"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, long value) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeLong; numberOfValues = 1; parameterValue = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int32))); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.WriteInt32(parameterValue, unchecked((int)value)); GC.KeepAlive(this); }
// Consider supporting a 'float' and converting to numerator/denominator /// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter6"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, int numerator1, int demoninator1, int numerator2, int demoninator2) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeRationalRange; numberOfValues = 1; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(4*size); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.WriteInt32(parameterValue, numerator1); Marshal.WriteInt32(Add(parameterValue, size), demoninator1); Marshal.WriteInt32(Add(parameterValue, 2*size), numerator2); Marshal.WriteInt32(Add(parameterValue, 3*size), demoninator2); GC.KeepAlive(this); }
// Consider supporting a 'float' and converting to numerator/denominator /// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter14"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { parameterGuid = encoder.Guid; if (numerator1.Length != denominator1.Length || numerator1.Length != denominator2.Length || denominator1.Length != denominator2.Length) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); parameterValueType = EncoderParameterValueType.ValueTypeRationalRange; numberOfValues = numerator1.Length; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(checked(numberOfValues*4*size)); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); for (int i=0; i<numberOfValues; i++) { Marshal.WriteInt32(Add(parameterValue, 4*i*size), numerator1[i]); Marshal.WriteInt32(Add(parameterValue, (4*i+1)*size), denominator1[i]); Marshal.WriteInt32(Add(parameterValue, (4*i+2)*size), numerator2[i]); Marshal.WriteInt32(Add(parameterValue, (4*i+3)*size), denominator2[i]); } GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter9"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, byte[] value, bool undefined) { parameterGuid = encoder.Guid; if (undefined == true) parameterValueType = EncoderParameterValueType.ValueTypeUndefined; else parameterValueType = EncoderParameterValueType.ValueTypeByte; numberOfValues = value.Length; parameterValue = Marshal.AllocHGlobal(numberOfValues); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.Copy(value, 0, parameterValue, numberOfValues); GC.KeepAlive(this); }
// Consider supporting a 'float' and converting to numerator/denominator /// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter12"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, int[] numerator, int[] denominator) { parameterGuid = encoder.Guid; if (numerator.Length != denominator.Length) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); parameterValueType = EncoderParameterValueType.ValueTypeRational; numberOfValues = numerator.Length; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(checked(numberOfValues*2*size)); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); for (int i=0; i<numberOfValues; i++) { Marshal.WriteInt32(Add(i*2*size, parameterValue), (int)numerator[i]); Marshal.WriteInt32(Add((i*2+1)*size, parameterValue), (int)denominator[i]); } GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter10"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, short[] value) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeShort; numberOfValues = value.Length; int size = Marshal.SizeOf(typeof(short)); parameterValue = Marshal.AllocHGlobal(checked(numberOfValues*size)); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); Marshal.Copy(value, 0, parameterValue, numberOfValues); GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter11"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public unsafe EncoderParameter(Encoder encoder, long[] value) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeLong; numberOfValues = value.Length; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(checked(numberOfValues*size)); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); int* dest = (int*)parameterValue; fixed (long* source = value) { for (int i=0; i<value.Length; i++) { dest[i] = unchecked((int)source[i]); } } GC.KeepAlive(this); }
/// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter7"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, string value) { parameterGuid = encoder.Guid; parameterValueType = EncoderParameterValueType.ValueTypeAscii; numberOfValues = value.Length; parameterValue = Marshal.StringToHGlobalAnsi(value); GC.KeepAlive(this); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); }
// Consider supporting a 'float' and converting to numerator/denominator /// <include file='doc\EncoderParameter.uex' path='docs/doc[@for="EncoderParameter.EncoderParameter13"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public EncoderParameter(Encoder encoder, long[] rangebegin, long[] rangeend) { parameterGuid = encoder.Guid; if (rangebegin.Length != rangeend.Length) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); parameterValueType = EncoderParameterValueType.ValueTypeLongRange; numberOfValues = rangebegin.Length; int size = Marshal.SizeOf(typeof(Int32)); parameterValue = Marshal.AllocHGlobal(checked(numberOfValues*2*size)); if (parameterValue == IntPtr.Zero) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.OutOfMemory); for (int i=0; i<numberOfValues; i++) { Marshal.WriteInt32(Add(i*2*size, parameterValue), unchecked((int)rangebegin[i])); Marshal.WriteInt32(Add((i*2+1)*size, parameterValue), unchecked((int)rangeend[i])); } GC.KeepAlive(this); }
public EncoderParameter(Encoder encoder, long[] rangebegin, long[] rangeend) { this.encoder = encoder.Guid; this.numberOfValues = rangebegin.Length; this.type = EncoderParameterValueType.ValueTypeLongRange; this.value = new Tuple(rangebegin, rangeend); }
public EncoderParameter(Encoder encoder, long[] rangebegin, long[] rangeend) { if (rangebegin.Length != rangeend.Length) throw new ArgumentException("Invalid parameter used."); this.encoder = encoder; this.valuesCount = rangebegin.Length; this.type = EncoderParameterValueType.ValueTypeLongRange; this.valuePtr = Marshal.AllocHGlobal(4 * valuesCount * 2); IntPtr dest = this.valuePtr; for (int i = 0; i < valuesCount; i++) { Marshal.WriteInt32(dest, i * 4, (int)rangebegin[i]); Marshal.WriteInt32(dest, (i + 1) * 4, (int)rangeend[i]); } }
public EncoderParameter(Encoder encoder, int[] numerator1, int[] denominator1, int[] numerator2, int[] denominator2) { if (numerator1.Length != denominator1.Length || numerator2.Length != denominator2.Length || numerator1.Length != numerator2.Length) throw new ArgumentException("Invalid parameter used."); this.encoder = encoder; this.valuesCount = numerator1.Length; this.type = EncoderParameterValueType.ValueTypeRationalRange; this.valuePtr = Marshal.AllocHGlobal(4 * valuesCount * 4); IntPtr dest = this.valuePtr; for (int i = 0; i < valuesCount; i++) { Marshal.WriteInt32(dest, i * 4, numerator1[i]); Marshal.WriteInt32(dest, (i + 1) * 4, denominator1[i]); Marshal.WriteInt32(dest, (i + 2) * 4, numerator2[i]); Marshal.WriteInt32(dest, (i + 3) * 4, denominator2[i]); } }