/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ide.eclipse.gltrace.state.transforms; import com.android.ide.eclipse.gltrace.state.GLIntegerProperty; import com.android.ide.eclipse.gltrace.state.GLStateType; import com.android.ide.eclipse.gltrace.state.IGLProperty; public class CurrentProgramPropertyAccessor implements IGLPropertyAccessor { private final int mContextId; private final GLStateType mStateCategory; private final int mLocation; private final GLStateType mStateType; private final IGLPropertyAccessor mCurrentProgramAccessor; public CurrentProgramPropertyAccessor(int contextid, GLStateType stateCategory, int location, GLStateType stateType) { mContextId = contextid; mStateCategory = stateCategory; mLocation = location; mStateType = stateType; mCurrentProgramAccessor = GLPropertyAccessor.makeAccessor(contextid, GLStateType.PROGRAM_STATE, GLStateType.CURRENT_PROGRAM); } @Override public IGLProperty getProperty(IGLProperty state) { // obtain the current program IGLProperty currentProgramProperty = mCurrentProgramAccessor.getProperty(state); if (!(currentProgramProperty instanceof GLIntegerProperty)) { return null; } Integer program = (Integer) currentProgramProperty.getValue(); // now access the required program property return GLPropertyAccessor.makeAccessor(mContextId, GLStateType.PROGRAM_STATE, GLStateType.PROGRAMS, program, mStateCategory, Integer.valueOf(mLocation), mStateType).getProperty(state); } @Override public String getPath() { return String.format("PROGRAM_STATE/PROGRAMS/${program}/%s/%d/%s", mStateCategory, mLocation, mStateType); } }