FocusStrategy.smali 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173
  1. .class Landroid/support/v4/widget/FocusStrategy;
  2. .super Ljava/lang/Object;
  3. .source ""
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;,
  8. Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;,
  9. Landroid/support/v4/widget/FocusStrategy$SequentialComparator;
  10. }
  11. .end annotation
  12. # direct methods
  13. .method constructor <init>()V
  14. .locals 0
  15. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  16. return-void
  17. .end method
  18. .method private static beamBeats(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
  19. .locals 3
  20. .param p1 # Landroid/graphics/Rect;
  21. .annotation build Landroid/support/annotation/NonNull;
  22. .end annotation
  23. .end param
  24. .param p2 # Landroid/graphics/Rect;
  25. .annotation build Landroid/support/annotation/NonNull;
  26. .end annotation
  27. .end param
  28. .param p3 # Landroid/graphics/Rect;
  29. .annotation build Landroid/support/annotation/NonNull;
  30. .end annotation
  31. .end param
  32. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->beamsOverlap(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
  33. move-result v0
  34. invoke-static {p0, p1, p3}, Landroid/support/v4/widget/FocusStrategy;->beamsOverlap(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
  35. move-result v1
  36. const/4 v2, 0x0
  37. if-nez v1, :cond_5
  38. if-nez v0, :cond_0
  39. goto :goto_1
  40. :cond_0
  41. invoke-static {p0, p1, p3}, Landroid/support/v4/widget/FocusStrategy;->isToDirectionOf(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
  42. move-result v0
  43. const/4 v1, 0x1
  44. if-nez v0, :cond_1
  45. return v1
  46. :cond_1
  47. const/16 v0, 0x11
  48. if-eq p0, v0, :cond_4
  49. const/16 v0, 0x42
  50. if-ne p0, v0, :cond_2
  51. goto :goto_0
  52. :cond_2
  53. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  54. move-result p2
  55. invoke-static {p0, p1, p3}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistanceToFarEdge(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  56. move-result p0
  57. if-ge p2, p0, :cond_3
  58. goto :goto_0
  59. :cond_3
  60. const/4 v1, 0x0
  61. :cond_4
  62. :goto_0
  63. return v1
  64. :cond_5
  65. :goto_1
  66. return v2
  67. .end method
  68. .method private static beamsOverlap(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
  69. .locals 3
  70. .param p1 # Landroid/graphics/Rect;
  71. .annotation build Landroid/support/annotation/NonNull;
  72. .end annotation
  73. .end param
  74. .param p2 # Landroid/graphics/Rect;
  75. .annotation build Landroid/support/annotation/NonNull;
  76. .end annotation
  77. .end param
  78. const/16 v0, 0x11
  79. const/4 v1, 0x1
  80. const/4 v2, 0x0
  81. if-eq p0, v0, :cond_3
  82. const/16 v0, 0x21
  83. if-eq p0, v0, :cond_1
  84. const/16 v0, 0x42
  85. if-eq p0, v0, :cond_3
  86. const/16 v0, 0x82
  87. if-ne p0, v0, :cond_0
  88. goto :goto_0
  89. :cond_0
  90. new-instance p0, Ljava/lang/IllegalArgumentException;
  91. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  92. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  93. throw p0
  94. :cond_1
  95. :goto_0
  96. iget p0, p2, Landroid/graphics/Rect;->right:I
  97. iget v0, p1, Landroid/graphics/Rect;->left:I
  98. if-lt p0, v0, :cond_2
  99. iget p0, p2, Landroid/graphics/Rect;->left:I
  100. iget p1, p1, Landroid/graphics/Rect;->right:I
  101. if-gt p0, p1, :cond_2
  102. goto :goto_1
  103. :cond_2
  104. const/4 v1, 0x0
  105. :goto_1
  106. return v1
  107. :cond_3
  108. iget p0, p2, Landroid/graphics/Rect;->bottom:I
  109. iget v0, p1, Landroid/graphics/Rect;->top:I
  110. if-lt p0, v0, :cond_4
  111. iget p0, p2, Landroid/graphics/Rect;->top:I
  112. iget p1, p1, Landroid/graphics/Rect;->bottom:I
  113. if-gt p0, p1, :cond_4
  114. goto :goto_2
  115. :cond_4
  116. const/4 v1, 0x0
  117. :goto_2
  118. return v1
  119. .end method
  120. .method public static findNextFocusInAbsoluteDirection(Ljava/lang/Object;Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;Ljava/lang/Object;Landroid/graphics/Rect;I)Ljava/lang/Object;
  121. .locals 7
  122. .param p0 # Ljava/lang/Object;
  123. .annotation build Landroid/support/annotation/NonNull;
  124. .end annotation
  125. .end param
  126. .param p1 # Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;
  127. .annotation build Landroid/support/annotation/NonNull;
  128. .end annotation
  129. .end param
  130. .param p2 # Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;
  131. .annotation build Landroid/support/annotation/NonNull;
  132. .end annotation
  133. .end param
  134. .param p3 # Ljava/lang/Object;
  135. .annotation build Landroid/support/annotation/Nullable;
  136. .end annotation
  137. .end param
  138. .param p4 # Landroid/graphics/Rect;
  139. .annotation build Landroid/support/annotation/NonNull;
  140. .end annotation
  141. .end param
  142. .annotation system Ldalvik/annotation/Signature;
  143. value = {
  144. "<",
  145. "L:Ljava/lang/Object;",
  146. "T:",
  147. "Ljava/lang/Object;",
  148. ">(T",
  149. "L;",
  150. "Landroid/support/v4/widget/FocusStrategy$CollectionAdapter<",
  151. "T",
  152. "L;",
  153. "TT;>;",
  154. "Landroid/support/v4/widget/FocusStrategy$BoundsAdapter<",
  155. "TT;>;TT;",
  156. "Landroid/graphics/Rect;",
  157. "I)TT;"
  158. }
  159. .end annotation
  160. new-instance v0, Landroid/graphics/Rect;
  161. invoke-direct {v0, p4}, Landroid/graphics/Rect;-><init>(Landroid/graphics/Rect;)V
  162. const/16 v1, 0x11
  163. const/4 v2, 0x0
  164. if-eq p5, v1, :cond_3
  165. const/16 v1, 0x21
  166. if-eq p5, v1, :cond_2
  167. const/16 v1, 0x42
  168. if-eq p5, v1, :cond_1
  169. const/16 v1, 0x82
  170. if-ne p5, v1, :cond_0
  171. invoke-virtual {p4}, Landroid/graphics/Rect;->height()I
  172. move-result v1
  173. add-int/lit8 v1, v1, 0x1
  174. neg-int v1, v1
  175. goto :goto_0
  176. :cond_0
  177. new-instance p0, Ljava/lang/IllegalArgumentException;
  178. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  179. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  180. throw p0
  181. :cond_1
  182. invoke-virtual {p4}, Landroid/graphics/Rect;->width()I
  183. move-result v1
  184. add-int/lit8 v1, v1, 0x1
  185. neg-int v1, v1
  186. goto :goto_1
  187. :cond_2
  188. invoke-virtual {p4}, Landroid/graphics/Rect;->height()I
  189. move-result v1
  190. add-int/lit8 v1, v1, 0x1
  191. :goto_0
  192. invoke-virtual {v0, v2, v1}, Landroid/graphics/Rect;->offset(II)V
  193. goto :goto_2
  194. :cond_3
  195. invoke-virtual {p4}, Landroid/graphics/Rect;->width()I
  196. move-result v1
  197. add-int/lit8 v1, v1, 0x1
  198. :goto_1
  199. invoke-virtual {v0, v1, v2}, Landroid/graphics/Rect;->offset(II)V
  200. :goto_2
  201. const/4 v1, 0x0
  202. invoke-interface {p1, p0}, Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;->size(Ljava/lang/Object;)I
  203. move-result v3
  204. new-instance v4, Landroid/graphics/Rect;
  205. invoke-direct {v4}, Landroid/graphics/Rect;-><init>()V
  206. :goto_3
  207. if-ge v2, v3, :cond_6
  208. invoke-interface {p1, p0, v2}, Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;->get(Ljava/lang/Object;I)Ljava/lang/Object;
  209. move-result-object v5
  210. if-ne v5, p3, :cond_4
  211. goto :goto_4
  212. :cond_4
  213. invoke-interface {p2, v5, v4}, Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;->obtainBounds(Ljava/lang/Object;Landroid/graphics/Rect;)V
  214. invoke-static {p5, p4, v4, v0}, Landroid/support/v4/widget/FocusStrategy;->isBetterCandidate(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
  215. move-result v6
  216. if-eqz v6, :cond_5
  217. invoke-virtual {v0, v4}, Landroid/graphics/Rect;->set(Landroid/graphics/Rect;)V
  218. move-object v1, v5
  219. :cond_5
  220. :goto_4
  221. add-int/lit8 v2, v2, 0x1
  222. goto :goto_3
  223. :cond_6
  224. return-object v1
  225. .end method
  226. .method public static findNextFocusInRelativeDirection(Ljava/lang/Object;Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;Ljava/lang/Object;IZZ)Ljava/lang/Object;
  227. .locals 4
  228. .param p0 # Ljava/lang/Object;
  229. .annotation build Landroid/support/annotation/NonNull;
  230. .end annotation
  231. .end param
  232. .param p1 # Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;
  233. .annotation build Landroid/support/annotation/NonNull;
  234. .end annotation
  235. .end param
  236. .param p2 # Landroid/support/v4/widget/FocusStrategy$BoundsAdapter;
  237. .annotation build Landroid/support/annotation/NonNull;
  238. .end annotation
  239. .end param
  240. .param p3 # Ljava/lang/Object;
  241. .annotation build Landroid/support/annotation/Nullable;
  242. .end annotation
  243. .end param
  244. .annotation system Ldalvik/annotation/Signature;
  245. value = {
  246. "<",
  247. "L:Ljava/lang/Object;",
  248. "T:",
  249. "Ljava/lang/Object;",
  250. ">(T",
  251. "L;",
  252. "Landroid/support/v4/widget/FocusStrategy$CollectionAdapter<",
  253. "T",
  254. "L;",
  255. "TT;>;",
  256. "Landroid/support/v4/widget/FocusStrategy$BoundsAdapter<",
  257. "TT;>;TT;IZZ)TT;"
  258. }
  259. .end annotation
  260. invoke-interface {p1, p0}, Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;->size(Ljava/lang/Object;)I
  261. move-result v0
  262. new-instance v1, Ljava/util/ArrayList;
  263. invoke-direct {v1, v0}, Ljava/util/ArrayList;-><init>(I)V
  264. const/4 v2, 0x0
  265. :goto_0
  266. if-ge v2, v0, :cond_0
  267. invoke-interface {p1, p0, v2}, Landroid/support/v4/widget/FocusStrategy$CollectionAdapter;->get(Ljava/lang/Object;I)Ljava/lang/Object;
  268. move-result-object v3
  269. invoke-virtual {v1, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  270. add-int/lit8 v2, v2, 0x1
  271. goto :goto_0
  272. :cond_0
  273. new-instance p0, Landroid/support/v4/widget/FocusStrategy$SequentialComparator;
  274. invoke-direct {p0, p5, p2}, Landroid/support/v4/widget/FocusStrategy$SequentialComparator;-><init>(ZLandroid/support/v4/widget/FocusStrategy$BoundsAdapter;)V
  275. invoke-static {v1, p0}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
  276. const/4 p0, 0x1
  277. if-eq p4, p0, :cond_2
  278. const/4 p0, 0x2
  279. if-ne p4, p0, :cond_1
  280. invoke-static {p3, v1, p6}, Landroid/support/v4/widget/FocusStrategy;->getNextFocusable(Ljava/lang/Object;Ljava/util/ArrayList;Z)Ljava/lang/Object;
  281. move-result-object p0
  282. return-object p0
  283. :cond_1
  284. new-instance p0, Ljava/lang/IllegalArgumentException;
  285. const-string p1, "direction must be one of {FOCUS_FORWARD, FOCUS_BACKWARD}."
  286. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  287. throw p0
  288. :cond_2
  289. invoke-static {p3, v1, p6}, Landroid/support/v4/widget/FocusStrategy;->getPreviousFocusable(Ljava/lang/Object;Ljava/util/ArrayList;Z)Ljava/lang/Object;
  290. move-result-object p0
  291. return-object p0
  292. .end method
  293. .method private static getNextFocusable(Ljava/lang/Object;Ljava/util/ArrayList;Z)Ljava/lang/Object;
  294. .locals 1
  295. .annotation system Ldalvik/annotation/Signature;
  296. value = {
  297. "<T:",
  298. "Ljava/lang/Object;",
  299. ">(TT;",
  300. "Ljava/util/ArrayList<",
  301. "TT;>;Z)TT;"
  302. }
  303. .end annotation
  304. invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
  305. move-result v0
  306. if-nez p0, :cond_0
  307. const/4 p0, -0x1
  308. goto :goto_0
  309. :cond_0
  310. invoke-virtual {p1, p0}, Ljava/util/ArrayList;->lastIndexOf(Ljava/lang/Object;)I
  311. move-result p0
  312. :goto_0
  313. add-int/lit8 p0, p0, 0x1
  314. if-ge p0, v0, :cond_1
  315. invoke-virtual {p1, p0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  316. move-result-object p0
  317. return-object p0
  318. :cond_1
  319. if-eqz p2, :cond_2
  320. if-lez v0, :cond_2
  321. const/4 p0, 0x0
  322. invoke-virtual {p1, p0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  323. move-result-object p0
  324. return-object p0
  325. :cond_2
  326. const/4 p0, 0x0
  327. return-object p0
  328. .end method
  329. .method private static getPreviousFocusable(Ljava/lang/Object;Ljava/util/ArrayList;Z)Ljava/lang/Object;
  330. .locals 1
  331. .annotation system Ldalvik/annotation/Signature;
  332. value = {
  333. "<T:",
  334. "Ljava/lang/Object;",
  335. ">(TT;",
  336. "Ljava/util/ArrayList<",
  337. "TT;>;Z)TT;"
  338. }
  339. .end annotation
  340. invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
  341. move-result v0
  342. if-nez p0, :cond_0
  343. move p0, v0
  344. goto :goto_0
  345. :cond_0
  346. invoke-virtual {p1, p0}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
  347. move-result p0
  348. :goto_0
  349. add-int/lit8 p0, p0, -0x1
  350. if-ltz p0, :cond_1
  351. invoke-virtual {p1, p0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  352. move-result-object p0
  353. return-object p0
  354. :cond_1
  355. if-eqz p2, :cond_2
  356. if-lez v0, :cond_2
  357. add-int/lit8 v0, v0, -0x1
  358. invoke-virtual {p1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  359. move-result-object p0
  360. return-object p0
  361. :cond_2
  362. const/4 p0, 0x0
  363. return-object p0
  364. .end method
  365. .method private static getWeightedDistanceFor(II)I
  366. .locals 1
  367. mul-int/lit8 v0, p0, 0xd
  368. mul-int v0, v0, p0
  369. mul-int p1, p1, p1
  370. add-int/2addr v0, p1
  371. return v0
  372. .end method
  373. .method private static isBetterCandidate(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
  374. .locals 3
  375. .param p1 # Landroid/graphics/Rect;
  376. .annotation build Landroid/support/annotation/NonNull;
  377. .end annotation
  378. .end param
  379. .param p2 # Landroid/graphics/Rect;
  380. .annotation build Landroid/support/annotation/NonNull;
  381. .end annotation
  382. .end param
  383. .param p3 # Landroid/graphics/Rect;
  384. .annotation build Landroid/support/annotation/NonNull;
  385. .end annotation
  386. .end param
  387. invoke-static {p1, p2, p0}, Landroid/support/v4/widget/FocusStrategy;->isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z
  388. move-result v0
  389. const/4 v1, 0x0
  390. if-nez v0, :cond_0
  391. return v1
  392. :cond_0
  393. invoke-static {p1, p3, p0}, Landroid/support/v4/widget/FocusStrategy;->isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z
  394. move-result v0
  395. const/4 v2, 0x1
  396. if-nez v0, :cond_1
  397. return v2
  398. :cond_1
  399. invoke-static {p0, p1, p2, p3}, Landroid/support/v4/widget/FocusStrategy;->beamBeats(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
  400. move-result v0
  401. if-eqz v0, :cond_2
  402. return v2
  403. :cond_2
  404. invoke-static {p0, p1, p3, p2}, Landroid/support/v4/widget/FocusStrategy;->beamBeats(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
  405. move-result v0
  406. if-eqz v0, :cond_3
  407. return v1
  408. :cond_3
  409. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  410. move-result v0
  411. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->minorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  412. move-result p2
  413. invoke-static {v0, p2}, Landroid/support/v4/widget/FocusStrategy;->getWeightedDistanceFor(II)I
  414. move-result p2
  415. invoke-static {p0, p1, p3}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  416. move-result v0
  417. invoke-static {p0, p1, p3}, Landroid/support/v4/widget/FocusStrategy;->minorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  418. move-result p0
  419. invoke-static {v0, p0}, Landroid/support/v4/widget/FocusStrategy;->getWeightedDistanceFor(II)I
  420. move-result p0
  421. if-ge p2, p0, :cond_4
  422. const/4 v1, 0x1
  423. :cond_4
  424. return v1
  425. .end method
  426. .method private static isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z
  427. .locals 3
  428. .param p0 # Landroid/graphics/Rect;
  429. .annotation build Landroid/support/annotation/NonNull;
  430. .end annotation
  431. .end param
  432. .param p1 # Landroid/graphics/Rect;
  433. .annotation build Landroid/support/annotation/NonNull;
  434. .end annotation
  435. .end param
  436. const/16 v0, 0x11
  437. const/4 v1, 0x1
  438. const/4 v2, 0x0
  439. if-eq p2, v0, :cond_9
  440. const/16 v0, 0x21
  441. if-eq p2, v0, :cond_6
  442. const/16 v0, 0x42
  443. if-eq p2, v0, :cond_3
  444. const/16 v0, 0x82
  445. if-ne p2, v0, :cond_2
  446. iget p2, p0, Landroid/graphics/Rect;->top:I
  447. iget v0, p1, Landroid/graphics/Rect;->top:I
  448. if-lt p2, v0, :cond_0
  449. iget p2, p0, Landroid/graphics/Rect;->bottom:I
  450. if-gt p2, v0, :cond_1
  451. :cond_0
  452. iget p0, p0, Landroid/graphics/Rect;->bottom:I
  453. iget p1, p1, Landroid/graphics/Rect;->bottom:I
  454. if-ge p0, p1, :cond_1
  455. goto :goto_0
  456. :cond_1
  457. const/4 v1, 0x0
  458. :goto_0
  459. return v1
  460. :cond_2
  461. new-instance p0, Ljava/lang/IllegalArgumentException;
  462. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  463. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  464. throw p0
  465. :cond_3
  466. iget p2, p0, Landroid/graphics/Rect;->left:I
  467. iget v0, p1, Landroid/graphics/Rect;->left:I
  468. if-lt p2, v0, :cond_4
  469. iget p2, p0, Landroid/graphics/Rect;->right:I
  470. if-gt p2, v0, :cond_5
  471. :cond_4
  472. iget p0, p0, Landroid/graphics/Rect;->right:I
  473. iget p1, p1, Landroid/graphics/Rect;->right:I
  474. if-ge p0, p1, :cond_5
  475. goto :goto_1
  476. :cond_5
  477. const/4 v1, 0x0
  478. :goto_1
  479. return v1
  480. :cond_6
  481. iget p2, p0, Landroid/graphics/Rect;->bottom:I
  482. iget v0, p1, Landroid/graphics/Rect;->bottom:I
  483. if-gt p2, v0, :cond_7
  484. iget p2, p0, Landroid/graphics/Rect;->top:I
  485. if-lt p2, v0, :cond_8
  486. :cond_7
  487. iget p0, p0, Landroid/graphics/Rect;->top:I
  488. iget p1, p1, Landroid/graphics/Rect;->top:I
  489. if-le p0, p1, :cond_8
  490. goto :goto_2
  491. :cond_8
  492. const/4 v1, 0x0
  493. :goto_2
  494. return v1
  495. :cond_9
  496. iget p2, p0, Landroid/graphics/Rect;->right:I
  497. iget v0, p1, Landroid/graphics/Rect;->right:I
  498. if-gt p2, v0, :cond_a
  499. iget p2, p0, Landroid/graphics/Rect;->left:I
  500. if-lt p2, v0, :cond_b
  501. :cond_a
  502. iget p0, p0, Landroid/graphics/Rect;->left:I
  503. iget p1, p1, Landroid/graphics/Rect;->left:I
  504. if-le p0, p1, :cond_b
  505. goto :goto_3
  506. :cond_b
  507. const/4 v1, 0x0
  508. :goto_3
  509. return v1
  510. .end method
  511. .method private static isToDirectionOf(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
  512. .locals 3
  513. .param p1 # Landroid/graphics/Rect;
  514. .annotation build Landroid/support/annotation/NonNull;
  515. .end annotation
  516. .end param
  517. .param p2 # Landroid/graphics/Rect;
  518. .annotation build Landroid/support/annotation/NonNull;
  519. .end annotation
  520. .end param
  521. const/16 v0, 0x11
  522. const/4 v1, 0x1
  523. const/4 v2, 0x0
  524. if-eq p0, v0, :cond_6
  525. const/16 v0, 0x21
  526. if-eq p0, v0, :cond_4
  527. const/16 v0, 0x42
  528. if-eq p0, v0, :cond_2
  529. const/16 v0, 0x82
  530. if-ne p0, v0, :cond_1
  531. iget p0, p1, Landroid/graphics/Rect;->bottom:I
  532. iget p1, p2, Landroid/graphics/Rect;->top:I
  533. if-gt p0, p1, :cond_0
  534. goto :goto_0
  535. :cond_0
  536. const/4 v1, 0x0
  537. :goto_0
  538. return v1
  539. :cond_1
  540. new-instance p0, Ljava/lang/IllegalArgumentException;
  541. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  542. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  543. throw p0
  544. :cond_2
  545. iget p0, p1, Landroid/graphics/Rect;->right:I
  546. iget p1, p2, Landroid/graphics/Rect;->left:I
  547. if-gt p0, p1, :cond_3
  548. goto :goto_1
  549. :cond_3
  550. const/4 v1, 0x0
  551. :goto_1
  552. return v1
  553. :cond_4
  554. iget p0, p1, Landroid/graphics/Rect;->top:I
  555. iget p1, p2, Landroid/graphics/Rect;->bottom:I
  556. if-lt p0, p1, :cond_5
  557. goto :goto_2
  558. :cond_5
  559. const/4 v1, 0x0
  560. :goto_2
  561. return v1
  562. :cond_6
  563. iget p0, p1, Landroid/graphics/Rect;->left:I
  564. iget p1, p2, Landroid/graphics/Rect;->right:I
  565. if-lt p0, p1, :cond_7
  566. goto :goto_3
  567. :cond_7
  568. const/4 v1, 0x0
  569. :goto_3
  570. return v1
  571. .end method
  572. .method private static majorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  573. .locals 0
  574. .param p1 # Landroid/graphics/Rect;
  575. .annotation build Landroid/support/annotation/NonNull;
  576. .end annotation
  577. .end param
  578. .param p2 # Landroid/graphics/Rect;
  579. .annotation build Landroid/support/annotation/NonNull;
  580. .end annotation
  581. .end param
  582. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistanceRaw(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  583. move-result p0
  584. const/4 p1, 0x0
  585. invoke-static {p1, p0}, Ljava/lang/Math;->max(II)I
  586. move-result p0
  587. return p0
  588. .end method
  589. .method private static majorAxisDistanceRaw(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  590. .locals 1
  591. .param p1 # Landroid/graphics/Rect;
  592. .annotation build Landroid/support/annotation/NonNull;
  593. .end annotation
  594. .end param
  595. .param p2 # Landroid/graphics/Rect;
  596. .annotation build Landroid/support/annotation/NonNull;
  597. .end annotation
  598. .end param
  599. const/16 v0, 0x11
  600. if-eq p0, v0, :cond_3
  601. const/16 v0, 0x21
  602. if-eq p0, v0, :cond_2
  603. const/16 v0, 0x42
  604. if-eq p0, v0, :cond_1
  605. const/16 v0, 0x82
  606. if-ne p0, v0, :cond_0
  607. iget p0, p2, Landroid/graphics/Rect;->top:I
  608. iget p1, p1, Landroid/graphics/Rect;->bottom:I
  609. :goto_0
  610. sub-int/2addr p0, p1
  611. return p0
  612. :cond_0
  613. new-instance p0, Ljava/lang/IllegalArgumentException;
  614. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  615. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  616. throw p0
  617. :cond_1
  618. iget p0, p2, Landroid/graphics/Rect;->left:I
  619. iget p1, p1, Landroid/graphics/Rect;->right:I
  620. goto :goto_0
  621. :cond_2
  622. iget p0, p1, Landroid/graphics/Rect;->top:I
  623. iget p1, p2, Landroid/graphics/Rect;->bottom:I
  624. goto :goto_0
  625. :cond_3
  626. iget p0, p1, Landroid/graphics/Rect;->left:I
  627. iget p1, p2, Landroid/graphics/Rect;->right:I
  628. goto :goto_0
  629. .end method
  630. .method private static majorAxisDistanceToFarEdge(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  631. .locals 0
  632. .param p1 # Landroid/graphics/Rect;
  633. .annotation build Landroid/support/annotation/NonNull;
  634. .end annotation
  635. .end param
  636. .param p2 # Landroid/graphics/Rect;
  637. .annotation build Landroid/support/annotation/NonNull;
  638. .end annotation
  639. .end param
  640. invoke-static {p0, p1, p2}, Landroid/support/v4/widget/FocusStrategy;->majorAxisDistanceToFarEdgeRaw(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  641. move-result p0
  642. const/4 p1, 0x1
  643. invoke-static {p1, p0}, Ljava/lang/Math;->max(II)I
  644. move-result p0
  645. return p0
  646. .end method
  647. .method private static majorAxisDistanceToFarEdgeRaw(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  648. .locals 1
  649. .param p1 # Landroid/graphics/Rect;
  650. .annotation build Landroid/support/annotation/NonNull;
  651. .end annotation
  652. .end param
  653. .param p2 # Landroid/graphics/Rect;
  654. .annotation build Landroid/support/annotation/NonNull;
  655. .end annotation
  656. .end param
  657. const/16 v0, 0x11
  658. if-eq p0, v0, :cond_3
  659. const/16 v0, 0x21
  660. if-eq p0, v0, :cond_2
  661. const/16 v0, 0x42
  662. if-eq p0, v0, :cond_1
  663. const/16 v0, 0x82
  664. if-ne p0, v0, :cond_0
  665. iget p0, p2, Landroid/graphics/Rect;->bottom:I
  666. iget p1, p1, Landroid/graphics/Rect;->bottom:I
  667. :goto_0
  668. sub-int/2addr p0, p1
  669. return p0
  670. :cond_0
  671. new-instance p0, Ljava/lang/IllegalArgumentException;
  672. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  673. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  674. throw p0
  675. :cond_1
  676. iget p0, p2, Landroid/graphics/Rect;->right:I
  677. iget p1, p1, Landroid/graphics/Rect;->right:I
  678. goto :goto_0
  679. :cond_2
  680. iget p0, p1, Landroid/graphics/Rect;->top:I
  681. iget p1, p2, Landroid/graphics/Rect;->top:I
  682. goto :goto_0
  683. :cond_3
  684. iget p0, p1, Landroid/graphics/Rect;->left:I
  685. iget p1, p2, Landroid/graphics/Rect;->left:I
  686. goto :goto_0
  687. .end method
  688. .method private static minorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
  689. .locals 1
  690. .param p1 # Landroid/graphics/Rect;
  691. .annotation build Landroid/support/annotation/NonNull;
  692. .end annotation
  693. .end param
  694. .param p2 # Landroid/graphics/Rect;
  695. .annotation build Landroid/support/annotation/NonNull;
  696. .end annotation
  697. .end param
  698. const/16 v0, 0x11
  699. if-eq p0, v0, :cond_2
  700. const/16 v0, 0x21
  701. if-eq p0, v0, :cond_1
  702. const/16 v0, 0x42
  703. if-eq p0, v0, :cond_2
  704. const/16 v0, 0x82
  705. if-ne p0, v0, :cond_0
  706. goto :goto_0
  707. :cond_0
  708. new-instance p0, Ljava/lang/IllegalArgumentException;
  709. const-string p1, "direction must be one of {FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."
  710. invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  711. throw p0
  712. :cond_1
  713. :goto_0
  714. iget p0, p1, Landroid/graphics/Rect;->left:I
  715. invoke-virtual {p1}, Landroid/graphics/Rect;->width()I
  716. move-result p1
  717. div-int/lit8 p1, p1, 0x2
  718. add-int/2addr p0, p1
  719. iget p1, p2, Landroid/graphics/Rect;->left:I
  720. invoke-virtual {p2}, Landroid/graphics/Rect;->width()I
  721. move-result p2
  722. :goto_1
  723. div-int/lit8 p2, p2, 0x2
  724. add-int/2addr p1, p2
  725. sub-int/2addr p0, p1
  726. invoke-static {p0}, Ljava/lang/Math;->abs(I)I
  727. move-result p0
  728. return p0
  729. :cond_2
  730. iget p0, p1, Landroid/graphics/Rect;->top:I
  731. invoke-virtual {p1}, Landroid/graphics/Rect;->height()I
  732. move-result p1
  733. div-int/lit8 p1, p1, 0x2
  734. add-int/2addr p0, p1
  735. iget p1, p2, Landroid/graphics/Rect;->top:I
  736. invoke-virtual {p2}, Landroid/graphics/Rect;->height()I
  737. move-result p2
  738. goto :goto_1
  739. .end method