stream_style.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package xlsx
  2. // StreamStyle has style and formatting information.
  3. // Used to store a style for streaming
  4. type StreamStyle struct {
  5. xNumFmtId int
  6. style *Style
  7. }
  8. var DefaultStringStyle *StreamStyle
  9. var DefaultStringBoldStyle *StreamStyle
  10. var DefaultStringItalicStyle *StreamStyle
  11. var DefaultStringUnderlinedStyle *StreamStyle
  12. var DefaultNumericStyle *StreamStyle
  13. var DefaultNumericBoldStyle *StreamStyle
  14. var DefaultNumericItalicStyle *StreamStyle
  15. var DefaultNumericUnderlinedStyle *StreamStyle
  16. var DefaultStyles []*StreamStyle
  17. func init(){
  18. // default string styles
  19. DefaultStringStyle = &StreamStyle{
  20. xNumFmtId: 0,
  21. style: NewStyle(),
  22. }
  23. DefaultStringBoldStyle = &StreamStyle{
  24. xNumFmtId: 0,
  25. style: NewStyle(),
  26. }
  27. DefaultStringBoldStyle.style.Font.Bold = true
  28. DefaultStringItalicStyle = &StreamStyle{
  29. xNumFmtId: 0,
  30. style: NewStyle(),
  31. }
  32. DefaultStringItalicStyle.style.Font.Italic = true
  33. DefaultStringUnderlinedStyle = &StreamStyle{
  34. xNumFmtId: 0,
  35. style: NewStyle(),
  36. }
  37. DefaultStringUnderlinedStyle.style.Font.Underline = true
  38. DefaultStyles = append(DefaultStyles, DefaultStringStyle)
  39. DefaultStyles = append(DefaultStyles, DefaultStringBoldStyle)
  40. DefaultStyles = append(DefaultStyles, DefaultStringItalicStyle)
  41. DefaultStyles = append(DefaultStyles, DefaultStringUnderlinedStyle)
  42. // default string styles
  43. DefaultNumericStyle = &StreamStyle{
  44. xNumFmtId: 1,
  45. style: NewStyle(),
  46. }
  47. DefaultNumericBoldStyle = &StreamStyle{
  48. xNumFmtId: 1,
  49. style: NewStyle(),
  50. }
  51. DefaultNumericBoldStyle.style.Font.Bold = true
  52. DefaultNumericItalicStyle = &StreamStyle{
  53. xNumFmtId: 1,
  54. style: NewStyle(),
  55. }
  56. DefaultNumericItalicStyle.style.Font.Italic = true
  57. DefaultNumericUnderlinedStyle = &StreamStyle{
  58. xNumFmtId: 1,
  59. style: NewStyle(),
  60. }
  61. DefaultNumericUnderlinedStyle.style.Font.Underline = true
  62. DefaultStyles = append(DefaultStyles, DefaultNumericStyle)
  63. DefaultStyles = append(DefaultStyles, DefaultNumericBoldStyle)
  64. DefaultStyles = append(DefaultStyles, DefaultNumericItalicStyle)
  65. DefaultStyles = append(DefaultStyles, DefaultNumericUnderlinedStyle)
  66. }
  67. // MakeStyle creates a new StreamStyle and add it to the styles that will be streamed
  68. // This function returns a reference to the created StreamStyle
  69. func MakeStyle(formatStyleId int, font Font, fill Fill, alignment Alignment, border Border) *StreamStyle {
  70. newStyle := NewStyle()
  71. newStyle.Font = font
  72. newStyle.Fill = fill
  73. newStyle.Alignment = alignment
  74. newStyle.Border = border
  75. newStyle.ApplyFont = true
  76. newStyle.ApplyFill = true
  77. newStyle.ApplyAlignment = true
  78. newStyle.ApplyBorder = true
  79. newStreamStyle := &StreamStyle{
  80. xNumFmtId: formatStyleId,
  81. style: newStyle,
  82. }
  83. DefaultStyles = append(DefaultStyles, newStreamStyle)
  84. return newStreamStyle
  85. }