• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DomCR / ACadSharp / 17737836230

15 Sep 2025 03:12PM UTC coverage: 2.092% (-76.2%) from 78.245%
17737836230

push

github

web-flow
Merge pull request #790 from DomCR/addflag-refactor

addflag refactor

141 of 9225 branches covered (1.53%)

Branch coverage included in aggregate %.

0 of 93 new or added lines in 10 files covered. (0.0%)

24910 existing lines in 372 files now uncovered.

724 of 32119 relevant lines covered (2.25%)

5.76 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/ACadSharp/IO/DWG/DwgStreamWriters/DwgFileHeaderWriterBase.cs
1
using CSUtilities.Converters;
2
using CSUtilities.Text;
3
using System;
4
using System.IO;
5
using System.Text;
6

7
namespace ACadSharp.IO.DWG
8
{
9
        internal abstract class DwgFileHeaderWriterBase : IDwgFileHeaderWriter
10
        {
11
                public abstract int HandleSectionOffset { get; }
12

13
                protected abstract int _fileHeaderSize { get; }
14

15
                protected DwgFileHeader _fileHeader { get; }
×
16

17
                protected ACadVersion _version;
18

19
                protected Encoding _encoding;
20

21
                protected Stream _stream;
22

23
                protected CadDocument _document;
24

UNCOV
25
                public DwgFileHeaderWriterBase(Stream stream, Encoding encoding, CadDocument model)
×
UNCOV
26
                {
×
UNCOV
27
                        if (!stream.CanSeek || !stream.CanWrite)
×
28
                        {
×
29
                                throw new ArgumentException();
×
30
                        }
31

UNCOV
32
                        this._document = model;
×
UNCOV
33
                        this._stream = stream;
×
UNCOV
34
                        this._version = model.Header.Version;
×
UNCOV
35
                        this._encoding = encoding;
×
UNCOV
36
                }
×
37

38
                public abstract void AddSection(string name, MemoryStream stream, bool isCompressed, int decompsize = 0x7400);
39

40
                public abstract void WriteFile();
41

42
                protected ushort getFileCodePage()
UNCOV
43
                {
×
UNCOV
44
                        ushort codePage = (ushort)CadUtils.GetCodeIndex(CadUtils.GetCodePage(_document.Header.CodePage));
×
UNCOV
45
                        if (codePage < 1)
×
46
                        {
×
47
                                return 30;
×
48
                        }
49
                        else
UNCOV
50
                        {
×
UNCOV
51
                                return codePage;
×
52
                        }
UNCOV
53
                }
×
54

55
                protected void applyMask(byte[] buffer, int offset, int length)
UNCOV
56
                {
×
UNCOV
57
                        byte[] bytes = LittleEndianConverter.Instance.GetBytes(0x4164536B ^ (int)this._stream.Position);
×
UNCOV
58
                        int diff = offset + length;
×
UNCOV
59
                        while (offset < diff)
×
UNCOV
60
                        {
×
UNCOV
61
                                for (int i = 0; i < 4; i++)
×
UNCOV
62
                                {
×
UNCOV
63
                                        buffer[offset + i] ^= bytes[i];
×
UNCOV
64
                                }
×
65

UNCOV
66
                                offset += 4;
×
UNCOV
67
                        }
×
UNCOV
68
                }
×
69

70
                protected bool checkEmptyBytes(byte[] buffer, ulong offset, ulong spearBytes)
UNCOV
71
                {
×
UNCOV
72
                        bool result = true;
×
UNCOV
73
                        ulong num = offset + spearBytes;
×
74

UNCOV
75
                        for (ulong i = offset; i < num; i++)
×
UNCOV
76
                        {
×
UNCOV
77
                                if (buffer[i] != 0)
×
UNCOV
78
                                {
×
UNCOV
79
                                        result = false;
×
UNCOV
80
                                        break;
×
81
                                }
UNCOV
82
                        }
×
83

UNCOV
84
                        return result;
×
UNCOV
85
                }
×
86

87
                protected void writeMagicNumber()
UNCOV
88
                {
×
UNCOV
89
                        for (int i = 0; i < (int)(this._stream.Position % 0x20); i++)
×
90
                        {
×
91
                                this._stream.WriteByte(DwgCheckSumCalculator.MagicSequence[i]);
×
92
                        }
×
UNCOV
93
                }
×
94

95
                protected void applyMagicSequence(MemoryStream stream)
UNCOV
96
                {
×
UNCOV
97
                        byte[] buffer = stream.GetBuffer();
×
UNCOV
98
                        for (int i = 0; i < (int)stream.Length; i++)
×
UNCOV
99
                        {
×
UNCOV
100
                                buffer[i] ^= DwgCheckSumCalculator.MagicSequence[i];
×
UNCOV
101
                        }
×
UNCOV
102
                }
×
103
        }
104
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc