| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 #include "SkAtomics.h" | 7 #include "SkAtomics.h" |
| 8 #include "SkOSMenu.h" | 8 #include "SkOSMenu.h" |
| 9 #include <stdarg.h> | 9 #include <stdarg.h> |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 } | 141 } |
| 142 | 142 |
| 143 int SkOSMenu::appendAction(const char label[], SkEventSinkID target) { | 143 int SkOSMenu::appendAction(const char label[], SkEventSinkID target) { |
| 144 SkEvent* evt = new SkEvent(gMenuEventType, target); | 144 SkEvent* evt = new SkEvent(gMenuEventType, target); |
| 145 //Store label in event so it can be used to identify the action later | 145 //Store label in event so it can be used to identify the action later |
| 146 evt->setString(label, label); | 146 evt->setString(label, label); |
| 147 return appendItem(label, SkOSMenu::kAction_Type, "", evt); | 147 return appendItem(label, SkOSMenu::kAction_Type, "", evt); |
| 148 } | 148 } |
| 149 | 149 |
| 150 int SkOSMenu::appendList(const char label[], const char slotName[], | 150 int SkOSMenu::appendList(const char label[], const char slotName[], |
| 151 SkEventSinkID target, int index, const char option[], .
..) { | 151 SkEventSinkID target, int index, const SkTArray<const c
har*>& entries) { |
| 152 SkEvent* evt = new SkEvent(gMenuEventType, target); | 152 SkEvent* evt = new SkEvent(gMenuEventType, target); |
| 153 va_list args; | 153 if (!entries.empty()) { |
| 154 if (option) { | 154 SkString str(entries[0]); |
| 155 SkString str(option); | 155 for (int i = 1; i < entries.count(); ++i) { |
| 156 va_start(args, option); | |
| 157 int count = 1; | |
| 158 for (const char* arg = va_arg(args, const char*); arg != nullptr; arg =
va_arg(args, const char*)) { | |
| 159 str += gDelimiter; | 156 str += gDelimiter; |
| 160 str += arg; | 157 str += entries[i]; |
| 161 ++count; | |
| 162 } | 158 } |
| 163 va_end(args); | |
| 164 evt->setString(gList_Items_Str, str); | 159 evt->setString(gList_Items_Str, str); |
| 165 evt->setS32(gList_ItemCount_S32, count); | 160 evt->setS32(gList_ItemCount_S32, entries.count()); |
| 166 evt->setS32(slotName, index); | 161 evt->setS32(slotName, index); |
| 167 } | 162 } |
| 168 return appendItem(label, SkOSMenu::kList_Type, slotName, evt); | 163 return appendItem(label, SkOSMenu::kList_Type, slotName, evt); |
| 169 } | 164 } |
| 170 | 165 |
| 171 int SkOSMenu::appendSlider(const char label[], const char slotName[], | 166 int SkOSMenu::appendSlider(const char label[], const char slotName[], |
| 172 SkEventSinkID target, SkScalar min, SkScalar max, | 167 SkEventSinkID target, SkScalar min, SkScalar max, |
| 173 SkScalar defaultValue) { | 168 SkScalar defaultValue) { |
| 174 SkEvent* evt = new SkEvent(gMenuEventType, target); | 169 SkEvent* evt = new SkEvent(gMenuEventType, target); |
| 175 evt->setScalar(gSlider_Min_Scalar, min); | 170 evt->setScalar(gSlider_Min_Scalar, min); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 const char* text = evt.findString(slotName); | 249 const char* text = evt.findString(slotName); |
| 255 if (!text || !*text) | 250 if (!text || !*text) |
| 256 return false; | 251 return false; |
| 257 else { | 252 else { |
| 258 value->set(text); | 253 value->set(text); |
| 259 return true; | 254 return true; |
| 260 } | 255 } |
| 261 } | 256 } |
| 262 return false; | 257 return false; |
| 263 } | 258 } |
| OLD | NEW |