From ed167930896cee93523780675a05d971e16c1a43 Mon Sep 17 00:00:00 2001
From: Ferdinand Thiessen <opensource@fthiessen.de>
Date: Thu, 8 Aug 2024 16:14:03 +0200
Subject: fix: Make focussed app menu entry wider to see full name

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
---
 core/src/components/AppMenu.vue      | 16 +++++++++++++++-
 core/src/components/AppMenuEntry.vue | 30 ++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 3 deletions(-)

(limited to 'core/src')

diff --git a/core/src/components/AppMenu.vue b/core/src/components/AppMenu.vue
index 5317d7b5758..28b0cd3b67e 100644
--- a/core/src/components/AppMenu.vue
+++ b/core/src/components/AppMenu.vue
@@ -7,7 +7,8 @@
 	<nav ref="appMenu"
 		class="app-menu"
 		:aria-label="t('core', 'Applications menu')">
-		<ul class="app-menu__list">
+		<ul :aria-label="t('core', 'Apps')"
+			class="app-menu__list">
 			<AppMenuEntry v-for="app in mainAppList"
 				:key="app.id"
 				:app="app" />
@@ -112,6 +113,8 @@ export default defineComponent({
 
 <style scoped lang="scss">
 .app-menu {
+	// The size the currently focussed entry will grow to show the full name
+	--app-menu-entry-growth: calc(var(--default-grid-baseline) * 4);
 	display: flex;
 	flex: 1 1;
 	width: 0;
@@ -119,6 +122,17 @@ export default defineComponent({
 	&__list {
 		display: flex;
 		flex-wrap: nowrap;
+		margin-inline: calc(var(--app-menu-entry-growth) / 2);
+		transition: margin-inline var(--animation-quick) ease-in-out;
+
+		// Remove padding if the first child is focussed
+		&:has(.app-menu-entry:hover:first-child, .app-menu-entry:focus-within:first-child) {
+			margin-inline: 0 calc(var(--app-menu-entry-growth) / 2);
+		}
+		// Remove padding if the last child is focussed
+		&:has(.app-menu-entry:hover:last-child, .app-menu-entry:focus-within:last-child) {
+			margin-inline: calc(var(--app-menu-entry-growth) / 2) 0;
+		}
 	}
 
 	&__overflow {
diff --git a/core/src/components/AppMenuEntry.vue b/core/src/components/AppMenuEntry.vue
index ead86759e4a..cef6d413dcd 100644
--- a/core/src/components/AppMenuEntry.vue
+++ b/core/src/components/AppMenuEntry.vue
@@ -37,6 +37,8 @@ defineProps<{
 	width: var(--header-height);
 	height: var(--header-height);
 	position: relative;
+	// Needed to prevent jumping when hover an entry (keep in sync with :hover styles)
+	transition: width var(--animation-quick) ease-in-out;
 
 	&__link {
 		position: relative;
@@ -95,14 +97,14 @@ defineProps<{
 			left: 50%;
 			bottom: 8px;
 			display: block;
-			transition: all 0.1s ease-in-out;
+			transition: all var(--animation-quick) ease-in-out;
 			opacity: 1;
 		}
 	}
 
 	&__icon,
 	&__label {
-		transition: all 0.1s ease-in-out;
+		transition: all var(--animation-quick) ease-in-out;
 	}
 
 	// Make the hovered entry bold to see that it is hovered
@@ -110,6 +112,30 @@ defineProps<{
 	&:focus-within .app-menu-entry__label {
 		font-weight: bold;
 	}
+
+	// Adjust the width when an entry is focussed
+	// The focussed / hovered entry should grow, while both neighbors need to shrink
+	&:hover,
+	&:focus-within {
+		width: calc(var(--header-height) + var(--app-menu-entry-growth));
+
+		// The next entry needs to shrink half the growth
+		+ .app-menu-entry {
+			width: calc(var(--header-height) - (var(--app-menu-entry-growth) / 2));
+			.app-menu-entry__icon {
+				margin-inline-end: calc(var(--app-menu-entry-growth) / 2);
+			}
+		}
+	}
+
+	// The previous entry needs to shrink half the growth
+	&:has(+ .app-menu-entry:hover),
+	&:has(+ .app-menu-entry:focus-within) {
+		width: calc(var(--header-height) - (var(--app-menu-entry-growth) / 2));
+		.app-menu-entry__icon {
+			margin-inline-start: calc(var(--app-menu-entry-growth) / 2);
+		}
+	}
 }
 </style>
 
-- 
cgit v1.2.3

dependabot/gradle/com.github.spotbugs-6.1.7</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.9'>dependabot/gradle/com.github.spotbugs-6.1.9</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.0'>dependabot/gradle/com.github.spotbugs-6.2.0</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.1'>dependabot/gradle/com.github.spotbugs-6.2.1</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.2'>dependabot/gradle/com.github.spotbugs-6.2.2</option>
<option value='dependabot/gradle/com.google.guava-guava-33.3.1-jre'>dependabot/gradle/com.google.guava-guava-33.3.1-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.0-jre'>dependabot/gradle/com.google.guava-guava-33.4.0-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.5-jre'>dependabot/gradle/com.google.guava-guava-33.4.5-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.6-jre'>dependabot/gradle/com.google.guava-guava-33.4.6-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.7-jre'>dependabot/gradle/com.google.guava-guava-33.4.7-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.8-jre'>dependabot/gradle/com.google.guava-guava-33.4.8-jre</option>
<option value='dependabot/gradle/commons-codec-commons-codec-1.17.2'>dependabot/gradle/commons-codec-commons-codec-1.17.2</option>
<option value='dependabot/gradle/commons-codec-commons-codec-1.18.0'>dependabot/gradle/commons-codec-commons-codec-1.18.0</option>
<option value='dependabot/gradle/de.rototor.pdfbox-graphics2d-3.0.3'>dependabot/gradle/de.rototor.pdfbox-graphics2d-3.0.3</option>
<option value='dependabot/gradle/de.thetaphi.forbiddenapis-3.8'>dependabot/gradle/de.thetaphi.forbiddenapis-3.8</option>
<option value='dependabot/gradle/de.thetaphi.forbiddenapis-3.9'>dependabot/gradle/de.thetaphi.forbiddenapis-3.9</option>
<option value='dependabot/gradle/junitVersion-5.11.2'>dependabot/gradle/junitVersion-5.11.2</option>
<option value='dependabot/gradle/junitVersion-5.11.3'>dependabot/gradle/junitVersion-5.11.3</option>
<option value='dependabot/gradle/junitVersion-5.11.4'>dependabot/gradle/junitVersion-5.11.4</option>
<option value='dependabot/gradle/junitVersion-5.12.0'>dependabot/gradle/junitVersion-5.12.0</option>
<option value='dependabot/gradle/junitVersion-5.12.1'>dependabot/gradle/junitVersion-5.12.1</option>
<option value='dependabot/gradle/junitVersion-5.12.2'>dependabot/gradle/junitVersion-5.12.2</option>
<option value='dependabot/gradle/junitVersion-5.13.0'>dependabot/gradle/junitVersion-5.13.0</option>
<option value='dependabot/gradle/junitVersion-5.13.1'>dependabot/gradle/junitVersion-5.13.1</option>
<option value='dependabot/gradle/junitVersion-5.13.3'>dependabot/gradle/junitVersion-5.13.3</option>
<option value='dependabot/gradle/log4jVersion-2.24.1'>dependabot/gradle/log4jVersion-2.24.1</option>
<option value='dependabot/gradle/log4jVersion-2.24.2'>dependabot/gradle/log4jVersion-2.24.2</option>
<option value='dependabot/gradle/log4jVersion-2.24.3'>dependabot/gradle/log4jVersion-2.24.3</option>
<option value='dependabot/gradle/log4jVersion-2.25.0'>dependabot/gradle/log4jVersion-2.25.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.10'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.10</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.11'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.11</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.3'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.3</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.4'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.5'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.7'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.7</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.0'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.1'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.1</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.2'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.2</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.4'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.5'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.6'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.6</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.10'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.10</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.11'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.11</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.3'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.3</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.4'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.5'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.7'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.7</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.0'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.1'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.1</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.2'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.2</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.4'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.5'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.6'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.6</option>
<option value='dependabot/gradle/net.sf.saxon-Saxon-HE-12.6'>dependabot/gradle/net.sf.saxon-Saxon-HE-12.6</option>
<option value='dependabot/gradle/net.sf.saxon-Saxon-HE-12.8'>dependabot/gradle/net.sf.saxon-Saxon-HE-12.8</option>
<option value='dependabot/gradle/org.apache.commons-commons-collections4-4.5.0'>dependabot/gradle/org.apache.commons-commons-collections4-4.5.0</option>
<option value='dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.4'>dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.4</option>
<option value='dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.5'>dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.5</option>
<option value='dependabot/gradle/org.apache.santuario-xmlsec-4.0.3'>dependabot/gradle/org.apache.santuario-xmlsec-4.0.3</option>
<option value='dependabot/gradle/org.apache.santuario-xmlsec-4.0.4'>dependabot/gradle/org.apache.santuario-xmlsec-4.0.4</option>
<option value='dependabot/gradle/org.apache.xmlbeans-xmlbeans-5.2.2'>dependabot/gradle/org.apache.xmlbeans-xmlbeans-5.2.2</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.0.0'>dependabot/gradle/org.cyclonedx.bom-2.0.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.1.0'>dependabot/gradle/org.cyclonedx.bom-2.1.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.2.0'>dependabot/gradle/org.cyclonedx.bom-2.2.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.3.0'>dependabot/gradle/org.cyclonedx.bom-2.3.0</option>
<option value='dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.3'>dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.3</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.1'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.1</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.2'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.2</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.0'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.0</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.1'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.14.1'>dependabot/gradle/org.mockito-mockito-core-5.14.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.14.2'>dependabot/gradle/org.mockito-mockito-core-5.14.2</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.15.2'>dependabot/gradle/org.mockito-mockito-core-5.15.2</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.16.0'>dependabot/gradle/org.mockito-mockito-core-5.16.0</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.16.1'>dependabot/gradle/org.mockito-mockito-core-5.16.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.17.0'>dependabot/gradle/org.mockito-mockito-core-5.17.0</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.18.0'>dependabot/gradle/org.mockito-mockito-core-5.18.0</option>
<option value='dependabot/gradle/org.slf4j-slf4j-api-2.0.17'>dependabot/gradle/org.slf4j-slf4j-api-2.0.17</option>
<option value='dependabot/gradle/org.slf4j-slf4j-simple-2.0.17'>dependabot/gradle/org.slf4j-slf4j-simple-2.0.17</option>
<option value='dependabot/gradle/org.sonarqube-6.0.0.5145'>dependabot/gradle/org.sonarqube-6.0.0.5145</option>
<option value='dependabot/gradle/org.sonarqube-6.1.0.5360'>dependabot/gradle/org.sonarqube-6.1.0.5360</option>
<option value='dependabot/gradle/org.sonarqube-6.2.0.5505'>dependabot/gradle/org.sonarqube-6.2.0.5505</option>
<option value='dependabot/gradle/org.xmlunit-xmlunit-core-2.10.1'>dependabot/gradle/org.xmlunit-xmlunit-core-2.10.1</option>
<option value='dependabot/gradle/org.xmlunit-xmlunit-core-2.10.3'>dependabot/gradle/org.xmlunit-xmlunit-core-2.10.3</option>
<option value='excelant'>excelant</option>
<option value='gsoc2012'>gsoc2012</option>
<option value='hemf'>hemf</option>
<option value='hssf_cryptoapi'>hssf_cryptoapi</option>
<option value='jakarta-poi'>jakarta-poi</option>
<option value='log4j'>log4j</option>
<option value='maven'>maven</option>
<option value='mv'>mv</option>
<option value='ooxml'>ooxml</option>
<option value='performance-branch'>performance-branch</option>
<option value='ss_border_property_template'>ss_border_property_template</option>
<option value='table-borders'>table-borders</option>
<option value='trunk' selected='selected'>trunk</option>
<option value='wmf_render'>wmf_render</option>
<option value='xml_signature'>xml_signature</option>
<option value='xssf_structured_references'>xssf_structured_references</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Mirror of Apache POI: https://github.com/apache/poi</td><td class='sub right'>www-data</td></tr></table>
<table class='tabs'><tr><td>
<a href='/poi.git/about/'>about</a><a href='/poi.git/'>summary</a><a href='/poi.git/refs/'>refs</a><a href='/poi.git/log/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>log</a><a class='active' href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>tree</a><a href='/poi.git/commit/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>commit</a><a href='/poi.git/diff/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>diff</a><a href='/poi.git/stats/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>stats</a></td><td class='form'><form class='right' method='get' action='/poi.git/log/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>
<select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/poi.git/tree/'>root</a>/<a href='/poi.git/tree/poi-scratchpad'>poi-scratchpad</a>/<a href='/poi.git/tree/poi-scratchpad/src'>src</a>/<a href='/poi.git/tree/poi-scratchpad/src/main'>main</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java'>java</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org'>org</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache'>apache</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache/poi'>poi</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache/poi/hdgf'>hdgf</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks'>chunks</a>/<a href='/poi.git/tree/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>ChunkHeaderV6.java</a></div><div class='content'>blob: 9029b478801eabae5352bd8182352e63c6e2311f (<a href='/poi.git/plain/poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
<a id='n47' href='#n47'>47</a>
<a id='n48' href='#n48'>48</a>
<a id='n49' href='#n49'>49</a>
<a id='n50' href='#n50'>50</a>
<a id='n51' href='#n51'>51</a>
<a id='n52' href='#n52'>52</a>
<a id='n53' href='#n53'>53</a>
<a id='n54' href='#n54'>54</a>
<a id='n55' href='#n55'>55</a>
<a id='n56' href='#n56'>56</a>
<a id='n57' href='#n57'>57</a>
<a id='n58' href='#n58'>58</a>
<a id='n59' href='#n59'>59</a>
<a id='n60' href='#n60'>60</a>
<a id='n61' href='#n61'>61</a>
<a id='n62' href='#n62'>62</a>
<a id='n63' href='#n63'>63</a>
<a id='n64' href='#n64'>64</a>
<a id='n65' href='#n65'>65</a>
<a id='n66' href='#n66'>66</a>
<a id='n67' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
</pre></td>
<td class='lines'><pre><code><style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="cm">/* ====================================================================</span>
<span class="cm">   Licensed to the Apache Software Foundation (ASF) under one or more</span>
<span class="cm">   contributor license agreements.  See the NOTICE file distributed with</span>
<span class="cm">   this work for additional information regarding copyright ownership.</span>
<span class="cm">   The ASF licenses this file to You under the Apache License, Version 2.0</span>
<span class="cm">   (the &quot;License&quot;); you may not use this file except in compliance with</span>
<span class="cm">   the License.  You may obtain a copy of the License at</span>

<span class="cm">       http://www.apache.org/licenses/LICENSE-2.0</span>

<span class="cm">   Unless required by applicable law or agreed to in writing, software</span>
<span class="cm">   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<span class="cm">   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="cm">   See the License for the specific language governing permissions and</span>
<span class="cm">   limitations under the License.</span>
<span class="cm">==================================================================== */</span>

<span class="kn">package</span><span class="w"> </span><span class="nn">org.apache.poi.hdgf.chunks</span><span class="p">;</span>

<span class="kn">import</span><span class="w"> </span><span class="nn">java.nio.charset.Charset</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.nio.charset.StandardCharsets</span><span class="p">;</span>

<span class="cm">/**</span>
<span class="cm"> * A chunk header from v6</span>
<span class="cm"> */</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">ChunkHeaderV6</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">ChunkHeader</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="kd">private</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">unknown2</span><span class="p">;</span>
<span class="w">    </span><span class="kd">private</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">unknown3</span><span class="p">;</span>

<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="nf">getUnknown2</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">unknown2</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="nf">getUnknown3</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">unknown3</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="kd">protected</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">getHeaderSize</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// Looks like it ought to be 19...</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="mi">19</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">getSizeInBytes</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">getHeaderSize</span><span class="p">();</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="cm">/**</span>
<span class="cm">     * Does the chunk have a trailer?</span>
<span class="cm">     */</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasTrailer</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">getType</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">            </span><span class="k">case</span><span class="w"> </span><span class="mh">0x2c</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x65</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x66</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x69</span><span class="p">:</span>
<span class="w">            </span><span class="k">case</span><span class="w"> </span><span class="mh">0x6a</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x6b</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x70</span><span class="p">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="mh">0x71</span><span class="p">:</span>
<span class="w">                </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
<span class="w">            </span><span class="k">default</span><span class="p">:</span>
<span class="w">                </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">getUnknown1</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="cm">/**</span>
<span class="cm">     * Does the chunk have a separator?</span>
<span class="cm">     */</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasSeparator</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="c1">// V6 never has separators</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="nd">@Override</span>
<span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="n">Charset</span><span class="w"> </span><span class="nf">getChunkCharset</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">StandardCharsets</span><span class="p">.</span><span class="na">US_ASCII</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="kt">void</span><span class="w"> </span><span class="nf">setUnknown2</span><span class="p">(</span><span class="kt">short</span><span class="w"> </span><span class="n">unknown2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">this</span><span class="p">.</span><span class="na">unknown2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">unknown2</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>

<span class="w">    </span><span class="kt">void</span><span class="w"> </span><span class="nf">setUnknown3</span><span class="p">(</span><span class="kt">short</span><span class="w"> </span><span class="n">unknown3</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">this</span><span class="p">.</span><span class="na">unknown3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">unknown3</span><span class="p">;</span>
<span class="w">    </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2025-07-18 08:45:13 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
