diff --git a/src/.editorconfig b/src/.editorconfig index c6fe6fba..fac0e197 100644 --- a/src/.editorconfig +++ b/src/.editorconfig @@ -1,4 +1,94 @@ root = true [*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing indent_style = space -indent_size = 4 \ No newline at end of file +indent_size = 4 +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = false + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = false + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +# Modifier preferences +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = true:warning + +# 'using' directive preferences +csharp_using_directive_placement = inside_namespace:silent + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.symbols = private_or_internal_static_field +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_not_underscored.severity = warning +dotnet_naming_rule.private_or_internal_field_should_be_not_underscored.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_not_underscored.style = not_underscored + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.not_underscored.required_prefix = +dotnet_naming_style.not_underscored.required_suffix = +dotnet_naming_style.not_underscored.word_separator = +dotnet_naming_style.not_underscored.capitalization = camel_case diff --git a/src/UglyToad.PdfPig/Writer/PdfStreamWriter.cs b/src/UglyToad.PdfPig/Writer/PdfStreamWriter.cs index 9e25b16d..5ce02090 100644 --- a/src/UglyToad.PdfPig/Writer/PdfStreamWriter.cs +++ b/src/UglyToad.PdfPig/Writer/PdfStreamWriter.cs @@ -7,7 +7,7 @@ using Core; using Graphics.Operations; using Tokens; - + /// /// This class would lazily flush all token. Allowing us to make changes to references without need to rewrite the whole stream /// @@ -30,12 +30,14 @@ Stream = baseStream ?? throw new ArgumentNullException(nameof(baseStream)); DisposeStream = disposeStream; } - + public void Flush(decimal version, IndirectReferenceToken catalogReference) { if (catalogReference == null) + { throw new ArgumentNullException(nameof(catalogReference)); - + } + WriteString($"%PDF-{version.ToString("0.0", CultureInfo.InvariantCulture)}", Stream); Stream.WriteText("%"); @@ -47,7 +49,7 @@ var offsets = new Dictionary(); ObjectToken catalogToken = null; - foreach(var pair in tokenReferences) + foreach (var pair in tokenReferences) { var referenceToken = pair.Key; var token = pair.Value; @@ -98,7 +100,7 @@ return reference; } - + public int ReserveNumber() { var reserved = CurrentNumber; @@ -108,10 +110,10 @@ } public IndirectReferenceToken ReserveNumberToken() - { + { return new IndirectReferenceToken(new IndirectReference(ReserveNumber(), 0)); } - + public byte[] ToArray() { var currentPosition = Stream.Position; @@ -120,7 +122,9 @@ var bytes = new byte[Stream.Length]; if (Stream.Read(bytes, 0, bytes.Length) != bytes.Length) + { throw new Exception("Unable to read all the bytes from stream"); + } Stream.Seek(currentPosition, SeekOrigin.Begin); @@ -138,7 +142,7 @@ Stream?.Dispose(); Stream = null; } - + private IndirectReferenceToken AddToken(IToken token, int reservedNumber) { var reference = new IndirectReference(reservedNumber, 0); @@ -149,7 +153,7 @@ private IndirectReferenceToken FindToken(IToken token) { - foreach(var pair in tokenReferences) + foreach (var pair in tokenReferences) { var reference = pair.Key; var storedToken = pair.Value; @@ -161,7 +165,7 @@ return null; } - + private static void WriteString(string text, Stream stream) { var bytes = OtherEncodings.StringAsLatin1Bytes(text);