1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
4 * All rights reserved. This program and the accompanying materials are made
5 * available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Jean-Christian Kouamé - Initial API and implementation
11 * Patrick Tasse - Updates to mipmap feature
12 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.internal
.tmf
.core
.statesystem
.mipmap
;
15 import java
.util
.List
;
17 import org
.eclipse
.tracecompass
.statesystem
.core
.ITmfStateSystemBuilder
;
18 import org
.eclipse
.tracecompass
.statesystem
.core
.exceptions
.StateValueTypeException
;
19 import org
.eclipse
.tracecompass
.statesystem
.core
.interval
.ITmfStateInterval
;
20 import org
.eclipse
.tracecompass
.statesystem
.core
.statevalue
.ITmfStateValue
;
21 import org
.eclipse
.tracecompass
.statesystem
.core
.statevalue
.ITmfStateValue
.Type
;
24 * The minimum mipmap feature.
26 * Each mipmap state value is the minimum numerical value of all the non-null
27 * lower-level state values it covers. The state value is of the same type as
30 public class MinMipmapFeature
extends TmfMipmapFeature
{
36 * The quark for the attribute we want to mipmap
38 * The quark of the mipmap feature attribute
39 * @param mipmapResolution
40 * The resolution that will be use in the mipmap
42 * The state system in which to insert the state changes
44 public MinMipmapFeature(final int baseQuark
, final int mipmapQuark
, final int mipmapResolution
, final ITmfStateSystemBuilder ss
) {
45 super(baseQuark
, mipmapQuark
, mipmapResolution
, ss
);
49 protected ITmfStateValue
computeMipmapValue(List
<ITmfStateInterval
> lowerIntervals
, long startTime
, long endTime
) {
50 ITmfStateValue minValue
= null;
52 for (ITmfStateInterval interval
: lowerIntervals
) {
53 ITmfStateValue value
= interval
.getStateValue();
54 if (value
.getType() == Type
.DOUBLE
) {
55 if (minValue
== null || value
.unboxDouble() < minValue
.unboxDouble()) {
59 if (minValue
== null || value
.unboxLong() < minValue
.unboxLong()) {
64 } catch (StateValueTypeException e
) {