Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: platform_tools/android/app/src/com/skia/SkiaSampleActivity.java

Issue 60273006: Support MSAA4 and (non-ES) OpenGL in Android SampleApp (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: rebase now that api level changes are merged Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 package com.skia; 8 package com.skia;
9 9
10 import android.app.ActionBar; 10 import android.app.ActionBar;
11 import android.app.Activity; 11 import android.app.Activity;
12 import android.app.DownloadManager; 12 import android.app.DownloadManager;
13 import android.content.Context; 13 import android.content.Context;
14 import android.os.Build;
14 import android.os.Bundle; 15 import android.os.Bundle;
15 import android.os.Handler; 16 import android.os.Handler;
16 import android.os.Message; 17 import android.os.Message;
17 import android.view.KeyEvent; 18 import android.view.KeyEvent;
18 import android.view.Menu; 19 import android.view.Menu;
19 import android.view.MenuItem; 20 import android.view.MenuItem;
20 import android.view.ViewGroup; 21 import android.view.ViewGroup;
21 import android.widget.ArrayAdapter; 22 import android.widget.ArrayAdapter;
22 import android.widget.LinearLayout; 23 import android.widget.LinearLayout;
23 import android.widget.TextView; 24 import android.widget.TextView;
24 import android.widget.Toast; 25 import android.widget.Toast;
25 26
26 import java.io.File; 27 import java.io.File;
27 28
28 public class SkiaSampleActivity extends Activity 29 public class SkiaSampleActivity extends Activity
29 { 30 {
30 private TextView mTitle; 31 private TextView mTitle;
31 private SkiaSampleView mSampleView; 32 private SkiaSampleView mSampleView;
32 33
33 private ArrayAdapter<String> mSlideList; 34 private ArrayAdapter<String> mSlideList;
34 35
35 @Override 36 @Override
36 public void onCreate(Bundle savedInstanceState) { 37 public void onCreate(Bundle savedInstanceState) {
37 super.onCreate(savedInstanceState); 38 super.onCreate(savedInstanceState);
38 39
39 setContentView(R.layout.layout); 40 setContentView(R.layout.layout);
40 mTitle = (TextView) findViewById(R.id.title_view); 41 mTitle = (TextView) findViewById(R.id.title_view);
41 mSampleView = new SkiaSampleView(this);
42 mSlideList = new ArrayAdapter<String>(this, android.R.layout.simple_expa ndable_list_item_1); 42 mSlideList = new ArrayAdapter<String>(this, android.R.layout.simple_expa ndable_list_item_1);
43 43
44 try { 44 try {
45 System.loadLibrary("skia_android"); 45 System.loadLibrary("skia_android");
46 } catch (UnsatisfiedLinkError e) { 46 } catch (UnsatisfiedLinkError e) {
47 // This might be because skia was linked to SampleApp statically. 47 // This might be because skia was linked to SampleApp statically.
48 } 48 }
49 49
50 try { 50 try {
51 System.loadLibrary("SampleApp"); 51 System.loadLibrary("SampleApp");
52 52
53 LinearLayout holder = (LinearLayout) findViewById(R.id.holder); 53 createSampleView(false, 0);
54 holder.addView(mSampleView, new LinearLayout.LayoutParams(
55 ViewGroup.LayoutParams.MATCH_PARENT,
56 ViewGroup.LayoutParams.MATCH_PARENT));
57 54
58 setupActionBar(); 55 setupActionBar();
59
60 } catch (UnsatisfiedLinkError e) { 56 } catch (UnsatisfiedLinkError e) {
61 mTitle.setText("ERROR: native library could not be loaded"); 57 mTitle.setText("ERROR: native library could not be loaded");
62 } 58 }
63 } 59 }
64 60
61 private void createSampleView(boolean useOpenGLAPI, int msaaSampleCount) {
62 if (mSampleView != null) {
63 ViewGroup viewGroup = (ViewGroup) mSampleView.getParent();
64 viewGroup.removeView(mSampleView);
65 mSampleView.terminate();
66 }
67
68 mSampleView = new SkiaSampleView(this, useOpenGLAPI, msaaSampleCount);
69 LinearLayout holder = (LinearLayout) findViewById(R.id.holder);
70 holder.addView(mSampleView, new LinearLayout.LayoutParams(
71 ViewGroup.LayoutParams.MATCH_PARENT,
72 ViewGroup.LayoutParams.MATCH_PARENT));
73 }
74
65 private void setupActionBar() { 75 private void setupActionBar() {
66 ActionBar.OnNavigationListener navigationCallback = new ActionBar.OnNavi gationListener() { 76 ActionBar.OnNavigationListener navigationCallback = new ActionBar.OnNavi gationListener() {
67 @Override 77 @Override
68 public boolean onNavigationItemSelected(int position, long itemId) { 78 public boolean onNavigationItemSelected(int position, long itemId) {
69 mSampleView.goToSample(position); 79 mSampleView.goToSample(position);
70 return true; 80 return true;
71 } 81 }
72 }; 82 };
73 83
74 ActionBar actionBar = getActionBar(); 84 ActionBar actionBar = getActionBar();
75 actionBar.setDisplayShowHomeEnabled(false); 85 actionBar.setDisplayShowHomeEnabled(false);
76 actionBar.setDisplayShowTitleEnabled(false); 86 actionBar.setDisplayShowTitleEnabled(false);
77 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 87 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
78 actionBar.setListNavigationCallbacks(mSlideList, navigationCallback); 88 actionBar.setListNavigationCallbacks(mSlideList, navigationCallback);
79 } 89 }
80 90
81 @Override 91 @Override
82 protected void onResume () { 92 protected void onResume () {
83 super.onResume(); 93 super.onResume();
84 if (mSampleView.getWidth() > 0 && mSampleView.getHeight() > 0) { 94 if (mSampleView != null && mSampleView.getWidth() > 0 && mSampleView.get Height() > 0) {
85 //TODO try mSampleView.requestRender() instead 95 //TODO try mSampleView.requestRender() instead
86 mSampleView.inval(); 96 mSampleView.inval();
87 } 97 }
88 } 98 }
89 99
90 @Override 100 @Override
91 public void onDestroy() { 101 public void onDestroy() {
92 mSampleView.terminate(); 102 if (mSampleView != null) {
103 mSampleView.terminate();
104 }
93 super.onDestroy(); 105 super.onDestroy();
94 } 106 }
95 107
96 @Override 108 @Override
97 public boolean onCreateOptionsMenu(Menu menu) { 109 public boolean onCreateOptionsMenu(Menu menu) {
98 getMenuInflater().inflate(R.menu.action_bar, menu); 110 getMenuInflater().inflate(R.menu.action_bar, menu);
99 return true; 111 return true;
100 } 112 }
101 113
102 @Override 114 @Override
115 public boolean onPrepareOptionsMenu(Menu menu) {
116 if (mSampleView != null) {
117 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
118 ((MenuItem) menu.findItem(R.id.glcontext_menu))
119 .setEnabled(false);
120
121 } else {
122 boolean usesOpenGLAPI = mSampleView.getUsesOpenGLAPI();
123 boolean isMSAA4 = mSampleView.getMSAASampleCount() == 4;
124
125 ((MenuItem) menu.findItem(R.id.glcontext_opengles))
126 .setChecked(!usesOpenGLAPI && !isMSAA4);
127
128 ((MenuItem) menu.findItem(R.id.glcontext_msaa4_opengles))
129 .setChecked(!usesOpenGLAPI && isMSAA4);
130
131 ((MenuItem) menu.findItem(R.id.glcontext_opengl))
132 .setChecked(usesOpenGLAPI && !isMSAA4);
133
134 ((MenuItem) menu.findItem(R.id.glcontext_msaa4_opengl))
135 .setChecked(usesOpenGLAPI && isMSAA4);
136 }
137 }
138 return true;
139 }
140
141 @Override
103 public boolean onOptionsItemSelected(MenuItem item) { 142 public boolean onOptionsItemSelected(MenuItem item) {
143 if (mSampleView == null) {
144 return false;
145 }
146
104 switch (item.getItemId()) { 147 switch (item.getItemId()) {
105 case R.id.overview: 148 case R.id.overview:
106 mSampleView.showOverview(); 149 mSampleView.showOverview();
107 return true; 150 return true;
108 case R.id.prev: 151 case R.id.prev:
109 mSampleView.previousSample(); 152 mSampleView.previousSample();
110 return true; 153 return true;
111 case R.id.next: 154 case R.id.next:
112 mSampleView.nextSample(); 155 mSampleView.nextSample();
113 return true; 156 return true;
114 case R.id.toggle_rendering: 157 case R.id.toggle_rendering:
115 mSampleView.toggleRenderingMode(); 158 mSampleView.toggleRenderingMode();
116 return true; 159 return true;
117 case R.id.slideshow: 160 case R.id.slideshow:
118 mSampleView.toggleSlideshow(); 161 mSampleView.toggleSlideshow();
119 return true; 162 return true;
120 case R.id.fps: 163 case R.id.fps:
121 mSampleView.toggleFPS(); 164 mSampleView.toggleFPS();
122 return true; 165 return true;
123 case R.id.tiling: 166 case R.id.tiling:
124 mSampleView.toggleTiling(); 167 mSampleView.toggleTiling();
125 return true; 168 return true;
126 case R.id.bbox: 169 case R.id.bbox:
127 mSampleView.toggleBBox(); 170 mSampleView.toggleBBox();
128 return true; 171 return true;
129 case R.id.save_to_pdf: 172 case R.id.save_to_pdf:
130 mSampleView.saveToPDF(); 173 mSampleView.saveToPDF();
131 return true; 174 return true;
175 case R.id.glcontext_opengles:
176 return setOpenGLContextSettings(false, 0);
177 case R.id.glcontext_msaa4_opengles:
178 return setOpenGLContextSettings(false, 4);
179 case R.id.glcontext_opengl:
180 return setOpenGLContextSettings(true, 0);
181 case R.id.glcontext_msaa4_opengl:
182 return setOpenGLContextSettings(true, 4);
132 default: 183 default:
133 return false; 184 return false;
134 } 185 }
135 } 186 }
136 187
137 @Override 188 @Override
138 public boolean dispatchKeyEvent(KeyEvent event) { 189 public boolean dispatchKeyEvent(KeyEvent event) {
139 final int keycode = event.getKeyCode(); 190 final int keycode = event.getKeyCode();
140 if (keycode == KeyEvent.KEYCODE_BACK) { 191 if (keycode == KeyEvent.KEYCODE_BACK) {
141 if (event.getAction() == KeyEvent.ACTION_UP) { 192 if (event.getAction() == KeyEvent.ACTION_UP) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 final DownloadManager manager = 247 final DownloadManager manager =
197 (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 248 (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
198 new Thread("Add PDF to downloads") { 249 new Thread("Add PDF to downloads") {
199 @Override 250 @Override
200 public void run() { 251 public void run() {
201 final String mimeType = "application/pdf"; 252 final String mimeType = "application/pdf";
202 manager.addCompletedDownload(title, desc, true, mimeType, path, length, true); 253 manager.addCompletedDownload(title, desc, true, mimeType, path, length, true);
203 } 254 }
204 }.start(); 255 }.start();
205 } 256 }
257
258 private boolean setOpenGLContextSettings(boolean requestedOpenGLAPI, int req uestedSampleCount) {
259 if (mSampleView != null &&
260 mSampleView.getMSAASampleCount() == requestedSampleCount &&
261 mSampleView.getUsesOpenGLAPI() == requestedOpenGLAPI) {
262 return true;
263 }
264
265 createSampleView(requestedOpenGLAPI, requestedSampleCount);
266
267 return true;
268 }
206 } 269 }
OLDNEW
« no previous file with comments | « platform_tools/android/app/res/values/strings.xml ('k') | platform_tools/android/app/src/com/skia/SkiaSampleRenderer.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698